<?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>210626</bug_id>
          
          <creation_ts>2020-04-16 16:18:47 -0700</creation_ts>
          <short_desc>NetworkSessionCocoa should request client certificate only once per host/port</short_desc>
          <delta_ts>2020-04-17 16:41:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1642485</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-16 16:18:47 -0700</bug_when>
    <thetext>NetworkSessionCocoa should request client certificate only once per host/port</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642497</commentid>
    <comment_count>1</comment_count>
      <attachid>396718</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-16 16:24:26 -0700</bug_when>
    <thetext>Created attachment 396718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642498</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-16 16:24:37 -0700</bug_when>
    <thetext>&lt;rdar://problem/60340449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642546</commentid>
    <comment_count>3</comment_count>
      <attachid>396735</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-16 19:28:55 -0700</bug_when>
    <thetext>Created attachment 396735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642768</commentid>
    <comment_count>4</comment_count>
      <attachid>396781</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 12:17:28 -0700</bug_when>
    <thetext>Created attachment 396781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642793</commentid>
    <comment_count>5</comment_count>
      <attachid>396787</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 13:08:22 -0700</bug_when>
    <thetext>Created attachment 396787
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642818</commentid>
    <comment_count>6</comment_count>
      <attachid>396794</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 13:59:05 -0700</bug_when>
    <thetext>Created attachment 396794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642827</commentid>
    <comment_count>7</comment_count>
      <attachid>396794</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-17 14:11:55 -0700</bug_when>
    <thetext>Comment on attachment 396794
Patch

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

r=me

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.h:161
&gt; +    HashMap&lt;std::pair&lt;String, uint16_t&gt;, RetainPtr&lt;NSURLCredential&gt;&gt; m_successfulClientCertificates;

Can we give a name to &quot;std::pair&lt;String, uint16_t&gt;&quot;, and maybe use it in SuggestedClientCertificate too? Something like &quot;Server&quot; or &quot;Endpoint&quot; or just &quot;HostAndPort&quot;. Maybe just make it a struct rather than a pair.

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkSessionCocoa.mm:1037
&gt; +    if (UNLIKELY(!m_suggestedClientCertificates.isEmpty())) {

Can be an early return to reduce nesting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642871</commentid>
    <comment_count>8</comment_count>
      <attachid>396809</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 15:32:40 -0700</bug_when>
    <thetext>Created attachment 396809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642878</commentid>
    <comment_count>9</comment_count>
      <attachid>396811</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 15:53:18 -0700</bug_when>
    <thetext>Created attachment 396811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642894</commentid>
    <comment_count>10</comment_count>
      <attachid>396815</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 16:24:44 -0700</bug_when>
    <thetext>Created attachment 396815
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1642899</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-17 16:41:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/r260302</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396718</attachid>
            <date>2020-04-16 16:24:26 -0700</date>
            <delta_ts>2020-04-16 19:28:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200416162425.patch</filename>
            <type>text/plain</type>
            <size>9260</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA0LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgIFRoaXMgc3RpbGwgbmVlZHMgdGVzdHMsIGJ1
dCBJJ3ZlIHZlcmlmaWVkIHRoaXMgc29sdmVzIHRoZSBwcm9ibGVtIGluIHRoZSByYWRhci4KKwor
ICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaDoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgorICAg
ICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOndpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uOm5ld1JlcXVlc3Q6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOnRhc2s6ZGlkUmVjZWl2
ZUNoYWxsZW5nZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vz
c2lvbkRlbGVnYXRlIFVSTFNlc3Npb246dGFzazpkaWRDb21wbGV0ZVdpdGhFcnJvcjpdKToKKyAg
ICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6ZGlk
UmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNrUmVjZWl2ZWRCeXRlcyk6
CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tGYWlsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdWNjZXNzZnVsQ2xpZW50Q2VydGlm
aWNhdGVGb3JIb3N0IGNvbnN0KToKKwogMjAyMC0wNC0xNiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbbWFjT1NdIFN3aXRjaCB1bnVzZWQgSU9LaXQgY2xh
c3NlcyBmcm9tIGFsbG93LXdpdGgtcmVwb3J0IHRvIGRlbnktd2l0aC1yZXBvcnQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNjAxOTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTAw
LDYgKzEwMCwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0luQXBwQnJvd3NlclByaXZhY3lFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0luQXBwQnJvd3NlclByaXZhY3lFbmFibGVkOyB9CiAg
ICAgYm9vbCBwcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uOyB9CiAgICAgCisg
ICAgdm9pZCBjbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNr
Q29jb2E6OlRhc2tJZGVudGlmaWVyLCBOU1VSTENyZWRlbnRpYWwgKiwgY29uc3QgU3RyaW5nJiBo
b3N0LCB1aW50MTZfdCBwb3J0KTsKKyAgICB2b2lkIHRhc2tSZWNlaXZlZEJ5dGVzKE5ldHdvcmtE
YXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllcik7CisgICAgdm9pZCB0YXNrRmFpbGVkKE5ldHdv
cmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllcik7CisgICAgTlNVUkxDcmVkZW50aWFsICpz
dWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgdWlu
dDE2X3QgcG9ydCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgdm9pZCBpbnZhbGlkYXRlQW5kQ2Fu
Y2VsKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckNyZWRlbnRpYWxzKCkgb3ZlcnJpZGU7CkBA
IC0xNDYsNiArMTUxLDE0IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fZGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZTsKICAgICBib29sIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0aGVudGljYXRpb24g
eyBmYWxzZSB9OworCisgICAgc3RydWN0IFN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlIHsKKyAg
ICAgICAgU3RyaW5nIGhvc3Q7CisgICAgICAgIHVpbnQxNl90IHBvcnQgeyAwIH07CisgICAgICAg
IFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+IGNyZWRlbnRpYWw7CisgICAgfTsKKyAgICBIYXNo
TWFwPE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciwgU3VnZ2VzdGVkQ2xpZW50
Q2VydGlmaWNhdGU+IG1fc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzOworICAgIEhhc2hNYXA8
c3RkOjpwYWlyPFN0cmluZywgdWludDE2X3Q+LCBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPj4g
bV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNz
aW9uQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCShyZXZpc2lvbiAyNjAxOTApCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtp
bmcgY29weSkKQEAgLTUyOSw2ICs1MjksOSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vz
c2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0
aW5nVGFzazp0YXNrXSkgewogICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJs
b2NrX2NvcHkoY29tcGxldGlvbkhhbmRsZXIpOwogCisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
Q29jb2EgPSBbc2VsZiBzZXNzaW9uRnJvbVRhc2s6dGFza10pCisgICAgICAgICAgICBzZXNzaW9u
Q29jb2EtPnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBib29s
IHNob3VsZElnbm9yZUhTVFMgPSBmYWxzZTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFU
SVNUSUNTKQogICAgICAgICBpZiAoYXV0byogc2Vzc2lvbkNvY29hID0gbmV0d29ya0RhdGFUYXNr
LT5uZXR3b3JrU2Vzc2lvbigpKSB7CkBAIC02OTIsNiArNjk1LDIwIEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICNlbmRpZgogICAgICAgICB9CiAgICAgfQorCisg
ICAgaWYgKFtjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlz
RXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVd
KSB7CisgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQxNl90PiBrZXkgeyBjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmhvc3QsIGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UucG9ydCB9Owor
ICAgICAgICBpZiAoYXV0byogY3JlZGVudGlhbCA9IHNlc3Npb25Db2NvYS0+c3VjY2Vzc2Z1bENs
aWVudENlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmhvc3QsIGNo
YWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UucG9ydCkpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIGNyZWRl
bnRpYWwpOworICAgICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5n
ZSgqX3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJ
ZGVudGlmaWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIGtleSwgd2Vha1Nlc3Npb25Db2NvYSA9
IG1ha2VXZWFrUHRyKHNlc3Npb25Db2NvYSksIHRhc2tJZGVudGlmaWVyXSAoV2ViS2l0OjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3Jl
OjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIE5TVVJMQ3Jl
ZGVudGlhbCAqbnNDcmVkZW50aWFsID0gY3JlZGVudGlhbC5uc0NyZWRlbnRpYWwoKTsKKyAgICAg
ICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwgJiYgbnNDcmVkZW50aWFsICYmIHdlYWtTZXNzaW9u
Q29jb2EpCisgICAgICAgICAgICAgICAgd2Vha1Nlc3Npb25Db2NvYS0+Y2xpZW50Q2VydGlmaWNh
dGVTdWdnZXN0ZWRGb3JIb3N0KHRhc2tJZGVudGlmaWVyLCBuc0NyZWRlbnRpYWwsIGtleS5maXJz
dCwga2V5LnNlY29uZCk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIG5zQ3JlZGVudGlhbCk7
CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc2Vzc2lvbkNvY29h
LT5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoKl9zZXNzaW9uV3JhcHBlciwgY2hhbGxlbmdl
LCBuZWdvdGlhdGVkTGVnYWN5VExTLCB0YXNrSWRlbnRpZmllciwgW3NlbGYgZXhpc3RpbmdUYXNr
OnRhc2tdLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0
aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24oZGlzcG9zaXRpb24pLCBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKTsKICAgICB9KTsK
QEAgLTcwOCw5ICs3MjUsMTEgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilz
ZXNzaQogICAgICAgICBlcnJvciA9IFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpbZXJyb3IgZG9t
YWluXSBjb2RlOltlcnJvciBjb2RlXSB1c2VySW5mbzpuZXdVc2VySW5mb107CiAgICAgfQogCi0g
ICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkK
KyAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2td
KSB7CisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBbc2VsZiBzZXNzaW9uRnJvbVRh
c2s6dGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2EtPnRhc2tGYWlsZWQodGFzay50YXNr
SWRlbnRpZmllcik7CiAgICAgICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkQ29tcGxldGVXaXRoRXJy
b3IoZXJyb3IsIG5ldHdvcmtEYXRhVGFzay0+bmV0d29ya0xvYWRNZXRyaWNzKCkpOwotICAgIGVs
c2UgaWYgKGVycm9yKSB7CisgICAgfSBlbHNlIGlmIChlcnJvcikgewogICAgICAgICBpZiAoIV9z
ZXNzaW9uV3JhcHBlcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byBkb3dubG9h
ZElEID0gX3Nlc3Npb25XcmFwcGVyLT5kb3dubG9hZE1hcC50YWtlKHRhc2sudGFza0lkZW50aWZp
ZXIpOwpAQCAtODQwLDYgKzg1OSw5IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdU
YXNrOmRhdGFUYXNrXSkgewogICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCisg
ICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBbc2VsZiBzZXNzaW9uRnJvbVRhc2s6ZGF0
YVRhc2tdKQorICAgICAgICAgICAgc2Vzc2lvbkNvY29hLT50YXNrUmVjZWl2ZWRCeXRlcyh0YXNr
SWRlbnRpZmllcik7CisKICAgICAgICAgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdvdGlhdGVkTGVn
YWN5VExTID0gTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm87CiAjaWYgSEFWRShUTFNfUFJPVE9DT0xf
VkVSU0lPTl9UKQogICAgICAgICBOU1VSTFNlc3Npb25UYXNrVHJhbnNhY3Rpb25NZXRyaWNzICpt
ZXRyaWNzID0gZGF0YVRhc2suX2luY29tcGxldGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJp
Y3MubGFzdE9iamVjdDsKQEAgLTEwMDUsNiArMTAyNywzNSBAQCBzdGF0aWMgTlNVUkxTZXNzaW9u
Q29uZmlndXJhdGlvbiAqY29uZmlnCiAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247CiB9CiAKK3Zv
aWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y2xpZW50Q2VydGlmaWNhdGVTdWdnZXN0ZWRGb3JIb3N0
KE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSUQsIE5TVVJMQ3JlZGVu
dGlhbCAqY3JlZGVudGlhbCwgY29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KQorewor
ICAgIG1fc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLnNldCh0YXNrSUQsIFN1Z2dlc3RlZENs
aWVudENlcnRpZmljYXRlIHsgaG9zdCwgcG9ydCwgY3JlZGVudGlhbCB9KTsKK30KKwordm9pZCBO
ZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNrUmVjZWl2ZWRCeXRlcyhOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1fc3Vn
Z2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLmlzRW1wdHkoKSkpIHsKKyAgICAgICAgYXV0byBzdWdn
ZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSA9IG1fc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLnRh
a2UoaWRlbnRpZmllcik7CisgICAgICAgIHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQxNl90PiBrZXkg
eyBzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZS5ob3N0LCBzdWdnZXN0ZWRDbGllbnRDZXJ0aWZp
Y2F0ZS5wb3J0IH07CisgICAgICAgIGlmIChzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZS5jcmVk
ZW50aWFsICYmIGRlY2x0eXBlKG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcyk6OmlzVmFs
aWRLZXkoa2V5KSkKKyAgICAgICAgICAgIG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcy5h
ZGQoa2V5LCBzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZS5jcmVkZW50aWFsKTsKKyAgICB9Cit9
CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6dGFza0ZhaWxlZChOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6VGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1f
c3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLmlzRW1wdHkoKSkpCisgICAgICAgIG1fc3VnZ2Vz
dGVkQ2xpZW50Q2VydGlmaWNhdGVzLnRha2UoaWRlbnRpZmllcik7Cit9CisKK05TVVJMQ3JlZGVu
dGlhbCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlRm9y
SG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpIGNvbnN0Cit7CisgICAgc3Rk
OjpwYWlyPFN0cmluZywgdWludDE2X3Q+IGtleSB7IGhvc3QsIHBvcnQgfTsKKyAgICBpZiAoIWRl
Y2x0eXBlKG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcyk6OmlzVmFsaWRLZXkoa2V5KSkK
KyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlm
aWNhdGVzLmdldChrZXkpLmdldCgpOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9u
Q29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1f
Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396735</attachid>
            <date>2020-04-16 19:28:55 -0700</date>
            <delta_ts>2020-04-17 12:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200416192854.patch</filename>
            <type>text/plain</type>
            <size>16726</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE2
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
U3dpdGNoIHVudXNlZCBJT0tpdCBjbGFzc2VzIGZyb20gYWxsb3ctd2l0aC1yZXBvcnQgdG8gZGVu
eS13aXRoLXJlcG9ydApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MDE5MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ7IH0KICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb247IH0KICAgICAKKyAgICB2b2lkIGNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVk
Rm9ySG9zdChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5TVVJMQ3JlZGVu
dGlhbCAqLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpOworICAgIHZvaWQgdGFz
a1JlY2VpdmVkQnl0ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsK
KyAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3Jl
ZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE0Niw2ICsxNTEsMTQgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGJvb2wgbV9pc0luQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJldmVudHNTeXN0ZW1I
VFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CisKKyAgICBzdHJ1Y3QgU3VnZ2VzdGVk
Q2xpZW50Q2VydGlmaWNhdGUgeworICAgICAgICBTdHJpbmcgaG9zdDsKKyAgICAgICAgdWludDE2
X3QgcG9ydCB7IDAgfTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVu
dGlhbDsKKyAgICB9OworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyLCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZT4gbV9zdWdnZXN0ZWRDbGllbnRDZXJ0
aWZpY2F0ZXM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4sIFJldGFp
blB0cjxOU1VSTENyZWRlbnRpYWw+PiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDE5MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw5IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKSB7CiAgICAgICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNr
XSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza1JlY2VpdmVkQnl0ZXModGFza0lkZW50
aWZpZXIpOworCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
Q29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9uKCkpIHsKQEAgLTY5Miw2ICs2
OTUsMjAgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pIHsKKyAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDE2X3Q+IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChhdXRvKiBjcmVkZW50aWFsID0gc2Vz
c2lvbkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0KSkKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgIHNlc3Npb25Db2NvYS0+Y29u
dGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNr
XSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwg
a2V5LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgdGFza0lk
ZW50aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUg
eworICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwgPSBjcmVkZW50aWFs
Lm5zQ3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCAmJiBuc0Ny
ZWRlbnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAgICAgICAgICAgICB3ZWFrU2Vzc2lv
bkNvY29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QodGFza0lkZW50aWZpZXIs
IG5zQ3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25kKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bv
c2l0aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlm
aWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcyNSwxMSBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vycm9yIGNvZGVdIHVzZXJJbmZvOm5l
d1VzZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3Nl
bGYgZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBb
c2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2Nv
YSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2Nv
YS0+dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgbmV0d29ya0RhdGFU
YXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICB9IGVsc2UgaWYgKGVy
cm9yKSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbldyYXBwZXItPmRvd25sb2FkTWFw
LnRha2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAsNiArODU5LDkgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtz
ZWxmIHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2Et
PnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBOZWdvdGlhdGVk
TGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsK
ICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tN
ZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0OwpAQCAtMTAwNSw2ICsxMDI3LDM1
IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWcKICAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0
aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlm
aWVyIHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIGhv
c3QsIHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMu
c2V0KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUgeyBob3N0LCBwb3J0LCBjcmVk
ZW50aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tSZWNlaXZlZEJ5
dGVzKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0eSgp
KSkgeworICAgICAgICBhdXRvIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlID0gbV9zdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpwYWly
PFN0cmluZywgdWludDE2X3Q+IGtleSB7IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLmhvc3Qs
IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLnBvcnQgfTsKKyAgICAgICAgaWYgKHN1Z2dlc3Rl
ZENsaWVudENlcnRpZmljYXRlLmNyZWRlbnRpYWwgJiYgZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xp
ZW50Q2VydGlmaWNhdGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICAgICAgbV9zdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRl
LmNyZWRlbnRpYWwpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNr
RmFpbGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0
eSgpKSkKKyAgICAgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlm
aWVyKTsKK30KKworTlNVUkxDcmVkZW50aWFsICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgdWludDE2X3Qg
cG9ydCkgY29uc3QKK3sKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4ga2V5IHsgaG9z
dCwgcG9ydCB9OworICAgIGlmICghZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNh
dGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBt
X3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMuZ2V0KGtleSkuZ2V0KCk7Cit9CisKIGNvbnN0
IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjAyMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uQ29jb2Egc2hvdWxkIHJlcXVlc3QgY2xpZW50IGNl
cnRpZmljYXRlIG9ubHkgb25jZSBwZXIgaG9zdC9wb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzQwNDQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjbGllbnRDZXJ0U2VydmVyV2l0aENlcnRWZXJpZmllcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQ
U2VydmVyKToKKwogMjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCAtX2ZvY3VzVGV4dElucHV0Q29udGV4dApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2Uu
bW0JKHJldmlzaW9uIDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KQEAgLTM5OSw2ICs0MDAs
NTQgQEAgVEVTVChXZWJLaXQsIEZhc3RTZXJ2ZXJUcnVzdCkKICNlbmRpZgogfQogCisjaWYgSEFW
RShORVRXT1JLX0ZSQU1FV09SSykKKworSFRUUFNlcnZlciBjbGllbnRDZXJ0U2VydmVyV2l0aENl
cnRWZXJpZmllcihGdW5jdGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1
c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90KT4mJiB2ZXJpZmllcikKK3sKKyAg
ICBWZWN0b3I8TENoYXI+IGNoYXJzKDUwMDAwLCAnYScpOworICAgIFN0cmluZyBsb25nU3RyaW5n
KGNoYXJzLmRhdGEoKSwgY2hhcnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gSFRUUFNlcnZlcih7Cisg
ICAgICAgIHsgIi8iLCB7ICI8aHRtbD48aW1nIHNyYz0nMS5wbmcnLz48aW1nIHNyYz0nMi5wbmcn
Lz48aW1nIHNyYz0nMy5wbmcnLz48aW1nIHNyYz0nNC5wbmcnLz48aW1nIHNyYz0nNS5wbmcnLz48
aW1nIHNyYz0nNi5wbmcnLz48L2h0bWw+IiB9IH0sCisgICAgICAgIHsgIi8xLnBuZyIsIHsgbG9u
Z1N0cmluZyB9IH0sCisgICAgICAgIHsgIi8yLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAg
ICAgIHsgIi8zLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi80LnBuZyIsIHsg
bG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi81LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisg
ICAgICAgIHsgIi82LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0KKyAgICB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIFdURk1vdmUodmVyaWZpZXIpKTsKK30KKworVEVTVChXZWJLaXQsIE11
bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0aW9ucykKK3sKKyAgICBhdXRvIHNlcnZlciA9
IGNsaWVudENlcnRTZXJ2ZXJXaXRoQ2VydFZlcmlmaWVyKFtdIChhdXRvLCBhdXRvLCBhdXRvIGNl
cnRpZmljYXRlQWxsb3dlZCkgeworICAgICAgICBjZXJ0aWZpY2F0ZUFsbG93ZWQodHJ1ZSk7Cisg
ICAgfSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwor
ICAgIAorICAgIF9fYmxvY2sgVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+IG1ldGhvZHM7Cisg
ICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gXihX
S1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lk
ICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlv
biwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIE5TU3RyaW5nICptZXRob2QgPSBjaGFs
bGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kOworICAgICAgICBtZXRo
b2RzLmFwcGVuZChtZXRob2QpOworICAgICAgICBpZiAoW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6
TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZENsaWVudENlcnRpZmljYXRlXSkKKyAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3Jl
ZGVudGlhbCwgY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKKyAgICAgICAgaWYgKFtt
ZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVz
dF0pCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRy
dXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVs
ZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5y
ZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Cisg
ICAgbWV0aG9kcy5yZW1vdmVBbGxNYXRjaGluZyhbXShhdXRvJiBtZXRob2QpIHsKKyAgICAgICAg
cmV0dXJuICFbbWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9k
Q2xpZW50Q2VydGlmaWNhdGVdOworICAgIH0pOworICAgIEVYUEVDVF9FUShtZXRob2RzLnNpemUo
KSwgMXUpOworfQorCisvLyBGSVhNRTogQWRkIHRlc3RzIHdpdGggcmVkaXJlY3Rpb25zLCBhbmQg
dGVzdHMgdGhhdCB2ZXJpZnkgdGhhdCBhIGNsaWVudCBjZXJ0IHRoYXQgcmVzdWx0cyBpbiBhIGZh
aWxlZCBsb2FkIGJlZm9yZSBieXRlcyBhcmUgcmVjZWl2ZWQgaXMgbm90IHNhdmVkLgorCisjZW5k
aWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykKKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQogCiAjZW5kaWYgLy8gSEFWRShTU0wpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYwMTkwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3Mg
SFRUUFNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RydWN0IEhUVFBSZXNwb25zZTsKICAgICBlbnVt
IGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lU
TFMgfTsKLSAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3Ry
aW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCk7CisgICAgSFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHAsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3Rv
Y29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRl
X3QpPiYmID0gbnVsbHB0cik7CiAgICAgdWludDE2X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJM
UmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OwogICAgIHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29u
c3QgeyByZXR1cm4gbV90b3RhbFJlcXVlc3RzOyB9CkBAIC01NSw4ICs1NSw4IEBAIHByaXZhdGU6
CiB9OwogCiBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKLSAgICBIVFRQUmVzcG9u
c2UoU3RyaW5nJiYgYm9keSkKLSAgICAgICAgOiBib2R5KFdURk1vdmUoYm9keSkpIHsgfQorICAg
IEhUVFBSZXNwb25zZShjb25zdCBTdHJpbmcmIGJvZHkpCisgICAgICAgIDogYm9keShib2R5KSB7
IH0KICAgICBIVFRQUmVzcG9uc2UoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVs
ZHMsIFN0cmluZyYmIGJvZHkpCiAgICAgICAgIDogaGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVy
RmllbGRzKSkKICAgICAgICAgLCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYwMTkwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6
SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJl
c3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90b2NvbCkKK0hUVFBTZXJ2ZXI6OkhUVFBT
ZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25z
ZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3Rv
Y29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRl
X3QpPiYmIHZlcmlmeSkKICAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCiAgICAgLCBtX3JlcXVl
c3RSZXNwb25zZU1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywg
SFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFwPFN0cmlu
ZywgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CkBAIC00NiwxOSArNDYsMjMgQEAgICAg
IDogbV9wcm90b2NvbChwcm90b2NvbCkKICAgICAgICAgcmV0dXJuIG1hcDsKICAgICB9KHJlc3Bv
bnNlcykpCiB7Ci0gICAgYXV0byBjb25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6
SHR0cCA/IE5XX1BBUkFNRVRFUlNfRElTQUJMRV9QUk9UT0NPTCA6IF4obndfcHJvdG9jb2xfb3B0
aW9uc190IHByb3RvY29sT3B0aW9ucykgeworICAgIGF1dG8gY29uZmlndXJlVExTID0gcHJvdG9j
b2wgPT0gUHJvdG9jb2w6Okh0dHAgPyBOV19QQVJBTUVURVJTX0RJU0FCTEVfUFJPVE9DT0wgOiBt
YWtlQmxvY2tQdHIoW3Byb3RvY29sLCB2ZXJpZnkgPSBXVEZNb3ZlKHZlcmlmeSldIChud19wcm90
b2NvbF9vcHRpb25zX3QgcHJvdG9jb2xPcHRpb25zKSBtdXRhYmxlIHsKICNpZiBIQVZFKFRMU19Q
Uk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIGF1dG8gb3B0aW9ucyA9IGFkb3B0TlMobndfdGxz
X2NvcHlfc2VjX3Byb3RvY29sX29wdGlvbnMocHJvdG9jb2xPcHRpb25zKSk7CiAgICAgICAgIGF1
dG8gaWRlbnRpdHkgPSBhZG9wdE5TKHNlY19pZGVudGl0eV9jcmVhdGUodGVzdElkZW50aXR5KCku
Z2V0KCkpKTsKICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5
KG9wdGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKICAgICAgICAgaWYgKHByb3RvY29sID09
IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCiAgICAgICAgICAgICBzZWNfcHJvdG9jb2xf
b3B0aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19w
cm90b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisgICAgICAgIGlmICh2ZXJpZnkpIHsKKyAgICAgICAg
ICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9wZWVyX2F1dGhlbnRpY2F0aW9uX3JlcXVpcmVk
KG9wdGlvbnMuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNf
c2V0X3ZlcmlmeV9ibG9jayhvcHRpb25zLmdldCgpLCBtYWtlQmxvY2tQdHIoV1RGTW92ZSh2ZXJp
ZnkpKS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAgIH0KICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2NvbE9wdGlvbnMpOwogICAgICAgICBBU1NFUlQo
cHJvdG9jb2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CiAjZW5kaWYKLSAgICB9
OwotICAgIGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2Vj
dXJlX3RjcChjb25maWd1cmVUTFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9O
KSk7CisgICAgfSk7CisgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJhbWV0ZXJz
X2NyZWF0ZV9zZWN1cmVfdGNwKGNvbmZpZ3VyZVRMUy5nZXQoKSwgTldfUEFSQU1FVEVSU19ERUZB
VUxUX0NPTkZJR1VSQVRJT04pKTsKICAgICBtX2xpc3RlbmVyID0gYWRvcHROUyhud19saXN0ZW5l
cl9jcmVhdGUocGFyYW1ldGVycy5nZXQoKSkpOwogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZSht
X2xpc3RlbmVyLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICBud19saXN0
ZW5lcl9zZXRfbmV3X2Nvbm5lY3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBeKG53X2Nv
bm5lY3Rpb25fdCBjb25uZWN0aW9uKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396781</attachid>
            <date>2020-04-17 12:17:28 -0700</date>
            <delta_ts>2020-04-17 13:08:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417121727.patch</filename>
            <type>text/plain</type>
            <size>20695</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE2
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
U3dpdGNoIHVudXNlZCBJT0tpdCBjbGFzc2VzIGZyb20gYWxsb3ctd2l0aC1yZXBvcnQgdG8gZGVu
eS13aXRoLXJlcG9ydApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MDE5MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ7IH0KICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb247IH0KICAgICAKKyAgICB2b2lkIGNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVk
Rm9ySG9zdChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5TVVJMQ3JlZGVu
dGlhbCAqLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpOworICAgIHZvaWQgdGFz
a1JlY2VpdmVkQnl0ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsK
KyAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3Jl
ZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE0Niw2ICsxNTEsMTQgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGJvb2wgbV9pc0luQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJldmVudHNTeXN0ZW1I
VFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CisKKyAgICBzdHJ1Y3QgU3VnZ2VzdGVk
Q2xpZW50Q2VydGlmaWNhdGUgeworICAgICAgICBTdHJpbmcgaG9zdDsKKyAgICAgICAgdWludDE2
X3QgcG9ydCB7IDAgfTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVu
dGlhbDsKKyAgICB9OworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyLCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZT4gbV9zdWdnZXN0ZWRDbGllbnRDZXJ0
aWZpY2F0ZXM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4sIFJldGFp
blB0cjxOU1VSTENyZWRlbnRpYWw+PiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDE5MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw5IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKSB7CiAgICAgICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNr
XSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza1JlY2VpdmVkQnl0ZXModGFza0lkZW50
aWZpZXIpOworCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
Q29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9uKCkpIHsKQEAgLTY5Miw2ICs2
OTUsMjAgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pIHsKKyAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDE2X3Q+IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChhdXRvKiBjcmVkZW50aWFsID0gc2Vz
c2lvbkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0KSkKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgIHNlc3Npb25Db2NvYS0+Y29u
dGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNr
XSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwg
a2V5LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgdGFza0lk
ZW50aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUg
eworICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwgPSBjcmVkZW50aWFs
Lm5zQ3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCAmJiBuc0Ny
ZWRlbnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAgICAgICAgICAgICB3ZWFrU2Vzc2lv
bkNvY29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QodGFza0lkZW50aWZpZXIs
IG5zQ3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25kKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bv
c2l0aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlm
aWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcyNSwxMSBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vycm9yIGNvZGVdIHVzZXJJbmZvOm5l
d1VzZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3Nl
bGYgZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBb
c2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2Nv
YSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2Nv
YS0+dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgbmV0d29ya0RhdGFU
YXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICB9IGVsc2UgaWYgKGVy
cm9yKSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbldyYXBwZXItPmRvd25sb2FkTWFw
LnRha2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAsNiArODU5LDkgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtz
ZWxmIHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2Et
PnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBOZWdvdGlhdGVk
TGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsK
ICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tN
ZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0OwpAQCAtMTAwNSw2ICsxMDI3LDM1
IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWcKICAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0
aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlm
aWVyIHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIGhv
c3QsIHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMu
c2V0KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUgeyBob3N0LCBwb3J0LCBjcmVk
ZW50aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tSZWNlaXZlZEJ5
dGVzKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0eSgp
KSkgeworICAgICAgICBhdXRvIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlID0gbV9zdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpwYWly
PFN0cmluZywgdWludDE2X3Q+IGtleSB7IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLmhvc3Qs
IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLnBvcnQgfTsKKyAgICAgICAgaWYgKHN1Z2dlc3Rl
ZENsaWVudENlcnRpZmljYXRlLmNyZWRlbnRpYWwgJiYgZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xp
ZW50Q2VydGlmaWNhdGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICAgICAgbV9zdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRl
LmNyZWRlbnRpYWwpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNr
RmFpbGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0
eSgpKSkKKyAgICAgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlm
aWVyKTsKK30KKworTlNVUkxDcmVkZW50aWFsICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgdWludDE2X3Qg
cG9ydCkgY29uc3QKK3sKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4ga2V5IHsgaG9z
dCwgcG9ydCB9OworICAgIGlmICghZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNh
dGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBt
X3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMuZ2V0KGtleSkuZ2V0KCk7Cit9CisKIGNvbnN0
IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjAyMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uQ29jb2Egc2hvdWxkIHJlcXVlc3QgY2xpZW50IGNl
cnRpZmljYXRlIG9ubHkgb25jZSBwZXIgaG9zdC9wb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzQwNDQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjbGllbnRDZXJ0U2VydmVyV2l0aENlcnRWZXJpZmllcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQ
U2VydmVyKToKKwogMjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCAtX2ZvY3VzVGV4dElucHV0Q29udGV4dApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2Uu
bW0JKHJldmlzaW9uIDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KQEAgLTM4LDYgKzM5LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFcnJvclJl
Y292ZXJ5QXR0ZW1wdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9j
b2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMzk5LDYgKzQwMSwxMDEgQEAgVEVTVChXZWJLaXQsIEZh
c3RTZXJ2ZXJUcnVzdCkKICNlbmRpZgogfQogCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
Kworc3RhdGljIEhUVFBTZXJ2ZXIgY2xpZW50Q2VydFNlcnZlcigpCit7CisgICAgVmVjdG9yPExD
aGFyPiBjaGFycyg1MDAwMCwgJ2EnKTsKKyAgICBTdHJpbmcgbG9uZ1N0cmluZyhjaGFycy5kYXRh
KCksIGNoYXJzLnNpemUoKSk7CisgICAgcmV0dXJuIEhUVFBTZXJ2ZXIoeworICAgICAgICB7ICIv
IiwgeyAiPGh0bWw+PGltZyBzcmM9JzEucG5nJy8+PGltZyBzcmM9JzIucG5nJy8+PGltZyBzcmM9
JzMucG5nJy8+PGltZyBzcmM9JzQucG5nJy8+PGltZyBzcmM9JzUucG5nJy8+PGltZyBzcmM9JzYu
cG5nJy8+PC9odG1sPiIgfSB9LAorICAgICAgICB7ICIvMS5wbmciLCB7IGxvbmdTdHJpbmcgfSB9
LAorICAgICAgICB7ICIvMi5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvMy5w
bmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvNC5wbmciLCB7IGxvbmdTdHJpbmcg
fSB9LAorICAgICAgICB7ICIvNS5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIv
Ni5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUb0Vycm9yIiwg
eyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvZXJyb3IiIH19IH0gfSwKKyAgICAgICAgeyAiL2Vycm9y
IiwgeyBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U6OlRlcm1pbmF0ZUNvbm5lY3Rpb246OlllcyB9
IH0sCisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBbXSAoYXV0bywgYXV0bywg
YXV0byBjZXJ0aWZpY2F0ZUFsbG93ZWQpIHsKKyAgICAgICAgY2VydGlmaWNhdGVBbGxvd2VkKHRy
dWUpOworICAgIH0pOworfQorCitzdGF0aWMgQmxvY2tQdHI8dm9pZChXS1dlYlZpZXcgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSk+IGNoYWxsZW5nZUhhbmRsZXIo
VmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+JiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIG1ha2VC
bG9ja1B0cihbJl0gKFdLV2ViVmlldyAqd2ViVmlldywgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIE5T
U3RyaW5nICptZXRob2QgPSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kOworICAgICAgICB2ZWN0b3IuYXBwZW5kKG1ldGhvZCk7CisgICAgICAgIGlmIChbbWV0
aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlm
aWNhdGVdKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsV2l0aElkZW50aXR5KCkuZ2V0
KCkpOworICAgICAgICBpZiAoW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0XSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KS5nZXQoKTsKK30K
Kworc3RhdGljIHNpemVfdCBjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKFZlY3RvcjxSZXRhaW5Q
dHI8TlNTdHJpbmc+PiYgdmVjdG9yKQoreworICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZyhb
XShhdXRvJiBtZXRob2QpIHsKKyAgICAgICAgcmV0dXJuICFbbWV0aG9kIGlzRXF1YWxUb1N0cmlu
ZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdOworICAgIH0pOwor
ICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworfTsKKworVEVTVChNdWx0aXBsZUNsaWVudENlcnRp
ZmljYXRlQ29ubmVjdGlvbnMsIEJhc2ljKQoreworICAgIGF1dG8gc2VydmVyID0gY2xpZW50Q2Vy
dFNlcnZlcigpOworCisgICAgVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+IG1ldGhvZHM7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
Y2hhbGxlbmdlSGFuZGxlcihtZXRob2RzKS5nZXQoKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAg
RVhQRUNUX0VRKGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIDF1KTsKK30KKwor
VEVTVChNdWx0aXBsZUNsaWVudENlcnRpZmljYXRlQ29ubmVjdGlvbnMsIFJlZGlyZWN0KQorewor
ICAgIGF1dG8gc2VydmVyID0gY2xpZW50Q2VydFNlcnZlcigpOworCisgICAgVmVjdG9yPFJldGFp
blB0cjxOU1N0cmluZz4+IG1ldGhvZHM7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gY2hhbGxlbmdlSGFuZGxlcihtZXRob2RzKS5nZXQo
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC9yZWRpcmVjdFRvRXJyb3IiLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICBbZGVsZWdhdGUgd2Fp
dEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9FUShjb3VudENs
aWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCAxdSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2Rz
KSwgMXUpOworfQorCitURVNUKE11bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0aW9ucywg
RmFpbHVyZSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNsaWVudENlcnRTZXJ2ZXIoKTsKKworICAg
IFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRob2RzOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdl
dCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZUhhbmRsZXIo
bWV0aG9kcykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvZXJyb3IiLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgIHNpemVfdCBjZXJ0Q2hh
bGxlbmdlc0FmdGVySW5pdGlhbEZhaWx1cmUgPSBjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1l
dGhvZHMpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0VRKGNv
dW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIGNlcnRDaGFsbGVuZ2VzQWZ0ZXJJbml0
aWFsRmFpbHVyZSArIDEpOworfQorCisjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShTU0wpCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYwMTkw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSFRUUFNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IEhUVFBSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0
dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMgfTsKLSAgICBIVFRQU2VydmVyKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wg
PSBQcm90b2NvbDo6SHR0cCk7CisgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0
dHAsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBz
ZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPiYmID0gbnVsbHB0cik7CiAgICAgdWludDE2
X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OwogICAg
IHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFJlcXVlc3RzOyB9
CkBAIC01NSwxNSArNTUsMTkgQEAgcHJpdmF0ZToKIH07CiAKIHN0cnVjdCBIVFRQU2VydmVyOjpI
VFRQUmVzcG9uc2UgewotICAgIEhUVFBSZXNwb25zZShTdHJpbmcmJiBib2R5KQotICAgICAgICA6
IGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisgICAgZW51bSBjbGFzcyBUZXJtaW5hdGVDb25uZWN0
aW9uIHsgTm8sIFllcyB9OworICAgIAorICAgIEhUVFBSZXNwb25zZShjb25zdCBTdHJpbmcmIGJv
ZHkpCisgICAgICAgIDogYm9keShib2R5KSB7IH0KICAgICBIVFRQUmVzcG9uc2UoSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkpCiAgICAgICAgIDog
aGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmllbGRzKSkKICAgICAgICAgLCBib2R5KFdURk1v
dmUoYm9keSkpIHsgfQotICAgIEhUVFBSZXNwb25zZSh1bnNpZ25lZCBzdGF0dXNDb2RlLCBIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYgYm9keSA9IHsgfSkK
KyAgICBIVFRQUmVzcG9uc2UodW5zaWduZWQgc3RhdHVzQ29kZSwgSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mJiBoZWFkZXJGaWVsZHMgPSB7IH0sIFN0cmluZyYmIGJvZHkgPSB7IH0pCiAgICAgICAg
IDogc3RhdHVzQ29kZShzdGF0dXNDb2RlKQogICAgICAgICAsIGhlYWRlckZpZWxkcyhXVEZNb3Zl
KGhlYWRlckZpZWxkcykpCiAgICAgICAgICwgYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KKyAgICBI
VFRQUmVzcG9uc2UoVGVybWluYXRlQ29ubmVjdGlvbiB0ZXJtaW5hdGVDb25uZWN0aW9uKQorICAg
ICAgICA6IHRlcm1pbmF0ZUNvbm5lY3Rpb24odGVybWluYXRlQ29ubmVjdGlvbikgeyB9CiAKICAg
ICBIVFRQUmVzcG9uc2UoY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OwogICAgIEhUVFBS
ZXNwb25zZShIVFRQUmVzcG9uc2UmJikgPSBkZWZhdWx0OwpAQCAtNzQsNiArNzgsNyBAQCBzdHJ1
Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKICAgICB1bnNpZ25lZCBzdGF0dXNDb2RlIHsg
MjAwIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaGVhZGVyRmllbGRzOwogICAgIFN0
cmluZyBib2R5OworICAgIFRlcm1pbmF0ZUNvbm5lY3Rpb24gdGVybWluYXRlQ29ubmVjdGlvbiB7
IFRlcm1pbmF0ZUNvbm5lY3Rpb246Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZp
c2lvbiAyNjAxOTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRB
UEkgewogCi1IVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6
OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29s
KQorSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWly
PFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90b2NvbCwgRnVu
Y3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90
b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+JiYgdmVyaWZ5KQogICAgIDogbV9wcm90b2NvbChwcm90
b2NvbCkKICAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlz
dDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAg
ICAgICAgIEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKQEAg
LTQ2LDE5ICs0NiwyMyBAQCAgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQogICAgICAgICByZXR1
cm4gbWFwOwogICAgIH0ocmVzcG9uc2VzKSkKIHsKLSAgICBhdXRvIGNvbmZpZ3VyZVRMUyA9IHBy
b3RvY29sID09IFByb3RvY29sOjpIdHRwID8gTldfUEFSQU1FVEVSU19ESVNBQkxFX1BST1RPQ09M
IDogXihud19wcm90b2NvbF9vcHRpb25zX3QgcHJvdG9jb2xPcHRpb25zKSB7CisgICAgYXV0byBj
b25maWd1cmVUTFMgPSBwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cCA/IE5XX1BBUkFNRVRFUlNf
RElTQUJMRV9QUk9UT0NPTCA6IG1ha2VCbG9ja1B0cihbcHJvdG9jb2wsIHZlcmlmeSA9IFdURk1v
dmUodmVyaWZ5KV0gKG53X3Byb3RvY29sX29wdGlvbnNfdCBwcm90b2NvbE9wdGlvbnMpIG11dGFi
bGUgewogI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgYXV0byBvcHRp
b25zID0gYWRvcHROUyhud190bHNfY29weV9zZWNfcHJvdG9jb2xfb3B0aW9ucyhwcm90b2NvbE9w
dGlvbnMpKTsKICAgICAgICAgYXV0byBpZGVudGl0eSA9IGFkb3B0TlMoc2VjX2lkZW50aXR5X2Ny
ZWF0ZSh0ZXN0SWRlbnRpdHkoKS5nZXQoKSkpOwogICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9u
c19zZXRfbG9jYWxfaWRlbnRpdHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkpOwogICAg
ICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykKICAgICAg
ICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3ZlcnNpb24o
b3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyAgICAgICAgaWYg
KHZlcmlmeSkgeworICAgICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X3BlZXJfYXV0
aGVudGljYXRpb25fcmVxdWlyZWQob3B0aW9ucy5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBz
ZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfdmVyaWZ5X2Jsb2NrKG9wdGlvbnMuZ2V0KCksIG1ha2VC
bG9ja1B0cihXVEZNb3ZlKHZlcmlmeSkpLmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
KTsKKyAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHByb3RvY29sT3B0aW9u
cyk7Ci0gICAgICAgIEFTU0VSVChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5
VExTKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwcm90b2NvbCwgcHJvdG9jb2wgIT0gUHJvdG9j
b2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CiAjZW5kaWYKLSAgICB9OwotICAgIGF1dG8gcGFyYW1l
dGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3RjcChjb25maWd1cmVU
TFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CisgICAgfSk7CisgICAg
YXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNw
KGNvbmZpZ3VyZVRMUy5nZXQoKSwgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04p
KTsKICAgICBtX2xpc3RlbmVyID0gYWRvcHROUyhud19saXN0ZW5lcl9jcmVhdGUocGFyYW1ldGVy
cy5nZXQoKSkpOwogICAgIG53X2xpc3RlbmVyX3NldF9xdWV1ZShtX2xpc3RlbmVyLmdldCgpLCBk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpKTsKICAgICBud19saXN0ZW5lcl9zZXRfbmV3X2Nvbm5l
Y3Rpb25faGFuZGxlcihtX2xpc3RlbmVyLmdldCgpLCBeKG53X2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uKSB7CkBAIC04Myw2ICs4Nyw4IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25l
ZCBzdGF0dXMKICAgICAgICAgcmV0dXJuICJPSyJfczsKICAgICBjYXNlIDMwMToKICAgICAgICAg
cmV0dXJuICJNb3ZlZCBQZXJtYW5lbnRseSJfczsKKyAgICBjYXNlIDQwNDoKKyAgICAgICAgcmV0
dXJuICJOb3QgRm91bmQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiB7IH07CkBAIC0xMjEsNiArMTI3LDEwIEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVzcG9u
ZFRvUmVxdWVzdHMobndfY28KIAogICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IHNl
bmRSZXNwb25zZSA9IFt0aGlzLCBjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24pLCBj
b250ZXh0ID0gcmV0YWluUHRyKGNvbnRleHQpLCBwYXRoID0gV1RGTW92ZShwYXRoKV0gewogICAg
ICAgICAgICAgYXV0byByZXNwb25zZSA9IG1fcmVxdWVzdFJlc3BvbnNlTWFwLmdldChwYXRoKTsK
KyAgICAgICAgICAgIGlmIChyZXNwb25zZS50ZXJtaW5hdGVDb25uZWN0aW9uID09IEhUVFBSZXNw
b25zZTo6VGVybWluYXRlQ29ubmVjdGlvbjo6WWVzKSB7CisgICAgICAgICAgICAgICAgbndfY29u
bmVjdGlvbl9jYW5jZWwoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXNwb25zZUJ1aWxk
ZXI7CiAgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAiKTsKICAg
ICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2Uuc3RhdHVzQ29k
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396787</attachid>
            <date>2020-04-17 13:08:22 -0700</date>
            <delta_ts>2020-04-17 13:59:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417130821.patch</filename>
            <type>text/plain</type>
            <size>20287</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE2
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
U3dpdGNoIHVudXNlZCBJT0tpdCBjbGFzc2VzIGZyb20gYWxsb3ctd2l0aC1yZXBvcnQgdG8gZGVu
eS13aXRoLXJlcG9ydApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MDE5MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ7IH0KICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb247IH0KICAgICAKKyAgICB2b2lkIGNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVk
Rm9ySG9zdChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5TVVJMQ3JlZGVu
dGlhbCAqLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpOworICAgIHZvaWQgdGFz
a1JlY2VpdmVkQnl0ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsK
KyAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3Jl
ZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE0Niw2ICsxNTEsMTQgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGJvb2wgbV9pc0luQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJldmVudHNTeXN0ZW1I
VFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CisKKyAgICBzdHJ1Y3QgU3VnZ2VzdGVk
Q2xpZW50Q2VydGlmaWNhdGUgeworICAgICAgICBTdHJpbmcgaG9zdDsKKyAgICAgICAgdWludDE2
X3QgcG9ydCB7IDAgfTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVu
dGlhbDsKKyAgICB9OworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyLCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZT4gbV9zdWdnZXN0ZWRDbGllbnRDZXJ0
aWZpY2F0ZXM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4sIFJldGFp
blB0cjxOU1VSTENyZWRlbnRpYWw+PiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDE5MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw5IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKSB7CiAgICAgICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNr
XSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza1JlY2VpdmVkQnl0ZXModGFza0lkZW50
aWZpZXIpOworCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
Q29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9uKCkpIHsKQEAgLTY5Miw2ICs2
OTUsMjAgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pIHsKKyAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDE2X3Q+IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChhdXRvKiBjcmVkZW50aWFsID0gc2Vz
c2lvbkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0KSkKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgIHNlc3Npb25Db2NvYS0+Y29u
dGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNr
XSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwg
a2V5LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgdGFza0lk
ZW50aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUg
eworICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwgPSBjcmVkZW50aWFs
Lm5zQ3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCAmJiBuc0Ny
ZWRlbnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAgICAgICAgICAgICB3ZWFrU2Vzc2lv
bkNvY29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QodGFza0lkZW50aWZpZXIs
IG5zQ3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25kKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bv
c2l0aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlm
aWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcyNSwxMSBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vycm9yIGNvZGVdIHVzZXJJbmZvOm5l
d1VzZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3Nl
bGYgZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBb
c2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2Nv
YSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2Nv
YS0+dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgbmV0d29ya0RhdGFU
YXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICB9IGVsc2UgaWYgKGVy
cm9yKSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbldyYXBwZXItPmRvd25sb2FkTWFw
LnRha2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAsNiArODU5LDkgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtz
ZWxmIHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2Et
PnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBOZWdvdGlhdGVk
TGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsK
ICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tN
ZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0OwpAQCAtMTAwNSw2ICsxMDI3LDM1
IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWcKICAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0
aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlm
aWVyIHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIGhv
c3QsIHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMu
c2V0KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUgeyBob3N0LCBwb3J0LCBjcmVk
ZW50aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tSZWNlaXZlZEJ5
dGVzKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0eSgp
KSkgeworICAgICAgICBhdXRvIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlID0gbV9zdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpwYWly
PFN0cmluZywgdWludDE2X3Q+IGtleSB7IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLmhvc3Qs
IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLnBvcnQgfTsKKyAgICAgICAgaWYgKHN1Z2dlc3Rl
ZENsaWVudENlcnRpZmljYXRlLmNyZWRlbnRpYWwgJiYgZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xp
ZW50Q2VydGlmaWNhdGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICAgICAgbV9zdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRl
LmNyZWRlbnRpYWwpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNr
RmFpbGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0
eSgpKSkKKyAgICAgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlm
aWVyKTsKK30KKworTlNVUkxDcmVkZW50aWFsICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgdWludDE2X3Qg
cG9ydCkgY29uc3QKK3sKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4ga2V5IHsgaG9z
dCwgcG9ydCB9OworICAgIGlmICghZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNh
dGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBt
X3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMuZ2V0KGtleSkuZ2V0KCk7Cit9CisKIGNvbnN0
IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjAyMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uQ29jb2Egc2hvdWxkIHJlcXVlc3QgY2xpZW50IGNl
cnRpZmljYXRlIG9ubHkgb25jZSBwZXIgaG9zdC9wb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzQwNDQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjbGllbnRDZXJ0U2VydmVyV2l0aENlcnRWZXJpZmllcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQ
U2VydmVyKToKKwogMjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCAtX2ZvY3VzVGV4dElucHV0Q29udGV4dApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2Uu
bW0JKHJldmlzaW9uIDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KQEAgLTM4LDYgKzM5LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFcnJvclJl
Y292ZXJ5QXR0ZW1wdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9j
b2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMzk5LDYgKzQwMSwxMDEgQEAgVEVTVChXZWJLaXQsIEZh
c3RTZXJ2ZXJUcnVzdCkKICNlbmRpZgogfQogCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
Kworc3RhdGljIEhUVFBTZXJ2ZXIgY2xpZW50Q2VydFNlcnZlcigpCit7CisgICAgVmVjdG9yPExD
aGFyPiBjaGFycyg1MDAwMCwgJ2EnKTsKKyAgICBTdHJpbmcgbG9uZ1N0cmluZyhjaGFycy5kYXRh
KCksIGNoYXJzLnNpemUoKSk7CisgICAgcmV0dXJuIEhUVFBTZXJ2ZXIoeworICAgICAgICB7ICIv
IiwgeyAiPGh0bWw+PGltZyBzcmM9JzEucG5nJy8+PGltZyBzcmM9JzIucG5nJy8+PGltZyBzcmM9
JzMucG5nJy8+PGltZyBzcmM9JzQucG5nJy8+PGltZyBzcmM9JzUucG5nJy8+PGltZyBzcmM9JzYu
cG5nJy8+PC9odG1sPiIgfSB9LAorICAgICAgICB7ICIvMS5wbmciLCB7IGxvbmdTdHJpbmcgfSB9
LAorICAgICAgICB7ICIvMi5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvMy5w
bmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvNC5wbmciLCB7IGxvbmdTdHJpbmcg
fSB9LAorICAgICAgICB7ICIvNS5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIv
Ni5wbmciLCB7IGxvbmdTdHJpbmcgfSB9LAorICAgICAgICB7ICIvcmVkaXJlY3RUb0Vycm9yIiwg
eyAzMDEsIHt7ICJMb2NhdGlvbiIsICIvZXJyb3IiIH19IH0gfSwKKyAgICAgICAgeyAiL2Vycm9y
IiwgeyBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U6OlRlcm1pbmF0ZUNvbm5lY3Rpb246OlllcyB9
IH0sCisgICAgfSwgSFRUUFNlcnZlcjo6UHJvdG9jb2w6Okh0dHBzLCBbXSAoYXV0bywgYXV0bywg
YXV0byBjZXJ0aWZpY2F0ZUFsbG93ZWQpIHsKKyAgICAgICAgY2VydGlmaWNhdGVBbGxvd2VkKHRy
dWUpOworICAgIH0pOworfQorCitzdGF0aWMgQmxvY2tQdHI8dm9pZChXS1dlYlZpZXcgKiwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hh
bGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSk+IGNoYWxsZW5nZUhhbmRsZXIo
VmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+JiB2ZWN0b3IpCit7CisgICAgcmV0dXJuIG1ha2VC
bG9ja1B0cihbJl0gKFdLV2ViVmlldyAqd2ViVmlldywgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgIE5T
U3RyaW5nICptZXRob2QgPSBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9u
TWV0aG9kOworICAgICAgICB2ZWN0b3IuYXBwZW5kKG1ldGhvZCk7CisgICAgICAgIGlmIChbbWV0
aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlm
aWNhdGVdKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsV2l0aElkZW50aXR5KCkuZ2V0
KCkpOworICAgICAgICBpZiAoW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNh
dGlvbk1ldGhvZFNlcnZlclRydXN0XSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KS5nZXQoKTsKK30K
Kworc3RhdGljIHNpemVfdCBjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKFZlY3RvcjxSZXRhaW5Q
dHI8TlNTdHJpbmc+PiYgdmVjdG9yKQoreworICAgIHZlY3Rvci5yZW1vdmVBbGxNYXRjaGluZyhb
XShhdXRvJiBtZXRob2QpIHsKKyAgICAgICAgcmV0dXJuICFbbWV0aG9kIGlzRXF1YWxUb1N0cmlu
ZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdOworICAgIH0pOwor
ICAgIHJldHVybiB2ZWN0b3Iuc2l6ZSgpOworfTsKKworVEVTVChNdWx0aXBsZUNsaWVudENlcnRp
ZmljYXRlQ29ubmVjdGlvbnMsIEJhc2ljKQoreworICAgIGF1dG8gc2VydmVyID0gY2xpZW50Q2Vy
dFNlcnZlcigpOworCisgICAgVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+IG1ldGhvZHM7Cisg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
Y2hhbGxlbmdlSGFuZGxlcihtZXRob2RzKS5nZXQoKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1
ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAg
RVhQRUNUX0VRKGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIDF1KTsKK30KKwor
VEVTVChNdWx0aXBsZUNsaWVudENlcnRpZmljYXRlQ29ubmVjdGlvbnMsIFJlZGlyZWN0KQorewor
ICAgIGF1dG8gc2VydmVyID0gY2xpZW50Q2VydFNlcnZlcigpOworCisgICAgVmVjdG9yPFJldGFp
blB0cjxOU1N0cmluZz4+IG1ldGhvZHM7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gY2hhbGxlbmdlSGFuZGxlcihtZXRob2RzKS5nZXQo
KTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBb
d2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC9yZWRpcmVjdFRvRXJyb3IiLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICBbZGVsZWdhdGUgd2Fp
dEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9FUShjb3VudENs
aWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCAxdSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZp
Z2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2Rz
KSwgMXUpOworfQorCitURVNUKE11bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0aW9ucywg
RmFpbHVyZSkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNsaWVudENlcnRTZXJ2ZXIoKTsKKworICAg
IFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRob2RzOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdl
dCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZUhhbmRsZXIo
bWV0aG9kcykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcg
bmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgp
XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6
Ly8xMjcuMC4wLjE6JWQvZXJyb3IiLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgIHNpemVfdCBjZXJ0Q2hh
bGxlbmdlc0FmdGVySW5pdGlhbEZhaWx1cmUgPSBjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1l
dGhvZHMpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAg
IFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0VRKGNv
dW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIGNlcnRDaGFsbGVuZ2VzQWZ0ZXJJbml0
aWFsRmFpbHVyZSArIDEpOworfQorCisjZW5kaWYgLy8gSEFWRShORVRXT1JLX0ZSQU1FV09SSykK
KwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gSEFWRShTU0wpCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkocmV2aXNpb24gMjYwMTkw
KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xhc3MgSFRUUFNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3Ry
dWN0IEhUVFBSZXNwb25zZTsKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7IEh0
dHAsIEh0dHBzLCBIdHRwc1dpdGhMZWdhY3lUTFMgfTsKLSAgICBIVFRQU2VydmVyKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wg
PSBQcm90b2NvbDo6SHR0cCk7CisgICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0
dHAsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBz
ZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPiYmID0gbnVsbHB0cik7CiAgICAgdWludDE2
X3QgcG9ydCgpIGNvbnN0OwogICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCgpIGNvbnN0OwogICAg
IHNpemVfdCB0b3RhbFJlcXVlc3RzKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFJlcXVlc3RzOyB9
CkBAIC01MCwyMCArNTAsMjUgQEAgcHJpdmF0ZToKICAgICAKICAgICBSZXRhaW5QdHI8bndfbGlz
dGVuZXJfdD4gbV9saXN0ZW5lcjsKICAgICBjb25zdCBQcm90b2NvbCBtX3Byb3RvY29sOworICAg
IGNvbnN0IEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90
LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPiBtX2NlcnRWZXJpZmllcjsKICAgICBj
b25zdCBIYXNoTWFwPFN0cmluZywgSFRUUFJlc3BvbnNlPiBtX3JlcXVlc3RSZXNwb25zZU1hcDsK
ICAgICBzaXplX3QgbV90b3RhbFJlcXVlc3RzIHsgMCB9OwogfTsKIAogc3RydWN0IEhUVFBTZXJ2
ZXI6OkhUVFBSZXNwb25zZSB7Ci0gICAgSFRUUFJlc3BvbnNlKFN0cmluZyYmIGJvZHkpCi0gICAg
ICAgIDogYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KKyAgICBlbnVtIGNsYXNzIFRlcm1pbmF0ZUNv
bm5lY3Rpb24geyBObywgWWVzIH07CisgICAgCisgICAgSFRUUFJlc3BvbnNlKGNvbnN0IFN0cmlu
ZyYgYm9keSkKKyAgICAgICAgOiBib2R5KGJvZHkpIHsgfQogICAgIEhUVFBSZXNwb25zZShIYXNo
TWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYgYm9keSkKICAgICAg
ICAgOiBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJGaWVsZHMpKQogICAgICAgICAsIGJvZHko
V1RGTW92ZShib2R5KSkgeyB9Ci0gICAgSFRUUFJlc3BvbnNlKHVuc2lnbmVkIHN0YXR1c0NvZGUs
IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVhZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5ID0g
eyB9KQorICAgIEhUVFBSZXNwb25zZSh1bnNpZ25lZCBzdGF0dXNDb2RlLCBIYXNoTWFwPFN0cmlu
ZywgU3RyaW5nPiYmIGhlYWRlckZpZWxkcyA9IHsgfSwgU3RyaW5nJiYgYm9keSA9IHsgfSkKICAg
ICAgICAgOiBzdGF0dXNDb2RlKHN0YXR1c0NvZGUpCiAgICAgICAgICwgaGVhZGVyRmllbGRzKFdU
Rk1vdmUoaGVhZGVyRmllbGRzKSkKICAgICAgICAgLCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQor
ICAgIEhUVFBSZXNwb25zZShUZXJtaW5hdGVDb25uZWN0aW9uIHRlcm1pbmF0ZUNvbm5lY3Rpb24p
CisgICAgICAgIDogdGVybWluYXRlQ29ubmVjdGlvbih0ZXJtaW5hdGVDb25uZWN0aW9uKSB7IH0K
IAogICAgIEhUVFBSZXNwb25zZShjb25zdCBIVFRQUmVzcG9uc2UmKSA9IGRlZmF1bHQ7CiAgICAg
SFRUUFJlc3BvbnNlKEhUVFBSZXNwb25zZSYmKSA9IGRlZmF1bHQ7CkBAIC03NCw2ICs3OSw3IEBA
IHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewogICAgIHVuc2lnbmVkIHN0YXR1c0Nv
ZGUgeyAyMDAgfTsKICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBoZWFkZXJGaWVsZHM7CiAg
ICAgU3RyaW5nIGJvZHk7CisgICAgVGVybWluYXRlQ29ubmVjdGlvbiB0ZXJtaW5hdGVDb25uZWN0
aW9uIHsgVGVybWluYXRlQ29ubmVjdGlvbjo6Tm8gfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0J
KHJldmlzaW9uIDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOSBAQAogCiBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSSB7CiAKLUhUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJv
dG9jb2wpCitIVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6
OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29s
LCBGdW5jdGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1c3RfdCwgc2Vj
X3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90KT4mJiB2ZXJpZnkpCiAgICAgOiBtX3Byb3RvY29s
KHByb3RvY29sKQorICAgICwgbV9jZXJ0VmVyaWZpZXIoV1RGTW92ZSh2ZXJpZnkpKQogICAgICwg
bV9yZXF1ZXN0UmVzcG9uc2VNYXAoW10oc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxT
dHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4+IGxpc3QpIHsKICAgICAgICAgSGFzaE1h
cDxTdHJpbmcsIEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZT4gbWFwOwogICAgICAgICBmb3IgKGF1
dG8mIHBhaXIgOiBsaXN0KQpAQCAtNTMsOSArNTQsMTUgQEAgICAgIDogbV9wcm90b2NvbChwcm90
b2NvbCkKICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X2xvY2FsX2lkZW50aXR5KG9w
dGlvbnMuZ2V0KCksIGlkZW50aXR5LmdldCgpKTsKICAgICAgICAgaWYgKHByb3RvY29sID09IFBy
b3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpCiAgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfbWF4X3Rsc19wcm90b2NvbF92ZXJzaW9uKG9wdGlvbnMuZ2V0KCksIHRsc19wcm90
b2NvbF92ZXJzaW9uX1RMU3YxMCk7CisgICAgICAgIGlmIChtX2NlcnRWZXJpZmllcikgeworICAg
ICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X3BlZXJfYXV0aGVudGljYXRpb25fcmVx
dWlyZWQob3B0aW9ucy5nZXQoKSwgdHJ1ZSk7CisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfdmVyaWZ5X2Jsb2NrKG9wdGlvbnMuZ2V0KCksIF4oc2VjX3Byb3RvY29sX21ldGFk
YXRhX3QgbWV0YWRhdGEsIHNlY190cnVzdF90IHRydXN0LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2Nv
bXBsZXRlX3QgY29tcGxldGlvbikgeworICAgICAgICAgICAgICAgIG1fY2VydFZlcmlmaWVyKG1l
dGFkYXRhLCB0cnVzdCwgY29tcGxldGlvbik7CisgICAgICAgICAgICB9LCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpKTsKKyAgICAgICAgfQogI2Vsc2UKICAgICAgICAgVU5VU0VEX1BBUkFNKHBy
b3RvY29sT3B0aW9ucyk7Ci0gICAgICAgIEFTU0VSVChwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0
cHNXaXRoTGVnYWN5VExTKTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChwcm90b2NvbCwgcHJvdG9j
b2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CiAjZW5kaWYKICAgICB9OwogICAg
IGF1dG8gcGFyYW1ldGVycyA9IGFkb3B0TlMobndfcGFyYW1ldGVyc19jcmVhdGVfc2VjdXJlX3Rj
cChjb25maWd1cmVUTFMsIE5XX1BBUkFNRVRFUlNfREVGQVVMVF9DT05GSUdVUkFUSU9OKSk7CkBA
IC04Myw2ICs5MCw4IEBAIHN0YXRpYyBTdHJpbmcgc3RhdHVzVGV4dCh1bnNpZ25lZCBzdGF0dXMK
ICAgICAgICAgcmV0dXJuICJPSyJfczsKICAgICBjYXNlIDMwMToKICAgICAgICAgcmV0dXJuICJN
b3ZlZCBQZXJtYW5lbnRseSJfczsKKyAgICBjYXNlIDQwNDoKKyAgICAgICAgcmV0dXJuICJOb3Qg
Rm91bmQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB7
IH07CkBAIC0xMjEsNiArMTMwLDEwIEBAIHZvaWQgSFRUUFNlcnZlcjo6cmVzcG9uZFRvUmVxdWVz
dHMobndfY28KIAogICAgICAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+IHNlbmRSZXNwb25z
ZSA9IFt0aGlzLCBjb25uZWN0aW9uID0gcmV0YWluUHRyKGNvbm5lY3Rpb24pLCBjb250ZXh0ID0g
cmV0YWluUHRyKGNvbnRleHQpLCBwYXRoID0gV1RGTW92ZShwYXRoKV0gewogICAgICAgICAgICAg
YXV0byByZXNwb25zZSA9IG1fcmVxdWVzdFJlc3BvbnNlTWFwLmdldChwYXRoKTsKKyAgICAgICAg
ICAgIGlmIChyZXNwb25zZS50ZXJtaW5hdGVDb25uZWN0aW9uID09IEhUVFBSZXNwb25zZTo6VGVy
bWluYXRlQ29ubmVjdGlvbjo6WWVzKSB7CisgICAgICAgICAgICAgICAgbndfY29ubmVjdGlvbl9j
YW5jZWwoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXNwb25zZUJ1aWxkZXI7CiAgICAg
ICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kKCJIVFRQLzEuMSAiKTsKICAgICAgICAgICAg
IHJlc3BvbnNlQnVpbGRlci5hcHBlbmROdW1iZXIocmVzcG9uc2Uuc3RhdHVzQ29kZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396794</attachid>
            <date>2020-04-17 13:59:05 -0700</date>
            <delta_ts>2020-04-17 15:32:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417135904.patch</filename>
            <type>text/plain</type>
            <size>20408</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyMjQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE2
ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFttYWNPU10g
U3dpdGNoIHVudXNlZCBJT0tpdCBjbGFzc2VzIGZyb20gYWxsb3ctd2l0aC1yZXBvcnQgdG8gZGVu
eS13aXRoLXJlcG9ydApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI2MDE5MCkKKysr
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDAsNiArMTAwLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlz
SW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzSW5BcHBCcm93
c2VyUHJpdmFjeUVuYWJsZWQ7IH0KICAgICBib29sIHByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3ByZXZlbnRzU3lzdGVtSFRUUFByb3h5QXV0
aGVudGljYXRpb247IH0KICAgICAKKyAgICB2b2lkIGNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVk
Rm9ySG9zdChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5TVVJMQ3JlZGVu
dGlhbCAqLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpOworICAgIHZvaWQgdGFz
a1JlY2VpdmVkQnl0ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyKTsK
KyAgICBOU1VSTENyZWRlbnRpYWwgKnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3Qo
Y29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdDsKKwogcHJpdmF0ZToKICAg
ICB2b2lkIGludmFsaWRhdGVBbmRDYW5jZWwoKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQ3Jl
ZGVudGlhbHMoKSBvdmVycmlkZTsKQEAgLTE0Niw2ICsxNTEsMTQgQEAgcHJpdmF0ZToKICAgICBT
dHJpbmcgbV9kYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogICAgIGJvb2wgbV9pc0luQXBwQnJv
d3NlclByaXZhY3lFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fcHJldmVudHNTeXN0ZW1I
VFRQUHJveHlBdXRoZW50aWNhdGlvbiB7IGZhbHNlIH07CisKKyAgICBzdHJ1Y3QgU3VnZ2VzdGVk
Q2xpZW50Q2VydGlmaWNhdGUgeworICAgICAgICBTdHJpbmcgaG9zdDsKKyAgICAgICAgdWludDE2
X3QgcG9ydCB7IDAgfTsKKyAgICAgICAgUmV0YWluUHRyPE5TVVJMQ3JlZGVudGlhbD4gY3JlZGVu
dGlhbDsKKyAgICB9OworICAgIEhhc2hNYXA8TmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyLCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZT4gbV9zdWdnZXN0ZWRDbGllbnRDZXJ0
aWZpY2F0ZXM7CisgICAgSGFzaE1hcDxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4sIFJldGFp
blB0cjxOU1VSTENyZWRlbnRpYWw+PiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHJldmlz
aW9uIDI2MDE5MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYgKzUyOSw5IEBAIC0gKHZv
aWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBpZiAoYXV0byogbmV0d29y
a0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKSB7CiAgICAgICAgIGF1dG8gY29t
cGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9uSGFuZGxlcik7CiAKKyAg
ICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNr
XSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza1JlY2VpdmVkQnl0ZXModGFza0lkZW50
aWZpZXIpOworCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNUUyA9IGZhbHNlOwogI2lmIEVO
QUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlmIChhdXRvKiBzZXNzaW9u
Q29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9uKCkpIHsKQEAgLTY5Miw2ICs2
OTUsMjAgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogI2VuZGlm
CiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoW2NoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
YXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25N
ZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pIHsKKyAgICAgICAgc3RkOjpwYWlyPFN0cmluZywgdWlu
dDE2X3Q+IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChhdXRvKiBjcmVkZW50aWFsID0gc2Vz
c2lvbkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0KSkKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgIHNlc3Npb25Db2NvYS0+Y29u
dGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVn
b3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNr
XSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwg
a2V5LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgdGFza0lk
ZW50aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlz
cG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUg
eworICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwgPSBjcmVkZW50aWFs
Lm5zQ3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCAmJiBuc0Ny
ZWRlbnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAgICAgICAgICAgICB3ZWFrU2Vzc2lv
bkNvY29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QodGFza0lkZW50aWZpZXIs
IG5zQ3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25kKTsKKyAgICAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bv
c2l0aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlm
aWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNy
ZWRlbnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnND
cmVkZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcyNSwxMSBAQCAtICh2b2lkKVVSTFNl
c3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGVycm9yID0gW05TRXJyb3IgZXJy
b3JXaXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vycm9yIGNvZGVdIHVzZXJJbmZvOm5l
d1VzZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3Nl
bGYgZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBb
c2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2Nv
YSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2Nv
YS0+dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgbmV0d29ya0RhdGFU
YXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3Jr
TG9hZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICB9IGVsc2UgaWYgKGVy
cm9yKSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbldyYXBwZXItPmRvd25sb2FkTWFw
LnRha2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAsNiArODU5LDkgQEAgLSAodm9pZClV
UkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtz
ZWxmIHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2Et
PnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBOZWdvdGlhdGVk
TGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsK
ICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRh
c2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tN
ZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0OwpAQCAtMTAwNSw2ICsxMDI3LDM1
IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWcKICAgICByZXR1cm4g
Y29uZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0
aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlm
aWVyIHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIGhv
c3QsIHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMu
c2V0KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUgeyBob3N0LCBwb3J0LCBjcmVk
ZW50aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tSZWNlaXZlZEJ5
dGVzKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQorewor
ICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0eSgp
KSkgeworICAgICAgICBhdXRvIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlID0gbV9zdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICAgICAgc3RkOjpwYWly
PFN0cmluZywgdWludDE2X3Q+IGtleSB7IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLmhvc3Qs
IHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLnBvcnQgfTsKKyAgICAgICAgaWYgKHN1Z2dlc3Rl
ZENsaWVudENlcnRpZmljYXRlLmNyZWRlbnRpYWwgJiYgZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xp
ZW50Q2VydGlmaWNhdGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICAgICAgbV9zdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRl
LmNyZWRlbnRpYWwpOworICAgIH0KK30KKwordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjp0YXNr
RmFpbGVkKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQor
eworICAgIGlmIChVTkxJS0VMWSghbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0
eSgpKSkKKyAgICAgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlm
aWVyKTsKK30KKworTlNVUkxDcmVkZW50aWFsICpOZXR3b3JrU2Vzc2lvbkNvY29hOjpzdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IFN0cmluZyYgaG9zdCwgdWludDE2X3Qg
cG9ydCkgY29uc3QKK3sKKyAgICBzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MTZfdD4ga2V5IHsgaG9z
dCwgcG9ydCB9OworICAgIGlmICghZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNh
dGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICByZXR1cm4gbmlsOworICAgIHJldHVybiBt
X3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMuZ2V0KGtleSkuZ2V0KCk7Cit9CisKIGNvbnN0
IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9ib3VuZEludGVyZmFjZUlkZW50aWZpZXI7CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NjAyMzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAyMC0wNC0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uQ29jb2Egc2hvdWxkIHJlcXVlc3QgY2xpZW50IGNl
cnRpZmljYXRlIG9ubHkgb25jZSBwZXIgaG9zdC9wb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzYwMzQwNDQ5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpjbGllbnRDZXJ0U2VydmVyV2l0aENlcnRWZXJpZmllcik6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2Nv
Y29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhU
VFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29h
L0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQ
U2VydmVyKToKKwogMjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIHVudXNlZCAtX2ZvY3VzVGV4dElucHV0Q29udGV4dApJbmRleDog
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2Uu
bW0JKHJldmlzaW9uIDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1w
b3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0
ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KQEAgLTM4LDYgKzM5LDcg
QEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFcnJvclJl
Y292ZXJ5QXR0ZW1wdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVD
b25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9Q
bGF0Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9j
b2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMzk5LDYgKzQwMSwxMDIgQEAgVEVTVChXZWJLaXQsIEZh
c3RTZXJ2ZXJUcnVzdCkKICNlbmRpZgogfQogCisvLyBGSVhNRTogRmluZCBvdXQgd2h5IHRoZXNl
IHRlc3RzIHRpbWUgb3V0IG9uIE1vamF2ZS4KKyNpZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAm
JiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAx
MDE1MDApCisKK3N0YXRpYyBIVFRQU2VydmVyIGNsaWVudENlcnRTZXJ2ZXIoKQoreworICAgIFZl
Y3RvcjxMQ2hhcj4gY2hhcnMoNTAwMDAsICdhJyk7CisgICAgU3RyaW5nIGxvbmdTdHJpbmcoY2hh
cnMuZGF0YSgpLCBjaGFycy5zaXplKCkpOworICAgIHJldHVybiBIVFRQU2VydmVyKHsKKyAgICAg
ICAgeyAiLyIsIHsgIjxodG1sPjxpbWcgc3JjPScxLnBuZycvPjxpbWcgc3JjPScyLnBuZycvPjxp
bWcgc3JjPSczLnBuZycvPjxpbWcgc3JjPSc0LnBuZycvPjxpbWcgc3JjPSc1LnBuZycvPjxpbWcg
c3JjPSc2LnBuZycvPjwvaHRtbD4iIH0gfSwKKyAgICAgICAgeyAiLzEucG5nIiwgeyBsb25nU3Ry
aW5nIH0gfSwKKyAgICAgICAgeyAiLzIucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAg
eyAiLzMucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzQucG5nIiwgeyBsb25n
U3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzUucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAg
ICAgeyAiLzYucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VG9F
cnJvciIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAiL2Vycm9yIiB9fSB9IH0sCisgICAgICAgIHsg
Ii9lcnJvciIsIHsgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlOjpUZXJtaW5hdGVDb25uZWN0aW9u
OjpZZXMgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwcywgW10gKGF1dG8s
IGF1dG8sIGF1dG8gY2VydGlmaWNhdGVBbGxvd2VkKSB7CisgICAgICAgIGNlcnRpZmljYXRlQWxs
b3dlZCh0cnVlKTsKKyAgICB9KTsKK30KKworc3RhdGljIEJsb2NrUHRyPHZvaWQoV0tXZWJWaWV3
ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpPiBjaGFsbGVuZ2VI
YW5kbGVyKFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJpbmc+PiYgdmVjdG9yKQoreworICAgIHJldHVy
biBtYWtlQmxvY2tQdHIoWyZdIChXS1dlYlZpZXcgKndlYlZpZXcsIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAg
ICAgICBOU1N0cmluZyAqbWV0aG9kID0gY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50
aWNhdGlvbk1ldGhvZDsKKyAgICAgICAgdmVjdG9yLmFwcGVuZChtZXRob2QpOworICAgICAgICBp
ZiAoW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZENsaWVu
dENlcnRpZmljYXRlXSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbFdpdGhJZGVudGl0
eSgpLmdldCgpKTsKKyAgICAgICAgaWYgKFttZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0
aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0pCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VS
TENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uu
c2VydmVyVHJ1c3RdKTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSkuZ2V0
KCk7Cit9CisKK3N0YXRpYyBzaXplX3QgY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhWZWN0b3I8
UmV0YWluUHRyPE5TU3RyaW5nPj4mIHZlY3RvcikKK3sKKyAgICB2ZWN0b3IucmVtb3ZlQWxsTWF0
Y2hpbmcoW10oYXV0byYgbWV0aG9kKSB7CisgICAgICAgIHJldHVybiAhW21ldGhvZCBpc0VxdWFs
VG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZENsaWVudENlcnRpZmljYXRlXTsKKyAg
ICB9KTsKKyAgICByZXR1cm4gdmVjdG9yLnNpemUoKTsKK307CisKK1RFU1QoTXVsdGlwbGVDbGll
bnRDZXJ0aWZpY2F0ZUNvbm5lY3Rpb25zLCBCYXNpYykKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNs
aWVudENlcnRTZXJ2ZXIoKTsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRo
b2RzOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
IG5ld10pOworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSA9IGNoYWxsZW5nZUhhbmRsZXIobWV0aG9kcykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlv
bkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2
ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25d
OworICAgIEVYUEVDVF9FUShjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCAxdSk7
Cit9CisKK1RFU1QoTXVsdGlwbGVDbGllbnRDZXJ0aWZpY2F0ZUNvbm5lY3Rpb25zLCBSZWRpcmVj
dCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNsaWVudENlcnRTZXJ2ZXIoKTsKKworICAgIFZlY3Rv
cjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRob2RzOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdldCgpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZUhhbmRsZXIobWV0aG9k
cykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcu
MC4wLjE6JWQvcmVkaXJlY3RUb0Vycm9yIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVn
YXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEo
Y291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2RzKSwgMXUpOworICAgIFt3ZWJWaWV3IGxv
YWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0VRKGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMo
bWV0aG9kcyksIDF1KTsKK30KKworVEVTVChNdWx0aXBsZUNsaWVudENlcnRpZmljYXRlQ29ubmVj
dGlvbnMsIEZhaWx1cmUpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBjbGllbnRDZXJ0U2VydmVyKCk7
CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5nPj4gbWV0aG9kczsKKyAgICBhdXRvIGRl
bGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBjaGFsbGVuZ2VI
YW5kbGVyKG1ldGhvZHMpLmdldCgpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tX
ZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkL2Vycm9yIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgW2Rl
bGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICBzaXplX3Qg
Y2VydENoYWxsZW5nZXNBZnRlckluaXRpYWxGYWlsdXJlID0gY291bnRDbGllbnRDZXJ0Q2hhbGxl
bmdlcyhtZXRob2RzKTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgp
XTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVD
VF9FUShjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCBjZXJ0Q2hhbGxlbmdlc0Fm
dGVySW5pdGlhbEZhaWx1cmUgKyAxKTsKK30KKworI2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFN
RVdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUo
U1NMKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9u
IDI2MDE5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgog
ICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7CiAgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4
X3QgeyBIdHRwLCBIdHRwcywgSHR0cHNXaXRoTGVnYWN5VExTIH07Ci0gICAgSFRUUFNlcnZlcihz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFBy
b3RvY29sID0gUHJvdG9jb2w6Okh0dHApOworICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXpl
cl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3Rv
Y29sOjpIdHRwLCBGdW5jdGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1
c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90KT4mJiA9IG51bGxwdHIpOwogICAg
IHVpbnQxNl90IHBvcnQoKSBjb25zdDsKICAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25z
dDsKICAgICBzaXplX3QgdG90YWxSZXF1ZXN0cygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxSZXF1
ZXN0czsgfQpAQCAtNTAsMjAgKzUwLDI1IEBAIHByaXZhdGU6CiAgICAgCiAgICAgUmV0YWluUHRy
PG53X2xpc3RlbmVyX3Q+IG1fbGlzdGVuZXI7CiAgICAgY29uc3QgUHJvdG9jb2wgbV9wcm90b2Nv
bDsKKyAgICBjb25zdCBGdW5jdGlvbjx2b2lkKHNlY19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNf
dHJ1c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90KT4gbV9jZXJ0VmVyaWZpZXI7
CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhUVFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9u
c2VNYXA7CiAgICAgc2l6ZV90IG1fdG90YWxSZXF1ZXN0cyB7IDAgfTsKIH07CiAKIHN0cnVjdCBI
VFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewotICAgIEhUVFBSZXNwb25zZShTdHJpbmcmJiBib2R5
KQotICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisgICAgZW51bSBjbGFzcyBUZXJt
aW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9OworICAgIAorICAgIEhUVFBSZXNwb25zZShjb25z
dCBTdHJpbmcmIGJvZHkpCisgICAgICAgIDogYm9keShib2R5KSB7IH0KICAgICBIVFRQUmVzcG9u
c2UoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkp
CiAgICAgICAgIDogaGVhZGVyRmllbGRzKFdURk1vdmUoaGVhZGVyRmllbGRzKSkKICAgICAgICAg
LCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQotICAgIEhUVFBSZXNwb25zZSh1bnNpZ25lZCBzdGF0
dXNDb2RlLCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYg
Ym9keSA9IHsgfSkKKyAgICBIVFRQUmVzcG9uc2UodW5zaWduZWQgc3RhdHVzQ29kZSwgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMgPSB7IH0sIFN0cmluZyYmIGJvZHkgPSB7
IH0pCiAgICAgICAgIDogc3RhdHVzQ29kZShzdGF0dXNDb2RlKQogICAgICAgICAsIGhlYWRlckZp
ZWxkcyhXVEZNb3ZlKGhlYWRlckZpZWxkcykpCiAgICAgICAgICwgYm9keShXVEZNb3ZlKGJvZHkp
KSB7IH0KKyAgICBIVFRQUmVzcG9uc2UoVGVybWluYXRlQ29ubmVjdGlvbiB0ZXJtaW5hdGVDb25u
ZWN0aW9uKQorICAgICAgICA6IHRlcm1pbmF0ZUNvbm5lY3Rpb24odGVybWluYXRlQ29ubmVjdGlv
bikgeyB9CiAKICAgICBIVFRQUmVzcG9uc2UoY29uc3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0
OwogICAgIEhUVFBSZXNwb25zZShIVFRQUmVzcG9uc2UmJikgPSBkZWZhdWx0OwpAQCAtNzQsNiAr
NzksNyBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKICAgICB1bnNpZ25lZCBz
dGF0dXNDb2RlIHsgMjAwIH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gaGVhZGVyRmll
bGRzOwogICAgIFN0cmluZyBib2R5OworICAgIFRlcm1pbmF0ZUNvbm5lY3Rpb24gdGVybWluYXRl
Q29ubmVjdGlvbiB7IFRlcm1pbmF0ZUNvbm5lY3Rpb246Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBT
ZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLm1tCShyZXZpc2lvbiAyNjAxOTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hU
VFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDkgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1IVFRQU2VydmVyOjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3Rv
Y29sIHByb3RvY29sKQorSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xp
c3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBw
cm90b2NvbCwgRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0
X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+JiYgdmVyaWZ5KQogICAgIDogbV9w
cm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fY2VydFZlcmlmaWVyKFdURk1vdmUodmVyaWZ5KSkK
ICAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtdKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6
OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+PiBsaXN0KSB7CiAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U+IG1hcDsKICAgICAgICAg
Zm9yIChhdXRvJiBwYWlyIDogbGlzdCkKQEAgLTUzLDkgKzU0LDE1IEBAICAgICA6IG1fcHJvdG9j
b2wocHJvdG9jb2wpCiAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9sb2NhbF9pZGVu
dGl0eShvcHRpb25zLmdldCgpLCBpZGVudGl0eS5nZXQoKSk7CiAgICAgICAgIGlmIChwcm90b2Nv
bCA9PSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKQogICAgICAgICAgICAgc2VjX3Byb3Rv
Y29sX29wdGlvbnNfc2V0X21heF90bHNfcHJvdG9jb2xfdmVyc2lvbihvcHRpb25zLmdldCgpLCB0
bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTApOworICAgICAgICBpZiAobV9jZXJ0VmVyaWZpZXIp
IHsKKyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9wZWVyX2F1dGhlbnRpY2F0
aW9uX3JlcXVpcmVkKG9wdGlvbnMuZ2V0KCksIHRydWUpOworICAgICAgICAgICAgc2VjX3Byb3Rv
Y29sX29wdGlvbnNfc2V0X3ZlcmlmeV9ibG9jayhvcHRpb25zLmdldCgpLCBeKHNlY19wcm90b2Nv
bF9tZXRhZGF0YV90IG1ldGFkYXRhLCBzZWNfdHJ1c3RfdCB0cnVzdCwgc2VjX3Byb3RvY29sX3Zl
cmlmeV9jb21wbGV0ZV90IGNvbXBsZXRpb24pIHsKKyAgICAgICAgICAgICAgICBtX2NlcnRWZXJp
ZmllcihtZXRhZGF0YSwgdHJ1c3QsIGNvbXBsZXRpb24pOworICAgICAgICAgICAgfSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAgIH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9Q
QVJBTShwcm90b2NvbE9wdGlvbnMpOwotICAgICAgICBBU1NFUlQocHJvdG9jb2wgIT0gUHJvdG9j
b2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisgICAgICAgIEFTU0VSVF9VTlVTRUQocHJvdG9jb2ws
IHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOwogI2VuZGlmCiAgICAg
fTsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9wdE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3Nl
Y3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJBTUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElP
TikpOwpAQCAtODMsNiArOTAsOCBAQCBzdGF0aWMgU3RyaW5nIHN0YXR1c1RleHQodW5zaWduZWQg
c3RhdHVzCiAgICAgICAgIHJldHVybiAiT0siX3M7CiAgICAgY2FzZSAzMDE6CiAgICAgICAgIHJl
dHVybiAiTW92ZWQgUGVybWFuZW50bHkiX3M7CisgICAgY2FzZSA0MDQ6CisgICAgICAgIHJldHVy
biAiTm90IEZvdW5kIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICBy
ZXR1cm4geyB9OwpAQCAtMTIxLDYgKzEzMCwxMCBAQCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRU
b1JlcXVlc3RzKG53X2NvCiAKICAgICAgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzZW5k
UmVzcG9uc2UgPSBbdGhpcywgY29ubmVjdGlvbiA9IHJldGFpblB0cihjb25uZWN0aW9uKSwgY29u
dGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwgcGF0aCA9IFdURk1vdmUocGF0aCldIHsKICAgICAg
ICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3JlcXVlc3RSZXNwb25zZU1hcC5nZXQocGF0aCk7Cisg
ICAgICAgICAgICBpZiAocmVzcG9uc2UudGVybWluYXRlQ29ubmVjdGlvbiA9PSBIVFRQUmVzcG9u
c2U6OlRlcm1pbmF0ZUNvbm5lY3Rpb246OlllcykgeworICAgICAgICAgICAgICAgIG53X2Nvbm5l
Y3Rpb25fY2FuY2VsKGNvbm5lY3Rpb24uZ2V0KCkpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFN0cmluZ0J1aWxkZXIgcmVzcG9uc2VCdWlsZGVy
OwogICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZCgiSFRUUC8xLjEgIik7CiAgICAg
ICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5kTnVtYmVyKHJlc3BvbnNlLnN0YXR1c0NvZGUp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396809</attachid>
            <date>2020-04-17 15:32:40 -0700</date>
            <delta_ts>2020-04-17 15:53:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417153240.patch</filename>
            <type>text/plain</type>
            <size>20378</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE3
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjIzNDEwNSk6IFtpT1NdIFdLQ29sb3JCdXR0b24gbGVha3MgYSBVSUNvbG9yCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjYwMjkwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MCw2ICsxMDAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDsgfQog
ICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsgfQogICAgIAor
ICAgIHZvaWQgY2xpZW50Q2VydGlmaWNhdGVTdWdnZXN0ZWRGb3JIb3N0KE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpUYXNrSWRlbnRpZmllciwgTlNVUkxDcmVkZW50aWFsICosIGNvbnN0IFN0cmluZyYg
aG9zdCwgdWludDE2X3QgcG9ydCk7CisgICAgdm9pZCB0YXNrUmVjZWl2ZWRCeXRlcyhOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIHZvaWQgdGFza0ZhaWxlZChOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIE5TVVJMQ3JlZGVudGlhbCAq
c3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIHVp
bnQxNl90IHBvcnQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENh
bmNlbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIG92ZXJyaWRlOwpA
QCAtMTQ2LDYgKzE1MSwxNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFDb25uZWN0aW9u
U2VydmljZVR5cGU7CiAgICAgYm9vbCBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9u
IHsgZmFsc2UgfTsKKworICAgIHN0cnVjdCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSB7Cisg
ICAgICAgIFN0cmluZyBob3N0OworICAgICAgICB1aW50MTZfdCBwb3J0IHsgMCB9OworICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsOworICAgIH07CisgICAgSGFz
aE1hcDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFN1Z2dlc3RlZENsaWVu
dENlcnRpZmljYXRlPiBtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlczsKKyAgICB1c2luZyBI
b3N0QW5kUG9ydCA9IHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQxNl90PgorICAgIEhhc2hNYXA8SG9z
dEFuZFBvcnQsIFJldGFpblB0cjxOU1VSTENyZWRlbnRpYWw+PiBtX3N1Y2Nlc3NmdWxDbGllbnRD
ZXJ0aWZpY2F0ZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EubW0JKHJldmlzaW9uIDI2MDI5MCkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTI5LDYg
KzUyOSw5IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICBp
ZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKSB7CiAg
ICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXJDb3B5ID0gQmxvY2tfY29weShjb21wbGV0aW9u
SGFuZGxlcik7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Np
b25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza1JlY2VpdmVk
Qnl0ZXModGFza0lkZW50aWZpZXIpOworCiAgICAgICAgIGJvb2wgc2hvdWxkSWdub3JlSFNUUyA9
IGZhbHNlOwogI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgICAgIGlm
IChhdXRvKiBzZXNzaW9uQ29jb2EgPSBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtTZXNzaW9uKCkp
IHsKQEAgLTY5Miw2ICs2OTUsMjAgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24g
KilzZXNzaQogI2VuZGlmCiAgICAgICAgIH0KICAgICB9CisKKyAgICBpZiAoW2NoYWxsZW5nZS5w
cm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJM
QXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pIHsKKyAgICAgICAgSG9zdEFu
ZFBvcnQga2V5IHsgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5ob3N0LCBjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLnBvcnQgfTsKKyAgICAgICAgaWYgKGF1dG8qIGNyZWRlbnRpYWwgPSBzZXNz
aW9uQ29jb2EtPnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY2hhbGxlbmdlLnBy
b3RlY3Rpb25TcGFjZS5ob3N0LCBjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnBvcnQpKQorICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VVc2VDcmVkZW50aWFsLCBjcmVkZW50aWFsKTsKKyAgICAgICAgc2Vzc2lvbkNvY29hLT5jb250
aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoKl9zZXNzaW9uV3JhcHBlciwgY2hhbGxlbmdlLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCB0YXNrSWRlbnRpZmllciwgW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2td
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCBr
ZXksIHdlYWtTZXNzaW9uQ29jb2EgPSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCB0YXNrSWRl
bnRpZmllcl0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBOU1VSTENyZWRlbnRpYWwgKm5zQ3JlZGVudGlhbCA9IGNyZWRlbnRpYWwu
bnNDcmVkZW50aWFsKCk7CisgICAgICAgICAgICBpZiAoZGlzcG9zaXRpb24gPT0gV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVkZW50aWFsICYmIG5zQ3Jl
ZGVudGlhbCAmJiB3ZWFrU2Vzc2lvbkNvY29hKQorICAgICAgICAgICAgICAgIHdlYWtTZXNzaW9u
Q29jb2EtPmNsaWVudENlcnRpZmljYXRlU3VnZ2VzdGVkRm9ySG9zdCh0YXNrSWRlbnRpZmllciwg
bnNDcmVkZW50aWFsLCBrZXkuZmlyc3QsIGtleS5zZWNvbmQpOworICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIodG9OU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24oZGlzcG9z
aXRpb24pLCBuc0NyZWRlbnRpYWwpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHNlc3Npb25Db2NvYS0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vz
c2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZp
ZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSk7CiAgICAgfSk7CkBAIC03MDgsOSArNzI1LDExIEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgZXJyb3IgPSBbTlNFcnJvciBlcnJv
cldpdGhEb21haW46W2Vycm9yIGRvbWFpbl0gY29kZTpbZXJyb3IgY29kZV0gdXNlckluZm86bmV3
VXNlckluZm9dOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2Vs
ZiBleGlzdGluZ1Rhc2s6dGFza10pCisgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtz
ZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgeworICAgICAgICBpZiAoYXV0byogc2Vzc2lvbkNvY29h
ID0gW3NlbGYgc2Vzc2lvbkZyb21UYXNrOnRhc2tdKQorICAgICAgICAgICAgc2Vzc2lvbkNvY29h
LT50YXNrRmFpbGVkKHRhc2sudGFza0lkZW50aWZpZXIpOwogICAgICAgICBuZXR3b3JrRGF0YVRh
c2stPmRpZENvbXBsZXRlV2l0aEVycm9yKGVycm9yLCBuZXR3b3JrRGF0YVRhc2stPm5ldHdvcmtM
b2FkTWV0cmljcygpKTsKLSAgICBlbHNlIGlmIChlcnJvcikgeworICAgIH0gZWxzZSBpZiAoZXJy
b3IpIHsKICAgICAgICAgaWYgKCFfc2Vzc2lvbldyYXBwZXIpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIGF1dG8gZG93bmxvYWRJRCA9IF9zZXNzaW9uV3JhcHBlci0+ZG93bmxvYWRNYXAu
dGFrZSh0YXNrLnRhc2tJZGVudGlmaWVyKTsKQEAgLTg0MCw2ICs4NTksOSBAQCAtICh2b2lkKVVS
TFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgaWYgKGF1dG8qIG5ldHdvcmtEYXRh
VGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazpkYXRhVGFza10pIHsKICAgICAgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKIAorICAgICAgICBpZiAoYXV0byogc2Vzc2lvbkNvY29hID0gW3Nl
bGYgc2Vzc2lvbkZyb21UYXNrOmRhdGFUYXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+
dGFza1JlY2VpdmVkQnl0ZXModGFza0lkZW50aWZpZXIpOworCiAgICAgICAgIE5lZ290aWF0ZWRM
ZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vOwog
I2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKICAgICAgICAgTlNVUkxTZXNzaW9uVGFz
a1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9IGRhdGFUYXNrLl9pbmNvbXBsZXRlVGFza01l
dHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7CkBAIC0xMDA1LDYgKzEwMjcsMzgg
QEAgc3RhdGljIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZpZwogICAgIHJldHVybiBj
b25maWd1cmF0aW9uOwogfQogCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRp
ZmljYXRlU3VnZ2VzdGVkRm9ySG9zdChOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZp
ZXIgdGFza0lELCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRpYWwsIGNvbnN0IFN0cmluZyYgaG9z
dCwgdWludDE2X3QgcG9ydCkKK3sKKyAgICBtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlcy5z
ZXQodGFza0lELCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSB7IGhvc3QsIHBvcnQsIGNyZWRl
bnRpYWwgfSk7Cit9CisKK3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6dGFza1JlY2VpdmVkQnl0
ZXMoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKExJS0VMWShtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlcy5pc0VtcHR5KCkpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlID0g
bV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMudGFrZShpZGVudGlmaWVyKTsKKyAgICBIb3N0
QW5kUG9ydCBrZXkgeyBzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZS5ob3N0LCBzdWdnZXN0ZWRD
bGllbnRDZXJ0aWZpY2F0ZS5wb3J0IH07CisgICAgaWYgKHN1Z2dlc3RlZENsaWVudENlcnRpZmlj
YXRlLmNyZWRlbnRpYWwgJiYgZGVjbHR5cGUobV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVz
KTo6aXNWYWxpZEtleShrZXkpKQorICAgICAgICBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0
ZXMuYWRkKGtleSwgc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUuY3JlZGVudGlhbCk7Cit9CisK
K3ZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6dGFza0ZhaWxlZChOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoTElLRUxZKG1fc3VnZ2Vz
dGVkQ2xpZW50Q2VydGlmaWNhdGVzLmlzRW1wdHkoKSkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLnRha2UoaWRlbnRpZmllcik7Cit9CisKK05T
VVJMQ3JlZGVudGlhbCAqTmV0d29ya1Nlc3Npb25Db2NvYTo6c3VjY2Vzc2Z1bENsaWVudENlcnRp
ZmljYXRlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpIGNvbnN0Cit7
CisgICAgSG9zdEFuZFBvcnQga2V5IHsgaG9zdCwgcG9ydCB9OworICAgIGlmICghZGVjbHR5cGUo
bV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzKTo6aXNWYWxpZEtleShrZXkpKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIHJldHVybiBtX3N1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZXMu
Z2V0KGtleSkuZ2V0KCk7Cit9CisKIGNvbnN0IFN0cmluZyYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
Ym91bmRJbnRlcmZhY2VJZGVudGlmaWVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9ib3VuZElu
dGVyZmFjZUlkZW50aWZpZXI7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyOTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wNC0xNyAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIE5ldHdvcmtTZXNzaW9uQ29j
b2Egc2hvdWxkIHJlcXVlc3QgY2xpZW50IGNlcnRpZmljYXRlIG9ubHkgb25jZSBwZXIgaG9zdC9w
b3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTA2
MjYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYwMzQwNDQ5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9DaGFsbGVuZ2UubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjbGllbnRDZXJ0
U2VydmVyV2l0aENlcnRWZXJpZmllcik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaDoKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6SFRUUFJlc3BvbnNlKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW06CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQU2VydmVyKToKKwogMjAyMC0wNC0xNyAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxk
IGZpeCBhZnRlciByMjYwMjY5LgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9DaGFsbGVuZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9DaGFsbGVuZ2UubW0JKHJldmlzaW9uIDI2MDI5MCkKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCAiVENQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tOYXZpZ2F0aW9u
RGVsZWdhdGUuaD4KQEAgLTM4LDYgKzM5LDcgQEAKICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tFcnJvclJlY292ZXJ5QXR0ZW1wdGluZy5oPgogI2ltcG9ydCA8
V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9QbGF0Zm9ybS5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogI2ltcG9ydCA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgpAQCAtMzk5LDYg
KzQwMSwxMDIgQEAgVEVTVChXZWJLaXQsIEZhc3RTZXJ2ZXJUcnVzdCkKICNlbmRpZgogfQogCisv
LyBGSVhNRTogRmluZCBvdXQgd2h5IHRoZXNlIHRlc3RzIHRpbWUgb3V0IG9uIE1vamF2ZS4KKyNp
ZiBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKSAmJiAoIVBMQVRGT1JNKE1BQykgfHwgX19NQUNfT1Nf
WF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDE1MDApCisKK3N0YXRpYyBIVFRQU2VydmVyIGNs
aWVudENlcnRTZXJ2ZXIoKQoreworICAgIFZlY3RvcjxMQ2hhcj4gY2hhcnMoNTAwMDAsICdhJyk7
CisgICAgU3RyaW5nIGxvbmdTdHJpbmcoY2hhcnMuZGF0YSgpLCBjaGFycy5zaXplKCkpOworICAg
IHJldHVybiBIVFRQU2VydmVyKHsKKyAgICAgICAgeyAiLyIsIHsgIjxodG1sPjxpbWcgc3JjPScx
LnBuZycvPjxpbWcgc3JjPScyLnBuZycvPjxpbWcgc3JjPSczLnBuZycvPjxpbWcgc3JjPSc0LnBu
ZycvPjxpbWcgc3JjPSc1LnBuZycvPjxpbWcgc3JjPSc2LnBuZycvPjwvaHRtbD4iIH0gfSwKKyAg
ICAgICAgeyAiLzEucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzIucG5nIiwg
eyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzMucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwK
KyAgICAgICAgeyAiLzQucG5nIiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzUucG5n
IiwgeyBsb25nU3RyaW5nIH0gfSwKKyAgICAgICAgeyAiLzYucG5nIiwgeyBsb25nU3RyaW5nIH0g
fSwKKyAgICAgICAgeyAiL3JlZGlyZWN0VG9FcnJvciIsIHsgMzAxLCB7eyAiTG9jYXRpb24iLCAi
L2Vycm9yIiB9fSB9IH0sCisgICAgICAgIHsgIi9lcnJvciIsIHsgSFRUUFNlcnZlcjo6SFRUUFJl
c3BvbnNlOjpUZXJtaW5hdGVDb25uZWN0aW9uOjpZZXMgfSB9LAorICAgIH0sIEhUVFBTZXJ2ZXI6
OlByb3RvY29sOjpIdHRwcywgW10gKGF1dG8sIGF1dG8sIGF1dG8gY2VydGlmaWNhdGVBbGxvd2Vk
KSB7CisgICAgICAgIGNlcnRpZmljYXRlQWxsb3dlZCh0cnVlKTsKKyAgICB9KTsKK30KKworc3Rh
dGljIEJsb2NrUHRyPHZvaWQoV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VS
TENyZWRlbnRpYWwgKikpPiBjaGFsbGVuZ2VIYW5kbGVyKFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJp
bmc+PiYgdmVjdG9yKQoreworICAgIHJldHVybiBtYWtlQmxvY2tQdHIoWyZdIChXS1dlYlZpZXcg
KndlYlZpZXcsIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNvbXBsZXRpb25IYW5kbGVyKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24s
IE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBOU1N0cmluZyAqbWV0aG9kID0gY2hhbGxl
bmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZDsKKyAgICAgICAgdmVjdG9y
LmFwcGVuZChtZXRob2QpOworICAgICAgICBpZiAoW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNV
UkxBdXRoZW50aWNhdGlvbk1ldGhvZENsaWVudENlcnRpZmljYXRlXSkKKyAgICAgICAgICAgIHJl
dHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgY3JlZGVudGlhbFdpdGhJZGVudGl0eSgpLmdldCgpKTsKKyAgICAgICAgaWYgKFttZXRo
b2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdF0p
CisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0
OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfSkuZ2V0KCk7Cit9CisKK3N0YXRpYyBzaXplX3QgY291bnRD
bGllbnRDZXJ0Q2hhbGxlbmdlcyhWZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5nPj4mIHZlY3RvcikK
K3sKKyAgICB2ZWN0b3IucmVtb3ZlQWxsTWF0Y2hpbmcoW10oYXV0byYgbWV0aG9kKSB7CisgICAg
ICAgIHJldHVybiAhW21ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1l
dGhvZENsaWVudENlcnRpZmljYXRlXTsKKyAgICB9KTsKKyAgICByZXR1cm4gdmVjdG9yLnNpemUo
KTsKK307CisKK1RFU1QoTXVsdGlwbGVDbGllbnRDZXJ0aWZpY2F0ZUNvbm5lY3Rpb25zLCBCYXNp
YykKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNsaWVudENlcnRTZXJ2ZXIoKTsKKworICAgIFZlY3Rv
cjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRob2RzOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9w
dE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgIGRlbGVnYXRlLmdldCgpLmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGNoYWxsZW5nZUhhbmRsZXIobWV0aG9k
cykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7
CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUg
d2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9FUShjb3VudENsaWVudENl
cnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCAxdSk7Cit9CisKK1RFU1QoTXVsdGlwbGVDbGllbnRDZXJ0
aWZpY2F0ZUNvbm5lY3Rpb25zLCBSZWRpcmVjdCkKK3sKKyAgICBhdXRvIHNlcnZlciA9IGNsaWVu
dENlcnRTZXJ2ZXIoKTsKKworICAgIFZlY3RvcjxSZXRhaW5QdHI8TlNTdHJpbmc+PiBtZXRob2Rz
OworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5l
d10pOworICAgIGRlbGVnYXRlLmdldCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSA9IGNoYWxsZW5nZUhhbmRsZXIobWV0aG9kcykuZ2V0KCk7CisKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvcmVkaXJlY3RUb0Vycm9yIiwgc2Vy
dmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRo
b2RzKSwgMXUpOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOwor
ICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0VR
KGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIDF1KTsKK30KKworVEVTVChNdWx0
aXBsZUNsaWVudENlcnRpZmljYXRlQ29ubmVjdGlvbnMsIEZhaWx1cmUpCit7CisgICAgYXV0byBz
ZXJ2ZXIgPSBjbGllbnRDZXJ0U2VydmVyKCk7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TU3Ry
aW5nPj4gbWV0aG9kczsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZSBuZXddKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgPSBjaGFsbGVuZ2VIYW5kbGVyKG1ldGhvZHMpLmdldCgpOworCisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNl
dE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJl
cXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpb
TlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkL2Vycm9yIiwg
c2VydmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uXTsKKyAgICBzaXplX3QgY2VydENoYWxsZW5nZXNBZnRlckluaXRpYWxGYWls
dXJlID0gY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2RzKTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZp
bmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9FUShjb3VudENsaWVudENlcnRDaGFsbGVuZ2Vz
KG1ldGhvZHMpLCBjZXJ0Q2hhbGxlbmdlc0FmdGVySW5pdGlhbEZhaWx1cmUgKyAxKTsKK30KKwor
I2VuZGlmIC8vIEhBVkUoTkVUV09SS19GUkFNRVdPUkspCisKIH0gLy8gbmFtZXNwYWNlIFRlc3RX
ZWJLaXRBUEkKIAogI2VuZGlmIC8vIEhBVkUoU1NMKQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9IVFRQU2VydmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9j
b2NvYS9IVFRQU2VydmVyLmgJKHJldmlzaW9uIDI2MDI5MCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvSFRUUFNlcnZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIGNs
YXNzIEhUVFBTZXJ2ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBIVFRQUmVzcG9uc2U7CiAgICAg
ZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3QgeyBIdHRwLCBIdHRwcywgSHR0cHNXaXRoTGVn
YWN5VExTIH07Ci0gICAgSFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWly
PFN0cmluZywgSFRUUFJlc3BvbnNlPj4sIFByb3RvY29sID0gUHJvdG9jb2w6Okh0dHApOworICAg
IEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBS
ZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwLCBGdW5jdGlvbjx2b2lkKHNlY19w
cm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21w
bGV0ZV90KT4mJiA9IG51bGxwdHIpOwogICAgIHVpbnQxNl90IHBvcnQoKSBjb25zdDsKICAgICBO
U1VSTFJlcXVlc3QgKnJlcXVlc3QoKSBjb25zdDsKICAgICBzaXplX3QgdG90YWxSZXF1ZXN0cygp
IGNvbnN0IHsgcmV0dXJuIG1fdG90YWxSZXF1ZXN0czsgfQpAQCAtNTAsMjAgKzUwLDI1IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgUmV0YWluUHRyPG53X2xpc3RlbmVyX3Q+IG1fbGlzdGVuZXI7CiAg
ICAgY29uc3QgUHJvdG9jb2wgbV9wcm90b2NvbDsKKyAgICBjb25zdCBGdW5jdGlvbjx2b2lkKHNl
Y19wcm90b2NvbF9tZXRhZGF0YV90LCBzZWNfdHJ1c3RfdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9j
b21wbGV0ZV90KT4gbV9jZXJ0VmVyaWZpZXI7CiAgICAgY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhU
VFBSZXNwb25zZT4gbV9yZXF1ZXN0UmVzcG9uc2VNYXA7CiAgICAgc2l6ZV90IG1fdG90YWxSZXF1
ZXN0cyB7IDAgfTsKIH07CiAKIHN0cnVjdCBIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2UgewotICAg
IEhUVFBSZXNwb25zZShTdHJpbmcmJiBib2R5KQotICAgICAgICA6IGJvZHkoV1RGTW92ZShib2R5
KSkgeyB9CisgICAgZW51bSBjbGFzcyBUZXJtaW5hdGVDb25uZWN0aW9uIHsgTm8sIFllcyB9Owor
ICAgIAorICAgIEhUVFBSZXNwb25zZShjb25zdCBTdHJpbmcmIGJvZHkpCisgICAgICAgIDogYm9k
eShib2R5KSB7IH0KICAgICBIVFRQUmVzcG9uc2UoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBo
ZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkpCiAgICAgICAgIDogaGVhZGVyRmllbGRzKFdURk1v
dmUoaGVhZGVyRmllbGRzKSkKICAgICAgICAgLCBib2R5KFdURk1vdmUoYm9keSkpIHsgfQotICAg
IEhUVFBSZXNwb25zZSh1bnNpZ25lZCBzdGF0dXNDb2RlLCBIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYmIGhlYWRlckZpZWxkcywgU3RyaW5nJiYgYm9keSA9IHsgfSkKKyAgICBIVFRQUmVzcG9uc2Uo
dW5zaWduZWQgc3RhdHVzQ29kZSwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVs
ZHMgPSB7IH0sIFN0cmluZyYmIGJvZHkgPSB7IH0pCiAgICAgICAgIDogc3RhdHVzQ29kZShzdGF0
dXNDb2RlKQogICAgICAgICAsIGhlYWRlckZpZWxkcyhXVEZNb3ZlKGhlYWRlckZpZWxkcykpCiAg
ICAgICAgICwgYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KKyAgICBIVFRQUmVzcG9uc2UoVGVybWlu
YXRlQ29ubmVjdGlvbiB0ZXJtaW5hdGVDb25uZWN0aW9uKQorICAgICAgICA6IHRlcm1pbmF0ZUNv
bm5lY3Rpb24odGVybWluYXRlQ29ubmVjdGlvbikgeyB9CiAKICAgICBIVFRQUmVzcG9uc2UoY29u
c3QgSFRUUFJlc3BvbnNlJikgPSBkZWZhdWx0OwogICAgIEhUVFBSZXNwb25zZShIVFRQUmVzcG9u
c2UmJikgPSBkZWZhdWx0OwpAQCAtNzQsNiArNzksNyBAQCBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRU
UFJlc3BvbnNlIHsKICAgICB1bnNpZ25lZCBzdGF0dXNDb2RlIHsgMjAwIH07CiAgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gaGVhZGVyRmllbGRzOwogICAgIFN0cmluZyBib2R5OworICAgIFRl
cm1pbmF0ZUNvbm5lY3Rpb24gdGVybWluYXRlQ29ubmVjdGlvbiB7IFRlcm1pbmF0ZUNvbm5lY3Rp
b246Ok5vIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCShyZXZpc2lvbiAyNjAyOTApCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM3LDggKzM3LDkgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1IVFRQU2VydmVy
OjpIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQ
UmVzcG9uc2U+PiByZXNwb25zZXMsIFByb3RvY29sIHByb3RvY29sKQorSFRUUFNlcnZlcjo6SFRU
UFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3Bv
bnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChzZWNfcHJv
dG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxl
dGVfdCk+JiYgdmVyaWZ5KQogICAgIDogbV9wcm90b2NvbChwcm90b2NvbCkKKyAgICAsIG1fY2Vy
dFZlcmlmaWVyKFdURk1vdmUodmVyaWZ5KSkKICAgICAsIG1fcmVxdWVzdFJlc3BvbnNlTWFwKFtd
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQU2VydmVyOjpIVFRQ
UmVzcG9uc2U+PiBsaXN0KSB7CiAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBIVFRQU2VydmVyOjpI
VFRQUmVzcG9uc2U+IG1hcDsKICAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbGlzdCkKQEAgLTUz
LDkgKzU0LDE1IEBAICAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCiAgICAgICAgIHNlY19wcm90
b2NvbF9vcHRpb25zX3NldF9sb2NhbF9pZGVudGl0eShvcHRpb25zLmdldCgpLCBpZGVudGl0eS5n
ZXQoKSk7CiAgICAgICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5
VExTKQogICAgICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X21heF90bHNfcHJvdG9j
b2xfdmVyc2lvbihvcHRpb25zLmdldCgpLCB0bHNfcHJvdG9jb2xfdmVyc2lvbl9UTFN2MTApOwor
ICAgICAgICBpZiAobV9jZXJ0VmVyaWZpZXIpIHsKKyAgICAgICAgICAgIHNlY19wcm90b2NvbF9v
cHRpb25zX3NldF9wZWVyX2F1dGhlbnRpY2F0aW9uX3JlcXVpcmVkKG9wdGlvbnMuZ2V0KCksIHRy
dWUpOworICAgICAgICAgICAgc2VjX3Byb3RvY29sX29wdGlvbnNfc2V0X3ZlcmlmeV9ibG9jayhv
cHRpb25zLmdldCgpLCBeKHNlY19wcm90b2NvbF9tZXRhZGF0YV90IG1ldGFkYXRhLCBzZWNfdHJ1
c3RfdCB0cnVzdCwgc2VjX3Byb3RvY29sX3ZlcmlmeV9jb21wbGV0ZV90IGNvbXBsZXRpb24pIHsK
KyAgICAgICAgICAgICAgICBtX2NlcnRWZXJpZmllcihtZXRhZGF0YSwgdHJ1c3QsIGNvbXBsZXRp
b24pOworICAgICAgICAgICAgfSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSk7CisgICAgICAg
IH0KICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTShwcm90b2NvbE9wdGlvbnMpOwotICAgICAg
ICBBU1NFUlQocHJvdG9jb2wgIT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUyk7CisgICAg
ICAgIEFTU0VSVF9VTlVTRUQocHJvdG9jb2wsIHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dp
dGhMZWdhY3lUTFMpOwogI2VuZGlmCiAgICAgfTsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBhZG9w
dE5TKG53X3BhcmFtZXRlcnNfY3JlYXRlX3NlY3VyZV90Y3AoY29uZmlndXJlVExTLCBOV19QQVJB
TUVURVJTX0RFRkFVTFRfQ09ORklHVVJBVElPTikpOwpAQCAtODMsNiArOTAsOCBAQCBzdGF0aWMg
U3RyaW5nIHN0YXR1c1RleHQodW5zaWduZWQgc3RhdHVzCiAgICAgICAgIHJldHVybiAiT0siX3M7
CiAgICAgY2FzZSAzMDE6CiAgICAgICAgIHJldHVybiAiTW92ZWQgUGVybWFuZW50bHkiX3M7Cisg
ICAgY2FzZSA0MDQ6CisgICAgICAgIHJldHVybiAiTm90IEZvdW5kIl9zOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4geyB9OwpAQCAtMTIxLDYgKzEzMCwxMCBA
QCB2b2lkIEhUVFBTZXJ2ZXI6OnJlc3BvbmRUb1JlcXVlc3RzKG53X2NvCiAKICAgICAgICAgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiBzZW5kUmVzcG9uc2UgPSBbdGhpcywgY29ubmVjdGlvbiA9
IHJldGFpblB0cihjb25uZWN0aW9uKSwgY29udGV4dCA9IHJldGFpblB0cihjb250ZXh0KSwgcGF0
aCA9IFdURk1vdmUocGF0aCldIHsKICAgICAgICAgICAgIGF1dG8gcmVzcG9uc2UgPSBtX3JlcXVl
c3RSZXNwb25zZU1hcC5nZXQocGF0aCk7CisgICAgICAgICAgICBpZiAocmVzcG9uc2UudGVybWlu
YXRlQ29ubmVjdGlvbiA9PSBIVFRQUmVzcG9uc2U6OlRlcm1pbmF0ZUNvbm5lY3Rpb246Olllcykg
eworICAgICAgICAgICAgICAgIG53X2Nvbm5lY3Rpb25fY2FuY2VsKGNvbm5lY3Rpb24uZ2V0KCkp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIFN0
cmluZ0J1aWxkZXIgcmVzcG9uc2VCdWlsZGVyOwogICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVy
LmFwcGVuZCgiSFRUUC8xLjEgIik7CiAgICAgICAgICAgICByZXNwb25zZUJ1aWxkZXIuYXBwZW5k
TnVtYmVyKHJlc3BvbnNlLnN0YXR1c0NvZGUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396811</attachid>
            <date>2020-04-17 15:53:18 -0700</date>
            <delta_ts>2020-04-17 16:24:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417155318.patch</filename>
            <type>text/plain</type>
            <size>20400</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE3
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjIzNDEwNSk6IFtpT1NdIFdLQ29sb3JCdXR0b24gbGVha3MgYSBVSUNvbG9yCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjYwMjkwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
MCw2ICsxMDAsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDsgfQog
ICAgIGJvb2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsgfQogICAgIAor
ICAgIHZvaWQgY2xpZW50Q2VydGlmaWNhdGVTdWdnZXN0ZWRGb3JIb3N0KE5ldHdvcmtEYXRhVGFz
a0NvY29hOjpUYXNrSWRlbnRpZmllciwgTlNVUkxDcmVkZW50aWFsICosIGNvbnN0IFN0cmluZyYg
aG9zdCwgdWludDE2X3QgcG9ydCk7CisgICAgdm9pZCB0YXNrUmVjZWl2ZWRCeXRlcyhOZXR3b3Jr
RGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIHZvaWQgdGFza0ZhaWxlZChOZXR3
b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIE5TVVJMQ3JlZGVudGlhbCAq
c3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIHVp
bnQxNl90IHBvcnQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENh
bmNlbCgpIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIG92ZXJyaWRlOwpA
QCAtMTQ2LDYgKzE1MSwxNSBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFDb25uZWN0aW9u
U2VydmljZVR5cGU7CiAgICAgYm9vbCBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgeyBm
YWxzZSB9OwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9u
IHsgZmFsc2UgfTsKKworICAgIHN0cnVjdCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSB7Cisg
ICAgICAgIFN0cmluZyBob3N0OworICAgICAgICB1aW50MTZfdCBwb3J0IHsgMCB9OworICAgICAg
ICBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsOworICAgIH07CisgICAgSGFz
aE1hcDxOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFN1Z2dlc3RlZENsaWVu
dENlcnRpZmljYXRlPiBtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlczsKKyAgICB1c2luZyBI
b3N0QW5kUG9ydCA9IHN0ZDo6cGFpcjxTdHJpbmcsIHVpbnQxNl90PjsKKyAgICBIYXNoTWFwPEhv
c3RBbmRQb3J0LCBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPj4gbV9zdWNjZXNzZnVsQ2xpZW50
Q2VydGlmaWNhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lv
bkNvY29hLm1tCShyZXZpc2lvbiAyNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2
ICs1MjksOSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAg
aWYgKGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewog
ICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlv
bkhhbmRsZXIpOwogCisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBbc2VsZiBzZXNz
aW9uRnJvbVRhc2s6dGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2EtPnRhc2tSZWNlaXZl
ZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBib29sIHNob3VsZElnbm9yZUhTVFMg
PSBmYWxzZTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBp
ZiAoYXV0byogc2Vzc2lvbkNvY29hID0gbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrU2Vzc2lvbigp
KSB7CkBAIC02OTIsNiArNjk1LDIwIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9u
ICopc2Vzc2kKICNlbmRpZgogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKFtjaGFsbGVuZ2Uu
cHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VS
TEF1dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdKSB7CisgICAgICAgIE5ldHdv
cmtTZXNzaW9uQ29jb2E6Okhvc3RBbmRQb3J0IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3Bh
Y2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChh
dXRvKiBjcmVkZW50aWFsID0gc2Vzc2lvbkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNh
dGVGb3JIb3N0KGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5wb3J0KSkKKyAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAg
ICAgIHNlc3Npb25Db2NvYS0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldy
YXBwZXIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtz
ZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KGNvbXBsZXRpb25IYW5kbGVyKSwga2V5LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIo
c2Vzc2lvbkNvY29hKSwgdGFza0lkZW50aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
IGNyZWRlbnRpYWwpIG11dGFibGUgeworICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0Ny
ZWRlbnRpYWwgPSBjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRp
c3Bvc2l0aW9uID09IFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6
VXNlQ3JlZGVudGlhbCAmJiBuc0NyZWRlbnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAg
ICAgICAgICAgICB3ZWFrU2Vzc2lvbkNvY29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZv
ckhvc3QodGFza0lkZW50aWZpZXIsIG5zQ3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25k
KTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlk
UmVjZWl2ZUNoYWxsZW5nZSgqX3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRM
ZWdhY3lUTFMsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21w
bGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6
OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcih0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3Np
dGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcy
NSwxMSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAg
IGVycm9yID0gW05TRXJyb3IgZXJyb3JXaXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vy
cm9yIGNvZGVdIHVzZXJJbmZvOm5ld1VzZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byog
bmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRv
KiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAg
aWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAg
ICAgICAgICAgIHNlc3Npb25Db2NvYS0+dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsK
ICAgICAgICAgbmV0d29ya0RhdGFUYXNrLT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0
d29ya0RhdGFUYXNrLT5uZXR3b3JrTG9hZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3Ip
IHsKKyAgICB9IGVsc2UgaWYgKGVycm9yKSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVy
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lv
bldyYXBwZXItPmRvd25sb2FkTWFwLnRha2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAs
NiArODU5LDkgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAg
IGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2td
KSB7CiAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1
dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxmIHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAg
ICAgICAgICBzZXNzaW9uQ29jb2EtPnRhc2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsK
KwogICAgICAgICBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdv
dGlhdGVkTGVnYWN5VExTOjpObzsKICNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAg
ICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRh
VGFzay5faW5jb21wbGV0ZVRhc2tNZXRyaWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0
OwpAQCAtMTAwNSw2ICsxMDI3LDM4IEBAIHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9u
ICpjb25maWcKICAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vz
c2lvbkNvY29hOjpjbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFU
YXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50
aWFsLCBjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuc2V0KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNh
dGUgeyBob3N0LCBwb3J0LCBjcmVkZW50aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9u
Q29jb2E6OnRhc2tSZWNlaXZlZEJ5dGVzKE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRp
ZmllciBpZGVudGlmaWVyKQoreworICAgIGlmIChMSUtFTFkobV9zdWdnZXN0ZWRDbGllbnRDZXJ0
aWZpY2F0ZXMuaXNFbXB0eSgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBzdWdnZXN0
ZWRDbGllbnRDZXJ0aWZpY2F0ZSA9IG1fc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLnRha2Uo
aWRlbnRpZmllcik7CisgICAgSG9zdEFuZFBvcnQga2V5IHsgc3VnZ2VzdGVkQ2xpZW50Q2VydGlm
aWNhdGUuaG9zdCwgc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUucG9ydCB9OworICAgIGlmIChz
dWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZS5jcmVkZW50aWFsICYmIGRlY2x0eXBlKG1fc3VjY2Vz
c2Z1bENsaWVudENlcnRpZmljYXRlcyk6OmlzVmFsaWRLZXkoa2V5KSkKKyAgICAgICAgbV9zdWNj
ZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmlj
YXRlLmNyZWRlbnRpYWwpOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tGYWls
ZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKExJS0VMWShtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlcy5pc0VtcHR5KCkpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlcy50YWtl
KGlkZW50aWZpZXIpOworfQorCitOU1VSTENyZWRlbnRpYWwgKk5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCB1
aW50MTZfdCBwb3J0KSBjb25zdAoreworICAgIEhvc3RBbmRQb3J0IGtleSB7IGhvc3QsIHBvcnQg
fTsKKyAgICBpZiAoIWRlY2x0eXBlKG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcyk6Omlz
VmFsaWRLZXkoa2V5KSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gbV9zdWNjZXNz
ZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdldChrZXkpLmdldCgpOworfQorCiBjb25zdCBTdHJpbmcm
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJvdW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG1fYm91bmRJbnRlcmZhY2VJZGVudGlmaWVyOwpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjkwKQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAt
MDQtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAg
ICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hIHNob3VsZCByZXF1ZXN0IGNsaWVudCBjZXJ0aWZpY2F0
ZSBvbmx5IG9uY2UgcGVyIGhvc3QvcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjI2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM0MDQ0
OT4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y2xpZW50Q2VydFNlcnZlcldpdGhDZXJ0VmVyaWZpZXIpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQ
U2VydmVyLmg6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQUmVzcG9u
c2U6OkhUVFBSZXNwb25zZSk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2Vy
dmVyLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZlcik6
CisKIDIwMjAtMDQtMTcgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI2MDI2OS4KSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZp
c2lvbiAyNjAyOTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0No
YWxsZW5nZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiUGxh
dGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5o
IgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9y
dCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRlbGVnYXRlLmg+CkBAIC0zOCw2ICszOSw3IEBACiAjaW1w
b3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXJyb3JSZWNvdmVyeUF0
dGVtcHRpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0u
aD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2Vj
dXJpdHlTUEkuaD4KQEAgLTM5OSw2ICs0MDEsMTAyIEBAIFRFU1QoV2ViS2l0LCBGYXN0U2VydmVy
VHJ1c3QpCiAjZW5kaWYKIH0KIAorLy8gRklYTUU6IEZpbmQgb3V0IHdoeSB0aGVzZSB0ZXN0cyB0
aW1lIG91dCBvbiBNb2phdmUuCisjaWYgSEFWRShORVRXT1JLX0ZSQU1FV09SSykgJiYgKCFQTEFU
Rk9STShNQUMpIHx8IF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKQor
CitzdGF0aWMgSFRUUFNlcnZlciBjbGllbnRDZXJ0U2VydmVyKCkKK3sKKyAgICBWZWN0b3I8TENo
YXI+IGNoYXJzKDUwMDAwLCAnYScpOworICAgIFN0cmluZyBsb25nU3RyaW5nKGNoYXJzLmRhdGEo
KSwgY2hhcnMuc2l6ZSgpKTsKKyAgICByZXR1cm4gSFRUUFNlcnZlcih7CisgICAgICAgIHsgIi8i
LCB7ICI8aHRtbD48aW1nIHNyYz0nMS5wbmcnLz48aW1nIHNyYz0nMi5wbmcnLz48aW1nIHNyYz0n
My5wbmcnLz48aW1nIHNyYz0nNC5wbmcnLz48aW1nIHNyYz0nNS5wbmcnLz48aW1nIHNyYz0nNi5w
bmcnLz48L2h0bWw+IiB9IH0sCisgICAgICAgIHsgIi8xLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0s
CisgICAgICAgIHsgIi8yLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi8zLnBu
ZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi80LnBuZyIsIHsgbG9uZ1N0cmluZyB9
IH0sCisgICAgICAgIHsgIi81LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi82
LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi9yZWRpcmVjdFRvRXJyb3IiLCB7
IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9lcnJvciIgfX0gfSB9LAorICAgICAgICB7ICIvZXJyb3Ii
LCB7IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZTo6VGVybWluYXRlQ29ubmVjdGlvbjo6WWVzIH0g
fSwKKyAgICB9LCBIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cHMsIFtdIChhdXRvLCBhdXRvLCBh
dXRvIGNlcnRpZmljYXRlQWxsb3dlZCkgeworICAgICAgICBjZXJ0aWZpY2F0ZUFsbG93ZWQodHJ1
ZSk7CisgICAgfSk7Cit9CisKK3N0YXRpYyBCbG9ja1B0cjx2b2lkKFdLV2ViVmlldyAqLCBOU1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKT4gY2hhbGxlbmdlSGFuZGxlcihW
ZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5nPj4mIHZlY3RvcikKK3sKKyAgICByZXR1cm4gbWFrZUJs
b2NrUHRyKFsmXSAoV0tXZWJWaWV3ICp3ZWJWaWV3LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jb21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0
aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgTlNT
dHJpbmcgKm1ldGhvZCA9IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25N
ZXRob2Q7CisgICAgICAgIHZlY3Rvci5hcHBlbmQobWV0aG9kKTsKKyAgICAgICAgaWYgKFttZXRo
b2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZp
Y2F0ZV0pCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9u
QXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKS5nZXQo
KSk7CisgICAgICAgIGlmIChbbWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0
aW9uTWV0aG9kU2VydmVyVHJ1c3RdKQorICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRy
dXN0XSk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pLmdldCgpOworfQor
CitzdGF0aWMgc2l6ZV90IGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMoVmVjdG9yPFJldGFpblB0
cjxOU1N0cmluZz4+JiB2ZWN0b3IpCit7CisgICAgdmVjdG9yLnJlbW92ZUFsbE1hdGNoaW5nKFtd
KGF1dG8mIG1ldGhvZCkgeworICAgICAgICByZXR1cm4gIVttZXRob2QgaXNFcXVhbFRvU3RyaW5n
Ok5TVVJMQXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV07CisgICAgfSk7Cisg
ICAgcmV0dXJuIHZlY3Rvci5zaXplKCk7Cit9OworCitURVNUKE11bHRpcGxlQ2xpZW50Q2VydGlm
aWNhdGVDb25uZWN0aW9ucywgQmFzaWMpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBjbGllbnRDZXJ0
U2VydmVyKCk7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5nPj4gbWV0aG9kczsKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsK
KyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBj
aGFsbGVuZ2VIYW5kbGVyKG1ldGhvZHMpLmdldCgpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVl
c3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBF
WFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2RzKSwgMXUpOworfQorCitU
RVNUKE11bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0aW9ucywgUmVkaXJlY3QpCit7Cisg
ICAgYXV0byBzZXJ2ZXIgPSBjbGllbnRDZXJ0U2VydmVyKCk7CisKKyAgICBWZWN0b3I8UmV0YWlu
UHRyPE5TU3RyaW5nPj4gbWV0aG9kczsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBjaGFsbGVuZ2VIYW5kbGVyKG1ldGhvZHMpLmdldCgp
OworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3
ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
L3JlZGlyZWN0VG9FcnJvciIsIHNlcnZlci5wb3J0KCldXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisgICAgRVhQRUNUX0VRKGNvdW50Q2xp
ZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyksIDF1KTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmln
YXRpb25dOworICAgIEVYUEVDVF9FUShjb3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMp
LCAxdSk7Cit9CisKK1RFU1QoTXVsdGlwbGVDbGllbnRDZXJ0aWZpY2F0ZUNvbm5lY3Rpb25zLCBG
YWlsdXJlKQoreworICAgIGF1dG8gc2VydmVyID0gY2xpZW50Q2VydFNlcnZlcigpOworCisgICAg
VmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+IG1ldGhvZHM7CisgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgZGVsZWdhdGUuZ2V0
KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gY2hhbGxlbmdlSGFuZGxlciht
ZXRob2RzKS5nZXQoKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczov
LzEyNy4wLjAuMTolZC9lcnJvciIsIHNlcnZlci5wb3J0KCldXV1dOworICAgIFtkZWxlZ2F0ZSB3
YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisgICAgc2l6ZV90IGNlcnRDaGFs
bGVuZ2VzQWZ0ZXJJbml0aWFsRmFpbHVyZSA9IGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0
aG9kcyk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAg
W2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291
bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyhtZXRob2RzKSwgY2VydENoYWxsZW5nZXNBZnRlckluaXRp
YWxGYWlsdXJlICsgMSk7Cit9CisKKyNlbmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQor
CiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKFNTTCkKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNjAyOTAp
CisrKyBUb29scy9UZXN0V2ViS2l0QVBJL2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFzcyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1
Y3QgSFRUUFJlc3BvbnNlOwogICAgIGVudW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0
cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2FjeVRMUyB9OwotICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9
IFByb3RvY29sOjpIdHRwKTsKKyAgICBIVFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxz
dGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVzcG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0
cCwgRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNl
Y19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+JiYgPSBudWxscHRyKTsKICAgICB1aW50MTZf
dCBwb3J0KCkgY29uc3Q7CiAgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAg
c2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsUmVxdWVzdHM7IH0K
QEAgLTUwLDIwICs1MCwyNSBAQCBwcml2YXRlOgogICAgIAogICAgIFJldGFpblB0cjxud19saXN0
ZW5lcl90PiBtX2xpc3RlbmVyOwogICAgIGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CisgICAg
Y29uc3QgRnVuY3Rpb248dm9pZChzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3Qs
IHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCk+IG1fY2VydFZlcmlmaWVyOwogICAgIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQUmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwog
ICAgIHNpemVfdCBtX3RvdGFsUmVxdWVzdHMgeyAwIH07CiB9OwogCiBzdHJ1Y3QgSFRUUFNlcnZl
cjo6SFRUUFJlc3BvbnNlIHsKLSAgICBIVFRQUmVzcG9uc2UoU3RyaW5nJiYgYm9keSkKLSAgICAg
ICAgOiBib2R5KFdURk1vdmUoYm9keSkpIHsgfQorICAgIGVudW0gY2xhc3MgVGVybWluYXRlQ29u
bmVjdGlvbiB7IE5vLCBZZXMgfTsKKyAgICAKKyAgICBIVFRQUmVzcG9uc2UoY29uc3QgU3RyaW5n
JiBib2R5KQorICAgICAgICA6IGJvZHkoYm9keSkgeyB9CiAgICAgSFRUUFJlc3BvbnNlKEhhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVhZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5KQogICAgICAg
ICA6IGhlYWRlckZpZWxkcyhXVEZNb3ZlKGhlYWRlckZpZWxkcykpCiAgICAgICAgICwgYm9keShX
VEZNb3ZlKGJvZHkpKSB7IH0KLSAgICBIVFRQUmVzcG9uc2UodW5zaWduZWQgc3RhdHVzQ29kZSwg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBoZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkgPSB7
IH0pCisgICAgSFRUUFJlc3BvbnNlKHVuc2lnbmVkIHN0YXR1c0NvZGUsIEhhc2hNYXA8U3RyaW5n
LCBTdHJpbmc+JiYgaGVhZGVyRmllbGRzID0geyB9LCBTdHJpbmcmJiBib2R5ID0geyB9KQogICAg
ICAgICA6IHN0YXR1c0NvZGUoc3RhdHVzQ29kZSkKICAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RG
TW92ZShoZWFkZXJGaWVsZHMpKQogICAgICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9Cisg
ICAgSFRUUFJlc3BvbnNlKFRlcm1pbmF0ZUNvbm5lY3Rpb24gdGVybWluYXRlQ29ubmVjdGlvbikK
KyAgICAgICAgOiB0ZXJtaW5hdGVDb25uZWN0aW9uKHRlcm1pbmF0ZUNvbm5lY3Rpb24pIHsgfQog
CiAgICAgSFRUUFJlc3BvbnNlKGNvbnN0IEhUVFBSZXNwb25zZSYpID0gZGVmYXVsdDsKICAgICBI
VFRQUmVzcG9uc2UoSFRUUFJlc3BvbnNlJiYpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc5LDcgQEAg
c3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBSZXNwb25zZSB7CiAgICAgdW5zaWduZWQgc3RhdHVzQ29k
ZSB7IDIwMCB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGhlYWRlckZpZWxkczsKICAg
ICBTdHJpbmcgYm9keTsKKyAgICBUZXJtaW5hdGVDb25uZWN0aW9uIHRlcm1pbmF0ZUNvbm5lY3Rp
b24geyBUZXJtaW5hdGVDb25uZWN0aW9uOjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQko
cmV2aXNpb24gMjYwMjkwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVy
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8
c3RkOjpwYWlyPFN0cmluZywgSFRUUFJlc3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90
b2NvbCkKK0hUVFBTZXJ2ZXI6OkhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6
cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25zZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2ws
IEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3RvY29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNf
cHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRlX3QpPiYmIHZlcmlmeSkKICAgICA6IG1fcHJvdG9jb2wo
cHJvdG9jb2wpCisgICAgLCBtX2NlcnRWZXJpZmllcihXVEZNb3ZlKHZlcmlmeSkpCiAgICAgLCBt
X3JlcXVlc3RSZXNwb25zZU1hcChbXShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0
cmluZywgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFw
PFN0cmluZywgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0
byYgcGFpciA6IGxpc3QpCkBAIC01Myw5ICs1NCwxNSBAQCAgICAgOiBtX3Byb3RvY29sKHByb3Rv
Y29sKQogICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0
aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0KCkpOwogICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJv
dG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRMUykKICAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRp
b25zX3NldF9tYXhfdGxzX3Byb3RvY29sX3ZlcnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3Rv
Y29sX3ZlcnNpb25fVExTdjEwKTsKKyAgICAgICAgaWYgKG1fY2VydFZlcmlmaWVyKSB7CisgICAg
ICAgICAgICBzZWNfcHJvdG9jb2xfb3B0aW9uc19zZXRfcGVlcl9hdXRoZW50aWNhdGlvbl9yZXF1
aXJlZChvcHRpb25zLmdldCgpLCB0cnVlKTsKKyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRp
b25zX3NldF92ZXJpZnlfYmxvY2sob3B0aW9ucy5nZXQoKSwgXihzZWNfcHJvdG9jb2xfbWV0YWRh
dGFfdCBtZXRhZGF0YSwgc2VjX3RydXN0X3QgdHJ1c3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29t
cGxldGVfdCBjb21wbGV0aW9uKSB7CisgICAgICAgICAgICAgICAgbV9jZXJ0VmVyaWZpZXIobWV0
YWRhdGEsIHRydXN0LCBjb21wbGV0aW9uKTsKKyAgICAgICAgICAgIH0sIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCkpOworICAgICAgICB9CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0ocHJv
dG9jb2xPcHRpb25zKTsKLSAgICAgICAgQVNTRVJUKHByb3RvY29sICE9IFByb3RvY29sOjpIdHRw
c1dpdGhMZWdhY3lUTFMpOworICAgICAgICBBU1NFUlRfVU5VU0VEKHByb3RvY29sLCBwcm90b2Nv
bCAhPSBQcm90b2NvbDo6SHR0cHNXaXRoTGVnYWN5VExTKTsKICNlbmRpZgogICAgIH07CiAgICAg
YXV0byBwYXJhbWV0ZXJzID0gYWRvcHROUyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNw
KGNvbmZpZ3VyZVRMUywgTldfUEFSQU1FVEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsKQEAg
LTgzLDYgKzkwLDggQEAgc3RhdGljIFN0cmluZyBzdGF0dXNUZXh0KHVuc2lnbmVkIHN0YXR1cwog
ICAgICAgICByZXR1cm4gIk9LIl9zOwogICAgIGNhc2UgMzAxOgogICAgICAgICByZXR1cm4gIk1v
dmVkIFBlcm1hbmVudGx5Il9zOworICAgIGNhc2UgNDA0OgorICAgICAgICByZXR1cm4gIk5vdCBG
b3VuZCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsg
fTsKQEAgLTEyMSw2ICsxMzAsMTAgQEAgdm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0
cyhud19jbwogCiAgICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4gc2VuZFJlc3BvbnNl
ID0gW3RoaXMsIGNvbm5lY3Rpb24gPSByZXRhaW5QdHIoY29ubmVjdGlvbiksIGNvbnRleHQgPSBy
ZXRhaW5QdHIoY29udGV4dCksIHBhdGggPSBXVEZNb3ZlKHBhdGgpXSB7CiAgICAgICAgICAgICBh
dXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0UmVzcG9uc2VNYXAuZ2V0KHBhdGgpOworICAgICAgICAg
ICAgaWYgKHJlc3BvbnNlLnRlcm1pbmF0ZUNvbm5lY3Rpb24gPT0gSFRUUFJlc3BvbnNlOjpUZXJt
aW5hdGVDb25uZWN0aW9uOjpZZXMpIHsKKyAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX2Nh
bmNlbChjb25uZWN0aW9uLmdldCgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKICAgICAg
ICAgICAgIHJlc3BvbnNlQnVpbGRlci5hcHBlbmQoIkhUVFAvMS4xICIpOwogICAgICAgICAgICAg
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51bWJlcihyZXNwb25zZS5zdGF0dXNDb2RlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396815</attachid>
            <date>2020-04-17 16:24:44 -0700</date>
            <delta_ts>2020-04-17 16:41:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-210626-20200417162444.patch</filename>
            <type>text/plain</type>
            <size>20718</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA0LTE3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTmV0d29ya1Nlc3Np
b25Db2NvYSBzaG91bGQgcmVxdWVzdCBjbGllbnQgY2VydGlmaWNhdGUgb25seSBvbmNlIHBlciBo
b3N0L3BvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDYyNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjAzNDA0NDk+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAgTlNVUkxTZXNzaW9uIGNyZWF0ZXMg
bW9yZSB0aGFuIG9uZSBUQ1AgY29ubmVjdGlvbiB0byBhIHNlcnZlciB3aGVuIHVzaW5nIEhUVFAg
MS4xLgorICAgICAgICBFYWNoIFRDUCBjb25uZWN0aW9uIHdpdGggVExTIGdlbmVyYXRlcyBhIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UgdG8gZG8gdGhlIHNlcnZlciB0cnVzdCBldmFsdWF0aW9uIG9mIHRo
ZSBjZXJ0aWZpY2F0ZSBjaGFpbi4KKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1ZXN0cyBhIGNs
aWVudCBjZXJ0aWZpY2F0ZSBpbiB0aGUgVExTIGhhbmRzaGFrZSwgaXQgYWxzbyBnZW5lcmF0ZXMg
YSBkaWRSZWNlaXZlQ2hhbGxlbmdlIHRvIHJlcXVlc3QgY2xpZW50CisgICAgICAgIGNlcnRpZmlj
YXRlcyBhcyB3ZWxsLiAgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2Ygb3VyIG5l
dHdvcmtpbmcuICBXZSBzaG91bGQgbm90IGFjdHVhbGx5IGFzayB0aGUgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUKKyAgICAgICAgZm9yIGNsaWVudCBjZXJ0aWZpY2F0ZXMgbW9yZSB0aGFuIG9uY2UgcGVy
IGhvc3QvcG9ydC4gIFdlIHNob3VsZCByZW1lbWJlciB0aGUgY3JlZGVudGlhbCBhbmQgZ2l2ZSBp
dCB0byBOU1VSTFNlc3Npb24gaW1tZWRpYXRlbHkKKyAgICAgICAgaWYgd2UgaGF2ZSB1c2VkIHRo
aXMgY3JlZGVudGlhbCBpbiB0aGUgcGFzdCBmb3IgYSB0YXNrIHRoYXQgaGFzIHJlY2VpdmVkIGJ5
dGVzIChlaXRoZXIgYSByZXNwb25zZSBvciBhIHJlZGlyZWN0KS4gIElmIHRoZSBUTFMKKyAgICAg
ICAgaGFuZHNoYWtlIGZhaWxzLCB3ZSBzaG91bGQgbm90IHJldXNlIHRoYXQgc2FtZSBjZXJ0aWZp
Y2F0ZSBhdXRvbWF0aWNhbGx5LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdv
cmtTZXNzaW9uQ29jb2EubW06CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBV
UkxTZXNzaW9uOnRhc2s6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb246bmV3UmVxdWVzdDpjb21w
bGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVS
TFNlc3Npb246dGFzazpkaWRSZWNlaXZlQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZENv
bXBsZXRlV2l0aEVycm9yOl0pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUg
VVJMU2Vzc2lvbjpkYXRhVGFzazpkaWRSZWNlaXZlUmVzcG9uc2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmNsaWVudENlcnRpZmlj
YXRlU3VnZ2VzdGVkRm9ySG9zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29j
b2E6OnRhc2tSZWNlaXZlZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Nlc3Npb25D
b2NvYTo6dGFza0ZhaWxlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6
OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZpY2F0ZUZvckhvc3QgY29uc3QpOgorCiAyMDIwLTA0LTE3
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjIzNDEwNSk6IFtpT1NdIFdLQ29sb3JCdXR0b24gbGVha3MgYSBVSUNvbG9yCkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtT
ZXNzaW9uQ29jb2EuaAkocmV2aXNpb24gMjYwMjkwKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiBlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdh
Y3lUTFMgOiBib29sOwogY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwogY2xhc3Mg
TmV0d29ya1Nlc3Npb25Db2NvYTsKK3VzaW5nIEhvc3RBbmRQb3J0ID0gc3RkOjpwYWlyPFN0cmlu
ZywgdWludDE2X3Q+OwogCiBzdHJ1Y3QgU2Vzc2lvbldyYXBwZXIgOiBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8U2Vzc2lvbldyYXBwZXI+IHsKICAgICB2b2lkIGluaXRpYWxpemUoTlNVUkxTZXNzaW9u
Q29uZmlndXJhdGlvbiAqLCBOZXR3b3JrU2Vzc2lvbkNvY29hJiwgV2ViQ29yZTo6U3RvcmVkQ3Jl
ZGVudGlhbHNQb2xpY3ksIE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluKTsKQEAgLTEwMCw2ICsx
MDEsMTEgQEAgcHVibGljOgogICAgIGJvb2wgaXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNJbkFwcEJyb3dzZXJQcml2YWN5RW5hYmxlZDsgfQogICAgIGJv
b2wgcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fcHJldmVudHNTeXN0ZW1IVFRQUHJveHlBdXRoZW50aWNhdGlvbjsgfQogICAgIAorICAgIHZv
aWQgY2xpZW50Q2VydGlmaWNhdGVTdWdnZXN0ZWRGb3JIb3N0KE5ldHdvcmtEYXRhVGFza0NvY29h
OjpUYXNrSWRlbnRpZmllciwgTlNVUkxDcmVkZW50aWFsICosIGNvbnN0IFN0cmluZyYgaG9zdCwg
dWludDE2X3QgcG9ydCk7CisgICAgdm9pZCB0YXNrUmVjZWl2ZWRCeXRlcyhOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIHZvaWQgdGFza0ZhaWxlZChOZXR3b3JrRGF0
YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIpOworICAgIE5TVVJMQ3JlZGVudGlhbCAqc3VjY2Vz
c2Z1bENsaWVudENlcnRpZmljYXRlRm9ySG9zdChjb25zdCBTdHJpbmcmIGhvc3QsIHVpbnQxNl90
IHBvcnQpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgaW52YWxpZGF0ZUFuZENhbmNlbCgp
IG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJDcmVkZW50aWFscygpIG92ZXJyaWRlOwpAQCAtMTQ2
LDYgKzE1MiwxNCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGU7CiAgICAgYm9vbCBtX2lzSW5BcHBCcm93c2VyUHJpdmFjeUVuYWJsZWQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9wcmV2ZW50c1N5c3RlbUhUVFBQcm94eUF1dGhlbnRpY2F0aW9uIHsgZmFs
c2UgfTsKKworICAgIHN0cnVjdCBTdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSB7CisgICAgICAg
IFN0cmluZyBob3N0OworICAgICAgICB1aW50MTZfdCBwb3J0IHsgMCB9OworICAgICAgICBSZXRh
aW5QdHI8TlNVUkxDcmVkZW50aWFsPiBjcmVkZW50aWFsOworICAgIH07CisgICAgSGFzaE1hcDxO
ZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIFN1Z2dlc3RlZENsaWVudENlcnRp
ZmljYXRlPiBtX3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlczsKKyAgICBIYXNoTWFwPEhvc3RB
bmRQb3J0LCBSZXRhaW5QdHI8TlNVUkxDcmVkZW50aWFsPj4gbV9zdWNjZXNzZnVsQ2xpZW50Q2Vy
dGlmaWNhdGVzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tCShyZXZpc2lvbiAyNjAyOTApCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1
MjksOSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgaWYg
KGF1dG8qIG5ldHdvcmtEYXRhVGFzayA9IFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSkgewogICAg
ICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyQ29weSA9IEJsb2NrX2NvcHkoY29tcGxldGlvbkhh
bmRsZXIpOwogCisgICAgICAgIGlmIChhdXRvKiBzZXNzaW9uQ29jb2EgPSBbc2VsZiBzZXNzaW9u
RnJvbVRhc2s6dGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2EtPnRhc2tSZWNlaXZlZEJ5
dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBib29sIHNob3VsZElnbm9yZUhTVFMgPSBm
YWxzZTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgICAgICBpZiAo
YXV0byogc2Vzc2lvbkNvY29hID0gbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrU2Vzc2lvbigpKSB7
CkBAIC02OTIsNiArNjk1LDIwIEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICop
c2Vzc2kKICNlbmRpZgogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKFtjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1
dGhlbnRpY2F0aW9uTWV0aG9kQ2xpZW50Q2VydGlmaWNhdGVdKSB7CisgICAgICAgIEhvc3RBbmRQ
b3J0IGtleSB7IGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5wb3J0IH07CisgICAgICAgIGlmIChhdXRvKiBjcmVkZW50aWFsID0gc2Vzc2lv
bkNvY29hLT5zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZS5wcm90
ZWN0aW9uU3BhY2UuaG9zdCwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5wb3J0KSkKKyAgICAg
ICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
VXNlQ3JlZGVudGlhbCwgY3JlZGVudGlhbCk7CisgICAgICAgIHNlc3Npb25Db2NvYS0+Y29udGlu
dWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVnb3Rp
YXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwga2V5
LCB3ZWFrU2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgdGFza0lkZW50
aWZpZXJdIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9z
aXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFibGUgewor
ICAgICAgICAgICAgTlNVUkxDcmVkZW50aWFsICpuc0NyZWRlbnRpYWwgPSBjcmVkZW50aWFsLm5z
Q3JlZGVudGlhbCgpOworICAgICAgICAgICAgaWYgKGRpc3Bvc2l0aW9uID09IFdlYktpdDo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6VXNlQ3JlZGVudGlhbCAmJiBuc0NyZWRl
bnRpYWwgJiYgd2Vha1Nlc3Npb25Db2NvYSkKKyAgICAgICAgICAgICAgICB3ZWFrU2Vzc2lvbkNv
Y29hLT5jbGllbnRDZXJ0aWZpY2F0ZVN1Z2dlc3RlZEZvckhvc3QodGFza0lkZW50aWZpZXIsIG5z
Q3JlZGVudGlhbCwga2V5LmZpcnN0LCBrZXkuc2Vjb25kKTsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHRvTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0
aW9uKSwgbnNDcmVkZW50aWFsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nlc3Np
b25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlmaWVy
LCBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRl
bnRpYWwpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVk
ZW50aWFsKCkpOwogICAgIH0pOwpAQCAtNzA4LDkgKzcyNSwxMSBAQCAtICh2b2lkKVVSTFNlc3Np
b246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAgICAgICAgIGVycm9yID0gW05TRXJyb3IgZXJyb3JX
aXRoRG9tYWluOltlcnJvciBkb21haW5dIGNvZGU6W2Vycm9yIGNvZGVdIHVzZXJJbmZvOm5ld1Vz
ZXJJbmZvXTsKICAgICB9CiAKLSAgICBpZiAoYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYg
ZXhpc3RpbmdUYXNrOnRhc2tdKQorICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBbc2Vs
ZiBleGlzdGluZ1Rhc2s6dGFza10pIHsKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9
IFtzZWxmIHNlc3Npb25Gcm9tVGFzazp0YXNrXSkKKyAgICAgICAgICAgIHNlc3Npb25Db2NvYS0+
dGFza0ZhaWxlZCh0YXNrLnRhc2tJZGVudGlmaWVyKTsKICAgICAgICAgbmV0d29ya0RhdGFUYXNr
LT5kaWRDb21wbGV0ZVdpdGhFcnJvcihlcnJvciwgbmV0d29ya0RhdGFUYXNrLT5uZXR3b3JrTG9h
ZE1ldHJpY3MoKSk7Ci0gICAgZWxzZSBpZiAoZXJyb3IpIHsKKyAgICB9IGVsc2UgaWYgKGVycm9y
KSB7CiAgICAgICAgIGlmICghX3Nlc3Npb25XcmFwcGVyKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBhdXRvIGRvd25sb2FkSUQgPSBfc2Vzc2lvbldyYXBwZXItPmRvd25sb2FkTWFwLnRh
a2UodGFzay50YXNrSWRlbnRpZmllcik7CkBAIC04NDAsNiArODU5LDkgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRh
c2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7CiAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAKKyAgICAgICAgaWYgKGF1dG8qIHNlc3Npb25Db2NvYSA9IFtzZWxm
IHNlc3Npb25Gcm9tVGFzazpkYXRhVGFza10pCisgICAgICAgICAgICBzZXNzaW9uQ29jb2EtPnRh
c2tSZWNlaXZlZEJ5dGVzKHRhc2tJZGVudGlmaWVyKTsKKwogICAgICAgICBOZWdvdGlhdGVkTGVn
YWN5VExTIG5lZ290aWF0ZWRMZWdhY3lUTFMgPSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObzsKICNp
ZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1QpCiAgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tU
cmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSBkYXRhVGFzay5faW5jb21wbGV0ZVRhc2tNZXRy
aWNzLnRyYW5zYWN0aW9uTWV0cmljcy5sYXN0T2JqZWN0OwpAQCAtMTAwNSw2ICsxMDI3LDM4IEBA
IHN0YXRpYyBOU1VSTFNlc3Npb25Db25maWd1cmF0aW9uICpjb25maWcKICAgICByZXR1cm4gY29u
ZmlndXJhdGlvbjsKIH0KIAordm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjbGllbnRDZXJ0aWZp
Y2F0ZVN1Z2dlc3RlZEZvckhvc3QoTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVy
IHRhc2tJRCwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsLCBjb25zdCBTdHJpbmcmIGhvc3Qs
IHVpbnQxNl90IHBvcnQpCit7CisgICAgbV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuc2V0
KHRhc2tJRCwgU3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUgeyBob3N0LCBwb3J0LCBjcmVkZW50
aWFsIH0pOworfQorCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tSZWNlaXZlZEJ5dGVz
KE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciBpZGVudGlmaWVyKQoreworICAg
IGlmIChMSUtFTFkobV9zdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZXMuaXNFbXB0eSgpKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgYXV0byBzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0ZSA9IG1f
c3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGVzLnRha2UoaWRlbnRpZmllcik7CisgICAgSG9zdEFu
ZFBvcnQga2V5IHsgc3VnZ2VzdGVkQ2xpZW50Q2VydGlmaWNhdGUuaG9zdCwgc3VnZ2VzdGVkQ2xp
ZW50Q2VydGlmaWNhdGUucG9ydCB9OworICAgIGlmIChzdWdnZXN0ZWRDbGllbnRDZXJ0aWZpY2F0
ZS5jcmVkZW50aWFsICYmIGRlY2x0eXBlKG1fc3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcyk6
OmlzVmFsaWRLZXkoa2V5KSkKKyAgICAgICAgbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVz
LmFkZChrZXksIHN1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlLmNyZWRlbnRpYWwpOworfQorCit2
b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnRhc2tGYWlsZWQoTmV0d29ya0RhdGFUYXNrQ29jb2E6
OlRhc2tJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7CisgICAgaWYgKExJS0VMWShtX3N1Z2dlc3Rl
ZENsaWVudENlcnRpZmljYXRlcy5pc0VtcHR5KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X3N1Z2dlc3RlZENsaWVudENlcnRpZmljYXRlcy50YWtlKGlkZW50aWZpZXIpOworfQorCitOU1VS
TENyZWRlbnRpYWwgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OnN1Y2Nlc3NmdWxDbGllbnRDZXJ0aWZp
Y2F0ZUZvckhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCB1aW50MTZfdCBwb3J0KSBjb25zdAorewor
ICAgIEhvc3RBbmRQb3J0IGtleSB7IGhvc3QsIHBvcnQgfTsKKyAgICBpZiAoIWRlY2x0eXBlKG1f
c3VjY2Vzc2Z1bENsaWVudENlcnRpZmljYXRlcyk6OmlzVmFsaWRLZXkoa2V5KSkKKyAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICByZXR1cm4gbV9zdWNjZXNzZnVsQ2xpZW50Q2VydGlmaWNhdGVzLmdl
dChrZXkpLmdldCgpOworfQorCiBjb25zdCBTdHJpbmcmIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmJv
dW5kSW50ZXJmYWNlSWRlbnRpZmllcigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fYm91bmRJbnRl
cmZhY2VJZGVudGlmaWVyOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwMjkwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMjAtMDQtMTcgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBOZXR3b3JrU2Vzc2lvbkNvY29h
IHNob3VsZCByZXF1ZXN0IGNsaWVudCBjZXJ0aWZpY2F0ZSBvbmx5IG9uY2UgcGVyIGhvc3QvcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjI2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDM0MDQ0OT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y2xpZW50Q2VydFNl
cnZlcldpdGhDZXJ0VmVyaWZpZXIpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLmg6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpIVFRQUmVzcG9uc2U6OkhUVFBSZXNwb25zZSk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6SFRUUFNlcnZlcjo6SFRUUFNlcnZlcik6CisKIDIwMjAtMDQtMTcgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBm
aXggYWZ0ZXIgcjI2MDI2OS4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQ2hhbGxlbmdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQ2hhbGxlbmdlLm1tCShyZXZpc2lvbiAyNjAyOTApCisrKyBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0NoYWxsZW5nZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRDUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCAiV0tXZWJW
aWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLTmF2aWdhdGlvbkRl
bGVnYXRlLmg+CkBAIC0zOCw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLRXJyb3JSZWNvdmVyeUF0dGVtcHRpbmcuaD4KICNpbXBvcnQgPFdl
YktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0Js
b2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvUGxhdGZvcm0uaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbXBvcnQgPHd0Zi9zcGkvY29jb2EvU2VjdXJpdHlTUEkuaD4KQEAgLTM5OSw2ICs0
MDEsMTAyIEBAIFRFU1QoV2ViS2l0LCBGYXN0U2VydmVyVHJ1c3QpCiAjZW5kaWYKIH0KIAorLy8g
RklYTUU6IEZpbmQgb3V0IHdoeSB0aGVzZSB0ZXN0cyB0aW1lIG91dCBvbiBNb2phdmUuCisjaWYg
SEFWRShORVRXT1JLX0ZSQU1FV09SSykgJiYgKCFQTEFURk9STShNQUMpIHx8IF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTAxNTAwKQorCitzdGF0aWMgSFRUUFNlcnZlciBjbGll
bnRDZXJ0U2VydmVyKCkKK3sKKyAgICBWZWN0b3I8TENoYXI+IGNoYXJzKDUwMDAwLCAnYScpOwor
ICAgIFN0cmluZyBsb25nU3RyaW5nKGNoYXJzLmRhdGEoKSwgY2hhcnMuc2l6ZSgpKTsKKyAgICBy
ZXR1cm4gSFRUUFNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7ICI8aHRtbD48aW1nIHNyYz0nMS5w
bmcnLz48aW1nIHNyYz0nMi5wbmcnLz48aW1nIHNyYz0nMy5wbmcnLz48aW1nIHNyYz0nNC5wbmcn
Lz48aW1nIHNyYz0nNS5wbmcnLz48aW1nIHNyYz0nNi5wbmcnLz48L2h0bWw+IiB9IH0sCisgICAg
ICAgIHsgIi8xLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi8yLnBuZyIsIHsg
bG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi8zLnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisg
ICAgICAgIHsgIi80LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi81LnBuZyIs
IHsgbG9uZ1N0cmluZyB9IH0sCisgICAgICAgIHsgIi82LnBuZyIsIHsgbG9uZ1N0cmluZyB9IH0s
CisgICAgICAgIHsgIi9yZWRpcmVjdFRvRXJyb3IiLCB7IDMwMSwge3sgIkxvY2F0aW9uIiwgIi9l
cnJvciIgfX0gfSB9LAorICAgICAgICB7ICIvZXJyb3IiLCB7IEhUVFBTZXJ2ZXI6OkhUVFBSZXNw
b25zZTo6VGVybWluYXRlQ29ubmVjdGlvbjo6WWVzIH0gfSwKKyAgICB9LCBIVFRQU2VydmVyOjpQ
cm90b2NvbDo6SHR0cHMsIFtdIChhdXRvLCBhdXRvLCBhdXRvIGNlcnRpZmljYXRlQWxsb3dlZCkg
eworICAgICAgICBjZXJ0aWZpY2F0ZUFsbG93ZWQodHJ1ZSk7CisgICAgfSk7Cit9CisKK3N0YXRp
YyBCbG9ja1B0cjx2b2lkKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICosIHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxD
cmVkZW50aWFsICopKT4gY2hhbGxlbmdlSGFuZGxlcihWZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5n
Pj4mIHZlY3RvcikKK3sKKyAgICByZXR1cm4gbWFrZUJsb2NrUHRyKFsmXSAoV0tXZWJWaWV3ICp3
ZWJWaWV3LCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5j
b21wbGV0aW9uSGFuZGxlcikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uLCBO
U1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgTlNTdHJpbmcgKm1ldGhvZCA9IGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2Q7CisgICAgICAgIHZlY3Rvci5h
cHBlbmQobWV0aG9kKTsKKyAgICAgICAgaWYgKFttZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJM
QXV0aGVudGljYXRpb25NZXRob2RDbGllbnRDZXJ0aWZpY2F0ZV0pCisgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIGNyZWRlbnRpYWxXaXRoSWRlbnRpdHkoKS5nZXQoKSk7CisgICAgICAgIGlmIChbbWV0aG9k
IGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3RdKQor
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpj
aGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0pLmdldCgpOworfQorCitzdGF0aWMgc2l6ZV90IGNvdW50Q2xp
ZW50Q2VydENoYWxsZW5nZXMoVmVjdG9yPFJldGFpblB0cjxOU1N0cmluZz4+JiB2ZWN0b3IpCit7
CisgICAgdmVjdG9yLnJlbW92ZUFsbE1hdGNoaW5nKFtdKGF1dG8mIG1ldGhvZCkgeworICAgICAg
ICByZXR1cm4gIVttZXRob2QgaXNFcXVhbFRvU3RyaW5nOk5TVVJMQXV0aGVudGljYXRpb25NZXRo
b2RDbGllbnRDZXJ0aWZpY2F0ZV07CisgICAgfSk7CisgICAgcmV0dXJuIHZlY3Rvci5zaXplKCk7
Cit9OworCitURVNUKE11bHRpcGxlQ2xpZW50Q2VydGlmaWNhdGVDb25uZWN0aW9ucywgQmFzaWMp
Cit7CisgICAgYXV0byBzZXJ2ZXIgPSBjbGllbnRDZXJ0U2VydmVyKCk7CisKKyAgICBWZWN0b3I8
UmV0YWluUHRyPE5TU3RyaW5nPj4gbWV0aG9kczsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBjaGFsbGVuZ2VIYW5kbGVyKG1ldGhvZHMp
LmdldCgpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOwor
ICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0
Q2hhbGxlbmdlcyhtZXRob2RzKSwgMXUpOworfQorCitURVNUKE11bHRpcGxlQ2xpZW50Q2VydGlm
aWNhdGVDb25uZWN0aW9ucywgUmVkaXJlY3QpCit7CisgICAgYXV0byBzZXJ2ZXIgPSBjbGllbnRD
ZXJ0U2VydmVyKCk7CisKKyAgICBWZWN0b3I8UmV0YWluUHRyPE5TU3RyaW5nPj4gbWV0aG9kczsK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXdd
KTsKKyAgICBkZWxlZ2F0ZS5nZXQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Ug
PSBjaGFsbGVuZ2VIYW5kbGVyKG1ldGhvZHMpLmdldCgpOworCisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkL3JlZGlyZWN0VG9FcnJvciIsIHNlcnZl
ci5wb3J0KCldXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbl07CisgICAgRVhQRUNUX0VRKGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9k
cyksIDF1KTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpzZXJ2ZXIucmVxdWVzdCgpXTsKKyAg
ICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgIEVYUEVDVF9FUShj
b3VudENsaWVudENlcnRDaGFsbGVuZ2VzKG1ldGhvZHMpLCAxdSk7Cit9CisKK1RFU1QoTXVsdGlw
bGVDbGllbnRDZXJ0aWZpY2F0ZUNvbm5lY3Rpb25zLCBGYWlsdXJlKQoreworICAgIGF1dG8gc2Vy
dmVyID0gY2xpZW50Q2VydFNlcnZlcigpOworCisgICAgVmVjdG9yPFJldGFpblB0cjxOU1N0cmlu
Zz4+IG1ldGhvZHM7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUgbmV3XSk7CisgICAgZGVsZWdhdGUuZ2V0KCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gY2hhbGxlbmdlSGFuZGxlcihtZXRob2RzKS5nZXQoKTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC9lcnJvciIsIHNl
cnZlci5wb3J0KCldXV1dOworICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFs
TmF2aWdhdGlvbl07CisgICAgc2l6ZV90IGNlcnRDaGFsbGVuZ2VzQWZ0ZXJJbml0aWFsRmFpbHVy
ZSA9IGNvdW50Q2xpZW50Q2VydENoYWxsZW5nZXMobWV0aG9kcyk7CisgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5p
c2hOYXZpZ2F0aW9uXTsKKyAgICBFWFBFQ1RfRVEoY291bnRDbGllbnRDZXJ0Q2hhbGxlbmdlcyht
ZXRob2RzKSwgY2VydENoYWxsZW5nZXNBZnRlckluaXRpYWxGYWlsdXJlICsgMSk7Cit9CisKKyNl
bmRpZiAvLyBIQVZFKE5FVFdPUktfRlJBTUVXT1JLKQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCiAKICNlbmRpZiAvLyBIQVZFKFNTTCkKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvSFRUUFNlcnZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvSFRUUFNlcnZlci5oCShyZXZpc2lvbiAyNjAyOTApCisrKyBUb29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL0hUVFBTZXJ2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBjbGFz
cyBIVFRQU2VydmVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgSFRUUFJlc3BvbnNlOwogICAgIGVu
dW0gY2xhc3MgUHJvdG9jb2wgOiB1aW50OF90IHsgSHR0cCwgSHR0cHMsIEh0dHBzV2l0aExlZ2Fj
eVRMUyB9OwotICAgIEhUVFBTZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxT
dHJpbmcsIEhUVFBSZXNwb25zZT4+LCBQcm90b2NvbCA9IFByb3RvY29sOjpIdHRwKTsKKyAgICBI
VFRQU2VydmVyKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8U3RyaW5nLCBIVFRQUmVz
cG9uc2U+PiwgUHJvdG9jb2wgPSBQcm90b2NvbDo6SHR0cCwgRnVuY3Rpb248dm9pZChzZWNfcHJv
dG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxl
dGVfdCk+JiYgPSBudWxscHRyKTsKICAgICB1aW50MTZfdCBwb3J0KCkgY29uc3Q7CiAgICAgTlNV
UkxSZXF1ZXN0ICpyZXF1ZXN0KCkgY29uc3Q7CiAgICAgc2l6ZV90IHRvdGFsUmVxdWVzdHMoKSBj
b25zdCB7IHJldHVybiBtX3RvdGFsUmVxdWVzdHM7IH0KQEAgLTUwLDIwICs1MCwyNSBAQCBwcml2
YXRlOgogICAgIAogICAgIFJldGFpblB0cjxud19saXN0ZW5lcl90PiBtX2xpc3RlbmVyOwogICAg
IGNvbnN0IFByb3RvY29sIG1fcHJvdG9jb2w7CisgICAgY29uc3QgRnVuY3Rpb248dm9pZChzZWNf
cHJvdG9jb2xfbWV0YWRhdGFfdCwgc2VjX3RydXN0X3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29t
cGxldGVfdCk+IG1fY2VydFZlcmlmaWVyOwogICAgIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIVFRQ
UmVzcG9uc2U+IG1fcmVxdWVzdFJlc3BvbnNlTWFwOwogICAgIHNpemVfdCBtX3RvdGFsUmVxdWVz
dHMgeyAwIH07CiB9OwogCiBzdHJ1Y3QgSFRUUFNlcnZlcjo6SFRUUFJlc3BvbnNlIHsKLSAgICBI
VFRQUmVzcG9uc2UoU3RyaW5nJiYgYm9keSkKLSAgICAgICAgOiBib2R5KFdURk1vdmUoYm9keSkp
IHsgfQorICAgIGVudW0gY2xhc3MgVGVybWluYXRlQ29ubmVjdGlvbiB7IE5vLCBZZXMgfTsKKyAg
ICAKKyAgICBIVFRQUmVzcG9uc2UoY29uc3QgU3RyaW5nJiBib2R5KQorICAgICAgICA6IGJvZHko
Ym9keSkgeyB9CiAgICAgSFRUUFJlc3BvbnNlKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVh
ZGVyRmllbGRzLCBTdHJpbmcmJiBib2R5KQogICAgICAgICA6IGhlYWRlckZpZWxkcyhXVEZNb3Zl
KGhlYWRlckZpZWxkcykpCiAgICAgICAgICwgYm9keShXVEZNb3ZlKGJvZHkpKSB7IH0KLSAgICBI
VFRQUmVzcG9uc2UodW5zaWduZWQgc3RhdHVzQ29kZSwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4m
JiBoZWFkZXJGaWVsZHMsIFN0cmluZyYmIGJvZHkgPSB7IH0pCisgICAgSFRUUFJlc3BvbnNlKHVu
c2lnbmVkIHN0YXR1c0NvZGUsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgaGVhZGVyRmllbGRz
ID0geyB9LCBTdHJpbmcmJiBib2R5ID0geyB9KQogICAgICAgICA6IHN0YXR1c0NvZGUoc3RhdHVz
Q29kZSkKICAgICAgICAgLCBoZWFkZXJGaWVsZHMoV1RGTW92ZShoZWFkZXJGaWVsZHMpKQogICAg
ICAgICAsIGJvZHkoV1RGTW92ZShib2R5KSkgeyB9CisgICAgSFRUUFJlc3BvbnNlKFRlcm1pbmF0
ZUNvbm5lY3Rpb24gdGVybWluYXRlQ29ubmVjdGlvbikKKyAgICAgICAgOiB0ZXJtaW5hdGVDb25u
ZWN0aW9uKHRlcm1pbmF0ZUNvbm5lY3Rpb24pIHsgfQogCiAgICAgSFRUUFJlc3BvbnNlKGNvbnN0
IEhUVFBSZXNwb25zZSYpID0gZGVmYXVsdDsKICAgICBIVFRQUmVzcG9uc2UoSFRUUFJlc3BvbnNl
JiYpID0gZGVmYXVsdDsKQEAgLTc0LDYgKzc5LDcgQEAgc3RydWN0IEhUVFBTZXJ2ZXI6OkhUVFBS
ZXNwb25zZSB7CiAgICAgdW5zaWduZWQgc3RhdHVzQ29kZSB7IDIwMCB9OwogICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IGhlYWRlckZpZWxkczsKICAgICBTdHJpbmcgYm9keTsKKyAgICBUZXJt
aW5hdGVDb25uZWN0aW9uIHRlcm1pbmF0ZUNvbm5lY3Rpb24geyBUZXJtaW5hdGVDb25uZWN0aW9u
OjpObyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvY29jb2EvSFRUUFNlcnZlci5tbQkocmV2aXNpb24gMjYwMjkwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9IVFRQU2VydmVyLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
Nyw4ICszNyw5IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotSFRUUFNlcnZlcjo6
SFRUUFNlcnZlcihzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFJl
c3BvbnNlPj4gcmVzcG9uc2VzLCBQcm90b2NvbCBwcm90b2NvbCkKK0hUVFBTZXJ2ZXI6OkhUVFBT
ZXJ2ZXIoc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxTdHJpbmcsIEhUVFBSZXNwb25z
ZT4+IHJlc3BvbnNlcywgUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoc2VjX3Byb3Rv
Y29sX21ldGFkYXRhX3QsIHNlY190cnVzdF90LCBzZWNfcHJvdG9jb2xfdmVyaWZ5X2NvbXBsZXRl
X3QpPiYmIHZlcmlmeSkKICAgICA6IG1fcHJvdG9jb2wocHJvdG9jb2wpCisgICAgLCBtX2NlcnRW
ZXJpZmllcihXVEZNb3ZlKHZlcmlmeSkpCiAgICAgLCBtX3JlcXVlc3RSZXNwb25zZU1hcChbXShz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPFN0cmluZywgSFRUUFNlcnZlcjo6SFRUUFJl
c3BvbnNlPj4gbGlzdCkgewogICAgICAgICBIYXNoTWFwPFN0cmluZywgSFRUUFNlcnZlcjo6SFRU
UFJlc3BvbnNlPiBtYXA7CiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGxpc3QpCkBAIC01Myw5
ICs1NCwxNSBAQCAgICAgOiBtX3Byb3RvY29sKHByb3RvY29sKQogICAgICAgICBzZWNfcHJvdG9j
b2xfb3B0aW9uc19zZXRfbG9jYWxfaWRlbnRpdHkob3B0aW9ucy5nZXQoKSwgaWRlbnRpdHkuZ2V0
KCkpOwogICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6Okh0dHBzV2l0aExlZ2FjeVRM
UykKICAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF9tYXhfdGxzX3Byb3RvY29s
X3ZlcnNpb24ob3B0aW9ucy5nZXQoKSwgdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwKTsKKyAg
ICAgICAgaWYgKG1fY2VydFZlcmlmaWVyKSB7CisgICAgICAgICAgICBzZWNfcHJvdG9jb2xfb3B0
aW9uc19zZXRfcGVlcl9hdXRoZW50aWNhdGlvbl9yZXF1aXJlZChvcHRpb25zLmdldCgpLCB0cnVl
KTsKKyAgICAgICAgICAgIHNlY19wcm90b2NvbF9vcHRpb25zX3NldF92ZXJpZnlfYmxvY2sob3B0
aW9ucy5nZXQoKSwgXihzZWNfcHJvdG9jb2xfbWV0YWRhdGFfdCBtZXRhZGF0YSwgc2VjX3RydXN0
X3QgdHJ1c3QsIHNlY19wcm90b2NvbF92ZXJpZnlfY29tcGxldGVfdCBjb21wbGV0aW9uKSB7Cisg
ICAgICAgICAgICAgICAgbV9jZXJ0VmVyaWZpZXIobWV0YWRhdGEsIHRydXN0LCBjb21wbGV0aW9u
KTsKKyAgICAgICAgICAgIH0sIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCkpOworICAgICAgICB9
CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0ocHJvdG9jb2xPcHRpb25zKTsKLSAgICAgICAg
QVNTRVJUKHByb3RvY29sICE9IFByb3RvY29sOjpIdHRwc1dpdGhMZWdhY3lUTFMpOworICAgICAg
ICBBU1NFUlRfVU5VU0VEKHByb3RvY29sLCBwcm90b2NvbCAhPSBQcm90b2NvbDo6SHR0cHNXaXRo
TGVnYWN5VExTKTsKICNlbmRpZgogICAgIH07CiAgICAgYXV0byBwYXJhbWV0ZXJzID0gYWRvcHRO
Uyhud19wYXJhbWV0ZXJzX2NyZWF0ZV9zZWN1cmVfdGNwKGNvbmZpZ3VyZVRMUywgTldfUEFSQU1F
VEVSU19ERUZBVUxUX0NPTkZJR1VSQVRJT04pKTsKQEAgLTgzLDYgKzkwLDggQEAgc3RhdGljIFN0
cmluZyBzdGF0dXNUZXh0KHVuc2lnbmVkIHN0YXR1cwogICAgICAgICByZXR1cm4gIk9LIl9zOwog
ICAgIGNhc2UgMzAxOgogICAgICAgICByZXR1cm4gIk1vdmVkIFBlcm1hbmVudGx5Il9zOworICAg
IGNhc2UgNDA0OgorICAgICAgICByZXR1cm4gIk5vdCBGb3VuZCJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTEyMSw2ICsxMzAsMTAgQEAg
dm9pZCBIVFRQU2VydmVyOjpyZXNwb25kVG9SZXF1ZXN0cyhud19jbwogCiAgICAgICAgIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4gc2VuZFJlc3BvbnNlID0gW3RoaXMsIGNvbm5lY3Rpb24gPSBy
ZXRhaW5QdHIoY29ubmVjdGlvbiksIGNvbnRleHQgPSByZXRhaW5QdHIoY29udGV4dCksIHBhdGgg
PSBXVEZNb3ZlKHBhdGgpXSB7CiAgICAgICAgICAgICBhdXRvIHJlc3BvbnNlID0gbV9yZXF1ZXN0
UmVzcG9uc2VNYXAuZ2V0KHBhdGgpOworICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnRlcm1pbmF0
ZUNvbm5lY3Rpb24gPT0gSFRUUFJlc3BvbnNlOjpUZXJtaW5hdGVDb25uZWN0aW9uOjpZZXMpIHsK
KyAgICAgICAgICAgICAgICBud19jb25uZWN0aW9uX2NhbmNlbChjb25uZWN0aW9uLmdldCgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBTdHJp
bmdCdWlsZGVyIHJlc3BvbnNlQnVpbGRlcjsKICAgICAgICAgICAgIHJlc3BvbnNlQnVpbGRlci5h
cHBlbmQoIkhUVFAvMS4xICIpOwogICAgICAgICAgICAgcmVzcG9uc2VCdWlsZGVyLmFwcGVuZE51
bWJlcihyZXNwb25zZS5zdGF0dXNDb2RlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>