<?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>217665</bug_id>
          
          <creation_ts>2020-10-13 13:02:33 -0700</creation_ts>
          <short_desc>Remove ResourceLoadStatistics telemetry</short_desc>
          <delta_ts>2020-10-14 08:29:02 -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>WebKit Misc.</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1697350</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 13:02:33 -0700</bug_when>
    <thetext>Telemetry calculation in ITP is unused, very complicated, a potential privacy risk, and it causes flaky tests. We should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697351</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 13:02:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/69748988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697356</commentid>
    <comment_count>2</comment_count>
      <attachid>411241</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 13:08:54 -0700</bug_when>
    <thetext>Created attachment 411241
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697362</commentid>
    <comment_count>3</comment_count>
      <attachid>411244</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 13:19:35 -0700</bug_when>
    <thetext>Created attachment 411244
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697455</commentid>
    <comment_count>4</comment_count>
      <attachid>411269</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 15:28:24 -0700</bug_when>
    <thetext>Created attachment 411269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697464</commentid>
    <comment_count>5</comment_count>
      <attachid>411272</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-10-13 15:42:07 -0700</bug_when>
    <thetext>Created attachment 411272
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1697720</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-14 08:29:00 -0700</bug_when>
    <thetext>Committed r268458: &lt;https://trac.webkit.org/changeset/268458&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 411272.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411241</attachid>
            <date>2020-10-13 13:08:54 -0700</date>
            <delta_ts>2020-10-13 13:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217665-20201013130853.patch</filename>
            <type>text/plain</type>
            <size>85791</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzOTAzMDNmZDAxNTFiZjU3
ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjllMDljMzc2MzI3Njk1NTI4ZDAyNWIxMThiOGEyMGVm
MDJiOGZlNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzAgQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4
OTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
bGVtZXRyeSBjYWxjdWxhdGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBh
IHBvdGVudGlhbAorICAgICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVz
dHMuIFdlIHNob3VsZCByZW1vdmUgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGlu
ZyBJVFAgdGVzdHMgd2lsbCBjaGVjayBmb3Igbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Om1ha2VNZWRpYW5XaXRoVUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkUXVlcnlTdGFydEFuZEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1h
a2VNZWRpYW5XaXRob3V0VUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdldE1l
ZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJj
ZURheXNTaW5jZVVJIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2V0TWVkaWFu
T2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVzb3VyY2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bWFrZVN0YXRpc3RpY1F1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNh
bGN1bGF0ZVRlbGVtZXRyeURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
aG91bGRTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYu
Y3BwOgorICAgICAgICAoV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRy
eSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9y
ZVJlZi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdWJtaXRUZWxlbWV0cnkp
OiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQpOiBEZWxl
dGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYnNpdGVEYXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaDoKKyAgICAgICAgKiBX
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0xMC0xMyAgS2ltbW8gS2lu
bnVuZW4gIDxra2lubnVuZW5AYXBwbGUuY29tPgogCiAgICAgICAgIENvY29hOiBNYWtlIFdlYkdM
TGF5ZXIgbm90IGRlcGVuZGVudCBvbiAgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCmluZGV4
IGVmZTBjMDA1YWVkMjkxZGQzZTU2ZDkyNTRkNWUxZTdhOGQ0NTM4OTUuLjRlN2M2MDk5ZWQwMmVj
Y2UyZGQwNmExZGRiZjM3MWY1YTA0Y2JkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2lu
Y2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIgogI2luY2x1ZGUgIlN0
b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNs
dWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9yYWdlQWNjZXNzLmg+CkBAIC0yMzQsOCAr
MjMzLDYgQEAgY29uc3RleHByIGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1
ZVJlZGlyZWN0c1RvID0gIkNSRUFURSBVTklRVUUgSU4KIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVu
aXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tID0gIkNSRUFURSBVTklRVUUg
SU5ERVggSUYgTk9UIEVYSVNUUyBTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb21fc3VicmVz
b3VyY2VEb21haW5JRF9mcm9tRG9tYWluSUQgb24gU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lRG9t
YWlucyAoIHN1YnJlc291cmNlRG9tYWluSUQsIGZyb21Eb21haW5JRCApOyJfczsKIGNvbnN0ZXhw
ciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4T3BlcmF0aW5nRGF0ZXMgPSAiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIE9wZXJhdGluZ0RhdGVzX3llYXJfbW9udGhfbW9udGhEYXkgb24g
T3BlcmF0aW5nRGF0ZXMgKCB5ZWFyLCBtb250aCwgbW9udGhEYXkgKTsiX3M7CiAKLWNvbnN0IHVu
c2lnbmVkIG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxlbWV0cnkgPSAzOwotCiBzdGF0
aWMgY29uc3QgU3RyaW5nIE9ic2VydmVkRG9tYWluc1RhYmxlU2NoZW1hVjEoKQogewogICAgIHJl
dHVybiBjcmVhdGVPYnNlcnZlZERvbWFpbjsKQEAgLTI5NiwxMSArMjkzLDYgQEAgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlKFdlYlJlc28KICAgICBpZiAoIW1fZGF0YWJhc2UudHVybk9uSW5jcmVtZW50YWxBdXRv
VmFjdXVtKCkpCiAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICIlcCAtIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp0dXJuT25JbmNyZW1lbnRhbEF1dG9WYWN1
dW0gZmFpbGVkLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgdGhpcywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7CiAKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2hBZnRlcig1
X3MsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewotICAgICAgICBpZiAod2Vha1Ro
aXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCk7
Ci0gICAgfSk7Ci0KICAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgp
OwogICAgIGFsbFN0b3JlcygpLmFkZCh0aGlzKTsKIH0KQEAgLTk0MiwxMSArOTM0LDYgQEAgc3Rh
dGljIGNvbnN0IFN0cmluZ1ZpZXcgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCkKICAgICAg
ICAgIkdST1VQIEJZIGRvbWFpbklEKSBPUkRFUiBCWSBzdW0gREVTQyAiOwogfQogCi1zdGF0aWMg
U1FMaXRlU3RhdGVtZW50IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhc2UpCi17Ci0gICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudChkYXRhYmFzZSwgbWFrZVN0cmlu
ZygiU0VMRUNUIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIEZST00gT2JzZXJ2ZWREb21h
aW5zIElOTkVSIEpPSU4gKFNFTEVDVCAiLCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSwg
IikgYXMgcSBPTiBPYnNlcnZlZERvbWFpbnMuZG9tYWluSUQgPSBxLmRvbWFpbklEIExJTUlUIDEg
T0ZGU0VUID8iKSk7Ci19Ci0KIFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6
OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlE
b21haW5zKHVuc2lnbmVkIHRoaXJkUGFydHlEb21haW5JRCwgY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRoaXJkUGFydHlEb21haW4pIGNvbnN0CiB7CiAgICAgYXV0byBzY29wZWRTdGF0ZW1lbnQg
PSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9nZXRBbGxTdWJTdGF0aXN0aWNzU3RhdGVtZW50LCBn
ZXRBbGxTdWJTdGF0aXN0aWNzVW5kZXJEb21haW5RdWVyeSwgImdldFRoaXJkUGFydHlEYXRhRm9y
U3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyJfcyk7CkBAIC05OTQsMjY2ICs5ODEsNiBAQCBWZWN0
b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdAogICAgIHJldHVybiB0aGlyZFBhcnR5RGF0YUxpc3Q7CiB9CiAK
LXN0YXRpYyBzdGQ6OnBhaXI8U3RyaW5nVmlldywgU3RyaW5nVmlldz4gYnVpbGRRdWVyeVN0YXJ0
QW5kRW5kKFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYyBzdGF0
aXN0aWMpCi17Ci0gICAgc3dpdGNoIChzdGF0aXN0aWMpIHsKLSAgICBjYXNlIFByZXZhbGVudFJl
c291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuU3ViRnJhbWVXaXRob3V0
VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIGNvdW50U3ViRnJhbWVV
bmRlclRvcEZyYW1lIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgY291
bnRTdWJGcmFtZVVuZGVyVG9wRnJhbWUsICIsICIpIGFzIHEgT04gby5kb21haW5JRCA9IHEuZG9t
YWluSUQgTElNSVQgMSBPRkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRh
YmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSToKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgY291bnRTdWJSZXNvdXJjZVVuZGVy
VG9wRnJhbWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCBjb3VudFN1
YlJlc291cmNlVW5kZXJUb3BGcmFtZSwgIiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5kb21h
aW5JRCBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFi
YXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSToK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgY291bnRVbmlxdWVSZWRpcmVj
dFRvIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgY291bnRVbmlxdWVS
ZWRpcmVjdFRvLCAiLCAiKSBhcyBxIE9OIG8uZG9tYWluSUQgPSBxLmRvbWFpbklEIExJTUlUIDEg
T0ZGU0VUID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6
OlN0YXRpc3RpYzo6TWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJOgotICAgICAgICBy
ZXR1cm4gc3RkOjptYWtlX3BhaXIoIlNFTEVDVCBkYXRhUmVjb3Jkc1JlbW92ZWQgRlJPTSAoU0VM
RUNUICogRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCAiLCAiKSBhcyBx
IE9OIG8uZG9tYWluSUQgPSBxLmRvbWFpbklEKSBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2Fz
ZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblRp
bWVzQWNjZXNzZWREdWVUb1VzZXJJbnRlcmFjdGlvbldpdGhvdXRVSToKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNl
ckludGVyYWN0aW9uIEZST00gKFNFTEVDVCAqIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIg
Sk9JTihTRUxFQ1QgIiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5kb21haW5JRCkgTElNSVQg
MSBPRkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRy
eTo6U3RhdGlzdGljOjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9TdG9yYWdlQWNjZXNzQVBJV2l0
aG91dFVJOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoIlNFTEVDVCB0aW1lc0FjY2Vz
c2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIEZST00gKFNFTEVDVCAqIEZST00g
T2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgIiwgIikgYXMgcSBPTiBvLmRvbWFp
bklEID0gcS5kb21haW5JRCkgTElNSVQgMSBPRkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50
UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpOdW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVSToKLSAgICAgICAgTE9HX0VSUk9SKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6bWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5IHdhcyBjYWxsZWQgZm9yIGFu
IGluY29ycmVjdCBzdGF0aXN0aWMsIHVuZGV0ZXJtaW5lZCBxdWVyeSBiZWhhdmlvciB3aWxsIHJl
c3VsdC4iKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0g
ICAgcmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0
aG91dFVJUXVlcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCBQcmV2YWxlbnRSZXNvdXJjZURh
dGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWMgc3RhdGlzdGljKQotewotICAgIGF1dG9bcXVlcnlT
dGFydCwgcXVlcnlFbmRdID0gYnVpbGRRdWVyeVN0YXJ0QW5kRW5kKHN0YXRpc3RpYyk7Ci0KLSAg
ICByZXR1cm4gU1FMaXRlU3RhdGVtZW50KGRhdGFiYXNlLCBtYWtlU3RyaW5nKHF1ZXJ5U3RhcnQs
IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpLCBxdWVyeUVuZCkpOwotfQotCi1zdGF0aWMg
dW5zaWduZWQgZ2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgdW5zaWduZWQgcHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbkNvdW50KQotewotICAgIFNRTGl0ZVN0YXRlbWVudCBtZWRpYW5EYXlz
U2luY2VVSVN0YXRlbWVudCA9IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShkYXRhYmFzZSk7Ci0KLSAg
ICAvLyBQcmVwYXJlCi0gICAgaWYgKG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LnByZXBhcmUo
KSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNZWRpYW5PZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBCaW5kCi0gICAgaWYg
KG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LIHx8
IG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQoMiwgMSkgIT0gU1FMSVRFX09LIHx8
IG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQoMywgKHByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb25Db3VudCAvIDIpICE9IFNRTElURV9PSykpIHsKLSAgICAgICAg
UkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpnZXRNZWRpYW5PZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24s
IGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBkYXRhYmFzZS5sYXN0RXJyb3JN
c2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
LSAgICB9Ci0KLSAgICAvLyBTdGVwCi0gICAgaWYgKG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50
LnN0ZXAoKSAhPSBTUUxJVEVfUk9XKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGRvdWJsZSBy
YXdTZWNvbmRzID0gbWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKDAp
OwotICAgIFdhbGxUaW1lIHdhbGxUaW1lID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHJhd1Nl
Y29uZHMpOwotICAgIHVuc2lnbmVkIG1lZGlhbiA9IHdhbGxUaW1lIDw9IFdhbGxUaW1lKCkgPyAw
IDogc3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gd2FsbFRpbWUpIC8gMjRfaCk7Ci0KLSAg
ICBpZiAocHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbkNvdW50ICYgMSkKLSAg
ICAgICAgcmV0dXJuIG1lZGlhbjsKLQotICAgIFNRTGl0ZVN0YXRlbWVudCBsb3dlck1lZGlhbkRh
eXNTaW5jZVVJU3RhdGVtZW50ID0gbWFrZU1lZGlhbldpdGhVSVF1ZXJ5KGRhdGFiYXNlKTsKLQot
ICAgIC8vIFByZXBhcmUKLSAgICBpZiAobG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5w
cmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJM
SUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gQmluZAot
ICAgIGlmIChsb3dlck1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQoMSwgMSkgIT0g
U1FMSVRFX09LIHx8IGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgyLCAx
KSAhPSBTUUxJVEVfT0sgfHwgbG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50
KDMsICgocHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbkNvdW50IC0gMSkgLyAy
KSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9H
X1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gU3RlcAotICAgIGlm
IChsb3dlck1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7
Ci0gICAgICAgIGRvdWJsZSByYXdTZWNvbmRzTG93ZXIgPSBsb3dlck1lZGlhbkRheXNTaW5jZVVJ
U3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgwKTsKLSAgICAgICAgV2FsbFRpbWUgd2FsbFRpbWVM
b3dlciA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhyYXdTZWNvbmRzTG93ZXIpOwotICAgICAg
ICByZXR1cm4gKCh3YWxsVGltZUxvd2VyIDw9IFdhbGxUaW1lKCkgPyAwIDogc3RkOjpmbG9vcigo
V2FsbFRpbWU6Om5vdygpIC0gd2FsbFRpbWVMb3dlcikgLyAyNF9oKSkgKyBtZWRpYW4pIC8gMjsK
LSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcygpIGNvbnN0Ci17
Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1N0YXRlbWVudCwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNRdWVy
eSwgImdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIl9zKTsKLSAgICBpZiAoIXNjb3BlZFN0
YXRlbWVudCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgYXV0byBzdGVwVmFsdWUgPSBz
Y29wZWRTdGF0ZW1lbnQtPnN0ZXAoKTsKLSAgICBpZiAoc3RlcFZhbHVlICE9IFNRTElURV9ST1cg
JiYgc3RlcFZhbHVlICE9IFNRTElURV9ET05FKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXMgZmFpbGVkIHRvIHN0ZXAsIGVycm9yIG1lc3NhZ2U6ICUiIFBV
QkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoc3Rl
cFZhbHVlID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgdW5zaWduZWQgcHJldmFsZW50UmVzb3Vy
Y2VDb3VudCA9IHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwotICAgICAgICBpZiAo
cHJldmFsZW50UmVzb3VyY2VDb3VudCA+PSBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVs
ZW1ldHJ5KQotICAgICAgICAgICAgcmV0dXJuIHByZXZhbGVudFJlc291cmNlQ291bnQ7Ci0gICAg
fQotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkoKSBjb25zdAot
ewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY291
bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBjb3VudFBy
ZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25RdWVyeSwgImdldE51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVJIl9zKTsKLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50ICYmIHNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50
ID0gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIHJldHVybiBjb3Vu
dDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJjZURheXNTaW5jZVVJKCkg
Y29uc3QKLXsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNl
ckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50KG1fZGF0YWJhc2Us
IG1ha2VTdHJpbmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9i
c2VydmVkRG9tYWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JT
b3J0aW5nKCksICIgTElNSVQgMSkgYXMgcSBPTiBPYnNlcnZlZERvbWFpbnMuZG9tYWluSUQgPSBx
LmRvbWFpbklEOyIpKTsKLSAgICAKLSAgICAvLyBQcmVwYXJlCi0gICAgaWYgKHRvcFByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dG9wUHJldmFs
ZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50IHF1ZXJ5IGZhaWxlZCB0byBwcmVwYXJlLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNf
TE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgLy8gQmlu
ZAotICAgIGlmICh0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAg
ICAgICAgfHwgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRJbnQoMiwgMSkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6dG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50IHF1ZXJ5IGZhaWxlZCB0byBiaW5kLCBlcnJv
ciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAg
ICB9Ci0gICAgCi0gICAgLy8gU3RlcAotICAgIGlmICh0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuc3RlcCgpID09
IFNRTElURV9ST1cpIHsKLSAgICAgICAgZG91YmxlIHJhd1NlY29uZHMgPSB0b3BQcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1l
bnQuZ2V0Q29sdW1uRG91YmxlKDApOwotICAgICAgICBXYWxsVGltZSB3YWxsVGltZSA9IFdhbGxU
aW1lOjpmcm9tUmF3U2Vjb25kcyhyYXdTZWNvbmRzKTsKLSAgICAgICAgcmV0dXJuIHdhbGxUaW1l
IDw9IFdhbGxUaW1lKCkgPyAwIDogc3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gd2FsbFRp
bWUpIC8gMjRfaCk7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdW5zaWduZWQg
Z2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rpb24oU1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlLCB1bnNpZ25lZCBidWNrZXRTaXplLCBQcmV2YWxlbnRSZXNvdXJj
ZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWMgc3RhdGlzdGljLCB1bnNpZ25lZCBudW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVSSkKLXsKLSAgICBpZiAobnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VUkgPCBidWNrZXRTaXplKQotICAgICAgICByZXR1cm4gMDsKLQot
ICAgIHVuc2lnbmVkIG1lZGlhbiA9IDA7Ci0gICAgU1FMaXRlU3RhdGVtZW50IGdldE1lZGlhblN0
YXRpc3RpYyA9IG1ha2VNZWRpYW5XaXRob3V0VUlRdWVyeShkYXRhYmFzZSwgc3RhdGlzdGljKTsK
LQotICAgIGlmIChnZXRNZWRpYW5TdGF0aXN0aWMucHJlcGFyZSgpID09IFNRTElURV9PSykgewot
ICAgICAgICBpZiAoZ2V0TWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09L
Ci0gICAgICAgICAgICB8fCBnZXRNZWRpYW5TdGF0aXN0aWMuYmluZEludCgyLCAwKSAhPSBTUUxJ
VEVfT0sKLSAgICAgICAgICAgIHx8IGdldE1lZGlhblN0YXRpc3RpYy5iaW5kSW50KDMsIChidWNr
ZXRTaXplIC8gMikpICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYWtlTWVk
aWFuV2l0aG91dFVJUXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBk
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChnZXRNZWRp
YW5TdGF0aXN0aWMuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICBtZWRpYW4gPSBn
ZXRNZWRpYW5TdGF0aXN0aWMuZ2V0Q29sdW1uRG91YmxlKDApOwotICAgIH0KLQotICAgIGlmIChi
dWNrZXRTaXplICYgMSkKLSAgICAgICAgcmV0dXJuIG1lZGlhbjsKLQotICAgIFNRTGl0ZVN0YXRl
bWVudCBnZXRMb3dlck1lZGlhblN0YXRpc3RpYyA9IG1ha2VNZWRpYW5XaXRob3V0VUlRdWVyeShk
YXRhYmFzZSwgc3RhdGlzdGljKTsKLQotICAgIGlmIChnZXRMb3dlck1lZGlhblN0YXRpc3RpYy5w
cmVwYXJlKCkgPT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIGlmIChnZXRMb3dlck1lZGlhblN0YXRp
c3RpYy5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgZ2V0TG93ZXJN
ZWRpYW5TdGF0aXN0aWMuYmluZEludCgyLCAwKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IGdldExvd2VyTWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMiwgKChidWNrZXRTaXplLTEpIC8gMikp
ICE9IFNRTElURV9PSykgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywg
IlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjptYWtlTWVkaWFuV2l0aG91dFVJ
UXVlcnksIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBkYXRhYmFzZS5sYXN0
RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
ICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChnZXRMb3dlck1lZGlhblN0YXRp
c3RpYy5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgIHJldHVybiAoZ2V0TG93ZXJN
ZWRpYW5TdGF0aXN0aWMuZ2V0Q29sdW1uRG91YmxlKDApICsgbWVkaWFuKSAvIDI7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc0luVG9wUmVzb3VyY2VzKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgdW5zaWdu
ZWQgYnVja2V0U2l6ZSkKLXsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgcHJldmFsZW50UmVzb3VyY2VD
b3VudEluVG9wKGRhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgQ09VTlQoKikgRlJPTSAoU0VM
RUNUICogRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCAiLCBqb2luU3Vi
U3RhdGlzdGljc0ZvclNvcnRpbmcoKSwgIikgYXMgcSBvbiBxLmRvbWFpbklEID0gby5kb21haW5J
RCBMSU1JVCA/KSBhcyBwIFdIRVJFIHAuaGFkVXNlckludGVyYWN0aW9uID0gMTsiKSk7Ci0KLSAg
ICBpZiAocHJldmFsZW50UmVzb3VyY2VDb3VudEluVG9wLnByZXBhcmUoKSA9PSBTUUxJVEVfT0sp
IHsKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291bnRJblRvcC5iaW5kSW50KDEsIDEp
ICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgcHJldmFsZW50UmVzb3VyY2VDb3VudEluVG9w
LmJpbmRUZXh0KDIsICIlIikgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBwcmV2YWxlbnRS
ZXNvdXJjZUNvdW50SW5Ub3AuYmluZEludCgzLCBidWNrZXRTaXplKSAhPSBTUUxJVEVfT0spIHsK
LSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNJblRvcFJl
c291cmNlcywgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJldmFsZW50UmVzb3Vy
Y2VDb3VudEluVG9wLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgcmV0dXJuIHBy
ZXZhbGVudFJlc291cmNlQ291bnRJblRvcC5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBtYWtlU3RhdGlzdGljUXVlcnkoU1FMaXRl
RGF0YWJhc2UmIGRhdGFiYXNlLCBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpT
dGF0aXN0aWMgc3RhdGlzdGljLCBpbnQgYnVja2V0U2l6ZSwgdW5zaWduZWQgdG90YWxXaXRoVUks
IHVuc2lnbmVkIHRvdGFsV2l0aG91dFVJKQotewotICAgIHN3aXRjaCAoc3RhdGlzdGljKSB7Ci0g
ICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJOgotICAgICAgICByZXR1cm4gZ2V0TnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNJblRvcFJlc291cmNlcyhkYXRhYmFzZSwgYnVja2V0U2l6ZSk7
Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6
Ok1lZGlhblN1YkZyYW1lV2l0aG91dFVJOgotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRh
YmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSToKLSAg
ICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVk
aWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJOgotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VE
YXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRo
b3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0
aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1VzZXJJbnRlcmFjdGlvbldpdGhvdXRVSToK
LSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6
TWVkaWFuVGltZXNBY2Nlc3NlZER1ZVRvU3RvcmFnZUFjY2Vzc0FQSVdpdGhvdXRVSToKLSAgICAg
ICAgcmV0dXJuIGdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VXaXRob3V0VXNlckludGVyYWN0
aW9uKGRhdGFiYXNlLCBidWNrZXRTaXplLCBzdGF0aXN0aWMsIHRvdGFsV2l0aG91dFVJKTsKLSAg
ICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXVuc2ln
bmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVSSgpIGNvbnN0Ci17Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1l
bnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
b3V0VUkiX3MpOwotICAgIGlmIChzY29wZWRTdGF0ZW1lbnQgJiYgc2NvcGVkU3RhdGVtZW50LT5z
dGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgY291bnQgPSBtX2NvdW50UHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC0+Z2V0Q29sdW1uSW50
KDApOwotICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi12
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpjYWxjdWxhdGVUZWxlbWV0
cnlEYXRhKFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkmIGRhdGEpIGNvbnN0Ci17
Ci0gICAgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlcyA9IGdldE51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzKCk7Ci0gICAgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhV
c2VySW50ZXJhY3Rpb24gPSBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgpOwot
ICAgIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
ID0gZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkoKTsKLSAgICBkYXRhLnRv
cFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbiA9IGdldFRvcFByZXZlbGVudFJlc291cmNlRGF5c1NpbmNlVUkoKTsKLSAgICBkYXRhLm1l
ZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRl
cmFjdGlvbiA9IGdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
bihtX2RhdGFiYXNlLCBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbik7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGJ1Y2tldEluZGV4ID0gMDsgYnVja2V0SW5k
ZXggPCBidWNrZXRTaXplcy5zaXplKCk7IGJ1Y2tldEluZGV4KyspIHsKLSAgICAgICAgdW5zaWdu
ZWQgYnVja2V0U2l6ZSA9IGJ1Y2tldFNpemVzW2J1Y2tldEluZGV4XTsKLQotICAgICAgICBpZiAo
ZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPCBi
dWNrZXRTaXplKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAodW5zaWduZWQg
c3RhdGlzdGljSW5kZXggPSAwOyBzdGF0aXN0aWNJbmRleCA8IG51bWJlck9mU3RhdGlzdGljczsg
c3RhdGlzdGljSW5kZXgrKykgewotICAgICAgICAgICAgYXV0byBzdGF0aXN0aWMgPSBzdGF0aWNf
Y2FzdDxQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM+KHN0YXRp
c3RpY0luZGV4KTsKLSAgICAgICAgICAgIGRhdGEuc3RhdGlzdGljc1tzdGF0aXN0aWNJbmRleF1b
YnVja2V0SW5kZXhdID0gbWFrZVN0YXRpc3RpY1F1ZXJ5KG1fZGF0YWJhc2UsIHN0YXRpc3RpYywg
YnVja2V0U2l6ZSwgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0
aW9uKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KE5vdGlmeVBhZ2VzRm9y
VGVzdGluZyBzaG91bGROb3RpZnlQYWdlc0ZvclRlc3RpbmcpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBpZiAocGFyYW1ldGVycygpLnNob3VsZFN1Ym1p
dFRlbGVtZXRyeSkgewotICAgICAgICBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5
IHByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk7Ci0gICAgICAgIGNhbGN1bGF0ZVRl
bGVtZXRyeURhdGEocHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSk7Ci0gICAgICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnN1Ym1pdFRlbGVtZXRyeSgqdGhp
cywgcHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSwgc2hvdWxkTm90aWZ5UGFnZXNG
b3JUZXN0aW5nKTsKLSAgICB9Ci19Ci0KIHN0YXRpYyBTdHJpbmcgZG9tYWluc1RvU3RyaW5nKGNv
bnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBkb21haW5zKQogewogICAgIFN0cmluZ0J1
aWxkZXIgYnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmgKaW5kZXggYTJjNWE1MjViZDc0NzNlMGM0Yzg0ZjY3YTQ1YmY2MTBiMzFh
NjI2NS4uZDU1NTIzN2JkZDEyY2RjZGJkMTNjYzExYTBlZjRkNmQ3OTEyYzIwOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTUy
LDI4ICs1Miw2IEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mQnVja2V0c1BlclN0
YXRpc3RpYyA9IDU7CiBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZlN0YXRpc3RpY3Mg
PSA3Owogc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tl
dHNQZXJTdGF0aXN0aWM+IGJ1Y2tldFNpemVzIHt7IDEsIDMsIDEwLCA1MCwgMTAwIH19OwogCi1z
dHJ1Y3QgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSB7Ci0gICAgdXNpbmcgQnVj
a2V0cyA9IHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1BlclN0YXRpc3RpYz47
Ci0KLSAgICBlbnVtIGNsYXNzIFN0YXRpc3RpYyB7Ci0gICAgICAgIE51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVJLAotICAgICAgICBNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwKLSAgICAg
ICAgTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksCi0gICAgICAgIE1lZGlhblVuaXF1ZVJlZGly
ZWN0c1dpdGhvdXRVSSwKLSAgICAgICAgTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJ
LAotICAgICAgICBNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9Vc2VySW50ZXJhY3Rpb25XaXRob3V0
VUksCi0gICAgICAgIE1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1N0b3JhZ2VBY2Nlc3NBUElXaXRo
b3V0VUkKLSAgICB9OwotCi0gICAgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXM7
Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uOwotICAgIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50
ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgbWVkaWFuRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9u
OwotCi0gICAgc3RkOjphcnJheTxCdWNrZXRzLCBudW1iZXJPZlN0YXRpc3RpY3M+IHN0YXRpc3Rp
Y3M7Ci19OwotCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7CiAKIC8v
IFRoaXMgaXMgYWx3YXlzIGNvbnN0cnVjdGVkIC8gdXNlZCAvIGRlc3Ryb3llZCBvbiB0aGUgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJ3Mgc3RhdGlzdGljcyBxdWV1ZS4KQEAgLTEyMSw4
ICs5OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhj
b25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0RG9tYWluJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IFJlZGlyZWN0RG9tYWluJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0
ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0ZvclRlc3RpbmcgPSBOb3RpZnlQYWdlc0Zv
clRlc3Rpbmc6Ok5vKSBjb25zdCBvdmVycmlkZTsKLQogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vz
cyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8
V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVxdWVzdFN0
b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6
RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFn
ZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0b3JhZ2VBY2Nlc3NTdGF0dXMp
PiYmKSBvdmVycmlkZTsKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2VzcyhTdWJGcmFtZURvbWFp
biYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzUHJvbXB0V2FzU2hvd24sIFdl
YkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3Jl
OjpTdG9yYWdlQWNjZXNzV2FzR3JhbnRlZCk+JiYpIG92ZXJyaWRlOwpAQCAtMTcxLDEzICsxNDcs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgbWVyZ2VTdGF0aXN0aWMoY29uc3QgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyYpOwogICAgIHZvaWQgbWVyZ2UoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50Kiwg
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgY2xlYXJEYXRhYmFzZUNv
bnRlbnRzKCk7Ci0gICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMoKSBj
b25zdDsKLSAgICB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgp
IGNvbnN0OwotICAgIHVuc2lnbmVkIGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVJKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZ2V0VG9wUHJldmVsZW50UmVzb3VyY2VEYXlzU2lu
Y2VVSSgpIGNvbnN0OwotICAgIHZvaWQgcmVzZXRUZWxlbWV0cnlQcmVwYXJlZFN0YXRlbWVudHMo
KSBjb25zdDsKLSAgICB2b2lkIHJlc2V0VGVsZW1ldHJ5U3RhdGVtZW50cygpIGNvbnN0OwotICAg
IHZvaWQgY2FsY3VsYXRlVGVsZW1ldHJ5RGF0YShQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVs
ZW1ldHJ5JikgY29uc3Q7CiAgICAgYm9vbCBpbnNlcnRPYnNlcnZlZERvbWFpbihjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzJikgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQgaW5zZXJ0
RG9tYWluUmVsYXRpb25zaGlwcyhjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAg
dm9pZCBpbnNlcnREb21haW5SZWxhdGlvbnNoaXBMaXN0KGNvbnN0IFN0cmluZyYsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiwgdW5zaWduZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAppbmRleCA1MzlmNTMxZWEwNzhm
YmJkYzEwOGUyZTVlOTdlMWNjNmQ1M2QxYjFmLi5lNDQ1NjAzNWUxODJhYWViNGFkZTJiODZkYjFh
NjlhYjI4NDE0OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nl
c3NQcm94eS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRG9jdW1lbnRTdG9y
YWdlQWNjZXNzLmg+CkBAIC03NCwxMiArNzMsNiBAQCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVt
b3J5U3RvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZShXZWJSZXNvdXJjZQog
ICAgIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHN0b3JlLCB3b3JrUXVldWUsIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoIVJ1bkxvb3A6OmlzTWFp
bigpKTsKLQotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFmdGVyKDVfcywgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdl
YWtUaGlzLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKTsKLSAgICB9KTsKLQogICAgIGlu
Y2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiB9CiAKQEAgLTkwLDE0ICs4
Myw2IEBAIGJvb2wgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjppc0VtcHR5KCkg
Y29uc3QKICAgICByZXR1cm4gbV9yZXNvdXJjZVN0YXRpc3RpY3NNYXAuaXNFbXB0eSgpOwogfQog
Ci12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3Vi
bWl0VGVsZW1ldHJ5KE5vdGlmeVBhZ2VzRm9yVGVzdGluZyBzaG91bGROb3RpZnlQYWdlc0ZvclRl
c3RpbmcpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBp
ZiAocGFyYW1ldGVycygpLnNob3VsZFN1Ym1pdFRlbGVtZXRyeSkKLSAgICAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KCp0aGlzLCBzaG91
bGROb3RpZnlQYWdlc0ZvclRlc3RpbmcpOwotfQotCiBzdGF0aWMgdm9pZCBlbnN1cmVUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbihWZWN0b3I8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4mIHRo
aXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluLCBjb25zdCBSZWdpc3RyYWJs
ZURvbWFpbiYgZmlyc3RQYXJ0eURvbWFpbiwgYm9vbCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2Vz
cykKIHsKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRh
Rm9yU3BlY2lmaWNGaXJzdFBhcnR5IHRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5
IHsgZmlyc3RQYXJ0eURvbWFpbiwgdGhpcmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MsIFNlY29uZHMg
eyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpOb0V4aXN0aW5nVGltZXN0YW1wIH19OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCmluZGV4IDA4ZDVm
ZDFjYzIyZmNlZDljMDVjZWE2N2FhNjk1YTZkNmVlYTUxOGEuLmIxNTg2Yjk3OWRkODhlNGZiYzJh
NTE1ODAzODkwMjNmZWVlZWJkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlLmgKQEAgLTkwLDggKzkwLDYgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3Qg
UmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RGcm9tKGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSBv
dmVycmlkZTsKIAotICAgIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KE5vdGlmeVBh
Z2VzRm9yVGVzdGluZyA9IE5vdGlmeVBhZ2VzRm9yVGVzdGluZzo6Tm8pIGNvbnN0IG92ZXJyaWRl
OwotCiAgICAgYm9vbCBhcmVBbGxUaGlyZFBhcnR5Q29va2llc0Jsb2NrZWRVbmRlcihjb25zdCBU
b3BGcmFtZURvbWFpbiYpIG92ZXJyaWRlOwogICAgIENvb2tpZUFjY2VzcyBjb29raWVBY2Nlc3Mo
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJik7CiAg
ICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9w
RnJhbWVEb21haW4mLCBPcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJp
ZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IDJk
N2IxMjhjNTRjMWMzOWU1YThkNzQ1MjIzNzZlYTMyZDJmODQyMmYuLmEzZDcwOTAyNWMzMWMzMjY4
OWZmZTIzYmYyZjU5YzE5NGQ2YWE0ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tleWVkQ29kaW5nLmg+CkBAIC0xNzEs
MTIgKzE3MCw2IEBAIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRD
bGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtCiAgICAgbV9wYXJhbWV0ZXJzLnNo
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsID0gdmFsdWU7CiB9
CiAKLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRUZWxl
bWV0cnkoYm9vbCB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAg
ICBtX3BhcmFtZXRlcnMuc2hvdWxkU3VibWl0VGVsZW1ldHJ5ID0gdmFsdWU7Ci19Ci0KIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
aW5kZXggMDA4YmJiYjk0OWY1N2JhN2MzYzU4ZDM5NDg0ODQ1YTgwMDY3ZTFjZi4uNzdkMDU1Y2Nk
NzEzNjZiNmJkZjc5YmNhMjQ1ZDg3MTYwYmMzNjk2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaApAQCAtMjksNyArMjksNiBAQAogCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0NsYXNzaWZpZXIuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KQEAgLTE1MywxMyArMTUyLDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBy
dW5lRW50cmllc0Rvd25UbyhzaXplX3QgcHJ1bmVUYXJnZXRDb3VudCk7CiAgICAgdm9pZCByZXNl
dFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVBbmRTdWJtaXRUZWxlbWV0cnkoTm90aWZ5UGFnZXNGb3JUZXN0aW5nID0gTm90aWZ5UGFnZXNG
b3JUZXN0aW5nOjpObykgY29uc3QgPSAwOwotCiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5E
YXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0SXNSdW5uaW5nVGVzdChi
b29sKTsKICAgICBib29sIHNob3VsZFNraXAoY29uc3QgUmVnaXN0cmFibGVEb21haW4mKSBjb25z
dDsKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsKGJvb2wpOwotICAgIHZvaWQgc2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwog
ICAgIHZvaWQgc2V0VGltZVRvTGl2ZVVzZXJJbnRlcmFjdGlvbihTZWNvbmRzKTsKICAgICB2b2lk
IHNldE1pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChTZWNvbmRzKTsKICAgICB2
b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzKTsKQEAgLTI0MCw3ICsyMzYsNiBAQCBw
cm90ZWN0ZWQ6CiAgICAgICAgIGJvb2wgc2hvdWxkTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNX
ZXJlU2Nhbm5lZCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgc2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgeyB0cnVlIH07CiAgICAgICAgIHNpemVfdCBtaW5p
bXVtVG9wRnJhbWVSZWRpcmVjdHNGb3JTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50IHsgMTAgfTsK
LSAgICAgICAgYm9vbCBzaG91bGRTdWJtaXRUZWxlbWV0cnkgeyB0cnVlIH07CiAgICAgICAgIGJv
b2wgaXNSdW5uaW5nVGVzdCB7IGZhbHNlIH07CiAgICAgfTsKICAgICBjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGE5ZGQ4MGIxNDY3
YTkyZjNkNzlhNzUzNTIyN2FhMmUwM2Y0ZjgwZDIuLmQ1YTk2NTI1Y2JhZTZkZWE3NzMwYzJlOTQy
N2M1NDlmZDE2YjZkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuY3BwCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
Q29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFnbm9zdGljTG9nZ2luZ0NsaWVudC5o
PgpAQCAtMTQ4LDE2ICsxNDcsNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3JkcwogICAgIH0pOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkU3VibWl0
VGVsZW1ldHJ5KGJvb2wgdmFsdWUpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
LQotICAgIHBvc3RUYXNrKFt0aGlzLCB2YWx1ZV0gewotICAgICAgICBpZiAobV9zdGF0aXN0aWNz
U3RvcmUpCi0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+c2V0U2hvdWxkU3VibWl0VGVs
ZW1ldHJ5KHZhbHVlKTsKLSAgICB9KTsKLX0KLQogc3RhdGljIFJlZjxXb3JrUXVldWU+IHNoYXJl
ZFN0YXRpc3RpY3NRdWV1ZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZjxXb3Jr
UXVldWU+PiBxdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3Jr
UXVldWU6OlFPUzo6VXRpbGl0eSkpOwpAQCAtNzI4LDI1ICs3MTcsMTIgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKCkKICAgICBwb3N0VGFz
ayhbdGhpc10gewogICAgICAgICBpZiAobV9zdGF0aXN0aWNzU3RvcmUpIHsKICAgICAgICAgICAg
IG1fc3RhdGlzdGljc1N0b3JlLT5pbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2Fy
eSgpOwotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRl
bGVtZXRyeSgpOwogICAgICAgICAgICAgaWYgKGlzPFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUpKQogICAgICAgICAgICAgICAgIGRvd25jYXN0
PFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlPigqbV9zdGF0aXN0aWNzU3RvcmUp
LnJ1bkluY3JlbWVudGFsVmFjdXVtQ29tbWFuZCgpOwogICAgICAgICB9CiAgICAgfSk7CiB9CiAK
LXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzdWJtaXRUZWxlbWV0cnkoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlICB7Ci0gICAgICAg
IGlmICghbV9zdGF0aXN0aWNzU3RvcmUpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoTm90aWZ5UGFnZXNG
b3JUZXN0aW5nOjpZZXMpOwotICAgICAgICBwb3N0VGFza1JlcGx5KFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKLSAgICB9KTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmU6OmxvZ0ZyYW1lTmF2aWdhdGlvbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdGFyZ2V0
RG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgdG9wRnJhbWVEb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiBzb3VyY2VEb21haW4sIGJvb2wgaXNSZWRpcmVjdCwgYm9vbCBpc01h
aW5GcmFtZSwgU2Vjb25kcyBkZWxheUFmdGVyTWFpbkZyYW1lRG9jdW1lbnRMb2FkLCBib29sIHdh
c1BvdGVudGlhbGx5SW5pdGlhdGVkQnlVc2VyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CkBAIC0xNDE0LDEzICsxMzkwLDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcKICAg
ICAgICAgY29uc3RfY2FzdDxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqPih0aGlzKS0+
bmV0d29ya1Nlc3Npb24oKS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUobWVzc2FnZSwg
ZGVzY3JpcHRpb24sIHZhbHVlLCBzaWdEaWdpdHMsIHNob3VsZFNhbXBsZSk7CiB9CiAKLXZvaWQg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVt
ZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVk
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxl
bnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJ
LCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNN
ZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVj
b3Jkc1JlbW92ZWRXaXRob3V0VUkpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKLSAgICBpZiAobV9uZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgY29uc3RfY2FzdDxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqPih0aGlzKS0+bmV0d29ya1Nlc3Npb24oKS0+bm90
aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChudW1iZXJPZlByZXZhbGVudFJlc291
cmNlcywgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRvcFByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgbWVk
aWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVy
YWN0aW9uLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRvcDNNZWRpYW5T
dWJGcmFtZVdpdGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB0b3AzTWVk
aWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVk
V2l0aG91dFVJKTsKLX0KLQogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFn
Z3JlZ2F0ZWRUaGlyZFBhcnR5RGF0YShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IGZkZDIxNDQ1MWNkNDE3
NjU3ZDNlZjc2OTRjNWZkNDI5NzczY2FjYzcuLjIxM2M4ZDBlZDBhNGRkZWZjMzliODA0MmUwNThm
ODAyNmFmYjY4NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgKQEAgLTIwNyw3ICsyMDcsNiBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZv
aWQgcG9wdWxhdGVNZW1vcnlTdG9yZUZyb21EaXNrKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzZXROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wpOwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jk
c1JlbW92YWwoYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAgICB2b2lkIHNl
dFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKIAogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNj
ZXNzKGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBXZWJDb3Jl
OjpGcmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBTdG9yYWdlQWNjZXNz
UHJvbXB0V2FzU2hvd24sIFN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jlc3VsdCk+JiYpOwogCkBAIC0yNTAsNyArMjQ5LDYgQEAg
c3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGVGb3JEb21haW5zKGNvbnN0IFZlY3RvcjxSZWdpc3RyYWJsZURvbWFpbj4mLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJik7Ci0gICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hv
dWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2Rp
ZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBjbGVhckluTWVtb3J5RXBoZW1lcmFsKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CkBAIC0yOTEsNyArMjg5LDYgQEAgc3RydWN0IFRoaXJkUGFydHlE
YXRhIHsKICAgICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKTsKIAogICAgIHZvaWQgc2VuZERp
YWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFsdWUsIHVuc2lnbmVkIHNpZ0RpZ2l0cywgV2Vi
Q29yZTo6U2hvdWxkU2FtcGxlKSBjb25zdDsKLSAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNz
VGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5z
aWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblBy
ZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRo
b3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQg
dG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRh
dGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSkgY29uc3Q7CiAKICAgICB2b2lkIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NVcGRhdGVkKFZlY3RvcjxXZWJDb3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
PiYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgcmVxdWVzdFN0b3Jh
Z2VBY2Nlc3NVbmRlck9wZW5lcihEb21haW5Jbk5lZWRPZlN0b3JhZ2VBY2Nlc3MmJiwgV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb3BlbmVySUQsIE9wZW5lckRvbWFpbiYmKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNGQyYzc4NmZj
ZjhjOWQzODE2YjMxNmU3ZDkyZjQ2ODViMTJmZWE0OC4uMGJiODU3MzA1Mzg0Y2IzNWQ3OGE2NGRh
Yzk0MzRkN2ZjODI0ZDlmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTY4MywxOSArNjgzLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2kKICAgICB9CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5u
ZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkK
LSAgICAgICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnN1Ym1pdFRlbGVtZXRyeShXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfQotfQotCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmIChhdXRvKiBuZXR3b3JrU2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNl
c3Npb25JRCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaAppbmRleCA2ZDNlN2IzYmIyNTQ4NDBhOTZlNzkxOWI2NTM1NzY4OTE1YjE1YzAwLi4xYTc3
ZmFiOTYxZGYyZTVlMzA2MTI2OWY1OTJhMmM0Yzg2OTQ2ZjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yMzcsNyArMjM3LDYgQEAgcHVi
bGljOgogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25J
RCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxl
cyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7Ci0gICAg
dm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
ICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldExhc3RTZWVuKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCAwNmRjMWQ5OWE0ODNmZDQwZTgz
MGVmNmQ4NGQ4MjU2YTAyMTAzMzBhLi4wZWJlOTA1MzM2ZTM0ZDEzOTQwMjUzYjJmZTc0MTBiMGU4
ZmI5NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTExMyw3ICsxMTMsNiBAQCBtZXNzYWdlcyAtPiBO
ZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgU2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU2NoZWR1
bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkgLT4gKCkgQXN5bmMKICAgICBTdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoYm9vbCBoYXNBbGxUYWJsZXMpIEFzeW5jCi0gICAg
U3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkgQXN5bmMKICAg
ICBTZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIFNlY29uZHMgc2Vjb25kcykgLT4gKCkgQXN5bmMKICAgICBTZXRHcmFuZGZhdGhl
cmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4g
cmVzb3VyY2VEb21haW4sIGJvb2wgaXNHcmFuZGZhdGhlcmVkKSAtPiAoKSBBc3luYwogICAgIEdl
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+IChWZWN0b3I8V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRo
aXJkUGFydHlEYXRhPiB0aGlyZFBhcnR5RGF0YSkgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNjk4MzFhNzAwYmViZjQ2NWIy
MjExMjFiZjUzZWUyYmNkNWZkOGQ4ZC4uYTFjZTc2MmQ1ZWIyYmE4OWQzZDhjM2RlNmM2N2UwNjNh
ZDY3ZTNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKQEAgLTIyNiwxMSArMjI2LDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bG9nRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdAogICAg
IG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6TG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUobWVzc2FnZSwg
ZGVzY3JpcHRpb24sIHZhbHVlLCBzaWduaWZpY2FudEZpZ3VyZXMsIHNob3VsZFNhbXBsZSksIDAp
OwogfQogCi12b2lkIE5ldHdvcmtTZXNzaW9uOjpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
dG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVy
YWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1
bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRp
YW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jk
c1JlbW92ZWRXaXRob3V0VUkpCi17Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Tm90aWZ5
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24s
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJl
dmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9u
LCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2Vy
SW50ZXJhY3Rpb24sIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01l
ZGlhblN1YkZyYW1lV2l0aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRv
cDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1Jl
bW92ZWRXaXRob3V0VUkpLCAwKTsKLX0KLQogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6ZGVsZXRlQW5k
UmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0
ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFJlZ2lzdHJhYmxlRG9tYWluc1RvRGVsZXRlT3JSZXN0cmlj
dFdlYnNpdGVEYXRhRm9yJiYgZG9tYWlucywgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+Jik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIHN0b3JhZ2VTZXNzaW9uID0gbmV0d29y
a1N0b3JhZ2VTZXNzaW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaAppbmRleCBjMmQ0ZmM1NzBhNWZlOWRhNDAyMTBhZGVjOTM4MTlmMjQ4NWVm
OTU5Li4yZmEyNjJkNTA3MTAyYzBkYmUyYTgzNzZhMjVhNDI0MTE5ZWE4N2JlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCkBAIC05Niw3ICs5Niw2
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdp
c3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIFJlZ2lzdHJhYmxlRG9t
YWluc1RvRGVsZXRlT3JSZXN0cmljdFdlYnNpdGVEYXRhRm9yJiYsIGJvb2wgc2hvdWxkTm90aWZ5
UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluPiYpPiYmKTsKICAgICB2b2lkIHJlZ2lzdHJhYmxlRG9tYWluc1dpdGhXZWJz
aXRlRGF0YShPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+JiYpPiYmKTsKICAgICB2b2lkIGxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZXNjcmlwdGlvbiwgdW5zaWduZWQgdmFs
dWUsIHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlcywgV2ViQ29yZTo6U2hvdWxkU2FtcGxlKTsK
LSAgICB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQg
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJj
ZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1l
ZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRl
cmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1
bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5T
dWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dp
dGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7
CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2
ZW50OyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTG9nVGVzdGluZ0V2ZW50
KGJvb2wgbG9nKSB7IG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVu
dCA9IGxvZzsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNJc29sYXRlZFNlc3Npb24oY29uc3QgV2Vi
Q29yZTo6UmVnaXN0cmFibGVEb21haW4pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQKaW5kZXggMTY5YjI5NTcyYzVmNDVmMTlhZjg0OWFhYzU0NGE2ODVlNTZlNTE2
ZC4uOTU0NWJiOWY3ZWEyNTIzN2FhNTVlOTY5MWQ2MjdlMWFlZjJiNjczYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dApAQCAtMzAsNyArMzAsNiBAQCBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29h
Lm1tCiAKIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAotTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL21hYy9XZWJDb29r
aWVNYW5hZ2VyTWFjLm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGQ4MTY2MjZhZGE3ZGQ3Mzk0M2E0
MGE5ZTc4ODY5NmNiMWM3OTVkMmQuLjE4NGJmZGVmNjQ2ZTRhYWY2ZDk5ZmI4OWZhOTkwOWU2MDdi
MDkxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDcxLDEzICs0NzEsNiBAQCB2b2lkIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhXS1dlYnNpdGVEYXRhU3Rv
cmVSZWYgZGF0YQogI2VuZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKQotewot
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2ViS2l0Ojp0b0ltcGwo
ZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7Ci0jZW5kaWYKLX0KLQogdm9pZCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlKQog
ewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCmluZGV4IDZl
NjhmNzM2ODA3M2NhNDdlZmU2MWE5YzgwYzllNTQxMTdkNWI1YTMuLjFiNmI4MzU4YThiNzA5MGZj
NTc0NTMxOWM3MWU2MDA5MWMyN2Y3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMTQsNyArMTE0LDYgQEAg
dHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0
aWNzQW5kRGF0YVJlY29yZHNGdW5jdGkKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdLV2Vic2l0ZURhdGFT
dG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVN0
YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rpb24gY2FsbGJhY2sp
OwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tp
ZUJsb2NraW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJz
aXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0
YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24gY29tcGxldGlvbkhh
bmRsZXIpOwotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1p
dFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmKTsKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJv
b2wgdmFsdWUpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGlj
c0lzUnVubmluZ1Rlc3RGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0KTsKIFdLX0VYUE9S
VCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KFdLV2Vi
c2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZvaWQqIGNvbnRleHQs
IFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0RnVuY3Rpb24gY2Fs
bGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzJkYjRhMDRkMzc4ZjI0ZmRkNWU2MzBmMTViMjkz
YmY2YmUwMWNhYi4uNzZmZGFjMGU5MDBmNGUyZjBmNTRmNmNmMjFkOGJmNzA2YTIwYjIxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tCkBAIC0zNyw3ICszNyw2IEBACiAjaW1wb3J0ICJXS1dlYnNpdGVEYXRhUmVj
b3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2ltcG9ydCAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAj
aW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVybmFsLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAxZWU0ZDE4MTYzNWJjY2MxYjRjMzdjYzBiM2Y3NWY1ZTgyZTI5MjkyLi4w
NGQ5ZTc1NTE4YzM3YTE3MTNlZjkzYmE2MmRhNDk3MzZhNmJhNzY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTEwODgsMTYgKzEwODgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgIH0pOwog
fQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTdWJtaXRUZWxlbWV0cnkoc2Vzc2lv
bklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRo
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKQEAgLTExMzEsMjMgKzExMjEsNiBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9t
YWluc0ZpbmlzaGVkKCkKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2Nh
bkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNp
Z25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3Az
TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRp
cmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRo
b3V0VUkpCi17Ci0gICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3NhZ2VCb2R5OwotICAg
IG1lc3NhZ2VCb2R5LnNldCgiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMiX3MsIEFQSTo6VUlu
dDY0OjpjcmVhdGUobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMpKTsKLSAgICBtZXNzYWdlQm9k
eS5zZXQoIk51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiJfcywg
QVBJOjpVSW50NjQ6OmNyZWF0ZShudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50
ZXJhY3Rpb24pKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIk51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZShudW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pKTsKLSAgICBtZXNzYWdl
Qm9keS5zZXQoIlRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3BQcmV2YWxlbnRSZXNv
dXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24pKTsKLSAgICBt
ZXNzYWdlQm9keS5zZXQoIk1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZShtZWRpYW5E
YXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rp
b24pKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVUkpKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5TdWJGcmFtZVdp
dGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0
VUkpKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRV
SSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkp
KTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0
VUkiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhv
dXRVSSkpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3Zl
ZFdpdGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuRGF0YVJlY29yZHNS
ZW1vdmVkV2l0aG91dFVJKSk7Ci0KLSAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0
aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUobWVzc2FnZUJv
ZHkpLnB0cigpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRDb21taXRDcm9z
c1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYg
dG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0aW9uRGF0YVRyYW5z
ZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7CiAgICAgaWYgKCFj
YW5TZW5kTWVzc2FnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwMDIyZWU0ZDFmMjJhNWQwMGRkYmY0MzVk
NjhkNWRhMjg4OTBkYTgxLi5kMDMwNDNmNzhkMDIxMzJmNDM5MzExZDI2MjdiMDhjM2M3ZGFhZDIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMTczLDcgKzE3Myw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVk
dWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQsIE9wdGlv
bmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Ms
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJs
b2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRS
ZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNl
Y29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRNYXhTdGF0
aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgc2l6ZV90IG1heGltdW1FbnRyeUNvdW50LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzA0LDcgKzMwMyw2IEBAIHByaXZhdGU6
CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCk7CiAgICAg
dm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNo
ZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWlu
c0ZpbmlzaGVkKCk7Ci0gICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVk
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUks
IHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01l
ZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJpZXZlQ2FjaGVTdG9y
YWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdl
cy5pbgppbmRleCAyMTFjZDk0ZDIxMDk0YjVhODI1YTQ4M2YxYTFiODYwOTdhYmM4NzQ5Li4yYWVh
ZmYzNGM3YTgwZTM5YzFhYzJkMzNmN2M0YTExNTJkMTg4ZDc0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC00NCw3ICs0NCw2IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
UHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgTm90aWZ5UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJzaXRlRGF0YVNjYW5G
b3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCi0gICAgTm90aWZ5UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZy
YW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVu
c2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNN
ZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpCiAgICAgUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiBzdWJG
cmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJhbWVEb21haW4pIC0+
IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVXZWJzaXRlRGF0YUlu
VUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIE9wdGlvblNldDxX
ZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywgVmVjdG9yPFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRzKSBBc3luYwogICAg
IERpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVByZXZhbGVudFJlc291
cmNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3NmNjZTBjYjBiY2IwZjczNzBj
NDgzY2Y4YTM0MmJlNGNiMjM2YzRkLi44Y2FjYzUxNjEyYzE2YjdiZTNmODJhODExYWE0NDE4MDFh
YTcxZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAK
QEAgLTQ4NCwxMiArNDg0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVE
YXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgICAgIHBhZ2Uu
dmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFEZWxldGlvbkZv
clJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2Jq
ZWN0KiBtZXNzYWdlQm9keSkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBnbG9iYWxQYWdlTWFw
KCkpCi0gICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkIiwgbWVzc2FnZUJvZHkpOwotfQot
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKaW5kZXggN2Q4MDEyYTE3OWIxYzQ1OGYwODQ2ZmM4Y2MxNTE2ZmYwN2E2OGJhZC4uN2I0ODA3
NDc2OWVmZGY5NmFiN2Y1MjQxN2Y0MGI3ZmFjNWRiYzcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIyMyw3ICsyMjMsNiBAQCBwdWJsaWM6CiAKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHN0YXRpYyB2b2lkIG5vdGlm
eVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKTsKLSAgICBzdGF0aWMgdm9p
ZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNz
YWdlQm9keSk7CiAKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKTsKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJz
aXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAppbmRleCA0MTE5MWZlYmJjM2ZiYmJmNjRlNmU5OGFiNzZmN2QwZWM1ZWUxNGNhLi5kYWQyMDcw
MWJkMzk4OTM5ODVjODQyYzhhMTg2NmE1ZjUwY2U1ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAt
MTQ0NSwxMyArMTQ0NSw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVzZXRQYXJhbWV0ZXJz
VG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mCiAgICAgbmV0d29ya1By
b2Nlc3MoKS5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMobV9zZXNzaW9uSUQsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzdWJt
aXRUZWxlbWV0cnkoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgCi0g
ICAgbmV0d29ya1Byb2Nlc3MoKS5zdWJtaXRUZWxlbWV0cnkobV9zZXNzaW9uSUQsIFtdIHsgfSk7
Ci19Ci0KIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVy
c2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3Rp
Y3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5o
CmluZGV4IGRlNDg4MDVlMTAxMGY5ZWM5ZmNmZTliYjlkYTgzOWNjMmQ4ZTc4MWMuLmYzZmU2NmQw
NTk0MWFhM2YxN2RjMjkzMjUyZjUwN2MyNWZiYzFiY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKQEAgLTE4OSw3
ICsxODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhU3VtbWFyeShD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NB
bmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJlZChjb25z
dCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgaXNH
cmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBlYTdiYjJlN2FlNDBjYWQwMzFhMWJjNGIxMWFmYTU5MDBjMjA3MTBk
Li4wZTYxYjNmYWI5NmE0NDcxYmI5NDAyZjJhZWYxNzA4NGJhMzk4NjRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQyMjcsOCArNDIy
Nyw2IEBACiAJCTdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2
NDIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHA7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJE
MzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QUZCRDM2QjIxRTU0
NTQ0MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmg7IHBhdGggPSBD
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGQkQzNkMyMUU1NDU0NDAwNURCQUNCIC8qIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHBhdGggPSBDbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5jeVV0aWxzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NDMzLDggKzg0MzEsNiBAQAogCQkJCTdBM0ZFQ0ExMjFGN0MwOTcw
MEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi8sCiAJCQkJN0E4NDNBMUEyMUU0MUZC
MjAwREVGNjYzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgKi8sCiAJCQkJ
N0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5oICovLAotCQkJCTdBRkJEMzZDMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLywKLQkJCQk3QUZCRDM2QjIxRTU0NTQ0MDA1REJBQ0Ig
LyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovLAogCQkJKTsKIAkJCW5h
bWUgPSBDbGFzc2lmaWVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5YjIzNWRkOTUzNDkxYThk
NzA5MTJkYjg4M2I3ZDEyMjQ3NjBkYjFkLi5iNjAyOGMzMDJhMjk5N2VmNjM4YjA0ODNkNzI0ZjM4
MjA0MTU3MDBmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hlbmV5ICA8a2F0aGVyaW5l
X2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4OTg4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbGVtZXRyeSBjYWxjdWxh
dGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBhIHBvdGVudGlhbAorICAg
ICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVzdHMuIFdlIHNob3VsZCBy
ZW1vdmUgaXQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRs
ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6
Omluc3RhbGxTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2spOiBEZWxldGVkLgorICAg
ICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzU3VibWl0VGVs
ZW1ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRU
ZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3Nh
Z2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTEwLTEzICBTYW0gV2VpbmlnICA8d2Vpbmln
QGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10gUmVuYW1lIHRlc3QgaGVhZGVyIGNvbW1h
bmRzIHRvIG1hdGNoIG5hbWVzIGluIFdlYlByZWZlcmVuY2VzKi55YW1sCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0
UnVubmVyLmlkbAppbmRleCBkYmRhYmZjOGFlZTkwZmEyMTY3MzQ2N2IzNjI5ZTRkZDFhNWYyYjcx
Li41NTA2ZGMzNTU1YjlmZGVmZTc2YTk2YmRlNDgzYjVmM2YzNmZhYjY1IDEwMDY0NAotLS0gYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIu
aWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3Mv
VGVzdFJ1bm5lci5pZGwKQEAgLTI5OSw3ICsyOTksNiBAQCBpbnRlcmZhY2UgVGVzdFJ1bm5lciB7
CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB1bmRlZmluZWQgaW5z
dGFsbFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxiYWNrKG9iamVjdCBjYWxsYmFj
ayk7CiAgICAgdW5kZWZpbmVkIGluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2Fs
bGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKLSAgICB1bmRlZmluZWQgaW5zdGFsbFN0YXRpc3RpY3NE
aWRSdW5UZWxlbWV0cnlDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwogICAgIHVuZGVmaW5lZCBz
ZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBjb21wbGV0aW9uSGFu
ZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZUZvckRl
YnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7CiAg
ICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihET01TdHJpbmcgaG9zdE5hbWUsIGRv
dWJsZSBzZWNvbmRzLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAtMzI4LDcgKzMyNyw2
IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIHN0YXRpc3RpY3NOb3RpZnlP
YnNlcnZlcigpOwogICAgIHVuZGVmaW5lZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmRE
YXRhUmVjb3JkcygpOwogICAgIHVuZGVmaW5lZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tp
bmcob2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB1bmRlZmluZWQgc3RhdGlzdGljc1N1
Ym1pdFRlbGVtZXRyeSgpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVz
dChib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNz
aWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4gdmFsdWUpOwogICAg
IHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1v
dmFsKGRvdWJsZSBzZWNvbmRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjMyZWNkNmVjMjAxYzBl
MzdlZWYzZjBmM2E4ZGMzZGIwZTBlODBmZS4uOGEwMmM4MTI5MTc2MmNlMzdhNzU1MjMyMmZjZjY2
MDc5N2E3YTY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQ1NSwyMyArNDU1LDYgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5kbGVQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzRGlkU2Nh
bkRhdGFSZWNvcmRzQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAgIGlm
IChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkIikpIHsKLSAgICAgICAgYXV0byBtZXNzYWdlQm9k
eURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJvZHkpOwotICAgICAgICBhdXRv
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCAiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMiKTsKLSAgICAgICAgYXV0byBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZSht
ZXNzYWdlQm9keURpY3Rpb25hcnksICJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24iKTsKLSAgICAgICAgYXV0byBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnks
ICJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24iKTsKLSAg
ICAgICAgYXV0byB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJU
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24iKTsKLSAgICAgICAgYXV0byBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2
YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9k
eURpY3Rpb25hcnksICJNZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNv
dXJjZVdpdGhVc2VySW50ZXJhY3Rpb24iKTsKLSAgICAgICAgYXV0byB0b3AzTnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVUkgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnks
ICJUb3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkiKTsKLSAgICAgICAgYXV0byB0
b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUkgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rp
b25hcnksICJUb3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUkiKTsKLSAgICAgICAgYXV0byB0b3Az
TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rp
b25hcnksICJUb3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkiKTsKLSAgICAgICAgYXV0byB0
b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJID0gdWludDY0VmFsdWUobWVzc2FnZUJv
ZHlEaWN0aW9uYXJ5LCAiVG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSIpOwotICAg
ICAgICBhdXRvIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkgPSB1aW50NjRW
YWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJUb3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVk
V2l0aG91dFVJIik7Ci0KLSAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0aWNzRGlkUnVuVGVs
ZW1ldHJ5Q2FsbGJhY2sobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50
ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRv
cDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dp
dGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJp
bmcobWVzc2FnZU5hbWUsICJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0IikpIHsKICAgICAgICAg
bV90ZXN0UnVubmVyLT5kaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAppbmRleCAx
YTJmYTVmMjdlYmJkZjhmNDNkOGNmM2YyYjI2YjE1OGI5ZjAxYTdmLi5kMzdkYTY2NmZlZmRiNTA0
OTg3YjIwZWJmMzM0YjQ1YThmZmE2YjZlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTczMiw3ICs3MzIsNiBAQCBl
bnVtIHsKICAgICBTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uQ2FsbGJhY2tJRCwK
ICAgICBTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFja0lELAogICAgIFN0YXRp
c3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lELAotICAgIFN0YXRpc3RpY3NEaWRSdW5U
ZWxlbWV0cnlDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVhclRocm91Z2hXZWJzaXRl
RGF0YVJlbW92YWxDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudFN0b3JlQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkUmVzZXRUb0NvbnNp
c3RlbnRTdGF0ZUNhbGxiYWNrSUQsCkBAIC0xNTUyLDIwICsxNTUxLDYgQEAgdm9pZCBUZXN0UnVu
bmVyOjpzdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soKQogICAgIGNhbGxUZXN0
UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrSUQpOwog
fQogCi12b2lkIFRlc3RSdW5uZXI6Omluc3RhbGxTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2Fs
bGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSAgICBjYWNoZVRlc3RSdW5uZXJDYWxsYmFj
ayhTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2tJRCwgY2FsbGJhY2spOwotfQotICAg
IAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sodW5z
aWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2ln
bmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVz
ZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNN
ZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGly
ZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhv
dXRVSSkKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbWFrZVN0cmluZygieyBcIm51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzXCIgOiAiLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgIiwgXCJu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25cIiA6ICIsIG51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgIiwgXCJudW1iZXJPZlBy
ZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25cIiA6ICIsIG51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgIiwgXCJ0b3BQcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25cIiA6ICIs
IHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvbiwgIiwgXCJtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNv
dXJjZVdpdGhVc2VySW50ZXJhY3Rpb25cIiA6ICIsIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgIiwgXCJ0b3AzTnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUlcIiA6ICIsIHRvcDNOdW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVSSwgIiwgXCJ0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUlcIiA6ICIsIHRv
cDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgIiwgXCJ0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRo
b3V0VUlcIiA6ICIsIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgIiwgXCJ0b3AzTWVk
aWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJXCIgOiAiLCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJl
Y3RzV2l0aG91dFVJLCAiLCBcInRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUlc
IiA6ICIsIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUksICIgfSIpOwotICAg
IAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhtYWlu
RnJhbWVKU0NvbnRleHQoKSwgY3JlYXRlSlNTdHJpbmcoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpLmdl
dCgpKTsKLQotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFJ1blRlbGVt
ZXRyeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwotfQotCiBib29sIFRlc3RSdW5uZXI6OnN0YXRp
c3RpY3NOb3RpZnlPYnNlcnZlcigpCiB7CiAgICAgcmV0dXJuIEluamVjdGVkQnVuZGxlOjpzaW5n
bGV0b24oKS5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKQEAgLTE1ODgsMTEgKzE1NzMsNiBA
QCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0QmxvY2tDb29raWVzRm9ySG9z
dENhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTZXRC
bG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c3Rh
dGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpCi17Ci0gICAgcG9zdFN5bmNocm9ub3VzTWVzc2FnZSgi
U3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSIpOwotfQotCiB2b2lkIFRlc3RSdW5uZXI6OnNldFN0
YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wgdmFsdWUp
CiB7CiAgICAgcG9zdFN5bmNocm9ub3VzTWVzc2FnZSgiU3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQiLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGI2MTQxY2U3N2I2ODdj
NDU5YThlODVkNDA3YTA0NDYyYzcyMTlhNzcuLjhmYmNkZjk3ZmU2Yjg2MTk0NjBjODM3MDJhMTZk
NzEyNTVlOTA5ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zODgsMTUgKzM4OCwxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB2b2lkIGluc3RhbGxTdGF0aXN0aWNzRGlk
TW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lk
IGluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soSlNWYWx1ZVJlZiBj
YWxsYmFjayk7Ci0gICAgdm9pZCBpbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxi
YWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGljc0RpZE1vZGlmeURh
dGFSZWNvcmRzQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29y
ZHNDYWxsYmFjaygpOwotICAgIHZvaWQgc3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNr
KHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlBy
ZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFs
ZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdp
dGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0
b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVS
ZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRX
aXRob3V0VUkpOwogICAgIGJvb2wgc3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCk7CiAgICAgdm9p
ZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHZvaWQg
c3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRCbG9ja0Nvb2tpZXNGb3JIb3N0Q2Fs
bGJhY2soKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lk
IHNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJlZiBjb21wbGV0aW9u
SGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldERlYnVnTW9kZUNhbGxiYWNr
KCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01vZGUo
SlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRsZXIpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA1ODE0MzY2NzEzZThi
YmI5NGZhZDI1NzdmODk3NjEzZTkwNjcyOTFhLi40M2Y2YTI2MjQzMmYzYTY4ZDFjYTEyNzMzZGYz
NzNmYzM4MjY1NzY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNw
cApAQCAtMzIyNCwxMSArMzIyNCw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6OnN0YXRpc3RpY3NV
cGRhdGVDb29raWVCbG9ja2luZygpCiAgICAgbV9jdXJyZW50SW52b2NhdGlvbi0+ZGlkU2V0Qmxv
Y2tDb29raWVzRm9ySG9zdCgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNz
U3VibWl0VGVsZW1ldHJ5KCkKLXsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3Vi
bWl0VGVsZW1ldHJ5KHdlYnNpdGVEYXRhU3RvcmUoKSk7Ci19Ci0KIHZvaWQgVGVzdENvbnRyb2xs
ZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJv
b2wgdmFsdWUpCiB7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBh
Z2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQod2Vic2l0ZURhdGFTdG9yZSgpLCB2YWx1ZSk7
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXggMGI5ODE3NzA3ZDZh
ZjQ2NWFjNTk3ODE3OGE5MmE3OWM1MGQzNWRmNC4uYWY5MzU2MzFjZDY0ZTdkYzQ1ZDYxN2Q3MmZk
NTI0OGZjNmNjOTg0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29u
dHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApA
QCAtMjM4LDcgKzIzOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRpc3RpY3NUaW1lVG9M
aXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQ
cm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzVXBk
YXRlQ29va2llQmxvY2tpbmcoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnko
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVT
Y2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QoYm9vbCk7
CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRh
UmVjb3Jkc1JlbW92YWwoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRp
b24uY3BwCmluZGV4IDk1NTk5ZWI3YmVmYWZjYzQyNmJmMTRhMzNhMmVhNGQ2ZTI5NjcxMTguLjE0
YzA0ZWQxZmE5Mzk0ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1NGUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMTQzLDExICsxMTQzLDYgQEAgV0tSZXRh
aW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5bmNocm9ub3VzTWVz
c2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAg
aWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJTdGF0aXN0aWNz
U3VibWl0VGVsZW1ldHJ5IikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigp
LnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0g
ICAgfQotCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCIpKSB7CiAg
ICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0aWNzTm90aWZ5UGFn
ZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sZWFuVmFsdWUobWVzc2FnZUJvZHkpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWMxMzBiNTExMzI0YWExYmY0ZGNjZDk4
NWU1NDI0MjcyYjc2MmRkMC4uOGNhOWRmMWIxNWVjZTkwMjkzOWQwMDM0Y2Q2OTE0MzhiMTY4ODkx
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTEzICBLYXRlIENoZW5leSAgPGthdGhl
cmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIHRlbGVtZXRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE3NjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTc0ODk4OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgbGF5b3V0
IHRlc3RzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3Rl
bGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9uczoKKwogMjAy
MC0xMC0xMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1Rlc3Rp
bmddIFJlbmFtZSB0ZXN0IGhlYWRlciBjb21tYW5kcyB0byBtYXRjaCBuYW1lcyBpbiBXZWJQcmVm
ZXJlbmNlcyoueWFtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJh
dGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NzA1NjAw
YmNiNGUzYWI1OGQxMzIzNWM2MDE4MjlkMTM4NGE1ZGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDE4ICswLDAgQEAKLVRlc3RzIHRoYXQgdGVsZW1ldHJ5IGZvciBwcmV2YWxlbnQg
cmVzb3VyY2VzIGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KLQotUEFTUyBIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZXMu
Ci1GQUlMIHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMgc2hvdWxkIGJlIDAgKG9m
IHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotRkFJTCB0
ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiBzaG91
bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5l
ZCkuCi1GQUlMIHRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMgc2hv
dWxkIGJlIDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmlu
ZWQpLgotUEFTUyBIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZXMuCi1GQUlM
IHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMgc2hvdWxkIGJlIDQgKG9mIHR5cGUg
bnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotRkFJTCB0ZXN0UmVz
dWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiBzaG91bGQgYmUg
MSAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5lZCkuCi1G
QUlMIHRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMgc2hvdWxkIGJl
IDQgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgot
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotU29tZSB0ZXN0cyBmYWlsZWQuCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1NTdlODIzOTg4YjczYWM4ZTA0M2Y2
N2ZkZWZlZDhkYzRmNzBkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVs
ZW1ldHJ5LWdlbmVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi08
IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPG1ldGEgY2hhcnNldD0iVVRGLTgi
PgotICAgIDx0aXRsZT5UZXN0IGZvciBUZWxlbWV0cnkgR2VuZXJhdGlvbjwvdGl0bGU+Ci0gICAg
PHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJv
ZHk+Ci08c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRlbGVtZXRyeSBmb3Ig
cHJldmFsZW50IHJlc291cmNlcyBpcyBjYWxjdWxhdGVkIGNvcnJlY3RseS4iKTsKLSAgICBqc1Rl
c3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgIGNvbnN0IHRvcEZyYW1lVXJsMSA9ICJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgdG9wRnJhbWVVcmwyID0gImh0dHA6Ly8xMjcu
MC4wLjI6ODAwMC90ZW1wIjsKLSAgICBjb25zdCB0b3BGcmFtZVVybDMgPSAiaHR0cDovLzEyNy4w
LjAuMzo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHRvcEZyYW1lVXJsNCA9ICJodHRwOi8vMTI3LjAu
MC40OjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgcHJldmFsZW50UmVzb3VyY2VVcmwxID0gImh0dHA6
Ly8xMjcuMC4xLjE6ODAwMC90ZW1wIjsKLSAgICBjb25zdCBwcmV2YWxlbnRSZXNvdXJjZVVybDIg
PSAiaHR0cDovLzEyNy4wLjEuMjo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHByZXZhbGVudFJlc291
cmNlVXJsMyA9ICJodHRwOi8vMTI3LjAuMS4zOjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgcHJldmFs
ZW50UmVzb3VyY2VVcmw0ID0gImh0dHA6Ly8xMjcuMC4xLjQ6ODAwMC90ZW1wIjsKLQotICAgIGZ1
bmN0aW9uIGNoZWNrSW5zdWZmaWNpZW50Q2xhc3NpZmljYXRpb25BbmRDb250aW51ZSgpIHsKLSAg
ICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZh
bGVudFJlc291cmNlVXJsMSkpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgMSBkaWQg
bm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVz
b3VyY2VVcmwyKSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCAyIGRpZCBub3QgZ2V0
IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkhvc3RzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNl
cy4iKTsKLSAgICAgICAgICAgIHJ1blRlbGVtZXRyeUFuZENvbnRpbnVlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja1N1ZmZpY2llbnRDbGFzc2lmaWNhdGlvbkFuZENv
bnRpbnVlKCkgewotICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50
UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VVcmwxKSkgewotICAgICAgICAgICAgdGVzdEZhaWxl
ZCgiSG9zdCAxIGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIp
OwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAg
ICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJj
ZShwcmV2YWxlbnRSZXNvdXJjZVVybDIpKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0
IDIgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAg
ICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICB9
IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZh
bGVudFJlc291cmNlVXJsMykpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgMyBkaWQg
bm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAg
IHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0gZWxzZSBp
ZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVz
b3VyY2VVcmw0KSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCA0IGRpZCBub3QgZ2V0
IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAgICAgc2V0RW5h
YmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIHRlc3RQYXNzZWQoIkhvc3RzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNl
cy4iKTsKLSAgICAgICAgICAgIHJ1blRlbGVtZXRyeUFuZENvbnRpbnVlKCk7Ci0gICAgICAgIH0K
LSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtYWtlVXJsUHJldmFsZW50KHByZXZhbGVudFJlc291cmNl
VXJsKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BG
cmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwxKTsKLSAgICAgICAg
dGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZh
bGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDIpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmws
IHRvcEZyYW1lVXJsMyk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmw0KTsK
LQotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGly
ZWN0VG8ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMSk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhwcmV2YWxlbnRS
ZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwyKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BG
cmFtZVVybDMpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0VG8ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsNCk7Ci0KLSAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDEpOwotICAgICAgICB0ZXN0UnVu
bmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50
UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMik7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwg
dG9wRnJhbWVVcmwzKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3Vy
Y2VVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDQp
OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNldFVwSW5zdWZmaWNpZW50U3RhdGlzdGljc0FuZENv
bnRpbnVlKCkgewotICAgICAgICBtYWtlVXJsUHJldmFsZW50KHByZXZhbGVudFJlc291cmNlVXJs
MSk7Ci0gICAgICAgIG1ha2VVcmxQcmV2YWxlbnQocHJldmFsZW50UmVzb3VyY2VVcmwyKTsKLQot
ICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2Fs
bGJhY2soY2hlY2tJbnN1ZmZpY2llbnRDbGFzc2lmaWNhdGlvbkFuZENvbnRpbnVlKTsKLSAgICAg
ICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKGNo
ZWNrSW5zdWZmaWNpZW50VGVsZW1ldHJ5KTsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNz
UHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwotICAgIH0KLQotICAgIGZ1bmN0aW9u
IHNldFVwU3VmZmljaWVudFN0YXRpc3RpY3NBbmRDb250aW51ZSgpIHsKLSAgICAgICAgbWFrZVVy
bFByZXZhbGVudChwcmV2YWxlbnRSZXNvdXJjZVVybDMpOwotICAgICAgICBtYWtlVXJsUHJldmFs
ZW50KHByZXZhbGVudFJlc291cmNlVXJsNCk7Ci0KLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0
aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHByZXZhbGVudFJlc291cmNlVXJsNCwgdHJ1ZSwg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlk
U2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tTdWZmaWNpZW50Q2xhc3NpZmljYXRpb25BbmRD
b250aW51ZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkUnVu
VGVsZW1ldHJ5Q2FsbGJhY2soY2hlY2tTdWZmaWNpZW50VGVsZW1ldHJ5KTsKLSAgICAgICAgICAg
IHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsK
LSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcnVuVGVsZW1ldHJ5QW5kQ29udGlu
dWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwot
ICAgIH0KLQotICAgIHZhciB0ZXN0UmVzdWx0OwotICAgIGZ1bmN0aW9uIGNoZWNrSW5zdWZmaWNp
ZW50VGVsZW1ldHJ5KHJlc3VsdCkgewotICAgICAgICB0ZXN0UmVzdWx0ID0gcmVzdWx0OwotICAg
ICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNlcyIsICIwIik7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbiIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRv
cDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIjAiKTsKLSAgICAgICAgc2V0VXBTdWZm
aWNpZW50U3RhdGlzdGljc0FuZENvbnRpbnVlKCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gY2hl
Y2tTdWZmaWNpZW50VGVsZW1ldHJ5KHJlc3VsdCkgewotICAgICAgICB0ZXN0UmVzdWx0ID0gcmVz
dWx0OwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNl
cyIsICI0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiIsICIxIik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0
UmVzdWx0LnRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIjQiKTsKLSAgICAgICAg
c2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICB9Ci0KLSAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZSh0cnVlLCBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgIHNldFVwSW5zdWZmaWNpZW50U3RhdGlzdGljc0FuZENvbnRp
bnVlKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2NzM3ODM3ZTI4
NjMyZTBkZDY1ZGI3YWUxYWZjZDFmMTQ5OGY0NGQyLi43ZDYyZWM1ZGY3MWNhNGYwOWU5MzI0MTgw
YTRiYWFlODc1MjJhMjRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9ucwpAQCAtNzIzLDcgKzcyMyw2IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJlZGlyCiBodHRwL3Rl
c3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9u
LXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMv
cmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBlcnNpc3RlbnQtc3Rv
cmUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2dyYW5k
ZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xODA3MDMgaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgWyBQYXNzIEZh
aWx1cmUgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3BydW5lLXN0YXRpc3Rp
Y3MuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzIFsgUGFz
cyBdCiAK
</data>
<flag name="commit-queue"
          id="427399"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411244</attachid>
            <date>2020-10-13 13:19:35 -0700</date>
            <delta_ts>2020-10-13 15:28:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217665-20201013131934.patch</filename>
            <type>text/plain</type>
            <size>111686</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzOTAzMDNmZDAxNTFiZjU3
ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjg0YmMwNWI3YzY4ZTQzNDYxNTMxMGE1MWRhNWZkYzY0
MzI4MWJjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzIgQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4
OTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
bGVtZXRyeSBjYWxjdWxhdGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBh
IHBvdGVudGlhbAorICAgICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVz
dHMuIFdlIHNob3VsZCByZW1vdmUgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGlu
ZyBJVFAgdGVzdHMgd2lsbCBjaGVjayBmb3Igbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Om1ha2VNZWRpYW5XaXRoVUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkUXVlcnlTdGFydEFuZEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1h
a2VNZWRpYW5XaXRob3V0VUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdldE1l
ZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJj
ZURheXNTaW5jZVVJIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2V0TWVkaWFu
T2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVzb3VyY2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bWFrZVN0YXRpc3RpY1F1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNh
bGN1bGF0ZVRlbGVtZXRyeURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
aG91bGRTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIwLTEwLTEzICBLaW1tbyBLaW5u
dW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29jb2E6IE1ha2UgV2ViR0xM
YXllciBub3QgZGVwZW5kZW50IG9uICBHcmFwaGljc0NvbnRleHRHTE9wZW5HTApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXgg
ZWZlMGMwMDVhZWQyOTFkZDNlNTZkOTI1NGQ1ZTFlN2E4ZDQ1Mzg5NS4uNGU3YzYwOTllZDAyZWNj
ZTJkZDA2YTFkZGJmMzcxZjVhMDRjYmQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1
ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbmNsdWRlICJXZWJz
aXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZVR5cGVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3JhZ2VBY2Nlc3MuaD4KQEAgLTIzNCw4ICsy
MzMsNiBAQCBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8gPSAiQ1JFQVRFIFVOSVFVRSBJTgogY29uc3RleHByIGF1dG8gY3JlYXRlVW5p
cXVlSW5kZXhTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c0Zyb20gPSAiQ1JFQVRFIFVOSVFVRSBJ
TkRFWCBJRiBOT1QgRVhJU1RTIFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbV9zdWJyZXNv
dXJjZURvbWFpbklEX2Zyb21Eb21haW5JRCBvbiBTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21h
aW5zICggc3VicmVzb3VyY2VEb21haW5JRCwgZnJvbURvbWFpbklEICk7Il9zOwogY29uc3RleHBy
IGF1dG8gY3JlYXRlVW5pcXVlSW5kZXhPcGVyYXRpbmdEYXRlcyA9ICJDUkVBVEUgVU5JUVVFIElO
REVYIElGIE5PVCBFWElTVFMgT3BlcmF0aW5nRGF0ZXNfeWVhcl9tb250aF9tb250aERheSBvbiBP
cGVyYXRpbmdEYXRlcyAoIHllYXIsIG1vbnRoLCBtb250aERheSApOyJfczsKIAotY29uc3QgdW5z
aWduZWQgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSA9IDM7Ci0KIHN0YXRp
YyBjb25zdCBTdHJpbmcgT2JzZXJ2ZWREb21haW5zVGFibGVTY2hlbWFWMSgpCiB7CiAgICAgcmV0
dXJuIGNyZWF0ZU9ic2VydmVkRG9tYWluOwpAQCAtMjk2LDExICsyOTMsNiBAQCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUoV2ViUmVzbwogICAgIGlmICghbV9kYXRhYmFzZS50dXJuT25JbmNyZW1lbnRhbEF1dG9W
YWN1dW0oKSkKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIiVwIC0gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1
bSBmYWlsZWQsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCB0aGlzLCBtX2Rh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKIAotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaEFmdGVyKDVf
cywgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Ci0gICAgICAgIGlmICh3ZWFrVGhp
cykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKTsK
LSAgICB9KTsKLQogICAgIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7
CiAgICAgYWxsU3RvcmVzKCkuYWRkKHRoaXMpOwogfQpAQCAtOTQyLDExICs5MzQsNiBAQCBzdGF0
aWMgY29uc3QgU3RyaW5nVmlldyBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKQogICAgICAg
ICAiR1JPVVAgQlkgZG9tYWluSUQpIE9SREVSIEJZIHN1bSBERVNDICI7CiB9CiAKLXN0YXRpYyBT
UUxpdGVTdGF0ZW1lbnQgbWFrZU1lZGlhbldpdGhVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRh
YmFzZSkKLXsKLSAgICByZXR1cm4gU1FMaXRlU3RhdGVtZW50KGRhdGFiYXNlLCBtYWtlU3RyaW5n
KCJTRUxFQ1QgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgRlJPTSBPYnNlcnZlZERvbWFp
bnMgSU5ORVIgSk9JTiAoU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpLCAi
KSBhcyBxIE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5JRCA9IHEuZG9tYWluSUQgTElNSVQgMSBP
RkZTRVQgPyIpKTsKLX0KLQogVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEYXRhYmFzZVN0b3JlOjpnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnModW5zaWduZWQgdGhpcmRQYXJ0eURvbWFpbklELCBjb25zdCBSZWdpc3RyYWJsZURvbWFp
biYgdGhpcmRQYXJ0eURvbWFpbikgY29uc3QKIHsKICAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9
IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2dldEFsbFN1YlN0YXRpc3RpY3NTdGF0ZW1lbnQsIGdl
dEFsbFN1YlN0YXRpc3RpY3NVbmRlckRvbWFpblF1ZXJ5LCAiZ2V0VGhpcmRQYXJ0eURhdGFGb3JT
cGVjaWZpY0ZpcnN0UGFydHlEb21haW5zIl9zKTsKQEAgLTk5NCwyNjYgKzk4MSw2IEBAIFZlY3Rv
cjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0CiAgICAgcmV0dXJuIHRoaXJkUGFydHlEYXRhTGlzdDsKIH0KIAot
c3RhdGljIHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBTdHJpbmdWaWV3PiBidWlsZFF1ZXJ5U3RhcnRB
bmRFbmQoUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljIHN0YXRp
c3RpYykKLXsKLSAgICBzd2l0Y2ggKHN0YXRpc3RpYykgewotICAgIGNhc2UgUHJldmFsZW50UmVz
b3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJGcmFtZVdpdGhvdXRV
SToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgY291bnRTdWJGcmFtZVVu
ZGVyVG9wRnJhbWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCBjb3Vu
dFN1YkZyYW1lVW5kZXJUb3BGcmFtZSwgIiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5kb21h
aW5JRCBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFi
YXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblN1YlJlc291cmNlV2l0aG91dFVJOgotICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoIlNFTEVDVCBjb3VudFN1YlJlc291cmNlVW5kZXJU
b3BGcmFtZSBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUIGNvdW50U3Vi
UmVzb3VyY2VVbmRlclRvcEZyYW1lLCAiLCAiKSBhcyBxIE9OIG8uZG9tYWluSUQgPSBxLmRvbWFp
bklEIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJh
c2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJOgot
ICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoIlNFTEVDVCBjb3VudFVuaXF1ZVJlZGlyZWN0
VG8gRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCBjb3VudFVuaXF1ZVJl
ZGlyZWN0VG8sICIsICIpIGFzIHEgT04gby5kb21haW5JRCA9IHEuZG9tYWluSUQgTElNSVQgMSBP
RkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6
U3RhdGlzdGljOjpNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUk6Ci0gICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIGRhdGFSZWNvcmRzUmVtb3ZlZCBGUk9NIChTRUxF
Q1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUICIsICIpIGFzIHEg
T04gby5kb21haW5JRCA9IHEuZG9tYWluSUQpIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNl
IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuVGlt
ZXNBY2Nlc3NlZER1ZVRvVXNlckludGVyYWN0aW9uV2l0aG91dFVJOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoIlNFTEVDVCB0aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2Vy
SW50ZXJhY3Rpb24gRlJPTSAoU0VMRUNUICogRlJPTSBPYnNlcnZlZERvbWFpbnMgbyBJTk5FUiBK
T0lOKFNFTEVDVCAiLCAiKSBhcyBxIE9OIG8uZG9tYWluSUQgPSBxLmRvbWFpbklEKSBMSU1JVCAx
IE9GRlNFVCA/Iik7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5
OjpTdGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1N0b3JhZ2VBY2Nlc3NBUElXaXRo
b3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIHRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkgRlJPTSAoU0VMRUNUICogRlJPTSBP
YnNlcnZlZERvbWFpbnMgbyBJTk5FUiBKT0lOKFNFTEVDVCAiLCAiKSBhcyBxIE9OIG8uZG9tYWlu
SUQgPSBxLmRvbWFpbklEKSBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2FzZSBQcmV2YWxlbnRS
ZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aFVJOgotICAgICAgICBMT0dfRVJST1IoIlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjptYWtlTWVkaWFuV2l0aG91dFVJUXVlcnkgd2FzIGNhbGxlZCBmb3IgYW4g
aW5jb3JyZWN0IHN0YXRpc3RpYywgdW5kZXRlcm1pbmVkIHF1ZXJ5IGJlaGF2aW9yIHdpbGwgcmVz
dWx0LiIpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAg
ICByZXR1cm4geyB9OwotfQotCi1zdGF0aWMgU1FMaXRlU3RhdGVtZW50IG1ha2VNZWRpYW5XaXRo
b3V0VUlRdWVyeShTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIFByZXZhbGVudFJlc291cmNlRGF0
YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYyBzdGF0aXN0aWMpCi17Ci0gICAgYXV0b1txdWVyeVN0
YXJ0LCBxdWVyeUVuZF0gPSBidWlsZFF1ZXJ5U3RhcnRBbmRFbmQoc3RhdGlzdGljKTsKLQotICAg
IHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2UsIG1ha2VTdHJpbmcocXVlcnlTdGFydCwg
am9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCksIHF1ZXJ5RW5kKSk7Ci19Ci0KLXN0YXRpYyB1
bnNpZ25lZCBnZXRNZWRpYW5PZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24o
U1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCB1bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uQ291bnQpCi17Ci0gICAgU1FMaXRlU3RhdGVtZW50IG1lZGlhbkRheXNT
aW5jZVVJU3RhdGVtZW50ID0gbWFrZU1lZGlhbldpdGhVSVF1ZXJ5KGRhdGFiYXNlKTsKLQotICAg
IC8vIFByZXBhcmUKLSAgICBpZiAobWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQucHJlcGFyZSgp
ICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1lZGlhbk9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19T
VFJJTkcsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIEJpbmQKLSAgICBpZiAo
bWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sgfHwg
bWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgyLCAxKSAhPSBTUUxJVEVfT0sgfHwg
bWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgzLCAocHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbkNvdW50IC8gMikgIT0gU1FMSVRFX09LKSkgewotICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmU6OmdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwg
ZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxhc3RFcnJvck1z
ZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIC8vIFN0ZXAKLSAgICBpZiAobWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQu
c3RlcCgpICE9IFNRTElURV9ST1cpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZG91YmxlIHJh
d1NlY29uZHMgPSBtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMCk7
Ci0gICAgV2FsbFRpbWUgd2FsbFRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMocmF3U2Vj
b25kcyk7Ci0gICAgdW5zaWduZWQgbWVkaWFuID0gd2FsbFRpbWUgPD0gV2FsbFRpbWUoKSA/IDAg
OiBzdGQ6OmZsb29yKChXYWxsVGltZTo6bm93KCkgLSB3YWxsVGltZSkgLyAyNF9oKTsKLQotICAg
IGlmIChwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uQ291bnQgJiAxKQotICAg
ICAgICByZXR1cm4gbWVkaWFuOwotCi0gICAgU1FMaXRlU3RhdGVtZW50IGxvd2VyTWVkaWFuRGF5
c1NpbmNlVUlTdGF0ZW1lbnQgPSBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoZGF0YWJhc2UpOwotCi0g
ICAgLy8gUHJlcGFyZQotICAgIGlmIChsb3dlck1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LnBy
ZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29y
aywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNZWRpYW5PZlByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJ
Q19MT0dfU1RSSU5HLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBCaW5kCi0g
ICAgaWYgKGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgxLCAxKSAhPSBT
UUxJVEVfT0sgfHwgbG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50KDIsIDEp
ICE9IFNRTElURV9PSyB8fCBsb3dlck1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQo
MywgKChwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uQ291bnQgLSAxKSAvIDIp
KSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRNZWRpYW5PZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0df
U1RSSU5HLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICAvLyBTdGVwCi0gICAgaWYg
KGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuc3RlcCgpID09IFNRTElURV9ST1cpIHsK
LSAgICAgICAgZG91YmxlIHJhd1NlY29uZHNMb3dlciA9IGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlT
dGF0ZW1lbnQuZ2V0Q29sdW1uRG91YmxlKDApOwotICAgICAgICBXYWxsVGltZSB3YWxsVGltZUxv
d2VyID0gV2FsbFRpbWU6OmZyb21SYXdTZWNvbmRzKHJhd1NlY29uZHNMb3dlcik7Ci0gICAgICAg
IHJldHVybiAoKHdhbGxUaW1lTG93ZXIgPD0gV2FsbFRpbWUoKSA/IDAgOiBzdGQ6OmZsb29yKChX
YWxsVGltZTo6bm93KCkgLSB3YWxsVGltZUxvd2VyKSAvIDI0X2gpKSArIG1lZGlhbikgLyAyOwot
ICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzKCkgY29uc3QKLXsK
LSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NvdW50
UHJldmFsZW50UmVzb3VyY2VzU3RhdGVtZW50LCBjb3VudFByZXZhbGVudFJlc291cmNlc1F1ZXJ5
LCAiZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMiX3MpOwotICAgIGlmICghc2NvcGVkU3Rh
dGVtZW50KQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBhdXRvIHN0ZXBWYWx1ZSA9IHNj
b3BlZFN0YXRlbWVudC0+c3RlcCgpOwotICAgIGlmIChzdGVwVmFsdWUgIT0gU1FMSVRFX1JPVyAm
JiBzdGVwVmFsdWUgIT0gU1FMSVRFX0RPTkUpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlcyBmYWlsZWQgdG8gc3RlcCwgZXJyb3IgbWVzc2FnZTogJSIgUFVC
TElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIGlmIChzdGVw
VmFsdWUgPT0gU1FMSVRFX1JPVykgewotICAgICAgICB1bnNpZ25lZCBwcmV2YWxlbnRSZXNvdXJj
ZUNvdW50ID0gc2NvcGVkU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQoMCk7Ci0gICAgICAgIGlmIChw
cmV2YWxlbnRSZXNvdXJjZUNvdW50ID49IG1pbmltdW1QcmV2YWxlbnRSZXNvdXJjZXNGb3JUZWxl
bWV0cnkpCi0gICAgICAgICAgICByZXR1cm4gcHJldmFsZW50UmVzb3VyY2VDb3VudDsKLSAgICB9
Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXVuc2lnbmVkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSgpIGNvbnN0Ci17
Ci0gICAgYXV0byBzY29wZWRTdGF0ZW1lbnQgPSB0aGlzLT5zY29wZWRTdGF0ZW1lbnQobV9jb3Vu
dFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQsIGNvdW50UHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblF1ZXJ5LCAiZ2V0TnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVUkiX3MpOwotICAgIGlmIChzY29wZWRTdGF0ZW1lbnQgJiYgc2Nv
cGVkU3RhdGVtZW50LT5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBpbnQgY291bnQg
PSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKLSAgICAgICAgcmV0dXJuIGNvdW50
OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFiYXNlU3RvcmU6OmdldFRvcFByZXZlbGVudFJlc291cmNlRGF5c1NpbmNlVUkoKSBj
b25zdAotewotICAgIFNRTGl0ZVN0YXRlbWVudCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2Vy
SW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQobV9kYXRhYmFzZSwg
bWFrZVN0cmluZygiU0VMRUNUIG1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIEZST00gT2Jz
ZXJ2ZWREb21haW5zIElOTkVSIEpPSU4gKFNFTEVDVCAiLCBqb2luU3ViU3RhdGlzdGljc0ZvclNv
cnRpbmcoKSwgIiBMSU1JVCAxKSBhcyBxIE9OIE9ic2VydmVkRG9tYWlucy5kb21haW5JRCA9IHEu
ZG9tYWluSUQ7IikpOwotICAgIAotICAgIC8vIFByZXBhcmUKLSAgICBpZiAodG9wUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVt
ZW50LnByZXBhcmUoKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfRVJST1Io
TmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjp0b3BQcmV2YWxl
bnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0
ZW1lbnQgcXVlcnkgZmFpbGVkIHRvIHByZXBhcmUsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19M
T0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICAvLyBCaW5k
Ci0gICAgaWYgKHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAg
ICAgICB8fCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQuYmluZEludCgyLCAxKSAhPSBTUUxJVEVfT0spIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjp0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlz
U2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQgcXVlcnkgZmFpbGVkIHRvIGJpbmQsIGVycm9y
IG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBtX2RhdGFiYXNlLmxhc3RFcnJvck1zZygp
KTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAg
IH0KLSAgICAKLSAgICAvLyBTdGVwCi0gICAgaWYgKHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVz
ZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5zdGVwKCkgPT0g
U1FMSVRFX1JPVykgewotICAgICAgICBkb3VibGUgcmF3U2Vjb25kcyA9IHRvcFByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dC5nZXRDb2x1bW5Eb3VibGUoMCk7Ci0gICAgICAgIFdhbGxUaW1lIHdhbGxUaW1lID0gV2FsbFRp
bWU6OmZyb21SYXdTZWNvbmRzKHJhd1NlY29uZHMpOwotICAgICAgICByZXR1cm4gd2FsbFRpbWUg
PD0gV2FsbFRpbWUoKSA/IDAgOiBzdGQ6OmZsb29yKChXYWxsVGltZTo6bm93KCkgLSB3YWxsVGlt
ZSkgLyAyNF9oKTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBn
ZXRNZWRpYW5PZlByZXZhbGVudFJlc291cmNlV2l0aG91dFVzZXJJbnRlcmFjdGlvbihTUUxpdGVE
YXRhYmFzZSYgZGF0YWJhc2UsIHVuc2lnbmVkIGJ1Y2tldFNpemUsIFByZXZhbGVudFJlc291cmNl
RGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYyBzdGF0aXN0aWMsIHVuc2lnbmVkIG51bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJKQotewotICAgIGlmIChudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVSSA8IGJ1Y2tldFNpemUpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgdW5zaWduZWQgbWVkaWFuID0gMDsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0TWVkaWFuU3Rh
dGlzdGljID0gbWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5KGRhdGFiYXNlLCBzdGF0aXN0aWMpOwot
Ci0gICAgaWYgKGdldE1lZGlhblN0YXRpc3RpYy5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgIGlmIChnZXRNZWRpYW5TdGF0aXN0aWMuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sK
LSAgICAgICAgICAgIHx8IGdldE1lZGlhblN0YXRpc3RpYy5iaW5kSW50KDIsIDApICE9IFNRTElU
RV9PSwotICAgICAgICAgICAgfHwgZ2V0TWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMywgKGJ1Y2tl
dFNpemUgLyAyKSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJP
UihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1ha2VNZWRp
YW5XaXRob3V0VUlRdWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRh
dGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGdldE1lZGlh
blN0YXRpc3RpYy5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgIG1lZGlhbiA9IGdl
dE1lZGlhblN0YXRpc3RpYy5nZXRDb2x1bW5Eb3VibGUoMCk7Ci0gICAgfQotCi0gICAgaWYgKGJ1
Y2tldFNpemUgJiAxKQotICAgICAgICByZXR1cm4gbWVkaWFuOwotCi0gICAgU1FMaXRlU3RhdGVt
ZW50IGdldExvd2VyTWVkaWFuU3RhdGlzdGljID0gbWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5KGRh
dGFiYXNlLCBzdGF0aXN0aWMpOwotCi0gICAgaWYgKGdldExvd2VyTWVkaWFuU3RhdGlzdGljLnBy
ZXBhcmUoKSA9PSBTUUxJVEVfT0spIHsKLSAgICAgICAgaWYgKGdldExvd2VyTWVkaWFuU3RhdGlz
dGljLmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBnZXRMb3dlck1l
ZGlhblN0YXRpc3RpYy5iaW5kSW50KDIsIDApICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwg
Z2V0TG93ZXJNZWRpYW5TdGF0aXN0aWMuYmluZEludCgyLCAoKGJ1Y2tldFNpemUtMSkgLyAyKSkg
IT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1ha2VNZWRpYW5XaXRob3V0VUlR
dWVyeSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxhc3RF
cnJvck1zZygpKTsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGdldExvd2VyTWVkaWFuU3RhdGlz
dGljLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgcmV0dXJuIChnZXRMb3dlck1l
ZGlhblN0YXRpc3RpYy5nZXRDb2x1bW5Eb3VibGUoMCkgKyBtZWRpYW4pIC8gMjsKLSAgICB9Ci0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldE51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzSW5Ub3BSZXNvdXJjZXMoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlLCB1bnNpZ25l
ZCBidWNrZXRTaXplKQotewotICAgIFNRTGl0ZVN0YXRlbWVudCBwcmV2YWxlbnRSZXNvdXJjZUNv
dW50SW5Ub3AoZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlNFTEVDVCBDT1VOVCgqKSBGUk9NIChTRUxF
Q1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUICIsIGpvaW5TdWJT
dGF0aXN0aWNzRm9yU29ydGluZygpLCAiKSBhcyBxIG9uIHEuZG9tYWluSUQgPSBvLmRvbWFpbklE
IExJTUlUID8pIGFzIHAgV0hFUkUgcC5oYWRVc2VySW50ZXJhY3Rpb24gPSAxOyIpKTsKLQotICAg
IGlmIChwcmV2YWxlbnRSZXNvdXJjZUNvdW50SW5Ub3AucHJlcGFyZSgpID09IFNRTElURV9PSykg
ewotICAgICAgICBpZiAocHJldmFsZW50UmVzb3VyY2VDb3VudEluVG9wLmJpbmRJbnQoMSwgMSkg
IT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBwcmV2YWxlbnRSZXNvdXJjZUNvdW50SW5Ub3Au
YmluZFRleHQoMiwgIiUiKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHByZXZhbGVudFJl
c291cmNlQ291bnRJblRvcC5iaW5kSW50KDMsIGJ1Y2tldFNpemUpICE9IFNRTElURV9PSykgewot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoTmV0d29yaywgIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVz
b3VyY2VzLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
ICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJj
ZUNvdW50SW5Ub3Auc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICByZXR1cm4gcHJl
dmFsZW50UmVzb3VyY2VDb3VudEluVG9wLmdldENvbHVtbkludCgwKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gMDsKLX0KLQotc3RhdGljIHVuc2lnbmVkIG1ha2VTdGF0aXN0aWNRdWVyeShTUUxpdGVE
YXRhYmFzZSYgZGF0YWJhc2UsIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0
YXRpc3RpYyBzdGF0aXN0aWMsIGludCBidWNrZXRTaXplLCB1bnNpZ25lZCB0b3RhbFdpdGhVSSwg
dW5zaWduZWQgdG90YWxXaXRob3V0VUkpCi17Ci0gICAgc3dpdGNoIChzdGF0aXN0aWMpIHsKLSAg
ICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUk6Ci0gICAgICAgIHJldHVybiBnZXROdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVzb3VyY2VzKGRhdGFiYXNlLCBidWNrZXRTaXplKTsK
LSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6
TWVkaWFuU3ViRnJhbWVXaXRob3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFi
YXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblN1YlJlc291cmNlV2l0aG91dFVJOgotICAg
IGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRp
YW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURh
dGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhv
dXRVSToKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRp
c3RpYzo6TWVkaWFuVGltZXNBY2Nlc3NlZER1ZVRvVXNlckludGVyYWN0aW9uV2l0aG91dFVJOgot
ICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpN
ZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9TdG9yYWdlQWNjZXNzQVBJV2l0aG91dFVJOgotICAgICAg
ICByZXR1cm4gZ2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rp
b24oZGF0YWJhc2UsIGJ1Y2tldFNpemUsIHN0YXRpc3RpYywgdG90YWxXaXRob3V0VUkpOwotICAg
IH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWdu
ZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVJKCkgY29uc3QKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVu
dCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0
VXNlckludGVyYWN0aW9uUXVlcnksICJnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhv
dXRVSSJfcyk7Ci0gICAgaWYgKHNjb3BlZFN0YXRlbWVudCAmJiBzY29wZWRTdGF0ZW1lbnQtPnN0
ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGludCBjb3VudCA9IG1fY291bnRQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50LT5nZXRDb2x1bW5JbnQo
MCk7Ci0gICAgICAgIHJldHVybiBjb3VudDsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci19Ci0KLXZv
aWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZVRlbGVtZXRy
eURhdGEoUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSYgZGF0YSkgY29uc3QKLXsK
LSAgICBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzID0gZ2V0TnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXMoKTsKLSAgICBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvbiA9IGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCk7Ci0g
ICAgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24g
PSBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVSSgpOwotICAgIGRhdGEudG9w
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uID0gZ2V0VG9wUHJldmVsZW50UmVzb3VyY2VEYXlzU2luY2VVSSgpOwotICAgIGRhdGEubWVk
aWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVy
YWN0aW9uID0gZ2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
KG1fZGF0YWJhc2UsIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uKTsKLQotICAgIGZvciAodW5zaWduZWQgYnVja2V0SW5kZXggPSAwOyBidWNrZXRJbmRl
eCA8IGJ1Y2tldFNpemVzLnNpemUoKTsgYnVja2V0SW5kZXgrKykgewotICAgICAgICB1bnNpZ25l
ZCBidWNrZXRTaXplID0gYnVja2V0U2l6ZXNbYnVja2V0SW5kZXhdOwotCi0gICAgICAgIGlmIChk
YXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA8IGJ1
Y2tldFNpemUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh1bnNpZ25lZCBz
dGF0aXN0aWNJbmRleCA9IDA7IHN0YXRpc3RpY0luZGV4IDwgbnVtYmVyT2ZTdGF0aXN0aWNzOyBz
dGF0aXN0aWNJbmRleCsrKSB7Ci0gICAgICAgICAgICBhdXRvIHN0YXRpc3RpYyA9IHN0YXRpY19j
YXN0PFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYz4oc3RhdGlz
dGljSW5kZXgpOwotICAgICAgICAgICAgZGF0YS5zdGF0aXN0aWNzW3N0YXRpc3RpY0luZGV4XVti
dWNrZXRJbmRleF0gPSBtYWtlU3RhdGlzdGljUXVlcnkobV9kYXRhYmFzZSwgc3RhdGlzdGljLCBi
dWNrZXRTaXplLCBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24pOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoTm90aWZ5UGFnZXNGb3JU
ZXN0aW5nIHNob3VsZE5vdGlmeVBhZ2VzRm9yVGVzdGluZykgY29uc3QKLXsKLSAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChwYXJhbWV0ZXJzKCkuc2hvdWxkU3VibWl0
VGVsZW1ldHJ5KSB7Ci0gICAgICAgIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkg
cHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTsKLSAgICAgICAgY2FsY3VsYXRlVGVs
ZW1ldHJ5RGF0YShwcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5KTsKLSAgICAgICAg
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c3VibWl0VGVsZW1ldHJ5KCp0aGlz
LCBwcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5LCBzaG91bGROb3RpZnlQYWdlc0Zv
clRlc3RpbmcpOwotICAgIH0KLX0KLQogc3RhdGljIFN0cmluZyBkb21haW5zVG9TdHJpbmcoY29u
c3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGRvbWFpbnMpCiB7CiAgICAgU3RyaW5nQnVp
bGRlciBidWlsZGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmggYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuaAppbmRleCBhMmM1YTUyNWJkNzQ3M2UwYzRjODRmNjdhNDViZjYxMGIzMWE2
MjY1Li5kNTU1MjM3YmRkMTJjZGNkYmQxM2NjMTFhMGVmNGQ2ZDc5MTJjMjA4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaApAQCAtNTIs
MjggKzUyLDYgQEAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZCdWNrZXRzUGVyU3Rh
dGlzdGljID0gNTsKIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mU3RhdGlzdGljcyA9
IDc7CiBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0
c1BlclN0YXRpc3RpYz4gYnVja2V0U2l6ZXMge3sgMSwgMywgMTAsIDUwLCAxMDAgfX07CiAKLXN0
cnVjdCBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5IHsKLSAgICB1c2luZyBCdWNr
ZXRzID0gc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtYmVyT2ZCdWNrZXRzUGVyU3RhdGlzdGljPjsK
LQotICAgIGVudW0gY2xhc3MgU3RhdGlzdGljIHsKLSAgICAgICAgTnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVUksCi0gICAgICAgIE1lZGlhblN1YkZyYW1lV2l0aG91dFVJLAotICAgICAg
ICBNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwKLSAgICAgICAgTWVkaWFuVW5pcXVlUmVkaXJl
Y3RzV2l0aG91dFVJLAotICAgICAgICBNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUks
Ci0gICAgICAgIE1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1VzZXJJbnRlcmFjdGlvbldpdGhvdXRV
SSwKLSAgICAgICAgTWVkaWFuVGltZXNBY2Nlc3NlZER1ZVRvU3RvcmFnZUFjY2Vzc0FQSVdpdGhv
dXRVSQotICAgIH07Ci0KLSAgICB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlczsK
LSAgICB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b247Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRl
cmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBtZWRpYW5EYXlz
U2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb247
Ci0KLSAgICBzdGQ6OmFycmF5PEJ1Y2tldHMsIG51bWJlck9mU3RhdGlzdGljcz4gc3RhdGlzdGlj
czsKLX07Ci0KIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKIAogLy8g
VGhpcyBpcyBhbHdheXMgY29uc3RydWN0ZWQgLyB1c2VkIC8gZGVzdHJveWVkIG9uIHRoZSBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUncyBzdGF0aXN0aWNzIHF1ZXVlLgpAQCAtMTIxLDgg
Kzk5LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdFRvKGNv
bnN0IFRvcEZyYW1lRG9tYWluJiwgY29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RGcm9tKGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgY29uc3QgUmVkaXJlY3REb21haW4mKSBvdmVycmlkZTsKIAotICAgIHZvaWQgY2FsY3VsYXRl
QW5kU3VibWl0VGVsZW1ldHJ5KE5vdGlmeVBhZ2VzRm9yVGVzdGluZyA9IE5vdGlmeVBhZ2VzRm9y
VGVzdGluZzo6Tm8pIGNvbnN0IG92ZXJyaWRlOwotCiAgICAgdm9pZCBoYXNTdG9yYWdlQWNjZXNz
KGNvbnN0IFN1YkZyYW1lRG9tYWluJiwgY29uc3QgVG9wRnJhbWVEb21haW4mLCBPcHRpb25hbDxX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXI+LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0U3Rv
cmFnZUFjY2VzcyhTdWJGcmFtZURvbWFpbiYmLCBUb3BGcmFtZURvbWFpbiYmLCBXZWJDb3JlOjpG
cmFtZUlkZW50aWZpZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpTdG9yYWdl
QWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RvcmFnZUFjY2Vzc1N0YXR1cyk+
JiYpIG92ZXJyaWRlOwogICAgIHZvaWQgZ3JhbnRTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWlu
JiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NQcm9tcHRXYXNTaG93biwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6
OlN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKT4mJikgb3ZlcnJpZGU7CkBAIC0xNzEsMTMgKzE0Nyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtZXJnZVN0YXRpc3RpYyhjb25zdCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzJik7CiAgICAgdm9pZCBtZXJnZShXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQqLCBj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJik7CiAgICAgdm9pZCBjbGVhckRhdGFiYXNlQ29u
dGVudHMoKTsKLSAgICB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcygpIGNv
bnN0OwotICAgIHVuc2lnbmVkIGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCkg
Y29uc3Q7Ci0gICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0
VUkoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBnZXRUb3BQcmV2ZWxlbnRSZXNvdXJjZURheXNTaW5j
ZVVJKCkgY29uc3Q7Ci0gICAgdm9pZCByZXNldFRlbGVtZXRyeVByZXBhcmVkU3RhdGVtZW50cygp
IGNvbnN0OwotICAgIHZvaWQgcmVzZXRUZWxlbWV0cnlTdGF0ZW1lbnRzKCkgY29uc3Q7Ci0gICAg
dm9pZCBjYWxjdWxhdGVUZWxlbWV0cnlEYXRhKFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxl
bWV0cnkmKSBjb25zdDsKICAgICBib29sIGluc2VydE9ic2VydmVkRG9tYWluKGNvbnN0IFJlc291
cmNlTG9hZFN0YXRpc3RpY3MmKSBXQVJOX1VOVVNFRF9SRVRVUk47CiAgICAgdm9pZCBpbnNlcnRE
b21haW5SZWxhdGlvbnNoaXBzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2
b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcExpc3QoY29uc3QgU3RyaW5nJiwgY29uc3QgSGFz
aFNldDxSZWdpc3RyYWJsZURvbWFpbj4mLCB1bnNpZ25lZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCmluZGV4IDUzOWY1MzFlYTA3OGZi
YmRjMTA4ZTJlNWU5N2UxY2M2ZDUzZDFiMWYuLmU0NDU2MDM1ZTE4MmFhZWI0YWRlMmI4NmRiMWE2
OWFiMjg0MTQ4YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFjY2Vzc1N0YXR1cy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvQ29uc29sZVR5cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudFN0b3Jh
Z2VBY2Nlc3MuaD4KQEAgLTc0LDEyICs3Myw2IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlKFdlYlJlc291cmNlCiAg
ICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoc3RvcmUsIHdvcmtRdWV1ZSwgc2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotCi0gICAgd29ya1F1ZXVlLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwotICAgIH0pOwotCiAgICAgaW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKIH0KIApAQCAtOTAsMTQgKzgz
LDYgQEAgYm9vbCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmlzRW1wdHkoKSBj
b25zdAogICAgIHJldHVybiBtX3Jlc291cmNlU3RhdGlzdGljc01hcC5pc0VtcHR5KCk7CiB9CiAK
LXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpjYWxjdWxhdGVBbmRTdWJt
aXRUZWxlbWV0cnkoTm90aWZ5UGFnZXNGb3JUZXN0aW5nIHNob3VsZE5vdGlmeVBhZ2VzRm9yVGVz
dGluZykgY29uc3QKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlm
IChwYXJhbWV0ZXJzKCkuc2hvdWxkU3VibWl0VGVsZW1ldHJ5KQotICAgICAgICBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpjYWxjdWxhdGVBbmRTdWJtaXQoKnRoaXMsIHNob3Vs
ZE5vdGlmeVBhZ2VzRm9yVGVzdGluZyk7Ci19Ci0KIHN0YXRpYyB2b2lkIGVuc3VyZVRoaXJkUGFy
dHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWluKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5PiYgdGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4sIGNvbnN0IFJlZ2lzdHJhYmxl
RG9tYWluJiBmaXJzdFBhcnR5RG9tYWluLCBib29sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNz
KQogewogICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFG
b3JTcGVjaWZpY0ZpcnN0UGFydHkgdGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHkg
eyBmaXJzdFBhcnR5RG9tYWluLCB0aGlyZFBhcnR5SGFzU3RvcmFnZUFjY2VzcywgU2Vjb25kcyB7
IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Ok5vRXhpc3RpbmdUaW1lc3RhbXAgfX07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc01lbW9yeVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKaW5kZXggMDhkNWZk
MWNjMjJmY2VkOWMwNWNlYTY3YWE2OTVhNmQ2ZWVhNTE4YS4uYjE1ODZiOTc5ZGQ4OGU0ZmJjMmE1
MTU4MDM4OTAyM2ZlZWVlYmRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUuaApAQCAtOTAsOCArOTAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBS
ZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRp
cmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92
ZXJyaWRlOwogCi0gICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoTm90aWZ5UGFn
ZXNGb3JUZXN0aW5nID0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpObykgY29uc3Qgb3ZlcnJpZGU7
Ci0KICAgICBib29sIGFyZUFsbFRoaXJkUGFydHlDb29raWVzQmxvY2tlZFVuZGVyKGNvbnN0IFRv
cEZyYW1lRG9tYWluJikgb3ZlcnJpZGU7CiAgICAgQ29va2llQWNjZXNzIGNvb2tpZUFjY2Vzcyhj
b25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzJiwgY29uc3QgVG9wRnJhbWVEb21haW4mKTsKICAg
ICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BG
cmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6
OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlk
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggMmQ3
YjEyOGM1NGMxYzM5ZTVhOGQ3NDUyMjM3NmVhMzJkMmY4NDIyZi4uYTNkNzA5MDI1YzMxYzMyNjg5
ZmZlMjNiZjJmNTljMTk0ZDZhYTRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS2V5ZWRDb2RpbmcuaD4KQEAgLTE3MSwx
MiArMTcwLDYgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENs
YXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW0KICAgICBtX3BhcmFtZXRlcnMuc2hv
dWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwgPSB2YWx1ZTsKIH0K
IAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFN1Ym1pdFRlbGVt
ZXRyeShib29sIHZhbHVlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAg
IG1fcGFyYW1ldGVycy5zaG91bGRTdWJtaXRUZWxlbWV0cnkgPSB2YWx1ZTsKLX0KLQogdm9pZCBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxv
b3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaApp
bmRleCAwMDhiYmJiOTQ5ZjU3YmE3YzNjNThkMzk0ODQ4NDVhODAwNjdlMWNmLi43N2QwNTVjY2Q3
MTM2NmI2YmRmNzliY2EyNDVkODcxNjBiYzM2OTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yOSw3ICsyOSw2IEBACiAKICNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllci5oIgogI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgpAQCAtMTUzLDEzICsxNTIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UHJ1
bmVFbnRyaWVzRG93blRvKHNpemVfdCBwcnVuZVRhcmdldENvdW50KTsKICAgICB2b2lkIHJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcygpOwogCi0gICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0ZvclRlc3RpbmcgPSBOb3RpZnlQYWdlc0Zv
clRlc3Rpbmc6Ok5vKSBjb25zdCA9IDA7Ci0KICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRJc1J1bm5pbmdUZXN0KGJv
b2wpOwogICAgIGJvb2wgc2hvdWxkU2tpcChjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpIGNvbnN0
OwogICAgIHZvaWQgc2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1Jl
bW92YWwoYm9vbCk7Ci0gICAgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCk7CiAg
ICAgdm9pZCBzZXRUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKFNlY29uZHMpOwogICAgIHZvaWQg
c2V0TWluaW11bVRpbWVCZXR3ZWVuRGF0YVJlY29yZHNSZW1vdmFsKFNlY29uZHMpOwogICAgIHZv
aWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMpOwpAQCAtMjQwLDcgKzIzNiw2IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgYm9vbCBzaG91bGROb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBzaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCB7IHRydWUgfTsKICAgICAgICAgc2l6ZV90IG1pbmlt
dW1Ub3BGcmFtZVJlZGlyZWN0c0ZvclNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnQgeyAxMCB9Owot
ICAgICAgICBib29sIHNob3VsZFN1Ym1pdFRlbGVtZXRyeSB7IHRydWUgfTsKICAgICAgICAgYm9v
bCBpc1J1bm5pbmdUZXN0IHsgZmFsc2UgfTsKICAgICB9OwogICAgIGNvbnN0IFBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKaW5kZXggYTlkZDgwYjE0Njdh
OTJmM2Q3OWE3NTM1MjI3YWEyZTAzZjRmODBkMi4uZDVhOTY1MjVjYmFlNmRlYTc3MzBjMmU5NDI3
YzU0OWZkMTZiNmQxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJXZWJQcm9jZXNzTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
cm94eS5oIgotI2luY2x1ZGUgIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIK
ICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9D
b29raWVKYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5nQ2xpZW50Lmg+
CkBAIC0xNDgsMTYgKzE0Nyw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzCiAgICAgfSk7CiB9
CiAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnkoYm9vbCB2YWx1ZSkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwot
Ci0gICAgcG9zdFRhc2soW3RoaXMsIHZhbHVlXSB7Ci0gICAgICAgIGlmIChtX3N0YXRpc3RpY3NT
dG9yZSkKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5zZXRTaG91bGRTdWJtaXRUZWxl
bWV0cnkodmFsdWUpOwotICAgIH0pOwotfQotCiBzdGF0aWMgUmVmPFdvcmtRdWV1ZT4gc2hhcmVk
U3RhdGlzdGljc1F1ZXVlKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmPFdvcmtR
dWV1ZT4+IHF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwgV29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtR
dWV1ZTo6UU9TOjpVdGlsaXR5KSk7CkBAIC03MjgsMjUgKzcxNywxMiBAQCB2b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cGVyZm9ybURhaWx5VGFza3MoKQogICAgIHBvc3RUYXNr
KFt0aGlzXSB7CiAgICAgICAgIGlmIChtX3N0YXRpc3RpY3NTdG9yZSkgewogICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPmluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5
KCk7Ci0gICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5KCk7CiAgICAgICAgICAgICBpZiAoaXM8UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSkpCiAgICAgICAgICAgICAgICAgZG93bmNhc3Q8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU+KCptX3N0YXRpc3RpY3NTdG9yZSku
cnVuSW5jcmVtZW50YWxWYWN1dW1Db21tYW5kKCk7CiAgICAgICAgIH0KICAgICB9KTsKIH0KIAot
dm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeShDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIHBvc3RUYXNrKFt0aGlzLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgIHsKLSAgICAgICAg
aWYgKCFtX3N0YXRpc3RpY3NTdG9yZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9z
dGF0aXN0aWNzU3RvcmUtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0Zv
clRlc3Rpbmc6Olllcyk7Ci0gICAgICAgIHBvc3RUYXNrUmVwbHkoV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwotICAgIH0pOwotfQotCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6bG9nRnJhbWVOYXZpZ2F0aW9uKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0YXJnZXRE
b21haW4sIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0b3BGcmFtZURvbWFpbiwgY29uc3QgUmVn
aXN0cmFibGVEb21haW4mIHNvdXJjZURvbWFpbiwgYm9vbCBpc1JlZGlyZWN0LCBib29sIGlzTWFp
bkZyYW1lLCBTZWNvbmRzIGRlbGF5QWZ0ZXJNYWluRnJhbWVEb2N1bWVudExvYWQsIGJvb2wgd2Fz
UG90ZW50aWFsbHlJbml0aWF0ZWRCeVVzZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKQEAgLTE0MTQsMTMgKzEzOTAsNiBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6c2VuZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZwogICAg
ICAgICBjb25zdF9jYXN0PFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSo+KHRoaXMpLT5u
ZXR3b3JrU2Vzc2lvbigpLT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShtZXNzYWdlLCBk
ZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ0RpZ2l0cywgc2hvdWxkU2FtcGxlKTsKIH0KIAotdm9pZCBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1l
dHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVk
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUks
IHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01l
ZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSkgY29uc3QKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIGlmIChtX25ldHdvcmtTZXNzaW9uKQotICAgICAgICBjb25zdF9jYXN0PFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSo+KHRoaXMpLT5uZXR3b3JrU2Vzc2lvbigpLT5ub3Rp
ZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIG51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBtZWRp
YW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJh
Y3Rpb24sIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01lZGlhblN1
YkZyYW1lV2l0aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRvcDNNZWRp
YW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRX
aXRob3V0VUkpOwotfQotCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6YWdn
cmVnYXRlZFRoaXJkUGFydHlEYXRhKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKaW5kZXggZmRkMjE0NDUxY2Q0MTc2
NTdkM2VmNzY5NGM1ZmQ0Mjk3NzNjYWNjNy4uMjEzYzhkMGVkMGE0ZGRlZmMzOWI4MDQyZTA1OGY4
MDI2YWZiNjg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUuaApAQCAtMjA3LDcgKzIwNyw2IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9p
ZCBwb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNldE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9v
bCk7CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRz
UmVtb3ZhbChib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc2V0
U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wpOwogCiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nl
c3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIFdlYkNvcmU6
OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFN0b3JhZ2VBY2Nlc3NQ
cm9tcHRXYXNTaG93biwgU3RvcmFnZUFjY2Vzc1Njb3BlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0KT4mJik7CiAKQEAgLTI1MCw3ICsyNDksNiBAQCBz
dHJ1Y3QgVGhpcmRQYXJ0eURhdGEgewogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2luZ1Vw
ZGF0ZUZvckRvbWFpbnMoY29uc3QgVmVjdG9yPFJlZ2lzdHJhYmxlRG9tYWluPiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRh
UmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NEYXRhYmFzZUhhc0FsbFRhYmxlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChTaG91
bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlm
aWVkU2luY2UsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIGNsZWFySW5NZW1vcnlFcGhlbWVyYWwoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmKTsKQEAgLTI5MSw3ICsyODksNiBAQCBzdHJ1Y3QgVGhpcmRQYXJ0eURh
dGEgewogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgpOwogCiAgICAgdm9pZCBzZW5kRGlh
Z25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlc2NyaXB0aW9uLCB1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgc2lnRGlnaXRzLCBXZWJD
b3JlOjpTaG91bGRTYW1wbGUpIGNvbnN0OwotICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5z
aWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNp
Z25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVu
c2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVz
ZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJl
dmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhv
dXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0
b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0
YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSBjb25zdDsKIAogICAgIHZvaWQgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCByZXF1ZXN0U3RvcmFn
ZUFjY2Vzc1VuZGVyT3BlbmVyKERvbWFpbkluTmVlZE9mU3RvcmFnZUFjY2VzcyYmLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciBvcGVuZXJJRCwgT3BlbmVyRG9tYWluJiYpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NUZWxlbWV0cnkuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBlNmZkY2IwNjUxOWU1NjBlODA4ZTA1MjNhODFiZGYyODBjMjc1
ZTJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oIgotCi0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKLQotI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgi
Ci0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2wuaCIKLSNpbmNsdWRl
ICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0RpYWdub3N0aWNMb2dnaW5n
S2V5cy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy5oPgotI2lu
Y2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+
Ci0jaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZU51bWJlcnMuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci11c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKLQotY29uc3QgdW5zaWduZWQgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRl
bGVtZXRyeSA9IDM7Ci1jb25zdCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRW
YWx1ZXMgPSAzOwotCi1zdHJ1Y3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkgewotICAgIHVu
c2lnbmVkIG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQ7Ci0gICAgYm9vbCBoYXNIYWRV
c2VySW50ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uOwot
ICAgIHVuc2lnbmVkIHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAgdW5zaWduZWQg
c3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luczsKLSAgICB1bnNpZ25lZCBzdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAgIHVuc2lnbmVkIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCB0aW1lc0FjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJOwotfTsKLQotc3RhdGljIFZlY3RvcjxQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkoY29u
c3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlJiBzdG9yZSkKLXsKLSAgICBBU1NF
UlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLSAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxl
bWV0cnk+IHNvcnRlZDsKLSAgICBzdG9yZS5wcm9jZXNzU3RhdGlzdGljcyhbJnNvcnRlZF0gKGF1
dG8mIHN0YXRpc3RpYykgewotICAgICAgICBpZiAoIXN0YXRpc3RpYy5pc1ByZXZhbGVudFJlc291
cmNlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHVuc2lnbmVkIGRheXNTaW5jZVVz
ZXJJbnRlcmFjdGlvbiA9IHN0YXRpc3RpYy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSA8
PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHN0YXRpc3Rp
Yy5tb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSkgLyAyNF9oKTsKLSAgICAgICAgc29ydGVk
LmFwcGVuZChQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7Ci0gICAgICAgICAgICBzdGF0aXN0
aWMuZGF0YVJlY29yZHNSZW1vdmVkLAotICAgICAgICAgICAgc3RhdGlzdGljLmhhZFVzZXJJbnRl
cmFjdGlvbiwKLSAgICAgICAgICAgIGRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAg
ICAgIHN0YXRpc3RpYy5zdWJmcmFtZVVuZGVyVG9wRnJhbWVEb21haW5zLnNpemUoKSwKLSAgICAg
ICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVEb21haW5zLnNpemUoKSwK
LSAgICAgICAgICAgIHN0YXRpc3RpYy5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLnNpemUo
KSwKLSAgICAgICAgICAgIHN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9V
c2VySW50ZXJhY3Rpb24sCi0gICAgICAgICAgICBzdGF0aXN0aWMudGltZXNBY2Nlc3NlZEFzRmly
c3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSQotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAg
IGlmIChzb3J0ZWQuc2l6ZSgpIDwgbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRy
eSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIHN0ZDo6c29ydChzb3J0ZWQuYmVnaW4oKSwg
c29ydGVkLmVuZCgpLCBbXShjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYSwgY29u
c3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIGIpIHsKLSAgICAgICAgcmV0dXJuIGEuc3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGEuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3Jp
Z2lucyArIGEuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA+Ci0gICAgICAgIGIuc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2lucyArIGIuc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cyArIGIuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICB9KTsKLQotICAgIHJldHVy
biBzb3J0ZWQ7Ci19Ci0KLXN0YXRpYyB1bnNpZ25lZCBudW1iZXJPZlJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24oY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgcmVz
b3VyY2VzLCBzaXplX3QgYmVnaW4sIHNpemVfdCBlbmQpCi17Ci0gICAgaWYgKHJlc291cmNlcy5p
c0VtcHR5KCkgfHwgcmVzb3VyY2VzLnNpemUoKSA8IGJlZ2luICsgMSB8fCByZXNvdXJjZXMuc2l6
ZSgpIDwgZW5kICsgMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgdW5zaWduZWQgcmVz
dWx0ID0gMDsKLSAgICBmb3IgKHNpemVfdCBpID0gYmVnaW47IGkgPCBlbmQ7ICsraSkgewotICAg
ICAgICBpZiAocmVzb3VyY2VzW2ldLmhhc0hhZFVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgICAg
ICsrcmVzdWx0OwotICAgIH0KLSAgICAKLSAgICByZXR1cm4gcmVzdWx0OwotfQotICAgIAotc3Rh
dGljIHVuc2lnbmVkIG1lZGlhbihjb25zdCBWZWN0b3I8dW5zaWduZWQ+JiB2KQotewotICAgIGlm
ICh2LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHYuc2l6ZSgpID09IDEp
Ci0gICAgICAgIHJldHVybiB2WzBdOwotICAgIAotICAgIGF1dG8gc2l6ZSA9IHYuc2l6ZSgpOwot
ICAgIGF1dG8gbWlkZGxlID0gc2l6ZSAvIDI7Ci0gICAgaWYgKHNpemUgJSAyKQotICAgICAgICBy
ZXR1cm4gdlttaWRkbGVdOwotICAgIHJldHVybiAodlttaWRkbGUgLSAxXSArIHZbbWlkZGxlXSkg
LyAyOwotfQotICAgIAotc3RhdGljIHVuc2lnbmVkIG1lZGlhbihjb25zdCBWZWN0b3I8UHJldmFs
ZW50UmVzb3VyY2VUZWxlbWV0cnk+JiB2LCB1bnNpZ25lZCBiZWdpbiwgdW5zaWduZWQgZW5kLCBj
b25zdCBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5JiB0ZWxlbWV0cnkpPiYgc3RhdGlzdGljR2V0dGVyKQotewotICAgIGlmICh2LmlzRW1wdHko
KSB8fCB2LnNpemUoKSA8IGJlZ2luICsgMSB8fCB2LnNpemUoKSA8IGVuZCArIDEpCi0gICAgICAg
IHJldHVybiAwOwotICAgIAotICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGFydDsKLSAgICBwYXJ0LnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoZW5kIC0gYmVnaW4gKyAxKTsKLSAgICBmb3IgKHVuc2lnbmVk
IGkgPSBiZWdpbjsgaSA8PSBlbmQ7ICsraSkKLSAgICAgICAgcGFydC51bmNoZWNrZWRBcHBlbmQo
c3RhdGlzdGljR2V0dGVyKHZbaV0pKTsKLSAgICAKLSAgICByZXR1cm4gbWVkaWFuKHBhcnQpOwot
fQotICAgIAotc3RhdGljIHZvaWQgc3VibWl0VG9wTGlzdCh1bnNpZ25lZCBudW1iZXJPZlJlc291
cmNlc0Zyb21UaGVUb3AsIGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4m
IHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5PiYgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
biwgY29uc3QgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSkKLXsKLSAgICBX
VEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0
ZWxlbWV0cnkpPiBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zR2V0dGVyID0gW10gKGF1dG8m
IHQpIHsKLSAgICAgICAgcmV0dXJuIHQuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKLSAg
ICB9OwotICAgIFdURjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnkmIHRlbGVtZXRyeSk+IHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0
ZXIgPSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1cm4gdC5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zOwotICAgIH07Ci0gICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQ
cmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdHNUb0dldHRlciA9IFtdIChhdXRvJiB0KSB7Ci0gICAgICAgIHJldHVybiB0LnN1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RzVG87Ci0gICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2ln
bmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJP
ZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkR2V0dGVyID0gW10gKGF1dG8mIHQpIHsKLSAgICAgICAg
cmV0dXJuIHQubnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZDsKLSAgICB9OwotICAgIFdU
Rjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRl
bGVtZXRyeSk+IG51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVy
YWN0aW9uR2V0dGVyID0gW10gKGF1dG8mIHQpIHsKLSAgICAgICAgcmV0dXJuIHQudGltZXNBY2Nl
c3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uOwotICAgIH07Ci0gICAgV1RGOjpG
dW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1l
dHJ5KT4gbnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNz
QVBJR2V0dGVyID0gW10gKGF1dG8mIHQpIHsKLSAgICAgICAgcmV0dXJuIHQudGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSTsKLSAgICB9OwotCi0gICAgdW5zaWdu
ZWQgdG9wUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiA9IG51bWJlck9mUmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIDAsIG51
bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEpOwotICAgIHVuc2lnbmVkIHRvcFN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnMgPSBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwg
c3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0dldHRlcik7Ci0gICAgdW5zaWduZWQgdG9wU3Vi
cmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVU
b3AgLSAxLCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zR2V0dGVyKTsKLSAgICB1bnNp
Z25lZCB0b3BTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID0gbWVkaWFuKHNvcnRlZFByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2Vz
RnJvbVRoZVRvcCAtIDEsIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG9HZXR0ZXIpOwotICAg
IHVuc2lnbmVkIHRvcE51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQgPSBtZWRpYW4oc29y
dGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZS
ZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgbnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZEdl
dHRlcik7Ci0gICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5
RHVlVG9Vc2VySW50ZXJhY3Rpb24gPSBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwg
bnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25HZXR0
ZXIpOwotICAgIHVuc2lnbmVkIHRvcE51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvU3RvcmFnZUFjY2Vzc0FQSSA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBu
dW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElHZXR0
ZXIpOwotCi0gICAgU3RyaW5nIGRlc2NyaXB0aW9uUHJlYW1ibGUgPSBtYWtlU3RyaW5nKCJ0b3Ai
LCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3ApOwotCi0gICAgc3RvcmUuc2VuZERpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24iLAotICAgICAgICB0b3BQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVXNlckludGVyYWN0aW9uLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMs
IFNob3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhW
YWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zIiwKLSAgICAgICAgdG9wU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucywgc2lnbmlmaWNh
bnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICBzdG9yZS5z
ZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAi
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucyIsCi0gICAgICAgIHRvcFN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbnMsIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywg
U2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNzYWdlV2l0aFZh
bHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3Rz
VG8iLAotICAgICAgICB0b3BTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvLCBzaWduaWZpY2Fu
dEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3JlLnNl
bmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJO
dW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkIiwKLSAgICAgICAgdG9wTnVtYmVyT2ZUaW1l
c0RhdGFSZWNvcmRzUmVtb3ZlZCwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBT
aG91bGRTYW1wbGU6Ok5vKTsKLSAgICBzdG9yZS5zZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJz
dFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb24iLAotICAgICAgICB0b3BOdW1iZXJPZlRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiwgc2lnbmlmaWNhbnRGaWd1cmVz
Rm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICBzdG9yZS5zZW5kRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRT
dGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiTnVtYmVyT2ZU
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIiwKLSAgICAgICAg
dG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
LCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwot
fQotICAgIAotc3RhdGljIHZvaWQgc3VibWl0VG9wTGlzdHMoY29uc3QgVmVjdG9yPFByZXZhbGVu
dFJlc291cmNlVGVsZW1ldHJ5PiYgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBjb25zdCBWZWN0
b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUmIHN0b3JlKQotewotICAgIHN1Ym1pdFRvcExpc3QoMSwgc29ydGVkUHJldmFsZW50UmVzb3Vy
Y2VzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBzdG9y
ZSk7Ci0gICAgCi0gICAgaWYgKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24uc2l6ZSgpIDwgMykKLSAgICAgICAgcmV0dXJuOwotICAgIHN1Ym1pdFRvcExpc3Qo
Mywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
b3V0VXNlckludGVyYWN0aW9uLCBzdG9yZSk7Ci0gICAgCi0gICAgaWYgKHNvcnRlZFByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24uc2l6ZSgpIDwgMTApCi0gICAgICAgIHJl
dHVybjsKLSAgICBzdWJtaXRUb3BMaXN0KDEwLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIHNv
cnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHN0b3JlKTsKLSAg
ICAKLSAgICBpZiAoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
bi5zaXplKCkgPCA1MCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN1Ym1pdFRvcExpc3QoNTAsIHNv
cnRlZFByZXZhbGVudFJlc291cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbiwgc3RvcmUpOwotICAgIAotICAgIGlmIChzb3J0ZWRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLnNpemUoKSA8IDEwMCkKLSAgICAgICAgcmV0dXJu
OwotICAgIHN1Ym1pdFRvcExpc3QoMTAwLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIHNvcnRl
ZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHN0b3JlKTsKLX0KLSAg
ICAKLS8vIFRoaXMgZnVuY3Rpb24gaXMgZm9yIHRlc3RpbmcgcHVycG9zZXMuCi12b2lkIHN0YXRp
YyBub3RpZnlQYWdlcyh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWdu
ZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2ln
bmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFs
ZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRV
SSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3Az
TWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJl
Y29yZHNSZW1vdmVkV2l0aG91dFVJLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUmIHN0b3JlKQotewotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0
aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0
b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRV
SSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSwgc3RvcmUgPSBtYWtlUmVmKHN0b3JlKV0gewotICAgICAgICBz
dG9yZS0+bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChudW1iZXJPZlByZXZh
bGVudFJlc291cmNlcywgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRv
cFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbiwgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRo
VXNlckludGVyYWN0aW9uLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRv
cDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJ
LCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29y
ZHNSZW1vdmVkV2l0aG91dFVJKTsKLSAgICB9KTsKLX0KLSAgICAKLS8vIFRoaXMgZnVuY3Rpb24g
aXMgZm9yIHRlc3RpbmcgcHVycG9zZXMuCi12b2lkIHN0YXRpYyBub3RpZnlQYWdlcyhjb25zdCBW
ZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZXMsIGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvdGFsTnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBjb25zdCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKQotewotICAgIFdURjo6RnVuY3Rpb248dW5zaWdu
ZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+IHN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0ZXIgPSBbXSAoY29uc3QgUHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnkmIHQpIHsKLSAgICAgICAgcmV0dXJuIHQuc3ViZnJhbWVVbmRlclRvcEZyYW1lT3Jp
Z2luczsKLSAgICB9OwotICAgIG5vdGlmeVBhZ2VzKHNvcnRlZFByZXZhbGVudFJlc291cmNlcy5z
aXplKCksIHRvdGFsTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LCAwLCAwLCAwLCAwLCBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiwgMCwgMiwgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0dldHRlciksIDAs
IDAsIDAsICBzdG9yZSk7Ci19Ci0gICAgCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdChjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSwgTm90aWZ5UGFnZXNGb3JU
ZXN0aW5nIG5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkKQotewotICAgIEFTU0VS
VCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIGF1dG8gc29ydGVkUHJldmFsZW50UmVz
b3VyY2VzID0gc29ydGVkUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkocmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKTsKLSAgICBpZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQgPT0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpZZXMgJiYgc29ydGVkUHJldmFsZW50UmVzb3Vy
Y2VzLmlzRW1wdHkoKSkgewotICAgICAgICBub3RpZnlQYWdlcygwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuc3RvcmUoKSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5PiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uOwotICAg
IHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24ucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMuc2l6ZSgpKTsKLSAgICBWZWN0
b3I8dW5zaWduZWQ+IHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbjsK
LSAgICAKLSAgICBmb3IgKGF1dG8mIHByZXZhbGVudFJlc291cmNlIDogc29ydGVkUHJldmFsZW50
UmVzb3VyY2VzKSB7Ci0gICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZS5oYXNIYWRVc2VySW50
ZXJhY3Rpb24pCi0gICAgICAgICAgICBwcmV2YWxlbnRSZXNvdXJjZXNEYXlzU2luY2VVc2VySW50
ZXJhY3Rpb24uYXBwZW5kKHByZXZhbGVudFJlc291cmNlLmRheXNTaW5jZVVzZXJJbnRlcmFjdGlv
bik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24udW5jaGVja2VkQXBwZW5kKHByZXZhbGVudFJlc291cmNlKTsK
LSAgICB9Ci0gICAgCi0gICAgLy8gRGlzcGF0Y2ggb24gdGhlIG1haW4gdGhyZWFkIHRvIG1ha2Ug
c3VyZSB0aGUgV2ViUGFnZVByb3h5IHdlJ3JlIHVzaW5nIGRvZXNuJ3QgZ28gYXdheS4KLSAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW25vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1
cmVkLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMgPSBXVEZNb3ZlKHNvcnRlZFByZXZhbGVudFJl
c291cmNlcyksIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24g
PSBXVEZNb3ZlKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24p
LCBwcmV2YWxlbnRSZXNvdXJjZXNEYXlzU2luY2VVc2VySW50ZXJhY3Rpb24gPSBXVEZNb3ZlKHBy
ZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiksIHN0b3JlID0gbWFrZVJl
ZihyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuc3RvcmUoKSldICgpIHsKLSAgICAgICAgYXV0
byB3ZWJQYWdlUHJveHkgPSBXZWJQYWdlUHJveHk6Om5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94eSgp
OwotICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eSkgewotICAgICAgICAgICAgaWYgKG5vdGlmeVBh
Z2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkID09IE5vdGlmeVBhZ2VzRm9yVGVzdGluZzo6WWVz
KQotICAgICAgICAgICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIHN0b3JlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgaWYgKG5vdGlmeVBhZ2VzV2hlblRlbGVtZXRyeVdhc0NhcHR1cmVkID09IE5vdGlmeVBh
Z2VzRm9yVGVzdGluZzo6WWVzKSB7Ci0gICAgICAgICAgICBub3RpZnlQYWdlcyhzb3J0ZWRQcmV2
YWxlbnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24sIHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbi5zaXplKCks
IHN0b3JlKTsKLSAgICAgICAgICAgIC8vIFRoZSBub3RpZnkgcGFnZXMgZnVuY3Rpb24gaXMgZm9y
IHRlc3Rpbmcgc28gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbiBhY3R1YWwgc3VibWlzc2lvbi4KLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgd2ViUGFnZVBy
b3h5LT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6
OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgInRvdGFsTnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXMiX3MsIHNvcnRlZFByZXZhbGVudFJlc291cmNlcy5zaXplKCksIHNpZ25p
ZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAg
IHdlYlBhZ2VQcm94eS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksICJ0b3RhbE51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiJfcywgcHJldmFsZW50
UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLnNpemUoKSwgc2lnbmlmaWNhbnRGaWd1
cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChwcmV2YWxlbnRSZXNvdXJjZXNEYXlzU2luY2VVc2VySW50ZXJhY3Rpb24uc2l6ZSgpID4g
MCkKLSAgICAgICAgICAgIHdlYlBhZ2VQcm94eS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFs
dWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
S2V5KCksICJ0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24iX3MsIHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFj
dGlvblswXSwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6
Ok5vKTsKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbi5zaXplKCkgPiAxKQotICAgICAgICAgICAgd2ViUGFnZVByb3h5LT5sb2dEaWFnbm9zdGlj
TWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnlLZXkoKSwgIm1lZGlhblByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50
ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24iX3MsIG1lZGlhbihwcmV2YWxlbnRSZXNv
dXJjZXNEYXlzU2luY2VVc2VySW50ZXJhY3Rpb24pLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dn
ZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICAKLSAgICAgICAgc3VibWl0VG9w
TGlzdHMoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCBzdG9yZSk7Ci0gICAgfSk7Ci19Ci0KLXN0YXRpYyBTdHJp
bmdWaWV3IG1ha2VEZXNjcmlwdGlvbihQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5
OjpTdGF0aXN0aWMgc3RhdGlzdGljKQotewotICAgIHN3aXRjaCAoc3RhdGlzdGljKSB7Ci0gICAg
Y2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJOgotICAgICAgICByZXR1cm4gIlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24iOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VE
YXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSToKLSAg
ICAgICAgcmV0dXJuICJTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIjsKLSAgICBjYXNlIFBy
ZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuU3ViUmVz
b3VyY2VXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiAiU3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2lucyI7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpT
dGF0aXN0aWM6Ok1lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSToKLSAgICAgICAgcmV0dXJu
ICJTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvIjsKLSAgICBjYXNlIFByZXZhbGVudFJlc291
cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuRGF0YVJlY29yZHNSZW1vdmVk
V2l0aG91dFVJOgotICAgICAgICByZXR1cm4gIk51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92
ZWQiOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlz
dGljOjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9Vc2VySW50ZXJhY3Rpb25XaXRob3V0VUk6Ci0g
ICAgICAgIHJldHVybiAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2Vy
SW50ZXJhY3Rpb24iOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRy
eTo6U3RhdGlzdGljOjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9TdG9yYWdlQWNjZXNzQVBJV2l0
aG91dFVJOgotICAgICAgICByZXR1cm4gIk51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0
eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSI7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0YXRpYyB2b2lkIGRhdGFiYXNlU3VibWl0VG9wTGlz
dHMoY29uc3QgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSYgdGVsZW1ldHJ5LCBj
b25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKQotewotICAgIGZvciAo
dW5zaWduZWQgYnVja2V0SW5kZXggPSAwOyBidWNrZXRJbmRleCA8IGJ1Y2tldFNpemVzLnNpemUo
KTsgYnVja2V0SW5kZXgrKykgewotCi0gICAgICAgIGlmICh0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uIDwgYnVja2V0U2l6ZXNbYnVja2V0
SW5kZXhdKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIFN0cmluZyBkZXNjcmlwdGlv
blByZWFtYmxlID0gbWFrZVN0cmluZygidG9wIiwgYnVja2V0U2l6ZXNbYnVja2V0SW5kZXhdKTsK
LQotICAgICAgICBmb3IgKHVuc2lnbmVkIHN0YXRpc3RpY0luZGV4ID0gMDsgc3RhdGlzdGljSW5k
ZXggPCBudW1iZXJPZlN0YXRpc3RpY3M7IHN0YXRpc3RpY0luZGV4KyspIHsKLSAgICAgICAgICAg
IGF1dG8gc3RhdGlzdGljID0gc3RhdGljX2Nhc3Q8UHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRl
bGVtZXRyeTo6U3RhdGlzdGljPihzdGF0aXN0aWNJbmRleCk7Ci0KLSAgICAgICAgICAgIHN0b3Jl
LnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSAr
IG1ha2VEZXNjcmlwdGlvbihzdGF0aXN0aWMpLCB0ZWxlbWV0cnkuc3RhdGlzdGljc1tzdGF0aXN0
aWNJbmRleF1bYnVja2V0SW5kZXhdLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMs
IFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OnN1Ym1pdFRlbGVtZXRyeShjb25zdCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LCBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiBwcmV2YWxlbnRSZXNvdXJjZURh
dGFiYXNlVGVsZW1ldHJ5LCBOb3RpZnlQYWdlc0ZvclRlc3Rpbmcgbm90aWZ5UGFnZXNXaGVuVGVs
ZW1ldHJ5V2FzQ2FwdHVyZWQpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0K
LSAgICBpZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQgPT0gTm90aWZ5UGFn
ZXNGb3JUZXN0aW5nOjpZZXMgJiYgIXByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnku
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMpIHsKLSAgICAgICAgbm90aWZ5UGFnZXMoMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLnN0b3Jl
KCkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRGlzcGF0Y2ggb24gdGhlIG1h
aW4gdGhyZWFkIHRvIG1ha2Ugc3VyZSB0aGUgV2ViUGFnZVByb3h5IHdlJ3JlIHVzaW5nIGRvZXNu
J3QgZ28gYXdheS4KLSAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW25vdGlmeVBhZ2VzV2hl
blRlbGVtZXRyeVdhc0NhcHR1cmVkLCB0ZWxlbWV0cnkgPSBXVEZNb3ZlKHByZXZhbGVudFJlc291
cmNlRGF0YWJhc2VUZWxlbWV0cnkpLCBzdG9yZSA9IG1ha2VSZWYocmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLnN0b3JlKCkpXSAoKSB7Ci0KLSAgICAgICAgLy8gVGhlIG5vdGlmeSBwYWdlcyBm
dW5jdGlvbiBpcyBmb3IgdGVzdGluZyBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFuIGFjdHVhbCBz
dWJtaXNzaW9uLgotICAgICAgICBpZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQgPT0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpZZXMpIHsKLSAgICAgICAgICAgIGlmICh0ZWxl
bWV0cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uIDwg
MykgewotICAgICAgICAgICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIHN0b3JlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBub3RpZnlQYWdlcyh0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXMsCi0gICAgICAgICAgICAgICAgdGVsZW1ldHJ5Lm51bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgICAgICB0ZWxlbWV0cnkubnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgICAg
IHRlbGVtZXRyeS50b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb24sCi0gICAgICAgICAgICAgICAgdGVsZW1ldHJ5Lm1lZGlhbkRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwK
LSAgICAgICAgICAgICAgICB0ZWxlbWV0cnkuc3RhdGlzdGljc1swXVsxXSwgLy8gYnVja2V0IDEg
LT4gdG9wMy4KLSAgICAgICAgICAgICAgICB0ZWxlbWV0cnkuc3RhdGlzdGljc1sxXVsxXSwKLSAg
ICAgICAgICAgICAgICB0ZWxlbWV0cnkuc3RhdGlzdGljc1syXVsxXSwKLSAgICAgICAgICAgICAg
ICB0ZWxlbWV0cnkuc3RhdGlzdGljc1szXVsxXSwKLSAgICAgICAgICAgICAgICB0ZWxlbWV0cnku
c3RhdGlzdGljc1s0XVsxXSwKLSAgICAgICAgICAgICAgICBzdG9yZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGF1dG8gd2ViUGFnZVByb3h5ID0g
V2ViUGFnZVByb3h5Ojpub25FcGhlbWVyYWxXZWJQYWdlUHJveHkoKTsKLSAgICAgICAgaWYgKCF3
ZWJQYWdlUHJveHkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgd2ViUGFnZVByb3h5
LT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgInRvdGFsTnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXMiX3MsIHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgc2ln
bmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICAg
ICAgd2ViUGFnZVByb3h5LT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGlj
TG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgInRvdGFs
TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uIl9zLCB0ZWxlbWV0
cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBzaWduaWZp
Y2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICBp
ZiAodGVsZW1ldHJ5Lm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
biA+IDApCi0gICAgICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0
aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeUtleSgpLCAidG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1Np
bmNlVXNlckludGVyYWN0aW9uIl9zLCB0ZWxlbWV0cnkudG9wUHJldmFsZW50UmVzb3VyY2VXaXRo
VXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBzaWduaWZpY2FudEZpZ3Vy
ZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICBpZiAodGVsZW1l
dHJ5Lm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiA+IDEpCi0g
ICAgICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERp
YWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgp
LCAibWVkaWFuUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVz
ZXJJbnRlcmFjdGlvbiJfcywgdGVsZW1ldHJ5Lm1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlv
blByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgc2lnbmlmaWNhbnRGaWd1cmVz
Rm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLQotICAgICAgICBkYXRhYmFzZVN1
Ym1pdFRvcExpc3RzKHRlbGVtZXRyeSwgc3RvcmUpOwotICAgIH0pOwotfQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTc4ODcwYWYyOGQwMjk3ZTM2MWUyYzc2MDk4
NGQ5ZTVkNjJjMjhmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQotCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotCi1jbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU7Ci1jbGFz
cyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTsKLXN0cnVjdCBQcmV2YWxlbnRS
ZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OwotZW51bSBjbGFzcyBOb3RpZnlQYWdlc0ZvclRlc3Rp
bmcgOiBib29sIHsgTm8sIFllcyB9OwotCi1uYW1lc3BhY2UgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeSB7Ci0gICAgCi12b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdChjb25zdCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmLCBOb3RpZnlQYWdlc0ZvclRlc3RpbmcgPSBO
b3RpZnlQYWdlc0ZvclRlc3Rpbmc6Ok5vKTsKLXZvaWQgc3VibWl0VGVsZW1ldHJ5KGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlJiwgUHJldmFsZW50UmVzb3VyY2VEYXRh
YmFzZVRlbGVtZXRyeSYsIE5vdGlmeVBhZ2VzRm9yVGVzdGluZyk7Ci0gICAgCi19Ci19Ci0KLSNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNw
cAppbmRleCA0ZDJjNzg2ZmNmOGM5ZDM4MTZiMzE2ZTdkOTJmNDY4NWIxMmZlYTQ4Li4wYmI4NTcz
MDUzODRjYjM1ZDc4YTY0ZGFjOTQzNGQ3ZmM4MjRkOWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtNjgzLDE5ICs2ODMsNiBAQCB2
b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaQogICAgIH0KIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6
c3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmIChhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IHRoaXMtPm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBuZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+c3Vi
bWl0VGVsZW1ldHJ5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+
bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDZkM2U3YjNiYjI1NDg0MGE5NmU3OTE5YjY1MzU3
Njg5MTViMTVjMDAuLjFhNzdmYWI5NjFkZjJlNWUzMDYxMjY5ZjU5MmEyYzRjODY5NDZmOWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTIz
Nyw3ICsyMzcsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBk
YXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzaW5nKFBBTDo6U2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhdGlzdGljc0Rh
dGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vz
c2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQg
c2V0TGFzdFNlZW4oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgU2Vj
b25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDA2
ZGMxZDk5YTQ4M2ZkNDBlODMwZWY2ZDg0ZDgyNTZhMDIxMDMzMGEuLjBlYmU5MDUzMzZlMzRkMTM5
NDAyNTNiMmZlNzQxMGIwZThmYjk0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMTEzLDcgKzExMyw2
IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKCkg
QXN5bmMKICAgICBTY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFN0YXRpc3RpY3NEYXRhYmFz
ZUhhc0FsbFRhYmxlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+IChib29sIGhhc0FsbFRh
YmxlcykgQXN5bmMKLSAgICBTdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoKSBBc3luYwogICAgIFNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2Vz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgU2Vjb25kcyBzZWNvbmRzKSAtPiAoKSBBc3luYwog
ICAgIFNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbiByZXNvdXJjZURvbWFpbiwgYm9vbCBpc0dyYW5kZmF0aGVyZWQpIC0+
ICgpIEFzeW5jCiAgICAgR2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFTdW1tYXJ5KFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IHRoaXJkUGFydHlEYXRhKSBBc3luYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAppbmRleCA2
OTgzMWE3MDBiZWJmNDY1YjIyMTEyMWJmNTNlZTJiY2Q1ZmQ4ZDhkLi5hMWNlNzYyZDVlYjJiYTg5
ZDNkOGMzZGU2YzY3ZTA2M2FkNjdlM2Y4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAtMjI2LDExICsyMjYsNiBAQCB2b2lkIE5ldHdv
cmtTZXNzaW9uOjpsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1l
c3NhZ2UsIGNvbnN0CiAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2dEaWFnbm9zdGljTWVzc2FnZVdp
dGhWYWx1ZShtZXNzYWdlLCBkZXNjcmlwdGlvbiwgdmFsdWUsIHNpZ25pZmljYW50RmlndXJlcywg
c2hvdWxkU2FtcGxlKSwgMCk7CiB9CiAKLXZvaWQgTmV0d29ya1Nlc3Npb246Om5vdGlmeVBhZ2VT
dGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVy
YWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25E
YXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9w
M051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3Vi
RnJhbWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwg
dW5zaWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9w
M01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSkKLXsKLSAgICBtX25ldHdvcmtQcm9j
ZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
bnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0
aFVzZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlcklu
dGVyYWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNv
dXJjZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01l
ZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSksIDApOwotfQotCiB2b2lkIE5ldHdvcmtT
ZXNzaW9uOjpkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5z
KE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgUmVnaXN0cmFibGVEb21haW5z
VG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiBkb21haW5zLCBib29sIHNob3VsZE5v
dGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxSZWdpc3RyYWJs
ZURvbWFpbj4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogc3RvcmFn
ZVNlc3Npb24gPSBuZXR3b3JrU3RvcmFnZVNlc3Npb24oKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCmluZGV4IGMyZDRmYzU3MGE1ZmU5ZGE0MDIx
MGFkZWM5MzgxOWYyNDg1ZWY5NTkuLjJmYTI2MmQ1MDcxMDJjMGRiZTJhODM3NmEyNWE0MjQxMTll
YTg3YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmgKQEAgLTk2LDcgKzk2LDYgQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9tYWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBl
PiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxldGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwg
Ym9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hT
ZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+Jik+JiYpOwogICAgIHZvaWQgcmVnaXN0cmFi
bGVEb21haW5zV2l0aFdlYnNpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBib29s
IHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzaFNldDxXZWJDb3Jl
OjpSZWdpc3RyYWJsZURvbWFpbj4mJik+JiYpOwogICAgIHZvaWQgbG9nRGlhZ25vc3RpY01lc3Nh
Z2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlc2NyaXB0
aW9uLCB1bnNpZ25lZCB2YWx1ZSwgdW5zaWduZWQgc2lnbmlmaWNhbnRGaWd1cmVzLCBXZWJDb3Jl
OjpTaG91bGRTYW1wbGUpOwotICAgIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRv
cFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVz
b3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5z
aWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFu
VW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNS
ZW1vdmVkV2l0aG91dFVJKTsKICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NM
b2dUZXN0aW5nRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRp
c3RpY3NMb2dUZXN0aW5nRXZlbnQ7IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NMb2dUZXN0aW5nRXZlbnQoYm9vbCBsb2cpIHsgbV9lbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTG9nVGVzdGluZ0V2ZW50ID0gbG9nOyB9CiAgICAgdmlydHVhbCBib29sIGhhc0lzb2xhdGVk
U2Vzc2lvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbikgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAxNjliMjk1NzJjNWY0NWYxOWFmODQ5
YWFjNTQ0YTY4NWU1NmU1MTZkLi45NTQ1YmI5ZjdlYTI1MjM3YWE1NWU5NjkxZDYyN2UxYWVmMmI2
NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMCw3ICszMCw2IEBAIE5ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KIAogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCi1OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL0Nv
b2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKaW5kZXggZDgx
NjYyNmFkYTdkZDczOTQzYTQwYTllNzg4Njk2Y2IxYzc5NWQyZC4uMTg0YmZkZWY2NDZlNGFhZjZk
OTlmYjg5ZmE5OTA5ZTYwN2IwOTE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCkBAIC00NzEsMTMgKzQ3MSw2
IEBAIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5n
KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhCiAjZW5kaWYKIH0KIAotdm9pZCBXS1dlYnNpdGVE
YXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBk
YXRhU3RvcmVSZWYpCi17Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAg
ICBXZWJLaXQ6OnRvSW1wbChkYXRhU3RvcmVSZWYpLT5zdWJtaXRUZWxlbWV0cnkoKTsKLSNlbmRp
ZgotfQotCiB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVS
ZWYsIGJvb2wgdmFsdWUpCiB7CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFT
dG9yZVJlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0
b3JlUmVmLmgKaW5kZXggNmU2OGY3MzY4MDczY2E0N2VmZTYxYTljODBjOWU1NDExN2Q1YjVhMy4u
MWI2YjgzNThhOGI3MDkwZmM1NzQ1MzE5YzcxZTYwMDkxYzI3ZjdiYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmgKQEAg
LTExNCw3ICsxMTQsNiBAQCB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc0Z1bmN0aQogV0tfRVhQT1JUIHZvaWQg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29y
ZHMoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNG
dW5jdGlvbiBjYWxsYmFjayk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmdGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29r
aWVCbG9ja2luZyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250
ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmdGdW5j
dGlvbiBjb21wbGV0aW9uSGFuZGxlcik7Ci1XS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3Rv
cmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3Rv
cmVSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc05v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSk7CiB0eXBlZGVmIHZvaWQgKCpXS1dlYnNpdGVEYXRh
U3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdEZ1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNv
bnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lz
UnVubmluZ1Rlc3QoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1
ZSwgdm9pZCogY29udGV4dCwgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlzdGljc0lzUnVubmlu
Z1Rlc3RGdW5jdGlvbiBjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQppbmRleCBjMmRiNGEwNGQzNzhm
MjRmZGQ1ZTYzMGYxNWIyOTNiZjZiZTAxY2FiLi43NmZkYWMwZTkwMGY0ZTJmMGY1NGY2Y2YyMWQ4
YmY3MDZhMjBiMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KQEAgLTM3LDcgKzM3LDYgQEAKICNpbXBvcnQg
IldLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5Lmgi
CiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKLSNpbXBvcnQgIldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRh
RmV0Y2hPcHRpb24uaCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBh
cnR5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9u
SW50ZXJuYWwuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDFlZTRkMTgxNjM1YmNjYzFiNGMzN2NjMGIz
Zjc1ZjVlODJlMjkyOTIuLjA0ZDllNzU1MThjMzdhMTcxM2VmOTNiYTYyZGE0OTczNmE2YmE3Njkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmNwcApAQCAtMTA4OCwxNiArMTA4OCw2IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JCiAgICAgfSk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c3VibWl0VGVs
ZW1ldHJ5KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQotewotICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewot
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAg
IAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlN1Ym1p
dFRlbGVtZXRyeShzZXNzaW9uSUQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci19Ci0K
IHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lz
dGVudChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGlj
cyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghY2FuU2VuZE1lc3NhZ2UoKSkgewpAQCAtMTEzMSwyMyAr
MTEyMSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5V2Vic2l0ZURhdGFTY2Fu
Rm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogICAgIFdlYlByb2Nlc3NQcm94eTo6bm90
aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2ln
bmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNp
Z25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2Vy
SW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZh
bGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0
VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9w
M01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFS
ZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSkKLXsKLSAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUg
bWVzc2FnZUJvZHk7Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJOdW1iZXJPZlByZXZhbGVudFJlc291
cmNlcyJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZShudW1iZXJPZlByZXZhbGVudFJlc291cmNlcykp
OwotICAgIG1lc3NhZ2VCb2R5LnNldCgiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNl
ckludGVyYWN0aW9uIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKG51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbikpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiTnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uIl9zLCBBUEk6OlVJbnQ2
NDo6Y3JlYXRlKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
bikpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRl
KHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvbikpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiTWVkaWFuRGF5c1NpbmNlVXNlckludGVy
YWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uIl9zLCBBUEk6OlVJbnQ2
NDo6Y3JlYXRlKG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNl
V2l0aFVzZXJJbnRlcmFjdGlvbikpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wM051bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVJIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHRvcDNOdW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSkpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9w
M01lZGlhblN1YkZyYW1lV2l0aG91dFVJIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHRvcDNNZWRp
YW5TdWJGcmFtZVdpdGhvdXRVSSkpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wM01lZGlhblN1
YlJlc291cmNlV2l0aG91dFVJIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHRvcDNNZWRpYW5TdWJS
ZXNvdXJjZVdpdGhvdXRVSSkpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wM01lZGlhblVuaXF1
ZVJlZGlyZWN0c1dpdGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuVW5p
cXVlUmVkaXJlY3RzV2l0aG91dFVJKSk7Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJUb3AzTWVkaWFu
RGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJIl9zLCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHRvcDNN
ZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpKTsKLQotICAgIFdlYlByb2Nlc3NQcm94
eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6OkRpY3Rpb25hcnk6
OmNyZWF0ZShtZXNzYWdlQm9keSkucHRyKCkpOwotfQotCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZyb21Eb21haW4sIGNvbnN0IFJl
Z2lzdHJhYmxlRG9tYWluJiB0b0RvbWFpbiwgT3B0aW9uU2V0PFdlYkNvcmU6OkNyb3NzU2l0ZU5h
dmlnYXRpb25EYXRhVHJhbnNmZXI6OkZsYWc+IG5hdmlnYXRpb25EYXRhVHJhbnNmZXIsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIgd2ViUGFnZVByb3h5SUQsIFBhZ2VJZGVudGlmaWVyIHdlYlBhZ2VJ
RCkKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCmluZGV4IDAwMjJlZTRk
MWYyMmE1ZDAwZGRiZjQzNWQ2OGQ1ZGEyODg5MGRhODEuLmQwMzA0M2Y3OGQwMjEzMmY0MzkzMTFk
MjYyN2IwOGMzYzdkYWFkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xNzMsNyArMTczLDYgQEAgcHVibGlj
OgogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Np
b25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChQQUw6
OlNlc3Npb25JRCwgT3B0aW9uYWw8V2FsbFRpbWU+IG1vZGlmaWVkU2luY2UsIFNob3VsZEdyYW5k
ZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9u
SUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShQ
QUw6OlNlc3Npb25JRCwgU2Vjb25kcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIHNldE1heFN0YXRpc3RpY3NFbnRyaWVzKFBBTDo6U2Vzc2lvbklELCBzaXplX3QgbWF4
aW11bUVudHJ5Q291bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CkBAIC0zMDQsNyAr
MzAzLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
cm9jZXNzZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3Ry
YWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9y
UmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKTsKLSAgICB2b2lkIG5vdGlmeVJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJl
c291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlv
bkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0
b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5T
dWJGcmFtZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJ
LCB1bnNpZ25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0
b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKTsKICNlbmRpZgogICAgIHZvaWQg
cmV0cmlldmVDYWNoZVN0b3JhZ2VQYXJhbWV0ZXJzKFBBTDo6U2Vzc2lvbklEKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIxMWNkOTRkMjEwOTRiNWE4MjVhNDgzZjFhMWI4
NjA5N2FiYzg3NDkuLjJhZWFmZjM0YzdhODBlMzljMWFjMmQzM2Y3YzRhMTE1MmQxODhkNzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTQ0LDcgKzQ0LDYgQEAgbWVzc2FnZXMg
LT4gTmV0d29ya1Byb2Nlc3NQcm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAg
ICBOb3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vzc2VkKCkKICAgICBOb3RpZnlXZWJz
aXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogICAgIE5vdGlm
eVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKLSAgICBOb3Rp
ZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRh
eXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlv
biwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25l
ZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNv
dXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRV
SSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSkKICAgICBS
ZXF1ZXN0U3RvcmFnZUFjY2Vzc0NvbmZpcm0oV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVy
IHBhZ2VJRCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluIHN1YkZyYW1lRG9tYWluLCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbiB0
b3BGcmFtZURvbWFpbikgLT4gKGJvb2wgdXNlckRpZEdyYW50QWNjZXNzKSBBc3luYwogICAgIERl
bGV0ZVdlYnNpdGVEYXRhSW5VSVByb2Nlc3NGb3JSZWdpc3RyYWJsZURvbWFpbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IGRhdGFU
eXBlcywgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFGZXRjaE9wdGlvbj4gZmV0Y2hPcHRp
b25zLCBWZWN0b3I8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4+IGRvbWFpbnMpIC0+IChIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zV2l0aE1hdGNoaW5nRGF0YVJl
Y29yZHMpIEFzeW5jCiAgICAgRGlkQ29tbWl0Q3Jvc3NTaXRlTG9hZFdpdGhEYXRhVHJhbnNmZXJG
cm9tUHJldmFsZW50UmVzb3VyY2UoV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDc2
Y2NlMGNiMGJjYjBmNzM3MGM0ODNjZjhhMzQyYmU0Y2IyMzZjNGQuLjhjYWNjNTE2MTJjMTZiN2Jl
M2Y4MmE4MTFhYTQ0MTgwMWFhNzFkZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmNwcApAQCAtNDg0LDEyICs0ODQsNiBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6bm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
KCkKICAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJz
aXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQiLCBudWxscHRyKTsK
IH0KIAotdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5
RmluaXNoZWQoQVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KQotewotICAgIGZvciAoYXV0byYgcGFn
ZSA6IGdsb2JhbFBhZ2VNYXAoKSkKLSAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0lu
amVjdGVkQnVuZGxlKCJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQiLCBt
ZXNzYWdlQm9keSk7Ci19Ci0KIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNv
b2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA3ZDgwMTJhMTc5YjFjNDU4ZjA4NDZmYzhjYzE1MTZm
ZjA3YTY4YmFkLi43YjQ4MDc0NzY5ZWZkZjk2YWI3ZjUyNDE3ZjQwYjdmYWM1ZGJjNzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjIzLDcgKzIyMyw2
IEBAIHB1YmxpYzoKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
c3RhdGljIHZvaWQgbm90aWZ5UGFnZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NlZCgp
OwotICAgIHN0YXRpYyB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
QVBJOjpPYmplY3QqIG1lc3NhZ2VCb2R5KTsKIAogICAgIHN0YXRpYyB2b2lkIG5vdGlmeVdlYnNp
dGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogICAgIHN0YXRp
YyB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCmluZGV4IDQxMTkxZmViYmMzZmJiYmY2NGU2ZTk4YWI3NmY3ZDBl
YzVlZTE0Y2EuLmRhZDIwNzAxYmQzOTg5Mzk4NWM4NDJjOGExODY2YTVmNTBjZTVmZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVE
YXRhU3RvcmUuY3BwCkBAIC0xNDQ1LDEzICsxNDQ1LDYgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3Jl
OjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYKICAgICBuZXR3b3JrUHJvY2VzcygpLnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyht
X3Nlc3Npb25JRCwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYnNp
dGVEYXRhU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSgpCi17Ci0gICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKLSAgICAKLSAgICBuZXR3b3JrUHJvY2VzcygpLnN1Ym1pdFRlbGVtZXRyeShtX3Nl
c3Npb25JRCwgW10geyB9KTsKLX0KLQogdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjpzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIFNob3VsZEdy
YW5kZmF0aGVyU3RhdGlzdGljcyBzaG91bGRHcmFuZGZhdGhlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKaW5kZXggZGU0ODgwNWUxMDEwZjllYzlmY2ZlOWJiOWRhODM5Y2My
ZDhlNzgxYy4uZjNmZTY2ZDA1OTQxYWEzZjE3ZGMyOTMyNTJmNTA3YzI1ZmJjMWJjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
U3RvcmUuaApAQCAtMTg5LDcgKzE4OSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZ2V0UmVzb3VyY2VMb2FkU3RhdGlz
dGljc0RhdGFTdW1tYXJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+JiYpPiYmKTsKICAgICB2b2lkIHNj
aGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9pZCBzZXRH
cmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBpc0dyYW5kZmF0aGVyZWQoY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25k
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGVhN2JiMmU3YWU0MGNhZDAzMWExYmM0
YjExYWZhNTkwMGMyMDcxMGQuLjBlNjFiM2ZhYjk2YTQ0NzFiYjk0MDJmMmFlZjE3MDg0YmEzOTg2
NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDIyNyw4ICs0MjI3LDYgQEAKIAkJN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDsgcGF0aCA9IENsYXNzaWZp
ZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdBRkJEMzY0MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzTWVtb3J5U3RvcmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDsgcGF0aCA9IENsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJN0FGQkQzNjUyMUU1MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NNZW1vcnlTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaDsgcGF0aCA9IENsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCTdBRkJEMzZCMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGVsZW1ldHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnkuaDsgcGF0aCA9IENsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3QUZCRDM2QzIxRTU0NTQ0MDA1
REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcDsgcGF0aCA9
IENsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZEMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJz
aXN0ZW5jeVV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNkUyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNp
c3RlbmN5VXRpbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDMDY1RjI5MUM4Q0Q5NUYwMEMyRDk1MCAv
KiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0MzMsOCArODQzMSw2IEBACiAJCQkJ
N0EzRkVDQTEyMUY3QzA5NzAwRjI2N0NEIC8qIFN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCAqLywKIAkJ
CQk3QTg0M0ExQTIxRTQxRkIyMDBERUY2NjMgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcCAqLywKIAkJCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmggKi8sCi0JCQkJN0FGQkQzNkMyMUU1NDU0NDAwNURCQUNCIC8q
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovLAotCQkJCTdBRkJEMzZC
MjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IENsYXNzaWZpZXI7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDliMjM1ZGQ5NTM0OTFhOGQ3MDkxMmRiODgzYjdkMTIyNDc2MGRiMWQuLmI2MDI4YzMwMmEyOTk3
ZWY2MzhiMDQ4M2Q3MjRmMzgyMDQxNTcwMGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMC0xMC0xMyAgS2F0ZSBD
aGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyB0ZWxlbWV0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzY2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk3
NDg5ODg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVsZW1ldHJ5IGNhbGN1bGF0aW9uIGluIElUUCBpcyB1bnVzZWQsIHZlcnkgY29tcGxpY2F0ZWQs
IGEgcG90ZW50aWFsCisgICAgICAgIHByaXZhY3kgcmlzaywgYW5kIGl0IGNhdXNlcyBmbGFreSB0
ZXN0cy4gV2Ugc2hvdWxkIHJlbW92ZSBpdC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGw6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChX
VFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZSk6CisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6aW5zdGFsbFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFj
ayk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0YXRpc3RpY3NEaWRSdW5U
ZWxlbWV0cnlDYWxsYmFjayk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlRlc3RSdW5uZXI6OnN0
YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6
c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZVN5bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZSk6CisKIDIwMjAtMTAtMTMgIFNh
bSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtUZXN0aW5nXSBSZW5hbWUg
dGVzdCBoZWFkZXIgY29tbWFuZHMgdG8gbWF0Y2ggbmFtZXMgaW4gV2ViUHJlZmVyZW5jZXMqLnlh
bWwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsCmluZGV4IGRiZGFiZmM4YWVlOTBmYTIxNjczNDY3
YjM2MjllNGRkMWE1ZjJiNzEuLjU1MDZkYzM1NTViOWZkZWZlNzZhOTZiZGU0ODNiNWYzZjM2ZmFi
NjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmlu
ZGluZ3MvVGVzdFJ1bm5lci5pZGwKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbApAQCAtMjk5LDcgKzI5OSw2IEBAIGludGVy
ZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIGlzU3RhdGlzdGljc0VwaGVtZXJhbCgpOwog
ICAgIHVuZGVmaW5lZCBpbnN0YWxsU3RhdGlzdGljc0RpZE1vZGlmeURhdGFSZWNvcmRzQ2FsbGJh
Y2sob2JqZWN0IGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgaW5zdGFsbFN0YXRpc3RpY3NEaWRT
Y2FuRGF0YVJlY29yZHNDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwotICAgIHVuZGVmaW5lZCBp
bnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKG9iamVjdCBjYWxsYmFjayk7
CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbGVhbiB2YWx1ZSwgb2Jq
ZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc1ByZXZh
bGVudFJlc291cmNlRm9yRGVidWdNb2RlKERPTVN0cmluZyBob3N0TmFtZSwgb2JqZWN0IGNvbXBs
ZXRpb25IYW5kbGVyKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc0xhc3RTZWVuKERPTVN0
cmluZyBob3N0TmFtZSwgZG91YmxlIHNlY29uZHMsIG9iamVjdCBjb21wbGV0aW9uSGFuZGxlcik7
CkBAIC0zMjgsNyArMzI3LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAgIGJvb2xlYW4g
c3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCk7CiAgICAgdW5kZWZpbmVkIHN0YXRpc3RpY3NQcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgdW5kZWZpbmVkIHN0YXRpc3RpY3NV
cGRhdGVDb29raWVCbG9ja2luZyhvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwotICAgIHVuZGVm
aW5lZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRp
c3RpY3NJc1J1bm5pbmdUZXN0KGJvb2xlYW4gdmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0
aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9v
bGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoZG91YmxlIHNlY29uZHMpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRl
eCAyMzJlY2Q2ZWMyMDFjMGUzN2VlZjNmMGYzYThkYzNkYjBlMGU4MGZlLi44YTAyYzgxMjkxNzYy
Y2UzN2E3NTUyMzIyZmNmNjYwNzk3YTdhNjVkIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDU1LDIz
ICs0NTUsNiBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbQogICAgICAgICBtX3Rlc3RSdW5uZXIt
PnN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjaygpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5h
bWUsICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQiKSkgewotICAgICAg
ICBhdXRvIG1lc3NhZ2VCb2R5RGljdGlvbmFyeSA9IGRpY3Rpb25hcnlWYWx1ZShtZXNzYWdlQm9k
eSk7Ci0gICAgICAgIGF1dG8gbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMgPSB1aW50NjRWYWx1
ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyIpOwot
ICAgICAgICBhdXRvIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
biA9IHVpbnQ2NFZhbHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIk51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiIpOwotICAgICAgICBhdXRvIG51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA9IHVpbnQ2NFZhbHVlKG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgIk51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiIpOwotICAgICAgICBhdXRvIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJ
bnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IHVpbnQ2NFZhbHVlKG1lc3NhZ2VC
b2R5RGljdGlvbmFyeSwgIlRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRh
eXNTaW5jZVVzZXJJbnRlcmFjdGlvbiIpOwotICAgICAgICBhdXRvIG1lZGlhbkRheXNTaW5jZVVz
ZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiA9IHVpbnQ2
NFZhbHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIk1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiIpOwotICAgICAgICBhdXRv
IHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSA9IHVpbnQ2NFZhbHVlKG1lc3Nh
Z2VCb2R5RGljdGlvbmFyeSwgIlRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSIp
OwotICAgICAgICBhdXRvIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSA9IHVpbnQ2NFZhbHVl
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIlRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSIpOwot
ICAgICAgICBhdXRvIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSA9IHVpbnQ2NFZhbHVl
KG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIlRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSIp
OwotICAgICAgICBhdXRvIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUkgPSB1aW50
NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJUb3AzTWVkaWFuVW5pcXVlUmVkaXJlY3Rz
V2l0aG91dFVJIik7Ci0gICAgICAgIGF1dG8gdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdp
dGhvdXRVSSA9IHVpbnQ2NFZhbHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSwgIlRvcDNNZWRpYW5E
YXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkiKTsKLQotICAgICAgICBtX3Rlc3RSdW5uZXItPnN0
YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayhudW1iZXJPZlByZXZhbGVudFJlc291cmNl
cywgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBudW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRvcFByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgbWVkaWFu
RGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0
aW9uLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRvcDNNZWRpYW5TdWJG
cmFtZVdpdGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB0b3AzTWVkaWFu
VW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0
aG91dFVJKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KICAgICAKICAgICBpZiAoV0tTdHJpbmdJ
c0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIkRpZEdldEFwcGxpY2F0aW9uTWFuaWZl
c3QiKSkgewogICAgICAgICBtX3Rlc3RSdW5uZXItPmRpZEdldEFwcGxpY2F0aW9uTWFuaWZlc3Qo
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RS
dW5uZXIuY3BwCmluZGV4IDFhMmZhNWYyN2ViYmRmOGY0M2Q4Y2YzZjJiMjZiMTU4YjlmMDFhN2Yu
LmQzN2RhNjY2ZmVmZGI1MDQ5ODdiMjBlYmYzMzRiNDVhOGZmYTZiNmUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcApAQCAt
NzMyLDcgKzczMiw2IEBAIGVudW0gewogICAgIFNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJh
Y3Rpb25DYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxi
YWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrSUQsCi0gICAg
U3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZENs
ZWFyVGhyb3VnaFdlYnNpdGVEYXRhUmVtb3ZhbENhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0Rp
ZENsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50U3RvcmVDYWxsYmFja0lELAogICAgIFN0YXRpc3Rp
Y3NEaWRSZXNldFRvQ29uc2lzdGVudFN0YXRlQ2FsbGJhY2tJRCwKQEAgLTE1NTIsMjAgKzE1NTEs
NiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFj
aygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNv
cmRzQ2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6aW5zdGFsbFN0YXRpc3RpY3NE
aWRSdW5UZWxlbWV0cnlDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKQotewotICAgIGNhY2hl
VGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELCBj
YWxsYmFjayk7Ci19Ci0gICAgCi12b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NEaWRSdW5UZWxl
bWV0cnlDYWxsYmFjayh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWdu
ZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2ln
bmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFs
ZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRV
SSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3Az
TWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJl
Y29yZHNSZW1vdmVkV2l0aG91dFVJKQotewotICAgIFN0cmluZyBzdHJpbmcgPSBtYWtlU3RyaW5n
KCJ7IFwibnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNcIiA6ICIsIG51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzLCAiLCBcIm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvblwiIDogIiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LCAiLCBcIm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvblwi
IDogIiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAi
LCBcInRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvblwiIDogIiwgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9u
RGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCAiLCBcIm1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvblwiIDogIiwgbWVkaWFuRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9u
LCAiLCBcInRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSVwiIDogIiwgdG9wM051
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCAiLCBcInRvcDNNZWRpYW5TdWJGcmFtZVdp
dGhvdXRVSVwiIDogIiwgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCAiLCBcInRvcDNNZWRp
YW5TdWJSZXNvdXJjZVdpdGhvdXRVSVwiIDogIiwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91
dFVJLCAiLCBcInRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUlcIiA6ICIsIHRvcDNN
ZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksICIsIFwidG9wM01lZGlhbkRhdGFSZWNvcmRz
UmVtb3ZlZFdpdGhvdXRVSVwiIDogIiwgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhv
dXRVSSwgIiB9Iik7Ci0gICAgCi0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZUZy
b21KU09OU3RyaW5nKG1haW5GcmFtZUpTQ29udGV4dCgpLCBjcmVhdGVKU1N0cmluZyhzdHJpbmcu
dXRmOCgpLmRhdGEoKSkuZ2V0KCkpOwotCi0gICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0
aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2tJRCwgMSwgJnJlc3VsdCk7Ci19Ci0KIGJvb2wg
VGVzdFJ1bm5lcjo6c3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCkKIHsKICAgICByZXR1cm4gSW5q
ZWN0ZWRCdW5kbGU6OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOwpAQCAt
MTU4OCwxMSArMTU3Myw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0NhbGxEaWRTZXRC
bG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2soKQogICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2so
U3RhdGlzdGljc0RpZFNldEJsb2NrQ29va2llc0Zvckhvc3RDYWxsYmFja0lEKTsKIH0KIAotdm9p
ZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCkKLXsKLSAgICBwb3N0U3lu
Y2hyb25vdXNNZXNzYWdlKCJTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5Iik7Ci19Ci0KIHZvaWQg
VGVzdFJ1bm5lcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNj
YW5uZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBwb3N0U3luY2hyb25vdXNNZXNzYWdlKCJTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCIsIHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKaW5k
ZXggYjYxNDFjZTc3YjY4N2M0NTlhOGU4NWQ0MDdhMDQ0NjJjNzIxOWE3Ny4uOGZiY2RmOTdmZTZi
ODYxOTQ2MGM4MzcwMmExNmQ3MTI1NWU5MDlkYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmgKQEAgLTM4OCwxNSArMzg4LDEyIEBA
IHB1YmxpYzoKICAgICBib29sIGlzU3RhdGlzdGljc0VwaGVtZXJhbCgpOwogICAgIHZvaWQgaW5z
dGFsbFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxiYWNrKEpTVmFsdWVSZWYgY2Fs
bGJhY2spOwogICAgIHZvaWQgaW5zdGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxs
YmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGluc3RhbGxTdGF0aXN0aWNzRGlk
UnVuVGVsZW1ldHJ5Q2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBzdGF0
aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjaygpOwogICAgIHZvaWQgc3RhdGlzdGlj
c0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzRGlkUnVu
VGVsZW1ldHJ5Q2FsbGJhY2sodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5z
aWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblBy
ZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRo
b3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQg
dG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRh
dGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiAgICAgYm9vbCBzdGF0aXN0aWNzTm90aWZ5T2Jz
ZXJ2ZXIoKTsKICAgICB2b2lkIHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNv
cmRzKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldEJsb2Nr
Q29va2llc0Zvckhvc3RDYWxsYmFjaygpOwotICAgIHZvaWQgc3RhdGlzdGljc1N1Ym1pdFRlbGVt
ZXRyeSgpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0RlYnVnTW9kZShib29sIHZhbHVlLCBKU1Zh
bHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0
RGVidWdNb2RlQ2FsbGJhY2soKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZUZvckRlYnVnTW9kZShKU1N0cmluZ1JlZiBob3N0TmFtZSwgSlNWYWx1ZVJlZiBjb21wbGV0
aW9uSGFuZGxlcik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDU4MTQzNjY3MTNlOGJiYjk0ZmFkMjU3N2Y4OTc2MTNlOTA2NzI5MWEuLjQzZjZhMjYyNDMy
ZjNhNjhkMWNhMTI3MzNkZjM3M2ZjMzgyNjU3NjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0zMjI0LDExICszMjI0LDYgQEAgdm9pZCBUZXN0Q29udHJv
bGxlcjo6c3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKCkKICAgICBtX2N1cnJlbnRJbnZv
Y2F0aW9uLT5kaWRTZXRCbG9ja0Nvb2tpZXNGb3JIb3N0KCk7CiB9CiAKLXZvaWQgVGVzdENvbnRy
b2xsZXI6OnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKQotewotICAgIFdLV2Vic2l0ZURhdGFT
dG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkod2Vic2l0ZURhdGFTdG9yZSgpKTsKLX0KLQog
dm9pZCBUZXN0Q29udHJvbGxlcjo6c2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNv
cmRzV2VyZVNjYW5uZWQoYm9vbCB2YWx1ZSkKIHsKICAgICBXS1dlYnNpdGVEYXRhU3RvcmVTZXRT
dGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZCh3ZWJzaXRlRGF0
YVN0b3JlKCksIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuaApp
bmRleCAwYjk4MTc3MDdkNmFmNDY1YWM1OTc4MTc4YTkyYTc5YzUwZDM1ZGY0Li5hZjkzNTYzMWNk
NjRlN2RjNDVkNjE3ZDcyZmQ1MjQ4ZmM2Y2M5ODQ2IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0Q29udHJvbGxlci5oCkBAIC0yMzgsNyArMjM4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
U3RhdGlzdGljc1RpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oZG91YmxlIHNlY29uZHMpOwogICAg
IHZvaWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2
b2lkIHN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZygpOwotICAgIHZvaWQgc3RhdGlzdGlj
c1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzSXNS
dW5uaW5nVGVzdChib29sKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJl
c291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggOTU1OTllYjdiZWZhZmNjNDI2YmYxNGEzM2Ey
ZWE0ZDZlMjk2NzExOC4uMTRjMDRlZDFmYTkzOTRmNTcyZjY0OWE5MWI0N2VmYjIwNmVmODU0ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKKysr
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTExNDMsMTEg
KzExNDMsNiBAQCBXS1JldGFpblB0cjxXS1R5cGVSZWY+IFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNl
aXZlU3luY2hyb25vdXNNZXNzYWdlRnJvbUluamVjdGVkQgogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICB9CiAKLSAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdl
TmFtZSwgIlN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkiKSkgewotICAgICAgICBUZXN0Q29udHJv
bGxlcjo6c2luZ2xldG9uKCkuc3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0
cmluZyhtZXNzYWdlTmFtZSwgIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkIikpIHsKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNpbmdsZXRvbigpLnNldFN0
YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKGJvb2xlYW5WYWx1
ZShtZXNzYWdlQm9keSkpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxYzEzMGI1
MTEzMjRhYTFiZjRkY2NkOTg1ZTU0MjQyNzJiNzYyZGQwLi44Y2E5ZGYxYjE1ZWNlOTAyOTM5ZDAw
MzRjZDY5MTQzOGIxNjg4OTExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTAtMTMgIEth
dGUgQ2hlbmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3Zl
IFJlc291cmNlTG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY5NzQ4OTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNl
TG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnkt
Z2VuZXJhdGlvbi5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3drMi9UZXN0RXhw
ZWN0YXRpb25zOgorCiAyMDIwLTEwLTEzICBTYW0gV2VpbmlnICA8d2VpbmlnQGFwcGxlLmNvbT4K
IAogICAgICAgICBbVGVzdGluZ10gUmVuYW1lIHRlc3QgaGVhZGVyIGNvbW1hbmRzIHRvIG1hdGNo
IG5hbWVzIGluIFdlYlByZWZlcmVuY2VzKi55YW1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
L3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYzY3MDU2MDBiY2I0ZTNhYjU4ZDEzMjM1YzYwMTgyOWQxMzg0YTVkZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24tZXhwZWN0
ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGVzdHMgdGhhdCB0ZWxlbWV0
cnkgZm9yIHByZXZhbGVudCByZXNvdXJjZXMgaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHkuCi0KLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIEhvc3RzIGNsYXNzaWZpZWQgYXMgcHJl
dmFsZW50IHJlc291cmNlcy4KLUZBSUwgdGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNl
cyBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVu
ZGVmaW5lZCkuCi1GQUlMIHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNl
ckludGVyYWN0aW9uIHNob3VsZCBiZSAwIChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRlZmluZWQg
KG9mIHR5cGUgdW5kZWZpbmVkKS4KLUZBSUwgdGVzdFJlc3VsdC50b3AzU3ViZnJhbWVVbmRlclRv
cEZyYW1lT3JpZ2lucyBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVk
IChvZiB0eXBlIHVuZGVmaW5lZCkuCi1QQVNTIEhvc3RzIGNsYXNzaWZpZWQgYXMgcHJldmFsZW50
IHJlc291cmNlcy4KLUZBSUwgdGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNlcyBzaG91
bGQgYmUgNCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVuZGVmaW5l
ZCkuCi1GQUlMIHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uIHNob3VsZCBiZSAxIChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRlZmluZWQgKG9mIHR5
cGUgdW5kZWZpbmVkKS4KLUZBSUwgdGVzdFJlc3VsdC50b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2lucyBzaG91bGQgYmUgNCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0
eXBlIHVuZGVmaW5lZCkuCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi1Tb21lIHRl
c3RzIGZhaWxlZC4KLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0
cnktZ2VuZXJhdGlvbi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzU1N2U4
MjM5ODhiNzNhYzhlMDQzZjY3ZmRlZmVkOGRjNGY3MGQ1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi5odG1sCisrKyAvZGV2L251bGwKQEAg
LTEsMTIwICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLSAgICA8bWV0
YSBjaGFyc2V0PSJVVEYtOCI+Ci0gICAgPHRpdGxlPlRlc3QgZm9yIFRlbGVtZXRyeSBHZW5lcmF0
aW9uPC90aXRsZT4KLSAgICA8c2NyaXB0IHNyYz0iL2pzLXRlc3QtcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvdXRpbC5qcyI+PC9zY3Jp
cHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRlc3RzIHRo
YXQgdGVsZW1ldHJ5IGZvciBwcmV2YWxlbnQgcmVzb3VyY2VzIGlzIGNhbGN1bGF0ZWQgY29ycmVj
dGx5LiIpOwotICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOwotCi0gICAgY29uc3QgdG9wRnJhbWVV
cmwxID0gImh0dHA6Ly8xMjcuMC4wLjE6ODAwMC90ZW1wIjsKLSAgICBjb25zdCB0b3BGcmFtZVVy
bDIgPSAiaHR0cDovLzEyNy4wLjAuMjo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHRvcEZyYW1lVXJs
MyA9ICJodHRwOi8vMTI3LjAuMC4zOjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgdG9wRnJhbWVVcmw0
ID0gImh0dHA6Ly8xMjcuMC4wLjQ6ODAwMC90ZW1wIjsKLSAgICBjb25zdCBwcmV2YWxlbnRSZXNv
dXJjZVVybDEgPSAiaHR0cDovLzEyNy4wLjEuMTo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHByZXZh
bGVudFJlc291cmNlVXJsMiA9ICJodHRwOi8vMTI3LjAuMS4yOjgwMDAvdGVtcCI7Ci0gICAgY29u
c3QgcHJldmFsZW50UmVzb3VyY2VVcmwzID0gImh0dHA6Ly8xMjcuMC4xLjM6ODAwMC90ZW1wIjsK
LSAgICBjb25zdCBwcmV2YWxlbnRSZXNvdXJjZVVybDQgPSAiaHR0cDovLzEyNy4wLjEuNDo4MDAw
L3RlbXAiOwotCi0gICAgZnVuY3Rpb24gY2hlY2tJbnN1ZmZpY2llbnRDbGFzc2lmaWNhdGlvbkFu
ZENvbnRpbnVlKCkgewotICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VVcmwxKSkgewotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCAxIGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNl
LiIpOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsK
LSAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShwcmV2YWxlbnRSZXNvdXJjZVVybDIpKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJI
b3N0IDIgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0g
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdHMgY2xhc3NpZmllZCBhcyBw
cmV2YWxlbnQgcmVzb3VyY2VzLiIpOwotICAgICAgICAgICAgcnVuVGVsZW1ldHJ5QW5kQ29udGlu
dWUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrU3VmZmljaWVudENs
YXNzaWZpY2F0aW9uQW5kQ29udGludWUoKSB7Ci0gICAgICAgIGlmICghdGVzdFJ1bm5lci5pc1N0
YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRSZXNvdXJjZVVybDEpKSB7Ci0gICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IDEgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2
YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBm
aW5pc2hKU1Rlc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGlj
c1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNlVXJsMikpIHsKLSAgICAgICAgICAg
IHRlc3RGYWlsZWQoIkhvc3QgMiBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCBy
ZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpT
VGVzdCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFs
ZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VVcmwzKSkgewotICAgICAgICAgICAgdGVzdEZh
aWxlZCgiSG9zdCAzIGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNl
LiIpOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsK
LSAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNv
dXJjZShwcmV2YWxlbnRSZXNvdXJjZVVybDQpKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJI
b3N0IDQgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0g
ICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgdGVzdFBhc3NlZCgiSG9zdHMgY2xhc3NpZmllZCBhcyBw
cmV2YWxlbnQgcmVzb3VyY2VzLiIpOwotICAgICAgICAgICAgcnVuVGVsZW1ldHJ5QW5kQ29udGlu
dWUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1bmN0aW9uIG1ha2VVcmxQcmV2YWxlbnQo
cHJldmFsZW50UmVzb3VyY2VVcmwpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNz
U3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFt
ZVVybDEpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9w
RnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMik7Ci0gICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2
YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwzKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRT
dGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJs
LCB0b3BGcmFtZVVybDQpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJl
c291cmNlVW5pcXVlUmVkaXJlY3RUbyhwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwx
KTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRp
cmVjdFRvKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDIpOwotICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8ocHJldmFsZW50
UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMyk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9w
RnJhbWVVcmw0KTsKLQotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMSk7
Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFt
ZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwyKTsKLSAgICAgICAgdGVz
dFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZh
bGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDMpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0
YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VV
cmwsIHRvcEZyYW1lVXJsNCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gc2V0VXBJbnN1ZmZpY2ll
bnRTdGF0aXN0aWNzQW5kQ29udGludWUoKSB7Ci0gICAgICAgIG1ha2VVcmxQcmV2YWxlbnQocHJl
dmFsZW50UmVzb3VyY2VVcmwxKTsKLSAgICAgICAgbWFrZVVybFByZXZhbGVudChwcmV2YWxlbnRS
ZXNvdXJjZVVybDIpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRT
Y2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja0luc3VmZmljaWVudENsYXNzaWZpY2F0aW9uQW5k
Q29udGludWUpOwotICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkUnVuVGVs
ZW1ldHJ5Q2FsbGJhY2soY2hlY2tJbnN1ZmZpY2llbnRUZWxlbWV0cnkpOwotICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gc2V0VXBTdWZmaWNpZW50U3RhdGlzdGljc0FuZENvbnRpbnVlKCkg
ewotICAgICAgICBtYWtlVXJsUHJldmFsZW50KHByZXZhbGVudFJlc291cmNlVXJsMyk7Ci0gICAg
ICAgIG1ha2VVcmxQcmV2YWxlbnQocHJldmFsZW50UmVzb3VyY2VVcmw0KTsKLQotICAgICAgICB0
ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NIYXNIYWRVc2VySW50ZXJhY3Rpb24ocHJldmFsZW50UmVz
b3VyY2VVcmw0LCB0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuaW5z
dGFsbFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFjayhjaGVja1N1ZmZpY2llbnRD
bGFzc2lmaWNhdGlvbkFuZENvbnRpbnVlKTsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIuaW5zdGFs
bFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayhjaGVja1N1ZmZpY2llbnRUZWxlbWV0
cnkpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NB
bmREYXRhUmVjb3JkcygpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBydW5U
ZWxlbWV0cnlBbmRDb250aW51ZSgpIHsKLSAgICAgICAgdGVzdFJ1bm5lci5zdGF0aXN0aWNzU3Vi
bWl0VGVsZW1ldHJ5KCk7Ci0gICAgfQotCi0gICAgdmFyIHRlc3RSZXN1bHQ7Ci0gICAgZnVuY3Rp
b24gY2hlY2tJbnN1ZmZpY2llbnRUZWxlbWV0cnkocmVzdWx0KSB7Ci0gICAgICAgIHRlc3RSZXN1
bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50
UmVzb3VyY2VzIiwgIjAiKTsKLSAgICAgICAgc2hvdWxkQmUoInRlc3RSZXN1bHQudG90YWxQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uIiwgIjAiKTsKLSAgICAgICAgc2hvdWxk
QmUoInRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLCAiMCIpOwot
ICAgICAgICBzZXRVcFN1ZmZpY2llbnRTdGF0aXN0aWNzQW5kQ29udGludWUoKTsKLSAgICB9Ci0K
LSAgICBmdW5jdGlvbiBjaGVja1N1ZmZpY2llbnRUZWxlbWV0cnkocmVzdWx0KSB7Ci0gICAgICAg
IHRlc3RSZXN1bHQgPSByZXN1bHQ7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFs
UHJldmFsZW50UmVzb3VyY2VzIiwgIjQiKTsKLSAgICAgICAgc2hvdWxkQmUoInRlc3RSZXN1bHQu
dG90YWxQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uIiwgIjEiKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMi
LCAiNCIpOwotICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwot
ICAgIH0KLQotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAgICBzZXRFbmFibGVG
ZWF0dXJlKHRydWUsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgc2V0VXBJbnN1ZmZpY2llbnRT
dGF0aXN0aWNzQW5kQ29udGludWUoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotPC9zY3JpcHQ+Ci08
L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDY3Mzc4MzdlMjg2MzJlMGRkNjVkYjdhZTFhZmNkMWYxNDk4ZjQ0ZDIuLjdkNjJlYzVk
ZjcxY2E0ZjA5ZTkzMjQxODBhNGJhYWU4NzUyMmEyNGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9UZXN0RXhwZWN0YXRpb25zCkBAIC03MjMsNyArNzIzLDYgQEAgaHR0cC90ZXN0cy9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3AtZnJh
bWUtcmVkaXIKIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1w
cmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXVuaXF1ZS1yZWRpcmVjdHMtdG8uaHRtbCBbIFBh
c3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsZWFyLWluLW1lbW9yeS1h
bmQtcGVyc2lzdGVudC1zdG9yZS5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MvZ3JhbmRmYXRoZXJpbmcuaHRtbCBbIFBhc3MgXQotd2Via2l0Lm9yZy9iLzE4
MDcwMyBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRp
b24uaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvcHJ1bmUtc3RhdGlzdGljcy5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3MgWyBQYXNzIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411269</attachid>
            <date>2020-10-13 15:28:24 -0700</date>
            <delta_ts>2020-10-13 15:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217665-20201013152822.patch</filename>
            <type>text/plain</type>
            <size>114001</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzOTAzMDNmZDAxNTFiZjU3
ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjY3MTFmZGI0MWY0YWExNjJhZjMzY2Q0OWU4OTIzMGE0
ZWZiNzUzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4
OTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
bGVtZXRyeSBjYWxjdWxhdGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBh
IHBvdGVudGlhbAorICAgICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVz
dHMuIFdlIHNob3VsZCByZW1vdmUgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGlu
ZyBJVFAgdGVzdHMgd2lsbCBjaGVjayBmb3Igbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Om1ha2VNZWRpYW5XaXRoVUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkUXVlcnlTdGFydEFuZEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1h
a2VNZWRpYW5XaXRob3V0VUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdldE1l
ZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJj
ZURheXNTaW5jZVVJIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2V0TWVkaWFu
T2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVzb3VyY2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bWFrZVN0YXRpc3RpY1F1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNh
bGN1bGF0ZVRlbGVtZXRyeURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
aG91bGRTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogUGxh
dGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291cmNlc1dQRS50eHQ6CisKIDIwMjAtMTAtMTMg
IEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2NvYTog
TWFrZSBXZWJHTExheWVyIG5vdCBkZXBlbmRlbnQgb24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmNwcAppbmRleCBlZmUwYzAwNWFlZDI5MWRkM2U1NmQ5MjU0ZDVlMWU3YThkNDUzODk1Li40ZTdj
NjA5OWVkMDJlY2NlMmRkMDZhMWRkYmYzNzFmNWEwNGNiZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKQEAgLTM1LDcgKzM1
LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNp
bmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5
LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25z
b2xlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgpA
QCAtMjM0LDggKzIzMyw2IEBAIGNvbnN0ZXhwciBhdXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVz
b3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVBVEUgVU5JUVVFIElOCiBjb25zdGV4cHIgYXV0
byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVB
VEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMgU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNG
cm9tX3N1YnJlc291cmNlRG9tYWluSURfZnJvbURvbWFpbklEIG9uIFN1YnJlc291cmNlVW5kZXJU
b3BGcmFtZURvbWFpbnMgKCBzdWJyZXNvdXJjZURvbWFpbklELCBmcm9tRG9tYWluSUQgKTsiX3M7
CiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFU
RSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBPcGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21v
bnRoRGF5IG9uIE9wZXJhdGluZ0RhdGVzICggeWVhciwgbW9udGgsIG1vbnRoRGF5ICk7Il9zOwog
Ci1jb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0g
MzsKLQogc3RhdGljIGNvbnN0IFN0cmluZyBPYnNlcnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkK
IHsKICAgICByZXR1cm4gY3JlYXRlT2JzZXJ2ZWREb21haW47CkBAIC0yOTYsMTEgKzI5Myw2IEBA
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAgaWYgKCFtX2RhdGFiYXNlLnR1cm5PbkluY3Jl
bWVudGFsQXV0b1ZhY3V1bSgpKQogICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAi
JXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6dHVybk9uSW5jcmVtZW50
YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcs
IHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwogCi0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoQWZ0ZXIoNV9zLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAg
aWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRl
bGVtZXRyeSgpOwotICAgIH0pOwotCiAgICAgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZO
ZWNlc3NhcnkoKTsKICAgICBhbGxTdG9yZXMoKS5hZGQodGhpcyk7CiB9CkBAIC05NDIsMTEgKzkz
NCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmdWaWV3IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGlu
ZygpCiAgICAgICAgICJHUk9VUCBCWSBkb21haW5JRCkgT1JERVIgQlkgc3VtIERFU0MgIjsKIH0K
IAotc3RhdGljIFNRTGl0ZVN0YXRlbWVudCBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0
YWJhc2UmIGRhdGFiYXNlKQotewotICAgIHJldHVybiBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2Us
IG1ha2VTdHJpbmcoIlNFTEVDVCBtb3N0UmVjZW50VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9i
c2VydmVkRG9tYWlucyBJTk5FUiBKT0lOIChTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JT
b3J0aW5nKCksICIpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5J
RCBMSU1JVCAxIE9GRlNFVCA/IikpOwotfQotCiBWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNG
aXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGlyZFBhcnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lz
dHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWluKSBjb25zdAogewogICAgIGF1dG8gc2NvcGVk
U3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0
YXRlbWVudCwgZ2V0QWxsU3ViU3RhdGlzdGljc1VuZGVyRG9tYWluUXVlcnksICJnZXRUaGlyZFBh
cnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbnMiX3MpOwpAQCAtOTk0LDI2NiArOTgx
LDYgQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURh
dGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQKICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFM
aXN0OwogfQogCi1zdGF0aWMgc3RkOjpwYWlyPFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+IGJ1aWxk
UXVlcnlTdGFydEFuZEVuZChQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0
aXN0aWMgc3RhdGlzdGljKQotewotICAgIHN3aXRjaCAoc3RhdGlzdGljKSB7Ci0gICAgY2FzZSBQ
cmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblN1YkZy
YW1lV2l0aG91dFVJOgotICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoIlNFTEVDVCBjb3Vu
dFN1YkZyYW1lVW5kZXJUb3BGcmFtZSBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4o
U0VMRUNUIGNvdW50U3ViRnJhbWVVbmRlclRvcEZyYW1lLCAiLCAiKSBhcyBxIE9OIG8uZG9tYWlu
SUQgPSBxLmRvbWFpbklEIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJl
c291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuU3ViUmVzb3VyY2VXaXRo
b3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIGNvdW50U3ViUmVz
b3VyY2VVbmRlclRvcEZyYW1lIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxF
Q1QgY291bnRTdWJSZXNvdXJjZVVuZGVyVG9wRnJhbWUsICIsICIpIGFzIHEgT04gby5kb21haW5J
RCA9IHEuZG9tYWluSUQgTElNSVQgMSBPRkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVz
b3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5VbmlxdWVSZWRpcmVjdHNX
aXRob3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIGNvdW50VW5p
cXVlUmVkaXJlY3RUbyBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUIGNv
dW50VW5pcXVlUmVkaXJlY3RUbywgIiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5kb21haW5J
RCBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNl
VGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSToK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgZGF0YVJlY29yZHNSZW1vdmVk
IEZST00gKFNFTEVDVCAqIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1Qg
IiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5kb21haW5JRCkgTElNSVQgMSBPRkZTRVQgPyIp
OwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGlj
OjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9Vc2VySW50ZXJhY3Rpb25XaXRob3V0VUk6Ci0gICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VMRUNUIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbiBGUk9NIChTRUxFQ1QgKiBGUk9NIE9ic2VydmVkRG9tYWlu
cyBvIElOTkVSIEpPSU4oU0VMRUNUICIsICIpIGFzIHEgT04gby5kb21haW5JRCA9IHEuZG9tYWlu
SUQpIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJh
c2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuVGltZXNBY2Nlc3NlZER1ZVRvU3RvcmFnZUFj
Y2Vzc0FQSVdpdGhvdXRVSToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1Qg
dGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSSBGUk9NIChTRUxF
Q1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUICIsICIpIGFzIHEg
T04gby5kb21haW5JRCA9IHEuZG9tYWluSUQpIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNl
IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVUk6Ci0gICAgICAgIExPR19FUlJPUigiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1ha2VNZWRpYW5XaXRob3V0VUlRdWVyeSB3YXMgY2Fs
bGVkIGZvciBhbiBpbmNvcnJlY3Qgc3RhdGlzdGljLCB1bmRldGVybWluZWQgcXVlcnkgYmVoYXZp
b3Igd2lsbCByZXN1bHQuIik7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0KLXN0YXRpYyBTUUxpdGVTdGF0ZW1lbnQgbWFr
ZU1lZGlhbldpdGhvdXRVSVF1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgUHJldmFsZW50
UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljIHN0YXRpc3RpYykKLXsKLSAgICBh
dXRvW3F1ZXJ5U3RhcnQsIHF1ZXJ5RW5kXSA9IGJ1aWxkUXVlcnlTdGFydEFuZEVuZChzdGF0aXN0
aWMpOwotCi0gICAgcmV0dXJuIFNRTGl0ZVN0YXRlbWVudChkYXRhYmFzZSwgbWFrZVN0cmluZyhx
dWVyeVN0YXJ0LCBqb2luU3ViU3RhdGlzdGljc0ZvclNvcnRpbmcoKSwgcXVlcnlFbmQpKTsKLX0K
LQotc3RhdGljIHVuc2lnbmVkIGdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJ
bnRlcmFjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIHVuc2lnbmVkIHByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3VudCkKLXsKLSAgICBTUUxpdGVTdGF0ZW1lbnQg
bWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQgPSBtYWtlTWVkaWFuV2l0aFVJUXVlcnkoZGF0YWJh
c2UpOwotCi0gICAgLy8gUHJlcGFyZQotICAgIGlmIChtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVu
dC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5l
dHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gQmlu
ZAotICAgIGlmIChtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNR
TElURV9PSyB8fCBtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50KDIsIDEpICE9IFNR
TElURV9PSyB8fCBtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50KDMsIChwcmV2YWxl
bnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uQ291bnQgLyAyKSAhPSBTUUxJVEVfT0spKSB7
Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlcklu
dGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2Uu
bGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAg
cmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gU3RlcAotICAgIGlmIChtZWRpYW5EYXlzU2luY2VV
SVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JPVykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBkb3VibGUgcmF3U2Vjb25kcyA9IG1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmdldENvbHVt
bkRvdWJsZSgwKTsKLSAgICBXYWxsVGltZSB3YWxsVGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vj
b25kcyhyYXdTZWNvbmRzKTsKLSAgICB1bnNpZ25lZCBtZWRpYW4gPSB3YWxsVGltZSA8PSBXYWxs
VGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHdhbGxUaW1lKSAvIDI0
X2gpOwotCi0gICAgaWYgKHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3Vu
dCAmIDEpCi0gICAgICAgIHJldHVybiBtZWRpYW47Ci0KLSAgICBTUUxpdGVTdGF0ZW1lbnQgbG93
ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudCA9IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShkYXRh
YmFzZSk7Ci0KLSAgICAvLyBQcmVwYXJlCi0gICAgaWYgKGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlT
dGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1l
ZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2Fn
ZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAg
IC8vIEJpbmQKLSAgICBpZiAobG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50
KDEsIDEpICE9IFNRTElURV9PSyB8fCBsb3dlck1lZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJp
bmRJbnQoMiwgMSkgIT0gU1FMSVRFX09LIHx8IGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1l
bnQuYmluZEludCgzLCAoKHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3Vu
dCAtIDEpIC8gMikpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihO
ZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1lZGlhbk9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIg
UFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIFN0
ZXAKLSAgICBpZiAobG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5zdGVwKCkgPT0gU1FM
SVRFX1JPVykgewotICAgICAgICBkb3VibGUgcmF3U2Vjb25kc0xvd2VyID0gbG93ZXJNZWRpYW5E
YXlzU2luY2VVSVN0YXRlbWVudC5nZXRDb2x1bW5Eb3VibGUoMCk7Ci0gICAgICAgIFdhbGxUaW1l
IHdhbGxUaW1lTG93ZXIgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMocmF3U2Vjb25kc0xvd2Vy
KTsKLSAgICAgICAgcmV0dXJuICgod2FsbFRpbWVMb3dlciA8PSBXYWxsVGltZSgpID8gMCA6IHN0
ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHdhbGxUaW1lTG93ZXIpIC8gMjRfaCkpICsgbWVk
aWFuKSAvIDI7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMo
KSBjb25zdAotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNTdGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVz
b3VyY2VzUXVlcnksICJnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyJfcyk7Ci0gICAgaWYg
KCFzY29wZWRTdGF0ZW1lbnQpCi0gICAgICAgIHJldHVybiAwOwotICAgIAotICAgIGF1dG8gc3Rl
cFZhbHVlID0gc2NvcGVkU3RhdGVtZW50LT5zdGVwKCk7Ci0gICAgaWYgKHN0ZXBWYWx1ZSAhPSBT
UUxJVEVfUk9XICYmIHN0ZXBWYWx1ZSAhPSBTUUxJVEVfRE9ORSkgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNz
YWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0g
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0g
ICAgaWYgKHN0ZXBWYWx1ZSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIHVuc2lnbmVkIHByZXZh
bGVudFJlc291cmNlQ291bnQgPSBzY29wZWRTdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKLSAg
ICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291bnQgPj0gbWluaW11bVByZXZhbGVudFJlc291
cmNlc0ZvclRlbGVtZXRyeSkKLSAgICAgICAgICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZUNv
dW50OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdW5zaWduZWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJ
KCkgY29uc3QKLXsKLSAgICBhdXRvIHNjb3BlZFN0YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRl
bWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVu
dCwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uUXVlcnksICJnZXRO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSJfcyk7Ci0gICAgaWYgKHNjb3BlZFN0YXRl
bWVudCAmJiBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAg
IGludCBjb3VudCA9IHNjb3BlZFN0YXRlbWVudC0+Z2V0Q29sdW1uSW50KDApOwotICAgICAgICBy
ZXR1cm4gY291bnQ7Ci0gICAgfQotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0VG9wUHJldmVsZW50UmVzb3VyY2VEYXlz
U2luY2VVSSgpIGNvbnN0Ci17Ci0gICAgU1FMaXRlU3RhdGVtZW50IHRvcFByZXZhbGVudFJlc291
cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCht
X2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1QgbW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRp
bWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgSU5ORVIgSk9JTiAoU0VMRUNUICIsIGpvaW5TdWJTdGF0
aXN0aWNzRm9yU29ydGluZygpLCAiIExJTUlUIDEpIGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRv
bWFpbklEID0gcS5kb21haW5JRDsiKSk7Ci0gICAgCi0gICAgLy8gUHJlcGFyZQotICAgIGlmICh0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvblN0YXRlbWVudCBxdWVyeSBmYWlsZWQgdG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTog
JSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAot
ICAgIC8vIEJpbmQKLSAgICBpZiAodG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0
aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmJpbmRJbnQoMSwgMSkgIT0gU1FM
SVRFX09LCi0gICAgICAgIHx8IHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlv
bkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudC5iaW5kSW50KDIsIDEpICE9IFNRTElU
RV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRl
cmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBxdWVyeSBmYWlsZWQgdG8g
YmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotICAgIAotICAgIC8vIFN0ZXAKLSAgICBpZiAodG9wUHJldmFsZW50UmVz
b3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50
LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGRvdWJsZSByYXdTZWNvbmRzID0gdG9w
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uU3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgwKTsKLSAgICAgICAgV2FsbFRpbWUgd2FsbFRp
bWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMocmF3U2Vjb25kcyk7Ci0gICAgICAgIHJldHVy
biB3YWxsVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3co
KSAtIHdhbGxUaW1lKSAvIDI0X2gpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGlj
IHVuc2lnbmVkIGdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VXaXRob3V0VXNlckludGVyYWN0
aW9uKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgdW5zaWduZWQgYnVja2V0U2l6ZSwgUHJldmFs
ZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljIHN0YXRpc3RpYywgdW5zaWdu
ZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkpCi17Ci0gICAgaWYgKG51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIDwgYnVja2V0U2l6ZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICB1bnNpZ25lZCBtZWRpYW4gPSAwOwotICAgIFNRTGl0ZVN0YXRlbWVudCBn
ZXRNZWRpYW5TdGF0aXN0aWMgPSBtYWtlTWVkaWFuV2l0aG91dFVJUXVlcnkoZGF0YWJhc2UsIHN0
YXRpc3RpYyk7Ci0KLSAgICBpZiAoZ2V0TWVkaWFuU3RhdGlzdGljLnByZXBhcmUoKSA9PSBTUUxJ
VEVfT0spIHsKLSAgICAgICAgaWYgKGdldE1lZGlhblN0YXRpc3RpYy5iaW5kSW50KDEsIDEpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgZ2V0TWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMiwg
MCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBnZXRNZWRpYW5TdGF0aXN0aWMuYmluZElu
dCgzLCAoYnVja2V0U2l6ZSAvIDIpKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9H
X1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBp
ZiAoZ2V0TWVkaWFuU3RhdGlzdGljLnN0ZXAoKSA9PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAg
bWVkaWFuID0gZ2V0TWVkaWFuU3RhdGlzdGljLmdldENvbHVtbkRvdWJsZSgwKTsKLSAgICB9Ci0K
LSAgICBpZiAoYnVja2V0U2l6ZSAmIDEpCi0gICAgICAgIHJldHVybiBtZWRpYW47Ci0KLSAgICBT
UUxpdGVTdGF0ZW1lbnQgZ2V0TG93ZXJNZWRpYW5TdGF0aXN0aWMgPSBtYWtlTWVkaWFuV2l0aG91
dFVJUXVlcnkoZGF0YWJhc2UsIHN0YXRpc3RpYyk7Ci0KLSAgICBpZiAoZ2V0TG93ZXJNZWRpYW5T
dGF0aXN0aWMucHJlcGFyZSgpID09IFNRTElURV9PSykgewotICAgICAgICBpZiAoZ2V0TG93ZXJN
ZWRpYW5TdGF0aXN0aWMuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8
IGdldExvd2VyTWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMiwgMCkgIT0gU1FMSVRFX09LCi0gICAg
ICAgICAgICB8fCBnZXRMb3dlck1lZGlhblN0YXRpc3RpYy5iaW5kSW50KDIsICgoYnVja2V0U2l6
ZS0xKSAvIDIpKSAhPSBTUUxJVEVfT0spIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
KE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFrZU1lZGlh
bldpdGhvdXRVSVF1ZXJ5LCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0
YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZ2V0TG93ZXJN
ZWRpYW5TdGF0aXN0aWMuc3RlcCgpID09IFNRTElURV9ST1cpCi0gICAgICAgICAgICByZXR1cm4g
KGdldExvd2VyTWVkaWFuU3RhdGlzdGljLmdldENvbHVtbkRvdWJsZSgwKSArIG1lZGlhbikgLyAy
OwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdW5zaWduZWQgZ2V0TnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNJblRvcFJlc291cmNlcyhTUUxpdGVEYXRhYmFzZSYgZGF0YWJh
c2UsIHVuc2lnbmVkIGJ1Y2tldFNpemUpCi17Ci0gICAgU1FMaXRlU3RhdGVtZW50IHByZXZhbGVu
dFJlc291cmNlQ291bnRJblRvcChkYXRhYmFzZSwgbWFrZVN0cmluZygiU0VMRUNUIENPVU5UKCop
IEZST00gKFNFTEVDVCAqIEZST00gT2JzZXJ2ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1Qg
Iiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCksICIpIGFzIHEgb24gcS5kb21haW5JRCA9
IG8uZG9tYWluSUQgTElNSVQgPykgYXMgcCBXSEVSRSBwLmhhZFVzZXJJbnRlcmFjdGlvbiA9IDE7
IikpOwotCi0gICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291bnRJblRvcC5wcmVwYXJlKCkgPT0g
U1FMSVRFX09LKSB7Ci0gICAgICAgIGlmIChwcmV2YWxlbnRSZXNvdXJjZUNvdW50SW5Ub3AuYmlu
ZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IHByZXZhbGVudFJlc291cmNl
Q291bnRJblRvcC5iaW5kVGV4dCgyLCAiJSIpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwg
cHJldmFsZW50UmVzb3VyY2VDb3VudEluVG9wLmJpbmRJbnQoMywgYnVja2V0U2l6ZSkgIT0gU1FM
SVRFX09LKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzSW5Ub3BSZXNvdXJjZXMsIGVycm9yIG1lc3NhZ2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBk
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByZXZh
bGVudFJlc291cmNlQ291bnRJblRvcC5zdGVwKCkgPT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAg
IHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZUNvdW50SW5Ub3AuZ2V0Q29sdW1uSW50KDApOwotICAg
IH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0aWMgdW5zaWduZWQgbWFrZVN0YXRpc3RpY1F1
ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRl
bGVtZXRyeTo6U3RhdGlzdGljIHN0YXRpc3RpYywgaW50IGJ1Y2tldFNpemUsIHVuc2lnbmVkIHRv
dGFsV2l0aFVJLCB1bnNpZ25lZCB0b3RhbFdpdGhvdXRVSSkKLXsKLSAgICBzd2l0Y2ggKHN0YXRp
c3RpYykgewotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3Rh
dGlzdGljOjpOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSToKLSAgICAgICAgcmV0dXJu
IGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzSW5Ub3BSZXNvdXJjZXMoZGF0YWJhc2UsIGJ1
Y2tldFNpemUpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6
U3RhdGlzdGljOjpNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSToKLSAgICBjYXNlIFByZXZhbGVudFJl
c291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuU3ViUmVzb3VyY2VXaXRo
b3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0
aXN0aWM6Ok1lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSToKLSAgICBjYXNlIFByZXZhbGVu
dFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuRGF0YVJlY29yZHNS
ZW1vdmVkV2l0aG91dFVJOgotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVt
ZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9Vc2VySW50ZXJhY3Rpb25X
aXRob3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpT
dGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1N0b3JhZ2VBY2Nlc3NBUElXaXRob3V0
VUk6Ci0gICAgICAgIHJldHVybiBnZXRNZWRpYW5PZlByZXZhbGVudFJlc291cmNlV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbihkYXRhYmFzZSwgYnVja2V0U2l6ZSwgc3RhdGlzdGljLCB0b3RhbFdpdGhv
dXRVSSk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwot
fQotCi11bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VUkoKSBjb25zdAotewotICAgIGF1dG8gc2Nv
cGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNv
dXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3RhdGVtZW50LCBjb3VudFByZXZhbGVudFJlc291
cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25RdWVyeSwgImdldE51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aG91dFVJIl9zKTsKLSAgICBpZiAoc2NvcGVkU3RhdGVtZW50ICYmIHNjb3BlZFN0
YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cpIHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9j
b3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdl
dENvbHVtbkludCgwKTsKLSAgICAgICAgcmV0dXJuIGNvdW50OwotICAgIH0KLSAgICByZXR1cm4g
MDsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3Vs
YXRlVGVsZW1ldHJ5RGF0YShQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiBkYXRh
KSBjb25zdAotewotICAgIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMgPSBnZXROdW1i
ZXJPZlByZXZhbGVudFJlc291cmNlcygpOwotICAgIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uID0gZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNX
aXRoVUkoKTsKLSAgICBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiA9IGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJKCk7Ci0g
ICAgZGF0YS50b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24gPSBnZXRUb3BQcmV2ZWxlbnRSZXNvdXJjZURheXNTaW5jZVVJKCk7Ci0g
ICAgZGF0YS5tZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdp
dGhVc2VySW50ZXJhY3Rpb24gPSBnZXRNZWRpYW5PZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24obV9kYXRhYmFzZSwgZGF0YS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhVc2VySW50ZXJhY3Rpb24pOwotCi0gICAgZm9yICh1bnNpZ25lZCBidWNrZXRJbmRleCA9IDA7
IGJ1Y2tldEluZGV4IDwgYnVja2V0U2l6ZXMuc2l6ZSgpOyBidWNrZXRJbmRleCsrKSB7Ci0gICAg
ICAgIHVuc2lnbmVkIGJ1Y2tldFNpemUgPSBidWNrZXRTaXplc1tidWNrZXRJbmRleF07Ci0KLSAg
ICAgICAgaWYgKGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVy
YWN0aW9uIDwgYnVja2V0U2l6ZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3Ig
KHVuc2lnbmVkIHN0YXRpc3RpY0luZGV4ID0gMDsgc3RhdGlzdGljSW5kZXggPCBudW1iZXJPZlN0
YXRpc3RpY3M7IHN0YXRpc3RpY0luZGV4KyspIHsKLSAgICAgICAgICAgIGF1dG8gc3RhdGlzdGlj
ID0gc3RhdGljX2Nhc3Q8UHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlz
dGljPihzdGF0aXN0aWNJbmRleCk7Ci0gICAgICAgICAgICBkYXRhLnN0YXRpc3RpY3Nbc3RhdGlz
dGljSW5kZXhdW2J1Y2tldEluZGV4XSA9IG1ha2VTdGF0aXN0aWNRdWVyeShtX2RhdGFiYXNlLCBz
dGF0aXN0aWMsIGJ1Y2tldFNpemUsIGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uLCBkYXRhLm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3Rp
ZnlQYWdlc0ZvclRlc3Rpbmcgc2hvdWxkTm90aWZ5UGFnZXNGb3JUZXN0aW5nKSBjb25zdAotewot
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKHBhcmFtZXRlcnMoKS5z
aG91bGRTdWJtaXRUZWxlbWV0cnkpIHsKLSAgICAgICAgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFz
ZVRlbGVtZXRyeSBwcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OwotICAgICAgICBj
YWxjdWxhdGVUZWxlbWV0cnlEYXRhKHByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkp
OwotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5OjpzdWJtaXRUZWxl
bWV0cnkoKnRoaXMsIHByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnksIHNob3VsZE5v
dGlmeVBhZ2VzRm9yVGVzdGluZyk7Ci0gICAgfQotfQotCiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNU
b1N0cmluZyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYgZG9tYWlucykKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4IGEyYzVhNTI1YmQ3NDczZTBjNGM4NGY2N2E0
NWJmNjEwYjMxYTYyNjUuLmQ1NTUyMzdiZGQxMmNkY2RiZDEzY2MxMWEwZWY0ZDZkNzkxMmMyMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCkBAIC01MiwyOCArNTIsNiBAQCBzdGF0aWMgY29uc3RleHByIHNpemVfdCBudW1iZXJPZkJ1
Y2tldHNQZXJTdGF0aXN0aWMgPSA1Owogc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZT
dGF0aXN0aWNzID0gNzsKIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVt
YmVyT2ZCdWNrZXRzUGVyU3RhdGlzdGljPiBidWNrZXRTaXplcyB7eyAxLCAzLCAxMCwgNTAsIDEw
MCB9fTsKIAotc3RydWN0IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkgewotICAg
IHVzaW5nIEJ1Y2tldHMgPSBzdGQ6OmFycmF5PHVuc2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQZXJT
dGF0aXN0aWM+OwotCi0gICAgZW51bSBjbGFzcyBTdGF0aXN0aWMgewotICAgICAgICBOdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwKLSAgICAgICAgTWVkaWFuU3ViRnJhbWVXaXRob3V0
VUksCi0gICAgICAgIE1lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLAotICAgICAgICBNZWRpYW5V
bmlxdWVSZWRpcmVjdHNXaXRob3V0VUksCi0gICAgICAgIE1lZGlhbkRhdGFSZWNvcmRzUmVtb3Zl
ZFdpdGhvdXRVSSwKLSAgICAgICAgTWVkaWFuVGltZXNBY2Nlc3NlZER1ZVRvVXNlckludGVyYWN0
aW9uV2l0aG91dFVJLAotICAgICAgICBNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9TdG9yYWdlQWNj
ZXNzQVBJV2l0aG91dFVJCi0gICAgfTsKLQotICAgIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzOwotICAgIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVk
IG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJ
bnRlcmFjdGlvbjsKLQotICAgIHN0ZDo6YXJyYXk8QnVja2V0cywgbnVtYmVyT2ZTdGF0aXN0aWNz
PiBzdGF0aXN0aWNzOwotfTsKLQogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlOwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25zdHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQg
b24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUu
CkBAIC0xMjEsOCArOTksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJl
ZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92
ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVVbmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVG9w
RnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogCi0gICAgdm9p
ZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoTm90aWZ5UGFnZXNGb3JUZXN0aW5nID0gTm90
aWZ5UGFnZXNGb3JUZXN0aW5nOjpObykgY29uc3Qgb3ZlcnJpZGU7Ci0KICAgICB2b2lkIGhhc1N0
b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21haW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYs
IE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lk
IHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1lRG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYs
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNj
ZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3Vi
RnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4mJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
LCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdh
c1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpPiYmKSBvdmVycmlkZTsKQEAgLTE3
MSwxMyArMTQ3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lcmdlU3RhdGlzdGljKGNvbnN0IFJl
c291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0
YXRlbWVudCosIGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2b2lkIGNsZWFy
RGF0YWJhc2VDb250ZW50cygpOwotICAgIHVuc2lnbmVkIGdldE51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVUkoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291
cmNlc1dpdGhvdXRVSSgpIGNvbnN0OwotICAgIHVuc2lnbmVkIGdldFRvcFByZXZlbGVudFJlc291
cmNlRGF5c1NpbmNlVUkoKSBjb25zdDsKLSAgICB2b2lkIHJlc2V0VGVsZW1ldHJ5UHJlcGFyZWRT
dGF0ZW1lbnRzKCkgY29uc3Q7Ci0gICAgdm9pZCByZXNldFRlbGVtZXRyeVN0YXRlbWVudHMoKSBj
b25zdDsKLSAgICB2b2lkIGNhbGN1bGF0ZVRlbGVtZXRyeURhdGEoUHJldmFsZW50UmVzb3VyY2VE
YXRhYmFzZVRlbGVtZXRyeSYpIGNvbnN0OwogICAgIGJvb2wgaW5zZXJ0T2JzZXJ2ZWREb21haW4o
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpIFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2
b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVsYXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcm
LCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYsIHVuc2lnbmVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNTM5
ZjUzMWVhMDc4ZmJiZGMxMDhlMmU1ZTk3ZTFjYzZkNTNkMWIxZi4uZTQ0NTYwMzVlMTgyYWFlYjRh
ZGUyYjg2ZGIxYTY5YWIyODQxNDhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJQ
bHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAj
aW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Rv
Y3VtZW50U3RvcmFnZUFjY2Vzcy5oPgpAQCAtNzQsMTIgKzczLDYgQEAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUoV2Vi
UmVzb3VyY2UKICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1
ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQogewogICAgIFJFTEVBU0VfQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7Ci0KLSAgICB3b3JrUXVldWUuZGlzcGF0Y2hBZnRlcig1X3MsIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAg
ICAgICAgICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KCk7Ci0gICAgfSk7
Ci0KICAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGluZ0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogCkBA
IC05MCwxNCArODMsNiBAQCBib29sIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6
aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fcmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1w
dHkoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNhbGN1
bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0ZvclRlc3Rpbmcgc2hvdWxkTm90aWZ5
UGFnZXNGb3JUZXN0aW5nKSBjb25zdAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgaWYgKHBhcmFtZXRlcnMoKS5zaG91bGRTdWJtaXRUZWxlbWV0cnkpCi0gICAgICAg
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdCgq
dGhpcywgc2hvdWxkTm90aWZ5UGFnZXNGb3JUZXN0aW5nKTsKLX0KLQogc3RhdGljIHZvaWQgZW5z
dXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHlEb21haW4oVmVjdG9yPFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0
UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURvbWFpbiwgY29uc3Qg
UmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlEb21haW4sIGJvb2wgdGhpcmRQYXJ0eUhhc1N0
b3JhZ2VBY2Nlc3MpCiB7CiAgICAgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmlj
Rmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4sIHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNz
LCBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6Tm9FeGlzdGluZ1RpbWVzdGFtcCB9
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaApp
bmRleCAwOGQ1ZmQxY2MyMmZjZWQ5YzA1Y2VhNjdhYTY5NWE2ZDZlZWE1MThhLi5iMTU4NmI5Nzlk
ZDg4ZTRmYmMyYTUxNTgwMzg5MDIzZmVlZWViZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oCkBAIC05MCw4ICs5MCw2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVkaXJlY3RUbyhjb25zdCBUb3BGcmFtZURvbWFp
biYsIGNvbnN0IFJlZGlyZWN0RG9tYWluJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRUb3BGcmFt
ZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0
RG9tYWluJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRy
eShOb3RpZnlQYWdlc0ZvclRlc3RpbmcgPSBOb3RpZnlQYWdlc0ZvclRlc3Rpbmc6Ok5vKSBjb25z
dCBvdmVycmlkZTsKLQogICAgIGJvb2wgYXJlQWxsVGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5k
ZXIoY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVycmlkZTsKICAgICBDb29raWVBY2Nlc3MgY29v
a2llQWNjZXNzKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmLCBjb25zdCBUb3BGcmFtZURv
bWFpbiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYs
IGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9uYWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVy
PiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAppbmRleCAyZDdiMTI4YzU0YzFjMzllNWE4ZDc0NTIyMzc2ZWEzMmQyZjg0MjJmLi5hM2Q3MDkw
MjVjMzFjMzI2ODlmZmUyM2JmMmY1OWMxOTRkNmFhNGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlBs
dWdpblByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5o
PgpAQCAtMTcxLDEyICsxNzAsNiBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbQogICAgIG1fcGFy
YW1ldGVycy5zaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9
IHZhbHVlOwogfQogCi12b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxk
U3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01h
aW4oKSk7Ci0gICAgbV9wYXJhbWV0ZXJzLnNob3VsZFN1Ym1pdFRlbGVtZXRyeSA9IHZhbHVlOwot
fQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFT
U0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5oCmluZGV4IDAwOGJiYmI5NDlmNTdiYTdjM2M1OGQzOTQ4NDg0NWE4MDA2N2UxY2Yu
Ljc3ZDA1NWNjZDcxMzY2YjZiZGY3OWJjYTI0NWQ4NzE2MGJjMzY5NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKQEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1
ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBl
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3Rm
L0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xNTMsMTMgKzE1MiwxMCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6ZV90IHBydW5lVGFyZ2V0Q291bnQpOwogICAg
IHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKCk7CiAKLSAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KE5vdGlmeVBhZ2VzRm9yVGVzdGluZyA9IE5v
dGlmeVBhZ2VzRm9yVGVzdGluZzo6Tm8pIGNvbnN0ID0gMDsKLQogICAgIHZvaWQgc2V0Tm90aWZ5
UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKTsKICAgICB2b2lkIHNldElzUnVu
bmluZ1Rlc3QoYm9vbCk7CiAgICAgYm9vbCBzaG91bGRTa2lwKGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJikgY29uc3Q7CiAgICAgdm9pZCBzZXRTaG91bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURh
dGFSZWNvcmRzUmVtb3ZhbChib29sKTsKLSAgICB2b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRy
eShib29sKTsKICAgICB2b2lkIHNldFRpbWVUb0xpdmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7
CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdlZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25k
cyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoU2Vjb25kcyk7CkBAIC0yNDAsNyAr
MjM2LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBib29sIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRh
dGFSZWNvcmRzV2VyZVNjYW5uZWQgeyBmYWxzZSB9OwogICAgICAgICBib29sIHNob3VsZENsYXNz
aWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsIHsgdHJ1ZSB9OwogICAgICAgICBz
aXplX3QgbWluaW11bVRvcEZyYW1lUmVkaXJlY3RzRm9yU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVu
dCB7IDEwIH07Ci0gICAgICAgIGJvb2wgc2hvdWxkU3VibWl0VGVsZW1ldHJ5IHsgdHJ1ZSB9Owog
ICAgICAgICBib29sIGlzUnVubmluZ1Rlc3QgeyBmYWxzZSB9OwogICAgIH07CiAgICAgY29uc3Qg
UGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBh
OWRkODBiMTQ2N2E5MmYzZDc5YTc1MzUyMjdhYTJlMDNmNGY4MGQyLi5kNWE5NjUyNWNiYWU2ZGVh
NzczMGMyZTk0MjdjNTQ5ZmQxNmI2ZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIldlYlBy
b2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dp
bmdDbGllbnQuaD4KQEAgLTE0OCwxNiArMTQ3LDYgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHMK
ICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNo
b3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVlKQotewotICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhpcywgdmFsdWVdIHsKLSAgICAgICAgaWYgKG1f
c3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgbV9zdGF0aXN0aWNzU3RvcmUtPnNldFNob3Vs
ZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Ci0gICAgfSk7Ci19Ci0KIHN0YXRpYyBSZWY8V29ya1F1
ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxSZWY8V29ya1F1ZXVlPj4gcXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNl
cmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKTsKQEAgLTcyOCwyNSArNzE3LDEyIEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcygpCiAg
ICAgcG9zdFRhc2soW3RoaXNdIHsKICAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7CiAg
ICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRl
SWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIG1fc3RhdGlzdGljc1N0b3JlLT5jYWxjdWxhdGVB
bmRTdWJtaXRUZWxlbWV0cnkoKTsKICAgICAgICAgICAgIGlmIChpczxSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKSkKICAgICAgICAgICAgICAg
ICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlz
dGljc1N0b3JlKS5ydW5JbmNyZW1lbnRhbFZhY3V1bUNvbW1hbmQoKTsKICAgICAgICAgfQogICAg
IH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVs
ZW1ldHJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsK
LSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgcG9zdFRhc2soW3RoaXMsIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSAg
ewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KE5v
dGlmeVBhZ2VzRm9yVGVzdGluZzo6WWVzKTsKLSAgICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmlnYXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21h
aW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWlu
LCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3Qs
IGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVsYXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9h
ZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRlZEJ5VXNlcikKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwpAQCAtMTQxNCwxMyArMTM5MCw2IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpzZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3Qg
U3RyaW5nCiAgICAgICAgIGNvbnN0X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Kj4odGhpcyktPm5ldHdvcmtTZXNzaW9uKCktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnRGlnaXRzLCBzaG91bGRTYW1wbGUpOwog
fQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0YXRp
c3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNl
cywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFt
ZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNp
Z25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVk
aWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSBjb25zdAotewotICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7Ci0gICAgaWYgKG1fbmV0d29ya1Nlc3Npb24pCi0gICAgICAgIGNvbnN0
X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5ldHdvcmtTZXNz
aW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQobnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFj
dGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0
aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0
b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRV
SSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNv
cmRzUmVtb3ZlZFdpdGhvdXRVSSk7Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURhdGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCBmZGQy
MTQ0NTFjZDQxNzY1N2QzZWY3Njk0YzVmZDQyOTc3M2NhY2M3Li4yMTNjOGQwZWQwYTRkZGVmYzM5
YjgwNDJlMDU4ZjgwMjZhZmI2ODU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCkBAIC0yMDcsNyArMjA3LDYgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRh
IHsKICAgICB2b2lkIHBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJl
U2Nhbm5lZChib29sKTsKICAgICB2b2lkIHNldFNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3Jl
RGF0YVJlY29yZHNSZW1vdmFsKGJvb2wsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0g
ICAgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0cnkoYm9vbCk7CiAKICAgICB2b2lkIGdyYW50
U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWlu
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3Rv
cmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBTdG9yYWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nlc3NSZXN1bHQpPiYmKTsKIApAQCAtMjUwLDcg
KzI0OSw2IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tp
ZUJsb2NraW5nVXBkYXRlRm9yRG9tYWlucyhjb25zdCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlz
dGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2Fs
bFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgY2xlYXJJbk1lbW9yeUVwaGVtZXJhbChD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMjkxLDcgKzI4OSw2IEBAIHN0cnVjdCBU
aGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2FuY2VsKCk7CiAKICAgICB2
b2lkIHNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWdE
aWdpdHMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSkgY29uc3Q7Ci0gICAgdm9pZCBub3RpZnlQYWdl
U3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9u
RGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRv
cDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1
YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUks
IHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRv
cDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpIGNvbnN0OwogCiAgICAgdm9pZCBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljcz4mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJl
cXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIoRG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNz
JiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9wZW5lcklELCBPcGVuZXJEb21haW4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZmRjYjA2NTE5ZTU2MGU4MDhlMDUyM2E4
MWJkZjI4MGMyNzVlMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzUzICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCi0KLSNpZiBFTkFCTEUoUkVTT1VSQ0Vf
TE9BRF9TVEFUSVNUSUNTKQotCi0jaW5jbHVkZSAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFi
YXNlU3RvcmUuaCIKLSNpbmNsdWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
aCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25v
c3RpY0xvZ2dpbmdLZXlzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJE
ZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCi1jb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVz
b3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKLWNvbnN0IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJl
c0ZvckxvZ2dlZFZhbHVlcyA9IDM7Ci0KLXN0cnVjdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRy
eSB7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZDsKLSAgICBi
b29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBkYXlzU2luY2VVc2VySW50
ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luczsKLSAg
ICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwotICAgIHVuc2lnbmVk
IHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87Ci0gICAgdW5zaWduZWQgdGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIHRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEk7Ci19OwotCi1zdGF0aWMgVmVj
dG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeShjb25zdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUmIHN0b3JlKQot
ewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIFZlY3RvcjxQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOwotICAgIHN0b3JlLnByb2Nlc3NTdGF0aXN0aWNzKFsm
c29ydGVkXSAoYXV0byYgc3RhdGlzdGljKSB7Ci0gICAgICAgIGlmICghc3RhdGlzdGljLmlzUHJl
dmFsZW50UmVzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdW5zaWduZWQg
ZGF5c1NpbmNlVXNlckludGVyYWN0aW9uID0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJh
Y3Rpb25UaW1lIDw9IFdhbGxUaW1lKCkgPyAwIDogc3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygp
IC0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lKSAvIDI0X2gpOwotICAg
ICAgICBzb3J0ZWQuYXBwZW5kKFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5IHsKLSAgICAgICAg
ICAgIHN0YXRpc3RpYy5kYXRhUmVjb3Jkc1JlbW92ZWQsCi0gICAgICAgICAgICBzdGF0aXN0aWMu
aGFkVXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgZGF5c1NpbmNlVXNlckludGVyYWN0aW9u
LAotICAgICAgICAgICAgc3RhdGlzdGljLnN1YmZyYW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuc2l6
ZSgpLAotICAgICAgICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFp
bnMuc2l6ZSgpLAotICAgICAgICAgICAgc3RhdGlzdGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJl
Y3RzVG8uc2l6ZSgpLAotICAgICAgICAgICAgc3RhdGlzdGljLnRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgIHN0YXRpc3RpYy50aW1lc0Fj
Y2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJCi0gICAgICAgIH0pOwotICAg
IH0pOwotCi0gICAgaWYgKHNvcnRlZC5zaXplKCkgPCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2Vz
Rm9yVGVsZW1ldHJ5KQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgc3RkOjpzb3J0KHNvcnRl
ZC5iZWdpbigpLCBzb3J0ZWQuZW5kKCksIFtdKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5JiBhLCBjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgYikgewotICAgICAgICBy
ZXR1cm4gYS5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuZGVy
VG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvID4KLSAgICAg
ICAgYi5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvOwotICAgIH0pOwot
Ci0gICAgcmV0dXJuIHNvcnRlZDsKLX0KLQotc3RhdGljIHVuc2lnbmVkIG51bWJlck9mUmVzb3Vy
Y2VzV2l0aFVzZXJJbnRlcmFjdGlvbihjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxl
bWV0cnk+JiByZXNvdXJjZXMsIHNpemVfdCBiZWdpbiwgc2l6ZV90IGVuZCkKLXsKLSAgICBpZiAo
cmVzb3VyY2VzLmlzRW1wdHkoKSB8fCByZXNvdXJjZXMuc2l6ZSgpIDwgYmVnaW4gKyAxIHx8IHJl
c291cmNlcy5zaXplKCkgPCBlbmQgKyAxKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB1
bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAoc2l6ZV90IGkgPSBiZWdpbjsgaSA8IGVuZDsg
KytpKSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZXNbaV0uaGFzSGFkVXNlckludGVyYWN0aW9uKQot
ICAgICAgICAgICAgKytyZXN1bHQ7Ci0gICAgfQotICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0gICAgCi1zdGF0aWMgdW5zaWduZWQgbWVkaWFuKGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHYp
Ci17Ci0gICAgaWYgKHYuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAodi5z
aXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHZbMF07Ci0gICAgCi0gICAgYXV0byBzaXplID0g
di5zaXplKCk7Ci0gICAgYXV0byBtaWRkbGUgPSBzaXplIC8gMjsKLSAgICBpZiAoc2l6ZSAlIDIp
Ci0gICAgICAgIHJldHVybiB2W21pZGRsZV07Ci0gICAgcmV0dXJuICh2W21pZGRsZSAtIDFdICsg
dlttaWRkbGVdKSAvIDI7Ci19Ci0gICAgCi1zdGF0aWMgdW5zaWduZWQgbWVkaWFuKGNvbnN0IFZl
Y3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4mIHYsIHVuc2lnbmVkIGJlZ2luLCB1bnNp
Z25lZCBlbmQsIGNvbnN0IFdURjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVz
b3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+JiBzdGF0aXN0aWNHZXR0ZXIpCi17Ci0gICAgaWYg
KHYuaXNFbXB0eSgpIHx8IHYuc2l6ZSgpIDwgYmVnaW4gKyAxIHx8IHYuc2l6ZSgpIDwgZW5kICsg
MSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgVmVjdG9yPHVuc2lnbmVkPiBwYXJ0Owot
ICAgIHBhcnQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShlbmQgLSBiZWdpbiArIDEpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IGJlZ2luOyBpIDw9IGVuZDsgKytpKQotICAgICAgICBwYXJ0LnVuY2hl
Y2tlZEFwcGVuZChzdGF0aXN0aWNHZXR0ZXIodltpXSkpOwotICAgIAotICAgIHJldHVybiBtZWRp
YW4ocGFydCk7Ci19Ci0gICAgCi1zdGF0aWMgdm9pZCBzdWJtaXRUb3BMaXN0KHVuc2lnbmVkIG51
bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCwgY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNl
VGVsZW1ldHJ5PiYgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBjb25zdCBWZWN0b3I8UHJldmFs
ZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uLCBjb25zdCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3Jl
KQotewotICAgIFdURjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VU
ZWxlbWV0cnkmIHRlbGVtZXRyeSk+IHN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0ZXIg
PSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1cm4gdC5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zOwotICAgIH07Ci0gICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1l
T3JpZ2luc0dldHRlciA9IFtdIChhdXRvJiB0KSB7Ci0gICAgICAgIHJldHVybiB0LnN1YnJlc291
cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2ln
bmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBzdWJyZXNv
dXJjZVVuaXF1ZVJlZGlyZWN0c1RvR2V0dGVyID0gW10gKGF1dG8mIHQpIHsKLSAgICAgICAgcmV0
dXJuIHQuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbzsKLSAgICB9OwotICAgIFdURjo6RnVu
Y3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRy
eSk+IG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWRHZXR0ZXIgPSBbXSAoYXV0byYgdCkg
ewotICAgICAgICByZXR1cm4gdC5udW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkOwotICAg
IH07Ci0gICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRl
bGVtZXRyeSYgdGVsZW1ldHJ5KT4gbnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb25HZXR0ZXIgPSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1cm4g
dC50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb247Ci0gICAgfTsK
LSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1l
dHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0
b3JhZ2VBY2Nlc3NBUElHZXR0ZXIgPSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1cm4gdC50
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJOwotICAgIH07Ci0K
LSAgICB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uID0g
bnVtYmVyT2ZSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uKHNvcnRlZFByZXZhbGVudFJlc291
cmNlcywgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSk7Ci0gICAgdW5zaWduZWQg
dG9wU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21U
aGVUb3AgLSAxLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zR2V0dGVyKTsKLSAgICB1bnNp
Z25lZCB0b3BTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zID0gbWVkaWFuKHNvcnRlZFBy
ZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3Vy
Y2VzRnJvbVRoZVRvcCAtIDEsIHN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0ZXIp
OwotICAgIHVuc2lnbmVkIHRvcFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8gPSBtZWRpYW4o
c29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVy
T2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0dl
dHRlcik7Ci0gICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCA9
IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAw
LCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzRGF0YVJlY29y
ZHNSZW1vdmVkR2V0dGVyKTsKLSAgICB1bnNpZ25lZCB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRB
c0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21U
aGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbkdldHRlcik7Ci0gICAgdW5zaWduZWQgdG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNG
aXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRo
ZVRvcCAtIDEsIG51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFj
Y2Vzc0FQSUdldHRlcik7Ci0KLSAgICBTdHJpbmcgZGVzY3JpcHRpb25QcmVhbWJsZSA9IG1ha2VT
dHJpbmcoInRvcCIsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCk7Ci0KLSAgICBzdG9yZS5z
ZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAi
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiIsCi0gICAgICAgIHRvcFByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHNpZ25pZmljYW50RmlndXJlc0Zvckxv
Z2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgc3RvcmUuc2VuZERpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIlN1YmZyYW1lVW5kZXJU
b3BGcmFtZU9yaWdpbnMiLAotICAgICAgICB0b3BTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
LCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwot
ICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25Q
cmVhbWJsZSArICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwKLSAgICAgICAgdG9w
U3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lucywgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9n
Z2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICBzdG9yZS5zZW5kRGlhZ25vc3RpY01l
c3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0
aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiU3VicmVzb3VyY2VVbmlx
dWVSZWRpcmVjdHNUbyIsCi0gICAgICAgIHRvcFN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8s
IHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0g
ICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5n
S2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblBy
ZWFtYmxlICsgIk51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1JlbW92ZWQiLAotICAgICAgICB0b3BO
dW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dn
ZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJOdW1iZXJPZlRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiIsCi0gICAgICAgIHRvcE51bWJl
ck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0aW9uLCBzaWduaWZp
Y2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3Jl
LnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSAr
ICJOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEki
LAotICAgICAgICB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3Jh
Z2VBY2Nlc3NBUEksIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2Ft
cGxlOjpObyk7Ci19Ci0gICAgCi1zdGF0aWMgdm9pZCBzdWJtaXRUb3BMaXN0cyhjb25zdCBWZWN0
b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMs
IGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAgc3VibWl0VG9wTGlzdCgxLCBzb3J0ZWRQcmV2
YWxlbnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24sIHN0b3JlKTsKLSAgICAKLSAgICBpZiAoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbi5zaXplKCkgPCAzKQotICAgICAgICByZXR1cm47Ci0gICAgc3Vi
bWl0VG9wTGlzdCgzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHN0b3JlKTsKLSAgICAKLSAgICBpZiAoc29y
dGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbi5zaXplKCkgPCAxMCkK
LSAgICAgICAgcmV0dXJuOwotICAgIHN1Ym1pdFRvcExpc3QoMTAsIHNvcnRlZFByZXZhbGVudFJl
c291cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwg
c3RvcmUpOwotICAgIAotICAgIGlmIChzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNl
ckludGVyYWN0aW9uLnNpemUoKSA8IDUwKQotICAgICAgICByZXR1cm47Ci0gICAgc3VibWl0VG9w
TGlzdCg1MCwgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBzdG9yZSk7Ci0gICAgCi0gICAgaWYgKHNvcnRlZFBy
ZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24uc2l6ZSgpIDwgMTAwKQotICAg
ICAgICByZXR1cm47Ci0gICAgc3VibWl0VG9wTGlzdCgxMDAsIHNvcnRlZFByZXZhbGVudFJlc291
cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgc3Rv
cmUpOwotfQotICAgIAotLy8gVGhpcyBmdW5jdGlvbiBpcyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4K
LXZvaWQgc3RhdGljIG5vdGlmeVBhZ2VzKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZy
YW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVu
c2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNN
ZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUksIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24sIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvbiwgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVUksIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291
cmNlV2l0aG91dFVJLCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVk
aWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJLCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUpXSB7
Ci0gICAgICAgIHN0b3JlLT5ub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhV
c2VySW50ZXJhY3Rpb24sIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRl
cmFjdGlvbiwgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uLCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVSSwgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3Vy
Y2VXaXRob3V0VUksIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRp
YW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwotICAgIH0pOwotfQotICAgIAotLy8gVGhp
cyBmdW5jdGlvbiBpcyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KLXZvaWQgc3RhdGljIG5vdGlmeVBh
Z2VzKGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZh
bGVudFJlc291cmNlcywgY29uc3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYg
c29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
dG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIGNvbnN0
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAgV1RGOjpGdW5j
dGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5
KT4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luc0dldHRlciA9IFtdIChjb25zdCBQcmV2YWxl
bnRSZXNvdXJjZVRlbGVtZXRyeSYgdCkgewotICAgICAgICByZXR1cm4gdC5zdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW5zOwotICAgIH07Ci0gICAgbm90aWZ5UGFnZXMoc29ydGVkUHJldmFsZW50
UmVzb3VyY2VzLnNpemUoKSwgdG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24sIDAsIDAsIDAsIDAsIG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNX
aXRob3V0VXNlckludGVyYWN0aW9uLCAwLCAyLCBzdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5z
R2V0dGVyKSwgMCwgMCwgMCwgIHN0b3JlKTsKLX0KLSAgICAKLXZvaWQgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRlQW5kU3VibWl0KGNvbnN0IFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLCBOb3Rp
ZnlQYWdlc0ZvclRlc3Rpbmcgbm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpCi17
Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgCi0gICAgYXV0byBzb3J0ZWRQ
cmV2YWxlbnRSZXNvdXJjZXMgPSBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwotICAgIGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCA9PSBOb3RpZnlQYWdlc0ZvclRlc3Rpbmc6OlllcyAmJiBzb3J0ZWRQcmV2
YWxlbnRSZXNvdXJjZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAsIDAsIDAsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5zdG9yZSgp
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBWZWN0b3I8UHJldmFsZW50UmVz
b3VyY2VUZWxlbWV0cnk+IHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb247Ci0gICAgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
bi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRlZFByZXZhbGVudFJlc291cmNlcy5zaXplKCkp
OwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gcHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uOwotICAgIAotICAgIGZvciAoYXV0byYgcHJldmFsZW50UmVzb3VyY2UgOiBzb3J0
ZWRQcmV2YWxlbnRSZXNvdXJjZXMpIHsKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlLmhh
c0hhZFVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAgICAgIHByZXZhbGVudFJlc291cmNlc0RheXNT
aW5jZVVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocHJldmFsZW50UmVzb3VyY2UuZGF5c1NpbmNlVXNl
ckludGVyYWN0aW9uKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc29ydGVkUHJldmFsZW50
UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbi51bmNoZWNrZWRBcHBlbmQocHJldmFsZW50
UmVzb3VyY2UpOwotICAgIH0KLSAgICAKLSAgICAvLyBEaXNwYXRjaCBvbiB0aGUgbWFpbiB0aHJl
YWQgdG8gbWFrZSBzdXJlIHRoZSBXZWJQYWdlUHJveHkgd2UncmUgdXNpbmcgZG9lc24ndCBnbyBh
d2F5LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbm90aWZ5UGFnZXNXaGVuVGVsZW1l
dHJ5V2FzQ2FwdHVyZWQsIHNvcnRlZFByZXZhbGVudFJlc291cmNlcyA9IFdURk1vdmUoc29ydGVk
UHJldmFsZW50UmVzb3VyY2VzKSwgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiA9IFdURk1vdmUoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJ
bnRlcmFjdGlvbiksIHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9
IFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uKSwgc3Rv
cmUgPSBtYWtlUmVmKHJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5zdG9yZSgpKV0gKCkgewot
ICAgICAgICBhdXRvIHdlYlBhZ2VQcm94eSA9IFdlYlBhZ2VQcm94eTo6bm9uRXBoZW1lcmFsV2Vi
UGFnZVByb3h5KCk7Ci0gICAgICAgIGlmICghd2ViUGFnZVByb3h5KSB7Ci0gICAgICAgICAgICBp
ZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQgPT0gTm90aWZ5UGFnZXNGb3JU
ZXN0aW5nOjpZZXMpCi0gICAgICAgICAgICAgICAgbm90aWZ5UGFnZXMoMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgc3RvcmUpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBpZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQg
PT0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpZZXMpIHsKLSAgICAgICAgICAgIG5vdGlmeVBhZ2Vz
KHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgcHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uLnNpemUoKSwgc3RvcmUpOwotICAgICAgICAgICAgLy8gVGhlIG5vdGlmeSBwYWdlcyBmdW5j
dGlvbiBpcyBmb3IgdGVzdGluZyBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFuIGFjdHVhbCBzdWJt
aXNzaW9uLgotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNM
b2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCAidG90YWxO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcyJfcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLnNp
emUoKSwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5v
KTsKLSAgICAgICAgd2ViUGFnZVByb3h5LT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShE
aWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXko
KSwgInRvdGFsTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uIl9z
LCBwcmV2YWxlbnRSZXNvdXJjZXNEYXlzU2luY2VVc2VySW50ZXJhY3Rpb24uc2l6ZSgpLCBzaWdu
aWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAg
ICAKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlv
bi5zaXplKCkgPiAwKQotICAgICAgICAgICAgd2ViUGFnZVByb3h5LT5sb2dEaWFnbm9zdGljTWVz
c2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlLZXkoKSwgInRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlv
bkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiJfcywgcHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uWzBdLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNo
b3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICBpZiAocHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uLnNpemUoKSA+IDEpCi0gICAgICAgICAgICB3ZWJQYWdlUHJveHktPmxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCAibWVkaWFuUHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiJfcywgbWVkaWFuKHBy
ZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiksIHNpZ25pZmljYW50Rmln
dXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAgIAotICAgICAg
ICBzdWJtaXRUb3BMaXN0cyhzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHN0b3JlKTsKLSAgICB9KTsKLX0KLQot
c3RhdGljIFN0cmluZ1ZpZXcgbWFrZURlc2NyaXB0aW9uKFByZXZhbGVudFJlc291cmNlRGF0YWJh
c2VUZWxlbWV0cnk6OlN0YXRpc3RpYyBzdGF0aXN0aWMpCi17Ci0gICAgc3dpdGNoIChzdGF0aXN0
aWMpIHsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRp
c3RpYzo6TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUk6Ci0gICAgICAgIHJldHVybiAi
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiI7Ci0gICAgY2FzZSBQcmV2YWxl
bnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblN1YkZyYW1lV2l0
aG91dFVJOgotICAgICAgICByZXR1cm4gIlN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiOwot
ICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpN
ZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSToKLSAgICAgICAgcmV0dXJuICJTdWJyZXNvdXJjZVVu
ZGVyVG9wRnJhbWVPcmlnaW5zIjsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VU
ZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJOgotICAg
ICAgICByZXR1cm4gIlN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8iOwotICAgIGNhc2UgUHJl
dmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5EYXRhUmVj
b3Jkc1JlbW92ZWRXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiAiTnVtYmVyT2ZUaW1lc0RhdGFS
ZWNvcmRzUmVtb3ZlZCI7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1l
dHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1VzZXJJbnRlcmFjdGlvbldp
dGhvdXRVSToKLSAgICAgICAgcmV0dXJuICJOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFy
dHlEdWVUb1VzZXJJbnRlcmFjdGlvbiI7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFi
YXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWREdWVUb1N0b3JhZ2VB
Y2Nlc3NBUElXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2Vk
QXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJIjsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsKLX0KLQotc3RhdGljIHZvaWQgZGF0YWJhc2VT
dWJtaXRUb3BMaXN0cyhjb25zdCBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiB0
ZWxlbWV0cnksIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17
Ci0gICAgZm9yICh1bnNpZ25lZCBidWNrZXRJbmRleCA9IDA7IGJ1Y2tldEluZGV4IDwgYnVja2V0
U2l6ZXMuc2l6ZSgpOyBidWNrZXRJbmRleCsrKSB7Ci0KLSAgICAgICAgaWYgKHRlbGVtZXRyeS5u
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPCBidWNrZXRT
aXplc1tidWNrZXRJbmRleF0pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgU3RyaW5n
IGRlc2NyaXB0aW9uUHJlYW1ibGUgPSBtYWtlU3RyaW5nKCJ0b3AiLCBidWNrZXRTaXplc1tidWNr
ZXRJbmRleF0pOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgc3RhdGlzdGljSW5kZXggPSAwOyBz
dGF0aXN0aWNJbmRleCA8IG51bWJlck9mU3RhdGlzdGljczsgc3RhdGlzdGljSW5kZXgrKykgewot
ICAgICAgICAgICAgYXV0byBzdGF0aXN0aWMgPSBzdGF0aWNfY2FzdDxQcmV2YWxlbnRSZXNvdXJj
ZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM+KHN0YXRpc3RpY0luZGV4KTsKLQotICAgICAg
ICAgICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dn
aW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlv
blByZWFtYmxlICsgbWFrZURlc2NyaXB0aW9uKHN0YXRpc3RpYyksIHRlbGVtZXRyeS5zdGF0aXN0
aWNzW3N0YXRpc3RpY0luZGV4XVtidWNrZXRJbmRleF0sIHNpZ25pZmljYW50RmlndXJlc0Zvckxv
Z2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6c3VibWl0VGVsZW1ldHJ5KGNv
bnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlJiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUsIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkmIHByZXZhbGVu
dFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnksIE5vdGlmeVBhZ2VzRm9yVGVzdGluZyBub3RpZnlQ
YWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCkKLXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6Omlz
TWFpbigpKTsKLQotICAgIGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9
PSBOb3RpZnlQYWdlc0ZvclRlc3Rpbmc6OlllcyAmJiAhcHJldmFsZW50UmVzb3VyY2VEYXRhYmFz
ZVRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlcykgewotICAgICAgICBub3RpZnlQ
YWdlcygwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuc3RvcmUoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBEaXNwYXRj
aCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIHRoZSBXZWJQYWdlUHJveHkgd2UncmUg
dXNpbmcgZG9lc24ndCBnbyBhd2F5LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbm90
aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQsIHRlbGVtZXRyeSA9IFdURk1vdmUocHJl
dmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSksIHN0b3JlID0gbWFrZVJlZihyZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuc3RvcmUoKSldICgpIHsKLQotICAgICAgICAvLyBUaGUgbm90
aWZ5IHBhZ2VzIGZ1bmN0aW9uIGlzIGZvciB0ZXN0aW5nIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8g
YW4gYWN0dWFsIHN1Ym1pc3Npb24uCi0gICAgICAgIGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0
cnlXYXNDYXB0dXJlZCA9PSBOb3RpZnlQYWdlc0ZvclRlc3Rpbmc6OlllcykgewotICAgICAgICAg
ICAgaWYgKHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24gPCAzKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZ5UGFnZXMoMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgMCwgc3RvcmUpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIG5vdGlmeVBhZ2VzKHRlbGVtZXRyeS5udW1iZXJPZlByZXZh
bGVudFJlc291cmNlcywKLSAgICAgICAgICAgICAgICB0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgICAgIHRlbGVtZXRy
eS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sCi0gICAg
ICAgICAgICAgICAgdGVsZW1ldHJ5LnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFj
dGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwKLSAgICAgICAgICAgICAgICB0ZWxlbWV0cnku
bWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uLAotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNzWzBdWzFdLCAv
LyBidWNrZXQgMSAtPiB0b3AzLgotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNz
WzFdWzFdLAotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNzWzJdWzFdLAotICAg
ICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNzWzNdWzFdLAotICAgICAgICAgICAgICAg
IHRlbGVtZXRyeS5zdGF0aXN0aWNzWzRdWzFdLAotICAgICAgICAgICAgICAgIHN0b3JlKTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYXV0byB3ZWJQ
YWdlUHJveHkgPSBXZWJQYWdlUHJveHk6Om5vbkVwaGVtZXJhbFdlYlBhZ2VQcm94eSgpOwotICAg
ICAgICBpZiAoIXdlYlBhZ2VQcm94eSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB3
ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dn
aW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCAidG90YWxOdW1i
ZXJPZlByZXZhbGVudFJlc291cmNlcyJfcywgdGVsZW1ldHJ5Lm51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6
Tm8pOwotICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVl
KERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtl
eSgpLCAidG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24i
X3MsIHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7
Ci0gICAgICAgIGlmICh0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNl
ckludGVyYWN0aW9uID4gMCkKLSAgICAgICAgICAgIHdlYlBhZ2VQcm94eS0+bG9nRGlhZ25vc3Rp
Y01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5S2V5KCksICJ0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJh
Y3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24iX3MsIHRlbGVtZXRyeS50b3BQcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIHNpZ25p
ZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAg
IGlmICh0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uID4gMSkKLSAgICAgICAgICAgIHdlYlBhZ2VQcm94eS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VX
aXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5S2V5KCksICJtZWRpYW5QcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
RGF5c1NpbmNlVXNlckludGVyYWN0aW9uIl9zLCB0ZWxlbWV0cnkubWVkaWFuRGF5c1NpbmNlVXNl
ckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCBzaWduaWZp
Y2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotCi0gICAgICAg
IGRhdGFiYXNlU3VibWl0VG9wTGlzdHModGVsZW1ldHJ5LCBzdG9yZSk7Ci0gICAgfSk7Ci19Ci19
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVs
ZW1ldHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNzg4NzBhZjI4ZDAyOTdl
MzYxZTJjNzYwOTg0ZDllNWQ2MmMyOGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCi0KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
bmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlT
dG9yZTsKLWNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOwotc3RydWN0
IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk7Ci1lbnVtIGNsYXNzIE5vdGlmeVBh
Z2VzRm9yVGVzdGluZyA6IGJvb2wgeyBObywgWWVzIH07Ci0KLW5hbWVzcGFjZSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5IHsKLSAgICAKLXZvaWQgY2FsY3VsYXRlQW5kU3VibWl0
KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYsIE5vdGlmeVBhZ2VzRm9y
VGVzdGluZyA9IE5vdGlmeVBhZ2VzRm9yVGVzdGluZzo6Tm8pOwotdm9pZCBzdWJtaXRUZWxlbWV0
cnkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUmLCBQcmV2YWxlbnRS
ZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiwgTm90aWZ5UGFnZXNGb3JUZXN0aW5nKTsKLSAgICAK
LX0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCmluZGV4IDRkMmM3ODZmY2Y4YzlkMzgxNmIzMTZlN2Q5MmY0Njg1YjEyZmVh
NDguLjBiYjg1NzMwNTM4NGNiMzVkNzhhNjRkYWM5NDM0ZDdmYzgyNGQ5ZjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC02ODMsMTkg
KzY4Myw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpCiAgICAgfQogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1
dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9u
LT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzLT5zdWJtaXRUZWxlbWV0cnkoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9j
a2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Np
b24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNzaW9uSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggNmQzZTdiM2JiMjU0ODQwYTk2
ZTc5MTliNjUzNTc2ODkxNWIxNWMwMC4uMWE3N2ZhYjk2MWRmMmU1ZTMwNjEyNjlmNTkyYTJjNGM4
Njk0NmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
UHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuaApAQCAtMjM3LDcgKzIzNyw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNjaGVkdWxlQ29va2ll
QmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3Npbmco
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
dGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVN
YXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1Rp
bWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVE
b21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMu
aW4KaW5kZXggMDZkYzFkOTlhNDgzZmQ0MGU4MzBlZjZkODRkODI1NmEwMjEwMzMwYS4uMGViZTkw
NTMzNmUzNGQxMzk0MDI1M2IyZmU3NDEwYjBlOGZiOTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0x
MTMsNyArMTEzLDYgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIg
ewogICAgIFNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklEKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJv
Y2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU3RhdGlz
dGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJv
b2wgaGFzQWxsVGFibGVzKSBBc3luYwotICAgIFN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAgU2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxl
bnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+
ICgpIEFzeW5jCiAgICAgU2V0R3JhbmRmYXRoZXJlZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlRG9tYWluLCBib29sIGlzR3JhbmRm
YXRoZXJlZCkgLT4gKCkgQXN5bmMKICAgICBHZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1
bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGEp
IEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtT
ZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24u
Y3BwCmluZGV4IDY5ODMxYTcwMGJlYmY0NjViMjIxMTIxYmY1M2VlMmJjZDVmZDhkOGQuLmExY2U3
NjJkNWViMmJhODlkM2Q4YzNkZTZjNjdlMDYzYWQ2N2UzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCkBAIC0yMjYsMTEgKzIyNiw2IEBA
IHZvaWQgTmV0d29ya1Nlc3Npb246OmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QKICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9j
ZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0
aWNNZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNh
bnRGaWd1cmVzLCBzaG91bGRTYW1wbGUpLCAwKTsKIH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6
bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlBy
ZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJ
bnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1Np
bmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRv
cDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNl
V2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1
bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKQotewotICAgIG1f
bmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnlGaW5pc2hlZChudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgbnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24sIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFj
dGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB0b3AzTnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdG9wM01l
ZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91
dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSwgMCk7Ci19Ci0KIHZv
aWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZUFuZFJlc3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3Ry
YWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3Ry
YWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJv
b2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0
PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChh
dXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtTdG9yYWdlU2Vzc2lvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKaW5kZXggYzJkNGZjNTcw
YTVmZTlkYTQwMjEwYWRlYzkzODE5ZjI0ODVlZjk1OS4uMmZhMjYyZDUwNzEwMmMwZGJlMmE4Mzc2
YTI1YTQyNDExOWVhODdiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uaApAQCAtOTYsNyArOTYsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVB
bmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJz
aXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRl
RGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Y29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9p
ZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRh
VHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNo
U2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiYmKT4mJik7CiAgICAgdm9pZCBsb2dEaWFn
bm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3Vy
ZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0gICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGlj
c1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1
bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwg
dW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNl
VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25Q
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0
aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVk
IHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5E
YXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwogICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChib29sIGxvZykgeyBtX2VuYWJsZVJlc291cmNl
TG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQgPSBsb2c7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUZU
Vy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1GVFcuY21ha2UKaW5kZXggNTcwYTY2MTFi
OTk3MGQ2N2IzOGNjZDFjMmJmNTg0ZWUyM2FkMGFjZC4uYTU4NzhmZDlhMmM0ZDJlMTFjNWI3ODkw
ZTZkMTA1YjI4YWQwZGRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRlRXLmNtYWtlCkBAIC0xMCw3ICsxMCw2
IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIAogbGlzdChBUFBFTkQgV2Vi
S2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAKLSAgICBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0
YXRpb24uY21ha2UKaW5kZXggOWM0ZDliZGFiZjk2MGZhYmViZjk5OGU0MTBmNTBjNzZmOWI4ZGRm
ZC4uYTExNjY2YWJmOGNjMmMxMmIzYzYzOTljOWYzNDY3NWQ4YjY5YTliMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAtMjMsNyArMjMsNiBAQCBsaXN0KEFQUEVO
RCBXZWJLaXRfU09VUkNFUwogICAgIEdQVVByb2Nlc3MvcGxheXN0YXRpb24vR1BVUHJvY2Vzc1Bs
YXlTdGF0aW9uLmNwcAogCiAgICAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCi0gICAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiAgICAgTmV0d29ya1Byb2Nl
c3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFnZXJDdXJsLmNwcAogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdp
bi5jbWFrZQppbmRleCA2ZjA1N2M5M2M5MTI0YTdkZDYyZmFiMGM4MmJmMTk5MWE0MjZmZjBkLi43
NWE1MDZkNmE5NWM5YjAyYWZhZGY0N2VkZDI1OWI3MjViOGEyZjZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1X
aW4uY21ha2UKQEAgLTEwLDcgKzEwLDYgQEAgYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VC
S0lUKQogCiBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAotICAgIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAK
IAogICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvU3RvcmFnZU1hbmFnZXIuY3BwCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAppbmRleCAxNjliMjk1NzJjNWY0NWYxOWFmODQ5YWFjNTQ0YTY4NWU1
NmU1MTZkLi45NTQ1YmI5ZjdlYTI1MjM3YWE1NWU5NjkxZDYyN2UxYWVmMmI2NzNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9T
b3VyY2VzQ29jb2EudHh0CkBAIC0zMCw3ICszMCw2IEBAIE5ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0KIAogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuY3BwCi1OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dl
YkNvb2tpZU1hbmFnZXJNYWMubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2Vz
V1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5kZXggM2MyOTlkZmQ3Mjc5
MmNmMWI3OTlkZTY0ODY2MjZjODAzOWRkYmM4Ni4uNWYzNTUzMWRlMTE2ZWI1ZGU5OGYyNGNkZjhj
YmM2NmMzMGU0NzUwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0CkBAIC0yOSw3ICsyOSw2IEBAIEdQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5hdGlvbk1hbmFnZXIuY3BwCiBHUFVQcm9jZXNz
L21lZGlhL2dzdHJlYW1lci9SZW1vdGVNZWRpYVBsYXllclByb3h5R1N0cmVhbWVyLmNwcAogCiBO
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKLU5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFn
ZXJTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9X
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
V0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcAppbmRleCBkODE2NjI2YWRhN2RkNzM5NDNhNDBhOWU3
ODg2OTZjYjFjNzk1ZDJkLi4xODRiZmRlZjY0NmU0YWFmNmQ5OWZiODlmYTk5MDllNjA3YjA5MTc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRh
U3RvcmVSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0
ZURhdGFTdG9yZVJlZi5jcHAKQEAgLTQ3MSwxMyArNDcxLDYgQEAgdm9pZCBXS1dlYnNpdGVEYXRh
U3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVm
IGRhdGEKICNlbmRpZgogfQogCi12b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJt
aXRUZWxlbWV0cnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZikKLXsKLSNpZiBF
TkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotICAgIFdlYktpdDo6dG9JbXBsKGRhdGFT
dG9yZVJlZiktPnN1Ym1pdFRlbGVtZXRyeSgpOwotI2VuZGlmCi19Ci0KIHZvaWQgV0tXZWJzaXRl
RGF0YVN0b3JlU2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5u
ZWQoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgYm9vbCB2YWx1ZSkKIHsKICNp
ZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAppbmRleCA2ZTY4Zjcz
NjgwNzNjYTQ3ZWZlNjFhOWM4MGM5ZTU0MTE3ZDViNWEzLi4xYjZiODM1OGE4YjcwOTBmYzU3NDUz
MTljNzFlNjAwOTFjMjdmN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuaApAQCAtMTE0LDcgKzExNCw2IEBAIHR5cGVk
ZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0Fu
ZERhdGFSZWNvcmRzRnVuY3RpCiBXS19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0
aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcyhXS1dlYnNpdGVEYXRhU3RvcmVS
ZWYgZGF0YVN0b3JlUmVmLCB2b2lkKiBjb250ZXh0LCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0
aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc0Z1bmN0aW9uIGNhbGxiYWNrKTsKIHR5
cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9j
a2luZ0Z1bmN0aW9uKSh2b2lkKiBmdW5jdGlvbkNvbnRleHQpOwogV0tfRVhQT1JUIHZvaWQgV0tX
ZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKFdLV2Vic2l0ZURh
dGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9y
ZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZ0Z1bmN0aW9uIGNvbXBsZXRpb25IYW5kbGVy
KTsKLVdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NTdWJtaXRUZWxl
bWV0cnkoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZik7CiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29y
ZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZh
bHVlKTsKIHR5cGVkZWYgdm9pZCAoKldLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1
bm5pbmdUZXN0RnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBXS19FWFBPUlQgdm9p
ZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdChXS1dlYnNpdGVE
YXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBib29sIHZhbHVlLCB2b2lkKiBjb250ZXh0LCBXS1dl
YnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzSXNSdW5uaW5nVGVzdEZ1bmN0aW9uIGNhbGxiYWNr
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNp
dGVEYXRhU3RvcmUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlLm1tCmluZGV4IGMyZGI0YTA0ZDM3OGYyNGZkZDVlNjMwZjE1YjI5M2JmNmJl
MDFjYWIuLjc2ZmRhYzBlOTAwZjRlMmYwZjU0ZjZjZjIxZDhiZjcwNmEyMGIyMTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFT
dG9yZS5tbQpAQCAtMzcsNyArMzcsNiBAQAogI2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZElu
dGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIgotI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeS5oIgogI2ltcG9ydCAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5oIgogI2ltcG9y
dCAiX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHlJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAKaW5kZXggMWVlNGQxODE2MzViY2NjMWI0YzM3Y2MwYjNmNzVmNWU4MmUyOTI5Mi4uMDRkOWU3
NTUxOGMzN2ExNzEzZWY5M2JhNjJkYTQ5NzM2YTZiYTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MDg4LDE2ICsxMDg4LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFtZXRl
cnNUb0RlZmF1bHRWYWx1ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICB9KTsKIH0KIAot
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzdWJtaXRUZWxlbWV0cnkoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Ci17Ci0gICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U3VibWl0VGVsZW1ldHJ5KHNlc3Npb25JRCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNob3VsZEdyYW5kZmF0aGVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYg
KCFjYW5TZW5kTWVzc2FnZSgpKSB7CkBAIC0xMTMxLDIzICsxMTIxLDYgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNG
aW5pc2hlZCgpCiAgICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JS
ZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6Om5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291
cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
bWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUks
IHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlh
blN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3Rz
V2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJ
KQotewotICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtZXNzYWdlQm9keTsKLSAgICBtZXNz
YWdlQm9keS5zZXQoIk51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIl9zLCBBUEk6OlVJbnQ2NDo6
Y3JlYXRlKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzKSk7Ci0gICAgbWVzc2FnZUJvZHkuc2V0
KCJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24iX3MsIEFQSTo6
VUludDY0OjpjcmVhdGUobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0
aW9uKSk7Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24iX3MsIEFQSTo6VUludDY0OjpjcmVhdGUobnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uKSk7Ci0gICAgbWVzc2FnZUJvZHku
c2V0KCJUb3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2Vy
SW50ZXJhY3Rpb24iX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uKSk7Ci0gICAgbWVzc2Fn
ZUJvZHkuc2V0KCJNZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJj
ZVdpdGhVc2VySW50ZXJhY3Rpb24iX3MsIEFQSTo6VUludDY0OjpjcmVhdGUobWVkaWFuRGF5c1Np
bmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uKSk7
Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJUb3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VUkiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVJKSk7Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJUb3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0
VUkiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJKSk7
Ci0gICAgbWVzc2FnZUJvZHkuc2V0KCJUb3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkiX3Ms
IEFQSTo6VUludDY0OjpjcmVhdGUodG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJKSk7Ci0g
ICAgbWVzc2FnZUJvZHkuc2V0KCJUb3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJIl9z
LCBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUkp
KTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRo
b3V0VUkiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3Zl
ZFdpdGhvdXRVSSkpOwotCi0gICAgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGlj
c1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKG1lc3NhZ2VCb2R5KS5w
dHIoKSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkQ29tbWl0Q3Jvc3NTaXRl
TG9hZFdpdGhEYXRhVHJhbnNmZXIoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYgZnJvbURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRvRG9t
YWluLCBPcHRpb25TZXQ8V2ViQ29yZTo6Q3Jvc3NTaXRlTmF2aWdhdGlvbkRhdGFUcmFuc2Zlcjo6
RmxhZz4gbmF2aWdhdGlvbkRhdGFUcmFuc2ZlciwgV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJRCwgUGFnZUlkZW50aWZpZXIgd2ViUGFnZUlEKQogewogICAgIGlmICghY2FuU2Vu
ZE1lc3NhZ2UoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggMDAyMmVlNGQxZjIyYTVkMDBkZGJmNDM1ZDY4ZDVk
YTI4ODkwZGE4MS4uZDAzMDQzZjc4ZDAyMTMyZjQzOTMxMWQyNjI3YjA4YzNjN2RhYWQyMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklELCBPcHRpb25hbDxX
YWxsVGltZT4gbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVDb29raWVCbG9ja2lu
Z1VwZGF0ZShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIHN1Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKTsKICAgICB2b2lkIHNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
OwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFBBTDo6U2Vzc2lvbklELCBTZWNvbmRz
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0TWF4U3RhdGlzdGlj
c0VudHJpZXMoUEFMOjpTZXNzaW9uSUQsIHNpemVfdCBtYXhpbXVtRW50cnlDb3VudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKQEAgLTMwNCw3ICszMDMsNiBAQCBwcml2YXRlOgogICAg
IHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpOwogICAgIHZvaWQg
bm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7
CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5p
c2hlZCgpOwotICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZp
bmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9w
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0
aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNv
dXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNp
Z25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5V
bmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1Jl
bW92ZWRXaXRob3V0VUkpOwogI2VuZGlmCiAgICAgdm9pZCByZXRyaWV2ZUNhY2hlU3RvcmFnZVBh
cmFtZXRlcnMoUEFMOjpTZXNzaW9uSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4K
aW5kZXggMjExY2Q5NGQyMTA5NGI1YTgyNWE0ODNmMWExYjg2MDk3YWJjODc0OS4uMmFlYWZmMzRj
N2E4MGUzOWMxYWMyZDMzZjdjNGExMTUyZDE4OGQ3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbgpAQCAtNDQsNyArNDQsNiBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5
IExlZ2FjeVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewogICAgIE5vdGlmeVJlc291cmNlTG9hZFN0
YXRpc3RpY3NQcm9jZXNzZWQoKQogICAgIE5vdGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURhdGFTY2FuRm9yUmVn
aXN0cmFibGVEb21haW5zRmluaXNoZWQoKQotICAgIE5vdGlmeVJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywg
dW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1
bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9u
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdp
dGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25l
ZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFu
RGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKQogICAgIFJlcXVlc3RTdG9yYWdlQWNjZXNzQ29u
ZmlybShXZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gc3ViRnJhbWVE
b21haW4sIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHRvcEZyYW1lRG9tYWluKSAtPiAoYm9v
bCB1c2VyRGlkR3JhbnRBY2Nlc3MpIEFzeW5jCiAgICAgRGVsZXRlV2Vic2l0ZURhdGFJblVJUHJv
Y2Vzc0ZvclJlZ2lzdHJhYmxlRG9tYWlucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGlv
blNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBPcHRpb25TZXQ8V2ViS2l0
OjpXZWJzaXRlRGF0YUZldGNoT3B0aW9uPiBmZXRjaE9wdGlvbnMsIFZlY3RvcjxXZWJDb3JlOjpS
ZWdpc3RyYWJsZURvbWFpbj4gZG9tYWlucykgLT4gKEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFi
bGVEb21haW4+IGRvbWFpbnNXaXRoTWF0Y2hpbmdEYXRhUmVjb3JkcykgQXN5bmMKICAgICBEaWRD
b21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlckZyb21QcmV2YWxlbnRSZXNvdXJjZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggNzZjY2UwY2IwYmNiMGY3MzcwYzQ4M2Nm
OGEzNDJiZTRjYjIzNmM0ZC4uOGNhY2M1MTYxMmMxNmI3YmUzZjgyYTgxMWFhNDQxODAxYWE3MWRl
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00
ODQsMTIgKzQ4NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlXZWJzaXRlRGF0YURl
bGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKQogICAgICAgICBwYWdlLnZhbHVl
LT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdp
c3RyYWJsZURvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwogfQogCi12b2lkIFdlYlByb2Nlc3NQ
cm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCog
bWVzc2FnZUJvZHkpCi17Ci0gICAgZm9yIChhdXRvJiBwYWdlIDogZ2xvYmFsUGFnZU1hcCgpKQot
ICAgICAgICBwYWdlLnZhbHVlLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCIsIG1lc3NhZ2VCb2R5KTsKLX0KLQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmlu
ZGV4IDdkODAxMmExNzliMWM0NThmMDg0NmZjOGNjMTUxNmZmMDdhNjhiYWQuLjdiNDgwNzQ3Njll
ZmRmOTZhYjdmNTI0MTdmNDBiN2ZhYzVkYmM3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yMjMsNyArMjIzLDYgQEAgcHVibGljOgogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBzdGF0aWMgdm9pZCBub3RpZnlQYWdl
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2VkKCk7Ci0gICAgc3RhdGljIHZvaWQgbm90
aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZUJv
ZHkpOwogCiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0ZURhdGFEZWxldGlvbkZvclJlZ2lz
dHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiAgICAgc3RhdGljIHZvaWQgbm90aWZ5V2Vic2l0ZURh
dGFTY2FuRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5k
ZXggNDExOTFmZWJiYzNmYmJiZjY0ZTZlOThhYjc2ZjdkMGVjNWVlMTRjYS4uZGFkMjA3MDFiZDM5
ODkzOTg1Yzg0MmM4YTE4NjZhNWY1MGNlNWZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKQEAgLTE0NDUs
MTMgKzE0NDUsNiBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlc2V0UGFyYW1ldGVyc1RvRGVm
YXVsdFZhbHVlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JgogICAgIG5ldHdvcmtQcm9jZXNz
KCkucmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKG1fc2Vzc2lvbklELCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKLXZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c3VibWl0VGVs
ZW1ldHJ5KCkKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwotICAgIAotICAgIG5l
dHdvcmtQcm9jZXNzKCkuc3VibWl0VGVsZW1ldHJ5KG1fc2Vzc2lvbklELCBbXSB7IH0pOwotfQot
CiB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3JhbmRmYXRoZXJTdGF0aXN0aWNzIHNo
b3VsZEdyYW5kZmF0aGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAppbmRl
eCBkZTQ4ODA1ZTEwMTBmOWVjOWZjZmU5YmI5ZGE4MzljYzJkOGU3ODFjLi5mM2ZlNjZkMDU5NDFh
YTNmMTdkYzI5MzI1MmY1MDdjMjVmYmMxYmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCkBAIC0xODksNyArMTg5
LDYgQEAgcHVibGljOgogICAgIHZvaWQgc2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
Jik7CiAgICAgdm9pZCBnZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpU
aGlyZFBhcnR5RGF0YT4mJik+JiYpOwogICAgIHZvaWQgc2NoZWR1bGVTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHNQcm9jZXNzaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9p
ZCBzdWJtaXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldEdyYW5kZmF0aGVyZWQoY29uc3QgVVJM
JiwgYm9vbCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGlzR3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICAg
ICB2b2lkIHNldEdyYW5kZmF0aGVyaW5nVGltZShTZWNvbmRzLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggZWE3YmIyZTdhZTQwY2FkMDMxYTFiYzRiMTFhZmE1OTAwYzIwNzEwZC4uMGU2
MWIzZmFiOTZhNDQ3MWJiOTQwMmYyYWVmMTcwODRiYTM5ODY0ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MjI3LDggKzQyMjcsNiBA
QAogCQk3QUZCRDM2MjIxRTUwRjM5MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0FGQkQzNjQyMUU1
MUJBQjAwNURCQUNCIC8qIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2NTIx
RTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1v
cnlTdG9yZS5oOyBwYXRoID0gQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5
U3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGQkQzNkIyMUU1NDU0NDAw
NURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oOyBwYXRoID0gQ2xhc3Np
Zmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCTdBRkJEMzZDMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBwYXRoID0gQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJN0FGQkQzNkQyMUU1NDZFMzAwNURCQUNCIC8qIFBlcnNpc3RlbmN5VXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUGVyc2lzdGVuY3lVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3QUZCRDM2RTIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVuY3lVdGlscy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJVc2VyQ29udGVudENvbnRyb2xsZXJEYXRhVHlwZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQzMyw4ICs4NDMxLDYgQEAKIAkJCQk3QTNGRUNBMTIxRjdDMDk3MDBGMjY3
Q0QgLyogU3RvcmFnZUFjY2Vzc1N0YXR1cy5oICovLAogCQkJCTdBODQzQTFBMjFFNDFGQjIwMERF
RjY2MyAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwICovLAogCQkJCTdBRkJE
MzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAq
LywKLQkJCQk3QUZCRDM2QzIxRTU0NTQ0MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeS5jcHAgKi8sCi0JCQkJN0FGQkQzNkIyMUU1NDU0NDAwNURCQUNCIC8qIFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuaCAqLywKIAkJCSk7CiAJCQluYW1lID0g
Q2xhc3NpZmllcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWIyMzVkZDk1MzQ5MWE4ZDcwOTEy
ZGI4ODNiN2QxMjI0NzYwZGIxZC4uYjYwMjhjMzAyYTI5OTdlZjYzOGIwNDgzZDcyNGYzODIwNDE1
NzAwZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI4IEBACisyMDIwLTEwLTEzICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVu
ZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIHRl
bGVtZXRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE3NjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTc0ODk4OD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWxlbWV0cnkgY2FsY3VsYXRpb24g
aW4gSVRQIGlzIHVudXNlZCwgdmVyeSBjb21wbGljYXRlZCwgYSBwb3RlbnRpYWwKKyAgICAgICAg
cHJpdmFjeSByaXNrLCBhbmQgaXQgY2F1c2VzIGZsYWt5IHRlc3RzLiBXZSBzaG91bGQgcmVtb3Zl
IGl0LgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5n
cy9UZXN0UnVubmVyLmlkbDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmRp
ZFJlY2VpdmVNZXNzYWdlVG9QYWdlKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjppbnN0
YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdUUjo6VGVzdFJ1bm5lcjo6c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRy
eSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9U
ZXN0UnVubmVyLmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzU3VibWl0VGVsZW1l
dHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHA6CisgICAg
ICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlU3luY2hyb25vdXNNZXNzYWdlRnJv
bUluamVjdGVkQnVuZGxlKToKKwogMjAyMC0xMC0xMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBs
ZS5jb20+CiAKICAgICAgICAgW1Rlc3RpbmddIFJlbmFtZSB0ZXN0IGhlYWRlciBjb21tYW5kcyB0
byBtYXRjaCBuYW1lcyBpbiBXZWJQcmVmZXJlbmNlcyoueWFtbApkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQmluZGluZ3MvVGVzdFJ1bm5l
ci5pZGwKaW5kZXggZGJkYWJmYzhhZWU5MGZhMjE2NzM0NjdiMzYyOWU0ZGQxYTVmMmI3MS4uNTUw
NmRjMzU1NWI5ZmRlZmU3NmE5NmJkZTQ4M2I1ZjNmMzZmYWI2NSAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9UZXN0UnVubmVyLmlkbAor
KysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RS
dW5uZXIuaWRsCkBAIC0yOTksNyArMjk5LDYgQEAgaW50ZXJmYWNlIFRlc3RSdW5uZXIgewogICAg
IGJvb2xlYW4gaXNTdGF0aXN0aWNzRXBoZW1lcmFsKCk7CiAgICAgdW5kZWZpbmVkIGluc3RhbGxT
dGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwog
ICAgIHVuZGVmaW5lZCBpbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNr
KG9iamVjdCBjYWxsYmFjayk7Ci0gICAgdW5kZWZpbmVkIGluc3RhbGxTdGF0aXN0aWNzRGlkUnVu
VGVsZW1ldHJ5Q2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKICAgICB1bmRlZmluZWQgc2V0U3Rh
dGlzdGljc0RlYnVnTW9kZShib29sZWFuIHZhbHVlLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIp
OwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VGb3JEZWJ1Z01v
ZGUoRE9NU3RyaW5nIGhvc3ROYW1lLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwogICAgIHVu
ZGVmaW5lZCBzZXRTdGF0aXN0aWNzTGFzdFNlZW4oRE9NU3RyaW5nIGhvc3ROYW1lLCBkb3VibGUg
c2Vjb25kcywgb2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKQEAgLTMyOCw3ICszMjcsNiBAQCBp
bnRlcmZhY2UgVGVzdFJ1bm5lciB7CiAgICAgYm9vbGVhbiBzdGF0aXN0aWNzTm90aWZ5T2JzZXJ2
ZXIoKTsKICAgICB1bmRlZmluZWQgc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJl
Y29yZHMoKTsKICAgICB1bmRlZmluZWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKG9i
amVjdCBjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgdW5kZWZpbmVkIHN0YXRpc3RpY3NTdWJtaXRU
ZWxlbWV0cnkoKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3QoYm9v
bGVhbiB2YWx1ZSk7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NTaG91bGRDbGFzc2lmeVJl
c291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sZWFuIHZhbHVlKTsKICAgICB1bmRl
ZmluZWQgc2V0U3RhdGlzdGljc01pbmltdW1UaW1lQmV0d2VlbkRhdGFSZWNvcmRzUmVtb3ZhbChk
b3VibGUgc2Vjb25kcyk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCmluZGV4IDIzMmVjZDZlYzIwMWMwZTM3ZWVm
M2YwZjNhOGRjM2RiMGUwZTgwZmUuLjhhMDJjODEyOTE3NjJjZTM3YTc1NTIzMjJmY2Y2NjA3OTdh
N2E2NWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCkBAIC00NTUsMjMgKzQ1NSw2IEBAIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S1N0cmluZ1JlZiBtCiAgICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0RpZFNjYW5EYXRh
UmVjb3Jkc0NhbGxiYWNrKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KLSAgICBpZiAoV0tT
dHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNzYWdlTmFtZSwgIlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnlGaW5pc2hlZCIpKSB7Ci0gICAgICAgIGF1dG8gbWVzc2FnZUJvZHlEaWN0
aW9uYXJ5ID0gZGljdGlvbmFyeVZhbHVlKG1lc3NhZ2VCb2R5KTsKLSAgICAgICAgYXV0byBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlcyA9IHVpbnQ2NFZhbHVlKG1lc3NhZ2VCb2R5RGljdGlvbmFy
eSwgIk51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzIik7Ci0gICAgICAgIGF1dG8gbnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uID0gdWludDY0VmFsdWUobWVzc2Fn
ZUJvZHlEaWN0aW9uYXJ5LCAiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uIik7Ci0gICAgICAgIGF1dG8gbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0
VXNlckludGVyYWN0aW9uID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiTnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uIik7Ci0gICAgICAg
IGF1dG8gdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNl
ckludGVyYWN0aW9uID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiVG9wUHJl
dmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9u
Iik7Ci0gICAgICAgIGF1dG8gbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0
aW9uYXJ5LCAiTWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uIik7Ci0gICAgICAgIGF1dG8gdG9wM051bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVJID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiVG9w
M051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJIik7Ci0gICAgICAgIGF1dG8gdG9wM01l
ZGlhblN1YkZyYW1lV2l0aG91dFVJID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCAiVG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJIik7Ci0gICAgICAgIGF1dG8gdG9wM01lZGlh
blN1YlJlc291cmNlV2l0aG91dFVJID0gdWludDY0VmFsdWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5
LCAiVG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJIik7Ci0gICAgICAgIGF1dG8gdG9wM01l
ZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSA9IHVpbnQ2NFZhbHVlKG1lc3NhZ2VCb2R5RGlj
dGlvbmFyeSwgIlRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUkiKTsKLSAgICAgICAg
YXV0byB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJID0gdWludDY0VmFsdWUo
bWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiVG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhv
dXRVSSIpOwotCi0gICAgICAgIG1fdGVzdFJ1bm5lci0+c3RhdGlzdGljc0RpZFJ1blRlbGVtZXRy
eUNhbGxiYWNrKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBudW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0
aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0
aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rp
b25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHRvcDNOdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB0b3AzTWVk
aWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0
VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwotICAgICAgICByZXR1
cm47Ci0gICAgfQogICAgIAogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1l
c3NhZ2VOYW1lLCAiRGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCIpKSB7CiAgICAgICAgIG1fdGVz
dFJ1bm5lci0+ZGlkR2V0QXBwbGljYXRpb25NYW5pZmVzdCgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcCBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKaW5kZXggMWEyZmE1
ZjI3ZWJiZGY4ZjQzZDhjZjNmMmIyNmIxNThiOWYwMWE3Zi4uZDM3ZGE2NjZmZWZkYjUwNDk4N2Iy
MGViZjMzNGI0NWE4ZmZhNmI2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCkBAIC03MzIsNyArNzMyLDYgQEAgZW51bSB7
CiAgICAgU2V0U3RhdGlzdGljc0hhc0hhZFVzZXJJbnRlcmFjdGlvbkNhbGxiYWNrSUQsCiAgICAg
U3RhdGlzdGljc0RpZE1vZGlmeURhdGFSZWNvcmRzQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNz
RGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2tJRCwKLSAgICBTdGF0aXN0aWNzRGlkUnVuVGVsZW1l
dHJ5Q2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkQ2xlYXJUaHJvdWdoV2Vic2l0ZURhdGFS
ZW1vdmFsQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkQ2xlYXJJbk1lbW9yeUFuZFBlcnNp
c3RlbnRTdG9yZUNhbGxiYWNrSUQsCiAgICAgU3RhdGlzdGljc0RpZFJlc2V0VG9Db25zaXN0ZW50
U3RhdGVDYWxsYmFja0lELApAQCAtMTU1MiwyMCArMTU1MSw2IEBAIHZvaWQgVGVzdFJ1bm5lcjo6
c3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5l
ckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lEKTsKIH0KIAot
dm9pZCBUZXN0UnVubmVyOjppbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNr
KEpTVmFsdWVSZWYgY2FsbGJhY2spCi17Ci0gICAgY2FjaGVUZXN0UnVubmVyQ2FsbGJhY2soU3Rh
dGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrSUQsIGNhbGxiYWNrKTsKLX0KLSAgICAKLXZv
aWQgVGVzdFJ1bm5lcjo6c3RhdGlzdGljc0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrKHVuc2lnbmVk
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVz
b3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3Vy
Y2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBt
ZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50
ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwg
dW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFu
U3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNX
aXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkp
Ci17Ci0gICAgU3RyaW5nIHN0cmluZyA9IG1ha2VTdHJpbmcoInsgXCJudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1wiIDogIiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsICIsIFwibnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uXCIgOiAiLCBudW1iZXJPZlBy
ZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sICIsIFwibnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uXCIgOiAiLCBudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sICIsIFwidG9wUHJldmFsZW50UmVzb3Vy
Y2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uXCIgOiAiLCB0b3BQ
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rp
b24sICIsIFwibWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uXCIgOiAiLCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25Q
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sICIsIFwidG9wM051bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aFVJXCIgOiAiLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVUksICIsIFwidG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJXCIgOiAiLCB0b3AzTWVk
aWFuU3ViRnJhbWVXaXRob3V0VUksICIsIFwidG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJ
XCIgOiAiLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksICIsIFwidG9wM01lZGlhblVu
aXF1ZVJlZGlyZWN0c1dpdGhvdXRVSVwiIDogIiwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dp
dGhvdXRVSSwgIiwgXCJ0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJXCIgOiAi
LCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJLCAiIH0iKTsKLSAgICAKLSAg
ICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcobWFpbkZyYW1l
SlNDb250ZXh0KCksIGNyZWF0ZUpTU3RyaW5nKHN0cmluZy51dGY4KCkuZGF0YSgpKS5nZXQoKSk7
Ci0KLSAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlD
YWxsYmFja0lELCAxLCAmcmVzdWx0KTsKLX0KLQogYm9vbCBUZXN0UnVubmVyOjpzdGF0aXN0aWNz
Tm90aWZ5T2JzZXJ2ZXIoKQogewogICAgIHJldHVybiBJbmplY3RlZEJ1bmRsZTo6c2luZ2xldG9u
KCkuc3RhdGlzdGljc05vdGlmeU9ic2VydmVyKCk7CkBAIC0xNTg4LDExICsxNTczLDYgQEAgdm9p
ZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzQ2FsbERpZFNldEJsb2NrQ29va2llc0Zvckhvc3RDYWxs
YmFjaygpCiAgICAgY2FsbFRlc3RSdW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkU2V0QmxvY2tD
b29raWVzRm9ySG9zdENhbGxiYWNrSUQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3Rp
Y3NTdWJtaXRUZWxlbWV0cnkoKQotewotICAgIHBvc3RTeW5jaHJvbm91c01lc3NhZ2UoIlN0YXRp
c3RpY3NTdWJtaXRUZWxlbWV0cnkiKTsKLX0KLQogdm9pZCBUZXN0UnVubmVyOjpzZXRTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZhbHVlKQogewog
ICAgIHBvc3RTeW5jaHJvbm91c01lc3NhZ2UoIlN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkIiwgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaAppbmRleCBiNjE0MWNlNzdiNjg3YzQ1OWE4
ZTg1ZDQwN2EwNDQ2MmM3MjE5YTc3Li44ZmJjZGY5N2ZlNmI4NjE5NDYwYzgzNzAyYTE2ZDcxMjU1
ZTkwOWRjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L1Rlc3RSdW5uZXIuaApAQCAtMzg4LDE1ICszODgsMTIgQEAgcHVibGljOgogICAgIGJvb2wgaXNT
dGF0aXN0aWNzRXBoZW1lcmFsKCk7CiAgICAgdm9pZCBpbnN0YWxsU3RhdGlzdGljc0RpZE1vZGlm
eURhdGFSZWNvcmRzQ2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjayk7CiAgICAgdm9pZCBpbnN0
YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJh
Y2spOwotICAgIHZvaWQgaW5zdGFsbFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayhK
U1ZhbHVlUmVmIGNhbGxiYWNrKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVj
b3Jkc0NhbGxiYWNrKCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2Fs
bGJhY2soKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayh1bnNp
Z25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNl
ckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01l
ZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJl
Y3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91
dFVJKTsKICAgICBib29sIHN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpOwogICAgIHZvaWQgc3Rh
dGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKICAgICB2b2lkIHN0YXRp
c3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsK
ICAgICB2b2lkIHN0YXRpc3RpY3NDYWxsRGlkU2V0QmxvY2tDb29raWVzRm9ySG9zdENhbGxiYWNr
KCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAgICAgdm9pZCBzZXRT
dGF0aXN0aWNzRGVidWdNb2RlKGJvb2wgdmFsdWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhhbmRs
ZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXREZWJ1Z01vZGVDYWxsYmFjaygpOwog
ICAgIHZvaWQgc2V0U3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlRm9yRGVidWdNb2RlKEpTU3Ry
aW5nUmVmIGhvc3ROYW1lLCBKU1ZhbHVlUmVmIGNvbXBsZXRpb25IYW5kbGVyKTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggNTgxNDM2NjcxM2U4YmJiOTRm
YWQyNTc3Zjg5NzYxM2U5MDY3MjkxYS4uNDNmNmEyNjI0MzJmM2E2OGQxY2ExMjczM2RmMzczZmMz
ODI2NTc2OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAg
LTMyMjQsMTEgKzMyMjQsNiBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpzdGF0aXN0aWNzVXBkYXRl
Q29va2llQmxvY2tpbmcoKQogICAgIG1fY3VycmVudEludm9jYXRpb24tPmRpZFNldEJsb2NrQ29v
a2llc0Zvckhvc3QoKTsKIH0KIAotdm9pZCBUZXN0Q29udHJvbGxlcjo6c3RhdGlzdGljc1N1Ym1p
dFRlbGVtZXRyeSgpCi17Ci0gICAgV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1N1Ym1pdFRl
bGVtZXRyeSh3ZWJzaXRlRGF0YVN0b3JlKCkpOwotfQotCiB2b2lkIFRlc3RDb250cm9sbGVyOjpz
ZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sIHZh
bHVlKQogewogICAgIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1do
ZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKHdlYnNpdGVEYXRhU3RvcmUoKSwgdmFsdWUpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5oCmluZGV4IDBiOTgxNzcwN2Q2YWY0NjVh
YzU5NzgxNzhhOTJhNzljNTBkMzVkZjQuLmFmOTM1NjMxY2Q2NGU3ZGM0NWQ2MTdkNzJmZDUyNDhm
YzZjYzk4NDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKQEAgLTIz
OCw3ICsyMzgsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzVGltZVRvTGl2ZVVz
ZXJJbnRlcmFjdGlvbihkb3VibGUgc2Vjb25kcyk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vz
c1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNv
b2tpZUJsb2NraW5nKCk7Ci0gICAgdm9pZCBzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7CiAg
ICAgdm9pZCBzZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0KGJvb2wpOwogICAg
IHZvaWQgc2V0U3RhdGlzdGljc1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29y
ZHNSZW1vdmFsKGJvb2wpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0
SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNw
cAppbmRleCA5NTU5OWViN2JlZmFmY2M0MjZiZjE0YTMzYTJlYTRkNmUyOTY3MTE4Li4xNGMwNGVk
MWZhOTM5NGY1NzJmNjQ5YTkxYjQ3ZWZiMjA2ZWY4NTRlIDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTE0MywxMSArMTE0Myw2IEBAIFdLUmV0YWluUHRy
PFdLVHlwZVJlZj4gVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5jaHJvbm91c01lc3NhZ2VG
cm9tSW5qZWN0ZWRCCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChX
S1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3RhdGlzdGljc1N1Ym1p
dFRlbGVtZXRyeSIpKSB7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zdGF0
aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCk7Ci0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0K
LQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAiU3Rh
dGlzdGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQiKSkgewogICAgICAg
ICBUZXN0Q29udHJvbGxlcjo6c2luZ2xldG9uKCkuc2V0U3RhdGlzdGljc05vdGlmeVBhZ2VzV2hl
bkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQoYm9vbGVhblZhbHVlKG1lc3NhZ2VCb2R5KSk7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFjMTMwYjUxMTMyNGFhMWJmNGRjY2Q5ODVlNTQy
NDI3MmI3NjJkZDAuLjhjYTlkZjFiMTVlY2U5MDI5MzlkMDAzNGNkNjkxNDM4YjE2ODg5MTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMC0xMyAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVf
Y2hlbmV5QGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cyB0ZWxlbWV0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNzY2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjk3NDg5ODg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGxheW91dCB0ZXN0
cy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0
cnktZ2VuZXJhdGlvbi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWw6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMjAtMTAt
MTMgIFNhbSBXZWluaWcgIDx3ZWluaWdAYXBwbGUuY29tPgogCiAgICAgICAgIFtUZXN0aW5nXSBS
ZW5hbWUgdGVzdCBoZWFkZXIgY29tbWFuZHMgdG8gbWF0Y2ggbmFtZXMgaW4gV2ViUHJlZmVyZW5j
ZXMqLnlhbWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24t
ZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjcwNTYwMGJjYjRl
M2FiNThkMTMyMzVjNjAxODI5ZDEzODRhNWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApA
QCAtMSwxOCArMCwwIEBACi1UZXN0cyB0aGF0IHRlbGVtZXRyeSBmb3IgcHJldmFsZW50IHJlc291
cmNlcyBpcyBjYWxjdWxhdGVkIGNvcnJlY3RseS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLVBBU1MgSG9zdHMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2VzLgotRkFJ
TCB0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzIHNob3VsZCBiZSAwIChvZiB0eXBl
IG51bWJlcikuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLUZBSUwgdGVzdFJl
c3VsdC50b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24gc2hvdWxkIGJl
IDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgot
RkFJTCB0ZXN0UmVzdWx0LnRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIHNob3VsZCBi
ZSAwIChvZiB0eXBlIG51bWJlcikuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4K
LVBBU1MgSG9zdHMgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2VzLgotRkFJTCB0ZXN0
UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzIHNob3VsZCBiZSA0IChvZiB0eXBlIG51bWJl
cikuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLUZBSUwgdGVzdFJlc3VsdC50
b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24gc2hvdWxkIGJlIDEgKG9m
IHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgotRkFJTCB0
ZXN0UmVzdWx0LnRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIHNob3VsZCBiZSA0IChv
ZiB0eXBlIG51bWJlcikuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KLVBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLVNvbWUgdGVzdHMgZmFpbGVkLgotCi1URVNUIENP
TVBMRVRFCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNTU3ZTgyMzk4OGI3M2FjOGUwNDNmNjdmZGVm
ZWQ4ZGM0ZjcwZDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRy
eS1nZW5lcmF0aW9uLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMjAgKzAsMCBAQAotPCFET0NU
WVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4KLSAg
ICA8dGl0bGU+VGVzdCBmb3IgVGVsZW1ldHJ5IEdlbmVyYXRpb248L3RpdGxlPgotICAgIDxzY3Jp
cHQgc3JjPSIvanMtdGVzdC1yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9InJlc291cmNlcy91dGlsLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0ZWxlbWV0cnkgZm9yIHByZXZh
bGVudCByZXNvdXJjZXMgaXMgY2FsY3VsYXRlZCBjb3JyZWN0bHkuIik7Ci0gICAganNUZXN0SXNB
c3luYyA9IHRydWU7Ci0KLSAgICBjb25zdCB0b3BGcmFtZVVybDEgPSAiaHR0cDovLzEyNy4wLjAu
MTo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHRvcEZyYW1lVXJsMiA9ICJodHRwOi8vMTI3LjAuMC4y
OjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgdG9wRnJhbWVVcmwzID0gImh0dHA6Ly8xMjcuMC4wLjM6
ODAwMC90ZW1wIjsKLSAgICBjb25zdCB0b3BGcmFtZVVybDQgPSAiaHR0cDovLzEyNy4wLjAuNDo4
MDAwL3RlbXAiOwotICAgIGNvbnN0IHByZXZhbGVudFJlc291cmNlVXJsMSA9ICJodHRwOi8vMTI3
LjAuMS4xOjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgcHJldmFsZW50UmVzb3VyY2VVcmwyID0gImh0
dHA6Ly8xMjcuMC4xLjI6ODAwMC90ZW1wIjsKLSAgICBjb25zdCBwcmV2YWxlbnRSZXNvdXJjZVVy
bDMgPSAiaHR0cDovLzEyNy4wLjEuMzo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHByZXZhbGVudFJl
c291cmNlVXJsNCA9ICJodHRwOi8vMTI3LjAuMS40OjgwMDAvdGVtcCI7Ci0KLSAgICBmdW5jdGlv
biBjaGVja0luc3VmZmljaWVudENsYXNzaWZpY2F0aW9uQW5kQ29udGludWUoKSB7Ci0gICAgICAg
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRS
ZXNvdXJjZVVybDEpKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IDEgZGlkIG5vdCBn
ZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAgICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNl
VXJsMikpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgMiBkaWQgbm90IGdldCBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZXMuIik7
Ci0gICAgICAgICAgICBydW5UZWxlbWV0cnlBbmRDb250aW51ZSgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gY2hlY2tTdWZmaWNpZW50Q2xhc3NpZmljYXRpb25BbmRDb250aW51
ZSgpIHsKLSAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291
cmNlKHByZXZhbGVudFJlc291cmNlVXJsMSkpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhv
c3QgMSBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAg
ICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAg
IH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2UocHJl
dmFsZW50UmVzb3VyY2VVcmwyKSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCAyIGRp
ZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAgICAg
ICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfSBlbHNl
IGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRS
ZXNvdXJjZVVybDMpKSB7Ci0gICAgICAgICAgICB0ZXN0RmFpbGVkKCJIb3N0IDMgZGlkIG5vdCBn
ZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3VyY2UuIik7Ci0gICAgICAgICAgICBzZXRF
bmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3QpOwotICAgICAgICB9IGVsc2UgaWYgKCF0
ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJlc291cmNlKHByZXZhbGVudFJlc291cmNl
VXJsNCkpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQoIkhvc3QgNCBkaWQgbm90IGdldCBjbGFz
c2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsKLSAgICAgICAgICAgIHNldEVuYWJsZUZl
YXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg
ICB0ZXN0UGFzc2VkKCJIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZXMuIik7
Ci0gICAgICAgICAgICBydW5UZWxlbWV0cnlBbmRDb250aW51ZSgpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgZnVuY3Rpb24gbWFrZVVybFByZXZhbGVudChwcmV2YWxlbnRSZXNvdXJjZVVybCkg
ewotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMSk7Ci0gICAgICAgIHRlc3RS
dW5uZXIuc2V0U3RhdGlzdGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRS
ZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwyKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BG
cmFtZVVybDMpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVy
VG9wRnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsNCk7Ci0KLSAg
ICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRv
KHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDEpOwotICAgICAgICB0ZXN0UnVubmVy
LnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8ocHJldmFsZW50UmVzb3Vy
Y2VVcmwsIHRvcEZyYW1lVXJsMik7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RUbyhwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVV
cmwzKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVS
ZWRpcmVjdFRvKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDQpOwotCi0gICAgICAg
IHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihw
cmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwxKTsKLSAgICAgICAgdGVzdFJ1bm5lci5z
ZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291
cmNlVXJsLCB0b3BGcmFtZVVybDIpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZy
YW1lVXJsMyk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5k
ZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmw0KTsKLSAg
ICB9Ci0KLSAgICBmdW5jdGlvbiBzZXRVcEluc3VmZmljaWVudFN0YXRpc3RpY3NBbmRDb250aW51
ZSgpIHsKLSAgICAgICAgbWFrZVVybFByZXZhbGVudChwcmV2YWxlbnRSZXNvdXJjZVVybDEpOwot
ICAgICAgICBtYWtlVXJsUHJldmFsZW50KHByZXZhbGVudFJlc291cmNlVXJsMik7Ci0KLSAgICAg
ICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0NhbGxiYWNr
KGNoZWNrSW5zdWZmaWNpZW50Q2xhc3NpZmljYXRpb25BbmRDb250aW51ZSk7Ci0gICAgICAgIHRl
c3RSdW5uZXIuaW5zdGFsbFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayhjaGVja0lu
c3VmZmljaWVudFRlbGVtZXRyeSk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nl
c3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMoKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBzZXRV
cFN1ZmZpY2llbnRTdGF0aXN0aWNzQW5kQ29udGludWUoKSB7Ci0gICAgICAgIG1ha2VVcmxQcmV2
YWxlbnQocHJldmFsZW50UmVzb3VyY2VVcmwzKTsKLSAgICAgICAgbWFrZVVybFByZXZhbGVudChw
cmV2YWxlbnRSZXNvdXJjZVVybDQpOwotCi0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGlj
c0hhc0hhZFVzZXJJbnRlcmFjdGlvbihwcmV2YWxlbnRSZXNvdXJjZVVybDQsIHRydWUsIGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFNjYW5E
YXRhUmVjb3Jkc0NhbGxiYWNrKGNoZWNrU3VmZmljaWVudENsYXNzaWZpY2F0aW9uQW5kQ29udGlu
dWUpOwotICAgICAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVt
ZXRyeUNhbGxiYWNrKGNoZWNrU3VmZmljaWVudFRlbGVtZXRyeSk7Ci0gICAgICAgICAgICB0ZXN0
UnVubmVyLnN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHJ1blRlbGVtZXRyeUFuZENvbnRpbnVlKCkg
ewotICAgICAgICB0ZXN0UnVubmVyLnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKLSAgICB9
Ci0KLSAgICB2YXIgdGVzdFJlc3VsdDsKLSAgICBmdW5jdGlvbiBjaGVja0luc3VmZmljaWVudFRl
bGVtZXRyeShyZXN1bHQpIHsKLSAgICAgICAgdGVzdFJlc3VsdCA9IHJlc3VsdDsKLSAgICAgICAg
c2hvdWxkQmUoInRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMiLCAiMCIpOwotICAg
ICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNlc1dpdGhVc2Vy
SW50ZXJhY3Rpb24iLCAiMCIpOwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3AzU3Vi
ZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyIsICIwIik7Ci0gICAgICAgIHNldFVwU3VmZmljaWVu
dFN0YXRpc3RpY3NBbmRDb250aW51ZSgpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGNoZWNrU3Vm
ZmljaWVudFRlbGVtZXRyeShyZXN1bHQpIHsKLSAgICAgICAgdGVzdFJlc3VsdCA9IHJlc3VsdDsK
LSAgICAgICAgc2hvdWxkQmUoInRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMiLCAi
NCIpOwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24iLCAiMSIpOwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3Vs
dC50b3AzU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lucyIsICI0Iik7Ci0gICAgICAgIHNldEVu
YWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAgfQotCi0gICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7Ci0gICAgICAgIHNldEVuYWJsZUZlYXR1cmUodHJ1ZSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBzZXRVcEluc3VmZmljaWVudFN0YXRpc3RpY3NBbmRDb250aW51ZSgp
OwotICAgICAgICB9KTsKLSAgICB9Ci08L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3drMi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNjczNzgzN2UyODYzMmUw
ZGQ2NWRiN2FlMWFmY2QxZjE0OThmNDRkMi4uN2Q2MmVjNWRmNzFjYTRmMDllOTMyNDE4MGE0YmFh
ZTg3NTIyYTI0YSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBl
Y3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTcyMyw3ICs3MjMsNiBAQCBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xh
c3NpZnktYXMtcHJldmFsZW50LWJhc2VkLW9uLXRvcC1mcmFtZS1yZWRpcgogaHR0cC90ZXN0cy9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzL2NsYXNzaWZ5LWFzLXByZXZhbGVudC1iYXNlZC1vbi10b3At
ZnJhbWUtdW5pcXVlLXJlZGlyZWN0cy10by5odG1sIFsgUGFzcyBdCiBodHRwL3Rlc3RzL3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MvY2xlYXItaW4tbWVtb3J5LWFuZC1wZXJzaXN0ZW50LXN0b3JlLmh0
bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9ncmFuZGZhdGhl
cmluZy5odG1sIFsgUGFzcyBdCi13ZWJraXQub3JnL2IvMTgwNzAzIGh0dHAvdGVzdHMvcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcy90ZWxlbWV0cnktZ2VuZXJhdGlvbi5odG1sIFsgUGFzcyBGYWlsdXJl
IF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9wcnVuZS1zdGF0aXN0aWNzLmh0
bWwgWyBQYXNzIF0KIGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcyBbIFBhc3MgXQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411272</attachid>
            <date>2020-10-13 15:42:07 -0700</date>
            <delta_ts>2020-10-14 08:29:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217665-20201013154206.patch</filename>
            <type>text/plain</type>
            <size>114588</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIzOTAzMDNmZDAxNTFiZjU3
ZWEzMTkxZjIyZWVhMmRlZGRkODIwNGEuLjkyZTE5M2UyOWY3NzYwNGRiMWIyODEzNDNlMWNjZjcy
MDg2Yzc3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291
cmNlTG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4
OTg4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
bGVtZXRyeSBjYWxjdWxhdGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBh
IHBvdGVudGlhbAorICAgICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVz
dHMuIFdlIHNob3VsZCByZW1vdmUgaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBFeGlzdGlu
ZyBJVFAgdGVzdHMgd2lsbCBjaGVjayBmb3Igbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJh
c2VTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZSk6CisgICAgICAg
IChXZWJLaXQ6Om1ha2VNZWRpYW5XaXRoVUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OmJ1aWxkUXVlcnlTdGFydEFuZEVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Om1h
a2VNZWRpYW5XaXRob3V0VUlRdWVyeSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmdldE1l
ZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRO
dW1iZXJPZlByZXZhbGVudFJlc291cmNlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJL
aXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlOjpnZXRUb3BQcmV2ZWxlbnRSZXNvdXJj
ZURheXNTaW5jZVVJIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6Z2V0TWVkaWFu
T2ZQcmV2YWxlbnRSZXNvdXJjZVdpdGhvdXRVc2VySW50ZXJhY3Rpb24pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc0luVG9wUmVzb3VyY2Vz
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6bWFrZVN0YXRpc3RpY1F1ZXJ5KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNh
bGN1bGF0ZVRlbGVtZXRyeURhdGEgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVs
ZW1ldHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lm
aWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmU6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6Y2FsY3VsYXRlQW5kU3VibWl0VGVsZW1l
dHJ5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRTaG91bGRTdWJtaXRU
ZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZXRT
aG91bGRTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0
YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NUZWxlbWV0cnkuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Ns
YXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oOiBSZW1vdmVkLgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnN1Ym1pdFRlbGVtZXRyeSk6IERlbGV0ZWQuCisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpu
b3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oOgorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5j
cHA6CisgICAgICAgIChXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5
KTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3Jl
UmVmLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUu
bW06CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRyeSk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oOgorICAgICAgICAqIFdl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFBsYXRmb3JtRlRXLmNt
YWtlOgorICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFBsYXRmb3JtUGxheVN0
YXRpb24uY21ha2U6CisgICAgICAgICogUGxhdGZvcm1XaW4uY21ha2U6CisgICAgICAgICogU291
cmNlc1dQRS50eHQ6CisKIDIwMjAtMTAtMTMgIEtpbW1vIEtpbm51bmVuICA8a2tpbm51bmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBDb2NvYTogTWFrZSBXZWJHTExheWVyIG5vdCBkZXBlbmRlbnQg
b24gIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3Rv
cmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCBlZmUwYzAwNWFlZDI5MWRkM2U1
NmQ5MjU0ZDVlMWU3YThkNDUzODk1Li40ZTdjNjA5OWVkMDJlY2NlMmRkMDZhMWRkYmYzNzFmNWEw
NGNiZDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZp
ZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZS5jcHAKQEAgLTM1LDcgKzM1LDYgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVEYXRhU3RvcmUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgpAQCAtMjM0LDggKzIzMyw2IEBAIGNvbnN0ZXhwciBh
dXRvIGNyZWF0ZVVuaXF1ZUluZGV4U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyA9ICJDUkVB
VEUgVU5JUVVFIElOCiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJbmRleFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzRnJvbSA9ICJDUkVBVEUgVU5JUVVFIElOREVYIElGIE5PVCBFWElTVFMg
U3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNGcm9tX3N1YnJlc291cmNlRG9tYWluSURfZnJvbURv
bWFpbklEIG9uIFN1YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMgKCBzdWJyZXNvdXJjZURv
bWFpbklELCBmcm9tRG9tYWluSUQgKTsiX3M7CiBjb25zdGV4cHIgYXV0byBjcmVhdGVVbmlxdWVJ
bmRleE9wZXJhdGluZ0RhdGVzID0gIkNSRUFURSBVTklRVUUgSU5ERVggSUYgTk9UIEVYSVNUUyBP
cGVyYXRpbmdEYXRlc195ZWFyX21vbnRoX21vbnRoRGF5IG9uIE9wZXJhdGluZ0RhdGVzICggeWVh
ciwgbW9udGgsIG1vbnRoRGF5ICk7Il9zOwogCi1jb25zdCB1bnNpZ25lZCBtaW5pbXVtUHJldmFs
ZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKLQogc3RhdGljIGNvbnN0IFN0cmluZyBPYnNl
cnZlZERvbWFpbnNUYWJsZVNjaGVtYVYxKCkKIHsKICAgICByZXR1cm4gY3JlYXRlT2JzZXJ2ZWRE
b21haW47CkBAIC0yOTYsMTEgKzI5Myw2IEBAIFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFz
ZVN0b3JlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZShXZWJSZXNvCiAgICAg
aWYgKCFtX2RhdGFiYXNlLnR1cm5PbkluY3JlbWVudGFsQXV0b1ZhY3V1bSgpKQogICAgICAgICBS
RUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6dHVybk9uSW5jcmVtZW50YWxBdXRvVmFjdXVtIGZhaWxlZCwgZXJyb3IgbWVz
c2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIHRoaXMsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwogCi0gICAgd29ya1F1ZXVlLmRpc3BhdGNoQWZ0ZXIoNV9zLCBbd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vh
a1RoaXMtPmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeSgpOwotICAgIH0pOwotCiAgICAgaW5j
bHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKICAgICBhbGxTdG9yZXMoKS5h
ZGQodGhpcyk7CiB9CkBAIC05NDIsMTEgKzkzNCw2IEBAIHN0YXRpYyBjb25zdCBTdHJpbmdWaWV3
IGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpCiAgICAgICAgICJHUk9VUCBCWSBkb21haW5J
RCkgT1JERVIgQlkgc3VtIERFU0MgIjsKIH0KIAotc3RhdGljIFNRTGl0ZVN0YXRlbWVudCBtYWtl
TWVkaWFuV2l0aFVJUXVlcnkoU1FMaXRlRGF0YWJhc2UmIGRhdGFiYXNlKQotewotICAgIHJldHVy
biBTUUxpdGVTdGF0ZW1lbnQoZGF0YWJhc2UsIG1ha2VTdHJpbmcoIlNFTEVDVCBtb3N0UmVjZW50
VXNlckludGVyYWN0aW9uVGltZSBGUk9NIE9ic2VydmVkRG9tYWlucyBJTk5FUiBKT0lOIChTRUxF
Q1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5nKCksICIpIGFzIHEgT04gT2JzZXJ2ZWRE
b21haW5zLmRvbWFpbklEID0gcS5kb21haW5JRCBMSU1JVCAxIE9GRlNFVCA/IikpOwotfQotCiBW
ZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNw
ZWNpZmljRmlyc3RQYXJ0eT4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Omdl
dFRoaXJkUGFydHlEYXRhRm9yU3BlY2lmaWNGaXJzdFBhcnR5RG9tYWlucyh1bnNpZ25lZCB0aGly
ZFBhcnR5RG9tYWluSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiB0aGlyZFBhcnR5RG9tYWlu
KSBjb25zdAogewogICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVt
ZW50KG1fZ2V0QWxsU3ViU3RhdGlzdGljc1N0YXRlbWVudCwgZ2V0QWxsU3ViU3RhdGlzdGljc1Vu
ZGVyRG9tYWluUXVlcnksICJnZXRUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eURv
bWFpbnMiX3MpOwpAQCAtOTk0LDI2NiArOTgxLDYgQEAgVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6VGhpcmRQYXJ0eURhdGE+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXQK
ICAgICByZXR1cm4gdGhpcmRQYXJ0eURhdGFMaXN0OwogfQogCi1zdGF0aWMgc3RkOjpwYWlyPFN0
cmluZ1ZpZXcsIFN0cmluZ1ZpZXc+IGJ1aWxkUXVlcnlTdGFydEFuZEVuZChQcmV2YWxlbnRSZXNv
dXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWMgc3RhdGlzdGljKQotewotICAgIHN3aXRj
aCAoc3RhdGlzdGljKSB7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1l
dHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblN1YkZyYW1lV2l0aG91dFVJOgotICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoIlNFTEVDVCBjb3VudFN1YkZyYW1lVW5kZXJUb3BGcmFtZSBGUk9NIE9i
c2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUIGNvdW50U3ViRnJhbWVVbmRlclRvcEZy
YW1lLCAiLCAiKSBhcyBxIE9OIG8uZG9tYWluSUQgPSBxLmRvbWFpbklEIExJTUlUIDEgT0ZGU0VU
ID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRp
c3RpYzo6TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcigiU0VMRUNUIGNvdW50U3ViUmVzb3VyY2VVbmRlclRvcEZyYW1lIEZST00gT2JzZXJ2
ZWREb21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgY291bnRTdWJSZXNvdXJjZVVuZGVyVG9wRnJh
bWUsICIsICIpIGFzIHEgT04gby5kb21haW5JRCA9IHEuZG9tYWluSUQgTElNSVQgMSBPRkZTRVQg
PyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlz
dGljOjpNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6
Om1ha2VfcGFpcigiU0VMRUNUIGNvdW50VW5pcXVlUmVkaXJlY3RUbyBGUk9NIE9ic2VydmVkRG9t
YWlucyBvIElOTkVSIEpPSU4oU0VMRUNUIGNvdW50VW5pcXVlUmVkaXJlY3RUbywgIiwgIikgYXMg
cSBPTiBvLmRvbWFpbklEID0gcS5kb21haW5JRCBMSU1JVCAxIE9GRlNFVCA/Iik7Ci0gICAgY2Fz
ZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhbkRh
dGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KCJTRUxFQ1QgZGF0YVJlY29yZHNSZW1vdmVkIEZST00gKFNFTEVDVCAqIEZST00gT2JzZXJ2ZWRE
b21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgIiwgIikgYXMgcSBPTiBvLmRvbWFpbklEID0gcS5k
b21haW5JRCkgTElNSVQgMSBPRkZTRVQgPyIpOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VE
YXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5UaW1lc0FjY2Vzc2VkRHVlVG9Vc2Vy
SW50ZXJhY3Rpb25XaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigiU0VM
RUNUIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiBGUk9NIChT
RUxFQ1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElOTkVSIEpPSU4oU0VMRUNUICIsICIpIGFz
IHEgT04gby5kb21haW5JRCA9IHEuZG9tYWluSUQpIExJTUlUIDEgT0ZGU0VUID8iKTsKLSAgICBj
YXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFu
VGltZXNBY2Nlc3NlZER1ZVRvU3RvcmFnZUFjY2Vzc0FQSVdpdGhvdXRVSToKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bWFrZV9wYWlyKCJTRUxFQ1QgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRv
U3RvcmFnZUFjY2Vzc0FQSSBGUk9NIChTRUxFQ1QgKiBGUk9NIE9ic2VydmVkRG9tYWlucyBvIElO
TkVSIEpPSU4oU0VMRUNUICIsICIpIGFzIHEgT04gby5kb21haW5JRCA9IHEuZG9tYWluSUQpIExJ
TUlUIDEgT0ZGU0VUID8iKTsKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxl
bWV0cnk6OlN0YXRpc3RpYzo6TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUk6Ci0gICAg
ICAgIExPR19FUlJPUigiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1ha2VN
ZWRpYW5XaXRob3V0VUlRdWVyeSB3YXMgY2FsbGVkIGZvciBhbiBpbmNvcnJlY3Qgc3RhdGlzdGlj
LCB1bmRldGVybWluZWQgcXVlcnkgYmVoYXZpb3Igd2lsbCByZXN1bHQuIik7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotICAgIHJldHVybiB7IH07Ci19Ci0K
LXN0YXRpYyBTUUxpdGVTdGF0ZW1lbnQgbWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5KFNRTGl0ZURh
dGFiYXNlJiBkYXRhYmFzZSwgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3Rh
dGlzdGljIHN0YXRpc3RpYykKLXsKLSAgICBhdXRvW3F1ZXJ5U3RhcnQsIHF1ZXJ5RW5kXSA9IGJ1
aWxkUXVlcnlTdGFydEFuZEVuZChzdGF0aXN0aWMpOwotCi0gICAgcmV0dXJuIFNRTGl0ZVN0YXRl
bWVudChkYXRhYmFzZSwgbWFrZVN0cmluZyhxdWVyeVN0YXJ0LCBqb2luU3ViU3RhdGlzdGljc0Zv
clNvcnRpbmcoKSwgcXVlcnlFbmQpKTsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldE1lZGlhbk9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihTUUxpdGVEYXRhYmFzZSYgZGF0
YWJhc2UsIHVuc2lnbmVkIHByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3Vu
dCkKLXsKLSAgICBTUUxpdGVTdGF0ZW1lbnQgbWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQgPSBt
YWtlTWVkaWFuV2l0aFVJUXVlcnkoZGF0YWJhc2UpOwotCi0gICAgLy8gUHJlcGFyZQotICAgIGlm
IChtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMSVRFX09LKSB7Ci0g
ICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFz
dEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gQmluZAotICAgIGlmIChtZWRpYW5EYXlzU2luY2VVSVN0
YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSyB8fCBtZWRpYW5EYXlzU2luY2VVSVN0
YXRlbWVudC5iaW5kSW50KDIsIDEpICE9IFNRTElURV9PSyB8fCBtZWRpYW5EYXlzU2luY2VVSVN0
YXRlbWVudC5iaW5kSW50KDMsIChwcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
Q291bnQgLyAyKSAhPSBTUUxJVEVfT0spKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5l
dHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TWVkaWFuT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBlcnJvciBtZXNzYWdlOiAlIiBQ
VUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gU3Rl
cAotICAgIGlmIChtZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5zdGVwKCkgIT0gU1FMSVRFX1JP
VykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBkb3VibGUgcmF3U2Vjb25kcyA9IG1lZGlhbkRh
eXNTaW5jZVVJU3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgwKTsKLSAgICBXYWxsVGltZSB3YWxs
VGltZSA9IFdhbGxUaW1lOjpmcm9tUmF3U2Vjb25kcyhyYXdTZWNvbmRzKTsKLSAgICB1bnNpZ25l
ZCBtZWRpYW4gPSB3YWxsVGltZSA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxU
aW1lOjpub3coKSAtIHdhbGxUaW1lKSAvIDI0X2gpOwotCi0gICAgaWYgKHByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3VudCAmIDEpCi0gICAgICAgIHJldHVybiBtZWRpYW47
Ci0KLSAgICBTUUxpdGVTdGF0ZW1lbnQgbG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudCA9
IG1ha2VNZWRpYW5XaXRoVUlRdWVyeShkYXRhYmFzZSk7Ci0KLSAgICAvLyBQcmVwYXJlCi0gICAg
aWYgKGxvd2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNRTElURV9P
SykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVz
ZXJJbnRlcmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIC8vIEJpbmQKLSAgICBpZiAobG93ZXJNZWRpYW5E
YXlzU2luY2VVSVN0YXRlbWVudC5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSyB8fCBsb3dlck1l
ZGlhbkRheXNTaW5jZVVJU3RhdGVtZW50LmJpbmRJbnQoMiwgMSkgIT0gU1FMSVRFX09LIHx8IGxv
d2VyTWVkaWFuRGF5c1NpbmNlVUlTdGF0ZW1lbnQuYmluZEludCgzLCAoKHByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25Db3VudCAtIDEpIC8gMikpICE9IFNRTElURV9PSykgewot
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmU6OmdldE1lZGlhbk9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIGRhdGFiYXNlLmxh
c3RFcnJvck1zZygpKTsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJl
dHVybiAwOwotICAgIH0KLQotICAgIC8vIFN0ZXAKLSAgICBpZiAobG93ZXJNZWRpYW5EYXlzU2lu
Y2VVSVN0YXRlbWVudC5zdGVwKCkgPT0gU1FMSVRFX1JPVykgewotICAgICAgICBkb3VibGUgcmF3
U2Vjb25kc0xvd2VyID0gbG93ZXJNZWRpYW5EYXlzU2luY2VVSVN0YXRlbWVudC5nZXRDb2x1bW5E
b3VibGUoMCk7Ci0gICAgICAgIFdhbGxUaW1lIHdhbGxUaW1lTG93ZXIgPSBXYWxsVGltZTo6ZnJv
bVJhd1NlY29uZHMocmF3U2Vjb25kc0xvd2VyKTsKLSAgICAgICAgcmV0dXJuICgod2FsbFRpbWVM
b3dlciA8PSBXYWxsVGltZSgpID8gMCA6IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHdh
bGxUaW1lTG93ZXIpIC8gMjRfaCkpICsgbWVkaWFuKSAvIDI7Ci0gICAgfQotICAgIHJldHVybiAw
OwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0
TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMoKSBjb25zdAotewotICAgIGF1dG8gc2NvcGVkU3Rh
dGVtZW50ID0gdGhpcy0+c2NvcGVkU3RhdGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNT
dGF0ZW1lbnQsIGNvdW50UHJldmFsZW50UmVzb3VyY2VzUXVlcnksICJnZXROdW1iZXJPZlByZXZh
bGVudFJlc291cmNlcyJfcyk7Ci0gICAgaWYgKCFzY29wZWRTdGF0ZW1lbnQpCi0gICAgICAgIHJl
dHVybiAwOwotICAgIAotICAgIGF1dG8gc3RlcFZhbHVlID0gc2NvcGVkU3RhdGVtZW50LT5zdGVw
KCk7Ci0gICAgaWYgKHN0ZXBWYWx1ZSAhPSBTUUxJVEVfUk9XICYmIHN0ZXBWYWx1ZSAhPSBTUUxJ
VEVfRE9ORSkgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
IGZhaWxlZCB0byBzdGVwLCBlcnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgbV9k
YXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgaWYgKHN0ZXBWYWx1ZSA9PSBTUUxJVEVfUk9X
KSB7Ci0gICAgICAgIHVuc2lnbmVkIHByZXZhbGVudFJlc291cmNlQ291bnQgPSBzY29wZWRTdGF0
ZW1lbnQtPmdldENvbHVtbkludCgwKTsKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291
bnQgPj0gbWluaW11bVByZXZhbGVudFJlc291cmNlc0ZvclRlbGVtZXRyeSkKLSAgICAgICAgICAg
IHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZUNvdW50OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0K
LQotdW5zaWduZWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmdldE51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJKCkgY29uc3QKLXsKLSAgICBhdXRvIHNjb3BlZFN0
YXRlbWVudCA9IHRoaXMtPnNjb3BlZFN0YXRlbWVudChtX2NvdW50UHJldmFsZW50UmVzb3VyY2Vz
V2l0aFVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCwgY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRo
VXNlckludGVyYWN0aW9uUXVlcnksICJnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhV
SSJfcyk7Ci0gICAgaWYgKHNjb3BlZFN0YXRlbWVudCAmJiBzY29wZWRTdGF0ZW1lbnQtPnN0ZXAo
KSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAgICAgIGludCBjb3VudCA9IHNjb3BlZFN0YXRlbWVudC0+
Z2V0Q29sdW1uSW50KDApOwotICAgICAgICByZXR1cm4gY291bnQ7Ci0gICAgfQotICAgIHJldHVy
biAwOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6
Z2V0VG9wUHJldmVsZW50UmVzb3VyY2VEYXlzU2luY2VVSSgpIGNvbnN0Ci17Ci0gICAgU1FMaXRl
U3RhdGVtZW50IHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudChtX2RhdGFiYXNlLCBtYWtlU3RyaW5nKCJTRUxFQ1Qg
bW9zdFJlY2VudFVzZXJJbnRlcmFjdGlvblRpbWUgRlJPTSBPYnNlcnZlZERvbWFpbnMgSU5ORVIg
Sk9JTiAoU0VMRUNUICIsIGpvaW5TdWJTdGF0aXN0aWNzRm9yU29ydGluZygpLCAiIExJTUlUIDEp
IGFzIHEgT04gT2JzZXJ2ZWREb21haW5zLmRvbWFpbklEID0gcS5kb21haW5JRDsiKSk7Ci0gICAg
Ci0gICAgLy8gUHJlcGFyZQotICAgIGlmICh0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50
ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQucHJlcGFyZSgpICE9IFNR
TElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJ
bnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRlbWVudCBxdWVyeSBmYWlsZWQg
dG8gcHJlcGFyZSwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElDX0xPR19TVFJJTkcsIG1fZGF0YWJh
c2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIC8vIEJpbmQKLSAgICBpZiAodG9wUHJldmFs
ZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LmJpbmRJbnQoMSwgMSkgIT0gU1FMSVRFX09LCi0gICAgICAgIHx8IHRvcFByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblN0YXRl
bWVudC5iaW5kSW50KDIsIDEpICE9IFNRTElURV9PSykgewotICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnRvcFBy
ZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlv
blN0YXRlbWVudCBxdWVyeSBmYWlsZWQgdG8gYmluZCwgZXJyb3IgbWVzc2FnZTogJSIgUFVCTElD
X0xPR19TVFJJTkcsIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIC8vIFN0
ZXAKLSAgICBpZiAodG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1Np
bmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50LnN0ZXAoKSA9PSBTUUxJVEVfUk9XKSB7Ci0gICAg
ICAgIGRvdWJsZSByYXdTZWNvbmRzID0gdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVy
YWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uU3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSgw
KTsKLSAgICAgICAgV2FsbFRpbWUgd2FsbFRpbWUgPSBXYWxsVGltZTo6ZnJvbVJhd1NlY29uZHMo
cmF3U2Vjb25kcyk7Ci0gICAgICAgIHJldHVybiB3YWxsVGltZSA8PSBXYWxsVGltZSgpID8gMCA6
IHN0ZDo6Zmxvb3IoKFdhbGxUaW1lOjpub3coKSAtIHdhbGxUaW1lKSAvIDI0X2gpOwotICAgIH0K
LSAgICByZXR1cm4gMDsKLX0KLQotc3RhdGljIHVuc2lnbmVkIGdldE1lZGlhbk9mUHJldmFsZW50
UmVzb3VyY2VXaXRob3V0VXNlckludGVyYWN0aW9uKFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwg
dW5zaWduZWQgYnVja2V0U2l6ZSwgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6
U3RhdGlzdGljIHN0YXRpc3RpYywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNX
aXRob3V0VUkpCi17Ci0gICAgaWYgKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJ
IDwgYnVja2V0U2l6ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICB1bnNpZ25lZCBtZWRpYW4g
PSAwOwotICAgIFNRTGl0ZVN0YXRlbWVudCBnZXRNZWRpYW5TdGF0aXN0aWMgPSBtYWtlTWVkaWFu
V2l0aG91dFVJUXVlcnkoZGF0YWJhc2UsIHN0YXRpc3RpYyk7Ci0KLSAgICBpZiAoZ2V0TWVkaWFu
U3RhdGlzdGljLnByZXBhcmUoKSA9PSBTUUxJVEVfT0spIHsKLSAgICAgICAgaWYgKGdldE1lZGlh
blN0YXRpc3RpYy5iaW5kSW50KDEsIDEpICE9IFNRTElURV9PSwotICAgICAgICAgICAgfHwgZ2V0
TWVkaWFuU3RhdGlzdGljLmJpbmRJbnQoMiwgMCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8
fCBnZXRNZWRpYW5TdGF0aXN0aWMuYmluZEludCgzLCAoYnVja2V0U2l6ZSAvIDIpKSAhPSBTUUxJ
VEVfT0spIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6bWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5LCBl
cnJvciBtZXNzYWdlOiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNn
KCkpOwotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoZ2V0TWVkaWFuU3RhdGlzdGljLnN0ZXAoKSA9
PSBTUUxJVEVfUk9XKQotICAgICAgICAgICAgbWVkaWFuID0gZ2V0TWVkaWFuU3RhdGlzdGljLmdl
dENvbHVtbkRvdWJsZSgwKTsKLSAgICB9Ci0KLSAgICBpZiAoYnVja2V0U2l6ZSAmIDEpCi0gICAg
ICAgIHJldHVybiBtZWRpYW47Ci0KLSAgICBTUUxpdGVTdGF0ZW1lbnQgZ2V0TG93ZXJNZWRpYW5T
dGF0aXN0aWMgPSBtYWtlTWVkaWFuV2l0aG91dFVJUXVlcnkoZGF0YWJhc2UsIHN0YXRpc3RpYyk7
Ci0KLSAgICBpZiAoZ2V0TG93ZXJNZWRpYW5TdGF0aXN0aWMucHJlcGFyZSgpID09IFNRTElURV9P
SykgewotICAgICAgICBpZiAoZ2V0TG93ZXJNZWRpYW5TdGF0aXN0aWMuYmluZEludCgxLCAxKSAh
PSBTUUxJVEVfT0sKLSAgICAgICAgICAgIHx8IGdldExvd2VyTWVkaWFuU3RhdGlzdGljLmJpbmRJ
bnQoMiwgMCkgIT0gU1FMSVRFX09LCi0gICAgICAgICAgICB8fCBnZXRMb3dlck1lZGlhblN0YXRp
c3RpYy5iaW5kSW50KDIsICgoYnVja2V0U2l6ZS0xKSAvIDIpKSAhPSBTUUxJVEVfT0spIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdvcmssICJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZTo6bWFrZU1lZGlhbldpdGhvdXRVSVF1ZXJ5LCBlcnJvciBtZXNzYWdl
OiAlIiBQVUJMSUNfTE9HX1NUUklORywgZGF0YWJhc2UubGFzdEVycm9yTXNnKCkpOwotICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAg
ICAgfQotICAgICAgICBpZiAoZ2V0TG93ZXJNZWRpYW5TdGF0aXN0aWMuc3RlcCgpID09IFNRTElU
RV9ST1cpCi0gICAgICAgICAgICByZXR1cm4gKGdldExvd2VyTWVkaWFuU3RhdGlzdGljLmdldENv
bHVtbkRvdWJsZSgwKSArIG1lZGlhbikgLyAyOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQot
Ci1zdGF0aWMgdW5zaWduZWQgZ2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNJblRvcFJlc291
cmNlcyhTUUxpdGVEYXRhYmFzZSYgZGF0YWJhc2UsIHVuc2lnbmVkIGJ1Y2tldFNpemUpCi17Ci0g
ICAgU1FMaXRlU3RhdGVtZW50IHByZXZhbGVudFJlc291cmNlQ291bnRJblRvcChkYXRhYmFzZSwg
bWFrZVN0cmluZygiU0VMRUNUIENPVU5UKCopIEZST00gKFNFTEVDVCAqIEZST00gT2JzZXJ2ZWRE
b21haW5zIG8gSU5ORVIgSk9JTihTRUxFQ1QgIiwgam9pblN1YlN0YXRpc3RpY3NGb3JTb3J0aW5n
KCksICIpIGFzIHEgb24gcS5kb21haW5JRCA9IG8uZG9tYWluSUQgTElNSVQgPykgYXMgcCBXSEVS
RSBwLmhhZFVzZXJJbnRlcmFjdGlvbiA9IDE7IikpOwotCi0gICAgaWYgKHByZXZhbGVudFJlc291
cmNlQ291bnRJblRvcC5wcmVwYXJlKCkgPT0gU1FMSVRFX09LKSB7Ci0gICAgICAgIGlmIChwcmV2
YWxlbnRSZXNvdXJjZUNvdW50SW5Ub3AuYmluZEludCgxLCAxKSAhPSBTUUxJVEVfT0sKLSAgICAg
ICAgICAgIHx8IHByZXZhbGVudFJlc291cmNlQ291bnRJblRvcC5iaW5kVGV4dCgyLCAiJSIpICE9
IFNRTElURV9PSwotICAgICAgICAgICAgfHwgcHJldmFsZW50UmVzb3VyY2VDb3VudEluVG9wLmJp
bmRJbnQoMywgYnVja2V0U2l6ZSkgIT0gU1FMSVRFX09LKSB7Ci0gICAgICAgICAgICBSRUxFQVNF
X0xPR19FUlJPUihOZXR3b3JrLCAiUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6
OmdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzSW5Ub3BSZXNvdXJjZXMsIGVycm9yIG1lc3Nh
Z2U6ICUiIFBVQkxJQ19MT0dfU1RSSU5HLCBkYXRhYmFzZS5sYXN0RXJyb3JNc2coKSk7Ci0gICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAg
ICAgICB9Ci0KLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291cmNlQ291bnRJblRvcC5zdGVwKCkg
PT0gU1FMSVRFX1JPVykKLSAgICAgICAgICAgIHJldHVybiBwcmV2YWxlbnRSZXNvdXJjZUNvdW50
SW5Ub3AuZ2V0Q29sdW1uSW50KDApOwotICAgIH0KLQotICAgIHJldHVybiAwOwotfQotCi1zdGF0
aWMgdW5zaWduZWQgbWFrZVN0YXRpc3RpY1F1ZXJ5KFNRTGl0ZURhdGFiYXNlJiBkYXRhYmFzZSwg
UHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljIHN0YXRpc3RpYywg
aW50IGJ1Y2tldFNpemUsIHVuc2lnbmVkIHRvdGFsV2l0aFVJLCB1bnNpZ25lZCB0b3RhbFdpdGhv
dXRVSSkKLXsKLSAgICBzd2l0Y2ggKHN0YXRpc3RpYykgewotICAgIGNhc2UgUHJldmFsZW50UmVz
b3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpOdW1iZXJPZlByZXZhbGVudFJlc291
cmNlc1dpdGhVSToKLSAgICAgICAgcmV0dXJuIGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2Vz
SW5Ub3BSZXNvdXJjZXMoZGF0YWJhc2UsIGJ1Y2tldFNpemUpOwotICAgIGNhc2UgUHJldmFsZW50
UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJGcmFtZVdpdGhv
dXRVSToKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRp
c3RpYzo6TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNv
dXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblVuaXF1ZVJlZGlyZWN0c1dp
dGhvdXRVSToKLSAgICBjYXNlIFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0
YXRpc3RpYzo6TWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJOgotICAgIGNhc2UgUHJl
dmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5UaW1lc0Fj
Y2Vzc2VkRHVlVG9Vc2VySW50ZXJhY3Rpb25XaXRob3V0VUk6Ci0gICAgY2FzZSBQcmV2YWxlbnRS
ZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNjZXNzZWRE
dWVUb1N0b3JhZ2VBY2Nlc3NBUElXaXRob3V0VUk6Ci0gICAgICAgIHJldHVybiBnZXRNZWRpYW5P
ZlByZXZhbGVudFJlc291cmNlV2l0aG91dFVzZXJJbnRlcmFjdGlvbihkYXRhYmFzZSwgYnVja2V0
U2l6ZSwgc3RhdGlzdGljLCB0b3RhbFdpdGhvdXRVSSk7Ci0gICAgfQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiAwOwotfQotCi11bnNpZ25lZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0
VUkoKSBjb25zdAotewotICAgIGF1dG8gc2NvcGVkU3RhdGVtZW50ID0gdGhpcy0+c2NvcGVkU3Rh
dGVtZW50KG1fY291bnRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uU3Rh
dGVtZW50LCBjb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25RdWVy
eSwgImdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVJIl9zKTsKLSAgICBpZiAo
c2NvcGVkU3RhdGVtZW50ICYmIHNjb3BlZFN0YXRlbWVudC0+c3RlcCgpID09IFNRTElURV9ST1cp
IHsKLSAgICAgICAgaW50IGNvdW50ID0gbV9jb3VudFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRV
c2VySW50ZXJhY3Rpb25TdGF0ZW1lbnQtPmdldENvbHVtbkludCgwKTsKLSAgICAgICAgcmV0dXJu
IGNvdW50OwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotdm9pZCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzRGF0YWJhc2VTdG9yZTo6Y2FsY3VsYXRlVGVsZW1ldHJ5RGF0YShQcmV2YWxlbnRSZXNv
dXJjZURhdGFiYXNlVGVsZW1ldHJ5JiBkYXRhKSBjb25zdAotewotICAgIGRhdGEubnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXMgPSBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlcygpOwotICAg
IGRhdGEubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uID0gZ2V0
TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkoKTsKLSAgICBkYXRhLm51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA9IGdldE51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVJKCk7Ci0gICAgZGF0YS50b3BQcmV2YWxlbnRSZXNvdXJjZVdp
dGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24gPSBnZXRUb3BQcmV2ZWxl
bnRSZXNvdXJjZURheXNTaW5jZVVJKCk7Ci0gICAgZGF0YS5tZWRpYW5EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24gPSBnZXRNZWRpYW5P
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24obV9kYXRhYmFzZSwgZGF0YS5u
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24pOwotCi0gICAgZm9y
ICh1bnNpZ25lZCBidWNrZXRJbmRleCA9IDA7IGJ1Y2tldEluZGV4IDwgYnVja2V0U2l6ZXMuc2l6
ZSgpOyBidWNrZXRJbmRleCsrKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJ1Y2tldFNpemUgPSBidWNr
ZXRTaXplc1tidWNrZXRJbmRleF07Ci0KLSAgICAgICAgaWYgKGRhdGEubnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uIDwgYnVja2V0U2l6ZSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKHVuc2lnbmVkIHN0YXRpc3RpY0luZGV4ID0gMDsg
c3RhdGlzdGljSW5kZXggPCBudW1iZXJPZlN0YXRpc3RpY3M7IHN0YXRpc3RpY0luZGV4KyspIHsK
LSAgICAgICAgICAgIGF1dG8gc3RhdGlzdGljID0gc3RhdGljX2Nhc3Q8UHJldmFsZW50UmVzb3Vy
Y2VEYXRhYmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljPihzdGF0aXN0aWNJbmRleCk7Ci0gICAgICAg
ICAgICBkYXRhLnN0YXRpc3RpY3Nbc3RhdGlzdGljSW5kZXhdW2J1Y2tldEluZGV4XSA9IG1ha2VT
dGF0aXN0aWNRdWVyeShtX2RhdGFiYXNlLCBzdGF0aXN0aWMsIGJ1Y2tldFNpemUsIGRhdGEubnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBkYXRhLm51bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIH0KLSAg
ICB9Ci19Ci0KLXZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OmNhbGN1
bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0ZvclRlc3Rpbmcgc2hvdWxkTm90aWZ5
UGFnZXNGb3JUZXN0aW5nKSBjb25zdAotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgaWYgKHBhcmFtZXRlcnMoKS5zaG91bGRTdWJtaXRUZWxlbWV0cnkpIHsKLSAgICAg
ICAgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSBwcmV2YWxlbnRSZXNvdXJjZURh
dGFiYXNlVGVsZW1ldHJ5OwotICAgICAgICBjYWxjdWxhdGVUZWxlbWV0cnlEYXRhKHByZXZhbGVu
dFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnkpOwotICAgICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5OjpzdWJtaXRUZWxlbWV0cnkoKnRoaXMsIHByZXZhbGVudFJlc291cmNl
RGF0YWJhc2VUZWxlbWV0cnksIHNob3VsZE5vdGlmeVBhZ2VzRm9yVGVzdGluZyk7Ci0gICAgfQot
fQotCiBzdGF0aWMgU3RyaW5nIGRvbWFpbnNUb1N0cmluZyhjb25zdCBIYXNoU2V0PFJlZ2lzdHJh
YmxlRG9tYWluPiYgZG9tYWlucykKIHsKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCmluZGV4
IGEyYzVhNTI1YmQ3NDczZTBjNGM4NGY2N2E0NWJmNjEwYjMxYTYyNjUuLmQ1NTUyMzdiZGQxMmNk
Y2RiZDEzY2MxMWEwZWY0ZDZkNzkxMmMyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oCkBAIC01MiwyOCArNTIsNiBAQCBzdGF0aWMg
Y29uc3RleHByIHNpemVfdCBudW1iZXJPZkJ1Y2tldHNQZXJTdGF0aXN0aWMgPSA1Owogc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgbnVtYmVyT2ZTdGF0aXN0aWNzID0gNzsKIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheTx1bnNpZ25lZCwgbnVtYmVyT2ZCdWNrZXRzUGVyU3RhdGlzdGljPiBidWNr
ZXRTaXplcyB7eyAxLCAzLCAxMCwgNTAsIDEwMCB9fTsKIAotc3RydWN0IFByZXZhbGVudFJlc291
cmNlRGF0YWJhc2VUZWxlbWV0cnkgewotICAgIHVzaW5nIEJ1Y2tldHMgPSBzdGQ6OmFycmF5PHVu
c2lnbmVkLCBudW1iZXJPZkJ1Y2tldHNQZXJTdGF0aXN0aWM+OwotCi0gICAgZW51bSBjbGFzcyBT
dGF0aXN0aWMgewotICAgICAgICBOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwKLSAg
ICAgICAgTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksCi0gICAgICAgIE1lZGlhblN1YlJlc291cmNl
V2l0aG91dFVJLAotICAgICAgICBNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksCi0gICAg
ICAgIE1lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSwKLSAgICAgICAgTWVkaWFuVGlt
ZXNBY2Nlc3NlZER1ZVRvVXNlckludGVyYWN0aW9uV2l0aG91dFVJLAotICAgICAgICBNZWRpYW5U
aW1lc0FjY2Vzc2VkRHVlVG9TdG9yYWdlQWNjZXNzQVBJV2l0aG91dFVJCi0gICAgfTsKLQotICAg
IHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzOwotICAgIHVuc2lnbmVkIG51bWJl
ck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbjsKLSAgICB1bnNpZ25lZCBu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgdW5z
aWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNl
ckludGVyYWN0aW9uOwotICAgIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlv
blByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbjsKLQotICAgIHN0ZDo6YXJyYXk8
QnVja2V0cywgbnVtYmVyT2ZTdGF0aXN0aWNzPiBzdGF0aXN0aWNzOwotfTsKLQogY2xhc3MgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOwogCiAvLyBUaGlzIGlzIGFsd2F5cyBjb25z
dHJ1Y3RlZCAvIHVzZWQgLyBkZXN0cm95ZWQgb24gdGhlIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSdzIHN0YXRpc3RpY3MgcXVldWUuCkBAIC0xMjEsOCArOTksNiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0VG8oY29uc3QgVG9wRnJhbWVEb21haW4m
LCBjb25zdCBSZWRpcmVjdERvbWFpbiYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VG9wRnJhbWVV
bmlxdWVSZWRpcmVjdEZyb20oY29uc3QgVG9wRnJhbWVEb21haW4mLCBjb25zdCBSZWRpcmVjdERv
bWFpbiYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBjYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnko
Tm90aWZ5UGFnZXNGb3JUZXN0aW5nID0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpObykgY29uc3Qg
b3ZlcnJpZGU7Ci0KICAgICB2b2lkIGhhc1N0b3JhZ2VBY2Nlc3MoY29uc3QgU3ViRnJhbWVEb21h
aW4mLCBjb25zdCBUb3BGcmFtZURvbWFpbiYsIE9wdGlvbmFsPFdlYkNvcmU6OkZyYW1lSWRlbnRp
Zmllcj4sIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKSBvdmVycmlkZTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzKFN1YkZyYW1l
RG9tYWluJiYsIFRvcEZyYW1lRG9tYWluJiYsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgV2Vi
Q29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChTdG9yYWdlQWNjZXNzU3RhdHVzKT4mJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBncmFudFN0b3JhZ2VBY2Nlc3MoU3ViRnJhbWVEb21haW4mJiwgVG9wRnJhbWVEb21haW4m
JiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgV2Vi
Q29yZTo6U3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBXZWJDb3JlOjpTdG9yYWdlQWNjZXNz
U2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6U3RvcmFnZUFjY2Vzc1dhc0dy
YW50ZWQpPiYmKSBvdmVycmlkZTsKQEAgLTE3MSwxMyArMTQ3LDYgQEAgcHJpdmF0ZToKICAgICB2
b2lkIG1lcmdlU3RhdGlzdGljKGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3MmKTsKICAgICB2
b2lkIG1lcmdlKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCosIGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmKTsKICAgICB2b2lkIGNsZWFyRGF0YWJhc2VDb250ZW50cygpOwotICAgIHVuc2ln
bmVkIGdldE51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQg
Z2V0TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkoKSBjb25zdDsKLSAgICB1bnNpZ25l
ZCBnZXROdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVSSgpIGNvbnN0OwotICAgIHVu
c2lnbmVkIGdldFRvcFByZXZlbGVudFJlc291cmNlRGF5c1NpbmNlVUkoKSBjb25zdDsKLSAgICB2
b2lkIHJlc2V0VGVsZW1ldHJ5UHJlcGFyZWRTdGF0ZW1lbnRzKCkgY29uc3Q7Ci0gICAgdm9pZCBy
ZXNldFRlbGVtZXRyeVN0YXRlbWVudHMoKSBjb25zdDsKLSAgICB2b2lkIGNhbGN1bGF0ZVRlbGVt
ZXRyeURhdGEoUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeSYpIGNvbnN0OwogICAg
IGJvb2wgaW5zZXJ0T2JzZXJ2ZWREb21haW4oY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYp
IFdBUk5fVU5VU0VEX1JFVFVSTjsKICAgICB2b2lkIGluc2VydERvbWFpblJlbGF0aW9uc2hpcHMo
Y29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyYpOwogICAgIHZvaWQgaW5zZXJ0RG9tYWluUmVs
YXRpb25zaGlwTGlzdChjb25zdCBTdHJpbmcmLCBjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9t
YWluPiYsIHVuc2lnbmVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NNZW1vcnlTdG9yZS5jcHAKaW5kZXggNTM5ZjUzMWVhMDc4ZmJiZGMxMDhlMmU1ZTk3ZTFjYzZk
NTNkMWIxZi4uZTQ0NTYwMzVlMTgyYWFlYjRhZGUyYjg2ZGIxYTY5YWIyODQxNDhiYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHAKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzUHJveHkuaCIKICNpbmNsdWRl
ICJTdG9yYWdlQWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0j
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlVHlw
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RvY3VtZW50U3RvcmFnZUFjY2Vzcy5oPgpAQCAtNzQs
MTIgKzczLDYgQEAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlOjpSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUoV2ViUmVzb3VyY2UKICAgICA6IFJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZShzdG9yZSwgd29ya1F1ZXVlLCBzaG91bGRJbmNsdWRlTG9jYWxob3N0KQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICB3b3JrUXVl
dWUuZGlzcGF0Y2hBZnRlcig1X3MsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewot
ICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+Y2FsY3VsYXRlQW5k
U3VibWl0VGVsZW1ldHJ5KCk7Ci0gICAgfSk7Ci0KICAgICBpbmNsdWRlVG9kYXlBc09wZXJhdGlu
Z0RhdGVJZk5lY2Vzc2FyeSgpOwogfQogCkBAIC05MCwxNCArODMsNiBAQCBib29sIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTo6aXNFbXB0eSgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
cmVzb3VyY2VTdGF0aXN0aWNzTWFwLmlzRW1wdHkoKTsKIH0KIAotdm9pZCBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzTWVtb3J5U3RvcmU6OmNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQ
YWdlc0ZvclRlc3Rpbmcgc2hvdWxkTm90aWZ5UGFnZXNGb3JUZXN0aW5nKSBjb25zdAotewotICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwotCi0gICAgaWYgKHBhcmFtZXRlcnMoKS5zaG91
bGRTdWJtaXRUZWxlbWV0cnkpCi0gICAgICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxl
bWV0cnk6OmNhbGN1bGF0ZUFuZFN1Ym1pdCgqdGhpcywgc2hvdWxkTm90aWZ5UGFnZXNGb3JUZXN0
aW5nKTsKLX0KLQogc3RhdGljIHZvaWQgZW5zdXJlVGhpcmRQYXJ0eURhdGFGb3JTcGVjaWZpY0Zp
cnN0UGFydHlEb21haW4oVmVjdG9yPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6VGhp
cmRQYXJ0eURhdGFGb3JTcGVjaWZpY0ZpcnN0UGFydHk+JiB0aGlyZFBhcnR5RGF0YUZvclNwZWNp
ZmljRmlyc3RQYXJ0eURvbWFpbiwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGZpcnN0UGFydHlE
b21haW4sIGJvb2wgdGhpcmRQYXJ0eUhhc1N0b3JhZ2VBY2Nlc3MpCiB7CiAgICAgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0
eSB0aGlyZFBhcnR5RGF0YUZvclNwZWNpZmljRmlyc3RQYXJ0eSB7IGZpcnN0UGFydHlEb21haW4s
IHRoaXJkUGFydHlIYXNTdG9yYWdlQWNjZXNzLCBTZWNvbmRzIHsgUmVzb3VyY2VMb2FkU3RhdGlz
dGljczo6Tm9FeGlzdGluZ1RpbWVzdGFtcCB9fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3Rv
cmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaAppbmRleCAwOGQ1ZmQxY2MyMmZjZWQ5YzA1Y2VhNjdh
YTY5NWE2ZDZlZWE1MThhLi5iMTU4NmI5NzlkZDg4ZTRmYmMyYTUxNTgwMzg5MDIzZmVlZWViZGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5o
CkBAIC05MCw4ICs5MCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRvcEZyYW1lVW5pcXVlUmVk
aXJlY3RUbyhjb25zdCBUb3BGcmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0RG9tYWluJikgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRUb3BGcmFtZVVuaXF1ZVJlZGlyZWN0RnJvbShjb25zdCBUb3BG
cmFtZURvbWFpbiYsIGNvbnN0IFJlZGlyZWN0RG9tYWluJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lk
IGNhbGN1bGF0ZUFuZFN1Ym1pdFRlbGVtZXRyeShOb3RpZnlQYWdlc0ZvclRlc3RpbmcgPSBOb3Rp
ZnlQYWdlc0ZvclRlc3Rpbmc6Ok5vKSBjb25zdCBvdmVycmlkZTsKLQogICAgIGJvb2wgYXJlQWxs
VGhpcmRQYXJ0eUNvb2tpZXNCbG9ja2VkVW5kZXIoY29uc3QgVG9wRnJhbWVEb21haW4mKSBvdmVy
cmlkZTsKICAgICBDb29raWVBY2Nlc3MgY29va2llQWNjZXNzKGNvbnN0IFJlc291cmNlTG9hZFN0
YXRpc3RpY3MmLCBjb25zdCBUb3BGcmFtZURvbWFpbiYpOwogICAgIHZvaWQgaGFzU3RvcmFnZUFj
Y2Vzcyhjb25zdCBTdWJGcmFtZURvbWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgT3B0aW9u
YWw8V2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyPiwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAyZDdiMTI4YzU0YzFjMzllNWE4ZDc0
NTIyMzc2ZWEzMmQyZjg0MjJmLi5hM2Q3MDkwMjVjMzFjMzI2ODlmZmUyM2JmMmY1OWMxOTRkNmFh
NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAt
MzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBY2Nlc3NTdGF0dXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNp
bmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW5jbHVkZSAi
V2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29va2llSmFyLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9LZXllZENvZGluZy5oPgpAQCAtMTcxLDEyICsxNzAsNiBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkQ2xhc3NpZnlSZXNvdXJjZXNCZWZv
cmVEYXRhUmVjb3Jkc1JlbQogICAgIG1fcGFyYW1ldGVycy5zaG91bGRDbGFzc2lmeVJlc291cmNl
c0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbCA9IHZhbHVlOwogfQogCi12b2lkIFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c2V0U2hvdWxkU3VibWl0VGVsZW1ldHJ5KGJvb2wgdmFsdWUpCi17
Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgbV9wYXJhbWV0ZXJzLnNob3Vs
ZFN1Ym1pdFRlbGVtZXRyeSA9IHZhbHVlOwotfQotCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCmluZGV4IDAwOGJiYmI5NDlmNTdi
YTdjM2M1OGQzOTQ4NDg0NWE4MDA2N2UxY2YuLjc3ZDA1NWNjZDcxMzY2YjZiZGY3OWJjYTI0NWQ4
NzE2MGJjMzY5NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
QEAgLTI5LDcgKzI5LDYgQEAKIAogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFz
c2lmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0j
aW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0NvbnNvbGVUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVJ
ZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC0xNTMs
MTMgKzE1MiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRQcnVuZUVudHJpZXNEb3duVG8oc2l6
ZV90IHBydW5lVGFyZ2V0Q291bnQpOwogICAgIHZvaWQgcmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0
VmFsdWVzKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5
KE5vdGlmeVBhZ2VzRm9yVGVzdGluZyA9IE5vdGlmeVBhZ2VzRm9yVGVzdGluZzo6Tm8pIGNvbnN0
ID0gMDsKLQogICAgIHZvaWQgc2V0Tm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5l
ZChib29sKTsKICAgICB2b2lkIHNldElzUnVubmluZ1Rlc3QoYm9vbCk7CiAgICAgYm9vbCBzaG91
bGRTa2lwKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJikgY29uc3Q7CiAgICAgdm9pZCBzZXRTaG91
bGRDbGFzc2lmeVJlc291cmNlc0JlZm9yZURhdGFSZWNvcmRzUmVtb3ZhbChib29sKTsKLSAgICB2
b2lkIHNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sKTsKICAgICB2b2lkIHNldFRpbWVUb0xp
dmVVc2VySW50ZXJhY3Rpb24oU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRNaW5pbXVtVGltZUJldHdl
ZW5EYXRhUmVjb3Jkc1JlbW92YWwoU2Vjb25kcyk7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmlu
Z1RpbWUoU2Vjb25kcyk7CkBAIC0yNDAsNyArMjM2LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBi
b29sIHNob3VsZE5vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQgeyBmYWxzZSB9
OwogICAgICAgICBib29sIHNob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNS
ZW1vdmFsIHsgdHJ1ZSB9OwogICAgICAgICBzaXplX3QgbWluaW11bVRvcEZyYW1lUmVkaXJlY3Rz
Rm9yU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudCB7IDEwIH07Ci0gICAgICAgIGJvb2wgc2hvdWxk
U3VibWl0VGVsZW1ldHJ5IHsgdHJ1ZSB9OwogICAgICAgICBib29sIGlzUnVubmluZ1Rlc3QgeyBm
YWxzZSB9OwogICAgIH07CiAgICAgY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCBhOWRkODBiMTQ2N2E5MmYzZDc5YTc1MzUyMjdhYTJl
MDNmNGY4MGQyLi5kNWE5NjUyNWNiYWU2ZGVhNzczMGMyZTk0MjdjNTQ5ZmQxNmI2ZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtNDIs
NyArNDIsNiBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSAi
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oIgogI2luY2x1ZGUgIldlYnNpdGVE
YXRhRmV0Y2hPcHRpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nvb2tpZUphci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaD4KQEAgLTE0OCwxNiArMTQ3LDYg
QEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZENsYXNzaWZ5
UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHMKICAgICB9KTsKIH0KIAotdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeShib29sIHZhbHVl
KQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0KLSAgICBwb3N0VGFzayhbdGhp
cywgdmFsdWVdIHsKLSAgICAgICAgaWYgKG1fc3RhdGlzdGljc1N0b3JlKQotICAgICAgICAgICAg
bV9zdGF0aXN0aWNzU3RvcmUtPnNldFNob3VsZFN1Ym1pdFRlbGVtZXRyeSh2YWx1ZSk7Ci0gICAg
fSk7Ci19Ci0KIHN0YXRpYyBSZWY8V29ya1F1ZXVlPiBzaGFyZWRTdGF0aXN0aWNzUXVldWUoKQog
ewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWY8V29ya1F1ZXVlPj4gcXVldWUoV29ya1F1
ZXVlOjpjcmVhdGUoIldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEg
UXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkp
KTsKQEAgLTcyOCwyNSArNzE3LDEyIEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwZXJmb3JtRGFpbHlUYXNrcygpCiAgICAgcG9zdFRhc2soW3RoaXNdIHsKICAgICAgICAg
aWYgKG1fc3RhdGlzdGljc1N0b3JlKSB7CiAgICAgICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+
aW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdEYXRlSWZOZWNlc3NhcnkoKTsKLSAgICAgICAgICAgIG1f
c3RhdGlzdGljc1N0b3JlLT5jYWxjdWxhdGVBbmRTdWJtaXRUZWxlbWV0cnkoKTsKICAgICAgICAg
ICAgIGlmIChpczxSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlz
dGljc1N0b3JlKSkKICAgICAgICAgICAgICAgICBkb3duY2FzdDxSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGF0YWJhc2VTdG9yZT4oKm1fc3RhdGlzdGljc1N0b3JlKS5ydW5JbmNyZW1lbnRhbFZhY3V1
bUNvbW1hbmQoKTsKICAgICAgICAgfQogICAgIH0pOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6c3VibWl0VGVsZW1ldHJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwotCi0gICAgcG9zdFRhc2soW3RoaXMsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSAgewotICAgICAgICBpZiAoIW1fc3RhdGlzdGljc1N0
b3JlKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3N0YXRpc3RpY3NTdG9yZS0+Y2Fs
Y3VsYXRlQW5kU3VibWl0VGVsZW1ldHJ5KE5vdGlmeVBhZ2VzRm9yVGVzdGluZzo6WWVzKTsKLSAg
ICAgICAgcG9zdFRhc2tSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfSk7
Ci19Ci0KIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpsb2dGcmFtZU5hdmln
YXRpb24oY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHRhcmdldERvbWFpbiwgY29uc3QgUmVnaXN0
cmFibGVEb21haW4mIHRvcEZyYW1lRG9tYWluLCBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgc291
cmNlRG9tYWluLCBib29sIGlzUmVkaXJlY3QsIGJvb2wgaXNNYWluRnJhbWUsIFNlY29uZHMgZGVs
YXlBZnRlck1haW5GcmFtZURvY3VtZW50TG9hZCwgYm9vbCB3YXNQb3RlbnRpYWxseUluaXRpYXRl
ZEJ5VXNlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwpAQCAtMTQxNCwxMyAr
MTM5MCw2IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzZW5kRGlhZ25v
c3RpY01lc3NhZ2VXaXRoVmFsdWUoY29uc3QgU3RyaW5nCiAgICAgICAgIGNvbnN0X2Nhc3Q8V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKj4odGhpcyktPm5ldHdvcmtTZXNzaW9uKCktPmxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRlc2NyaXB0aW9uLCB2YWx1ZSwg
c2lnRGlnaXRzLCBzaG91bGRTYW1wbGUpOwogfQogCi12b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZCh1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcFByZXZhbGVudFJlc291
cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
bWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUks
IHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlh
blN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3Rz
V2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJ
KSBjb25zdAotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7Ci0gICAgaWYgKG1fbmV0
d29ya1Nlc3Npb24pCi0gICAgICAgIGNvbnN0X2Nhc3Q8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlKj4odGhpcyktPm5ldHdvcmtTZXNzaW9uKCktPm5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVs
ZW1ldHJ5RmluaXNoZWQobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50
ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRl
cmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdG9wM051bWJlck9m
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHRv
cDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dp
dGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7Ci19Ci0KIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphZ2dyZWdhdGVkVGhpcmRQYXJ0eURh
dGEoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpUaGlyZFBhcnR5RGF0YT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAppbmRleCBmZGQyMTQ0NTFjZDQxNzY1N2QzZWY3Njk0YzVmZDQyOTc3
M2NhY2M3Li4yMTNjOGQwZWQwYTRkZGVmYzM5YjgwNDJlMDU4ZjgwMjZhZmI2ODU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0yMDcsNyArMjA3
LDYgQEAgc3RydWN0IFRoaXJkUGFydHlEYXRhIHsKICAgICB2b2lkIHBvcHVsYXRlTWVtb3J5U3Rv
cmVGcm9tRGlzayhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Tm90
aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sKTsKICAgICB2b2lkIHNldFNo
b3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2wsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBzZXRTaG91bGRTdWJtaXRUZWxlbWV0
cnkoYm9vbCk7CiAKICAgICB2b2lkIGdyYW50U3RvcmFnZUFjY2Vzcyhjb25zdCBTdWJGcmFtZURv
bWFpbiYsIGNvbnN0IFRvcEZyYW1lRG9tYWluJiwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBX
ZWJDb3JlOjpQYWdlSWRlbnRpZmllciwgU3RvcmFnZUFjY2Vzc1Byb21wdFdhc1Nob3duLCBTdG9y
YWdlQWNjZXNzU2NvcGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVxdWVzdFN0b3JhZ2VBY2Nl
c3NSZXN1bHQpPiYmKTsKIApAQCAtMjUwLDcgKzI0OSw2IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0
YSB7CiAgICAgdm9pZCBzY2hlZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlRm9yRG9tYWlucyhjb25z
dCBWZWN0b3I8UmVnaXN0cmFibGVEb21haW4+JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc3RhdGlzdGljc0RhdGFiYXNl
SGFzQWxsVGFibGVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZvaWQg
c3VibWl0VGVsZW1ldHJ5KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBz
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlz
dGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgU2hvdWxkR3Jh
bmRmYXRoZXJTdGF0aXN0aWNzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZv
aWQgY2xlYXJJbk1lbW9yeUVwaGVtZXJhbChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpA
QCAtMjkxLDcgKzI4OSw2IEBAIHN0cnVjdCBUaGlyZFBhcnR5RGF0YSB7CiAgICAgdm9pZCBpbnZh
bGlkYXRlQW5kQ2FuY2VsKCk7CiAKICAgICB2b2lkIHNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhW
YWx1ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVu
c2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBzaWdEaWdpdHMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSkg
Y29uc3Q7Ci0gICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVu
c2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50
UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNp
Z25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3Az
TWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRp
cmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRo
b3V0VUkpIGNvbnN0OwogCiAgICAgdm9pZCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzVXBkYXRlZChW
ZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIHJlcXVlc3RTdG9yYWdlQWNjZXNzVW5kZXJPcGVuZXIo
RG9tYWluSW5OZWVkT2ZTdG9yYWdlQWNjZXNzJiYsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyIG9w
ZW5lcklELCBPcGVuZXJEb21haW4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGU2ZmRjYjA2NTE5ZTU2MGU4MDhlMDUyM2E4MWJkZjI4MGMyNzVlMmMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMzUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
LmgiCi0KLSNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQotCi0jaW5jbHVkZSAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuaCIKLSNpbmNsdWRlICJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzTWVtb3J5U3RvcmUuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
LSNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgotI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5o
IgotI2luY2x1ZGUgPFdlYkNvcmUvRGlhZ25vc3RpY0xvZ2dpbmdLZXlzLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLmg+Ci0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUnVu
TG9vcC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1jb25zdCB1
bnNpZ25lZCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5ID0gMzsKLWNvbnN0
IHVuc2lnbmVkIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcyA9IDM7Ci0KLXN0cnVj
dCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSB7Ci0gICAgdW5zaWduZWQgbnVtYmVyT2ZUaW1l
c0RhdGFSZWNvcmRzUmVtb3ZlZDsKLSAgICBib29sIGhhc0hhZFVzZXJJbnRlcmFjdGlvbjsKLSAg
ICB1bnNpZ25lZCBkYXlzU2luY2VVc2VySW50ZXJhY3Rpb247Ci0gICAgdW5zaWduZWQgc3ViZnJh
bWVVbmRlclRvcEZyYW1lT3JpZ2luczsKLSAgICB1bnNpZ25lZCBzdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zOwotICAgIHVuc2lnbmVkIHN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG87
Ci0gICAgdW5zaWduZWQgdGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1ZVRvVXNlckludGVyYWN0
aW9uOwotICAgIHVuc2lnbmVkIHRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VB
Y2Nlc3NBUEk7Ci19OwotCi1zdGF0aWMgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5
PiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShjb25zdCBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzTWVtb3J5U3RvcmUmIHN0b3JlKQotewotICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwotICAgIFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeT4gc29ydGVkOwotICAg
IHN0b3JlLnByb2Nlc3NTdGF0aXN0aWNzKFsmc29ydGVkXSAoYXV0byYgc3RhdGlzdGljKSB7Ci0g
ICAgICAgIGlmICghc3RhdGlzdGljLmlzUHJldmFsZW50UmVzb3VyY2UpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdW5zaWduZWQgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uID0gc3Rh
dGlzdGljLm1vc3RSZWNlbnRVc2VySW50ZXJhY3Rpb25UaW1lIDw9IFdhbGxUaW1lKCkgPyAwIDog
c3RkOjpmbG9vcigoV2FsbFRpbWU6Om5vdygpIC0gc3RhdGlzdGljLm1vc3RSZWNlbnRVc2VySW50
ZXJhY3Rpb25UaW1lKSAvIDI0X2gpOwotICAgICAgICBzb3J0ZWQuYXBwZW5kKFByZXZhbGVudFJl
c291cmNlVGVsZW1ldHJ5IHsKLSAgICAgICAgICAgIHN0YXRpc3RpYy5kYXRhUmVjb3Jkc1JlbW92
ZWQsCi0gICAgICAgICAgICBzdGF0aXN0aWMuaGFkVXNlckludGVyYWN0aW9uLAotICAgICAgICAg
ICAgZGF5c1NpbmNlVXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgc3RhdGlzdGljLnN1YmZy
YW1lVW5kZXJUb3BGcmFtZURvbWFpbnMuc2l6ZSgpLAotICAgICAgICAgICAgc3RhdGlzdGljLnN1
YnJlc291cmNlVW5kZXJUb3BGcmFtZURvbWFpbnMuc2l6ZSgpLAotICAgICAgICAgICAgc3RhdGlz
dGljLnN1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8uc2l6ZSgpLAotICAgICAgICAgICAgc3Rh
dGlzdGljLnRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiwKLSAg
ICAgICAgICAgIHN0YXRpc3RpYy50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdl
QWNjZXNzQVBJCi0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgaWYgKHNvcnRlZC5zaXplKCkg
PCBtaW5pbXVtUHJldmFsZW50UmVzb3VyY2VzRm9yVGVsZW1ldHJ5KQotICAgICAgICByZXR1cm4g
eyB9OwotCi0gICAgc3RkOjpzb3J0KHNvcnRlZC5iZWdpbigpLCBzb3J0ZWQuZW5kKCksIFtdKGNv
bnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiBhLCBjb25zdCBQcmV2YWxlbnRSZXNvdXJj
ZVRlbGVtZXRyeSYgYikgewotICAgICAgICByZXR1cm4gYS5zdWJmcmFtZVVuZGVyVG9wRnJhbWVP
cmlnaW5zICsgYS5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYS5zdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0c1RvID4KLSAgICAgICAgYi5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmln
aW5zICsgYi5zdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zICsgYi5zdWJyZXNvdXJjZVVu
aXF1ZVJlZGlyZWN0c1RvOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNvcnRlZDsKLX0KLQotc3Rh
dGljIHVuc2lnbmVkIG51bWJlck9mUmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbihjb25zdCBW
ZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiByZXNvdXJjZXMsIHNpemVfdCBiZWdp
biwgc2l6ZV90IGVuZCkKLXsKLSAgICBpZiAocmVzb3VyY2VzLmlzRW1wdHkoKSB8fCByZXNvdXJj
ZXMuc2l6ZSgpIDwgYmVnaW4gKyAxIHx8IHJlc291cmNlcy5zaXplKCkgPCBlbmQgKyAxKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwotICAgIGZvciAo
c2l6ZV90IGkgPSBiZWdpbjsgaSA8IGVuZDsgKytpKSB7Ci0gICAgICAgIGlmIChyZXNvdXJjZXNb
aV0uaGFzSGFkVXNlckludGVyYWN0aW9uKQotICAgICAgICAgICAgKytyZXN1bHQ7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0gICAgCi1zdGF0aWMgdW5zaWduZWQgbWVkaWFu
KGNvbnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHYpCi17Ci0gICAgaWYgKHYuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICBpZiAodi5zaXplKCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIHZb
MF07Ci0gICAgCi0gICAgYXV0byBzaXplID0gdi5zaXplKCk7Ci0gICAgYXV0byBtaWRkbGUgPSBz
aXplIC8gMjsKLSAgICBpZiAoc2l6ZSAlIDIpCi0gICAgICAgIHJldHVybiB2W21pZGRsZV07Ci0g
ICAgcmV0dXJuICh2W21pZGRsZSAtIDFdICsgdlttaWRkbGVdKSAvIDI7Ci19Ci0gICAgCi1zdGF0
aWMgdW5zaWduZWQgbWVkaWFuKGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRy
eT4mIHYsIHVuc2lnbmVkIGJlZ2luLCB1bnNpZ25lZCBlbmQsIGNvbnN0IFdURjo6RnVuY3Rpb248
dW5zaWduZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+JiBz
dGF0aXN0aWNHZXR0ZXIpCi17Ci0gICAgaWYgKHYuaXNFbXB0eSgpIHx8IHYuc2l6ZSgpIDwgYmVn
aW4gKyAxIHx8IHYuc2l6ZSgpIDwgZW5kICsgMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0g
ICAgVmVjdG9yPHVuc2lnbmVkPiBwYXJ0OwotICAgIHBhcnQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eShlbmQgLSBiZWdpbiArIDEpOwotICAgIGZvciAodW5zaWduZWQgaSA9IGJlZ2luOyBpIDw9IGVu
ZDsgKytpKQotICAgICAgICBwYXJ0LnVuY2hlY2tlZEFwcGVuZChzdGF0aXN0aWNHZXR0ZXIodltp
XSkpOwotICAgIAotICAgIHJldHVybiBtZWRpYW4ocGFydCk7Ci19Ci0gICAgCi1zdGF0aWMgdm9p
ZCBzdWJtaXRUb3BMaXN0KHVuc2lnbmVkIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCwgY29u
c3QgVmVjdG9yPFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgc29ydGVkUHJldmFsZW50UmVz
b3VyY2VzLCBjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+JiBzb3J0ZWRQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBjb25zdCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlKQotewotICAgIFdURjo6RnVuY3Rpb248dW5zaWdu
ZWQoY29uc3QgUHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+IHN1YmZyYW1l
VW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0ZXIgPSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1
cm4gdC5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwotICAgIH07Ci0gICAgV1RGOjpGdW5j
dGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5
KT4gc3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luc0dldHRlciA9IFtdIChhdXRvJiB0KSB7
Ci0gICAgICAgIHJldHVybiB0LnN1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbnM7Ci0gICAg
fTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNvbnN0IFByZXZhbGVudFJlc291cmNlVGVs
ZW1ldHJ5JiB0ZWxlbWV0cnkpPiBzdWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0c1RvR2V0dGVyID0g
W10gKGF1dG8mIHQpIHsKLSAgICAgICAgcmV0dXJuIHQuc3VicmVzb3VyY2VVbmlxdWVSZWRpcmVj
dHNUbzsKLSAgICB9OwotICAgIFdURjo6RnVuY3Rpb248dW5zaWduZWQoY29uc3QgUHJldmFsZW50
UmVzb3VyY2VUZWxlbWV0cnkmIHRlbGVtZXRyeSk+IG51bWJlck9mVGltZXNEYXRhUmVjb3Jkc1Jl
bW92ZWRHZXR0ZXIgPSBbXSAoYXV0byYgdCkgewotICAgICAgICByZXR1cm4gdC5udW1iZXJPZlRp
bWVzRGF0YVJlY29yZHNSZW1vdmVkOwotICAgIH07Ci0gICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25l
ZChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gbnVtYmVyT2ZU
aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9Vc2VySW50ZXJhY3Rpb25HZXR0ZXIgPSBbXSAo
YXV0byYgdCkgewotICAgICAgICByZXR1cm4gdC50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVl
VG9Vc2VySW50ZXJhY3Rpb247Ci0gICAgfTsKLSAgICBXVEY6OkZ1bmN0aW9uPHVuc2lnbmVkKGNv
bnN0IFByZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnkpPiBudW1iZXJPZlRpbWVz
QWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUElHZXR0ZXIgPSBbXSAoYXV0
byYgdCkgewotICAgICAgICByZXR1cm4gdC50aW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9T
dG9yYWdlQWNjZXNzQVBJOwotICAgIH07Ci0KLSAgICB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uID0gbnVtYmVyT2ZSZXNvdXJjZXNXaXRoVXNlckludGVy
YWN0aW9uKHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9t
VGhlVG9wIC0gMSk7Ci0gICAgdW5zaWduZWQgdG9wU3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
cyA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBzdWJmcmFtZVVuZGVyVG9wRnJh
bWVPcmlnaW5zR2V0dGVyKTsKLSAgICB1bnNpZ25lZCB0b3BTdWJyZXNvdXJjZVVuZGVyVG9wRnJh
bWVPcmlnaW5zID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24sIDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIHN1YnJlc291cmNl
VW5kZXJUb3BGcmFtZU9yaWdpbnNHZXR0ZXIpOwotICAgIHVuc2lnbmVkIHRvcFN1YnJlc291cmNl
VW5pcXVlUmVkaXJlY3RzVG8gPSBtZWRpYW4oc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgMCwgbnVtYmVyT2ZSZXNvdXJjZXNGcm9tVGhlVG9wIC0gMSwgc3Vi
cmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUb0dldHRlcik7Ci0gICAgdW5zaWduZWQgdG9wTnVtYmVy
T2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3Ag
LSAxLCBudW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVkR2V0dGVyKTsKLSAgICB1bnNpZ25l
ZCB0b3BOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlv
biA9IG1lZGlhbihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9u
LCAwLCBudW1iZXJPZlJlc291cmNlc0Zyb21UaGVUb3AgLSAxLCBudW1iZXJPZlRpbWVzQWNjZXNz
ZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbkdldHRlcik7Ci0gICAgdW5zaWduZWQg
dG9wTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNzQVBJ
ID0gbWVkaWFuKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IDAsIG51bWJlck9mUmVzb3VyY2VzRnJvbVRoZVRvcCAtIDEsIG51bWJlck9mVGltZXNBY2Nlc3Nl
ZEFzRmlyc3RQYXJ0eUR1ZVRvU3RvcmFnZUFjY2Vzc0FQSUdldHRlcik7Ci0KLSAgICBTdHJpbmcg
ZGVzY3JpcHRpb25QcmVhbWJsZSA9IG1ha2VTdHJpbmcoInRvcCIsIG51bWJlck9mUmVzb3VyY2Vz
RnJvbVRoZVRvcCk7Ci0KLSAgICBzdG9yZS5zZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUo
RGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5
KCksIGRlc2NyaXB0aW9uUHJlYW1ibGUgKyAiUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiIsCi0gICAgICAgIHRvcFByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rp
b24sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7
Ci0gICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dn
aW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlv
blByZWFtYmxlICsgIlN1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiLAotICAgICAgICB0b3BT
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRW
YWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2Fn
ZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NU
ZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJTdWJyZXNvdXJjZVVuZGVyVG9w
RnJhbWVPcmlnaW5zIiwKLSAgICAgICAgdG9wU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2lu
cywgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9nZ2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsK
LSAgICBzdG9yZS5zZW5kRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dp
bmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksIGRlc2NyaXB0aW9u
UHJlYW1ibGUgKyAiU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdHNUbyIsCi0gICAgICAgIHRvcFN1
YnJlc291cmNlVW5pcXVlUmVkaXJlY3RzVG8sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZh
bHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNzYWdl
V2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgIk51bWJlck9mVGltZXNEYXRhUmVj
b3Jkc1JlbW92ZWQiLAotICAgICAgICB0b3BOdW1iZXJPZlRpbWVzRGF0YVJlY29yZHNSZW1vdmVk
LCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwot
ICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgZGVzY3JpcHRpb25Q
cmVhbWJsZSArICJOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRl
cmFjdGlvbiIsCi0gICAgICAgIHRvcE51bWJlck9mVGltZXNBY2Nlc3NlZEFzRmlyc3RQYXJ0eUR1
ZVRvVXNlckludGVyYWN0aW9uLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNo
b3VsZFNhbXBsZTo6Tm8pOwotICAgIHN0b3JlLnNlbmREaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1
ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlL
ZXkoKSwgZGVzY3JpcHRpb25QcmVhbWJsZSArICJOdW1iZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0
UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEkiLAotICAgICAgICB0b3BOdW1iZXJPZlRpbWVzQWNj
ZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1N0b3JhZ2VBY2Nlc3NBUEksIHNpZ25pZmljYW50RmlndXJl
c0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci19Ci0gICAgCi1zdGF0aWMgdm9p
ZCBzdWJtaXRUb3BMaXN0cyhjb25zdCBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+
JiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNvdXJj
ZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAg
c3VibWl0VG9wTGlzdCgxLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHN0b3JlKTsKLSAgICAKLSAgICBpZiAo
c29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbi5zaXplKCkgPCAz
KQotICAgICAgICByZXR1cm47Ci0gICAgc3VibWl0VG9wTGlzdCgzLCBzb3J0ZWRQcmV2YWxlbnRS
ZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24s
IHN0b3JlKTsKLSAgICAKLSAgICBpZiAoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVz
ZXJJbnRlcmFjdGlvbi5zaXplKCkgPCAxMCkKLSAgICAgICAgcmV0dXJuOwotICAgIHN1Ym1pdFRv
cExpc3QoMTAsIHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgc3RvcmUpOwotICAgIAotICAgIGlmIChzb3J0ZWRQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLnNpemUoKSA8IDUwKQotICAg
ICAgICByZXR1cm47Ci0gICAgc3VibWl0VG9wTGlzdCg1MCwgc29ydGVkUHJldmFsZW50UmVzb3Vy
Y2VzLCBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCBzdG9y
ZSk7Ci0gICAgCi0gICAgaWYgKHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50
ZXJhY3Rpb24uc2l6ZSgpIDwgMTAwKQotICAgICAgICByZXR1cm47Ci0gICAgc3VibWl0VG9wTGlz
dCgxMDAsIHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgc29ydGVkUHJldmFsZW50UmVzb3VyY2Vz
V2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgc3RvcmUpOwotfQotICAgIAotLy8gVGhpcyBmdW5jdGlv
biBpcyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KLXZvaWQgc3RhdGljIG5vdGlmeVBhZ2VzKHVuc2ln
bmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVz
b3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25l
ZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2Vy
SW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhV
SSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVk
aWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVj
dHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0
VUksIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAg
UnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgbnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBudW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRvcFByZXZhbGVudFJlc291cmNl
V2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwgbWVkaWFuRGF5c1Np
bmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB0
b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRvcDNNZWRpYW5TdWJGcmFtZVdp
dGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB0b3AzTWVkaWFuVW5pcXVl
UmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJ
LCBzdG9yZSA9IG1ha2VSZWYoc3RvcmUpXSB7Ci0gICAgICAgIHN0b3JlLT5ub3RpZnlQYWdlU3Rh
dGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIG51bWJlck9mUHJldmFs
ZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdG9wUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCBtZWRpYW5EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHRv
cDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdG9wM01lZGlhblN1YkZyYW1lV2l0
aG91dFVJLCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHRvcDNNZWRpYW5VbmlxdWVS
ZWRpcmVjdHNXaXRob3V0VUksIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkp
OwotICAgIH0pOwotfQotICAgIAotLy8gVGhpcyBmdW5jdGlvbiBpcyBmb3IgdGVzdGluZyBwdXJw
b3Nlcy4KLXZvaWQgc3RhdGljIG5vdGlmeVBhZ2VzKGNvbnN0IFZlY3RvcjxQcmV2YWxlbnRSZXNv
dXJjZVRlbGVtZXRyeT4mIHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgY29uc3QgVmVjdG9yPFBy
ZXZhbGVudFJlc291cmNlVGVsZW1ldHJ5PiYgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24sIGNvbnN0IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZSYgc3RvcmUpCi17Ci0gICAgV1RGOjpGdW5jdGlvbjx1bnNpZ25lZChjb25zdCBQcmV2YWxlbnRS
ZXNvdXJjZVRlbGVtZXRyeSYgdGVsZW1ldHJ5KT4gc3ViZnJhbWVVbmRlclRvcEZyYW1lT3JpZ2lu
c0dldHRlciA9IFtdIChjb25zdCBQcmV2YWxlbnRSZXNvdXJjZVRlbGVtZXRyeSYgdCkgewotICAg
ICAgICByZXR1cm4gdC5zdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zOwotICAgIH07Ci0gICAg
bm90aWZ5UGFnZXMoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzLnNpemUoKSwgdG90YWxOdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIDAsIDAsIDAsIDAsIG1lZGlh
bihzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCAwLCAyLCBz
dWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zR2V0dGVyKSwgMCwgMCwgMCwgIHN0b3JlKTsKLX0K
LSAgICAKLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeTo6Y2FsY3VsYXRl
QW5kU3VibWl0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZSYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLCBOb3RpZnlQYWdlc0ZvclRlc3Rpbmcgbm90aWZ5UGFnZXNX
aGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQpCi17Ci0gICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgCi0gICAgYXV0byBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMgPSBzb3J0ZWRQcmV2
YWxlbnRSZXNvdXJjZVRlbGVtZXRyeShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOwotICAg
IGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9PSBOb3RpZnlQYWdlc0Zv
clRlc3Rpbmc6OlllcyAmJiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMuaXNFbXB0eSgpKSB7Ci0g
ICAgICAgIG5vdGlmeVBhZ2VzKDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5zdG9yZSgpKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICAKLSAgICBWZWN0b3I8UHJldmFsZW50UmVzb3VyY2VUZWxlbWV0cnk+IHNvcnRlZFByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb247Ci0gICAgc29ydGVkUHJldmFsZW50UmVz
b3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHNvcnRl
ZFByZXZhbGVudFJlc291cmNlcy5zaXplKCkpOwotICAgIFZlY3Rvcjx1bnNpZ25lZD4gcHJldmFs
ZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uOwotICAgIAotICAgIGZvciAoYXV0
byYgcHJldmFsZW50UmVzb3VyY2UgOiBzb3J0ZWRQcmV2YWxlbnRSZXNvdXJjZXMpIHsKLSAgICAg
ICAgaWYgKHByZXZhbGVudFJlc291cmNlLmhhc0hhZFVzZXJJbnRlcmFjdGlvbikKLSAgICAgICAg
ICAgIHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbi5hcHBlbmQocHJl
dmFsZW50UmVzb3VyY2UuZGF5c1NpbmNlVXNlckludGVyYWN0aW9uKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgc29ydGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlv
bi51bmNoZWNrZWRBcHBlbmQocHJldmFsZW50UmVzb3VyY2UpOwotICAgIH0KLSAgICAKLSAgICAv
LyBEaXNwYXRjaCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBzdXJlIHRoZSBXZWJQYWdlUHJv
eHkgd2UncmUgdXNpbmcgZG9lc24ndCBnbyBhd2F5LgotICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbbm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQsIHNvcnRlZFByZXZhbGVu
dFJlc291cmNlcyA9IFdURk1vdmUoc29ydGVkUHJldmFsZW50UmVzb3VyY2VzKSwgc29ydGVkUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiA9IFdURk1vdmUoc29ydGVkUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiksIHByZXZhbGVudFJlc291cmNl
c0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiA9IFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VzRGF5
c1NpbmNlVXNlckludGVyYWN0aW9uKSwgc3RvcmUgPSBtYWtlUmVmKHJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5zdG9yZSgpKV0gKCkgewotICAgICAgICBhdXRvIHdlYlBhZ2VQcm94eSA9IFdl
YlBhZ2VQcm94eTo6bm9uRXBoZW1lcmFsV2ViUGFnZVByb3h5KCk7Ci0gICAgICAgIGlmICghd2Vi
UGFnZVByb3h5KSB7Ci0gICAgICAgICAgICBpZiAobm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2Fz
Q2FwdHVyZWQgPT0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpZZXMpCi0gICAgICAgICAgICAgICAg
bm90aWZ5UGFnZXMoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgc3RvcmUpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobm90aWZ5UGFn
ZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVyZWQgPT0gTm90aWZ5UGFnZXNGb3JUZXN0aW5nOjpZZXMp
IHsKLSAgICAgICAgICAgIG5vdGlmeVBhZ2VzKHNvcnRlZFByZXZhbGVudFJlc291cmNlcywgc29y
dGVkUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgcHJldmFsZW50UmVz
b3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLnNpemUoKSwgc3RvcmUpOwotICAgICAgICAg
ICAgLy8gVGhlIG5vdGlmeSBwYWdlcyBmdW5jdGlvbiBpcyBmb3IgdGVzdGluZyBzbyB3ZSBkb24n
dCBuZWVkIHRvIGRvIGFuIGFjdHVhbCBzdWJtaXNzaW9uLgotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNN
ZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlz
dGljc1RlbGVtZXRyeUtleSgpLCAidG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyJfcywg
c29ydGVkUHJldmFsZW50UmVzb3VyY2VzLnNpemUoKSwgc2lnbmlmaWNhbnRGaWd1cmVzRm9yTG9n
Z2VkVmFsdWVzLCBTaG91bGRTYW1wbGU6Ok5vKTsKLSAgICAgICAgd2ViUGFnZVByb3h5LT5sb2dE
aWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2luZ0tleXM6OnJlc291cmNl
TG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgInRvdGFsTnVtYmVyT2ZQcmV2YWxlbnRSZXNv
dXJjZXNXaXRoVXNlckludGVyYWN0aW9uIl9zLCBwcmV2YWxlbnRSZXNvdXJjZXNEYXlzU2luY2VV
c2VySW50ZXJhY3Rpb24uc2l6ZSgpLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMs
IFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICAKLSAgICAgICAgaWYgKHByZXZhbGVudFJlc291
cmNlc0RheXNTaW5jZVVzZXJJbnRlcmFjdGlvbi5zaXplKCkgPiAwKQotICAgICAgICAgICAgd2Vi
UGFnZVByb3h5LT5sb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShEaWFnbm9zdGljTG9nZ2lu
Z0tleXM6OnJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlLZXkoKSwgInRvcFByZXZhbGVu
dFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiJfcywg
cHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uWzBdLCBzaWduaWZpY2Fu
dEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICBpZiAo
cHJldmFsZW50UmVzb3VyY2VzRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLnNpemUoKSA+IDEpCi0g
ICAgICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERp
YWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgp
LCAibWVkaWFuUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVz
ZXJJbnRlcmFjdGlvbiJfcywgbWVkaWFuKHByZXZhbGVudFJlc291cmNlc0RheXNTaW5jZVVzZXJJ
bnRlcmFjdGlvbiksIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2Ft
cGxlOjpObyk7Ci0gICAgICAgIAotICAgICAgICBzdWJtaXRUb3BMaXN0cyhzb3J0ZWRQcmV2YWxl
bnRSZXNvdXJjZXMsIHNvcnRlZFByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rp
b24sIHN0b3JlKTsKLSAgICB9KTsKLX0KLQotc3RhdGljIFN0cmluZ1ZpZXcgbWFrZURlc2NyaXB0
aW9uKFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYyBzdGF0aXN0
aWMpCi17Ci0gICAgc3dpdGNoIChzdGF0aXN0aWMpIHsKLSAgICBjYXNlIFByZXZhbGVudFJlc291
cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXNXaXRoVUk6Ci0gICAgICAgIHJldHVybiAiUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiI7Ci0gICAgY2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpT
dGF0aXN0aWM6Ok1lZGlhblN1YkZyYW1lV2l0aG91dFVJOgotICAgICAgICByZXR1cm4gIlN1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbnMiOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRh
YmFzZVRlbGVtZXRyeTo6U3RhdGlzdGljOjpNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSToKLSAg
ICAgICAgcmV0dXJuICJTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmlnaW5zIjsKLSAgICBjYXNl
IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnk6OlN0YXRpc3RpYzo6TWVkaWFuVW5p
cXVlUmVkaXJlY3RzV2l0aG91dFVJOgotICAgICAgICByZXR1cm4gIlN1YnJlc291cmNlVW5pcXVl
UmVkaXJlY3RzVG8iOwotICAgIGNhc2UgUHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRy
eTo6U3RhdGlzdGljOjpNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUk6Ci0gICAgICAg
IHJldHVybiAiTnVtYmVyT2ZUaW1lc0RhdGFSZWNvcmRzUmVtb3ZlZCI7Ci0gICAgY2FzZSBQcmV2
YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlhblRpbWVzQWNj
ZXNzZWREdWVUb1VzZXJJbnRlcmFjdGlvbldpdGhvdXRVSToKLSAgICAgICAgcmV0dXJuICJOdW1i
ZXJPZlRpbWVzQWNjZXNzZWRBc0ZpcnN0UGFydHlEdWVUb1VzZXJJbnRlcmFjdGlvbiI7Ci0gICAg
Y2FzZSBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM6Ok1lZGlh
blRpbWVzQWNjZXNzZWREdWVUb1N0b3JhZ2VBY2Nlc3NBUElXaXRob3V0VUk6Ci0gICAgICAgIHJl
dHVybiAiTnVtYmVyT2ZUaW1lc0FjY2Vzc2VkQXNGaXJzdFBhcnR5RHVlVG9TdG9yYWdlQWNjZXNz
QVBJIjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHsgfTsK
LX0KLQotc3RhdGljIHZvaWQgZGF0YWJhc2VTdWJtaXRUb3BMaXN0cyhjb25zdCBQcmV2YWxlbnRS
ZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiB0ZWxlbWV0cnksIGNvbnN0IFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZSYgc3RvcmUpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBidWNrZXRJbmRl
eCA9IDA7IGJ1Y2tldEluZGV4IDwgYnVja2V0U2l6ZXMuc2l6ZSgpOyBidWNrZXRJbmRleCsrKSB7
Ci0KLSAgICAgICAgaWYgKHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhv
dXRVc2VySW50ZXJhY3Rpb24gPCBidWNrZXRTaXplc1tidWNrZXRJbmRleF0pCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uUHJlYW1ibGUgPSBtYWtlU3Ry
aW5nKCJ0b3AiLCBidWNrZXRTaXplc1tidWNrZXRJbmRleF0pOwotCi0gICAgICAgIGZvciAodW5z
aWduZWQgc3RhdGlzdGljSW5kZXggPSAwOyBzdGF0aXN0aWNJbmRleCA8IG51bWJlck9mU3RhdGlz
dGljczsgc3RhdGlzdGljSW5kZXgrKykgewotICAgICAgICAgICAgYXV0byBzdGF0aXN0aWMgPSBz
dGF0aWNfY2FzdDxQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5OjpTdGF0aXN0aWM+
KHN0YXRpc3RpY0luZGV4KTsKLQotICAgICAgICAgICAgc3RvcmUuc2VuZERpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeUtleSgpLCBkZXNjcmlwdGlvblByZWFtYmxlICsgbWFrZURlc2NyaXB0aW9uKHN0
YXRpc3RpYyksIHRlbGVtZXRyeS5zdGF0aXN0aWNzW3N0YXRpc3RpY0luZGV4XVtidWNrZXRJbmRl
eF0sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Rl
bGVtZXRyeTo6c3VibWl0VGVsZW1ldHJ5KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUsIFByZXZhbGVudFJlc291cmNl
RGF0YWJhc2VUZWxlbWV0cnkmIHByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxlbWV0cnksIE5v
dGlmeVBhZ2VzRm9yVGVzdGluZyBub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCkK
LXsKLSAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKLQotICAgIGlmIChub3RpZnlQYWdl
c1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9PSBOb3RpZnlQYWdlc0ZvclRlc3Rpbmc6OlllcyAm
JiAhcHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJl
c291cmNlcykgewotICAgICAgICBub3RpZnlQYWdlcygwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAw
LCAwLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuc3RvcmUoKSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICAvLyBEaXNwYXRjaCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbWFrZSBz
dXJlIHRoZSBXZWJQYWdlUHJveHkgd2UncmUgdXNpbmcgZG9lc24ndCBnbyBhd2F5LgotICAgIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbbm90aWZ5UGFnZXNXaGVuVGVsZW1ldHJ5V2FzQ2FwdHVy
ZWQsIHRlbGVtZXRyeSA9IFdURk1vdmUocHJldmFsZW50UmVzb3VyY2VEYXRhYmFzZVRlbGVtZXRy
eSksIHN0b3JlID0gbWFrZVJlZihyZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuc3RvcmUoKSld
ICgpIHsKLQotICAgICAgICAvLyBUaGUgbm90aWZ5IHBhZ2VzIGZ1bmN0aW9uIGlzIGZvciB0ZXN0
aW5nIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYW4gYWN0dWFsIHN1Ym1pc3Npb24uCi0gICAgICAg
IGlmIChub3RpZnlQYWdlc1doZW5UZWxlbWV0cnlXYXNDYXB0dXJlZCA9PSBOb3RpZnlQYWdlc0Zv
clRlc3Rpbmc6OlllcykgewotICAgICAgICAgICAgaWYgKHRlbGVtZXRyeS5udW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPCAzKSB7Ci0gICAgICAgICAgICAg
ICAgbm90aWZ5UGFnZXMoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgc3RvcmUpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG5vdGlmeVBh
Z2VzKHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlcywKLSAgICAgICAgICAgICAg
ICB0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9u
LAotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dp
dGhvdXRVc2VySW50ZXJhY3Rpb24sCi0gICAgICAgICAgICAgICAgdGVsZW1ldHJ5LnRvcFByZXZh
bGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwK
LSAgICAgICAgICAgICAgICB0ZWxlbWV0cnkubWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9u
UHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uLAotICAgICAgICAgICAgICAgIHRl
bGVtZXRyeS5zdGF0aXN0aWNzWzBdWzFdLCAvLyBidWNrZXQgMSAtPiB0b3AzLgotICAgICAgICAg
ICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNzWzFdWzFdLAotICAgICAgICAgICAgICAgIHRlbGVt
ZXRyeS5zdGF0aXN0aWNzWzJdWzFdLAotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0
aWNzWzNdWzFdLAotICAgICAgICAgICAgICAgIHRlbGVtZXRyeS5zdGF0aXN0aWNzWzRdWzFdLAot
ICAgICAgICAgICAgICAgIHN0b3JlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICAKLSAgICAgICAgYXV0byB3ZWJQYWdlUHJveHkgPSBXZWJQYWdlUHJveHk6Om5vbkVw
aGVtZXJhbFdlYlBhZ2VQcm94eSgpOwotICAgICAgICBpZiAoIXdlYlBhZ2VQcm94eSkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB3ZWJQYWdlUHJveHktPmxvZ0RpYWdub3N0aWNNZXNz
YWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1RlbGVtZXRyeUtleSgpLCAidG90YWxOdW1iZXJPZlByZXZhbGVudFJlc291cmNlcyJfcywgdGVs
ZW1ldHJ5Lm51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JM
b2dnZWRWYWx1ZXMsIFNob3VsZFNhbXBsZTo6Tm8pOwotICAgICAgICB3ZWJQYWdlUHJveHktPmxv
Z0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKERpYWdub3N0aWNMb2dnaW5nS2V5czo6cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUtleSgpLCAidG90YWxOdW1iZXJPZlByZXZhbGVudFJl
c291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24iX3MsIHRlbGVtZXRyeS5udW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dl
ZFZhbHVlcywgU2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAgIGlmICh0ZWxlbWV0cnkubnVtYmVy
T2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uID4gMCkKLSAgICAgICAgICAg
IHdlYlBhZ2VQcm94eS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xv
Z2dpbmdLZXlzOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksICJ0b3BQcmV2
YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24i
X3MsIHRlbGVtZXRyeS50b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlz
U2luY2VVc2VySW50ZXJhY3Rpb24sIHNpZ25pZmljYW50RmlndXJlc0ZvckxvZ2dlZFZhbHVlcywg
U2hvdWxkU2FtcGxlOjpObyk7Ci0gICAgICAgIGlmICh0ZWxlbWV0cnkubnVtYmVyT2ZQcmV2YWxl
bnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uID4gMSkKLSAgICAgICAgICAgIHdlYlBhZ2VQ
cm94eS0+bG9nRGlhZ25vc3RpY01lc3NhZ2VXaXRoVmFsdWUoRGlhZ25vc3RpY0xvZ2dpbmdLZXlz
OjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5S2V5KCksICJtZWRpYW5QcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uIl9zLCB0
ZWxlbWV0cnkubWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uLCBzaWduaWZpY2FudEZpZ3VyZXNGb3JMb2dnZWRWYWx1ZXMsIFNo
b3VsZFNhbXBsZTo6Tm8pOwotCi0gICAgICAgIGRhdGFiYXNlU3VibWl0VG9wTGlzdHModGVsZW1l
dHJ5LCBzdG9yZSk7Ci0gICAgfSk7Ci19Ci19Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NUZWxlbWV0cnkuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGIxNzg4NzBhZjI4ZDAyOTdlMzYxZTJjNzYwOTg0ZDllNWQ2MmMyOGYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0
cnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKLWNsYXNzIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlOwotc3RydWN0IFByZXZhbGVudFJlc291cmNlRGF0YWJhc2VUZWxl
bWV0cnk7Ci1lbnVtIGNsYXNzIE5vdGlmeVBhZ2VzRm9yVGVzdGluZyA6IGJvb2wgeyBObywgWWVz
IH07Ci0KLW5hbWVzcGFjZSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5IHsKLSAg
ICAKLXZvaWQgY2FsY3VsYXRlQW5kU3VibWl0KGNvbnN0IFJlc291cmNlTG9hZFN0YXRpc3RpY3NN
ZW1vcnlTdG9yZSYsIE5vdGlmeVBhZ2VzRm9yVGVzdGluZyA9IE5vdGlmeVBhZ2VzRm9yVGVzdGlu
Zzo6Tm8pOwotdm9pZCBzdWJtaXRUZWxlbWV0cnkoY29uc3QgUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUmLCBQcmV2YWxlbnRSZXNvdXJjZURhdGFiYXNlVGVsZW1ldHJ5JiwgTm90
aWZ5UGFnZXNGb3JUZXN0aW5nKTsKLSAgICAKLX0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDRkMmM3ODZmY2Y4
YzlkMzgxNmIzMTZlN2Q5MmY0Njg1YjEyZmVhNDguLjBiYjg1NzMwNTM4NGNiMzVkNzhhNjRkYWM5
NDM0ZDdmYzgyNGQ5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCkBAIC02ODMsMTkgKzY4Myw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OmNsZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpCiAgICAgfQogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpzdWJtaXRUZWxlbWV0cnkoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCi17Ci0gICAgaWYgKGF1dG8qIG5ldHdvcmtTZXNzaW9uID0gdGhpcy0+bmV0
d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBpZiAoYXV0byogcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IG5ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0g
ICAgICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5zdWJtaXRUZWxlbWV0cnkoV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgIH0KLX0KLQogdm9pZCBOZXR3b3Jr
UHJvY2Vzczo6c2NoZWR1bGVDb29raWVCbG9ja2luZ1VwZGF0ZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoYXV0byogbmV0d29ya1Nlc3Npb24gPSB0aGlzLT5uZXR3b3JrU2Vzc2lvbihzZXNz
aW9uSUQpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNz
LmgKaW5kZXggNmQzZTdiM2JiMjU0ODQwYTk2ZTc5MTliNjUzNTc2ODkxNWIxNWMwMC4uMWE3N2Zh
Yjk2MWRmMmU1ZTMwNjEyNjlmNTkyYTJjNGM4Njk0NmY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaApAQCAtMjM3LDcgKzIzNyw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNjaGVkdWxlQ29va2llQmxvY2tpbmdVcGRhdGUoUEFMOjpTZXNzaW9uSUQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hlZHVsZVN0YXRpc3Rp
Y3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzdGF0aXN0aWNzRGF0YWJhc2VIYXNBbGxUYWJsZXMo
UEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwotICAgIHZv
aWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMo
UEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAg
ICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRMYXN0U2VlbihQQUw6OlNl
c3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mLCBTZWNvbmRzLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMDZkYzFkOTlhNDgzZmQ0MGU4MzBl
ZjZkODRkODI1NmEwMjEwMzMwYS4uMGViZTkwNTMzNmUzNGQxMzk0MDI1M2IyZmU3NDEwYjBlOGZi
OTRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLm1lc3NhZ2VzLmluCkBAIC0xMTMsNyArMTEzLDYgQEAgbWVzc2FnZXMgLT4gTmV0
d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNjaGVkdWxlQ29va2llQmxvY2tpbmdV
cGRhdGUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoKSBBc3luYwogICAgIFNjaGVkdWxl
U3RhdGlzdGljc0FuZERhdGFSZWNvcmRzUHJvY2Vzc2luZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpIC0+ICgpIEFzeW5jCiAgICAgU3RhdGlzdGljc0RhdGFiYXNlSGFzQWxsVGFibGVzKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKGJvb2wgaGFzQWxsVGFibGVzKSBBc3luYwotICAgIFN1
Ym1pdFRlbGVtZXRyeShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+ICgpIEFzeW5jCiAgICAg
U2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBTZWNvbmRzIHNlY29uZHMpIC0+ICgpIEFzeW5jCiAgICAgU2V0R3JhbmRmYXRoZXJl
ZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJl
c291cmNlRG9tYWluLCBib29sIGlzR3JhbmRmYXRoZXJlZCkgLT4gKCkgQXN5bmMKICAgICBHZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YVN1bW1hcnkoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
KSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpUaGly
ZFBhcnR5RGF0YT4gdGhpcmRQYXJ0eURhdGEpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDY5ODMxYTcwMGJlYmY0NjViMjIx
MTIxYmY1M2VlMmJjZDVmZDhkOGQuLmExY2U3NjJkNWViMmJhODlkM2Q4YzNkZTZjNjdlMDYzYWQ2
N2UzZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCkBAIC0yMjYsMTEgKzIyNiw2IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OmxvZ0RpYWdu
b3N0aWNNZXNzYWdlV2l0aFZhbHVlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QKICAgICBt
X25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkxvZ0RpYWdub3N0aWNNZXNzYWdlV2l0aFZhbHVlKG1lc3NhZ2UsIGRl
c2NyaXB0aW9uLCB2YWx1ZSwgc2lnbmlmaWNhbnRGaWd1cmVzLCBzaG91bGRTYW1wbGUpLCAwKTsK
IH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbjo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlG
aW5pc2hlZCh1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlcywgdW5zaWduZWQgbnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBudW1i
ZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRv
cFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvbiwgdW5zaWduZWQgbWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVz
b3VyY2VXaXRoVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRS
ZXNvdXJjZXNXaXRoVUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgdW5z
aWduZWQgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFu
VW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuRGF0YVJlY29yZHNS
ZW1vdmVkV2l0aG91dFVJKQotewotICAgIG1fbmV0d29ya1Byb2Nlc3MtPnBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6Ok5vdGlmeVJl
c291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChudW1iZXJPZlByZXZhbGVudFJl
c291cmNlcywgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVXNlckludGVyYWN0aW9uLCBu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24sIHRvcFByZXZh
bGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiwg
bWVkaWFuRGF5c1NpbmNlVXNlckludGVyYWN0aW9uUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uLCB0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUksIHRvcDNNZWRp
YW5TdWJGcmFtZVdpdGhvdXRVSSwgdG9wM01lZGlhblN1YlJlc291cmNlV2l0aG91dFVJLCB0b3Az
TWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCB0b3AzTWVkaWFuRGF0YVJlY29yZHNSZW1v
dmVkV2l0aG91dFVJKSwgMCk7Ci19Ci0KIHZvaWQgTmV0d29ya1Nlc3Npb246OmRlbGV0ZUFuZFJl
c3RyaWN0V2Vic2l0ZURhdGFGb3JSZWdpc3RyYWJsZURvbWFpbnMoT3B0aW9uU2V0PFdlYnNpdGVE
YXRhVHlwZT4gZGF0YVR5cGVzLCBSZWdpc3RyYWJsZURvbWFpbnNUb0RlbGV0ZU9yUmVzdHJpY3RX
ZWJzaXRlRGF0YUZvciYmIGRvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBIYXNoU2V0PFJlZ2lzdHJhYmxlRG9tYWluPiYpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmIChhdXRvKiBzdG9yYWdlU2Vzc2lvbiA9IG5ldHdvcmtT
dG9yYWdlU2Vzc2lvbigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uLmgKaW5kZXggYzJkNGZjNTcwYTVmZTlkYTQwMjEwYWRlYzkzODE5ZjI0ODVlZjk1
OS4uMmZhMjYyZDUwNzEwMmMwZGJlMmE4Mzc2YTI1YTQyNDExOWVhODdiZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaApAQCAtOTYsNyArOTYsNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVBbmRSZXN0cmljdFdlYnNpdGVEYXRhRm9yUmVnaXN0
cmFibGVEb21haW5zKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+LCBSZWdpc3RyYWJsZURvbWFp
bnNUb0RlbGV0ZU9yUmVzdHJpY3RXZWJzaXRlRGF0YUZvciYmLCBib29sIHNob3VsZE5vdGlmeVBh
Z2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFzaFNldDxXZWJDb3JlOjpSZWdpc3Ry
YWJsZURvbWFpbj4mKT4mJik7CiAgICAgdm9pZCByZWdpc3RyYWJsZURvbWFpbnNXaXRoV2Vic2l0
ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlwZT4sIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNoU2V0PFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWlu
PiYmKT4mJik7CiAgICAgdm9pZCBsb2dEaWFnbm9zdGljTWVzc2FnZVdpdGhWYWx1ZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgZGVzY3JpcHRpb24sIHVuc2lnbmVkIHZhbHVl
LCB1bnNpZ25lZCBzaWduaWZpY2FudEZpZ3VyZXMsIFdlYkNvcmU6OlNob3VsZFNhbXBsZSk7Ci0g
ICAgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3Vy
Y2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VX
aXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRp
YW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5z
aWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3Vi
UmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRo
b3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpOwog
ICAgIGJvb2wgZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudCgpIGNv
bnN0IHsgcmV0dXJuIG1fZW5hYmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVu
dDsgfQogICAgIHZvaWQgc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0xvZ1Rlc3RpbmdFdmVudChi
b29sIGxvZykgeyBtX2VuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NMb2dUZXN0aW5nRXZlbnQg
PSBsb2c7IH0KICAgICB2aXJ0dWFsIGJvb2wgaGFzSXNvbGF0ZWRTZXNzaW9uKGNvbnN0IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm1GVFcuY21ha2UKaW5kZXggNTcwYTY2MTFiOTk3MGQ2N2IzOGNjZDFjMmJmNTg0ZWUyM2FkMGFj
ZC4uYTU4NzhmZDlhMmM0ZDJlMTFjNWI3ODkwZTZkMTA1YjI4YWQwZGRlMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUZUVy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtRlRXLmNtYWtlCkBAIC0xMCw3ICsxMCw2IEBAIGFkZF9kZWZpbml0aW9ucygtREJVSUxESU5H
X1dFQktJVCkKIAogbGlzdChBUFBFTkQgV2ViS2l0X1NPVVJDRVMKICAgICBOZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKLSAgICBOZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
Y3BwCiAKICAgICBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL1N0b3JhZ2VNYW5hZ2VyLmNwcAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOWM0ZDliZGFiZjk2
MGZhYmViZjk5OGU0MTBmNTBjNzZmOWI4ZGRmZC4uYTExNjY2YWJmOGNjMmMxMmIzYzYzOTljOWYz
NDY3NWQ4YjY5YTliMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVBsYXlTdGF0
aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpA
QCAtMjMsNyArMjMsNiBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwogICAgIEdQVVByb2Nl
c3MvcGxheXN0YXRpb24vR1BVUHJvY2Vzc1BsYXlTdGF0aW9uLmNwcAogCiAgICAgTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCi0gICAg
TmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1l
dHJ5LmNwcAogCiAgICAgTmV0d29ya1Byb2Nlc3MvQ29va2llcy9jdXJsL1dlYkNvb2tpZU1hbmFn
ZXJDdXJsLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtl
IGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVdpbi5jbWFrZQppbmRleCA2ZjA1N2M5M2M5MTI0YTdk
ZDYyZmFiMGM4MmJmMTk5MWE0MjZmZjBkLi43NWE1MDZkNmE5NWM5YjAyYWZhZGY0N2VkZDI1OWI3
MjViOGEyZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtV2luLmNtYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1XaW4uY21ha2UKQEAgLTEwLDcgKzEwLDYgQEAgYWRk
X2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQogCiBsaXN0KEFQUEVORCBXZWJLaXRfU09V
UkNFUwogICAgIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcAotICAgIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIAogICAgIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3Jh
Z2UvU3RvcmFnZU1hbmFnZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCAxNjliMjk1
NzJjNWY0NWYxOWFmODQ5YWFjNTQ0YTY4NWU1NmU1MTZkLi45NTQ1YmI5ZjdlYTI1MjM3YWE1NWU5
NjkxZDYyN2UxYWVmMmI2NzNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0zMCw3ICszMCw2
IEBAIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KIE5ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KIAogTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCi1OZXR3b3JrUHJvY2Vz
cy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwCiAKIE5l
dHdvcmtQcm9jZXNzL0Nvb2tpZXMvbWFjL1dlYkNvb2tpZU1hbmFnZXJNYWMubW0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0dUSy50eHQKaW5kZXggMzFkYzIxNzU0ZjI1MmQ2ZGY1NmUxNjllODAzMjIyYTI1MGRlODQ5MC4u
NjYzYzJlMzlhNTg1NjRmNDAxNzY1YzczYWRlNzliN2NmNDkwZTYyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsu
dHh0CkBAIC0yOSw3ICsyOSw2IEBAIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9EZXN0aW5h
dGlvbk1hbmFnZXIuY3BwCiBHUFVQcm9jZXNzL21lZGlhL2dzdHJlYW1lci9SZW1vdGVNZWRpYVBs
YXllclByb3h5R1N0cmVhbWVyLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKLU5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIv
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHAKIAogTmV0d29ya1Byb2Nlc3Mv
Q29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApp
bmRleCAzYzI5OWRmZDcyNzkyY2YxYjc5OWRlNjQ4NjYyNmM4MDM5ZGRiYzg2Li41ZjM1NTMxZGUx
MTZlYjVkZTk4ZjI0Y2RmOGNiYzY2YzMwZTQ3NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAgLTI5
LDcgKzI5LDYgQEAgR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb0Rlc3RpbmF0aW9uTWFuYWdl
ci5jcHAKIEdQVVByb2Nlc3MvbWVkaWEvZ3N0cmVhbWVyL1JlbW90ZU1lZGlhUGxheWVyUHJveHlH
U3RyZWFtZXIuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAotTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9Db29raWVzL3Nv
dXAvV2ViQ29va2llTWFuYWdlclNvdXAuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwCmluZGV4IGQ4MTY2MjZh
ZGE3ZGQ3Mzk0M2E0MGE5ZTc4ODY5NmNiMWM3OTVkMmQuLjE4NGJmZGVmNjQ2ZTRhYWY2ZDk5ZmI4
OWZhOTkwOWU2MDdiMDkxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlRGF0YVN0b3JlUmVmLmNwcApAQCAtNDcxLDEzICs0NzEsNiBAQCB2
b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZyhXS1dl
YnNpdGVEYXRhU3RvcmVSZWYgZGF0YQogI2VuZGlmCiB9CiAKLXZvaWQgV0tXZWJzaXRlRGF0YVN0
b3JlU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0
b3JlUmVmKQotewotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgV2Vi
S2l0Ojp0b0ltcGwoZGF0YVN0b3JlUmVmKS0+c3VibWl0VGVsZW1ldHJ5KCk7Ci0jZW5kaWYKLX0K
LQogdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTZXRTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0
YVJlY29yZHNXZXJlU2Nhbm5lZChXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVmLCBi
b29sIHZhbHVlKQogewogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVEYXRhU3RvcmVS
ZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5oCmluZGV4IDZlNjhmNzM2ODA3M2NhNDdlZmU2MWE5YzgwYzllNTQxMTdkNWI1YTMuLjFiNmI4
MzU4YThiNzA5MGZjNTc0NTMxOWM3MWU2MDA5MWMyN2Y3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJlZi5oCkBAIC0xMTQs
NyArMTE0LDYgQEAgdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1By
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNGdW5jdGkKIFdLX0VYUE9SVCB2b2lkIFdLV2Vi
c2l0ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKFdL
V2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIHZvaWQqIGNvbnRleHQsIFdLV2Vic2l0
ZURhdGFTdG9yZVN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzRnVuY3Rp
b24gY2FsbGJhY2spOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGlj
c1VwZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24pKHZvaWQqIGZ1bmN0aW9uQ29udGV4dCk7CiBX
S19FWFBPUlQgdm9pZCBXS1dlYnNpdGVEYXRhU3RvcmVTdGF0aXN0aWNzVXBkYXRlQ29va2llQmxv
Y2tpbmcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmIGRhdGFTdG9yZVJlZiwgdm9pZCogY29udGV4dCwg
V0tXZWJzaXRlRGF0YVN0b3JlU3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nRnVuY3Rpb24g
Y29tcGxldGlvbkhhbmRsZXIpOwotV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRlRGF0YVN0b3JlU3Rh
dGlzdGljc1N1Ym1pdFRlbGVtZXRyeShXS1dlYnNpdGVEYXRhU3RvcmVSZWYgZGF0YVN0b3JlUmVm
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NOb3RpZnlQ
YWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVkKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRh
U3RvcmVSZWYsIGJvb2wgdmFsdWUpOwogdHlwZWRlZiB2b2lkICgqV0tXZWJzaXRlRGF0YVN0b3Jl
U2V0U3RhdGlzdGljc0lzUnVubmluZ1Rlc3RGdW5jdGlvbikodm9pZCogZnVuY3Rpb25Db250ZXh0
KTsKIFdLX0VYUE9SVCB2b2lkIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5p
bmdUZXN0KFdLV2Vic2l0ZURhdGFTdG9yZVJlZiBkYXRhU3RvcmVSZWYsIGJvb2wgdmFsdWUsIHZv
aWQqIGNvbnRleHQsIFdLV2Vic2l0ZURhdGFTdG9yZVNldFN0YXRpc3RpY3NJc1J1bm5pbmdUZXN0
RnVuY3Rpb24gY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggYzJkYjRhMDRkMzc4ZjI0ZmRk
NWU2MzBmMTViMjkzYmY2YmUwMWNhYi4uNzZmZGFjMGU5MDBmNGUyZjBmNTRmNmNmMjFkOGJmNzA2
YTIwYjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFTdG9yZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJzaXRlRGF0YVN0b3JlLm1tCkBAIC0zNyw3ICszNyw2IEBACiAjaW1wb3J0ICJXS1dl
YnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCi0jaW1wb3J0ICJXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNo
T3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbkludGVy
bmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAxZWU0ZDE4MTYzNWJjY2MxYjRjMzdjYzBiM2Y3NWY1
ZTgyZTI5MjkyLi4wNGQ5ZTc1NTE4YzM3YTE3MTNlZjkzYmE2MmRhNDk3MzZhNmJhNzY5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5jcHAKQEAgLTEwODgsMTYgKzEwODgsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SQogICAgIH0pOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnN1Ym1pdFRlbGVtZXRy
eShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKLSAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTdWJtaXRUZWxl
bWV0cnkoc2Vzc2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotfQotCiB2b2lk
IE5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3Mgc2hv
dWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKICAgICBpZiAoIWNhblNlbmRNZXNzYWdlKCkpIHsKQEAgLTExMzEsMjMgKzExMjEs
NiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Om5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJl
Z2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVdl
YnNpdGVEYXRhU2NhbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7CiB9CiAKLXZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6bm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRy
eUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBu
dW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQg
dG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVy
YWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRS
ZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1
bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRp
YW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jk
c1JlbW92ZWRXaXRob3V0VUkpCi17Ci0gICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1lc3Nh
Z2VCb2R5OwotICAgIG1lc3NhZ2VCb2R5LnNldCgiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMi
X3MsIEFQSTo6VUludDY0OjpjcmVhdGUobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMpKTsKLSAg
ICBtZXNzYWdlQm9keS5zZXQoIk51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZShudW1iZXJPZlByZXZhbGVudFJlc291cmNl
c1dpdGhVc2VySW50ZXJhY3Rpb24pKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIk51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNy
ZWF0ZShudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24pKTsK
LSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFj
dGlvbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3BQ
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rp
b24pKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIk1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlv
blByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiJfcywgQVBJOjpVSW50NjQ6OmNy
ZWF0ZShtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhV
c2VySW50ZXJhY3Rpb24pKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNOdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTnVtYmVyT2ZQ
cmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkpKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRp
YW5TdWJGcmFtZVdpdGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuU3Vi
RnJhbWVXaXRob3V0VUkpKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5TdWJSZXNv
dXJjZVdpdGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFuU3ViUmVzb3Vy
Y2VXaXRob3V0VUkpKTsKLSAgICBtZXNzYWdlQm9keS5zZXQoIlRvcDNNZWRpYW5VbmlxdWVSZWRp
cmVjdHNXaXRob3V0VUkiX3MsIEFQSTo6VUludDY0OjpjcmVhdGUodG9wM01lZGlhblVuaXF1ZVJl
ZGlyZWN0c1dpdGhvdXRVSSkpOwotICAgIG1lc3NhZ2VCb2R5LnNldCgiVG9wM01lZGlhbkRhdGFS
ZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSJfcywgQVBJOjpVSW50NjQ6OmNyZWF0ZSh0b3AzTWVkaWFu
RGF0YVJlY29yZHNSZW1vdmVkV2l0aG91dFVJKSk7Ci0KLSAgICBXZWJQcm9jZXNzUHJveHk6Om5v
dGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpEaWN0aW9uYXJ5OjpjcmVh
dGUobWVzc2FnZUJvZHkpLnB0cigpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpk
aWRDb21taXRDcm9zc1NpdGVMb2FkV2l0aERhdGFUcmFuc2ZlcihQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBmcm9tRG9tYWluLCBjb25zdCBSZWdpc3Ry
YWJsZURvbWFpbiYgdG9Eb21haW4sIE9wdGlvblNldDxXZWJDb3JlOjpDcm9zc1NpdGVOYXZpZ2F0
aW9uRGF0YVRyYW5zZmVyOjpGbGFnPiBuYXZpZ2F0aW9uRGF0YVRyYW5zZmVyLCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyIHdlYlBhZ2VQcm94eUlELCBQYWdlSWRlbnRpZmllciB3ZWJQYWdlSUQpCiB7
CiAgICAgaWYgKCFjYW5TZW5kTWVzc2FnZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCAwMDIyZWU0ZDFmMjJh
NWQwMGRkYmY0MzVkNjhkNWRhMjg4OTBkYTgxLi5kMDMwNDNmNzhkMDIxMzJmNDM5MzExZDI2Mjdi
MDhjM2M3ZGFhZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTczLDcgKzE3Myw2IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQs
IFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKICAgICB2b2lkIHNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNz
aW9uSUQsIE9wdGlvbmFsPFdhbGxUaW1lPiBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZhdGhl
clN0YXRpc3RpY3MsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzY2hl
ZHVsZUNvb2tpZUJsb2NraW5nVXBkYXRlKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwotICAgIHZvaWQgc3VibWl0VGVsZW1ldHJ5KFBBTDo6U2Vzc2lvbklELCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgc2V0Q2FjaGVNYXhBZ2VDYXBG
b3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpTZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBzZXRHcmFuZGZhdGhlcmluZ1RpbWUoUEFMOjpT
ZXNzaW9uSUQsIFNlY29uZHMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9p
ZCBzZXRNYXhTdGF0aXN0aWNzRW50cmllcyhQQUw6OlNlc3Npb25JRCwgc2l6ZV90IG1heGltdW1F
bnRyeUNvdW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwpAQCAtMzA0LDcgKzMwMyw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUHJvY2Vz
c2VkKCk7CiAgICAgdm9pZCBub3RpZnlXZWJzaXRlRGF0YURlbGV0aW9uRm9yUmVnaXN0cmFibGVE
b21haW5zRmluaXNoZWQoKTsKICAgICB2b2lkIG5vdGlmeVdlYnNpdGVEYXRhU2NhbkZvclJlZ2lz
dHJhYmxlRG9tYWluc0ZpbmlzaGVkKCk7Ci0gICAgdm9pZCBub3RpZnlSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJj
ZXMsIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
biwgdW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0
aW9uLCB1bnNpZ25lZCB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlz
U2luY2VVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFj
dGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJh
bWVXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5z
aWduZWQgdG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01l
ZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRVSSk7CiAjZW5kaWYKICAgICB2b2lkIHJldHJp
ZXZlQ2FjaGVTdG9yYWdlUGFyYW1ldGVycyhQQUw6OlNlc3Npb25JRCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCAyMTFjZDk0ZDIxMDk0YjVhODI1YTQ4M2YxYTFiODYwOTdh
YmM4NzQ5Li4yYWVhZmYzNGM3YTgwZTM5YzFhYzJkMzNmN2M0YTExNTJkMTg4ZDc0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCkBAIC00NCw3ICs0NCw2IEBAIG1lc3NhZ2VzIC0+IE5l
dHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRlZCB7CiAgICAgTm90
aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgpCiAgICAgTm90aWZ5V2Vic2l0ZURh
dGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkKCkKICAgICBOb3RpZnlXZWJz
aXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCi0gICAgTm90aWZ5UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKHVuc2lnbmVkIG51bWJlck9mUHJl
dmFsZW50UmVzb3VyY2VzLCB1bnNpZ25lZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhV
c2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91
dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlcklu
dGVyYWN0aW9uRGF5c1NpbmNlVXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVu
c2lnbmVkIHRvcDNOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9w
M01lZGlhblN1YkZyYW1lV2l0aG91dFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VX
aXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVu
c2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUkpCiAgICAgUmVxdWVz
dFN0b3JhZ2VBY2Nlc3NDb25maXJtKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpSZWdpc3RyYWJs
ZURvbWFpbiBzdWJGcmFtZURvbWFpbiwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gdG9wRnJh
bWVEb21haW4pIC0+IChib29sIHVzZXJEaWRHcmFudEFjY2VzcykgQXN5bmMKICAgICBEZWxldGVX
ZWJzaXRlRGF0YUluVUlQcm9jZXNzRm9yUmVnaXN0cmFibGVEb21haW5zKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMs
IE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhRmV0Y2hPcHRpb24+IGZldGNoT3B0aW9ucywg
VmVjdG9yPFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluPiBkb21haW5zKSAtPiAoSGFzaFNldDxX
ZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbj4gZG9tYWluc1dpdGhNYXRjaGluZ0RhdGFSZWNvcmRz
KSBBc3luYwogICAgIERpZENvbW1pdENyb3NzU2l0ZUxvYWRXaXRoRGF0YVRyYW5zZmVyRnJvbVBy
ZXZhbGVudFJlc291cmNlKFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA3NmNjZTBj
YjBiY2IwZjczNzBjNDgzY2Y4YTM0MmJlNGNiMjM2YzRkLi44Y2FjYzUxNjEyYzE2YjdiZTNmODJh
ODExYWE0NDE4MDFhYTcxZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKQEAgLTQ4NCwxMiArNDg0LDYgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5v
dGlmeVdlYnNpdGVEYXRhRGVsZXRpb25Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpCiAg
ICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURh
dGFEZWxldGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7CiB9CiAK
LXZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlz
aGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlQm9keSkKLXsKLSAgICBmb3IgKGF1dG8mIHBhZ2UgOiBn
bG9iYWxQYWdlTWFwKCkpCi0gICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZSgiUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkIiwgbWVzc2Fn
ZUJvZHkpOwotfQotCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5LmgKaW5kZXggN2Q4MDEyYTE3OWIxYzQ1OGYwODQ2ZmM4Y2MxNTE2ZmYwN2E2
OGJhZC4uN2I0ODA3NDc2OWVmZGY5NmFiN2Y1MjQxN2Y0MGI3ZmFjNWRiYzcyMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTIyMyw3ICsyMjMsNiBAQCBw
dWJsaWM6CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHN0YXRp
YyB2b2lkIG5vdGlmeVBhZ2VTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHNQcm9jZXNzZWQoKTsKLSAg
ICBzdGF0aWMgdm9pZCBub3RpZnlQYWdlU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6
T2JqZWN0KiBtZXNzYWdlQm9keSk7CiAKICAgICBzdGF0aWMgdm9pZCBub3RpZnlXZWJzaXRlRGF0
YURlbGV0aW9uRm9yUmVnaXN0cmFibGVEb21haW5zRmluaXNoZWQoKTsKICAgICBzdGF0aWMgdm9p
ZCBub3RpZnlXZWJzaXRlRGF0YVNjYW5Gb3JSZWdpc3RyYWJsZURvbWFpbnNGaW5pc2hlZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRl
RGF0YVN0b3JlLmNwcAppbmRleCA0MTE5MWZlYmJjM2ZiYmJmNjRlNmU5OGFiNzZmN2QwZWM1ZWUx
NGNhLi5kYWQyMDcwMWJkMzk4OTM5ODVjODQyYzhhMTg2NmE1ZjUwY2U1ZmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0
b3JlLmNwcApAQCAtMTQ0NSwxMyArMTQ0NSw2IEBAIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6cmVz
ZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mCiAg
ICAgbmV0d29ya1Byb2Nlc3MoKS5yZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMobV9zZXNz
aW9uSUQsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJzaXRlRGF0
YVN0b3JlOjpzdWJtaXRUZWxlbWV0cnkoKQotewotICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7Ci0gICAgCi0gICAgbmV0d29ya1Byb2Nlc3MoKS5zdWJtaXRUZWxlbWV0cnkobV9zZXNzaW9u
SUQsIFtdIHsgfSk7Ci19Ci0KIHZvaWQgV2Vic2l0ZURhdGFTdG9yZTo6c2NoZWR1bGVDbGVhcklu
TWVtb3J5QW5kUGVyc2lzdGVudChXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBTaG91bGRHcmFuZGZh
dGhlclN0YXRpc3RpY3Mgc2hvdWxkR3JhbmRmYXRoZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZS5oCmluZGV4IGRlNDg4MDVlMTAxMGY5ZWM5ZmNmZTliYjlkYTgzOWNjMmQ4ZTc4
MWMuLmYzZmU2NmQwNTk0MWFhM2YxN2RjMjkzMjUyZjUwN2MyNWZiYzFiY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmgKQEAgLTE4OSw3ICsxODksNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50KFNob3VsZEdyYW5kZmF0aGVyU3RhdGlzdGljcywgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGdldFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhU3VtbWFyeShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmU6OlRoaXJkUGFydHlEYXRhPiYmKT4mJik7CiAgICAgdm9pZCBzY2hlZHVs
ZVN0YXRpc3RpY3NBbmREYXRhUmVjb3Jkc1Byb2Nlc3NpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKLSAgICB2b2lkIHN1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHZvaWQgc2V0R3JhbmRm
YXRoZXJlZChjb25zdCBVUkwmLCBib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
ICAgIHZvaWQgaXNHcmFuZGZhdGhlcmVkKGNvbnN0IFVSTCYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOwogICAgIHZvaWQgc2V0R3JhbmRmYXRoZXJpbmdUaW1lKFNlY29uZHMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlYTdiYjJlN2FlNDBjYWQwMzFhMWJjNGIxMWFm
YTU5MDBjMjA3MTBkLi4wZTYxYjNmYWI5NmE0NDcxYmI5NDAyZjJhZWYxNzA4NGJhMzk4NjRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTQyMjcsOCArNDIyNyw2IEBACiAJCTdBRkJEMzYyMjFFNTBGMzkwMDVEQkFDQiAvKiBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1dl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3QUZCRDM2NDIxRTUxQkFCMDA1REJBQ0IgLyogUmVzb3VyY2VMb2FkU3RhdGlzdGljc01l
bW9yeVN0b3JlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFJlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTdBRkJEMzY1MjFFNTFCQUIwMDVEQkFDQiAvKiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
TWVtb3J5U3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUmVzb3VyY2VM
b2FkU3RhdGlzdGljc01lbW9yeVN0b3JlLmg7IHBhdGggPSBDbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NNZW1vcnlTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk3
QUZCRDM2QjIxRTU0NTQ0MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVt
ZXRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5
Lmg7IHBhdGggPSBDbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnku
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0FGQkQzNkMyMUU1NDU0NDAwNURCQUNC
IC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5jcHA7IHBhdGggPSBDbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NUZWxlbWV0cnkuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUZCRDM2RDIxRTU0NkUzMDA1REJBQ0IgLyogUGVyc2lzdGVu
Y3lVdGlscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW5jeVV0aWxzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTdBRkJEMzZFMjFFNTQ2RTMwMDVEQkFDQiAvKiBQZXJzaXN0ZW5j
eVV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBlcnNpc3RlbmN5VXRpbHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDMzLDggKzg0MzEsNiBAQAogCQkJCTdBM0ZF
Q0ExMjFGN0MwOTcwMEYyNjdDRCAvKiBTdG9yYWdlQWNjZXNzU3RhdHVzLmggKi8sCiAJCQkJN0E4
NDNBMUEyMUU0MUZCMjAwREVGNjYzIC8qIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAgKi8sCiAJCQkJN0FGQkQzNjIyMUU1MEYzOTAwNURCQUNCIC8qIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oICovLAotCQkJCTdBRkJEMzZDMjFFNTQ1NDQwMDVEQkFDQiAvKiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGVsZW1ldHJ5LmNwcCAqLywKLQkJCQk3QUZCRDM2QjIxRTU0
NTQ0MDA1REJBQ0IgLyogV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeS5oICovLAog
CQkJKTsKIAkJCW5hbWUgPSBDbGFzc2lmaWVyOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5YjIz
NWRkOTUzNDkxYThkNzA5MTJkYjg4M2I3ZDEyMjQ3NjBkYjFkLi5iNjAyOGMzMDJhMjk5N2VmNjM4
YjA0ODNkNzI0ZjM4MjA0MTU3MDBmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMTAtMTMgIEthdGUgQ2hlbmV5
ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUmVtb3ZlIFJlc291cmNl
TG9hZFN0YXRpc3RpY3MgdGVsZW1ldHJ5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTc2NjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NzQ4OTg4
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlbGVt
ZXRyeSBjYWxjdWxhdGlvbiBpbiBJVFAgaXMgdW51c2VkLCB2ZXJ5IGNvbXBsaWNhdGVkLCBhIHBv
dGVudGlhbAorICAgICAgICBwcml2YWN5IHJpc2ssIGFuZCBpdCBjYXVzZXMgZmxha3kgdGVzdHMu
IFdlIHNob3VsZCByZW1vdmUgaXQuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0JpbmRpbmdzL1Rlc3RSdW5uZXIuaWRsOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV1RSOjpJ
bmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHA6CisgICAgICAgIChXVFI6
OlRlc3RSdW5uZXI6Omluc3RhbGxTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2spOiBE
ZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGlkUnVuVGVsZW1l
dHJ5Q2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpUZXN0UnVubmVyOjpzdGF0aXN0
aWNzU3VibWl0VGVsZW1ldHJ5KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdENvbnRyb2xsZXI6OnN0YXRp
c3RpY3NTdWJtaXRUZWxlbWV0cnkpOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvVGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZv
Y2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVTeW5j
aHJvbm91c01lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorCiAyMDIwLTEwLTEzICBTYW0gV2Vp
bmlnICA8d2VpbmlnQGFwcGxlLmNvbT4KIAogICAgICAgICBbVGVzdGluZ10gUmVuYW1lIHRlc3Qg
aGVhZGVyIGNvbW1hbmRzIHRvIG1hdGNoIG5hbWVzIGluIFdlYlByZWZlcmVuY2VzKi55YW1sCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9C
aW5kaW5ncy9UZXN0UnVubmVyLmlkbAppbmRleCBkYmRhYmZjOGFlZTkwZmEyMTY3MzQ2N2IzNjI5
ZTRkZDFhNWYyYjcxLi41NTA2ZGMzNTU1YjlmZGVmZTc2YTk2YmRlNDgzYjVmM2YzNmZhYjY1IDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdz
L1Rlc3RSdW5uZXIuaWRsCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvQmluZGluZ3MvVGVzdFJ1bm5lci5pZGwKQEAgLTI5OSw3ICsyOTksNiBAQCBpbnRlcmZhY2Ug
VGVzdFJ1bm5lciB7CiAgICAgYm9vbGVhbiBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB1
bmRlZmluZWQgaW5zdGFsbFN0YXRpc3RpY3NEaWRNb2RpZnlEYXRhUmVjb3Jkc0NhbGxiYWNrKG9i
amVjdCBjYWxsYmFjayk7CiAgICAgdW5kZWZpbmVkIGluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRh
dGFSZWNvcmRzQ2FsbGJhY2sob2JqZWN0IGNhbGxiYWNrKTsKLSAgICB1bmRlZmluZWQgaW5zdGFs
bFN0YXRpc3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFjayhvYmplY3QgY2FsbGJhY2spOwogICAg
IHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzRGVidWdNb2RlKGJvb2xlYW4gdmFsdWUsIG9iamVjdCBj
b21wbGV0aW9uSGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NQcmV2YWxlbnRS
ZXNvdXJjZUZvckRlYnVnTW9kZShET01TdHJpbmcgaG9zdE5hbWUsIG9iamVjdCBjb21wbGV0aW9u
SGFuZGxlcik7CiAgICAgdW5kZWZpbmVkIHNldFN0YXRpc3RpY3NMYXN0U2VlbihET01TdHJpbmcg
aG9zdE5hbWUsIGRvdWJsZSBzZWNvbmRzLCBvYmplY3QgY29tcGxldGlvbkhhbmRsZXIpOwpAQCAt
MzI4LDcgKzMyNyw2IEBAIGludGVyZmFjZSBUZXN0UnVubmVyIHsKICAgICBib29sZWFuIHN0YXRp
c3RpY3NOb3RpZnlPYnNlcnZlcigpOwogICAgIHVuZGVmaW5lZCBzdGF0aXN0aWNzUHJvY2Vzc1N0
YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwogICAgIHVuZGVmaW5lZCBzdGF0aXN0aWNzVXBkYXRl
Q29va2llQmxvY2tpbmcob2JqZWN0IGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICB1bmRlZmluZWQg
c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNz
SXNSdW5uaW5nVGVzdChib29sZWFuIHZhbHVlKTsKICAgICB1bmRlZmluZWQgc2V0U3RhdGlzdGlj
c1Nob3VsZENsYXNzaWZ5UmVzb3VyY2VzQmVmb3JlRGF0YVJlY29yZHNSZW1vdmFsKGJvb2xlYW4g
dmFsdWUpOwogICAgIHVuZGVmaW5lZCBzZXRTdGF0aXN0aWNzTWluaW11bVRpbWVCZXR3ZWVuRGF0
YVJlY29yZHNSZW1vdmFsKGRvdWJsZSBzZWNvbmRzKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggMjMy
ZWNkNmVjMjAxYzBlMzdlZWYzZjBmM2E4ZGMzZGIwZTBlODBmZS4uOGEwMmM4MTI5MTc2MmNlMzdh
NzU1MjMyMmZjZjY2MDc5N2E3YTY1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTQ1NSwyMyArNDU1
LDYgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG0KICAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0
aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLQotICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkIikpIHsKLSAgICAgICAgYXV0
byBtZXNzYWdlQm9keURpY3Rpb25hcnkgPSBkaWN0aW9uYXJ5VmFsdWUobWVzc2FnZUJvZHkpOwot
ICAgICAgICBhdXRvIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzID0gdWludDY0VmFsdWUobWVz
c2FnZUJvZHlEaWN0aW9uYXJ5LCAiTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMiKTsKLSAgICAg
ICAgYXV0byBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24gPSB1
aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJOdW1iZXJPZlByZXZhbGVudFJlc291
cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24iKTsKLSAgICAgICAgYXV0byBudW1iZXJPZlByZXZhbGVu
dFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9k
eURpY3Rpb25hcnksICJOdW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJh
Y3Rpb24iKTsKLSAgICAgICAgYXV0byB0b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJh
Y3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURp
Y3Rpb25hcnksICJUb3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2lu
Y2VVc2VySW50ZXJhY3Rpb24iKTsKLSAgICAgICAgYXV0byBtZWRpYW5EYXlzU2luY2VVc2VySW50
ZXJhY3Rpb25QcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24gPSB1aW50NjRWYWx1
ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJNZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25Q
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24iKTsKLSAgICAgICAgYXV0byB0b3Az
TnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9k
eURpY3Rpb25hcnksICJUb3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUkiKTsKLSAg
ICAgICAgYXV0byB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUkgPSB1aW50NjRWYWx1ZShtZXNz
YWdlQm9keURpY3Rpb25hcnksICJUb3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUkiKTsKLSAgICAg
ICAgYXV0byB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkgPSB1aW50NjRWYWx1ZShtZXNz
YWdlQm9keURpY3Rpb25hcnksICJUb3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUkiKTsKLSAg
ICAgICAgYXV0byB0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJID0gdWludDY0VmFs
dWUobWVzc2FnZUJvZHlEaWN0aW9uYXJ5LCAiVG9wM01lZGlhblVuaXF1ZVJlZGlyZWN0c1dpdGhv
dXRVSSIpOwotICAgICAgICBhdXRvIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0
VUkgPSB1aW50NjRWYWx1ZShtZXNzYWdlQm9keURpY3Rpb25hcnksICJUb3AzTWVkaWFuRGF0YVJl
Y29yZHNSZW1vdmVkV2l0aG91dFVJIik7Ci0KLSAgICAgICAgbV90ZXN0UnVubmVyLT5zdGF0aXN0
aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2sobnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgbnVtYmVyT2ZQcmV2
YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB0b3BQcmV2YWxlbnRSZXNvdXJj
ZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJhY3Rpb24sIG1lZGlhbkRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwg
dG9wM051bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVJLCB0b3AzTWVkaWFuU3ViRnJhbWVX
aXRob3V0VUksIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdG9wM01lZGlhblVuaXF1
ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdG9wM01lZGlhbkRhdGFSZWNvcmRzUmVtb3ZlZFdpdGhvdXRV
SSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVh
bFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJEaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0Iikp
IHsKICAgICAgICAgbV90ZXN0UnVubmVyLT5kaWRHZXRBcHBsaWNhdGlvbk1hbmlmZXN0KCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5u
ZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UZXN0UnVubmVy
LmNwcAppbmRleCAxYTJmYTVmMjdlYmJkZjhmNDNkOGNmM2YyYjI2YjE1OGI5ZjAxYTdmLi5kMzdk
YTY2NmZlZmRiNTA0OTg3YjIwZWJmMzM0YjQ1YThmZmE2YjZlIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5jcHAKQEAgLTczMiw3
ICs3MzIsNiBAQCBlbnVtIHsKICAgICBTZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9u
Q2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFja0lE
LAogICAgIFN0YXRpc3RpY3NEaWRTY2FuRGF0YVJlY29yZHNDYWxsYmFja0lELAotICAgIFN0YXRp
c3RpY3NEaWRSdW5UZWxlbWV0cnlDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVhclRo
cm91Z2hXZWJzaXRlRGF0YVJlbW92YWxDYWxsYmFja0lELAogICAgIFN0YXRpc3RpY3NEaWRDbGVh
ckluTWVtb3J5QW5kUGVyc2lzdGVudFN0b3JlQ2FsbGJhY2tJRCwKICAgICBTdGF0aXN0aWNzRGlk
UmVzZXRUb0NvbnNpc3RlbnRTdGF0ZUNhbGxiYWNrSUQsCkBAIC0xNTUyLDIwICsxNTUxLDYgQEAg
dm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soKQog
ICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGljc0RpZFNjYW5EYXRhUmVjb3Jkc0Nh
bGxiYWNrSUQpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6Omluc3RhbGxTdGF0aXN0aWNzRGlkUnVu
VGVsZW1ldHJ5Q2FsbGJhY2soSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLSAgICBjYWNoZVRlc3RS
dW5uZXJDYWxsYmFjayhTdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2tJRCwgY2FsbGJh
Y2spOwotfQotICAgIAotdm9pZCBUZXN0UnVubmVyOjpzdGF0aXN0aWNzRGlkUnVuVGVsZW1ldHJ5
Q2FsbGJhY2sodW5zaWduZWQgbnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXMsIHVuc2lnbmVkIG51
bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgbnVt
YmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRob3V0VXNlckludGVyYWN0aW9uLCB1bnNpZ25lZCB0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb24sIHVuc2lnbmVkIG1lZGlhbkRheXNTaW5jZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJl
c291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgdW5zaWduZWQgdG9wM051bWJlck9mUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVJLCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0VUksIHVu
c2lnbmVkIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlh
blVuaXF1ZVJlZGlyZWN0c1dpdGhvdXRVSSwgdW5zaWduZWQgdG9wM01lZGlhbkRhdGFSZWNvcmRz
UmVtb3ZlZFdpdGhvdXRVSSkKLXsKLSAgICBTdHJpbmcgc3RyaW5nID0gbWFrZVN0cmluZygieyBc
Im51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzXCIgOiAiLCBudW1iZXJPZlByZXZhbGVudFJlc291
cmNlcywgIiwgXCJudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb25c
IiA6ICIsIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiwgIiwg
XCJudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhvdXRVc2VySW50ZXJhY3Rpb25cIiA6ICIs
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgIiwgXCJ0
b3BQcmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25EYXlzU2luY2VVc2VySW50ZXJh
Y3Rpb25cIiA6ICIsIHRvcFByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbkRheXNT
aW5jZVVzZXJJbnRlcmFjdGlvbiwgIiwgXCJtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25Q
cmV2YWxlbnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb25cIiA6ICIsIG1lZGlhbkRheXNTaW5j
ZVVzZXJJbnRlcmFjdGlvblByZXZhbGVudFJlc291cmNlV2l0aFVzZXJJbnRlcmFjdGlvbiwgIiwg
XCJ0b3AzTnVtYmVyT2ZQcmV2YWxlbnRSZXNvdXJjZXNXaXRoVUlcIiA6ICIsIHRvcDNOdW1iZXJP
ZlByZXZhbGVudFJlc291cmNlc1dpdGhVSSwgIiwgXCJ0b3AzTWVkaWFuU3ViRnJhbWVXaXRob3V0
VUlcIiA6ICIsIHRvcDNNZWRpYW5TdWJGcmFtZVdpdGhvdXRVSSwgIiwgXCJ0b3AzTWVkaWFuU3Vi
UmVzb3VyY2VXaXRob3V0VUlcIiA6ICIsIHRvcDNNZWRpYW5TdWJSZXNvdXJjZVdpdGhvdXRVSSwg
IiwgXCJ0b3AzTWVkaWFuVW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJXCIgOiAiLCB0b3AzTWVkaWFu
VW5pcXVlUmVkaXJlY3RzV2l0aG91dFVJLCAiLCBcInRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92
ZWRXaXRob3V0VUlcIiA6ICIsIHRvcDNNZWRpYW5EYXRhUmVjb3Jkc1JlbW92ZWRXaXRob3V0VUks
ICIgfSIpOwotICAgIAotICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gSlNWYWx1ZU1ha2VGcm9tSlNP
TlN0cmluZyhtYWluRnJhbWVKU0NvbnRleHQoKSwgY3JlYXRlSlNTdHJpbmcoc3RyaW5nLnV0Zjgo
KS5kYXRhKCkpLmdldCgpKTsKLQotICAgIGNhbGxUZXN0UnVubmVyQ2FsbGJhY2soU3RhdGlzdGlj
c0RpZFJ1blRlbGVtZXRyeUNhbGxiYWNrSUQsIDEsICZyZXN1bHQpOwotfQotCiBib29sIFRlc3RS
dW5uZXI6OnN0YXRpc3RpY3NOb3RpZnlPYnNlcnZlcigpCiB7CiAgICAgcmV0dXJuIEluamVjdGVk
QnVuZGxlOjpzaW5nbGV0b24oKS5zdGF0aXN0aWNzTm90aWZ5T2JzZXJ2ZXIoKTsKQEAgLTE1ODgs
MTEgKzE1NzMsNiBAQCB2b2lkIFRlc3RSdW5uZXI6OnN0YXRpc3RpY3NDYWxsRGlkU2V0QmxvY2tD
b29raWVzRm9ySG9zdENhbGxiYWNrKCkKICAgICBjYWxsVGVzdFJ1bm5lckNhbGxiYWNrKFN0YXRp
c3RpY3NEaWRTZXRCbG9ja0Nvb2tpZXNGb3JIb3N0Q2FsbGJhY2tJRCk7CiB9CiAKLXZvaWQgVGVz
dFJ1bm5lcjo6c3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSgpCi17Ci0gICAgcG9zdFN5bmNocm9u
b3VzTWVzc2FnZSgiU3RhdGlzdGljc1N1Ym1pdFRlbGVtZXRyeSIpOwotfQotCiB2b2lkIFRlc3RS
dW5uZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dlcmVTY2FubmVk
KGJvb2wgdmFsdWUpCiB7CiAgICAgcG9zdFN5bmNocm9ub3VzTWVzc2FnZSgiU3RhdGlzdGljc05v
dGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQiLCB2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL1Rlc3RSdW5uZXIuaCBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCmluZGV4IGI2
MTQxY2U3N2I2ODdjNDU5YThlODVkNDA3YTA0NDYyYzcyMTlhNzcuLjhmYmNkZjk3ZmU2Yjg2MTk0
NjBjODM3MDJhMTZkNzEyNTVlOTA5ZGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGVzdFJ1bm5lci5oCkBAIC0zODgsMTUgKzM4OCwxMiBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1N0YXRpc3RpY3NFcGhlbWVyYWwoKTsKICAgICB2b2lkIGluc3RhbGxT
dGF0aXN0aWNzRGlkTW9kaWZ5RGF0YVJlY29yZHNDYWxsYmFjayhKU1ZhbHVlUmVmIGNhbGxiYWNr
KTsKICAgICB2b2lkIGluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2so
SlNWYWx1ZVJlZiBjYWxsYmFjayk7Ci0gICAgdm9pZCBpbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRl
bGVtZXRyeUNhbGxiYWNrKEpTVmFsdWVSZWYgY2FsbGJhY2spOwogICAgIHZvaWQgc3RhdGlzdGlj
c0RpZE1vZGlmeURhdGFSZWNvcmRzQ2FsbGJhY2soKTsKICAgICB2b2lkIHN0YXRpc3RpY3NEaWRT
Y2FuRGF0YVJlY29yZHNDYWxsYmFjaygpOwotICAgIHZvaWQgc3RhdGlzdGljc0RpZFJ1blRlbGVt
ZXRyeUNhbGxiYWNrKHVuc2lnbmVkIG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzLCB1bnNpZ25l
ZCBudW1iZXJPZlByZXZhbGVudFJlc291cmNlc1dpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVk
IG51bWJlck9mUHJldmFsZW50UmVzb3VyY2VzV2l0aG91dFVzZXJJbnRlcmFjdGlvbiwgdW5zaWdu
ZWQgdG9wUHJldmFsZW50UmVzb3VyY2VXaXRoVXNlckludGVyYWN0aW9uRGF5c1NpbmNlVXNlcklu
dGVyYWN0aW9uLCB1bnNpZ25lZCBtZWRpYW5EYXlzU2luY2VVc2VySW50ZXJhY3Rpb25QcmV2YWxl
bnRSZXNvdXJjZVdpdGhVc2VySW50ZXJhY3Rpb24sIHVuc2lnbmVkIHRvcDNOdW1iZXJPZlByZXZh
bGVudFJlc291cmNlc1dpdGhVSSwgdW5zaWduZWQgdG9wM01lZGlhblN1YkZyYW1lV2l0aG91dFVJ
LCB1bnNpZ25lZCB0b3AzTWVkaWFuU3ViUmVzb3VyY2VXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNN
ZWRpYW5VbmlxdWVSZWRpcmVjdHNXaXRob3V0VUksIHVuc2lnbmVkIHRvcDNNZWRpYW5EYXRhUmVj
b3Jkc1JlbW92ZWRXaXRob3V0VUkpOwogICAgIGJvb2wgc3RhdGlzdGljc05vdGlmeU9ic2VydmVy
KCk7CiAgICAgdm9pZCBzdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3Jkcygp
OwogICAgIHZvaWQgc3RhdGlzdGljc1VwZGF0ZUNvb2tpZUJsb2NraW5nKEpTVmFsdWVSZWYgY29t
cGxldGlvbkhhbmRsZXIpOwogICAgIHZvaWQgc3RhdGlzdGljc0NhbGxEaWRTZXRCbG9ja0Nvb2tp
ZXNGb3JIb3N0Q2FsbGJhY2soKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnko
KTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NEZWJ1Z01vZGUoYm9vbCB2YWx1ZSwgSlNWYWx1ZVJl
ZiBjb21wbGV0aW9uSGFuZGxlcik7CiAgICAgdm9pZCBzdGF0aXN0aWNzQ2FsbERpZFNldERlYnVn
TW9kZUNhbGxiYWNrKCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2VG
b3JEZWJ1Z01vZGUoSlNTdHJpbmdSZWYgaG9zdE5hbWUsIEpTVmFsdWVSZWYgY29tcGxldGlvbkhh
bmRsZXIpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAppbmRleCA1
ODE0MzY2NzEzZThiYmI5NGZhZDI1NzdmODk3NjEzZTkwNjcyOTFhLi40M2Y2YTI2MjQzMmYzYTY4
ZDFjYTEyNzMzZGYzNzNmYzM4MjY1NzY4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcApAQCAtMzIyNCwxMSArMzIyNCw2IEBAIHZvaWQgVGVzdENvbnRyb2xsZXI6
OnN0YXRpc3RpY3NVcGRhdGVDb29raWVCbG9ja2luZygpCiAgICAgbV9jdXJyZW50SW52b2NhdGlv
bi0+ZGlkU2V0QmxvY2tDb29raWVzRm9ySG9zdCgpOwogfQogCi12b2lkIFRlc3RDb250cm9sbGVy
OjpzdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KCkKLXsKLSAgICBXS1dlYnNpdGVEYXRhU3RvcmVT
dGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5KHdlYnNpdGVEYXRhU3RvcmUoKSk7Ci19Ci0KIHZvaWQg
VGVzdENvbnRyb2xsZXI6OnNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRhUmVjb3Jkc1dl
cmVTY2FubmVkKGJvb2wgdmFsdWUpCiB7CiAgICAgV0tXZWJzaXRlRGF0YVN0b3JlU2V0U3RhdGlz
dGljc05vdGlmeVBhZ2VzV2hlbkRhdGFSZWNvcmRzV2VyZVNjYW5uZWQod2Vic2l0ZURhdGFTdG9y
ZSgpLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250
cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmgKaW5kZXgg
MGI5ODE3NzA3ZDZhZjQ2NWFjNTk3ODE3OGE5MmE3OWM1MGQzNWRmNC4uYWY5MzU2MzFjZDY0ZTdk
YzQ1ZDYxN2Q3MmZkNTI0OGZjNmNjOTg0NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9UZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENv
bnRyb2xsZXIuaApAQCAtMjM4LDcgKzIzOCw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN0YXRp
c3RpY3NUaW1lVG9MaXZlVXNlckludGVyYWN0aW9uKGRvdWJsZSBzZWNvbmRzKTsKICAgICB2b2lk
IHN0YXRpc3RpY3NQcm9jZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKCk7CiAgICAgdm9pZCBz
dGF0aXN0aWNzVXBkYXRlQ29va2llQmxvY2tpbmcoKTsKLSAgICB2b2lkIHN0YXRpc3RpY3NTdWJt
aXRUZWxlbWV0cnkoKTsKICAgICB2b2lkIHNldFN0YXRpc3RpY3NOb3RpZnlQYWdlc1doZW5EYXRh
UmVjb3Jkc1dlcmVTY2FubmVkKGJvb2wpOwogICAgIHZvaWQgc2V0U3RhdGlzdGljc0lzUnVubmlu
Z1Rlc3QoYm9vbCk7CiAgICAgdm9pZCBzZXRTdGF0aXN0aWNzU2hvdWxkQ2xhc3NpZnlSZXNvdXJj
ZXNCZWZvcmVEYXRhUmVjb3Jkc1JlbW92YWwoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
VGVzdEludm9jYXRpb24uY3BwCmluZGV4IDk1NTk5ZWI3YmVmYWZjYzQyNmJmMTRhMzNhMmVhNGQ2
ZTI5NjcxMTguLjE0YzA0ZWQxZmE5Mzk0ZjU3MmY2NDlhOTFiNDdlZmIyMDZlZjg1NGUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMTQzLDExICsxMTQz
LDYgQEAgV0tSZXRhaW5QdHI8V0tUeXBlUmVmPiBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZVN5
bmNocm9ub3VzTWVzc2FnZUZyb21JbmplY3RlZEIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCi0gICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUs
ICJTdGF0aXN0aWNzU3VibWl0VGVsZW1ldHJ5IikpIHsKLSAgICAgICAgVGVzdENvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLnN0YXRpc3RpY3NTdWJtaXRUZWxlbWV0cnkoKTsKLSAgICAgICAgcmV0dXJu
IG51bGxwdHI7Ci0gICAgfQotCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmco
bWVzc2FnZU5hbWUsICJTdGF0aXN0aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nh
bm5lZCIpKSB7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaW5nbGV0b24oKS5zZXRTdGF0aXN0
aWNzTm90aWZ5UGFnZXNXaGVuRGF0YVJlY29yZHNXZXJlU2Nhbm5lZChib29sZWFuVmFsdWUobWVz
c2FnZUJvZHkpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWMxMzBiNTExMzI0
YWExYmY0ZGNjZDk4NWU1NDI0MjcyYjc2MmRkMC4uOGNhOWRmMWIxNWVjZTkwMjkzOWQwMDM0Y2Q2
OTE0MzhiMTY4ODkxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEwLTEzICBLYXRlIENo
ZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzIHRlbGVtZXRyeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NjY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82OTc0
ODk4OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBS
ZW1vdmUgbGF5b3V0IHRlc3RzLgorCisgICAgICAgICogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVy
YXRpb24uaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0
aW9uczoKKwogMjAyMC0xMC0xMyAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW1Rlc3RpbmddIFJlbmFtZSB0ZXN0IGhlYWRlciBjb21tYW5kcyB0byBtYXRjaCBuYW1l
cyBpbiBXZWJQcmVmZXJlbmNlcyoueWFtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy90ZWxl
bWV0cnktZ2VuZXJhdGlvbi1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGM2NzA1NjAwYmNiNGUzYWI1OGQxMzIzNWM2MDE4MjlkMTM4NGE1ZGUuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRlc3RzIHRoYXQgdGVsZW1ldHJ5IGZv
ciBwcmV2YWxlbnQgcmVzb3VyY2VzIGlzIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgotCi1PbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVu
dCByZXNvdXJjZXMuCi1GQUlMIHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMgc2hv
dWxkIGJlIDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmlu
ZWQpLgotRkFJTCB0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRl
cmFjdGlvbiBzaG91bGQgYmUgMCAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0
eXBlIHVuZGVmaW5lZCkuCi1GQUlMIHRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFt
ZU9yaWdpbnMgc2hvdWxkIGJlIDAgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2Yg
dHlwZSB1bmRlZmluZWQpLgotUEFTUyBIb3N0cyBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNv
dXJjZXMuCi1GQUlMIHRlc3RSZXN1bHQudG90YWxQcmV2YWxlbnRSZXNvdXJjZXMgc2hvdWxkIGJl
IDQgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgot
RkFJTCB0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlv
biBzaG91bGQgYmUgMSAob2YgdHlwZSBudW1iZXIpLiBXYXMgdW5kZWZpbmVkIChvZiB0eXBlIHVu
ZGVmaW5lZCkuCi1GQUlMIHRlc3RSZXN1bHQudG9wM1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdp
bnMgc2hvdWxkIGJlIDQgKG9mIHR5cGUgbnVtYmVyKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1
bmRlZmluZWQpLgotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotU29tZSB0ZXN0cyBm
YWlsZWQuCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvdGVsZW1ldHJ5LWdl
bmVyYXRpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM1NTdlODIzOTg4
YjczYWM4ZTA0M2Y2N2ZkZWZlZDhkYzRmNzBkNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvdGVsZW1ldHJ5LWdlbmVyYXRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEy
MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPG1ldGEgY2hh
cnNldD0iVVRGLTgiPgotICAgIDx0aXRsZT5UZXN0IGZvciBUZWxlbWV0cnkgR2VuZXJhdGlvbjwv
dGl0bGU+Ci0gICAgPHNjcmlwdCBzcmM9Ii9qcy10ZXN0LXJlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3V0aWwuanMiPjwvc2NyaXB0Pgot
PC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHRl
bGVtZXRyeSBmb3IgcHJldmFsZW50IHJlc291cmNlcyBpcyBjYWxjdWxhdGVkIGNvcnJlY3RseS4i
KTsKLSAgICBqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKLQotICAgIGNvbnN0IHRvcEZyYW1lVXJsMSA9
ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgdG9wRnJhbWVVcmwyID0g
Imh0dHA6Ly8xMjcuMC4wLjI6ODAwMC90ZW1wIjsKLSAgICBjb25zdCB0b3BGcmFtZVVybDMgPSAi
aHR0cDovLzEyNy4wLjAuMzo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHRvcEZyYW1lVXJsNCA9ICJo
dHRwOi8vMTI3LjAuMC40OjgwMDAvdGVtcCI7Ci0gICAgY29uc3QgcHJldmFsZW50UmVzb3VyY2VV
cmwxID0gImh0dHA6Ly8xMjcuMC4xLjE6ODAwMC90ZW1wIjsKLSAgICBjb25zdCBwcmV2YWxlbnRS
ZXNvdXJjZVVybDIgPSAiaHR0cDovLzEyNy4wLjEuMjo4MDAwL3RlbXAiOwotICAgIGNvbnN0IHBy
ZXZhbGVudFJlc291cmNlVXJsMyA9ICJodHRwOi8vMTI3LjAuMS4zOjgwMDAvdGVtcCI7Ci0gICAg
Y29uc3QgcHJldmFsZW50UmVzb3VyY2VVcmw0ID0gImh0dHA6Ly8xMjcuMC4xLjQ6ODAwMC90ZW1w
IjsKLQotICAgIGZ1bmN0aW9uIGNoZWNrSW5zdWZmaWNpZW50Q2xhc3NpZmljYXRpb25BbmRDb250
aW51ZSgpIHsKLSAgICAgICAgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHByZXZhbGVudFJlc291cmNlVXJsMSkpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgMSBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
LSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
cHJldmFsZW50UmVzb3VyY2VVcmwyKSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCAy
IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3RzIGNsYXNzaWZpZWQgYXMgcHJldmFs
ZW50IHJlc291cmNlcy4iKTsKLSAgICAgICAgICAgIHJ1blRlbGVtZXRyeUFuZENvbnRpbnVlKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBjaGVja1N1ZmZpY2llbnRDbGFzc2lm
aWNhdGlvbkFuZENvbnRpbnVlKCkgewotICAgICAgICBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0
aWNzUHJldmFsZW50UmVzb3VyY2UocHJldmFsZW50UmVzb3VyY2VVcmwxKSkgewotICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiSG9zdCAxIGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50
IHJlc291cmNlLiIpOwotICAgICAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNo
SlNUZXN0KTsKLSAgICAgICAgfSBlbHNlIGlmICghdGVzdFJ1bm5lci5pc1N0YXRpc3RpY3NQcmV2
YWxlbnRSZXNvdXJjZShwcmV2YWxlbnRSZXNvdXJjZVVybDIpKSB7Ci0gICAgICAgICAgICB0ZXN0
RmFpbGVkKCJIb3N0IDIgZGlkIG5vdCBnZXQgY2xhc3NpZmllZCBhcyBwcmV2YWxlbnQgcmVzb3Vy
Y2UuIik7Ci0gICAgICAgICAgICBzZXRFbmFibGVGZWF0dXJlKGZhbHNlLCBmaW5pc2hKU1Rlc3Qp
OwotICAgICAgICB9IGVsc2UgaWYgKCF0ZXN0UnVubmVyLmlzU3RhdGlzdGljc1ByZXZhbGVudFJl
c291cmNlKHByZXZhbGVudFJlc291cmNlVXJsMykpIHsKLSAgICAgICAgICAgIHRlc3RGYWlsZWQo
Ikhvc3QgMyBkaWQgbm90IGdldCBjbGFzc2lmaWVkIGFzIHByZXZhbGVudCByZXNvdXJjZS4iKTsK
LSAgICAgICAgICAgIHNldEVuYWJsZUZlYXR1cmUoZmFsc2UsIGZpbmlzaEpTVGVzdCk7Ci0gICAg
ICAgIH0gZWxzZSBpZiAoIXRlc3RSdW5uZXIuaXNTdGF0aXN0aWNzUHJldmFsZW50UmVzb3VyY2Uo
cHJldmFsZW50UmVzb3VyY2VVcmw0KSkgewotICAgICAgICAgICAgdGVzdEZhaWxlZCgiSG9zdCA0
IGRpZCBub3QgZ2V0IGNsYXNzaWZpZWQgYXMgcHJldmFsZW50IHJlc291cmNlLiIpOwotICAgICAg
ICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIHRlc3RQYXNzZWQoIkhvc3RzIGNsYXNzaWZpZWQgYXMgcHJldmFs
ZW50IHJlc291cmNlcy4iKTsKLSAgICAgICAgICAgIHJ1blRlbGVtZXRyeUFuZENvbnRpbnVlKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBtYWtlVXJsUHJldmFsZW50KHByZXZh
bGVudFJlc291cmNlVXJsKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YmZy
YW1lVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwx
KTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3ViZnJhbWVVbmRlclRvcEZyYW1l
T3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDIpOwotICAgICAgICB0ZXN0
UnVubmVyLnNldFN0YXRpc3RpY3NTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW4ocHJldmFsZW50
UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMyk7Ci0gICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlz
dGljc1N1YmZyYW1lVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9w
RnJhbWVVcmw0KTsKLQotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJj
ZVVuaXF1ZVJlZGlyZWN0VG8ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMSk7Ci0g
ICAgICAgIHRlc3RSdW5uZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5pcXVlUmVkaXJlY3RU
byhwcmV2YWxlbnRSZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwyKTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmlxdWVSZWRpcmVjdFRvKHByZXZhbGVudFJlc291
cmNlVXJsLCB0b3BGcmFtZVVybDMpOwotICAgICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NT
dWJyZXNvdXJjZVVuaXF1ZVJlZGlyZWN0VG8ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1l
VXJsNCk7Ci0KLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0aWNzU3VicmVzb3VyY2VVbmRl
clRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0b3BGcmFtZVVybDEpOwotICAg
ICAgICB0ZXN0UnVubmVyLnNldFN0YXRpc3RpY3NTdWJyZXNvdXJjZVVuZGVyVG9wRnJhbWVPcmln
aW4ocHJldmFsZW50UmVzb3VyY2VVcmwsIHRvcEZyYW1lVXJsMik7Ci0gICAgICAgIHRlc3RSdW5u
ZXIuc2V0U3RhdGlzdGljc1N1YnJlc291cmNlVW5kZXJUb3BGcmFtZU9yaWdpbihwcmV2YWxlbnRS
ZXNvdXJjZVVybCwgdG9wRnJhbWVVcmwzKTsKLSAgICAgICAgdGVzdFJ1bm5lci5zZXRTdGF0aXN0
aWNzU3VicmVzb3VyY2VVbmRlclRvcEZyYW1lT3JpZ2luKHByZXZhbGVudFJlc291cmNlVXJsLCB0
b3BGcmFtZVVybDQpOwotICAgIH0KLQotICAgIGZ1bmN0aW9uIHNldFVwSW5zdWZmaWNpZW50U3Rh
dGlzdGljc0FuZENvbnRpbnVlKCkgewotICAgICAgICBtYWtlVXJsUHJldmFsZW50KHByZXZhbGVu
dFJlc291cmNlVXJsMSk7Ci0gICAgICAgIG1ha2VVcmxQcmV2YWxlbnQocHJldmFsZW50UmVzb3Vy
Y2VVcmwyKTsKLQotICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0aXN0aWNzRGlkU2NhbkRh
dGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tJbnN1ZmZpY2llbnRDbGFzc2lmaWNhdGlvbkFuZENvbnRp
bnVlKTsKLSAgICAgICAgdGVzdFJ1bm5lci5pbnN0YWxsU3RhdGlzdGljc0RpZFJ1blRlbGVtZXRy
eUNhbGxiYWNrKGNoZWNrSW5zdWZmaWNpZW50VGVsZW1ldHJ5KTsKLSAgICAgICAgdGVzdFJ1bm5l
ci5zdGF0aXN0aWNzUHJvY2Vzc1N0YXRpc3RpY3NBbmREYXRhUmVjb3JkcygpOwotICAgIH0KLQot
ICAgIGZ1bmN0aW9uIHNldFVwU3VmZmljaWVudFN0YXRpc3RpY3NBbmRDb250aW51ZSgpIHsKLSAg
ICAgICAgbWFrZVVybFByZXZhbGVudChwcmV2YWxlbnRSZXNvdXJjZVVybDMpOwotICAgICAgICBt
YWtlVXJsUHJldmFsZW50KHByZXZhbGVudFJlc291cmNlVXJsNCk7Ci0KLSAgICAgICAgdGVzdFJ1
bm5lci5zZXRTdGF0aXN0aWNzSGFzSGFkVXNlckludGVyYWN0aW9uKHByZXZhbGVudFJlc291cmNl
VXJsNCwgdHJ1ZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxT
dGF0aXN0aWNzRGlkU2NhbkRhdGFSZWNvcmRzQ2FsbGJhY2soY2hlY2tTdWZmaWNpZW50Q2xhc3Np
ZmljYXRpb25BbmRDb250aW51ZSk7Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLmluc3RhbGxTdGF0
aXN0aWNzRGlkUnVuVGVsZW1ldHJ5Q2FsbGJhY2soY2hlY2tTdWZmaWNpZW50VGVsZW1ldHJ5KTsK
LSAgICAgICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1Byb2Nlc3NTdGF0aXN0aWNzQW5kRGF0
YVJlY29yZHMoKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcnVuVGVsZW1l
dHJ5QW5kQ29udGludWUoKSB7Ci0gICAgICAgIHRlc3RSdW5uZXIuc3RhdGlzdGljc1N1Ym1pdFRl
bGVtZXRyeSgpOwotICAgIH0KLQotICAgIHZhciB0ZXN0UmVzdWx0OwotICAgIGZ1bmN0aW9uIGNo
ZWNrSW5zdWZmaWNpZW50VGVsZW1ldHJ5KHJlc3VsdCkgewotICAgICAgICB0ZXN0UmVzdWx0ID0g
cmVzdWx0OwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZhbGVudFJlc291
cmNlcyIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFsUHJldmFsZW50
UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiIsICIwIik7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXN0UmVzdWx0LnRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIjAiKTsKLSAgICAg
ICAgc2V0VXBTdWZmaWNpZW50U3RhdGlzdGljc0FuZENvbnRpbnVlKCk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gY2hlY2tTdWZmaWNpZW50VGVsZW1ldHJ5KHJlc3VsdCkgewotICAgICAgICB0ZXN0
UmVzdWx0ID0gcmVzdWx0OwotICAgICAgICBzaG91bGRCZSgidGVzdFJlc3VsdC50b3RhbFByZXZh
bGVudFJlc291cmNlcyIsICI0Iik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXN0UmVzdWx0LnRvdGFs
UHJldmFsZW50UmVzb3VyY2VzV2l0aFVzZXJJbnRlcmFjdGlvbiIsICIxIik7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXN0UmVzdWx0LnRvcDNTdWJmcmFtZVVuZGVyVG9wRnJhbWVPcmlnaW5zIiwgIjQi
KTsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVyZShmYWxzZSwgZmluaXNoSlNUZXN0KTsKLSAgICB9
Ci0KLSAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICAgICAgc2V0RW5hYmxlRmVhdHVy
ZSh0cnVlLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHNldFVwSW5zdWZmaWNpZW50U3RhdGlz
dGljc0FuZENvbnRpbnVlKCk7Ci0gICAgICAgIH0pOwotICAgIH0KLTwvc2NyaXB0PgotPC9ib2R5
PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2syL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCA2NzM3ODM3ZTI4NjMyZTBkZDY1ZGI3YWUxYWZjZDFmMTQ5OGY0NGQyLi43ZDYyZWM1ZGY3MWNh
NGYwOWU5MzI0MTgwYTRiYWFlODc1MjJhMjRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93azIvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtNzIzLDcgKzcyMyw2IEBAIGh0dHAvdGVzdHMvcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy9jbGFzc2lmeS1hcy1wcmV2YWxlbnQtYmFzZWQtb24tdG9wLWZyYW1lLXJl
ZGlyCiBodHRwL3Rlc3RzL3Jlc291cmNlTG9hZFN0YXRpc3RpY3MvY2xhc3NpZnktYXMtcHJldmFs
ZW50LWJhc2VkLW9uLXRvcC1mcmFtZS11bmlxdWUtcmVkaXJlY3RzLXRvLmh0bWwgWyBQYXNzIF0K
IGh0dHAvdGVzdHMvcmVzb3VyY2VMb2FkU3RhdGlzdGljcy9jbGVhci1pbi1tZW1vcnktYW5kLXBl
cnNpc3RlbnQtc3RvcmUuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzL2dyYW5kZmF0aGVyaW5nLmh0bWwgWyBQYXNzIF0KLXdlYmtpdC5vcmcvYi8xODA3MDMg
aHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3RlbGVtZXRyeS1nZW5lcmF0aW9uLmh0
bWwgWyBQYXNzIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzL3By
dW5lLXN0YXRpc3RpY3MuaHRtbCBbIFBhc3MgXQogaHR0cC90ZXN0cy9yZXNvdXJjZUxvYWRTdGF0
aXN0aWNzIFsgUGFzcyBdCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>