<?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>209246</bug_id>
          
          <creation_ts>2020-03-18 13:02:03 -0700</creation_ts>
          <short_desc>Pass isNavigatingToAppBoundDomain for speculative loads, preconnect tasks and downloads</short_desc>
          <delta_ts>2020-03-18 16:10:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kate Cheney">katherine_cheney</reporter>
          <assigned_to name="Kate Cheney">katherine_cheney</assigned_to>
          <cc>achristensen</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>wilander</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1631320</commentid>
    <comment_count>0</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 13:02:03 -0700</bug_when>
    <thetext>Currently this parameter is only being passed to the NetworkLoad object in NetworkResourceLoader::startNetworkLoad(). This is not the only way to load resources, so isNavigatingToAppBoundDomain should be updated to reflect that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631321</commentid>
    <comment_count>1</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 13:02:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/60552712&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631330</commentid>
    <comment_count>2</comment_count>
      <attachid>393895</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 13:24:34 -0700</bug_when>
    <thetext>Created attachment 393895
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631336</commentid>
    <comment_count>3</comment_count>
      <attachid>393895</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-18 13:32:39 -0700</bug_when>
    <thetext>Comment on attachment 393895
Patch

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

&gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:42
&gt; +};

We don&apos;t need EnumTraits for boolean enum classes.

&gt; Source/WebKit/Shared/PolicyDecision.h:104
&gt;  template&lt;&gt; struct EnumTraits&lt;WebKit::NavigatedAwayFromAppBoundDomain&gt; {

You should be able to remove this one too but that&apos;s untreated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631337</commentid>
    <comment_count>4</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-03-18 13:33:04 -0700</bug_when>
    <thetext>(In reply to John Wilander from comment #3)
&gt; Comment on attachment 393895 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=393895&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:42
&gt; &gt; +};
&gt; 
&gt; We don&apos;t need EnumTraits for boolean enum classes.
&gt; 
&gt; &gt; Source/WebKit/Shared/PolicyDecision.h:104
&gt; &gt;  template&lt;&gt; struct EnumTraits&lt;WebKit::NavigatedAwayFromAppBoundDomain&gt; {
&gt; 
&gt; You should be able to remove this one too but that&apos;s untreated to this patch.

*unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631342</commentid>
    <comment_count>5</comment_count>
      <attachid>393895</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2020-03-18 13:42:55 -0700</bug_when>
    <thetext>Comment on attachment 393895
Patch

I think the overall approach of this patch seems good. I&apos;ll check with Chris or Alex to see if they have any other concerns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631357</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-03-18 14:18:47 -0700</bug_when>
    <thetext>I defer to Alex or Youenn here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631363</commentid>
    <comment_count>7</comment_count>
      <attachid>393895</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-18 14:30:42 -0700</bug_when>
    <thetext>Comment on attachment 393895
Patch

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

I think the name NavigatingToAppBoundDomain is no longer correct, but I&apos;m ok with it in this patch as long as there&apos;s a plan to rename it.
r=me

&gt; Source/WebKit/Shared/NavigatingToAppBoundDomain.h:36
&gt; +template&lt;&gt; struct EnumTraits&lt;WebKit::NavigatingToAppBoundDomain&gt; {

Yes, I agree with John.  Please remove this unneeded bit.

&gt; Source/WebKit/WebProcess/WebPage/WebFrame.cpp:307
&gt; +    webProcess.ensureNetworkProcessConnection().connection().send(Messages::NetworkConnectionToWebProcess::ConvertMainResourceLoadToDownload(mainResourceLoadIdentifier, policyDownloadID, request, response, page()-&gt;isNavigatingToAppBoundDomain()), 0);

We should probably null check page here and above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631373</commentid>
    <comment_count>8</comment_count>
      <attachid>393907</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 14:48:00 -0700</bug_when>
    <thetext>Created attachment 393907
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631374</commentid>
    <comment_count>9</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 14:49:20 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 393895 [details]
&gt; Patch
&gt; 

Thanks Alex! This patch has the changes you and John suggested. I will create a radar to rename isNavigatingToAppBoundDomain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631392</commentid>
    <comment_count>10</comment_count>
      <attachid>393910</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2020-03-18 15:36:40 -0700</bug_when>
    <thetext>Created attachment 393910
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1631403</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-03-18 16:09:59 -0700</bug_when>
    <thetext>Committed r258667: &lt;https://trac.webkit.org/changeset/258667&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 393910.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393895</attachid>
            <date>2020-03-18 13:24:34 -0700</date>
            <delta_ts>2020-03-18 14:47:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209246-20200318132433.patch</filename>
            <type>text/plain</type>
            <size>59465</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5Y2MzMTlhZmIzZWZmZjY2
MDdjOWZlZjExZWM0NDk1NjhhYmNlZDMuLmJlYjlhZjZmZDRmY2U3MTQ3MDU3MzRmNDY3MDFlMWM0
ZGI3NGVjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjAtMDMtMTggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGZvciBzcGVjdWxhdGl2ZSBsb2FkcywgcHJlY29ubmVjdCB0
YXNrcyBhbmQgZG93bmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDkyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNTUyNzEyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhc3MgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpbiA0IG5ldyBwbGFjZXM6CisKKyAgICAgICAgMSkgU3Bl
Y3VsYXRpdmUgTG9hZHMKKyAgICAgICAgMikgUHJlY29ubmVjdCBUYXNrcworICAgICAgICAzKSBE
b3dubG9hZHMKKyAgICAgICAgNCkgQ09SUyBwcmVmbGlnaHQgY2hlY2tlcgorCisgICAgICAgIFRo
ZXNlIGxvYWRzIHNob3VsZCBoYXBwZW4gaW4gYW4gYXBwLWJvdW5kIHNlc3Npb24gaWYgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbgorICAgICAgICBpcyB0cnVlLgorCisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkRvd25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oOgorICAgICAgICAoV2ViS2l0OjpEb3du
bG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL0Rv
d25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpQZW5kaW5nRG93
bmxvYWQ6OlBlbmRpbmdEb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6c3RhcnREb3dubG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93
bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNz
OjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcmVj
b25uZWN0VG8pOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1
ZXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6c3RhcnQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OnJldHJpZXZlQ2FjaGVFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxvYWQpOgorICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1ByZWNvbm5lY3RUYXNrLmNwcDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXI6OlNlcnZpY2VXb3JrZXJT
b2Z0VXBkYXRlTG9hZGVyKToKKyAgICAgICAgVGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBzaG91
bGQgYmUgY29uc2lkZXJlZCBhbiBhcHAtYm91bmQgbG9hZC4KKworICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL0FzeW5jUmV2YWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpBc3luY1JldmFsaWRhdGlvbjo6QXN5bmNSZXZhbGlkYXRpb24pOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL0FzeW5jUmV2YWxpZGF0aW9uLmg6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0NhY2hlOjpDYWNoZTo6c3RhcnRBc3luY1JldmFsaWRhdGlvbklmTmVlZGVkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6cmV0cmlldmUpOgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQpOgor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9h
ZC5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2Vy
OjpyZXZhbGlkYXRlU3VicmVzb3VyY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
OlNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxvYWRFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtDYWNoZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpzZXNzaW9uV3JhcHBlckZvclRhc2spOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbi5oOgorICAgICAgICBTZXBhcmF0ZXMgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gdG8gaXRzIG93biBmaWxlIHRvIGFsbG93IGZvcgorICAgICAgICBzZW5kaW5nIG92
ZXIgSVBDLgorCisgICAgICAgICogU2hhcmVkL1BvbGljeURlY2lzaW9uLmg6CisgICAgICAgICog
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldElzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4g
Y29uc3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpkb3dubG9hZCk6CisgICAgICAgICogV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6
OnByZWNvbm5lY3RUbyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKToKKwog
MjAyMC0wMy0xOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSRUdSRVNTSU9OIChyMjU3MjE0KTogVGFyZ2V0ZWQgcHJldmlldyBhbmltYXRlcyB0byB0
aGUgd3JvbmcgcGxhY2Ugd2hlbiBkcm9wcGluZyBpbiBlZGl0YWJsZSBjb250ZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcAppbmRleCA2MjUxZTk4OWNkMTJiMjhmOThiZDljOWEyMjUwOTMwZDQ2NmNjOWUz
Li42NDJmNDYzZjg2YTQxMjQwOWJmMDU3NjNlZDRjZWZjZjVlNTVjMDZiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgRG93bmxvYWRNYW5hZ2VyOjpEb3dubG9hZE1hbmFn
ZXIoQ2xpZW50JiBjbGllbnQpCiB7CiB9CiAKLXZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERv
d25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFt
ZSkKK3ZvaWQgRG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKICAgICBhdXRvKiBuZXR3b3Jr
U2Vzc2lvbiA9IGNsaWVudCgpLm5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCk7CiAgICAgaWYgKCFu
ZXR3b3JrU2Vzc2lvbikKQEAgLTUyLDYgKzUyLDcgQEAgdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0
YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2EK
ICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKICAgICBwYXJhbWV0ZXJzLnJl
cXVlc3QgPSByZXF1ZXN0OwogICAgIHBhcmFtZXRlcnMuY2xpZW50Q3JlZGVudGlhbFBvbGljeSA9
IENsaWVudENyZWRlbnRpYWxQb2xpY3k6Ok1heUFza0NsaWVudEZvckNyZWRlbnRpYWxzOworICAg
IHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW47CiAgICAgaWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJc0Jsb2IoKSkK
ICAgICAgICAgcGFyYW1ldGVycy5ibG9iRmlsZVJlZmVyZW5jZXMgPSBjbGllbnQoKS5uZXR3b3Jr
U2Vzc2lvbihzZXNzaW9uSUQpLT5ibG9iUmVnaXN0cnkoKS5maWxlc0luQmxvYihyZXF1ZXN0LnVy
bCgpKTsKICAgICBwYXJhbWV0ZXJzLnN0b3JlZENyZWRlbnRpYWxzUG9saWN5ID0gc2Vzc2lvbklE
LmlzRXBoZW1lcmFsKCkgPyBTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6RG9Ob3RVc2UgOiBTdG9y
ZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAppbmRleCA4ZDIxODhkM2Jk
YjBhOTQ0Nzc5YTIwZjVkMzA1YWExODhhOGE2MjE1Li43NTNiZGY1MWUwODQxMTQ1ZWZkNTVhZGJk
ZTI2NTE5YTQzMGUzYWM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkRvd25sb2FkTWFwLmgiCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5j
bHVkZSAiUGVuZGluZ0Rvd25sb2FkLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNp
bmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CkBAIC04MCw3ICs4MSw3IEBAIHB1Ymxp
YzoKIAogICAgIGV4cGxpY2l0IERvd25sb2FkTWFuYWdlcihDbGllbnQmKTsKIAotICAgIHZvaWQg
c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lID0geyB9KTsKKyAg
ICB2b2lkIHN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwogICAgIHZvaWQgZGF0YVRhc2tCZWNhbWVE
b3dubG9hZFRhc2soRG93bmxvYWRJRCwgc3RkOjp1bmlxdWVfcHRyPERvd25sb2FkPiYmKTsKICAg
ICB2b2lkIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KERvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHdpbGxEZWNpZGVQZW5kaW5nRG93bmxvYWREZXN0aW5h
dGlvbihOZXR3b3JrRGF0YVRhc2smLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLmNwcAppbmRleCBjNGI5ZWNlNDg2ZTRkNzAwYjYwOTRmMzVlZGRl
ZjFkMjU4YzI3Y2E2Li5kNDhkOTEwYzk2YzVkMGM2M2Y0NjljZmY5MDNhYzY5YWVhOTUxNTBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtNTc2LDE4ICs1NzYsMTggQEAgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uKiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6c3RvcmFnZVNl
c3Npb24oKQogICAgIHJldHVybiBzZXNzaW9uOwogfQogCi12b2lkIE5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUpCit2
b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKERvd25sb2Fk
SUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZE5hbWUpCiB7Ci0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5h
Z2VyKCkuc3RhcnREb3dubG9hZChtX3Nlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgc3Vn
Z2VzdGVkTmFtZSk7CisgICAgbV9uZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3Rh
cnREb3dubG9hZChtX3Nlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkTmFtZSk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCBkb3dubG9hZElELCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5S
ZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVy
LCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgUkVMRUFTRV9BU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgLy8gSW4gY2FzZSBhIHJlc3BvbnNlIGlzIHNlcnZl
ZCBmcm9tIHNlcnZpY2Ugd29ya2VyLCB3ZSBkbyBub3QgaGF2ZSB5ZXQgdGhlIGFiaWxpdHkgdG8g
Y29udmVydCB0aGUgbG9hZC4KICAgICBpZiAoIW1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyIHx8
IHJlc3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdv
cmtlcikgewotICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFy
dERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0KTsKKyAgICAgICAgbV9u
ZXR3b3JrUHJvY2Vzcy0+ZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChtX3Nlc3Npb25J
RCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAppbmRleCBiZjEy
YzkyYWY3ZTJhYWEyYTg2NDc0YzA0YTkxNmFmODk1ZGQxY2I0Li4xNjdkM2M5YzAzZGFjMzk1MTIz
ZmNiZWJlNzExNDZiMDU4NTg2ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya01ETlNSZWdpc3Rlci5oIgogI2luY2x1ZGUgIk5l
dHdvcmtSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRNYXAuaCIK
KyNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24u
aCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSAiV2ViUGF5
bWVudENvb3JkaW5hdG9yUHJveHkuaCIKQEAgLTE5OSw4ICsyMDAsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgcGFnZUxvYWRDb21wbGV0ZWQoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIpOwogICAgIHZv
aWQgYnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBXZWJDb3Jl
OjpQYWdlSWRlbnRpZmllciwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyKTsKICAgICB2b2lkIGNy
b3NzT3JpZ2luUmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBV
UkwmIHJlZGlyZWN0VVJMKTsKLSAgICB2b2lkIHN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1l
ID0geyB9KTsKLSAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50
NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYpOwor
ICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWROYW1lID0geyB9KTsKKyAgICB2b2lkIGNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3du
bG9hZCh1aW50NjRfdCBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgRG93bmxvYWRJRCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJV
UkxTY2hlbWVzQXNDT1JTRW5hYmxlZChWZWN0b3I8U3RyaW5nPiYmIHNjaGVtZXMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgppbmRleCA4NmU1NWU4MzcwOGM5
MzdhODMxYzQ0M2Y1YWUwMzk2MDA0N2IyNzFhLi4yYzc5ZDcwYmUyNzIxODY2NjQ0N2QxYmVhMTRj
ZTc1YzBkMzVhNWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMu
aW4KQEAgLTMyLDggKzMyLDggQEAgbWVzc2FnZXMgLT4gTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAgIFByZWZldGNoRE5TKFN0cmluZyBob3N0bmFtZSkK
ICAgICBQcmVjb25uZWN0VG8oT3B0aW9uYWw8dWludDY0X3Q+IHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzIGxvYWRQYXJhbWV0ZXJz
KTsKIAotICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkTmFtZSkKLSAg
ICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNl
TG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25z
ZSkKKyAgICBTdGFydERvd25sb2FkKFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIFdlYktpdDo6TmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgU3RyaW5nIHN1
Z2dlc3RlZE5hbWUpCisgICAgQ29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVpbnQ2
NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxv
YWRJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2UsIGVudW06Ym9vbCBXZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiAKICAgICBDb29raWVzRm9yRE9N
KFVSTCBmaXJzdFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5m
bywgVVJMIHVybCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OkluY2x1ZGVTZWN1cmVDb29r
aWVzIGluY2x1ZGVTZWN1cmVDb29raWVzLCBlbnVtOmJvb2wgV2ViQ29yZTo6U2hvdWxkQXNrSVRQ
IHNob3VsZEFza0lUUCkgLT4gKFN0cmluZyBjb29raWVTdHJpbmcsIGJvb2wgZGlkQWNjZXNzU2Vj
dXJlQ29va2llcykgU3luY2hyb25vdXMKICAgICBTZXRDb29raWVzRnJvbURPTShVUkwgZmlyc3RQ
YXJ0eSwgc3RydWN0IFdlYkNvcmU6OlNhbWVTaXRlSW5mbyBzYW1lU2l0ZUluZm8sIFVSTCB1cmws
IFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmll
ciBwYWdlSUQsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJVFAgc2hvdWxkQXNrSVRQLCBT
dHJpbmcgY29va2llU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLmNwcAppbmRleCAyZGIyZjE0OWE2MTc3ZWY5NDY0NThhZTBhNjRjMGQ3YzM3
MTllN2FlLi42NDkyOWI4MjgzN2YwMzVkMDU5NjM3Y2VhNTNhZmIzMDIwZTNjNjZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcApAQCAtMTMw
OSw3ICsxMzA5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6c2V0Rmlyc3RQYXJ0eVdlYnNpdGVE
YXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbkkKIH0KICNlbmRpZiAvLyBFTkFC
TEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVj
b25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50LCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFs
c1BvbGljeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1QpCiAjaWYgRU5BQkxFKExF
R0FDWV9DVVNUT01fUFJPVE9DT0xfTUFOQUdFUikKQEAgLTEzMTksNiArMTMxOSw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3M6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFVSTCYgdXJsLCBjb25zCiAKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVy
czsKICAgICBwYXJhbWV0ZXJzLnJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QgeyB1cmwgfTsKKyAg
ICBwYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluOwogICAgIGlmICghdXNlckFnZW50LmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBGSVhNRTogd2UgYWRkIHVzZXItYWdlbnQgdG8gdGhlIHByZWNvbm5lY3QgcmVxdWVzdCBi
ZWNhdXNlIG90aGVyd2lzZSB0aGUgcHJlY29ubmVjdAogICAgICAgICAvLyBnZXRzIHRocm93biBh
d2F5IGJ5IENGTmV0d29yayB3aGVuIHVzaW5nIGFuIEhUVFBTIHByb3h5ICg8cmRhcjovL3Byb2Js
ZW0vNTk0MzQxNjY+KS4KQEAgLTIwMzQsOSArMjAzNSw5IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnJlbW92ZUNhY2hlRW5naW5lKGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQpCiAgICAg
bV9jYWNoZUVuZ2luZXMucmVtb3ZlKHNlc3Npb25JRCk7CiB9CiAKLXZvaWQgTmV0d29ya1Byb2Nl
c3M6OmRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQg
ZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lKQordm9pZCBOZXR3b3JrUHJvY2Vzczo6ZG93bmxvYWRSZXF1ZXN0
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUp
CiB7Ci0gICAgZG93bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQsIGRvd25s
b2FkSUQsIHJlcXVlc3QsIHN1Z2dlc3RlZEZpbGVuYW1lKTsKKyAgICBkb3dubG9hZE1hbmFnZXIo
KS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93bmxvYWRJRCwgcmVxdWVzdCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgc3VnZ2VzdGVkRmlsZW5hbWUpOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpyZXN1bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25s
b2FkSUQgZG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiByZXN1bWVEYXRhLCBj
b25zdCBTdHJpbmcmIHBhdGgsIFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiYgc2Fu
ZGJveEV4dGVuc2lvbkhhbmRsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuaAppbmRleCA4YjRlMDQyMDU4ZmNmY2VjYTQ4ZTJmYmM1YzE2NGUyMzJjZmMx
ZDZmLi43NmQ3NDY1OWRlMmI5ZmNhM2M4ODc0MjM5MzRmNWEzYzFmNDBkNmUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0yNzAsNyArMjcw
LDcgQEAgcHVibGljOgogICAgIHVzaW5nIENhY2hlU3RvcmFnZVJvb3RQYXRoQ2FsbGJhY2sgPSBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFN0cmluZyYmKT47CiAgICAgdm9pZCBjYWNoZVN0b3JhZ2VS
b290UGF0aChQQUw6OlNlc3Npb25JRCwgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayYmKTsK
IAotICAgIHZvaWQgcHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25z
dCBTdHJpbmcmLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7CisgICAgdm9pZCBw
cmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bik7CiAKICAgICB2b2lkIHNldFNlc3Npb25Jc0NvbnRyb2xsZWRCeUF1dG9tYXRpb24oUEFMOjpT
ZXNzaW9uSUQsIGJvb2wpOwogICAgIGJvb2wgc2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlv
bihQQUw6OlNlc3Npb25JRCkgY29uc3Q7CkBAIC00MDEsNyArNDAxLDcgQEAgcHJpdmF0ZToKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIHNlc3Npb24gSUQgc28gd2UgY2FuIGlkZW50
aWZ5IHdoaWNoIGRpc2sgY2FjaGUgdG8gZGVsZXRlLgogICAgIHZvaWQgY2xlYXJEaXNrQ2FjaGUo
V2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKIAot
ICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVu
YW1lKTsKKyAgICB2b2lkIGRvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpOwogICAgIHZvaWQgcmVzdW1l
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgcmVzdW1lRGF0YSwgY29uc3QgU3RyaW5nJiBwYXRoLCBTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGUmJik7CiAgICAgdm9pZCBjYW5jZWxEb3dubG9hZChEb3dubG9hZElEKTsKICNpZiBQTEFU
Rk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGNmMjI1ZDNiZTdhNDVkOWMwZjg1MDc4ZDYw
MmRiMThkYjhkY2IyOTIuLjVhZGE2ZDhhNjZlNGM0NDQ3MTQ1ZTEwY2M5YzBhN2M1YmU0NTc2NzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbgpAQCAtNDcsNyArNDcsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJv
Y2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgRGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVE
YXRhVHlwZXMsIFdhbGxUaW1lIG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAg
ICAgRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
T3B0aW9uU2V0PFdlYktpdDo6V2Vic2l0ZURhdGFUeXBlPiB3ZWJzaXRlRGF0YVR5cGVzLCBWZWN0
b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCBWZWN0b3I8U3RyaW5nPiBj
b29raWVIb3N0TmFtZXMsIFZlY3RvcjxTdHJpbmc+IEhTVFNDYWNoZUhvc3ROYW1lcywgdWludDY0
X3QgY2FsbGJhY2tJRCkKIAotICAgIERvd25sb2FkUmVxdWVzdChQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCwgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQorICAgIERvd25sb2FkUmVx
dWVzdChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9h
ZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgZW51bTpib29sIFdlYktpdDo6
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwg
U3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lKQogICAgIFJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIElQQzo6RGF0YVJl
ZmVyZW5jZSByZXN1bWVEYXRhLCBTdHJpbmcgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKICAgICBDYW5jZWxEb3dubG9hZChXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkKICNpZiBQTEFURk9STShDT0NPQSkKQEAgLTgwLDcg
KzgwLDcgQEAgbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogICAg
IFByZXBhcmVUb1N1c3BlbmQoYm9vbCBpc1N1c3BlbnNpb25JbW1pbmVudCkgLT4gKCkgQXN5bmMK
ICAgICBQcm9jZXNzRGlkUmVzdW1lKCkKIAotICAgIFByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFVSTCB1cmwsIFN0cmluZyB1c2VyQWdlbnQsIGVudW06dWludDhfdCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSk7Cisg
ICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5n
IHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5
IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBlbnVtOmJvb2wgV2ViS2l0OjpOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogI2lmIEVOQUJM
RShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgQ2xlYXJQcmV2YWxlbnRSZXNvdXJjZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291
cmNlRG9tYWluKSAtPiAoKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDA0NWE4NmEyMDFmYWVjOTU4
N2ZkNGFjYzI4ZTQ5YTVlMTRjYjJmNGIuLmU3ZjU5YTNlZWY0MGJkNWI0MTc2NzY3ZjY2ZDg0NDNh
ODkyYTk1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKICAgICB9CiAKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJyZXRyaWV2ZUNh
Y2hlRW50cnk6IENoZWNraW5nIHRoZSBIVFRQIGRpc2sgY2FjaGUiKTsKLSAgICBtX2NhY2hlLT5y
ZXRyaWV2ZShyZXF1ZXN0LCBnbG9iYWxGcmFtZUlEKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0
byBlbnRyeSwgYXV0byBpbmZvKSBtdXRhYmxlIHsKKyAgICBtX2NhY2hlLT5yZXRyaWV2ZShyZXF1
ZXN0LCBnbG9iYWxGcmFtZUlEKCksIG1fcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcXVlc3QgPSBS
ZXNvdXJjZVJlcXVlc3QgeyByZXF1ZXN0IH1dKGF1dG8gZW50cnksIGF1dG8gaW5mbykgbXV0YWJs
ZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQ2
Niw3ICs0NjYsNyBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udmVydFRvRG93bmxv
YWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdQogCiAgICAgLy8gVGhpcyBjYW4g
aGFwcGVuIGlmIHRoZSByZXNvdXJjZSBjYW1lIGZyb20gdGhlIGRpc2sgY2FjaGUuCiAgICAgaWYg
KCFtX25ldHdvcmtMb2FkKSB7Ci0gICAgICAgIG1fY29ubmVjdGlvbi0+bmV0d29ya1Byb2Nlc3Mo
KS5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCgpLCBkb3dubG9hZElE
LCByZXF1ZXN0KTsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2VzcygpLmRvd25s
b2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklEKCksIGRvd25sb2FkSUQsIHJlcXVl
c3QsIG1fcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAg
YWJvcnQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2Vy
dmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwCmluZGV4IGYxODYzYWQ1MWFjOWE3MzU4ZmE1
ZjM3NmViMzk1Njc2OWViMzU4YWEuLmY2ZWZiZThjOWI2NWYyNzE2NjAwMzdjNGRiMDQxMDIwZTUw
Yzg2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9TZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9h
ZGVyLmNwcApAQCAtNTksOCArNTksOCBAQCBTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6
U2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIoTmV0d29ya1Nlc3Npb24mIHNlcwogICAgIGlm
IChzZXNzaW9uLmNhY2hlKCkpIHsKICAgICAgICAgLy8gV2Ugc2V0IGNhY2hlIHBvbGljeSB0byBk
aXNhYmxlIHNwZWN1bGF0aXZlIGxvYWRpbmcvYXN5bmMgcmV2YWxpZGF0aW9uIGZyb20gdGhlIGNh
Y2hlLgogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlc291cmNlUmVxdWVzdENhY2hl
UG9saWN5OjpSZXR1cm5DYWNoZURhdGFEb250TG9hZCk7Ci0gICAgICAgIAotICAgICAgICBzZXNz
aW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xvYmFsRnJhbWVJ
RCB7IH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCwgc2hv
dWxkUmVmcmVzaENhY2hlXShhdXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJsZSB7CisKKyAgICAg
ICAgc2Vzc2lvbi5jYWNoZSgpLT5yZXRyaWV2ZShyZXF1ZXN0LCBOZXR3b3JrQ2FjaGU6Okdsb2Jh
bEZyYW1lSUQgeyB9LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8sIFt0aGlzLCB3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCwgc2hvdWxkUmVmcmVzaENhY2hlXShh
dXRvJiYgZW50cnksIGF1dG8mJikgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghbV9zZXNzaW9uKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0FzeW5jUmV2
YWxpZGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNS
ZXZhbGlkYXRpb24uY3BwCmluZGV4IDhkNjYwZDJlNWIzNzBlMmI4MWZmNWUyNDQ5ZDdhNTBlMTA4
NTFiOGMuLmFjZjdlNmUyODFkYTMwNTg2MGJkNGFjYmRjN2Y5NzY5YWYxNDZiYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlk
YXRpb24uY3BwCkBAIC02Niw3ICs2Niw3IEBAIHZvaWQgQXN5bmNSZXZhbGlkYXRpb246OnN0YWxl
V2hpbGVSZXZhbGlkYXRlRW5kaW5nKCkKICAgICAgICAgbV9jb21wbGV0aW9uSGFuZGxlcihSZXN1
bHQ6OlRpbWVvdXQpOwogfQogCi1Bc3luY1JldmFsaWRhdGlvbjo6QXN5bmNSZXZhbGlkYXRpb24o
Q2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6
OkVudHJ5PiYmIGVudHJ5LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYgaGFuZGxl
cikKK0FzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlvbihDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYgZW50cnks
IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4s
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5kbGVyKQogICAgIDogbV90aW1l
cigqdGhpcywgJkFzeW5jUmV2YWxpZGF0aW9uOjpzdGFsZVdoaWxlUmV2YWxpZGF0ZUVuZGluZykK
ICAgICAsIG1fY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShoYW5kbGVyKSkKIHsKQEAgLTc3LDcg
Kzc3LDcgQEAgQXN5bmNSZXZhbGlkYXRpb246OkFzeW5jUmV2YWxpZGF0aW9uKENhY2hlJiBjYWNo
ZSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwKICAgICBhdXRvIHJlc3BvbnNlTWF4U3Rh
bGVuZXNzID0gZW50cnktPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sU3RhbGVXaGlsZVJldmFsaWRh
dGUoKTsKICAgICBBU1NFUlQocmVzcG9uc2VNYXhTdGFsZW5lc3MpOwogICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KCpyZXNwb25zZU1heFN0YWxlbmVzcyArIChsaWZldGltZSAtIGFnZSkpOwotICAg
IG1fbG9hZCA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihjYWNoZSwgZnJhbWVJRCwgV1RG
TW92ZShyZXZhbGlkYXRpb25SZXF1ZXN0KSwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXksIHJl
dmFsaWRhdGlvblJlcXVlc3RdKGF1dG8mJiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgbV9sb2Fk
ID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KGNhY2hlLCBmcmFtZUlELCBXVEZNb3ZlKHJl
dmFsaWRhdGlvblJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5KSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdF0oYXV0byYmIHJldmFsaWRh
dGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlk
YXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAgICAgICAgIEFTU0VSVCghcmV2YWxpZGF0
ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXkoKSA9PSBrZXkpOwogICAgICAgICBpZiAo
bV9jb21wbGV0aW9uSGFuZGxlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaAppbmRleCAwZWM4OWY3OGMwZTM3YTI5MzRl
YjFlMTU4NDQ3YjgyODcyYWIzODQwLi5kYzc4YjY2OGE3Yjg2NjA1NzYxZjY4Zjg4MjJjNzhhNjc5
M2RhMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL0Fz
eW5jUmV2YWxpZGF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9Bc3luY1JldmFsaWRhdGlvbi5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
VGltZW91dCwKICAgICAgICAgU3VjY2VzcywKICAgICB9OwotICAgIEFzeW5jUmV2YWxpZGF0aW9u
KENhY2hlJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOworICAgIEFzeW5jUmV2YWxpZGF0aW9uKENhY2hlJiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHN0
ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiYmLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPiYmKTsKICAgICB2b2lkIGNh
bmNlbCgpOwogCiAgICAgY29uc3QgU3BlY3VsYXRpdmVMb2FkJiBsb2FkKCkgY29uc3QgeyByZXR1
cm4gKm1fbG9hZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGUuY3BwCmluZGV4IGUyYzg2YWFmZDZmNGEzNTczZjE2YmY5MjQ3ZmM1ZWMx
MjQ3YWJlNTguLjcyYmE2YmZmM2RhZTMwZGM5MGMxNTM0MTA5ZWY3YjZhNDc3YzI0NTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5j
cHAKQEAgLTMzNywxMyArMzM3LDEzIEBAIHN0YXRpYyBib29sIGlubGluZSBjYW5SZXF1ZXN0VXNl
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSCiAjZW5kaWYK
IAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NUQUxFX1dISUxFX1JFVkFMSURBVEUpCi12b2lk
IENhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYga2V5LCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+JiYgZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQp
Cit2b2lkIENhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYga2V5
LCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+JiYgZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZy
YW1lSUQsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiB7CiAgICAgbV9wZW5kaW5nQXN5bmNSZXZhbGlkYXRpb25zLmVuc3VyZShrZXksIFsm
XSB7CiAgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9wZW5kaW5nQXN5bmNSZXZhbGlkYXRpb25C
eVBhZ2UuZW5zdXJlKGZyYW1lSUQsIFtdIHsKICAgICAgICAgICAgIHJldHVybiBXZWFrSGFzaFNl
dDxBc3luY1JldmFsaWRhdGlvbj4oKTsKICAgICAgICAgfSk7Ci0gICAgICAgIGF1dG8gcmV2YWxp
ZGF0aW9uID0gbWFrZVVuaXF1ZTxBc3luY1JldmFsaWRhdGlvbj4oKnRoaXMsIGZyYW1lSUQsIHJl
cXVlc3QsIFdURk1vdmUoZW50cnkpLCBbdGhpcywga2V5XShhdXRvIHJlc3VsdCkgeworICAgICAg
ICBhdXRvIHJldmFsaWRhdGlvbiA9IG1ha2VVbmlxdWU8QXN5bmNSZXZhbGlkYXRpb24+KCp0aGlz
LCBmcmFtZUlELCByZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgW3RoaXMsIGtleV0oYXV0byByZXN1bHQpIHsKICAgICAgICAgICAgIEFTU0VSVCht
X3BlbmRpbmdBc3luY1JldmFsaWRhdGlvbnMuY29udGFpbnMoa2V5KSk7CiAgICAgICAgICAgICBt
X3BlbmRpbmdBc3luY1JldmFsaWRhdGlvbnMucmVtb3ZlKGtleSk7CiAgICAgICAgICAgICBMT0co
TmV0d29ya0NhY2hlLCAiKE5ldHdvcmtQcm9jZXNzKSBBc3luYyByZXZhbGlkYXRpb24gY29tcGxl
dGVkIGZvciAnJXMnIHdpdGggcmVzdWx0ICVkIiwga2V5LmlkZW50aWZpZXIoKS51dGY4KCkuZGF0
YSgpLCBzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdCkpOwpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQg
Q2FjaGU6OmJyb3dzaW5nQ29udGV4dFJlbW92ZWQoV2ViUGFnZVByb3h5SWRlbnRpZmllciB3ZWJQ
YWdlUHJveHlJRCwgV2ViQ29yCiAjZW5kaWYKIH0KIAotdm9pZCBDYWNoZTo6cmV0cmlldmUoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBHbG9iYWxGcmFtZUlE
JiBmcmFtZUlELCBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIp
Cit2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIFJldHJpZXZlQ29tcGxldGlvbkhh
bmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQocmVxdWVzdC51cmwoKS5w
cm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwogCkBAIC0zNzksNyArMzc5LDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZB
TElEQVRJT04pCiAgICAgYm9vbCBjYW5Vc2VTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbiA9IG1fc3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlciAmJiBjYW5SZXF1ZXN0VXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24ocmVxdWVzdCk7CiAgICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKQotICAg
ICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnJlZ2lzdGVyTG9hZChmcmFtZUlELCByZXF1
ZXN0LCBzdG9yYWdlS2V5KTsKKyAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZWdp
c3RlckxvYWQoZnJhbWVJRCwgcmVxdWVzdCwgc3RvcmFnZUtleSwgaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbik7CiAjZW5kaWYKIAogICAgIGF1dG8gcmV0cmlldmVEZWNpc2lvbiA9IG1ha2VS
ZXRyaWV2ZURlY2lzaW9uKHJlcXVlc3QpOwpAQCAtNDAxLDcgKzQwMSw3IEBAIHZvaWQgQ2FjaGU6
OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
R2xvYmFsRnJhbWVJCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX3N0b3JhZ2UtPnJldHJpZXZlKHN0
b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgbmV0d29ya1Byb2Nlc3MgPSBtYWtl
UmVmKG5ldHdvcmtQcm9jZXNzKCkpLCBzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwgZnJhbWVJRF0o
YXV0byByZWNvcmQsIGF1dG8gdGltaW5ncykgbXV0YWJsZSB7CisgICAgbV9zdG9yYWdlLT5yZXRy
aWV2ZShzdG9yYWdlS2V5LCBwcmlvcml0eSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgaW5mbyA9IFdURk1vdmUoaW5mbyksIHN0b3JhZ2VLZXksIG5ldHdvcmtQcm9jZXNz
ID0gbWFrZVJlZihuZXR3b3JrUHJvY2VzcygpKSwgc2Vzc2lvbklEID0gbV9zZXNzaW9uSUQsIGZy
YW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5dKGF1dG8gcmVjb3JkLCBhdXRvIHRp
bWluZ3MpIG11dGFibGUgewogICAgICAgICBpbmZvLnN0b3JhZ2VUaW1pbmdzID0gdGltaW5nczsK
IAogICAgICAgICBpZiAoIXJlY29yZCkgewpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgQ2FjaGU6
OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
R2xvYmFsRnJhbWVJCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVfUkVWQUxJ
REFURSkKICAgICAgICAgICAgIGF1dG8gZW50cnlDb3B5ID0gbWFrZVVuaXF1ZTxFbnRyeT4oKmVu
dHJ5KTsKICAgICAgICAgICAgIGVudHJ5Q29weS0+c2V0TmVlZHNWYWxpZGF0aW9uKHRydWUpOwot
ICAgICAgICAgICAgc3RhcnRBc3luY1JldmFsaWRhdGlvbklmTmVlZGVkKHJlcXVlc3QsIHN0b3Jh
Z2VLZXksIFdURk1vdmUoZW50cnlDb3B5KSwgZnJhbWVJRCk7CisgICAgICAgICAgICBzdGFydEFz
eW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQocmVxdWVzdCwgc3RvcmFnZUtleSwgV1RGTW92ZShlbnRy
eUNvcHkpLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICNlbHNlCiAg
ICAgICAgICAgICBVTlVTRURfUEFSQU0oZnJhbWVJRCk7CiAgICAgICAgICAgICBVTlVTRURfUEFS
QU0odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZS5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuaAppbmRleCBhMDc0Yzk5MzA2MzUxNjI3ZTgyODBkNTQ2MTRmNGQ2MTQ4MTE0ODQ0
Li5hMGI4Mjc5ZWY5ODIzNjdkZWQyNzA1NjU0ZjAzMTZhYjIzNDgxNWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKQEAgLTI3LDYg
KzI3LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUVudHJ5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya0NhY2hlU3RvcmFnZS5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVk
ZSAiU2hhcmVhYmxlUmVzb3VyY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHlJZGVudGlmaWVy
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KQEAgLTE3MCw3ICsxNzEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIH07CiAg
ICAgdXNpbmcgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciA9IEZ1bmN0aW9uPHZvaWQoc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgUmV0cmlldmVJbmZvJik+OwotICAgIHZvaWQgcmV0cmll
dmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgR2xvYmFsRnJhbWVJRCYs
IFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CisgICAgdm9pZCByZXRyaWV2ZShjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4sIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgUmVmUHRyPFdlYkNvcmU6OlNoYXJl
ZEJ1ZmZlcj4mJiwgRnVuY3Rpb248dm9pZChNYXBwZWRCb2R5Jik+JiYgPSBudWxscHRyKTsKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlUmVkaXJlY3QoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYgcmVkaXJlY3RSZXF1ZXN0LCBPcHRpb25hbDxTZWNvbmRz
PiBtYXhBZ2VDYXApOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gdXBkYXRlKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEVudHJ5JiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYgdmFsaWRhdGluZ1Jlc3BvbnNlKTsKQEAgLTIwMiw3ICsyMDMsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NUQUxFX1dISUxFX1JF
VkFMSURBVEUpCi0gICAgdm9pZCBzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgTmV0d29ya0NhY2hlOjpLZXkmLCBzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+JiYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmKTsKKyAgICB2b2lkIHN0
YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYsIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBicm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIFdlYkNvcmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCmluZGV4IDcwOGQ0OGMyNzU3N2Y4MzFj
NjQ4NTEyMmFkNzNkZjNmNDA0YTNkOGEuLjI5ZDczMWEwNWJkNzc0MTJmODVhYWQzNWZiZjFiNzAw
MjJhMjI3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCi1TcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUsIGNv
bnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50cnlG
b3JWYWxpZGF0aW9uLCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQorU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmIGNhY2hlLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5PiBjYWNoZUVudHJ5
Rm9yVmFsaWRhdGlvbiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbiwgUmV2YWxpZGF0aW9uQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKICAgICA6IG1fY2FjaGUoY2FjaGUpCiAgICAgLCBtX2NvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQogICAgICwgbV9vcmlnaW5hbFJlcXVlc3QocmVx
dWVzdCkKQEAgLTU5LDYgKzU5LDcgQEAgU3BlY3VsYXRpdmVMb2FkOjpTcGVjdWxhdGl2ZUxvYWQo
Q2FjaGUmIGNhY2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBnbG9iYWxGcmFtZUkKICAgICBwYXJh
bWV0ZXJzLmNvbnRlbnRTbmlmZmluZ1BvbGljeSA9IENvbnRlbnRTbmlmZmluZ1BvbGljeTo6RG9O
b3RTbmlmZkNvbnRlbnQ7CiAgICAgcGFyYW1ldGVycy5jb250ZW50RW5jb2RpbmdTbmlmZmluZ1Bv
bGljeSA9IENvbnRlbnRFbmNvZGluZ1NuaWZmaW5nUG9saWN5OjpTbmlmZjsKICAgICBwYXJhbWV0
ZXJzLnJlcXVlc3QgPSBtX29yaWdpbmFsUmVxdWVzdDsKKyAgICBwYXJhbWV0ZXJzLmlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOwogICAg
IG1fbmV0d29ya0xvYWQgPSBtYWtlVW5pcXVlPE5ldHdvcmtMb2FkPigqdGhpcywgbnVsbHB0ciwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgKmNhY2hlLm5ldHdvcmtQcm9jZXNzKCkubmV0d29ya1Nlc3Np
b24oY2FjaGUuc2Vzc2lvbklEKCkpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2Fk
LmgKaW5kZXggY2VjZDVmZmZiNGNjODY3N2Q4NWE3OGU0YjFiNmM4MzNiNzU0OTI1MS4uYTEyZjJl
ZmM0ZGQyODc0NjFmOTQzZWNhZWYzM2ZkZTYwMzUyNTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1
bGF0aXZlTG9hZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlLmgi
CiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJOZXR3b3JrTG9hZENs
aWVudC5oIgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZVJlcXVlc3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NoYXJlZEJ1ZmZlci5oPgpAQCAtNDUsNyArNDYsNyBAQCBjbGFz
cyBTcGVjdWxhdGl2ZUxvYWQgZmluYWwgOiBwdWJsaWMgTmV0d29ya0xvYWRDbGllbnQgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHVzaW5nIFJldmFsaWRhdGlv
bkNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChzdGQ6OnVuaXF1ZV9w
dHI8TmV0d29ya0NhY2hlOjpFbnRyeT4pPjsKLSAgICBTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmLCBj
b25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3Rk
Ojp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+LCBSZXZhbGlkYXRpb25Db21wbGV0aW9u
SGFuZGxlciYmKTsKKyAgICBTcGVjdWxhdGl2ZUxvYWQoQ2FjaGUmLCBjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwgc3RkOjp1bmlxdWVfcHRyPE5l
dHdvcmtDYWNoZTo6RW50cnk+LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgUmV2YWxpZGF0
aW9uQ29tcGxldGlvbkhhbmRsZXImJik7CiAKICAgICB2aXJ0dWFsIH5TcGVjdWxhdGl2ZUxvYWQo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKaW5k
ZXggMzc3MzhkODIyYjg3MDNjNTQyNDRlNTg0MGJmYWViNGI4ZDA3YzFkNS4uMjA5ODM5MzRlNjk5
Zjk1ZDQ5MjMwOTM3OGY2NDEyZWFhM2IxOTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwCkBAIC0zNDUsNyArMzQ1LDcgQEAgYm9vbCBTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyOjpzaG91bGRSZWdpc3RlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXkpCit2b2lkIFNw
ZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiBm
cmFtZUlELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEtleSYgcmVzb3Vy
Y2VLZXksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4pCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQocmVx
dWVzdC51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpOwpAQCAtMzY5LDkgKzM2OSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZy
YW1lSUQmIGZyYW1lSUQsIGNvbnN0IFJlCiAgICAgICAgIG1fcGVuZGluZ0ZyYW1lTG9hZHMuYWRk
KGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWQuY29weVJlZigpKTsKIAogICAgICAgICAvLyBSZXRy
aWV2ZSB0aGUgc3VicmVzb3VyY2VzIGVudHJ5IGlmIGl0IGV4aXN0cyB0byBzdGFydCBzcGVjdWxh
dGl2ZSByZXZhbGlkYXRpb24gYW5kIHRvIHVwZGF0ZSBpdC4KLSAgICAgICAgcmV0cmlldmVTdWJy
ZXNvdXJjZXNFbnRyeShyZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxv
YWQgPSBXVEZNb3ZlKHBlbmRpbmdGcmFtZUxvYWQpXShzdGQ6OnVuaXF1ZV9wdHI8U3VicmVzb3Vy
Y2VzRW50cnk+IGVudHJ5KSB7CisgICAgICAgIHJldHJpZXZlU3VicmVzb3VyY2VzRW50cnkocmVz
b3VyY2VLZXksIFt0aGlzLCBmcmFtZUlELCBwZW5kaW5nRnJhbWVMb2FkID0gV1RGTW92ZShwZW5k
aW5nRnJhbWVMb2FkKSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oc3RkOjp1bmlxdWVf
cHRyPFN1YnJlc291cmNlc0VudHJ5PiBlbnRyeSkgewogICAgICAgICAgICAgaWYgKGVudHJ5KQot
ICAgICAgICAgICAgICAgIHN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oZnJhbWVJRCwgKmVu
dHJ5KTsKKyAgICAgICAgICAgICAgICBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKGZyYW1l
SUQsICplbnRyeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAKICAgICAgICAgICAg
IHBlbmRpbmdGcmFtZUxvYWQtPnNldEV4aXN0aW5nU3VicmVzb3VyY2VzRW50cnkoV1RGTW92ZShl
bnRyeSkpOwogICAgICAgICB9KTsKQEAgLTQ0OSw3ICs0NDksNyBAQCBib29sIFNwZWN1bGF0aXZl
TG9hZE1hbmFnZXI6OnNhdGlzZnlQZW5kaW5nUmVxdWVzdHMoY29uc3QgS2V5JiBrZXksIEVudHJ5
KiBlbnRyeQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJl
c291cmNlSW5mbywgRW50cnkqIGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQor
dm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0Rm9yU3VicmVzb3VyY2UoY29u
c3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIEVudHJ5KiBlbnRyeSwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICNpZiBFTkFCTEUoU0VSVkVSX1BSRUNPTk5FQ1Qp
CiAgICAgTmV0d29ya0xvYWRQYXJhbWV0ZXJzIHBhcmFtZXRlcnM7CkBAIC00NjEsNiArNDYxLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0Rm9yU3VicmVzb3VyY2Uo
Y29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWIKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGlu
Z1NuaWZmaW5nUG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwog
ICAgIHBhcmFtZXRlcnMuc2hvdWxkUHJlY29ubmVjdE9ubHkgPSBQcmVjb25uZWN0T25seTo6WWVz
OwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IGNvbnN0cnVjdFJldmFsaWRhdGlvblJlcXVlc3Qo
c3VicmVzb3VyY2VJbmZvLmtleSgpLCBzdWJyZXNvdXJjZUluZm8sIGVudHJ5KTsKKyAgICBwYXJh
bWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOwogICAgIG5ldyBQcmVjb25uZWN0VGFzayhtX2NhY2hlLm5ldHdvcmtQcm9jZXNz
KCksIG1fY2FjaGUuc2Vzc2lvbklEKCksIFdURk1vdmUocGFyYW1ldGVycyksIFtdKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImKSB7IH0pOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oc3Vi
cmVzb3VyY2VJbmZvKTsKQEAgLTQ2OSw3ICs0NzAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1h
bmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1
YgogI2VuZGlmCiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1
YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IGVudHJ5LCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQordm9p
ZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3Vi
cmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50
cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgQVNTRVJUKCFlbnRyeSB8
fCBlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogCkBAIC00ODQsMTIgKzQ4NSwxMiBAQCB2b2lk
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJy
ZXNvdXJjZUluZm8mIHN1YnJlcwogICAgIC8vIERlbGF5IGZpcnN0LXBhcnR5IHNwZWN1bGF0aXZl
IGxvYWRzIHVudGlsIHdlJ3ZlIHJlY2VpdmVkIHRoZSByZXNwb25zZSBmb3IgdGhlIG1haW4gcmVz
b3VyY2UsIGluIGNhc2UgdGhlIG1haW4gcmVzb3VyY2UKICAgICAvLyByZXNwb25zZSBzZXRzIGNv
b2tpZXMgdGhhdCBhcmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGxvYWRzLgogICAgIGlmIChwZW5k
aW5nTG9hZCAmJiAhcGVuZGluZ0xvYWQtPmRpZFJlY2VpdmVNYWluUmVzb3VyY2VSZXNwb25zZSgp
ICYmIHN1YnJlc291cmNlSW5mby5pc0ZpcnN0UGFydHkoKSkgewotICAgICAgICBwcmVjb25uZWN0
Rm9yU3VicmVzb3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBlbnRyeS5nZXQoKSwgZnJhbWVJRCk7Ci0g
ICAgICAgIHBlbmRpbmdMb2FkLT5hZGRQb3N0TWFpblJlc291cmNlUmVzcG9uc2VUYXNrKFt0aGlz
LCBzdWJyZXNvdXJjZUluZm8sIGVudHJ5ID0gV1RGTW92ZShlbnRyeSksIGZyYW1lSURdKCkgbXV0
YWJsZSB7CisgICAgICAgIHByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShzdWJyZXNvdXJjZUluZm8s
IGVudHJ5LmdldCgpLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKKyAg
ICAgICAgcGVuZGluZ0xvYWQtPmFkZFBvc3RNYWluUmVzb3VyY2VSZXNwb25zZVRhc2soW3RoaXMs
IHN1YnJlc291cmNlSW5mbywgZW50cnkgPSBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCwgaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmIChtX3Bl
bmRpbmdQcmVsb2Fkcy5jb250YWlucyhzdWJyZXNvdXJjZUluZm8ua2V5KCkpKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgcmV2YWxpZGF0ZVN1YnJlc291cmNlKHN1YnJl
c291cmNlSW5mbywgV1RGTW92ZShlbnRyeSksIGZyYW1lSUQpOworICAgICAgICAgICAgcmV2YWxp
ZGF0ZVN1YnJlc291cmNlKHN1YnJlc291cmNlSW5mbywgV1RGTW92ZShlbnRyeSksIGZyYW1lSUQs
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICB9KTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQ5OCw3ICs0OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlcwog
CiAgICAgTE9HKE5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUHJlbG9hZGluZywgIihOZXR3b3JrUHJv
Y2VzcykgU3BlY3VsYXRpdmVseSByZXZhbGlkYXRpbmcgJyVzJzoiLCBrZXkuaWRlbnRpZmllcigp
LnV0ZjgoKS5kYXRhKCkpOwogCi0gICAgYXV0byByZXZhbGlkYXRvciA9IG1ha2VVbmlxdWU8U3Bl
Y3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZhbGlkYXRpb25SZXF1ZXN0LCBXVEZN
b3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CisgICAgYXV0byByZXZhbGlk
YXRvciA9IG1ha2VVbmlxdWU8U3BlY3VsYXRpdmVMb2FkPihtX2NhY2hlLCBmcmFtZUlELCByZXZh
bGlkYXRpb25SZXF1ZXN0LCBXVEZNb3ZlKGVudHJ5KSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbiwgW3RoaXMsIGtleSwgcmV2YWxpZGF0aW9uUmVxdWVzdCwgZnJhbWVJRF0oc3RkOjp1bmlx
dWVfcHRyPEVudHJ5PiByZXZhbGlkYXRlZEVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghcmV2YWxp
ZGF0ZWRFbnRyeSB8fCAhcmV2YWxpZGF0ZWRFbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpOwogICAg
ICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgcmV2YWxpZGF0ZWRFbnRyeS0+a2V5KCkg
PT0ga2V5KTsKIApAQCAtNTU0LDEzICs1NTUsMTMgQEAgc3RhdGljIGJvb2wgY2FuUmV2YWxpZGF0
ZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgY29uc3QgRW50cnkqIGUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJl
bG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291
cmNlSW5mbywgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCkKK3ZvaWQgU3BlY3VsYXRpdmVM
b2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KGNvbnN0IEtleSYga2V5LCBjb25zdCBTdWJyZXNvdXJj
ZUluZm8mIHN1YnJlc291cmNlSW5mbywgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsK
ICAgICBpZiAobV9wZW5kaW5nUHJlbG9hZHMuY29udGFpbnMoa2V5KSkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fcGVuZGluZ1ByZWxvYWRzLmFkZChrZXksIG51bGxwdHIpOwogICAgIAotICAgIHJl
dHJpZXZlRW50cnlGcm9tU3RvcmFnZShzdWJyZXNvdXJjZUluZm8sIFt0aGlzLCBrZXksIHN1YnJl
c291cmNlSW5mbywgZnJhbWVJRF0oc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgeworICAg
IHJldHJpZXZlRW50cnlGcm9tU3RvcmFnZShzdWJyZXNvdXJjZUluZm8sIFt0aGlzLCBrZXksIHN1
YnJlc291cmNlSW5mbywgZnJhbWVJRCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oc3Rk
Ojp1bmlxdWVfcHRyPEVudHJ5PiBlbnRyeSkgewogICAgICAgICBBU1NFUlQoIW1fcGVuZGluZ1By
ZWxvYWRzLmdldChrZXkpKTsKICAgICAgICAgYm9vbCByZW1vdmVkID0gbV9wZW5kaW5nUHJlbG9h
ZHMucmVtb3ZlKGtleSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7
CkBAIC01NzMsNyArNTc0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVsb2Fk
RW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYKICAgICAgICAgCiAg
ICAgICAgIGlmICghZW50cnkgfHwgZW50cnktPm5lZWRzVmFsaWRhdGlvbigpKSB7CiAgICAgICAg
ICAgICBpZiAoY2FuUmV2YWxpZGF0ZShzdWJyZXNvdXJjZUluZm8sIGVudHJ5LmdldCgpKSkKLSAg
ICAgICAgICAgICAgICByZXZhbGlkYXRlU3VicmVzb3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBXVEZN
b3ZlKGVudHJ5KSwgZnJhbWVJRCk7CisgICAgICAgICAgICAgICAgcmV2YWxpZGF0ZVN1YnJlc291
cmNlKHN1YnJlc291cmNlSW5mbywgV1RGTW92ZShlbnRyeSksIGZyYW1lSUQsIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAg
ICAgIApAQCAtNTgxLDEyICs1ODIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpw
cmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYKICAgICB9
KTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZlUmV2
YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0VudHJ5
JiBlbnRyeSkKK3ZvaWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6c3RhcnRTcGVjdWxhdGl2ZVJl
dmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBTdWJyZXNvdXJjZXNFbnRy
eSYgZW50cnksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4pCiB7CiAgICAgZm9yIChhdXRvJiBzdWJyZXNvdXJjZUluZm8gOiBlbnRyeS5zdWJy
ZXNvdXJjZXMoKSkgewogICAgICAgICBhdXRvJiBrZXkgPSBzdWJyZXNvdXJjZUluZm8ua2V5KCk7
CiAgICAgICAgIGlmICghc3VicmVzb3VyY2VJbmZvLmlzVHJhbnNpZW50KCkpCi0gICAgICAgICAg
ICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQpOworICAgICAgICAg
ICAgcHJlbG9hZEVudHJ5KGtleSwgc3VicmVzb3VyY2VJbmZvLCBmcmFtZUlELCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBMT0coTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQcm9jZXNzKSBOb3QgcHJl
bG9hZGluZyAnJXMnIGJlY2F1c2UgaXQgaXMgbWFya2VkIGFzIHRyYW5zaWVudCIsIGtleS5pZGVu
dGlmaWVyKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgICAgICBtX25vdFByZWxvYWRlZEVudHJp
ZXMuYWRkKGtleSwgbWFrZVVuaXF1ZTxFeHBpcmluZ0VudHJ5PihbdGhpcywga2V5LCBmcmFtZUlE
XSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCmluZGV4IDI5
Zjc2MDk3NTlhY2IyZDQxMTA3MzZjNjc3OWM4YjM4ZGMzYTJhOGYuLjk3ODA0NjlmZTE1YTRjYmJl
YTFiM2UwMzBlYWUxZDhiZTMwMTEzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRp
dmVMb2FkTWFuYWdlci5oCkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBT
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyKENhY2hlJiwgU3RvcmFnZSYpOwogICAgIH5TcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyKCk7CiAKLSAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFt
ZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJj
ZUtleSk7CisgICAgdm9pZCByZWdpc3RlckxvYWQoY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEtleSYgcmVzb3VyY2VLZXksIE5hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKICAgICB2b2lkIHJlZ2lzdGVyTWFpblJlc291cmNlTG9h
ZFJlc3BvbnNlKGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7CiAKICAgICB0eXBlZGVm
IEZ1bmN0aW9uPHZvaWQgKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4pPiBSZXRyaWV2ZUNvbXBsZXRp
b25IYW5kbGVyOwpAQCAtNjIsMTMgKzYyLDEzIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgYm9v
bCBzaG91bGRSZWdpc3RlckxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdm9pZCBhZGRQcmVsb2FkZWRFbnRyeShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBH
bG9iYWxGcmFtZUlEJiwgT3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiYmIHJldmFs
aWRhdGlvblJlcXVlc3QgPSBXVEY6Om51bGxvcHQpOwotICAgIHZvaWQgcHJlbG9hZEVudHJ5KGNv
bnN0IEtleSYsIGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmKTsK
KyAgICB2b2lkIHByZWxvYWRFbnRyeShjb25zdCBLZXkmLCBjb25zdCBTdWJyZXNvdXJjZUluZm8m
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAg
IHZvaWQgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIFJl
dHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJik7Ci0gICAgdm9pZCByZXZhbGlkYXRlU3VicmVzb3Vy
Y2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiwgY29uc3Qg
R2xvYmFsRnJhbWVJRCYpOwotICAgIHZvaWQgcHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0
IFN1YnJlc291cmNlSW5mbyYsIEVudHJ5KiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpOworICAgIHZv
aWQgcmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYsIHN0ZDo6dW5p
cXVlX3B0cjxFbnRyeT4sIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbik7CisgICAgdm9pZCBwcmVjb25uZWN0Rm9yU3VicmVzb3VyY2UoY29uc3QgU3VicmVz
b3VyY2VJbmZvJiwgRW50cnkqLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4pOwogICAgIGJvb2wgc2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkm
LCBFbnRyeSopOwogICAgIHZvaWQgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShjb25zdCBLZXkm
IHN0b3JhZ2VLZXksIFdURjo6RnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPFN1YnJlc291
cmNlc0VudHJ5Pik+JiYpOwotICAgIHZvaWQgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihj
b25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3VyY2VzRW50cnkmKTsKKyAgICB2b2lkIHN0YXJ0
U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYsIFN1YnJlc291cmNl
c0VudHJ5JiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogCiAgICAgc3RhdGljIGJvb2wg
Y2FuVXNlUHJlbG9hZGVkRW50cnkoY29uc3QgUHJlbG9hZGVkRW50cnkmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIGFjdHVhbFJlcXVlc3QpOwogICAgIHN0YXRpYyBib29sIGNhblVz
ZVBlbmRpbmdQcmVsb2FkKGNvbnN0IFNwZWN1bGF0aXZlTG9hZCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NGMyYTQxYmIxY2Q4
MTQzNjQ3NTZmYjU2YmI5M2MwZTJjN2Y5MGI5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaApAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitlbnVt
IGNsYXNzIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIDogYm9vbCB7IFllcywgTm8gfTsKKwor
fQorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJL
aXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51
bVZhbHVlczwKKyAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwKKyAg
ICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6WWVzLAorICAgICAgICBX
ZWJLaXQ6Ok5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObworICAgID47Cit9OworCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaAppbmRleCBmMzkwNGJhNTRjMzJlODM4N2Y2
MjRiZmE2ZGU5ZWQ5NzQyMzE1NjE5Li4wMDRjMzUzY2EyNGM3YmQ1M2I4Y2YzMTZjZTUyNzkxYmE1
ZWM2ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgKQEAgLTI2LDEyICsy
NiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEb3dubG9hZElELmgiCisjaW5jbHVk
ZSAiTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCIKICNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXNEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKLWVudW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4geyBZZXMsIE5vIH07CiBl
bnVtIGNsYXNzIE5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4geyBZZXMsIE5vfTsKIAog
c3RydWN0IFBvbGljeURlY2lzaW9uIHsKQEAgLTEwMSwxNCArMTAxLDYgQEAgc3RydWN0IFBvbGlj
eURlY2lzaW9uIHsKIAogbmFtZXNwYWNlIFdURiB7CiAKLXRlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbj4gewotICAgIHVzaW5nIHZh
bHVlcyA9IEVudW1WYWx1ZXM8Ci0gICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4sCi0gICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcywK
LSAgICAgICAgV2ViS2l0OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KLSAgICA+Owot
fTsKLQogdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4+IHsKICAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAogICAg
ICAgICBXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAppbmRleCAzZmFkMzNlNWI4YzBhZmNiYjlkNzZkOGIxMjUzZjlhMzdiY2YwNjM2Li5iNjkwMmU2
ODdjZTBjYjJmYTA5ZTVlYTE1MDA0NzQxZWNkYmRlN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE0
MzQsMTEgKzE0MzQsMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMb2NhbFN0b3Jh
Z2VEZXRhaWxzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGwKICAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRMb2NhbFN0b3JhZ2VPcmlnaW5E
ZXRhaWxzKHNlc3Npb25JRCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0
b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KQordm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5LCBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogICAgIGlmICghdXJs
LmlzVmFsaWQoKSB8fCAhdXJsLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSB8fCBTZWN1cml0eU9y
aWdpbjo6aXNMb2NhbEhvc3RPckxvb3BiYWNrSVBBZGRyZXNzKHVybC5ob3N0KCkpKQogICAgICAg
ICByZXR1cm47Ci0gICAgc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RU
byhzZXNzaW9uSUQsIHVybCwgdXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSksIDAp
OworICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVjb25uZWN0VG8oc2Vzc2lv
bklELCB1cmwsIHVzZXJBZ2VudCwgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW4pLCAwKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojp1
cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggOTE1OWM2MmI0M2QxZWQxYWY1
YTcyZjNkMDQ4NGUxMjQ3ZTc0ZmNkYS4uMDQ5MGQ3OWNmMDJiZjZiMGVhYzRmNGUwMmI0NGJlNTBk
N2M1NTQ0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTExMCw3ICsxMTAsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldExvY2FsU3RvcmFnZURldGFpbHMoUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6T3JpZ2luRGV0YWls
cz4mJik+JiYpOwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0
IFVSTCYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
KyAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3Qg
U3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKTsKIAogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAg
ICAgdm9pZCBjbGVhclByZXZhbGVudFJlc291cmNlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBSZWdp
c3RyYWJsZURvbWFpbiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiMDI4NTEzZTYwN2U4ZTQxYjFhYzZh
OTNmNGQyMzE2Zjg4ZGZkNTBjLi40M2UyOWVmNzY3NGE4NjhlYWIxYzdiYjg2YjhjMTI0YjZkOWQw
NTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQyOTYs
NyArNDI5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwcmVjb25uZWN0VG8oY29uc3QgVVJMJiB1
cmwpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBuZXR3b3JrUHJvY2VzcyA9IG1f
cHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5uZXR3b3JrUHJvY2VzcygpKQotICAgICAgICBuZXR3b3Jr
UHJvY2Vzcy0+cHJlY29ubmVjdFRvKHNlc3Npb25JRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBXZWJD
b3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeTo6VXNlKTsKKyAgICAgICAgbmV0d29ya1Byb2Nl
c3MtPnByZWNvbm5lY3RUbyhzZXNzaW9uSUQoKSwgdXJsLCB1c2VyQWdlbnQoKSwgV2ViQ29yZTo6
U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3k6OlVzZSwgbV9pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2
NF90IG5hdmlnYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5k
ZXggMzMzYzA0NmU4NDg5MGI4NTJhOWI0NjdlZTY4NDIwN2JiNTk0ZDI1My4uMDUyNmJiOTA3ZmJm
MTYxOWJmY2E5MzQ5OTJmN2Q2Yjg0ZGJjMTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKQEAgLTE3MTQsNiArMTcxNCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoYm9vbCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW5UZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIE5hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBjb25zdCB7IHJldHVy
biBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KIAogcHJpdmF0ZToKICAgICBXZWJQ
YWdlUHJveHkoUGFnZUNsaWVudCYsIFdlYlByb2Nlc3NQcm94eSYsIFJlZjxBUEk6OlBhZ2VDb25m
aWd1cmF0aW9uPiYmKTsKQEAgLTIyNzEsNyArMjI3Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBt
YWtlU3RvcmFnZVNwYWNlUmVxdWVzdChXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0
IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3Vy
cmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3Qg
ZXhwZWN0ZWRVc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCh1aW50NjRfdCk+JiYpOwogICAg
ICAgICAKICAgICB2b2lkIHNldElzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oYm9vbCBpc01h
aW5GcmFtZSwgY29uc3QgVVJMJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwotICAgIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSBj
b25zdCB7IHJldHVybiBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47IH0KICAgICBOYXZp
Z2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIGhhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmRE
b21haW4oKSBjb25zdCB7IHJldHVybiBtX2hhc05hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21h
aW47IH0KICAgICAgICAgCiAgICAgY29uc3QgSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggZTg0MGRhNTFhZTFk
YjMxMGI4NTE2MGI3YWJjODYwMmI0OWMwMDRjZi4uODJhYWIxMGRhNWFlZDUwMWQxZjViYTMyMGVm
ZGIwN2ExNDU3ZDMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmNwcApAQCAtMTM1Nyw4ICsxMzU3LDExIEBAIERvd25sb2FkUHJveHkmIFdlYlByb2Nlc3NQb29s
Ojpkb3dubG9hZChXZWJzaXRlRGF0YVN0b3JlJiBkYXRhU3RvcmUsIFdlYlBhZ2VQcm94CiAgICAg
YXV0byYgZG93bmxvYWRQcm94eSA9IGNyZWF0ZURvd25sb2FkUHJveHkoZGF0YVN0b3JlLCByZXF1
ZXN0LCBpbml0aWF0aW5nUGFnZSwgeyB9KTsKICAgICBQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQg
PSBkYXRhU3RvcmUuc2Vzc2lvbklEKCk7CiAKLSAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpCisgICAg
TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNBcHBCb3VuZCA9IE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluOjpObzsKKyAgICBpZiAoaW5pdGlhdGluZ1BhZ2UpIHsKICAgICAgICAgaW5pdGlh
dGluZ1BhZ2UtPmhhbmRsZURvd25sb2FkUmVxdWVzdChkb3dubG9hZFByb3h5KTsKKyAgICAgICAg
aXNBcHBCb3VuZCA9IGluaXRpYXRpbmdQYWdlLT5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
KCk7CisgICAgfQogCiAgICAgaWYgKG5ldHdvcmtQcm9jZXNzKCkpIHsKICAgICAgICAgUmVzb3Vy
Y2VSZXF1ZXN0IHVwZGF0ZWRSZXF1ZXN0KHJlcXVlc3QpOwpAQCAtMTM3Nyw3ICsxMzgwLDcgQEAg
RG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKFdlYnNpdGVEYXRhU3RvcmUm
IGRhdGFTdG9yZSwgV2ViUGFnZVByb3gKICAgICAgICAgICAgICAgICB1cGRhdGVkUmVxdWVzdC5z
ZXRIVFRQVXNlckFnZW50KFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgdXBkYXRlZFJlcXVlc3Quc2V0SXNUb3BTaXRlKGZhbHNlKTsKLSAgICAg
ICAgbmV0d29ya1Byb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRvd25s
b2FkUmVxdWVzdChzZXNzaW9uSUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCB1cGRhdGVk
UmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpLCAwKTsKKyAgICAgICAgbmV0d29ya1Byb2Nlc3Mo
KS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkRvd25sb2FkUmVxdWVzdChzZXNzaW9u
SUQsIGRvd25sb2FkUHJveHkuZG93bmxvYWRJRCgpLCB1cGRhdGVkUmVxdWVzdCwgaXNBcHBCb3Vu
ZCwgc3VnZ2VzdGVkRmlsZW5hbWUpLCAwKTsKICAgICAgICAgcmV0dXJuIGRvd25sb2FkUHJveHk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAxYjhhMzMzNDIzZTNiNmIwZGQwOWM0Y2UxNjAyMjkxMmM3MDMwZWJkLi5mMWI2
MTAzM2QwNGQ3ZWFiNjM0NGMxMGJhMmExMjJiNjE4ZWNhNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1NSw2ICs5NTUsNyBAQAog
CQk0NkYzOEU4QzI0MTZFNjczMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjM4RThCMjQx
NkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovOyB9OwogCQk0NkY5
QjI2MzIzNTI2RUYzMDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkY5QjI2MjIzNTI2RUQw
MDA2RkU1RkEgLyogV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi87IH07CiAJCTQ5NjBBM0JE
MjNDNTJBRkQwMDk2MTg0MiAvKiBXZWJWaWV3Q2F0ZWdvcnkuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5NjBBM0JDMjNDNTI4NjQwMDk2MTg0MiAvKiBX
ZWJWaWV3Q2F0ZWdvcnkuaCAqLzsgfTsKKwkJNDk3M0RGNDgyNDIyOTQxRjAwRTRDMjZBIC8qIE5h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCAqLzsgfTsKIAkJNDlCQ0ExOTIyM0ExNzc2NjAwMjhBODM2IC8qIEFQ
SVJlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0OUJDQTE5MTIzQTE3NzY2MDAyOEE4MzYgLyogQVBJ
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLzsgfTsKIAkJNDlCQ0ExOTUyM0Ex
OENGRDAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ5QkNB
MTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBfV0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0
eUludGVybmFsLmggKi87IH07CiAJCTQ5QkNBMTk3MjNBMTkzMEQwMDI4QTgzNiAvKiBBUElSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291
cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5LmggKi87IH07CkBAIC0zNTU4LDYgKzM1NTksNyBA
QAogCQk0NkYzOEU4QjI0MTZFNjZEMDA1OTM3NUEgLyogUnVubmluZ0JvYXJkU2VydmljZXNTUEku
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVubmluZ0JvYXJkU2VydmljZXNT
UEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDZGOUIyNjIyMzUyNkVEMDAwNkZF
NUZBIC8qIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDk2MEEzQkMyM0M1Mjg2NDAwOTYxODQyIC8qIFdlYlZpZXdDYXRlZ29yeS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJWaWV3Q2F0ZWdvcnkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDk3M0RGNDcyNDIyOTQxRjAwRTRDMjZBIC8qIE5hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5QkNBMTkwMjNBMTc1NDkwMDI4QTgzNiAvKiBf
V0tSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlyc3RQYXJ0eUludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0ExOTEyM0ExNzc2NjAwMjhBODM2IC8qIEFQSVJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVJlc291
cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5QkNBMTk2MjNBMThGNjIwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VGhpcmRQYXJ0eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElSZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhp
cmRQYXJ0eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTk5Nyw2ICs1OTk5LDcg
QEAKIAkJCQkzMUVBMjVEMzEzNEY3OEQ2MDA1QjE0NTIgLyogTmF0aXZlV2ViTW91c2VFdmVudC5o
ICovLAogCQkJCTI2MzE3MkNFMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50
LmggKi8sCiAJCQkJREY1OEM2MzExMzcxQUM1ODAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZl
bnQuaCAqLywKKwkJCQk0OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4uaCAqLywKIAkJCQkxQURDQjg2ODE4OTgzMUIzMDAyMkVFNUEgLyogTmF2aWdh
dGlvbkFjdGlvbkRhdGEuY3BwICovLAogCQkJCTFBRENCODY5MTg5ODMxQjMwMDIyRUU1QSAvKiBO
YXZpZ2F0aW9uQWN0aW9uRGF0YS5oICovLAogCQkJCTVDRDc0OEI1MjNDOEVCMTkwMDkyQTlCNSAv
KiBOZXR3b3JrUmVzb3VyY2VMb2FkSWRlbnRpZmllci5oICovLApAQCAtMTA3OTQsNiArMTA3OTcs
NyBAQAogCQkJCUMwRTNBQTdDMTIwOUU4M0MwMEE0OUQwMSAvKiBNb2R1bGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTJENTAzNjZCMUJDREUxNzkwMEUyMEJCMyAvKiBOYXRpdmVXZWJHZXN0dXJlRXZl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2MzE3MkNGMThCNDY5NDkwMDY1QjlDMyAvKiBOYXRp
dmVXZWJUb3VjaEV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0OTczREY0ODI0MjI5NDFGMDBF
NEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFBRENCODZCMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9uRGF0YS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTdGRDMxODAyMkIzNTE1ODAwOEQwRThCIC8qIE5hdmlnYXRpb25TT0F1
dGhvcml6YXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUJDM0RGNjE4OTlFNDM3
MDA0RjA2MjYgLyogTmF2aWdhdGlvblN0YXRlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCA1YTM2OWY1NGRiZDcwYzM2ZWFhYWUzY2MyYjY4OTEwNGEwMjA1Yjg5Li4yOGY1MDljMjJj
Y2ZlYTg2OWQxYmI5NzU0NDc0MDFiMDlmNzVkM2NiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC03NTUsNiAr
NzU1LDcgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6cHJlY29ubmVjdFRvKFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFdlYlBhZ2UKICAgICBwYXJhbWV0ZXJzLnNob3VsZFJl
c3RyaWN0SFRUUFJlc3BvbnNlQWNjZXNzID0gc2hvdWxkUGVyZm9ybVNlY3VyaXR5Q2hlY2tzKCk7
CiAgICAgLy8gRklYTUU6IFVzZSB0aGUgcHJvcGVyIGRlc3RpbmF0aW9uIG9uY2UgYWxsIGZldGNo
IG9wdGlvbnMgYXJlIHBhc3NlZC4KICAgICBwYXJhbWV0ZXJzLm9wdGlvbnMuZGVzdGluYXRpb24g
PSBGZXRjaE9wdGlvbnM6OkRlc3RpbmF0aW9uOjpFbXB0eVN0cmluZzsKKyAgICBwYXJhbWV0ZXJz
LmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gPSB3ZWJQYWdlLmlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW4oKTsKIAogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UHJlY29ubmVjdFRvKHByZWNvbm5lY3Rpb25JZGVudGlm
aWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKaW5kZXggMjFiZDM3NTdkOTFiODY4NzdhNGUwNGVm
YjdmNTdhM2M3YzNiYmQ3Yi4uNWZhZmJlMjk0Nzk4MWYzMGI3MDY3NjUzNTQwZmRiMjczOGI5ZTIw
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcApA
QCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xp
Y3lEb3dubG9hZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJ
RCA9IHsgfTsKIAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6U3RhcnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0
LCBzdWdnZXN0ZWROYW1lKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJl
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpTdGFydERvd25sb2FkKHBvbGljeURvd25sb2Fk
SUQsIHJlcXVlc3QsICBwYWdlKCktPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSwgc3Vn
Z2VzdGVkTmFtZSksIDApOwogfQogCiB2b2lkIFdlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNl
TG9hZFRvRG93bmxvYWQoRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpA
QCAtMzA0LDcgKzMwNCw3IEBAIHZvaWQgV2ViRnJhbWU6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2Fk
VG9Eb3dubG9hZChEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIsCiAgICAgZWxzZQogICAg
ICAgICBtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciA9IDA7CiAKLSAgICB3ZWJQcm9jZXNzLmVu
c3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6Q29udmVydE1haW5SZXNvdXJjZUxvYWRU
b0Rvd25sb2FkKG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBwb2xpY3lEb3dubG9hZElELCBy
ZXF1ZXN0LCByZXNwb25zZSksIDApOworICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQobWFpblJl
c291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJlc3BvbnNl
LCBwYWdlKCktPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKSksIDApOwogfQogCiB2b2lk
IFdlYkZyYW1lOjphZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlIG1lc3NhZ2VTb3VyY2Us
IE1lc3NhZ2VMZXZlbCBtZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdWludDY0
X3QgcmVxdWVzdElEKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393907</attachid>
            <date>2020-03-18 14:48:00 -0700</date>
            <delta_ts>2020-03-18 15:36:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209246-20200318144800.patch</filename>
            <type>text/plain</type>
            <size>60365</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5Y2MzMTlhZmIzZWZmZjY2
MDdjOWZlZjExZWM0NDk1NjhhYmNlZDMuLmE0ZGQ1NGY5ZTA2N2U4NmFjZjExOTc5YTgzZGM5NmJh
ZTcwYmM4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjAtMDMtMTggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGZvciBzcGVjdWxhdGl2ZSBsb2FkcywgcHJlY29ubmVjdCB0
YXNrcyBhbmQgZG93bmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDkyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNTUyNzEyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgUGFzcyBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGluIDQgbmV3IHBsYWNlczoKKworICAgICAgICAxKSBT
cGVjdWxhdGl2ZSBMb2FkcworICAgICAgICAyKSBQcmVjb25uZWN0IFRhc2tzCisgICAgICAgIDMp
IERvd25sb2FkcworICAgICAgICA0KSBDT1JTIHByZWZsaWdodCBjaGVja2VyCisKKyAgICAgICAg
VGhlc2UgbG9hZHMgc2hvdWxkIGhhcHBlbiBpbiBhbiBhcHAtYm91bmQgc2Vzc2lvbiBpZiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluCisgICAgICAgIGlzIHRydWUuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdE
b3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBy
ZWNvbm5lY3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICBUaGUgc2VydmljZSB3b3JrZXIgc2NyaXB0IHNo
b3VsZCBiZSBjb25zaWRlcmVkIGFuIGFwcC1ib3VuZCBsb2FkLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkFzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0Rm9yU3VicmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIFNlcGFyYXRlcyBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiB0byBpdHMgb3duIGZpbGUgdG8gYWxsb3cgZm9yCisgICAgICAgIHNlbmRpbmcg
b3ZlciBJUEMuCisKKyAgICAgICAgKiBTaGFyZWQvUG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKToKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgor
CiAyMDIwLTAzLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTcyMTQpOiBUYXJnZXRlZCBwcmV2aWV3IGFuaW1hdGVzIHRv
IHRoZSB3cm9uZyBwbGFjZSB3aGVuIGRyb3BwaW5nIGluIGVkaXRhYmxlIGNvbnRlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDYyNTFlOTg5Y2QxMmIyOGY5OGJkOWM5YTIyNTA5MzBkNDY2Y2M5
ZTMuLjY0MmY0NjNmODZhNDEyNDA5YmYwNTc2M2VkNGNlZmNmNWU1NWMwNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFu
YWdlcihDbGllbnQmIGNsaWVudCkKIHsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRO
YW1lKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogICAgIGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAo
IW5ldHdvcmtTZXNzaW9uKQpAQCAtNTIsNiArNTIsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxv
YQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMu
cmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7Cisg
ICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigp
KQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3Qu
dXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDhkMjE4OGQz
YmRiMGE5NDQ3NzlhMjBmNWQzMDVhYTE4OGE4YTYyMTUuLjc1M2JkZjUxZTA4NDExNDVlZmQ1NWFk
YmRlMjY1MTlhNDMwZTNhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRG93bmxvYWRNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNp
bmNsdWRlICJQZW5kaW5nRG93bmxvYWQuaCIKKyNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTgwLDcgKzgxLDcgQEAgcHVi
bGljOgogCiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwogCi0gICAgdm9p
ZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwor
ICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBkYXRhVGFza0JlY2Ft
ZURvd25sb2FkVGFzayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYpOwog
ICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3Rp
bmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM0YjllY2U0ODZlNGQ3MDBiNjA5NGYzNWVk
ZGVmMWQyNThjMjdjYTYuLmQ0OGQ5MTBjOTZjNWQwYzYzZjQ2OWNmZjkwM2FjNjlhZWE5NTE1MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NzYsMTggKzU3NiwxOCBAQCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdl
U2Vzc2lvbigpCiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1h
bmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBz
dWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBJbiBjYXNlIGEgcmVzcG9uc2UgaXMgc2Vy
dmVkIGZyb20gc2VydmljZSB3b3JrZXIsIHdlIGRvIG5vdCBoYXZlIHlldCB0aGUgYWJpbGl0eSB0
byBjb252ZXJ0IHRoZSBsb2FkLgogICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIg
fHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNl
V29ya2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0
YXJ0RG93bmxvYWQobV9zZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGJm
MTJjOTJhZjdlMmFhYTJhODY0NzRjMDRhOTE2YWY4OTVkZDFjYjQuLjE2N2QzYzljMDNkYWMzOTUx
MjNmY2JlYmU3MTE0NmIwNTg1ODY4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1JUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1hcC5o
IgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgpAQCAtMTk5LDggKzIwMCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBicm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0
IFVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUgPSB7IH0pOwotICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgdm9pZCBzdGFydERvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZE5hbWUgPSB7IH0pOworICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogCiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+JiYgc2NoZW1lcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDg2ZTU1ZTgzNzA4
YzkzN2E4MzFjNDQzZjVhZTAzOTYwMDQ3YjI3MWEuLjJjNzlkNzBiZTI3MjE4NjY2NDQ3ZDFiZWEx
NGNlNzVjMGQzNWE1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMzIsOCArMzIsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1l
KQogICAgIFByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRl
cnMpOwogCi0gICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQot
ICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKQorICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgV2ViS2l0OjpOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcg
c3VnZ2VzdGVkTmFtZSkKKyAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIAogICAgIENvb2tpZXNGb3JE
T00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwogICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFN0cmluZyBjb29raWVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJkYjJmMTQ5YTYxNzdlZjk0NjQ1OGFlMGE2NGMwZDdj
MzcxOWU3YWUuLjY0OTI5YjgyODM3ZjAzNWQwNTk2MzdjZWE1M2FmYjMwMjBlM2M2NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
MzA5LDcgKzEzMDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSQogfQogI2VuZGlmIC8vIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
ZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpAQCAtMTMxOSw2ICsxMzE5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnMKIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9Owor
ICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47CiAgICAgaWYgKCF1c2VyQWdlbnQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiB3ZSBhZGQgdXNlci1hZ2VudCB0byB0aGUgcHJlY29ubmVjdCByZXF1ZXN0
IGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBwcmVjb25uZWN0CiAgICAgICAgIC8vIGdldHMgdGhyb3du
IGF3YXkgYnkgQ0ZOZXR3b3JrIHdoZW4gdXNpbmcgYW4gSFRUUFMgcHJveHkgKDxyZGFyOi8vcHJv
YmxlbS81OTQzNDE2Nj4pLgpAQCAtMjAzNCw5ICsyMDM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlQ2FjaGVFbmdpbmUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAg
ICBtX2NhY2hlRW5naW5lcy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVl
c3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKIHsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93
bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDhiNGUwNDIwNThmY2ZjZWNhNDhlMmZiYzVjMTY0ZTIzMmNm
YzFkNmYuLjc2ZDc0NjU5ZGUyYjlmY2EzYzg4NzQyMzkzNGY1YTNjMWY0MGQ2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI3MCw3ICsy
NzAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFn
ZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lk
IHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKTsKIAogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6
OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTQwMSw3ICs0MDEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgc2Vzc2lvbiBJRCBzbyB3ZSBjYW4gaWRl
bnRpZnkgd2hpY2ggZGlzayBjYWNoZSB0byBkZWxldGUuCiAgICAgdm9pZCBjbGVhckRpc2tDYWNo
ZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
Ci0gICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgdm9pZCByZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2YyMjVkM2JlN2E0NWQ5YzBmODUwNzhk
NjAyZGIxOGRiOGRjYjI5Mi4uNWFkYTZkOGE2NmU0YzQ0NDcxNDVlMTBjYzljMGE3YzViZTQ1NzY3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+
IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogCi0gICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCisgICAgRG93bmxvYWRS
ZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgV2ViS2l0
OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIENhbmNlbERvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAs
NyArODAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50KSAtPiAoKSBBc3lu
YwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogCi0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
KyAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBXZWJLaXQ6Ok5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVudFJlc291cmNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDQ1YTg2YTIwMWZhZWM5
NTg3ZmQ0YWNjMjhlNDlhNWUxNGNiMmY0Yi4uZTdmNTlhM2VlZjQwYmQ1YjQxNzY3NjdmNjZkODQ0
M2E4OTJhOTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogQ2hlY2tpbmcgdGhlIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnJldHJpZXZlKHJlcXVlc3QsIGdsb2JhbEZyYW1lSUQoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShh
dXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJl
cXVlc3QsIGdsb2JhbEZyYW1lSUQoKSwgbV9wYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NDY2LDcgKzQ2Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3du
bG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291CiAKICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlzayBjYWNoZS4KICAgICBp
ZiAoIW1fbmV0d29ya0xvYWQpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklEKCksIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQoKSwgZG93bmxvYWRJRCwgcmVx
dWVzdCwgbV9wYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAg
ICBhYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggZjE4NjNhZDUxYWM5YTczNThm
YTVmMzc2ZWIzOTU2NzY5ZWIzNThhYS4uZjZlZmJlOGM5YjY1ZjI3MTY2MDAzN2M0ZGIwNDEwMjBl
NTBjODY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCkBAIC01OSw4ICs1OSw4IEBAIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcihOZXR3b3JrU2Vzc2lvbiYgc2VzCiAgICAg
aWYgKHNlc3Npb24uY2FjaGUoKSkgewogICAgICAgICAvLyBXZSBzZXQgY2FjaGUgcG9saWN5IHRv
IGRpc2FibGUgc3BlY3VsYXRpdmUgbG9hZGluZy9hc3luYyByZXZhbGlkYXRpb24gZnJvbSB0aGUg
Y2FjaGUuCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YURvbnRMb2FkKTsKLSAgICAgICAgCi0gICAgICAgIHNl
c3Npb24uY2FjaGUoKS0+cmV0cmlldmUocmVxdWVzdCwgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIHsgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0LCBz
aG91bGRSZWZyZXNoQ2FjaGVdKGF1dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRhYmxlIHsKKworICAg
ICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xv
YmFsRnJhbWVJRCB7IH0sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0LCBzaG91bGRSZWZyZXNoQ2FjaGVd
KGF1dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFtX3Nlc3Npb24p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNS
ZXZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3lu
Y1JldmFsaWRhdGlvbi5jcHAKaW5kZXggOGQ2NjBkMmU1YjM3MGUyYjgxZmY1ZTI0NDlkN2E1MGUx
MDg1MWI4Yy4uYWNmN2U2ZTI4MWRhMzA1ODYwYmQ0YWNiZGM3Zjk3NjlhZjE0NmJjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFs
aWRhdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBBc3luY1JldmFsaWRhdGlvbjo6c3Rh
bGVXaGlsZVJldmFsaWRhdGVFbmRpbmcoKQogICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKFJl
c3VsdDo6VGltZW91dCk7CiB9CiAKLUFzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlv
bihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+JiYgZW50cnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5k
bGVyKQorQXN5bmNSZXZhbGlkYXRpb246OkFzeW5jUmV2YWxpZGF0aW9uKENhY2hlJiBjYWNoZSwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJiBlbnRy
eSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPiYmIGhhbmRsZXIpCiAgICAgOiBtX3Rp
bWVyKCp0aGlzLCAmQXN5bmNSZXZhbGlkYXRpb246OnN0YWxlV2hpbGVSZXZhbGlkYXRlRW5kaW5n
KQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogewpAQCAtNzcs
NyArNzcsNyBAQCBBc3luY1JldmFsaWRhdGlvbjo6QXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUmIGNh
Y2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELAogICAgIGF1dG8gcmVzcG9uc2VNYXhT
dGFsZW5lc3MgPSBlbnRyeS0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xTdGFsZVdoaWxlUmV2YWxp
ZGF0ZSgpOwogICAgIEFTU0VSVChyZXNwb25zZU1heFN0YWxlbmVzcyk7CiAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoKnJlc3BvbnNlTWF4U3RhbGVuZXNzICsgKGxpZmV0aW1lIC0gYWdlKSk7Ci0g
ICAgbV9sb2FkID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KGNhY2hlLCBmcmFtZUlELCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwg
cmV2YWxpZGF0aW9uUmVxdWVzdF0oYXV0byYmIHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBtX2xv
YWQgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4oY2FjaGUsIGZyYW1lSUQsIFdURk1vdmUo
cmV2YWxpZGF0aW9uUmVxdWVzdCksIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0XShhdXRvJiYgcmV2YWxp
ZGF0ZWRFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFs
aWRhdGVkRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlk
YXRlZEVudHJ5IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAgICAgICAgIGlm
IChtX2NvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oCmluZGV4IDBlYzg5Zjc4YzBlMzdhMjkz
NGViMWUxNTg0NDdiODI4NzJhYjM4NDAuLmRjNzhiNjY4YTdiODY2MDU3NjFmNjhmODgyMmM3OGE2
NzkzZGEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
QXN5bmNSZXZhbGlkYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0FzeW5jUmV2YWxpZGF0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAg
ICBUaW1lb3V0LAogICAgICAgICBTdWNjZXNzLAogICAgIH07Ci0gICAgQXN5bmNSZXZhbGlkYXRp
b24oQ2FjaGUmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJik7CisgICAgQXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUm
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOwogICAgIHZvaWQg
Y2FuY2VsKCk7CiAKICAgICBjb25zdCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQoKSBjb25zdCB7IHJl
dHVybiAqbV9sb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZTJjODZhYWZkNmY0YTM1NzNmMTZiZjkyNDdmYzVl
YzEyNDdhYmU1OC4uNzJiYTZiZmYzZGFlMzBkYzkwYzE1MzQxMDllZjdiNmE0NzdjMjQ1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcApAQCAtMzM3LDEzICszMzcsMTMgQEAgc3RhdGljIGJvb2wgaW5saW5lIGNhblJlcXVlc3RV
c2VTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVIKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVfUkVWQUxJREFURSkKLXZv
aWQgQ2FjaGU6OnN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5JiBrZXksIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJ
RCkKK3ZvaWQgQ2FjaGU6OnN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5JiBr
ZXksIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYg
ZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICAgICBtX3BlbmRpbmdBc3luY1JldmFsaWRhdGlvbnMuZW5zdXJlKGtleSwg
WyZdIHsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdBc3luY1JldmFsaWRhdGlv
bkJ5UGFnZS5lbnN1cmUoZnJhbWVJRCwgW10gewogICAgICAgICAgICAgcmV0dXJuIFdlYWtIYXNo
U2V0PEFzeW5jUmV2YWxpZGF0aW9uPigpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byByZXZh
bGlkYXRpb24gPSBtYWtlVW5pcXVlPEFzeW5jUmV2YWxpZGF0aW9uPigqdGhpcywgZnJhbWVJRCwg
cmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXldKGF1dG8gcmVzdWx0KSB7CisgICAg
ICAgIGF1dG8gcmV2YWxpZGF0aW9uID0gbWFrZVVuaXF1ZTxBc3luY1JldmFsaWRhdGlvbj4oKnRo
aXMsIGZyYW1lSUQsIHJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBbdGhpcywga2V5XShhdXRvIHJlc3VsdCkgewogICAgICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9ucy5jb250YWlucyhrZXkpKTsKICAgICAgICAgICAg
IG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9ucy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIEFzeW5jIHJldmFsaWRhdGlvbiBjb21w
bGV0ZWQgZm9yICclcycgd2l0aCByZXN1bHQgJWQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5k
YXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KSk7CkBAIC0zNjMsNyArMzYzLDcgQEAgdm9p
ZCBDYWNoZTo6YnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3IKICNlbmRpZgogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmIGZyYW1lSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXF1ZXN0LnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIENh
Y2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IEdsb2JhbEZyYW1lSQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JF
VkFMSURBVElPTikKICAgICBib29sIGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9z
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyICYmIGNhblJlcXVlc3RVc2VTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbihyZXF1ZXN0KTsKICAgICBpZiAoY2FuVXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCi0g
ICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJMb2FkKGZyYW1lSUQsIHJl
cXVlc3QsIHN0b3JhZ2VLZXkpOworICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnJl
Z2lzdGVyTG9hZChmcmFtZUlELCByZXF1ZXN0LCBzdG9yYWdlS2V5LCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKTsKICNlbmRpZgogCiAgICAgYXV0byByZXRyaWV2ZURlY2lzaW9uID0gbWFr
ZVJldHJpZXZlRGVjaXNpb24ocmVxdWVzdCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUo
c3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBuZXR3b3JrUHJvY2VzcyA9IG1h
a2VSZWYobmV0d29ya1Byb2Nlc3MoKSksIHNlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBmcmFtZUlE
XShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJl
dHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgbmV0d29ya1Byb2Nl
c3MgPSBtYWtlUmVmKG5ldHdvcmtQcm9jZXNzKCkpLCBzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwg
ZnJhbWVJRCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oYXV0byByZWNvcmQsIGF1dG8g
dGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3MgPSB0aW1pbmdz
OwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TVEFMRV9XSElMRV9SRVZB
TElEQVRFKQogICAgICAgICAgICAgYXV0byBlbnRyeUNvcHkgPSBtYWtlVW5pcXVlPEVudHJ5Pigq
ZW50cnkpOwogICAgICAgICAgICAgZW50cnlDb3B5LT5zZXROZWVkc1ZhbGlkYXRpb24odHJ1ZSk7
Ci0gICAgICAgICAgICBzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQocmVxdWVzdCwgc3Rv
cmFnZUtleSwgV1RGTW92ZShlbnRyeUNvcHkpLCBmcmFtZUlEKTsKKyAgICAgICAgICAgIHN0YXJ0
QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChyZXF1ZXN0LCBzdG9yYWdlS2V5LCBXVEZNb3ZlKGVu
dHJ5Q29weSksIGZyYW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogI2Vsc2UK
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oCmluZGV4IGEwNzRjOTkzMDYzNTE2MjdlODI4MGQ1NDYxNGY0ZDYxNDgxMTQ4
NDQuLmEwYjgyNzllZjk4MjM2N2RlZDI3MDU2NTRmMDMxNmFiMjM0ODE1YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNs
dWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgpAQCAtMTcwLDcgKzE3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsK
ICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlE
JiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIE9wdGlvbmFsPFNlY29u
ZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwpAQCAtMjAyLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVf
UkVWQUxJREFURSkKLSAgICB2b2lkIHN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYsIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpOworICAgIHZvaWQg
c3RhcnRBc3luY1JldmFsaWRhdGlvbklmTmVlZGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5Jiwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiYm
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGJyb3dzaW5nQ29udGV4dFJlbW92ZWQoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNzA4ZDQ4YzI3NTc3Zjgz
MWM2NDg1MTIyYWQ3M2RmM2Y0MDRhM2Q4YS4uMjlkNzMxYTA1YmQ3NzQxMmY4NWFhZDM1ZmJmMWI3
MDAyMmEyMjdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCitTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50
cnlGb3JWYWxpZGF0aW9uLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChy
ZXF1ZXN0KQpAQCAtNTksNiArNTksNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9h
ZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIHBh
cmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpE
b05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFt
ZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OworICAgIHBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAg
ICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihjYWNoZS5zZXNzaW9uSUQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAppbmRleCBjZWNkNWZmZmI0Y2M4Njc3ZDg1YTc4ZTRiMWI2YzgzM2I3NTQ5MjUxLi5hMTJm
MmVmYzRkZDI4NzQ2MWY5NDNlY2FlZjMzZmRlNjAzNTI1NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGUu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2Fk
Q2xpZW50LmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC00NSw3ICs0Niw3IEBAIGNs
YXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmV2YWxpZGF0
aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik+OwotICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4sIFJldmFsaWRhdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBSZXZhbGlk
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHZpcnR1YWwgflNwZWN1bGF0aXZlTG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApp
bmRleCAzNzczOGQ4MjJiODcwM2M1NDI0NGU1ODQwYmZhZWI0YjhkMDdjMWQ1Li4yMDk4MzkzNGU2
OTlmOTVkNDkyMzA5Mzc4ZjY0MTJlYWEzYjE5N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNvdXJjZUtleSkKK3ZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNv
dXJjZUtleSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CkBAIC0zNjksOSArMzY5LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFs
RnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAgICAgbV9wZW5kaW5nRnJhbWVMb2Fkcy5h
ZGQoZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIC8vIFJl
dHJpZXZlIHRoZSBzdWJyZXNvdXJjZXMgZW50cnkgaWYgaXQgZXhpc3RzIHRvIHN0YXJ0IHNwZWN1
bGF0aXZlIHJldmFsaWRhdGlvbiBhbmQgdG8gdXBkYXRlIGl0LgotICAgICAgICByZXRyaWV2ZVN1
YnJlc291cmNlc0VudHJ5KHJlc291cmNlS2V5LCBbdGhpcywgZnJhbWVJRCwgcGVuZGluZ0ZyYW1l
TG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1lTG9hZCldKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNv
dXJjZXNFbnRyeT4gZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShy
ZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWQgPSBXVEZNb3ZlKHBl
bmRpbmdGcmFtZUxvYWQpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXShzdGQ6OnVuaXF1
ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IGVudHJ5KSB7CiAgICAgICAgICAgICBpZiAoZW50cnkp
Ci0gICAgICAgICAgICAgICAgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihmcmFtZUlELCAq
ZW50cnkpOworICAgICAgICAgICAgICAgIHN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oZnJh
bWVJRCwgKmVudHJ5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAgICAg
ICAgcGVuZGluZ0ZyYW1lTG9hZC0+c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRyeShXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgIH0pOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50
cnkqIGVudHJ5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3Vi
cmVzb3VyY2VJbmZvLCBFbnRyeSogZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQp
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShj
b25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgRW50cnkqIGVudHJ5LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVD
VCkKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKQEAgLTQ2MSw2ICs0NjEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJj
ZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YgogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7
CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZ
ZXM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVz
dChzdWJyZXNvdXJjZUluZm8ua2V5KCksIHN1YnJlc291cmNlSW5mbywgZW50cnkpOworICAgIHBh
cmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW47CiAgICAgbmV3IFByZWNvbm5lY3RUYXNrKG1fY2FjaGUubmV0d29ya1Byb2Nl
c3MoKSwgbV9jYWNoZS5zZXNzaW9uSUQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShz
dWJyZXNvdXJjZUluZm8pOwpAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYg
c3ViCiAjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRl
U3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQpCit2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBT
dWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBl
bnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBBU1NFUlQoIWVudHJ5
IHx8IGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAKQEAgLTQ4NCwxMiArNDg1LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1
YnJlc291cmNlSW5mbyYgc3VicmVzCiAgICAgLy8gRGVsYXkgZmlyc3QtcGFydHkgc3BlY3VsYXRp
dmUgbG9hZHMgdW50aWwgd2UndmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiBy
ZXNvdXJjZSwgaW4gY2FzZSB0aGUgbWFpbiByZXNvdXJjZQogICAgIC8vIHJlc3BvbnNlIHNldHMg
Y29va2llcyB0aGF0IGFyZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgbG9hZHMuCiAgICAgaWYgKHBl
bmRpbmdMb2FkICYmICFwZW5kaW5nTG9hZC0+ZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNl
KCkgJiYgc3VicmVzb3VyY2VJbmZvLmlzRmlyc3RQYXJ0eSgpKSB7Ci0gICAgICAgIHByZWNvbm5l
Y3RGb3JTdWJyZXNvdXJjZShzdWJyZXNvdXJjZUluZm8sIGVudHJ5LmdldCgpLCBmcmFtZUlEKTsK
LSAgICAgICAgcGVuZGluZ0xvYWQtPmFkZFBvc3RNYWluUmVzb3VyY2VSZXNwb25zZVRhc2soW3Ro
aXMsIHN1YnJlc291cmNlSW5mbywgZW50cnkgPSBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcHJlY29ubmVjdEZvclN1YnJlc291cmNlKHN1YnJlc291cmNlSW5m
bywgZW50cnkuZ2V0KCksIGZyYW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwor
ICAgICAgICBwZW5kaW5nTG9hZC0+YWRkUG9zdE1haW5SZXNvdXJjZVJlc3BvbnNlVGFzayhbdGhp
cywgc3VicmVzb3VyY2VJbmZvLCBlbnRyeSA9IFdURk1vdmUoZW50cnkpLCBmcmFtZUlELCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
cGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN1YnJlc291cmNlSW5mby5rZXkoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICByZXZhbGlkYXRlU3VicmVzb3VyY2Uoc3Vi
cmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCk7CisgICAgICAgICAgICByZXZh
bGlkYXRlU3VicmVzb3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJ
RCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDk4LDcgKzQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVz
CiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQ
cm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVy
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxT
cGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdU
Rk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFs
aWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJl
dmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTQsMTMgKzU1NSwxMyBAQCBzdGF0aWMgYm9vbCBjYW5SZXZhbGlk
YXRlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBjb25zdCBFbnRyeSog
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpw
cmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVz
b3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291
cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQog
ewogICAgIGlmIChtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhrZXkpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9wZW5kaW5nUHJlbG9hZHMuYWRkKGtleSwgbnVsbHB0cik7CiAgICAgCi0gICAg
cmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKHN1YnJlc291cmNlSW5mbywgW3RoaXMsIGtleSwgc3Vi
cmVzb3VyY2VJbmZvLCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7Cisg
ICAgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKHN1YnJlc291cmNlSW5mbywgW3RoaXMsIGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5n
UHJlbG9hZHMuZ2V0KGtleSkpOwogICAgICAgICBib29sIHJlbW92ZWQgPSBtX3BlbmRpbmdQcmVs
b2Fkcy5yZW1vdmUoa2V5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVk
KTsKQEAgLTU3Myw3ICs1NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxv
YWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJgogICAgICAgICAK
ICAgICAgICAgaWYgKCFlbnRyeSB8fCBlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpIHsKICAgICAg
ICAgICAgIGlmIChjYW5SZXZhbGlkYXRlKHN1YnJlc291cmNlSW5mbywgZW50cnkuZ2V0KCkpKQot
ICAgICAgICAgICAgICAgIHJldmFsaWRhdGVTdWJyZXNvdXJjZShzdWJyZXNvdXJjZUluZm8sIFdU
Rk1vdmUoZW50cnkpLCBmcmFtZUlEKTsKKyAgICAgICAgICAgICAgICByZXZhbGlkYXRlU3VicmVz
b3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC01ODEsMTIgKzU4MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJgogICAg
IH0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgU3VicmVzb3VyY2VzRW50
cnkmIGVudHJ5KQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0Vu
dHJ5JiBlbnRyeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNlSW5mbyA6IGVudHJ5LnN1
YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJlc291cmNlSW5mby5rZXko
KTsKICAgICAgICAgaWYgKCFzdWJyZXNvdXJjZUluZm8uaXNUcmFuc2llbnQoKSkKLSAgICAgICAg
ICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7CisgICAgICAg
ICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQsIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBw
cmVsb2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5Lmlk
ZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50
cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1l
SURdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXgg
MjlmNzYwOTc1OWFjYjJkNDExMDczNmM2Nzc5YzhiMzhkYzNhMmE4Zi4uOTc4MDQ2OWZlMTVhNGNi
YmVhMWIzZTAzMGVhZTFkOGJlMzAxMTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoQ2FjaGUmLCBTdG9yYWdlJik7CiAgICAgflNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLZXkmIHJlc291
cmNlS2V5KTsKKyAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIHZvaWQgcmVnaXN0ZXJNYWluUmVzb3VyY2VM
b2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHR5cGVk
ZWYgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXI7CkBAIC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBi
b29sIHNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2
YWxpZGF0aW9uUmVxdWVzdCA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBwcmVsb2FkRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYp
OworICAgIHZvaWQgcHJlbG9hZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFN1YnJlc291cmNlSW5m
byYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAg
ICAgdm9pZCByZXRyaWV2ZUVudHJ5RnJvbVN0b3JhZ2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwg
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIHJldmFsaWRhdGVTdWJyZXNv
dXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25z
dCBHbG9iYWxGcmFtZUlEJik7Ci0gICAgdm9pZCBwcmVjb25uZWN0Rm9yU3VicmVzb3VyY2UoY29u
c3QgU3VicmVzb3VyY2VJbmZvJiwgRW50cnkqLCBjb25zdCBHbG9iYWxGcmFtZUlEJik7CisgICAg
dm9pZCByZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKTsKKyAgICB2b2lkIHByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJy
ZXNvdXJjZUluZm8mLCBFbnRyeSosIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CiAgICAgYm9vbCBzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtl
eSYsIEVudHJ5Kik7CiAgICAgdm9pZCByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtl
eSYgc3RvcmFnZUtleSwgV1RGOjpGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVz
b3VyY2VzRW50cnk+KT4mJik7Ci0gICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
KGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNFbnRyeSYpOworICAgIHZvaWQgc3Rh
cnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3Vy
Y2VzRW50cnkmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAKICAgICBzdGF0aWMgYm9v
bCBjYW5Vc2VQcmVsb2FkZWRFbnRyeShjb25zdCBQcmVsb2FkZWRFbnRyeSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCk7CiAgICAgc3RhdGljIGJvb2wgY2Fu
VXNlUGVuZGluZ1ByZWxvYWQoY29uc3QgU3BlY3VsYXRpdmVMb2FkJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZGMxNjliMzkw
MTZhZjMwMjJiOTFhNmFjMDk3MDZhM2MwMGFhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsgWWVzLCBObyB9Owor
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IGYzOTA0YmE1NGMz
MmU4Mzg3ZjYyNGJmYTZkZTllZDk3NDIzMTU2MTkuLjkyNWI3NTdiNGM0YTA1YzVhMDhmOWI0NmFm
MzEwNzAwN2JiYzMwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURl
Y2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAt
MjYsMTMgKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
KyNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIldlYnNp
dGVQb2xpY2llc0RhdGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFllcywg
Tm8gfTsKLWVudW0gY2xhc3MgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IFllcywg
Tm99OworZW51bSBjbGFzcyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIDogYm9vbCB7
IFllcywgTm99OwogCiBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsgfTsKQEAgLTk4LDIzICs5OCwzIEBAIHN0cnVj
dCBQb2xpY3lEZWNpc2lvbiB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0g
ICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sCi0gICAgICAgIFdlYktp
dDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcywKLSAgICAgICAgV2ViS2l0OjpOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KLSAgICA+OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4+IHsK
LSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJLaXQ6Ok5hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4sCi0gICAgICAgIFdlYktpdDo6TmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbjo6WWVzLAotICAgICAgICBXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW46Ok5vCi0gICAgPjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDNm
YWQzM2U1YjhjMGFmY2JiOWQ3NmQ4YjEyNTNmOWEzN2JjZjA2MzYuLmI2OTAyZTY4N2NlMGNiMmZh
MDllNWVhMTUwMDQ3NDFlY2RiZGU3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQzNCwxMSArMTQz
NCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IFNlY3VyaXR5T3JpZ2luOjppc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3ModXJsLmhvc3QoKSkpCiAgICAgICAgIHJldHVybjsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25J
RCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSwgMCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHVybCwg
dXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiksIDApOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nl
c3NBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA5MTU5YzYyYjQzZDFlZDFhZjVhNzJmM2QwNDg0
ZTEyNDdlNzRmY2RhLi4wNDkwZDc5Y2YwMmJmNmIwZWFjNGY0ZTAyYjQ0YmU1MGQ3YzU1NDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TG9j
YWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7
CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIHZvaWQg
cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIwMjg1MTNlNjA3ZThlNDFiMWFjNmE5M2Y0ZDIzMTZm
ODhkZmQ1MGMuLjQzZTI5ZWY3Njc0YTg2OGVhYjFjN2JiODZiOGMxMjRiNmQ5ZDA1M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDI5Niw3ICs0Mjk2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5w
cmVjb25uZWN0VG8oc2Vzc2lvbklEKCksIHVybCwgdXNlckFnZW50KCksIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpOworICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cHJlY29u
bmVjdFRvKHNlc3Npb25JRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlLCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdh
dGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzMzNjMDQ2
ZTg0ODkwYjg1MmE5YjQ2N2VlNjg0MjA3YmI1OTRkMjUzLi4wNTI2YmI5MDdmYmYxNjE5YmZjYTkz
NDk5MmY3ZDZiODRkYmMxODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTcxNCw2ICsxNzE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwpAQCAtMjI3MSw3ICsyMjcyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1ha2VTdG9yYWdl
U3BhY2VSZXF1ZXN0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgICAgIAogICAg
IHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBj
b25zdCBVUkwmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogICAgIE5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQogICAg
ICAgICAKICAgICBjb25zdCBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlODQwZGE1MWFlMWRiMzEwYjg1MTYw
YjdhYmM4NjAyYjQ5YzAwNGNmLi44MmFhYjEwZGE1YWVkNTAxZDFmNWJhMzIwZWZkYjA3YTE0NTdk
MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
MzU3LDggKzEzNTcsMTEgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3gKICAgICBhdXRvJiBkb3du
bG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHJlcXVlc3QsIGluaXRp
YXRpbmdQYWdlLCB7IH0pOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKTsKIAotICAgIGlmIChpbml0aWF0aW5nUGFnZSkKKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Ok5vOworICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewogICAgICAgICBpbml0aWF0aW5nUGFnZS0+
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOworICAgICAgICBpc0FwcEJvdW5k
ID0gaW5pdGlhdGluZ1BhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICB9
CiAKICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
dXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7CkBAIC0xMzc3LDcgKzEzODAsNyBAQCBEb3dubG9hZFBy
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJQYWdlUHJveAogICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKICAgICAgICAgfQogICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBz
dWdnZXN0ZWRGaWxlbmFtZSksIDApOworICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25JRCwgZG93bmxv
YWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBpc0FwcEJvdW5kLCBzdWdnZXN0
ZWRGaWxlbmFtZSksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDFiOGEzMzM0MjNlM2I2YjBkZDA5YzRjZTE2MDIyOTEyYzcwMzBlYmQuLmYxYjYxMDMzZDA0ZDdl
YWI2MzQ0YzEwYmEyYTEyMmI2MThlY2E0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU1LDYgKzk1NSw3IEBACiAJCTQ2RjM4RThD
MjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkz
NzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZF
RjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDk2MEEzQkQyM0M1MkFGRDAw
OTYxODQyIC8qIFdlYlZpZXdDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk2MEEzQkMyM0M1Mjg2NDAwOTYxODQyIC8qIFdlYlZpZXdDYXRl
Z29yeS5oICovOyB9OworCQk0OTczREY0ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oICovOyB9OwogCQk0OUJDQTE5MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovOyB9OwogCQk0OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4
MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTAyM0ExNzU0
OTAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwu
aCAqLzsgfTsKIAkJNDlCQ0ExOTcyM0ExOTMwRDAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaCAqLzsgfTsKQEAgLTM1NTgsNiArMzU1OSw3IEBACiAJCTQ2RjM4
RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTYwQTNCQzIzQzUyODY0MDA5NjE4NDIgLyogV2ViVmlld0NhdGVnb3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlZpZXdDYXRlZ29yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OUJDQTE5MTIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0Ex
OTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk3LDYgKzU5OTksNyBAQAogCQkJCTMx
RUEyNUQzMTM0Rjc4RDYwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50LmggKi8sCiAJCQkJ
MjYzMTcyQ0UxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnQuaCAqLywKIAkJ
CQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovLAor
CQkJCTQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bi5oICovLAogCQkJCTFBRENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25B
Y3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCkBAIC0xMDc5NCw2ICsxMDc5Nyw3IEBACiAJCQkJ
QzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNo
RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEQ0I4NkIx
ODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0ZEMzE4MDIyQjM1MTU4MDA4RDBFOEIgLyogTmF2aWdhdGlvblNPQXV0aG9yaXphdGlv
blNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMzREY2MTg5OUU0MzcwMDRGMDYyNiAv
KiBOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDVhMzY5
ZjU0ZGJkNzBjMzZlYWFhZTNjYzJiNjg5MTA0YTAyMDViODkuLjI4ZjUwOWMyMmNjZmVhODY5ZDFi
Yjk3NTQ0NzQwMWIwOWY3NWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTc1NSw2ICs3NTUsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViUGFnZQogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQ
UmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKICAgICAvLyBG
SVhNRTogVXNlIHRoZSBwcm9wZXIgZGVzdGluYXRpb24gb25jZSBhbGwgZmV0Y2ggb3B0aW9ucyBh
cmUgcGFzc2VkLgogICAgIHBhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nOworICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpOwogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQcmVjb25uZWN0VG8ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1v
dmUocGFyYW1ldGVycykpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCAyMWJkMzc1N2Q5MWI4Njg3N2E0ZTA0ZWZiN2Y1N2EzYzdj
M2JiZDdiLi40YTUxM2I2MDE3ODE0MmZiM2QzNzQyYzYyZGY4Y2E1MGY3YzAxODVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0yODIsNyAr
MjgyLDExIEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9h
ZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsK
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U3RhcnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0
ZWROYW1lKSwgMCk7CisgICAgYXV0byBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46Ok5vOworICAgIGlmIChwYWdlKCkpCisgICAgICAgIGlzQXBwQm91bmQgPSBwYWdlKCkt
PmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxv
YWQocG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgIGlzQXBwQm91bmQsIHN1Z2dlc3RlZE5hbWUp
LCAwKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTMwNCw3ICsz
MDgsMTEgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAgICAgICAgIG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJl
c3BvbnNlKSwgMCk7CisgICAgYXV0byBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46Ok5vOworICAgIGlmIChwYWdlKCkpCisgICAgICAgIGlzQXBwQm91bmQgPSBwYWdlKCkt
PmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgCisgICAgd2ViUHJvY2Vz
cy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJ
RCwgcmVxdWVzdCwgcmVzcG9uc2UsIGlzQXBwQm91bmQpLCAwKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVl
c3RJRCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRU
ZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZmOTk0NTlmOTk5NDVkYWIzNzUzNmQxM2ZhYzZl
ZTVhNzQ1YzU2N2EuLmMyZGVkMzI5NDc0NTM5YmJhMzhjNTg0MWE2ODNhMGQ3OWQwYWYwMDkgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMTU2LDcgKzE1Niw3IEBAIGh0dHAvdGVzdHMvbmF2aWdhdGlv
bi91c2VyYWdlbnQtcmVsb2FkLnBocCBbIFNraXAgXQogc3RvcmFnZS9pbmRleGVkZGIvbW9kZXJu
L29wZW5kYXRhYmFzZS1hZnRlci1zdG9yYWdlLWNyYXNoLmh0bWwgWyBTa2lwIF0KIHN0b3JhZ2Uv
aW5kZXhlZGRiL0lEQk9iamVjdC1sZWFrLmh0bWwgWyBTa2lwIF0KIGZhc3QvZm9ybXMvY2FsbC10
ZXh0LWRpZC1jaGFuZ2UtaW4tdGV4dC1maWVsZC13aGVuLXR5cGluZy5odG1sIFsgU2tpcCBdCi1o
dHRwL3Rlc3RzL2luLWFwcC1icm93c2VyLXByaXZhY3kvIFsgU2tpcCBdCitodHRwL3Rlc3RzL2lu
LWFwcC1icm93c2VyLXByaXZhY3kvIFsgUGFzcyBdCiAKIAogIyBPbmx5IE1hYyBhbmQgaU9TIGhh
dmUgYW4gaW1wbGVtZW50YXRpb24gb2YgVUlTY3JpcHRDb250cm9sbGVyOjpkb0FzeW5jVGFzaygp
Lgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393910</attachid>
            <date>2020-03-18 15:36:40 -0700</date>
            <delta_ts>2020-03-18 16:10:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-209246-20200318153639.patch</filename>
            <type>text/plain</type>
            <size>59685</size>
            <attacher name="Kate Cheney">katherine_cheney</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4NjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ5Y2MzMTlhZmIzZWZmZjY2
MDdjOWZlZjExZWM0NDk1NjhhYmNlZDMuLmE0ZGQ1NGY5ZTA2N2U4NmFjZjExOTc5YTgzZGM5NmJh
ZTcwYmM4MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODkgQEAKKzIwMjAtMDMtMTggIEthdGUgQ2hl
bmV5ICA8a2F0aGVyaW5lX2NoZW5leUBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzcyBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluIGZvciBzcGVjdWxhdGl2ZSBsb2FkcywgcHJlY29ubmVjdCB0
YXNrcyBhbmQgZG93bmxvYWRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDkyNDYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwNTUyNzEyPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgUGFzcyBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluIGluIDQgbmV3IHBsYWNlczoKKworICAgICAgICAxKSBT
cGVjdWxhdGl2ZSBMb2FkcworICAgICAgICAyKSBQcmVjb25uZWN0IFRhc2tzCisgICAgICAgIDMp
IERvd25sb2FkcworICAgICAgICA0KSBDT1JTIHByZWZsaWdodCBjaGVja2VyCisKKyAgICAgICAg
VGhlc2UgbG9hZHMgc2hvdWxkIGhhcHBlbiBpbiBhbiBhcHAtYm91bmQgc2Vzc2lvbiBpZiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluCisgICAgICAgIGlzIHRydWUuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RG93bmxvYWRNYW5hZ2VyOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OkRv
d25sb2FkTWFuYWdlcjo6c3RhcnREb3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RG93bmxvYWRzL1BlbmRpbmdEb3dubG9hZC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBlbmRpbmdE
b3dubG9hZDo6UGVuZGluZ0Rvd25sb2FkKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdGFydERvd25sb2FkKToKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OmNvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9E
b3dubG9hZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuaDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3M6OnN0YXJ0RG93bmxvYWQpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBy
ZWNvbm5lY3RUbyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJl
cXVlc3QpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpzdGFydCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtSZXNvdXJjZUxvYWRlcjo6cmV0cmlldmVDYWNoZUVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3dubG9hZCk6CisgICAgICAgICog
TmV0d29ya1Byb2Nlc3MvUHJlY29ubmVjdFRhc2suY3BwOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcjo6U2VydmljZVdvcmtl
clNvZnRVcGRhdGVMb2FkZXIpOgorICAgICAgICBUaGUgc2VydmljZSB3b3JrZXIgc2NyaXB0IHNo
b3VsZCBiZSBjb25zaWRlcmVkIGFuIGFwcC1ib3VuZCBsb2FkLgorCisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6OkFzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlvbik6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNSZXZhbGlkYXRpb24uaDoKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjpyZXRyaWV2ZSk6CisgICAgICAg
ICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmg6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVM
b2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3Vs
YXRpdmVMb2FkTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6U3Bl
Y3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpwcmVjb25uZWN0Rm9yU3VicmVzb3Vy
Y2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OlNwZWN1bGF0aXZlTG9hZE1hbmFn
ZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cHJlbG9hZEVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2Fj
aGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
Q29jb2E6OnNlc3Npb25XcmFwcGVyRm9yVGFzayk6CisgICAgICAgICogU2hhcmVkL05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLmg6CisgICAgICAgIFNlcGFyYXRlcyBOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbiB0byBpdHMgb3duIGZpbGUgdG8gYWxsb3cgZm9yCisgICAgICAgIHNlbmRpbmcg
b3ZlciBJUEMuCisKKyAgICAgICAgKiBTaGFyZWQvUG9saWN5RGVjaXNpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0SXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2FkKToKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6cHJlY29ubmVjdFRvKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3RhcnREb3dubG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OldlYkZyYW1lOjpjb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQpOgor
CiAyMDIwLTAzLTE4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJFR1JFU1NJT04gKHIyNTcyMTQpOiBUYXJnZXRlZCBwcmV2aWV3IGFuaW1hdGVzIHRv
IHRoZSB3cm9uZyBwbGFjZSB3aGVuIGRyb3BwaW5nIGluIGVkaXRhYmxlIGNvbnRlbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFu
YWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9h
ZE1hbmFnZXIuY3BwCmluZGV4IDYyNTFlOTg5Y2QxMmIyOGY5OGJkOWM5YTIyNTA5MzBkNDY2Y2M5
ZTMuLjY0MmY0NjNmODZhNDEyNDA5YmYwNTc2M2VkNGNlZmNmNWU1NWMwNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRN
YW5hZ2VyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBEb3dubG9hZE1hbmFnZXI6OkRvd25sb2FkTWFu
YWdlcihDbGllbnQmIGNsaWVudCkKIHsKIH0KIAotdm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0
RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRO
YW1lKQordm9pZCBEb3dubG9hZE1hbmFnZXI6OnN0YXJ0RG93bmxvYWQoUEFMOjpTZXNzaW9uSUQg
c2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWROYW1lKQogewogICAgIGF1dG8qIG5ldHdv
cmtTZXNzaW9uID0gY2xpZW50KCkubmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKTsKICAgICBpZiAo
IW5ldHdvcmtTZXNzaW9uKQpAQCAtNTIsNiArNTIsNyBAQCB2b2lkIERvd25sb2FkTWFuYWdlcjo6
c3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIERvd25sb2FkSUQgZG93bmxv
YQogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0ZXJzOwogICAgIHBhcmFtZXRlcnMu
cmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcGFyYW1ldGVycy5jbGllbnRDcmVkZW50aWFsUG9saWN5
ID0gQ2xpZW50Q3JlZGVudGlhbFBvbGljeTo6TWF5QXNrQ2xpZW50Rm9yQ3JlZGVudGlhbHM7Cisg
ICAgcGFyYW1ldGVycy5pc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluID0gaXNOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbjsKICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzQmxvYigp
KQogICAgICAgICBwYXJhbWV0ZXJzLmJsb2JGaWxlUmVmZXJlbmNlcyA9IGNsaWVudCgpLm5ldHdv
cmtTZXNzaW9uKHNlc3Npb25JRCktPmJsb2JSZWdpc3RyeSgpLmZpbGVzSW5CbG9iKHJlcXVlc3Qu
dXJsKCkpOwogICAgIHBhcmFtZXRlcnMuc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgPSBzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSA/IFN0b3JlZENyZWRlbnRpYWxzUG9saWN5OjpEb05vdFVzZSA6IFN0
b3JlZENyZWRlbnRpYWxzUG9saWN5OjpVc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCmluZGV4IDhkMjE4OGQz
YmRiMGE5NDQ3NzlhMjBmNWQzMDVhYTE4OGE4YTYyMTUuLjc1M2JkZjUxZTA4NDExNDVlZmQ1NWFk
YmRlMjY1MTlhNDMwZTNhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkTWFuYWdlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRG93bmxvYWRNYXAuaCIKICNpbmNsdWRlICJOZXR3b3JrRGF0YVRhc2suaCIKICNp
bmNsdWRlICJQZW5kaW5nRG93bmxvYWQuaCIKKyNpbmNsdWRlICJQb2xpY3lEZWNpc2lvbi5oIgog
I2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTgwLDcgKzgxLDcgQEAgcHVi
bGljOgogCiAgICAgZXhwbGljaXQgRG93bmxvYWRNYW5hZ2VyKENsaWVudCYpOwogCi0gICAgdm9p
ZCBzdGFydERvd25sb2FkKFBBTDo6U2Vzc2lvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5hbWUgPSB7IH0pOwor
ICAgIHZvaWQgc3RhcnREb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSA9IHsgfSk7CiAgICAgdm9pZCBkYXRhVGFza0JlY2Ft
ZURvd25sb2FkVGFzayhEb3dubG9hZElELCBzdGQ6OnVuaXF1ZV9wdHI8RG93bmxvYWQ+JiYpOwog
ICAgIHZvaWQgY29udGludWVXaWxsU2VuZFJlcXVlc3QoRG93bmxvYWRJRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgd2lsbERlY2lkZVBlbmRpbmdEb3dubG9hZERlc3Rp
bmF0aW9uKE5ldHdvcmtEYXRhVGFzayYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCmluZGV4IGM0YjllY2U0ODZlNGQ3MDBiNjA5NGYzNWVk
ZGVmMWQyNThjMjdjYTYuLmQ0OGQ5MTBjOTZjNWQwYzYzZjQ2OWNmZjkwM2FjNjlhZWE5NTE1MGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCkBAIC01NzYsMTggKzU3NiwxOCBAQCBOZXR3
b3JrU3RvcmFnZVNlc3Npb24qIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpzdG9yYWdl
U2Vzc2lvbigpCiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoRG93bmxvYWRJRCBkb3dubG9hZElELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkTmFtZSkK
K3ZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnN0YXJ0RG93bmxvYWQoRG93bmxv
YWRJRCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIE5hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sIGNvbnN0IFN0
cmluZyYgc3VnZ2VzdGVkTmFtZSkKIHsKLSAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1h
bmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBz
dWdnZXN0ZWROYW1lKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5z
dGFydERvd25sb2FkKG1fc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWROYW1lKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzczo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElEIGRvd25sb2FkSUQs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpjb252ZXJ0TWFp
blJlc291cmNlTG9hZFRvRG93bmxvYWQodWludDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZp
ZXIsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0
LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBSRUxFQVNFX0FTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICAvLyBJbiBjYXNlIGEgcmVzcG9uc2UgaXMgc2Vy
dmVkIGZyb20gc2VydmljZSB3b3JrZXIsIHdlIGRvIG5vdCBoYXZlIHlldCB0aGUgYWJpbGl0eSB0
byBjb252ZXJ0IHRoZSBsb2FkLgogICAgIGlmICghbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIg
fHwgcmVzcG9uc2Uuc291cmNlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6U291cmNlOjpTZXJ2aWNl
V29ya2VyKSB7Ci0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmRvd25sb2FkTWFuYWdlcigpLnN0
YXJ0RG93bmxvYWQobV9zZXNzaW9uSUQsIGRvd25sb2FkSUQsIHJlcXVlc3QpOworICAgICAgICBt
X25ldHdvcmtQcm9jZXNzLT5kb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKG1fc2Vzc2lv
bklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCmluZGV4IGJm
MTJjOTJhZjdlMmFhYTJhODY0NzRjMDRhOTE2YWY4OTVkZDFjYjQuLjE2N2QzYzljMDNkYWMzOTUx
MjNmY2JlYmU3MTE0NmIwNTg1ODY4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrTUROU1JlZ2lzdGVyLmgiCiAjaW5jbHVkZSAi
TmV0d29ya1JUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZE1hcC5o
IgorI2luY2x1ZGUgIlBvbGljeURlY2lzaW9uLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lv
bi5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZpZXIuaCIKICNpbmNsdWRlICJXZWJQ
YXltZW50Q29vcmRpbmF0b3JQcm94eS5oIgpAQCAtMTk5LDggKzIwMCw4IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBwYWdlTG9hZENvbXBsZXRlZChXZWJDb3JlOjpQYWdlSWRlbnRpZmllcik7CiAgICAg
dm9pZCBicm93c2luZ0NvbnRleHRSZW1vdmVkKFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIFdlYkNv
cmU6OlBhZ2VJZGVudGlmaWVyLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIpOwogICAgIHZvaWQg
Y3Jvc3NPcmlnaW5SZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0
IFVSTCYgcmVkaXJlY3RVUkwpOwotICAgIHZvaWQgc3RhcnREb3dubG9hZChEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZE5h
bWUgPSB7IH0pOwotICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2FkKHVp
bnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJik7
CisgICAgdm9pZCBzdGFydERvd25sb2FkKERvd25sb2FkSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZE5hbWUgPSB7IH0pOworICAgIHZvaWQgY29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rv
d25sb2FkKHVpbnQ2NF90IG1haW5SZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBEb3dubG9hZElELCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogCiAgICAgdm9pZCByZWdpc3Rl
clVSTFNjaGVtZXNBc0NPUlNFbmFibGVkKFZlY3RvcjxTdHJpbmc+JiYgc2NoZW1lcyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDg2ZTU1ZTgzNzA4
YzkzN2E4MzFjNDQzZjVhZTAzOTYwMDQ3YjI3MWEuLjJjNzlkNzBiZTI3MjE4NjY2NDQ3ZDFiZWEx
NGNlNzVjMGQzNWE1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdl
cy5pbgpAQCAtMzIsOCArMzIsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAgICAgUHJlZmV0Y2hETlMoU3RyaW5nIGhvc3RuYW1l
KQogICAgIFByZWNvbm5lY3RUbyhPcHRpb25hbDx1aW50NjRfdD4gcHJlY29ubmVjdGlvbklkZW50
aWZpZXIsIFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRl
cnMpOwogCi0gICAgU3RhcnREb3dubG9hZChXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBzdWdnZXN0ZWROYW1lKQot
ICAgIENvbnZlcnRNYWluUmVzb3VyY2VMb2FkVG9Eb3dubG9hZCh1aW50NjRfdCBtYWluUmVzb3Vy
Y2VMb2FkSWRlbnRpZmllciwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3Bv
bnNlKQorICAgIFN0YXJ0RG93bmxvYWQoV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgV2ViS2l0OjpOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBTdHJpbmcg
c3VnZ2VzdGVkTmFtZSkKKyAgICBDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQodWlu
dDY0X3QgbWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXNwb25zZSByZXNwb25zZSwgZW51bTpib29sIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIAogICAgIENvb2tpZXNGb3JE
T00oVVJMIGZpcnN0UGFydHksIHN0cnVjdCBXZWJDb3JlOjpTYW1lU2l0ZUluZm8gc2FtZVNpdGVJ
bmZvLCBVUkwgdXJsLCBXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViQ29yZTo6
UGFnZUlkZW50aWZpZXIgcGFnZUlELCBlbnVtOmJvb2wgV2ViQ29yZTo6SW5jbHVkZVNlY3VyZUNv
b2tpZXMgaW5jbHVkZVNlY3VyZUNvb2tpZXMsIGVudW06Ym9vbCBXZWJDb3JlOjpTaG91bGRBc2tJ
VFAgc2hvdWxkQXNrSVRQKSAtPiAoU3RyaW5nIGNvb2tpZVN0cmluZywgYm9vbCBkaWRBY2Nlc3NT
ZWN1cmVDb29raWVzKSBTeW5jaHJvbm91cwogICAgIFNldENvb2tpZXNGcm9tRE9NKFVSTCBmaXJz
dFBhcnR5LCBzdHJ1Y3QgV2ViQ29yZTo6U2FtZVNpdGVJbmZvIHNhbWVTaXRlSW5mbywgVVJMIHVy
bCwgV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYkNvcmU6OlBhZ2VJZGVudGlm
aWVyIHBhZ2VJRCwgZW51bTpib29sIFdlYkNvcmU6OlNob3VsZEFza0lUUCBzaG91bGRBc2tJVFAs
IFN0cmluZyBjb29raWVTdHJpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IDJkYjJmMTQ5YTYxNzdlZjk0NjQ1OGFlMGE2NGMwZDdj
MzcxOWU3YWUuLjY0OTI5YjgyODM3ZjAzNWQwNTk2MzdjZWE1M2FmYjMwMjBlM2M2NmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC0x
MzA5LDcgKzEzMDksNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpzZXRGaXJzdFBhcnR5V2Vic2l0
ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSQogfQogI2VuZGlmIC8vIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAKLXZvaWQgTmV0d29ya1Byb2Nlc3M6OnBy
ZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBjb25z
dCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kgc3Rv
cmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcmVjb25uZWN0VG8o
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB1
c2VyQWdlbnQsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRp
YWxzUG9saWN5LCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVDVCkKICNpZiBFTkFCTEUo
TEVHQUNZX0NVU1RPTV9QUk9UT0NPTF9NQU5BR0VSKQpAQCAtMTMxOSw2ICsxMzE5LDcgQEAgdm9p
ZCBOZXR3b3JrUHJvY2Vzczo6cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIGNvbnMKIAogICAgIE5ldHdvcmtMb2FkUGFyYW1ldGVycyBwYXJhbWV0
ZXJzOwogICAgIHBhcmFtZXRlcnMucmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCB7IHVybCB9Owor
ICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGlu
Z1RvQXBwQm91bmREb21haW47CiAgICAgaWYgKCF1c2VyQWdlbnQuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiB3ZSBhZGQgdXNlci1hZ2VudCB0byB0aGUgcHJlY29ubmVjdCByZXF1ZXN0
IGJlY2F1c2Ugb3RoZXJ3aXNlIHRoZSBwcmVjb25uZWN0CiAgICAgICAgIC8vIGdldHMgdGhyb3du
IGF3YXkgYnkgQ0ZOZXR3b3JrIHdoZW4gdXNpbmcgYW4gSFRUUFMgcHJveHkgKDxyZGFyOi8vcHJv
YmxlbS81OTQzNDE2Nj4pLgpAQCAtMjAzNCw5ICsyMDM1LDkgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
czo6cmVtb3ZlQ2FjaGVFbmdpbmUoY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkKICAg
ICBtX2NhY2hlRW5naW5lcy5yZW1vdmUoc2Vzc2lvbklEKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJv
Y2Vzczo6ZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93bmxvYWRJ
RCBkb3dubG9hZElELCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkRmlsZW5hbWUpCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpkb3dubG9hZFJlcXVl
c3QoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFt
ZSkKIHsKLSAgICBkb3dubG9hZE1hbmFnZXIoKS5zdGFydERvd25sb2FkKHNlc3Npb25JRCwgZG93
bmxvYWRJRCwgcmVxdWVzdCwgc3VnZ2VzdGVkRmlsZW5hbWUpOworICAgIGRvd25sb2FkTWFuYWdl
cigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklELCBkb3dubG9hZElELCByZXF1ZXN0LCBpc05hdmln
YXRpbmdUb0FwcEJvdW5kRG9tYWluLCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiB9CiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnJlc3VtZURvd25sb2FkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRG93
bmxvYWRJRCBkb3dubG9hZElELCBjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIHJlc3VtZURhdGEs
IGNvbnN0IFN0cmluZyYgcGF0aCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmJiBz
YW5kYm94RXh0ZW5zaW9uSGFuZGxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDhiNGUwNDIwNThmY2ZjZWNhNDhlMmZiYzVjMTY0ZTIzMmNm
YzFkNmYuLjc2ZDc0NjU5ZGUyYjlmY2EzYzg4NzQyMzkzNGY1YTNjMWY0MGQ2ZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTI3MCw3ICsy
NzAsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgQ2FjaGVTdG9yYWdlUm9vdFBhdGhDYWxsYmFjayA9
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPjsKICAgICB2b2lkIGNhY2hlU3RvcmFn
ZVJvb3RQYXRoKFBBTDo6U2Vzc2lvbklELCBDYWNoZVN0b3JhZ2VSb290UGF0aENhbGxiYWNrJiYp
OwogCi0gICAgdm9pZCBwcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFVSTCYsIGNv
bnN0IFN0cmluZyYsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsKKyAgICB2b2lk
IHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiwg
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9t
YWluKTsKIAogICAgIHZvaWQgc2V0U2Vzc2lvbklzQ29udHJvbGxlZEJ5QXV0b21hdGlvbihQQUw6
OlNlc3Npb25JRCwgYm9vbCk7CiAgICAgYm9vbCBzZXNzaW9uSXNDb250cm9sbGVkQnlBdXRvbWF0
aW9uKFBBTDo6U2Vzc2lvbklEKSBjb25zdDsKQEAgLTQwMSw3ICs0MDEsNyBAQCBwcml2YXRlOgog
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB0YWtlIGEgc2Vzc2lvbiBJRCBzbyB3ZSBjYW4gaWRl
bnRpZnkgd2hpY2ggZGlzayBjYWNoZSB0byBkZWxldGUuCiAgICAgdm9pZCBjbGVhckRpc2tDYWNo
ZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwog
Ci0gICAgdm9pZCBkb3dubG9hZFJlcXVlc3QoUEFMOjpTZXNzaW9uSUQsIERvd25sb2FkSUQsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgIHZvaWQgZG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklELCBEb3dubG9h
ZElELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiwgY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgdm9pZCByZXN1
bWVEb3dubG9hZChQQUw6OlNlc3Npb25JRCwgRG93bmxvYWRJRCwgY29uc3QgSVBDOjpEYXRhUmVm
ZXJlbmNlJiByZXN1bWVEYXRhLCBjb25zdCBTdHJpbmcmIHBhdGgsIFNhbmRib3hFeHRlbnNpb246
OkhhbmRsZSYmKTsKICAgICB2b2lkIGNhbmNlbERvd25sb2FkKERvd25sb2FkSUQpOwogI2lmIFBM
QVRGT1JNKENPQ09BKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggY2YyMjVkM2JlN2E0NWQ5YzBmODUwNzhk
NjAyZGIxOGRiOGRjYjI5Mi4uNWFkYTZkOGE2NmU0YzQ0NDcxNDVlMTBjYzljMGE3YzViZTQ1NzY3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLm1lc3NhZ2VzLmluCkBAIC00Nyw3ICs0Nyw3IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQ
cm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICAgICBEZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZT4gd2Vic2l0
ZURhdGFUeXBlcywgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkK
ICAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpb25TZXQ8V2ViS2l0OjpXZWJzaXRlRGF0YVR5cGU+IHdlYnNpdGVEYXRhVHlwZXMsIFZl
Y3RvcjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbnMsIFZlY3RvcjxTdHJpbmc+
IGNvb2tpZUhvc3ROYW1lcywgVmVjdG9yPFN0cmluZz4gSFNUU0NhY2hlSG9zdE5hbWVzLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogCi0gICAgRG93bmxvYWRSZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQsIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCisgICAgRG93bmxvYWRS
ZXF1ZXN0KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25s
b2FkSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBlbnVtOmJvb2wgV2ViS2l0
OjpOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
LCBTdHJpbmcgc3VnZ2VzdGVkRmlsZW5hbWUpCiAgICAgUmVzdW1lRG93bmxvYWQoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgSVBDOjpEYXRh
UmVmZXJlbmNlIHJlc3VtZURhdGEsIFN0cmluZyBwYXRoLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNp
b246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIENhbmNlbERvd25sb2FkKFdl
YktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQogI2lmIFBMQVRGT1JNKENPQ09BKQpAQCAtODAs
NyArODAsNyBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAg
ICAgUHJlcGFyZVRvU3VzcGVuZChib29sIGlzU3VzcGVuc2lvbkltbWluZW50KSAtPiAoKSBBc3lu
YwogICAgIFByb2Nlc3NEaWRSZXN1bWUoKQogCi0gICAgUHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgVVJMIHVybCwgU3RyaW5nIHVzZXJBZ2VudCwgZW51bTp1aW50OF90IFdl
YkNvcmU6OlN0b3JlZENyZWRlbnRpYWxzUG9saWN5IHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KTsK
KyAgICBQcmVjb25uZWN0VG8oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBVUkwgdXJsLCBTdHJp
bmcgdXNlckFnZW50LCBlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xp
Y3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIGVudW06Ym9vbCBXZWJLaXQ6Ok5hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogCiAjaWYgRU5B
QkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICBDbGVhclByZXZhbGVudFJlc291cmNl
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4gcmVz
b3VyY2VEb21haW4pIC0+ICgpIEFzeW5jCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMDQ1YTg2YTIwMWZhZWM5
NTg3ZmQ0YWNjMjhlNDlhNWUxNGNiMmY0Yi4uZTdmNTlhM2VlZjQwYmQ1YjQxNzY3NjdmNjZkODQ0
M2E4OTJhOTU3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgTmV0d29y
a1Jlc291cmNlTG9hZGVyOjpyZXRyaWV2ZUNhY2hlRW50cnkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIH0KIAogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoInJldHJpZXZl
Q2FjaGVFbnRyeTogQ2hlY2tpbmcgdGhlIEhUVFAgZGlzayBjYWNoZSIpOwotICAgIG1fY2FjaGUt
PnJldHJpZXZlKHJlcXVlc3QsIGdsb2JhbEZyYW1lSUQoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0IHsgcmVxdWVzdCB9XShh
dXRvIGVudHJ5LCBhdXRvIGluZm8pIG11dGFibGUgeworICAgIG1fY2FjaGUtPnJldHJpZXZlKHJl
cXVlc3QsIGdsb2JhbEZyYW1lSUQoKSwgbV9wYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVxdWVzdCA9
IFJlc291cmNlUmVxdWVzdCB7IHJlcXVlc3QgfV0oYXV0byBlbnRyeSwgYXV0byBpbmZvKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIApAQCAt
NDY2LDcgKzQ2Niw3IEBAIHZvaWQgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb252ZXJ0VG9Eb3du
bG9hZChEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFJlc291CiAKICAgICAvLyBUaGlzIGNh
biBoYXBwZW4gaWYgdGhlIHJlc291cmNlIGNhbWUgZnJvbSB0aGUgZGlzayBjYWNoZS4KICAgICBp
ZiAoIW1fbmV0d29ya0xvYWQpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5uZXR3b3JrUHJvY2Vz
cygpLmRvd25sb2FkTWFuYWdlcigpLnN0YXJ0RG93bmxvYWQoc2Vzc2lvbklEKCksIGRvd25sb2Fk
SUQsIHJlcXVlc3QpOworICAgICAgICBtX2Nvbm5lY3Rpb24tPm5ldHdvcmtQcm9jZXNzKCkuZG93
bmxvYWRNYW5hZ2VyKCkuc3RhcnREb3dubG9hZChzZXNzaW9uSUQoKSwgZG93bmxvYWRJRCwgcmVx
dWVzdCwgbV9wYXJhbWV0ZXJzLmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAg
ICBhYm9ydCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRl
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9T
ZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlci5jcHAKaW5kZXggZjE4NjNhZDUxYWM5YTczNThm
YTVmMzc2ZWIzOTU2NzY5ZWIzNThhYS4uZjZlZmJlOGM5YjY1ZjI3MTY2MDAzN2M0ZGIwNDEwMjBl
NTBjODY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNl
V29ya2VyL1NlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvU2VydmljZVdvcmtlclNvZnRVcGRhdGVM
b2FkZXIuY3BwCkBAIC01OSw4ICs1OSw4IEBAIFNlcnZpY2VXb3JrZXJTb2Z0VXBkYXRlTG9hZGVy
OjpTZXJ2aWNlV29ya2VyU29mdFVwZGF0ZUxvYWRlcihOZXR3b3JrU2Vzc2lvbiYgc2VzCiAgICAg
aWYgKHNlc3Npb24uY2FjaGUoKSkgewogICAgICAgICAvLyBXZSBzZXQgY2FjaGUgcG9saWN5IHRv
IGRpc2FibGUgc3BlY3VsYXRpdmUgbG9hZGluZy9hc3luYyByZXZhbGlkYXRpb24gZnJvbSB0aGUg
Y2FjaGUuCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVzb3VyY2VSZXF1ZXN0Q2Fj
aGVQb2xpY3k6OlJldHVybkNhY2hlRGF0YURvbnRMb2FkKTsKLSAgICAgICAgCi0gICAgICAgIHNl
c3Npb24uY2FjaGUoKS0+cmV0cmlldmUocmVxdWVzdCwgTmV0d29ya0NhY2hlOjpHbG9iYWxGcmFt
ZUlEIHsgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0LCBz
aG91bGRSZWZyZXNoQ2FjaGVdKGF1dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRhYmxlIHsKKworICAg
ICAgICBzZXNzaW9uLmNhY2hlKCktPnJldHJpZXZlKHJlcXVlc3QsIE5ldHdvcmtDYWNoZTo6R2xv
YmFsRnJhbWVJRCB7IH0sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluOjpObywgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXF1ZXN0LCBzaG91bGRSZWZyZXNoQ2FjaGVd
KGF1dG8mJiBlbnRyeSwgYXV0byYmKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCFtX3Nlc3Npb24p
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvQXN5bmNS
ZXZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3lu
Y1JldmFsaWRhdGlvbi5jcHAKaW5kZXggOGQ2NjBkMmU1YjM3MGUyYjgxZmY1ZTI0NDlkN2E1MGUx
MDg1MWI4Yy4uYWNmN2U2ZTI4MWRhMzA1ODYwYmQ0YWNiZGM3Zjk3NjlhZjE0NmJjMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFs
aWRhdGlvbi5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgdm9pZCBBc3luY1JldmFsaWRhdGlvbjo6c3Rh
bGVXaGlsZVJldmFsaWRhdGVFbmRpbmcoKQogICAgICAgICBtX2NvbXBsZXRpb25IYW5kbGVyKFJl
c3VsdDo6VGltZW91dCk7CiB9CiAKLUFzeW5jUmV2YWxpZGF0aW9uOjpBc3luY1JldmFsaWRhdGlv
bihDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNo
ZTo6RW50cnk+JiYgZW50cnksIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJiBoYW5k
bGVyKQorQXN5bmNSZXZhbGlkYXRpb246OkFzeW5jUmV2YWxpZGF0aW9uKENhY2hlJiBjYWNoZSwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4mJiBlbnRy
eSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
biwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXN1bHQpPiYmIGhhbmRsZXIpCiAgICAgOiBtX3Rp
bWVyKCp0aGlzLCAmQXN5bmNSZXZhbGlkYXRpb246OnN0YWxlV2hpbGVSZXZhbGlkYXRlRW5kaW5n
KQogICAgICwgbV9jb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGhhbmRsZXIpKQogewpAQCAtNzcs
NyArNzcsNyBAQCBBc3luY1JldmFsaWRhdGlvbjo6QXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUmIGNh
Y2hlLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELAogICAgIGF1dG8gcmVzcG9uc2VNYXhT
dGFsZW5lc3MgPSBlbnRyeS0+cmVzcG9uc2UoKS5jYWNoZUNvbnRyb2xTdGFsZVdoaWxlUmV2YWxp
ZGF0ZSgpOwogICAgIEFTU0VSVChyZXNwb25zZU1heFN0YWxlbmVzcyk7CiAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoKnJlc3BvbnNlTWF4U3RhbGVuZXNzICsgKGxpZmV0aW1lIC0gYWdlKSk7Ci0g
ICAgbV9sb2FkID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KGNhY2hlLCBmcmFtZUlELCBX
VEZNb3ZlKHJldmFsaWRhdGlvblJlcXVlc3QpLCBXVEZNb3ZlKGVudHJ5KSwgW3RoaXMsIGtleSwg
cmV2YWxpZGF0aW9uUmVxdWVzdF0oYXV0byYmIHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBtX2xv
YWQgPSBtYWtlVW5pcXVlPFNwZWN1bGF0aXZlTG9hZD4oY2FjaGUsIGZyYW1lSUQsIFdURk1vdmUo
cmV2YWxpZGF0aW9uUmVxdWVzdCksIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0XShhdXRvJiYgcmV2YWxp
ZGF0ZWRFbnRyeSkgewogICAgICAgICBBU1NFUlQoIXJldmFsaWRhdGVkRW50cnkgfHwgIXJldmFs
aWRhdGVkRW50cnktPm5lZWRzVmFsaWRhdGlvbigpKTsKICAgICAgICAgQVNTRVJUKCFyZXZhbGlk
YXRlZEVudHJ5IHx8IHJldmFsaWRhdGVkRW50cnktPmtleSgpID09IGtleSk7CiAgICAgICAgIGlm
IChtX2NvbXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9Bc3luY1JldmFsaWRhdGlvbi5oCmluZGV4IDBlYzg5Zjc4YzBlMzdhMjkz
NGViMWUxNTg0NDdiODI4NzJhYjM4NDAuLmRjNzhiNjY4YTdiODY2MDU3NjFmNjhmODgyMmM3OGE2
NzkzZGEzNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
QXN5bmNSZXZhbGlkYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL0FzeW5jUmV2YWxpZGF0aW9uLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAg
ICBUaW1lb3V0LAogICAgICAgICBTdWNjZXNzLAogICAgIH07Ci0gICAgQXN5bmNSZXZhbGlkYXRp
b24oQ2FjaGUmLCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jiwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVzdWx0KT4mJik7CisgICAgQXN5bmNSZXZhbGlkYXRpb24oQ2FjaGUm
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
c3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+JiYsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc3VsdCk+JiYpOwogICAgIHZvaWQg
Y2FuY2VsKCk7CiAKICAgICBjb25zdCBTcGVjdWxhdGl2ZUxvYWQmIGxvYWQoKSBjb25zdCB7IHJl
dHVybiAqbV9sb2FkOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NhY2hlL05ldHdvcmtDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZS5jcHAKaW5kZXggZTJjODZhYWZkNmY0YTM1NzNmMTZiZjkyNDdmYzVl
YzEyNDdhYmU1OC4uNzJiYTZiZmYzZGFlMzBkYzkwYzE1MzQxMDllZjdiNmE0NzdjMjQ1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcApAQCAtMzM3LDEzICszMzcsMTMgQEAgc3RhdGljIGJvb2wgaW5saW5lIGNhblJlcXVlc3RV
c2VTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVIKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVfUkVWQUxJREFURSkKLXZv
aWQgQ2FjaGU6OnN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5JiBrZXksIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJ
RCkKK3ZvaWQgQ2FjaGU6OnN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5JiBr
ZXksIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiBlbnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYg
ZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICAgICBtX3BlbmRpbmdBc3luY1JldmFsaWRhdGlvbnMuZW5zdXJlKGtleSwg
WyZdIHsKICAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3BlbmRpbmdBc3luY1JldmFsaWRhdGlv
bkJ5UGFnZS5lbnN1cmUoZnJhbWVJRCwgW10gewogICAgICAgICAgICAgcmV0dXJuIFdlYWtIYXNo
U2V0PEFzeW5jUmV2YWxpZGF0aW9uPigpOwogICAgICAgICB9KTsKLSAgICAgICAgYXV0byByZXZh
bGlkYXRpb24gPSBtYWtlVW5pcXVlPEFzeW5jUmV2YWxpZGF0aW9uPigqdGhpcywgZnJhbWVJRCwg
cmVxdWVzdCwgV1RGTW92ZShlbnRyeSksIFt0aGlzLCBrZXldKGF1dG8gcmVzdWx0KSB7CisgICAg
ICAgIGF1dG8gcmV2YWxpZGF0aW9uID0gbWFrZVVuaXF1ZTxBc3luY1JldmFsaWRhdGlvbj4oKnRo
aXMsIGZyYW1lSUQsIHJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluLCBbdGhpcywga2V5XShhdXRvIHJlc3VsdCkgewogICAgICAgICAgICAgQVNTRVJU
KG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9ucy5jb250YWlucyhrZXkpKTsKICAgICAgICAgICAg
IG1fcGVuZGluZ0FzeW5jUmV2YWxpZGF0aW9ucy5yZW1vdmUoa2V5KTsKICAgICAgICAgICAgIExP
RyhOZXR3b3JrQ2FjaGUsICIoTmV0d29ya1Byb2Nlc3MpIEFzeW5jIHJldmFsaWRhdGlvbiBjb21w
bGV0ZWQgZm9yICclcycgd2l0aCByZXN1bHQgJWQiLCBrZXkuaWRlbnRpZmllcigpLnV0ZjgoKS5k
YXRhKCksIHN0YXRpY19jYXN0PGludD4ocmVzdWx0KSk7CkBAIC0zNjMsNyArMzYzLDcgQEAgdm9p
ZCBDYWNoZTo6YnJvd3NpbmdDb250ZXh0UmVtb3ZlZChXZWJQYWdlUHJveHlJZGVudGlmaWVyIHdl
YlBhZ2VQcm94eUlELCBXZWJDb3IKICNlbmRpZgogfQogCi12b2lkIENhY2hlOjpyZXRyaWV2ZShj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IEdsb2JhbEZyYW1l
SUQmIGZyYW1lSUQsIFJldHJpZXZlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgQ2FjaGU6OnJldHJpZXZlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91
bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiwgUmV0cmlldmVDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVChyZXF1ZXN0LnVybCgp
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CiAKQEAgLTM3OSw3ICszNzksNyBAQCB2b2lkIENh
Y2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IEdsb2JhbEZyYW1lSQogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JF
VkFMSURBVElPTikKICAgICBib29sIGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uID0gbV9z
cGVjdWxhdGl2ZUxvYWRNYW5hZ2VyICYmIGNhblJlcXVlc3RVc2VTcGVjdWxhdGl2ZVJldmFsaWRh
dGlvbihyZXF1ZXN0KTsKICAgICBpZiAoY2FuVXNlU3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pCi0g
ICAgICAgIG1fc3BlY3VsYXRpdmVMb2FkTWFuYWdlci0+cmVnaXN0ZXJMb2FkKGZyYW1lSUQsIHJl
cXVlc3QsIHN0b3JhZ2VLZXkpOworICAgICAgICBtX3NwZWN1bGF0aXZlTG9hZE1hbmFnZXItPnJl
Z2lzdGVyTG9hZChmcmFtZUlELCByZXF1ZXN0LCBzdG9yYWdlS2V5LCBpc05hdmlnYXRpbmdUb0Fw
cEJvdW5kRG9tYWluKTsKICNlbmRpZgogCiAgICAgYXV0byByZXRyaWV2ZURlY2lzaW9uID0gbWFr
ZVJldHJpZXZlRGVjaXNpb24ocmVxdWVzdCk7CkBAIC00MDEsNyArNDAxLDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICAgICB9CiAjZW5kaWYKIAotICAgIG1fc3RvcmFnZS0+cmV0cmlldmUo
c3RvcmFnZUtleSwgcHJpb3JpdHksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIHJlcXVlc3QsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
ciksIGluZm8gPSBXVEZNb3ZlKGluZm8pLCBzdG9yYWdlS2V5LCBuZXR3b3JrUHJvY2VzcyA9IG1h
a2VSZWYobmV0d29ya1Byb2Nlc3MoKSksIHNlc3Npb25JRCA9IG1fc2Vzc2lvbklELCBmcmFtZUlE
XShhdXRvIHJlY29yZCwgYXV0byB0aW1pbmdzKSBtdXRhYmxlIHsKKyAgICBtX3N0b3JhZ2UtPnJl
dHJpZXZlKHN0b3JhZ2VLZXksIHByaW9yaXR5LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCByZXF1ZXN0LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBpbmZvID0gV1RGTW92ZShpbmZvKSwgc3RvcmFnZUtleSwgbmV0d29ya1Byb2Nl
c3MgPSBtYWtlUmVmKG5ldHdvcmtQcm9jZXNzKCkpLCBzZXNzaW9uSUQgPSBtX3Nlc3Npb25JRCwg
ZnJhbWVJRCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbl0oYXV0byByZWNvcmQsIGF1dG8g
dGltaW5ncykgbXV0YWJsZSB7CiAgICAgICAgIGluZm8uc3RvcmFnZVRpbWluZ3MgPSB0aW1pbmdz
OwogCiAgICAgICAgIGlmICghcmVjb3JkKSB7CkBAIC00MjAsNyArNDIwLDcgQEAgdm9pZCBDYWNo
ZTo6cmV0cmlldmUoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBHbG9iYWxGcmFtZUkKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TVEFMRV9XSElMRV9SRVZB
TElEQVRFKQogICAgICAgICAgICAgYXV0byBlbnRyeUNvcHkgPSBtYWtlVW5pcXVlPEVudHJ5Pigq
ZW50cnkpOwogICAgICAgICAgICAgZW50cnlDb3B5LT5zZXROZWVkc1ZhbGlkYXRpb24odHJ1ZSk7
Ci0gICAgICAgICAgICBzdGFydEFzeW5jUmV2YWxpZGF0aW9uSWZOZWVkZWQocmVxdWVzdCwgc3Rv
cmFnZUtleSwgV1RGTW92ZShlbnRyeUNvcHkpLCBmcmFtZUlEKTsKKyAgICAgICAgICAgIHN0YXJ0
QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChyZXF1ZXN0LCBzdG9yYWdlS2V5LCBXVEZNb3ZlKGVu
dHJ5Q29weSksIGZyYW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogI2Vsc2UK
ICAgICAgICAgICAgIFVOVVNFRF9QQVJBTShmcmFtZUlEKTsKICAgICAgICAgICAgIFVOVVNFRF9Q
QVJBTSh0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5oCmluZGV4IGEwNzRjOTkzMDYzNTE2MjdlODI4MGQ1NDYxNGY0ZDYxNDgxMTQ4
NDQuLmEwYjgyNzllZjk4MjM2N2RlZDI3MDU2NTRmMDMxNmFiMjM0ODE1YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmgKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuaApAQCAtMjcs
NiArMjcsNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0NhY2hlRW50cnkuaCIKICNpbmNsdWRlICJO
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNs
dWRlICJTaGFyZWFibGVSZXNvdXJjZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eUlkZW50aWZp
ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgpAQCAtMTcwLDcgKzE3
MSw3IEBAIHB1YmxpYzoKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgfTsK
ICAgICB1c2luZyBSZXRyaWV2ZUNvbXBsZXRpb25IYW5kbGVyID0gRnVuY3Rpb248dm9pZChzdGQ6
OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25zdCBSZXRyaWV2ZUluZm8mKT47Ci0gICAgdm9pZCByZXRy
aWV2ZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBHbG9iYWxGcmFtZUlE
JiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIHJldHJpZXZlKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiwgUmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHN0b3JlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmLCBGdW5jdGlvbjx2b2lkKE1hcHBlZEJvZHkmKT4mJiA9IG51bGxwdHIpOwog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gc3RvcmVSZWRpcmVjdChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZWRpcmVjdFJlcXVlc3QsIE9wdGlvbmFsPFNlY29u
ZHM+IG1heEFnZUNhcCk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiB1cGRhdGUoY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgRW50cnkmLCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlc3BvbnNlJiB2YWxpZGF0aW5nUmVzcG9uc2UpOwpAQCAtMjAyLDcgKzIwMyw3IEBA
IHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVfU1RBTEVfV0hJTEVf
UkVWQUxJREFURSkKLSAgICB2b2lkIHN0YXJ0QXN5bmNSZXZhbGlkYXRpb25JZk5lZWRlZChjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBOZXR3b3JrQ2FjaGU6OktleSYsIHN0
ZDo6dW5pcXVlX3B0cjxFbnRyeT4mJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYpOworICAgIHZvaWQg
c3RhcnRBc3luY1JldmFsaWRhdGlvbklmTmVlZGVkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IE5ldHdvcmtDYWNoZTo6S2V5Jiwgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiYm
LCBjb25zdCBHbG9iYWxGcmFtZUlEJiwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogI2Vu
ZGlmCiAKICAgICB2b2lkIGJyb3dzaW5nQ29udGV4dFJlbW92ZWQoV2ViUGFnZVByb3h5SWRlbnRp
ZmllciwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIsIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5jcHAKaW5kZXggNzA4ZDQ4YzI3NTc3Zjgz
MWM2NDg1MTIyYWQ3M2RmM2Y0MDRhM2Q4YS4uMjlkNzMxYTA1YmQ3NzQxMmY4NWFhZDM1ZmJmMWI3
MDAyMmEyMjdiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBuYW1lc3BhY2UgTmV0d29ya0NhY2hlIHsKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKLVNwZWN1bGF0aXZlTG9hZDo6U3BlY3VsYXRpdmVMb2FkKENhY2hlJiBjYWNoZSwg
Y29uc3QgR2xvYmFsRnJhbWVJRCYgZ2xvYmFsRnJhbWVJRCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBzdGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4gY2FjaGVFbnRy
eUZvclZhbGlkYXRpb24sIFJldmFsaWRhdGlvbkNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCitTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9hZChDYWNoZSYgY2FjaGUs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtDYWNoZTo6RW50cnk+IGNhY2hlRW50
cnlGb3JWYWxpZGF0aW9uLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdU
b0FwcEJvdW5kRG9tYWluLCBSZXZhbGlkYXRpb25Db21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogICAgIDogbV9jYWNoZShjYWNoZSkKICAgICAsIG1fY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChy
ZXF1ZXN0KQpAQCAtNTksNiArNTksNyBAQCBTcGVjdWxhdGl2ZUxvYWQ6OlNwZWN1bGF0aXZlTG9h
ZChDYWNoZSYgY2FjaGUsIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGdsb2JhbEZyYW1lSQogICAgIHBh
cmFtZXRlcnMuY29udGVudFNuaWZmaW5nUG9saWN5ID0gQ29udGVudFNuaWZmaW5nUG9saWN5OjpE
b05vdFNuaWZmQ29udGVudDsKICAgICBwYXJhbWV0ZXJzLmNvbnRlbnRFbmNvZGluZ1NuaWZmaW5n
UG9saWN5ID0gQ29udGVudEVuY29kaW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmOwogICAgIHBhcmFt
ZXRlcnMucmVxdWVzdCA9IG1fb3JpZ2luYWxSZXF1ZXN0OworICAgIHBhcmFtZXRlcnMuaXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW47CiAg
ICAgbV9uZXR3b3JrTG9hZCA9IG1ha2VVbmlxdWU8TmV0d29ya0xvYWQ+KCp0aGlzLCBudWxscHRy
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCAqY2FjaGUubmV0d29ya1Byb2Nlc3MoKS5uZXR3b3JrU2Vz
c2lvbihjYWNoZS5zZXNzaW9uSUQoKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5oIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxv
YWQuaAppbmRleCBjZWNkNWZmZmI0Y2M4Njc3ZDg1YTc4ZTRiMWI2YzgzM2I3NTQ5MjUxLi5hMTJm
MmVmYzRkZDI4NzQ2MWY5NDNlY2FlZjMzZmRlNjAzNTI1NTEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Bl
Y3VsYXRpdmVMb2FkLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGUu
aCIKICNpbmNsdWRlICJOZXR3b3JrQ2FjaGVFbnRyeS5oIgogI2luY2x1ZGUgIk5ldHdvcmtMb2Fk
Q2xpZW50LmgiCisjaW5jbHVkZSAiUG9saWN5RGVjaXNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2hhcmVkQnVmZmVyLmg+CkBAIC00NSw3ICs0Niw3IEBAIGNs
YXNzIFNwZWN1bGF0aXZlTG9hZCBmaW5hbCA6IHB1YmxpYyBOZXR3b3JrTG9hZENsaWVudCB7CiAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgdXNpbmcgUmV2YWxpZGF0
aW9uQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHN0ZDo6dW5pcXVl
X3B0cjxOZXR3b3JrQ2FjaGU6OkVudHJ5Pik+OwotICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYs
IGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBz
dGQ6OnVuaXF1ZV9wdHI8TmV0d29ya0NhY2hlOjpFbnRyeT4sIFJldmFsaWRhdGlvbkNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIFNwZWN1bGF0aXZlTG9hZChDYWNoZSYsIGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBzdGQ6OnVuaXF1ZV9wdHI8
TmV0d29ya0NhY2hlOjpFbnRyeT4sIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLCBSZXZhbGlk
YXRpb25Db21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHZpcnR1YWwgflNwZWN1bGF0aXZlTG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmNwcApp
bmRleCAzNzczOGQ4MjJiODcwM2M1NDI0NGU1ODQwYmZhZWI0YjhkMDdjMWQ1Li4yMDk4MzkzNGU2
OTlmOTVkNDkyMzA5Mzc4ZjY0MTJlYWEzYjE5N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVNwZWN1bGF0aXZlTG9hZE1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3BlY3VsYXRpdmVMb2FkTWFuYWdlci5jcHAKQEAgLTM0NSw3ICszNDUsNyBAQCBib29sIFNwZWN1
bGF0aXZlTG9hZE1hbmFnZXI6OnNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNvdXJjZUtleSkKK3ZvaWQg
U3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZyYW1lSUQm
IGZyYW1lSUQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgS2V5JiByZXNv
dXJjZUtleSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChy
ZXF1ZXN0LnVybCgpLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSk7CkBAIC0zNjksOSArMzY5LDkg
QEAgdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZWdpc3RlckxvYWQoY29uc3QgR2xvYmFs
RnJhbWVJRCYgZnJhbWVJRCwgY29uc3QgUmUKICAgICAgICAgbV9wZW5kaW5nRnJhbWVMb2Fkcy5h
ZGQoZnJhbWVJRCwgcGVuZGluZ0ZyYW1lTG9hZC5jb3B5UmVmKCkpOwogCiAgICAgICAgIC8vIFJl
dHJpZXZlIHRoZSBzdWJyZXNvdXJjZXMgZW50cnkgaWYgaXQgZXhpc3RzIHRvIHN0YXJ0IHNwZWN1
bGF0aXZlIHJldmFsaWRhdGlvbiBhbmQgdG8gdXBkYXRlIGl0LgotICAgICAgICByZXRyaWV2ZVN1
YnJlc291cmNlc0VudHJ5KHJlc291cmNlS2V5LCBbdGhpcywgZnJhbWVJRCwgcGVuZGluZ0ZyYW1l
TG9hZCA9IFdURk1vdmUocGVuZGluZ0ZyYW1lTG9hZCldKHN0ZDo6dW5pcXVlX3B0cjxTdWJyZXNv
dXJjZXNFbnRyeT4gZW50cnkpIHsKKyAgICAgICAgcmV0cmlldmVTdWJyZXNvdXJjZXNFbnRyeShy
ZXNvdXJjZUtleSwgW3RoaXMsIGZyYW1lSUQsIHBlbmRpbmdGcmFtZUxvYWQgPSBXVEZNb3ZlKHBl
bmRpbmdGcmFtZUxvYWQpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXShzdGQ6OnVuaXF1
ZV9wdHI8U3VicmVzb3VyY2VzRW50cnk+IGVudHJ5KSB7CiAgICAgICAgICAgICBpZiAoZW50cnkp
Ci0gICAgICAgICAgICAgICAgc3RhcnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihmcmFtZUlELCAq
ZW50cnkpOworICAgICAgICAgICAgICAgIHN0YXJ0U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24oZnJh
bWVJRCwgKmVudHJ5LCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKIAogICAgICAgICAg
ICAgcGVuZGluZ0ZyYW1lTG9hZC0+c2V0RXhpc3RpbmdTdWJyZXNvdXJjZXNFbnRyeShXVEZNb3Zl
KGVudHJ5KSk7CiAgICAgICAgIH0pOwpAQCAtNDQ5LDcgKzQ0OSw3IEBAIGJvb2wgU3BlY3VsYXRp
dmVMb2FkTWFuYWdlcjo6c2F0aXNmeVBlbmRpbmdSZXF1ZXN0cyhjb25zdCBLZXkmIGtleSwgRW50
cnkqIGVudHJ5CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3Vi
cmVzb3VyY2VJbmZvLCBFbnRyeSogZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQp
Cit2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShj
b25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgRW50cnkqIGVudHJ5LCBjb25z
dCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQogewogI2lmIEVOQUJMRShTRVJWRVJfUFJFQ09OTkVD
VCkKICAgICBOZXR3b3JrTG9hZFBhcmFtZXRlcnMgcGFyYW1ldGVyczsKQEAgLTQ2MSw2ICs0NjEs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWNvbm5lY3RGb3JTdWJyZXNvdXJj
ZShjb25zdCBTdWJyZXNvdXJjZUluZm8mIHN1YgogICAgIHBhcmFtZXRlcnMuY29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3kgPSBDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmY7
CiAgICAgcGFyYW1ldGVycy5zaG91bGRQcmVjb25uZWN0T25seSA9IFByZWNvbm5lY3RPbmx5OjpZ
ZXM7CiAgICAgcGFyYW1ldGVycy5yZXF1ZXN0ID0gY29uc3RydWN0UmV2YWxpZGF0aW9uUmVxdWVz
dChzdWJyZXNvdXJjZUluZm8ua2V5KCksIHN1YnJlc291cmNlSW5mbywgZW50cnkpOworICAgIHBh
cmFtZXRlcnMuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiA9IGlzTmF2aWdhdGluZ1RvQXBw
Qm91bmREb21haW47CiAgICAgbmV3IFByZWNvbm5lY3RUYXNrKG1fY2FjaGUubmV0d29ya1Byb2Nl
c3MoKSwgbV9jYWNoZS5zZXNzaW9uSUQoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgW10oY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpIHsgfSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShz
dWJyZXNvdXJjZUluZm8pOwpAQCAtNDY5LDcgKzQ3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2Fk
TWFuYWdlcjo6cHJlY29ubmVjdEZvclN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYg
c3ViCiAjZW5kaWYKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpyZXZhbGlkYXRl
U3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiBzdWJyZXNvdXJjZUluZm8sIHN0ZDo6
dW5pcXVlX3B0cjxFbnRyeT4gZW50cnksIGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQpCit2
b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnJldmFsaWRhdGVTdWJyZXNvdXJjZShjb25zdCBT
dWJyZXNvdXJjZUluZm8mIHN1YnJlc291cmNlSW5mbywgc3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBl
bnRyeSwgY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbikKIHsKICAgICBBU1NFUlQoIWVudHJ5
IHx8IGVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAKQEAgLTQ4NCwxMiArNDg1LDEyIEBAIHZv
aWQgU3BlY3VsYXRpdmVMb2FkTWFuYWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1
YnJlc291cmNlSW5mbyYgc3VicmVzCiAgICAgLy8gRGVsYXkgZmlyc3QtcGFydHkgc3BlY3VsYXRp
dmUgbG9hZHMgdW50aWwgd2UndmUgcmVjZWl2ZWQgdGhlIHJlc3BvbnNlIGZvciB0aGUgbWFpbiBy
ZXNvdXJjZSwgaW4gY2FzZSB0aGUgbWFpbiByZXNvdXJjZQogICAgIC8vIHJlc3BvbnNlIHNldHMg
Y29va2llcyB0aGF0IGFyZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgbG9hZHMuCiAgICAgaWYgKHBl
bmRpbmdMb2FkICYmICFwZW5kaW5nTG9hZC0+ZGlkUmVjZWl2ZU1haW5SZXNvdXJjZVJlc3BvbnNl
KCkgJiYgc3VicmVzb3VyY2VJbmZvLmlzRmlyc3RQYXJ0eSgpKSB7Ci0gICAgICAgIHByZWNvbm5l
Y3RGb3JTdWJyZXNvdXJjZShzdWJyZXNvdXJjZUluZm8sIGVudHJ5LmdldCgpLCBmcmFtZUlEKTsK
LSAgICAgICAgcGVuZGluZ0xvYWQtPmFkZFBvc3RNYWluUmVzb3VyY2VSZXNwb25zZVRhc2soW3Ro
aXMsIHN1YnJlc291cmNlSW5mbywgZW50cnkgPSBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgcHJlY29ubmVjdEZvclN1YnJlc291cmNlKHN1YnJlc291cmNlSW5m
bywgZW50cnkuZ2V0KCksIGZyYW1lSUQsIGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwor
ICAgICAgICBwZW5kaW5nTG9hZC0+YWRkUG9zdE1haW5SZXNvdXJjZVJlc3BvbnNlVGFzayhbdGhp
cywgc3VicmVzb3VyY2VJbmZvLCBlbnRyeSA9IFdURk1vdmUoZW50cnkpLCBmcmFtZUlELCBpc05h
dmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXSgpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKG1f
cGVuZGluZ1ByZWxvYWRzLmNvbnRhaW5zKHN1YnJlc291cmNlSW5mby5rZXkoKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICByZXZhbGlkYXRlU3VicmVzb3VyY2Uoc3Vi
cmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCk7CisgICAgICAgICAgICByZXZh
bGlkYXRlU3VicmVzb3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJ
RCwgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgIH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNDk4LDcgKzQ5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVMb2FkTWFu
YWdlcjo6cmV2YWxpZGF0ZVN1YnJlc291cmNlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVz
CiAKICAgICBMT0coTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVQcmVsb2FkaW5nLCAiKE5ldHdvcmtQ
cm9jZXNzKSBTcGVjdWxhdGl2ZWx5IHJldmFsaWRhdGluZyAnJXMnOiIsIGtleS5pZGVudGlmaWVy
KCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBhdXRvIHJldmFsaWRhdG9yID0gbWFrZVVuaXF1ZTxT
cGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJldmFsaWRhdGlvblJlcXVlc3QsIFdU
Rk1vdmUoZW50cnkpLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKKyAgICBhdXRvIHJldmFs
aWRhdG9yID0gbWFrZVVuaXF1ZTxTcGVjdWxhdGl2ZUxvYWQ+KG1fY2FjaGUsIGZyYW1lSUQsIHJl
dmFsaWRhdGlvblJlcXVlc3QsIFdURk1vdmUoZW50cnkpLCBpc05hdmlnYXRpbmdUb0FwcEJvdW5k
RG9tYWluLCBbdGhpcywga2V5LCByZXZhbGlkYXRpb25SZXF1ZXN0LCBmcmFtZUlEXShzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IHJldmFsaWRhdGVkRW50cnkpIHsKICAgICAgICAgQVNTRVJUKCFyZXZh
bGlkYXRlZEVudHJ5IHx8ICFyZXZhbGlkYXRlZEVudHJ5LT5uZWVkc1ZhbGlkYXRpb24oKSk7CiAg
ICAgICAgIEFTU0VSVCghcmV2YWxpZGF0ZWRFbnRyeSB8fCByZXZhbGlkYXRlZEVudHJ5LT5rZXko
KSA9PSBrZXkpOwogCkBAIC01NTQsMTMgKzU1NSwxMyBAQCBzdGF0aWMgYm9vbCBjYW5SZXZhbGlk
YXRlKGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBjb25zdCBFbnRyeSog
ZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpw
cmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291cmNlSW5mbyYgc3VicmVz
b3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlEKQordm9pZCBTcGVjdWxhdGl2
ZUxvYWRNYW5hZ2VyOjpwcmVsb2FkRW50cnkoY29uc3QgS2V5JiBrZXksIGNvbnN0IFN1YnJlc291
cmNlSW5mbyYgc3VicmVzb3VyY2VJbmZvLCBjb25zdCBHbG9iYWxGcmFtZUlEJiBmcmFtZUlELCBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKQog
ewogICAgIGlmIChtX3BlbmRpbmdQcmVsb2Fkcy5jb250YWlucyhrZXkpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9wZW5kaW5nUHJlbG9hZHMuYWRkKGtleSwgbnVsbHB0cik7CiAgICAgCi0gICAg
cmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKHN1YnJlc291cmNlSW5mbywgW3RoaXMsIGtleSwgc3Vi
cmVzb3VyY2VJbmZvLCBmcmFtZUlEXShzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7Cisg
ICAgcmV0cmlldmVFbnRyeUZyb21TdG9yYWdlKHN1YnJlc291cmNlSW5mbywgW3RoaXMsIGtleSwg
c3VicmVzb3VyY2VJbmZvLCBmcmFtZUlELCBpc05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluXShz
dGQ6OnVuaXF1ZV9wdHI8RW50cnk+IGVudHJ5KSB7CiAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5n
UHJlbG9hZHMuZ2V0KGtleSkpOwogICAgICAgICBib29sIHJlbW92ZWQgPSBtX3BlbmRpbmdQcmVs
b2Fkcy5yZW1vdmUoa2V5KTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVk
KTsKQEAgLTU3Myw3ICs1NzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnByZWxv
YWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJgogICAgICAgICAK
ICAgICAgICAgaWYgKCFlbnRyeSB8fCBlbnRyeS0+bmVlZHNWYWxpZGF0aW9uKCkpIHsKICAgICAg
ICAgICAgIGlmIChjYW5SZXZhbGlkYXRlKHN1YnJlc291cmNlSW5mbywgZW50cnkuZ2V0KCkpKQot
ICAgICAgICAgICAgICAgIHJldmFsaWRhdGVTdWJyZXNvdXJjZShzdWJyZXNvdXJjZUluZm8sIFdU
Rk1vdmUoZW50cnkpLCBmcmFtZUlEKTsKKyAgICAgICAgICAgICAgICByZXZhbGlkYXRlU3VicmVz
b3VyY2Uoc3VicmVzb3VyY2VJbmZvLCBXVEZNb3ZlKGVudHJ5KSwgZnJhbWVJRCwgaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgCkBAIC01ODEsMTIgKzU4MiwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6
OnByZWxvYWRFbnRyeShjb25zdCBLZXkmIGtleSwgY29uc3QgU3VicmVzb3VyY2VJbmZvJgogICAg
IH0pOwogfQogCi12b2lkIFNwZWN1bGF0aXZlTG9hZE1hbmFnZXI6OnN0YXJ0U3BlY3VsYXRpdmVS
ZXZhbGlkYXRpb24oY29uc3QgR2xvYmFsRnJhbWVJRCYgZnJhbWVJRCwgU3VicmVzb3VyY2VzRW50
cnkmIGVudHJ5KQordm9pZCBTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyOjpzdGFydFNwZWN1bGF0aXZl
UmV2YWxpZGF0aW9uKGNvbnN0IEdsb2JhbEZyYW1lSUQmIGZyYW1lSUQsIFN1YnJlc291cmNlc0Vu
dHJ5JiBlbnRyeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBC
b3VuZERvbWFpbikKIHsKICAgICBmb3IgKGF1dG8mIHN1YnJlc291cmNlSW5mbyA6IGVudHJ5LnN1
YnJlc291cmNlcygpKSB7CiAgICAgICAgIGF1dG8mIGtleSA9IHN1YnJlc291cmNlSW5mby5rZXko
KTsKICAgICAgICAgaWYgKCFzdWJyZXNvdXJjZUluZm8uaXNUcmFuc2llbnQoKSkKLSAgICAgICAg
ICAgIHByZWxvYWRFbnRyeShrZXksIHN1YnJlc291cmNlSW5mbywgZnJhbWVJRCk7CisgICAgICAg
ICAgICBwcmVsb2FkRW50cnkoa2V5LCBzdWJyZXNvdXJjZUluZm8sIGZyYW1lSUQsIGlzTmF2aWdh
dGluZ1RvQXBwQm91bmREb21haW4pOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIExPRyhO
ZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZVByZWxvYWRpbmcsICIoTmV0d29ya1Byb2Nlc3MpIE5vdCBw
cmVsb2FkaW5nICclcycgYmVjYXVzZSBpdCBpcyBtYXJrZWQgYXMgdHJhbnNpZW50Iiwga2V5Lmlk
ZW50aWZpZXIoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgICAgIG1fbm90UHJlbG9hZGVkRW50
cmllcy5hZGQoa2V5LCBtYWtlVW5pcXVlPEV4cGlyaW5nRW50cnk+KFt0aGlzLCBrZXksIGZyYW1l
SURdIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3BlY3VsYXRpdmVMb2FkTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKaW5kZXgg
MjlmNzYwOTc1OWFjYjJkNDExMDczNmM2Nzc5YzhiMzhkYzNhMmE4Zi4uOTc4MDQ2OWZlMTVhNGNi
YmVhMWIzZTAzMGVhZTFkOGJlMzAxMTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTcGVjdWxh
dGl2ZUxvYWRNYW5hZ2VyLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0
IFNwZWN1bGF0aXZlTG9hZE1hbmFnZXIoQ2FjaGUmLCBTdG9yYWdlJik7CiAgICAgflNwZWN1bGF0
aXZlTG9hZE1hbmFnZXIoKTsKIAotICAgIHZvaWQgcmVnaXN0ZXJMb2FkKGNvbnN0IEdsb2JhbEZy
YW1lSUQmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBLZXkmIHJlc291
cmNlS2V5KTsKKyAgICB2b2lkIHJlZ2lzdGVyTG9hZChjb25zdCBHbG9iYWxGcmFtZUlEJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgS2V5JiByZXNvdXJjZUtleSwgTmF2
aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogICAgIHZvaWQgcmVnaXN0ZXJNYWluUmVzb3VyY2VM
b2FkUmVzcG9uc2UoY29uc3QgR2xvYmFsRnJhbWVJRCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmKTsKIAogICAgIHR5cGVk
ZWYgRnVuY3Rpb248dm9pZCAoc3RkOjp1bmlxdWVfcHRyPEVudHJ5Pik+IFJldHJpZXZlQ29tcGxl
dGlvbkhhbmRsZXI7CkBAIC02MiwxMyArNjIsMTMgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBi
b29sIHNob3VsZFJlZ2lzdGVyTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
ICAgICB2b2lkIGFkZFByZWxvYWRlZEVudHJ5KHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4sIGNvbnN0
IEdsb2JhbEZyYW1lSUQmLCBPcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+JiYgcmV2
YWxpZGF0aW9uUmVxdWVzdCA9IFdURjo6bnVsbG9wdCk7Ci0gICAgdm9pZCBwcmVsb2FkRW50cnko
Y29uc3QgS2V5JiwgY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgY29uc3QgR2xvYmFsRnJhbWVJRCYp
OworICAgIHZvaWQgcHJlbG9hZEVudHJ5KGNvbnN0IEtleSYsIGNvbnN0IFN1YnJlc291cmNlSW5m
byYsIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAg
ICAgdm9pZCByZXRyaWV2ZUVudHJ5RnJvbVN0b3JhZ2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwg
UmV0cmlldmVDb21wbGV0aW9uSGFuZGxlciYmKTsKLSAgICB2b2lkIHJldmFsaWRhdGVTdWJyZXNv
dXJjZShjb25zdCBTdWJyZXNvdXJjZUluZm8mLCBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+LCBjb25z
dCBHbG9iYWxGcmFtZUlEJik7Ci0gICAgdm9pZCBwcmVjb25uZWN0Rm9yU3VicmVzb3VyY2UoY29u
c3QgU3VicmVzb3VyY2VJbmZvJiwgRW50cnkqLCBjb25zdCBHbG9iYWxGcmFtZUlEJik7CisgICAg
dm9pZCByZXZhbGlkYXRlU3VicmVzb3VyY2UoY29uc3QgU3VicmVzb3VyY2VJbmZvJiwgc3RkOjp1
bmlxdWVfcHRyPEVudHJ5PiwgY29uc3QgR2xvYmFsRnJhbWVJRCYsIE5hdmlnYXRpbmdUb0FwcEJv
dW5kRG9tYWluKTsKKyAgICB2b2lkIHByZWNvbm5lY3RGb3JTdWJyZXNvdXJjZShjb25zdCBTdWJy
ZXNvdXJjZUluZm8mLCBFbnRyeSosIGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBOYXZpZ2F0aW5nVG9B
cHBCb3VuZERvbWFpbik7CiAgICAgYm9vbCBzYXRpc2Z5UGVuZGluZ1JlcXVlc3RzKGNvbnN0IEtl
eSYsIEVudHJ5Kik7CiAgICAgdm9pZCByZXRyaWV2ZVN1YnJlc291cmNlc0VudHJ5KGNvbnN0IEtl
eSYgc3RvcmFnZUtleSwgV1RGOjpGdW5jdGlvbjx2b2lkIChzdGQ6OnVuaXF1ZV9wdHI8U3VicmVz
b3VyY2VzRW50cnk+KT4mJik7Ci0gICAgdm9pZCBzdGFydFNwZWN1bGF0aXZlUmV2YWxpZGF0aW9u
KGNvbnN0IEdsb2JhbEZyYW1lSUQmLCBTdWJyZXNvdXJjZXNFbnRyeSYpOworICAgIHZvaWQgc3Rh
cnRTcGVjdWxhdGl2ZVJldmFsaWRhdGlvbihjb25zdCBHbG9iYWxGcmFtZUlEJiwgU3VicmVzb3Vy
Y2VzRW50cnkmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7CiAKICAgICBzdGF0aWMgYm9v
bCBjYW5Vc2VQcmVsb2FkZWRFbnRyeShjb25zdCBQcmVsb2FkZWRFbnRyeSYsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgYWN0dWFsUmVxdWVzdCk7CiAgICAgc3RhdGljIGJvb2wgY2Fu
VXNlUGVuZGluZ1ByZWxvYWQoY29uc3QgU3BlY3VsYXRpdmVMb2FkJiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiBhY3R1YWxSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlZGMxNjliMzkw
MTZhZjMwMjJiOTFhNmFjMDk3MDZhM2MwMGFhMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Vu
dW0gY2xhc3MgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4gOiBib29sIHsgWWVzLCBObyB9Owor
Cit9CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURlY2lzaW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Qb2xpY3lEZWNpc2lvbi5oCmluZGV4IGYzOTA0YmE1NGMz
MmU4Mzg3ZjYyNGJmYTZkZTllZDk3NDIzMTU2MTkuLjkyNWI3NTdiNGM0YTA1YzVhMDhmOWI0NmFm
MzEwNzAwN2JiYzMwNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1BvbGljeURl
Y2lzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUG9saWN5RGVjaXNpb24uaApAQCAt
MjYsMTMgKzI2LDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRvd25sb2FkSUQuaCIK
KyNpbmNsdWRlICJOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIgogI2luY2x1ZGUgIldlYnNp
dGVQb2xpY2llc0RhdGEuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAotZW51bSBjbGFzcyBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbiB7IFllcywg
Tm8gfTsKLWVudW0gY2xhc3MgTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbiB7IFllcywg
Tm99OworZW51bSBjbGFzcyBOYXZpZ2F0ZWRBd2F5RnJvbUFwcEJvdW5kRG9tYWluIDogYm9vbCB7
IFllcywgTm99OwogCiBzdHJ1Y3QgUG9saWN5RGVjaXNpb24gewogICAgIFdlYkNvcmU6OlBvbGlj
eUNoZWNrSWRlbnRpZmllciBpZGVudGlmaWVyIHsgfTsKQEAgLTk4LDIzICs5OCwzIEBAIHN0cnVj
dCBQb2xpY3lEZWNpc2lvbiB7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotbmFtZXNw
YWNlIFdURiB7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8V2ViS2l0OjpOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbj4gewotICAgIHVzaW5nIHZhbHVlcyA9IEVudW1WYWx1ZXM8Ci0g
ICAgICAgIFdlYktpdDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4sCi0gICAgICAgIFdlYktp
dDo6TmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46OlllcywKLSAgICAgICAgV2ViS2l0OjpOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjo6Tm8KLSAgICA+OwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1
Y3QgRW51bVRyYWl0czxXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlGcm9tQXBwQm91bmREb21haW4+IHsK
LSAgICB1c2luZyB2YWx1ZXMgPSBFbnVtVmFsdWVzPAotICAgICAgICBXZWJLaXQ6Ok5hdmlnYXRl
ZEF3YXlGcm9tQXBwQm91bmREb21haW4sCi0gICAgICAgIFdlYktpdDo6TmF2aWdhdGVkQXdheUZy
b21BcHBCb3VuZERvbWFpbjo6WWVzLAotICAgICAgICBXZWJLaXQ6Ok5hdmlnYXRlZEF3YXlGcm9t
QXBwQm91bmREb21haW46Ok5vCi0gICAgPjsKLX07Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDNm
YWQzM2U1YjhjMGFmY2JiOWQ3NmQ4YjEyNTNmOWEzN2JjZjA2MzYuLmI2OTAyZTY4N2NlMGNiMmZh
MDllNWVhMTUwMDQ3NDFlY2RiZGU3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTQzNCwxMSArMTQz
NCwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldExvY2FsU3RvcmFnZURldGFpbHMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbAogICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkdldExvY2FsU3RvcmFnZU9yaWdpbkRldGFpbHMoc2Vz
c2lvbklEKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVu
dGlhbHNQb2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpCit2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQ
b2xpY3kgc3RvcmVkQ3JlZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWlu
IGlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgp
IHx8ICF1cmwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IFNlY3VyaXR5T3JpZ2luOjppc0xv
Y2FsSG9zdE9yTG9vcGJhY2tJUEFkZHJlc3ModXJsLmhvc3QoKSkpCiAgICAgICAgIHJldHVybjsK
LSAgICBzZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlY29ubmVjdFRvKHNlc3Npb25J
RCwgdXJsLCB1c2VyQWdlbnQsIHN0b3JlZENyZWRlbnRpYWxzUG9saWN5KSwgMCk7CisgICAgc2Vu
ZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZWNvbm5lY3RUbyhzZXNzaW9uSUQsIHVybCwg
dXNlckFnZW50LCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgaXNOYXZpZ2F0aW5nVG9BcHBCb3Vu
ZERvbWFpbiksIDApOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnVwZGF0ZVByb2Nl
c3NBc3NlcnRpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3Jr
L05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA5MTU5YzYyYjQzZDFlZDFhZjVhNzJmM2QwNDg0
ZTEyNDdlNzRmY2RhLi4wNDkwZDc5Y2YwMmJmNmIwZWFjNGY0ZTAyYjQ0YmU1MGQ3YzU1NDQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaApAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0TG9j
YWxTdG9yYWdlRGV0YWlscyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpPcmlnaW5EZXRhaWxzPiYmKT4mJik7
CiAKLSAgICB2b2lkIHByZWNvbm5lY3RUbyhQQUw6OlNlc3Npb25JRCwgY29uc3QgVVJMJiwgY29u
c3QgU3RyaW5nJiwgV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHNQb2xpY3kpOworICAgIHZvaWQg
cHJlY29ubmVjdFRvKFBBTDo6U2Vzc2lvbklELCBjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmLCBX
ZWJDb3JlOjpTdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4pOwogCiAjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURfU1RBVElTVElDUykKICAgICB2b2lkIGNs
ZWFyUHJldmFsZW50UmVzb3VyY2UoUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFJlZ2lzdHJhYmxlRG9t
YWluJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGIwMjg1MTNlNjA3ZThlNDFiMWFjNmE5M2Y0ZDIzMTZm
ODhkZmQ1MGMuLjQzZTI5ZWY3Njc0YTg2OGVhYjFjN2JiODZiOGMxMjRiNmQ5ZDA1M2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDI5Niw3ICs0Mjk2LDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OnByZWNvbm5lY3RUbyhjb25zdCBVUkwmIHVybCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtQcm9jZXNzID0gbV9wcm9jZXNzLT5w
cm9jZXNzUG9vbCgpLm5ldHdvcmtQcm9jZXNzKCkpCi0gICAgICAgIG5ldHdvcmtQcm9jZXNzLT5w
cmVjb25uZWN0VG8oc2Vzc2lvbklEKCksIHVybCwgdXNlckFnZW50KCksIFdlYkNvcmU6OlN0b3Jl
ZENyZWRlbnRpYWxzUG9saWN5OjpVc2UpOworICAgICAgICBuZXR3b3JrUHJvY2Vzcy0+cHJlY29u
bmVjdFRvKHNlc3Npb25JRCgpLCB1cmwsIHVzZXJBZ2VudCgpLCBXZWJDb3JlOjpTdG9yZWRDcmVk
ZW50aWFsc1BvbGljeTo6VXNlLCBtX2lzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4pOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGVzdHJveU5hdmlnYXRpb24odWludDY0X3QgbmF2aWdh
dGlvbklEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCAzMzNjMDQ2
ZTg0ODkwYjg1MmE5YjQ2N2VlNjg0MjA3YmI1OTRkMjUzLi4wNTI2YmI5MDdmYmYxNjE5YmZjYTkz
NDk5MmY3ZDZiODRkYmMxODNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aApAQCAtMTcxNCw2ICsxNzE0LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRJc05hdmlnYXRp
bmdUb0FwcEJvdW5kRG9tYWluVGVzdGluZyhib29sLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpOwogICAgIHZvaWQgaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpblRlc3RpbmcoQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgTmF2aWdhdGluZ1RvQXBwQm91bmREb21h
aW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0dXJuIG1faXNOYXZp
Z2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogCiBwcml2YXRlOgogICAgIFdlYlBhZ2VQcm94eShQ
YWdlQ2xpZW50JiwgV2ViUHJvY2Vzc1Byb3h5JiwgUmVmPEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24+
JiYpOwpAQCAtMjI3MSw3ICsyMjcyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1ha2VTdG9yYWdl
U3BhY2VSZXF1ZXN0KFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKHVpbnQ2NF90KT4mJik7CiAgICAgICAgIAogICAg
IHZvaWQgc2V0SXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbihib29sIGlzTWFpbkZyYW1lLCBj
b25zdCBVUkwmLCBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbik7Ci0gICAgTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4gaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbjsgfQogICAgIE5hdmlnYXRlZEF3YXlG
cm9tQXBwQm91bmREb21haW4gaGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1faGFzTmF2aWdhdGVkQXdheUZyb21BcHBCb3VuZERvbWFpbjsgfQogICAg
ICAgICAKICAgICBjb25zdCBJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCBlODQwZGE1MWFlMWRiMzEwYjg1MTYw
YjdhYmM4NjAyYjQ5YzAwNGNmLi44MmFhYjEwZGE1YWVkNTAxZDFmNWJhMzIwZWZkYjA3YTE0NTdk
MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCkBAIC0x
MzU3LDggKzEzNTcsMTEgQEAgRG93bmxvYWRQcm94eSYgV2ViUHJvY2Vzc1Bvb2w6OmRvd25sb2Fk
KFdlYnNpdGVEYXRhU3RvcmUmIGRhdGFTdG9yZSwgV2ViUGFnZVByb3gKICAgICBhdXRvJiBkb3du
bG9hZFByb3h5ID0gY3JlYXRlRG93bmxvYWRQcm94eShkYXRhU3RvcmUsIHJlcXVlc3QsIGluaXRp
YXRpbmdQYWdlLCB7IH0pOwogICAgIFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCA9IGRhdGFTdG9y
ZS5zZXNzaW9uSUQoKTsKIAotICAgIGlmIChpbml0aWF0aW5nUGFnZSkKKyAgICBOYXZpZ2F0aW5n
VG9BcHBCb3VuZERvbWFpbiBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46
Ok5vOworICAgIGlmIChpbml0aWF0aW5nUGFnZSkgewogICAgICAgICBpbml0aWF0aW5nUGFnZS0+
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KGRvd25sb2FkUHJveHkpOworICAgICAgICBpc0FwcEJvdW5k
ID0gaW5pdGlhdGluZ1BhZ2UtPmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICB9
CiAKICAgICBpZiAobmV0d29ya1Byb2Nlc3MoKSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
dXBkYXRlZFJlcXVlc3QocmVxdWVzdCk7CkBAIC0xMzc3LDcgKzEzODAsNyBAQCBEb3dubG9hZFBy
b3h5JiBXZWJQcm9jZXNzUG9vbDo6ZG93bmxvYWQoV2Vic2l0ZURhdGFTdG9yZSYgZGF0YVN0b3Jl
LCBXZWJQYWdlUHJveAogICAgICAgICAgICAgICAgIHVwZGF0ZWRSZXF1ZXN0LnNldEhUVFBVc2Vy
QWdlbnQoV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCgpKTsKICAgICAgICAgfQogICAg
ICAgICB1cGRhdGVkUmVxdWVzdC5zZXRJc1RvcFNpdGUoZmFsc2UpOwotICAgICAgICBuZXR3b3Jr
UHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0
KHNlc3Npb25JRCwgZG93bmxvYWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBz
dWdnZXN0ZWRGaWxlbmFtZSksIDApOworICAgICAgICBuZXR3b3JrUHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6RG93bmxvYWRSZXF1ZXN0KHNlc3Npb25JRCwgZG93bmxv
YWRQcm94eS5kb3dubG9hZElEKCksIHVwZGF0ZWRSZXF1ZXN0LCBpc0FwcEJvdW5kLCBzdWdnZXN0
ZWRGaWxlbmFtZSksIDApOwogICAgICAgICByZXR1cm4gZG93bmxvYWRQcm94eTsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDFiOGEzMzM0MjNlM2I2YjBkZDA5YzRjZTE2MDIyOTEyYzcwMzBlYmQuLmYxYjYxMDMzZDA0ZDdl
YWI2MzQ0YzEwYmEyYTEyMmI2MThlY2E0MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTU1LDYgKzk1NSw3IEBACiAJCTQ2RjM4RThD
MjQxNkU2NzMwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMzhFOEIyNDE2RTY2RDAwNTkz
NzVBIC8qIFJ1bm5pbmdCb2FyZFNlcnZpY2VzU1BJLmggKi87IH07CiAJCTQ2RjlCMjYzMjM1MjZF
RjMwMDZGRTVGQSAvKiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2RjlCMjYyMjM1MjZFRDAwMDZGRTVGQSAv
KiBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuaCAqLzsgfTsKIAkJNDk2MEEzQkQyM0M1MkFGRDAw
OTYxODQyIC8qIFdlYlZpZXdDYXRlZ29yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDk2MEEzQkMyM0M1Mjg2NDAwOTYxODQyIC8qIFdlYlZpZXdDYXRl
Z29yeS5oICovOyB9OworCQk0OTczREY0ODI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1Rv
QXBwQm91bmREb21haW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERv
bWFpbi5oICovOyB9OwogCQk0OUJDQTE5MjIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ5QkNBMTkxMjNBMTc3NjYwMDI4QTgzNiAvKiBBUElSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlyc3RQYXJ0eS5oICovOyB9OwogCQk0OUJDQTE5NTIzQTE4Q0ZEMDAyOEE4
MzYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDlCQ0ExOTAyM0ExNzU0
OTAwMjhBODM2IC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwu
aCAqLzsgfTsKIAkJNDlCQ0ExOTcyM0ExOTMwRDAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0
YXRpc3RpY3NUaGlyZFBhcnR5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0OUJDQTE5NjIzQTE4RjYyMDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1RoaXJkUGFydHkuaCAqLzsgfTsKQEAgLTM1NTgsNiArMzU1OSw3IEBACiAJCTQ2RjM4
RThCMjQxNkU2NkQwMDU5Mzc1QSAvKiBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5uaW5nQm9hcmRTZXJ2aWNlc1NQSS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NkY5QjI2MjIzNTI2RUQwMDA2RkU1RkEgLyogV2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0OTYwQTNCQzIzQzUyODY0MDA5NjE4NDIgLyogV2ViVmlld0NhdGVnb3J5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlZpZXdDYXRlZ29yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
OTczREY0NzI0MjI5NDFGMDBFNEMyNkEgLyogTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0ExOTAyM0ExNzU0OTAwMjhBODM2IC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLUmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHlJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0OUJDQTE5MTIzQTE3NzY2MDAyOEE4MzYgLyogQVBJUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0ZpcnN0UGFydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0ZpcnN0UGFydHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDlCQ0Ex
OTYyM0ExOEY2MjAwMjhBODM2IC8qIEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFQSVJlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01OTk3LDYgKzU5OTksNyBAQAogCQkJCTMx
RUEyNUQzMTM0Rjc4RDYwMDVCMTQ1MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50LmggKi8sCiAJCQkJ
MjYzMTcyQ0UxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnQuaCAqLywKIAkJ
CQlERjU4QzYzMTEzNzFBQzU4MDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVudC5oICovLAor
CQkJCTQ5NzNERjQ3MjQyMjk0MUYwMEU0QzI2QSAvKiBOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bi5oICovLAogCQkJCTFBRENCODY4MTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9uQWN0aW9u
RGF0YS5jcHAgKi8sCiAJCQkJMUFEQ0I4NjkxODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25B
Y3Rpb25EYXRhLmggKi8sCiAJCQkJNUNENzQ4QjUyM0M4RUIxOTAwOTJBOUI1IC8qIE5ldHdvcmtS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLmggKi8sCkBAIC0xMDc5NCw2ICsxMDc5Nyw3IEBACiAJCQkJ
QzBFM0FBN0MxMjA5RTgzQzAwQTQ5RDAxIC8qIE1vZHVsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MkQ1MDM2NkIxQkNERTE3OTAwRTIwQkIzIC8qIE5hdGl2ZVdlYkdlc3R1cmVFdmVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMjYzMTcyQ0YxOEI0Njk0OTAwNjVCOUMzIC8qIE5hdGl2ZVdlYlRvdWNo
RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ5NzNERjQ4MjQyMjk0MUYwMEU0QzI2QSAvKiBO
YXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFEQ0I4NkIx
ODk4MzFCMzAwMjJFRTVBIC8qIE5hdmlnYXRpb25BY3Rpb25EYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1N0ZEMzE4MDIyQjM1MTU4MDA4RDBFOEIgLyogTmF2aWdhdGlvblNPQXV0aG9yaXphdGlv
blNlc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQkMzREY2MTg5OUU0MzcwMDRGMDYyNiAv
KiBOYXZpZ2F0aW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDVhMzY5
ZjU0ZGJkNzBjMzZlYWFhZTNjYzJiNjg5MTA0YTAyMDViODkuLjI4ZjUwOWMyMmNjZmVhODY5ZDFi
Yjk3NTQ0NzQwMWIwOWY3NWQzY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTc1NSw2ICs3NTUsNyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgV2ViUGFnZQogICAgIHBhcmFtZXRlcnMuc2hvdWxkUmVzdHJpY3RIVFRQ
UmVzcG9uc2VBY2Nlc3MgPSBzaG91bGRQZXJmb3JtU2VjdXJpdHlDaGVja3MoKTsKICAgICAvLyBG
SVhNRTogVXNlIHRoZSBwcm9wZXIgZGVzdGluYXRpb24gb25jZSBhbGwgZmV0Y2ggb3B0aW9ucyBh
cmUgcGFzc2VkLgogICAgIHBhcmFtZXRlcnMub3B0aW9ucy5kZXN0aW5hdGlvbiA9IEZldGNoT3B0
aW9uczo6RGVzdGluYXRpb246OkVtcHR5U3RyaW5nOworICAgIHBhcmFtZXRlcnMuaXNOYXZpZ2F0
aW5nVG9BcHBCb3VuZERvbWFpbiA9IHdlYlBhZ2UuaXNOYXZpZ2F0aW5nVG9BcHBCb3VuZERvbWFp
bigpOwogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuZW5zdXJlTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9u
VG9XZWJQcm9jZXNzOjpQcmVjb25uZWN0VG8ocHJlY29ubmVjdGlvbklkZW50aWZpZXIsIFdURk1v
dmUocGFyYW1ldGVycykpLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAppbmRleCAyMWJkMzc1N2Q5MWI4Njg3N2E0ZTA0ZWZiN2Y1N2EzYzdj
M2JiZDdiLi40YTUxM2I2MDE3ODE0MmZiM2QzNzQyYzYyZGY4Y2E1MGY3YzAxODVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC0yODIsNyAr
MjgyLDExIEBAIHZvaWQgV2ViRnJhbWU6OnN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpCiAgICAgYXV0byBwb2xpY3lEb3dubG9h
ZElEID0gbV9wb2xpY3lEb3dubG9hZElEOwogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsK
IAotICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLmVuc3VyZU5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbigpLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2Vi
UHJvY2Vzczo6U3RhcnREb3dubG9hZChwb2xpY3lEb3dubG9hZElELCByZXF1ZXN0LCBzdWdnZXN0
ZWROYW1lKSwgMCk7CisgICAgYXV0byBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46Ok5vOworICAgIGlmIChwYWdlKCkpCisgICAgICAgIGlzQXBwQm91bmQgPSBwYWdlKCkt
PmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAKKyAgICBXZWJQcm9jZXNzOjpz
aW5nbGV0b24oKS5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OlN0YXJ0RG93bmxv
YWQocG9saWN5RG93bmxvYWRJRCwgcmVxdWVzdCwgIGlzQXBwQm91bmQsIHN1Z2dlc3RlZE5hbWUp
LCAwKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25s
b2FkKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTMwNCw3ICsz
MDgsMTEgQEAgdm9pZCBXZWJGcmFtZTo6Y29udmVydE1haW5SZXNvdXJjZUxvYWRUb0Rvd25sb2Fk
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciwKICAgICBlbHNlCiAgICAgICAgIG1haW5S
ZXNvdXJjZUxvYWRJZGVudGlmaWVyID0gMDsKIAotICAgIHdlYlByb2Nlc3MuZW5zdXJlTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uKCkuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzOjpDb252ZXJ0TWFpblJlc291cmNlTG9hZFRvRG93bmxvYWQo
bWFpblJlc291cmNlTG9hZElkZW50aWZpZXIsIHBvbGljeURvd25sb2FkSUQsIHJlcXVlc3QsIHJl
c3BvbnNlKSwgMCk7CisgICAgYXV0byBpc0FwcEJvdW5kID0gTmF2aWdhdGluZ1RvQXBwQm91bmRE
b21haW46Ok5vOworICAgIGlmIChwYWdlKCkpCisgICAgICAgIGlzQXBwQm91bmQgPSBwYWdlKCkt
PmlzTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW4oKTsKKyAgICAgICAgCisgICAgd2ViUHJvY2Vz
cy5lbnN1cmVOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24oKS5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkNvbnZlcnRNYWluUmVzb3VyY2VM
b2FkVG9Eb3dubG9hZChtYWluUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcG9saWN5RG93bmxvYWRJ
RCwgcmVxdWVzdCwgcmVzcG9uc2UsIGlzQXBwQm91bmQpLCAwKTsKIH0KIAogdm9pZCBXZWJGcmFt
ZTo6YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZSBtZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwgbWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVpbnQ2NF90IHJlcXVl
c3RJRCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>