<?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>163201</bug_id>
          
          <creation_ts>2016-10-10 01:52:19 -0700</creation_ts>
          <short_desc>Move media source from legacy to new DOM exceptions</short_desc>
          <delta_ts>2016-10-10 10:28:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1238243</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 01:52:19 -0700</bug_when>
    <thetext>Move media source from legacy to new DOM exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238245</commentid>
    <comment_count>1</comment_count>
      <attachid>291081</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 01:59:39 -0700</bug_when>
    <thetext>Created attachment 291081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238312</commentid>
    <comment_count>2</comment_count>
      <attachid>291108</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 08:48:23 -0700</bug_when>
    <thetext>Created attachment 291108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238353</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-10-10 10:02:51 -0700</bug_when>
    <thetext>Can someone help me figure out the iOS simulator crash?

media/controls/ipad/close-page-with-picture-in-picture-video-assertion-failure.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238355</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-10-10 10:03:47 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Can someone help me figure out the iOS simulator crash?
&gt; 
&gt; media/controls/ipad/close-page-with-picture-in-picture-video-assertion-
&gt; failure.html

EWS is green, probably a flake?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238371</commentid>
    <comment_count>5</comment_count>
      <attachid>291108</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 10:28:22 -0700</bug_when>
    <thetext>Comment on attachment 291108
Patch

Clearing flags on attachment: 291108

Committed r207007: &lt;http://trac.webkit.org/changeset/207007&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1238372</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-10 10:28:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291081</attachid>
            <date>2016-10-10 01:59:39 -0700</date>
            <delta_ts>2016-10-10 08:48:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163201-20161010015619.patch</filename>
            <type>text/plain</type>
            <size>54652</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDY4ZmQxMmQ0MGFiMzY3
OWNiNmEyZTEyMGJmZWU3NWFkZWJhNmE2Yy4uN2VkZmZhODFkNTM0MGYwOGQwNGM4NjU2ZGQ2NDJh
OGZhNjU0NGE0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIG1lZGlhIHNvdXJjZSBm
cm9tIGxlZ2FjeSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6Y3JlYXRlKTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJj
ZTo6TWVkaWFTb3VyY2UpOiBJbml0aWFsaXplIG1fbWVkaWFFbGVtZW50IGluIGNsYXNzIGRlZmlu
aXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFu
Z2UpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6Y2xl
YXJMaXZlU2Vla2FibGVSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2U6OnNldER1cmF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c2V0RHVyYXRpb25JbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2U6OmVuZE9mU3RyZWFtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c3RyZWFtRW5kZWRXaXRoRXJyb3IpOiBVc2UgYnVmZmVyZWRJbnRlcm5hbC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIpOiBVc2UgRXhjZXB0aW9uT3IuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6ZGV0YWNoRnJvbUVsZW1lbnQpOiBVc2Ug
cmVtb3ZlU291cmNlQnVmZmVyCisgICAgICAgIHdpdGhvdXQgSUdOT1JFX0VYQ0VQVElPTiBzaW5j
ZSB0aGF0IGlzIG5vdyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlOjphY3RpdmVSYW5nZXMpOiBVc2UgYnVmZmVyZWRJbnRlcm5hbC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjcmVhdGVTb3VyY2VCdWZmZXJQcml2YXRlKTogVXNlIEV4
Y2VwdGlvbk9yLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
OiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICBNYWRlIG1vcmUgdGhpbmdzIHBy
aXZhdGUgYW5kIGFsc28gcHJpdmF0ZSByYXRoZXIgdGhhbiBwcm90ZWN0ZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhj
ZXB0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQpOiBVc2UgRXhjZXB0
aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNl
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRBcHBlbmRXaW5k
b3dTdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRBcHBl
bmRXaW5kb3dFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBw
ZW5kQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFib3J0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlbW92ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRNb2RlKTogRGl0dG8u
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOiBSZW1vdmVk
IHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLiBN
YWRlIG1vcmUgdGhpbmdzIHByaXZhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKIDIwMTYtMTAt
MTAgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBNYWMg
V2luIGJ1aWxkIGFmdGVyIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMDY5NjYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKaW5kZXggOTdlY2M4NjI3MzIzNTc2YzdlNTQ3ZDUxMDM2ZGViZmYxNTRkNDM4Ny4uMTM3ODY5
NzA1NjEwZmZjNDBiYTRlMzE3NzgzYjc2YTAwZjBlOWU0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTM0LDMzICszNCwy
NCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAotI2luY2x1ZGUgIkF1ZGlvVHJhY2su
aCIKICNpbmNsdWRlICJBdWRpb1RyYWNrTGlzdC5oIgogI2luY2x1ZGUgIkNvbnRlbnRUeXBlLmgi
CiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0jaW5jbHVkZSAi
RXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGVQbGFjZWhvbGRlci5oIgot
I2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
Ci0jaW5jbHVkZSAiTWVkaWFFcnJvci5oIgotI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5j
bHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiTWVkaWFTb3VyY2VSZWdpc3Ry
eS5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5oIgorI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxp
c3QuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlLmgiCi0jaW5jbHVkZSAiVGV4dFRy
YWNrLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrTGlzdC5oIgogI2luY2x1ZGUgIlRpbWVSYW5nZXMu
aCIKLSNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAjaW5jbHVkZSAiVmlkZW9UcmFja0xpc3QuaCIK
LSNpbmNsdWRlIDxydW50aW1lL1VpbnQ4QXJyYXkuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotVVJMUmVnaXN0cnkqIE1lZGlhU291cmNlOjpzX3JlZ2lzdHJ5ID0gMDsKK1VSTFJl
Z2lzdHJ5KiBNZWRpYVNvdXJjZTo6c19yZWdpc3RyeTsKIAogdm9pZCBNZWRpYVNvdXJjZTo6c2V0
UmVnaXN0cnkoVVJMUmVnaXN0cnkqIHJlZ2lzdHJ5KQogewpAQCAtNzAsMTQgKzYxLDEzIEBAIHZv
aWQgTWVkaWFTb3VyY2U6OnNldFJlZ2lzdHJ5KFVSTFJlZ2lzdHJ5KiByZWdpc3RyeSkKIAogUmVm
PE1lZGlhU291cmNlPiBNZWRpYVNvdXJjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCiB7Ci0gICAgUmVmPE1lZGlhU291cmNlPiBtZWRpYVNvdXJjZShhZG9wdFJlZigq
bmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CisgICAgYXV0byBtZWRpYVNvdXJjZSA9IGFkb3B0
UmVmKCpuZXcgTWVkaWFTb3VyY2UoY29udGV4dCkpOwogICAgIG1lZGlhU291cmNlLT5zdXNwZW5k
SWZOZWVkZWQoKTsKICAgICByZXR1cm4gbWVkaWFTb3VyY2U7CiB9CiAKIE1lZGlhU291cmNlOjpN
ZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQogICAgIDogQWN0aXZl
RE9NT2JqZWN0KCZjb250ZXh0KQotICAgICwgbV9tZWRpYUVsZW1lbnQobnVsbHB0cikKICAgICAs
IG1fZHVyYXRpb24oTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nU2Vl
a1RpbWUoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAgICwgbV9yZWFkeVN0YXRlKGNsb3Nl
ZEtleXdvcmQoKSkKQEAgLTI5NSw0NSArMjg1LDQxIEBAIFJlZjxUaW1lUmFuZ2VzPiBNZWRpYVNv
dXJjZTo6c2Vla2FibGUoKQogICAgICAgICByZXR1cm4gVGltZVJhbmdlczo6Y3JlYXRlKHtNZWRp
YVRpbWU6Onplcm9UaW1lKCksIGJ1ZmZlcmVkLT5tYXhpbXVtQnVmZmVyZWRUaW1lKCl9KTsKICAg
ICB9CiAKLQogICAgIC8vIOKGsyBPdGhlcndpc2U6CiAgICAgLy8gUmV0dXJuIGEgc2luZ2xlIHJh
bmdlIHdpdGggYSBzdGFydCB0aW1lIG9mIDAgYW5kIGFuIGVuZCB0aW1lIGVxdWFsIHRvIGR1cmF0
aW9uLgogICAgIHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoe01lZGlhVGltZTo6emVyb1RpbWUo
KSwgbV9kdXJhdGlvbn0pOwogfQogCi12b2lkIE1lZGlhU291cmNlOjpzZXRMaXZlU2Vla2FibGVS
YW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0
aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCkKIHsKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMTYgU2VwdGVtYmVy
IDIwMTYKICAgICAvLyBodHRwczovL3Jhd2dpdC5jb20vdzNjL21lZGlhLXNvdXJjZS80NTYyNzY0
NjM0NGVlYTAxNzBkZDFjYmM1YTNkNTA4Y2E3NTFhYmI4L21lZGlhLXNvdXJjZS1yZXNwZWMuaHRt
bCNkb20tbWVkaWFzb3VyY2Utc2V0bGl2ZXNlZWthYmxlcmFuZ2UKIAogICAgIC8vIElmIHRoZSBy
ZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgIm9wZW4iIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIWlzT3Bl
bigpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9CisgICAgaWYgKCFpc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
VkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAvLyBJZiBzdGFydCBpcyBuZWdhdGl2ZSBvciBncmVh
dGVyIHRoYW4gZW5kLCB0aGVuIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCi0gICAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+IGVuZCkgewotICAgICAg
ICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc3RhcnQg
PCAwIHx8IHN0YXJ0ID4gZW5kKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH07CiAKICAgICAvLyBTZXQgbGl2ZSBzZWVrYWJsZSByYW5nZSB0byBiZSBhIG5ldyBub3JtYWxp
emVkIFRpbWVSYW5nZXMgb2JqZWN0IGNvbnRhaW5pbmcgYSBzaW5nbGUgcmFuZ2UKICAgICAvLyB3
aG9zZSBzdGFydCBwb3NpdGlvbiBpcyBzdGFydCBhbmQgZW5kIHBvc2l0aW9uIGlzIGVuZC4KICAg
ICBtX2xpdmVTZWVrYWJsZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPihN
ZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoZW5kKSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIE1lZGlhU291cmNlOjpj
bGVhckxpdmVTZWVrYWJsZVJhbmdlKEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gTWVkaWFTb3VyY2U6OmNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoKQogewogICAgIC8vIFczQyBF
ZGl0b3IncyBEcmFmdCAxNiBTZXB0ZW1iZXIgMjAxNgogICAgIC8vIGh0dHBzOi8vcmF3Z2l0LmNv
bS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhjYTc1MWFi
YjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI2RvbS1tZWRpYXNvdXJjZS1jbGVhcmxpdmVzZWVr
YWJsZXJhbmdlCiAKICAgICAvLyBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90ICJv
cGVuIiB0aGVuIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFpc09wZW4oKSkgewotICAgICAgICBlYyA9IElOVkFMSURf
U1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghaXNPcGVuKCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogICAgIG1fbGl2
ZVNlZWthYmxlID0gbnVsbHB0cjsKKyAgICByZXR1cm4geyB9OwogfQogCiBjb25zdCBNZWRpYVRp
bWUmIE1lZGlhU291cmNlOjpjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkKQEAgLTQ2MSw0MCArNDQ3
LDMyIEBAIHZvaWQgTWVkaWFTb3VyY2U6Om1vbml0b3JTb3VyY2VCdWZmZXJzKCkKICAgICAvLyA0
LiBBYm9ydCB0aGVzZSBzdGVwcy4KIH0KIAotdm9pZCBNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb24o
ZG91YmxlIGR1cmF0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1l
ZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgLy8gMi4xIEF0
dHJpYnV0ZXMgLSBEdXJhdGlvbgogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1t
ZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI2F0dHJpYnV0
ZXMKIAogICAgIC8vIE9uIHNldHRpbmcsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8v
IDEuIElmIHRoZSB2YWx1ZSBiZWluZyBzZXQgaXMgbmVnYXRpdmUgb3IgTmFOIHRoZW4gdGhyb3cg
YW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0g
ICAgaWYgKGR1cmF0aW9uIDwgMC4wIHx8IHN0ZDo6aXNuYW4oZHVyYXRpb24pKSB7Ci0gICAgICAg
IGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlm
IChkdXJhdGlvbiA8IDAuMCB8fCBzdGQ6OmlzbmFuKGR1cmF0aW9uKSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IElOVkFMSURfQUNDRVNTX0VSUiB9OwogCiAgICAgLy8gMi4gSWYgdGhlIHJl
YWR5U3RhdGUgYXR0cmlidXRlIGlzIG5vdCAib3BlbiIgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NU
QVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghaXNPcGVu
KCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAoIWlzT3BlbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5W
QUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDMuIElmIHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUg
ZXF1YWxzIHRydWUgb24gYW55IFNvdXJjZUJ1ZmZlciBpbiBzb3VyY2VCdWZmZXJzLCB0aGVuIHRo
cm93IGFuIElOVkFMSURfU1RBVEVfRVJSCiAgICAgLy8gZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICBmb3IgKGF1dG8mIHNvdXJjZUJ1ZmZlciA6ICptX3NvdXJjZUJ1ZmZlcnMp
IHsKLSAgICAgICAgaWYgKHNvdXJjZUJ1ZmZlci0+dXBkYXRpbmcoKSkgewotICAgICAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoc291cmNlQnVmZmVyLT51cGRhdGluZygpKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAgICAgfQogCiAgICAgLy8gNC4gUnVu
IHRoZSBkdXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtIHdpdGggbmV3IGR1cmF0aW9uIHNldCB0byB0
aGUgdmFsdWUgYmVpbmcgYXNzaWduZWQgdG8gdGhpcyBhdHRyaWJ1dGUuCi0gICAgYXV0byByZXN1
bHQgPSBzZXREdXJhdGlvbkludGVybmFsKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShkdXJh
dGlvbikpOwotICAgIGlmIChyZXN1bHQpCi0gICAgICAgIGVjID0gcmVzdWx0LnZhbHVlKCk7Cisg
ICAgcmV0dXJuIHNldER1cmF0aW9uSW50ZXJuYWwoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91Ymxl
KGR1cmF0aW9uKSk7CiB9CiAKLU9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IE1lZGlhU291cmNlOjpz
ZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCitFeGNlcHRpb25P
cjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbChjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uKQogewogICAgIC8vIDIuNC42IER1cmF0aW9uIENoYW5nZQogICAgIC8vIGh0dHBz
Oi8vcmF3Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVh
M2Q1MDhjYTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI2R1cmF0aW9uLWNoYW5nZS1h
bGdvcml0aG0KQEAgLTUxNCwxMCArNDkyLDEwIEBAIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IE1l
ZGlhU291cmNlOjpzZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpCiAg
ICAgTWVkaWFUaW1lIGhpZ2hlc3RFbmRUaW1lOwogICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVy
IDogKm1fc291cmNlQnVmZmVycykgewogICAgICAgICBoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0
YW1wID0gc3RkOjptYXgoaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCwgc291cmNlQnVmZmVy
LT5oaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCkpOwotICAgICAgICBoaWdoZXN0RW5kVGlt
ZSA9IHN0ZDo6bWF4KGhpZ2hlc3RFbmRUaW1lLCBzb3VyY2VCdWZmZXItPmJ1ZmZlcmVkKCktPnJh
bmdlcygpLm1heGltdW1CdWZmZXJlZFRpbWUoKSk7CisgICAgICAgIGhpZ2hlc3RFbmRUaW1lID0g
c3RkOjptYXgoaGlnaGVzdEVuZFRpbWUsIHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWRJbnRlcm5hbCgp
LnJhbmdlcygpLm1heGltdW1CdWZmZXJlZFRpbWUoKSk7CiAgICAgfQogICAgIGlmIChoaWdoZXN0
UHJlc2VudGF0aW9uVGltZXN0YW1wLmlzVmFsaWQoKSAmJiBuZXdEdXJhdGlvbiA8IGhpZ2hlc3RQ
cmVzZW50YXRpb25UaW1lc3RhbXApCi0gICAgICAgIHJldHVybiBJTlZBTElEX1NUQVRFX0VSUjsK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAv
LyA0LiBJZiBuZXcgZHVyYXRpb24gaXMgbGVzcyB0aGFuIGhpZ2hlc3QgZW5kIHRpbWUsIHRoZW4K
ICAgICAvLyA0LjEuIFVwZGF0ZSBuZXcgZHVyYXRpb24gdG8gZXF1YWwgaGlnaGVzdCBlbmQgdGlt
ZS4KQEAgLTU0OSwyNSArNTI3LDIzIEBAIHZvaWQgTWVkaWFTb3VyY2U6OnNldFJlYWR5U3RhdGUo
Y29uc3QgQXRvbWljU3RyaW5nJiBzdGF0ZSkKICAgICBvblJlYWR5U3RhdGVDaGFuZ2Uob2xkU3Rh
dGUsIHN0YXRlKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZTo6ZW5kT2ZTdHJlYW0oT3B0aW9uYWw8
RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gTWVkaWFTb3VyY2U6OmVuZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+
IGVycm9yKQogewogICAgIC8vIDIuMiBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEv
cmF3LWZpbGUvdGlwL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLU1lZGlhU291
cmNlLWVuZE9mU3RyZWFtLXZvaWQtRW5kT2ZTdHJlYW1FcnJvci1lcnJvcgogICAgIC8vIDEuIElm
IHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVu
IHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KLSAgICBpZiAoIWlzT3BlbigpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFpc09wZW4oKSkKKyAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAvLyAy
LiBJZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlIG9uIGFueSBTb3VyY2VCdWZm
ZXIgaW4gc291cmNlQnVmZmVycywgdGhlbiB0aHJvdyBhbgogICAgIC8vIElOVkFMSURfU1RBVEVf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKHN0ZDo6YW55X29m
KG1fc291cmNlQnVmZmVycy0+YmVnaW4oKSwgbV9zb3VyY2VCdWZmZXJzLT5lbmQoKSwgW10oYXV0
byYgc291cmNlQnVmZmVyKSB7IHJldHVybiBzb3VyY2VCdWZmZXItPnVwZGF0aW5nKCk7IH0pKSB7
Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgaWYgKHN0ZDo6YW55X29mKG1fc291cmNlQnVmZmVycy0+YmVnaW4oKSwgbV9zb3VyY2VC
dWZmZXJzLT5lbmQoKSwgW10oYXV0byYgc291cmNlQnVmZmVyKSB7IHJldHVybiBzb3VyY2VCdWZm
ZXItPnVwZGF0aW5nKCk7IH0pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9T
VEFURV9FUlIgfTsKIAogICAgIC8vIDMuIFJ1biB0aGUgZW5kIG9mIHN0cmVhbSBhbGdvcml0aG0g
d2l0aCB0aGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byBlcnJvci4KICAgICBzdHJlYW1FbmRlZFdp
dGhFcnJvcihlcnJvcik7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIE1lZGlhU291cmNl
OjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikK
QEAgLTU4Nyw4ICs1NjMsOCBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJv
cihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAgLy8gdGhlIGJ1ZmZl
cmVkIGF0dHJpYnV0ZSBhY3Jvc3MgYWxsIFNvdXJjZUJ1ZmZlciBvYmplY3RzIGluIHNvdXJjZUJ1
ZmZlcnMuCiAgICAgICAgIE1lZGlhVGltZSBtYXhFbmRUaW1lOwogICAgICAgICBmb3IgKGF1dG8m
IHNvdXJjZUJ1ZmZlciA6ICptX3NvdXJjZUJ1ZmZlcnMpIHsKLSAgICAgICAgICAgIGlmIChhdXRv
IGxlbmd0aCA9IHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+bGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgbWF4RW5kVGltZSA9IHN0ZDo6bWF4KHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+cmFu
Z2VzKCkuZW5kKGxlbmd0aCAtIDEpLCBtYXhFbmRUaW1lKTsKKyAgICAgICAgICAgIGlmIChhdXRv
IGxlbmd0aCA9IHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWRJbnRlcm5hbCgpLmxlbmd0aCgpKQorICAg
ICAgICAgICAgICAgIG1heEVuZFRpbWUgPSBzdGQ6Om1heChzb3VyY2VCdWZmZXItPmJ1ZmZlcmVk
SW50ZXJuYWwoKS5yYW5nZXMoKS5lbmQobGVuZ3RoIC0gMSksIG1heEVuZFRpbWUpOwogICAgICAg
ICB9CiAgICAgICAgIHNldER1cmF0aW9uSW50ZXJuYWwobWF4RW5kVGltZSk7CiAKQEAgLTYyOSw3
ICs2MDUsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25h
bDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICB9CiB9CiAKLVNvdXJjZUJ1ZmZlciogTWVk
aWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyKj4gTWVkaWFTb3VyY2U6OmFkZFNvdXJj
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgTE9HKE1lZGlhU291cmNlLCAiTWVk
aWFTb3VyY2U6OmFkZFNvdXJjZUJ1ZmZlciglcykgJXAiLCB0eXBlLmFzY2lpKCkuZGF0YSgpLCB0
aGlzKTsKIApAQCAtNjM3LDM3ICs2MTMsMzAgQEAgU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6
YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMKICAg
ICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVu
IHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAKICAgICAvLyAxLiBJZiB0eXBlIGlzIGFuIGVtcHR5IHN0
cmluZyB0aGVuIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3Rl
cHMuCi0gICAgaWYgKHR5cGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwot
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKICAgICAvLyAyLiBJZiB0
eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIHRoYXQgaXMgbm90IHN1cHBvcnRlZCAuLi4sIHRoZW4g
dGhyb3cgYQogICAgIC8vIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCi0gICAgaWYgKCFpc1R5cGVTdXBwb3J0ZWQodHlwZSkpIHsKLSAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAg
IGlmICghaXNUeXBlU3VwcG9ydGVkKHR5cGUpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tk9UX1NVUFBPUlRFRF9FUlIgfTsKIAogICAgIC8vIDQuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJp
YnV0ZSBpcyBub3QgaW4gdGhlICJvcGVuIiBzdGF0ZSB0aGVuIHRocm93IGFuCiAgICAgLy8gSU5W
QUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAo
IWlzT3BlbigpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJl
dHVybiBudWxscHRyOwotICAgIH0KKyAgICBpZiAoIWlzT3BlbigpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDUuIENyZWF0ZSBhIG5l
dyBTb3VyY2VCdWZmZXIgb2JqZWN0IGFuZCBhc3NvY2lhdGVkIHJlc291cmNlcy4KICAgICBDb250
ZW50VHlwZSBjb250ZW50VHlwZSh0eXBlKTsKLSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZT4gc291cmNlQnVmZmVyUHJpdmF0ZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlclByaXZhdGUoY29udGVu
dFR5cGUsIGVjKTsKKyAgICBhdXRvIHNvdXJjZUJ1ZmZlclByaXZhdGUgPSBjcmVhdGVTb3VyY2VC
dWZmZXJQcml2YXRlKGNvbnRlbnRUeXBlKTsKIAotICAgIGlmICghc291cmNlQnVmZmVyUHJpdmF0
ZSkgewotICAgICAgICBBU1NFUlQoZWMgPT0gTk9UX1NVUFBPUlRFRF9FUlIgfHwgZWMgPT0gUVVP
VEFfRVhDRUVERURfRVJSKTsKKyAgICBpZiAoc291cmNlQnVmZmVyUHJpdmF0ZS5oYXNFeGNlcHRp
b24oKSkgewogICAgICAgICAvLyAyLiBJZiB0eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIHRoYXQg
aXMgbm90IHN1cHBvcnRlZCAuLi4sIHRoZW4gdGhyb3cgYSBOT1RfU1VQUE9SVEVEX0VSUiBleGNl
cHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAvLyAzLiBJZiB0aGUgdXNlciBh
Z2VudCBjYW4ndCBoYW5kbGUgYW55IG1vcmUgU291cmNlQnVmZmVyIG9iamVjdHMgdGhlbiB0aHJv
dyBhIFFVT1RBX0VYQ0VFREVEX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gc291cmNlQnVmZmVyUHJpdmF0
ZS5yZWxlYXNlRXhjZXB0aW9uKCk7CiAgICAgfQogCi0gICAgUmVmPFNvdXJjZUJ1ZmZlcj4gYnVm
ZmVyID0gU291cmNlQnVmZmVyOjpjcmVhdGUoc291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNlTm9u
TnVsbCgpLCB0aGlzKTsKKyAgICBhdXRvIGJ1ZmZlciA9IFNvdXJjZUJ1ZmZlcjo6Y3JlYXRlKHNv
dXJjZUJ1ZmZlclByaXZhdGUucmVsZWFzZVJldHVyblZhbHVlKCksIHRoaXMpOwogCiAgICAgLy8g
Ni4gU2V0IHRoZSBnZW5lcmF0ZSB0aW1lc3RhbXBzIGZsYWcgb24gdGhlIG5ldyBvYmplY3QgdG8g
dGhlIHZhbHVlIGluIHRoZSAiR2VuZXJhdGUgVGltZXN0YW1wcyBGbGFnIgogICAgIC8vIGNvbHVt
biBvZiB0aGUgYnl0ZSBzdHJlYW0gZm9ybWF0IHJlZ2lzdHJ5IFtNU0UtUkVHSVNUUlldIGVudHJ5
IHRoYXQgaXMgYXNzb2NpYXRlZCB3aXRoIHR5cGUuCkBAIC02ODAsNyArNjQ5LDcgQEAgU291cmNl
QnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlwZSwg
RXhjZXB0aW9uQ29kZSYgZWMKICAgICAvLyDihrMgU2V0IHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0
aGUgbmV3IG9iamVjdCB0byAic2VxdWVuY2UiLgogICAgIC8vIE90aGVyd2lzZToKICAgICAvLyDi
hrMgU2V0IHRoZSBtb2RlIGF0dHJpYnV0ZSBvbiB0aGUgbmV3IG9iamVjdCB0byAic2VnbWVudHMi
LgotICAgIGJ1ZmZlci0+c2V0TW9kZShzaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMgPyBTb3VyY2VC
dWZmZXI6OkFwcGVuZE1vZGU6OlNlcXVlbmNlIDogU291cmNlQnVmZmVyOjpBcHBlbmRNb2RlOjpT
ZWdtZW50cywgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgYnVmZmVyLT5zZXRNb2RlKHNob3VsZEdl
bmVyYXRlVGltZXN0YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVuY2UgOiBT
b3VyY2VCdWZmZXI6OkFwcGVuZE1vZGU6OlNlZ21lbnRzKTsKIAogICAgIFNvdXJjZUJ1ZmZlciog
cmVzdWx0ID0gYnVmZmVyLnB0cigpOwogCkBAIC02ODksMjAgKzY1OCwxOCBAQCBTb3VyY2VCdWZm
ZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNl
cHRpb25Db2RlJiBlYwogICAgIHJlZ2VuZXJhdGVBY3RpdmVTb3VyY2VCdWZmZXJzKCk7CiAKICAg
ICAvLyA5LiBSZXR1cm4gdGhlIG5ldyBvYmplY3QgdG8gdGhlIGNhbGxlci4KLSAgICByZXR1cm4g
cmVzdWx0OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKLXZvaWQgTWVkaWFTb3Vy
Y2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImIGJ1ZmZlciwgRXhjZXB0aW9uQ29k
ZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVy
KFNvdXJjZUJ1ZmZlciYgYnVmZmVyKQogewogICAgIExPRyhNZWRpYVNvdXJjZSwgIk1lZGlhU291
cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIoKSAlcCIsIHRoaXMpOwogICAgIFJlZjxTb3VyY2VCdWZm
ZXI+IHByb3RlY3QoYnVmZmVyKTsKIAogICAgIC8vIDIuIElmIHNvdXJjZUJ1ZmZlciBzcGVjaWZp
ZXMgYW4gb2JqZWN0IHRoYXQgaXMgbm90IGluIHNvdXJjZUJ1ZmZlcnMgdGhlbgogICAgIC8vIHRo
cm93IGEgTk9UX0ZPVU5EX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAg
IGlmICghbV9zb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5jb250
YWlucyhidWZmZXIpKSB7Ci0gICAgICAgIGVjID0gTk9UX0ZPVU5EX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAoIW1fc291cmNlQnVmZmVycy0+bGVuZ3RoKCkgfHwgIW1fc291
cmNlQnVmZmVycy0+Y29udGFpbnMoYnVmZmVyKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE5PVF9GT1VORF9FUlIgfTsKIAogICAgIC8vIDMuIElmIHRoZSBzb3VyY2VCdWZmZXIudXBkYXRp
bmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAu
Li4KICAgICBidWZmZXIuYWJvcnRJZlVwZGF0aW5nKCk7CkBAIC04MjAsMjMgKzc4NywyNCBAQCB2
b2lkIE1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyJiBidWZmZXIs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgLy8gY2FuY2VsYWJsZSwgYW5kIHRoYXQg
dXNlcyB0aGUgVHJhY2tFdmVudCBpbnRlcmZhY2UsIGF0IHRoZSBTb3VyY2VCdWZmZXIgdGV4dFRy
YWNrcyBsaXN0LgogICAgICAgICAgICAgdGV4dFRyYWNrcy0+cmVtb3ZlKHRyYWNrKTsKICAgICAg
ICAgfQotICAgICAgICAKKwogICAgICAgICAvLyA5LjQgSWYgdGhlIHJlbW92ZWQgZW5hYmxlZCB0
ZXh0IHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQKICAgICAgICAgLy8gbmFtZWQgY2hhbmdlIGF0IHRoZSBIVE1MTWVkaWFFbGVt
ZW50IHRleHRUcmFja3MgbGlzdC4KICAgICAgICAgaWYgKHJlbW92ZWRFbmFibGVkVGV4dFRyYWNr
KQogICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPnRleHRUcmFja3MoKS5zY2hlZHVsZUNoYW5n
ZUV2ZW50KCk7CiAgICAgfQotICAgIAotICAgIAorCiAgICAgLy8gMTAuIElmIHNvdXJjZUJ1ZmZl
ciBpcyBpbiBhY3RpdmVTb3VyY2VCdWZmZXJzLCB0aGVuIHJlbW92ZSBzb3VyY2VCdWZmZXIgZnJv
bSBhY3RpdmVTb3VyY2VCdWZmZXJzIC4uLgogICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy0+cmVt
b3ZlKGJ1ZmZlcik7Ci0gICAgCisKICAgICAvLyAxMS4gUmVtb3ZlIHNvdXJjZUJ1ZmZlciBmcm9t
IHNvdXJjZUJ1ZmZlcnMgYW5kIGZpcmUgYSByZW1vdmVzb3VyY2VidWZmZXIgZXZlbnQKICAgICAv
LyBvbiB0aGF0IG9iamVjdC4KICAgICBtX3NvdXJjZUJ1ZmZlcnMtPnJlbW92ZShidWZmZXIpOwot
ICAgIAorCiAgICAgLy8gMTIuIERlc3Ryb3kgYWxsIHJlc291cmNlcyBmb3Igc291cmNlQnVmZmVy
LgogICAgIGJ1ZmZlci5yZW1vdmVkRnJvbU1lZGlhU291cmNlKCk7CisKKyAgICByZXR1cm4geyB9
OwogfQogCiBib29sIE1lZGlhU291cmNlOjppc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB0
eXBlKQpAQCAtOTA1LDEyICs4NzMsMTIgQEAgdm9pZCBNZWRpYVNvdXJjZTo6ZGV0YWNoRnJvbUVs
ZW1lbnQoSFRNTE1lZGlhRWxlbWVudCYgZWxlbWVudCkKICAgICAvLyAzLiBSZW1vdmUgYWxsIHRo
ZSBTb3VyY2VCdWZmZXIgb2JqZWN0cyBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCiAgICAgLy8g
NC4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zlc291cmNl
YnVmZmVyIGF0IGFjdGl2ZVNvdXJjZUJ1ZmZlcnMuCiAgICAgd2hpbGUgKG1fYWN0aXZlU291cmNl
QnVmZmVycy0+bGVuZ3RoKCkpCi0gICAgICAgIHJlbW92ZVNvdXJjZUJ1ZmZlcigqbV9hY3RpdmVT
b3VyY2VCdWZmZXJzLT5pdGVtKDApLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICAgICAgcmVtb3Zl
U291cmNlQnVmZmVyKCptX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPml0ZW0oMCkpOwogCiAgICAgLy8g
NS4gUmVtb3ZlIGFsbCB0aGUgU291cmNlQnVmZmVyIG9iamVjdHMgZnJvbSBzb3VyY2VCdWZmZXJz
LgogICAgIC8vIDYuIFF1ZXVlIGEgdGFzayB0byBmaXJlIGEgc2ltcGxlIGV2ZW50IG5hbWVkIHJl
bW92ZXNvdXJjZWJ1ZmZlciBhdCBzb3VyY2VCdWZmZXJzLgogICAgIHdoaWxlIChtX3NvdXJjZUJ1
ZmZlcnMtPmxlbmd0aCgpKQotICAgICAgICByZW1vdmVTb3VyY2VCdWZmZXIoKm1fc291cmNlQnVm
ZmVycy0+aXRlbSgwKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgICAgIHJlbW92ZVNvdXJjZUJ1
ZmZlcigqbV9zb3VyY2VCdWZmZXJzLT5pdGVtKDApKTsKIAogICAgIG1fcHJpdmF0ZSA9IG51bGxw
dHI7CiAgICAgbV9tZWRpYUVsZW1lbnQgPSBudWxscHRyOwpAQCAtOTg4LDM0ICs5NTYsMzEgQEAg
VmVjdG9yPFBsYXRmb3JtVGltZVJhbmdlcz4gTWVkaWFTb3VyY2U6OmFjdGl2ZVJhbmdlcygpIGNv
bnN0CiB7CiAgICAgVmVjdG9yPFBsYXRmb3JtVGltZVJhbmdlcz4gYWN0aXZlUmFuZ2VzOwogICAg
IGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fYWN0aXZlU291cmNlQnVmZmVycykKLSAgICAg
ICAgYWN0aXZlUmFuZ2VzLmFwcGVuZChzb3VyY2VCdWZmZXItPmJ1ZmZlcmVkKCktPnJhbmdlcygp
KTsKKyAgICAgICAgYWN0aXZlUmFuZ2VzLmFwcGVuZChzb3VyY2VCdWZmZXItPmJ1ZmZlcmVkSW50
ZXJuYWwoKS5yYW5nZXMoKSk7CiAgICAgcmV0dXJuIGFjdGl2ZVJhbmdlczsKIH0KIAotUmVmUHRy
PFNvdXJjZUJ1ZmZlclByaXZhdGU+IE1lZGlhU291cmNlOjpjcmVhdGVTb3VyY2VCdWZmZXJQcml2
YXRlKGNvbnN0IENvbnRlbnRUeXBlJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlv
bk9yPFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPj4gTWVkaWFTb3VyY2U6OmNyZWF0ZVNvdXJjZUJ1
ZmZlclByaXZhdGUoY29uc3QgQ29udGVudFR5cGUmIHR5cGUpCiB7CiAgICAgUmVmUHRyPFNvdXJj
ZUJ1ZmZlclByaXZhdGU+IHNvdXJjZUJ1ZmZlclByaXZhdGU7CiAgICAgc3dpdGNoIChtX3ByaXZh
dGUtPmFkZFNvdXJjZUJ1ZmZlcih0eXBlLCBzb3VyY2VCdWZmZXJQcml2YXRlKSkgewotICAgIGNh
c2UgTWVkaWFTb3VyY2VQcml2YXRlOjpPazogewotICAgICAgICByZXR1cm4gc291cmNlQnVmZmVy
UHJpdmF0ZTsKLSAgICB9CisgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok9rOgorICAgICAg
ICByZXR1cm4gc291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNlTm9uTnVsbCgpOwogICAgIGNhc2Ug
TWVkaWFTb3VyY2VQcml2YXRlOjpOb3RTdXBwb3J0ZWQ6CiAgICAgICAgIC8vIDIuMiBodHRwczov
L2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVsdC9tZWRpYS1zb3VyY2Uv
bWVkaWEtc291cmNlLmh0bWwjd2lkbC1NZWRpYVNvdXJjZS1hZGRTb3VyY2VCdWZmZXItU291cmNl
QnVmZmVyLURPTVN0cmluZy10eXBlCiAgICAgICAgIC8vIFN0ZXAgMjogSWYgdHlwZSBjb250YWlu
cyBhIE1JTUUgdHlwZSAuLi4gdGhhdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIHR5cGVzCiAg
ICAgICAgIC8vIHNwZWNpZmllZCBmb3IgdGhlIG90aGVyIFNvdXJjZUJ1ZmZlciBvYmplY3RzIGlu
IHNvdXJjZUJ1ZmZlcnMsIHRoZW4gdGhyb3cKICAgICAgICAgLy8gYSBOT1RfU1VQUE9SVEVEX0VS
UiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBlYyA9IE5PVF9TVVBQ
T1JURURfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CiAgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6
OlJlYWNoZWRJZExpbWl0OgogICAgICAgICAvLyAyLjIgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9o
dG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1s
I3dpZGwtTWVkaWFTb3VyY2UtYWRkU291cmNlQnVmZmVyLVNvdXJjZUJ1ZmZlci1ET01TdHJpbmct
dHlwZQogICAgICAgICAvLyBTdGVwIDM6IElmIHRoZSB1c2VyIGFnZW50IGNhbid0IGhhbmRsZSBh
bnkgbW9yZSBTb3VyY2VCdWZmZXIgb2JqZWN0cyB0aGVuIHRocm93CiAgICAgICAgIC8vIGEgUVVP
VEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAg
IGVjID0gUVVPVEFfRVhDRUVERURfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFFVT1RBX0VYQ0VFREVEX0VSUiB9OwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBF
eGNlcHRpb24geyBRVU9UQV9FWENFRURFRF9FUlIgfTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZTo6
c2NoZWR1bGVFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAppbmRleCA3OWYxYjYz
M2I0OGQ2MmIyODBkZTQzNjVlMzcwZjNkMDI5MjU5MDA2Li5mYTM3OTdhY2ZmZWZhMDVlNmIwNjJk
MjhkZmI1MjE1NmY3ZWE3NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL01lZGlhU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5oCkBAIC0zNCwyOCArMzQsMjQgQEAKIAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiRXhj
ZXB0aW9uT3IuaCIKICNpbmNsdWRlICJHZW5lcmljRXZlbnRRdWV1ZS5oIgotI2luY2x1ZGUgIk1l
ZGlhU291cmNlUHJpdmF0ZS5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlUHJpdmF0ZUNsaWVudC5o
IgotI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlci5o
IgotI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlckxpc3QuaCIKICNpbmNsdWRlICJVUkxSZWdpc3RyeS5o
IgotI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEdlbmVyaWNFdmVudFF1ZXVlOworY2xhc3Mg
Q29udGVudFR5cGU7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50OworY2xhc3MgU291cmNlQnVmZmVy
OworY2xhc3MgU291cmNlQnVmZmVyTGlzdDsKK2NsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGU7Citj
bGFzcyBUaW1lUmFuZ2VzOwogCi1jbGFzcyBNZWRpYVNvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJj
ZVByaXZhdGVDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUgeworY2xhc3MgTWVkaWFTb3Vy
Y2UgZmluYWwgOiBwdWJsaWMgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LCBwdWJsaWMgQWN0aXZl
RE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIFVSTFJl
Z2lzdHJhYmxlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRSZWdpc3RyeShVUkxSZWdp
c3RyeSopOwotICAgIHN0YXRpYyBNZWRpYVNvdXJjZSogbG9va3VwKGNvbnN0IFN0cmluZyYgdXJs
KSB7IHJldHVybiBzX3JlZ2lzdHJ5ID8gc3RhdGljX2Nhc3Q8TWVkaWFTb3VyY2UqPihzX3JlZ2lz
dHJ5LT5sb29rdXAodXJsKSkgOiAwOyB9Ci0KLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5n
JiBvcGVuS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIGNsb3NlZEtl
eXdvcmQoKTsKLSAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBlbmRlZEtleXdvcmQoKTsK
KyAgICBzdGF0aWMgTWVkaWFTb3VyY2UqIGxvb2t1cChjb25zdCBTdHJpbmcmIHVybCkgeyByZXR1
cm4gc19yZWdpc3RyeSA/IHN0YXRpY19jYXN0PE1lZGlhU291cmNlKj4oc19yZWdpc3RyeS0+bG9v
a3VwKHVybCkpIDogbnVsbHB0cjsgfQogCiAgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZT4gY3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZSgp
OwpAQCAtNzEsNjkgKzY3LDY2IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEVuZE9mU3RyZWFt
RXJyb3IgeyBOZXR3b3JrLCBEZWNvZGUgfTsKICAgICB2b2lkIHN0cmVhbUVuZGVkV2l0aEVycm9y
KE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAotICAgIC8vIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudAotICAgIHZvaWQgc2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0
ZT4mJikgb3ZlcnJpZGU7Ci0gICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIHNlZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJp
ZGU7CisgICAgTWVkaWFUaW1lIGR1cmF0aW9uKCkgY29uc3QgZmluYWw7CisgICAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gYnVmZmVyZWQoKSBjb25zdCBmaW5hbDsKIAogICAg
IGJvb2wgYXR0YWNoVG9FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKICAgICB2b2lkIGRldGFj
aEZyb21FbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQmKTsKICAgICB2b2lkIG1vbml0b3JTb3VyY2VC
dWZmZXJzKCk7CiAgICAgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlbmRpbmdT
ZWVrVGltZS5pc1ZhbGlkKCk7IH0KLSAgICB2b2lkIGNvbXBsZXRlU2VlaygpOwogICAgIFJlZjxU
aW1lUmFuZ2VzPiBzZWVrYWJsZSgpOwotICAgIHZvaWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBjbGVhckxp
dmVTZWVrYWJsZVJhbmdlKEV4Y2VwdGlvbkNvZGUmKTsKLQorICAgIEV4Y2VwdGlvbk9yPHZvaWQ+
IHNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOwogCi0gICAgdm9pZCBzZXRE
dXJhdGlvbihkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBPcHRpb25hbDxFeGNlcHRpb25D
b2RlPiBzZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHNldER1cmF0aW9uKGRvdWJsZSk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
RHVyYXRpb25JbnRlcm5hbChjb25zdCBNZWRpYVRpbWUmKTsKICAgICBNZWRpYVRpbWUgY3VycmVu
dFRpbWUoKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlYWR5U3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KLSAgICB2b2lkIHNldFJlYWR5U3RhdGUoY29uc3Qg
QXRvbWljU3RyaW5nJik7Ci0gICAgdm9pZCBlbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVh
bUVycm9yPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGVuZE9mU3Ry
ZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+KTsKIAogICAgIEhUTUxNZWRpYUVsZW1lbnQq
IG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFFbGVtZW50OyB9CiAKLSAgICAv
LyBNZWRpYVNvdXJjZS5pZGwgbWV0aG9kcwogICAgIFNvdXJjZUJ1ZmZlckxpc3QqIHNvdXJjZUJ1
ZmZlcnMoKSB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlcnMuZ2V0KCk7IH0KICAgICBTb3VyY2VCdWZm
ZXJMaXN0KiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZm
ZXJzLmdldCgpOyB9Ci0gICAgU291cmNlQnVmZmVyKiBhZGRTb3VyY2VCdWZmZXIoY29uc3QgU3Ry
aW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmVTb3VyY2VCdWZmZXIo
U291cmNlQnVmZmVyJiwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPFNvdXJjZUJ1
ZmZlcio+IGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUpOworICAgIEV4Y2VwdGlv
bk9yPHZvaWQ+IHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImKTsKICAgICBzdGF0aWMg
Ym9vbCBpc1R5cGVTdXBwb3J0ZWQoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAotICAgIC8vIEV2ZW50
VGFyZ2V0IGludGVyZmFjZQogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmlu
YWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYo
KTsgfQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAKLSAgICAvLyBVUkxSZWdpc3RyYWJsZSBpbnRlcmZhY2UKLSAgICBVUkxS
ZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBvdmVycmlkZTsKKyAgICB1c2luZyBSZWZDb3VudGVk
OjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKLSAgICB1c2luZyBSZWZDb3Vu
dGVkPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD46OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD46OmRlcmVmOwotCi0gICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0IEFQSS4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICBzdGF0aWMg
Y29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCk7CiAKLXByb3RlY3RlZDoK
K3ByaXZhdGU6CiAgICAgZXhwbGljaXQgTWVkaWFTb3VyY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICB2b2lkIHN0b3AoKSBvdmVy
cmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBv
dmVycmlkZTsKLSAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3Zl
cnJpZGU7CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgYm9vbCBjYW5TdXNwZW5kRm9yRG9j
dW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9N
T2JqZWN0TmFtZSgpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzZXRQcml2YXRlQW5kT3BlbihS
ZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmKSBmaW5hbDsKKyAgICB2b2lkIHNlZWtUb1RpbWUoY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CiAKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwg
eyByZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsg
fQorICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
ZmluYWw7CisKKyAgICBVUkxSZWdpc3RyeSYgcmVnaXN0cnkoKSBjb25zdCBmaW5hbDsKKworICAg
IHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9wZW5LZXl3b3JkKCk7CisgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgY2xvc2VkS2V5d29yZCgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGVuZGVkS2V5d29yZCgpOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShjb25zdCBB
dG9taWNTdHJpbmcmKTsKICAgICB2b2lkIG9uUmVhZHlTdGF0ZUNoYW5nZShjb25zdCBBdG9taWNT
dHJpbmcmIG9sZFN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5ld1N0YXRlKTsKKwogICAgIFZl
Y3RvcjxQbGF0Zm9ybVRpbWVSYW5nZXM+IGFjdGl2ZVJhbmdlcygpIGNvbnN0OwogCi0gICAgUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+IGNyZWF0ZVNvdXJjZUJ1ZmZlclByaXZhdGUoY29uc3Qg
Q29udGVudFR5cGUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPFNvdXJj
ZUJ1ZmZlclByaXZhdGU+PiBjcmVhdGVTb3VyY2VCdWZmZXJQcml2YXRlKGNvbnN0IENvbnRlbnRU
eXBlJik7CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKTsKLSAgICBHZW5lcmljRXZlbnRRdWV1ZSYgYXN5bmNFdmVudFF1ZXVlKCkgeyByZXR1cm4g
bV9hc3luY0V2ZW50UXVldWU7IH0KIAogICAgIGJvb2wgaGFzQnVmZmVyZWRUaW1lKGNvbnN0IE1l
ZGlhVGltZSYpOwogICAgIGJvb2wgaGFzQ3VycmVudFRpbWUoKTsKQEAgLTE0MSw2ICsxMzQsOCBA
QCBwcm90ZWN0ZWQ6CiAKICAgICB2b2lkIHJlZ2VuZXJhdGVBY3RpdmVTb3VyY2VCdWZmZXJzKCk7
CiAKKyAgICB2b2lkIGNvbXBsZXRlU2VlaygpOworCiAgICAgc3RhdGljIFVSTFJlZ2lzdHJ5KiBz
X3JlZ2lzdHJ5OwogCiAgICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZT4gbV9wcml2YXRlOwpA
QCAtMTQ4LDcgKzE0Myw3IEBAIHByb3RlY3RlZDoKICAgICBSZWZQdHI8U291cmNlQnVmZmVyTGlz
dD4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOwogICAgIG11dGFibGUgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gbV9idWZmZXJlZDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBtX2xpdmVTZWVrYWJsZTsKLSAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21l
ZGlhRWxlbWVudDsKKyAgICBIVE1MTWVkaWFFbGVtZW50KiBtX21lZGlhRWxlbWVudCB7IG51bGxw
dHIgfTsKICAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5n
U2Vla1RpbWU7CiAgICAgQXRvbWljU3RyaW5nIG1fcmVhZHlTdGF0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaWRsIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwKaW5kZXggMzdlOWRh
NDRlMjVmNjQ2OTE0ZjE1NWM2YTJmYjk1MTU1ZmM5ODZkYS4uNWE5ZmVmMTE4MGQyNWZhMmY1NWFl
MWMzZDA5MGUxZTFlMjBmM2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwKQEAgLTQ2LDE5ICs0NiwxOSBAQCBlbnVtIEVuZE9m
U3RyZWFtRXJyb3IgewogICAgIC8vIFN1YnNldCBvZiBzb3VyY2VCdWZmZXJzIHRoYXQgcHJvdmlk
ZSBkYXRhIGZvciB0aGUgc2VsZWN0ZWQvZW5hYmxlZCB0cmFja3MuCiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIFNvdXJjZUJ1ZmZlckxpc3QgYWN0aXZlU291cmNlQnVmZmVyczsKIAotICAgIFtTZXR0
ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
ZHVyYXRpb247CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0
cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKIAotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
U291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01TdHJpbmcgdHlwZSk7Ci0gICAgW01heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXIg
YnVmZmVyKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIFNvdXJjZUJ1ZmZlciBhZGRTb3VyY2VC
dWZmZXIoRE9NU3RyaW5nIHR5cGUpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCByZW1v
dmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyIGJ1ZmZlcik7CiAKICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHJlYWR5U3RhdGU7CiAgICAgCi0gICAgW01heVRocm93TGVnYWN5RXhj
ZXB0aW9uXSB2b2lkIGVuZE9mU3RyZWFtKG9wdGlvbmFsIEVuZE9mU3RyZWFtRXJyb3IgZXJyb3Ip
OworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBlbmRPZlN0cmVhbShvcHRpb25hbCBFbmRP
ZlN0cmVhbUVycm9yIGVycm9yKTsKIAogICAgIHN0YXRpYyBib29sZWFuIGlzVHlwZVN1cHBvcnRl
ZCAoRE9NU3RyaW5nIHR5cGUpOwogCi0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lk
IHNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCk7Ci0gICAgW01h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoKTsKKyAg
ICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0
YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgY2xlYXJMaXZl
U2Vla2FibGVSYW5nZSgpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZW9w
ZW47CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnNvdXJjZWVuZGVkOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4
IGNmMjAwNzI4OTAyOTE1MDdmM2ZiNGVlNWI0ZmM2ZTYyMDJlYTJmODEuLmViNDQ1ZTMzMTQ5N2M3
NzM0MTc4MDkyNDJkZmM0ZDljMTk3NjA4NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNp
bmNsdWRlICJNZWRpYVNhbXBsZS5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCiAjaW5jbHVk
ZSAiU2FtcGxlTWFwLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tMaXN0LmgiCiAjaW5j
bHVkZSAiVGltZVJhbmdlcy5oIgpAQCAtMTI1LDMyICsxMjYsMjUgQEAgU291cmNlQnVmZmVyOjp+
U291cmNlQnVmZmVyKCkKICAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsKIH0KIAot
UmVmUHRyPFRpbWVSYW5nZXM+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYg
ZWMpIGNvbnN0CitFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdlcz4+IFNvdXJjZUJ1ZmZlcjo6YnVm
ZmVyZWQoKSBjb25zdAogewogICAgIC8vIFNlY3Rpb24gMy4xIGJ1ZmZlcmVkIGF0dHJpYnV0ZSBz
dGVwcy4KICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUv
ZGVmYXVsdC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCiAgICAg
Ly8gMS4gSWYgdGhpcyBvYmplY3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZm
ZXJzIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93IGFuCiAg
ICAgLy8gICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KLSAgICBpZiAoaXNSZW1vdmVkKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAgIGlmIChpc1JlbW92ZWQoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAv
LyAyLiBSZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgZm9y
IHRoZSBtZWRpYSBzZWdtZW50cyBidWZmZXJlZC4KICAgICByZXR1cm4gbV9idWZmZXJlZC0+Y29w
eSgpOwogfQogCi1jb25zdCBSZWZQdHI8VGltZVJhbmdlcz4mIFNvdXJjZUJ1ZmZlcjo6YnVmZmVy
ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX2J1ZmZlcmVkOwotfQotCiBkb3VibGUgU291cmNl
QnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdAogewogICAgIHJldHVybiBtX3RpbWVzdGFt
cE9mZnNldC50b0RvdWJsZSgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0VGltZXN0YW1w
T2Zmc2V0KGRvdWJsZSBvZmZzZXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gU291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9mZnNldCkKIHsKICAg
ICAvLyBTZWN0aW9uIDMuMSB0aW1lc3RhbXBPZmZzZXQgYXR0cmlidXRlIHNldHRlciBzdGVwcy4K
ICAgICAvLyBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcy0xCkBAIC0xNTgsMTAg
KzE1Miw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9m
ZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QgaGFzIGJl
ZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJzIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50
IG1lZGlhIHNvdXJjZSwgdGhlbiB0aHJvdyBhbgogICAgIC8vICAgIElOVkFMSURfU1RBVEVfRVJS
IGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gMy4gSWYgdGhlIHVwZGF0
aW5nIGF0dHJpYnV0ZSBlcXVhbHMgdHJ1ZSwgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VS
UiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChpc1JlbW92ZWQoKSB8
fCBtX3VwZGF0aW5nKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgLy8gNC4g
SWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIGlz
IGluIHRoZSAiZW5kZWQiIHN0YXRlIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAg
Ly8gNC4xIFNldCB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBz
b3VyY2UgdG8gIm9wZW4iCkBAIC0xNjksMTAgKzE2MSw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpz
ZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
bV9zb3VyY2UtPm9wZW5JZkluRW5kZWRTdGF0ZSgpOwogCiAgICAgLy8gNS4gSWYgdGhlIGFwcGVu
ZCBzdGF0ZSBlcXVhbHMgUEFSU0lOR19NRURJQV9TRUdNRU5ULCB0aGVuIHRocm93IGFuIElOVkFM
SURfU1RBVEVfRVJSIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAobV9hcHBlbmRTdGF0
ZSA9PSBQYXJzaW5nTWVkaWFTZWdtZW50KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9F
UlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fYXBwZW5kU3RhdGUgPT0gUGFy
c2luZ01lZGlhU2VnbWVudCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RB
VEVfRVJSIH07CiAKICAgICBNZWRpYVRpbWUgbmV3VGltZXN0YW1wT2Zmc2V0ID0gTWVkaWFUaW1l
OjpjcmVhdGVXaXRoRG91YmxlKG9mZnNldCk7CiAKQEAgLTE4MiwxNCArMTcyLDE2IEBAIHZvaWQg
U291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9mZnNldCwgRXhjZXB0aW9u
Q29kZSYgZWMpCiAKICAgICAvLyA3LiBVcGRhdGUgdGhlIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZh
bHVlLgogICAgIG1fdGltZXN0YW1wT2Zmc2V0ID0gbmV3VGltZXN0YW1wT2Zmc2V0OworCisgICAg
cmV0dXJuIHsgfTsKIH0KIAogZG91YmxlIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kV2luZG93U3RhcnQo
KSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGVuZFdpbmRvd1N0YXJ0LnRvRG91YmxlKCk7Ci19
OworfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QXBwZW5kV2luZG93U3RhcnQoZG91YmxlIG5l
d1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZl
cjo6c2V0QXBwZW5kV2luZG93U3RhcnQoZG91YmxlIG5ld1ZhbHVlKQogewogICAgIC8vIFNlY3Rp
b24gMy4xIGFwcGVuZFdpbmRvd1N0YXJ0IGF0dHJpYnV0ZSBzZXR0ZXIgc3RlcHMuCiAgICAgLy8g
VzNDIEVkaXRvcidzIERyYWZ0IDE2IFNlcHRlbWJlciAyMDE2CkBAIC0xOTcsMjggKzE4OSwyNiBA
QCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QXBwZW5kV2luZG93U3RhcnQoZG91YmxlIG5ld1ZhbHVl
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiBy
ZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVk
aWEgc291cmNlLAogICAgIC8vICAgIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gMi4gSWYgdGhlIHVwZGF0aW5n
IGF0dHJpYnV0ZSBlcXVhbHMgdHJ1ZSwgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBl
eGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChpc1JlbW92ZWQoKSB8fCBt
X3VwZGF0aW5nKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpCisgICAgICAg
IHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgLy8gMy4gSWYg
dGhlIG5ldyB2YWx1ZSBpcyBsZXNzIHRoYW4gMCBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8g
YXBwZW5kV2luZG93RW5kIHRoZW4KICAgICAvLyAgICB0aHJvdyBhbiBUeXBlRXJyb3IgZXhjZXB0
aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAobmV3VmFsdWUgPCAwIHx8IG5ld1Zh
bHVlID49IG1fYXBwZW5kV2luZG93RW5kLnRvRG91YmxlKCkpIHsKLSAgICAgICAgZWMgPSBUeXBl
RXJyb3I7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG5ld1ZhbHVlIDwgMCB8fCBu
ZXdWYWx1ZSA+PSBtX2FwcGVuZFdpbmRvd0VuZC50b0RvdWJsZSgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKICAgICAvLyA0LiBVcGRhdGUgdGhlIGF0dHJpYnV0
ZSB0byB0aGUgbmV3IHZhbHVlLgogICAgIG1fYXBwZW5kV2luZG93U3RhcnQgPSBNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUobmV3VmFsdWUpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAogZG91
YmxlIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kV2luZG93RW5kKCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV9hcHBlbmRXaW5kb3dFbmQudG9Eb3VibGUoKTsKLX07Cit9CiAKLXZvaWQgU291cmNlQnVmZmVy
OjpzZXRBcHBlbmRXaW5kb3dFbmQoZG91YmxlIG5ld1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykK
K0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6c2V0QXBwZW5kV2luZG93RW5kKGRvdWJs
ZSBuZXdWYWx1ZSkKIHsKICAgICAvLyBTZWN0aW9uIDMuMSBhcHBlbmRXaW5kb3dFbmQgYXR0cmli
dXRlIHNldHRlciBzdGVwcy4KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMTYgU2VwdGVtYmVy
IDIwMTYKQEAgLTIyNiwzMiArMjE2LDMwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRBcHBlbmRX
aW5kb3dFbmQoZG91YmxlIG5ld1ZhbHVlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAvLyAxLiBJ
ZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMgYXR0
cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlLAogICAgIC8vICAgIHRoZW4gdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICAvLyAyLiBJZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0g
ICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXNSZW1vdmVkKCkg
fHwgbV91cGRhdGluZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVf
RVJSIH07CiAKICAgICAvLyAzLiBJZiB0aGUgbmV3IHZhbHVlIGVxdWFscyBOYU4sIHRoZW4gdGhy
b3cgYW4gVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAvLyA0LiBJZiB0aGUg
bmV3IHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhcHBlbmRXaW5kb3dTdGFydCB0aGVu
IHRocm93IGFuIFR5cGVFcnJvciBleGNlcHRpb24KICAgICAvLyAgICBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCi0gICAgaWYgKHN0ZDo6aXNuYW4obmV3VmFsdWUpIHx8IG5ld1ZhbHVlIDw9IG1fYXBw
ZW5kV2luZG93U3RhcnQudG9Eb3VibGUoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc3RkOjppc25hbihuZXdWYWx1ZSkgfHwgbmV3
VmFsdWUgPD0gbV9hcHBlbmRXaW5kb3dTdGFydC50b0RvdWJsZSgpKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yIH07CiAKICAgICAvLyA1Li4gVXBkYXRlIHRoZSBhdHRyaWJ1
dGUgdG8gdGhlIG5ldyB2YWx1ZS4KICAgICBtX2FwcGVuZFdpbmRvd0VuZCA9IE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShuZXdWYWx1ZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiAKLXZv
aWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXImIGRhdGEsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIo
QXJyYXlCdWZmZXImIGRhdGEpCiB7Ci0gICAgYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nh
c3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuZGF0YSgpKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGVjKTsK
KyAgICByZXR1cm4gYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hh
cio+KGRhdGEuZGF0YSgpKSwgZGF0YS5ieXRlTGVuZ3RoKCkpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYgZGF0YSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1
ZmZlclZpZXcmIGRhdGEpCiB7Ci0gICAgYXBwZW5kQnVmZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8
dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3MoKSksIGRhdGEuYnl0ZUxlbmd0aCgpLCBl
Yyk7CisgICAgcmV0dXJuIGFwcGVuZEJ1ZmZlckludGVybmFsKHN0YXRpY19jYXN0PHVuc2lnbmVk
IGNoYXIqPihkYXRhLmJhc2VBZGRyZXNzKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyOjpyZXNldFBhcnNlclN0YXRlKCkKQEAgLTI4MSw3ICsyNjksNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlcjo6cmVzZXRQYXJzZXJTdGF0ZSgpCiAgICAgbV9wcml2YXRlLT5yZXNl
dFBhcnNlclN0YXRlKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjphYm9ydChFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YWJvcnQoKQogewogICAg
IC8vIFNlY3Rpb24gMy4yIGFib3J0KCkgbWV0aG9kIHN0ZXBzLgogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI2RvbS1zb3VyY2VidWZmZXItYWJvcnQK
QEAgLTI4OSwxNiArMjc3LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydChFeGNlcHRpb25D
b2RlJiBlYykKICAgICAvLyAgICB0aGVuIHRocm93IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2Vw
dGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gMi4gSWYgdGhlIHJlYWR5U3RhdGUg
YXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIGlzIG5vdCBpbiB0aGUgIm9wZW4i
IHN0YXRlCiAgICAgLy8gICAgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRp
b24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChpc1JlbW92ZWQoKSB8fCAhbV9zb3Vy
Y2UtPmlzT3BlbigpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisgICAgaWYgKGlzUmVtb3ZlZCgpIHx8ICFtX3NvdXJjZS0+aXNPcGVu
KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAg
ICAgLy8gMy4gSWYgdGhlIHJhbmdlIHJlbW92YWwgYWxnb3JpdGhtIGlzIHJ1bm5pbmcsIHRoZW4g
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KLSAgICBpZiAobV9yZW1vdmVUaW1lci5pc0FjdGl2ZSgpKSB7Ci0gICAgICAgIGVjID0gSU5W
QUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fcmVtb3Zl
VGltZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RB
VEVfRVJSIH07CiAKICAgICAvLyA0LiBJZiB0aGUgc291cmNlQnVmZmVyLnVwZGF0aW5nIGF0dHJp
YnV0ZSBlcXVhbHMgdHJ1ZSwgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczogLi4uCiAgICAg
YWJvcnRJZlVwZGF0aW5nKCk7CkBAIC0zMTEsMTQgKzI5NSwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6YWJvcnQoRXhjZXB0aW9uQ29kZSYgZWMpCiAKICAgICAvLyA3LiBTZXQgYXBwZW5kV2luZG93
RW5kIHRvIHBvc2l0aXZlIEluZmluaXR5LgogICAgIG1fYXBwZW5kV2luZG93RW5kID0gTWVkaWFU
aW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOworCisgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXI6OnJlbW92ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjpyZW1vdmUoZG91Ymxl
IHN0YXJ0LCBkb3VibGUgZW5kKQogewotICAgIHJlbW92ZShNZWRpYVRpbWU6OmNyZWF0ZVdpdGhE
b3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5kKSwgZWMpOworICAg
IHJldHVybiByZW1vdmUoTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKHN0YXJ0KSwgTWVkaWFU
aW1lOjpjcmVhdGVXaXRoRG91YmxlKGVuZCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6cmVt
b3ZlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBFeGNlcHRp
b25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQogewogICAgIExPRyhNZWRp
YVNvdXJjZSwgIlNvdXJjZUJ1ZmZlcjo6cmVtb3ZlKCVwKSAtIHN0YXJ0KCVsZiksIGVuZCglbGYp
IiwgdGhpcywgc3RhcnQudG9Eb3VibGUoKSwgZW5kLnRvRG91YmxlKCkpOwogCkBAIC0zMjcsMTAg
KzMxMyw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpyZW1vdmUoY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEV4Y2VwdGlvCiAgICAgLy8gMS4gSWYgdGhpcyBvYmpl
Y3QgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJzIGF0dHJpYnV0ZSBvZiB0
aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0aGVuIHRocm93CiAgICAgLy8gICAgYW4gSW52YWxpZFN0
YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAvLyAyLiBJZiB0
aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKGlzUmVt
b3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91cGRhdGlu
ZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAg
ICAvLyAzLiBJZiBkdXJhdGlvbiBlcXVhbHMgTmFOLCB0aGVuIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgLy8gNC4gSWYgc3RhcnQgaXMgbmVn
YXRpdmUgb3IgZ3JlYXRlciB0aGFuIGR1cmF0aW9uLCB0aGVuIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCkBAIC0zNDEsOCArMzI1LDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnJlbW92ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgRXhjZXB0aW8KICAgICAgICAgfHwgc3RhcnQgPCBNZWRpYVRpbWU6Onplcm9UaW1l
KCkKICAgICAgICAgfHwgc3RhcnQgPiBtX3NvdXJjZS0+ZHVyYXRpb24oKQogICAgICAgICB8fCBl
bmQgPD0gc3RhcnQpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OwogICAgIH0KIAogICAgIC8v
IDYuIElmIHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJj
ZSBpcyBpbiB0aGUgImVuZGVkIiBzdGF0ZSB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpA
QCAtMzUyLDYgKzMzNSw4IEBAIHZvaWQgU291cmNlQnVmZmVyOjpyZW1vdmUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEV4Y2VwdGlvCiAKICAgICAvLyA3LiBS
dW4gdGhlIHJhbmdlIHJlbW92YWwgYWxnb3JpdGhtIHdpdGggc3RhcnQgYW5kIGVuZCBhcyB0aGUg
c3RhcnQgYW5kIGVuZCBvZiB0aGUgcmVtb3ZhbCByYW5nZS4KICAgICByYW5nZVJlbW92YWwoc3Rh
cnQsIGVuZCk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmFu
Z2VSZW1vdmFsKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kKQpA
QCAtNTExLDcgKzQ5Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzY2hlZHVsZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnROYW1lKQogICAgIG1fYXN5bmNFdmVudFF1ZXVlLmVucXVldWVF
dmVudChXVEZNb3ZlKGV2ZW50KSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZm
ZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBzaXplLCBFeGNlcHRpb25D
b2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50
ZXJuYWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSkKIHsKICAgICAvLyBTZWN0
aW9uIDMuMiBhcHBlbmRCdWZmZXIoKQogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRt
bC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3
aWRsLVNvdXJjZUJ1ZmZlci1hcHBlbmRCdWZmZXItdm9pZC1BcnJheUJ1ZmZlclZpZXctZGF0YQpA
QCAtNTIzLDEwICs1MDgsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJu
YWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgRXhjZQogICAgIC8vIDEuIElm
IHRoZSBTb3VyY2VCdWZmZXIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJz
IGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZQogICAgIC8vIHRoZW4gdGhyb3cg
YW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICAvLyAyLiBJZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHRocm93
IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0g
ICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAgZWMgPSBJTlZBTElE
X1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXNSZW1vdmVkKCkg
fHwgbV91cGRhdGluZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVf
RVJSIH07CiAKICAgICAvLyAzLiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgdGhlIHBh
cmVudCBtZWRpYSBzb3VyY2UgaXMgaW4gdGhlICJlbmRlZCIgc3RhdGUgdGhlbiBydW4gdGhlIGZv
bGxvd2luZyBzdGVwczoKICAgICAvLyAzLjEuIFNldCB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUg
b2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UgdG8gIm9wZW4iCkBAIC01NDEsOCArNTI0LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIqIGRh
dGEsIHVuc2lnbmVkIHNpemUsIEV4Y2UKICAgICAvLyA1LiBJZiB0aGUgYnVmZmVyIGZ1bGwgZmxh
ZyBlcXVhbHMgdHJ1ZSwgdGhlbiB0aHJvdyBhIFFVT1RBX0VYQ0VFREVEX0VSUiBleGNlcHRpb24g
YW5kIGFib3J0IHRoZXNlIHN0ZXAuCiAgICAgaWYgKG1fYnVmZmVyRnVsbCkgewogICAgICAgICBM
T0coTWVkaWFTb3VyY2UsICJTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKCVwKSAt
ICBidWZmZXIgZnVsbCwgZmFpbGluZyB3aXRoIFFVT1RBX0VYQ0VFREVEX0VSUiBlcnJvciIsIHRo
aXMpOwotICAgICAgICBlYyA9IFFVT1RBX0VYQ0VFREVEX0VSUjsKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUVVPVEFfRVhDRUVERURfRVJSIH07CiAgICAgfQog
I2VuZGlmCiAKQEAgLTU2MCw2ICs1NDIsOCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5kQnVm
ZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgRXhjZQogICAg
IG1fYXBwZW5kQnVmZmVyVGltZXIuc3RhcnRPbmVTaG90KDApOwogCiAgICAgcmVwb3J0RXh0cmFN
ZW1vcnlBbGxvY2F0ZWQoKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIHZvaWQgU291cmNlQnVm
ZmVyOjphcHBlbmRCdWZmZXJUaW1lckZpcmVkKCkKQEAgLTIwNDQsNyArMjAyOCw3IEBAIERvY3Vt
ZW50JiBTb3VyY2VCdWZmZXI6OmRvY3VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZG93bmNhc3Q8
RG9jdW1lbnQ+KCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6c2V0TW9kZShBcHBlbmRNb2RlIG5ld01vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhj
ZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjpzZXRNb2RlKEFwcGVuZE1vZGUgbmV3TW9kZSkK
IHsKICAgICAvLyAzLjEgQXR0cmlidXRlcyAtIG1vZGUKICAgICAvLyBodHRwOi8vd3d3LnczLm9y
Zy9UUi9tZWRpYS1zb3VyY2UvI3dpZGwtU291cmNlQnVmZmVyLW1vZGUKQEAgLTIwNTMsMzAgKzIw
MzcsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldE1vZGUoQXBwZW5kTW9kZSBuZXdNb2RlLCBF
eGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDEuIExldCBuZXcgbW9kZSBlcXVhbCB0aGUgbmV3
IHZhbHVlIGJlaW5nIGFzc2lnbmVkIHRvIHRoaXMgYXR0cmlidXRlLgogICAgIC8vIDIuIElmIGdl
bmVyYXRlIHRpbWVzdGFtcHMgZmxhZyBlcXVhbHMgdHJ1ZSBhbmQgbmV3IG1vZGUgZXF1YWxzICJz
ZWdtZW50cyIsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9BQ0NFU1NfRVJSIGV4Y2VwdGlvbiBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKG1fc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzICYm
IG5ld01vZGUgPT0gQXBwZW5kTW9kZTo6U2VnbWVudHMpIHsKLSAgICAgICAgZWMgPSBJTlZBTElE
X0FDQ0VTU19FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fc2hvdWxkR2Vu
ZXJhdGVUaW1lc3RhbXBzICYmIG5ld01vZGUgPT0gQXBwZW5kTW9kZTo6U2VnbWVudHMpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX0FDQ0VTU19FUlIgfTsKIAogICAgIC8vIDMu
IElmIHRoaXMgb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc291cmNlQnVmZmVycyBh
dHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UsIHRoZW4gdGhyb3cgYW4gSU5WQUxJ
RF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAvLyA0LiBJ
ZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHRocm93IGFuIElOVkFM
SURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKGlz
UmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VS
UjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91cGRh
dGluZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAK
ICAgICAvLyA1LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRp
YSBzb3VyY2UgaXMgaW4gdGhlICJlbmRlZCIgc3RhdGUgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICBpZiAobV9zb3VyY2UtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVNvdXJjZTo6ZW5k
ZWRLZXl3b3JkKCkpIHsKKyAgICBpZiAobV9zb3VyY2UtPmlzRW5kZWQoKSkgewogICAgICAgICAv
LyA1LjEuIFNldCB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBz
b3VyY2UgdG8gIm9wZW4iCiAgICAgICAgIC8vIDUuMi4gUXVldWUgYSB0YXNrIHRvIGZpcmUgYSBz
aW1wbGUgZXZlbnQgbmFtZWQgc291cmNlb3BlbiBhdCB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZS4K
ICAgICAgICAgbV9zb3VyY2UtPm9wZW5JZkluRW5kZWRTdGF0ZSgpOwogICAgIH0KIAogICAgIC8v
IDYuIElmIHRoZSBhcHBlbmQgc3RhdGUgZXF1YWxzIFBBUlNJTkdfTUVESUFfU0VHTUVOVCwgdGhl
biB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAg
aWYgKG1fYXBwZW5kU3RhdGUgPT0gUGFyc2luZ01lZGlhU2VnbWVudCkgewotICAgICAgICBlYyA9
IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmIChtX2Fw
cGVuZFN0YXRlID09IFBhcnNpbmdNZWRpYVNlZ21lbnQpCisgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgLy8gNy4gSWYgdGhlIG5ldyBtb2RlIGVx
dWFscyAic2VxdWVuY2UiLCB0aGVuIHNldCB0aGUgZ3JvdXAgc3RhcnQgdGltZXN0YW1wIHRvIHRo
ZSBncm91cCBlbmQgdGltZXN0YW1wLgogICAgIGlmIChuZXdNb2RlID09IEFwcGVuZE1vZGU6OlNl
cXVlbmNlKQpAQCAtMjA4NCw2ICsyMDYyLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldE1vZGUo
QXBwZW5kTW9kZSBuZXdNb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDguIFVwZGF0
ZSB0aGUgYXR0cmlidXRlIHRvIG5ldyBtb2RlLgogICAgIG1fbW9kZSA9IG5ld01vZGU7CisKKyAg
ICByZXR1cm4geyB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAppbmRleCAxNGIyYzMz
MTRiM2IxMjk3NmFmZGZlYTBkYjk2M2Q1MjMwNTdhMTA1Li4xY2Q4NTQzYzU3ZWUwM2IwNzAyYWFk
ODc4YTZiOGMwNmM2OGNmNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKQEAgLTM2LDM5ICszNiwzMiBAQAogI2luY2x1ZGUgIkFj
dGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkF1ZGlvVHJhY2suaCIKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJFeGNlcHRp
b25Pci5oIgogI2luY2x1ZGUgIkdlbmVyaWNFdmVudFF1ZXVlLmgiCi0jaW5jbHVkZSAiU2NyaXB0
V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiVmlkZW9U
cmFjay5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBdWRpb1RyYWNrTGlzdDsKIGNsYXNzIE1lZGlhU291
cmNlOwogY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOwotY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZTsKIGNsYXNzIFRleHRUcmFja0xpc3Q7CiBjbGFzcyBUaW1lUmFuZ2VzOwogY2xhc3MgVmlkZW9U
cmFja0xpc3Q7CiAKLWNsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCwgcHVibGlj
IEF1ZGlvVHJhY2tDbGllbnQsIHB1YmxpYyBWaWRlb1RyYWNrQ2xpZW50LCBwdWJsaWMgVGV4dFRy
YWNrQ2xpZW50IHsKK2NsYXNzIFNvdXJjZUJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVk
PFNvdXJjZUJ1ZmZlcj4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dFdpdGhJbmxpbmVEYXRhLCBwcml2YXRlIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQsIHByaXZh
dGUgQXVkaW9UcmFja0NsaWVudCwgcHJpdmF0ZSBWaWRlb1RyYWNrQ2xpZW50LCBwcml2YXRlIFRl
eHRUcmFja0NsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTb3VyY2VCdWZmZXI+IGNy
ZWF0ZShSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKLQogICAgIHZp
cnR1YWwgflNvdXJjZUJ1ZmZlcigpOwogCi0gICAgLy8gU291cmNlQnVmZmVyLmlkbCBtZXRob2Rz
CiAgICAgYm9vbCB1cGRhdGluZygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRpbmc7IH0KLSAgICBS
ZWZQdHI8VGltZVJhbmdlcz4gYnVmZmVyZWQoRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgIGNv
bnN0IFJlZlB0cjxUaW1lUmFuZ2VzPiYgYnVmZmVyZWQoKSBjb25zdDsKKyAgICBFeGNlcHRpb25P
cjxSZWY8VGltZVJhbmdlcz4+IGJ1ZmZlcmVkKCkgY29uc3Q7CiAgICAgZG91YmxlIHRpbWVzdGFt
cE9mZnNldCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSwgRXhj
ZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFRpbWVzdGFtcE9mZnNldChk
b3VibGUpOwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQogICAgIFZpZGVvVHJhY2tMaXN0KiB2
aWRlb1RyYWNrcygpOwpAQCAtNzcsMTcgKzcwLDE4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAg
ZG91YmxlIGFwcGVuZFdpbmRvd1N0YXJ0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRBcHBlbmRXaW5k
b3dTdGFydChkb3VibGUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBz
ZXRBcHBlbmRXaW5kb3dTdGFydChkb3VibGUpOwogICAgIGRvdWJsZSBhcHBlbmRXaW5kb3dFbmQo
KSBjb25zdDsKLSAgICB2b2lkIHNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBcHBlbmRXaW5kb3dFbmQoZG91YmxlKTsK
IAotICAgIHZvaWQgYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJiwgRXhjZXB0aW9uQ29kZSYpOwot
ICAgIHZvaWQgYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYsIEV4Y2VwdGlvbkNvZGUmKTsK
LSAgICB2b2lkIGFib3J0KEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZShkb3VibGUg
c3RhcnQsIGRvdWJsZSBlbmQsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHJlbW92ZShjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyJik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gYXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYpOworICAgIEV4Y2VwdGlvbk9y
PHZvaWQ+IGFib3J0KCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGRvdWJsZSBzdGFy
dCwgZG91YmxlIGVuZCk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IE1lZGlhVGltZSYpOworCisgICAgY29uc3QgVGltZVJhbmdlcyYgYnVmZmVy
ZWRJbnRlcm5hbCgpIGNvbnN0IHsgQVNTRVJUKG1fYnVmZmVyZWQpOyByZXR1cm4gKm1fYnVmZmVy
ZWQ7IH0KIAotICAgIHZvaWQgYXBwZW5kRXJyb3IoYm9vbCk7CiAgICAgdm9pZCBhYm9ydElmVXBk
YXRpbmcoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKTsKICAgICB2b2lkIHNl
ZWtUb1RpbWUoY29uc3QgTWVkaWFUaW1lJik7CkBAIC05NSwxNiArODksMTMgQEAgcHVibGljOgog
ICAgIGJvb2wgY2FuUGxheVRocm91Z2hSYW5nZShQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogICAg
IGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKLSAgICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKICAg
ICBib29sIGFjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlOyB9CiAKLSAgICAvLyBFdmVu
dFRhcmdldCBpbnRlcmZhY2UKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KLSAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVu
dFRhcmdldEludGVyZmFjZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2
ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsgfQorICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBBY3RpdmVET01PYmpl
Y3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsgfQogCi0gICAgdXNpbmcgUmVmQ291bnRlZDxT
b3VyY2VCdWZmZXI+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxTb3VyY2VCdWZmZXI+Ojpk
ZXJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDo6
ZGVyZWY7CiAKICAgICBzdHJ1Y3QgVHJhY2tCdWZmZXI7CiAKQEAgLTExMiw2MyArMTAzLDU0IEBA
IHB1YmxpYzoKIAogICAgIGVudW0gY2xhc3MgQXBwZW5kTW9kZSB7IFNlZ21lbnRzLCBTZXF1ZW5j
ZSB9OwogICAgIEFwcGVuZE1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kZTsgfQotICAg
IHZvaWQgc2V0TW9kZShBcHBlbmRNb2RlLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9u
T3I8dm9pZD4gc2V0TW9kZShBcHBlbmRNb2RlKTsKIAotICAgIGJvb2wgc2hvdWxkR2VuZXJhdGVU
aW1lc3RhbXBzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHM7IH0K
ICAgICB2b2lkIHNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhib29sIGZsYWcpIHsgbV9zaG91
bGRHZW5lcmF0ZVRpbWVzdGFtcHMgPSBmbGFnOyB9CiAKLSAgICB2b2lkIHJhbmdlUmVtb3ZhbChj
b25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKLQogICAgIGJvb2wgaXNCdWZmZXJl
ZERpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJlZERpcnR5OyB9CiAgICAgdm9pZCBzZXRC
dWZmZXJlZERpcnR5KGJvb2wgZmxhZykgeyBtX2J1ZmZlcmVkRGlydHkgPSBmbGFnOyB9CiAKICAg
ICBNZWRpYVRpbWUgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0OwogICAgIHZv
aWQgcmVhZHlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0g
ICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKLQotcHJvdGVjdGVk
OgotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBvdmVycmlkZSB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgb3ZlcnJp
ZGUgeyBkZXJlZigpOyB9CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogcHJpdmF0ZToKICAgICBTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+
JiYsIE1lZGlhU291cmNlKik7CiAKLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIHZv
aWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKLSAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNp
b24oKSBjb25zdCBvdmVycmlkZTsKLQotICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQK
LSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBv
dmVycmlkZTsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNv
dXJjZUJ1ZmZlclByaXZhdGUqLCBNZWRpYVNhbXBsZSYpIG92ZXJyaWRlOwotICAgIGJvb2wgc291
cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGUqKSBjb25z
dCBvdmVycmlkZTsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25zdCBT
b3VyY2VCdWZmZXJQcml2YXRlKikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkQmVjb21lUmVhZHlGb3JNb3JlU2FtcGxlcyhTb3VyY2VCdWZmZXJQcml2YXRl
KiwgQXRvbWljU3RyaW5nIHRyYWNrSUQpIG92ZXJyaWRlOwotICAgIE1lZGlhVGltZSBzb3VyY2VC
dWZmZXJQcml2YXRlRmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKFNvdXJjZUJ1ZmZlclByaXZhdGUq
LCBjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBj
b25zdCBNZWRpYVRpbWUmIHBvc2l0aXZlVGhyZXNob2xkKSBvdmVycmlkZTsKLSAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgQXBw
ZW5kUmVzdWx0KSBvdmVycmlkZTsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlUmVuZGVyaW5nRXJyb3IoU291cmNlQnVmZmVyUHJpdmF0ZSosIGludCBlcnJvckNvZGUpIG92
ZXJyaWRlOwotCi0gICAgLy8gQXVkaW9UcmFja0NsaWVudAotICAgIHZvaWQgYXVkaW9UcmFja0Vu
YWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSBvdmVycmlkZTsKLQotICAgIC8vIFZpZGVvVHJhY2tD
bGllbnQKLSAgICB2b2lkIHZpZGVvVHJhY2tTZWxlY3RlZENoYW5nZWQoVmlkZW9UcmFjayopIG92
ZXJyaWRlOwotCi0gICAgLy8gVGV4dFRyYWNrQ2xpZW50Ci0gICAgdm9pZCB0ZXh0VHJhY2tLaW5k
Q2hhbmdlZChUZXh0VHJhY2sqKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja01vZGVDaGFu
Z2VkKFRleHRUcmFjayopIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlcyhUZXh0
VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB0ZXh0
VHJhY2tSZW1vdmVDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3QqKSBvdmVy
cmlkZTsKLSAgICB2b2lkIHRleHRUcmFja0FkZEN1ZShUZXh0VHJhY2sqLCBUZXh0VHJhY2tDdWUm
KSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZShUZXh0VHJhY2sqLCBUZXh0
VHJhY2tDdWUmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBy
ZWYoKTsgfQorICAgIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgZGVyZWYoKTsgfQor
CisgICAgdm9pZCBzdG9wKCkgZmluYWw7CisgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0
TmFtZSgpIGNvbnN0IGZpbmFsOworICAgIGJvb2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVu
c2lvbigpIGNvbnN0IGZpbmFsOworCisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlKiwgY29uc3QgSW5p
dGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUmVjZWl2ZVNhbXBsZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgTWVkaWFTYW1wbGUmKSBmaW5h
bDsKKyAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyhjb25zdCBTb3VyY2VCdWZm
ZXJQcml2YXRlKikgY29uc3QgZmluYWw7CisgICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFz
VmlkZW8oY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IGZpbmFsOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZURpZEJlY29tZVJlYWR5Rm9yTW9yZVNhbXBsZXMoU291cmNlQnVm
ZmVyUHJpdmF0ZSosIEF0b21pY1N0cmluZyB0cmFja0lEKSBmaW5hbDsKKyAgICBNZWRpYVRpbWUg
c291cmNlQnVmZmVyUHJpdmF0ZUZhc3RTZWVrVGltZUZvck1lZGlhVGltZShTb3VyY2VCdWZmZXJQ
cml2YXRlKiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVz
aG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCkgZmluYWw7CisgICAgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZSos
IEFwcGVuZFJlc3VsdCkgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZVJlbmRlcmluZ0Vycm9yKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBpbnQgZXJyb3JDb2RlKSBm
aW5hbDsKKworICAgIHZvaWQgYXVkaW9UcmFja0VuYWJsZWRDaGFuZ2VkKEF1ZGlvVHJhY2sqKSBm
aW5hbDsKKworICAgIHZvaWQgdmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikg
ZmluYWw7CisKKyAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopIGZpbmFs
OworICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgZmluYWw7CisgICAg
dm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1ZUxpc3Qq
KSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNrKiwgY29uc3Qg
VGV4dFRyYWNrQ3VlTGlzdCopIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrQWRkQ3VlKFRleHRU
cmFjayosIFRleHRUcmFja0N1ZSYpIGZpbmFsOworICAgIHZvaWQgdGV4dFRyYWNrUmVtb3ZlQ3Vl
KFRleHRUcmFjayosIFRleHRUcmFja0N1ZSYpIGZpbmFsOworCisgICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBTb3VyY2VC
dWZmZXJFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KIAogICAgIGJvb2wgaXNSZW1vdmVkKCkg
Y29uc3Q7CiAgICAgdm9pZCBzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRO
YW1lKTsKIAotICAgIHZvaWQgYXBwZW5kQnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciosIHVu
c2lnbmVkLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYXBwZW5kQnVm
ZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciosIHVuc2lnbmVkKTsKICAgICB2b2lkIGFwcGVuZEJ1
ZmZlclRpbWVyRmlyZWQoKTsKICAgICB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKTsKIApAQCAtMTky
LDcgKzE3NCwxMiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFj
a0J1ZmZlcnMoKTsKIAotICAgIC8vIEludGVybmFscworICAgIHZvaWQgYXBwZW5kRXJyb3IoYm9v
bCk7CisKKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CisKKyAgICB2b2lkIHJhbmdlUmVtb3Zh
bChjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmKTsKKwogICAgIGZyaWVuZCBjbGFz
cyBJbnRlcm5hbHM7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRT
YW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9taWNTdHJpbmcmKTsKICAgICBXRUJDT1JFX0VYUE9S
VCBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21pY1N0
cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9T
b3VyY2VCdWZmZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaWRsCmluZGV4IGU0NWI3YzM3ZTA1NzM4MTNjN2ZkYjM5YzkxNjc3MjMyM2EwOGEw
MTMuLmNmZjFiYjVhY2U5ZTk5N2NlYzUxMzYwZmRhODc0ZTNlMGYwYjgwMjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKQEAg
LTM4LDMyICszOCwzMSBAQAogICAgIENvbmRpdGlvbmFsPU1FRElBX1NPVVJDRSwKICAgICBFeHBv
cnRNYWNybz1XRUJDT1JFX0VYUE9SVCwKIF0gaW50ZXJmYWNlIFNvdXJjZUJ1ZmZlciA6IEV2ZW50
VGFyZ2V0IHsKLQotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRl
IEFwcGVuZE1vZGUgbW9kZTsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0
ZSBBcHBlbmRNb2RlIG1vZGU7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB1cGRh
dGluZzsKICAgCiAgICAgLy8gUmV0dXJucyB0aGUgdGltZSByYW5nZXMgYnVmZmVyZWQuCi0gICAg
W0dldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSByZWFkb25seSBhdHRyaWJ1dGUgVGltZVJh
bmdlcyBidWZmZXJlZDsKKyAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIHJlYWRvbmx5IGF0
dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOwogCiAgICAgLy8gQXBwbGllcyBhbiBvZmZzZXQg
dG8gbWVkaWEgc2VnbWVudCB0aW1lc3RhbXBzLgotICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4
Y2VwdGlvbl0gYXR0cmlidXRlIGRvdWJsZSB0aW1lc3RhbXBPZmZzZXQ7CisgICAgW1NldHRlck1h
eVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgZG91YmxlIHRpbWVzdGFtcE9mZnNldDsKIAogICAg
IC8vIFRyYWNrIHN1cHBvcnQKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBBdWRpb1RyYWNrTGlzdCBhdWRpb1RyYWNrczsKICAgICBbQ29uZGl0aW9uYWw9
VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBWaWRlb1RyYWNrTGlzdCB2aWRlb1RyYWNr
czsKICAgICBbQ29uZGl0aW9uYWw9VklERU9fVFJBQ0tdIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXh0
VHJhY2tMaXN0IHRleHRUcmFja3M7CiAKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRp
b25dIGF0dHJpYnV0ZSBkb3VibGUgYXBwZW5kV2luZG93U3RhcnQ7Ci0gICAgW1NldHRlck1heVRo
cm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBhcHBlbmRX
aW5kb3dFbmQ7CisgICAgW1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgZG91Ymxl
IGFwcGVuZFdpbmRvd1N0YXJ0OworICAgIFtTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmli
dXRlIHVucmVzdHJpY3RlZCBkb3VibGUgYXBwZW5kV2luZG93RW5kOwogCiAgICAgLy8gQXBwZW5k
IHNlZ21lbnQgZGF0YS4KLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYXBwZW5k
QnVmZmVyKEFycmF5QnVmZmVyIGRhdGEpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCBhcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXJWaWV3IGRhdGEpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXIgZGF0YSk7CisgICAgW01heVRo
cm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlclZpZXcgZGF0YSk7CiAK
ICAgICAvLyBBYm9ydCB0aGUgY3VycmVudCBzZWdtZW50IGFwcGVuZCBzZXF1ZW5jZS4KLSAgICBb
TWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgYWJvcnQoKTsKLSAgICBbTWF5VGhyb3dMZWdh
Y3lFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKHVucmVzdHJpY3RlZCBkb3VibGUgc3RhcnQsIHVucmVz
dHJpY3RlZCBkb3VibGUgZW5kKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYWJvcnQo
KTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgcmVtb3ZlKHVucmVzdHJpY3RlZCBkb3Vi
bGUgc3RhcnQsIHVucmVzdHJpY3RlZCBkb3VibGUgZW5kKTsKIAogICAgIGF0dHJpYnV0ZSBFdmVu
dEhhbmRsZXIgb251cGRhdGVzdGFydDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9udXBk
YXRlOwpAQCAtNzEsNCArNzAsMyBAQAogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJv
cjsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYWJvcnQ7CiB9OwotCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291108</attachid>
            <date>2016-10-10 08:48:23 -0700</date>
            <delta_ts>2016-10-10 10:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163201-20161010084503.patch</filename>
            <type>text/plain</type>
            <size>55805</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2OTk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWQ1MTczYmFiMjM3NzZj
YzQyNzk5ZDk2OTNjMTk3ODllYWM4ODRlYi4uNDg0NjQ3NDAwMWM0MTY0YzQ0YjkxYTY5Y2QwZTZm
YWViZDA2ZTk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE2LTEwLTEwICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIG1lZGlhIHNvdXJjZSBm
cm9tIGxlZ2FjeSB0byBuZXcgRE9NIGV4Y2VwdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZS5jcHA6IFJlbW92ZWQgdW5uZWVkZWQgaW5jbHVkZXMuCisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZTo6Y3JlYXRlKTogVXNlIGF1dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJj
ZTo6TWVkaWFTb3VyY2UpOiBJbml0aWFsaXplIG1fbWVkaWFFbGVtZW50IGluIGNsYXNzIGRlZmlu
aXRpb24uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0TGl2ZVNlZWthYmxlUmFu
Z2UpOiBVc2UgRXhjZXB0aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6Y2xl
YXJMaXZlU2Vla2FibGVSYW5nZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2U6OnNldER1cmF0aW9uKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c2V0RHVyYXRpb25JbnRlcm5hbCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2U6OmVuZE9mU3RyZWFtKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6
c3RyZWFtRW5kZWRXaXRoRXJyb3IpOiBVc2UgYnVmZmVyZWRJbnRlcm5hbC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIpOiBVc2UgRXhjZXB0aW9uT3IuCisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6ZGV0YWNoRnJvbUVsZW1lbnQpOiBVc2Ug
cmVtb3ZlU291cmNlQnVmZmVyCisgICAgICAgIHdpdGhvdXQgSUdOT1JFX0VYQ0VQVElPTiBzaW5j
ZSB0aGF0IGlzIG5vdyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU291cmNlOjphY3RpdmVSYW5nZXMpOiBVc2UgYnVmZmVyZWRJbnRlcm5hbC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlOjpjcmVhdGVTb3VyY2VCdWZmZXJQcml2YXRlKTogVXNlIEV4
Y2VwdGlvbk9yLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5o
OiBSZW1vdmVkIHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICBNYWRlIG1vcmUgdGhpbmdzIHBy
aXZhdGUgYW5kIGFsc28gcHJpdmF0ZSByYXRoZXIgdGhhbiBwcm90ZWN0ZWQuCisKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlkbDogVXNlIG5vbi1sZWdhY3kgZXhj
ZXB0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQpOiBVc2UgRXhjZXB0
aW9uT3IuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNl
dCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRBcHBlbmRXaW5k
b3dTdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRBcHBl
bmRXaW5kb3dFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6YXBw
ZW5kQnVmZmVyKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OmFib3J0
KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnJlbW92ZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCk6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRNb2RlKTogRGl0dG8u
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOiBSZW1vdmVk
IHVubmVlZGVkIGluY2x1ZGVzLgorICAgICAgICBVcGRhdGVkIGZvciBhYm92ZSBjaGFuZ2VzLiBN
YWRlIG1vcmUgdGhpbmdzIHByaXZhdGUuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5pZGw6IFVzZSBub24tbGVnYWN5IGV4Y2VwdGlvbnMuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIu
aDoKKyAgICAgICAgQWRkZWQgbm93LW5lZWRlZCBpbmNsdWRlIG9mIE1lZGlhU291cmNlUHJpdmF0
ZS5oLgorCiAyMDE2LTEwLTEwICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyMDY3MzEpOiBbU09VUF0gTmV0d29yayBwcm9j
ZXNzIGNyYXNoIGluIGdvdEhlYWRlcnNDYWxsYmFjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcAppbmRleCA5N2VjYzg2MjczMjM1NzZj
N2U1NDdkNTEwMzZkZWJmZjE1NGQ0Mzg3Li4xMzc4Njk3MDU2MTBmZmM0MGJhNGUzMTc3ODNiNzZh
MDBmMGU5ZTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlLmNwcApAQCAtMzQsMzMgKzM0LDI0IEBACiAKICNpZiBFTkFCTEUoTUVESUFf
U09VUkNFKQogCi0jaW5jbHVkZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkF1ZGlvVHJhY2tM
aXN0LmgiCiAjaW5jbHVkZSAiQ29udGVudFR5cGUuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVk
ZSAiRXhjZXB0aW9uQ29kZVBsYWNlaG9sZGVyLmgiCi0jaW5jbHVkZSAiR2VuZXJpY0V2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKLSNpbmNsdWRlICJNZWRpYUVycm9yLmgi
Ci0jaW5jbHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVNvdXJjZVByaXZhdGUu
aCIKICNpbmNsdWRlICJNZWRpYVNvdXJjZVJlZ2lzdHJ5LmgiCisjaW5jbHVkZSAiU291cmNlQnVm
ZmVyLmgiCisjaW5jbHVkZSAiU291cmNlQnVmZmVyTGlzdC5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlclByaXZhdGUuaCIKLSNpbmNsdWRlICJUZXh0VHJhY2suaCIKICNpbmNsdWRlICJUZXh0VHJh
Y2tMaXN0LmgiCiAjaW5jbHVkZSAiVGltZVJhbmdlcy5oIgotI2luY2x1ZGUgIlZpZGVvVHJhY2su
aCIKICNpbmNsdWRlICJWaWRlb1RyYWNrTGlzdC5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhB
cnJheS5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1VUkxSZWdpc3RyeSogTWVk
aWFTb3VyY2U6OnNfcmVnaXN0cnkgPSAwOworVVJMUmVnaXN0cnkqIE1lZGlhU291cmNlOjpzX3Jl
Z2lzdHJ5OwogCiB2b2lkIE1lZGlhU291cmNlOjpzZXRSZWdpc3RyeShVUkxSZWdpc3RyeSogcmVn
aXN0cnkpCiB7CkBAIC03MCwxNCArNjEsMTMgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVnaXN0
cnkoVVJMUmVnaXN0cnkqIHJlZ2lzdHJ5KQogCiBSZWY8TWVkaWFTb3VyY2U+IE1lZGlhU291cmNl
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBSZWY8TWVk
aWFTb3VyY2U+IG1lZGlhU291cmNlKGFkb3B0UmVmKCpuZXcgTWVkaWFTb3VyY2UoY29udGV4dCkp
KTsKKyAgICBhdXRvIG1lZGlhU291cmNlID0gYWRvcHRSZWYoKm5ldyBNZWRpYVNvdXJjZShjb250
ZXh0KSk7CiAgICAgbWVkaWFTb3VyY2UtPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBt
ZWRpYVNvdXJjZTsKIH0KIAogTWVkaWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpCiAgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCi0gICAg
LCBtX21lZGlhRWxlbWVudChudWxscHRyKQogICAgICwgbV9kdXJhdGlvbihNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpCiAgICAgLCBtX3BlbmRpbmdTZWVrVGltZShNZWRpYVRpbWU6OmludmFsaWRU
aW1lKCkpCiAgICAgLCBtX3JlYWR5U3RhdGUoY2xvc2VkS2V5d29yZCgpKQpAQCAtMjk1LDQ1ICsy
ODUsNDEgQEAgUmVmPFRpbWVSYW5nZXM+IE1lZGlhU291cmNlOjpzZWVrYWJsZSgpCiAgICAgICAg
IHJldHVybiBUaW1lUmFuZ2VzOjpjcmVhdGUoe01lZGlhVGltZTo6emVyb1RpbWUoKSwgYnVmZmVy
ZWQtPm1heGltdW1CdWZmZXJlZFRpbWUoKX0pOwogICAgIH0KIAotCiAgICAgLy8g4oazIE90aGVy
d2lzZToKICAgICAvLyBSZXR1cm4gYSBzaW5nbGUgcmFuZ2Ugd2l0aCBhIHN0YXJ0IHRpbWUgb2Yg
MCBhbmQgYW4gZW5kIHRpbWUgZXF1YWwgdG8gZHVyYXRpb24uCiAgICAgcmV0dXJuIFRpbWVSYW5n
ZXM6OmNyZWF0ZSh7TWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBtX2R1cmF0aW9ufSk7CiB9CiAKLXZv
aWQgTWVkaWFTb3VyY2U6OnNldExpdmVTZWVrYWJsZVJhbmdlKGRvdWJsZSBzdGFydCwgZG91Ymxl
IGVuZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6
c2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKQogewogICAgIC8v
IFczQyBFZGl0b3IncyBEcmFmdCAxNiBTZXB0ZW1iZXIgMjAxNgogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI2RvbS1tZWRpYXNvdXJjZS1zZXRsaXZl
c2Vla2FibGVyYW5nZQogCiAgICAgLy8gSWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIG5v
dCAib3BlbiIgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNlcHRpb24gYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghaXNPcGVuKCkpIHsKLSAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIWlzT3Blbigp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAg
IC8vIElmIHN0YXJ0IGlzIG5lZ2F0aXZlIG9yIGdyZWF0ZXIgdGhhbiBlbmQsIHRoZW4gdGhyb3cg
YSBUeXBlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoc3Rh
cnQgPCAwIHx8IHN0YXJ0ID4gZW5kKSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQorICAgIGlmIChzdGFydCA8IDAgfHwgc3RhcnQgPiBlbmQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsKIAogICAgIC8vIFNldCBsaXZlIHNl
ZWthYmxlIHJhbmdlIHRvIGJlIGEgbmV3IG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgY29u
dGFpbmluZyBhIHNpbmdsZSByYW5nZQogICAgIC8vIHdob3NlIHN0YXJ0IHBvc2l0aW9uIGlzIHN0
YXJ0IGFuZCBlbmQgcG9zaXRpb24gaXMgZW5kLgogICAgIG1fbGl2ZVNlZWthYmxlID0gc3RkOjpt
YWtlX3VuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJs
ZShzdGFydCksIE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShlbmQpKTsKKworICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2U6OmNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoRXhj
ZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6Y2xlYXJMaXZl
U2Vla2FibGVSYW5nZSgpCiB7CiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDE2IFNlcHRlbWJl
ciAyMDE2CiAgICAgLy8gaHR0cHM6Ly9yYXdnaXQuY29tL3czYy9tZWRpYS1zb3VyY2UvNDU2Mjc2
NDYzNDRlZWEwMTcwZGQxY2JjNWEzZDUwOGNhNzUxYWJiOC9tZWRpYS1zb3VyY2UtcmVzcGVjLmh0
bWwjZG9tLW1lZGlhc291cmNlLWNsZWFybGl2ZXNlZWthYmxlcmFuZ2UKIAogICAgIC8vIElmIHRo
ZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBpcyBub3QgIm9wZW4iIHRoZW4gdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIWlz
T3BlbigpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKCFpc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IElOVkFMSURfU1RBVEVfRVJSIH07CiAgICAgbV9saXZlU2Vla2FibGUgPSBudWxscHRyOworICAg
IHJldHVybiB7IH07CiB9CiAKIGNvbnN0IE1lZGlhVGltZSYgTWVkaWFTb3VyY2U6OmN1cnJlbnRU
aW1lRnVkZ2VGYWN0b3IoKQpAQCAtNDYxLDQwICs0NDcsMzIgQEAgdm9pZCBNZWRpYVNvdXJjZTo6
bW9uaXRvclNvdXJjZUJ1ZmZlcnMoKQogICAgIC8vIDQuIEFib3J0IHRoZXNlIHN0ZXBzLgogfQog
Ci12b2lkIE1lZGlhU291cmNlOjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24sIEV4Y2VwdGlv
bkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uKGRv
dWJsZSBkdXJhdGlvbikKIHsKICAgICAvLyAyLjEgQXR0cmlidXRlcyAtIER1cmF0aW9uCiAgICAg
Ly8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL3RpcC9tZWRpYS1z
b3VyY2UvbWVkaWEtc291cmNlLmh0bWwjYXR0cmlidXRlcwogCiAgICAgLy8gT24gc2V0dGluZywg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhlIHZhbHVlIGJlaW5nIHNl
dCBpcyBuZWdhdGl2ZSBvciBOYU4gdGhlbiB0aHJvdyBhbiBJTlZBTElEX0FDQ0VTU19FUlIgZXhj
ZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoZHVyYXRpb24gPCAwLjAgfHwg
c3RkOjppc25hbihkdXJhdGlvbikpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKGR1cmF0aW9uIDwgMC4wIHx8IHN0ZDo6
aXNuYW4oZHVyYXRpb24pKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9BQ0NF
U1NfRVJSIH07CiAKICAgICAvLyAyLiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgbm90
ICJvcGVuIiB0aGVuIHRocm93IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFpc09wZW4oKSkgewotICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghaXNPcGVuKCkp
CisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAg
Ly8gMy4gSWYgdGhlIHVwZGF0aW5nIGF0dHJpYnV0ZSBlcXVhbHMgdHJ1ZSBvbiBhbnkgU291cmNl
QnVmZmVyIGluIHNvdXJjZUJ1ZmZlcnMsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIK
ICAgICAvLyBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIGZvciAoYXV0byYg
c291cmNlQnVmZmVyIDogKm1fc291cmNlQnVmZmVycykgewotICAgICAgICBpZiAoc291cmNlQnVm
ZmVyLT51cGRhdGluZygpKSB7Ci0gICAgICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmIChzb3VyY2VCdWZmZXIt
PnVwZGF0aW5nKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFU
RV9FUlIgfTsKICAgICB9CiAKICAgICAvLyA0LiBSdW4gdGhlIGR1cmF0aW9uIGNoYW5nZSBhbGdv
cml0aG0gd2l0aCBuZXcgZHVyYXRpb24gc2V0IHRvIHRoZSB2YWx1ZSBiZWluZyBhc3NpZ25lZCB0
byB0aGlzIGF0dHJpYnV0ZS4KLSAgICBhdXRvIHJlc3VsdCA9IHNldER1cmF0aW9uSW50ZXJuYWwo
TWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKGR1cmF0aW9uKSk7Ci0gICAgaWYgKHJlc3VsdCkK
LSAgICAgICAgZWMgPSByZXN1bHQudmFsdWUoKTsKKyAgICByZXR1cm4gc2V0RHVyYXRpb25JbnRl
cm5hbChNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZHVyYXRpb24pKTsKIH0KIAotT3B0aW9u
YWw8RXhjZXB0aW9uQ29kZT4gTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50ZXJuYWwoY29uc3Qg
TWVkaWFUaW1lJiBkdXJhdGlvbikKK0V4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXRE
dXJhdGlvbkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiB7CiAgICAgLy8gMi40
LjYgRHVyYXRpb24gQ2hhbmdlCiAgICAgLy8gaHR0cHM6Ly9yYXdnaXQuY29tL3czYy9tZWRpYS1z
b3VyY2UvNDU2Mjc2NDYzNDRlZWEwMTcwZGQxY2JjNWEzZDUwOGNhNzUxYWJiOC9tZWRpYS1zb3Vy
Y2UtcmVzcGVjLmh0bWwjZHVyYXRpb24tY2hhbmdlLWFsZ29yaXRobQpAQCAtNTE0LDEwICs0OTIs
MTAgQEAgT3B0aW9uYWw8RXhjZXB0aW9uQ29kZT4gTWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGkKICAgICBNZWRpYVRpbWUgaGlnaGVzdEVuZFRp
bWU7CiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIgOiAqbV9zb3VyY2VCdWZmZXJzKSB7CiAg
ICAgICAgIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAgPSBzdGQ6Om1heChoaWdoZXN0UHJl
c2VudGF0aW9uVGltZXN0YW1wLCBzb3VyY2VCdWZmZXItPmhpZ2hlc3RQcmVzZW50YXRpb25UaW1l
c3RhbXAoKSk7Ci0gICAgICAgIGhpZ2hlc3RFbmRUaW1lID0gc3RkOjptYXgoaGlnaGVzdEVuZFRp
bWUsIHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+cmFuZ2VzKCkubWF4aW11bUJ1ZmZlcmVkVGlt
ZSgpKTsKKyAgICAgICAgaGlnaGVzdEVuZFRpbWUgPSBzdGQ6Om1heChoaWdoZXN0RW5kVGltZSwg
c291cmNlQnVmZmVyLT5idWZmZXJlZEludGVybmFsKCkucmFuZ2VzKCkubWF4aW11bUJ1ZmZlcmVk
VGltZSgpKTsKICAgICB9CiAgICAgaWYgKGhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAuaXNW
YWxpZCgpICYmIG5ld0R1cmF0aW9uIDwgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCkKLSAg
ICAgICAgcmV0dXJuIElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDQuIElmIG5ldyBkdXJhdGlvbiBpcyBs
ZXNzIHRoYW4gaGlnaGVzdCBlbmQgdGltZSwgdGhlbgogICAgIC8vIDQuMS4gVXBkYXRlIG5ldyBk
dXJhdGlvbiB0byBlcXVhbCBoaWdoZXN0IGVuZCB0aW1lLgpAQCAtNTQ5LDI1ICs1MjcsMjMgQEAg
dm9pZCBNZWRpYVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmIHN0YXRl
KQogICAgIG9uUmVhZHlTdGF0ZUNoYW5nZShvbGRTdGF0ZSwgc3RhdGUpOwogfQogCi12b2lkIE1l
ZGlhU291cmNlOjplbmRPZlN0cmVhbShPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvciwg
RXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6ZW5kT2ZT
dHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiB7CiAgICAgLy8gMi4yIGh0
dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS90aXAvbWVkaWEtc291cmNl
L21lZGlhLXNvdXJjZS5odG1sI3dpZGwtTWVkaWFTb3VyY2UtZW5kT2ZTdHJlYW0tdm9pZC1FbmRP
ZlN0cmVhbUVycm9yLWVycm9yCiAgICAgLy8gMS4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRl
IGlzIG5vdCBpbiB0aGUgIm9wZW4iIHN0YXRlIHRoZW4gdGhyb3cgYW4KICAgICAvLyBJTlZBTElE
X1NUQVRFX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghaXNP
cGVuKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KKyAgICBpZiAoIWlzT3BlbigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDIuIElmIHRoZSB1cGRhdGluZyBhdHRyaWJ1
dGUgZXF1YWxzIHRydWUgb24gYW55IFNvdXJjZUJ1ZmZlciBpbiBzb3VyY2VCdWZmZXJzLCB0aGVu
IHRocm93IGFuCiAgICAgLy8gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KLSAgICBpZiAoc3RkOjphbnlfb2YobV9zb3VyY2VCdWZmZXJzLT5iZWdpbigp
LCBtX3NvdXJjZUJ1ZmZlcnMtPmVuZCgpLCBbXShhdXRvJiBzb3VyY2VCdWZmZXIpIHsgcmV0dXJu
IHNvdXJjZUJ1ZmZlci0+dXBkYXRpbmcoKTsgfSkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoc3RkOjphbnlfb2YobV9z
b3VyY2VCdWZmZXJzLT5iZWdpbigpLCBtX3NvdXJjZUJ1ZmZlcnMtPmVuZCgpLCBbXShhdXRvJiBz
b3VyY2VCdWZmZXIpIHsgcmV0dXJuIHNvdXJjZUJ1ZmZlci0+dXBkYXRpbmcoKTsgfSkpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRFX0VSUiB9OwogCiAgICAgLy8gMy4g
UnVuIHRoZSBlbmQgb2Ygc3RyZWFtIGFsZ29yaXRobSB3aXRoIHRoZSBlcnJvciBwYXJhbWV0ZXIg
c2V0IHRvIGVycm9yLgogICAgIHN0cmVhbUVuZGVkV2l0aEVycm9yKGVycm9yKTsKKworICAgIHJl
dHVybiB7IH07CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9w
dGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQpAQCAtNTg3LDggKzU2Myw4IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJy
b3I+IGVycm9yKQogICAgICAgICAvLyB0aGUgYnVmZmVyZWQgYXR0cmlidXRlIGFjcm9zcyBhbGwg
U291cmNlQnVmZmVyIG9iamVjdHMgaW4gc291cmNlQnVmZmVycy4KICAgICAgICAgTWVkaWFUaW1l
IG1heEVuZFRpbWU7CiAgICAgICAgIGZvciAoYXV0byYgc291cmNlQnVmZmVyIDogKm1fc291cmNl
QnVmZmVycykgewotICAgICAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gc291cmNlQnVmZmVyLT5i
dWZmZXJlZCgpLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICBtYXhFbmRUaW1lID0gc3RkOjpt
YXgoc291cmNlQnVmZmVyLT5idWZmZXJlZCgpLT5yYW5nZXMoKS5lbmQobGVuZ3RoIC0gMSksIG1h
eEVuZFRpbWUpOworICAgICAgICAgICAgaWYgKGF1dG8gbGVuZ3RoID0gc291cmNlQnVmZmVyLT5i
dWZmZXJlZEludGVybmFsKCkubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgbWF4RW5kVGltZSA9
IHN0ZDo6bWF4KHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWRJbnRlcm5hbCgpLnJhbmdlcygpLmVuZChs
ZW5ndGggLSAxKSwgbWF4RW5kVGltZSk7CiAgICAgICAgIH0KICAgICAgICAgc2V0RHVyYXRpb25J
bnRlcm5hbChtYXhFbmRUaW1lKTsKIApAQCAtNjI5LDcgKzYwNSw3IEBAIHZvaWQgTWVkaWFTb3Vy
Y2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9y
KQogICAgIH0KIH0KIAotU291cmNlQnVmZmVyKiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVy
KGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25PcjxTb3Vy
Y2VCdWZmZXIqPiBNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFN0cmluZyYgdHlw
ZSkKIHsKICAgICBMT0coTWVkaWFTb3VyY2UsICJNZWRpYVNvdXJjZTo6YWRkU291cmNlQnVmZmVy
KCVzKSAlcCIsIHR5cGUuYXNjaWkoKS5kYXRhKCksIHRoaXMpOwogCkBAIC02MzcsMzcgKzYxMywz
MCBAQCBTb3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgU3Ry
aW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMg
aW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKIAog
ICAgIC8vIDEuIElmIHR5cGUgaXMgYW4gZW1wdHkgc3RyaW5nIHRoZW4gdGhyb3cgYSBUeXBlRXJy
b3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAodHlwZS5pc0VtcHR5
KCkpIHsKLSAgICAgICAgZWMgPSBUeXBlRXJyb3I7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwot
ICAgIH0KKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBUeXBlRXJyb3IgfTsKIAogICAgIC8vIDIuIElmIHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUg
dGhhdCBpcyBub3Qgc3VwcG9ydGVkIC4uLiwgdGhlbiB0aHJvdyBhCiAgICAgLy8gTk9UX1NVUFBP
UlRFRF9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoIWlzVHlw
ZVN1cHBvcnRlZCh0eXBlKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9CisgICAgaWYgKCFpc1R5cGVTdXBwb3J0ZWQodHlw
ZSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwogCiAg
ICAgLy8gNC4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIG5vdCBpbiB0aGUgIm9wZW4i
IHN0YXRlIHRoZW4gdGhyb3cgYW4KICAgICAvLyBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24g
YW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmICghaXNPcGVuKCkpIHsKLSAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgfQorICAg
IGlmICghaXNPcGVuKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJTlZBTElEX1NUQVRF
X0VSUiB9OwogCiAgICAgLy8gNS4gQ3JlYXRlIGEgbmV3IFNvdXJjZUJ1ZmZlciBvYmplY3QgYW5k
IGFzc29jaWF0ZWQgcmVzb3VyY2VzLgogICAgIENvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKHR5cGUp
OwotICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiBzb3VyY2VCdWZmZXJQcml2YXRlID0g
Y3JlYXRlU291cmNlQnVmZmVyUHJpdmF0ZShjb250ZW50VHlwZSwgZWMpOworICAgIGF1dG8gc291
cmNlQnVmZmVyUHJpdmF0ZSA9IGNyZWF0ZVNvdXJjZUJ1ZmZlclByaXZhdGUoY29udGVudFR5cGUp
OwogCi0gICAgaWYgKCFzb3VyY2VCdWZmZXJQcml2YXRlKSB7Ci0gICAgICAgIEFTU0VSVChlYyA9
PSBOT1RfU1VQUE9SVEVEX0VSUiB8fCBlYyA9PSBRVU9UQV9FWENFRURFRF9FUlIpOworICAgIGlm
IChzb3VyY2VCdWZmZXJQcml2YXRlLmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIC8vIDIuIElm
IHR5cGUgY29udGFpbnMgYSBNSU1FIHR5cGUgdGhhdCBpcyBub3Qgc3VwcG9ydGVkIC4uLiwgdGhl
biB0aHJvdyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3Rl
cHMuCiAgICAgICAgIC8vIDMuIElmIHRoZSB1c2VyIGFnZW50IGNhbid0IGhhbmRsZSBhbnkgbW9y
ZSBTb3VyY2VCdWZmZXIgb2JqZWN0cyB0aGVuIHRocm93IGEgUVVPVEFfRVhDRUVERURfRVJSIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBzb3VyY2VCdWZmZXJQcml2YXRlLnJlbGVhc2VFeGNlcHRpb24oKTsKICAg
ICB9CiAKLSAgICBSZWY8U291cmNlQnVmZmVyPiBidWZmZXIgPSBTb3VyY2VCdWZmZXI6OmNyZWF0
ZShzb3VyY2VCdWZmZXJQcml2YXRlLnJlbGVhc2VOb25OdWxsKCksIHRoaXMpOworICAgIGF1dG8g
YnVmZmVyID0gU291cmNlQnVmZmVyOjpjcmVhdGUoc291cmNlQnVmZmVyUHJpdmF0ZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSwgdGhpcyk7CiAKICAgICAvLyA2LiBTZXQgdGhlIGdlbmVyYXRlIHRpbWVz
dGFtcHMgZmxhZyBvbiB0aGUgbmV3IG9iamVjdCB0byB0aGUgdmFsdWUgaW4gdGhlICJHZW5lcmF0
ZSBUaW1lc3RhbXBzIEZsYWciCiAgICAgLy8gY29sdW1uIG9mIHRoZSBieXRlIHN0cmVhbSBmb3Jt
YXQgcmVnaXN0cnkgW01TRS1SRUdJU1RSWV0gZW50cnkgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGgg
dHlwZS4KQEAgLTY4MCw3ICs2NDksNyBAQCBTb3VyY2VCdWZmZXIqIE1lZGlhU291cmNlOjphZGRT
b3VyY2VCdWZmZXIoY29uc3QgU3RyaW5nJiB0eXBlLCBFeGNlcHRpb25Db2RlJiBlYwogICAgIC8v
IOKGsyBTZXQgdGhlIG1vZGUgYXR0cmlidXRlIG9uIHRoZSBuZXcgb2JqZWN0IHRvICJzZXF1ZW5j
ZSIuCiAgICAgLy8gT3RoZXJ3aXNlOgogICAgIC8vIOKGsyBTZXQgdGhlIG1vZGUgYXR0cmlidXRl
IG9uIHRoZSBuZXcgb2JqZWN0IHRvICJzZWdtZW50cyIuCi0gICAgYnVmZmVyLT5zZXRNb2RlKHNo
b3VsZEdlbmVyYXRlVGltZXN0YW1wcyA/IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6U2VxdWVu
Y2UgOiBTb3VyY2VCdWZmZXI6OkFwcGVuZE1vZGU6OlNlZ21lbnRzLCBJR05PUkVfRVhDRVBUSU9O
KTsKKyAgICBidWZmZXItPnNldE1vZGUoc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzID8gU291cmNl
QnVmZmVyOjpBcHBlbmRNb2RlOjpTZXF1ZW5jZSA6IFNvdXJjZUJ1ZmZlcjo6QXBwZW5kTW9kZTo6
U2VnbWVudHMpOwogCiAgICAgU291cmNlQnVmZmVyKiByZXN1bHQgPSBidWZmZXIucHRyKCk7CiAK
QEAgLTY4OSwyMCArNjU4LDE4IEBAIFNvdXJjZUJ1ZmZlciogTWVkaWFTb3VyY2U6OmFkZFNvdXJj
ZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUmIGVjCiAgICAgcmVnZW5l
cmF0ZUFjdGl2ZVNvdXJjZUJ1ZmZlcnMoKTsKIAogICAgIC8vIDkuIFJldHVybiB0aGUgbmV3IG9i
amVjdCB0byB0aGUgY2FsbGVyLgotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIFdURk1v
dmUocmVzdWx0KTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZTo6cmVtb3ZlU291cmNlQnVmZmVyKFNv
dXJjZUJ1ZmZlciYgYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+
IE1lZGlhU291cmNlOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyJiBidWZmZXIpCiB7
CiAgICAgTE9HKE1lZGlhU291cmNlLCAiTWVkaWFTb3VyY2U6OnJlbW92ZVNvdXJjZUJ1ZmZlcigp
ICVwIiwgdGhpcyk7CiAgICAgUmVmPFNvdXJjZUJ1ZmZlcj4gcHJvdGVjdChidWZmZXIpOwogCiAg
ICAgLy8gMi4gSWYgc291cmNlQnVmZmVyIHNwZWNpZmllcyBhbiBvYmplY3QgdGhhdCBpcyBub3Qg
aW4gc291cmNlQnVmZmVycyB0aGVuCiAgICAgLy8gdGhyb3cgYSBOT1RfRk9VTkRfRVJSIGV4Y2Vw
dGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgaWYgKCFtX3NvdXJjZUJ1ZmZlcnMtPmxl
bmd0aCgpIHx8ICFtX3NvdXJjZUJ1ZmZlcnMtPmNvbnRhaW5zKGJ1ZmZlcikpIHsKLSAgICAgICAg
ZWMgPSBOT1RfRk9VTkRfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGlmICghbV9z
b3VyY2VCdWZmZXJzLT5sZW5ndGgoKSB8fCAhbV9zb3VyY2VCdWZmZXJzLT5jb250YWlucyhidWZm
ZXIpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX0ZPVU5EX0VSUiB9OwogCiAgICAg
Ly8gMy4gSWYgdGhlIHNvdXJjZUJ1ZmZlci51cGRhdGluZyBhdHRyaWJ1dGUgZXF1YWxzIHRydWUs
IHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6IC4uLgogICAgIGJ1ZmZlci5hYm9ydElmVXBk
YXRpbmcoKTsKQEAgLTgyMCwyMyArNzg3LDI0IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnJlbW92ZVNv
dXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImIGJ1ZmZlciwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAg
ICAgICAgICAvLyBjYW5jZWxhYmxlLCBhbmQgdGhhdCB1c2VzIHRoZSBUcmFja0V2ZW50IGludGVy
ZmFjZSwgYXQgdGhlIFNvdXJjZUJ1ZmZlciB0ZXh0VHJhY2tzIGxpc3QuCiAgICAgICAgICAgICB0
ZXh0VHJhY2tzLT5yZW1vdmUodHJhY2spOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IC8vIDkuNCBJZiB0aGUgcmVtb3ZlZCBlbmFibGVkIHRleHQgdHJhY2sgZmxhZyBlcXVhbHMgdHJ1
ZSwgdGhlbiBxdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudAogICAgICAgICAvLyBu
YW1lZCBjaGFuZ2UgYXQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgdGV4dFRyYWNrcyBsaXN0LgogICAg
ICAgICBpZiAocmVtb3ZlZEVuYWJsZWRUZXh0VHJhY2spCiAgICAgICAgICAgICBtZWRpYUVsZW1l
bnQoKS0+dGV4dFRyYWNrcygpLnNjaGVkdWxlQ2hhbmdlRXZlbnQoKTsKICAgICB9Ci0gICAgCi0g
ICAgCisKICAgICAvLyAxMC4gSWYgc291cmNlQnVmZmVyIGlzIGluIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMsIHRoZW4gcmVtb3ZlIHNvdXJjZUJ1ZmZlciBmcm9tIGFjdGl2ZVNvdXJjZUJ1ZmZlcnMgLi4u
CiAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5yZW1vdmUoYnVmZmVyKTsKLSAgICAKKwogICAg
IC8vIDExLiBSZW1vdmUgc291cmNlQnVmZmVyIGZyb20gc291cmNlQnVmZmVycyBhbmQgZmlyZSBh
IHJlbW92ZXNvdXJjZWJ1ZmZlciBldmVudAogICAgIC8vIG9uIHRoYXQgb2JqZWN0LgogICAgIG1f
c291cmNlQnVmZmVycy0+cmVtb3ZlKGJ1ZmZlcik7Ci0gICAgCisKICAgICAvLyAxMi4gRGVzdHJv
eSBhbGwgcmVzb3VyY2VzIGZvciBzb3VyY2VCdWZmZXIuCiAgICAgYnVmZmVyLnJlbW92ZWRGcm9t
TWVkaWFTb3VyY2UoKTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIGJvb2wgTWVkaWFTb3VyY2U6
OmlzVHlwZVN1cHBvcnRlZChjb25zdCBTdHJpbmcmIHR5cGUpCkBAIC05MDUsMTIgKzg3MywxMiBA
QCB2b2lkIE1lZGlhU291cmNlOjpkZXRhY2hGcm9tRWxlbWVudChIVE1MTWVkaWFFbGVtZW50JiBl
bGVtZW50KQogICAgIC8vIDMuIFJlbW92ZSBhbGwgdGhlIFNvdXJjZUJ1ZmZlciBvYmplY3RzIGZy
b20gYWN0aXZlU291cmNlQnVmZmVycy4KICAgICAvLyA0LiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBh
IHNpbXBsZSBldmVudCBuYW1lZCByZW1vdmVzb3VyY2VidWZmZXIgYXQgYWN0aXZlU291cmNlQnVm
ZmVycy4KICAgICB3aGlsZSAobV9hY3RpdmVTb3VyY2VCdWZmZXJzLT5sZW5ndGgoKSkKLSAgICAg
ICAgcmVtb3ZlU291cmNlQnVmZmVyKCptX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMtPml0ZW0oMCksIElH
Tk9SRV9FWENFUFRJT04pOworICAgICAgICByZW1vdmVTb3VyY2VCdWZmZXIoKm1fYWN0aXZlU291
cmNlQnVmZmVycy0+aXRlbSgwKSk7CiAKICAgICAvLyA1LiBSZW1vdmUgYWxsIHRoZSBTb3VyY2VC
dWZmZXIgb2JqZWN0cyBmcm9tIHNvdXJjZUJ1ZmZlcnMuCiAgICAgLy8gNi4gUXVldWUgYSB0YXNr
IHRvIGZpcmUgYSBzaW1wbGUgZXZlbnQgbmFtZWQgcmVtb3Zlc291cmNlYnVmZmVyIGF0IHNvdXJj
ZUJ1ZmZlcnMuCiAgICAgd2hpbGUgKG1fc291cmNlQnVmZmVycy0+bGVuZ3RoKCkpCi0gICAgICAg
IHJlbW92ZVNvdXJjZUJ1ZmZlcigqbV9zb3VyY2VCdWZmZXJzLT5pdGVtKDApLCBJR05PUkVfRVhD
RVBUSU9OKTsKKyAgICAgICAgcmVtb3ZlU291cmNlQnVmZmVyKCptX3NvdXJjZUJ1ZmZlcnMtPml0
ZW0oMCkpOwogCiAgICAgbV9wcml2YXRlID0gbnVsbHB0cjsKICAgICBtX21lZGlhRWxlbWVudCA9
IG51bGxwdHI7CkBAIC05ODgsMzQgKzk1NiwzMSBAQCBWZWN0b3I8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBNZWRpYVNvdXJjZTo6YWN0aXZlUmFuZ2VzKCkgY29uc3QKIHsKICAgICBWZWN0b3I8UGxhdGZv
cm1UaW1lUmFuZ2VzPiBhY3RpdmVSYW5nZXM7CiAgICAgZm9yIChhdXRvJiBzb3VyY2VCdWZmZXIg
OiAqbV9hY3RpdmVTb3VyY2VCdWZmZXJzKQotICAgICAgICBhY3RpdmVSYW5nZXMuYXBwZW5kKHNv
dXJjZUJ1ZmZlci0+YnVmZmVyZWQoKS0+cmFuZ2VzKCkpOworICAgICAgICBhY3RpdmVSYW5nZXMu
YXBwZW5kKHNvdXJjZUJ1ZmZlci0+YnVmZmVyZWRJbnRlcm5hbCgpLnJhbmdlcygpKTsKICAgICBy
ZXR1cm4gYWN0aXZlUmFuZ2VzOwogfQogCi1SZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gTWVk
aWFTb3VyY2U6OmNyZWF0ZVNvdXJjZUJ1ZmZlclByaXZhdGUoY29uc3QgQ29udGVudFR5cGUmIHR5
cGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8UmVmPFNvdXJjZUJ1ZmZlclByaXZh
dGU+PiBNZWRpYVNvdXJjZTo6Y3JlYXRlU291cmNlQnVmZmVyUHJpdmF0ZShjb25zdCBDb250ZW50
VHlwZSYgdHlwZSkKIHsKICAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4gc291cmNlQnVm
ZmVyUHJpdmF0ZTsKICAgICBzd2l0Y2ggKG1fcHJpdmF0ZS0+YWRkU291cmNlQnVmZmVyKHR5cGUs
IHNvdXJjZUJ1ZmZlclByaXZhdGUpKSB7Ci0gICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok9r
OiB7Ci0gICAgICAgIHJldHVybiBzb3VyY2VCdWZmZXJQcml2YXRlOwotICAgIH0KKyAgICBjYXNl
IE1lZGlhU291cmNlUHJpdmF0ZTo6T2s6CisgICAgICAgIHJldHVybiBzb3VyY2VCdWZmZXJQcml2
YXRlLnJlbGVhc2VOb25OdWxsKCk7CiAgICAgY2FzZSBNZWRpYVNvdXJjZVByaXZhdGU6Ok5vdFN1
cHBvcnRlZDoKICAgICAgICAgLy8gMi4yIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRp
YS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCN3aWRsLU1l
ZGlhU291cmNlLWFkZFNvdXJjZUJ1ZmZlci1Tb3VyY2VCdWZmZXItRE9NU3RyaW5nLXR5cGUKICAg
ICAgICAgLy8gU3RlcCAyOiBJZiB0eXBlIGNvbnRhaW5zIGEgTUlNRSB0eXBlIC4uLiB0aGF0IGlz
IG5vdCBzdXBwb3J0ZWQgd2l0aCB0aGUgdHlwZXMKICAgICAgICAgLy8gc3BlY2lmaWVkIGZvciB0
aGUgb3RoZXIgU291cmNlQnVmZmVyIG9iamVjdHMgaW4gc291cmNlQnVmZmVycywgdGhlbiB0aHJv
dwogICAgICAgICAvLyBhIE5PVF9TVVBQT1JURURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCi0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIg
fTsKICAgICBjYXNlIE1lZGlhU291cmNlUHJpdmF0ZTo6UmVhY2hlZElkTGltaXQ6CiAgICAgICAg
IC8vIDIuMiBodHRwczovL2R2Y3MudzMub3JnL2hnL2h0bWwtbWVkaWEvcmF3LWZpbGUvZGVmYXVs
dC9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLmh0bWwjd2lkbC1NZWRpYVNvdXJjZS1hZGRTb3Vy
Y2VCdWZmZXItU291cmNlQnVmZmVyLURPTVN0cmluZy10eXBlCiAgICAgICAgIC8vIFN0ZXAgMzog
SWYgdGhlIHVzZXIgYWdlbnQgY2FuJ3QgaGFuZGxlIGFueSBtb3JlIFNvdXJjZUJ1ZmZlciBvYmpl
Y3RzIHRoZW4gdGhyb3cKICAgICAgICAgLy8gYSBRVU9UQV9FWENFRURFRF9FUlIgZXhjZXB0aW9u
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICAgICAgZWMgPSBRVU9UQV9FWENFRURFRF9FUlI7
Ci0gICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUVVP
VEFfRVhDRUVERURfRVJSIH07CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFFVT1RBX0VYQ0VFREVE
X0VSUiB9OwogfQogCiB2b2lkIE1lZGlhU291cmNlOjpzY2hlZHVsZUV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnROYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9NZWRpYVNvdXJjZS5oCmluZGV4IDc5ZjFiNjMzYjQ4ZDYyYjI4MGRlNDM2NWUzNzBmM2Qw
MjkyNTkwMDYuLmZhMzc5N2FjZmZlZmEwNWU2YjA2MmQyOGRmYjUyMTU2ZjdlYTc1OGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgKQEAg
LTM0LDI4ICszNCwyNCBAQAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiRXZlbnRUYXJnZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkdl
bmVyaWNFdmVudFF1ZXVlLmgiCi0jaW5jbHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlLmgiCiAjaW5j
bHVkZSAiTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0V3JhcHBh
YmxlLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVyLmgiCi0jaW5jbHVkZSAiU291cmNlQnVmZmVy
TGlzdC5oIgogI2luY2x1ZGUgIlVSTFJlZ2lzdHJ5LmgiCi0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgR2VuZXJpY0V2ZW50UXVldWU7CitjbGFzcyBDb250ZW50VHlwZTsKK2NsYXNzIEhUTUxN
ZWRpYUVsZW1lbnQ7CitjbGFzcyBTb3VyY2VCdWZmZXI7CitjbGFzcyBTb3VyY2VCdWZmZXJMaXN0
OworY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZTsKK2NsYXNzIFRpbWVSYW5nZXM7CiAKLWNsYXNz
IE1lZGlhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBV
UkxSZWdpc3RyYWJsZSB7CitjbGFzcyBNZWRpYVNvdXJjZSBmaW5hbCA6IHB1YmxpYyBNZWRpYVNv
dXJjZVByaXZhdGVDbGllbnQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgVVJMUmVnaXN0cmFibGUgewogcHVibGljOgogICAg
IHN0YXRpYyB2b2lkIHNldFJlZ2lzdHJ5KFVSTFJlZ2lzdHJ5Kik7Ci0gICAgc3RhdGljIE1lZGlh
U291cmNlKiBsb29rdXAoY29uc3QgU3RyaW5nJiB1cmwpIHsgcmV0dXJuIHNfcmVnaXN0cnkgPyBz
dGF0aWNfY2FzdDxNZWRpYVNvdXJjZSo+KHNfcmVnaXN0cnktPmxvb2t1cCh1cmwpKSA6IDA7IH0K
LQotICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIG9wZW5LZXl3b3JkKCk7Ci0gICAgc3Rh
dGljIGNvbnN0IEF0b21pY1N0cmluZyYgY2xvc2VkS2V5d29yZCgpOwotICAgIHN0YXRpYyBjb25z
dCBBdG9taWNTdHJpbmcmIGVuZGVkS2V5d29yZCgpOworICAgIHN0YXRpYyBNZWRpYVNvdXJjZSog
bG9va3VwKGNvbnN0IFN0cmluZyYgdXJsKSB7IHJldHVybiBzX3JlZ2lzdHJ5ID8gc3RhdGljX2Nh
c3Q8TWVkaWFTb3VyY2UqPihzX3JlZ2lzdHJ5LT5sb29rdXAodXJsKSkgOiBudWxscHRyOyB9CiAK
ICAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOwogICAgIHZpcnR1YWwgfk1lZGlhU291cmNlKCk7CkBAIC03MSw2OSArNjcsNjYgQEAgcHVi
bGljOgogICAgIGVudW0gY2xhc3MgRW5kT2ZTdHJlYW1FcnJvciB7IE5ldHdvcmssIERlY29kZSB9
OwogICAgIHZvaWQgc3RyZWFtRW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJv
cj4pOwogCi0gICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCBzZXRQcml2
YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmKSBvdmVycmlkZTsKLSAgICBNZWRp
YVRpbWUgZHVyYXRpb24oKSBjb25zdCBvdmVycmlkZTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxh
dGZvcm1UaW1lUmFuZ2VzPiBidWZmZXJlZCgpIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgc2Vl
a1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKKyAgICBNZWRpYVRpbWUgZHVyYXRp
b24oKSBjb25zdCBmaW5hbDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBidWZmZXJlZCgpIGNvbnN0IGZpbmFsOwogCiAgICAgYm9vbCBhdHRhY2hUb0VsZW1lbnQoSFRN
TE1lZGlhRWxlbWVudCYpOwogICAgIHZvaWQgZGV0YWNoRnJvbUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCYpOwogICAgIHZvaWQgbW9uaXRvclNvdXJjZUJ1ZmZlcnMoKTsKICAgICBib29sIGlzU2Vl
a2luZygpIGNvbnN0IHsgcmV0dXJuIG1fcGVuZGluZ1NlZWtUaW1lLmlzVmFsaWQoKTsgfQotICAg
IHZvaWQgY29tcGxldGVTZWVrKCk7CiAgICAgUmVmPFRpbWVSYW5nZXM+IHNlZWthYmxlKCk7Ci0g
ICAgdm9pZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIEV4
Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIGNsZWFyTGl2ZVNlZWthYmxlUmFuZ2UoRXhjZXB0aW9u
Q29kZSYpOwotCisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjbGVhckxpdmVT
ZWVrYWJsZVJhbmdlKCk7CiAKLSAgICB2b2lkIHNldER1cmF0aW9uKGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIE9wdGlvbmFsPEV4Y2VwdGlvbkNvZGU+IHNldER1cmF0aW9uSW50ZXJuYWwo
Y29uc3QgTWVkaWFUaW1lJik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0RHVyYXRpb24oZG91
YmxlKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1l
ZGlhVGltZSYpOwogICAgIE1lZGlhVGltZSBjdXJyZW50VGltZSgpIGNvbnN0OwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgcmVhZHlTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsg
fQotICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShjb25zdCBBdG9taWNTdHJpbmcmKTsKLSAgICB2b2lk
IGVuZE9mU3RyZWFtKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+LCBFeGNlcHRpb25Db2RlJik7
CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gZW5kT2ZTdHJlYW0oT3B0aW9uYWw8RW5kT2ZTdHJlYW1F
cnJvcj4pOwogCiAgICAgSFRNTE1lZGlhRWxlbWVudCogbWVkaWFFbGVtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9tZWRpYUVsZW1lbnQ7IH0KIAotICAgIC8vIE1lZGlhU291cmNlLmlkbCBtZXRob2Rz
CiAgICAgU291cmNlQnVmZmVyTGlzdCogc291cmNlQnVmZmVycygpIHsgcmV0dXJuIG1fc291cmNl
QnVmZmVycy5nZXQoKTsgfQogICAgIFNvdXJjZUJ1ZmZlckxpc3QqIGFjdGl2ZVNvdXJjZUJ1ZmZl
cnMoKSB7IHJldHVybiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMuZ2V0KCk7IH0KLSAgICBTb3VyY2VC
dWZmZXIqIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBTdHJpbmcmIHR5cGUsIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXImLCBFeGNlcHRpb25D
b2RlJik7CisgICAgRXhjZXB0aW9uT3I8U291cmNlQnVmZmVyKj4gYWRkU291cmNlQnVmZmVyKGNv
bnN0IFN0cmluZyYgdHlwZSk7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlU291cmNlQnVm
ZmVyKFNvdXJjZUJ1ZmZlciYpOwogICAgIHN0YXRpYyBib29sIGlzVHlwZVN1cHBvcnRlZChjb25z
dCBTdHJpbmcmIHR5cGUpOwogCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IGZpbmFs
OwotICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9Ci0gICAgRXZlbnRUYXJnZXRJbnRl
cmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIC8vIFVS
TFJlZ2lzdHJhYmxlIGludGVyZmFjZQotICAgIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpIGNvbnN0
IG92ZXJyaWRlOworICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3Vu
dGVkOjpkZXJlZjsKIAotICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VQcml2YXRlQ2xp
ZW50Pjo6cmVmOwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
Pjo6ZGVyZWY7Ci0KLSAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgotICAgIGJvb2wgaGFzUGVu
ZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZp
dHkoKSBjb25zdCBmaW5hbDsKIAogICAgIHN0YXRpYyBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRU
aW1lRnVkZ2VGYWN0b3IoKTsKIAotcHJvdGVjdGVkOgorcHJpdmF0ZToKICAgICBleHBsaWNpdCBN
ZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKLSAgICAvLyBBY3RpdmVET01P
YmplY3QgQVBJLgotICAgIHZvaWQgc3RvcCgpIG92ZXJyaWRlOwotICAgIGJvb2wgY2FuU3VzcGVu
ZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwotICAgIGNvbnN0IGNoYXIq
IGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3AoKSBm
aW5hbDsKKyAgICBib29sIGNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSBjb25zdCBm
aW5hbDsKKyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7
CisKKyAgICB2b2lkIHNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYp
IGZpbmFsOworICAgIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKIAor
ICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRJbnRlcmZh
Y2UgZXZlbnRUYXJnZXRJbnRlcmZhY2UoKSBjb25zdCBmaW5hbDsKKworICAgIFVSTFJlZ2lzdHJ5
JiByZWdpc3RyeSgpIGNvbnN0IGZpbmFsOworCisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmlu
ZyYgb3BlbktleXdvcmQoKTsKKyAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBjbG9zZWRL
ZXl3b3JkKCk7CisgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgZW5kZWRLZXl3b3JkKCk7
CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZvaWQg
b25SZWFkeVN0YXRlQ2hhbmdlKGNvbnN0IEF0b21pY1N0cmluZyYgb2xkU3RhdGUsIGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3U3RhdGUpOworCiAgICAgVmVjdG9yPFBsYXRmb3JtVGltZVJhbmdlcz4g
YWN0aXZlUmFuZ2VzKCkgY29uc3Q7CiAKLSAgICBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4g
Y3JlYXRlU291cmNlQnVmZmVyUHJpdmF0ZShjb25zdCBDb250ZW50VHlwZSYsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBFeGNlcHRpb25PcjxSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4+IGNyZWF0ZVNv
dXJjZUJ1ZmZlclByaXZhdGUoY29uc3QgQ29udGVudFR5cGUmKTsKICAgICB2b2lkIHNjaGVkdWxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwotICAgIEdlbmVyaWNFdmVudFF1
ZXVlJiBhc3luY0V2ZW50UXVldWUoKSB7IHJldHVybiBtX2FzeW5jRXZlbnRRdWV1ZTsgfQogCiAg
ICAgYm9vbCBoYXNCdWZmZXJlZFRpbWUoY29uc3QgTWVkaWFUaW1lJik7CiAgICAgYm9vbCBoYXND
dXJyZW50VGltZSgpOwpAQCAtMTQxLDYgKzEzNCw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZvaWQg
cmVnZW5lcmF0ZUFjdGl2ZVNvdXJjZUJ1ZmZlcnMoKTsKIAorICAgIHZvaWQgY29tcGxldGVTZWVr
KCk7CisKICAgICBzdGF0aWMgVVJMUmVnaXN0cnkqIHNfcmVnaXN0cnk7CiAKICAgICBSZWZQdHI8
TWVkaWFTb3VyY2VQcml2YXRlPiBtX3ByaXZhdGU7CkBAIC0xNDgsNyArMTQzLDcgQEAgcHJvdGVj
dGVkOgogICAgIFJlZlB0cjxTb3VyY2VCdWZmZXJMaXN0PiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7
CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBtX2J1ZmZl
cmVkOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IG1fbGl2ZVNlZWth
YmxlOwotICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50OworICAgIEhUTUxNZWRp
YUVsZW1lbnQqIG1fbWVkaWFFbGVtZW50IHsgbnVsbHB0ciB9OwogICAgIE1lZGlhVGltZSBtX2R1
cmF0aW9uOwogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdTZWVrVGltZTsKICAgICBBdG9taWNTdHJp
bmcgbV9yZWFkeVN0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9NZWRpYVNvdXJjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL01lZGlhU291cmNlLmlkbAppbmRleCAzN2U5ZGE0NGUyNWY2NDY5MTRmMTU1YzZhMmZiOTUx
NTVmYzk4NmRhLi41YTlmZWYxMTgwZDI1ZmEyZjU1YWUxYzNkMDkwZTFlMWUyMGYzYTgyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmlk
bApAQCAtNDYsMTkgKzQ2LDE5IEBAIGVudW0gRW5kT2ZTdHJlYW1FcnJvciB7CiAgICAgLy8gU3Vi
c2V0IG9mIHNvdXJjZUJ1ZmZlcnMgdGhhdCBwcm92aWRlIGRhdGEgZm9yIHRoZSBzZWxlY3RlZC9l
bmFibGVkIHRyYWNrcy4KICAgICByZWFkb25seSBhdHRyaWJ1dGUgU291cmNlQnVmZmVyTGlzdCBh
Y3RpdmVTb3VyY2VCdWZmZXJzOwogCi0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9u
XSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBkdXJhdGlvbjsKKyAgICBbU2V0dGVyTWF5
VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGR1cmF0aW9uOwog
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSBTb3VyY2VCdWZmZXIgYWRkU291cmNlQnVm
ZmVyKERPTVN0cmluZyB0eXBlKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQg
cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlciBidWZmZXIpOworICAgIFtNYXlUaHJvd0V4
Y2VwdGlvbl0gU291cmNlQnVmZmVyIGFkZFNvdXJjZUJ1ZmZlcihET01TdHJpbmcgdHlwZSk7Cisg
ICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZm
ZXIgYnVmZmVyKTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgcmVhZHlTdGF0
ZTsKICAgICAKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgZW5kT2ZTdHJlYW0o
b3B0aW9uYWwgRW5kT2ZTdHJlYW1FcnJvciBlcnJvcik7CisgICAgW01heVRocm93RXhjZXB0aW9u
XSB2b2lkIGVuZE9mU3RyZWFtKG9wdGlvbmFsIEVuZE9mU3RyZWFtRXJyb3IgZXJyb3IpOwogCiAg
ICAgc3RhdGljIGJvb2xlYW4gaXNUeXBlU3VwcG9ydGVkIChET01TdHJpbmcgdHlwZSk7CiAKLSAg
ICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZvaWQgc2V0TGl2ZVNlZWthYmxlUmFuZ2UoZG91
YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKLSAgICBbTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIHZv
aWQgY2xlYXJMaXZlU2Vla2FibGVSYW5nZSgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9p
ZCBzZXRMaXZlU2Vla2FibGVSYW5nZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpOworICAgIFtN
YXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBjbGVhckxpdmVTZWVrYWJsZVJhbmdlKCk7CiAKICAgICBh
dHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uc291cmNlb3BlbjsKICAgICBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9uc291cmNlZW5kZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKaW5kZXggY2YyMDA3Mjg5MDI5MTUwN2YzZmI0ZWU1
YjRmYzZlNjIwMmVhMmY4MS4uZWI0NDVlMzMxNDk3Yzc3MzQxNzgwOTI0MmRmYzRkOWMxOTc2MDg2
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNl
QnVmZmVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1lZGlhU2FtcGxlLmgiCiAj
aW5jbHVkZSAiTWVkaWFTb3VyY2UuaCIKICNpbmNsdWRlICJTYW1wbGVNYXAuaCIKKyNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJMaXN0LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNpbmNsdWRlICJUaW1lUmFuZ2VzLmgiCkBAIC0x
MjUsMzIgKzEyNiwyNSBAQCBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQogICAgIG1fcHJp
dmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwogfQogCi1SZWZQdHI8VGltZVJhbmdlcz4gU291cmNl
QnVmZmVyOjpidWZmZXJlZChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0V4Y2VwdGlvbk9yPFJl
ZjxUaW1lUmFuZ2VzPj4gU291cmNlQnVmZmVyOjpidWZmZXJlZCgpIGNvbnN0CiB7CiAgICAgLy8g
U2VjdGlvbiAzLjEgYnVmZmVyZWQgYXR0cmlidXRlIHN0ZXBzLgogICAgIC8vIGh0dHBzOi8vZHZj
cy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UuaHRtbCNhdHRyaWJ1dGVzLTEKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBoYXMg
YmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJl
bnQgbWVkaWEgc291cmNlIHRoZW4gdGhyb3cgYW4KICAgICAvLyAgICBJTlZBTElEX1NUQVRFX0VS
UiBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChpc1JlbW92ZWQoKSkg
ewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICB9CisgICAgaWYgKGlzUmVtb3ZlZCgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0aWMg
bm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1ZmZl
cmVkLgogICAgIHJldHVybiBtX2J1ZmZlcmVkLT5jb3B5KCk7CiB9CiAKLWNvbnN0IFJlZlB0cjxU
aW1lUmFuZ2VzPiYgU291cmNlQnVmZmVyOjpidWZmZXJlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IG1fYnVmZmVyZWQ7Ci19Ci0KIGRvdWJsZSBTb3VyY2VCdWZmZXI6OnRpbWVzdGFtcE9mZnNldCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0LnRvRG91YmxlKCk7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyOjpzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlIG9mZnNldCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZmZXI6OnNldFRpbWVz
dGFtcE9mZnNldChkb3VibGUgb2Zmc2V0KQogewogICAgIC8vIFNlY3Rpb24gMy4xIHRpbWVzdGFt
cE9mZnNldCBhdHRyaWJ1dGUgc2V0dGVyIHN0ZXBzLgogICAgIC8vIGh0dHBzOi8vZHZjcy53My5v
cmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3Vy
Y2UuaHRtbCNhdHRyaWJ1dGVzLTEKQEAgLTE1OCwxMCArMTUyLDggQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNldFRpbWVzdGFtcE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykK
ICAgICAvLyAyLiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20gdGhlIHNvdXJj
ZUJ1ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlLCB0aGVuIHRocm93
IGFuCiAgICAgLy8gICAgSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KICAgICAvLyAzLiBJZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVl
LCB0aGVuIHRocm93IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCi0gICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
aXNSZW1vdmVkKCkgfHwgbV91cGRhdGluZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
VkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAvLyA0LiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1
dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UgaXMgaW4gdGhlICJlbmRlZCIgc3RhdGUgdGhl
biBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyA0LjEgU2V0IHRoZSByZWFkeVN0YXRl
IGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0byAib3BlbiIKQEAgLTE2OSwx
MCArMTYxLDggQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFRpbWVzdGFtcE9mZnNldChkb3VibGUg
b2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBtX3NvdXJjZS0+b3BlbklmSW5FbmRlZFN0
YXRlKCk7CiAKICAgICAvLyA1LiBJZiB0aGUgYXBwZW5kIHN0YXRlIGVxdWFscyBQQVJTSU5HX01F
RElBX1NFR01FTlQsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgotICAgIGlmIChtX2FwcGVuZFN0YXRlID09IFBhcnNpbmdNZWRpYVNlZ21lbnQp
IHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KKyAgICBpZiAobV9hcHBlbmRTdGF0ZSA9PSBQYXJzaW5nTWVkaWFTZWdtZW50KQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIE1lZGlhVGlt
ZSBuZXdUaW1lc3RhbXBPZmZzZXQgPSBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUob2Zmc2V0
KTsKIApAQCAtMTgyLDE0ICsxNzIsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFRpbWVzdGFt
cE9mZnNldChkb3VibGUgb2Zmc2V0LCBFeGNlcHRpb25Db2RlJiBlYykKIAogICAgIC8vIDcuIFVw
ZGF0ZSB0aGUgYXR0cmlidXRlIHRvIHRoZSBuZXcgdmFsdWUuCiAgICAgbV90aW1lc3RhbXBPZmZz
ZXQgPSBuZXdUaW1lc3RhbXBPZmZzZXQ7CisKKyAgICByZXR1cm4geyB9OwogfQogCiBkb3VibGUg
U291cmNlQnVmZmVyOjphcHBlbmRXaW5kb3dTdGFydCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
YXBwZW5kV2luZG93U3RhcnQudG9Eb3VibGUoKTsKLX07Cit9CiAKLXZvaWQgU291cmNlQnVmZmVy
OjpzZXRBcHBlbmRXaW5kb3dTdGFydChkb3VibGUgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQorRXhjZXB0aW9uT3I8dm9pZD4gU291cmNlQnVmZmVyOjpzZXRBcHBlbmRXaW5kb3dTdGFydChk
b3VibGUgbmV3VmFsdWUpCiB7CiAgICAgLy8gU2VjdGlvbiAzLjEgYXBwZW5kV2luZG93U3RhcnQg
YXR0cmlidXRlIHNldHRlciBzdGVwcy4KICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMTYgU2Vw
dGVtYmVyIDIwMTYKQEAgLTE5NywyOCArMTg5LDI2IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRB
cHBlbmRXaW5kb3dTdGFydChkb3VibGUgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IC8vIDEuIElmIHRoaXMgb2JqZWN0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgc291cmNlQnVm
ZmVycyBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRpYSBzb3VyY2UsCiAgICAgLy8gICAgdGhl
biB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciAgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KICAgICAvLyAyLiBJZiB0aGUgdXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0
aGVuIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCi0gICAgaWYgKGlzUmVtb3ZlZCgpIHx8IG1fdXBkYXRpbmcpIHsKLSAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoaXNS
ZW1vdmVkKCkgfHwgbV91cGRhdGluZykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFM
SURfU1RBVEVfRVJSIH07CiAKICAgICAvLyAzLiBJZiB0aGUgbmV3IHZhbHVlIGlzIGxlc3MgdGhh
biAwIG9yIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBhcHBlbmRXaW5kb3dFbmQgdGhlbgogICAg
IC8vICAgIHRocm93IGFuIFR5cGVFcnJvciBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBz
LgotICAgIGlmIChuZXdWYWx1ZSA8IDAgfHwgbmV3VmFsdWUgPj0gbV9hcHBlbmRXaW5kb3dFbmQu
dG9Eb3VibGUoKSkgewotICAgICAgICBlYyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBpZiAobmV3VmFsdWUgPCAwIHx8IG5ld1ZhbHVlID49IG1fYXBwZW5kV2luZG93
RW5kLnRvRG91YmxlKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsK
IAogICAgIC8vIDQuIFVwZGF0ZSB0aGUgYXR0cmlidXRlIHRvIHRoZSBuZXcgdmFsdWUuCiAgICAg
bV9hcHBlbmRXaW5kb3dTdGFydCA9IE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShuZXdWYWx1
ZSk7CisKKyAgICByZXR1cm4geyB9OwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjphcHBlbmRX
aW5kb3dFbmQoKSBjb25zdAogewogICAgIHJldHVybiBtX2FwcGVuZFdpbmRvd0VuZC50b0RvdWJs
ZSgpOwotfTsKK30KIAotdm9pZCBTb3VyY2VCdWZmZXI6OnNldEFwcGVuZFdpbmRvd0VuZChkb3Vi
bGUgbmV3VmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9pZD4gU291cmNl
QnVmZmVyOjpzZXRBcHBlbmRXaW5kb3dFbmQoZG91YmxlIG5ld1ZhbHVlKQogewogICAgIC8vIFNl
Y3Rpb24gMy4xIGFwcGVuZFdpbmRvd0VuZCBhdHRyaWJ1dGUgc2V0dGVyIHN0ZXBzLgogICAgIC8v
IFczQyBFZGl0b3IncyBEcmFmdCAxNiBTZXB0ZW1iZXIgMjAxNgpAQCAtMjI2LDMyICsyMTYsMzAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUgbmV3VmFsdWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGhhcyBiZWVuIHJl
bW92ZWQgZnJvbSB0aGUgc291cmNlQnVmZmVycyBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBtZWRp
YSBzb3VyY2UsCiAgICAgLy8gICAgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNl
cHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIC8vIDIuIElmIHRoZSB1cGRhdGluZyBh
dHRyaWJ1dGUgZXF1YWxzIHRydWUsIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhj
ZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91
cGRhdGluZykgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChpc1JlbW92ZWQoKSB8fCBtX3VwZGF0aW5nKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDMuIElmIHRo
ZSBuZXcgdmFsdWUgZXF1YWxzIE5hTiwgdGhlbiB0aHJvdyBhbiBUeXBlRXJyb3IgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgogICAgIC8vIDQuIElmIHRoZSBuZXcgdmFsdWUgaXMgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIGFwcGVuZFdpbmRvd1N0YXJ0IHRoZW4gdGhyb3cgYW4gVHlwZUVycm9yIGV4Y2Vw
dGlvbgogICAgIC8vICAgIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoc3RkOjppc25h
bihuZXdWYWx1ZSkgfHwgbmV3VmFsdWUgPD0gbV9hcHBlbmRXaW5kb3dTdGFydC50b0RvdWJsZSgp
KSB7Ci0gICAgICAgIGVjID0gVHlwZUVycm9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAg
IGlmIChzdGQ6OmlzbmFuKG5ld1ZhbHVlKSB8fCBuZXdWYWx1ZSA8PSBtX2FwcGVuZFdpbmRvd1N0
YXJ0LnRvRG91YmxlKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IgfTsK
IAogICAgIC8vIDUuLiBVcGRhdGUgdGhlIGF0dHJpYnV0ZSB0byB0aGUgbmV3IHZhbHVlLgogICAg
IG1fYXBwZW5kV2luZG93RW5kID0gTWVkaWFUaW1lOjpjcmVhdGVXaXRoRG91YmxlKG5ld1ZhbHVl
KTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIAotdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1
ZmZlcihBcnJheUJ1ZmZlciYgZGF0YSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlcihBcnJheUJ1ZmZlciYgZGF0YSkKIHsKLSAg
ICBhcHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5k
YXRhKCkpLCBkYXRhLmJ5dGVMZW5ndGgoKSwgZWMpOworICAgIHJldHVybiBhcHBlbmRCdWZmZXJJ
bnRlcm5hbChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5kYXRhKCkpLCBkYXRhLmJ5
dGVMZW5ndGgoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXIoQXJyYXlC
dWZmZXJWaWV3JiBkYXRhLCBFeGNlcHRpb25Db2RlJiBlYykKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNv
dXJjZUJ1ZmZlcjo6YXBwZW5kQnVmZmVyKEFycmF5QnVmZmVyVmlldyYgZGF0YSkKIHsKLSAgICBh
cHBlbmRCdWZmZXJJbnRlcm5hbChzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oZGF0YS5iYXNl
QWRkcmVzcygpKSwgZGF0YS5ieXRlTGVuZ3RoKCksIGVjKTsKKyAgICByZXR1cm4gYXBwZW5kQnVm
ZmVySW50ZXJuYWwoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KGRhdGEuYmFzZUFkZHJlc3Mo
KSksIGRhdGEuYnl0ZUxlbmd0aCgpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlc2V0UGFy
c2VyU3RhdGUoKQpAQCAtMjgxLDcgKzI2OSw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpyZXNldFBh
cnNlclN0YXRlKCkKICAgICBtX3ByaXZhdGUtPnJlc2V0UGFyc2VyU3RhdGUoKTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXI6OmFib3J0KEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gU291cmNlQnVmZmVyOjphYm9ydCgpCiB7CiAgICAgLy8gU2VjdGlvbiAzLjIgYWJvcnQoKSBt
ZXRob2Qgc3RlcHMuCiAgICAgLy8gaHR0cHM6Ly9yYXdnaXQuY29tL3czYy9tZWRpYS1zb3VyY2Uv
NDU2Mjc2NDYzNDRlZWEwMTcwZGQxY2JjNWEzZDUwOGNhNzUxYWJiOC9tZWRpYS1zb3VyY2UtcmVz
cGVjLmh0bWwjZG9tLXNvdXJjZWJ1ZmZlci1hYm9ydApAQCAtMjg5LDE2ICsyNzcsMTIgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OmFib3J0KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vICAgIHRoZW4g
dGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVw
cy4KICAgICAvLyAyLiBJZiB0aGUgcmVhZHlTdGF0ZSBhdHRyaWJ1dGUgb2YgdGhlIHBhcmVudCBt
ZWRpYSBzb3VyY2UgaXMgbm90IGluIHRoZSAib3BlbiIgc3RhdGUKICAgICAvLyAgICB0aGVuIHRo
cm93IGFuIElOVkFMSURfU1RBVEVfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
Ci0gICAgaWYgKGlzUmVtb3ZlZCgpIHx8ICFtX3NvdXJjZS0+aXNPcGVuKCkpIHsKLSAgICAgICAg
ZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
aXNSZW1vdmVkKCkgfHwgIW1fc291cmNlLT5pc09wZW4oKSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07CiAKICAgICAvLyAzLiBJZiB0aGUgcmFuZ2UgcmVt
b3ZhbCBhbGdvcml0aG0gaXMgcnVubmluZywgdGhlbiB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciBleGNlcHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgIGlmIChtX3JlbW92ZVRpbWVy
LmlzQWN0aXZlKCkpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KKyAgICBpZiAobV9yZW1vdmVUaW1lci5pc0FjdGl2ZSgpKQorICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDQuIElm
IHRoZSBzb3VyY2VCdWZmZXIudXBkYXRpbmcgYXR0cmlidXRlIGVxdWFscyB0cnVlLCB0aGVuIHJ1
biB0aGUgZm9sbG93aW5nIHN0ZXBzOiAuLi4KICAgICBhYm9ydElmVXBkYXRpbmcoKTsKQEAgLTMx
MSwxNCArMjk1LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyOjphYm9ydChFeGNlcHRpb25Db2RlJiBl
YykKIAogICAgIC8vIDcuIFNldCBhcHBlbmRXaW5kb3dFbmQgdG8gcG9zaXRpdmUgSW5maW5pdHku
CiAgICAgbV9hcHBlbmRXaW5kb3dFbmQgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1l
KCk7CisKKyAgICByZXR1cm4geyB9OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlKGRv
dWJsZSBzdGFydCwgZG91YmxlIGVuZCwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2
b2lkPiBTb3VyY2VCdWZmZXI6OnJlbW92ZShkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQpCiB7Ci0g
ICAgcmVtb3ZlKE1lZGlhVGltZTo6Y3JlYXRlV2l0aERvdWJsZShzdGFydCksIE1lZGlhVGltZTo6
Y3JlYXRlV2l0aERvdWJsZShlbmQpLCBlYyk7CisgICAgcmV0dXJuIHJlbW92ZShNZWRpYVRpbWU6
OmNyZWF0ZVdpdGhEb3VibGUoc3RhcnQpLCBNZWRpYVRpbWU6OmNyZWF0ZVdpdGhEb3VibGUoZW5k
KSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpyZW1vdmUoY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8
dm9pZD4gU291cmNlQnVmZmVyOjpyZW1vdmUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQpCiB7CiAgICAgTE9HKE1lZGlhU291cmNlLCAiU291cmNlQnVmZmVyOjpy
ZW1vdmUoJXApIC0gc3RhcnQoJWxmKSwgZW5kKCVsZikiLCB0aGlzLCBzdGFydC50b0RvdWJsZSgp
LCBlbmQudG9Eb3VibGUoKSk7CiAKQEAgLTMyNywxMCArMzEzLDggQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnJlbW92ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwg
RXhjZXB0aW8KICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBoYXMgYmVlbiByZW1vdmVkIGZyb20g
dGhlIHNvdXJjZUJ1ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIHRo
ZW4gdGhyb3cKICAgICAvLyAgICBhbiBJbnZhbGlkU3RhdGVFcnJvciBleGNlcHRpb24gYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgogICAgIC8vIDIuIElmIHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUgZXF1
YWxzIHRydWUsIHRoZW4gdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgZXhjZXB0aW9uIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91cGRhdGluZykgewot
ICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQor
ICAgIGlmIChpc1JlbW92ZWQoKSB8fCBtX3VwZGF0aW5nKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDMuIElmIGR1cmF0aW9uIGVxdWFs
cyBOYU4sIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KICAgICAvLyA0LiBJZiBzdGFydCBpcyBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gZHVy
YXRpb24sIHRoZW4gdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBz
dGVwcy4KQEAgLTM0MSw4ICszMjUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBFeGNlcHRpbwogICAgICAg
ICB8fCBzdGFydCA8IE1lZGlhVGltZTo6emVyb1RpbWUoKQogICAgICAgICB8fCBzdGFydCA+IG1f
c291cmNlLT5kdXJhdGlvbigpCiAgICAgICAgIHx8IGVuZCA8PSBzdGFydCkgewotICAgICAgICBl
YyA9IFR5cGVFcnJvcjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgVHlwZUVycm9yIH07CiAgICAgfQogCiAgICAgLy8gNi4gSWYgdGhlIHJlYWR5U3RhdGUgYXR0
cmlidXRlIG9mIHRoZSBwYXJlbnQgbWVkaWEgc291cmNlIGlzIGluIHRoZSAiZW5kZWQiIHN0YXRl
IHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC0zNTIsNiArMzM1LDggQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnJlbW92ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgRXhjZXB0aW8KIAogICAgIC8vIDcuIFJ1biB0aGUgcmFuZ2UgcmVtb3ZhbCBhbGdv
cml0aG0gd2l0aCBzdGFydCBhbmQgZW5kIGFzIHRoZSBzdGFydCBhbmQgZW5kIG9mIHRoZSByZW1v
dmFsIHJhbmdlLgogICAgIHJhbmdlUmVtb3ZhbChzdGFydCwgZW5kKTsKKworICAgIHJldHVybiB7
IH07CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyYW5nZVJlbW92YWwoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQpCkBAIC01MTEsNyArNDk2LDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnNjaGVkdWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUp
CiAgICAgbV9hc3luY0V2ZW50UXVldWUuZW5xdWV1ZUV2ZW50KFdURk1vdmUoZXZlbnQpKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlckludGVybmFsKHVuc2lnbmVkIGNoYXIq
IGRhdGEsIHVuc2lnbmVkIHNpemUsIEV4Y2VwdGlvbkNvZGUmIGVjKQorRXhjZXB0aW9uT3I8dm9p
ZD4gU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBzaXplKQogewogICAgIC8vIFNlY3Rpb24gMy4yIGFwcGVuZEJ1ZmZlcigpCiAg
ICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQv
bWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3dpZGwtU291cmNlQnVmZmVyLWFwcGVuZEJ1
ZmZlci12b2lkLUFycmF5QnVmZmVyVmlldy1kYXRhCkBAIC01MjMsMTAgKzUwOCw4IEBAIHZvaWQg
U291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBzaXplLCBFeGNlCiAgICAgLy8gMS4gSWYgdGhlIFNvdXJjZUJ1ZmZlciBoYXMgYmVl
biByZW1vdmVkIGZyb20gdGhlIHNvdXJjZUJ1ZmZlcnMgYXR0cmlidXRlIG9mIHRoZSBwYXJlbnQg
bWVkaWEgc291cmNlCiAgICAgLy8gdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNl
cHRpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIC8vIDIuIElmIHRoZSB1cGRhdGluZyBh
dHRyaWJ1dGUgZXF1YWxzIHRydWUsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhj
ZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91
cGRhdGluZykgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1
cm47Ci0gICAgfQorICAgIGlmIChpc1JlbW92ZWQoKSB8fCBtX3VwZGF0aW5nKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDMuIElmIHRo
ZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSBpcyBpbiB0
aGUgImVuZGVkIiBzdGF0ZSB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDMu
MS4gU2V0IHRoZSByZWFkeVN0YXRlIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJj
ZSB0byAib3BlbiIKQEAgLTU0MSw4ICs1MjQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6YXBwZW5k
QnVmZmVySW50ZXJuYWwodW5zaWduZWQgY2hhciogZGF0YSwgdW5zaWduZWQgc2l6ZSwgRXhjZQog
ICAgIC8vIDUuIElmIHRoZSBidWZmZXIgZnVsbCBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHRocm93
IGEgUVVPVEFfRVhDRUVERURfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcC4KICAg
ICBpZiAobV9idWZmZXJGdWxsKSB7CiAgICAgICAgIExPRyhNZWRpYVNvdXJjZSwgIlNvdXJjZUJ1
ZmZlcjo6YXBwZW5kQnVmZmVySW50ZXJuYWwoJXApIC0gIGJ1ZmZlciBmdWxsLCBmYWlsaW5nIHdp
dGggUVVPVEFfRVhDRUVERURfRVJSIGVycm9yIiwgdGhpcyk7Ci0gICAgICAgIGVjID0gUVVPVEFf
RVhDRUVERURfRVJSOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBRVU9UQV9FWENFRURFRF9FUlIgfTsKICAgICB9CiAjZW5kaWYKIApAQCAtNTYwLDYgKzU0Miw4
IEBAIHZvaWQgU291cmNlQnVmZmVyOjphcHBlbmRCdWZmZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFy
KiBkYXRhLCB1bnNpZ25lZCBzaXplLCBFeGNlCiAgICAgbV9hcHBlbmRCdWZmZXJUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiAKICAgICByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpOworCisgICAg
cmV0dXJuIHsgfTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXI6OmFwcGVuZEJ1ZmZlclRpbWVyRmly
ZWQoKQpAQCAtMjA0NCw3ICsyMDI4LDcgQEAgRG9jdW1lbnQmIFNvdXJjZUJ1ZmZlcjo6ZG9jdW1l
bnQoKSBjb25zdAogICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oKnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzZXRNb2RlKEFwcGVuZE1vZGUg
bmV3TW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitFeGNlcHRpb25Pcjx2b2lkPiBTb3VyY2VCdWZm
ZXI6OnNldE1vZGUoQXBwZW5kTW9kZSBuZXdNb2RlKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVz
IC0gbW9kZQogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlhLXNvdXJjZS8jd2lkbC1T
b3VyY2VCdWZmZXItbW9kZQpAQCAtMjA1MywzMCArMjAzNywyNCBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c2V0TW9kZShBcHBlbmRNb2RlIG5ld01vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiAgICAg
Ly8gMS4gTGV0IG5ldyBtb2RlIGVxdWFsIHRoZSBuZXcgdmFsdWUgYmVpbmcgYXNzaWduZWQgdG8g
dGhpcyBhdHRyaWJ1dGUuCiAgICAgLy8gMi4gSWYgZ2VuZXJhdGUgdGltZXN0YW1wcyBmbGFnIGVx
dWFscyB0cnVlIGFuZCBuZXcgbW9kZSBlcXVhbHMgInNlZ21lbnRzIiwgdGhlbiB0aHJvdyBhbiBJ
TlZBTElEX0FDQ0VTU19FUlIgZXhjZXB0aW9uIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBp
ZiAobV9zaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMgJiYgbmV3TW9kZSA9PSBBcHBlbmRNb2RlOjpT
ZWdtZW50cykgewotICAgICAgICBlYyA9IElOVkFMSURfQUNDRVNTX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBpZiAobV9zaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMgJiYgbmV3TW9k
ZSA9PSBBcHBlbmRNb2RlOjpTZWdtZW50cykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElO
VkFMSURfQUNDRVNTX0VSUiB9OwogCiAgICAgLy8gMy4gSWYgdGhpcyBvYmplY3QgaGFzIGJlZW4g
cmVtb3ZlZCBmcm9tIHRoZSBzb3VyY2VCdWZmZXJzIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1l
ZGlhIHNvdXJjZSwgdGhlbiB0aHJvdyBhbiBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24gYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgIC8vIDQuIElmIHRoZSB1cGRhdGluZyBhdHRyaWJ1dGUg
ZXF1YWxzIHRydWUsIHRoZW4gdGhyb3cgYW4gSU5WQUxJRF9TVEFURV9FUlIgZXhjZXB0aW9uIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAoaXNSZW1vdmVkKCkgfHwgbV91cGRhdGluZykg
ewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQorICAgIGlmIChpc1JlbW92ZWQoKSB8fCBtX3VwZGF0aW5nKQorICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgSU5WQUxJRF9TVEFURV9FUlIgfTsKIAogICAgIC8vIDUuIElmIHRoZSByZWFkeVN0
YXRlIGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSBpcyBpbiB0aGUgImVuZGVk
IiBzdGF0ZSB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgIGlmIChtX3NvdXJjZS0+
cmVhZHlTdGF0ZSgpID09IE1lZGlhU291cmNlOjplbmRlZEtleXdvcmQoKSkgeworICAgIGlmICht
X3NvdXJjZS0+aXNFbmRlZCgpKSB7CiAgICAgICAgIC8vIDUuMS4gU2V0IHRoZSByZWFkeVN0YXRl
IGF0dHJpYnV0ZSBvZiB0aGUgcGFyZW50IG1lZGlhIHNvdXJjZSB0byAib3BlbiIKICAgICAgICAg
Ly8gNS4yLiBRdWV1ZSBhIHRhc2sgdG8gZmlyZSBhIHNpbXBsZSBldmVudCBuYW1lZCBzb3VyY2Vv
cGVuIGF0IHRoZSBwYXJlbnQgbWVkaWEgc291cmNlLgogICAgICAgICBtX3NvdXJjZS0+b3Blbklm
SW5FbmRlZFN0YXRlKCk7CiAgICAgfQogCiAgICAgLy8gNi4gSWYgdGhlIGFwcGVuZCBzdGF0ZSBl
cXVhbHMgUEFSU0lOR19NRURJQV9TRUdNRU5ULCB0aGVuIHRocm93IGFuIElOVkFMSURfU1RBVEVf
RVJSIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KLSAgICBpZiAobV9hcHBlbmRTdGF0ZSA9PSBQYXJz
aW5nTWVkaWFTZWdtZW50KSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKG1fYXBwZW5kU3RhdGUgPT0gUGFyc2luZ01lZGlh
U2VnbWVudCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IElOVkFMSURfU1RBVEVfRVJSIH07
CiAKICAgICAvLyA3LiBJZiB0aGUgbmV3IG1vZGUgZXF1YWxzICJzZXF1ZW5jZSIsIHRoZW4gc2V0
IHRoZSBncm91cCBzdGFydCB0aW1lc3RhbXAgdG8gdGhlIGdyb3VwIGVuZCB0aW1lc3RhbXAuCiAg
ICAgaWYgKG5ld01vZGUgPT0gQXBwZW5kTW9kZTo6U2VxdWVuY2UpCkBAIC0yMDg0LDYgKzIwNjIs
OCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0TW9kZShBcHBlbmRNb2RlIG5ld01vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogCiAgICAgLy8gOC4gVXBkYXRlIHRoZSBhdHRyaWJ1dGUgdG8gbmV3IG1v
ZGUuCiAgICAgbV9tb2RlID0gbmV3TW9kZTsKKworICAgIHJldHVybiB7IH07CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IDE0YjJjMzMxNGIzYjEyOTc2YWZkZmVhMGRiOTYzZDUy
MzA1N2ExMDUuLjFjZDg1NDNjNTdlZTAzYjA3MDJhYWQ4NzhhNmI4YzA2YzY4Y2Y0MGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApA
QCAtMzYsMzkgKzM2LDMyIEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQXVkaW9UcmFjay5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCi0jaW5jbHVkZSAiRXhj
ZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiR2VuZXJp
Y0V2ZW50UXVldWUuaCIKLSNpbmNsdWRlICJTY3JpcHRXcmFwcGFibGUuaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCiAjaW5j
bHVkZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaWRlb1RyYWNrLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9BcnJheUJ1ZmZlclZpZXcuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEF1ZGlvVHJhY2tMaXN0OwogY2xhc3MgTWVkaWFTb3VyY2U7CiBjbGFzcyBQbGF0Zm9ybVRpbWVS
YW5nZXM7Ci1jbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlOwogY2xhc3MgVGV4dFRyYWNrTGlzdDsK
IGNsYXNzIFRpbWVSYW5nZXM7CiBjbGFzcyBWaWRlb1RyYWNrTGlzdDsKIAotY2xhc3MgU291cmNl
QnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBT
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LCBwdWJsaWMgQXVkaW9UcmFja0NsaWVudCwgcHVibGlj
IFZpZGVvVHJhY2tDbGllbnQsIHB1YmxpYyBUZXh0VHJhY2tDbGllbnQgeworY2xhc3MgU291cmNl
QnVmZmVyIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8U291cmNlQnVmZmVyPiwgcHVibGljIEFj
dGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHByaXZhdGUg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCwgcHJpdmF0ZSBBdWRpb1RyYWNrQ2xpZW50LCBwcml2
YXRlIFZpZGVvVHJhY2tDbGllbnQsIHByaXZhdGUgVGV4dFRyYWNrQ2xpZW50IHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmPFNvdXJjZUJ1ZmZlcj4gY3JlYXRlKFJlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYmLCBNZWRpYVNvdXJjZSopOwotCiAgICAgdmlydHVhbCB+U291cmNlQnVmZmVyKCk7CiAK
LSAgICAvLyBTb3VyY2VCdWZmZXIuaWRsIG1ldGhvZHMKICAgICBib29sIHVwZGF0aW5nKCkgY29u
c3QgeyByZXR1cm4gbV91cGRhdGluZzsgfQotICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBidWZmZXJl
ZChFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgY29uc3QgUmVmUHRyPFRpbWVSYW5nZXM+JiBi
dWZmZXJlZCgpIGNvbnN0OworICAgIEV4Y2VwdGlvbk9yPFJlZjxUaW1lUmFuZ2VzPj4gYnVmZmVy
ZWQoKSBjb25zdDsKICAgICBkb3VibGUgdGltZXN0YW1wT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9p
ZCBzZXRUaW1lc3RhbXBPZmZzZXQoZG91YmxlLCBFeGNlcHRpb25Db2RlJik7CisgICAgRXhjZXB0
aW9uT3I8dm9pZD4gc2V0VGltZXN0YW1wT2Zmc2V0KGRvdWJsZSk7CiAKICNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCiAgICAgVmlkZW9UcmFja0xpc3QqIHZpZGVvVHJhY2tzKCk7CkBAIC03NywxNyAr
NzAsMTggQEAgcHVibGljOgogI2VuZGlmCiAKICAgICBkb3VibGUgYXBwZW5kV2luZG93U3RhcnQo
KSBjb25zdDsKLSAgICB2b2lkIHNldEFwcGVuZFdpbmRvd1N0YXJ0KGRvdWJsZSwgRXhjZXB0aW9u
Q29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFwcGVuZFdpbmRvd1N0YXJ0KGRvdWJs
ZSk7CiAgICAgZG91YmxlIGFwcGVuZFdpbmRvd0VuZCgpIGNvbnN0OwotICAgIHZvaWQgc2V0QXBw
ZW5kV2luZG93RW5kKGRvdWJsZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIEV4Y2VwdGlvbk9yPHZv
aWQ+IHNldEFwcGVuZFdpbmRvd0VuZChkb3VibGUpOwogCi0gICAgdm9pZCBhcHBlbmRCdWZmZXIo
QXJyYXlCdWZmZXImLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBhcHBlbmRCdWZmZXIoQXJy
YXlCdWZmZXJWaWV3JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgYWJvcnQoRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgcmVtb3ZlKGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZm
ZXIoQXJyYXlCdWZmZXImKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXIoQXJy
YXlCdWZmZXJWaWV3Jik7CisgICAgRXhjZXB0aW9uT3I8dm9pZD4gYWJvcnQoKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZW1vdmUoZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kKTsKKyAgICBFeGNl
cHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7
CisKKyAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZEludGVybmFsKCkgY29uc3QgeyBBU1NF
UlQobV9idWZmZXJlZCk7IHJldHVybiAqbV9idWZmZXJlZDsgfQogCi0gICAgdm9pZCBhcHBlbmRF
cnJvcihib29sKTsKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwogICAgIHZvaWQgcmVtb3Zl
ZEZyb21NZWRpYVNvdXJjZSgpOwogICAgIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUm
KTsKQEAgLTk1LDE2ICs4OSwxMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBjYW5QbGF5VGhyb3VnaFJh
bmdlKFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCiAgICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0Owot
ICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAogICAgIGJvb2wgYWN0aXZlKCkgY29uc3QgeyBy
ZXR1cm4gbV9hY3RpdmU7IH0KIAotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQotICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsg
fQotICAgIEV2ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU291cmNlQnVmZmVyRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpOyB9CiAKLSAgICB1c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj46OnJlZjsKLSAgICB1
c2luZyBSZWZDb3VudGVkPFNvdXJjZUJ1ZmZlcj46OmRlcmVmOworICAgIHVzaW5nIFJlZkNvdW50
ZWQ6OnJlZjsKKyAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsKIAogICAgIHN0cnVjdCBUcmFj
a0J1ZmZlcjsKIApAQCAtMTEyLDYzICsxMDMsNTQgQEAgcHVibGljOgogCiAgICAgZW51bSBjbGFz
cyBBcHBlbmRNb2RlIHsgU2VnbWVudHMsIFNlcXVlbmNlIH07CiAgICAgQXBwZW5kTW9kZSBtb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9tb2RlOyB9Ci0gICAgdm9pZCBzZXRNb2RlKEFwcGVuZE1vZGUs
IEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNb2RlKEFwcGVuZE1v
ZGUpOwogCi0gICAgYm9vbCBzaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoKSBjb25zdCB7IHJldHVy
biBtX3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wczsgfQogICAgIHZvaWQgc2V0U2hvdWxkR2VuZXJh
dGVUaW1lc3RhbXBzKGJvb2wgZmxhZykgeyBtX3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9IGZs
YWc7IH0KIAotICAgIHZvaWQgcmFuZ2VSZW1vdmFsKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYpOwotCiAgICAgYm9vbCBpc0J1ZmZlcmVkRGlydHkoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcmVkRGlydHk7IH0KICAgICB2b2lkIHNldEJ1ZmZlcmVkRGlydHkoYm9vbCBmbGFnKSB7
IG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7IH0KIAogICAgIE1lZGlhVGltZSBoaWdoZXN0UHJlc2Vu
dGF0aW9uVGltZXN0YW1wKCkgY29uc3Q7CiAgICAgdm9pZCByZWFkeVN0YXRlQ2hhbmdlZCgpOwog
Ci0gICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KLSAgICBib29sIGhhc1BlbmRpbmdBY3Rpdml0
eSgpIGNvbnN0IG92ZXJyaWRlOwotCi1wcm90ZWN0ZWQ6Ci0gICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCi0gICAgdm9pZCByZWZFdmVudFRhcmdldCgpIG92ZXJyaWRlIHsgcmVmKCk7IH0KLSAg
ICB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBvdmVycmlkZSB7IGRlcmVmKCk7IH0KKyAgICBib29s
IGhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgogICAgIFNvdXJj
ZUJ1ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiwgTWVkaWFTb3VyY2UqKTsKIAotICAg
IC8vIEFjdGl2ZURPTU9iamVjdCBBUEkuCi0gICAgdm9pZCBzdG9wKCkgb3ZlcnJpZGU7Ci0gICAg
Y29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0IG92ZXJyaWRlOwotICAgIGJv
b2wgY2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgLy8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZSos
IGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIG92ZXJyaWRlOwotICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVTYW1wbGUoU291cmNlQnVmZmVyUHJpdmF0ZSosIE1lZGlh
U2FtcGxlJikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8o
Y29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZSopIGNvbnN0IG92ZXJyaWRlOwotICAgIGJvb2wgc291
cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGUqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRCZWNvbWVSZWFkeUZv
ck1vcmVTYW1wbGVzKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBBdG9taWNTdHJpbmcgdHJhY2tJRCkg
b3ZlcnJpZGU7Ci0gICAgTWVkaWFUaW1lIHNvdXJjZUJ1ZmZlclByaXZhdGVGYXN0U2Vla1RpbWVG
b3JNZWRpYVRpbWUoU291cmNlQnVmZmVyUHJpdmF0ZSosIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVU
aHJlc2hvbGQpIG92ZXJyaWRlOwotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENv
bXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBBcHBlbmRSZXN1bHQpIG92ZXJyaWRlOwotICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihTb3VyY2VC
dWZmZXJQcml2YXRlKiwgaW50IGVycm9yQ29kZSkgb3ZlcnJpZGU7Ci0KLSAgICAvLyBBdWRpb1Ry
YWNrQ2xpZW50Ci0gICAgdm9pZCBhdWRpb1RyYWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayop
IG92ZXJyaWRlOwotCi0gICAgLy8gVmlkZW9UcmFja0NsaWVudAotICAgIHZvaWQgdmlkZW9UcmFj
a1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrKikgb3ZlcnJpZGU7Ci0KLSAgICAvLyBUZXh0VHJh
Y2tDbGllbnQKLSAgICB2b2lkIHRleHRUcmFja0tpbmRDaGFuZ2VkKFRleHRUcmFjayopIG92ZXJy
aWRlOwotICAgIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRyYWNrKikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWVzKFRleHRUcmFjayosIGNvbnN0IFRleHRUcmFja0N1
ZUxpc3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHRleHRUcmFja1JlbW92ZUN1ZXMoVGV4dFRyYWNr
KiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4dFRyYWNr
QWRkQ3VlKFRleHRUcmFjayosIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdGV4
dFRyYWNrUmVtb3ZlQ3VlKFRleHRUcmFjayosIFRleHRUcmFja0N1ZSYpIG92ZXJyaWRlOworICAg
IHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5hbCB7IHJlZigpOyB9CisgICAgdm9pZCBkZXJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyBkZXJlZigpOyB9CisKKyAgICB2b2lkIHN0b3AoKSBmaW5hbDsK
KyAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QgZmluYWw7CisgICAg
Ym9vbCBjYW5TdXNwZW5kRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkgY29uc3QgZmluYWw7CisKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5h
bDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlU2FtcGxlKFNvdXJjZUJ1
ZmZlclByaXZhdGUqLCBNZWRpYVNhbXBsZSYpIGZpbmFsOworICAgIGJvb2wgc291cmNlQnVmZmVy
UHJpdmF0ZUhhc0F1ZGlvKGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGUqKSBjb25zdCBmaW5hbDsK
KyAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbyhjb25zdCBTb3VyY2VCdWZmZXJQ
cml2YXRlKikgY29uc3QgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkQmVj
b21lUmVhZHlGb3JNb3JlU2FtcGxlcyhTb3VyY2VCdWZmZXJQcml2YXRlKiwgQXRvbWljU3RyaW5n
IHRyYWNrSUQpIGZpbmFsOworICAgIE1lZGlhVGltZSBzb3VyY2VCdWZmZXJQcml2YXRlRmFzdFNl
ZWtUaW1lRm9yTWVkaWFUaW1lKFNvdXJjZUJ1ZmZlclByaXZhdGUqLCBjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmIG5lZ2F0aXZlVGhyZXNob2xkLCBjb25zdCBNZWRpYVRpbWUmIHBv
c2l0aXZlVGhyZXNob2xkKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlKiwgQXBwZW5kUmVzdWx0KSBmaW5hbDsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoU291cmNl
QnVmZmVyUHJpdmF0ZSosIGludCBlcnJvckNvZGUpIGZpbmFsOworCisgICAgdm9pZCBhdWRpb1Ry
YWNrRW5hYmxlZENoYW5nZWQoQXVkaW9UcmFjayopIGZpbmFsOworCisgICAgdm9pZCB2aWRlb1Ry
YWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2sqKSBmaW5hbDsKKworICAgIHZvaWQgdGV4dFRy
YWNrS2luZENoYW5nZWQoVGV4dFRyYWNrKikgZmluYWw7CisgICAgdm9pZCB0ZXh0VHJhY2tNb2Rl
Q2hhbmdlZChUZXh0VHJhY2sqKSBmaW5hbDsKKyAgICB2b2lkIHRleHRUcmFja0FkZEN1ZXMoVGV4
dFRyYWNrKiwgY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopIGZpbmFsOworICAgIHZvaWQgdGV4dFRy
YWNrUmVtb3ZlQ3VlcyhUZXh0VHJhY2sqLCBjb25zdCBUZXh0VHJhY2tDdWVMaXN0KikgZmluYWw7
CisgICAgdm9pZCB0ZXh0VHJhY2tBZGRDdWUoVGV4dFRyYWNrKiwgVGV4dFRyYWNrQ3VlJikgZmlu
YWw7CisgICAgdm9pZCB0ZXh0VHJhY2tSZW1vdmVDdWUoVGV4dFRyYWNrKiwgVGV4dFRyYWNrQ3Vl
JikgZmluYWw7CisKKyAgICBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFNvdXJjZUJ1ZmZlckV2ZW50VGFyZ2V0SW50ZXJmYWNl
VHlwZTsgfQogCiAgICAgYm9vbCBpc1JlbW92ZWQoKSBjb25zdDsKICAgICB2b2lkIHNjaGVkdWxl
RXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudE5hbWUpOwogCi0gICAgdm9pZCBhcHBlbmRC
dWZmZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFyKiwgdW5zaWduZWQsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBhcHBlbmRCdWZmZXJJbnRlcm5hbCh1bnNpZ25lZCBjaGFy
KiwgdW5zaWduZWQpOwogICAgIHZvaWQgYXBwZW5kQnVmZmVyVGltZXJGaXJlZCgpOwogICAgIHZv
aWQgcmVzZXRQYXJzZXJTdGF0ZSgpOwogCkBAIC0xOTIsNyArMTc0LDEyIEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycygpOwogCi0gICAgLy8gSW50
ZXJuYWxzCisgICAgdm9pZCBhcHBlbmRFcnJvcihib29sKTsKKworICAgIGJvb2wgaGFzQXVkaW8o
KSBjb25zdDsKKworICAgIHZvaWQgcmFuZ2VSZW1vdmFsKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYpOworCiAgICAgZnJpZW5kIGNsYXNzIEludGVybmFsczsKICAgICBXRUJDT1JF
X0VYUE9SVCBWZWN0b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0
b21pY1N0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGVucXVldWVk
U2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbWljU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5pZGwKaW5kZXggZTQ1Yjdj
MzdlMDU3MzgxM2M3ZmRiMzljOTE2NzcyMzIzYTA4YTAxMy4uY2ZmMWJiNWFjZTllOTk3Y2VjNTEz
NjBmZGE4NzRlM2UwZjBiODAyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmlkbApAQCAtMzgsMzIgKzM4LDMxIEBACiAgICAgQ29u
ZGl0aW9uYWw9TUVESUFfU09VUkNFLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAog
XSBpbnRlcmZhY2UgU291cmNlQnVmZmVyIDogRXZlbnRUYXJnZXQgewotCi0gICAgW1NldHRlck1h
eVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgQXBwZW5kTW9kZSBtb2RlOworICAgIFtT
ZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRlIEFwcGVuZE1vZGUgbW9kZTsKIAogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHVwZGF0aW5nOwogICAKICAgICAvLyBSZXR1cm5z
IHRoZSB0aW1lIHJhbmdlcyBidWZmZXJlZC4KLSAgICBbR2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNl
cHRpb25dIHJlYWRvbmx5IGF0dHJpYnV0ZSBUaW1lUmFuZ2VzIGJ1ZmZlcmVkOworICAgIFtHZXR0
ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gcmVhZG9ubHkgYXR0cmlidXRlIFRpbWVSYW5nZXMgYnVmZmVy
ZWQ7CiAKICAgICAvLyBBcHBsaWVzIGFuIG9mZnNldCB0byBtZWRpYSBzZWdtZW50IHRpbWVzdGFt
cHMuCi0gICAgW1NldHRlck1heVRocm93TGVnYWN5RXhjZXB0aW9uXSBhdHRyaWJ1dGUgZG91Ymxl
IHRpbWVzdGFtcE9mZnNldDsKKyAgICBbU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0
ZSBkb3VibGUgdGltZXN0YW1wT2Zmc2V0OwogCiAgICAgLy8gVHJhY2sgc3VwcG9ydAogICAgIFtD
b25kaXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIEF1ZGlvVHJhY2tMaXN0
IGF1ZGlvVHJhY2tzOwogICAgIFtDb25kaXRpb25hbD1WSURFT19UUkFDS10gcmVhZG9ubHkgYXR0
cmlidXRlIFZpZGVvVHJhY2tMaXN0IHZpZGVvVHJhY2tzOwogICAgIFtDb25kaXRpb25hbD1WSURF
T19UUkFDS10gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFja0xpc3QgdGV4dFRyYWNrczsKIAot
ICAgIFtTZXR0ZXJNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gYXR0cmlidXRlIGRvdWJsZSBhcHBl
bmRXaW5kb3dTdGFydDsKLSAgICBbU2V0dGVyTWF5VGhyb3dMZWdhY3lFeGNlcHRpb25dIGF0dHJp
YnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIGFwcGVuZFdpbmRvd0VuZDsKKyAgICBbU2V0dGVyTWF5
VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBkb3VibGUgYXBwZW5kV2luZG93U3RhcnQ7CisgICAg
W1NldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSBh
cHBlbmRXaW5kb3dFbmQ7CiAKICAgICAvLyBBcHBlbmQgc2VnbWVudCBkYXRhLgotICAgIFtNYXlU
aHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCBhcHBlbmRCdWZmZXIoQXJyYXlCdWZmZXIgZGF0YSk7
Ci0gICAgW01heVRocm93TGVnYWN5RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZlcihBcnJheUJ1
ZmZlclZpZXcgZGF0YSk7CisgICAgW01heVRocm93RXhjZXB0aW9uXSB2b2lkIGFwcGVuZEJ1ZmZl
cihBcnJheUJ1ZmZlciBkYXRhKTsKKyAgICBbTWF5VGhyb3dFeGNlcHRpb25dIHZvaWQgYXBwZW5k
QnVmZmVyKEFycmF5QnVmZmVyVmlldyBkYXRhKTsKIAogICAgIC8vIEFib3J0IHRoZSBjdXJyZW50
IHNlZ21lbnQgYXBwZW5kIHNlcXVlbmNlLgotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0g
dm9pZCBhYm9ydCgpOwotICAgIFtNYXlUaHJvd0xlZ2FjeUV4Y2VwdGlvbl0gdm9pZCByZW1vdmUo
dW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRvdWJsZSBlbmQpOworICAg
IFtNYXlUaHJvd0V4Y2VwdGlvbl0gdm9pZCBhYm9ydCgpOworICAgIFtNYXlUaHJvd0V4Y2VwdGlv
bl0gdm9pZCByZW1vdmUodW5yZXN0cmljdGVkIGRvdWJsZSBzdGFydCwgdW5yZXN0cmljdGVkIGRv
dWJsZSBlbmQpOwogCiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbnVwZGF0ZXN0YXJ0Owog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb251cGRhdGU7CkBAIC03MSw0ICs3MCwzIEBACiAg
ICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVycm9yOwogICAgIGF0dHJpYnV0ZSBFdmVudEhh
bmRsZXIgb25hYm9ydDsKIH07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNlR1N0
cmVhbWVyLmgKaW5kZXggMjM0YTA4Y2ZlM2U4MDI2NDU3ZDgzODFiYTA2MTRkMzc2MTRmZDAxOS4u
YzBlZmZjMTBmZmRjYzJkYTQ3YTYzYjhlMGQ2Y2U4ZDE0OTc5MjZmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdE1lZGlhU291cmNl
R1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmgKQEAgLTE5LDEzICsxOSwxNCBAQAogICog
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rv
biwgTUEgIDAyMTEwLTEzMDEgIFVTQQogICovCiAKLSNpZm5kZWYgV2ViS2l0TWVkaWFTb3VyY2VH
U3RyZWFtZXJfaAotI2RlZmluZSBXZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lcl9oCisjcHJhZ21h
IG9uY2UKKwogI2lmIEVOQUJMRShWSURFTykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkgJiYgVVNF
KEdTVFJFQU1FUikKIAogI2luY2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJN
ZWRpYVBsYXllci5oIgogI2luY2x1ZGUgIk1lZGlhU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFT
b3VyY2VQcml2YXRlLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZS5oIgogI2luY2x1
ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCIKIApAQCAtODgsNCArODksMyBAQCBjbGFz
cyBNZWRpYVNvdXJjZUNsaWVudEdTdHJlYW1lcjogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTb3Vy
Y2VDbGllbnRHU3RyZWFtZXI+CiB9OwogCiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKLSNlbmRp
Zgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>