<?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>229770</bug_id>
          
          <creation_ts>2021-09-01 14:25:26 -0700</creation_ts>
          <short_desc>Move PCM::Store ownership from WebResourceLoadStatisticsStore to PrivateClickMeasurementManager</short_desc>
          <delta_ts>2021-09-02 07:51:43 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229807</see_also>
          <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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1789481</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-01 14:25:26 -0700</bug_when>
    <thetext>Move PCM::Store ownership from WebResourceLoadStatisticsStore to PrivateClickMeasurementManager</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789483</commentid>
    <comment_count>1</comment_count>
      <attachid>437067</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-01 14:26:28 -0700</bug_when>
    <thetext>Created attachment 437067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789500</commentid>
    <comment_count>2</comment_count>
      <attachid>437067</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2021-09-01 15:06:02 -0700</bug_when>
    <thetext>Comment on attachment 437067
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=437067&amp;action=review

Looks good except for the recreateResourceLoadStatistics function that no longer deletes the PCM database, we should probably rename it and instead recreate the PCM store to simulate a browser restart.

&gt; Source/WebKit/NetworkProcess/NetworkSession.cpp:213
&gt;      destroyResourceLoadStatistics([this, weakThis = makeWeakPtr(*this), completionHandler = WTFMove(completionHandler)] () mutable {

This seems like it might cause layout test issues. I used recreateResourceLoadStatistics to simulate a session restart in https://bugs.webkit.org/show_bug.cgi?id=219134, specifically for http/tests/privateClickMeasurement/expired-ad-click-gets-removed-on-session-start.html and http/tests/privateClickMeasurement/expired-attribution-report-gets-sent-on-session-start.html. We might need to rename it to simulatePrivateClickMeasurementSessionRestart and instead recreate the PCM database to keep these tests doing what they are supposed to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789507</commentid>
    <comment_count>3</comment_count>
      <attachid>437074</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-09-01 15:34:32 -0700</bug_when>
    <thetext>Created attachment 437074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789523</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-01 16:26:57 -0700</bug_when>
    <thetext>Committed r281886 (241216@main): &lt;https://commits.webkit.org/241216@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 437074.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1789524</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-01 16:27:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/82650844&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437067</attachid>
            <date>2021-09-01 14:26:28 -0700</date>
            <delta_ts>2021-09-01 15:34:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229770-20210901142627.patch</filename>
            <type>text/plain</type>
            <size>38506</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDVkMGIwNWNiOWRlYzVkMDk0
YWFiZDdhODJjOGIyNTBjYTliNjExOTguLjJjNDgxMWFiMDQ0NWRmMDk4ZGQxMGE5MDczODkyMTY1
NDA2Njk0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBDTTo6
U3RvcmUgb3duZXJzaGlwIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRvIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgc3Rv
cmFnZSBpcyBzZXBhcmF0ZSBmcm9tIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3RvcmFnZSwgdGhl
eSBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQgZWFjaCBvdGhlci4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb1BDTURhdGFiYXNlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6cGNtU3RvcmVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpwY21TdG9yZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp+TmV0d29y
a1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
cmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OnByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6YXR0cmlidXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmF0
dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6U3RvcmU6OnBvc3RUYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
cG9zdFRhc2tSZXBseSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpTdG9yZTo6cG9zdFRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQ
Q006OlN0b3JlOjpwb3N0VGFza1JlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0
cmlidXRpb25SZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRXhwaXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6dG9TdHJpbmdGb3JUZXN0
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmUgY29uc3QpOgorCiAy
MDIxLTA4LTMxICBLYXRlIENoZW5leSAgPGthdGhlcmluZV9jaGVuZXlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFVzZSBhZnRlciBtb3ZlIGluIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5k
ZXggYzZjYTM5MGQ1N2UyZjg1MWY3NjI2Yjk2MDdlMmMzZWE2M2E0YWM5Yy4uNjYwMWVjMWU5MmMx
Mjg5MDFiNmQ2ZTRhN2Y2ZWIyNDBiOTcyMjcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC01NTEsNyArNTUxLDExIEBA
IHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9Q
Q01EYXRhYmFzZUlmTmVjZXNzYXJ5KCkKIAogICAgIGlmICghdW5hdHRyaWJ1dGVkLmlzRW1wdHko
KSB8fCAhYXR0cmlidXRlZC5pc0VtcHR5KCkpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIHVuYXR0cmlidXRlZCA9IHVuYXR0cmli
dXRlZC5pc29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJpYnV0ZWQuaXNvbGF0ZWRDb3B5
KCldICgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcGNtU3RvcmUgPSBzdG9yZS0+cHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpOworICAgICAgICAgICAgYXV0byogbmV0d29ya1Nl
c3Npb24gPSBzdG9yZS0+bmV0d29ya1Nlc3Npb24oKTsKKyAgICAgICAgICAgIGlmICghbmV0d29y
a1Nlc3Npb24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvJiBw
Y21TdG9yZSA9IG5ldHdvcmtTZXNzaW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0b3Jl
KCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6IFdURk1vdmUoYXR0cmlidXRlZCkpCiAg
ICAgICAgICAgICAgICAgcGNtU3RvcmUuaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RG
TW92ZShwY20pLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmli
dXRlZCk7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6IFdURk1vdmUodW5hdHRyaWJ1dGVk
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3Jl
LmgKaW5kZXggNGFiZTYyNjMyMGM5ZTI1NDc4NDRlYTMyNTg5NzgyY2JlOWI0MThiYy4uMzVhZTFl
NmM3MWY5Yjc2YWMwZWMwODE2ODBkOTA1MGVhZGJlMjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRh
YmFzZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVy
L1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTQ5LDExICs0OSw2IEBA
IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mU3RhdGlzdGljcyA9IDc7CiBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1BlclN0YXRpc3Rp
Yz4gYnVja2V0U2l6ZXMge3sgMSwgMywgMTAsIDUwLCAxMDAgfX07CiAKIGNsYXNzIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NNZW1vcnlTdG9yZTsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50
TWFuYWdlcjsKLQotdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50OjpTb3VyY2VTaXRlOwotdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBX
ZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNp
dGU7Ci11c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAKIHR5cGVkZWYgc3RkOjpwYWly
PFN0cmluZywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA5ZDMz
ZWNlY2I0Zjg3MWRhZGI5NWZkNGMwMmVlNWNlZjYxMjA1ODJmLi4xZmE2ZTM4MTc5M2I1ZDJiMGRh
ZDUwY2UxN2QwMWUyNzc1MjQwNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTUwLDIzICsxNTAsMTEgQEAgc3RhdGljIFJlZjxTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKICAgICByZXR1cm4gcXVl
dWUuZ2V0KCkuY29weVJlZigpOwogfQogCi1zdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5
KGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yYWdlRGlyZWN0b3J5KQotewotICAgIGlmIChzZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBo
ZW1lcmFsKCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAoIXByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBwcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7Ci0KLSAgICByZXR1cm4gcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKLX0KLQotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG5l
dHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNl
TG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQorV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nl
c3Npb24mIG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9z
dCwgUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiAgICAg
OiBtX25ldHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1f
c3RhdGlzdGljc1F1ZXVlKHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpKQogICAgICwgbV9kYWlseVRh
c2tzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpwZXJmb3JtRGFpbHlUYXNrcykKICAgICAsIG1faXNFcGhlbWVyYWwoaXNFcGhlbWVy
YWwpCi0gICAgLCBtX3BjbVN0b3JlKFBDTTo6U3RvcmU6OmNyZWF0ZShwY21TdG9yZURpcmVjdG9y
eShuZXR3b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgUkVMRUFTRV9BU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0xOTgsOSArMTg2LDkgQEAgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKICAg
ICBSRUxFQVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOwogfQogCi1SZWY8V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNy
ZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFz
dXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVy
YWwgaXNFcGhlbWVyYWwpCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29y
a1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
U2hvdWxkSW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29y
a1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgaXNFcGhl
bWVyYWwpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmUobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rvcnks
IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CiB9CiAKIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjEzLDcgKzIwMSw2
IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29y
a1Nlc3Npb24oQ29tcGxldGlvbkhhbmRsZXI8CiAKICAgICBtX25ldHdvcmtTZXNzaW9uID0gbnVs
bHB0cjsKICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFtjYWxsYmFja0Fn
Z3JlZ2F0b3JdIHsgfSk7Ci0gICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsb3Nl
KFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIGlubGluZSB2b2lkIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFz
aykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9X
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAx
YjkyMzJlYjdmNWRlZWM3MjIzODkyNWJiZjQzM2M0OTY0NGY2MjBlLi5lYzFkZjZlYmMwZTlhMTUw
ODg4NjRiYzJhMTExYWI0MmJkZDIxMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2lu
Y2x1ZGUgIlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdl
QWNjZXNzU3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMzgsNyArMzcsNiBAQAogI2luY2x1ZGUgPFdl
YkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFn
ZVNlc3Npb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVk
ZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2Vy
dmVyLmg+CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC02Niw3ICs2NCw2
IEBAIGNsYXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOwogY2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLWVudW0g
Y2xhc3MgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOwogZW51
bSBjbGFzcyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBT
aG91bGRJbmNsdWRlTG9jYWxob3N0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgRW5h
YmxlUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA6IGJvb2wgeyBObywgWWVzIH07CkBA
IC0xMDksNyArMTA2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NTY29wZSA9
IFdlYkNvcmU6OlN0b3JhZ2VBY2Nlc3NTY29wZTsKICAgICB1c2luZyBSZXF1ZXN0U3RvcmFnZUFj
Y2Vzc1Jlc3VsdCA9IFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0OwogCi0gICAg
c3RhdGljIFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3Jr
U2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwg
Y29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNo
b3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFs
KTsKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRl
KE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJ
c0VwaGVtZXJhbCk7CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAK
QEAgLTI0MCw5ICsyMzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0
IHsgcmV0dXJuIG1faXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
czo6SXNFcGhlbWVyYWw6OlllczsgfTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNG
b3JUZXN0aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVy
YXRpbmdEYXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxl
ZEZvckFsbEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogCi0gICAgUENNOjpTdG9yZSYgcHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZSgpIHsgcmV0dXJuIG1fcGNtU3RvcmUuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAg
ZXhwbGljaXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwg
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2Vi
Q29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOworICAgIGV4cGxpY2l0
IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0
cmluZyYsIFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRp
c3RpY3M6OklzRXBoZW1lcmFsKTsKIAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RUYXNrUmVwbHkoV1RGOjpGdW5jdGlvbjx2
b2lkKCk+JiYpOwpAQCAtMjc3LDggKzI3Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1Nj
aGVkdWxlZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAKICAgICBib29sIG1fZmlyc3ROZXR3b3Jr
UHJvY2Vzc0NyZWF0ZWQgeyBmYWxzZSB9OwotICAgIAotICAgIFJlZjxQQ006OlN0b3JlPiBtX3Bj
bVN0b3JlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCmluZGV4IDRlMGM1NDQyMGE3ZjY5ZDg3
NjNmOTU1Nzg0ZTQyNDkzMTdlZTEzMWIuLjg0YzYzNjdhMzkyNGVjMGNkY2E0ZGRhMWY2MTQ1OTA4
M2IzZWZmYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Nlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nl
c3Npb24uY3BwCkBAIC04MCw2ICs4MCwxNyBAQCBOZXR3b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdv
cmtTZXNzaW9uOjpuZXR3b3JrU3RvcmFnZVNlc3Npb24oKSBjb25zdAogICAgIHJldHVybiBzdG9y
YWdlU2Vzc2lvbjsKIH0KIAorc3RhdGljIFN0cmluZyBwY21TdG9yZURpcmVjdG9yeShjb25zdCBO
ZXR3b3JrU2Vzc2lvbiYgc2Vzc2lvbiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5LCBjb25zdCBTdHJpbmcmIHByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFn
ZURpcmVjdG9yeSkKK3sKKyAgICBpZiAoc2Vzc2lvbi5zZXNzaW9uSUQoKS5pc0VwaGVtZXJhbCgp
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgaWYgKCFwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5OworCisgICAgcmV0dXJuIHJlc291cmNlTG9hZFN0
YXRpc3RpY3NEaXJlY3Rvcnk7Cit9CisKIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihO
ZXR3b3JrUHJvY2VzcyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIDogbV9zZXNzaW9uSUQocGFyYW1ldGVycy5z
ZXNzaW9uSUQpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQpAQCAtMTI4
LDcgKzEzOSw3IEBAIE5ldHdvcmtTZXNzaW9uOjpOZXR3b3JrU2Vzc2lvbihOZXR3b3JrUHJvY2Vz
cyYgbmV0d29ya1Byb2Nlc3MsIGNvbnN0IE5ldHdvcmtTZXNzCiAKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVk
KHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMuZW5hYmxlZCk7Ci0g
ICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyPigqdGhpcywgbmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lv
bklELCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGF1dG8mJiBsb2FkUGFyYW1ldGVy
cywgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgbV9wcml2YXRlQ2xpY2tNZWFzdXJl
bWVudCA9IG1ha2VVbmlxdWU8UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyPigqdGhpcywg
bmV0d29ya1Byb2Nlc3MsIHBhcmFtZXRlcnMuc2Vzc2lvbklELCBwY21TdG9yZURpcmVjdG9yeSgq
dGhpcywgcGFyYW1ldGVycy5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGFyYW1ldGVycy5kaXJlY3Rv
cnksIHBhcmFtZXRlcnMucmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhcmFtZXRlcnMucHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChhdXRvJiYgbG9hZFBhcmFtZXRlcnMsIGF1dG8mJiBjb21wbGV0aW9uSGFuZGxlcikg
ewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFJlc291cmNlRXJyb3IoUmVzb3VyY2VFcnJvcjo6VHlwZTo6Q2FuY2VsbGF0aW9uKSwg
eyB9LCB7IH0pOwogCkBAIC0xNDIsNiArMTUzLDcgQEAgTmV0d29ya1Nlc3Npb246On5OZXR3b3Jr
U2Vzc2lvbigpCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBkZXN0
cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbXSB7IH0pOwogI2VuZGlmCisgICAgcHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQoKS5zdG9yZSgpLmNsb3NlKFtdIHsgfSk7CiAgICAgZm9yIChhdXRvJiBs
b2FkZXIgOiBzdGQ6OmV4Y2hhbmdlKG1fa2VwdEFsaXZlTG9hZHMsIHsgfSkpCiAgICAgICAgIGxv
YWRlci0+YWJvcnQoKTsKIH0KQEAgLTE4NCw3ICsxOTYsNyBAQCB2b2lkIE5ldHdvcmtTZXNzaW9u
OjpzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29sIGVuYWJsZSkKICAgICBpZiAo
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0
ZSgqdGhpcywgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVDbGlj
a01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5S
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291
cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3Nob3VsZEluY2x1ZGVMb2NhbGhvc3RJblJlc291cmNl
TG9hZFN0YXRpc3RpY3MsIChtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpID8gUmVzb3VyY2VMb2Fk
U3RhdGlzdGljczo6SXNFcGhlbWVyYWw6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Oklz
RXBoZW1lcmFsOjpObykpOwogICAgIGlmICghbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSkKICAg
ICAgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURp
c2soW10geyB9KTsKIApAQCAtMjAxLDcgKzIxMyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb246OnJl
Y3JlYXRlUmVzb3VyY2VMb2FkU3RhdGlzdGljU3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
CiAgICAgZGVzdHJveVJlc291cmNlTG9hZFN0YXRpc3RpY3MoW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwotICAgICAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSgqdGhpcywgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmFnZURpcmVjdG9yeSwgIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2Fk
U3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhl
bWVyYWw6Ok5vKSk7CisgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIG1fc2hvdWxkSW5jbHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVy
YWw6Ok5vKSk7CiAgICAgICAgIGZvcndhcmRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3Mo
KTsKICAgICAgICAgaWYgKCFtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpKQogICAgICAgICAgICAg
bV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wb3B1bGF0ZU1lbW9yeVN0b3JlRnJvbURpc2soV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dERhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggMjAz
MDEzNDczZTYwY2RjMTFjM2JkMGQzMmUzYjAxY2Y1ZTViNjg0OS4uYzM5OWI2NTBmY2Y4OGYyMjJh
YTU5NzFkOTAwMmRmMDgxMGFhYzcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0zMzcs
NyArMzM3LDcgQEAgVmVjdG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBEYXRh
YmFzZTo6YWxsQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXMKICAgICByZXR1cm4gYXR0cmlidXRp
b25zOwogfQogCi1TdHJpbmcgRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJp
bmdGb3JUZXN0aW5nKCkKK1N0cmluZyBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRU
b1N0cmluZ0ZvclRlc3RpbmcoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIGF1dG8gcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzID0gbV9kYXRh
YmFzZS5wcmVwYXJlU3RhdGVtZW50KCJTRUxFQ1QgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0
cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQxLCAoU0VMRUNUIENPVU5UKCop
IEZST00gQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQyIl9zKTsKQEAg
LTM4NCw3ICszODQsNyBAQCBTdHJpbmcgRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50
VG9TdHJpbmdGb3JUZXN0aW5nKCkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQog
Ci1TdHJpbmcgRGF0YWJhc2U6OmF0dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0aW5nKFdlYkNvcmU6
OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJp
YnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpCitTdHJpbmcgRGF0YWJhc2U6OmF0dHJpYnV0aW9u
VG9TdHJpbmdGb3JUZXN0aW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0byBzb3VyY2VT
aXRlRG9tYWluID0gZ2V0RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC5jb2x1bW5J
bnQoMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAppbmRleCBiYzlhODU4NzI4NzE5NmRlZDE0MDU0NWYx
ZjQ4ODk1MmQ3MzU4MDY3Li4wYzBmMTZhNDU5YTkxNWJjNDE4N2M4YTMwYzM1ZjVjNzU1YjcwMWMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50RGF0YWJhc2UuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhckV4cGlyZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwogICAgIHZvaWQgY2xlYXJT
ZW50QXR0cmlidXRpb24oV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29y
ZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwog
Ci0gICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCk7
CisgICAgU3RyaW5nIHByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCkg
Y29uc3Q7CiAgICAgdm9pZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiAgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIApAQCAtNjcsNyArNjcsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKSBmaW5hbDsKICAgICBzdGQ6
OnBhaXI8c3RkOjpvcHRpb25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4s
IHN0ZDo6b3B0aW9uYWw8QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gZmluZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJik7CiAgICAgdm9pZCByZW1vdmVVbmF0dHJpYnV0
ZWQoV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKLSAgICBTdHJpbmcgYXR0cmli
dXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUpOworICAgIFN0cmluZyBhdHRyaWJ1dGlv
blRvU3RyaW5nRm9yVGVzdGluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSkgY29uc3Q7CiAgICAgdm9pZCBtYXJrUmVwb3J0
QXNTZW50VG9EZXN0aW5hdGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7
CiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3Rp
bmF0aW9uRG9tYWluSUQpOwogICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxp
ZXN0VGltZVRvU2VuZD4sIHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1Nl
bmQ+PiBlYXJsaWVzdFRpbWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1
cmVtZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZh
dGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlLmNwcAppbmRleCAzZTJmZWU0NDE0MjgzYzQ1MGY4M2RmYjdm
NDY2ZWRkNjBhODJhYzllLi4zZTU5ZGRlMTI3ODQwZDc0NWZmNzljNGIzZTJlOWQ3ZjMwM2RmOTkx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01l
YXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yZS5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBTdG9yZTo6U3RvcmUoY29u
c3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSkKIAogU3RvcmU6On5TdG9yZSgpID0gZGVmYXVs
dDsKIAotdm9pZCBTdG9yZTo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lk
IFN0b3JlOjpwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykgY29uc3QKIHsKICAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUo
dGFzaykpOwogfQogCi12b2lkIFN0b3JlOjpwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rpb248dm9p
ZCgpPiYmIHJlcGx5KQordm9pZCBTdG9yZTo6cG9zdFRhc2tSZXBseShXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiByZXBseSkgY29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZShyZXBseSkpOwpAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgU3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNv
bnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtCiAgICAgfSk7CiB9CiAKLXZvaWQgU3Rv
cmU6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmU6OnBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoU3RyaW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBwb3N0VGFz
ayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBTdHJp
bmcgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmUuaAppbmRleCAwNTUxZWQwYWJkMWNhOGI3YjFjMzU0Njc2YWM0
NWYzMzMyMWE0YjlhLi44MzEzNTZkY2M2YzczOTE5NzZiZWQwYTg4ZGMyM2RjYmJjNWMxMjIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1
cmVtZW50U3RvcmUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYm
LCBXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKICAgICB2
b2lkIGF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRp
b25hbDxXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJl
bWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBE
ZWJ1Z0luZm8mJik+JiYpOwogCi0gICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3Ry
aW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOworICAgIHZv
aWQgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChTdHJpbmcpPiYmKSBjb25zdDsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0
ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB2b2lk
IG1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGlu
ZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogCkBAIC02OCw4ICs2OCw4IEBAIHB1Ymxp
YzoKIHByaXZhdGU6CiAgICAgU3RvcmUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7
CiAKLSAgICB2b2lkIHBvc3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBwb3N0
VGFza1JlcGx5KEZ1bmN0aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlv
bjx2b2lkKCk+JiYpIGNvbnN0OworICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lk
KCk+JiYpIGNvbnN0OwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlPiBtX2RhdGFiYXNl
OwogICAgIFJlZjxTdXNwZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmNwcAppbmRleCA3OTc0OGE2ODNlZjg3NjZiZjdjYzhiN2VhYjA2NDk1ZGJjOGY5
Yjk3Li5hZWYyZTg5N2VkN2QzZTc2MjQ4ZGViOThjN2VmZDQ5NmNmNjhkYTFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFu
YWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXIuY3BwCkBAIC01MywxMSArNTMsMTIgQEAgdXNpbmcgRXBoZW1lcmFs
U291cmNlTm9uY2UgPSBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9u
Y2U7CiAKIGNvbnN0ZXhwciBTZWNvbmRzIGRlYnVnTW9kZVNlY29uZHNVbnRpbFNlbmQgeyAxMF9z
IH07CiAKLVByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nl
c3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZv
aWQoTmV0d29ya0xvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtMb2FkQ2FsbGJhY2smJik+JiYgbmV0
d29ya0xvYWRGdW5jdGlvbikKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwg
TmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeSwgRnVuY3Rpb248dm9pZChOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMmJiwgTmV0d29ya0xvYWRDYWxsYmFjayYmKT4mJiBuZXR3b3JrTG9hZEZ1bmN0
aW9uKQogICAgIDogbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lcigqdGhpcywg
JlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJl
cXVlc3RzKQogICAgICwgbV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lv
bikpCiAgICAgLCBtX25ldHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9zZXNz
aW9uSUQoc2Vzc2lvbklEKQorICAgICwgbV9zdG9yZShQQ006OlN0b3JlOjpjcmVhdGUoc3RvcmFn
ZURpcmVjdG9yeSkpCiAgICAgLCBtX25ldHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92ZShuZXR3b3Jr
TG9hZEZ1bmN0aW9uKSkKIHsKICAgICBBU1NFUlQobV9uZXR3b3JrTG9hZEZ1bmN0aW9uKTsKQEAg
LTI0OSwxMCArMjUwLDcgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omlu
c2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFByaXZhdGVDbGlja00KICAgICAgICAgbV9lcGhl
bWVyYWxNZWFzdXJlbWVudCA9IFdURk1vdmUobWVhc3VyZW1lbnQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGlm
IChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3Vy
Y2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFdURk1vdmUobWVhc3VyZW1lbnQpLCB0eXBlKTsKLSNlbmRpZgorICAgIHN0b3JlKCkuaW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOwog
fQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRp
b24oQXR0cmlidXRpb25UcmlnZ2VyRGF0YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0
IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVj
dFJlcXVlc3QpCkBAIC0yODUsNyArMjgzLDYgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dE1hbmFnZXI6OnN0YXJ0VGltZXIoU2Vjb25kcyBzZWNvbmRzKQogCiB2b2lkIFByaXZhdGVDbGlj
a01lYXN1cmVtZW50TWFuYWdlcjo6YXR0cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNp
dGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0
dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBhdHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewotI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTI5Nyw0MCArMjk0LDM3IEBAIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjphdHRyaWJ1dGUoY29uc3QgU291cmNlU2l0ZSYgc291cmNl
U2l0ZSwgY29uCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9w
dCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YSwgYXV0byBkZWJ1Z0luZm8pIHsKLSAgICAgICAgICAgIGlm
ICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBpZiAoIWF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgIHN0b3JlKCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoc291cmNlU2l0ZSwgZGVzdGluYXRpb25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dl
ckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9w
dCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YSwgYXV0byBkZWJ1Z0luZm8pIHsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghYXR0
cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICAgICAgaWYgKFVOTElLRUxZKGRlYnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBkZWJ1Z0luZm8ubWVzc2FnZXMpCi0gICAgICAgICAg
ICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vz
c2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZS5t
ZXNzYWdlTGV2ZWwsIG1lc3NhZ2UubWVzc2FnZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlm
IChVTkxJS0VMWShkZWJ1Z01vZGVFbmFibGVkKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8m
IG1lc3NhZ2UgOiBkZWJ1Z0luZm8ubWVzc2FnZXMpCisgICAgICAgICAgICAgICAgbV9uZXR3b3Jr
UHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29sZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3Vy
Y2U6OlByaXZhdGVDbGlja01lYXN1cmVtZW50LCBtZXNzYWdlLm1lc3NhZ2VMZXZlbCwgbWVzc2Fn
ZS5tZXNzYWdlKTsKKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYXR0cmlidXRpb25TZWNv
bmRzVW50aWxTZW5kRGF0YS52YWx1ZSgpLmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygp
KSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtaW5TZWNvbmRzVW50aWxTZW5kID0gYXR0cmlidXRp
b25TZWNvbmRzVW50aWxTZW5kRGF0YS52YWx1ZSgpLm1pblNlY29uZHNVbnRpbFNlbmQoKTsKKyAg
ICAgICAgaWYgKGF0dHJpYnV0aW9uU2Vjb25kc1VudGlsU2VuZERhdGEudmFsdWUoKS5oYXNWYWxp
ZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMoKSkgeworICAgICAgICAgICAgYXV0byBtaW5TZWNvbmRz
VW50aWxTZW5kID0gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YS52YWx1ZSgpLm1pblNl
Y29uZHNVbnRpbFNlbmQoKTsKIAotICAgICAgICAgICAgICAgIEFTU0VSVChtaW5TZWNvbmRzVW50
aWxTZW5kKTsKLSAgICAgICAgICAgICAgICBpZiAoIW1pblNlY29uZHNVbnRpbFNlbmQpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIEFTU0VSVChtaW5TZWNvbmRzVW50
aWxTZW5kKTsKKyAgICAgICAgICAgIGlmICghbWluU2Vjb25kc1VudGlsU2VuZCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBpZiAobV9maXJlUGVuZGluZ0F0dHJp
YnV0aW9uUmVxdWVzdHNUaW1lci5pc0FjdGl2ZSgpICYmIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlv
blJlcXVlc3RzVGltZXIubmV4dEZpcmVJbnRlcnZhbCgpIDwgKm1pblNlY29uZHNVbnRpbFNlbmQp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmIChtX2ZpcmVQZW5k
aW5nQXR0cmlidXRpb25SZXF1ZXN0c1RpbWVyLmlzQWN0aXZlKCkgJiYgbV9maXJlUGVuZGluZ0F0
dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5uZXh0RmlyZUludGVydmFsKCkgPCAqbWluU2Vjb25kc1Vu
dGlsU2VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewotICAgICAgICAgICAgICAgICAgICBtX25l
dHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2Fn
ZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCBtYWtl
U3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gU2V0dGluZyB0aW1lciBmb3IgZmly
aW5nIGF0dHJpYnV0aW9uIHJlcXVlc3QgdG8gdGhlIGRlYnVnIG1vZGUgdGltZW91dCBvZiAiX3Ms
IGRlYnVnTW9kZVNlY29uZHNVbnRpbFNlbmQuc2Vjb25kcygpLCAiIHNlY29uZHMgd2hlcmUgdGhl
IHJlZ3VsYXIgdGltZW91dCB3b3VsZCBoYXZlIGJlZW4gIl9zLCBtaW5TZWNvbmRzVW50aWxTZW5k
LnZhbHVlKCkuc2Vjb25kcygpLCAiIHNlY29uZHMuIl9zKSk7Ci0gICAgICAgICAgICAgICAgICAg
IG1pblNlY29uZHNVbnRpbFNlbmQgPSBkZWJ1Z01vZGVTZWNvbmRzVW50aWxTZW5kOwotICAgICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5i
cm9hZGNhc3RDb25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCBtYWtlU3RyaW5nKCJbUHJpdmF0
ZSBDbGljayBNZWFzdXJlbWVudF0gU2V0dGluZyB0aW1lciBmb3IgZmlyaW5nIGF0dHJpYnV0aW9u
IHJlcXVlc3QgdG8gdGhlIHRpbWVvdXQgb2YgIl9zLCBtaW5TZWNvbmRzVW50aWxTZW5kLnZhbHVl
KCkuc2Vjb25kcygpLCAiIHNlY29uZHMuIl9zKSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFko
ZGVidWdNb2RlRW5hYmxlZCgpKSkgeworICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3Mt
PmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csIG1ha2VTdHJpbmcoIltQcml2
YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTZXR0aW5nIHRpbWVyIGZvciBmaXJpbmcgYXR0cmlidXRp
b24gcmVxdWVzdCB0byB0aGUgZGVidWcgbW9kZSB0aW1lb3V0IG9mICJfcywgZGVidWdNb2RlU2Vj
b25kc1VudGlsU2VuZC5zZWNvbmRzKCksICIgc2Vjb25kcyB3aGVyZSB0aGUgcmVndWxhciB0aW1l
b3V0IHdvdWxkIGhhdmUgYmVlbiAiX3MsIG1pblNlY29uZHNVbnRpbFNlbmQudmFsdWUoKS5zZWNv
bmRzKCksICIgc2Vjb25kcy4iX3MpKTsKKyAgICAgICAgICAgICAgICBtaW5TZWNvbmRzVW50aWxT
ZW5kID0gZGVidWdNb2RlU2Vjb25kc1VudGlsU2VuZDsKKyAgICAgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1f
c2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2Fn
ZUxldmVsOjpMb2csIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTZXR0
aW5nIHRpbWVyIGZvciBmaXJpbmcgYXR0cmlidXRpb24gcmVxdWVzdCB0byB0aGUgdGltZW91dCBv
ZiAiX3MsIG1pblNlY29uZHNVbnRpbFNlbmQudmFsdWUoKS5zZWNvbmRzKCksICIgc2Vjb25kcy4i
X3MpKTsKIAotICAgICAgICAgICAgICAgIHN0YXJ0VGltZXIoKm1pblNlY29uZHNVbnRpbFNlbmQp
OwotICAgICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAg
IHN0YXJ0VGltZXIoKm1pblNlY29uZHNVbnRpbFNlbmQpOworICAgICAgICB9CisgICAgfSk7CiB9
CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJl
cXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uLCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJl
cG9ydEVuZHBvaW50KQpAQCAtMzk2LDI2ICszOTAsMTggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXI6OmZpcmVDb252ZXJzaW9uUmVxdWVzdEltcGwoY29uc3QgUHJpdmF0ZUNs
aWMKIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJp
YnV0aW9uKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYgc2VudENvbnZlcnNpb24sIFByaXZhdGVD
bGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQpCiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAg
ICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRv
KiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2Fk
U3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29u
dmVyc2lvbiksIGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwotI2VuZGlmCisgICAgc3RvcmUo
KS5jbGVhclNlbnRBdHRyaWJ1dGlvbihXVEZNb3ZlKHNlbnRDb252ZXJzaW9uKSwgYXR0cmlidXRp
b25SZXBvcnRFbmRwb2ludCk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHMoKQogewotI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3Jr
U2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpOwotICAgIGlmICghcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudChbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRv
JiYgYXR0cmlidXRpb25zKSB7CisgICAgc3RvcmUoKS5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQoW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byYm
IGF0dHJpYnV0aW9ucykgewogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBhdXRvIG5leHRUaW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsK
QEAgLTQ2NSw3ICs0NTEsNiBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKCkKICAgICAgICAgaWYgKG5leHRUaW1lVG9G
aXJlIDwgU2Vjb25kczo6aW5maW5pdHkoKSkKICAgICAgICAgICAgIHN0YXJ0VGltZXIobmV4dFRp
bWVUb0ZpcmUpOwogICAgIH0pOwotI2VuZGlmCiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpjbGVhcihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCkBAIC00NzQsNTMgKzQ1OSwzNSBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Y2xlYXIoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpbwog
ICAgIG1fZXBoZW1lcmFsTWVhc3VyZW1lbnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc1J1bm5p
bmdFcGhlbWVyYWxNZWFzdXJlbWVudFRlc3QgPSBmYWxzZTsKIAotI2lmIEVOQUJMRShSRVNPVVJD
RV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQot
ICAgICAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwotI2VuZGlmCisgICAgc3RvcmUoKS5jbGVhclByaXZhdGVDbGlja01lYXN1
cmVtZW50KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JS
ZWdpc3RyYWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgRU5BQkxFKFJF
U09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOwogCi0gICAgaWYgKGF1dG8qIHJlc291cmNl
TG9hZFN0YXRpc3RpY3MgPSBtX25ldHdvcmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KCkpCi0gICAgICAgIHJldHVybiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJh
YmxlRG9tYWluKGRvbWFpbiwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBzdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRGb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFy
RXhwaXJlZCgpCiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBp
ZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsK
LSNlbmRpZgorICAgIHN0b3JlKCkuY2xlYXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQo
KTsKIH0KIAogdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nRm9y
VGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIGNvbnN0CiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBp
ZiAoIWZlYXR1cmVFbmFibGVkKCkpIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8g
c3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9CisgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQg
ZGF0YS5cbiJfcyk7CiAKLSAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1f
bmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY29tcGxldGlvbkhh
bmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7
CisgICAgc3RvcmUoKS5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnRNYW5hZ2VyOjpzZXRUb2tlblB1YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYgdGVzdFVS
TCkKQEAgLTU0OCwxMyArNTE1LDEwIEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjpzZXRBdHRyaWJ1dGlvblJlcG9ydFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvCiAKIHZvaWQg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBp
cmVkRm9yVGVzdGluZygpCiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChh
dXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VM
b2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRl
Q2xpY2tNZWFzdXJlbWVudFN0b3JlKCkubWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01l
YXN1cmVtZW50QXNFeHBpcmVkRm9yVGVzdGluZygpOwotI2VuZGlmCisgICAgc3RvcmUoKS5tYXJr
QWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5n
KCk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRQQ01GcmF1
ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3Ry
aW5nJiYgc2VjcmV0VG9rZW4sIFN0cmluZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpCkBA
IC01NzYsMTggKzU0MCwxMCBAQCBib29sIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6
ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjptYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFmZWF0dXJl
RW5hYmxlZCgpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gY29t
cGxldGlvbkhhbmRsZXIoKTsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAg
IHJlc291cmNlTG9hZFN0YXRpc3RpY3MtPnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5t
YXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3Rpbmco
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2Vu
ZGlmCi0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBzdG9yZSgpLm1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyLmgKaW5kZXggZjQ5NTlkNWVhNGQ0NDcyNDRkODBhZWE4YzI0MjBmMDZmMjEwNzcy
OC4uMDc1YjMzNTk3YWUyNDVkM2VkMjdjYjJiYzVjYjRiNTc5MGExMDdhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50TWFuYWdlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrTG9h
ZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzcy5oIgorI2luY2x1ZGUgIlBy
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1ByaXZhdGVD
bGlja01lYXN1cmVtZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZWdpc3RyYWJsZURvbWFpbi5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgpAQCAtNTIsNyArNTMsNyBAQCBw
dWJsaWM6CiAgICAgdXNpbmcgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgPSBXZWJDb3JlOjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudDsKICAgICB1c2luZyBSZWdpc3RyYWJsZURvbWFpbiA9IFdlYkNv
cmU6OlJlZ2lzdHJhYmxlRG9tYWluOwogICAgIHVzaW5nIFNvdXJjZVNpdGUgPSBXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6U291cmNlU2l0ZTsKLSAgICBleHBsaWNpdCBQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrUHJvY2VzcyYs
IFBBTDo6U2Vzc2lvbklELCBGdW5jdGlvbjx2b2lkKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBO
ZXR3b3JrTG9hZENhbGxiYWNrJiYpPiYmKTsKKyAgICBleHBsaWNpdCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudE1hbmFnZXIoTmV0d29ya1Nlc3Npb24mLCBOZXR3b3JrUHJvY2VzcyYsIFBBTDo6U2Vz
c2lvbklELCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQoTmV0
d29ya0xvYWRQYXJhbWV0ZXJzJiYsIE5ldHdvcmtMb2FkQ2FsbGJhY2smJik+JiYpOwogCiAgICAg
dm9pZCBzdG9yZVVuYXR0cmlidXRlZChQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKICAgICB2
b2lkIGhhbmRsZUF0dHJpYnV0aW9uKEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgY29uc3QgVVJM
JiByZXF1ZXN0VVJMLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVx
dWVzdCk7CkBAIC02OSw2ICs3MCw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBDTUZyYXVkUHJl
dmVudGlvblZhbHVlc0ZvclRlc3RpbmcoU3RyaW5nJiYgdW5saW5rYWJsZVRva2VuLCBTdHJpbmcm
JiBzZWNyZXRUb2tlbiwgU3RyaW5nJiYgc2lnbmF0dXJlLCBTdHJpbmcmJiBrZXlJRCk7CiAgICAg
dm9pZCBzdGFydFRpbWVyKFNlY29uZHMpOwogCisgICAgUENNOjpTdG9yZSYgc3RvcmUoKSB7IHJl
dHVybiBtX3N0b3JlLmdldCgpOyB9CisgICAgY29uc3QgUENNOjpTdG9yZSYgc3RvcmUoKSBjb25z
dCB7IHJldHVybiBtX3N0b3JlLmdldCgpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBnZXRUb2tl
blB1YmxpY0tleShQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudDo6QXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OlBjbURhdGFDYXJyaWVkLCBGdW5jdGlvbjx2b2lkKFByaXZhdGVDbGlja01lYXN1cmVtZW50JiYg
YXR0cmlidXRpb24sIGNvbnN0IFN0cmluZyYgcHVibGljS2V5QmFzZTY0VVJMKT4mJik7CiAgICAg
dm9pZCBnZXRTaWduZWRVbmxpbmthYmxlVG9rZW4oUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJik7
CkBAIC05MSw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgV2Vha1B0cjxOZXR3b3JrU2Vzc2lvbj4g
bV9uZXR3b3JrU2Vzc2lvbjsKICAgICBSZWY8TmV0d29ya1Byb2Nlc3M+IG1fbmV0d29ya1Byb2Nl
c3M7CiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9uSUQ7CisgICAgUmVmPFBDTTo6U3RvcmU+
IG1fc3RvcmU7CiAgICAgRnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0
d29ya0xvYWRDYWxsYmFjayYmKT4gbV9uZXR3b3JrTG9hZEZ1bmN0aW9uOwogCiAgICAgc3RydWN0
IEF0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437074</attachid>
            <date>2021-09-01 15:34:32 -0700</date>
            <delta_ts>2021-09-01 16:26:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229770-20210901153431.patch</filename>
            <type>text/plain</type>
            <size>42121</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxODc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGVmNTNiN2NmNTJmMTk2YTQ2
MTMxMWZmNzc3MzFjZDExODczOWYwN2UuLmVjODA3ZTJkMTVlYjQ3YzlkNzliNWMwMmNiN2NkYzhk
YjUzZTJiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEtMDktMDEgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIFBDTTo6
U3RvcmUgb3duZXJzaGlwIGZyb20gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIHRvIFBy
aXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5NzcwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgTm93IHRoYXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQgc3Rv
cmFnZSBpcyBzZXBhcmF0ZSBmcm9tIFJlc291cmNlTG9hZFN0YXRpc3RpY3Mgc3RvcmFnZSwgdGhl
eSBkb24ndCBuZWVkIHRvIGtub3cgYWJvdXQgZWFjaCBvdGhlci4KKworICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9y
ZTo6bWlncmF0ZURhdGFUb1BDTURhdGFiYXNlSWZOZWNlc3NhcnkpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZTo6ZGlkRGVzdHJveU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6cGNtU3RvcmVEaXJlY3RvcnkpOiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0
OjpwY21TdG9yZURpcmVjdG9yeSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjpO
ZXR3b3JrU2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uOjp+TmV0d29y
a1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbjo6
cmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OnByaXZhdGVDbGlja01l
YXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENN
OjpEYXRhYmFzZTo6YXR0cmlidXRpb25Ub1N0cmluZ0ZvclRlc3RpbmcgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpQQ006OkRhdGFiYXNlOjpwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5n
Rm9yVGVzdGluZyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBDTTo6RGF0YWJhc2U6OmF0
dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0aW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERh
dGFiYXNlLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBD
TTo6U3RvcmU6OnBvc3RUYXNrIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UENNOjpTdG9yZTo6
cG9zdFRhc2tSZXBseSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlBDTTo6U3RvcmU6OnByaXZh
dGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6UENNOjpTdG9yZTo6cG9zdFRhc2spOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpQ
Q006OlN0b3JlOjpwb3N0VGFza1JlcGx5KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6UENN
OjpTdG9yZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcpOiBEZWxl
dGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Q
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cik6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6aW5z
ZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OmF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJTZW50QXR0cmlidXRpb24pOgorICAgICAg
ICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVQZW5kaW5nQXR0
cmlidXRpb25SZXF1ZXN0cyk6CisgICAgICAgIChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50TWFuYWdlcjo6Y2xlYXIpOgorICAgICAgICAoV2ViS2l0OjpQcml2YXRlQ2xpY2tNZWFzdXJl
bWVudE1hbmFnZXI6OmNsZWFyRm9yUmVnaXN0cmFibGVEb21haW4pOgorICAgICAgICAoV2ViS2l0
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRXhwaXJlZCk6CisgICAgICAg
IChXZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6dG9TdHJpbmdGb3JUZXN0
aW5nIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5h
Z2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZyk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6bWFya0F0dHJpYnV0ZWRQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudHNBc0V4cGlyZWRGb3JUZXN0aW5nKToKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaDoKKyAgICAgICAgKFdl
YktpdDo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZSk6CisgICAgICAgIChX
ZWJLaXQ6OlByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmUgY29uc3QpOgorCiAy
MDIxLTA5LTAxICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAg
W1dlYlJUQ10gTGVhayBvciBvdmVyLXJlbGVhc2Ugb2YgQ0ZQaXhlbEJ1ZmZlclJlZiByZXR1cm5l
ZCBmcm9tIHdlYnJ0Yzo6Y3JlYXRlUGl4ZWxCdWZmZXJGcm9tRnJhbWUoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNjkx
N2QwNmNkMDNjMzUzNDJmNjE4ODJjNWIwYjZjNmI2NWM1ZTZkMy4uZjE4MDdlZDg2ZTEzNmM4ZWU4
N2NjYTFlNzZiODk3NjY3NjZmNTUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCkBAIC01NTIsNyArNTUyLDExIEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6Om1pZ3JhdGVEYXRhVG9QQ01EYXRh
YmFzZUlmTmVjZXNzYXJ5KCkKIAogICAgIGlmICghdW5hdHRyaWJ1dGVkLmlzRW1wdHkoKSB8fCAh
YXR0cmlidXRlZC5pc0VtcHR5KCkpIHsKICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFtzdG9yZSA9IG1ha2VSZWYoc3RvcmUoKSksIHVuYXR0cmlidXRlZCA9IHVuYXR0cmlidXRlZC5p
c29sYXRlZENvcHkoKSwgYXR0cmlidXRlZCA9IGF0dHJpYnV0ZWQuaXNvbGF0ZWRDb3B5KCldICgp
IG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcGNtU3RvcmUgPSBzdG9yZS0+cHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRTdG9yZSgpOworICAgICAgICAgICAgYXV0byogbmV0d29ya1Nlc3Npb24g
PSBzdG9yZS0+bmV0d29ya1Nlc3Npb24oKTsKKyAgICAgICAgICAgIGlmICghbmV0d29ya1Nlc3Np
b24pCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBhdXRvJiBwY21TdG9y
ZSA9IG5ldHdvcmtTZXNzaW9uLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0b3JlKCk7CiAg
ICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6IFdURk1vdmUoYXR0cmlidXRlZCkpCiAgICAgICAg
ICAgICAgICAgcGNtU3RvcmUuaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShw
Y20pLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZTo6QXR0cmlidXRlZCk7
CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHBjbSA6IFdURk1vdmUodW5hdHRyaWJ1dGVkKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKaW5k
ZXggNGFiZTYyNjMyMGM5ZTI1NDc4NDRlYTMyNTg5NzgyY2JlOWI0MThiYy4uMzVhZTFlNmM3MWY5
Yjc2YWMwZWMwODE2ODBkOTA1MGVhZGJlMjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmgKQEAgLTQ5LDExICs0OSw2IEBAIHN0YXRp
YyBjb25zdGV4cHIgc2l6ZV90IG51bWJlck9mU3RhdGlzdGljcyA9IDc7CiBzdGF0aWMgY29uc3Rl
eHByIHN0ZDo6YXJyYXk8dW5zaWduZWQsIG51bWJlck9mQnVja2V0c1BlclN0YXRpc3RpYz4gYnVj
a2V0U2l6ZXMge3sgMSwgMywgMTAsIDUwLCAxMDAgfX07CiAKIGNsYXNzIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NNZW1vcnlTdG9yZTsKLWNsYXNzIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdl
cjsKLQotdXNpbmcgU291cmNlU2l0ZSA9IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50
OjpTb3VyY2VTaXRlOwotdXNpbmcgQXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGUgPSBXZWJDb3Jl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmlidXRpb25EZXN0aW5hdGlvblNpdGU7Ci11
c2luZyBBdHRyaWJ1dGlvblRyaWdnZXJEYXRhID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGE7CiAKIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmlu
Zywgc3RkOjpvcHRpb25hbDxTdHJpbmc+PiBUYWJsZUFuZEluZGV4UGFpcjsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNz
aWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCA5ZDMzZWNlY2I0
Zjg3MWRhZGI5NWZkNGMwMmVlNWNlZjYxMjA1ODJmLi4xZmE2ZTM4MTc5M2I1ZDJiMGRhZDUwY2Ux
N2QwMWUyNzc1MjQwNGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlLmNwcApAQCAtMTUwLDIzICsxNTAsMTEgQEAgc3RhdGljIFJlZjxTdXNwZW5kYWJs
ZVdvcmtRdWV1ZT4gc2hhcmVkU3RhdGlzdGljc1F1ZXVlKCkKICAgICByZXR1cm4gcXVldWUuZ2V0
KCkuY29weVJlZigpOwogfQogCi1zdGF0aWMgU3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0
IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
YWdlRGlyZWN0b3J5KQotewotICAgIGlmIChzZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFs
KCkpCi0gICAgICAgIHJldHVybiB7IH07Ci0KLSAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBwcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rvcnk7Ci0KLSAgICByZXR1cm4gcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeTsKLX0KLQotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24mIG5ldHdvcmtT
ZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNv
bnN0IFN0cmluZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5LCBTaG91
bGRJbmNsdWRlTG9jYWxob3N0IHNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0
YXRpc3RpY3M6OklzRXBoZW1lcmFsIGlzRXBoZW1lcmFsKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoTmV0d29ya1Nlc3Npb24m
IG5ldHdvcmtTZXNzaW9uLCBjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNFcGhlbWVyYWwpCiAgICAgOiBtX25l
dHdvcmtTZXNzaW9uKG1ha2VXZWFrUHRyKG5ldHdvcmtTZXNzaW9uKSkKICAgICAsIG1fc3RhdGlz
dGljc1F1ZXVlKHNoYXJlZFN0YXRpc3RpY3NRdWV1ZSgpKQogICAgICwgbV9kYWlseVRhc2tzVGlt
ZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpwZXJmb3JtRGFpbHlUYXNrcykKICAgICAsIG1faXNFcGhlbWVyYWwoaXNFcGhlbWVyYWwpCi0g
ICAgLCBtX3BjbVN0b3JlKFBDTTo6U3RvcmU6OmNyZWF0ZShwY21TdG9yZURpcmVjdG9yeShuZXR3
b3JrU2Vzc2lvbiwgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KSkpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOwogCkBAIC0xOTgsOSArMTg2LDkgQEAgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKICAgICBSRUxF
QVNFX0FTU0VSVCghbV9zdGF0aXN0aWNzU3RvcmUpOwogfQogCi1SZWY8V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShO
ZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Npb24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3QgU3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZEluY2x1ZGVMb2NhbGhvc3Qgc2hvdWxkSW5jbHVkZUxv
Y2FsaG9zdCwgV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwgaXNF
cGhlbWVyYWwpCitSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShOZXR3b3JrU2Vzc2lvbiYgbmV0d29ya1Nlc3Np
b24sIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgU2hvdWxk
SW5jbHVkZUxvY2FsaG9zdCBzaG91bGRJbmNsdWRlTG9jYWxob3N0LCBXZWJDb3JlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbCBpc0VwaGVtZXJhbCkKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUobmV0d29ya1Nlc3Np
b24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHByaXZhdGVDbGlja01lYXN1cmVt
ZW50U3RvcmFnZURpcmVjdG9yeSwgc2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgaXNFcGhlbWVyYWwp
KTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmUobmV0d29ya1Nlc3Npb24sIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIHNob3Vs
ZEluY2x1ZGVMb2NhbGhvc3QsIGlzRXBoZW1lcmFsKSk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Npb24oQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMjEzLDcgKzIwMSw2IEBAIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpkaWREZXN0cm95TmV0d29ya1Nlc3Np
b24oQ29tcGxldGlvbkhhbmRsZXI8CiAKICAgICBtX25ldHdvcmtTZXNzaW9uID0gbnVsbHB0cjsK
ICAgICBkZXN0cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7Ci0gICAgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsb3NlKFtjYWxs
YmFja0FnZ3JlZ2F0b3JdIHsgfSk7CiB9CiAKIGlubGluZSB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAppbmRleCAxYjkyMzJl
YjdmNWRlZWM3MjIzODkyNWJiZjQzM2M0OTY0NGY2MjBlLi5lYzFkZjZlYmMwZTlhMTUwODg4NjRi
YzJhMTExYWI0MmJkZDIxMWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL0NsYXNzaWZpZXIvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMu
aCIKICNpbmNsdWRlICJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiRW5jb2Rlci5oIgotI2luY2x1ZGUg
IlByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaCIKICNpbmNsdWRlICJTdG9yYWdlQWNjZXNz
U3RhdHVzLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5SWRlbnRpZmllci5oIgogI2luY2x1ZGUg
IldlYnNpdGVEYXRhVHlwZS5oIgpAQCAtMzgsNyArMzcsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
RnJhbWVJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9OZXR3b3JrU3RvcmFnZVNlc3Np
b24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VJZGVudGlmaWVyLmg+Ci0jaW5jbHVkZSA8V2Vi
Q29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVnaXN0
cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZE9ic2VydmVyLmg+
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CkBAIC02Niw3ICs2NCw2IEBAIGNs
YXNzIE5ldHdvcmtTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwog
Y2xhc3MgV2ViRnJhbWVQcm94eTsKIGNsYXNzIFdlYlByb2Nlc3NQcm94eTsKLWVudW0gY2xhc3Mg
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBdHRyaWJ1dGlvblR5cGUgOiBib29sOwogZW51bSBjbGFz
cyBTaG91bGRHcmFuZGZhdGhlclN0YXRpc3RpY3MgOiBib29sOwogZW51bSBjbGFzcyBTaG91bGRJ
bmNsdWRlTG9jYWxob3N0IDogYm9vbCB7IE5vLCBZZXMgfTsKIGVudW0gY2xhc3MgRW5hYmxlUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA6IGJvb2wgeyBObywgWWVzIH07CkBAIC0xMDks
NyArMTA2LDcgQEAgcHVibGljOgogICAgIHVzaW5nIFN0b3JhZ2VBY2Nlc3NTY29wZSA9IFdlYkNv
cmU6OlN0b3JhZ2VBY2Nlc3NTY29wZTsKICAgICB1c2luZyBSZXF1ZXN0U3RvcmFnZUFjY2Vzc1Jl
c3VsdCA9IFdlYkNvcmU6OlJlcXVlc3RTdG9yYWdlQWNjZXNzUmVzdWx0OwogCi0gICAgc3RhdGlj
IFJlZjxXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU+IGNyZWF0ZShOZXR3b3JrU2Vzc2lv
biYsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgY29uc3Qg
U3RyaW5nJiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIFNob3VsZElu
Y2x1ZGVMb2NhbGhvc3QsIFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsKTsKKyAg
ICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKE5ldHdv
cmtTZXNzaW9uJiwgY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5
LCBTaG91bGRJbmNsdWRlTG9jYWxob3N0LCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVt
ZXJhbCk7CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCk7CiAKQEAgLTI0
MCw5ICsyMzcsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VwaGVtZXJhbCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNFcGhlbWVyYWwgPT0gV2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNF
cGhlbWVyYWw6OlllczsgfTsKICAgICB2b2lkIGluc2VydEV4cGlyZWRTdGF0aXN0aWNGb3JUZXN0
aW5nKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiwgdW5zaWduZWQgbnVtYmVyT2ZPcGVyYXRpbmdE
YXlzUGFzc2VkLCBib29sIGhhZFVzZXJJbnRlcmFjdGlvbiwgYm9vbCBpc1NjaGVkdWxlZEZvckFs
bEJ1dENvb2tpZURhdGFSZW1vdmFsLCBib29sIGlzUHJldmFsZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogCi0gICAgUENNOjpTdG9yZSYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZSgpIHsgcmV0dXJuIG1fcGNtU3RvcmUuZ2V0KCk7IH0KIHByaXZhdGU6Ci0gICAgZXhwbGlj
aXQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKE5ldHdvcmtTZXNzaW9uJiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgU2hvdWxkSW5jbHVkZUxvY2FsaG9zdCwgV2ViQ29yZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWwpOworICAgIGV4cGxpY2l0IFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShOZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYs
IFNob3VsZEluY2x1ZGVMb2NhbGhvc3QsIFdlYkNvcmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M6
OklzRXBoZW1lcmFsKTsKIAogICAgIHZvaWQgcG9zdFRhc2soV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RUYXNrUmVwbHkoV1RGOjpGdW5jdGlvbjx2b2lkKCk+
JiYpOwpAQCAtMjc3LDggKzI3Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2hhc1NjaGVkdWxl
ZFByb2Nlc3NTdGF0cyB7IGZhbHNlIH07CiAKICAgICBib29sIG1fZmlyc3ROZXR3b3JrUHJvY2Vz
c0NyZWF0ZWQgeyBmYWxzZSB9OwotICAgIAotICAgIFJlZjxQQ006OlN0b3JlPiBtX3BjbVN0b3Jl
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDc0NmJkYzZlZmE5ODkyZDY1OGE4YThi
MWY3ZWMwYjZkM2UzYTZjNmUuLjc1OTMwOGFlNzcyYTkwODVkY2U4YjU5Mjk5M2ExMzk5NDY2ODgw
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC0yNTkzLDE1ICsyNTkzLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmZpcmVQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFRpbWVySW1tZWRpYXRlbHkoUEFMOjpTZXNzaW9uSUQKIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6c2ltdWxhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU2Vzc2lvblJl
c3RhcnQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKKyAgICAvLyBGSVhNRTogUmVuYW1lIHRoaXMgdG8gc2ltdWxhdGVQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudFNlc3Npb25SZXN0YXJ0LgogICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29y
a1Nlc3Npb24oc2Vzc2lvbklEKSkgewotICAgICAgICBzZXNzaW9uLT5yZWNyZWF0ZVJlc291cmNl
TG9hZFN0YXRpc3RpY1N0b3JlKFt0aGlzLCBzZXNzaW9uSUQsIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBzZXNzaW9u
LT5yZWNyZWF0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoW3RoaXMsIHNlc3Npb25JRCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBmaXJlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUaW1lckltbWVkaWF0
ZWx5KHNlc3Npb25JRCk7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSNlbmRpZgogICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Nlc3Npb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5jcHAKaW5kZXggNGUwYzU0NDIwYTdmNjlkODc2M2Y5NTU3ODRlNDI0OTMxN2VlMTMxYi4u
OGM4MmNjMTIwZWFmMDg3ODlhZjUwNWJmMTg5NDI4ZGNiZDRkNDM0NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKQEAgLTgwLDYgKzgwLDE3
IEBAIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiogTmV0d29ya1Nlc3Npb246Om5ldHdvcmtTdG9yYWdl
U2Vzc2lvbigpIGNvbnN0CiAgICAgcmV0dXJuIHN0b3JhZ2VTZXNzaW9uOwogfQogCitzdGF0aWMg
U3RyaW5nIHBjbVN0b3JlRGlyZWN0b3J5KGNvbnN0IE5ldHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBj
b25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGNvbnN0IFN0cmlu
ZyYgcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGlyZWN0b3J5KQoreworICAgIGlmIChz
ZXNzaW9uLnNlc3Npb25JRCgpLmlzRXBoZW1lcmFsKCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBpZiAoIXByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmFnZURpcmVjdG9yeS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3Rv
cnk7CisKKyAgICByZXR1cm4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKK30KKwog
TmV0d29ya1Nlc3Npb246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJv
Y2VzcywgY29uc3QgTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMp
CiAgICAgOiBtX3Nlc3Npb25JRChwYXJhbWV0ZXJzLnNlc3Npb25JRCkKICAgICAsIG1fbmV0d29y
a1Byb2Nlc3MobmV0d29ya1Byb2Nlc3MpCkBAIC0xMjgsNyArMTM5LDcgQEAgTmV0d29ya1Nlc3Np
b246Ok5ldHdvcmtTZXNzaW9uKE5ldHdvcmtQcm9jZXNzJiBuZXR3b3JrUHJvY2VzcywgY29uc3Qg
TmV0d29ya1Nlc3MKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQocGFyYW1ldGVycy5yZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGFyYW1ldGVycy5lbmFibGVkKTsKLSAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVt
ZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBu
ZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVycy5zZXNzaW9uSUQsIFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXSAoYXV0byYmIGxvYWRQYXJhbWV0ZXJzLCBhdXRvJiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKKyAgICBtX3ByaXZhdGVDbGlja01lYXN1cmVtZW50ID0gbWFrZVVuaXF1ZTxQcml2YXRl
Q2xpY2tNZWFzdXJlbWVudE1hbmFnZXI+KCp0aGlzLCBuZXR3b3JrUHJvY2VzcywgcGFyYW1ldGVy
cy5zZXNzaW9uSUQsIHBjbVN0b3JlRGlyZWN0b3J5KCp0aGlzLCBwYXJhbWV0ZXJzLnJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXJhbWV0ZXJzLmRpcmVjdG9yeSwgcGFyYW1ldGVycy5yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGFyYW1ldGVycy5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJl
Y3RvcnkpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGF1dG8mJiBsb2FkUGFyYW1l
dGVycywgYXV0byYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMp
CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoUmVzb3VyY2VFcnJvcihSZXNv
dXJjZUVycm9yOjpUeXBlOjpDYW5jZWxsYXRpb24pLCB7IH0sIHsgfSk7CiAKQEAgLTE0Miw2ICsx
NTMsNyBAQCBOZXR3b3JrU2Vzc2lvbjo6fk5ldHdvcmtTZXNzaW9uKCkKICNpZiBFTkFCTEUoUkVT
T1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGRlc3Ryb3lSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
KFtdIHsgfSk7CiAjZW5kaWYKKyAgICBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpLnN0b3JlKCku
Y2xvc2UoW10geyB9KTsKICAgICBmb3IgKGF1dG8mIGxvYWRlciA6IHN0ZDo6ZXhjaGFuZ2UobV9r
ZXB0QWxpdmVMb2FkcywgeyB9KSkKICAgICAgICAgbG9hZGVyLT5hYm9ydCgpOwogfQpAQCAtMTcw
LDYgKzE4MiwxMSBAQCB2b2lkIE5ldHdvcmtTZXNzaW9uOjppbnZhbGlkYXRlQW5kQ2FuY2VsKCkK
ICNlbmRpZgogfQogCit2b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVByaXZhdGVDbGlja01l
YXN1cmVtZW50U3RvcmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQoreworICAgIHByaXZhdGVDbGlja01lYXN1cmVtZW50KCkuZGVzdHJveVN0b3JlRm9yVGVz
dGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKICNpZiBFTkFCTEUoUkVTT1VS
Q0VfTE9BRF9TVEFUSVNUSUNTKQogdm9pZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFibGUpCiB7CkBAIC0xODQsNyArMjAxLDcgQEAgdm9p
ZCBOZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBl
bmFibGUpCiAgICAgaWYgKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjcmVhdGUoKnRoaXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9y
eSwgbV9wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JhZ2VEaXJlY3RvcnksIG1fc2hvdWxkSW5j
bHVkZUxvY2FsaG9zdEluUmVzb3VyY2VMb2FkU3RhdGlzdGljcywgKG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6WWVzIDogUmVz
b3VyY2VMb2FkU3RhdGlzdGljczo6SXNFcGhlbWVyYWw6Ok5vKSk7CisgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUoKnRo
aXMsIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgbV9zaG91bGRJbmNsdWRlTG9j
YWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwo
KSA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6OklzRXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8pKTsKICAgICBpZiAoIW1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpCiAgICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cG9wdWxhdGVN
ZW1vcnlTdG9yZUZyb21EaXNrKFtdIHsgfSk7CiAKQEAgLTE5NiwyMCArMjEzLDYgQEAgdm9pZCBO
ZXR3b3JrU2Vzc2lvbjo6c2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoYm9vbCBlbmFi
bGUpCiAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOwogfQogCi12
b2lkIE5ldHdvcmtTZXNzaW9uOjpyZWNyZWF0ZVJlc291cmNlTG9hZFN0YXRpc3RpY1N0b3JlKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBkZXN0
cm95UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewotICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKCp0aGlzLCBtX3Jlc291cmNlTG9h
ZFN0YXRpc3RpY3NEaXJlY3RvcnksIG1fcHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yYWdlRGly
ZWN0b3J5LCAgbV9zaG91bGRJbmNsdWRlTG9jYWxob3N0SW5SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
LCAobV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSA/IFJlc291cmNlTG9hZFN0YXRpc3RpY3M6Oklz
RXBoZW1lcmFsOjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzOjpJc0VwaGVtZXJhbDo6Tm8p
KTsKLSAgICAgICAgZm9yd2FyZFJlc291cmNlTG9hZFN0YXRpc3RpY3NTZXR0aW5ncygpOwotICAg
ICAgICBpZiAoIW1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpCi0gICAgICAgICAgICBtX3Jlc291
cmNlTG9hZFN0YXRpc3RpY3MtPnBvcHVsYXRlTWVtb3J5U3RvcmVGcm9tRGlzayhXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7Ci0gICAgfSk7Ci19Ci0KIHZvaWQgTmV0d29ya1Nlc3Npb246OmZvcndhcmRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU2V0dGluZ3MoKQogewogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcy0+c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShtX3RoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vz
c2lvbi5oCmluZGV4IGE2ZGNkMmEzZWJjZjE2ZmVhZWY1Mzg2OTIwMjllMGM4YzQ2MTIzMGIuLmZj
MjNmODA3MjlkMTBiZjZlMzk5YWI3OWEyZjZhMDIwNTBiOThhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmgKQEAgLTk0LDEwICs5NCwxMSBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZWdpc3Rlck5ldHdvcmtEYXRhVGFzayhOZXR3b3JrRGF0YVRhc2sm
KTsKICAgICB2b2lkIHVucmVnaXN0ZXJOZXR3b3JrRGF0YVRhc2soTmV0d29ya0RhdGFUYXNrJik7
CiAKKyAgICB2b2lkIHJlY3JlYXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZShDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElT
VElDUykKICAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUqIHJlc291cmNlTG9hZFN0
YXRpc3RpY3MoKSBjb25zdCB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MuZ2V0KCk7
IH0KICAgICB2b2lkIHNldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkKGJvb2wpOwotICAg
IHZvaWQgcmVjcmVhdGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNTdG9yZShDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYpOwogICAgIGJvb2wgaXNSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgp
IGNvbnN0OwogICAgIHZvaWQgbm90aWZ5UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Byb2Nlc3NlZCgp
OwogICAgIHZvaWQgZGVsZXRlQW5kUmVzdHJpY3RXZWJzaXRlRGF0YUZvclJlZ2lzdHJhYmxlRG9t
YWlucyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiwgUmVnaXN0cmFibGVEb21haW5zVG9EZWxl
dGVPclJlc3RyaWN0V2Vic2l0ZURhdGFGb3ImJiwgYm9vbCBzaG91bGROb3RpZnlQYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2ViQ29yZTo6UmVnaXN0cmFibGVEb21h
aW4+Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2
YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggOWIzOGFkZTQyZDBhZDdmMDFm
NTUzZjE0ZmU5ZGRkMzU1N2E1MTk3NS4uNTU4ZTNkNTg2M2JmMjJjNTI3YWNlNGQ1NDVjMzBhMjcx
N2YyZTc2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRl
Q2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1By
aXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0zMzgsNyArMzM4LDcgQEAgVmVj
dG9yPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50PiBEYXRhYmFzZTo6YWxsQXR0cmli
dXRlZFByaXZhdGVDbGlja01lYXMKICAgICByZXR1cm4gYXR0cmlidXRpb25zOwogfQogCi1TdHJp
bmcgRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCkK
K1N0cmluZyBEYXRhYmFzZTo6cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3Rp
bmcoKSBjb25zdAogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGF1dG8g
cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhRXhpc3RzID0gbV9kYXRhYmFzZS5wcmVwYXJlU3Rh
dGVtZW50KCJTRUxFQ1QgKFNFTEVDVCBDT1VOVCgqKSBGUk9NIFVuYXR0cmlidXRlZFByaXZhdGVD
bGlja01lYXN1cmVtZW50KSBhcyBjbnQxLCAoU0VMRUNUIENPVU5UKCopIEZST00gQXR0cmlidXRl
ZFByaXZhdGVDbGlja01lYXN1cmVtZW50KSBhcyBjbnQyIl9zKTsKQEAgLTM4NSw3ICszODUsNyBA
QCBTdHJpbmcgRGF0YWJhc2U6OnByaXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0
aW5nKCkKICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwogfQogCi1TdHJpbmcgRGF0YWJh
c2U6OmF0dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0aW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVu
dCYgc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRy
aWJ1dGlvblR5cGUpCitTdHJpbmcgRGF0YWJhc2U6OmF0dHJpYnV0aW9uVG9TdHJpbmdGb3JUZXN0
aW5nKFdlYkNvcmU6OlNRTGl0ZVN0YXRlbWVudCYgc3RhdGVtZW50LCBQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudEF0dHJpYnV0aW9uVHlwZSBhdHRyaWJ1dGlvblR5cGUpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgYXV0byBzb3VyY2VTaXRlRG9tYWluID0gZ2V0
RG9tYWluU3RyaW5nRnJvbURvbWFpbklEKHN0YXRlbWVudC5jb2x1bW5JbnQoMCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
RGF0YWJhc2UuaAppbmRleCA4ZTNkOGFmNzgzMDE4ZDhlZDI1ZDFiOTg3MWU3ODEwMjQ1YmZkNjNl
Li40ODBmMDczYzM1MjgzY2RkOWE0ODhmMDk5NDM2NWFkNjg2NGMwMjhlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0
YWJhc2UuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckV4cGlyZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCgpOwogICAgIHZvaWQgY2xlYXJTZW50QXR0cmlidXRpb24o
V2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpOwogCi0gICAgU3RyaW5nIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCk7CisgICAgU3RyaW5nIHBy
aXZhdGVDbGlja01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKCkgY29uc3Q7CiAgICAgdm9p
ZCBtYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JU
ZXN0aW5nKCk7CiAgICAgdm9pZCBtYXJrQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50
c0FzRXhwaXJlZEZvclRlc3RpbmcoKTsKIApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZGVzdHJveVN0YXRlbWVudHMoKSBmaW5hbDsKICAgICBzdGQ6OnBhaXI8c3RkOjpvcHRp
b25hbDxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudD4sIHN0ZDo6b3B0aW9uYWw8
QXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50Pj4gZmluZFByaXZhdGVDbGlja01lYXN1
cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50OjpTb3VyY2VTaXRl
JiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OkF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlJik7CiAgICAgdm9pZCByZW1vdmVVbmF0dHJpYnV0ZWQoV2ViQ29yZTo6UHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQmKTsKLSAgICBTdHJpbmcgYXR0cmlidXRpb25Ub1N0cmluZ0Zv
clRlc3RpbmcoV2ViQ29yZTo6U1FMaXRlU3RhdGVtZW50JiwgUHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRBdHRyaWJ1dGlvblR5cGUpOworICAgIFN0cmluZyBhdHRyaWJ1dGlvblRvU3RyaW5nRm9yVGVz
dGluZyhXZWJDb3JlOjpTUUxpdGVTdGF0ZW1lbnQmLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudEF0
dHJpYnV0aW9uVHlwZSkgY29uc3Q7CiAgICAgdm9pZCBtYXJrUmVwb3J0QXNTZW50VG9EZXN0aW5h
dGlvbihTb3VyY2VEb21haW5JRCwgRGVzdGluYXRpb25Eb21haW5JRCk7CiAgICAgdm9pZCBtYXJr
UmVwb3J0QXNTZW50VG9Tb3VyY2UoU291cmNlRG9tYWluSUQsIERlc3RpbmF0aW9uRG9tYWluSUQp
OwogICAgIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNvdXJjZUVhcmxpZXN0VGltZVRvU2VuZD4s
IHN0ZDo6b3B0aW9uYWw8RGVzdGluYXRpb25FYXJsaWVzdFRpbWVUb1NlbmQ+PiBlYXJsaWVzdFRp
bWVzVG9TZW5kKGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVtZW50Jik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVt
ZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dFN0b3JlLmNwcAppbmRleCAzZTJmZWU0NDE0MjgzYzQ1MGY4M2RmYjdmNDY2ZWRkNjBhODJhYzll
Li4zZTU5ZGRlMTI3ODQwZDc0NWZmNzljNGIzZTJlOWQ3ZjMwM2RmOTkxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZh
dGVDbGlja01lYXN1cmVtZW50U3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9y
ZS5jcHAKQEAgLTY3LDEzICs2NywxMyBAQCBTdG9yZTo6U3RvcmUoY29uc3QgU3RyaW5nJiBkYXRh
YmFzZURpcmVjdG9yeSkKIAogU3RvcmU6On5TdG9yZSgpID0gZGVmYXVsdDsKIAotdm9pZCBTdG9y
ZTo6cG9zdFRhc2soRnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCit2b2lkIFN0b3JlOjpwb3N0VGFz
ayhGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykgY29uc3QKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIG1fcXVldWUtPmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwogfQogCi12
b2lkIFN0b3JlOjpwb3N0VGFza1JlcGx5KFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHJlcGx5KQor
dm9pZCBTdG9yZTo6cG9zdFRhc2tSZXBseShXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiByZXBseSkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBSdW5Mb29wOjpt
YWluKCkuZGlzcGF0Y2goV1RGTW92ZShyZXBseSkpOwpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQg
U3RvcmU6OmF0dHJpYnV0ZVByaXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlBy
aXZhdGVDbGlja01lYXN1cmVtCiAgICAgfSk7CiB9CiAKLXZvaWQgU3RvcmU6OnByaXZhdGVDbGlj
a01lYXN1cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3Ry
aW5nKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgU3RvcmU6OnByaXZhdGVDbGlja01lYXN1
cmVtZW50VG9TdHJpbmdGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgY29uc3QKIHsKICAgICBwb3N0VGFzayhbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBTdHJpbmcgcmVzdWx0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50
U3RvcmUuaAppbmRleCAwNTUxZWQwYWJkMWNhOGI3YjFjMzU0Njc2YWM0NWYzMzMyMWE0YjlhLi44
MzEzNTZkY2M2YzczOTE5NzZiZWQwYTg4ZGMyM2RjYmJjNWMxMjIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUuaApA
QCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNlcnRQcml2YXRlQ2xpY2tNZWFz
dXJlbWVudChXZWJDb3JlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmLCBXZWJLaXQ6OlByaXZh
dGVDbGlja01lYXN1cmVtZW50QXR0cmlidXRpb25UeXBlKTsKICAgICB2b2lkIGF0dHJpYnV0ZVBy
aXZhdGVDbGlja01lYXN1cmVtZW50KGNvbnN0IFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpTb3VyY2VTaXRlJiwgY29uc3QgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6
OkF0dHJpYnV0aW9uRGVzdGluYXRpb25TaXRlJiwgV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQ6OkF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiwgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudD4mJiBlcGhlbWVyYWxNZWFzdXJlbWVudCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50OjpBdHRyaWJ1dGlvblNlY29uZHNVbnRpbFNlbmREYXRhPiYmLCBEZWJ1Z0luZm8mJik+JiYp
OwogCi0gICAgdm9pZCBwcml2YXRlQ2xpY2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyk+JiYpOworICAgIHZvaWQgcHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnRUb1N0cmluZ0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJp
bmcpPiYmKSBjb25zdDsKICAgICB2b2lkIG1hcmtBbGxVbmF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudEFzRXhwaXJlZEZvclRlc3RpbmcoKTsKICAgICB2b2lkIG1hcmtBdHRyaWJ1dGVk
UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRzQXNFeHBpcmVkRm9yVGVzdGluZyhDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpOwogCkBAIC02OCw4ICs2OCw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgU3RvcmUoY29uc3QgU3RyaW5nJiBkYXRhYmFzZURpcmVjdG9yeSk7CiAKLSAgICB2b2lkIHBv
c3RUYXNrKEZ1bmN0aW9uPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBwb3N0VGFza1JlcGx5KEZ1bmN0
aW9uPHZvaWQoKT4mJik7CisgICAgdm9pZCBwb3N0VGFzayhGdW5jdGlvbjx2b2lkKCk+JiYpIGNv
bnN0OworICAgIHZvaWQgcG9zdFRhc2tSZXBseShGdW5jdGlvbjx2b2lkKCk+JiYpIGNvbnN0Owog
CiAgICAgc3RkOjp1bmlxdWVfcHRyPERhdGFiYXNlPiBtX2RhdGFiYXNlOwogICAgIFJlZjxTdXNw
ZW5kYWJsZVdvcmtRdWV1ZT4gbV9xdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmNwcApp
bmRleCA3OTc0OGE2ODNlZjg3NjZiZjdjYzhiN2VhYjA2NDk1ZGJjOGY5Yjk3Li41NjNjNTNlNzg1
YWQ1YzI2NTllNmJjODAxY2U4MmEzNTI4MWM2MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFn
ZXIuY3BwCkBAIC01MywxMSArNTMsMTIgQEAgdXNpbmcgRXBoZW1lcmFsU291cmNlTm9uY2UgPSBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6RXBoZW1lcmFsU291cmNlTm9uY2U7CiAKIGNvbnN0ZXhw
ciBTZWNvbmRzIGRlYnVnTW9kZVNlY29uZHNVbnRpbFNlbmQgeyAxMF9zIH07CiAKLVByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5l
dHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3MmIG5ldHdvcmtQcm9j
ZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZ1bmN0aW9uPHZvaWQoTmV0d29ya0xvYWRQ
YXJhbWV0ZXJzJiYsIE5ldHdvcmtMb2FkQ2FsbGJhY2smJik+JiYgbmV0d29ya0xvYWRGdW5jdGlv
bikKK1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiBuZXR3b3JrU2Vzc2lvbiwgTmV0d29ya1Byb2Nlc3Mm
IG5ldHdvcmtQcm9jZXNzLCBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFN0cmluZyYg
c3RvcmFnZURpcmVjdG9yeSwgRnVuY3Rpb248dm9pZChOZXR3b3JrTG9hZFBhcmFtZXRlcnMmJiwg
TmV0d29ya0xvYWRDYWxsYmFjayYmKT4mJiBuZXR3b3JrTG9hZEZ1bmN0aW9uKQogICAgIDogbV9m
aXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lcigqdGhpcywgJlByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzKQogICAgICwg
bV9uZXR3b3JrU2Vzc2lvbihtYWtlV2Vha1B0cihuZXR3b3JrU2Vzc2lvbikpCiAgICAgLCBtX25l
dHdvcmtQcm9jZXNzKG5ldHdvcmtQcm9jZXNzKQogICAgICwgbV9zZXNzaW9uSUQoc2Vzc2lvbklE
KQorICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5KHN0b3JhZ2VEaXJlY3RvcnkpCiAgICAgLCBtX25l
dHdvcmtMb2FkRnVuY3Rpb24oV1RGTW92ZShuZXR3b3JrTG9hZEZ1bmN0aW9uKSkKIHsKICAgICBB
U1NFUlQobV9uZXR3b3JrTG9hZEZ1bmN0aW9uKTsKQEAgLTI0OSwxMCArMjUwLDcgQEAgdm9pZCBQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6Omluc2VydFByaXZhdGVDbGlja01lYXN1cmVt
ZW50KFByaXZhdGVDbGlja00KICAgICAgICAgbV9lcGhlbWVyYWxNZWFzdXJlbWVudCA9IFdURk1v
dmUobWVhc3VyZW1lbnQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotI2lmIEVOQUJMRShSRVNP
VVJDRV9MT0FEX1NUQVRJU1RJQ1MpCi0gICAgICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0
aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAg
ICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRT
dG9yZSgpLmluc2VydFByaXZhdGVDbGlja01lYXN1cmVtZW50KFdURk1vdmUobWVhc3VyZW1lbnQp
LCB0eXBlKTsKLSNlbmRpZgorICAgIHN0b3JlKCkuaW5zZXJ0UHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnQoV1RGTW92ZShtZWFzdXJlbWVudCksIHR5cGUpOwogfQogCiB2b2lkIFByaXZhdGVDbGlja01l
YXN1cmVtZW50TWFuYWdlcjo6aGFuZGxlQXR0cmlidXRpb24oQXR0cmlidXRpb25UcmlnZ2VyRGF0
YSYmIGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpCkBAIC0yODUsNyArMjgz
LDYgQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OnN0YXJ0VGltZXIoU2Vj
b25kcyBzZWNvbmRzKQogCiB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6YXR0
cmlidXRlKGNvbnN0IFNvdXJjZVNpdGUmIHNvdXJjZVNpdGUsIGNvbnN0IEF0dHJpYnV0aW9uRGVz
dGluYXRpb25TaXRlJiBkZXN0aW5hdGlvblNpdGUsIEF0dHJpYnV0aW9uVHJpZ2dlckRhdGEmJiBh
dHRyaWJ1dGlvblRyaWdnZXJEYXRhKQogewotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJ
U1RJQ1MpCiAgICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAg
LTI5Nyw0MCArMjk0LDM3IEBAIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjph
dHRyaWJ1dGUoY29uc3QgU291cmNlU2l0ZSYgc291cmNlU2l0ZSwgY29uCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgICAgICAKLSAgICBpZiAoYXV0byogcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNlTG9hZFN0YXRpc3RpY3MoKSkgewotICAg
ICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3Jl
KCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRp
b25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1f
ZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSwg
YXV0byBkZWJ1Z0luZm8pIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIWF0dHJpYnV0aW9u
U2Vjb25kc1VudGlsU2VuZERhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgIHN0b3Jl
KCkuYXR0cmlidXRlUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoc291cmNlU2l0ZSwgZGVzdGluYXRp
b25TaXRlLCBXVEZNb3ZlKGF0dHJpYnV0aW9uVHJpZ2dlckRhdGEpLCBzdGQ6OmV4Y2hhbmdlKG1f
ZXBoZW1lcmFsTWVhc3VyZW1lbnQsIHN0ZDo6bnVsbG9wdCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0gKGF1dG8gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YSwg
YXV0byBkZWJ1Z0luZm8pIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICghYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5k
RGF0YSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKFVOTElLRUxZKGRl
YnVnTW9kZUVuYWJsZWQoKSkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2Ug
OiBkZWJ1Z0luZm8ubWVzc2FnZXMpCi0gICAgICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nl
c3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgbWVzc2FnZS5tZXNzYWdlTGV2ZWwsIG1lc3NhZ2UubWVz
c2FnZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWShkZWJ1Z01vZGVFbmFi
bGVkKCkpKSB7CisgICAgICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBkZWJ1Z0luZm8ubWVz
c2FnZXMpCisgICAgICAgICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+YnJvYWRjYXN0Q29uc29s
ZU1lc3NhZ2UobV9zZXNzaW9uSUQsIE1lc3NhZ2VTb3VyY2U6OlByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCBtZXNzYWdlLm1lc3NhZ2VMZXZlbCwgbWVzc2FnZS5tZXNzYWdlKTsKKyAgICAgICAgfQog
Ci0gICAgICAgICAgICBpZiAoYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YS52YWx1ZSgp
Lmhhc1ZhbGlkU2Vjb25kc1VudGlsU2VuZFZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgYXV0
byBtaW5TZWNvbmRzVW50aWxTZW5kID0gYXR0cmlidXRpb25TZWNvbmRzVW50aWxTZW5kRGF0YS52
YWx1ZSgpLm1pblNlY29uZHNVbnRpbFNlbmQoKTsKKyAgICAgICAgaWYgKGF0dHJpYnV0aW9uU2Vj
b25kc1VudGlsU2VuZERhdGEudmFsdWUoKS5oYXNWYWxpZFNlY29uZHNVbnRpbFNlbmRWYWx1ZXMo
KSkgeworICAgICAgICAgICAgYXV0byBtaW5TZWNvbmRzVW50aWxTZW5kID0gYXR0cmlidXRpb25T
ZWNvbmRzVW50aWxTZW5kRGF0YS52YWx1ZSgpLm1pblNlY29uZHNVbnRpbFNlbmQoKTsKIAotICAg
ICAgICAgICAgICAgIEFTU0VSVChtaW5TZWNvbmRzVW50aWxTZW5kKTsKLSAgICAgICAgICAgICAg
ICBpZiAoIW1pblNlY29uZHNVbnRpbFNlbmQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIEFTU0VSVChtaW5TZWNvbmRzVW50aWxTZW5kKTsKKyAgICAgICAgICAgIGlm
ICghbWluU2Vjb25kc1VudGlsU2VuZCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgICAgICBpZiAobV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5pc0Fj
dGl2ZSgpICYmIG1fZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJlcXVlc3RzVGltZXIubmV4dEZpcmVJ
bnRlcnZhbCgpIDwgKm1pblNlY29uZHNVbnRpbFNlbmQpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIGlmIChtX2ZpcmVQZW5kaW5nQXR0cmlidXRpb25SZXF1ZXN0c1Rp
bWVyLmlzQWN0aXZlKCkgJiYgbV9maXJlUGVuZGluZ0F0dHJpYnV0aW9uUmVxdWVzdHNUaW1lci5u
ZXh0RmlyZUludGVydmFsKCkgPCAqbWluU2Vjb25kc1VudGlsU2VuZCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxl
ZCgpKSkgewotICAgICAgICAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RD
b25zb2xlTWVzc2FnZShtX3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQsIE1lc3NhZ2VMZXZlbDo6TG9nLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBN
ZWFzdXJlbWVudF0gU2V0dGluZyB0aW1lciBmb3IgZmlyaW5nIGF0dHJpYnV0aW9uIHJlcXVlc3Qg
dG8gdGhlIGRlYnVnIG1vZGUgdGltZW91dCBvZiAiX3MsIGRlYnVnTW9kZVNlY29uZHNVbnRpbFNl
bmQuc2Vjb25kcygpLCAiIHNlY29uZHMgd2hlcmUgdGhlIHJlZ3VsYXIgdGltZW91dCB3b3VsZCBo
YXZlIGJlZW4gIl9zLCBtaW5TZWNvbmRzVW50aWxTZW5kLnZhbHVlKCkuc2Vjb25kcygpLCAiIHNl
Y29uZHMuIl9zKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1pblNlY29uZHNVbnRpbFNlbmQgPSBk
ZWJ1Z01vZGVTZWNvbmRzVW50aWxTZW5kOwotICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5icm9hZGNhc3RDb25zb2xlTWVzc2FnZSht
X3Nlc3Npb25JRCwgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQsIE1lc3Nh
Z2VMZXZlbDo6TG9nLCBtYWtlU3RyaW5nKCJbUHJpdmF0ZSBDbGljayBNZWFzdXJlbWVudF0gU2V0
dGluZyB0aW1lciBmb3IgZmlyaW5nIGF0dHJpYnV0aW9uIHJlcXVlc3QgdG8gdGhlIHRpbWVvdXQg
b2YgIl9zLCBtaW5TZWNvbmRzVW50aWxTZW5kLnZhbHVlKCkuc2Vjb25kcygpLCAiIHNlY29uZHMu
Il9zKSk7CisgICAgICAgICAgICBpZiAoVU5MSUtFTFkoZGVidWdNb2RlRW5hYmxlZCgpKSkgewor
ICAgICAgICAgICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdl
KG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVz
c2FnZUxldmVsOjpMb2csIG1ha2VTdHJpbmcoIltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBT
ZXR0aW5nIHRpbWVyIGZvciBmaXJpbmcgYXR0cmlidXRpb24gcmVxdWVzdCB0byB0aGUgZGVidWcg
bW9kZSB0aW1lb3V0IG9mICJfcywgZGVidWdNb2RlU2Vjb25kc1VudGlsU2VuZC5zZWNvbmRzKCks
ICIgc2Vjb25kcyB3aGVyZSB0aGUgcmVndWxhciB0aW1lb3V0IHdvdWxkIGhhdmUgYmVlbiAiX3Ms
IG1pblNlY29uZHNVbnRpbFNlbmQudmFsdWUoKS5zZWNvbmRzKCksICIgc2Vjb25kcy4iX3MpKTsK
KyAgICAgICAgICAgICAgICBtaW5TZWNvbmRzVW50aWxTZW5kID0gZGVidWdNb2RlU2Vjb25kc1Vu
dGlsU2VuZDsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1fbmV0d29ya1By
b2Nlc3MtPmJyb2FkY2FzdENvbnNvbGVNZXNzYWdlKG1fc2Vzc2lvbklELCBNZXNzYWdlU291cmNl
OjpQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCwgTWVzc2FnZUxldmVsOjpMb2csIG1ha2VTdHJpbmco
IltQcml2YXRlIENsaWNrIE1lYXN1cmVtZW50XSBTZXR0aW5nIHRpbWVyIGZvciBmaXJpbmcgYXR0
cmlidXRpb24gcmVxdWVzdCB0byB0aGUgdGltZW91dCBvZiAiX3MsIG1pblNlY29uZHNVbnRpbFNl
bmQudmFsdWUoKS5zZWNvbmRzKCksICIgc2Vjb25kcy4iX3MpKTsKIAotICAgICAgICAgICAgICAg
IHN0YXJ0VGltZXIoKm1pblNlY29uZHNVbnRpbFNlbmQpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9KTsKLSAgICB9Ci0jZW5kaWYKKyAgICAgICAgICAgIHN0YXJ0VGltZXIoKm1pblNlY29uZHNV
bnRpbFNlbmQpOworICAgICAgICB9CisgICAgfSk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnRNYW5hZ2VyOjpmaXJlQ29udmVyc2lvblJlcXVlc3QoY29uc3QgUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmIGF0dHJpYnV0aW9uLCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6QXR0cmli
dXRpb25SZXBvcnRFbmRwb2ludCBhdHRyaWJ1dGlvblJlcG9ydEVuZHBvaW50KQpAQCAtMzk2LDI2
ICszOTAsMTggQEAgdm9pZCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmZpcmVDb252
ZXJzaW9uUmVxdWVzdEltcGwoY29uc3QgUHJpdmF0ZUNsaWMKIAogdm9pZCBQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyU2VudEF0dHJpYnV0aW9uKFByaXZhdGVDbGlja01lYXN1
cmVtZW50JiYgc2VudENvbnZlcnNpb24sIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1
dGlvblJlcG9ydEVuZHBvaW50IGF0dHJpYnV0aW9uUmVwb3J0RW5kcG9pbnQpCiB7Ci0jaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
ID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xl
YXJTZW50QXR0cmlidXRpb24oV1RGTW92ZShzZW50Q29udmVyc2lvbiksIGF0dHJpYnV0aW9uUmVw
b3J0RW5kcG9pbnQpOwotI2VuZGlmCisgICAgc3RvcmUoKS5jbGVhclNlbnRBdHRyaWJ1dGlvbihX
VEZNb3ZlKHNlbnRDb252ZXJzaW9uKSwgYXR0cmlidXRpb25SZXBvcnRFbmRwb2ludCk7CiB9CiAK
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpmaXJlUGVuZGluZ0F0dHJpYnV0
aW9uUmVxdWVzdHMoKQogewotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvKiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3Rh
dGlzdGljcygpOwotICAgIGlmICghcmVzb3VyY2VMb2FkU3RhdGlzdGljcykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgcmVzb3VyY2VMb2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1l
bnRTdG9yZSgpLmFsbEF0dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudChbdGhpcywgd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIChhdXRvJiYgYXR0cmlidXRpb25zKSB7CisgICAg
c3RvcmUoKS5hbGxBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoYXV0byYmIGF0dHJpYnV0aW9ucykgewogICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIG5leHRU
aW1lVG9GaXJlID0gU2Vjb25kczo6aW5maW5pdHkoKTsKQEAgLTQ2NSw3ICs0NTEsNiBAQCB2b2lk
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZmlyZVBlbmRpbmdBdHRyaWJ1dGlvblJl
cXVlc3RzKCkKICAgICAgICAgaWYgKG5leHRUaW1lVG9GaXJlIDwgU2Vjb25kczo6aW5maW5pdHko
KSkKICAgICAgICAgICAgIHN0YXJ0VGltZXIobmV4dFRpbWVUb0ZpcmUpOwogICAgIH0pOwotI2Vu
ZGlmCiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpjbGVhcihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00NzQsNTMgKzQ1
OSwzNCBAQCB2b2lkIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXIoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpbwogICAgIG1fZXBoZW1lcmFsTWVhc3VyZW1l
bnQgPSBzdGQ6Om51bGxvcHQ7CiAgICAgbV9pc1J1bm5pbmdFcGhlbWVyYWxNZWFzdXJlbWVudFRl
c3QgPSBmYWxzZTsKIAotI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAg
aWYgKCFmZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIo
KTsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vz
c2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXR1cm4gcmVzb3VyY2VM
b2FkU3RhdGlzdGljcy0+cHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRTdG9yZSgpLmNsZWFyUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCi0g
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBzdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFByaXZhdGVD
bGlja01lYXN1cmVtZW50TWFuYWdlcjo6Y2xlYXJGb3JSZWdpc3RyYWJsZURvbWFpbihjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0jaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykK
ICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcigpOwogCi0gICAgaWYgKGF1dG8qIHJlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBtX25ldHdv
cmtTZXNzaW9uLT5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzKCkpCi0gICAgICAgIHJldHVybiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudEZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbiwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotI2VuZGlmCi0gICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
KyAgICBzdG9yZSgpLmNsZWFyUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRGb3JSZWdpc3RyYWJsZURv
bWFpbihkb21haW4sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBQcml2
YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXI6OmNsZWFyRXhwaXJlZCgpCiB7Ci0jaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0g
bV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAgICByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkuY2xlYXJF
eHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKLSNlbmRpZgorICAgIHN0b3JlKCkuY2xl
YXJFeHBpcmVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQoKTsKIH0KIAogdm9pZCBQcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudE1hbmFnZXI6OnRvU3RyaW5nRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFN0cmluZyk+JiYgY29tcGxldGlvbkhhbmRsZXIpIGNvbnN0CiB7Ci0jaWYgRU5BQkxF
KFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKLSAgICBpZiAoIWZlYXR1cmVFbmFibGVkKCkpIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVh
c3VyZW1lbnQgZGF0YS5cbiJfcyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFm
ZWF0dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoIlxuTm8g
c3RvcmVkIFByaXZhdGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7CiAKLSAgICBpZiAo
YXV0byogcmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IG1fbmV0d29ya1Nlc3Npb24tPnJlc291cmNl
TG9hZFN0YXRpc3RpY3MoKSkgewotICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2
YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCkucHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRUb1N0cmlu
Z0ZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotI2VuZGlmCi0gICAgY29tcGxldGlvbkhhbmRsZXIoIlxuTm8gc3RvcmVkIFByaXZh
dGUgQ2xpY2sgTWVhc3VyZW1lbnQgZGF0YS5cbiJfcyk7CisgICAgc3RvcmUoKS5wcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudFRvU3RyaW5nRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRUb2tlblB1
YmxpY0tleVVSTEZvclRlc3RpbmcoVVJMJiYgdGVzdFVSTCkKQEAgLTU0OCwxMyArNTE0LDEwIEBA
IHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRBdHRyaWJ1dGlvblJlcG9y
dFVSTHNGb3JUZXN0aW5nKFVSTCYmIHNvCiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRN
YW5hZ2VyOjptYXJrQWxsVW5hdHRyaWJ1dGVkQXNFeHBpcmVkRm9yVGVzdGluZygpCiB7Ci0jaWYg
RU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBpZiAoIWZlYXR1cmVFbmFibGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0
aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVzb3VyY2VMb2FkU3RhdGlzdGljcygpKQotICAgICAg
ICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzLT5wcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlKCku
bWFya0FsbFVuYXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVtZW50QXNFeHBpcmVkRm9yVGVz
dGluZygpOwotI2VuZGlmCisgICAgc3RvcmUoKS5tYXJrQWxsVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRBc0V4cGlyZWRGb3JUZXN0aW5nKCk7CiB9CiAKIHZvaWQgUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzZXRQQ01GcmF1ZFByZXZlbnRpb25WYWx1ZXNGb3JUZXN0
aW5nKFN0cmluZyYmIHVubGlua2FibGVUb2tlbiwgU3RyaW5nJiYgc2VjcmV0VG9rZW4sIFN0cmlu
ZyYmIHNpZ25hdHVyZSwgU3RyaW5nJiYga2V5SUQpCkBAIC01NzYsMTggKzUzOSwzNSBAQCBib29s
IFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZGVidWdNb2RlRW5hYmxlZCgpIGNvbnN0
CiAKIHZvaWQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjptYXJrQXR0cmlidXRlZFBy
aXZhdGVDbGlja01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotI2lmIEVOQUJMRShSRVNPVVJDRV9M
T0FEX1NUQVRJU1RJQ1MpCi0gICAgaWYgKCFmZWF0dXJlRW5hYmxlZCgpKSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgaWYgKCFmZWF0
dXJlRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKIAotICAg
IGlmIChhdXRvKiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gbV9uZXR3b3JrU2Vzc2lvbi0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljcygpKSB7Ci0gICAgICAgIHJlc291cmNlTG9hZFN0YXRpc3RpY3Mt
PnByaXZhdGVDbGlja01lYXN1cmVtZW50U3RvcmUoKS5tYXJrQXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50c0FzRXhwaXJlZEZvclRlc3RpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotI2VuZGlmCi0gICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKKyAgICBzdG9yZSgpLm1hcmtBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRz
QXNFeHBpcmVkRm9yVGVzdGluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cit9CisKK1BD
TTo6U3RvcmUmIFByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6c3RvcmUoKQoreworICAg
IGlmICghbV9zdG9yZSkKKyAgICAgICAgbV9zdG9yZSA9IFBDTTo6U3RvcmU6OmNyZWF0ZShtX3N0
b3JhZ2VEaXJlY3RvcnkpOworICAgIHJldHVybiAqbV9zdG9yZTsKK30KKworY29uc3QgUENNOjpT
dG9yZSYgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyOjpzdG9yZSgpIGNvbnN0Cit7Cisg
ICAgaWYgKCFtX3N0b3JlKQorICAgICAgICBtX3N0b3JlID0gUENNOjpTdG9yZTo6Y3JlYXRlKG1f
c3RvcmFnZURpcmVjdG9yeSk7CisgICAgcmV0dXJuICptX3N0b3JlOworfQorCit2b2lkIFByaXZh
dGVDbGlja01lYXN1cmVtZW50TWFuYWdlcjo6ZGVzdHJveVN0b3JlRm9yVGVzdGluZyhDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgaWYgKCFtX3N0
b3JlKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICBtX3N0b3JlLT5j
bG9zZShbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICB3ZWFrVGhpcy0+bV9zdG9yZSA9IG51bGxwdHI7CisgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcigpOworICAgIH0pOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1ByaXZhdGVDbGlja01lYXN1cmVtZW50TWFuYWdlci5oCmluZGV4IGY0OTU5ZDVlYTRkNDQ3MjQ0
ZDgwYWVhOGMyNDIwZjA2ZjIxMDc3MjguLmIyOWU4MmI4ZTAyOWFmNTVjMzVmZDNjMjA2MzdiYTk1
OWUyMjMwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0
ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudE1hbmFnZXIuaApAQCAtMjcsNiArMjcsNyBAQAog
CiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiTmV0d29ya1By
b2Nlc3MuaCIKKyNpbmNsdWRlICJQcml2YXRlQ2xpY2tNZWFzdXJlbWVudFN0b3JlLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUmVnaXN0cmFibGVEb21haW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KQEAgLTUyLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFByaXZhdGVDbGlja01lYXN1
cmVtZW50ID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ7CiAgICAgdXNpbmcgUmVn
aXN0cmFibGVEb21haW4gPSBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjsKICAgICB1c2luZyBT
b3VyY2VTaXRlID0gV2ViQ29yZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6OlNvdXJjZVNpdGU7
Ci0gICAgZXhwbGljaXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNz
aW9uJiwgTmV0d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgRnVuY3Rpb248dm9pZChOZXR3
b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0xvYWRDYWxsYmFjayYmKT4mJik7CisgICAgZXhw
bGljaXQgUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnRNYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgTmV0
d29ya1Byb2Nlc3MmLCBQQUw6OlNlc3Npb25JRCwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0
b3J5LCBGdW5jdGlvbjx2b2lkKE5ldHdvcmtMb2FkUGFyYW1ldGVycyYmLCBOZXR3b3JrTG9hZENh
bGxiYWNrJiYpPiYmKTsKIAogICAgIHZvaWQgc3RvcmVVbmF0dHJpYnV0ZWQoUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnQmJik7CiAgICAgdm9pZCBoYW5kbGVBdHRyaWJ1dGlvbihBdHRyaWJ1dGlvblRy
aWdnZXJEYXRhJiYsIGNvbnN0IFVSTCYgcmVxdWVzdFVSTCwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QpOwpAQCAtNjksNiArNzAsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0UENNRnJhdWRQcmV2ZW50aW9uVmFsdWVzRm9yVGVzdGluZyhTdHJpbmcmJiB1
bmxpbmthYmxlVG9rZW4sIFN0cmluZyYmIHNlY3JldFRva2VuLCBTdHJpbmcmJiBzaWduYXR1cmUs
IFN0cmluZyYmIGtleUlEKTsKICAgICB2b2lkIHN0YXJ0VGltZXIoU2Vjb25kcyk7CiAKKyAgICB2
b2lkIGRlc3Ryb3lTdG9yZUZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsK
KworICAgIFBDTTo6U3RvcmUmIHN0b3JlKCk7CisgICAgY29uc3QgUENNOjpTdG9yZSYgc3RvcmUo
KSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lkIGdldFRva2VuUHVibGljS2V5KFByaXZhdGVD
bGlja01lYXN1cmVtZW50JiYsIFByaXZhdGVDbGlja01lYXN1cmVtZW50OjpBdHRyaWJ1dGlvblJl
cG9ydEVuZHBvaW50LCBQcml2YXRlQ2xpY2tNZWFzdXJlbWVudDo6UGNtRGF0YUNhcnJpZWQsIEZ1
bmN0aW9uPHZvaWQoUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQmJiBhdHRyaWJ1dGlvbiwgY29uc3Qg
U3RyaW5nJiBwdWJsaWNLZXlCYXNlNjRVUkwpPiYmKTsKICAgICB2b2lkIGdldFNpZ25lZFVubGlu
a2FibGVUb2tlbihQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCYmKTsKQEAgLTkxLDYgKzk3LDggQEAg
cHJpdmF0ZToKICAgICBXZWFrUHRyPE5ldHdvcmtTZXNzaW9uPiBtX25ldHdvcmtTZXNzaW9uOwog
ICAgIFJlZjxOZXR3b3JrUHJvY2Vzcz4gbV9uZXR3b3JrUHJvY2VzczsKICAgICBQQUw6OlNlc3Np
b25JRCBtX3Nlc3Npb25JRDsKKyAgICBtdXRhYmxlIFJlZlB0cjxQQ006OlN0b3JlPiBtX3N0b3Jl
OworICAgIFN0cmluZyBtX3N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgRnVuY3Rpb248dm9pZChOZXR3
b3JrTG9hZFBhcmFtZXRlcnMmJiwgTmV0d29ya0xvYWRDYWxsYmFjayYmKT4gbV9uZXR3b3JrTG9h
ZEZ1bmN0aW9uOwogCiAgICAgc3RydWN0IEF0dHJpYnV0aW9uUmVwb3J0VGVzdENvbmZpZyB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>