<?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>237827</bug_id>
          
          <creation_ts>2022-03-14 06:32:43 -0700</creation_ts>
          <short_desc>Keep service workers alive when they are inspected even though they should be terminated</short_desc>
          <delta_ts>2022-03-18 00:34:29 -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>Service Workers</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>nham</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1850849</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-14 06:32:43 -0700</bug_when>
    <thetext>Keep service workers alive when they are inspected even though they should be terminated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850892</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-14 08:58:31 -0700</bug_when>
    <thetext>&lt;rdar://88313935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851227</commentid>
    <comment_count>2</comment_count>
      <attachid>454693</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-15 04:24:13 -0700</bug_when>
    <thetext>Created attachment 454693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851777</commentid>
    <comment_count>3</comment_count>
      <attachid>454830</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-16 07:14:34 -0700</bug_when>
    <thetext>Created attachment 454830
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851795</commentid>
    <comment_count>4</comment_count>
      <attachid>454833</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-16 07:56:19 -0700</bug_when>
    <thetext>Created attachment 454833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851843</commentid>
    <comment_count>5</comment_count>
      <attachid>454843</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-16 09:01:16 -0700</bug_when>
    <thetext>Created attachment 454843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852305</commentid>
    <comment_count>6</comment_count>
      <attachid>454843</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-17 08:21:25 -0700</bug_when>
    <thetext>Comment on attachment 454843
Patch

Error unrelated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852483</commentid>
    <comment_count>7</comment_count>
      <attachid>454843</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-03-17 14:12:29 -0700</bug_when>
    <thetext>Comment on attachment 454843
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:548
&gt; +    // We delay so that the push message will happen before the unregistration of the service worker client.
&gt; +    sleep(0.5);

Wouldn&apos;t this be better to wait until pushMessageProcessed is true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852629</commentid>
    <comment_count>8</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2022-03-18 00:14:25 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 454843 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=454843&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PushAPI.mm:548
&gt; &gt; +    // We delay so that the push message will happen before the unregistration of the service worker client.
&gt; &gt; +    sleep(0.5);
&gt; 
&gt; Wouldn&apos;t this be better to wait until pushMessageProcessed is true?

The service worker is waiting to resolve the push message when there is no more clients, so we cannot wait here, we wait after we close the client.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1852634</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-18 00:34:25 -0700</bug_when>
    <thetext>Committed r291467 (248583@main): &lt;https://commits.webkit.org/248583@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454843.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454693</attachid>
            <date>2022-03-15 04:24:13 -0700</date>
            <delta_ts>2022-03-16 07:14:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237827-20220315122411.patch</filename>
            <type>text/plain</type>
            <size>20081</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQzODNiNjNmMWEwNGUz
YjJmNmQxZTgxOGJhNDRhMWFhNjI1YWYzMy4uMTZjYzZlYjAxYjU4N2JkNjBkYmRiMGUzMzhmMTc0
MjVmMTU1MGRkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIyLTAzLTE1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBLZWVwIHNlcnZpY2Ugd29y
a2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBldmVuIHRob3VnaCB0aGV5IHNob3Vs
ZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMxMzkzNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSBpbiBTV1NlcnZlcldvcmtl
ciB3aGV0aGVyIGEgd29ya2VyIGlzIGluc3BlY3RlZCBvciBpcyBwcm9jZXNzaW5nIHB1c2ggZXZl
bnRzLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIGRlbGF5IHRlcm1pbmF0aW9uIG9mIHdvcmtl
cnMgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGluc3BlY3RlZCBvciBubyBsb25nZXIgcHJvY2Vzc2lu
ZyBwdXNoIGV2ZW50cy4KKyAgICAgICAgVHdvIGNvZGUgcGF0aHMgYXJlIGhhcHBlbmluZzoKKyAg
ICAgICAgMS4gQSBzZXJ2aWNlIHdvcmtlciB3YXMgdHJpZ2dlcmVkIHdpdGggc2VydmljZSB3b3Jr
ZXIgY2xpZW50cywgYW5kIGFsbCBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGFyZSByZW1vdmVkLgor
ICAgICAgICAgICBBdCB0aGF0IHBvaW50LCB3ZSB3ZXJlIHByZXZpb3VzbHkgdGVybWluYXRpbmcg
c2VydmljZSB3b3JrZXJzIGFmdGVyIGEgZGVsYXkuCisgICAgICAgICAgIEluc3RlYWQsIHdlIG5v
dyBvbmx5IHRlcm1pbmF0ZSB3b3JrZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBpbnNwZWN0ZWQgb3Ig
bm8gbG9uZ2VyIHByb2Nlc3NpbmcgcHVzaCBldmVudHMuCisgICAgICAgICAgIFdlIHJlc2NoZWR1
bGUgdGhlIHRpbWVyIHRvIGNvbnRpbnVlIHRyeWluZyByZW1vdmluZyB0aGUgY29udGV4dCBjb25u
ZWN0aW9uLgorICAgICAgICAyLiBBIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBzdG9wcGVkIGJ5IHJl
bW92YWwgb2Ygc2VydmljZSB3b3JrZXIgY2xpZW50cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRv
IHRlcm1pbmF0ZQorICAgICAgICAgICB0aGUgc2VydmljZSB3b3JrZXJzIHdoZW4gaW5zcGVjdGVk
IGFuZC9vciBwdXNoIGNvdW50ZXIgZ2V0cyBiYWNrIHRvIHJlZ3VsYXIgKG5vdCBpbnNwZWN0ZWQs
IG5vIHB1c2ggY291bnRlcikuCisgICAgICAgICAgIFdoZW4gdGVybWluYXRpbmcgc3VjaCBhIHNl
cnZpY2Ugd29ya2VyLCB3ZSB0cnkgcmVtb3ZpbmcgdGhlIGNvbnRleHQgY29ubmVjdGlvbiBhcyB3
ZWxsLgorCisgICAgICAgIFRvIG1ha2Ugc3VyZSBTV1NlcnZlcldvcmtlciBrbm93cyB3aGV0aGVy
IGluc3BlY3RhYmxlIG9yIG5vdCwgd2UgYWRkIGNvbm5lY3Rpb24gc3VwcG9ydCB0byB0cmFuc21p
dCB3aGV0aGVyIGluc3BlY3RlZCBmcm9tIFdlYlByb2Nlc3MuCisgICAgICAgIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eSBpcyByZXNwb25zaWJsZSB0byB1cGRhdGUgdGhlIGluc3BlY3RhYmxl
IHZhbHVlLgorCisgICAgICAgIERlZGljYXRlZCB0ZXN0cyB0byBiZSBhZGRlZC4KKworICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3Bw
OgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoK
KyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAg
ICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjIt
MDMtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92
ZSB1c2Ugb2YgTWVkaWFTYW1wbGVBVkZPYmpDIGZyb20gV2ViUlRDIHBpcGVsaW5lcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCA2YmMyZjQzYzQ4MDIxYmEyZjdiOGRlZjAxNTA5YTNlOTcwNGM3OTQ2Li41ZjRiMTkzNDQw
NjYzYmQ1YjNhYzg0YTA5YjZiY2FmNzhkZjE2ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBA
CisyMDIyLTAzLTE1ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAg
ICBLZWVwIHNlcnZpY2Ugd29ya2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBldmVu
IHRob3VnaCB0aGV5IHNob3VsZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMxMzkz
NT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5l
dHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRN
YW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisKIDIwMjItMDMtMTUgIFlvdWVubiBGYWJsZXQg
IDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1c2Ugb2YgTWVkaWFTYW1wbGVB
VkZPYmpDIGZyb20gV2ViUlRDIHBpcGVsaW5lcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAppbmRleCA4
NWFkMjhiNGZkZDM4MzBjN2E0NzI3OTgxZTc2ZTljNjFiZmQ5MGNkLi5lMjYxODJhZTkyODNkMjgx
ZjNhYzQxYzkwZGNiZGEyMjU0MTdlOGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcApAQCAtMjA4
LDYgKzIwOCwxMiBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnN0b3BBbGxTZXJ2aWNlV29ya2Vy
cygpCiAgICAgICAgIHN0b3BXb3JrZXIoc2VydmljZVdvcmtlciwgd29ya2VyVGVybWluYXRpb25U
aW1lb3V0LCBbXSB7IH0pOwogfQogCit2b2lkIFNXQ29udGV4dE1hbmFnZXI6OnNldEFzSW5zcGVj
dGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQp
Cit7CisgICAgaWYgKG1fY29ubmVjdGlvbikKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZXRBc0lu
c3BlY3RlZChpZGVudGlmaWVyLCBpc0luc3BlY3RlZCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKaW5kZXggZjNiZWE1ZjE4ZjE0N2IxZDM0
MzM2NzQzOGEzNTQxMTVjODBkM2U5OS4uMzQxNzRiYjdkOTFkOWM3Y2RjODgyNWQwNDM4ZDY4NGYw
ZWM4MzdlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBjbGFpbShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChFeGNlcHRpb25Pcjx2b2lkPiYmKT4mJikgPSAwOwogCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZp
ZXIpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBib29sKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzVGhyb3R0
bGVhYmxlKCkgY29uc3QgPSAwOwogICAgICAgICB2aXJ0dWFsIFBhZ2VJZGVudGlmaWVyIHBhZ2VJ
ZGVudGlmaWVyKCkgY29uc3QgPSAwOwpAQCAtMTEwLDYgKzExMSw4IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgY29uc3RleHByIFNlY29uZHMgd29ya2VyVGVybWluYXRpb25UaW1lb3V0IHsgMTBfcyB9
OwogICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBzeW5jV29ya2VyVGVybWluYXRpb25UaW1l
b3V0IHsgMTAwX21zIH07IC8vIE9ubHkgdXNlZCBieSBsYXlvdXQgdGVzdHMuCiAKKyAgICB2b2lk
IHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKKwogcHJpdmF0
ZToKICAgICBTV0NvbnRleHRNYW5hZ2VyKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9y
UHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vydmlj
ZVdvcmtlckluc3BlY3RvclByb3h5LmNwcAppbmRleCAyNDg1MGM0ZmU3NDVmMmU3NjU4MmU2NGM1
MTVhOTcxZTRkMzI5Y2I2Li5lZWFkYzVlNTBjYWFiNGY1Njc3MTY3NjhiOTBhYzdkYTRjYjZmODQz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTYxLDYg
KzYxLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHk6OmNvbm5lY3RUb1dvcmtl
cihGcm9udGVuZENoYW5uZWwmIGNoYW5uZWwpCiB7CiAgICAgbV9jaGFubmVsID0gJmNoYW5uZWw7
CiAKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRBc0luc3BlY3RlZChtX3Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5pZGVudGlmaWVyKCksIHRydWUpOwogICAgIG1fc2Vydmlj
ZVdvcmtlclRocmVhZFByb3h5LnRocmVhZCgpLnJ1bkxvb3AoKS5wb3N0RGVidWdnZXJUYXNrKFtd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CiAgICAgICAgIGRvd25jYXN0PFdv
cmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5pbnNwZWN0b3JDb250cm9sbGVyKCkuY29ubmVjdEZy
b250ZW5kKCk7CiAgICAgfSk7CkBAIC03MSw2ICs3Miw3IEBAIHZvaWQgU2VydmljZVdvcmtlcklu
c3BlY3RvclByb3h5OjpkaXNjb25uZWN0RnJvbVdvcmtlcihGcm9udGVuZENoYW5uZWwmIGNoYW5u
ZWwpCiAgICAgQVNTRVJUX1VOVVNFRChjaGFubmVsLCAmY2hhbm5lbCA9PSBtX2NoYW5uZWwpOwog
ICAgIG1fY2hhbm5lbCA9IG51bGxwdHI7CiAKKyAgICBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0
b24oKS5zZXRBc0luc3BlY3RlZChtX3NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5pZGVudGlmaWVy
KCksIGZhbHNlKTsKICAgICBtX3NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS50aHJlYWQoKS5ydW5M
b29wKCkucG9zdERlYnVnZ2VyVGFzayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgewogICAgICAgICBkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVj
dG9yQ29udHJvbGxlcigpLmRpc2Nvbm5lY3RGcm9udGVuZChEaXNjb25uZWN0UmVhc29uOjpJbnNw
ZWN0b3JEZXN0cm95ZWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwCmluZGV4IDhlMWY1Y2VlYTdjYzI4OGRmMzc4OWJkNDU1M2Jm
ZGE2NjU0YWE2NWEuLjU1OWJhZWFhMDA3OTgzNzU5NmQzNTI5ZmY4OTVhYzJiOWQ4YTQxYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIu
Y3BwCkBAIC0xMDM4LDE3ICsxMDM4LDE3IEBAIHZvaWQgU1dTZXJ2ZXI6OnVucmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50KGNvbnN0IENsaWVudE9yaWdpbiYgY2xpZW50T3JpZ2luLCBTCiAgICAg
ICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1RpbWVyID0gbWFrZVVu
aXF1ZTxUaW1lcj4oW2NsaWVudE9yaWdpbiwgY2xpZW50UmVnaXN0cmFibGVEb21haW4sIHRoaXNd
IHsKICAgICAgICAgICAgIFZlY3RvcjxTV1NlcnZlcldvcmtlcio+IHdvcmtlcnNUb1Rlcm1pbmF0
ZTsKICAgICAgICAgICAgIGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGlu
Z1dvcmtlcnMudmFsdWVzKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAod29ya2VyLT5pc1J1bm5p
bmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9yaWdpbikKKyAgICAgICAgICAgICAg
ICBpZiAod29ya2VyLT5pc1J1bm5pbmcoKSAmJiB3b3JrZXItPm9yaWdpbigpID09IGNsaWVudE9y
aWdpbiAmJiAhd29ya2VyLT5zaG91bGRDb250aW51ZSgpKQogICAgICAgICAgICAgICAgICAgICB3
b3JrZXJzVG9UZXJtaW5hdGUuYXBwZW5kKHdvcmtlci5wdHIoKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBmb3IgKGF1dG8qIHdvcmtlciA6IHdvcmtlcnNUb1Rlcm1pbmF0ZSkKICAgICAg
ICAgICAgICAgICB3b3JrZXItPnRlcm1pbmF0ZSgpOwogCi0gICAgICAgICAgICBpZiAoIW1fY2xp
ZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoY2xpZW50UmVnaXN0cmFibGVEb21haW4p
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBjb250ZXh0Q29ubmVj
dGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluKSkgewotICAg
ICAgICAgICAgICAgICAgICByZW1vdmVDb250ZXh0Q29ubmVjdGlvbigqY29ubmVjdGlvbik7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmNvbm5lY3Rpb25Jc05vTG9uZ2VyTmVlZGVk
KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlbW92ZUNvbnRleHRDb25u
ZWN0aW9uSWZQb3NzaWJsZShjbGllbnRSZWdpc3RyYWJsZURvbWFpbikgPT0gU2hvdWxkRGVsYXlS
ZW1vdmFsOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGl0ZXJhdG9yID0gbV9jbGllbnRJ
ZGVudGlmaWVyc1Blck9yaWdpbi5maW5kKGNsaWVudE9yaWdpbik7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGl0ZXJhdG9yICE9IG1fY2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZW5kKCkpOwor
ICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT52YWx1ZS50ZXJtaW5hdGVTZXJ2aWNlV29ya2Vyc1Rp
bWVyLT5zdGFydE9uZVNob3QobV9pc1Byb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRl
ZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDogZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbV9jbGll
bnRJZGVudGlmaWVyc1Blck9yaWdpbi5yZW1vdmUoY2xpZW50T3JpZ2luKTsKQEAgLTEwNzQsNiAr
MTA3NCwyNSBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwogICAgIG1fY2xpZW50VG9Db250cm9s
bGluZ1JlZ2lzdHJhdGlvbi5yZW1vdmUocmVnaXN0cmF0aW9uSXRlcmF0b3IpOwogfQogCitTV1Nl
cnZlcjo6U2hvdWxkRGVsYXlSZW1vdmFsIFNXU2VydmVyOjpyZW1vdmVDb250ZXh0Q29ubmVjdGlv
bklmUG9zc2libGUoY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRvbWFpbikKK3sKKyAgICBpZiAo
bV9jbGllbnRzQnlSZWdpc3RyYWJsZURvbWFpbi5jb250YWlucyhkb21haW4pKQorICAgICAgICBy
ZXR1cm4gU2hvdWxkRGVsYXlSZW1vdmFsOjpObzsKKworICAgIGF1dG8qIGNvbm5lY3Rpb24gPSBj
b250ZXh0Q29ubmVjdGlvbkZvclJlZ2lzdHJhYmxlRG9tYWluKGRvbWFpbik7CisgICAgaWYgKCFj
b25uZWN0aW9uKQorICAgICAgICByZXR1cm4gU2hvdWxkRGVsYXlSZW1vdmFsOjpObzsKKworICAg
IGZvciAoYXV0byYgd29ya2VyIDogbV9ydW5uaW5nT3JUZXJtaW5hdGluZ1dvcmtlcnMudmFsdWVz
KCkpIHsKKyAgICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5yZWdpc3Ry
YWJsZURvbWFpbigpID09IGRvbWFpbiAmJiB3b3JrZXItPnNob3VsZENvbnRpbnVlKCkpCisgICAg
ICAgICAgICByZXR1cm4gU2hvdWxkRGVsYXlSZW1vdmFsOjpZZXM7CisgICAgfQorCisgICAgcmVt
b3ZlQ29udGV4dENvbm5lY3Rpb24oKmNvbm5lY3Rpb24pOworICAgIGNvbm5lY3Rpb24tPmNvbm5l
Y3Rpb25Jc05vTG9uZ2VyTmVlZGVkKCk7CisgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6
Tm87Cit9CisKIHZvaWQgU1dTZXJ2ZXI6OmhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKQogewogICAg
IC8vIEFjY2VsZXJhdGluZyB0aGUgZGVsYXllZCB0ZXJtaW5hdGlvbiBvZiB1bnVzZWQgc2Vydmlj
ZSB3b3JrZXJzIGR1ZSB0byBtZW1vcnkgcHJlc3N1cmUuCkBAIC0xMjgxLDE0ICsxMzAwLDE4IEBA
IHZvaWQgU1dTZXJ2ZXI6OnByb2Nlc3NQdXNoTWVzc2FnZShzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4mJiBkYXRhLCBVUkwmJiByCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGF1
dG8gc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB3b3JrZXItPmlkZW50aWZpZXIoKTsKLSAgICAg
ICAgICAgIGF1dG8gdGVybWluYXRlV29ya2VyVGltZXIgPSBtYWtlVW5pcXVlPFRpbWVyPihbd29y
a2VyID0gV1RGTW92ZSh3b3JrZXIpXSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlRlcm1pbmF0aW5nIHNlcnZpY2Ugd29ya2VyIGFzIHByb2Nlc3Np
bmcgcHVzaCBldmVudCB0b29rIHRvbyBtdWNoIHRpbWUiKTsKLSAgICAgICAgICAgICAgICB3b3Jr
ZXItPnRlcm1pbmF0ZSgpOworCisgICAgICAgICAgICB3b3JrZXItPmluY3JlbWVudFB1c2hFdmVu
dENvdW50ZXIoKTsKKyAgICAgICAgICAgIGF1dG8gdGVybWluYXRlV29ya2VyVGltZXIgPSBtYWtl
VW5pcXVlPFRpbWVyPihbd29ya2VyXSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJS
T1IoU2VydmljZVdvcmtlciwgIlNlcnZpY2Ugd29ya2VyIGlzIHRha2luZyB0b28gbXVjaCB0aW1l
IHRvIHByb2Nlc3MgYSBwdXNoIGV2ZW50Iik7CisgICAgICAgICAgICAgICAgd29ya2VyLT5kZWNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHRl
cm1pbmF0ZVdvcmtlclRpbWVyLT5zdGFydE9uZVNob3Qod2Vha1RoaXMgJiYgd2Vha1RoaXMtPm1f
aXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgPyBkZWZhdWx0VGVybWluYXRpb25EZWxh
eSA6IDJfcyk7Ci0gICAgICAgICAgICBjb25uZWN0aW9uT3JTdGF0dXMudmFsdWUoKS0+ZmlyZVB1
c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gV1RGTW92ZSh0ZXJtaW5hdGVXb3Jr
ZXJUaW1lcildKGJvb2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAo
dGVybWluYXRlV29ya2VyVGltZXItPmlzQWN0aXZlKCkpCisgICAgICAgICAgICB0ZXJtaW5hdGVX
b3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlzLT5tX2lzUHJvY2Vz
c1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgOiBkZWZh
dWx0UHVzaE1lc3NhZ2VEdXJhdGlvbik7CisgICAgICAgICAgICBjb25uZWN0aW9uT3JTdGF0dXMu
dmFsdWUoKS0+ZmlyZVB1c2hFdmVudChzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgZGF0YSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gV1RGTW92
ZSh0ZXJtaW5hdGVXb3JrZXJUaW1lciksIHdvcmtlciA9IFdURk1vdmUod29ya2VyKV0oYm9vbCBz
dWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hdGVXb3JrZXJU
aW1lci0+aXNBY3RpdmUoKSkgeworICAgICAgICAgICAgICAgICAgICB3b3JrZXItPmRlY3JlbWVu
dFB1c2hFdmVudENvdW50ZXIoKTsKICAgICAgICAgICAgICAgICAgICAgdGVybWluYXRlV29ya2Vy
VGltZXItPnN0b3AoKTsKKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBjYWxs
YmFjayhzdWNjZWVkZWQpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmgKaW5kZXggNWEyZTJlNGE2MTk5NWY3YTE4
ZTUwMzliNDRjZTdmZmY5ZmZhZWVlZC4uMzAyNTBhNmIyYmYxYjIxOTg4NWZlOThjZTcyNTQ1ODNh
ZTU0YTU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXIuaApAQCAtMjE4LDYgKzIxOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIGhhbmRsZUxvd01lbW9yeVdhcm5pbmcoKTsKIAogICAgIHN0YXRpYyBjb25zdGV4cHIg
U2Vjb25kcyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA9IDEwX3M7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uID0gMl9zOwogCiAgICAgTGFz
dE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQgY2xpZW50SXNBcHBJbml0aWF0ZWRGb3JSZWdpc3Ry
YWJsZURvbWFpbihjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogICAgIGJvb2wgc2hvdWxkUnVu
U2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nKCkgY29uc3QgeyByZXR1cm4gbV9z
aG91bGRSdW5TZXJ2aWNlV29ya2Vyc09uTWFpblRocmVhZEZvclRlc3Rpbmc7IH0KQEAgLTIzMCw2
ICsyMzEsMTAgQEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
IGNsaWVudElkRnJvbVZpc2libGVDbGllbnRJZChjb25zdCBTdHJpbmcmIHZpc2libGVJZGVudGlm
aWVyKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVDbGllbnRJZFRvSW50ZXJuYWxDbGllbnRJZE1h
cC5nZXQodmlzaWJsZUlkZW50aWZpZXIpOyB9CiAKICAgICB2b2lkIGZvckVhY2hTZXJ2aWNlV29y
a2VyKGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgU1dTZXJ2ZXJXb3JrZXImKT4mKSBjb25zdDsK
KyAgICBib29sIGhhc0NsaWVudHNXaXRoT3JpZ2luKGNvbnN0IENsaWVudE9yaWdpbiYgb3JpZ2lu
KSB7IHJldHVybiBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmNvbnRhaW5zKG9yaWdpbik7
IH0KKworICAgIGVudW0gY2xhc3MgU2hvdWxkRGVsYXlSZW1vdmFsIHsgTm8sIFllcyB9OworICAg
IFNob3VsZERlbGF5UmVtb3ZhbCByZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUoY29u
c3QgUmVnaXN0cmFibGVEb21haW4mKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHZhbGlkYXRlUmVn
aXN0cmF0aW9uRG9tYWluKFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluLCBTZXJ2aWNlV29ya2Vy
Sm9iVHlwZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggNjU2MzYyYTA5MTExMGI0YzEzNjdiNmQ1
YTE0MDQ2MDQ4MzkyZWQ2MC4uNmRjZDg4Mjg5MjdiZTZlMTRjM2VkNWViYTEyM2MxODkzYTY2OGY5
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTM3LDYg
KzEzNywxMiBAQCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyCiAgICAgICAgIHdvcmtlci0+ZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKCk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
OjpzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IGlzSW5zcGVjdGVkKQoreworICAgIGlmIChhdXRvKiB3b3JrZXIgPSBTV1NlcnZlcldvcmtlcjo6
ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpKQorICAgICAgICB3b3JrZXIt
PnNldEFzSW5zcGVjdGVkKGlzSW5zcGVjdGVkKTsKK30KKwogdm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnRlcm1pbmF0ZVdoZW5Qb3NzaWJsZSgpCiB7CiAgICAgbV9zaG91bGRUZXJt
aW5hdGVXaGVuUG9zc2libGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmgKaW5kZXggYjA4YTM4M2E4ZTk0OWQwMjVlYzRhNWJlNWUwMmZiMGQ1NmZjOWQ4ZS4uNjE4
NjM0NmNkMTc2OTViYTNkNjhhMDQyZmQ3MmI0MTQwMmVhMmJkNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVy
VG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBAIHB1YmxpYzoKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKHN0ZDo6b3B0aW9uYWw8RXhjZXB0aW9uRGF0YT4mJik+JiYpOwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoU2VydmljZVdvcmtlcklkZW50aWZp
ZXIsIFVSTCYmIHNjcmlwdFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCYmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc0lu
c3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBmaW5kQ2xpZW50QnlWaXNpYmxlSWRlbnRpZmllcihTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgY29uc3QgU3RyaW5nJiBjbGllbnRJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudERhdGE+JiYpPiYm
KTsKIAogICAgIGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiByZWdpc3RyYWJsZURvbWFpbigpIGNv
bnN0IHsgcmV0dXJuIG1fcmVnaXN0cmFibGVEb21haW47IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXgg
Y2RiZmU0NGJlZWMwYzkwOGJhYzEyMjRkMGVhNGI2ZjEyZmVkZjFiZC4uOTkyNGZiZGJhZTQ2MTJj
YTgxZWRhYmI3NzY4N2ZmYzVkZjNjZGE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTM5Nyw2ICsz
OTcsMjggQEAgc3RkOjpvcHRpb25hbDxTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRpZmllcj4g
U1dTZXJ2ZXJXb3JrZXI6OnNlcnZpY2VXb3JrZXJQYWcKICAgICByZXR1cm4gbV9yZWdpc3RyYXRp
b24tPnNlcnZpY2VXb3JrZXJQYWdlSWRlbnRpZmllcigpOwogfQogCit2b2lkIFNXU2VydmVyV29y
a2VyOjpkZWNyZW1lbnRQdXNoRXZlbnRDb3VudGVyKCkKK3sKKyAgICBBU1NFUlQobV9wdXNoRXZl
bnRDb3VudGVyKTsKKyAgICAtLW1fcHVzaEV2ZW50Q291bnRlcjsKKyAgICB0ZXJtaW5hdGVJZlBv
c3NpYmxlKCk7Cit9CisKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OnNldEFzSW5zcGVjdGVkKGJvb2wg
aXNJbnNwZWN0ZWQpCit7CisgICAgbV9pc0luc3BlY3RlZCA9IGlzSW5zcGVjdGVkOworICAgIHRl
cm1pbmF0ZUlmUG9zc2libGUoKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6dGVybWluYXRl
SWZQb3NzaWJsZSgpCit7CisgICAgaWYgKG1fcHVzaEV2ZW50Q291bnRlciB8fCBtX2lzSW5zcGVj
dGVkIHx8ICFtX3NlcnZlciB8fCBtX3NlcnZlci0+aGFzQ2xpZW50c1dpdGhPcmlnaW4ob3JpZ2lu
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICB0ZXJtaW5hdGUoKTsKKyAgICBtX3NlcnZlci0+
cmVtb3ZlQ29udGV4dENvbm5lY3Rpb25JZlBvc3NpYmxlKHJlZ2lzdHJhYmxlRG9tYWluKCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9X
T1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmgKaW5kZXggMTEwODZkMTkyMzExZTUyZDk2ZmU5ZjlhOTQ5ODViMzZi
MzIzMmYwOC4uOWVkZDQ0NWU2Y2JjOWViYzVjYmQ2Njg4MWViM2Q1MGQxZGJmMDdhMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJX
b3JrZXIuaApAQCAtMTM1LDYgKzEzNSwxMiBAQCBwdWJsaWM6CiAKICAgICBXb3JrZXJUaHJlYWRN
b2RlIHdvcmtlclRocmVhZE1vZGUoKSBjb25zdDsKIAorICAgIHZvaWQgaW5jcmVtZW50UHVzaEV2
ZW50Q291bnRlcigpIHsgKyttX3B1c2hFdmVudENvdW50ZXI7IH0KKyAgICB2b2lkIGRlY3JlbWVu
dFB1c2hFdmVudENvdW50ZXIoKTsKKyAgICB2b2lkIHNldEFzSW5zcGVjdGVkKGJvb2wpOworCisg
ICAgYm9vbCBzaG91bGRDb250aW51ZSgpIGNvbnN0IHsgcmV0dXJuICEhbV9wdXNoRXZlbnRDb3Vu
dGVyIHx8IG1faXNJbnNwZWN0ZWQ7IH0KKwogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihT
V1NlcnZlciYsIFNXU2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU2NyaXB0
QnVmZmVyJiwgY29uc3QgQ2VydGlmaWNhdGVJbmZvJiwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9s
aWN5UmVzcG9uc2VIZWFkZXJzJiwgY29uc3QgQ3Jvc3NPcmlnaW5FbWJlZGRlclBvbGljeSYsIFN0
cmluZyYmIHJlZmVycmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgSGFzaE1hcDxVUkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+
JiYpOwogCkBAIC0xNDQsNiArMTUwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRlcm1pbmF0aW9u
Q29tcGxldGVkKCk7CiAgICAgdm9pZCB0ZXJtaW5hdGlvblRpbWVyRmlyZWQoKTsKICAgICB2b2lk
IGNhbGxUZXJtaW5hdGlvbkNhbGxiYWNrcygpOworICAgIHZvaWQgdGVybWluYXRlSWZQb3NzaWJs
ZSgpOwogCiAgICAgV2Vha1B0cjxTV1NlcnZlcj4gbV9zZXJ2ZXI7CiAgICAgU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleSBtX3JlZ2lzdHJhdGlvbktleTsKQEAgLTE2Niw2ICsxNzMsOCBAQCBw
cml2YXRlOgogICAgIFZlY3RvcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+PiBtX3Rlcm1pbmF0
aW9uQ2FsbGJhY2tzOwogICAgIFRpbWVyIG1fdGVybWluYXRpb25UaW1lcjsKICAgICBMYXN0TmF2
aWdhdGlvbldhc0FwcEluaXRpYXRlZCBtX2xhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkOwor
ICAgIGludCBtX3B1c2hFdmVudENvdW50ZXIgeyAwIH07CisgICAgYm9vbCBtX2lzSW5zcGVjdGVk
IHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CmluZGV4IGM2YjdjMDQ1MDlkNjVmMjc1OTBjNWU3NDI0ZTYwNTBmMjNlN2M2OWIuLjA3OGI2ZWEz
MGI5MTdhNzdhNzYyYTBiZGJjMDI3Njk0OWIzYWI5ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2
aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAt
MzgsNiArMzgsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24g
Tm90UmVmQ291bnRlZCB7CiAgICAgU2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgVVJMIHNjcmlwdFVSTCwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCBzY3JpcHQpCiAgICAgUG9zdE1lc3Nh
Z2VUb1NlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0
cmluZyBzb3VyY2VPcmlnaW4pCiAgICAgRGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCisgICAgU2V0QXNJbnNwZWN0ZWQoV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3Rl
ZCkKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCA5NzBlOTAwNmQ1OTk2OWFlZGNkZTIwOTYyYzkxYWIz
NDY0NWE5OTBkLi5hMWM2OGNiZWE0MzJlMTE2NDg4Yzk1OTlkYzIzYmQ2MmVlOGYxYmRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0zNzIsNiArMzcyLDExIEBAIHZv
aWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayhT
ZXJ2aWNlV29ya2VySWRlbnRpZmllCiAgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpEaWRGYWlsSGVh
cnRCZWF0Q2hlY2sgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciB9LCAwKTsKIH0KIAordm9pZCBX
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6c2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAg
ICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb246OlNldEFzSW5zcGVjdGVkIHsgaWRlbnRpZmllciwgaXNJbnNw
ZWN0ZWQgfSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4
IDFlMzE0MGY2ODJlYTYzNzRmNzkyMGI5MzkzMWFmOTc4ZWVmYmZhMTIuLmI1Njk0MGU0YjAzMzQ3
NGRiMjMwN2UxZGRjZTIwOTRiYTA1ZjhiOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rp
b24uaApAQCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3Vy
Y2UoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsK
ICAgICBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBkaWRGYWls
SGVhcnRCZWF0Q2hlY2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwor
ICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IGJvb2wpIGZpbmFsOwogCiAgICAgLy8gSVBDIG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdv
cmtlclN0YXJ0ZWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlk
ZW50aWZpZXI+LCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFu
ZGxlRmV0Y2gpIGZpbmFsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454830</attachid>
            <date>2022-03-16 07:14:34 -0700</date>
            <delta_ts>2022-03-16 08:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237827-20220316151432.patch</filename>
            <type>text/plain</type>
            <size>37678</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2MDNjNTRmMmNlYTZh
YWNmZmJjYTllZmIwNWM4MDFjY2Q4ODgxZi4uNmJlNjdiMWFiY2E4MmU2MDA3NjAyODM5OWNjNGM3
OWJlMWE2MGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAzLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBLZWVwIHNlcnZpY2Ugd29y
a2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBldmVuIHRob3VnaCB0aGV5IHNob3Vs
ZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMxMzkzNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSBpbiBTV1NlcnZlcldvcmtl
ciB3aGV0aGVyIGEgd29ya2VyIGlzIGluc3BlY3RlZCBvciBpcyBwcm9jZXNzaW5nIHB1c2ggZXZl
bnRzLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIGRlbGF5IHRlcm1pbmF0aW9uIG9mIHdvcmtl
cnMgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGluc3BlY3RlZCBvciBubyBsb25nZXIgcHJvY2Vzc2lu
ZyBwdXNoIGV2ZW50cy4KKyAgICAgICAgVHdvIGNvZGUgcGF0aHMgYXJlIGhhcHBlbmluZzoKKyAg
ICAgICAgMS4gQSBzZXJ2aWNlIHdvcmtlciB3YXMgdHJpZ2dlcmVkIHdpdGggc2VydmljZSB3b3Jr
ZXIgY2xpZW50cywgYW5kIGFsbCBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGFyZSByZW1vdmVkLgor
ICAgICAgICAgICBBdCB0aGF0IHBvaW50LCB3ZSB3ZXJlIHByZXZpb3VzbHkgdGVybWluYXRpbmcg
c2VydmljZSB3b3JrZXJzIGFmdGVyIGEgZGVsYXkuCisgICAgICAgICAgIEluc3RlYWQsIHdlIG5v
dyBvbmx5IHRlcm1pbmF0ZSB3b3JrZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBpbnNwZWN0ZWQgb3Ig
bm8gbG9uZ2VyIHByb2Nlc3NpbmcgcHVzaCBldmVudHMuCisgICAgICAgICAgIFdlIHJlc2NoZWR1
bGUgdGhlIHRpbWVyIHRvIGNvbnRpbnVlIHRyeWluZyByZW1vdmluZyB0aGUgY29udGV4dCBjb25u
ZWN0aW9uLgorICAgICAgICAyLiBBIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBzdG9wcGVkIGJ5IHJl
bW92YWwgb2Ygc2VydmljZSB3b3JrZXIgY2xpZW50cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRv
IHRlcm1pbmF0ZQorICAgICAgICAgICB0aGUgc2VydmljZSB3b3JrZXJzIHdoZW4gaW5zcGVjdGVk
IGFuZC9vciBwdXNoIGNvdW50ZXIgZ2V0cyBiYWNrIHRvIHJlZ3VsYXIgKG5vdCBpbnNwZWN0ZWQs
IG5vIHB1c2ggY291bnRlcikuCisgICAgICAgICAgIFdoZW4gdGVybWluYXRpbmcgc3VjaCBhIHNl
cnZpY2Ugd29ya2VyLCB3ZSB0cnkgcmVtb3ZpbmcgdGhlIGNvbnRleHQgY29ubmVjdGlvbiBhcyB3
ZWxsLgorCisgICAgICAgIFRvIG1ha2Ugc3VyZSBTV1NlcnZlcldvcmtlciBrbm93cyB3aGV0aGVy
IGluc3BlY3RhYmxlIG9yIG5vdCwgd2UgYWRkIGNvbm5lY3Rpb24gc3VwcG9ydCB0byB0cmFuc21p
dCB3aGV0aGVyIGluc3BlY3RlZCBmcm9tIFdlYlByb2Nlc3MuCisgICAgICAgIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eSBpcyByZXNwb25zaWJsZSB0byB1cGRhdGUgdGhlIGluc3BlY3RhYmxl
IHZhbHVlLgorICAgICAgICBJbnRyb2R1Y2UgaW50ZXJuYWxzIEFQSSB0byBzZXQgaW5zcGVjdGVk
IHN0YXRlIG9mIGEgc2VydmljZSB3b3JrZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJ
IHRlc3RzLgorCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDMtMTYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoIHRha2UgYSBTdHJpbmdWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjYjlmY2I4
ZTUzM2E2Nzk3MjJlZTcwNjJlOTRmNjY2NjUzNmU3MjMuLjQ2NThjYTUzZTNkMzE0MGNjNGFhMDUz
ZjZjNmRkMTJjY2IzYWEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTYg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEtlZXAgc2Vydmlj
ZSB3b3JrZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgaW5zcGVjdGVkIGV2ZW4gdGhvdWdoIHRoZXkg
c2hvdWxkIGJlIHRlcm1pbmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzgyNworICAgICAgICA8cmRhcjovLzg4MzEzOTM1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKwogMjAyMi0wMy0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgg
dGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDU0MTNjZTIyYWM4MTA5M2U2YjVkM2FkZGQyYjEyNjgz
MzNkMjc0ODAuLmVjMDA2NzljMDFmZjIwNjk2MjhjZDg3NmRlNzk1MjRiOTczOWQ3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApA
QCAtMTk5LDYgKzE5OSwxMSBAQCBTdHJpbmcgU2VydmljZVdvcmtlckludGVybmFsczo6c2Vydmlj
ZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aQogICAgIHJldHVybiBj
bGllbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlcklu
dGVybmFsczo6c2V0QXNJbnNwZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRBc0luc3BlY3RlZChtX2lkZW50aWZpZXIsIGlzSW5z
cGVjdGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggZjU1Njdh
OGUwYjZlMDdiYmY3NDk0MDMxM2E5YTRjMjc2NjkwM2EyMi4uN2JlMzc5ODNlMTA4NDI5ZTkyZmRj
MTkxYjQyM2ZiMmY1NThjMjc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZmV0Y2hFdmVudElzU2FtZVNpdGUoRmV0Y2hFdmVudCYpOwogCiAgICAgU3RyaW5nIHNlcnZpY2VX
b3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYp
OworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoYm9vbCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAppbmRl
eCA2OTlhZjczMmExZmIyYzcxNWMxNWYzNDIzN2FiNWIwMmZlZTI4OWM1Li5kNTkzMTRjZmJhOTNm
MzIxNWJjMzE1ODBkMDE1ZTdmOWJlMmI1MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKQEAgLTUyLDQgKzUyLDYgQEAKICAgICBi
b29sZWFuIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZlbnQpOwogCiAgICAgRE9N
U3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoU2VydmljZVdvcmtl
ckNsaWVudCBjbGllbnQpOworCisgICAgdW5kZWZpbmVkIHNldEFzSW5zcGVjdGVkKGJvb2xlYW4g
aXNJbnNwZWN0ZWQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggODVhZDI4YjRmZGQz
ODMwYzdhNDcyNzk4MWU3NmU5YzYxYmZkOTBjZC4uZTI2MTgyYWU5MjgzZDI4MWYzYWM0MWM5MGRj
YmRhMjI1NDE3ZThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTIwOCw2ICsyMDgsMTIg
QEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQogICAgICAg
ICBzdG9wV29ya2VyKHNlcnZpY2VXb3JrZXIsIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgW10g
eyB9KTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRBc0luc3BlY3RlZChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVjdGVkKQoreworICAgIGlm
IChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2V0QXNJbnNwZWN0ZWQoaWRl
bnRpZmllciwgaXNJbnNwZWN0ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGYzYmVhNWYxOGYxNDdiMWQzNDMzNjc0MzhhMzU0
MTE1YzgwZDNlOTkuLmIyNzgzMjNmOTkyZDJkNjgyNjNiOTNlM2UyMDEzZmQxNDc5NzU5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNv
bnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigp
IGNvbnN0ID0gMDsKQEAgLTExMCw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwX3MgfTsKICAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9t
cyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CisKIHBy
aXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggMjQ4NTBjNGZlNzQ1ZjJlNzY1ODJl
NjRjNTE1YTk3MWU0ZDMyOWNiNi4uZWVhZGM1ZTUwY2FhYjRmNTY3NzE2NzY4YjkwYWM3ZGE0Y2I2
Zjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBAIC02
MSw2ICs2MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9X
b3JrZXIoRnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQogewogICAgIG1fY2hhbm5lbCA9ICZjaGFu
bmVsOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQo
bV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRpZmllcigpLCB0cnVlKTsKICAgICBtX3Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS50aHJlYWQoKS5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFz
ayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5l
Y3RGcm9udGVuZCgpOwogICAgIH0pOwpAQCAtNzEsNiArNzIsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXIoRnJvbnRlbmRDaGFubmVsJiBj
aGFubmVsKQogICAgIEFTU0VSVF9VTlVTRUQoY2hhbm5lbCwgJmNoYW5uZWwgPT0gbV9jaGFubmVs
KTsKICAgICBtX2NoYW5uZWwgPSBudWxscHRyOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQobV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRp
ZmllcigpLCBmYWxzZSk7CiAgICAgbV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkudGhyZWFkKCku
cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdG9yRGVzdHJveWVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA4ZTFmNWNlZWE3Y2MyODhkZjM3ODliZDQ1
NTNiZmRhNjY1NGFhNjVhLi41NTliYWVhYTAwNzk4Mzc1OTZkMzUyOWZmODk1YWMyYjlkOGE0MWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcApAQCAtMTAzOCwxNyArMTAzOCwxNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
ICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0
aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJt
aW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWlu
YXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNS
dW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCisgICAgICAgICAg
ICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGll
bnRPcmlnaW4gJiYgIXdvcmtlci0+c2hvdWxkQ29udGludWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgd29ya2Vyc1RvVGVybWluYXRlLmFwcGVuZCh3b3JrZXIucHRyKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZm9yIChhdXRvKiB3b3JrZXIgOiB3b3JrZXJzVG9UZXJtaW5hdGUpCiAg
ICAgICAgICAgICAgICAgd29ya2VyLT50ZXJtaW5hdGUoKTsKIAotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5zKGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRSZWdpc3RyYWJsZURvbWFpbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKmNvbm5lY3Rpb24p
OwotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbklmUG9zc2libGUoY2xpZW50UmVnaXN0cmFibGVEb21haW4pID09IFNob3VsZERl
bGF5UmVtb3ZhbDo6WWVzKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xp
ZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgp
KTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtl
cnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQg
PyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1f
Y2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVtb3ZlKGNsaWVudE9yaWdpbik7CkBAIC0xMDc0
LDYgKzEwNzQsMjUgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29u
dHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAor
U1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAg
aWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKKyAgICAg
ICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZh
bHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+cmVn
aXN0cmFibGVEb21haW4oKSA9PSBkb21haW4gJiYgd29ya2VyLT5zaG91bGRDb250aW51ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6WWVzOworICAgIH0KKworICAg
IHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCpjb25uZWN0aW9uKTsKKyAgICBjb25uZWN0aW9uLT5j
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworICAgIHJldHVybiBTaG91bGREZWxheVJlbW92
YWw6Ok5vOworfQorCiB2b2lkIFNXU2VydmVyOjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCkKIHsK
ICAgICAvLyBBY2NlbGVyYXRpbmcgdGhlIGRlbGF5ZWQgdGVybWluYXRpb24gb2YgdW51c2VkIHNl
cnZpY2Ugd29ya2VycyBkdWUgdG8gbWVtb3J5IHByZXNzdXJlLgpAQCAtMTI4MSwxNCArMTMwMCwx
OCBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0g
ICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4o
W3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0gewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlciBhcyBwcm9j
ZXNzaW5nIHB1c2ggZXZlbnQgdG9vayB0b28gbXVjaCB0aW1lIik7Ci0gICAgICAgICAgICAgICAg
d29ya2VyLT50ZXJtaW5hdGUoKTsKKworICAgICAgICAgICAgd29ya2VyLT5pbmNyZW1lbnRQdXNo
RXZlbnRDb3VudGVyKCk7CisgICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oW3dvcmtlcl0geworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBpcyB0YWtpbmcgdG9vIG11Y2gg
dGltZSB0byBwcm9jZXNzIGEgcHVzaCBldmVudCIpOworICAgICAgICAgICAgICAgIHdvcmtlci0+
ZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlz
LT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9u
RGVsYXkgOiAyX3MpOwotICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZp
cmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRl
V29ya2VyVGltZXIpXShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3Rh
dHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdU
Rk1vdmUodGVybWluYXRlV29ya2VyVGltZXIpLCB3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAodGVybWluYXRlV29y
a2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5kZWNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdv
cmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soc3VjY2VlZGVkKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDVhMmUyZTRhNjE5OTVm
N2ExOGU1MDM5YjQ0Y2U3ZmZmOWZmYWVlZWQuLjkzZDdmNzFlMTllNTMyZWIzZTY3MDRhMDdiNmVl
Y2EwZGY4Y2I0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbiA9IDJfczsKIAogICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICBib29sIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nOyB9CkBAIC0y
MzAsNiArMjMxLDEwIEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNpYmxlSWRl
bnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50
SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQogCiAgICAgdm9pZCBmb3JFYWNoU2Vydmlj
ZVdvcmtlcihjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFNXU2VydmVyV29ya2VyJik+JikgY29u
c3Q7CisgICAgYm9vbCBoYXNDbGllbnRzV2l0aE9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbikgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5jb250YWlucyhvcmln
aW4pOyB9CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZERlbGF5UmVtb3ZhbCA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgU2hvdWxkRGVsYXlSZW1vdmFsIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQ
b3NzaWJsZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2NTYzNjJhMDkxMTEw
YjRjMTM2N2I2ZDVhMTQwNDYwNDgzOTJlZDYwLi42ZGNkODgyODkyN2JlNmUxNGMzZWQ1ZWJhMTIz
YzE4OTNhNjY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xMzcsNiArMTM3LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIKICAgICAgICAgd29y
a2VyLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2Vy
dmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAg
ICAgIHdvcmtlci0+c2V0QXNJbnNwZWN0ZWQoaXNJbnNwZWN0ZWQpOworfQorCiB2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV2hlblBvc3NpYmxlKCkKIHsKICAgICBt
X3Nob3VsZFRlcm1pbmF0ZVdoZW5Qb3NzaWJsZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBiMDhhMzgzYThlOTQ5ZDAyNWVjNGE1YmU1ZTAyZmIwZDU2
ZmM5ZDhlLi42MTg2MzQ2Y2QxNzY5NWJhM2Q2OGEwNDJmZDcyYjQxNDAyZWEyYmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCBjZGJmZTQ0YmVlYzBjOTA4YmFjMTIyNGQwZWE0YjZmMTJmZWRmMWJkLi45OTI0
ZmJkYmFlNDYxMmNhODFlZGFiYjc3Njg3ZmZjNWRmM2NkYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApA
QCAtMzk3LDYgKzM5NywyOCBAQCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtlclBhZwogICAgIHJldHVybiBt
X3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7CiB9CiAKK3ZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKQoreworICAgIEFTU0VS
VChtX3B1c2hFdmVudENvdW50ZXIpOworICAgIC0tbV9wdXNoRXZlbnRDb3VudGVyOworICAgIHRl
cm1pbmF0ZUlmUG9zc2libGUoKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNw
ZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBtX2lzSW5zcGVjdGVkID0gaXNJbnNwZWN0
ZWQ7CisgICAgdGVybWluYXRlSWZQb3NzaWJsZSgpOworfQorCit2b2lkIFNXU2VydmVyV29ya2Vy
Ojp0ZXJtaW5hdGVJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV9wdXNoRXZlbnRDb3VudGVyIHx8
IG1faXNJbnNwZWN0ZWQgfHwgIW1fc2VydmVyIHx8IG1fc2VydmVyLT5oYXNDbGllbnRzV2l0aE9y
aWdpbihvcmlnaW4oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHRlcm1pbmF0ZSgpOworICAg
IG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVE
b21haW4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAxMTA4NmQxOTIzMTFlNTJkOTZmZTlm
OWE5NDk4NWIzNmIzMjMyZjA4Li45ZWRkNDQ1ZTZjYmM5ZWJjNWNiZDY2ODgxZWIzZDUwZDFkYmYw
N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMzUsNiArMTM1LDEyIEBAIHB1YmxpYzoKIAogICAgIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbmNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCkgeyArK21fcHVzaEV2ZW50Q291bnRlcjsgfQorICAgIHZv
aWQgZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX3B1
c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQorCiBwcml2YXRlOgogICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CiAKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dGVybWluYXRpb25Db21wbGV0ZWQoKTsKICAgICB2b2lkIHRlcm1pbmF0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgY2FsbFRlcm1pbmF0aW9uQ2FsbGJhY2tzKCk7CisgICAgdm9pZCB0ZXJtaW5h
dGVJZlBvc3NpYmxlKCk7CiAKICAgICBXZWFrUHRyPFNXU2VydmVyPiBtX3NlcnZlcjsKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwpAQCAtMTY2LDYg
KzE3Myw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fdGVybWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwog
ICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ7CisgICAgaW50IG1fcHVzaEV2ZW50Q291bnRlciB7IDAgfTsKKyAgICBib29sIG1f
aXNJbnNwZWN0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggYzZiN2MwNDUwOWQ2NWYyNzU5MGM1ZTc0MjRlNjA1MGYyM2U3YzY5
Yi4uMDc4YjZlYTMwYjkxN2E3N2E3NjJhMGJkYmMwMjc2OTQ5YjNhYjk4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0zOCw2ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAg
ICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2so
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBTZXRBc0lu
c3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IGlzSW5zcGVjdGVkKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDk3MGU5MDA2ZDU5OTY5YWVkY2Rl
MjA5NjJjOTFhYjM0NjQ1YTk5MGQuLmExYzY4Y2JlYTQzMmUxMTY0ODhjOTU5OWRjMjNiZDYyZWU4
ZjFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTM3Miw2ICsz
NzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWUKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OkRpZEZhaWxIZWFydEJlYXRDaGVjayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIDApOwog
fQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRBc0luc3BlY3RlZChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVj
dGVkKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0QXNJbnNwZWN0ZWQgeyBpZGVudGlm
aWVyLCBpc0luc3BlY3RlZCB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggMWUzMTQwZjY4MmVhNjM3NGY3OTIwYjkzOTMxYWY5NzhlZWZiZmExMi4uYjU2
OTQwZTRiMDMzNDc0ZGIyMzA3ZTFkZGNlMjA5NGJhMDVmOGI5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYpIGZpbmFsOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCBzZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmJiMTgwOTQ4ZTVlNTFjOGJlYmQ5NjA1ODhiNzJjY2Ey
ZTlkNDI2Zi4uNDIyZmExN2MyZWJiZTBhZGI4YjJlM2MyZGRhNzZlMDNjNGFjZGRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTAzLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBLZWVwIHNlcnZpY2Ugd29ya2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBl
dmVuIHRob3VnaCB0aGV5IHNob3VsZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMx
MzkzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbToKKwogMjAyMi0wMy0x
NiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1F
VHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGggdGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCAzYmQy
ZjFlMjNkZjcwYjE1NDZlZTZmYzU3MjU3ZjhiODZkYzAyNDNlLi43ZmM2ZWMyM2EzZjIxNzI2NmIy
MzE4OGU1NTYzNGI5Yzg3M2JmZGM1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNjcsMyArMzY3LDMyNyBAQCBURVNUKFB1c2hB
UEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAKICAgICBjbGVhcldlYnNpdGVE
YXRhU3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOwogfQorCitzdGF0aWMg
Y29uc3QgY2hhciogcHVzaEV2ZW50c0FuZEluc3BlY3RlZFNlcnZpY2VXb3JrZXJTY3JpcHRCeXRl
cyA9IFIiU1dSRVNPVVJDRSgKK2xldCBwb3J0Oworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNz
YWdlIiwgKGV2ZW50KSA9PiB7CisgICAgcG9ydCA9IGV2ZW50LmRhdGEucG9ydDsKKyAgICBwb3J0
LnBvc3RNZXNzYWdlKHNlbGYuaW50ZXJuYWxzID8gIlJlYWR5IiA6ICJObyBpbnRlcm5hbHMiKTsK
K30pOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2Vs
Zi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CisgICAgaWYg
KGV2ZW50LmRhdGEudGV4dCgpID09PSAnZmlyc3QnKSB7CisgICAgICAgIHNlbGYuaW50ZXJuYWxz
LnNldEFzSW5zcGVjdGVkKHRydWUpOworICAgICAgICBzZWxmLnByZXZpb3VzTWVzc2FnZURhdGEg
PSAnZmlyc3QnOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC5kYXRhLnRl
eHQoKSA9PT0gJ3NlY29uZCcpIHsKKyAgICAgICAgc2VsZi5pbnRlcm5hbHMuc2V0QXNJbnNwZWN0
ZWQoZmFsc2UpOworICAgICAgICBpZiAoc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhICE9PSAnZmly
c3QnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdleHBlY3Rl
ZCBmaXJzdCcpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQuZGF0YS50
ZXh0KCkgPT09ICd0aGlyZCcpIHsKKyAgICAgICAgaWYgKHNlbGYucHJldmlvdXNNZXNzYWdlRGF0
YSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVq
ZWN0KCdleHBlY3RlZCB1bmRlZmluZWQnKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
c2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhID0gZXZlbnQuZGF0YS50ZXh0KCk7CisgICAgZXZlbnQu
d2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdleHBlY3RlZCBhIGtub3duIG1lc3NhZ2UnKSk7Cit9
KTsKKylTV1JFU09VUkNFIjsKKworVEVTVChQdXNoQVBJLCBwdXNoRXZlbnRzQW5kSW5zcGVjdGVk
U2VydmljZVdvcmtlcikKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7
CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsg
e3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9fSwgcHVzaEV2ZW50
c0FuZEluc3BlY3RlZFNlcnZpY2VXb3JrZXJTY3JpcHRCeXRlcyB9IH0KKyAgICB9LCBUZXN0V2Vi
S2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBbV0tXZWJzaXRlRGF0
YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBjbGVhcldlYnNpdGVEYXRhU3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0
ZURhdGFTdG9yZV0pOworCisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbnRlcm5hbHNJbmpl
Y3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdL
UHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKworICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0
V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJv
Y2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10sIFdLTm90aWZpY2F0aW9u
TWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25NYW5hZ2VyKCkgfSk7Cisg
ICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCksIHRydWUpOworCisgICAg
YXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRo
RXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJD
b250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIu
Z2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVhZHkiOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdl
dCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAgW3dlYlZpZXcgX2Nsb3Nl
XTsKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKworICAgIHRlcm1pbmF0ZU5ldHdvcmtQcm9jZXNz
V2hpbGVSZWdpc3RyYXRpb25Jc1N0b3JlZChjb25maWd1cmF0aW9uLmdldCgpKTsKKworICAgIC8v
IFB1c2ggZXZlbnQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGhvdXQgYW55IHJlbGF0ZWQgcGFnZS4K
KyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vz
c2Z1bCA9IGZhbHNlOworICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJmaXJzdCI7CisgICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2Fn
ZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVz
dWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAg
cHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVDVF9UUlVFKHB1c2hN
ZXNzYWdlU3VjY2Vzc2Z1bCk7CisKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwor
ICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIG1lc3NhZ2UgPSBAInNlY29u
ZCI7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1l
c3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxl
cjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3Vs
dDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVD
VF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7CisKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3Nl
ZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIG1lc3Nh
Z2UgPSBAInRoaXJkIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3By
b2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBs
ZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNz
ZnVsID0gcmVzdWx0OworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7
CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VTdWNjZXNzZnVsKTsKK30KKworc3RhdGljIGNv
bnN0IGNoYXIqIHB1c2hFdmVudHNXaXRoUGFnZVNlcnZpY2VXb3JrZXJTY3JpcHRCeXRlcyA9IFIi
U1dSRVNPVVJDRSgKK2xldCBwb3J0Oworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
KGV2ZW50KSA9PiB7CisgICAgcG9ydCA9IGV2ZW50LmRhdGEucG9ydDsKKyAgICBwb3J0LnBvc3RN
ZXNzYWdlKHNlbGYuaW50ZXJuYWxzID8gIlJlYWR5IiA6ICJObyBpbnRlcm5hbHMiKTsKK30pOwor
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdp
c3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CisgICAgaWYgKGV2ZW50
LmRhdGEudGV4dCgpID09PSAnZmlyc3QnKSB7CisgICAgICAgIHNlbGYucHJldmlvdXNNZXNzYWdl
RGF0YSA9ICdmaXJzdCc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LmRh
dGEudGV4dCgpID09PSAnc2Vjb25kJykgeworICAgICAgICBpZiAoc2VsZi5wcmV2aW91c01lc3Nh
Z2VEYXRhICE9PSAnZmlyc3QnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2Uu
cmVqZWN0KCdleHBlY3RlZCBmaXJzdCcpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBp
ZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICd0aGlyZCcpIHsKKyAgICAgICAgaWYgKHNlbGYucHJl
dmlvdXNNZXNzYWdlRGF0YSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgZXZlbnQud2FpdFVu
dGlsKFByb21pc2UucmVqZWN0KCdleHBlY3RlZCB1bmRlZmluZWQnKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhID0gZXZlbnQuZGF0YS50ZXh0
KCk7CisgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdleHBlY3RlZCBhIGtub3du
IG1lc3NhZ2UnKSk7Cit9KTsKKylTV1JFU09VUkNFIjsKKworVEVTVChQdXNoQVBJLCBwdXNoRXZl
bnRzV2l0aFBhZ2VTZXJ2aWNlV29ya2VyKQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXIgc2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAi
L3N3LmpzIiwgeyB7eyAiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19
LCBwdXNoRXZlbnRzV2l0aFBhZ2VTZXJ2aWNlV29ya2VyU2NyaXB0Qnl0ZXMgfSB9CisgICAgfSwg
VGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOworCisgICAgW1dLV2Vi
c2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKwor
ICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0
YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtkYXRhU3RvcmVDb25maWd1
cmF0aW9uIHNldFNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQ6Tk9d
OworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpXSk7
CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFT
dG9yZSA9IGRhdGFTdG9yZS5nZXQoKTsKKyAgICBjbGVhcldlYnNpdGVEYXRhU3RvcmUoW2NvbmZp
Z3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOworCisgICAgYXV0byBjb250ZXh0ID0gYWRvcHRX
SyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0
KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKworICAgIGF1dG8g
cHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIoeyBbW2Nv
bmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVzdGluZ10s
IFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmljYXRpb25N
YW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3JpZ2luKCks
IHRydWUpOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNoQVBJTWVz
c2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25m
aWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6
bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiUmVhZHkiOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJl
cXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworCisgICAg
Ly8gUHVzaCBldmVudCBmb3Igc2VydmljZSB3b3JrZXIgd2l0aG91dCBhbnkgcmVsYXRlZCBwYWdl
LgorICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VTdWNj
ZXNzZnVsID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBAImZpcnN0IjsKKyAgICBb
W2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNz
YWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNv
ZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCBy
ZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OworICAgICAg
ICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVz
aE1lc3NhZ2VTdWNjZXNzZnVsKTsKKyAgICBzbGVlcCgwLjEpOworCisgICAgcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAg
ICBtZXNzYWdlID0gQCJzZWNvbmQiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJM
XSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2Fn
ZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJv
Y2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwpOworCisgICAg
Ly8gQ2xvc2luZyB0aGUgd2ViIHZpZXcgc2hvdWxkIHRlcm1pbmF0ZSB0aGUgc2VydmljZSB3b3Jr
ZXIuCisgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKworICAg
IHNsZWVwKDAuMSk7CisKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1
c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIG1lc3NhZ2UgPSBAInRoaXJkIjsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpt
ZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9v
bCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OworICAg
ICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJV
RShwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwpOworfQorCitzdGF0aWMgY29uc3QgY2hhciogaW5zcGVj
dGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlU2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCits
ZXQgcG9ydDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4gewor
ICAgIHBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2FnZShzZWxmLmlu
dGVybmFscyA/ICJSZWFkeSIgOiAiTm8gaW50ZXJuYWxzIik7Cit9KTsKK3NlbGYuYWRkRXZlbnRM
aXN0ZW5lcigicHVzaCIsIGFzeW5jIChldmVudCkgPT4geworICAgIHNlbGYucmVnaXN0cmF0aW9u
LnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOworICAgIGlmIChldmVudC5kYXRhLnRl
eHQoKSA9PT0gJ2ZpcnN0bWVzc2FnZS1pbnNwZWN0ZWQnIHx8IGV2ZW50LmRhdGEudGV4dCgpID09
PSAnZmlyc3RtZXNzYWdlLW5vdC1pbnNwZWN0ZWQnKSB7CisgICAgICAgIGlmIChldmVudC5kYXRh
LnRleHQoKSA9PT0gJ2ZpcnN0bWVzc2FnZS1pbnNwZWN0ZWQnKQorICAgICAgICAgICAgc2VsZi5p
bnRlcm5hbHMuc2V0QXNJbnNwZWN0ZWQodHJ1ZSk7CisgICAgICAgIGlmIChzZWxmLnByZXZpb3Vz
TWVzc2FnZURhdGEgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQ
cm9taXNlLnJlamVjdCgndW5leHBlY3RlZCBzdGF0ZSB3aXRoIGluc3BlY3RlZCBtZXNzYWdlJykp
OworICAgICAgICBzZWxmLnByZXZpb3VzTWVzc2FnZURhdGEgPSAnaW5zcGVjdGVkJzsKKyAgICAg
ICAgLy8gV2FpdCBmb3IgY2xpZW50IHRvIGdvIGF3YXkgYmVmb3JlIHJlc29sdmluZyB0aGUgZXZl
bnQgcHJvbWlzZTsKKyAgICAgICAgbGV0IHJlc29sdmU7CisgICAgICAgIGV2ZW50LndhaXRVbnRp
bChuZXcgUHJvbWlzZShyID0+IHJlc29sdmUgPSByKSk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgICAgICBjb25zdCBjbGllbnRzID0gYXdhaXQgc2VsZi5jbGllbnRzLm1hdGNoQWxs
KHsgaW5jbHVkZVVuY29udHJvbGxlZCA6IHRydWUgfSk7CisgICAgICAgICAgICBpZiAoIWNsaWVu
dHMubGVuZ3RoKQorICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC5kYXRhLnRleHQoKSA9PT0gJ25vdCBpbnNw
ZWN0ZWQnKSB7CisgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2VsZi5pbnRlcm5hbHMuc2V0QXNJ
bnNwZWN0ZWQoZmFsc2UpLCAxMCk7CisgICAgICAgIGlmIChzZWxmLnByZXZpb3VzTWVzc2FnZURh
dGEgIT09ICdpbnNwZWN0ZWQnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2Uu
cmVqZWN0KCd1bmV4cGVjdGVkIHN0YXRlIHdpdGggbm90IGluc3BlY3RlZCBtZXNzYWdlJykpOwor
ICAgICAgICBzZWxmLnByZXZpb3VzTWVzc2FnZURhdGEgPSAnbm90IGluc3BlY3RlZCc7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LmRhdGEudGV4dCgpID09PSAnbGFzdCcp
IHsKKyAgICAgICAgaWYgKHNlbGYucHJldmlvdXNNZXNzYWdlRGF0YSAhPT0gdW5kZWZpbmVkKQor
ICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCd1bmV4cGVjdGVkIHN0
YXRlIHdpdGggbGFzdCBtZXNzYWdlJykpOworICAgIH0KK30pOworKVNXUkVTT1VSQ0UiOworCitz
dGF0aWMgdm9pZCB0ZXN0SW5zcGVjdGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlKGJvb2wgZW5h
YmxlU2VydmljZVdvcmtlckluc3BlY3Rpb24pCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7
ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fX0sIGluc3BlY3RlZFNlcnZpY2VXb3JrZXJXaXRob3V0UGFnZVNjcmlwdEJ5dGVzIH0gfQorICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKKworICAgIFtX
S1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107
CisKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbZGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBzZXRTZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVk
Ok5PXTsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUg
YWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQo
KV0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVE
YXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKKworICAgIGF1dG8gY29udGV4dCA9IGFk
b3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxl
VGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVUZXN0IikpOworICAgIFtjb25maWd1cmF0aW9u
IHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29sICopY29udGV4dC5nZXQoKV07CisKKyAgICBh
dXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsg
W1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3Rp
bmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0
aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdp
bigpLCB0cnVlKTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQ
SU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgZXhwZWN0ZWRNZXNz
YWdlID0gIlJlYWR5IjsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZl
ci5yZXF1ZXN0KCldOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKwor
ICAgIC8vIFB1c2ggZXZlbnQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGhvdXQgYW55IHJlbGF0ZWQg
cGFnZS4KKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdl
U3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJmaXJzdG1lc3Nh
Z2UtaW5zcGVjdGVkIjsKKyAgICBpZiAoIWVuYWJsZVNlcnZpY2VXb3JrZXJJbnNwZWN0aW9uKQor
ICAgICAgICBtZXNzYWdlID0gQCJmaXJzdG1lc3NhZ2Utbm90LWluc3BlY3RlZCI7CisgICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2Fn
ZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVz
dWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAg
cHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworCisgICAgLy8gV2UgZGVsYXkg
c28gdGhhdCB0aGUgcHVzaCBtZXNzYWdlIHdpbGwgaGFwcGVuIGJlZm9yZSB0aGUgdW5yZWdpc3Ry
YXRpb24gb2YgdGhlIHNlcnZpY2Ugd29ya2VyIGNsaWVudC4KKyAgICBzbGVlcCgwLjUpOworCisg
ICAgLy8gQ2xvc2luZyB0aGUgd2ViIHZpZXcgc2hvdWxkIG5vdCB0ZXJtaW5hdGUgdGhlIHNlcnZp
Y2Ugd29ya2VyIGFzIHNlcnZpY2Ugd29ya2VyIGlzIGluc3BlY3RlZC4KKyAgICBbd2ViVmlldyBf
Y2xvc2VdOworICAgIHdlYlZpZXcgPSBudWxscHRyOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3Nh
Z2VTdWNjZXNzZnVsKTsKKworICAgIC8vIFdlIGRlbGF5IHNvIHRoYXQgdGhlIHRpbWVyIHRvIHRl
cm1pbmF0ZSBzZXJ2aWNlIHdvcmtlciBraWNrcyBpbiwgYXQgbW9zdCB1cCB0byB0aGUgbWF4IHB1
c2ggbWVzc2FnZSBhbGxvd2VkIHRpbWUsIGFrYSAyIHNlY29uZHMuCisgICAgc2xlZXAoMyk7CisK
KyAgICAvLyBTZW5kIG1lc3NhZ2UgYXQgd2hpY2ggcG9pbnQgdGhlIHNlcnZpY2Ugd29ya2VyIHdp
bGwgbm90IGJlIGluc3BlY3RlZCBhbnltb3JlIGFuZCB3aWxsIGJlIGNsb3NlZC4KKyAgICBwdXNo
TWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZh
bHNlOworICAgIG1lc3NhZ2UgPSBAIm5vdCBpbnNwZWN0ZWQiOworICAgIFtbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5
KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZl
ci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAg
ICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdl
UHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfRVEocHVzaE1lc3NhZ2VTdWNjZXNz
ZnVsLCBlbmFibGVTZXJ2aWNlV29ya2VySW5zcGVjdGlvbik7CisKKyAgICAvLyBXZSBkZWxheSBz
byB0aGF0IHRoZSB0aW1lciB0byB0ZXJtaW5hdGUgc2VydmljZSB3b3JrZXIga2lja3MgaW4sIGF0
IG1vc3QgdXAgdG8gdGhlIG1heCBwdXNoIG1lc3NhZ2UgYWxsb3dlZCB0aW1lLCBha2EgMiBzZWNv
bmRzLgorICAgIHNsZWVwKDMpOworCisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsK
KyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0gQCJsYXN0
IjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVz
c2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVy
Ol4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0
OworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBF
Q1RfVFJVRShwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwpOworfQorCitURVNUKFB1c2hBUEksIGluc3Bl
Y3RlZFNlcnZpY2VXb3JrZXJXaXRob3V0UGFnZSkKK3sKKyAgICBib29sIGVuYWJsZVNlcnZpY2VX
b3JrZXJJbnNwZWN0aW9uID0gdHJ1ZTsKKyAgICB0ZXN0SW5zcGVjdGVkU2VydmljZVdvcmtlcldp
dGhvdXRQYWdlKGVuYWJsZVNlcnZpY2VXb3JrZXJJbnNwZWN0aW9uKTsKK30KKworVEVTVChQdXNo
QVBJLCB1bmluc3BlY3RlZFNlcnZpY2VXb3JrZXJXaXRob3V0UGFnZSkKK3sKKyAgICBib29sIGVu
YWJsZVNlcnZpY2VXb3JrZXJJbnNwZWN0aW9uID0gZmFsc2U7CisgICAgdGVzdEluc3BlY3RlZFNl
cnZpY2VXb3JrZXJXaXRob3V0UGFnZShlbmFibGVTZXJ2aWNlV29ya2VySW5zcGVjdGlvbik7Cit9
Cg==
</data>
<flag name="commit-queue"
          id="482614"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454833</attachid>
            <date>2022-03-16 07:56:19 -0700</date>
            <delta_ts>2022-03-16 09:01:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237827-20220316155617.patch</filename>
            <type>text/plain</type>
            <size>37539</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2MDNjNTRmMmNlYTZh
YWNmZmJjYTllZmIwNWM4MDFjY2Q4ODgxZi4uNmJlNjdiMWFiY2E4MmU2MDA3NjAyODM5OWNjNGM3
OWJlMWE2MGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAzLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBLZWVwIHNlcnZpY2Ugd29y
a2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBldmVuIHRob3VnaCB0aGV5IHNob3Vs
ZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMxMzkzNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSBpbiBTV1NlcnZlcldvcmtl
ciB3aGV0aGVyIGEgd29ya2VyIGlzIGluc3BlY3RlZCBvciBpcyBwcm9jZXNzaW5nIHB1c2ggZXZl
bnRzLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIGRlbGF5IHRlcm1pbmF0aW9uIG9mIHdvcmtl
cnMgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGluc3BlY3RlZCBvciBubyBsb25nZXIgcHJvY2Vzc2lu
ZyBwdXNoIGV2ZW50cy4KKyAgICAgICAgVHdvIGNvZGUgcGF0aHMgYXJlIGhhcHBlbmluZzoKKyAg
ICAgICAgMS4gQSBzZXJ2aWNlIHdvcmtlciB3YXMgdHJpZ2dlcmVkIHdpdGggc2VydmljZSB3b3Jr
ZXIgY2xpZW50cywgYW5kIGFsbCBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGFyZSByZW1vdmVkLgor
ICAgICAgICAgICBBdCB0aGF0IHBvaW50LCB3ZSB3ZXJlIHByZXZpb3VzbHkgdGVybWluYXRpbmcg
c2VydmljZSB3b3JrZXJzIGFmdGVyIGEgZGVsYXkuCisgICAgICAgICAgIEluc3RlYWQsIHdlIG5v
dyBvbmx5IHRlcm1pbmF0ZSB3b3JrZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBpbnNwZWN0ZWQgb3Ig
bm8gbG9uZ2VyIHByb2Nlc3NpbmcgcHVzaCBldmVudHMuCisgICAgICAgICAgIFdlIHJlc2NoZWR1
bGUgdGhlIHRpbWVyIHRvIGNvbnRpbnVlIHRyeWluZyByZW1vdmluZyB0aGUgY29udGV4dCBjb25u
ZWN0aW9uLgorICAgICAgICAyLiBBIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBzdG9wcGVkIGJ5IHJl
bW92YWwgb2Ygc2VydmljZSB3b3JrZXIgY2xpZW50cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRv
IHRlcm1pbmF0ZQorICAgICAgICAgICB0aGUgc2VydmljZSB3b3JrZXJzIHdoZW4gaW5zcGVjdGVk
IGFuZC9vciBwdXNoIGNvdW50ZXIgZ2V0cyBiYWNrIHRvIHJlZ3VsYXIgKG5vdCBpbnNwZWN0ZWQs
IG5vIHB1c2ggY291bnRlcikuCisgICAgICAgICAgIFdoZW4gdGVybWluYXRpbmcgc3VjaCBhIHNl
cnZpY2Ugd29ya2VyLCB3ZSB0cnkgcmVtb3ZpbmcgdGhlIGNvbnRleHQgY29ubmVjdGlvbiBhcyB3
ZWxsLgorCisgICAgICAgIFRvIG1ha2Ugc3VyZSBTV1NlcnZlcldvcmtlciBrbm93cyB3aGV0aGVy
IGluc3BlY3RhYmxlIG9yIG5vdCwgd2UgYWRkIGNvbm5lY3Rpb24gc3VwcG9ydCB0byB0cmFuc21p
dCB3aGV0aGVyIGluc3BlY3RlZCBmcm9tIFdlYlByb2Nlc3MuCisgICAgICAgIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eSBpcyByZXNwb25zaWJsZSB0byB1cGRhdGUgdGhlIGluc3BlY3RhYmxl
IHZhbHVlLgorICAgICAgICBJbnRyb2R1Y2UgaW50ZXJuYWxzIEFQSSB0byBzZXQgaW5zcGVjdGVk
IHN0YXRlIG9mIGEgc2VydmljZSB3b3JrZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJ
IHRlc3RzLgorCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDMtMTYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoIHRha2UgYSBTdHJpbmdWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjYjlmY2I4
ZTUzM2E2Nzk3MjJlZTcwNjJlOTRmNjY2NjUzNmU3MjMuLjQ2NThjYTUzZTNkMzE0MGNjNGFhMDUz
ZjZjNmRkMTJjY2IzYWEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTYg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEtlZXAgc2Vydmlj
ZSB3b3JrZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgaW5zcGVjdGVkIGV2ZW4gdGhvdWdoIHRoZXkg
c2hvdWxkIGJlIHRlcm1pbmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzgyNworICAgICAgICA8cmRhcjovLzg4MzEzOTM1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKwogMjAyMi0wMy0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgg
dGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDU0MTNjZTIyYWM4MTA5M2U2YjVkM2FkZGQyYjEyNjgz
MzNkMjc0ODAuLmVjMDA2NzljMDFmZjIwNjk2MjhjZDg3NmRlNzk1MjRiOTczOWQ3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApA
QCAtMTk5LDYgKzE5OSwxMSBAQCBTdHJpbmcgU2VydmljZVdvcmtlckludGVybmFsczo6c2Vydmlj
ZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aQogICAgIHJldHVybiBj
bGllbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlcklu
dGVybmFsczo6c2V0QXNJbnNwZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRBc0luc3BlY3RlZChtX2lkZW50aWZpZXIsIGlzSW5z
cGVjdGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggZjU1Njdh
OGUwYjZlMDdiYmY3NDk0MDMxM2E5YTRjMjc2NjkwM2EyMi4uN2JlMzc5ODNlMTA4NDI5ZTkyZmRj
MTkxYjQyM2ZiMmY1NThjMjc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZmV0Y2hFdmVudElzU2FtZVNpdGUoRmV0Y2hFdmVudCYpOwogCiAgICAgU3RyaW5nIHNlcnZpY2VX
b3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYp
OworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoYm9vbCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAppbmRl
eCA2OTlhZjczMmExZmIyYzcxNWMxNWYzNDIzN2FiNWIwMmZlZTI4OWM1Li5kNTkzMTRjZmJhOTNm
MzIxNWJjMzE1ODBkMDE1ZTdmOWJlMmI1MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKQEAgLTUyLDQgKzUyLDYgQEAKICAgICBi
b29sZWFuIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZlbnQpOwogCiAgICAgRE9N
U3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoU2VydmljZVdvcmtl
ckNsaWVudCBjbGllbnQpOworCisgICAgdW5kZWZpbmVkIHNldEFzSW5zcGVjdGVkKGJvb2xlYW4g
aXNJbnNwZWN0ZWQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggODVhZDI4YjRmZGQz
ODMwYzdhNDcyNzk4MWU3NmU5YzYxYmZkOTBjZC4uZTI2MTgyYWU5MjgzZDI4MWYzYWM0MWM5MGRj
YmRhMjI1NDE3ZThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTIwOCw2ICsyMDgsMTIg
QEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQogICAgICAg
ICBzdG9wV29ya2VyKHNlcnZpY2VXb3JrZXIsIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgW10g
eyB9KTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRBc0luc3BlY3RlZChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVjdGVkKQoreworICAgIGlm
IChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2V0QXNJbnNwZWN0ZWQoaWRl
bnRpZmllciwgaXNJbnNwZWN0ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGYzYmVhNWYxOGYxNDdiMWQzNDMzNjc0MzhhMzU0
MTE1YzgwZDNlOTkuLmIyNzgzMjNmOTkyZDJkNjgyNjNiOTNlM2UyMDEzZmQxNDc5NzU5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNv
bnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigp
IGNvbnN0ID0gMDsKQEAgLTExMCw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwX3MgfTsKICAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9t
cyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CisKIHBy
aXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggMjQ4NTBjNGZlNzQ1ZjJlNzY1ODJl
NjRjNTE1YTk3MWU0ZDMyOWNiNi4uZWVhZGM1ZTUwY2FhYjRmNTY3NzE2NzY4YjkwYWM3ZGE0Y2I2
Zjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBAIC02
MSw2ICs2MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9X
b3JrZXIoRnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQogewogICAgIG1fY2hhbm5lbCA9ICZjaGFu
bmVsOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQo
bV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRpZmllcigpLCB0cnVlKTsKICAgICBtX3Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS50aHJlYWQoKS5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFz
ayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5l
Y3RGcm9udGVuZCgpOwogICAgIH0pOwpAQCAtNzEsNiArNzIsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXIoRnJvbnRlbmRDaGFubmVsJiBj
aGFubmVsKQogICAgIEFTU0VSVF9VTlVTRUQoY2hhbm5lbCwgJmNoYW5uZWwgPT0gbV9jaGFubmVs
KTsKICAgICBtX2NoYW5uZWwgPSBudWxscHRyOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQobV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRp
ZmllcigpLCBmYWxzZSk7CiAgICAgbV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkudGhyZWFkKCku
cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdG9yRGVzdHJveWVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA4ZTFmNWNlZWE3Y2MyODhkZjM3ODliZDQ1
NTNiZmRhNjY1NGFhNjVhLi41NTliYWVhYTAwNzk4Mzc1OTZkMzUyOWZmODk1YWMyYjlkOGE0MWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcApAQCAtMTAzOCwxNyArMTAzOCwxNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
ICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0
aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJt
aW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWlu
YXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNS
dW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCisgICAgICAgICAg
ICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGll
bnRPcmlnaW4gJiYgIXdvcmtlci0+c2hvdWxkQ29udGludWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgd29ya2Vyc1RvVGVybWluYXRlLmFwcGVuZCh3b3JrZXIucHRyKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZm9yIChhdXRvKiB3b3JrZXIgOiB3b3JrZXJzVG9UZXJtaW5hdGUpCiAg
ICAgICAgICAgICAgICAgd29ya2VyLT50ZXJtaW5hdGUoKTsKIAotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5zKGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRSZWdpc3RyYWJsZURvbWFpbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKmNvbm5lY3Rpb24p
OwotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbklmUG9zc2libGUoY2xpZW50UmVnaXN0cmFibGVEb21haW4pID09IFNob3VsZERl
bGF5UmVtb3ZhbDo6WWVzKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xp
ZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgp
KTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtl
cnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQg
PyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1f
Y2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVtb3ZlKGNsaWVudE9yaWdpbik7CkBAIC0xMDc0
LDYgKzEwNzQsMjUgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29u
dHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAor
U1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAg
aWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKKyAgICAg
ICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZh
bHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+cmVn
aXN0cmFibGVEb21haW4oKSA9PSBkb21haW4gJiYgd29ya2VyLT5zaG91bGRDb250aW51ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6WWVzOworICAgIH0KKworICAg
IHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCpjb25uZWN0aW9uKTsKKyAgICBjb25uZWN0aW9uLT5j
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworICAgIHJldHVybiBTaG91bGREZWxheVJlbW92
YWw6Ok5vOworfQorCiB2b2lkIFNXU2VydmVyOjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCkKIHsK
ICAgICAvLyBBY2NlbGVyYXRpbmcgdGhlIGRlbGF5ZWQgdGVybWluYXRpb24gb2YgdW51c2VkIHNl
cnZpY2Ugd29ya2VycyBkdWUgdG8gbWVtb3J5IHByZXNzdXJlLgpAQCAtMTI4MSwxNCArMTMwMCwx
OCBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0g
ICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4o
W3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0gewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlciBhcyBwcm9j
ZXNzaW5nIHB1c2ggZXZlbnQgdG9vayB0b28gbXVjaCB0aW1lIik7Ci0gICAgICAgICAgICAgICAg
d29ya2VyLT50ZXJtaW5hdGUoKTsKKworICAgICAgICAgICAgd29ya2VyLT5pbmNyZW1lbnRQdXNo
RXZlbnRDb3VudGVyKCk7CisgICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oW3dvcmtlcl0geworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBpcyB0YWtpbmcgdG9vIG11Y2gg
dGltZSB0byBwcm9jZXNzIGEgcHVzaCBldmVudCIpOworICAgICAgICAgICAgICAgIHdvcmtlci0+
ZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlz
LT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9u
RGVsYXkgOiAyX3MpOwotICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZp
cmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRl
V29ya2VyVGltZXIpXShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3Rh
dHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdU
Rk1vdmUodGVybWluYXRlV29ya2VyVGltZXIpLCB3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAodGVybWluYXRlV29y
a2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5kZWNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdv
cmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soc3VjY2VlZGVkKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDVhMmUyZTRhNjE5OTVm
N2ExOGU1MDM5YjQ0Y2U3ZmZmOWZmYWVlZWQuLjkzZDdmNzFlMTllNTMyZWIzZTY3MDRhMDdiNmVl
Y2EwZGY4Y2I0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbiA9IDJfczsKIAogICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICBib29sIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nOyB9CkBAIC0y
MzAsNiArMjMxLDEwIEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNpYmxlSWRl
bnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50
SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQogCiAgICAgdm9pZCBmb3JFYWNoU2Vydmlj
ZVdvcmtlcihjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFNXU2VydmVyV29ya2VyJik+JikgY29u
c3Q7CisgICAgYm9vbCBoYXNDbGllbnRzV2l0aE9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbikgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5jb250YWlucyhvcmln
aW4pOyB9CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZERlbGF5UmVtb3ZhbCA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgU2hvdWxkRGVsYXlSZW1vdmFsIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQ
b3NzaWJsZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2NTYzNjJhMDkxMTEw
YjRjMTM2N2I2ZDVhMTQwNDYwNDgzOTJlZDYwLi42ZGNkODgyODkyN2JlNmUxNGMzZWQ1ZWJhMTIz
YzE4OTNhNjY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xMzcsNiArMTM3LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIKICAgICAgICAgd29y
a2VyLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2Vy
dmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAg
ICAgIHdvcmtlci0+c2V0QXNJbnNwZWN0ZWQoaXNJbnNwZWN0ZWQpOworfQorCiB2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV2hlblBvc3NpYmxlKCkKIHsKICAgICBt
X3Nob3VsZFRlcm1pbmF0ZVdoZW5Qb3NzaWJsZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBiMDhhMzgzYThlOTQ5ZDAyNWVjNGE1YmU1ZTAyZmIwZDU2
ZmM5ZDhlLi42MTg2MzQ2Y2QxNzY5NWJhM2Q2OGEwNDJmZDcyYjQxNDAyZWEyYmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCBjZGJmZTQ0YmVlYzBjOTA4YmFjMTIyNGQwZWE0YjZmMTJmZWRmMWJkLi45OTI0
ZmJkYmFlNDYxMmNhODFlZGFiYjc3Njg3ZmZjNWRmM2NkYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApA
QCAtMzk3LDYgKzM5NywyOCBAQCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtlclBhZwogICAgIHJldHVybiBt
X3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7CiB9CiAKK3ZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKQoreworICAgIEFTU0VS
VChtX3B1c2hFdmVudENvdW50ZXIpOworICAgIC0tbV9wdXNoRXZlbnRDb3VudGVyOworICAgIHRl
cm1pbmF0ZUlmUG9zc2libGUoKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNw
ZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBtX2lzSW5zcGVjdGVkID0gaXNJbnNwZWN0
ZWQ7CisgICAgdGVybWluYXRlSWZQb3NzaWJsZSgpOworfQorCit2b2lkIFNXU2VydmVyV29ya2Vy
Ojp0ZXJtaW5hdGVJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV9wdXNoRXZlbnRDb3VudGVyIHx8
IG1faXNJbnNwZWN0ZWQgfHwgIW1fc2VydmVyIHx8IG1fc2VydmVyLT5oYXNDbGllbnRzV2l0aE9y
aWdpbihvcmlnaW4oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHRlcm1pbmF0ZSgpOworICAg
IG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVE
b21haW4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAxMTA4NmQxOTIzMTFlNTJkOTZmZTlm
OWE5NDk4NWIzNmIzMjMyZjA4Li45ZWRkNDQ1ZTZjYmM5ZWJjNWNiZDY2ODgxZWIzZDUwZDFkYmYw
N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMzUsNiArMTM1LDEyIEBAIHB1YmxpYzoKIAogICAgIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbmNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCkgeyArK21fcHVzaEV2ZW50Q291bnRlcjsgfQorICAgIHZv
aWQgZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX3B1
c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQorCiBwcml2YXRlOgogICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CiAKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dGVybWluYXRpb25Db21wbGV0ZWQoKTsKICAgICB2b2lkIHRlcm1pbmF0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgY2FsbFRlcm1pbmF0aW9uQ2FsbGJhY2tzKCk7CisgICAgdm9pZCB0ZXJtaW5h
dGVJZlBvc3NpYmxlKCk7CiAKICAgICBXZWFrUHRyPFNXU2VydmVyPiBtX3NlcnZlcjsKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwpAQCAtMTY2LDYg
KzE3Myw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fdGVybWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwog
ICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ7CisgICAgaW50IG1fcHVzaEV2ZW50Q291bnRlciB7IDAgfTsKKyAgICBib29sIG1f
aXNJbnNwZWN0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggYzZiN2MwNDUwOWQ2NWYyNzU5MGM1ZTc0MjRlNjA1MGYyM2U3YzY5
Yi4uMDc4YjZlYTMwYjkxN2E3N2E3NjJhMGJkYmMwMjc2OTQ5YjNhYjk4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0zOCw2ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAg
ICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2so
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBTZXRBc0lu
c3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IGlzSW5zcGVjdGVkKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDk3MGU5MDA2ZDU5OTY5YWVkY2Rl
MjA5NjJjOTFhYjM0NjQ1YTk5MGQuLmExYzY4Y2JlYTQzMmUxMTY0ODhjOTU5OWRjMjNiZDYyZWU4
ZjFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTM3Miw2ICsz
NzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWUKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OkRpZEZhaWxIZWFydEJlYXRDaGVjayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIDApOwog
fQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRBc0luc3BlY3RlZChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVj
dGVkKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0QXNJbnNwZWN0ZWQgeyBpZGVudGlm
aWVyLCBpc0luc3BlY3RlZCB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggMWUzMTQwZjY4MmVhNjM3NGY3OTIwYjkzOTMxYWY5NzhlZWZiZmExMi4uYjU2
OTQwZTRiMDMzNDc0ZGIyMzA3ZTFkZGNlMjA5NGJhMDVmOGI5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYpIGZpbmFsOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCBzZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmJiMTgwOTQ4ZTVlNTFjOGJlYmQ5NjA1ODhiNzJjY2Ey
ZTlkNDI2Zi4uNDIyZmExN2MyZWJiZTBhZGI4YjJlM2MyZGRhNzZlMDNjNGFjZGRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTAzLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBLZWVwIHNlcnZpY2Ugd29ya2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBl
dmVuIHRob3VnaCB0aGV5IHNob3VsZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMx
MzkzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbToKKwogMjAyMi0wMy0x
NiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1F
VHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGggdGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCAzYmQy
ZjFlMjNkZjcwYjE1NDZlZTZmYzU3MjU3ZjhiODZkYzAyNDNlLi4yMjI1ODE0YzJiZjcwZTBhZWJj
OTBmZjY5ZTgyMDczYTQ1YTc0NDZhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNjcsMyArMzY3LDMyOCBAQCBURVNUKFB1c2hB
UEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAKICAgICBjbGVhcldlYnNpdGVE
YXRhU3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOwogfQorCitzdGF0aWMg
Y29uc3QgY2hhciogcHVzaEV2ZW50c1dpdGhQYWdlU2VydmljZVdvcmtlclNjcmlwdEJ5dGVzID0g
UiJTV1JFU09VUkNFKAorbGV0IHBvcnQ7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2Ui
LCAoZXZlbnQpID0+IHsKKyAgICBwb3J0ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIHBvcnQucG9z
dE1lc3NhZ2Uoc2VsZi5pbnRlcm5hbHMgPyAiUmVhZHkiIDogIk5vIGludGVybmFscyIpOworfSk7
CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJl
Z2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJub3RpZmljYXRpb24iKTsKKyAgICBpZiAoZXZl
bnQuZGF0YS50ZXh0KCkgPT09ICdmaXJzdCcpIHsKKyAgICAgICAgc2VsZi5wcmV2aW91c01lc3Nh
Z2VEYXRhID0gJ2ZpcnN0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQu
ZGF0YS50ZXh0KCkgPT09ICdzZWNvbmQnKSB7CisgICAgICAgIGlmIChzZWxmLnByZXZpb3VzTWVz
c2FnZURhdGEgIT09ICdmaXJzdCcpCisgICAgICAgICAgICBldmVudC53YWl0VW50aWwoUHJvbWlz
ZS5yZWplY3QoJ2V4cGVjdGVkIGZpcnN0JykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IGlmIChldmVudC5kYXRhLnRleHQoKSA9PT0gJ3RoaXJkJykgeworICAgICAgICBpZiAoc2VsZi5w
cmV2aW91c01lc3NhZ2VEYXRhICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICBldmVudC53YWl0
VW50aWwoUHJvbWlzZS5yZWplY3QoJ2V4cGVjdGVkIHVuZGVmaW5lZCcpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBzZWxmLnByZXZpb3VzTWVzc2FnZURhdGEgPSBldmVudC5kYXRhLnRl
eHQoKTsKKyAgICBldmVudC53YWl0VW50aWwoUHJvbWlzZS5yZWplY3QoJ2V4cGVjdGVkIGEga25v
d24gbWVzc2FnZScpKTsKK30pOworKVNXUkVTT1VSQ0UiOworCitURVNUKFB1c2hBUEksIHB1c2hF
dmVudHNXaXRoUGFnZVNlcnZpY2VXb3JrZXIpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNl
cnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7
ICIvc3cuanMiLCB7IHt7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIg
fX0sIHB1c2hFdmVudHNXaXRoUGFnZVNlcnZpY2VXb3JrZXJTY3JpcHRCeXRlcyB9IH0KKyAgICB9
LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwor
CisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVE
YXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFTdG9yZUNvbmZp
Z3VyYXRpb24gc2V0U2VydmljZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDpO
T107CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0
YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOworICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CisKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVz
dFdlYktpdEFQSTo6VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHBy
b2Nlc3NQb29sXSBfbm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlv
bk1hbmFnZXJHZXRTaGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOwor
ICAgIHByb3ZpZGVyLnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKworICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0
aEV4cGVjdGVkTWVzc2FnZSBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2Vy
Q29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVy
LmdldCgpIG5hbWU6QCJzdyJdOworCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJlYWR5IjsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIC8vIFB1c2ggZXZlbnQg
Zm9yIHNlcnZpY2Ugd29ya2VyIHdpdGhvdXQgYW55IHJlbGF0ZWQgcGFnZS4KKyAgICBwdXNoTWVz
c2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNl
OworICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJmaXJzdCI7CisgICAgW1tjb25maWd1cmF0aW9u
IHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnko
W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVy
LnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAg
ICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
cHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vz
c2Z1bCk7CisgICAgc2xlZXAoMC4xKTsKKworICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFs
c2U7CisgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CisgICAgbWVzc2FnZSA9IEAi
c2Vjb25kIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQ
dXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25I
YW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0g
cmVzdWx0OworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAg
RVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VTdWNjZXNzZnVsKTsKKworICAgIC8vIENsb3NpbmcgdGhl
IHdlYiB2aWV3IHNob3VsZCB0ZXJtaW5hdGUgdGhlIHNlcnZpY2Ugd29ya2VyLgorICAgIFt3ZWJW
aWV3IF9jbG9zZV07CisgICAgd2ViVmlldyA9IG51bGxwdHI7CisKKyAgICBzbGVlcCgwLjEpOwor
CisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVN1Y2Nl
c3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0gQCJ0aGlyZCI7CisgICAgW1tjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25h
cnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7Cisg
ICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VT
dWNjZXNzZnVsKTsKK30KKworI2lmIFdLX0hBVkVfQ19TUEkKKworc3RhdGljIGNvbnN0IGNoYXIq
IHB1c2hFdmVudHNBbmRJbnNwZWN0ZWRTZXJ2aWNlV29ya2VyU2NyaXB0Qnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitsZXQgcG9ydDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVu
dCkgPT4geworICAgIHBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2Fn
ZShzZWxmLmludGVybmFscyA/ICJSZWFkeSIgOiAiTm8gaW50ZXJuYWxzIik7Cit9KTsKK3NlbGYu
YWRkRXZlbnRMaXN0ZW5lcigicHVzaCIsIChldmVudCkgPT4geworICAgIHNlbGYucmVnaXN0cmF0
aW9uLnNob3dOb3RpZmljYXRpb24oIm5vdGlmaWNhdGlvbiIpOworICAgIGlmIChldmVudC5kYXRh
LnRleHQoKSA9PT0gJ2ZpcnN0JykgeworICAgICAgICBzZWxmLmludGVybmFscy5zZXRBc0luc3Bl
Y3RlZCh0cnVlKTsKKyAgICAgICAgc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhID0gJ2ZpcnN0JzsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICdz
ZWNvbmQnKSB7CisgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNldEFzSW5zcGVjdGVkKGZhbHNlKTsK
KyAgICAgICAgaWYgKHNlbGYucHJldmlvdXNNZXNzYWdlRGF0YSAhPT0gJ2ZpcnN0JykKKyAgICAg
ICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgnZXhwZWN0ZWQgZmlyc3QnKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LmRhdGEudGV4dCgpID09PSAn
dGhpcmQnKSB7CisgICAgICAgIGlmIChzZWxmLnByZXZpb3VzTWVzc2FnZURhdGEgIT09IHVuZGVm
aW5lZCkKKyAgICAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgnZXhwZWN0
ZWQgdW5kZWZpbmVkJykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHNlbGYucHJldmlv
dXNNZXNzYWdlRGF0YSA9IGV2ZW50LmRhdGEudGV4dCgpOworICAgIGV2ZW50LndhaXRVbnRpbChQ
cm9taXNlLnJlamVjdCgnZXhwZWN0ZWQgYSBrbm93biBtZXNzYWdlJykpOworfSk7CispU1dSRVNP
VVJDRSI7CisKK1RFU1QoUHVzaEFQSSwgcHVzaEV2ZW50c0FuZEluc3BlY3RlZFNlcnZpY2VXb3Jr
ZXIpCit7CisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7
ICIvIiwgeyBtYWluQnl0ZXMgfSB9LAorICAgICAgICB7ICIvc3cuanMiLCB7IHt7ICJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfX0sIHB1c2hFdmVudHNBbmRJbnNwZWN0
ZWRTZXJ2aWNlV29ya2VyU2NyaXB0Qnl0ZXMgfSB9CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOworCisgICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxs
b3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmlnaW5zXTsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVd
KTsKKworICAgIGF1dG8gY29udGV4dCA9IGFkb3B0V0soVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW50ZXJuYWxzSW5qZWN0ZWRCdW5kbGVU
ZXN0IikpOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOihXS1Byb2Nlc3NQb29s
ICopY29udGV4dC5nZXQoKV07CisKKyAgICBhdXRvIHByb3ZpZGVyID0gVGVzdFdlYktpdEFQSTo6
VGVzdE5vdGlmaWNhdGlvblByb3ZpZGVyKHsgW1tjb25maWd1cmF0aW9uIHByb2Nlc3NQb29sXSBf
bm90aWZpY2F0aW9uTWFuYWdlckZvclRlc3RpbmddLCBXS05vdGlmaWNhdGlvbk1hbmFnZXJHZXRT
aGFyZWRTZXJ2aWNlV29ya2VyTm90aWZpY2F0aW9uTWFuYWdlcigpIH0pOworICAgIHByb3ZpZGVy
LnNldFBlcm1pc3Npb24oc2VydmVyLm9yaWdpbigpLCB0cnVlKTsKKworICAgIGF1dG8gbWVzc2Fn
ZUhhbmRsZXIgPSBhZG9wdE5TKFtbUHVzaEFQSU1lc3NhZ2VIYW5kbGVyV2l0aEV4cGVjdGVkTWVz
c2FnZSBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOworCisgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJlYWR5IjsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgVGVzdFdlYktp
dEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIFt3ZWJWaWV3IF9jbG9zZV07CisgICAgd2Vi
VmlldyA9IG51bGxwdHI7CisKKyAgICB0ZXJtaW5hdGVOZXR3b3JrUHJvY2Vzc1doaWxlUmVnaXN0
cmF0aW9uSXNTdG9yZWQoY29uZmlndXJhdGlvbi5nZXQoKSk7CisKKyAgICAvLyBQdXNoIGV2ZW50
IGZvciBzZXJ2aWNlIHdvcmtlciB3aXRob3V0IGFueSByZWxhdGVkIHBhZ2UuCisgICAgcHVzaE1l
c3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxz
ZTsKKyAgICBOU1N0cmluZyAqbWVzc2FnZSA9IEAiZmlyc3QiOworICAgIFtbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5
KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZl
ci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAg
ICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdl
UHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShwdXNoTWVzc2FnZVN1Y2Nl
c3NmdWwpOworCisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBwdXNoTWVz
c2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0gQCJzZWNvbmQiOworICAgIFtb
Y29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3Nh
Z2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29k
aW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJl
c3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAg
IHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwpOworCisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsK
KyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0gQCJ0aGly
ZCI7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1l
c3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4
U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxl
cjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3Vs
dDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVD
VF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyKiBp
bnNwZWN0ZWRTZXJ2aWNlV29ya2VyV2l0aG91dFBhZ2VTY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJD
RSgKK2xldCBwb3J0Oworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9
PiB7CisgICAgcG9ydCA9IGV2ZW50LmRhdGEucG9ydDsKKyAgICBwb3J0LnBvc3RNZXNzYWdlKHNl
bGYuaW50ZXJuYWxzID8gIlJlYWR5IiA6ICJObyBpbnRlcm5hbHMiKTsKK30pOworc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJwdXNoIiwgYXN5bmMgKGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdpc3Ry
YXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90aWZpY2F0aW9uIik7CisgICAgaWYgKGV2ZW50LmRh
dGEudGV4dCgpID09PSAnZmlyc3RtZXNzYWdlLWluc3BlY3RlZCcgfHwgZXZlbnQuZGF0YS50ZXh0
KCkgPT09ICdmaXJzdG1lc3NhZ2Utbm90LWluc3BlY3RlZCcpIHsKKyAgICAgICAgaWYgKGV2ZW50
LmRhdGEudGV4dCgpID09PSAnZmlyc3RtZXNzYWdlLWluc3BlY3RlZCcpCisgICAgICAgICAgICBz
ZWxmLmludGVybmFscy5zZXRBc0luc3BlY3RlZCh0cnVlKTsKKyAgICAgICAgaWYgKHNlbGYucHJl
dmlvdXNNZXNzYWdlRGF0YSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgZXZlbnQud2FpdFVu
dGlsKFByb21pc2UucmVqZWN0KCd1bmV4cGVjdGVkIHN0YXRlIHdpdGggaW5zcGVjdGVkIG1lc3Nh
Z2UnKSk7CisgICAgICAgIHNlbGYucHJldmlvdXNNZXNzYWdlRGF0YSA9ICdpbnNwZWN0ZWQnOwor
ICAgICAgICAvLyBXYWl0IGZvciBjbGllbnQgdG8gZ28gYXdheSBiZWZvcmUgcmVzb2x2aW5nIHRo
ZSBldmVudCBwcm9taXNlOworICAgICAgICBsZXQgcmVzb2x2ZTsKKyAgICAgICAgZXZlbnQud2Fp
dFVudGlsKG5ldyBQcm9taXNlKHIgPT4gcmVzb2x2ZSA9IHIpKTsKKyAgICAgICAgd2hpbGUgKHRy
dWUpIHsKKyAgICAgICAgICAgIGNvbnN0IGNsaWVudHMgPSBhd2FpdCBzZWxmLmNsaWVudHMubWF0
Y2hBbGwoeyBpbmNsdWRlVW5jb250cm9sbGVkIDogdHJ1ZSB9KTsKKyAgICAgICAgICAgIGlmICgh
Y2xpZW50cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LmRhdGEudGV4dCgpID09PSAnbm90
IGluc3BlY3RlZCcpIHsKKyAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzZWxmLmludGVybmFscy5z
ZXRBc0luc3BlY3RlZChmYWxzZSksIDEwKTsKKyAgICAgICAgaWYgKHNlbGYucHJldmlvdXNNZXNz
YWdlRGF0YSAhPT0gJ2luc3BlY3RlZCcpCisgICAgICAgICAgICBldmVudC53YWl0VW50aWwoUHJv
bWlzZS5yZWplY3QoJ3VuZXhwZWN0ZWQgc3RhdGUgd2l0aCBub3QgaW5zcGVjdGVkIG1lc3NhZ2Un
KSk7CisgICAgICAgIHNlbGYucHJldmlvdXNNZXNzYWdlRGF0YSA9ICdub3QgaW5zcGVjdGVkJzsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICds
YXN0JykgeworICAgICAgICBpZiAoc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhICE9PSB1bmRlZmlu
ZWQpCisgICAgICAgICAgICBldmVudC53YWl0VW50aWwoUHJvbWlzZS5yZWplY3QoJ3VuZXhwZWN0
ZWQgc3RhdGUgd2l0aCBsYXN0IG1lc3NhZ2UnKSk7CisgICAgfQorfSk7CispU1dSRVNPVVJDRSI7
CisKK3N0YXRpYyB2b2lkIHRlc3RJbnNwZWN0ZWRTZXJ2aWNlV29ya2VyV2l0aG91dFBhZ2UoYm9v
bCBlbmFibGVTZXJ2aWNlV29ya2VySW5zcGVjdGlvbikKK3sKKyAgICBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9fSwgaW5zcGVjdGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlU2NyaXB0Qnl0ZXMgfSB9
CisgICAgfSwgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHApOworCisg
ICAgW1dLV2Vic2l0ZURhdGFTdG9yZSBfYWxsb3dXZWJzaXRlRGF0YVJlY29yZHNGb3JBbGxPcmln
aW5zXTsKKworICAgIGF1dG8gZGF0YVN0b3JlQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtkYXRhU3Rv
cmVDb25maWd1cmF0aW9uIHNldFNlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVu
YWJsZWQ6Tk9dOworICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFT
dG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpkYXRhU3RvcmVDb25maWd1cmF0aW9u
LmdldCgpXSk7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud2Vi
c2l0ZURhdGFTdG9yZSA9IGRhdGFTdG9yZS5nZXQoKTsKKyAgICBjbGVhcldlYnNpdGVEYXRhU3Rv
cmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOworCisgICAgYXV0byBjb250ZXh0
ID0gYWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKwor
ICAgIGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlk
ZXIoeyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9y
VGVzdGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3Rp
ZmljYXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIu
b3JpZ2luKCksIHRydWUpOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQ
dXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2Fn
ZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBleHBlY3Rl
ZE1lc3NhZ2UgPSAiUmVhZHkiOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworCisgICAgLy8gUHVzaCBldmVudCBmb3Igc2VydmljZSB3b3JrZXIgd2l0aG91dCBhbnkgcmVs
YXRlZCBwYWdlLgorICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgcHVzaE1l
c3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBAImZpcnN0
bWVzc2FnZS1pbnNwZWN0ZWQiOworICAgIGlmICghZW5hYmxlU2VydmljZVdvcmtlckluc3BlY3Rp
b24pCisgICAgICAgIG1lc3NhZ2UgPSBAImZpcnN0bWVzc2FnZS1ub3QtaW5zcGVjdGVkIjsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpt
ZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9v
bCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OworICAg
ICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisKKyAgICAvLyBXZSBk
ZWxheSBzbyB0aGF0IHRoZSBwdXNoIG1lc3NhZ2Ugd2lsbCBoYXBwZW4gYmVmb3JlIHRoZSB1bnJl
Z2lzdHJhdGlvbiBvZiB0aGUgc2VydmljZSB3b3JrZXIgY2xpZW50LgorICAgIHNsZWVwKDAuNSk7
CisKKyAgICAvLyBDbG9zaW5nIHRoZSB3ZWIgdmlldyBzaG91bGQgbm90IHRlcm1pbmF0ZSB0aGUg
c2VydmljZSB3b3JrZXIgYXMgc2VydmljZSB3b3JrZXIgaXMgaW5zcGVjdGVkLgorICAgIFt3ZWJW
aWV3IF9jbG9zZV07CisgICAgd2ViVmlldyA9IG51bGxwdHI7CisKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKyAgICBFWFBFQ1RfVFJVRShwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwpOworCisgICAgLy8gV2UgZGVsYXkgc28gdGhhdCB0aGUgdGltZXIg
dG8gdGVybWluYXRlIHNlcnZpY2Ugd29ya2VyIGtpY2tzIGluLCBhdCBtb3N0IHVwIHRvIHRoZSBt
YXggcHVzaCBtZXNzYWdlIGFsbG93ZWQgdGltZSwgYWthIDIgc2Vjb25kcy4KKyAgICBzbGVlcCgz
KTsKKworICAgIC8vIFNlbmQgbWVzc2FnZSBhdCB3aGljaCBwb2ludCB0aGUgc2VydmljZSB3b3Jr
ZXIgd2lsbCBub3QgYmUgaW5zcGVjdGVkIGFueW1vcmUgYW5kIHdpbGwgYmUgY2xvc2VkLgorICAg
IHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVs
ID0gZmFsc2U7CisgICAgbWVzc2FnZSA9IEAibm90IGluc3BlY3RlZCI7CisgICAgW1tjb25maWd1
cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rp
b25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBb
c2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7
CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1l
c3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAgIEVYUEVDVF9FUShwdXNoTWVzc2FnZVN1
Y2Nlc3NmdWwsIGVuYWJsZVNlcnZpY2VXb3JrZXJJbnNwZWN0aW9uKTsKKworICAgIC8vIFdlIGRl
bGF5IHNvIHRoYXQgdGhlIHRpbWVyIHRvIHRlcm1pbmF0ZSBzZXJ2aWNlIHdvcmtlciBraWNrcyBp
biwgYXQgbW9zdCB1cCB0byB0aGUgbWF4IHB1c2ggbWVzc2FnZSBhbGxvd2VkIHRpbWUsIGFrYSAy
IHNlY29uZHMuCisgICAgc2xlZXAoMyk7CisKKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZh
bHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIG1lc3NhZ2UgPSBA
Imxhc3QiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1
c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhh
bmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBy
ZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworICAg
IEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7Cit9CisKK1RFU1QoUHVzaEFQSSwg
aW5zcGVjdGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlKQoreworICAgIGJvb2wgZW5hYmxlU2Vy
dmljZVdvcmtlckluc3BlY3Rpb24gPSB0cnVlOworICAgIHRlc3RJbnNwZWN0ZWRTZXJ2aWNlV29y
a2VyV2l0aG91dFBhZ2UoZW5hYmxlU2VydmljZVdvcmtlckluc3BlY3Rpb24pOworfQorCitURVNU
KFB1c2hBUEksIHVuaW5zcGVjdGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlKQoreworICAgIGJv
b2wgZW5hYmxlU2VydmljZVdvcmtlckluc3BlY3Rpb24gPSBmYWxzZTsKKyAgICB0ZXN0SW5zcGVj
dGVkU2VydmljZVdvcmtlcldpdGhvdXRQYWdlKGVuYWJsZVNlcnZpY2VXb3JrZXJJbnNwZWN0aW9u
KTsKK30KKworI2VuZGlmIC8vIFdLX0hBVkVfQ19TUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454843</attachid>
            <date>2022-03-16 09:01:16 -0700</date>
            <delta_ts>2022-03-18 00:34:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237827-20220316170114.patch</filename>
            <type>text/plain</type>
            <size>33410</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMjY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzI2MDNjNTRmMmNlYTZh
YWNmZmJjYTllZmIwNWM4MDFjY2Q4ODgxZi4uNmJlNjdiMWFiY2E4MmU2MDA3NjAyODM5OWNjNGM3
OWJlMWE2MGY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDIyLTAzLTE2ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBLZWVwIHNlcnZpY2Ugd29y
a2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBldmVuIHRob3VnaCB0aGV5IHNob3Vs
ZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMxMzkzNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdG9yZSBpbiBTV1NlcnZlcldvcmtl
ciB3aGV0aGVyIGEgd29ya2VyIGlzIGluc3BlY3RlZCBvciBpcyBwcm9jZXNzaW5nIHB1c2ggZXZl
bnRzLgorICAgICAgICBJbiB0aGF0IGNhc2UsIHdlIGRlbGF5IHRlcm1pbmF0aW9uIG9mIHdvcmtl
cnMgdW50aWwgaXQgaXMgbm8gbG9uZ2VyIGluc3BlY3RlZCBvciBubyBsb25nZXIgcHJvY2Vzc2lu
ZyBwdXNoIGV2ZW50cy4KKyAgICAgICAgVHdvIGNvZGUgcGF0aHMgYXJlIGhhcHBlbmluZzoKKyAg
ICAgICAgMS4gQSBzZXJ2aWNlIHdvcmtlciB3YXMgdHJpZ2dlcmVkIHdpdGggc2VydmljZSB3b3Jr
ZXIgY2xpZW50cywgYW5kIGFsbCBzZXJ2aWNlIHdvcmtlciBjbGllbnRzIGFyZSByZW1vdmVkLgor
ICAgICAgICAgICBBdCB0aGF0IHBvaW50LCB3ZSB3ZXJlIHByZXZpb3VzbHkgdGVybWluYXRpbmcg
c2VydmljZSB3b3JrZXJzIGFmdGVyIGEgZGVsYXkuCisgICAgICAgICAgIEluc3RlYWQsIHdlIG5v
dyBvbmx5IHRlcm1pbmF0ZSB3b3JrZXJzIHRoYXQgYXJlIG5vIGxvbmdlciBpbnNwZWN0ZWQgb3Ig
bm8gbG9uZ2VyIHByb2Nlc3NpbmcgcHVzaCBldmVudHMuCisgICAgICAgICAgIFdlIHJlc2NoZWR1
bGUgdGhlIHRpbWVyIHRvIGNvbnRpbnVlIHRyeWluZyByZW1vdmluZyB0aGUgY29udGV4dCBjb25u
ZWN0aW9uLgorICAgICAgICAyLiBBIHNlcnZpY2Ugd29ya2VyIGlzIG5vdCBzdG9wcGVkIGJ5IHJl
bW92YWwgb2Ygc2VydmljZSB3b3JrZXIgY2xpZW50cy4gSW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRv
IHRlcm1pbmF0ZQorICAgICAgICAgICB0aGUgc2VydmljZSB3b3JrZXJzIHdoZW4gaW5zcGVjdGVk
IGFuZC9vciBwdXNoIGNvdW50ZXIgZ2V0cyBiYWNrIHRvIHJlZ3VsYXIgKG5vdCBpbnNwZWN0ZWQs
IG5vIHB1c2ggY291bnRlcikuCisgICAgICAgICAgIFdoZW4gdGVybWluYXRpbmcgc3VjaCBhIHNl
cnZpY2Ugd29ya2VyLCB3ZSB0cnkgcmVtb3ZpbmcgdGhlIGNvbnRleHQgY29ubmVjdGlvbiBhcyB3
ZWxsLgorCisgICAgICAgIFRvIG1ha2Ugc3VyZSBTV1NlcnZlcldvcmtlciBrbm93cyB3aGV0aGVy
IGluc3BlY3RhYmxlIG9yIG5vdCwgd2UgYWRkIGNvbm5lY3Rpb24gc3VwcG9ydCB0byB0cmFuc21p
dCB3aGV0aGVyIGluc3BlY3RlZCBmcm9tIFdlYlByb2Nlc3MuCisgICAgICAgIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eSBpcyByZXNwb25zaWJsZSB0byB1cGRhdGUgdGhlIGluc3BlY3RhYmxl
IHZhbHVlLgorICAgICAgICBJbnRyb2R1Y2UgaW50ZXJuYWxzIEFQSSB0byBzZXQgaW5zcGVjdGVk
IHN0YXRlIG9mIGEgc2VydmljZSB3b3JrZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSBuZXcgQVBJ
IHRlc3RzLgorCisgICAgICAgICogdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcDoK
KyAgICAgICAgKiB0ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAqIHdv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKiB3b3JrZXJz
L3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmg6CisKIDIwMjItMDMtMTYgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgTUlNRVR5cGVSZWdpc3Ry
eTo6bWltZVR5cGVGb3JQYXRoIHRha2UgYSBTdHJpbmdWaWV3CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRjYjlmY2I4
ZTUzM2E2Nzk3MjJlZTcwNjJlOTRmNjY2NjUzNmU3MjMuLjQ2NThjYTUzZTNkMzE0MGNjNGFhMDUz
ZjZjNmRkMTJjY2IzYWEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjItMDMtMTYg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgorCisgICAgICAgIEtlZXAgc2Vydmlj
ZSB3b3JrZXJzIGFsaXZlIHdoZW4gdGhleSBhcmUgaW5zcGVjdGVkIGV2ZW4gdGhvdWdoIHRoZXkg
c2hvdWxkIGJlIHRlcm1pbmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzgyNworICAgICAgICA8cmRhcjovLzg4MzEzOTM1PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaDoKKwogMjAyMi0wMy0xNiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1FVHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGgg
dGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2Vy
dmljZVdvcmtlckludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VX
b3JrZXJJbnRlcm5hbHMuY3BwCmluZGV4IDU0MTNjZTIyYWM4MTA5M2U2YjVkM2FkZGQyYjEyNjgz
MzNkMjc0ODAuLmVjMDA2NzljMDFmZjIwNjk2MjhjZDg3NmRlNzk1MjRiOTczOWQ3ODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmNwcApA
QCAtMTk5LDYgKzE5OSwxMSBAQCBTdHJpbmcgU2VydmljZVdvcmtlckludGVybmFsczo6c2Vydmlj
ZVdvcmtlckNsaWVudEludGVybmFsSWRlbnRpZmllcihjb25zdCBTZXJ2aQogICAgIHJldHVybiBj
bGllbnQuaWRlbnRpZmllcigpLnRvU3RyaW5nKCk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlcklu
dGVybmFsczo6c2V0QXNJbnNwZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXRBc0luc3BlY3RlZChtX2lkZW50aWZpZXIsIGlzSW5z
cGVjdGVkKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5oIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKaW5kZXggZjU1Njdh
OGUwYjZlMDdiYmY3NDk0MDMxM2E5YTRjMjc2NjkwM2EyMi4uN2JlMzc5ODNlMTA4NDI5ZTkyZmRj
MTkxYjQyM2ZiMmY1NThjMjc4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9T
ZXJ2aWNlV29ya2VySW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2
aWNlV29ya2VySW50ZXJuYWxzLmgKQEAgLTczLDYgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wg
ZmV0Y2hFdmVudElzU2FtZVNpdGUoRmV0Y2hFdmVudCYpOwogCiAgICAgU3RyaW5nIHNlcnZpY2VX
b3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoY29uc3QgU2VydmljZVdvcmtlckNsaWVudCYp
OworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQoYm9vbCk7CiAKIHByaXZhdGU6CiAgICAgZXhwbGlj
aXQgU2VydmljZVdvcmtlckludGVybmFscyhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9TZXJ2aWNlV29ya2VySW50ZXJuYWxzLmlkbAppbmRl
eCA2OTlhZjczMmExZmIyYzcxNWMxNWYzNDIzN2FiNWIwMmZlZTI4OWM1Li5kNTkzMTRjZmJhOTNm
MzIxNWJjMzE1ODBkMDE1ZTdmOWJlMmI1MzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1NlcnZpY2VXb3JrZXJJbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvU2VydmljZVdvcmtlckludGVybmFscy5pZGwKQEAgLTUyLDQgKzUyLDYgQEAKICAgICBi
b29sZWFuIGZldGNoRXZlbnRJc1NhbWVTaXRlKEZldGNoRXZlbnQgZXZlbnQpOwogCiAgICAgRE9N
U3RyaW5nIHNlcnZpY2VXb3JrZXJDbGllbnRJbnRlcm5hbElkZW50aWZpZXIoU2VydmljZVdvcmtl
ckNsaWVudCBjbGllbnQpOworCisgICAgdW5kZWZpbmVkIHNldEFzSW5zcGVjdGVkKGJvb2xlYW4g
aXNJbnNwZWN0ZWQpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKaW5kZXggODVhZDI4YjRmZGQz
ODMwYzdhNDcyNzk4MWU3NmU5YzYxYmZkOTBjZC4uZTI2MTgyYWU5MjgzZDI4MWYzYWM0MWM5MGRj
YmRhMjI1NDE3ZThkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5jcHAKQEAgLTIwOCw2ICsyMDgsMTIg
QEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzdG9wQWxsU2VydmljZVdvcmtlcnMoKQogICAgICAg
ICBzdG9wV29ya2VyKHNlcnZpY2VXb3JrZXIsIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCwgW10g
eyB9KTsKIH0KIAordm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpzZXRBc0luc3BlY3RlZChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVjdGVkKQoreworICAgIGlm
IChtX2Nvbm5lY3Rpb24pCisgICAgICAgIG1fY29ubmVjdGlvbi0+c2V0QXNJbnNwZWN0ZWQoaWRl
bnRpZmllciwgaXNJbnNwZWN0ZWQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGYzYmVhNWYxOGYxNDdiMWQzNDMzNjc0MzhhMzU0
MTE1YzgwZDNlOTkuLmIyNzgzMjNmOTkyZDJkNjgyNjNiOTNlM2UyMDEzZmQxNDc5NzU5OTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4
dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9T
V0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoRXhjZXB0aW9uT3I8dm9pZD4mJik+JiYpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgYm9vbCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNv
bnN0ID0gMDsKICAgICAgICAgdmlydHVhbCBQYWdlSWRlbnRpZmllciBwYWdlSWRlbnRpZmllcigp
IGNvbnN0ID0gMDsKQEAgLTExMCw2ICsxMTEsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBTZWNvbmRzIHdvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwX3MgfTsKICAgICBzdGF0
aWMgY29uc3RleHByIFNlY29uZHMgc3luY1dvcmtlclRlcm1pbmF0aW9uVGltZW91dCB7IDEwMF9t
cyB9OyAvLyBPbmx5IHVzZWQgYnkgbGF5b3V0IHRlc3RzLgogCisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzZXRBc0luc3BlY3RlZChTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCk7CisKIHBy
aXZhdGU6CiAgICAgU1dDb250ZXh0TWFuYWdlcigpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlckluc3Bl
Y3RvclByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXggMjQ4NTBjNGZlNzQ1ZjJlNzY1ODJl
NjRjNTE1YTk3MWU0ZDMyOWNiNi4uZWVhZGM1ZTUwY2FhYjRmNTY3NzE2NzY4YjkwYWM3ZGE0Y2I2
Zjg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQv
U2VydmljZVdvcmtlckluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VySW5zcGVjdG9yUHJveHkuY3BwCkBAIC02
MSw2ICs2MSw3IEBAIHZvaWQgU2VydmljZVdvcmtlckluc3BlY3RvclByb3h5Ojpjb25uZWN0VG9X
b3JrZXIoRnJvbnRlbmRDaGFubmVsJiBjaGFubmVsKQogewogICAgIG1fY2hhbm5lbCA9ICZjaGFu
bmVsOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQo
bV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRpZmllcigpLCB0cnVlKTsKICAgICBtX3Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS50aHJlYWQoKS5ydW5Mb29wKCkucG9zdERlYnVnZ2VyVGFz
ayhbXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewogICAgICAgICBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkuaW5zcGVjdG9yQ29udHJvbGxlcigpLmNvbm5l
Y3RGcm9udGVuZCgpOwogICAgIH0pOwpAQCAtNzEsNiArNzIsNyBAQCB2b2lkIFNlcnZpY2VXb3Jr
ZXJJbnNwZWN0b3JQcm94eTo6ZGlzY29ubmVjdEZyb21Xb3JrZXIoRnJvbnRlbmRDaGFubmVsJiBj
aGFubmVsKQogICAgIEFTU0VSVF9VTlVTRUQoY2hhbm5lbCwgJmNoYW5uZWwgPT0gbV9jaGFubmVs
KTsKICAgICBtX2NoYW5uZWwgPSBudWxscHRyOwogCisgICAgU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuc2V0QXNJbnNwZWN0ZWQobV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaWRlbnRp
ZmllcigpLCBmYWxzZSk7CiAgICAgbV9zZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkudGhyZWFkKCku
cnVuTG9vcCgpLnBvc3REZWJ1Z2dlclRhc2soW10gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQpIHsKICAgICAgICAgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLmlu
c3BlY3RvckNvbnRyb2xsZXIoKS5kaXNjb25uZWN0RnJvbnRlbmQoRGlzY29ubmVjdFJlYXNvbjo6
SW5zcGVjdG9yRGVzdHJveWVkKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcAppbmRleCA4ZTFmNWNlZWE3Y2MyODhkZjM3ODliZDQ1
NTNiZmRhNjY1NGFhNjVhLi41NTliYWVhYTAwNzk4Mzc1OTZkMzUyOWZmODk1YWMyYjlkOGE0MWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2Vy
dmVyLmNwcApAQCAtMTAzOCwxNyArMTAzOCwxNyBAQCB2b2lkIFNXU2VydmVyOjp1bnJlZ2lzdGVy
U2VydmljZVdvcmtlckNsaWVudChjb25zdCBDbGllbnRPcmlnaW4mIGNsaWVudE9yaWdpbiwgUwog
ICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtlcnNUaW1lciA9IG1h
a2VVbmlxdWU8VGltZXI+KFtjbGllbnRPcmlnaW4sIGNsaWVudFJlZ2lzdHJhYmxlRG9tYWluLCB0
aGlzXSB7CiAgICAgICAgICAgICBWZWN0b3I8U1dTZXJ2ZXJXb3JrZXIqPiB3b3JrZXJzVG9UZXJt
aW5hdGU7CiAgICAgICAgICAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWlu
YXRpbmdXb3JrZXJzLnZhbHVlcygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdvcmtlci0+aXNS
dW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGllbnRPcmlnaW4pCisgICAgICAgICAg
ICAgICAgaWYgKHdvcmtlci0+aXNSdW5uaW5nKCkgJiYgd29ya2VyLT5vcmlnaW4oKSA9PSBjbGll
bnRPcmlnaW4gJiYgIXdvcmtlci0+c2hvdWxkQ29udGludWUoKSkKICAgICAgICAgICAgICAgICAg
ICAgd29ya2Vyc1RvVGVybWluYXRlLmFwcGVuZCh3b3JrZXIucHRyKCkpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgZm9yIChhdXRvKiB3b3JrZXIgOiB3b3JrZXJzVG9UZXJtaW5hdGUpCiAg
ICAgICAgICAgICAgICAgd29ya2VyLT50ZXJtaW5hdGUoKTsKIAotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudHNCeVJlZ2lzdHJhYmxlRG9tYWluLmNvbnRhaW5zKGNsaWVudFJlZ2lzdHJhYmxlRG9t
YWluKSkgewotICAgICAgICAgICAgICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gY29udGV4dENv
bm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihjbGllbnRSZWdpc3RyYWJsZURvbWFpbikpIHsK
LSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ29udGV4dENvbm5lY3Rpb24oKmNvbm5lY3Rpb24p
OwotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5jb25uZWN0aW9uSXNOb0xvbmdlck5l
ZWRlZCgpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyZW1vdmVDb250ZXh0
Q29ubmVjdGlvbklmUG9zc2libGUoY2xpZW50UmVnaXN0cmFibGVEb21haW4pID09IFNob3VsZERl
bGF5UmVtb3ZhbDo6WWVzKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdGVyYXRvciA9IG1fY2xp
ZW50SWRlbnRpZmllcnNQZXJPcmlnaW4uZmluZChjbGllbnRPcmlnaW4pOworICAgICAgICAgICAg
ICAgIEFTU0VSVChpdGVyYXRvciAhPSBtX2NsaWVudElkZW50aWZpZXJzUGVyT3JpZ2luLmVuZCgp
KTsKKyAgICAgICAgICAgICAgICBpdGVyYXRvci0+dmFsdWUudGVybWluYXRlU2VydmljZVdvcmtl
cnNUaW1lci0+c3RhcnRPbmVTaG90KG1faXNQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQg
PyBkZWZhdWx0VGVybWluYXRpb25EZWxheSA6IGRlZmF1bHRQdXNoTWVzc2FnZUR1cmF0aW9uKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIG1f
Y2xpZW50SWRlbnRpZmllcnNQZXJPcmlnaW4ucmVtb3ZlKGNsaWVudE9yaWdpbik7CkBAIC0xMDc0
LDYgKzEwNzQsMjUgQEAgdm9pZCBTV1NlcnZlcjo6dW5yZWdpc3RlclNlcnZpY2VXb3JrZXJDbGll
bnQoY29uc3QgQ2xpZW50T3JpZ2luJiBjbGllbnRPcmlnaW4sIFMKICAgICBtX2NsaWVudFRvQ29u
dHJvbGxpbmdSZWdpc3RyYXRpb24ucmVtb3ZlKHJlZ2lzdHJhdGlvbkl0ZXJhdG9yKTsKIH0KIAor
U1dTZXJ2ZXI6OlNob3VsZERlbGF5UmVtb3ZhbCBTV1NlcnZlcjo6cmVtb3ZlQ29udGV4dENvbm5l
Y3Rpb25JZlBvc3NpYmxlKGNvbnN0IFJlZ2lzdHJhYmxlRG9tYWluJiBkb21haW4pCit7CisgICAg
aWYgKG1fY2xpZW50c0J5UmVnaXN0cmFibGVEb21haW4uY29udGFpbnMoZG9tYWluKSkKKyAgICAg
ICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisKKyAgICBhdXRvKiBjb25uZWN0aW9u
ID0gY29udGV4dENvbm5lY3Rpb25Gb3JSZWdpc3RyYWJsZURvbWFpbihkb21haW4pOworICAgIGlm
ICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6Tm87CisK
KyAgICBmb3IgKGF1dG8mIHdvcmtlciA6IG1fcnVubmluZ09yVGVybWluYXRpbmdXb3JrZXJzLnZh
bHVlcygpKSB7CisgICAgICAgIGlmICh3b3JrZXItPmlzUnVubmluZygpICYmIHdvcmtlci0+cmVn
aXN0cmFibGVEb21haW4oKSA9PSBkb21haW4gJiYgd29ya2VyLT5zaG91bGRDb250aW51ZSgpKQor
ICAgICAgICAgICAgcmV0dXJuIFNob3VsZERlbGF5UmVtb3ZhbDo6WWVzOworICAgIH0KKworICAg
IHJlbW92ZUNvbnRleHRDb25uZWN0aW9uKCpjb25uZWN0aW9uKTsKKyAgICBjb25uZWN0aW9uLT5j
b25uZWN0aW9uSXNOb0xvbmdlck5lZWRlZCgpOworICAgIHJldHVybiBTaG91bGREZWxheVJlbW92
YWw6Ok5vOworfQorCiB2b2lkIFNXU2VydmVyOjpoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCkKIHsK
ICAgICAvLyBBY2NlbGVyYXRpbmcgdGhlIGRlbGF5ZWQgdGVybWluYXRpb24gb2YgdW51c2VkIHNl
cnZpY2Ugd29ya2VycyBkdWUgdG8gbWVtb3J5IHByZXNzdXJlLgpAQCAtMTI4MSwxNCArMTMwMCwx
OCBAQCB2b2lkIFNXU2VydmVyOjpwcm9jZXNzUHVzaE1lc3NhZ2Uoc3RkOjpvcHRpb25hbDxWZWN0
b3I8dWludDhfdD4+JiYgZGF0YSwgVVJMJiYgcgogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBhdXRvIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gd29ya2VyLT5pZGVudGlmaWVyKCk7Ci0g
ICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0gbWFrZVVuaXF1ZTxUaW1lcj4o
W3dvcmtlciA9IFdURk1vdmUod29ya2VyKV0gewotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJUZXJtaW5hdGluZyBzZXJ2aWNlIHdvcmtlciBhcyBwcm9j
ZXNzaW5nIHB1c2ggZXZlbnQgdG9vayB0b28gbXVjaCB0aW1lIik7Ci0gICAgICAgICAgICAgICAg
d29ya2VyLT50ZXJtaW5hdGUoKTsKKworICAgICAgICAgICAgd29ya2VyLT5pbmNyZW1lbnRQdXNo
RXZlbnRDb3VudGVyKCk7CisgICAgICAgICAgICBhdXRvIHRlcm1pbmF0ZVdvcmtlclRpbWVyID0g
bWFrZVVuaXF1ZTxUaW1lcj4oW3dvcmtlcl0geworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFNlcnZpY2VXb3JrZXIsICJTZXJ2aWNlIHdvcmtlciBpcyB0YWtpbmcgdG9vIG11Y2gg
dGltZSB0byBwcm9jZXNzIGEgcHVzaCBldmVudCIpOworICAgICAgICAgICAgICAgIHdvcmtlci0+
ZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICB0ZXJtaW5hdGVXb3JrZXJUaW1lci0+c3RhcnRPbmVTaG90KHdlYWtUaGlzICYmIHdlYWtUaGlz
LT5tX2lzUHJvY2Vzc1Rlcm1pbmF0aW9uRGVsYXlFbmFibGVkID8gZGVmYXVsdFRlcm1pbmF0aW9u
RGVsYXkgOiAyX3MpOwotICAgICAgICAgICAgY29ubmVjdGlvbk9yU3RhdHVzLnZhbHVlKCktPmZp
cmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEsIFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdURk1vdmUodGVybWluYXRl
V29ya2VyVGltZXIpXShib29sIHN1Y2NlZWRlZCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHRlcm1pbmF0ZVdvcmtlclRpbWVyLT5pc0FjdGl2ZSgpKQorICAgICAgICAgICAgdGVybWlu
YXRlV29ya2VyVGltZXItPnN0YXJ0T25lU2hvdCh3ZWFrVGhpcyAmJiB3ZWFrVGhpcy0+bV9pc1By
b2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCA/IGRlZmF1bHRUZXJtaW5hdGlvbkRlbGF5IDog
ZGVmYXVsdFB1c2hNZXNzYWdlRHVyYXRpb24pOworICAgICAgICAgICAgY29ubmVjdGlvbk9yU3Rh
dHVzLnZhbHVlKCktPmZpcmVQdXNoRXZlbnQoc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGRhdGEs
IFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCB0ZXJtaW5hdGVXb3JrZXJUaW1lciA9IFdU
Rk1vdmUodGVybWluYXRlV29ya2VyVGltZXIpLCB3b3JrZXIgPSBXVEZNb3ZlKHdvcmtlcildKGJv
b2wgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBpZiAodGVybWluYXRlV29y
a2VyVGltZXItPmlzQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgd29ya2VyLT5kZWNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCk7CiAgICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVdv
cmtlclRpbWVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAg
Y2FsbGJhY2soc3VjY2VlZGVkKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5oCmluZGV4IDVhMmUyZTRhNjE5OTVm
N2ExOGU1MDM5YjQ0Y2U3ZmZmOWZmYWVlZWQuLjkzZDdmNzFlMTllNTMyZWIzZTY3MDRhMDdiNmVl
Y2EwZGY4Y2I0ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyLmgKQEAgLTIxOCw2ICsyMTgsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBoYW5kbGVMb3dNZW1vcnlXYXJuaW5nKCk7CiAKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNlY29uZHMgZGVmYXVsdFRlcm1pbmF0aW9uRGVsYXkgPSAxMF9zOworICAgIHN0YXRpYyBj
b25zdGV4cHIgU2Vjb25kcyBkZWZhdWx0UHVzaE1lc3NhZ2VEdXJhdGlvbiA9IDJfczsKIAogICAg
IExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIGNsaWVudElzQXBwSW5pdGlhdGVkRm9yUmVn
aXN0cmFibGVEb21haW4oY29uc3QgUmVnaXN0cmFibGVEb21haW4mKTsKICAgICBib29sIHNob3Vs
ZFJ1blNlcnZpY2VXb3JrZXJzT25NYWluVGhyZWFkRm9yVGVzdGluZygpIGNvbnN0IHsgcmV0dXJu
IG1fc2hvdWxkUnVuU2VydmljZVdvcmtlcnNPbk1haW5UaHJlYWRGb3JUZXN0aW5nOyB9CkBAIC0y
MzAsNiArMjMxLDEwIEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0SWRlbnRp
ZmllciBjbGllbnRJZEZyb21WaXNpYmxlQ2xpZW50SWQoY29uc3QgU3RyaW5nJiB2aXNpYmxlSWRl
bnRpZmllcikgY29uc3QgeyByZXR1cm4gbV92aXNpYmxlQ2xpZW50SWRUb0ludGVybmFsQ2xpZW50
SWRNYXAuZ2V0KHZpc2libGVJZGVudGlmaWVyKTsgfQogCiAgICAgdm9pZCBmb3JFYWNoU2Vydmlj
ZVdvcmtlcihjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IFNXU2VydmVyV29ya2VyJik+JikgY29u
c3Q7CisgICAgYm9vbCBoYXNDbGllbnRzV2l0aE9yaWdpbihjb25zdCBDbGllbnRPcmlnaW4mIG9y
aWdpbikgeyByZXR1cm4gbV9jbGllbnRJZGVudGlmaWVyc1Blck9yaWdpbi5jb250YWlucyhvcmln
aW4pOyB9CisKKyAgICBlbnVtIGNsYXNzIFNob3VsZERlbGF5UmVtb3ZhbCA6IGJvb2wgeyBObywg
WWVzIH07CisgICAgU2hvdWxkRGVsYXlSZW1vdmFsIHJlbW92ZUNvbnRleHRDb25uZWN0aW9uSWZQ
b3NzaWJsZShjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYpOwogCiBwcml2YXRlOgogICAgIHZvaWQg
dmFsaWRhdGVSZWdpc3RyYXRpb25Eb21haW4oV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW4sIFNl
cnZpY2VXb3JrZXJKb2JUeXBlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJU
b0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcAppbmRleCA2NTYzNjJhMDkxMTEw
YjRjMTM2N2I2ZDVhMTQwNDYwNDgzOTJlZDYwLi42ZGNkODgyODkyN2JlNmUxNGMzZWQ1ZWJhMTIz
YzE4OTNhNjY4Zjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3Bw
CkBAIC0xMzcsNiArMTM3LDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpk
aWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIKICAgICAgICAgd29y
a2VyLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKIH0KIAordm9pZCBTV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb246OnNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIGJvb2wgaXNJbnNwZWN0ZWQpCit7CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2Vy
dmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAg
ICAgIHdvcmtlci0+c2V0QXNJbnNwZWN0ZWQoaXNJbnNwZWN0ZWQpOworfQorCiB2b2lkIFNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6dGVybWluYXRlV2hlblBvc3NpYmxlKCkKIHsKICAgICBt
X3Nob3VsZFRlcm1pbmF0ZVdoZW5Qb3NzaWJsZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uaAppbmRleCBiMDhhMzgzYThlOTQ5ZDAyNWVjNGE1YmU1ZTAyZmIwZDU2
ZmM5ZDhlLi42MTg2MzQ2Y2QxNzY5NWJhM2Q2OGEwNDJmZDcyYjQxNDAyZWEyYmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxFeGNlcHRpb25EYXRhPiYmKT4m
Jik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6
OkltcG9ydGVkU2NyaXB0JiYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldEFzSW5zcGVjdGVkKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGZpbmRDbGllbnRCeVZpc2libGVJZGVudGlmaWVyKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGNsaWVudElkZW50aWZpZXIsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YT4mJik+JiYpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxl
RG9tYWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcAppbmRleCBjZGJmZTQ0YmVlYzBjOTA4YmFjMTIyNGQwZWE0YjZmMTJmZWRmMWJkLi45OTI0
ZmJkYmFlNDYxMmNhODFlZGFiYjc3Njg3ZmZjNWRmM2NkYTkwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcApA
QCAtMzk3LDYgKzM5NywyOCBAQCBzdGQ6Om9wdGlvbmFsPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRJ
ZGVudGlmaWVyPiBTV1NlcnZlcldvcmtlcjo6c2VydmljZVdvcmtlclBhZwogICAgIHJldHVybiBt
X3JlZ2lzdHJhdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJZGVudGlmaWVyKCk7CiB9CiAKK3ZvaWQg
U1dTZXJ2ZXJXb3JrZXI6OmRlY3JlbWVudFB1c2hFdmVudENvdW50ZXIoKQoreworICAgIEFTU0VS
VChtX3B1c2hFdmVudENvdW50ZXIpOworICAgIC0tbV9wdXNoRXZlbnRDb3VudGVyOworICAgIHRl
cm1pbmF0ZUlmUG9zc2libGUoKTsKK30KKwordm9pZCBTV1NlcnZlcldvcmtlcjo6c2V0QXNJbnNw
ZWN0ZWQoYm9vbCBpc0luc3BlY3RlZCkKK3sKKyAgICBtX2lzSW5zcGVjdGVkID0gaXNJbnNwZWN0
ZWQ7CisgICAgdGVybWluYXRlSWZQb3NzaWJsZSgpOworfQorCit2b2lkIFNXU2VydmVyV29ya2Vy
Ojp0ZXJtaW5hdGVJZlBvc3NpYmxlKCkKK3sKKyAgICBpZiAobV9wdXNoRXZlbnRDb3VudGVyIHx8
IG1faXNJbnNwZWN0ZWQgfHwgIW1fc2VydmVyIHx8IG1fc2VydmVyLT5oYXNDbGllbnRzV2l0aE9y
aWdpbihvcmlnaW4oKSkpCisgICAgICAgIHJldHVybjsKKworICAgIHRlcm1pbmF0ZSgpOworICAg
IG1fc2VydmVyLT5yZW1vdmVDb250ZXh0Q29ubmVjdGlvbklmUG9zc2libGUocmVnaXN0cmFibGVE
b21haW4oKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuaAppbmRleCAxMTA4NmQxOTIzMTFlNTJkOTZmZTlm
OWE5NDk4NWIzNmIzMjMyZjA4Li45ZWRkNDQ1ZTZjYmM5ZWJjNWNiZDY2ODgxZWIzZDUwZDFkYmYw
N2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlcldvcmtlci5oCkBAIC0xMzUsNiArMTM1LDEyIEBAIHB1YmxpYzoKIAogICAgIFdv
cmtlclRocmVhZE1vZGUgd29ya2VyVGhyZWFkTW9kZSgpIGNvbnN0OwogCisgICAgdm9pZCBpbmNy
ZW1lbnRQdXNoRXZlbnRDb3VudGVyKCkgeyArK21fcHVzaEV2ZW50Q291bnRlcjsgfQorICAgIHZv
aWQgZGVjcmVtZW50UHVzaEV2ZW50Q291bnRlcigpOworICAgIHZvaWQgc2V0QXNJbnNwZWN0ZWQo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZENvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gISFtX3B1
c2hFdmVudENvdW50ZXIgfHwgbV9pc0luc3BlY3RlZDsgfQorCiBwcml2YXRlOgogICAgIFNXU2Vy
dmVyV29ya2VyKFNXU2VydmVyJiwgU1dTZXJ2ZXJSZWdpc3RyYXRpb24mLCBjb25zdCBVUkwmLCBj
b25zdCBTY3JpcHRCdWZmZXImLCBjb25zdCBDZXJ0aWZpY2F0ZUluZm8mLCBjb25zdCBDb250ZW50
U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBjb25zdCBDcm9zc09yaWdpbkVtYmVkZGVy
UG9saWN5JiwgU3RyaW5nJiYgcmVmZXJyZXJQb2xpY3ksIFdvcmtlclR5cGUsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyLCBIYXNoTWFwPFVSTCwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBv
cnRlZFNjcmlwdD4mJik7CiAKQEAgLTE0NCw2ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
dGVybWluYXRpb25Db21wbGV0ZWQoKTsKICAgICB2b2lkIHRlcm1pbmF0aW9uVGltZXJGaXJlZCgp
OwogICAgIHZvaWQgY2FsbFRlcm1pbmF0aW9uQ2FsbGJhY2tzKCk7CisgICAgdm9pZCB0ZXJtaW5h
dGVJZlBvc3NpYmxlKCk7CiAKICAgICBXZWFrUHRyPFNXU2VydmVyPiBtX3NlcnZlcjsKICAgICBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IG1fcmVnaXN0cmF0aW9uS2V5OwpAQCAtMTY2LDYg
KzE3Myw4IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4+
IG1fdGVybWluYXRpb25DYWxsYmFja3M7CiAgICAgVGltZXIgbV90ZXJtaW5hdGlvblRpbWVyOwog
ICAgIExhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkIG1fbGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQ7CisgICAgaW50IG1fcHVzaEV2ZW50Q291bnRlciB7IDAgfTsKKyAgICBib29sIG1f
aXNJbnNwZWN0ZWQgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24u
bWVzc2FnZXMuaW4KaW5kZXggYzZiN2MwNDUwOWQ2NWYyNzU5MGM1ZTc0MjRlNjA1MGYyM2U3YzY5
Yi4uMDc4YjZlYTMwYjkxN2E3N2E3NjJhMGJkYmMwMjc2OTQ5YjNhYjk4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3Nh
Z2VzLmluCkBAIC0zOCw2ICszOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbiBOb3RSZWZDb3VudGVkIHsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHNjcmlwdCkKICAg
ICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0SWRlbnRpZmllciBkZXN0aW5hdGlvbiwgc3RydWN0IFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzIG1lc3NhZ2UsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
IHNvdXJjZSwgU3RyaW5nIHNvdXJjZU9yaWdpbikKICAgICBEaWRGYWlsSGVhcnRCZWF0Q2hlY2so
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKKyAgICBTZXRBc0lu
c3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29s
IGlzSW5zcGVjdGVkKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCmluZGV4IDk3MGU5MDA2ZDU5OTY5YWVkY2Rl
MjA5NjJjOTFhYjM0NjQ1YTk5MGQuLmExYzY4Y2JlYTQzMmUxMTY0ODhjOTU5OWRjMjNiZDYyZWU4
ZjFiZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKQEAgLTM3Miw2ICsz
NzIsMTEgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0
QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWUKICAgICBtX2Nvbm5lY3Rpb25Ub05ldHdv
cmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246
OkRpZEZhaWxIZWFydEJlYXRDaGVjayB7IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIDApOwog
fQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpzZXRBc0luc3BlY3RlZChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBib29sIGlzSW5zcGVj
dGVkKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6U2V0QXNJbnNwZWN0ZWQgeyBpZGVudGlm
aWVyLCBpc0luc3BlY3RlZCB9LCAwKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmgKaW5kZXggMWUzMTQwZjY4MmVhNjM3NGY3OTIwYjkzOTMxYWY5NzhlZWZiZmExMi4uYjU2
OTQwZTRiMDMzNDc0ZGIyMzA3ZTFkZGNlMjA5NGJhMDVmOGI5MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRT
Y3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJM
JiwgY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlw
dCYpIGZpbmFsOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKICAgICB2
b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
cikgZmluYWw7CisgICAgdm9pZCBzZXRBc0luc3BlY3RlZChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgYm9vbCkgZmluYWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9p
ZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBi
b29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmJiMTgwOTQ4ZTVlNTFjOGJlYmQ5NjA1ODhiNzJjY2Ey
ZTlkNDI2Zi4uNDIyZmExN2MyZWJiZTBhZGI4YjJlM2MyZGRhNzZlMDNjNGFjZGRmOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTAzLTE2ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAg
ICAgICBLZWVwIHNlcnZpY2Ugd29ya2VycyBhbGl2ZSB3aGVuIHRoZXkgYXJlIGluc3BlY3RlZCBl
dmVuIHRob3VnaCB0aGV5IHNob3VsZCBiZSB0ZXJtaW5hdGVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc4MjcKKyAgICAgICAgPHJkYXI6Ly84ODMx
MzkzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbToKKwogMjAyMi0wMy0x
NiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBNSU1F
VHlwZVJlZ2lzdHJ5OjptaW1lVHlwZUZvclBhdGggdGFrZSBhIFN0cmluZ1ZpZXcKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCAzYmQy
ZjFlMjNkZjcwYjE1NDZlZTZmYzU3MjU3ZjhiODZkYzAyNDNlLi41NmVhMTkxOTE3Y2JlOTRiZGZh
Mjc3NzYxMjAwOTYzMTM1YTI2Yzg2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNjcsMyArMzY3LDIzMiBAQCBURVNUKFB1c2hB
UEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAKICAgICBjbGVhcldlYnNpdGVE
YXRhU3RvcmUoW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOwogfQorCisjaWYgV0tf
SEFWRV9DX1NQSQorCitzdGF0aWMgY29uc3QgY2hhciogcHVzaEV2ZW50c0FuZEluc3BlY3RlZFNl
cnZpY2VXb3JrZXJTY3JpcHRCeXRlcyA9IFIiU1dSRVNPVVJDRSgKK2xldCBwb3J0Oworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgKGV2ZW50KSA9PiB7CisgICAgcG9ydCA9IGV2ZW50
LmRhdGEucG9ydDsKKyAgICBwb3J0LnBvc3RNZXNzYWdlKHNlbGYuaW50ZXJuYWxzID8gIlJlYWR5
IiA6ICJObyBpbnRlcm5hbHMiKTsKK30pOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwg
KGV2ZW50KSA9PiB7CisgICAgc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbigibm90
aWZpY2F0aW9uIik7CisgICAgaWYgKGV2ZW50LmRhdGEudGV4dCgpID09PSAnZmlyc3QnKSB7Cisg
ICAgICAgIHNlbGYuaW50ZXJuYWxzLnNldEFzSW5zcGVjdGVkKHRydWUpOworICAgICAgICBzZWxm
LnByZXZpb3VzTWVzc2FnZURhdGEgPSAnZmlyc3QnOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChldmVudC5kYXRhLnRleHQoKSA9PT0gJ3NlY29uZCcpIHsKKyAgICAgICAgc2VsZi5p
bnRlcm5hbHMuc2V0QXNJbnNwZWN0ZWQoZmFsc2UpOworICAgICAgICBpZiAoc2VsZi5wcmV2aW91
c01lc3NhZ2VEYXRhICE9PSAnZmlyc3QnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFBy
b21pc2UucmVqZWN0KCdleHBlY3RlZCBmaXJzdCcpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICd0aGlyZCcpIHsKKyAgICAgICAgaWYgKHNl
bGYucHJldmlvdXNNZXNzYWdlRGF0YSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgZXZlbnQu
d2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdleHBlY3RlZCB1bmRlZmluZWQnKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhID0gZXZlbnQuZGF0
YS50ZXh0KCk7CisgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdleHBlY3RlZCBh
IGtub3duIG1lc3NhZ2UnKSk7Cit9KTsKKylTV1JFU09VUkNFIjsKKworVEVTVChQdXNoQVBJLCBw
dXNoRXZlbnRzQW5kSW5zcGVjdGVkU2VydmljZVdvcmtlcikKK3sKKyAgICBUZXN0V2ViS2l0QVBJ
OjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5CeXRlcyB9IH0sCisg
ICAgICAgIHsgIi9zdy5qcyIsIHsge3sgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZh
c2NyaXB0IiB9fSwgcHVzaEV2ZW50c0FuZEluc3BlY3RlZFNlcnZpY2VXb3JrZXJTY3JpcHRCeXRl
cyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7
CisKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFs
bE9yaWdpbnNdOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjbGVhcldlYnNpdGVEYXRhU3RvcmUo
W2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0pOworCisgICAgYXV0byBjb250ZXh0ID0g
YWRvcHRXSyhUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5k
bGVUZXN0KCJJbnRlcm5hbHNJbmplY3RlZEJ1bmRsZVRlc3QiKSk7CisgICAgW2NvbmZpZ3VyYXRp
b24gc2V0UHJvY2Vzc1Bvb2w6KFdLUHJvY2Vzc1Bvb2wgKiljb250ZXh0LmdldCgpXTsKKworICAg
IGF1dG8gcHJvdmlkZXIgPSBUZXN0V2ViS2l0QVBJOjpUZXN0Tm90aWZpY2F0aW9uUHJvdmlkZXIo
eyBbW2NvbmZpZ3VyYXRpb24gcHJvY2Vzc1Bvb2xdIF9ub3RpZmljYXRpb25NYW5hZ2VyRm9yVGVz
dGluZ10sIFdLTm90aWZpY2F0aW9uTWFuYWdlckdldFNoYXJlZFNlcnZpY2VXb3JrZXJOb3RpZmlj
YXRpb25NYW5hZ2VyKCkgfSk7CisgICAgcHJvdmlkZXIuc2V0UGVybWlzc2lvbihzZXJ2ZXIub3Jp
Z2luKCksIHRydWUpOworCisgICAgYXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tQdXNo
QVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIGFsbG9jXSBpbml0XSk7CisgICAg
W1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhh
bmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisKKyAgICBleHBlY3RlZE1l
c3NhZ2UgPSAiUmVhZHkiOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2Vy
dmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
CisgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3ID0gbnVsbHB0cjsKKworICAgIHRl
cm1pbmF0ZU5ldHdvcmtQcm9jZXNzV2hpbGVSZWdpc3RyYXRpb25Jc1N0b3JlZChjb25maWd1cmF0
aW9uLmdldCgpKTsKKworICAgIC8vIFB1c2ggZXZlbnQgZm9yIHNlcnZpY2Ugd29ya2VyIHdpdGhv
dXQgYW55IHJlbGF0ZWQgcGFnZS4KKyAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwor
ICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOworICAgIE5TU3RyaW5nICptZXNzYWdl
ID0gQCJmaXJzdCI7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9j
ZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rp
bmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0
aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1
bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOwor
ICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7CisKKyAgICBwdXNoTWVzc2Fn
ZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOwor
ICAgIG1lc3NhZ2UgPSBAInNlY29uZCI7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRh
U3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBV
UkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNz
YWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQpOworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7CisKKyAg
ICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOworICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1
bCA9IGZhbHNlOworICAgIG1lc3NhZ2UgPSBAInRoaXJkIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24g
d2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShb
bWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIu
cmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAg
ICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OworICAgICAgICBwdXNoTWVzc2FnZVBy
b2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZw
dXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VTdWNjZXNz
ZnVsKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIqIGluc3BlY3RlZFNlcnZpY2VXb3JrZXJXaXRo
b3V0UGFnZVNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorbGV0IHBvcnQ7CitzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBwb3J0ID0gZXZlbnQuZGF0
YS5wb3J0OworICAgIHBvcnQucG9zdE1lc3NhZ2Uoc2VsZi5pbnRlcm5hbHMgPyAiUmVhZHkiIDog
Ik5vIGludGVybmFscyIpOworfSk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoInB1c2giLCBhc3lu
YyAoZXZlbnQpID0+IHsKKyAgICBzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCJu
b3RpZmljYXRpb24iKTsKKyAgICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICdmaXJzdG1lc3Nh
Z2UtaW5zcGVjdGVkJyB8fCBldmVudC5kYXRhLnRleHQoKSA9PT0gJ2ZpcnN0bWVzc2FnZS1ub3Qt
aW5zcGVjdGVkJykgeworICAgICAgICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICdmaXJzdG1l
c3NhZ2UtaW5zcGVjdGVkJykKKyAgICAgICAgICAgIHNlbGYuaW50ZXJuYWxzLnNldEFzSW5zcGVj
dGVkKHRydWUpOworICAgICAgICBpZiAoc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhICE9PSB1bmRl
ZmluZWQpCisgICAgICAgICAgICBldmVudC53YWl0VW50aWwoUHJvbWlzZS5yZWplY3QoJ3VuZXhw
ZWN0ZWQgc3RhdGUgd2l0aCBpbnNwZWN0ZWQgbWVzc2FnZScpKTsKKyAgICAgICAgc2VsZi5wcmV2
aW91c01lc3NhZ2VEYXRhID0gJ2luc3BlY3RlZCc7CisgICAgICAgIC8vIFdhaXQgZm9yIGNsaWVu
dCB0byBnbyBhd2F5IGJlZm9yZSByZXNvbHZpbmcgdGhlIGV2ZW50IHByb21pc2U7CisgICAgICAg
IGxldCByZXNvbHZlOworICAgICAgICBldmVudC53YWl0VW50aWwobmV3IFByb21pc2UociA9PiBy
ZXNvbHZlID0gcikpOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgY29uc3Qg
Y2xpZW50cyA9IGF3YWl0IHNlbGYuY2xpZW50cy5tYXRjaEFsbCh7IGluY2x1ZGVVbmNvbnRyb2xs
ZWQgOiB0cnVlIH0pOworICAgICAgICAgICAgaWYgKCFjbGllbnRzLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoZXZlbnQuZGF0YS50ZXh0KCkgPT09ICdub3QgaW5zcGVjdGVkJykgeworICAgICAgICBz
ZXRUaW1lb3V0KCgpID0+IHNlbGYuaW50ZXJuYWxzLnNldEFzSW5zcGVjdGVkKGZhbHNlKSwgMTAp
OworICAgICAgICBpZiAoc2VsZi5wcmV2aW91c01lc3NhZ2VEYXRhICE9PSAnaW5zcGVjdGVkJykK
KyAgICAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgndW5leHBlY3RlZCBz
dGF0ZSB3aXRoIG5vdCBpbnNwZWN0ZWQgbWVzc2FnZScpKTsKKyAgICAgICAgc2VsZi5wcmV2aW91
c01lc3NhZ2VEYXRhID0gJ25vdCBpbnNwZWN0ZWQnOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChldmVudC5kYXRhLnRleHQoKSA9PT0gJ2xhc3QnKSB7CisgICAgICAgIGlmIChzZWxm
LnByZXZpb3VzTWVzc2FnZURhdGEgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgICAgIGV2ZW50Lndh
aXRVbnRpbChQcm9taXNlLnJlamVjdCgndW5leHBlY3RlZCBzdGF0ZSB3aXRoIGxhc3QgbWVzc2Fn
ZScpKTsKKyAgICB9Cit9KTsKKylTV1JFU09VUkNFIjsKKworc3RhdGljIHZvaWQgdGVzdEluc3Bl
Y3RlZFNlcnZpY2VXb3JrZXJXaXRob3V0UGFnZShib29sIGVuYWJsZVNlcnZpY2VXb3JrZXJJbnNw
ZWN0aW9uKQoreworICAgIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXIgc2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgbWFpbkJ5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7eyAiQ29u
dGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIH19LCBpbnNwZWN0ZWRTZXJ2aWNl
V29ya2VyV2l0aG91dFBhZ2VTY3JpcHRCeXRlcyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpI
VFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9h
bGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgYXV0byBkYXRhU3Rv
cmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW2RhdGFTdG9yZUNvbmZpZ3VyYXRpb24gc2V0U2Vydmlj
ZVdvcmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZDpOT107CisgICAgYXV0byBkYXRh
U3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25m
aWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3Jl
LmdldCgpOworICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXSk7CisKKyAgICBhdXRvIGNvbnRleHQgPSBhZG9wdFdLKFRlc3RXZWJLaXRBUEk6
OlV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkludGVybmFsc0luamVj
dGVkQnVuZGxlVGVzdCIpKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDooV0tQ
cm9jZXNzUG9vbCAqKWNvbnRleHQuZ2V0KCldOworCisgICAgYXV0byBwcm92aWRlciA9IFRlc3RX
ZWJLaXRBUEk6OlRlc3ROb3RpZmljYXRpb25Qcm92aWRlcih7IFtbY29uZmlndXJhdGlvbiBwcm9j
ZXNzUG9vbF0gX25vdGlmaWNhdGlvbk1hbmFnZXJGb3JUZXN0aW5nXSwgV0tOb3RpZmljYXRpb25N
YW5hZ2VyR2V0U2hhcmVkU2VydmljZVdvcmtlck5vdGlmaWNhdGlvbk1hbmFnZXIoKSB9KTsKKyAg
ICBwcm92aWRlci5zZXRQZXJtaXNzaW9uKHNlcnZlci5vcmlnaW4oKSwgdHJ1ZSk7CisKKyAgICBh
dXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1B1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhF
eHBlY3RlZE1lc3NhZ2UgYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZpZ3VyYXRpb24gdXNlckNv
bnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5n
ZXQoKSBuYW1lOkAic3ciXTsKKworICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWFkeSI7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICAvLyBQdXNoIGV2ZW50IGZv
ciBzZXJ2aWNlIHdvcmtlciB3aXRob3V0IGFueSByZWxhdGVkIHBhZ2UuCisgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsK
KyAgICBOU1N0cmluZyAqbWVzc2FnZSA9IEAiZmlyc3RtZXNzYWdlLWluc3BlY3RlZCI7CisgICAg
aWYgKCFlbmFibGVTZXJ2aWNlV29ya2VySW5zcGVjdGlvbikKKyAgICAgICAgbWVzc2FnZSA9IEAi
Zmlyc3RtZXNzYWdlLW5vdC1pbnNwZWN0ZWQiOworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdl
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0
KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2Vk
ID0gdHJ1ZTsKKyAgICB9XTsKKworICAgIC8vIFdlIGRlbGF5IHNvIHRoYXQgdGhlIHB1c2ggbWVz
c2FnZSB3aWxsIGhhcHBlbiBiZWZvcmUgdGhlIHVucmVnaXN0cmF0aW9uIG9mIHRoZSBzZXJ2aWNl
IHdvcmtlciBjbGllbnQuCisgICAgc2xlZXAoMC41KTsKKworICAgIC8vIENsb3NpbmcgdGhlIHdl
YiB2aWV3IHNob3VsZCBub3QgdGVybWluYXRlIHRoZSBzZXJ2aWNlIHdvcmtlciBhcyBzZXJ2aWNl
IHdvcmtlciBpcyBpbnNwZWN0ZWQuCisgICAgW3dlYlZpZXcgX2Nsb3NlXTsKKyAgICB3ZWJWaWV3
ID0gbnVsbHB0cjsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQpOworICAgIEVYUEVDVF9UUlVFKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCk7CisKKyAg
ICAvLyBXZSBkZWxheSBzbyB0aGF0IHRoZSB0aW1lciB0byB0ZXJtaW5hdGUgc2VydmljZSB3b3Jr
ZXIga2lja3MgaW4sIGF0IG1vc3QgdXAgdG8gdGhlIG1heCBwdXNoIG1lc3NhZ2UgYWxsb3dlZCB0
aW1lLCBha2EgMiBzZWNvbmRzLgorICAgIHNsZWVwKDMpOworCisgICAgLy8gU2VuZCBtZXNzYWdl
IGF0IHdoaWNoIHBvaW50IHRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIG5vdCBiZSBpbnNwZWN0ZWQg
YW55bW9yZSBhbmQgd2lsbCBiZSBjbG9zZWQuCisgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBm
YWxzZTsKKyAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKKyAgICBtZXNzYWdlID0g
QCJub3QgaW5zcGVjdGVkIjsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0g
X3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNv
bXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICAgICAgcHVzaE1lc3NhZ2VTdWNj
ZXNzZnVsID0gcmVzdWx0OworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3Nl
ZCk7CisgICAgRVhQRUNUX0VRKHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCwgZW5hYmxlU2VydmljZVdv
cmtlckluc3BlY3Rpb24pOworCisgICAgLy8gV2UgZGVsYXkgc28gdGhhdCB0aGUgdGltZXIgdG8g
dGVybWluYXRlIHNlcnZpY2Ugd29ya2VyIGtpY2tzIGluLCBhdCBtb3N0IHVwIHRvIHRoZSBtYXgg
cHVzaCBtZXNzYWdlIGFsbG93ZWQgdGltZSwgYWthIDIgc2Vjb25kcy4KKyAgICBzbGVlcCgzKTsK
KworICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgcHVzaE1lc3NhZ2VTdWNj
ZXNzZnVsID0gZmFsc2U7CisgICAgbWVzc2FnZSA9IEAibGFzdCI7CisgICAgW1tjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25h
cnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7Cisg
ICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKKyAgICAgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWQgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZwdXNoTWVzc2FnZVByb2Nlc3NlZCk7CisgICAgRVhQRUNUX1RSVUUocHVzaE1lc3NhZ2VT
dWNjZXNzZnVsKTsKK30KKworVEVTVChQdXNoQVBJLCBpbnNwZWN0ZWRTZXJ2aWNlV29ya2VyV2l0
aG91dFBhZ2UpCit7CisgICAgYm9vbCBlbmFibGVTZXJ2aWNlV29ya2VySW5zcGVjdGlvbiA9IHRy
dWU7CisgICAgdGVzdEluc3BlY3RlZFNlcnZpY2VXb3JrZXJXaXRob3V0UGFnZShlbmFibGVTZXJ2
aWNlV29ya2VySW5zcGVjdGlvbik7Cit9CisKK1RFU1QoUHVzaEFQSSwgdW5pbnNwZWN0ZWRTZXJ2
aWNlV29ya2VyV2l0aG91dFBhZ2UpCit7CisgICAgYm9vbCBlbmFibGVTZXJ2aWNlV29ya2VySW5z
cGVjdGlvbiA9IGZhbHNlOworICAgIHRlc3RJbnNwZWN0ZWRTZXJ2aWNlV29ya2VyV2l0aG91dFBh
Z2UoZW5hYmxlU2VydmljZVdvcmtlckluc3BlY3Rpb24pOworfQorCisjZW5kaWYgLy8gV0tfSEFW
RV9DX1NQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>