<?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>140002</bug_id>
          
          <creation_ts>2014-12-29 19:03:52 -0800</creation_ts>
          <short_desc>Web Inspector: pass parameters to inspector agents by reference where possible</short_desc>
          <delta_ts>2015-01-06 13:45:07 -0800</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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>140053</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058156</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-12-29 19:03:52 -0800</bug_when>
    <thetext>More cleanup. Push references another level down.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058157</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-12-29 19:04:20 -0800</bug_when>
    <thetext>&lt;rdar://problem/19358093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058794</commentid>
    <comment_count>2</comment_count>
      <attachid>243999</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-05 13:42:55 -0800</bug_when>
    <thetext>Created attachment 243999
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058797</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-05 13:45:01 -0800</bug_when>
    <thetext>Attachment 243999 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorResourceAgent.h:92:  The parameter name &quot;loader&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059124</commentid>
    <comment_count>4</comment_count>
      <attachid>243999</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2015-01-06 12:44:44 -0800</bug_when>
    <thetext>Comment on attachment 243999
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059146</commentid>
    <comment_count>5</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-01-06 13:45:07 -0800</bug_when>
    <thetext>Committed r177993: &lt;http://trac.webkit.org/changeset/177993&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243999</attachid>
            <date>2015-01-05 13:42:55 -0800</date>
            <delta_ts>2015-01-06 12:44:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140002-20150105134258.patch</filename>
            <type>text/plain</type>
            <size>97350</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3OTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU5Mjc1ZTlkMjE0ZjM0
NzVmMjZmNmQ5MzllMGU5ZmI1NjU1NWRkOS4uMzNjNzdjNzI4YzAyM2IwNmZiYjYzMTgwMjFiMGRm
OGU3N2ViNWM2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0MiBAQAorMjAxNC0xMi0yOSAgQnJp
YW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogcGFzcyBwYXJhbWV0ZXJzIHRvIGluc3BlY3RvciBhZ2VudHMgYnkgcmVmZXJlbmNlIHdo
ZXJlIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDAwMDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQYXNzIHBhcmFtZXRlcnMgYnktcmVmZXJlbmNlIGZyb20gaW5zcGVjdG9yIGluc3RydW1l
bnRhdGlvbiBlbnRyeQorICAgICAgICBwb2ludHMgdG8gaW5zcGVjdG9yIGFnZW50cy4gSWYgdGhl
IGV2ZW50IGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRoIG51bGwKKyAgICAgICAgYXJndW1lbnRzLCBw
ZXJmb3JtIG51bGwgY2hlY2tzIGJlZm9yZSBjYWxsaW5nIGFnZW50IG1ldGhvZHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNT
U0FnZW50OjpkaWRDcmVhdGVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1lZEZs
b3dDb250ZW50RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Zm9yY2VQc2V1ZG9TdGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
Lmg6IFJlb3JkZXIgbWV0aG9kcyB0byBtYXRjaCBpbnN0cnVtZW50YXRpb24uCisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpoYW5kbGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTUFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpkaWRQdXNoU2hhZG93Um9vdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6d2lsbFBvcFNoYWRvd1Jvb3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOiBSZW9yZGVyIG1ldGhvZHMgdG8gbWF0Y2gg
aW5zdHJ1bWVudGF0aW9uLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OmRpZEludmFsaWRhdGVTdHlsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6ZGlkSW5zZXJ0RE9NTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01Ob2RlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxNb2Rp
ZnlET01BdHRyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRv
d09iamVjdEluV29ybGRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEluc2VydERPTU5vZGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZUltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRE9NTm9kZUltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZW1vdmVET01O
b2RlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxNb2RpZnlET01BdHRySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZE1vZGlmeURPTUF0dHJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NQXR0ckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRySW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFB1c2hT
aGFkb3dSb290SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxQb3BTaGFkb3dSb290SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENyZWF0ZU5hbWVkRmxvd0ltcGwpOiBBZGQgbnVsbCBjaGVjay4K
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvd0ltcGwpOiBBZGQgbnVsbCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldEltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudEltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpoYW5kbGVUb3VjaEV2ZW50SW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNl
dWRvU3RhdGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRl
TGF5b3V0SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxMYXlvdXRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbFBhaW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxTY3JvbGxMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbkltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphcHBseUVtdWxhdGVk
TWVkaWFJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbFNlbmRSZXF1ZXN0SW1wbCk6IEFkZCBudWxsIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2FjaGVJ
bXBsKTogQWRkIG51bGwgY2hlY2tzLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNlUmVzcG9uc2VJbXBsKTogIEFkZCBudWxsIGNo
ZWNrLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlUmVzb3VyY2VSZXNwb25zZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNlbGVkSW1wbCk6
IEFkZCBudWxsIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbCk6IEFkZCBudWxsIGNoZWNrLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGYWlsTG9hZGluZ0ltcGwpOiBBZGQg
bnVsbCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZG9tQ29udGVudExvYWRlZEV2ZW50RmlyZWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6bG9hZEV2ZW50RmlyZWRJbXBsKTogQWRkIG51bGwgY2hlY2su
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRGV0YWNo
ZWRGcm9tUGFyZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENvbW1pdExvYWRJbXBsKTogQWRkIG51bGwgY2hlY2tzLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsb2FkZXJEZXRhY2hlZEZyb21GcmFtZUlt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVz
dHJveUNhY2hlZFJlc291cmNlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnN0YXJ0Q29uc29sZVRpbWluZ0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdG9wQ29uc29sZVRpbWluZ0ltcGwpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb25zb2xlVGltZVN0YW1wSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENyZWF0
ZVdlYlNvY2tldEltcGwpOiBBZGQgbnVsbCBjaGVjay4KKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0SW1w
bCk6IEFkZCBudWxsIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VJbXBsKTogQWRkIG51
bGwgY2hlY2suCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENsb3NlV2ViU29ja2V0SW1wbCk6IEFkZCBudWxsIGNoZWNrLgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZW5kZXJMYXllckRlc3Ryb3llZEltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVz
dHJveWVkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnNjcmlwdHNFbmFibGVkSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRvY3VtZW50VGhyZWFkYWJsZUxvYWRlclN0YXJ0ZWRMb2FkaW5n
Rm9yQ2xpZW50SW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmZyYW1lU3RhcnRlZExvYWRpbmdJbXBsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFdyaXRlSFRNTEltcGwpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFy
dFByb2ZpbGluZ0ltcGwpOiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JMYXllclRyZWVB
Z2VudDo6cmVuZGVyTGF5ZXJEZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQ6OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50
OjpmcmFtZURldGFjaGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6
bG9hZGVyRGV0YWNoZWRGcm9tRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6OmZyYW1lRGV0YWNo
ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVz
b3VyY2VGcm9tTWVtb3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjptYWluRnJhbWVOYXZpZ2F0
ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6IFJlb3Jk
ZXIgbWV0aG9kcyB0byBtYXRjaCBpbnN0cnVtZW50YXRpb24uCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkSW52YWxpZGF0ZUxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsU2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRUaW1lU3RhbXApOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6dGltZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lRW5kKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZE1hcmtET01Db250ZW50RXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkTWFya0xvYWRFdmVudCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDogUmVvcmRlciBtZXRob2Rz
IHRvIG1hdGNoIGluc3RydW1lbnRhdGlvbi4KKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlUnVudGltZUFnZW50OjpkaWRDcmVh
dGVNYWluV29ybGRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VSdW50aW1lQWdlbnQ6
OmRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dCk6IERlbGV0ZWQuIEl0IGhhcyBubyBjYWxsZXJzLgor
ICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVudGltZUFnZW50Lmg6CisgICAgICAgICogcmVwbGF5
L1JlcGxheUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxl
cjo6ZnJhbWVEZXRhY2hlZCk6CisgICAgICAgICogcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaDoK
KwogMjAxNS0wMS0wMSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogcGFzcyBwYXJhbWV0ZXJzIHRvIGluc3BlY3RvciBpbnN0
cnVtZW50YXRpb24gYnkgcmVmZXJlbmNlIHdoZXJlIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA2MDk3NjIzODU2OWI2Y2Zk
NmE5MDEzYWMyZjY4MjlkNWI3ZjA0YjlkLi42NWY1ZGM0ZTc0MGZjYTFhYTc3Y2M0MGI1NmU5NTZj
NWNmZTcxMzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Q1NTQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5jcHAKQEAgLTUwMCwzNyArNTAwLDM3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6Om1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCkKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPm1l
ZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZENyZWF0ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ3JlYXRlTmFtZWRGbG93KERvY3Vt
ZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7Ci0gICAgaW50IGRv
Y3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQp
OworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93
c0lkKCZkb2N1bWVudCk7CiAgICAgaWYgKCFkb2N1bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5u
YW1lZEZsb3dDcmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgbmFtZWRGbG93
LCBkb2N1bWVudE5vZGVJZCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dD
cmVhdGVkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KHVudXNlZCwgJm5hbWVkRmxvdywgZG9jdW1l
bnROb2RlSWQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVk
RmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93KQogewotICAgIGludCBkb2N1bWVudE5vZGVJ
ZCA9IGRvY3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpbnQg
ZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1l
bnQpOwogICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKQotICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrLT51bnNjaGVkdWxlKG5hbWVkRmxvdyk7CisgICAgICAgIG1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2stPnVuc2NoZWR1bGUoJm5hbWVkRmxvdyk7CiAKLSAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgbmFtZWRGbG93LT5uYW1lKCku
c3RyaW5nKCkpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5uYW1lZEZsb3dSZW1vdmVkKGRv
Y3VtZW50Tm9kZUlkLCBuYW1lZEZsb3cubmFtZSgpLnN0cmluZygpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCogZG9jdW1lbnQs
IFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlk
Q2hhbmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYg
bmFtZWRGbG93KQogewotICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdpdGhS
ZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKKyAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1
bWVudE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZCgmZG9jdW1lbnQpOwogICAgIGlmICghZG9jdW1l
bnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVy
c2V0VGFzaykKICAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+KHRoaXMpOwotICAgIG1fY2hhbmdlUmVnaW9u
T3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOworICAg
IG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKCZuYW1lZEZsb3csIGRvY3Vt
ZW50Tm9kZUlkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENo
YW5nZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKQEAg
LTU0NCwzOSArNTQ0LDM5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92ZXJzZXRD
aGFuZ2VkKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9jCiAgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93
KHVudXNlZCwgbmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCi12b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIE5vZGUqIGNvbnRlbnRFbGVtZW50
LCBOb2RlKiBuZXh0Q29udGVudEVsZW1lbnQpCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRS
ZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93JiBuYW1lZEZsb3csIE5vZGUmIGNvbnRlbnRFbGVtZW50LCBOb2RlKiBuZXh0Q29u
dGVudEVsZW1lbnQpCiB7Ci0gICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0
aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOworICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRv
Y3VtZW50Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKCZkb2N1bWVudCk7CiAgICAgaWYgKCFkb2N1
bWVudE5vZGVJZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXJyb3JTdHJpbmcgdW51c2VkOwot
ICAgIGludCBjb250ZW50RWxlbWVudE5vZGVJZCA9IG1fZG9tQWdlbnQtPnB1c2hOb2RlVG9Gcm9u
dGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBjb250ZW50RWxlbWVudCk7CisgICAgaW50IGNv
bnRlbnRFbGVtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5kKHVudXNl
ZCwgZG9jdW1lbnROb2RlSWQsICZjb250ZW50RWxlbWVudCk7CiAgICAgaW50IG5leHRDb250ZW50
RWxlbWVudE5vZGVJZCA9IG5leHRDb250ZW50RWxlbWVudCA/IG1fZG9tQWdlbnQtPnB1c2hOb2Rl
VG9Gcm9udGVuZCh1bnVzZWQsIGRvY3VtZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnQpIDog
MDsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KGRvY3VtZW50Tm9kZUlkLCBuYW1lZEZsb3ctPm5hbWUoKS5zdHJpbmcoKSwgY29udGVu
dEVsZW1lbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJZCk7CisgICAgbV9mcm9udGVu
ZERpc3BhdGNoZXItPnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5v
ZGVJZCwgbmFtZWRGbG93Lm5hbWUoKS5zdHJpbmcoKSwgY29udGVudEVsZW1lbnROb2RlSWQsIG5l
eHRDb250ZW50RWxlbWVudE5vZGVJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIFdl
YktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBOb2RlKiBjb250ZW50RWxlbWVudCkKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChEb2N1
bWVudCYgZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50
RWxlbWVudCkKIHsKLSAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVudE5vZGVXaXRoUmVx
dWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CisgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1l
bnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoJmRvY3VtZW50KTsKICAgICBpZiAoIWRvY3VtZW50
Tm9kZUlkKQogICAgICAgICByZXR1cm47CiAKICAgICBFcnJvclN0cmluZyB1bnVzZWQ7Ci0gICAg
aW50IGNvbnRlbnRFbGVtZW50Tm9kZUlkID0gbV9kb21BZ2VudC0+cHVzaE5vZGVUb0Zyb250ZW5k
KHVudXNlZCwgZG9jdW1lbnROb2RlSWQsIGNvbnRlbnRFbGVtZW50KTsKKyAgICBpbnQgY29udGVu
dEVsZW1lbnROb2RlSWQgPSBtX2RvbUFnZW50LT5wdXNoTm9kZVRvRnJvbnRlbmQodW51c2VkLCBk
b2N1bWVudE5vZGVJZCwgJmNvbnRlbnRFbGVtZW50KTsKICAgICBpZiAoIWNvbnRlbnRFbGVtZW50
Tm9kZUlkKSB7CiAgICAgICAgIC8vIFdlJ3ZlIGFscmVhZHkgbm90aWZpZWQgdGhhdCB0aGUgRE9N
IG5vZGUgd2FzIHJlbW92ZWQgZnJvbSB0aGUgRE9NLCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gc2Vu
ZCBhbm90aGVyIGV2ZW50LgogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT51bnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5v
ZGVJZCwgbmFtZWRGbG93LT5uYW1lKCkuc3RyaW5nKCksIGNvbnRlbnRFbGVtZW50Tm9kZUlkKTsK
KyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+dW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoZG9jdW1lbnROb2RlSWQsIG5hbWVkRmxvdy5uYW1lKCkuc3RyaW5nKCksIGNvbnRlbnRF
bGVtZW50Tm9kZUlkKTsKIH0KIAotYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9T
dGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlIHBzZXVk
b0NsYXNzVHlwZSkKK2Jvb2wgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRWxl
bWVudCYgZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzVHlwZSBwc2V1ZG9DbGFzc1R5
cGUpCiB7CiAgICAgaWYgKG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGludCBub2RlSWQgPSBtX2RvbUFnZW50LT5ib3Vu
ZE5vZGVJZChlbGVtZW50KTsKKyAgICBpbnQgbm9kZUlkID0gbV9kb21BZ2VudC0+Ym91bmROb2Rl
SWQoJmVsZW1lbnQpOwogICAgIGlmICghbm9kZUlkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggZjll
ZjlmZGIxODE4MzZhZmI5YjMzNzVkZGU1NWMzOWE2MmU5YWY0My4uM2RkY2E5YmY4OWNmOGRjMDY4
NzVjNGE4NmRmYzNjMTkyODUyNTg2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKQEAgLTk0LDIwICs5NCwyMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlJik7CiAKLSAgICBib29sIGZv
cmNlUHNldWRvU3RhdGUoRWxlbWVudCosIENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzc1R5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7
CiAgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBlbmFibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
YWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaW9uT3ZlcnNldENoYW5n
ZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKICAgICB2b2lkIHJlc2V0
KCk7CisKKyAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZv
aWQgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKTsKLSAgICB2b2lkIGRpZENyZWF0ZU5hbWVkRmxv
dyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwotICAgIHZvaWQgd2lsbFJlbW92ZU5hbWVk
RmxvdyhEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwotICAgIHZvaWQgZGlkQ2hhbmdlUmVn
aW9uT3ZlcnNldChEb2N1bWVudCosIFdlYktpdE5hbWVkRmxvdyopOwotICAgIHZvaWQgcmVnaW9u
T3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiwgaW50IGRvY3VtZW50Tm9kZUlkKTsKLSAg
ICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQqLCBXZWJL
aXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4dENvbnRlbnRFbGVt
ZW50ID0gbnVsbHB0cik7Ci0gICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoRG9jdW1lbnQqLCBXZWJLaXROYW1lZEZsb3cqLCBOb2RlKiBjb250ZW50RWxlbWVudCk7
CisgICAgdm9pZCBkaWRDcmVhdGVOYW1lZEZsb3coRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cm
KTsKKyAgICB2b2lkIHdpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZs
b3cmKTsKKyAgICB2b2lkIGRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQmLCBXZWJLaXRO
YW1lZEZsb3cmKTsKKyAgICB2b2lkIGRpZFJlZ2lzdGVyTmFtZWRGbG93Q29udGVudEVsZW1lbnQo
RG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSog
bmV4dENvbnRlbnRFbGVtZW50ID0gbnVsbHB0cik7CisgICAgdm9pZCBkaWRVbnJlZ2lzdGVyTmFt
ZWRGbG93Q29udGVudEVsZW1lbnQoRG9jdW1lbnQmLCBXZWJLaXROYW1lZEZsb3cmLCBOb2RlJiBj
b250ZW50RWxlbWVudCk7CisgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQmLCBDU1NT
ZWxlY3Rvcjo6UHNldWRvQ2xhc3NUeXBlKTsKIAogICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wdXRl
ZFN0eWxlRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU0NvbXB1dGVkU3R5
bGVQcm9wZXJ0eT4+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldElubGluZVN0eWxl
c0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGlubGluZVN0eWxlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIGF0dHJpYnV0ZXMpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMTE1ODA4ODU3MGNi
ZWJjM2E4ZGFiNWM2YzU3NDY3YmQ5NWI0MjE1NC4uYmJhY2RjNDE5OWY0Njk3ZmZjYmQ3MmEwMjkx
OGRlMmE5MzNjZmNhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC05NTMsMTMgKzk1MywxMyBAQCBib29sIEluc3BlY3RvckRPTUFnZW50
OjpoYW5kbGVNb3VzZVByZXNzKCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhhbmRsZVRvdWNoRXZlbnQoTm9kZSogbm9kZSkKK2Jvb2wgSW5zcGVjdG9y
RE9NQWdlbnQ6OmhhbmRsZVRvdWNoRXZlbnQoTm9kZSYgbm9kZSkKIHsKICAgICBpZiAoIW1fc2Vh
cmNoaW5nRm9yTm9kZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChub2RlICYmIG1f
aW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWcpIHsKLSAgICAgICAgbV9vdmVybGF5LT5oaWdobGln
aHROb2RlKG5vZGUsICptX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnKTsKLSAgICAgICAgaW5z
cGVjdChub2RlKTsKKyAgICBpZiAobV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZykgeworICAg
ICAgICBtX292ZXJsYXktPmhpZ2hsaWdodE5vZGUoJm5vZGUsICptX2luc3BlY3RNb2RlSGlnaGxp
Z2h0Q29uZmlnKTsKKyAgICAgICAgaW5zcGVjdCgmbm9kZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzYwLDE1ICsxNzYwLDE1IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmRpZENvbW1pdExvYWQoRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklk
LCB2YWx1ZS5yZWxlYXNlKCkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNl
cnRET01Ob2RlKE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRE
T01Ob2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgaWYgKGlzV2hpdGVzcGFjZShub2RlKSkKKyAgICBp
ZiAoaXNXaGl0ZXNwYWNlKCZub2RlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gV2UgY291
bGQgYmUgYXR0YWNoaW5nIGV4aXN0aW5nIHN1YnRyZWUuIEZvcmdldCB0aGUgYmluZGluZ3MuCi0g
ICAgdW5iaW5kKG5vZGUsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgIHVuYmluZCgmbm9k
ZSwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAKLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBub2RlLT5wYXJlbnROb2RlKCk7CisgICAgQ29udGFpbmVyTm9kZSogcGFyZW50ID0gbm9kZS5w
YXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc4
MiwxOSArMTc4MiwxOSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnNlcnRET01Ob2Rl
KE5vZGUqIG5vZGUpCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVDb3Vu
dFVwZGF0ZWQocGFyZW50SWQsIGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gQ2hpbGRyZW4gaGF2ZSBiZWVuIHJlcXVlc3RlZCAtPiByZXR1cm4g
dmFsdWUgb2YgYSBuZXcgY2hpbGQuCi0gICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQ
cmV2aW91c1NpYmxpbmcobm9kZSk7CisgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQ
cmV2aW91c1NpYmxpbmcoJm5vZGUpOwogICAgICAgICBpbnQgcHJldklkID0gcHJldlNpYmxpbmcg
PyBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KHByZXZTaWJsaW5nKSA6IDA7Ci0gICAgICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+IHZhbHVlID0gYnVpbGRPYmplY3RG
b3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRvSWRNYXApOworICAgICAgICBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPiB2YWx1ZSA9IGJ1aWxkT2JqZWN0Rm9yTm9k
ZSgmbm9kZSwgMCwgJm1fZG9jdW1lbnROb2RlVG9JZE1hcCk7CiAgICAgICAgIG1fZnJvbnRlbmRE
aXNwYXRjaGVyLT5jaGlsZE5vZGVJbnNlcnRlZChwYXJlbnRJZCwgcHJldklkLCB2YWx1ZS5yZWxl
YXNlKCkpOwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9N
Tm9kZShOb2RlKiBub2RlKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NTm9k
ZShOb2RlJiBub2RlKQogewotICAgIGlmIChpc1doaXRlc3BhY2Uobm9kZSkpCisgICAgaWYgKGlz
V2hpdGVzcGFjZSgmbm9kZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudCA9IG5vZGUtPnBhcmVudE5vZGUoKTsKKyAgICBDb250YWluZXJOb2RlKiBwYXJlbnQg
PSBub2RlLnBhcmVudE5vZGUoKTsKIAogICAgIC8vIElmIHBhcmVudCBpcyBub3QgbWFwcGVkIHll
dCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgIGlmICghbV9kb2N1bWVudE5vZGVUb0lkTWFwLmNv
bnRhaW5zKHBhcmVudCkpCkBAIC0xODA3LDQyICsxODA3LDQyIEBAIHZvaWQgSW5zcGVjdG9yRE9N
QWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKGlubmVyQ2hp
bGROb2RlQ291bnQocGFyZW50KSA9PSAxKQogICAgICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmNoaWxkTm9kZUNvdW50VXBkYXRlZChwYXJlbnRJZCwgMCk7CiAgICAgfSBlbHNlCi0gICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVSZW1vdmVkKHBhcmVudElkLCBtX2Rv
Y3VtZW50Tm9kZVRvSWRNYXAuZ2V0KG5vZGUpKTsKLSAgICB1bmJpbmQobm9kZSwgJm1fZG9jdW1l
bnROb2RlVG9JZE1hcCk7CisgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jaGlsZE5vZGVS
ZW1vdmVkKHBhcmVudElkLCBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZub2RlKSk7CisgICAg
dW5iaW5kKCZub2RlLCAmbV9kb2N1bWVudE5vZGVUb0lkTWFwKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCosIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpCit2b2lkIEluc3BlY3Rv
ckRPTUFnZW50Ojp3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5n
JiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1ZSkKIHsKICAgICBtX3N1cHBy
ZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudCA9IChvbGRWYWx1ZSA9PSBuZXdWYWx1ZSk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50JiBlbGVtZW50
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7
CiAgICAgYm9vbCBzaG91bGRTdXBwcmVzc0V2ZW50ID0gbV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlm
aWVkRXZlbnQ7CiAgICAgbV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlmaWVkRXZlbnQgPSBmYWxzZTsK
ICAgICBpZiAoc2hvdWxkU3VwcHJlc3NFdmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaW50
IGlkID0gYm91bmROb2RlSWQoZWxlbWVudCk7CisgICAgaW50IGlkID0gYm91bmROb2RlSWQoJmVs
ZW1lbnQpOwogICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBl
dmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9kb21MaXN0
ZW5lcikKLSAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cihlbGVtZW50KTsK
KyAgICAgICAgbV9kb21MaXN0ZW5lci0+ZGlkTW9kaWZ5RE9NQXR0cigmZWxlbWVudCk7CiAKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YXR0cmlidXRlTW9kaWZpZWQoaWQsIG5hbWUsIHZhbHVl
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkUmVtb3ZlRE9NQXR0cihFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRSZW1vdmVET01BdHRyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkKIHsKLSAgICBpbnQgaWQgPSBib3VuZE5vZGVJZChlbGVtZW50KTsKKyAgICBpbnQg
aWQgPSBib3VuZE5vZGVJZCgmZWxlbWVudCk7CiAgICAgLy8gSWYgbm9kZSBpcyBub3QgbWFwcGVk
IHlldCAtPiBpZ25vcmUgdGhlIGV2ZW50LgogICAgIGlmICghaWQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChtX2RvbUxpc3RlbmVyKQotICAgICAgICBtX2RvbUxpc3RlbmVyLT5kaWRNb2Rp
ZnlET01BdHRyKGVsZW1lbnQpOworICAgICAgICBtX2RvbUxpc3RlbmVyLT5kaWRNb2RpZnlET01B
dHRyKCZlbGVtZW50KTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hdHRyaWJ1dGVSZW1v
dmVkKGlkLCBuYW1lKTsKIH0KQEAgLTE4NjQsNDAgKzE4NjQsNDAgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6c3R5bGVBdHRyaWJ1dGVJbnZhbGlkYXRlZChjb25zdCBWZWN0b3I8RWxlbWVudCo+
JiBlbGVtZW4KICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+aW5saW5lU3R5bGVJbnZhbGlkYXRl
ZChub2RlSWRzLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmNoYXJh
Y3RlckRhdGFNb2RpZmllZChDaGFyYWN0ZXJEYXRhKiBjaGFyYWN0ZXJEYXRhKQordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEmIGNoYXJh
Y3RlckRhdGEpCiB7Ci0gICAgaW50IGlkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChjaGFy
YWN0ZXJEYXRhKTsKKyAgICBpbnQgaWQgPSBtX2RvY3VtZW50Tm9kZVRvSWRNYXAuZ2V0KCZjaGFy
YWN0ZXJEYXRhKTsKICAgICBpZiAoIWlkKSB7CiAgICAgICAgIC8vIFB1c2ggdGV4dCBub2RlIGlm
IGl0IGlzIGJlaW5nIGNyZWF0ZWQuCiAgICAgICAgIGRpZEluc2VydERPTU5vZGUoY2hhcmFjdGVy
RGF0YSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmNoYXJhY3RlckRhdGFNb2RpZmllZChpZCwgY2hhcmFjdGVyRGF0YS0+ZGF0YSgpKTsKKyAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+Y2hhcmFjdGVyRGF0YU1vZGlmaWVkKGlkLCBjaGFyYWN0ZXJE
YXRhLmRhdGEoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVT
dHlsZUF0dHIoTm9kZSogbm9kZSkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRh
dGVTdHlsZUF0dHIoTm9kZSYgbm9kZSkKIHsKLSAgICBpbnQgaWQgPSBtX2RvY3VtZW50Tm9kZVRv
SWRNYXAuZ2V0KG5vZGUpOworICAgIGludCBpZCA9IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQo
Jm5vZGUpOwogICAgIC8vIElmIG5vZGUgaXMgbm90IG1hcHBlZCB5ZXQgLT4gaWdub3JlIHRoZSBl
dmVudC4KICAgICBpZiAoIWlkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmV2YWxp
ZGF0ZVN0eWxlQXR0clRhc2spCiAgICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBz
dGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+KHRoaXMpOwotICAg
IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxlRm9yKGRvd25jYXN0PEVsZW1lbnQ+
KG5vZGUpKTsKKyAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcihkb3du
Y2FzdDxFbGVtZW50Pigmbm9kZSkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRQ
dXNoU2hhZG93Um9vdChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQordm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZGlkUHVzaFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9v
dCYgcm9vdCkKIHsKLSAgICBpbnQgaG9zdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCho
b3N0KTsKKyAgICBpbnQgaG9zdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmaG9zdCk7
CiAgICAgaWYgKGhvc3RJZCkKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnNoYWRvd1Jv
b3RQdXNoZWQoaG9zdElkLCBidWlsZE9iamVjdEZvck5vZGUocm9vdCwgMCwgJm1fZG9jdW1lbnRO
b2RlVG9JZE1hcCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2hhZG93Um9vdFB1
c2hlZChob3N0SWQsIGJ1aWxkT2JqZWN0Rm9yTm9kZSgmcm9vdCwgMCwgJm1fZG9jdW1lbnROb2Rl
VG9JZE1hcCkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3aWxsUG9wU2hhZG93Um9v
dChFbGVtZW50KiBob3N0LCBTaGFkb3dSb290KiByb290KQordm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6d2lsbFBvcFNoYWRvd1Jvb3QoRWxlbWVudCYgaG9zdCwgU2hhZG93Um9vdCYgcm9vdCkKIHsK
LSAgICBpbnQgaG9zdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChob3N0KTsKLSAgICBp
bnQgcm9vdElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChyb290KTsKKyAgICBpbnQgaG9z
dElkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldCgmaG9zdCk7CisgICAgaW50IHJvb3RJZCA9
IG1fZG9jdW1lbnROb2RlVG9JZE1hcC5nZXQoJnJvb3QpOwogICAgIGlmIChob3N0SWQgJiYgcm9v
dElkKQogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+c2hhZG93Um9vdFBvcHBlZChob3N0
SWQsIHJvb3RJZCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDllYjMwZDFhMTQ4MjZmZWY2YzczOTA0ZjNkNDQ0OWRmYzg1NDQ4OTAuLjUz
MDUwNTYzOTVhODc3YmE5MDYyYThkNDU0M2UxMTljOWJmZDE2YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xNTYsMjQgKzE1NiwyNyBAQCBw
dWJsaWM6CiAKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5vZGUqLCBWZWN0b3I8RXZlbnRM
aXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3JzKTsKIAot
ICAgIC8vIE1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi4K
KworICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxsYmFja3MuCisgICAgdm9pZCBk
aWRJbnNlcnRET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSYp
OworICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmV3VmFsdWUpOworICAgIHZvaWQgZGlk
TW9kaWZ5RE9NQXR0cihFbGVtZW50JiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIGRpZFJlbW92ZURPTUF0dHIoRWxlbWVudCYs
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CisgICAgdm9pZCBjaGFyYWN0ZXJEYXRhTW9kaWZp
ZWQoQ2hhcmFjdGVyRGF0YSYpOworICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2Rl
Jik7CisgICAgdm9pZCBkaWRQdXNoU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CisgICAgdm9pZCB3aWxsUG9wU2hhZG93Um9vdChFbGVtZW50JiBob3N0LCBTaGFkb3dSb290
Jik7CisgICAgYm9vbCBoYW5kbGVUb3VjaEV2ZW50KE5vZGUmKTsKKyAgICB2b2lkIGRpZENvbW1p
dExvYWQoRG9jdW1lbnQqKTsKKyAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lKik7
CisKKyAgICAvLyBDYWxsYmFja3MgdGhhdCBkb24ndCBkaXJlY3RseSBjb3JyZXNwb25kIHRvIGFu
IGluc3RydW1lbnRhdGlvbiBlbnRyeSBwb2ludC4KICAgICB2b2lkIHNldERvY3VtZW50KERvY3Vt
ZW50Kik7CiAgICAgdm9pZCByZWxlYXNlRGFuZ2xpbmdOb2RlcygpOwotCiAgICAgdm9pZCBtYWlu
RnJhbWVET01Db250ZW50TG9hZGVkKCk7Ci0gICAgdm9pZCBkaWRDb21taXRMb2FkKERvY3VtZW50
Kik7CiAKLSAgICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSopOwotICAgIHZvaWQgZGlkUmVt
b3ZlRE9NTm9kZShOb2RlKik7Ci0gICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Kiwg
Y29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdWYWx1
ZSk7Ci0gICAgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqLCBjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpOwotICAgIHZvaWQgZGlkUmVtb3Zl
RE9NQXR0cihFbGVtZW50KiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICB2b2lkIHN0
eWxlQXR0cmlidXRlSW52YWxpZGF0ZWQoY29uc3QgVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMp
OwotICAgIHZvaWQgY2hhcmFjdGVyRGF0YU1vZGlmaWVkKENoYXJhY3RlckRhdGEqKTsKLSAgICB2
b2lkIGRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSopOwotICAgIHZvaWQgZGlkUHVzaFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwotICAgIHZvaWQgd2lsbFBvcFNoYWRv
d1Jvb3QoRWxlbWVudCogaG9zdCwgU2hhZG93Um9vdCopOwotICAgIHZvaWQgZnJhbWVEb2N1bWVu
dFVwZGF0ZWQoRnJhbWUqKTsKIAogICAgIGludCBwdXNoTm9kZVRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcmLCBpbnQgZG9jdW1lbnROb2RlSWQsIE5vZGUqKTsKICAgICBOb2RlKiBub2RlRm9ySWQoaW50
IG5vZGVJZCk7CkBAIC0xODUsNyArMTg4LDYgQEAgcHVibGljOgogCiAgICAgUGFzc1JlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IHJlc29sdmVOb2RlKE5v
ZGUqLCBjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKTsKICAgICBib29sIGhhbmRsZU1vdXNlUHJl
c3MoKTsKLSAgICBib29sIGhhbmRsZVRvdWNoRXZlbnQoTm9kZSopOwogICAgIHZvaWQgbW91c2VE
aWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVy
RmxhZ3MpOwogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBmb2N1c05vZGUoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBjMWVjNzRmODk3N2Y0YzNlZDg0MTVmYWVmNTc1YzlkYTIxN2U3ODlh
Li43ODI2YTkzMDRkMTI1MmMyOWVkZmZlNWI2MzM0ZWRjYjUzYjA5NTlmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0xNjcsMzEgKzE2NywzMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnJl
bW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yLCBjb25zdCBTdHJpbgogICAgIG1fZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRzLnJlbW92ZShldmVudE5hbWUpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSogbm9kZSkK
K3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihO
b2RlJiBub2RlKQogewotICAgIGlmIChoYXNCcmVha3BvaW50KG5vZGUsIEF0dHJpYnV0ZU1vZGlm
aWVkKSkgeworICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBBdHRyaWJ1dGVNb2RpZmllZCkp
IHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9y
T2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBB
dHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7CisgICAgICAgIGRlc2Ny
aXB0aW9uRm9yRE9NRXZlbnQoJm5vZGUsIEF0dHJpYnV0ZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnRE
YXRhLmdldCgpKTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVj
dG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVs
ZWFzZSgpKTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlk
SW5zZXJ0RE9NTm9kZShOb2RlKiBub2RlKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkaWRJbnNlcnRET01Ob2RlKE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKG1fZG9tQnJlYWtwb2lu
dHMuc2l6ZSgpKSB7Ci0gICAgICAgIHVpbnQzMl90IG1hc2sgPSBtX2RvbUJyZWFrcG9pbnRzLmdl
dChJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJQYXJlbnROb2RlKG5vZGUpKTsKKyAgICAgICAgdWlu
dDMyX3QgbWFzayA9IG1fZG9tQnJlYWtwb2ludHMuZ2V0KEluc3BlY3RvckRPTUFnZW50Ojppbm5l
clBhcmVudE5vZGUoJm5vZGUpKTsKICAgICAgICAgdWludDMyX3QgaW5oZXJpdGFibGVUeXBlc01h
c2sgPSAobWFzayB8IChtYXNrID4+IGRvbUJyZWFrcG9pbnREZXJpdmVkVHlwZVNoaWZ0KSkgJiBp
bmhlcml0YWJsZURPTUJyZWFrcG9pbnRUeXBlc01hc2s7CiAgICAgICAgIGlmIChpbmhlcml0YWJs
ZVR5cGVzTWFzaykKLSAgICAgICAgICAgIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhub2RlLCBp
bmhlcml0YWJsZVR5cGVzTWFzaywgdHJ1ZSk7CisgICAgICAgICAgICB1cGRhdGVTdWJ0cmVlQnJl
YWtwb2ludHMoJm5vZGUsIGluaGVyaXRhYmxlVHlwZXNNYXNrLCB0cnVlKTsKICAgICB9CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBu
b2RlKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5v
ZGUmIG5vZGUpCiB7CiAgICAgaWYgKG1fZG9tQnJlYWtwb2ludHMuc2l6ZSgpKSB7CiAgICAgICAg
IC8vIFJlbW92ZSBzdWJ0cmVlIGJyZWFrcG9pbnRzLgotICAgICAgICBtX2RvbUJyZWFrcG9pbnRz
LnJlbW92ZShub2RlKTsKLSAgICAgICAgVmVjdG9yPE5vZGUqPiBzdGFjaygxLCBJbnNwZWN0b3JE
T01BZ2VudDo6aW5uZXJGaXJzdENoaWxkKG5vZGUpKTsKKyAgICAgICAgbV9kb21CcmVha3BvaW50
cy5yZW1vdmUoJm5vZGUpOworICAgICAgICBWZWN0b3I8Tm9kZSo+IHN0YWNrKDEsIEluc3BlY3Rv
ckRPTUFnZW50Ojppbm5lckZpcnN0Q2hpbGQoJm5vZGUpKTsKICAgICAgICAgZG8gewogICAgICAg
ICAgICAgTm9kZSogbm9kZSA9IHN0YWNrLmxhc3QoKTsKICAgICAgICAgICAgIHN0YWNrLnJlbW92
ZUxhc3QoKTsKQEAgLTI2NywzNCArMjY3LDM0IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGluCiAg
ICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnNlcnRET01O
b2RlKE5vZGUqIHBhcmVudCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbElu
c2VydERPTU5vZGUoTm9kZSYgcGFyZW50KQogewotICAgIGlmIChoYXNCcmVha3BvaW50KHBhcmVu
dCwgU3VidHJlZU1vZGlmaWVkKSkgeworICAgIGlmIChoYXNCcmVha3BvaW50KCZwYXJlbnQsIFN1
YnRyZWVNb2RpZmllZCkpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnRE
YXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGVzY3JpcHRpb25Gb3JE
T01FdmVudChwYXJlbnQsIFN1YnRyZWVNb2RpZmllZCwgdHJ1ZSwgZXZlbnREYXRhLmdldCgpKTsK
KyAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudCgmcGFyZW50LCBTdWJ0cmVlTW9kaWZpZWQs
IHRydWUsIGV2ZW50RGF0YS5nZXQoKSk7CiAgICAgICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQ
cm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwg
ZXZlbnREYXRhLnJlbGVhc2UoKSk7CiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OndpbGxSZW1vdmVET01Ob2RlKE5vZGUmIG5vZGUpCiB7Ci0gICAgTm9k
ZSogcGFyZW50Tm9kZSA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUobm9kZSk7
Ci0gICAgaWYgKGhhc0JyZWFrcG9pbnQobm9kZSwgTm9kZVJlbW92ZWQpKSB7CisgICAgTm9kZSog
cGFyZW50Tm9kZSA9IEluc3BlY3RvckRPTUFnZW50Ojppbm5lclBhcmVudE5vZGUoJm5vZGUpOwor
ICAgIGlmIChoYXNCcmVha3BvaW50KCZub2RlLCBOb2RlUmVtb3ZlZCkpIHsKICAgICAgICAgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4gZXZlbnREYXRhID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKLSAgICAgICAgZGVzY3JpcHRpb25Gb3JET01FdmVudChub2RlLCBOb2RlUmVtb3ZlZCwgZmFs
c2UsIGV2ZW50RGF0YS5nZXQoKSk7CisgICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoJm5v
ZGUsIE5vZGVSZW1vdmVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKICAgICAgICAgbV9kZWJ1
Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNo
ZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgpKTsKICAgICB9IGVsc2UgaWYgKHBh
cmVudE5vZGUgJiYgaGFzQnJlYWtwb2ludChwYXJlbnROb2RlLCBTdWJ0cmVlTW9kaWZpZWQpKSB7
CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQobm9kZSwgU3Vi
dHJlZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdldCgpKTsKKyAgICAgICAgZGVzY3JpcHRp
b25Gb3JET01FdmVudCgmbm9kZSwgU3VidHJlZU1vZGlmaWVkLCBmYWxzZSwgZXZlbnREYXRhLmdl
dCgpKTsKICAgICAgICAgbV9kZWJ1Z2dlckFnZW50LT5icmVha1Byb2dyYW0oSW5zcGVjdG9yRGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RE9NLCBldmVudERhdGEucmVsZWFzZSgp
KTsKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbE1vZGlm
eURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbE1vZGlmeURPTUF0dHIoRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoaGFzQnJl
YWtwb2ludChlbGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCkpIHsKKyAgICBpZiAoaGFzQnJlYWtw
b2ludCgmZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQpKSB7CiAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGV2ZW50RGF0YSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ICAgIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoZWxlbWVudCwgQXR0cmlidXRlTW9kaWZpZWQsIGZh
bHNlLCBldmVudERhdGEuZ2V0KCkpOworICAgICAgICBkZXNjcmlwdGlvbkZvckRPTUV2ZW50KCZl
bGVtZW50LCBBdHRyaWJ1dGVNb2RpZmllZCwgZmFsc2UsIGV2ZW50RGF0YS5nZXQoKSk7CiAgICAg
ICAgIG1fZGVidWdnZXJBZ2VudC0+YnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkRPTSwgZXZlbnREYXRhLnJlbGVhc2UoKSk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKaW5kZXggNzc0OTFjZTFhOWRjZjk1Mzg3ZGIwMTIxOGU5ZDQ1OTZkOWEyNDc4Yy4u
NTU4NzMzN2U1Y2FhMmFjZTcwMjA5NGMyOGM1Yzk0NGRkMjYzYmU4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC03
MCwxMyArNzAsMTMgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRET01CcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKLSAgICAvLyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24gQVBJCi0gICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlKiBwYXJl
bnQpOwotICAgIHZvaWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2RlKik7Ci0gICAgdm9pZCBk
aWRJbnNlcnRET01Ob2RlKE5vZGUqKTsKLSAgICB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKE5vZGUq
KTsKLSAgICB2b2lkIGRpZFJlbW92ZURPTU5vZGUoTm9kZSopOwotICAgIHZvaWQgd2lsbE1vZGlm
eURPTUF0dHIoRWxlbWVudCopOworICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBjYWxs
YmFja3MuCisgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOworICAgIHZv
aWQgZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihOb2RlJik7CisgICAgdm9pZCBkaWRJbnNlcnRET01O
b2RlKE5vZGUmKTsKKyAgICB2b2lkIHdpbGxSZW1vdmVET01Ob2RlKE5vZGUmKTsKKyAgICB2b2lk
IGRpZFJlbW92ZURPTU5vZGUoTm9kZSYpOworICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0dHIoRWxl
bWVudCYpOwogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVy
bCk7CiAgICAgdm9pZCBwYXVzZU9uTmF0aXZlRXZlbnRJZk5lZWRlZChib29sIGlzRE9NRXZlbnQs
IGNvbnN0IFN0cmluZyYgZXZlbnROYW1lLCBib29sIHN5bmNocm9ub3VzKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCBlYTVjZTViNzAxNDIxOTlmNjQzNmVlYjVlM2I1MGQ4NThkZWE1YjFhLi4zNTg5ZWZmZDM3
OGVhNzM1NmUwODNlYzA0N2Q3YWYxNDU4MTE5M2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTE4LDcgKzEx
OCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDbGVhcldpbmRvd09iamVj
dEluV29ybGRJbXBsKEluc3RydW1lbnRpbmdBZ2VuCiAgICAgfQogICAgIGlmIChQYWdlUnVudGlt
ZUFnZW50KiBwYWdlUnVudGltZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlUnVudGlt
ZUFnZW50KCkpIHsKICAgICAgICAgaWYgKCZ3b3JsZCA9PSAmbWFpblRocmVhZE5vcm1hbFdvcmxk
KCkpCi0gICAgICAgICAgICBwYWdlUnVudGltZUFnZW50LT5kaWRDcmVhdGVNYWluV29ybGRDb250
ZXh0KCZmcmFtZSk7CisgICAgICAgICAgICBwYWdlUnVudGltZUFnZW50LT5kaWRDcmVhdGVNYWlu
V29ybGRDb250ZXh0KGZyYW1lKTsKICAgICB9CiB9CiAKQEAgLTEzMiw1NyArMTMyLDU3IEBAIGJv
b2wgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEluc2VydERPTU5vZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIE5vZGUmIHBhcmVudCkKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCog
ZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudCgpKQotICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsSW5zZXJ0RE9NTm9kZSgm
cGFyZW50KTsKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbEluc2VydERPTU5vZGUocGFy
ZW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEluc2VydERPTU5v
ZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIE5vZGUmIG5v
ZGUpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZEluc2Vy
dERPTU5vZGUoJm5vZGUpOworICAgICAgICBkb21BZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2Rl
KTsKICAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQotICAgICAg
ICBkb21EZWJ1Z2dlckFnZW50LT5kaWRJbnNlcnRET01Ob2RlKCZub2RlKTsKKyAgICAgICAgZG9t
RGVidWdnZXJBZ2VudC0+ZGlkSW5zZXJ0RE9NTm9kZShub2RlKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2RlJiBub2RlKQogewogICAgIGlmIChJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQt
PndpbGxSZW1vdmVET01Ob2RlKCZub2RlKTsKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2ls
bFJlbW92ZURPTU5vZGUobm9kZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZW1vdmVET01Ob2RlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBOb2RlJiBub2RlKQogewogICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUo
Jm5vZGUpOworICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRSZW1vdmVET01Ob2RlKG5vZGUp
OwogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRSZW1vdmVET01O
b2RlKCZub2RlKTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTU5vZGUobm9kZSk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0ckltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgQXRvbWljU3RyaW5nJiBvbGRWYWx1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdW
YWx1ZSkKIHsKICAgICBpZiAoSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCogZG9tRGVidWdnZXJB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpKQot
ICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsTW9kaWZ5RE9NQXR0cigmZWxlbWVudCk7Cisg
ICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxNb2RpZnlET01BdHRyKGVsZW1lbnQpOwogICAg
IGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT53aWxsTW9kaWZ5RE9NQXR0cigm
ZWxlbWVudCwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKKyAgICAgICAgZG9tQWdlbnQtPndpbGxNb2Rp
ZnlET01BdHRyKGVsZW1lbnQsIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRNb2RpZnlET01BdHRySW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9N
QWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoJmVsZW1lbnQsIG5h
bWUsIHZhbHVlKTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZE1vZGlmeURPTUF0dHIoZWxlbWVudCwg
bmFtZSwgdmFsdWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVt
b3ZlRE9NQXR0ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogewogICAgIGlmIChJ
bnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRSZW1vdmVET01BdHRyKCZlbGVtZW50
LCBuYW1lKTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZFJlbW92ZURPTUF0dHIoZWxlbWVudCwgbmFt
ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5
bGVBdHRySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBOb2Rl
JiBub2RlKQogewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRJ
bnZhbGlkYXRlU3R5bGVBdHRyKCZub2RlKTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZEludmFsaWRh
dGVTdHlsZUF0dHIobm9kZSk7CiAgICAgaWYgKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIGRv
bURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSW52YWxpZGF0ZVN0eWxlQXR0
cigmbm9kZSk7CisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEludmFsaWRhdGVTdHlsZUF0
dHIobm9kZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmcmFtZVdpbmRv
d0Rpc2NhcmRlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
RE9NV2luZG93KiB3aW5kb3cpCkBAIC0yMDAsNDMgKzIwMCw0OSBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6bWVkaWFRdWVyeVJlc3VsdENoYW5nZWRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUHVzaFNoYWRvd1Jvb3RJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQmIGhv
c3QsIFNoYWRvd1Jvb3QmIHJvb3QpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21B
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAg
ZG9tQWdlbnQtPmRpZFB1c2hTaGFkb3dSb290KCZob3N0LCAmcm9vdCk7CisgICAgICAgIGRvbUFn
ZW50LT5kaWRQdXNoU2hhZG93Um9vdChob3N0LCByb290KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxQb3BTaGFkb3dSb290SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBob3N0LCBTaGFkb3dSb290JiByb290KQog
ewogICAgIGlmIChJbnNwZWN0b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT53aWxsUG9wU2hhZG93
Um9vdCgmaG9zdCwgJnJvb3QpOworICAgICAgICBkb21BZ2VudC0+d2lsbFBvcFNoYWRvd1Jvb3Qo
aG9zdCwgcm9vdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVh
dGVOYW1lZEZsb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7CisgICAg
aWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKEluc3BlY3RvckNTU0Fn
ZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkK
LSAgICAgICAgY3NzQWdlbnQtPmRpZENyZWF0ZU5hbWVkRmxvdyhkb2N1bWVudCwgJm5hbWVkRmxv
dyk7CisgICAgICAgIGNzc0FnZW50LT5kaWRDcmVhdGVOYW1lZEZsb3coKmRvY3VtZW50LCBuYW1l
ZEZsb3cpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlbW92ZU5h
bWVkRmxvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9j
dW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdykKIHsKKyAgICBpZiAo
IWRvY3VtZW50KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQq
IGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2VudCgpKQotICAg
ICAgICBjc3NBZ2VudC0+d2lsbFJlbW92ZU5hbWVkRmxvdyhkb2N1bWVudCwgJm5hbWVkRmxvdyk7
CisgICAgICAgIGNzc0FnZW50LT53aWxsUmVtb3ZlTmFtZWRGbG93KCpkb2N1bWVudCwgbmFtZWRG
bG93KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZVJlZ2lv
bk92ZXJzZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG93JiBuYW1lZEZsb3cpCiB7CiAgICAgaWYg
KEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQo
JmRvY3VtZW50LCAmbmFtZWRGbG93KTsKKyAgICAgICAgY3NzQWdlbnQtPmRpZENoYW5nZVJlZ2lv
bk92ZXJzZXQoZG9jdW1lbnQsIG5hbWVkRmxvdyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFdl
YktpdE5hbWVkRmxvdyYgbmFtZWRGbG93LCBOb2RlJiBjb250ZW50RWxlbWVudCwgTm9kZSogbmV4
dENvbnRlbnRFbGVtZW50KQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0gICAgICAgIGNzc0Fn
ZW50LT5kaWRSZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KCZkb2N1bWVudCwgJm5hbWVk
RmxvdywgJmNvbnRlbnRFbGVtZW50LCBuZXh0Q29udGVudEVsZW1lbnQpOworICAgICAgICBjc3NB
Z2VudC0+ZGlkUmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudCwgbmFtZWRG
bG93LCBjb250ZW50RWxlbWVudCwgbmV4dENvbnRlbnRFbGVtZW50KTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFVucmVnaXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRG9jdW1lbnQm
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsb3cmIG5hbWVkRmxvdywgTm9kZSYgY29udGVudEVsZW1l
bnQpCiB7CiAgICAgaWYgKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yQ1NTQWdlbnQoKSkKLSAgICAgICAgY3NzQWdlbnQtPmRpZFVucmVn
aXN0ZXJOYW1lZEZsb3dDb250ZW50RWxlbWVudCgmZG9jdW1lbnQsICZuYW1lZEZsb3csICZjb250
ZW50RWxlbWVudCk7CisgICAgICAgIGNzc0FnZW50LT5kaWRVbnJlZ2lzdGVyTmFtZWRGbG93Q29u
dGVudEVsZW1lbnQoZG9jdW1lbnQsIG5hbWVkRmxvdywgY29udGVudEVsZW1lbnQpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQgbW9kaWZpZXJGbGFncykKQEAgLTI1NCw3ICsyNjAsNyBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Nyb2xsSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQQogYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmhhbmRsZVRvdWNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIE5vZGUmIG5vZGUpCiB7CiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgcmV0
dXJuIGRvbUFnZW50LT5oYW5kbGVUb3VjaEV2ZW50KCZub2RlKTsKKyAgICAgICAgcmV0dXJuIGRv
bUFnZW50LT5oYW5kbGVUb3VjaEV2ZW50KG5vZGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIApA
QCAtMjY4LDE0ICsyNzQsMTQgQEAgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRs
ZU1vdXNlUHJlc3NJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KIGJvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50JiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6
UHNldWRvQ2xhc3NUeXBlIHBzZXVkb1N0YXRlKQogewogICAgIGlmIChJbnNwZWN0b3JDU1NBZ2Vu
dCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckNTU0FnZW50KCkpCi0g
ICAgICAgIHJldHVybiBjc3NBZ2VudC0+Zm9yY2VQc2V1ZG9TdGF0ZSgmZWxlbWVudCwgcHNldWRv
U3RhdGUpOworICAgICAgICByZXR1cm4gY3NzQWdlbnQtPmZvcmNlUHNldWRvU3RhdGUoZWxlbWVu
dCwgcHNldWRvU3RhdGUpOwogICAgIHJldHVybiBmYWxzZTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2hhcmFjdGVyRGF0YSYgY2hhcmFjdGVyRGF0YSkK
IHsKICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JET01BZ2VudCgpKQotICAgICAgICBkb21BZ2VudC0+Y2hhcmFjdGVyRGF0
YU1vZGlmaWVkKCZjaGFyYWN0ZXJEYXRhKTsKKyAgICAgICAgZG9tQWdlbnQtPmNoYXJhY3RlckRh
dGFNb2RpZmllZChjaGFyYWN0ZXJEYXRhKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxTZW5kWE1MSHR0cFJlcXVlc3RJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IFN0cmluZyYgdXJsKQpAQCAtMzk1LDcgKzQwMSw3IEBA
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwoCiB7CiAgICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7
CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgewotICAgICAgICB0aW1lbGlu
ZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyLCAmZnJhbWUpOworICAg
ICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyLCBm
cmFtZSk7CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAg
ICAgfQogICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVu
dGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKQEAgLTQwNCw3ICs0MTAsNyBAQCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZh
bHVhdGVTY3JpcHRJbXBsKAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1
YXRlU2NyaXB0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tp
ZSwgRnJhbWUmIGZyYW1lKQogewogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCi0gICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZEV2YWx1YXRlU2NyaXB0KCZmcmFtZSk7CisgICAgICAgIHRpbWVsaW5lQWdl
bnQtPmRpZEV2YWx1YXRlU2NyaXB0KGZyYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnNjcmlwdHNFbmFibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBib29sIGlzRW5hYmxlZCkKQEAgLTQzNywxNCArNDQzLDE0IEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52
YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgRnJhbWUmIGZyYW1lKQogewogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEludmFsaWRhdGVMYXlvdXQoJmZyYW1lKTsKKyAg
ICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSk7CiB9CiAKIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lJiBmcmFtZSkKIHsKICAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKICAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxM
YXlvdXQoJmZyYW1lKTsKKyAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbExheW91dChmcmFtZSk7
CiAgICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7CiAgICAgfQog
ICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZWxpbmVBZ2VudElkKTsKQEAgLTQ3OSw3ICs0ODUsNyBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hYSFJMb2FkRXZlbnRJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydQogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxQYWludEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKIHsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAg
ICB0aW1lbGluZUFnZW50LT53aWxsUGFpbnQoJnJlbmRlcmVyLT5mcmFtZSgpKTsKKyAgICAgICAg
dGltZWxpbmVBZ2VudC0+d2lsbFBhaW50KHJlbmRlcmVyLT5mcmFtZSgpKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlv
dXRSZWN0JiByZWN0KQpAQCAtNDk0LDcgKzUwMCw3IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRQYWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
CiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNjcm9sbExheWVySW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7CiAg
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxpbmVBZ2Vu
dC0+d2lsbFNjcm9sbCgmZnJhbWUpOworICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsU2Nyb2xs
KGZyYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbExh
eWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQpAQCAtNTM1
LDIxICs1NDEsMjQgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxl
U3R5bGVSZWNhbGN1bGF0aW9uSW1wbChJbnN0cnVtZW50aW5nQWcKICAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRTY2hlZHVsZVN0
eWxlUmVjYWxjdWxhdGlvbihkb2N1bWVudC5mcmFtZSgpKTsKICAgICBpZiAoSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRTY2hlZHVsZVN0eWxl
UmVjYWxjdWxhdGlvbigmZG9jdW1lbnQpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRTY2hl
ZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihkb2N1bWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjphcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
IGluc3RydW1lbnRpbmdBZ2VudHMsIFN0cmluZyYgbWVkaWEpCiB7CiAgICAgaWYgKEluc3BlY3Rv
clBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdl
QWdlbnQoKSkKLSAgICAgICAgcGFnZUFnZW50LT5hcHBseUVtdWxhdGVkTWVkaWEoJm1lZGlhKTsK
KyAgICAgICAgcGFnZUFnZW50LT5hcHBseUVtdWxhdGVkTWVkaWEobWVkaWEpOwogfQogCiB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRSZXF1ZXN0SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKKyAgICBpZiAoIWxvYWRlcikK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVs
aW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkK
ICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbFNlbmRSZXNvdXJjZVJlcXVlc3QoaWRlbnRpZmll
ciwgcmVxdWVzdCwgbG9hZGVyLT5mcmFtZSgpKTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCgpKQotICAgICAgICByZXNvdXJjZUFnZW50LT53aWxsU2VuZFJlcXVlc3QoaWRlbnRp
ZmllciwgbG9hZGVyLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgcmVzb3Vy
Y2VBZ2VudC0+d2lsbFNlbmRSZXF1ZXN0KGlkZW50aWZpZXIsICpsb2FkZXIsIHJlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y29u
dGludWVBZnRlclBpbmdMb2FkZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKQEAgLTU2Nyw4ICs1NzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZUltcGwoSW5zdHJ1bWVudGluZ0EKIHsKICAg
ICBpZiAoIWluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5kZXZlbG9w
ZXJFeHRyYXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIWxvYWRl
ciB8fCAhY2FjaGVkUmVzb3VyY2UpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChJbnNwZWN0
b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KCkpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPmRpZExvYWRSZXNv
dXJjZUZyb21NZW1vcnlDYWNoZShsb2FkZXIsIGNhY2hlZFJlc291cmNlKTsKKyAgICAgICAgcmVz
b3VyY2VBZ2VudC0+ZGlkTG9hZFJlc291cmNlRnJvbU1lbW9yeUNhY2hlKCpsb2FkZXIsICpjYWNo
ZWRSZXNvdXJjZSk7CiB9CiAKIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNlaXZlUmVzb3VyY2VEYXRhSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSogZnJhbWUsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgaW50IGxlbmd0aCkKQEAgLTU5MSw3ICs2MDQsNyBAQCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2
ZVJlc291cmNlUmVzcAogewogICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwogICAgIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmlu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCkgeworICAgIGlm
ICh0aW1lbGluZUFnZW50ICYmIGZyYW1lKSB7CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxS
ZWNlaXZlUmVzb3VyY2VSZXNwb25zZShpZGVudGlmaWVyLCByZXNwb25zZSwgZnJhbWUpOwogICAg
ICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwogICAgIH0KQEAgLTYx
MSwxMyArNjI0LDE2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZl
UmVzb3VyY2VSZXNwb25zZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zCiAgICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29v
a2llKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2Uo
KTsKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVzb3VyY2VBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICByZXNvdXJj
ZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UoaWRlbnRpZmllciwgbG9hZGVyLCByZXNwb25zZSwg
cmVzb3VyY2VMb2FkZXIpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRSZWNlaXZlUmVzcG9u
c2UoaWRlbnRpZmllciwgKmxvYWRlciwgcmVzcG9uc2UsIHJlc291cmNlTG9hZGVyKTsKICAgICBp
ZiAoV2ViQ29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndl
YkNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmRpZFJlY2VpdmVSZXNwb25z
ZShpZGVudGlmaWVyLCByZXNwb25zZSk7IC8vIFRoaXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3Vy
Y2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVsaWVzIG9uIHRoaXMuCiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlUmVzb3VyY2VSZXNwb25zZUJ1dENhbmNl
bGVkSW1wbChGcmFtZSogZnJhbWUsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIHVuc2lnbmVkIGxv
bmcgaWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIHsKKyAgICBpZiAoIWZy
YW1lKQorICAgICAgICByZXR1cm47CisKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjZWl2ZVJlc291cmNl
UmVzcG9uc2UoZnJhbWUsIGlkZW50aWZpZXIsIHIpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjZWl2ZVJlc291cmNlUmVzcG9uc2UoY29va2llLCBpZGVudGlmaWVyLCAmbG9h
ZGVyLCByLCBudWxscHRyKTsKIH0KQEAgLTY0NSwxOCArNjYxLDI0IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNlaXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVuCiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hMb2Fk
aW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hU
aW1lKQogeworICAgIGlmICghbG9hZGVyKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5p
c2hMb2FkaW5nUmVzb3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUsIGxvYWRlci0+
ZnJhbWUoKSk7CiAgICAgaWYgKEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKLSAgICAgICAg
cmVzb3VyY2VBZ2VudC0+ZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyLCBsb2FkZXIsIGZpbmlz
aFRpbWUpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZp
ZXIsICpsb2FkZXIsIGZpbmlzaFRpbWUpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmFpbExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRp
bmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CisgICAgaWYgKCFsb2FkZXIpCisgICAg
ICAgIHJldHVybjsKKwogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpbmlzaExvYWRpbmdSZXNvdXJjZShpZGVudGlmaWVyLCB0
cnVlLCAwLCBsb2FkZXItPmZyYW1lKCkpOwogICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50
KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFn
ZW50KCkpCi0gICAgICAgIHJlc291cmNlQWdlbnQtPmRpZEZhaWxMb2FkaW5nKGlkZW50aWZpZXIs
IGxvYWRlciwgZXJyb3IpOworICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRGYWlsTG9hZGluZyhp
ZGVudGlmaWVyLCAqbG9hZGVyLCBlcnJvcik7CiAgICAgaWYgKFdlYkNvbnNvbGVBZ2VudCogY29u
c29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25zb2xlQWdlbnQoKSkKICAgICAg
ICAgY29uc29sZUFnZW50LT5kaWRGYWlsTG9hZGluZyhpZGVudGlmaWVyLCBlcnJvcik7IC8vIFRo
aXMgc2hvdWxkIGNvbWUgQUZURVIgcmVzb3VyY2Ugbm90aWZpY2F0aW9uLCBmcm9udC1lbmQgcmVs
aWVzIG9uIHRoaXMuCiB9CkBAIC03MjYsNyArNzQ4LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZFJlY2VpdmVTY3JpcHRSZXNwb25zZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkb21Db250ZW50TG9hZGVkRXZlbnRG
aXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUm
IGZyYW1lKQogewogICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCi0gICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZE1hcmtET01Db250ZW50RXZlbnQoJmZyYW1lKTsKKyAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkTWFya0RPTUNvbnRlbnRFdmVudChmcmFtZSk7CiAKICAgICBpZiAo
IWZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc0MCw4ICs3NjIsMTEg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRvbUNvbnRlbnRMb2FkZWRFdmVudEZp
cmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnQKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmxvYWRFdmVudEZpcmVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBGcmFtZSogZnJhbWUpCiB7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJu
OworCiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKLSAgICAgICAgdGltZWxp
bmVBZ2VudC0+ZGlkTWFya0xvYWRFdmVudChmcmFtZSk7CisgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZE1hcmtMb2FkRXZlbnQoKmZyYW1lKTsKIAogICAgIGlmICghZnJhbWUtPmlzTWFpbkZyYW1l
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTc1MywxMyArNzc4LDE0IEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpsb2FkRXZlbnRGaXJlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVuCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVEZXRhY2hlZEZy
b21QYXJlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZy
YW1lJiBmcmFtZSkKIHsKICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclBhZ2VBZ2VudCgpKQotICAgICAgICBwYWdlQWdl
bnQtPmZyYW1lRGV0YWNoZWQoJmZyYW1lKTsKKyAgICAgICAgcGFnZUFnZW50LT5mcmFtZURldGFj
aGVkKGZyYW1lKTsKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQotICAgIGlmIChmcmFtZS5pc01h
aW5GcmFtZSgpKSB7Ci0gICAgICAgIGlmIChJbnNwZWN0b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlcGxheUFnZW50KCkpCi0gICAgICAg
ICAgICByZXBsYXlBZ2VudC0+ZnJhbWVEZXRhY2hlZCgmZnJhbWUpOwotICAgIH0KKyAgICBpZiAo
IWZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChJbnNwZWN0
b3JSZXBsYXlBZ2VudCogcmVwbGF5QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
clJlcGxheUFnZW50KCkpCisgICAgICAgIHJlcGxheUFnZW50LT5mcmFtZURldGFjaGVkKGZyYW1l
KTsKICNlbmRpZgogfQogCkBAIC03NjgsMTIgKzc5NCwxNSBAQCB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudAogICAgIGlmICghaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JFbnZpcm9ubWVudCgp
LmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFw
YWdlIHx8ICFsb2FkZXIgfHwgIWxvYWRlci0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKGxvYWRlci0+ZnJhbWUoKS0+aXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoV2Vi
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNv
bGVBZ2VudCgpKQogICAgICAgICAgICAgY29uc29sZUFnZW50LT5yZXNldCgpOwogCiAgICAgICAg
IGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCkpCi0gICAgICAgICAgICByZXNvdXJjZUFn
ZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKKyAgICAgICAgICAgIHJlc291cmNlQWdl
bnQtPm1haW5GcmFtZU5hdmlnYXRlZCgqbG9hZGVyKTsKIAogICAgICAgICBpZiAoSW5zcGVjdG9y
Q1NTQWdlbnQqIGNzc0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JDU1NBZ2Vu
dCgpKQogICAgICAgICAgICAgY3NzQWdlbnQtPnJlc2V0KCk7CkBAIC04MTMsNyArODQyLDcgQEAg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lRG9jdW1lbnRVcGRhdGVkSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiBpbnMKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjps
b2FkZXJEZXRhY2hlZEZyb21GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgRG9jdW1lbnRMb2FkZXImIGxvYWRlcikKIHsKICAgICBpZiAoSW5zcGVjdG9y
UGFnZUFnZW50KiBpbnNwZWN0b3JQYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3Bl
Y3RvclBhZ2VBZ2VudCgpKQotICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmxvYWRlckRldGFj
aGVkRnJvbUZyYW1lKCZsb2FkZXIpOworICAgICAgICBpbnNwZWN0b3JQYWdlQWdlbnQtPmxvYWRl
ckRldGFjaGVkRnJvbUZyYW1lKGxvYWRlcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZVN0YXJ0ZWRMb2FkaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCkBAIC04NjAsNyArODg5LDcgQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2VJbXBsKENh
Y2hlZFJlc291cmNlJiBjYWMKIAogICAgIGZvciAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50IDog
KnNfaW5zdHJ1bWVudGluZ0FnZW50c1NldCkgewogICAgICAgICBpZiAoSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudCogaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudC0+aW5z
cGVjdG9yUmVzb3VyY2VBZ2VudCgpKQotICAgICAgICAgICAgaW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC0+d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZSgmY2FjaGVkUmVzb3VyY2UpOworICAgICAgICAg
ICAgaW5zcGVjdG9yUmVzb3VyY2VBZ2VudC0+d2lsbERlc3Ryb3lDYWNoZWRSZXNvdXJjZShjYWNo
ZWRSZXNvdXJjZSk7CiAgICAgfQogfQogCkBAIC05MjksNyArOTU4LDcgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmNvbnNvbGVDb3VudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGkKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzdGFydENvbnNvbGVU
aW1pbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1l
JiBmcmFtZSwgY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxp
bmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGluZUFnZW50LT50aW1lKCZmcmFtZSwgdGl0bGUp
OworICAgICAgICB0aW1lbGluZUFnZW50LT50aW1lKGZyYW1lLCB0aXRsZSk7CiAgICAgaWYgKFdl
YkNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy53ZWJDb25z
b2xlQWdlbnQoKSkKICAgICAgICAgY29uc29sZUFnZW50LT5zdGFydFRpbWluZyh0aXRsZSk7CiB9
CkBAIC05MzksNyArOTY4LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnN0b3BD
b25zb2xlVGltaW5nSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnUKICAgICBpZiAoV2Vi
Q29uc29sZUFnZW50KiBjb25zb2xlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkNvbnNv
bGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPnN0b3BUaW1pbmcodGl0bGUsIHN0YWNr
KTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQotICAgICAgICB0aW1lbGlu
ZUFnZW50LT50aW1lRW5kKCZmcmFtZSwgdGl0bGUpOworICAgICAgICB0aW1lbGluZUFnZW50LT50
aW1lRW5kKGZyYW1lLCB0aXRsZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojpjb25zb2xlVGltZVN0YW1wSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBGcmFtZSYgZnJhbWUsIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVu
dHMpCkBAIC05NDcsNyArOTc2LDcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNv
bnNvbGVUaW1lU3RhbXBJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW0KICAgICBpZiAo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CiAgICAgICAgIFN0cmluZyBtZXNzYWdlOwog
ICAgICAgICBhcmd1bWVudHMtPmdldEZpcnN0QXJndW1lbnRBc1N0cmluZyhtZXNzYWdlKTsKLSAg
ICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkVGltZVN0YW1wKCZmcmFtZSwgbWVzc2FnZSk7CisgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZFRpbWVTdGFtcChmcmFtZSwgbWVzc2FnZSk7CiAgICAgIH0K
IH0KIApAQCAtMTAxNyw2ICsxMDQ2LDEwIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDcmVhdGVXZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RyCiB7CiAg
ICAgaWYgKCFpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWRvY3VtZW50
KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCogcmVz
b3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgp
KQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRDcmVhdGVXZWJTb2NrZXQoaWRlbnRpZmllciwg
cmVxdWVzdFVSTCk7CiAgICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKQEAgLTEw
MjUsNiArMTA1OCw5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDcmVhdGVX
ZWJTb2NrZXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RyCiAKIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsU2VuZFdlYlNvY2tldEhhbmRzaGFrZVJlcXVlc3RJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1bWVudCogZG9jdW1l
bnQpCiB7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKElu
c3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
Lmluc3BlY3RvclJlc291cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+d2lsbFNl
bmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0KGlkZW50aWZpZXIsIHJlcXVlc3QpOwogICAgIGlm
IChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0Fn
ZW50cy5pbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCkBAIC0xMDMzLDYgKzEwNjksOSBAQCB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0SW1wbChJbnN0cnVtZW50aQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
UmVjZWl2ZVdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CisgICAgaWYg
KCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKEluc3BlY3RvclJlc291cmNl
QWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvclJlc291
cmNlQWdlbnQoKSkKICAgICAgICAgcmVzb3VyY2VBZ2VudC0+ZGlkUmVjZWl2ZVdlYlNvY2tldEhh
bmRzaGFrZVJlc3BvbnNlKGlkZW50aWZpZXIsIHJlc3BvbnNlKTsKICAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVj
dG9yVGltZWxpbmVBZ2VudCgpKQpAQCAtMTA0MSw2ICsxMDgwLDkgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFJlY2VpdmVXZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZUltcGwo
SW5zdHJ1bWUKIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENsb3NlV2ViU29j
a2V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50KiBkb2N1bWVudCkKIHsKKyAgICBpZiAoIWRvY3Vt
ZW50KQorICAgICAgICByZXR1cm47CisKICAgICBpZiAoSW5zcGVjdG9yUmVzb3VyY2VBZ2VudCog
cmVzb3VyY2VBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dCgpKQogICAgICAgICByZXNvdXJjZUFnZW50LT5kaWRDbG9zZVdlYlNvY2tldChpZGVudGlmaWVy
KTsKICAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQpAQCAtMTI5NSwxMyArMTMz
NywxMyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6bGF5ZXJUcmVlRGlkQ2hhbmdl
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cgogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OnJlbmRlckxheWVyRGVzdHJveWVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBjb25zdCBSZW5kZXJMYXllciYgcmVuZGVyTGF5ZXIpCiB7CiAgICAg
aWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXllclRyZWVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuaW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQoKSkKLSAgICAgICAgbGF5ZXJUcmVlQWdl
bnQtPnJlbmRlckxheWVyRGVzdHJveWVkKCZyZW5kZXJMYXllcik7CisgICAgICAgIGxheWVyVHJl
ZUFnZW50LT5yZW5kZXJMYXllckRlc3Ryb3llZChyZW5kZXJMYXllcik7CiB9CiAKIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpwc2V1ZG9FbGVtZW50RGVzdHJveWVkSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBQc2V1ZG9FbGVtZW50JiBwc2V1ZG9F
bGVtZW50KQogewogICAgIGlmIChJbnNwZWN0b3JMYXllclRyZWVBZ2VudCogbGF5ZXJUcmVlQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckxheWVyVHJlZUFnZW50KCkpCi0gICAg
ICAgIGxheWVyVHJlZUFnZW50LT5wc2V1ZG9FbGVtZW50RGVzdHJveWVkKCZwc2V1ZG9FbGVtZW50
KTsKKyAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnBzZXVkb0VsZW1lbnREZXN0cm95ZWQocHNldWRv
RWxlbWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQuY3BwCmluZGV4IGE5NzBk
MmE3ZmZmYjIzZjI2ZDAzYTMzMjBiYzMwNmE3MmI0ZjU1MDAuLjZjYjIxMjQ1ZjJmYWRkYjlmOTk1
NzU1NTM4YjA4MTFlMDNkNDUyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmNwcApAQCAtOTcsMTQgKzk3LDE0IEBAIHZvaWQg
SW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyVHJlZURpZENoYW5nZSgpCiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPmxheWVyVHJlZURpZENoYW5nZSgpOwogfQogCi12b2lkIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OjpyZW5kZXJMYXllckRlc3Ryb3llZChjb25zdCBSZW5kZXJMYXllciog
cmVuZGVyTGF5ZXIpCit2b2lkIEluc3BlY3RvckxheWVyVHJlZUFnZW50OjpyZW5kZXJMYXllckRl
c3Ryb3llZChjb25zdCBSZW5kZXJMYXllciYgcmVuZGVyTGF5ZXIpCiB7Ci0gICAgdW5iaW5kKHJl
bmRlckxheWVyKTsKKyAgICB1bmJpbmQoJnJlbmRlckxheWVyKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVudERlc3Ryb3llZChQc2V1ZG9FbGVtZW50KiBw
c2V1ZG9FbGVtZW50KQordm9pZCBJbnNwZWN0b3JMYXllclRyZWVBZ2VudDo6cHNldWRvRWxlbWVu
dERlc3Ryb3llZChQc2V1ZG9FbGVtZW50JiBwc2V1ZG9FbGVtZW50KQogewotICAgIHVuYmluZFBz
ZXVkb0VsZW1lbnQocHNldWRvRWxlbWVudCk7CisgICAgdW5iaW5kUHNldWRvRWxlbWVudCgmcHNl
dWRvRWxlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQ6OmxheWVyc0Zv
ck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6TGF5ZXJUcmVlOjpMYXll
cj4+JiBsYXllcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JM
YXllclRyZWVBZ2VudC5oCmluZGV4IDZkYWIxYWU4ODNiNjVkZDllOGI0ZjYxNjAxMDczZTM4NDUx
NDg3N2EuLjY2MzM5MzI3Y2QwZmRmMzdiOGRkY2I5NmQ0YWNiYzhiMzgwZWM0N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBA
IC01Niw5ICs1NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAgICAgdm9pZCByZXNldCgpOwogCisgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIGxheWVyVHJlZURpZENoYW5nZSgpOwotICAgIHZvaWQg
cmVuZGVyTGF5ZXJEZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXIqKTsKLSAgICB2b2lkIHBzZXVk
b0VsZW1lbnREZXN0cm95ZWQoUHNldWRvRWxlbWVudCopOworICAgIHZvaWQgcmVuZGVyTGF5ZXJE
ZXN0cm95ZWQoY29uc3QgUmVuZGVyTGF5ZXImKTsKKyAgICB2b2lkIHBzZXVkb0VsZW1lbnREZXN0
cm95ZWQoUHNldWRvRWxlbWVudCYpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVu
ZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmluZGV4IGFh
OTQxMWFjZDRhY2Y5ZTYyNGVkYjgzZmE1M2NmMDZhMDUxNGRiNjQuLjdlMmNiZGI2NTk3Nzg4NGNh
ZjRiMGY5MDAzYzM5MjljZjhiZjk5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC03MzAsOSArNzMwLDkgQEAgdm9pZCBJbnNwZWN0
b3JQYWdlQWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPmZyYW1lTmF2aWdhdGVkKGJ1aWxkT2JqZWN0Rm9yRnJhbWUo
bG9hZGVyLT5mcmFtZSgpKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZURl
dGFjaGVkKEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpmcmFtZURldGFj
aGVkKEZyYW1lJiBmcmFtZSkKIHsKLSAgICBIYXNoTWFwPEZyYW1lKiwgU3RyaW5nPjo6aXRlcmF0
b3IgaXRlcmF0b3IgPSBtX2ZyYW1lVG9JZGVudGlmaWVyLmZpbmQoZnJhbWUpOworICAgIEhhc2hN
YXA8RnJhbWUqLCBTdHJpbmc+OjppdGVyYXRvciBpdGVyYXRvciA9IG1fZnJhbWVUb0lkZW50aWZp
ZXIuZmluZCgmZnJhbWUpOwogICAgIGlmIChpdGVyYXRvciAhPSBtX2ZyYW1lVG9JZGVudGlmaWVy
LmVuZCgpKSB7CiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5mcmFtZURldGFjaGVkKGl0
ZXJhdG9yLT52YWx1ZSk7CiAgICAgICAgIG1faWRlbnRpZmllclRvRnJhbWUucmVtb3ZlKGl0ZXJh
dG9yLT52YWx1ZSk7CkBAIC04MDksOSArODA5LDkgQEAgRG9jdW1lbnRMb2FkZXIqIEluc3BlY3Rv
clBhZ2VBZ2VudDo6YXNzZXJ0RG9jdW1lbnRMb2FkZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4K
ICAgICByZXR1cm4gZG9jdW1lbnRMb2FkZXI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUGFnZUFnZW50
Ojpsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShEb2N1bWVudExvYWRlciogbG9hZGVyKQordm9pZCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6OmxvYWRlckRldGFjaGVkRnJvbUZyYW1lKERvY3VtZW50TG9hZGVy
JiBsb2FkZXIpCiB7Ci0gICAgbV9sb2FkZXJUb0lkZW50aWZpZXIucmVtb3ZlKGxvYWRlcik7Cisg
ICAgbV9sb2FkZXJUb0lkZW50aWZpZXIucmVtb3ZlKCZsb2FkZXIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6ZnJhbWVTdGFydGVkTG9hZGluZyhGcmFtZSYgZnJhbWUpCkBAIC05ODQs
MTAgKzk4NCwxMCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6c2V0RW11bGF0ZWRNZWRpYShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAgICAgfQogfQogCi12b2lkIEluc3Bl
Y3RvclBhZ2VBZ2VudDo6YXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyogbWVkaWEpCit2b2lkIElu
c3BlY3RvclBhZ2VBZ2VudDo6YXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyYgbWVkaWEpCiB7CiAg
ICAgaWYgKCFtX2VtdWxhdGVkTWVkaWEuaXNFbXB0eSgpKQotICAgICAgICAqbWVkaWEgPSBtX2Vt
dWxhdGVkTWVkaWE7CisgICAgICAgIG1lZGlhID0gbV9lbXVsYXRlZE1lZGlhOwogfQogCiB2b2lk
IEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0
cmluZyYsIGJvb2wqIG91dFBhcmFtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5oCmluZGV4IDI0Njk5NWY3YmJiNDBlODc1OTQzZWE2Mjc0YTk2MWIxMDNh
MjNmMjIuLjUzNDNhZjg5MjYxMjUyYThmYTE4ZTEzMGM0ZGNhMGM3YjUyNDQ5ZjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAgLTEyMCwyMCAr
MTIwLDIwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlSmF2YVNjcmlwdERpYWxv
ZyhFcnJvclN0cmluZyYsIGJvb2wgYWNjZXB0LCBjb25zdCBTdHJpbmcqIHByb21wdFRleHQpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhcmNoaXZlKEVycm9yU3RyaW5nJiwgU3RyaW5nKiBk
YXRhKSBvdmVycmlkZTsKIAotICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbiBBUEkKKyAg
ICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJhY2tzLgogICAgIHZvaWQgZGlkQ2xl
YXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lKiwgRE9NV3JhcHBlcldvcmxkJik7CiAgICAgdm9p
ZCBkb21Db250ZW50RXZlbnRGaXJlZCgpOwogICAgIHZvaWQgbG9hZEV2ZW50RmlyZWQoKTsKICAg
ICB2b2lkIGZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBmcmFtZURl
dGFjaGVkKEZyYW1lKik7Ci0gICAgdm9pZCBsb2FkZXJEZXRhY2hlZEZyb21GcmFtZShEb2N1bWVu
dExvYWRlciopOworICAgIHZvaWQgZnJhbWVEZXRhY2hlZChGcmFtZSYpOworICAgIHZvaWQgbG9h
ZGVyRGV0YWNoZWRGcm9tRnJhbWUoRG9jdW1lbnRMb2FkZXImKTsKICAgICB2b2lkIGZyYW1lU3Rh
cnRlZExvYWRpbmcoRnJhbWUmKTsKICAgICB2b2lkIGZyYW1lU3RvcHBlZExvYWRpbmcoRnJhbWUm
KTsKICAgICB2b2lkIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbihGcmFtZSYsIGRvdWJsZSBkZWxh
eSk7CiAgICAgdm9pZCBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKEZyYW1lJik7CiAg
ICAgdm9pZCB3aWxsUnVuSmF2YVNjcmlwdERpYWxvZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwog
ICAgIHZvaWQgZGlkUnVuSmF2YVNjcmlwdERpYWxvZygpOwotICAgIHZvaWQgYXBwbHlFbXVsYXRl
ZE1lZGlhKFN0cmluZyopOworICAgIHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKFN0cmluZyYpOwog
ICAgIHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYpOwogICAg
IHZvaWQgZGlkTGF5b3V0KCk7CiAgICAgdm9pZCBkaWRTY3JvbGwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCmluZGV4IGQxZDQ4ZjA2
MmI5NWExMjBjNDgzMzRmN2ZkMmM1ZWI1MDhiMGE5NzIuLjc3OWJlNjI4YjM4YThkNmNkNTg5ZmZh
OTA1OWQxY2M5ZjIyZWVjN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMjA4LDcgKzIwOCw3IEBAIHZvaWQgSW5zcGVjdG9y
UmVwbGF5QWdlbnQ6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAg
ICAgIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuZnJhbWVOYXZpZ2F0ZWQobG9hZGVyKTsKIH0K
IAotdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6ZnJhbWVEZXRhY2hlZChGcmFtZSogZnJhbWUp
Cit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50OjpmcmFtZURldGFjaGVkKEZyYW1lJiBmcmFtZSkK
IHsKICAgICBpZiAoc2Vzc2lvblN0YXRlKCkgIT0gV2ViQ29yZTo6U2Vzc2lvblN0YXRlOjpJbmFj
dGl2ZSkKICAgICAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5mcmFtZURldGFjaGVkKGZy
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBs
YXlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50
LmgKaW5kZXggNWFlMzk4NDEwNDg1NjRjMmY3NmIyZGJlM2M1NTE0MTU3ZTZmOGQ2ZC4uMTczYWVh
N2I4MjYxOGI4ZDI5MzAzYmM1YTA4ZDhiMGFjMDU1NTllZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmgKQEAgLTY3LDkgKzY3LDkgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVj
dG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbikgb3Zl
cnJpZGU7CiAKLSAgICAvLyBDYWxsYmFja3MgZnJvbSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
CisgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KICAgICB2b2lkIGZy
YW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKik7Ci0gICAgdm9pZCBmcmFtZURldGFjaGVkKEZy
YW1lKik7CisgICAgdm9pZCBmcmFtZURldGFjaGVkKEZyYW1lJik7CiAgICAgdm9pZCB3aWxsRGlz
cGF0Y2hFdmVudChjb25zdCBFdmVudCYsIEZyYW1lKik7CiAKICAgICAvLyBOb3RpZmljYXRpb25z
IGZyb20gUmVwbGF5Q29udHJvbGxlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCAzZDg3MmZjMjMyZmI1ZGIzNWI3ZDk2
NmZkOThkZmU4ZDc4ZGM2ZjhjLi5lMjY0NTYwYTdjZGE5MTAyOGMzMTdjMjhkNzU1M2I3ZDljNWFi
ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuY3BwCkBAIC0yNzksNyArMjc5LDcgQEAgZG91YmxlIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnRpbWVzdGFtcCgpCiAgICAgcmV0dXJuIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS0+ZWxhcHNlZFRpbWUoKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWdu
ZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpCit2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIFJlc291cmNlUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSkKIHsKICAgICBp
ZiAocmVxdWVzdC5oaWRkZW5Gcm9tSW5zcGVjdG9yKCkpIHsKICAgICAgICAgbV9oaWRkZW5SZXF1
ZXN0SWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpOwpAQCAtMjg3LDE2ICsyODcsMTYgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICB9CiAKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRl
bnRpZmllcnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgbV9yZXNvdXJjZXNE
YXRhLT5yZXNvdXJjZUNyZWF0ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9h
ZGVyKSk7CisgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZUNyZWF0ZWQocmVxdWVzdElkLCBt
X3BhZ2VBZ2VudC0+bG9hZGVySWQoJmxvYWRlcikpOwogCi0gICAgQ2FjaGVkUmVzb3VyY2UqIGNh
Y2hlZFJlc291cmNlID0gbG9hZGVyID8gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJj
ZShsb2FkZXItPmZyYW1lKCksIHJlcXVlc3QudXJsKCkpIDogbnVsbHB0cjsKKyAgICBDYWNoZWRS
ZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291
cmNlKGxvYWRlci5mcmFtZSgpLCByZXF1ZXN0LnVybCgpKTsKICAgICBJbnNwZWN0b3JQYWdlQWdl
bnQ6OlJlc291cmNlVHlwZSB0eXBlID0gY2FjaGVkUmVzb3VyY2UgPyBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmNhY2hlZFJlc291cmNlVHlwZSgqY2FjaGVkUmVzb3VyY2UpIDogbV9yZXNvdXJjZXNEYXRh
LT5yZXNvdXJjZVR5cGUocmVxdWVzdElkKTsKICAgICBpZiAodHlwZSA9PSBJbnNwZWN0b3JQYWdl
QWdlbnQ6Ok90aGVyUmVzb3VyY2UpIHsKICAgICAgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9u
b3VzbHkpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJj
ZTsKLSAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXF1
ZXN0LnVybCgpLCBsb2FkZXItPmZyYW1lTG9hZGVyKCktPmljb24oKS51cmwoKSkpCisgICAgICAg
IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSwg
bG9hZGVyLmZyYW1lTG9hZGVyKCktPmljb24oKS51cmwoKSkpCiAgICAgICAgICAgICB0eXBlID0g
SW5zcGVjdG9yUGFnZUFnZW50OjpJbWFnZVJlc291cmNlOwotICAgICAgICBlbHNlIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJsKCksIGxvYWRlci0+dXJsKCkp
ICYmICFsb2FkZXItPmlzQ29tbWl0dGVkKCkpCisgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSwgbG9hZGVyLnVybCgpKSAmJiAhbG9h
ZGVyLmlzQ29tbWl0dGVkKCkpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50
OjpEb2N1bWVudFJlc291cmNlOwogICAgIH0KIApAQCAtMzIyLDggKzMyMiw4IEBAIHZvaWQgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMCiAKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpQYWdlOjpSZXNvdXJj
ZVR5cGUgcmVzb3VyY2VUeXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29u
KHR5cGUpOwogCi0gICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRp
YXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFt
ZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7Ci0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQt
PmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciks
IGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCB0aW1lc3RhbXAoKSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291
cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwgdHlwZSAhPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBlIDogbnVsbHB0cik7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9y
T2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLmZyYW1lKCkgPyBsb2FkZXIuZnJh
bWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5y
ZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5m
cmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKCZsb2FkZXIpLCBsb2FkZXIudXJsKCkuc3Ry
aW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB0aW1lc3RhbXAo
KSwgaW5pdGlhdG9yT2JqZWN0LCBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJl
Y3RSZXNwb25zZSwgJmxvYWRlciksIHR5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJl
c291cmNlID8gJnJlc291cmNlVHlwZSA6IG51bGxwdHIpOwogfQogCiB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6Om1hcmtSZXNvdXJjZUFzQ2FjaGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
cikKQEAgLTMzNCwxMyArMzM0LDEzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFy
a1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbUNhY2hlKElkZW50aWZpZXJzRmFjdG9yeTo6
cmVxdWVzdElkKGlkZW50aWZpZXIpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExv
YWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VM
b2FkZXIqIHJlc291cmNlTG9hZGVyKQordm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRS
ZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYg
bG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VMb2FkZXIq
IHJlc291cmNlTG9hZGVyKQogewogICAgIGlmIChtX2hpZGRlblJlcXVlc3RJZGVudGlmaWVycy5j
b250YWlucyhpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHJlcXVl
c3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwotICAgIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZT4gcmVzb3VyY2VSZXNw
b25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25zZSwgbG9hZGVyKTsK
KyAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291
cmNlUmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVzcG9uc2UsICZs
b2FkZXIpOwogCiAgICAgYm9vbCBpc05vdE1vZGlmaWVkID0gcmVzcG9uc2UuaHR0cFN0YXR1c0Nv
ZGUoKSA9PSAzMDQ7CiAKQEAgLTM0OCw3ICszNDgsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3Vt
ZQogICAgIGlmIChyZXNvdXJjZUxvYWRlciAmJiByZXNvdXJjZUxvYWRlci0+aXNTdWJyZXNvdXJj
ZUxvYWRlcigpICYmICFpc05vdE1vZGlmaWVkKQogICAgICAgICBjYWNoZWRSZXNvdXJjZSA9IHN0
YXRpY19jYXN0PFN1YnJlc291cmNlTG9hZGVyKj4ocmVzb3VyY2VMb2FkZXIpLT5jYWNoZWRSZXNv
dXJjZSgpOwogICAgIGlmICghY2FjaGVkUmVzb3VyY2UpCi0gICAgICAgIGNhY2hlZFJlc291cmNl
ID0gSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShsb2FkZXItPmZyYW1lKCksIHJl
c3BvbnNlLnVybCgpKTsKKyAgICAgICAgY2FjaGVkUmVzb3VyY2UgPSBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmNhY2hlZFJlc291cmNlKGxvYWRlci5mcmFtZSgpLCByZXNwb25zZS51cmwoKSk7CiAKICAg
ICBpZiAoY2FjaGVkUmVzb3VyY2UpIHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNh
Y2hlZCByZXNvdXJjZSBpbiBjYXNlIHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCkBAIC0z
NjUsMTAgKzM2NSwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZQogICAgIGlmICh0eXBlICE9
IG5ld1R5cGUgJiYgbmV3VHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlICYm
IG5ld1R5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlKQogICAgICAgICB0
eXBlID0gbmV3VHlwZTsKIAotICAgIG1fcmVzb3VyY2VzRGF0YS0+cmVzcG9uc2VSZWNlaXZlZChy
ZXF1ZXN0SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIHJlc3BvbnNl
KTsKKyAgICBtX3Jlc291cmNlc0RhdGEtPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3Bh
Z2VBZ2VudC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIHJlc3BvbnNlKTsKICAgICBtX3Jlc291
cmNlc0RhdGEtPnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOwogCi0gICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlc3BvbnNlUmVjZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+
ZnJhbWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwg
dGltZXN0YW1wKCksIEluc3BlY3RvclBhZ2VBZ2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKSwg
cmVzb3VyY2VSZXNwb25zZSk7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3BvbnNlUmVj
ZWl2ZWQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJhbWVJZChsb2FkZXIuZnJhbWUoKSksIG1f
cGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKSwgdGltZXN0YW1wKCksIEluc3BlY3RvclBhZ2VB
Z2VudDo6cmVzb3VyY2VUeXBlSnNvbih0eXBlKSwgcmVzb3VyY2VSZXNwb25zZSk7CiAKICAgICAv
LyBJZiB3ZSByZXZhbGlkYXRlZCB0aGUgcmVzb3VyY2UgYW5kIGdvdCBOb3QgbW9kaWZpZWQsIHNl
bmQgY29udGVudCBsZW5ndGggZm9sbG93aW5nIGRpZFJlY2VpdmVSZXNwb25zZQogICAgIC8vIGFz
IHRoZXJlIHdpbGwgYmUgbm8gY2FsbHMgdG8gZGlkUmVjZWl2ZURhdGEgZnJvbSB0aGUgbmV0d29y
ayBzdGFjay4KQEAgLTM5NywxNyArMzk3LDE0IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dDo6ZGlkUmVjZWl2ZURhdGEodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBjaGFyCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmRhdGFSZWNlaXZlZChyZXF1ZXN0SWQsIHRpbWVzdGFt
cCgpLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGRvdWJsZSBmaW5pc2hUaW1lKQordm9pZCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmll
ciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgZG91YmxlIGZpbmlzaFRpbWUpCiB7CiAgICAgaWYg
KG1faGlkZGVuUmVxdWVzdElkZW50aWZpZXJzLnJlbW92ZShpZGVudGlmaWVyKSkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgU3RyaW5nIHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVx
dWVzdElkKGlkZW50aWZpZXIpOwotICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlw
ZShyZXF1ZXN0SWQpID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkgewot
ICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hhcmVkQnVmZmVyKHJlcXVlc3RJ
ZCwKLSAgICAgICAgICAgIGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+
bWFpblJlc291cmNlRGF0YSgpLAotICAgICAgICAgICAgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVu
dCgpLT5pbnB1dEVuY29kaW5nKCkpOwotICAgIH0KKyAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5y
ZXNvdXJjZVR5cGUocmVxdWVzdElkKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVz
b3VyY2UpCisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
cmVxdWVzdElkLCBsb2FkZXIuZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+bWFpblJl
c291cmNlRGF0YSgpLCBsb2FkZXIuZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygp
KTsKIAogICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVEZWNvZGVEYXRhVG9Db250ZW50KHJlcXVl
c3RJZCk7CiAKQEAgLTQyNSw3ICs0MjIsNyBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6
OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudAogICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmluaXNoZWQocmVxdWVzdElkLCBmaW5pc2hU
aW1lLCAhc291cmNlTWFwcGluZ1VSTC5pc0VtcHR5KCkgPyAmc291cmNlTWFwcGluZ1VSTCA6IG51
bGxwdHIpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZh
aWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRl
ciwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgaWYgKG1faGlkZGVuUmVxdWVz
dElkZW50aWZpZXJzLnJlbW92ZShpZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDMz
LDcgKzQzMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmFpbExvYWRpbmco
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvCiAgICAgU3RyaW5nIHJlcXVlc3RJ
ZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwogCiAgICAgaWYg
KG1fcmVzb3VyY2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFn
ZUFnZW50OjpEb2N1bWVudFJlc291cmNlKSB7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSA9IGxvYWRl
ciA/IGxvYWRlci0+ZnJhbWUoKSA6IG51bGxwdHI7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGxv
YWRlci5mcmFtZSgpOwogICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmRvY3Vt
ZW50TG9hZGVyKCkgJiYgZnJhbWUtPmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIocmVxdWVzdElkLAogICAgICAgICAgICAg
ICAgIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCks
CkBAIC00NDUsMjIgKzQ0MiwyMiBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZh
aWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5sb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgdGltZXN0YW1wKCksIGVy
cm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCksIGNhbmNlbGVkID8gJmNhbmNlbGVkIDogbnVsbHB0
cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIENhY2hlZFJlc291cmNlKiByZXNv
dXJjZSkKK3ZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJvbU1l
bW9yeUNhY2hlKERvY3VtZW50TG9hZGVyJiBsb2FkZXIsIENhY2hlZFJlc291cmNlJiByZXNvdXJj
ZSkKIHsKLSAgICBTdHJpbmcgbG9hZGVySWQgPSBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVy
KTsKLSAgICBTdHJpbmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJh
bWUoKSk7Ci0gICAgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyID0gbG9hZGVyLT5mcmFtZSgpLT5w
YWdlKCktPnByb2dyZXNzKCkuY3JlYXRlVW5pcXVlSWRlbnRpZmllcigpOworICAgIFN0cmluZyBs
b2FkZXJJZCA9IG1fcGFnZUFnZW50LT5sb2FkZXJJZCgmbG9hZGVyKTsKKyAgICBTdHJpbmcgZnJh
bWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci5mcmFtZSgpKTsKKyAgICB1bnNpZ25l
ZCBsb25nIGlkZW50aWZpZXIgPSBsb2FkZXIuZnJhbWUoKS0+cGFnZSgpLT5wcm9ncmVzcygpLmNy
ZWF0ZVVuaXF1ZUlkZW50aWZpZXIoKTsKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmll
cnNGYWN0b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7CiAgICAgbV9yZXNvdXJjZXNEYXRhLT5y
ZXNvdXJjZUNyZWF0ZWQocmVxdWVzdElkLCBsb2FkZXJJZCk7Ci0gICAgbV9yZXNvdXJjZXNEYXRh
LT5hZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIHJlc291cmNlKTsKLSAgICBpZiAocmVzb3Vy
Y2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UpIHsKLSAgICAgICAgU3Ry
aW5nIHJhd1JlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGRvd25jYXN0
PENhY2hlZFJhd1Jlc291cmNlPigqcmVzb3VyY2UpLmlkZW50aWZpZXIoKSk7CisgICAgbV9yZXNv
dXJjZXNEYXRhLT5hZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsICZyZXNvdXJjZSk7CisgICAg
aWYgKHJlc291cmNlLnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UmF3UmVzb3VyY2UpIHsKKyAg
ICAgICAgU3RyaW5nIHJhd1JlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElk
KGRvd25jYXN0PENhY2hlZFJhd1Jlc291cmNlPihyZXNvdXJjZSkuaWRlbnRpZmllcigpKTsKICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXVzZVhIUlJlcGxheURhdGEocmVxdWVzdElkLCByYXdS
ZXF1ZXN0SWQpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3
b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxv
YWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOwor
ICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRp
YXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci5mcmFtZSgpID8gbG9hZGVy
LmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKIAotICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9h
ZGVySWQsIGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIHRpbWVzdGFtcCgpLCBpbml0aWF0b3JPYmpl
Y3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVl
c3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci51cmwoKS5zdHJpbmcoKSwgdGltZXN0YW1w
KCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSgmcmVzb3Vy
Y2UsICZsb2FkZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRJbml0
aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYg
c291cmNlU3RyaW5nKQpAQCAtNTIzLDE1ICs1MjAsMTUgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpCiAgICAgbV9sb2FkaW5nWEhSU3luY2hy
b25vdXNseSA9IGZhbHNlOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxE
ZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQordm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsRGVzdHJveUNhY2hlZFJlc291cmNlKENhY2hl
ZFJlc291cmNlJiBjYWNoZWRSZXNvdXJjZSkKIHsKLSAgICBWZWN0b3I8U3RyaW5nPiByZXF1ZXN0
SWRzID0gbV9yZXNvdXJjZXNEYXRhLT5yZW1vdmVDYWNoZWRSZXNvdXJjZShjYWNoZWRSZXNvdXJj
ZSk7CisgICAgVmVjdG9yPFN0cmluZz4gcmVxdWVzdElkcyA9IG1fcmVzb3VyY2VzRGF0YS0+cmVt
b3ZlQ2FjaGVkUmVzb3VyY2UoJmNhY2hlZFJlc291cmNlKTsKICAgICBpZiAoIXJlcXVlc3RJZHMu
c2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgY29udGVudDsKICAgICBib29s
IGJhc2U2NEVuY29kZWQ7Ci0gICAgaWYgKCFJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291
cmNlQ29udGVudChjYWNoZWRSZXNvdXJjZSwgJmNvbnRlbnQsICZiYXNlNjRFbmNvZGVkKSkKKyAg
ICBpZiAoIUluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2VDb250ZW50KCZjYWNoZWRS
ZXNvdXJjZSwgJmNvbnRlbnQsICZiYXNlNjRFbmNvZGVkKSkKICAgICAgICAgcmV0dXJuOwogICAg
IFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBlbmQgPSByZXF1ZXN0SWRzLmVuZCgpOwogICAgIGZv
ciAoVmVjdG9yPFN0cmluZz46Oml0ZXJhdG9yIGl0ID0gcmVxdWVzdElkcy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCkBAIC01NDksMTAgKzU0NiwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OmRpZFJlY2FsY3VsYXRlU3R5bGUoKQogICAgIG1fc3R5bGVSZWNhbGN1bGF0aW9uSW5p
dGlhdG9yID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRT
Y2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCit2b2lkIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6OmRpZFNjaGVkdWxlU3R5bGVSZWNhbGN1bGF0aW9uKERvY3VtZW50
JiBkb2N1bWVudCkKIHsKICAgICBpZiAoIW1fc3R5bGVSZWNhbGN1bGF0aW9uSW5pdGlhdG9yKQot
ICAgICAgICBtX3N0eWxlUmVjYWxjdWxhdGlvbkluaXRpYXRvciA9IGJ1aWxkSW5pdGlhdG9yT2Jq
ZWN0KGRvY3VtZW50KTsKKyAgICAgICAgbV9zdHlsZVJlY2FsY3VsYXRpb25Jbml0aWF0b3IgPSBi
dWlsZEluaXRpYXRvck9iamVjdCgmZG9jdW1lbnQpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6Ok5ldHdvcms6OkluaXRpYXRvcj4gSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6
YnVpbGRJbml0aWF0b3JPYmplY3QoRG9jdW1lbnQqIGRvY3VtZW50KQpAQCAtNzg2LDEyICs3ODMs
MTIgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpsb2FkUmVzb3VyY2UoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBpbnNwZWN0b3JUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50LT5zZXRMb2FkZXIobG9hZGVyLnJlbGVhc2UoKSk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZChEb2N1
bWVudExvYWRlciYgbG9hZGVyKQogewogICAgIGlmIChtX2NhY2hlRGlzYWJsZWQpCiAgICAgICAg
IG1lbW9yeUNhY2hlKCkuZXZpY3RSZXNvdXJjZXMoKTsKIAotICAgIG1fcmVzb3VyY2VzRGF0YS0+
Y2xlYXIobV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlcikpOworICAgIG1fcmVzb3VyY2VzRGF0
YS0+Y2xlYXIobV9wYWdlQWdlbnQtPmxvYWRlcklkKCZsb2FkZXIpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmgKaW5kZXggMjUyMjU1NWMwY2IwNjQ0YWM3OGM0M2UzYWY5YTM3ZGNhYmRm
ODUwYy4uOWMzMTMzYjE1OGZmYThiMzY2M2FmN2NkMWEwMTRjOWU0MzhhODBiNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCkBAIC04
NCwxNyArODQsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0
b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHdpbGxTZW5kUmVxdWVzdCh1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0Jiwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgLy8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uIGNhbGxiYWNrcy4KKyAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0
eWxlKCk7CisgICAgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKCk7CisgICAgdm9pZCB3aWxsU2Vu
ZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciYsIFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2UpOwog
ICAgIHZvaWQgbWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsK
LSAgICB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG9hZGVyKiBsYW9kZXIsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBSZXNvdXJjZUxv
YWRlciopOworICAgIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciwgRG9jdW1lbnRMb2FkZXImIGxvYWRlciwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIFJl
c291cmNlTG9hZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YSh1bnNpZ25lZCBsb25nIGlk
ZW50aWZpZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBkYXRhTGVuZ3RoLCBpbnQgZW5jb2RlZERh
dGFMZW5ndGgpOwotICAgIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIERvY3VtZW50TG9hZGVyKiwgZG91YmxlIGZpbmlzaFRpbWUpOwotICAgIHZvaWQgZGlk
RmFpbExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKLSAgICB2b2lkIGRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlD
YWNoZShEb2N1bWVudExvYWRlciosIENhY2hlZFJlc291cmNlKik7Ci0gICAgdm9pZCBtYWluRnJh
bWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIHNldEluaXRpYWxTY3JpcHRD
b250ZW50KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJp
bmcpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVNjcmlwdFJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRl
bnRpZmllcik7Ci0KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVu
dGlmaWVyLCBEb2N1bWVudExvYWRlciYsIGRvdWJsZSBmaW5pc2hUaW1lKTsKKyAgICB2b2lkIGRp
ZEZhaWxMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXImLCBj
b25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgdm9pZCBkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5
Q2FjaGUoRG9jdW1lbnRMb2FkZXImLCBDYWNoZWRSZXNvdXJjZSYpOwogICAgIHZvaWQgZG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyU3RhcnRlZExvYWRpbmdGb3JDbGllbnQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CiAgICAgdm9pZCB3aWxsTG9hZFhI
UihUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFVS
TCYsIGJvb2wgYXN5bmMsIFBhc3NSZWZQdHI8Rm9ybURhdGE+IGJvZHksIGNvbnN0IEhUVFBIZWFk
ZXJNYXAmIGhlYWRlcnMsIGJvb2wgaW5jbHVkZUNyZW5kZW50aWFscyk7CiAgICAgdm9pZCBkaWRG
YWlsWEhSTG9hZGluZyhUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Kik7CkBAIC0xMDIsMTYgKzEwMSw4
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVYSFJSZXNwb25zZSh1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIpOwogICAgIHZvaWQgd2lsbExvYWRYSFJTeW5jaHJvbm91c2x5KCk7CiAgICAg
dm9pZCBkaWRMb2FkWEhSU3luY2hyb25vdXNseSgpOwotCi0gICAgdm9pZCB3aWxsRGVzdHJveUNh
Y2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7Ci0KLSAgICAvLyBGSVhNRTogSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudCBzaG91bGQgbm93IGJlIGF3YXJlIG9mIHN0eWxlIHJlY2FsY3VsYXRpb24u
Ci0gICAgdm9pZCB3aWxsUmVjYWxjdWxhdGVTdHlsZSgpOwotICAgIHZvaWQgZGlkUmVjYWxjdWxh
dGVTdHlsZSgpOwotICAgIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1l
bnQqKTsKLQotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5p
dGlhdG9yPiBidWlsZEluaXRpYXRvck9iamVjdChEb2N1bWVudCopOwotCisgICAgdm9pZCBkaWRS
ZWNlaXZlU2NyaXB0UmVzcG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICB2b2lk
IHdpbGxEZXN0cm95Q2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UmKTsKICNpZiBFTkFCTEUo
V0VCX1NPQ0tFVFMpCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2NrZXQodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBjb25zdCBVUkwmIHJlcXVlc3RVUkwpOwogICAgIHZvaWQgd2lsbFNlbmRXZWJT
b2NrZXRIYW5kc2hha2VSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0Jik7CkBAIC0xMjIsNiArMTEzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJik7CiAjZW5kaWYKIAorICAgIHZvaWQgbWFpbkZyYW1lTmF2aWdhdGVkKERvY3Vt
ZW50TG9hZGVyJik7CisgICAgdm9pZCBzZXRJbml0aWFsU2NyaXB0Q29udGVudCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgc291cmNlU3RyaW5nKTsKKworICAgIHZvaWQg
ZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKKworICAgIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6SW5pdGlhdG9yPiBidWlsZEluaXRpYXRv
ck9iamVjdChEb2N1bWVudCopOworCiAgICAgLy8gQ2FsbGVkIGZyb20gZnJvbnRlbmQuCiAgICAg
dmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggODg5NDI3Nzc4
MGE0ODZlZjAyNGY5NTZjZWJjOTM3OGQ0ZjQ2MjlmMi4uYmQzMjc4ZTgwMmRlZDA0MzYyNzNkODRj
NzBmMjM2YmIzMTVlMGFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIklu
c3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSlNE
T01XaW5kb3cuaCIKKyNpbmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJQYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgpAQCAtMjc0LDE4ICsyNzUsMTggQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpkaWREaXNwYXRjaEV2ZW50KCkKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRUeXBlOjpFdmVudERpc3BhdGNoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVj
dG9yVGltZWxpbmVBZ2VudDo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYgZnJhbWUpCiB7Ci0g
ICAgYXBwZW5kUmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6SW52YWxpZGF0ZUxheW91dCwgdHJ1ZSwgZnJhbWUpOworICAgIGFwcGVuZFJlY29yZChJ
bnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpLCBUaW1lbGluZVJlY29yZFR5cGU6OkludmFsaWRhdGVM
YXlvdXQsIHRydWUsICZmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbExheW91dChGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Ondp
bGxMYXlvdXQoRnJhbWUmIGZyYW1lKQogewotICAgIFJlbmRlck9iamVjdCogcm9vdCA9IGZyYW1l
LT52aWV3KCktPmxheW91dFJvb3QoKTsKKyAgICBSZW5kZXJPYmplY3QqIHJvb3QgPSBmcmFtZS52
aWV3KCktPmxheW91dFJvb3QoKTsKICAgICBib29sIHBhcnRpYWxMYXlvdXQgPSAhIXJvb3Q7CiAK
ICAgICBpZiAoIXBhcnRpYWxMYXlvdXQpCi0gICAgICAgIHJvb3QgPSBmcmFtZS0+Y29udGVudFJl
bmRlcmVyKCk7CisgICAgICAgIHJvb3QgPSBmcmFtZS5jb250ZW50UmVuZGVyZXIoKTsKIAogICAg
IHVuc2lnbmVkIGRpcnR5T2JqZWN0cyA9IDA7CiAgICAgdW5zaWduZWQgdG90YWxPYmplY3RzID0g
MDsKQEAgLTI5NCw3ICsyOTUsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxM
YXlvdXQoRnJhbWUqIGZyYW1lKQogICAgICAgICBpZiAoby0+bmVlZHNMYXlvdXQoKSkKICAgICAg
ICAgICAgICsrZGlydHlPYmplY3RzOwogICAgIH0KLSAgICBwdXNoQ3VycmVudFJlY29yZChUaW1l
bGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUxheW91dERhdGEoZGlydHlPYmplY3RzLCB0b3RhbE9i
amVjdHMsIHBhcnRpYWxMYXlvdXQpLCBUaW1lbGluZVJlY29yZFR5cGU6OkxheW91dCwgdHJ1ZSwg
ZnJhbWUpOworICAgIHB1c2hDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlTGF5b3V0RGF0YShkaXJ0eU9iamVjdHMsIHRvdGFsT2JqZWN0cywgcGFydGlhbExheW91dCks
IFRpbWVsaW5lUmVjb3JkVHlwZTo6TGF5b3V0LCB0cnVlLCAmZnJhbWUpOwogfQogCiB2b2lkIElu
c3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZExheW91dChSZW5kZXJPYmplY3QqIHJvb3QpCkBAIC0z
MjcsOSArMzI4LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRSZWNhbGN1bGF0
ZVN0eWxlKCkKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBl
OjpSZWNhbGN1bGF0ZVN0eWxlcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
d2lsbFBhaW50KEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6d2ls
bFBhaW50KEZyYW1lJiBmcmFtZSkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChJbnNwZWN0b3JP
YmplY3Q6OmNyZWF0ZSgpLCBUaW1lbGluZVJlY29yZFR5cGU6OlBhaW50LCB0cnVlLCBmcmFtZSk7
CisgICAgcHVzaEN1cnJlbnRSZWNvcmQoSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKSwgVGltZWxp
bmVSZWNvcmRUeXBlOjpQYWludCwgdHJ1ZSwgJmZyYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBjb25zdCBMYXlv
dXRSZWN0JiBjbGlwUmVjdCkKQEAgLTM0Miw5ICszNDMsOSBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZFBhaW50KFJlbmRlck9iamVjdCogcmVuZGVyZXIsIGNvbnN0IExheW91dFJl
Y3QmCiAgICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFp
bnQpOwogfQogCi12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxTY3JvbGwoRnJhbWUq
IGZyYW1lKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsU2Nyb2xsKEZyYW1lJiBm
cmFtZSkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
LCBUaW1lbGluZVJlY29yZFR5cGU6OlNjcm9sbExheWVyLCBmYWxzZSwgZnJhbWUpOworICAgIHB1
c2hDdXJyZW50UmVjb3JkKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6U2Nyb2xsTGF5ZXIsIGZhbHNlLCAmZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZFNjcm9sbCgpCkBAIC00MDYsMTkgKzQwNywxOSBAQCB2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoWEhSTG9hZEV2ZW50KCkKICAgICBkaWRDb21w
bGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpYSFJMb2FkKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRXZhbHVhdGVTY3JpcHQoY29uc3QgU3RyaW5n
JiB1cmwsIGludCBsaW5lTnVtYmVyLCBGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVO
dW1iZXIsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBwdXNoQ3VycmVudFJlY29yZChUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZUV2YWx1YXRlU2NyaXB0RGF0YSh1cmwsIGxpbmVOdW1iZXIpLCBU
aW1lbGluZVJlY29yZFR5cGU6OkV2YWx1YXRlU2NyaXB0LCB0cnVlLCBmcmFtZSk7CisgICAgcHVz
aEN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVFdmFsdWF0ZVNjcmlw
dERhdGEodXJsLCBsaW5lTnVtYmVyKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpFdmFsdWF0ZVNjcmlw
dCwgdHJ1ZSwgJmZyYW1lKTsKIAotICAgIGlmIChmcmFtZSAmJiAhbV9jYWxsU3RhY2tEZXB0aCkg
eworICAgIGlmICghbV9jYWxsU3RhY2tEZXB0aCkgewogICAgICAgICArK21fY2FsbFN0YWNrRGVw
dGg7Ci0gICAgICAgIHN0YXJ0UHJvZmlsaW5nKGZyYW1lLCBBU0NJSUxpdGVyYWwoIlRpbWVsaW5l
IEV2YWx1YXRlU2NyaXB0IiksIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKSk7CisgICAgICAgIHN0YXJ0UHJvZmlsaW5nKCZm
cmFtZSwgQVNDSUlMaXRlcmFsKCJUaW1lbGluZSBFdmFsdWF0ZVNjcmlwdCIpLCBtX2luc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCkp
OwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRFdmFsdWF0ZVNj
cmlwdChGcmFtZSogZnJhbWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEV2YWx1
YXRlU2NyaXB0KEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoZnJhbWUgJiYgbV9jYWxsU3RhY2tE
ZXB0aCkgeworICAgIGlmIChtX2NhbGxTdGFja0RlcHRoKSB7CiAgICAgICAgIC0tbV9jYWxsU3Rh
Y2tEZXB0aDsKICAgICAgICAgQVNTRVJUKG1fY2FsbFN0YWNrRGVwdGggPj0gMCk7CiAKQEAgLTQy
OSw3ICs0MzAsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEV2YWx1YXRlU2Ny
aXB0KEZyYW1lKiBmcmFtZSkKICAgICAgICAgICAgIFRpbWVsaW5lUmVjb3JkRW50cnkmIGVudHJ5
ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAgICAgICAgICBBU1NFUlQoZW50cnkudHlwZSA9
PSBUaW1lbGluZVJlY29yZFR5cGU6OkV2YWx1YXRlU2NyaXB0KTsKIAotICAgICAgICAgICAgUmVm
UHRyPEpTQzo6UHJvZmlsZT4gcHJvZmlsZSA9IHN0b3BQcm9maWxpbmcoZnJhbWUsIEFTQ0lJTGl0
ZXJhbCgiVGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7CisgICAgICAgICAgICBSZWZQdHI8SlND
OjpQcm9maWxlPiBwcm9maWxlID0gc3RvcFByb2ZpbGluZygmZnJhbWUsIEFTQ0lJTGl0ZXJhbCgi
VGltZWxpbmUgRXZhbHVhdGVTY3JpcHQiKSk7CiAgICAgICAgICAgICBpZiAocHJvZmlsZSkKICAg
ICAgICAgICAgICAgICBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmFwcGVuZFByb2ZpbGUoZW50cnku
ZGF0YS5nZXQoKSwgcHJvZmlsZS5yZWxlYXNlKCkpOwogICAgICAgICB9CkBAIC00NzYsMzEgKzQ3
NywyOSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmdSZXNv
dXJjZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsCiAgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5l
UmVjb3JkRmFjdG9yeTo6Y3JlYXRlUmVzb3VyY2VGaW5pc2hEYXRhKElkZW50aWZpZXJzRmFjdG9y
eTo6cmVxdWVzdElkKGlkZW50aWZpZXIpLCBkaWRGYWlsLCBmaW5pc2hUaW1lICogMTAwMCksIFRp
bWVsaW5lUmVjb3JkVHlwZTo6UmVzb3VyY2VGaW5pc2gsIGZhbHNlLCBmcmFtZSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkVGltZVN0YW1wKEZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRUaW1l
U3RhbXAoRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgYXBwZW5k
UmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlVGltZVN0YW1wRGF0YShtZXNzYWdl
KSwgVGltZWxpbmVSZWNvcmRUeXBlOjpUaW1lU3RhbXAsIHRydWUsIGZyYW1lKTsKKyAgICBhcHBl
bmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVUaW1lU3RhbXBEYXRhKG1lc3Nh
Z2UpLCBUaW1lbGluZVJlY29yZFR5cGU6OlRpbWVTdGFtcCwgdHJ1ZSwgJmZyYW1lKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lKEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lKEZyYW1lJiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewotICAgIGFwcGVuZFJlY29yZChUaW1lbGlu
ZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERhdGEobWVzc2FnZSksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6VGltZSwgdHJ1ZSwgZnJhbWUpOworICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJl
Y29yZEZhY3Rvcnk6OmNyZWF0ZVRpbWVTdGFtcERhdGEobWVzc2FnZSksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6VGltZSwgdHJ1ZSwgJmZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50Ojp0aW1lRW5kKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQordm9pZCBJ
bnNwZWN0b3JUaW1lbGluZUFnZW50Ojp0aW1lRW5kKEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5n
JiBtZXNzYWdlKQogewotICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVRpbWVTdGFtcERhdGEobWVzc2FnZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZUVuZCwg
dHJ1ZSwgZnJhbWUpOworICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVRpbWVTdGFtcERhdGEobWVzc2FnZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6VGltZUVuZCwg
dHJ1ZSwgJmZyYW1lKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRNYXJr
RE9NQ29udGVudEV2ZW50KEZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkTWFya0RPTUNvbnRlbnRFdmVudChGcmFtZSYgZnJhbWUpCiB7Ci0gICAgYm9vbCBpc01h
aW5GcmFtZSA9IGZyYW1lICYmIG1fcGFnZUFnZW50ICYmIChmcmFtZSA9PSBtX3BhZ2VBZ2VudC0+
bWFpbkZyYW1lKCkpOwotICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZU1hcmtEYXRhKGlzTWFpbkZyYW1lKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpNYXJrRE9NQ29u
dGVudCwgZmFsc2UsIGZyYW1lKTsKKyAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVNYXJrRGF0YShmcmFtZS5pc01haW5GcmFtZSgpKSwgVGltZWxpbmVSZWNvcmRU
eXBlOjpNYXJrRE9NQ29udGVudCwgZmFsc2UsICZmcmFtZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
VGltZWxpbmVBZ2VudDo6ZGlkTWFya0xvYWRFdmVudChGcmFtZSogZnJhbWUpCit2b2lkIEluc3Bl
Y3RvclRpbWVsaW5lQWdlbnQ6OmRpZE1hcmtMb2FkRXZlbnQoRnJhbWUmIGZyYW1lKQogewotICAg
IGJvb2wgaXNNYWluRnJhbWUgPSBmcmFtZSAmJiBtX3BhZ2VBZ2VudCAmJiAoZnJhbWUgPT0gbV9w
YWdlQWdlbnQtPm1haW5GcmFtZSgpKTsKLSAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVNYXJrRGF0YShpc01haW5GcmFtZSksIFRpbWVsaW5lUmVjb3JkVHlwZTo6
TWFya0xvYWQsIGZhbHNlLCBmcmFtZSk7CisgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeTo6Y3JlYXRlTWFya0RhdGEoZnJhbWUuaXNNYWluRnJhbWUoKSksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6TWFya0xvYWQsIGZhbHNlLCAmZnJhbWUpOwogfQogCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmRpZENvbW1pdExvYWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggNjllMDlhMDc3MzY2NzI5OGE3ODcz
NThmOTc2MjdhYTk2YzdmM2RmMC4uMzUyYTFmNTc0NjBkYjM5OWU0NjViZGRiMWZiNGMxZjdmNTIw
YTE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCkBAIC0xNDIsNjIgKzE0Miw0OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydEZy
b21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nICZ0aXRsZSk7CiAgICAgUGFz
c1JlZlB0cjxKU0M6OlByb2ZpbGU+IHN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwogCisgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uIGNh
bGxiYWNrcy4KKyAgICB2b2lkIGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFN0cmlu
ZyYgdXJsLCBGcmFtZSopOworICAgIHZvaWQgZGlkSW5zdGFsbFRpbWVyKGludCB0aW1lcklkLCBp
bnQgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBGcmFtZSopOworICAgIHZvaWQgZGlkUmVtb3Zl
VGltZXIoaW50IHRpbWVySWQsIEZyYW1lKik7CisgICAgdm9pZCB3aWxsRmlyZVRpbWVyKGludCB0
aW1lcklkLCBGcmFtZSopOworICAgIHZvaWQgZGlkRmlyZVRpbWVyKCk7CiAgICAgdm9pZCB3aWxs
Q2FsbEZ1bmN0aW9uKGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIEZy
YW1lKik7CiAgICAgdm9pZCBkaWRDYWxsRnVuY3Rpb24oRnJhbWUqKTsKLQorICAgIHZvaWQgd2ls
bERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYsIGludCwgRnJh
bWUqKTsKKyAgICB2b2lkIGRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KCk7CiAg
ICAgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChjb25zdCBFdmVudCYsIEZyYW1lKik7CiAgICAgdm9p
ZCBkaWREaXNwYXRjaEV2ZW50KCk7Ci0KLSAgICB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXQoRnJh
bWUqKTsKLSAgICB2b2lkIHdpbGxMYXlvdXQoRnJhbWUqKTsKKyAgICB2b2lkIHdpbGxFdmFsdWF0
ZVNjcmlwdChjb25zdCBTdHJpbmcmLCBpbnQsIEZyYW1lJik7CisgICAgdm9pZCBkaWRFdmFsdWF0
ZVNjcmlwdChGcmFtZSYpOworICAgIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYpOwor
ICAgIHZvaWQgd2lsbExheW91dChGcmFtZSYpOwogICAgIHZvaWQgZGlkTGF5b3V0KFJlbmRlck9i
amVjdCopOwotCi0gICAgdm9pZCBkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihGcmFtZSop
OworICAgIHZvaWQgd2lsbFNjcm9sbChGcmFtZSYpOworICAgIHZvaWQgZGlkU2Nyb2xsKCk7Cisg
ICAgdm9pZCB3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiwgRnJhbWUqKTsK
KyAgICB2b2lkIGRpZERpc3BhdGNoWEhSTG9hZEV2ZW50KCk7CisgICAgdm9pZCB3aWxsUGFpbnQo
RnJhbWUmKTsKKyAgICB2b2lkIGRpZFBhaW50KFJlbmRlck9iamVjdCosIGNvbnN0IExheW91dFJl
Y3QmKTsKICAgICB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlKEZyYW1lKik7CiAgICAgdm9pZCBk
aWRSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0KLSAgICB2b2lkIHdpbGxQYWludChGcmFtZSopOwotICAg
IHZvaWQgZGlkUGFpbnQoUmVuZGVyT2JqZWN0KiwgY29uc3QgTGF5b3V0UmVjdCYpOwotCi0gICAg
dm9pZCB3aWxsU2Nyb2xsKEZyYW1lKik7Ci0gICAgdm9pZCBkaWRTY3JvbGwoKTsKLQorICAgIHZv
aWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRnJhbWUqKTsKICAgICB2b2lkIHdpbGxX
cml0ZUhUTUwodW5zaWduZWQgc3RhcnRMaW5lLCBGcmFtZSopOwogICAgIHZvaWQgZGlkV3JpdGVI
VE1MKHVuc2lnbmVkIGVuZExpbmUpOwotCi0gICAgdm9pZCBkaWRJbnN0YWxsVGltZXIoaW50IHRp
bWVySWQsIGludCB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIEZyYW1lKik7Ci0gICAgdm9pZCBk
aWRSZW1vdmVUaW1lcihpbnQgdGltZXJJZCwgRnJhbWUqKTsKLSAgICB2b2lkIHdpbGxGaXJlVGlt
ZXIoaW50IHRpbWVySWQsIEZyYW1lKik7Ci0gICAgdm9pZCBkaWRGaXJlVGltZXIoKTsKLQotICAg
IHZvaWQgd2lsbERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2ZW50KGNvbnN0IFN0cmluZyYs
IGludCwgRnJhbWUqKTsKLSAgICB2b2lkIGRpZERpc3BhdGNoWEhSUmVhZHlTdGF0ZUNoYW5nZUV2
ZW50KCk7Ci0gICAgdm9pZCB3aWxsRGlzcGF0Y2hYSFJMb2FkRXZlbnQoY29uc3QgU3RyaW5nJiwg
RnJhbWUqKTsKLSAgICB2b2lkIGRpZERpc3BhdGNoWEhSTG9hZEV2ZW50KCk7Ci0KLSAgICB2b2lk
IHdpbGxFdmFsdWF0ZVNjcmlwdChjb25zdCBTdHJpbmcmLCBpbnQsIEZyYW1lKik7Ci0gICAgdm9p
ZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSopOwotCi0gICAgdm9pZCBkaWRUaW1lU3RhbXAoRnJh
bWUqLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIGRpZE1hcmtET01Db250ZW50RXZlbnQoRnJh
bWUqKTsKLSAgICB2b2lkIGRpZE1hcmtMb2FkRXZlbnQoRnJhbWUqKTsKLQotICAgIHZvaWQgdGlt
ZShGcmFtZSosIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdGltZUVuZChGcmFtZSosIGNvbnN0
IFN0cmluZyYpOwotCi0gICAgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChjb25zdCBT
dHJpbmcmIHVybCwgRnJhbWUqKTsKKyAgICB2b2lkIGRpZFRpbWVTdGFtcChGcmFtZSYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgZGlkTWFya0RPTUNvbnRlbnRFdmVudChGcmFtZSYpOworICAg
IHZvaWQgZGlkTWFya0xvYWRFdmVudChGcmFtZSYpOwogICAgIHZvaWQgd2lsbFNlbmRSZXNvdXJj
ZVJlcXVlc3QodW5zaWduZWQgbG9uZywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRnJhbWUqKTsK
ICAgICB2b2lkIHdpbGxSZWNlaXZlUmVzb3VyY2VSZXNwb25zZSh1bnNpZ25lZCBsb25nLCBjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiwgRnJhbWUqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJj
ZVJlc3BvbnNlKCk7CiAgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nUmVzb3VyY2UodW5zaWduZWQg
bG9uZywgYm9vbCBkaWRGYWlsLCBkb3VibGUgZmluaXNoVGltZSwgRnJhbWUqKTsKICAgICB2b2lk
IHdpbGxSZWNlaXZlUmVzb3VyY2VEYXRhKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUq
LCBpbnQgbGVuZ3RoKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNvdXJjZURhdGEoKTsKLQogICAg
IHZvaWQgZGlkUmVxdWVzdEFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkLCBGcmFtZSopOwog
ICAgIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoaW50IGNhbGxiYWNrSWQsIEZyYW1lKik7
CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKGludCBjYWxsYmFja0lkLCBGcmFtZSop
OwogICAgIHZvaWQgZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7Ci0KKyAgICB2b2lkIHRpbWUoRnJh
bWUmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHRpbWVFbmQoRnJhbWUmLCBjb25zdCBTdHJp
bmcmKTsKICNpZiBFTkFCTEUoV0VCX1NPQ0tFVFMpCiAgICAgdm9pZCBkaWRDcmVhdGVXZWJTb2Nr
ZXQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBy
b3RvY29sLCBGcmFtZSopOwogICAgIHZvaWQgd2lsbFNlbmRXZWJTb2NrZXRIYW5kc2hha2VSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmNwcAppbmRleCA5NzFiZjk4Y2Y1Mzg2NDMwMmFh
OThkZmI1YjkyZjRmYzU5MzQ4MTNmLi4xMWZiMmQ1NTVjZTkwZTQ1ZWVlZmU0M2I1MTg2MjRlNTIx
YjA1ZjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
Y3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBQYWdlUnVudGltZUFnZW50OjpkaXNhYmxlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZykKICAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmRpc2Fi
bGUoZXJyb3JTdHJpbmcpOwogfQogCi12b2lkIFBhZ2VSdW50aW1lQWdlbnQ6OmRpZENyZWF0ZU1h
aW5Xb3JsZENvbnRleHQoRnJhbWUqIGZyYW1lKQordm9pZCBQYWdlUnVudGltZUFnZW50OjpkaWRD
cmVhdGVNYWluV29ybGRDb250ZXh0KEZyYW1lJiBmcmFtZSkKIHsKICAgICBtX21haW5Xb3JsZENv
bnRleHRDcmVhdGVkID0gdHJ1ZTsKIApAQCAtMTA4LDIxICsxMDgsMTEgQEAgdm9pZCBQYWdlUnVu
dGltZUFnZW50OjpkaWRDcmVhdGVNYWluV29ybGRDb250ZXh0KEZyYW1lKiBmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fZnJvbnRlbmREaXNwYXRjaGVyKTsKLSAgICBTdHJp
bmcgZnJhbWVJZCA9IG1fcGFnZUFnZW50LT5mcmFtZUlkKGZyYW1lKTsKLSAgICBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoZnJhbWUpOworICAgIFN0cmlu
ZyBmcmFtZUlkID0gbV9wYWdlQWdlbnQtPmZyYW1lSWQoJmZyYW1lKTsKKyAgICBKU0M6OkV4ZWNT
dGF0ZSogc2NyaXB0U3RhdGUgPSBtYWluV29ybGRFeGVjU3RhdGUoJmZyYW1lKTsKICAgICBub3Rp
ZnlDb250ZXh0Q3JlYXRlZChmcmFtZUlkLCBzY3JpcHRTdGF0ZSwgbnVsbHB0ciwgdHJ1ZSk7CiB9
CiAKLXZvaWQgUGFnZVJ1bnRpbWVBZ2VudDo6ZGlkQ3JlYXRlSXNvbGF0ZWRDb250ZXh0KEZyYW1l
KiBmcmFtZSwgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBTZWN1cml0eU9yaWdpbiogb3Jp
Z2luKQotewotICAgIGlmICghZW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NF
UlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwotICAgIFN0cmluZyBmcmFtZUlkID0gbV9wYWdlQWdl
bnQtPmZyYW1lSWQoZnJhbWUpOwotICAgIG5vdGlmeUNvbnRleHRDcmVhdGVkKGZyYW1lSWQsIHNj
cmlwdFN0YXRlLCBvcmlnaW4sIGZhbHNlKTsKLX0KLQogSlNDOjpWTSYgUGFnZVJ1bnRpbWVBZ2Vu
dDo6Z2xvYmFsVk0oKQogewogICAgIHJldHVybiBKU0RPTVdpbmRvd0Jhc2U6OmNvbW1vblZNKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCAxYzEy
Y2Q0ZTMyNTBiMDQwMGE5ZTMxOWU2NTBmNDY1OTI2MmZlMGQ3Li5jNDEyZmJjZjVlZTdkNmQ4NTNk
OWViOTg5MGU3NmRlZTczYjk4MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmgKQEAgLTU3LDE0ICs1NywxNCBAQCBjbGFzcyBQYWdlUnVudGltZUFnZW50
IGZpbmFsIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50IHsKIHB1Ymxp
YzoKICAgICBQYWdlUnVudGltZUFnZW50KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiwgUGFnZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogICAgIHZpcnR1YWwgflBhZ2VSdW50aW1l
QWdlbnQoKSB7IH0KLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFu
ZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6
Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQoRnJhbWUqKTsKLSAg
ICB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSosIEpTQzo6RXhlY1N0YXRlKiwg
U2VjdXJpdHlPcmlnaW4qKTsKKyAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gY2FsbGJh
Y2tzLgorICAgIHZvaWQgZGlkQ3JlYXRlTWFpbldvcmxkQ29udGV4dChGcmFtZSYpOwogCiBwcml2
YXRlOgogICAgIHZpcnR1YWwgSlNDOjpWTSYgZ2xvYmFsVk0oKSBvdmVycmlkZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAppbmRleCBhYzc1Mjg2OTZlMjI2MWUy
ZmRhOTEzMTdmZTNjNjRhOWRjZGE0OTk0Li4xMzlmMDVjNGEyNDIzMjc1NjNmMmRlZjY1OWIxZDk1
YzVlOTdmYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3Bw
CkBAIC00MjUsMTggKzQyNSwxNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lTmF2aWdh
dGVkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgbG9hZGVyLT5mcmFtZSgpLT5zY3JpcHQo
KS5nbG9iYWxPYmplY3QobWFpblRocmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvciht
X2FjdGl2ZUN1cnNvci5nZXQoKSk7CiB9CiAKLXZvaWQgUmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVE
ZXRhY2hlZChGcmFtZSogZnJhbWUpCit2b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lRGV0YWNo
ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIEFTU0VSVChtX3Nlc3Npb25TdGF0ZSAhPSBTZXNzaW9u
U3RhdGU6OkluYWN0aXZlKTsKLSAgICBBU1NFUlQoZnJhbWUpOwogCi0gICAgaWYgKCFmcmFtZS0+
ZG9jdW1lbnQoKSkKKyAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIElmIHRoZSBmcmFtZSdzIGN1cnNvciBpc24ndCBjYXB0dXJpbmcgb3IgcmVwbGF5
aW5nLCB3ZSBzaG91bGQgZG8gbm90aGluZy4KICAgICAvLyBUaGlzIGlzIHRoZSBjYXNlIGZvciB0
aGUgIm91dGJvdW5kIiBmcmFtZSB3aGVuIHN0YXJ0aW5nIGNhcHR1cmUsIG9yIHdoZW4KICAgICAv
LyB3ZSBjbGVhciB0aGUgaW5wdXQgY3Vyc29yIHRvIGZpbmlzaCBvciBwcmVtYXR1cmVseSB1bmxv
YWQgYSBzZWdtZW50LgotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRDdXJzb3IoKS5p
c0NhcHR1cmluZygpKSB7CisgICAgaWYgKGZyYW1lLmRvY3VtZW50KCktPmlucHV0Q3Vyc29yKCku
aXNDYXB0dXJpbmcoKSkgewogICAgICAgICBBU1NFUlQobV9zZWdtZW50U3RhdGUgPT0gU2VnbWVu
dFN0YXRlOjpBcHBlbmRpbmcpOwogICAgICAgICBjb21wbGV0ZVNlZ21lbnQoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuaAppbmRleCBlYTE0MTlkNjZmMzJm
MTZmMTcxNDg5YTc4MGRiZWU4NDc4MGI1N2JkLi41ZTA3OTZkODg0NzM1N2M1ZjY3MjIwMGM4Yzdm
NTRhNGY3OGJkZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29u
dHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmgK
QEAgLTEzMiw3ICsxMzIsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBJbnNwZWN0b3JSZXBsYXlBZ2Vu
dCBub3RpZmljYXRpb25zLgogICAgIHZvaWQgZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIq
KTsKLSAgICB2b2lkIGZyYW1lRGV0YWNoZWQoRnJhbWUqKTsKKyAgICB2b2lkIGZyYW1lRGV0YWNo
ZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiwgRnJh
bWUqKTsKIAogICAgIFBhZ2UmIHBhZ2UoKSBjb25zdCB7IHJldHVybiBtX3BhZ2U7IH0K
</data>
<flag name="review"
          id="268917"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>