<?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>205519</bug_id>
          
          <creation_ts>2019-12-20 14:14:32 -0800</creation_ts>
          <short_desc>Add logging for Modern EME methods.</short_desc>
          <delta_ts>2020-03-10 11:26:18 -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="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>hta</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1600924</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-12-20 14:14:32 -0800</bug_when>
    <thetext>Add logging for Modern EME methods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600926</commentid>
    <comment_count>1</comment_count>
      <attachid>386252</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-12-20 14:16:24 -0800</bug_when>
    <thetext>Created attachment 386252
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600972</commentid>
    <comment_count>2</comment_count>
      <attachid>386264</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-12-20 15:15:53 -0800</bug_when>
    <thetext>Created attachment 386264
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600982</commentid>
    <comment_count>3</comment_count>
      <attachid>386264</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-20 15:26:12 -0800</bug_when>
    <thetext>Comment on attachment 386264
Patch

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

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:61
&gt; +    auto identifier = WTF::Logger::LogSiteIdentifier(&quot;MediaKeys&quot;, __func__, this);

We shouldn&apos;t log pointer values.

&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:97
&gt; +    auto identifier = WTF::Logger::LogSiteIdentifier(&quot;MediaKeys&quot;, __func__, this);

Ditto.

&gt; Source/WebCore/Modules/encryptedmedia/NavigatorEME.cpp:78
&gt; +    auto identifier = WTF::Logger::LogSiteIdentifier(&quot;NavigatorEME&quot;, __func__, &amp;navigator);

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1600989</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2019-12-20 15:40:10 -0800</bug_when>
    <thetext>(In reply to Eric Carlson from comment #3)
&gt; Comment on attachment 386264 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=386264&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:61
&gt; &gt; +    auto identifier = WTF::Logger::LogSiteIdentifier(&quot;MediaKeys&quot;, __func__, this);
&gt; 
&gt; We shouldn&apos;t log pointer values.

I thought that was the whole point of LogSiteIdentifier?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601068</commentid>
    <comment_count>5</comment_count>
      <attachid>386264</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2019-12-20 22:47:56 -0800</bug_when>
    <thetext>Comment on attachment 386264
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:61
&gt;&gt;&gt; +    auto identifier = WTF::Logger::LogSiteIdentifier(&quot;MediaKeys&quot;, __func__, this);
&gt;&gt; 
&gt;&gt; We shouldn&apos;t log pointer values.
&gt; 
&gt; I thought that was the whole point of LogSiteIdentifier?

The identifier should be a unique, non-pointer, value. Many objects use the uniqueLogIdentifier() function to generate an id.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603328</commentid>
    <comment_count>6</comment_count>
      <attachid>386900</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-01-06 15:39:01 -0800</bug_when>
    <thetext>Created attachment 386900
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1603841</commentid>
    <comment_count>7</comment_count>
      <attachid>387047</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-01-07 15:47:21 -0800</bug_when>
    <thetext>Created attachment 387047
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628275</commentid>
    <comment_count>8</comment_count>
      <attachid>393156</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2020-03-10 09:22:07 -0700</bug_when>
    <thetext>Created attachment 393156
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628334</commentid>
    <comment_count>9</comment_count>
      <attachid>393156</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-10 11:25:38 -0700</bug_when>
    <thetext>Comment on attachment 393156
Patch for landing

Clearing flags on attachment: 393156

Committed r258221: &lt;https://trac.webkit.org/changeset/258221&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628335</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-03-10 11:25:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1628336</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-03-10 11:26:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/60281804&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386252</attachid>
            <date>2019-12-20 14:16:24 -0800</date>
            <delta_ts>2019-12-20 15:15:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205519-20191220141623.patch</filename>
            <type>text/plain</type>
            <size>50669</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU1ZjQ0MmY4NTExMzY3
OTJlNWU0Y2IwOTY0YzM4MzU0NGU0MDNmMC4uZWViOTVmZjBkOWE3OWE1OWVmNjk3ZjE2NDhiNTFk
NWQ0NDMyMWI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTEyLTIwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5nIGZvciBN
b2Rlcm4gRU1FIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Np
b246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2Vzc2lvbkNsb3NlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpj
cmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nQXJndW1lbnQ8VmVjdG9yPFQ+Pjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxPcHRpb25hbDxUPj46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMTktMTIt
MTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWFLZXlT
ZXNzaW9uLmxvYWQoKSBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCmluZGV4IGRhMTliYmZmMmM3Y2U4
MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjgxMGIzNWY5ZTRjYWRhMzg3MTE5YWU5OTE2MjI1
NjlmNDFjMzQ2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKQEAgLTQ5LDIwICs0OSwyMiBAQAogI2lu
Y2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlh
S2V5U2Vzc2lvbik7CiAKLVJlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYm
IGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiYmIGluc3RhbmNlU2Vzc2lvbikKK1JlZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5
U2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxNZWRpYUtleXM+JiYg
a2V5cywgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZVNl
c3Npb24+JiYgaW5zdGFuY2VTZXNzaW9uKQogewotICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVm
KCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQsIFdURk1vdmUoa2V5cyksIHNlc3Npb25UeXBl
LCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZN
b3ZlKGluc3RhbmNlU2Vzc2lvbikpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3
IE1lZGlhS2V5U2Vzc2lvbihkb2N1bWVudCwgV1RGTW92ZShrZXlzKSwgc2Vzc2lvblR5cGUsIHVz
ZURpc3RpbmN0aXZlSWRlbnRpZmllciwgV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUo
aW5zdGFuY2VTZXNzaW9uKSkpOwogICAgIHNlc3Npb24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAg
IHJldHVybiBzZXNzaW9uOwogfQogCi1NZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBrZXlz
LCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRl
bnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlU2Vzc2lv
bj4mJiBpbnN0YW5jZVNlc3Npb24pCi0gICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCitN
ZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQ
dHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJv
b2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBS
ZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNlU2Vzc2lvbikKKyAgICA6IEFjdGl2ZURP
TU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2xvZ2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAg
ICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQogICAgICwgbV9leHBpcmF0aW9uKHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkpCiAgICAgLCBtX2Nsb3NlZFByb21pc2UobWFr
ZVVuaXF1ZVJlZjxDbG9zZWRQcm9taXNlPigpKQpAQCAtNzYsNyArNzgsNyBAQCBNZWRpYUtleVNl
c3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
ZWFrUHRyPE1lZGlhSwogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2
CiAgICAgLy8gY3JlYXRlU2Vzc2lvbigpLCBjdGQuCiAKLSAgICBMT0coRU1FLCAiRU1FIC0gbmV3
IHNlc3Npb24gY3JlYXRlZCIpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIsICJzZXNzaW9u
VHlwZSgiLCBzZXNzaW9uVHlwZSwgIiksIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllcigiLCB1c2VE
aXN0aW5jdGl2ZUlkZW50aWZpZXIsICIpIik7CiAKICAgICAvLyAzLjEuIExldCB0aGUgc2Vzc2lv
bklkIGF0dHJpYnV0ZSBiZSB0aGUgZW1wdHkgc3RyaW5nLgogICAgIC8vIDMuMi4gTGV0IHRoZSBl
eHBpcmF0aW9uIGF0dHJpYnV0ZSBiZSBOYU4uCkBAIC0xMjgsOSArMTMwLDExIEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBCdWZmCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUg
dXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRo
aXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIElu
dmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElmIHRoaXMgb2JqZWN0J3MgdW5pbml0aWFsaXpl
ZCB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFs
aWRTdGF0ZUVycm9yLgotICAgIExPRyhFTUUsICJFTUUgLSBnZW5lcmF0ZSByZXF1ZXN0Iik7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiaW5pdERhdGFUeXBlKCIsIGluaXREYXRhVHlwZSwgIiksIGluaXREYXRhLmxlbmd0aCgi
LCBpbml0RGF0YS5sZW5ndGgoKSwgIikiKTsKIAogICAgIGlmIChtX2Nsb3NlZCB8fCAhbV91bmlu
aXRpYWxpemVkKSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xv
c2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0aWFsaXplZCgiLCAhbV91bmluaXRpYWxpemVk
LCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQxLDYgKzE0NSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBCdWZmCiAgICAgLy8gNC4gSWYgaW5pdERhdGFUeXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgog
ICAgIC8vIDUuIElmIGluaXREYXRhIGlzIGFuIGVtcHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAoaW5pdERh
dGFUeXBlLmlzRW1wdHkoKSB8fCAhaW5pdERhdGEubGVuZ3RoKCkpIHsKKyAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBpbml0RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFU
eXBlLmlzRW1wdHkoKSwgIikgb3IgaW5pdERhdGEgZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgp
LCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTE0OSw2ICsxNTQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2Vu
ZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgog
ICAgIC8vICAgIGluaXREYXRhVHlwZSBhcyBhbiBJbml0aWFsaXphdGlvbiBEYXRhIFR5cGUsIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLiBTdHJpbmcK
ICAgICAvLyAgICBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgogICAgIGlmICghbV9pbXBs
ZW1lbnRhdGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5cGUoaW5pdERhdGFUeXBlKSkgeworICAgICAg
ICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0
YVR5cGUsICIpIHVuc3VwcG9ydGVkIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBw
b3J0ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTcsMTkgKzE2MywyMSBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIC8vIDguIExldCBzZXNzaW9uIHR5cGUgYmUg
dGhpcyBvYmplY3QncyBzZXNzaW9uIHR5cGUuCiAgICAgLy8gOS4gTGV0IHByb21pc2UgYmUgYSBu
ZXcgcHJvbWlzZS4KICAgICAvLyAxMC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxs
ZWw6Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpO
ZXR3b3JraW5nLCBbdGhpcywgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0
YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFs
aXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgaW5pdERhdGEgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5p
dERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1v
dmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5p
dCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERhdGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRo
IGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6
ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFuZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0
IGRhdGEuCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZEluaXREYXRhID0g
bV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRh
KTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICgh
c2FuaXRpemVkSW5pdERhdGEpIHsKKyAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6
OnRhc2soKSBSZWplY3RlZDogY2Fubm90IHNhbml0aXplIGluaXQgZGF0YSIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyAxMC40LiBJZiBzYW5pdGl6ZWQgaW5pdCBkYXRhIGlzIGVtcHR5
LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCiAgICAgICAgIGlmIChz
YW5pdGl6ZWRJbml0RGF0YS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVu
dGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IGVtcHR5IHNhbml0aXplZCBpbml0IGRhdGEiKTsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4MSw2ICsxODksNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwg
Y29uc3QgQnVmZgogICAgICAgICAvLyAxMC45LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CiAgICAgICAgIC8vIDEwLjkuMS4gSWYgdGhlIHNhbml0aXplZCBpbml0
IGRhdGEgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY2RtLCByZWplY3QgcHJvbWlzZSB3aXRoIGEg
Tm90U3VwcG9ydGVkRXJyb3IuCiAgICAgICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9y
dHNJbml0RGF0YShpbml0RGF0YVR5cGUsICpzYW5pdGl6ZWRJbml0RGF0YSkpIHsKKyAgICAgICAg
ICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogdW5zdXBwb3J0ZWQg
aW5pdERhdGFUeXBlICgiLCBpbml0RGF0YVR5cGUsICIpIG9yIHNhbml0aXplZCBpbml0RGF0YSIp
OwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjA0LDggKzIxMyw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xhdGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAg
ICAgfQogCi0gICAgICAgIExPRyhFTUUsICJFTUUgLSByZXF1ZXN0IGxpY2Vuc2UgZnJvbSBDRE0g
aW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNl
bnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFz
ZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3Qg
U3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFu
Y2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9p
bnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlw
ZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmll
ciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAg
ICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMjI2LDkg
KzIzNCwxMCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0
b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBtZXNzYWdlVHlwZSwgc2Vzc2lvbklkLCBzdWNjZWVkZWRd
ICgpIG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBtZXNzYWdlVHlwZSwgc2Vzc2lvbklk
LCBzdWNjZWVkZWQsIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxl
IHsKICAgICAgICAgICAgICAgICAvLyAxMC4xMC4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBz
dGVwcyBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3Nl
IG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYg
KHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7
CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWpl
Y3RlZDogZmFpbGVkIHRvIHJlcXVlc3QgbGljZW5zZSIpOwogICAgICAgICAgICAgICAgICAgICBw
cm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMjQyLDYgKzI1MSw3IEBAIHZvaWQgTWVkaWFL
ZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBl
LCBjb25zdCBCdWZmCiAgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUs
IG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgLy8gMTAuOS4zLiBSZXNvbHZlIHByb21pc2Uu
CisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVk
Iik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0pOwpAQCAtMjU1LDkgKzI2NSwxMyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aQogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRp
YWtleXNlc3Npb24tbG9hZAogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CiAKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICJzZXNzaW9uSWQoIiwgc2Vzc2lvbklkLCAiKSIpOworCiAgICAgLy8gMS4g
SWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGgg
YW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyB1bmluaXRp
YWxpemVkIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4g
SW52YWxpZFN0YXRlRXJyb3IuCiAgICAgaWYgKG1fY2xvc2VkIHx8ICFtX3VuaW5pdGlhbGl6ZWQp
IHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBjbG9zZWQoIiwgbV9j
bG9zZWQsICIpIG9yICF1bmluaXRpYWxpemVkKCIsICFtX3VuaW5pdGlhbGl6ZWQsICIpIik7CiAg
ICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0yNjgsNiArMjgyLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAg
ICAvLyA0LiBJZiBzZXNzaW9uSWQgaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIGEgcHJvbWlz
ZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgLy8gNS4gSWYg
dGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcyBwZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxn
b3JpdGhtIG9uIHRoaXMgb2JqZWN0J3Mgc2Vzc2lvbiB0eXBlIGlzIGZhbHNlLCByZXR1cm4gYSBw
cm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAo
c2Vzc2lvbklkLmlzRW1wdHkoKSB8fCBtX3Nlc3Npb25UeXBlID09IE1lZGlhS2V5U2Vzc2lvblR5
cGU6OlRlbXBvcmFyeSkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6
IHNlc3Npb25JRCBlbXB0eSgiLCBzZXNzaW9uSWQuaXNFbXB0eSgpLCAiKSBvciBzZXNzaW9uVHlw
ZSA9PSBUZW1wb3JhcnkgKCIsIG1fc2Vzc2lvblR5cGUgPT0gTWVkaWFLZXlTZXNzaW9uVHlwZTo6
VGVtcG9yYXJ5LCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3NywxMSArMjkyLDEyIEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pCiAKICAgICAvLyA3LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAg
IC8vIDguIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IHNlc3Npb25JZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2lu
ZywgW3RoaXMsIHNlc3Npb25JZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gOC4xLiBM
ZXQgc2FuaXRpemVkIHNlc3Npb24gSUQgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2
ZXJzaW9uIG9mIHNlc3Npb25JZC4KICAgICAgICAgLy8gOC4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0
ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgc2Vzc2lvbiBJRCBpcyBlbXB0eSwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBPcHRpb25hbDxT
dHJpbmc+IHNhbml0aXplZFNlc3Npb25JZCA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplU2Vz
c2lvbklkKHNlc3Npb25JZCk7CiAgICAgICAgIGlmICghc2FuaXRpemVkU2Vzc2lvbklkIHx8IHNh
bml0aXplZFNlc3Npb25JZC0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVu
dGlmaWVyLCAiUmVqZWN0ZWQ6IHNhbml0aXplZFNTZXNzaW9uSUQgZW1wdHkiKTsKICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0yOTgsNyArMzE0LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29u
c3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAg
ICAgLy8gOC42LiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAgICAgICAgIC8vIDguNy4gTGV0
IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2Rt
IGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA4LjguIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUg
dGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmxvYWRTZXNz
aW9uKG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQsIG9yaWdpbiwgW3RoaXMsIHdl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
c2FuaXRpemVkU2Vzc2lvbklkID0gKnNhbml0aXplZFNlc3Npb25JZF0gKE9wdGlvbmFsPENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtub3duS2V5cywgT3B0aW9uYWw8ZG91
YmxlPiYmIGV4cGlyYXRpb24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4m
JiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENE
TUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewor
ICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+bG9hZFNlc3Npb24obV9zZXNzaW9uVHlwZSwgKnNh
bml0aXplZFNlc3Npb25JZCwgb3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQgPSAq
c2FuaXRpemVkU2Vzc2lvbklkLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKE9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGtub3duS2V5cywg
T3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb24sIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lv
bjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBz
dWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUp
IG11dGFibGUgewogICAgICAgICAgICAgLy8gOC44LjEuIElmIHRoZXJlIGlzIG5vIGRhdGEgc3Rv
cmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbiwgcmVzb2x2ZSBw
cm9taXNlIHdpdGggZmFsc2UgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICAgICAgLy8g
OC44LjIuIElmIHRoZSBzdG9yZWQgc2Vzc2lvbidzIHNlc3Npb24gdHlwZSBpcyBub3QgdGhlIHNh
bWUgYXMgdGhlIGN1cnJlbnQgTWVkaWFLZXlTZXNzaW9uIHNlc3Npb24gdHlwZSwgcmVqZWN0IHBy
b21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICAgICAgLy8gOC44
LjMuIExldCBzZXNzaW9uIGRhdGEgYmUgdGhlIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVk
IHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbi4gVGhpcyBtdXN0IG5vdCBpbmNsdWRlIGRhdGEgZnJv
bSBvdGhlciBvcmlnaW4ocykgb3IgdGhhdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdp
bi4KQEAgLTMxMywxMiArMzI5LDE1IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0
IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAg
ICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZhaWx1cmUpIHsKICAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Np
b25EYXRhOgorICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNr
KCkgUmVzb2x2ZWQ6IE5vU2Vzc2lvbkRhdGEiKTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGU6CisgICAgICAgICAgICAgICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogTWlzbWF0Y2hlZFNlc3Npb25UeXBl
Iik7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5j
ZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6UXVvdGFFeGNlZWRlZDoKKyAgICAgICAgICAg
ICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBRdW90YUV4
Y2VlZGVkIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChRdW90YUV4Y2Vl
ZGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAg
Y2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9uZToKQEAgLTMy
OSw5ICszNDgsMTAgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgLy8gOC45LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrbm93bktleXMgPSBXVEZNb3ZlKGtub3duS2V5cyks
IGV4cGlyYXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgc2FuaXRpemVkU2Vzc2lvbklkLCBzdWNjZWVkZWQsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RB
bGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtub3duS2V5cyA9IFdU
Rk1vdmUoa25vd25LZXlzKSwgZXhwaXJhdGlvbiA9IFdURk1vdmUoZXhwaXJhdGlvbiksIG1lc3Nh
Z2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQsIHN1Y2NlZWRlZCwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA4LjkuMS4gSWYgYW55IG9mIHRoZSBw
cmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgdGhlIGFwcHJvcHJp
YXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogT3RoZXIgZmFpbHVyZSIp
OwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3Ip
OwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtMzU0
LDYgKzM3NCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgICAgICAgICAgICAg
IGVucXVldWVNZXNzYWdlKG1lc3NhZ2UtPmZpcnN0LCBXVEZNb3ZlKG1lc3NhZ2UtPnNlY29uZCkp
OwogCiAgICAgICAgICAgICAgICAgLy8gOC45LjcuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUu
CisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVk
Iik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTM3MCwxNSArMzkxLDE4IEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVm
PERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0
aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElm
IHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFu
IEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElmIHRoaXMgb2JqZWN0J3MgY2FsbGFibGUg
dmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlk
U3RhdGVFcnJvci4KLSAgICBMT0coRU1FLCAiRU1FIC0gdXBkYXRlIHNlc3Npb24gZm9yICVzIiwg
bV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURF
TlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAicmVzcG9uc2UubGVuZ3RoKCIsIHJl
c3BvbnNlLmxlbmd0aCgpLCAiKSIpOwogCiAgICAgaWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxl
KSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1f
Y2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1fY2FsbGFibGUsICIpIik7CiAgICAgICAgIHBy
b21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICAvLyAzLiBJZiByZXNwb25zZSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0dXJuIGEgcHJv
bWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKCFy
ZXNwb25zZS5sZW5ndGgoKSkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0
ZWQ6IGVtcHR5IHJlc3BvbnNlIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzg2LDEyICs0MTAsMTMgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYKICAgICAvLyA0LiBMZXQgcmVzcG9uc2UgY29weSBiZSBhIGNvcHkgb2Yg
dGhlIGNvbnRlbnRzIG9mIHRoZSByZXNwb25zZSBwYXJhbWV0ZXIuCiAgICAgLy8gNS4gTGV0IHBy
b21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcmVzcG9uc2UgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShyZXNwb25zZS5kYXRhKCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgLy8gNi4xLiBMZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEg
dmFsaWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiByZXNwb25zZSBjb3B5LgogICAg
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50
YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9uc2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYg
dGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVt
cHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
ICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwgc2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHko
KSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzayAtIFJlamVjdGVk
OiBlbXB0eSBzYW5pdGl6ZWQgcmVzcG9uc2UiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MDEsNyAr
NDI2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2Um
IHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vz
c2lvbiBjbG9zZWQgYmUgZmFsc2UuCiAgICAgICAgIC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RN
IGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVl
LgogICAgICAgICAvLyA2LjcuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9u
SWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRSZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vz
c2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwg
T3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Np
b246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNo
YW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYg
bWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRh
YmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogCkBAIC00MjgsNyArNDUzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25z
dCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAgICAg
ICAgIC8vIE5PVEU6IFN0ZXBzIDYuNy4xLiBhbmQgNi43LjIuIHNob3VsZCBiZSBpbXBsZW1lbnRl
ZCBpbiBDRE1JbnN0YW5jZS4KIAogICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7Ci0gICAgICAgICAgICAgICAgTE9H
KEVNRSwgIkVNRSAtIGZhaWxlZCB0byB1cGRhdGUgQ0RNIGxpY2Vuc2UgZm9yICVzIiwgbV9zZXNz
aW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmll
ciwgIjo6dGFzaygpIFJlamVjdGVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
NDM3LDggKzQ2Miw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVy
U291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgICAgICAvLyAg
IDYuNy4zLjEuIExldCBtZXNzYWdlIGJlIHRoYXQgbWVzc2FnZS4KICAgICAgICAgICAgIC8vICAg
Ni43LjMuMi4gTGV0IG1lc3NhZ2UgdHlwZSBiZSB0aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlNZXNz
YWdlVHlwZSBmb3IgdGhlIG1lc3NhZ2UuCiAgICAgICAgICAgICAvLyA2LjguIFF1ZXVlIGEgdGFz
ayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHNlc3Np
b25XYXNDbG9zZWQsIGNoYW5nZWRLZXlzID0gV1RGTW92ZShjaGFuZ2VkS2V5cyksIGNoYW5nZWRF
eHBpcmF0aW9uID0gV1RGTW92ZShjaGFuZ2VkRXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3Zl
KG1lc3NhZ2UpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIHVwZGF0aW5nIENETSBsaWNlbnNlIHN1Y2NlZWRl
ZCBmb3Igc2Vzc2lvbiAlcywgc2VuZGluZyBhIG1lc3NhZ2UgdG8gdGhlIGxpY2Vuc2Ugc2VydmVy
IiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNz
aW9uV2FzQ2xvc2VkLCBjaGFuZ2VkS2V5cyA9IFdURk1vdmUoY2hhbmdlZEtleXMpLCBjaGFuZ2Vk
RXhwaXJhdGlvbiA9IFdURk1vdmUoY2hhbmdlZEV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92
ZShtZXNzYWdlKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA2LjguMS4K
ICAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbldhc0Nsb3NlZCkgewogICAgICAgICAgICAgICAg
ICAgICAvLyDihrMgSWYgc2Vzc2lvbiBjbG9zZWQgaXMgdHJ1ZToKQEAgLTQ4NCw2ICs1MDgsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9u
c2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgICAgIC8vIDYuOC4yLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJv
bWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDk3LDM3
ICs1MjIsNDIgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSkKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNkb20tbWVkaWFrZXlzZXNzaW9uLWNsb3NlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0
IDA5IE5vdmVtYmVyIDIwMTYKIAorICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7
CisgICAgSU5GT19MT0coaWRlbnRpZmllcik7CisKICAgICAvLyAxLiBMZXQgc2Vzc2lvbiBiZSB0
aGUgYXNzb2NpYXRlZCBNZWRpYUtleVNlc3Npb24gb2JqZWN0LgogICAgIC8vIDIuIElmIHNlc3Np
b24gaXMgY2xvc2VkLCByZXR1cm4gYSByZXNvbHZlZCBwcm9taXNlLgogICAgIExPRyhFTUUsICJF
TUUgLSBjbG9zaW5nIHNlc3Npb24gJXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKIAog
ICAgIGlmIChtX2Nsb3NlZCkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVzb2x2
ZWQ6IGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDMuIElmIHNlc3Npb24ncyBjYWxsYWJsZSB2YWx1
ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0
ZUVycm9yLgogICAgIGlmICghbV9jYWxsYWJsZSkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiUmVqZWN0ZWQ6ICFjYWxsYWJsZSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gNC4gTGV0
IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA1LiBSdW4gdGhlIGZvbGxvd2luZyBz
dGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
Ly8gNS4xLiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgc2Vzc2lv
bidzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNS4yLiBVc2UgY2RtIHRvIGNsb3Nl
IHRoZSBrZXkgc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggc2Vzc2lvbi4KLSAgICAgICAgTE9HKEVN
RSwgIkVNRSAtIGNsb3NpbmcgQ0RNIHNlc3Npb24gJXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0
YSgpKTsKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmNsb3NlU2Vzc2lvbihtX3Nlc3Npb25J
ZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5jbG9z
ZVNlc3Npb24obV9zZXNzaW9uSWQsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICAvLyA1LjMuIFF1ZXVlIGEgdGFzayB0byBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmpl
Y3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBp
bmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gNS4zLjEuIFJ1biB0aGUgU2Vzc2lvbiBD
bG9zZWQgYWxnb3JpdGhtIG9uIHRoZSBzZXNzaW9uLgogICAgICAgICAgICAgICAgIHNlc3Npb25D
bG9zZWQoKTsKIAogICAgICAgICAgICAgICAgIC8vIDUuMy4yLiBSZXNvbHZlIHByb21pc2UuCisg
ICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7
CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0pOwpAQCAtNTQzLDIyICs1NzMsMjUgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJl
bW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKICAgICAvLyAxLiBJZiB0aGlz
IG9iamVjdCBpcyBjbG9zZWQsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZh
bGlkU3RhdGVFcnJvci4KICAgICAvLyAyLiBJZiB0aGlzIG9iamVjdCdzIGNhbGxhYmxlIHZhbHVl
IGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRl
RXJyb3IuCi0gICAgTE9HKEVNRSwgIkVNRSAtIHJlbW92aW5nIHNlc3Npb24gJXMiLCBtX3Nlc3Np
b25JZC51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJ
RVI7CisgICAgSU5GT19MT0coaWRlbnRpZmllcik7CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1f
Y2FsbGFibGUpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBjbG9z
ZWQoIiwgbV9jbG9zZWQsICIpIG9yICFjYWxsYWJsZSgiLCAhbV9jYWxsYWJsZSwgIikiKTsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIC8vIDMuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAg
Ly8gNC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVy
KV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDQuMS4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3Rh
bmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAg
ICAgICAvLyA0LjIuIExldCBtZXNzYWdlIGJlIG51bGwuCiAgICAgICAgIC8vIDQuMy4gTGV0IG1l
c3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAgIC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVt
b3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFy
ZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNz
aW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9
IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNTc3LDcgKzYx
MCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQogICAgICAgICAgICAgLy8gTk9URTogU3RlcCA0LjQuMS4gc2hvdWxkIGJlIGlt
cGxlbWVudGVkIGluIENETUluc3RhbmNlLgogCiAgICAgICAgICAgICAvLyA0LjUuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtl
eXMgPSBXVEZNb3ZlKGtleXMpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVk
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcs
IFt0aGlzLCBrZXlzID0gV1RGTW92ZShrZXlzKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSks
IHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyA0LjUuMS4g
UnVuIHRoZSBVcGRhdGUgS2V5IFN0YXR1c2VzIGFsZ29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJv
dmlkaW5nIGFsbCBrZXkgSUQocykgaW4gdGhlIHNlc3Npb24gYWxvbmcgd2l0aCB0aGUgInJlbGVh
c2VkIiBNZWRpYUtleVN0YXR1cyB2YWx1ZSBmb3IgZWFjaC4KICAgICAgICAgICAgICAgICB1cGRh
dGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleXMpKTsKIApAQCAtNTg2LDYgKzYxOSw3IEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQog
CiAgICAgICAgICAgICAgICAgLy8gNC41LjMuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBz
IGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFt
ZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgICAgICBpZiAoc3Vj
Y2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBmYWlsZWQi
KTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9y
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTU5
Niw2ICs2MzAsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UoTWVk
aWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlbGVhc2UsICptZXNzYWdlKTsKIAogICAgICAgICAg
ICAgICAgIC8vIDQuNS42LiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIlJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNjkwLDcgKzcyNSw3IEBA
IHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9uQ2xvc2VkKCkKIHsKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNzZXNzaW9uLWNsb3NlZAogICAgIC8vIFcz
QyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0gICAgTE9HKEVNRSwgIkVNRSAtIHNl
c3Npb24gJXMgd2FzIGNsb3NlZCIsIG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOworICAgIElO
Rk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFz
c29jaWF0ZWQgTWVkaWFLZXlTZXNzaW9uIG9iamVjdC4KICAgICAvLyAyLiBJZiBzZXNzaW9uJ3Mg
c2Vzc2lvbiB0eXBlIGlzICJwZXJzaXN0ZW50LXVzYWdlLXJlY29yZCIsIGV4ZWN1dGUgdGhlIGZv
bGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKQEAgLTc0Miw2ICs3NzcsMTEgQEAgY29uc3QgY2hh
ciogTWVkaWFLZXlTZXNzaW9uOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1
cm4gIk1lZGlhS2V5U2Vzc2lvbiI7CiB9CiAKK1dURkxvZ0NoYW5uZWwmIE1lZGlhS2V5U2Vzc2lv
bjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIExvZ0VNRTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmluZGV4IGU1ZjEyZGVjYzZl
NTQ4MWI5OGEyOWM4NzliYzlhYzIwYWZjMjcwZjAuLjVjYjM3NjdjZWRkYjEzZTMyNjU2NmZmZjAx
YjZiMWNkYzBiOTVkNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNs
dWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCitu
YW1lc3BhY2UgV1RGIHsKK2NsYXNzIExvZ2dlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBCdWZmZXJTb3VyY2U7CkBAIC01Nyw3ICs2MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1l
IElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbiBm
aW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRh
cmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ0RNSW5z
dGFuY2VTZXNzaW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhS2V5
U2Vzc2lvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYUtleVNlc3Npb24+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5
U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBS
ZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAgICBzdGF0aWMgUmVmPE1lZGlhS2V5U2Vzc2lv
bj4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lv
blR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RN
SW5zdGFuY2VTZXNzaW9uPiYmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtleVNlc3Npb24oKTsKIAog
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6cmVmOwpAQCAtODQsNyArODgs
NyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4m
Jik7CisgICAgTWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYs
IE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8
Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKICAgICB2b2lkIGVucXVldWVNZXNz
YWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQg
dXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwpAQCAt
MTA0LDYgKzEwOCwxMyBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNv
bnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVycmlkZTsKIAorICAgIC8v
IExvZ2dlckhlbHBlcgorICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJl
dHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsg
cmV0dXJuICJNZWRpYUtleVNlc3Npb24iOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5l
bCgpIGNvbnN0OworICAgIGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVy
biB0aGlzOyB9CisKKyAgICBSZWY8V1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIFdlYWtQdHI8
TWVkaWFLZXlzPiBtX2tleXM7CiAgICAgU3RyaW5nIG1fc2Vzc2lvbklkOwogICAgIGRvdWJsZSBt
X2V4cGlyYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggYzYyNGU1MzI5ZTU5Njg4MmYwZDQxZjU3NDU4ODVmYzIz
ZDM5YTZlNC4uYzBjZDA4OTI1YWJhMjJhMTRjZDMyNjk4NzIyYWY2NjY2OWMxOGY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNw
cApAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVkZSAiQ0RNLmgiCiAjaW5jbHVkZSAiQ0RNQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2UuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgotI2lu
Y2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTQsNDggKzU0LDYxIEBAIE1lZGlhS2V5czo6
TWVkaWFLZXlzKGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRT
dGF0ZUFsbG93ZWQsCiAKIE1lZGlhS2V5czo6fk1lZGlhS2V5cygpID0gZGVmYXVsdDsKIAotRXhj
ZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Np
b25UeXBlKQorRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lv
blR5cGUpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8j
ZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAgIC8vIFczQyBFZGl0b3IncyBE
cmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0gICAgTE9HKEVNRSwgIkVNRSAtIGNoZWNrIGlmIGEgbmV3
IHNlc3Npb24gY2FuIGJlIGNyZWF0ZWQiKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6Okxv
Z2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhS2V5cyIsIF9fZnVuY19fLCB0aGlzKTsKKyAg
ICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKIAogICAgIC8vIFdoZW4g
dGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCdzIHN1cHBvcnRlZCBzZXNzaW9u
IHR5cGVzIHZhbHVlIGRvZXMgbm90IGNvbnRhaW4gc2Vzc2lvblR5cGUsIHRocm93IFtXZWJJRExd
IGEgTm90U3VwcG9ydGVkRXJyb3IuCi0gICAgaWYgKCFtX3N1cHBvcnRlZFNlc3Npb25UeXBlcy5j
b250YWlucyhzZXNzaW9uVHlwZSkpCisgICAgaWYgKCFtX3N1cHBvcnRlZFNlc3Npb25UeXBlcy5j
b250YWlucyhzZXNzaW9uVHlwZSkpIHsKKyAgICAgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRl
bnRpZmllciwgIkV4Y2VwdGlvbjogdW5zdXBwb3J0ZWQgc2Vzc2lvblR5cGU6ICIsIHNlc3Npb25U
eXBlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihOb3RTdXBwb3J0ZWRFcnJvcik7CisgICAg
fQogCiAgICAgLy8gMi4gSWYgdGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgTWVk
aWFLZXlTZXNzaW9uIG9wZXJhdGlvbnMgaW4gdGhlIGN1cnJlbnQgc3RhdGUsIHRocm93IFtXZWJJ
RExdIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3Vw
cG9ydHNTZXNzaW9ucygpKQorICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNz
aW9ucygpKSB7CisgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJFeGNl
cHRpb246IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc2Vzc2lvbnMiKTsKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgfQogCiAgICAgYXV0
byBpbnN0YW5jZVNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7Ci0gICAgaWYg
KCFpbnN0YW5jZVNlc3Npb24pCisgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pIHsKKyAgICAgICAg
bG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogY291bGQgbm90IGNy
ZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJy
b3IpOworICAgIH0KIAogICAgIC8vIDMuIExldCBzZXNzaW9uIGJlIGEgbmV3IE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QsIGFuZCBpbml0aWFsaXplIGl0IGFzIGZvbGxvd3M6CiAgICAgLy8gTk9URTog
Q29udGludWVkIGluIE1lZGlhS2V5U2Vzc2lvbi4KICAgICAvLyA0LiBSZXR1cm4gc2Vzc2lvbi4K
LSAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtl
V2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwg
bV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNlU2Vzc2lvbi5yZWxlYXNlTm9uTnVs
bCgpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShkb2N1bWVu
dCwgbWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9uVHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50
aWZpZXIsIG1faW1wbGVtZW50YXRpb24uY29weVJlZigpLCBpbnN0YW5jZVNlc3Npb24ucmVsZWFz
ZU5vbk51bGwoKSk7CisgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIiBDcmVh
dGVkIHNlc3Npb24iKTsKICAgICBtX3Nlc3Npb25zLmFwcGVuZChzZXNzaW9uLmNvcHlSZWYoKSk7
CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCdWZmZXJTb3Vy
Y2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2
b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlmaWNhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1t
ZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZpY2F0ZQogICAgIC8vIFczQyBFZGl0
b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6
OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlhS2V5cyIsIF9fZnVuY19fLCB0aGlzKTsK
KyAgICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKKwogICAgIC8vIFdo
ZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZv
bGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGUgS2V5IFN5c3RlbSBpbXBsZW1lbnRhdGlv
biByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBk
b2VzIG5vdCBzdXBwb3J0CiAgICAgLy8gICAgc2VydmVyIGNlcnRpZmljYXRlcywgcmV0dXJuIGEg
cHJvbWlzZSByZXNvbHZlZCB3aXRoIGZhbHNlLgogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+
c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSkgeworICAgICAgICBsb2dnZXItPmluZm8oTG9n
RU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygp
Iik7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gMi4gSWYgc2VydmVyQ2VydGlmaWNhdGUgaXMgYW4g
ZW1wdHkgYXJyYXksIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ldyBhIG5ld2x5
IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmICghc2VydmVyQ2VydGlmaWNhdGUubGVuZ3RoKCkp
IHsKKyAgICAgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBl
bXB0eSBzZXJ2ZXJDZXJ0aWZpY2F0ZSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwNiwxNSArMTE5LDE3IEBAIHZvaWQg
TWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBjb25zdCBCdWZmCiAgICAgLy8gNC4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlz
ZS4KICAgICAvLyA1LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKIAotICAg
IGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0
aGlzLCBjZXJ0aWZpY2F0ZSA9IFdURk1vdmUoY2VydGlmaWNhdGUpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgZG9jdW1lbnQuZXZlbnRMb29wKCkucXVldWVU
YXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBjZXJ0aWZpY2F0ZSA9IFdURk1vdmUo
Y2VydGlmaWNhdGUpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgbG9nZ2VyID0gV1RGTW92
ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIC8vIDUuMS4gVXNlIHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHRvIHByb2Nl
c3MgY2VydGlmaWNhdGUuCiAgICAgICAgIGlmIChtX2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0gQ0RNSW5zdGFuY2U6OkZhaWxlZCkgewogICAg
ICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHBy
b21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlh
dGUgZXJyb3IgbmFtZS4KKyAgICAgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZp
ZXIsICJSZWplY3RlZCwgc2V0U2VydmVyQ2VydGlmaWNhdGUoKSBmYWlsZWQiKTsKICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjEuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHRy
dWUuCisgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJSZXNvbHZlZCIp
OwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlh
S2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
aAppbmRleCAxZTJlMWEyNzcxMzQwZTZkZjFlMGE5OGE1NDJjY2Q1ZjgyYWUyOGRmLi4zYWI2ODRj
OGFjZDQ5MmIzNGRiZWZhOTUxNmMyY2MyYmQxOTM3ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKQEAgLTQzLDggKzQzLDggQEAg
Y2xhc3MgQ0RNQ2xpZW50OwogY2xhc3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBCdWZmZXJTb3VyY2U7
CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhS2V5
U2Vzc2lvbjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIE1lZGlhS2V5
cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5cz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxN
ZWRpYUtleXM+IHsKIHB1YmxpYzoKQEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiAgICAgfk1l
ZGlhS2V5cygpOwogCi0gICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0
ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhS2V5U2Vzc2lvblR5cGUpOwot
ICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIEV4Y2VwdGlv
bk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKERvY3VtZW50JiwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSk7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShEb2N1bWVudCYs
IGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9p
ZCBhdHRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CiAgICAgdm9pZCBkZXRhY2hDRE1DbGllbnQo
Q0RNQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5cy5pZGwKaW5kZXggZDZmMDRjZGRiZTUwZDMxNDgzOTVmNjVlYzZiZjkwNTdm
ZmJmNGRjZS4uZDVjNDJkYTkxNmEwNWVkZWZjNjlhZWIxM2M5YjMzOGYzYWQ2MTNhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlk
bApAQCAtMzIsNiArMzIsNiBAQAogICAgIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0
ZWRNZWRpYUFQSVN1cHBvcnQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50
ZXJmYWNlIE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25h
bCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlID0gInRlbXBvcmFyeSIpOwotICAgIFtD
YWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNl
cnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CisgICAgW0NhbGxXaXRo
PURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Np
b24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3Jhcnki
KTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFByb21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlm
aWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRpZmljYXRlKTsKIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKaW5k
ZXggMGJhYWY4ZDVmZDI4YzU5YWJhNzVjNmM4MjYwMjdmNDQxMTYxODE0Mi4uYmI3NjA2MzA3Yjlk
NzdhN2I1MzRhMzQ0YjgwMDQ4ZTc4MTMwNTEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcApAQCAtMzIsMzAgKzMy
LDY0IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkNETS5oIgor
I2luY2x1ZGUgIkNETUxvZ2dpbmcuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiSlNNZWRpYUtleVN5c3RlbUFjY2Vz
cy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4KK3N0cnVjdCBM
b2dBcmd1bWVudDsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBMb2dBcmd1bWVudDxW
ZWN0b3I8VD4+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFZlY3RvcjxUPiYg
dmFsdWUpCisgICAgeworICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKCJbIik7CisgICAgICAgIGZvciAoYXV0byBpdGVtIDogdmFsdWUpCisgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChMb2dBcmd1bWVudDxUPjo6dG9TdHJpbmcoaXRlbSkpOwor
ICAgICAgICBidWlsZGVyLmFwcGVuZCgiXSIpOworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0
cmluZygpOworICAgIH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTG9nQXJn
dW1lbnQ8T3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE9w
dGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZSA/ICJudWxsb3B0
Il9zIDogTG9nQXJndW1lbnQ8VD46OnRvU3RyaW5nKHZhbHVlLnZhbHVlKCkpOworICAgIH0KK307
CisKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9y
dGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQ
dHI8RGVmZXJyZWRQcm9taXNlPiYmKTsKK3N0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25m
aWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZl
cnJlZFByb21pc2U+JiYsIFJlZjxMb2dnZXI+JiYsIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRp
ZmllciYmKTsKIAotdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vz
cyhOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVt
LCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE5hdmlnYXRvckVN
RTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBWZWN0b3I8TWVkaWFLZXlT
eXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS8jZG9tLW5hdmlnYXRvci1yZXF1ZXN0bWVkaWFrZXlzeXN0ZW1hY2Nlc3MK
ICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUs
ICJFTUUgLSByZXF1ZXN0IG1lZGlhIGtleSBzeXN0ZW0gYWNjZXNzIGZvciAlcyIsIGtleVN5c3Rl
bS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9n
U2l0ZUlkZW50aWZpZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKKyAg
ICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKKworICAgIGxvZ2dlci0+
aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJrZXlTeXN0ZW0oIiwga2V5U3lzdGVtLCAiKSwgc3Vw
cG9ydGVkQ29uZmlndXJhdGlvbnMoIiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsICIpIik7CiAK
ICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3Qg
cnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYga2V5U3lzdGVtIGlzIHRoZSBl
bXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgIC8vIDIuIElmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zIGlzIGVt
cHR5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVF
cnJvci4KICAgICBpZiAoa2V5U3lzdGVtLmlzRW1wdHkoKSB8fCBzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmll
ciwgIlJlamVjdGVkOiBlbXB0eSBrZXlTeXN0ZW0oIiwga2V5U3lzdGVtLmlzRW1wdHkoKSwgIikg
b3IgZW1wdHkgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMoIiwgc3VwcG9ydGVkQ29uZmlndXJhdGlv
bnMuaXNFbXB0eSgpLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50LnBvc3RUYXNrKFtrZXlTeXN0
ZW0sIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCAmZG9jdW1lbnRdIChTY3JpcHRFeGVj
dXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAgZG9jdW1lbnQucG9zdFRhc2soW2tleVN5c3Rl
bSwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksICZkb2N1bWVudCwgbG9nZ2VyID0gV1RG
TW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAgICAgICAgLy8gMy4gTGV0IGRvY3VtZW50IGJl
IHRoZSBjYWxsaW5nIGNvbnRleHQncyBEb2N1bWVudC4KICAgICAgICAgLy8gNC4gTGV0IG9yaWdp
biBiZSB0aGUgb3JpZ2luIG9mIGRvY3VtZW50LgogICAgICAgICAvLyA1LiBMZXQgcHJvbWlzZSBi
ZSBhIG5ldyBwcm9taXNlLgpAQCAtNjMsMTggKzk3LDE4IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpy
ZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50
LCBjCiAgICAgICAgIC8vIDYuMS4gSWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIEtleSBT
eXN0ZW1zIHN1cHBvcnRlZCBieSB0aGUgdXNlciBhZ2VudCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IE5vdFN1cHBvcnRlZEVycm9yLgogICAgICAgICAvLyAgICAgIFN0cmluZyBjb21wYXJpc29uIGlz
IGNhc2Utc2Vuc2l0aXZlLgogICAgICAgICBpZiAoIUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5
U3lzdGVtKSkgewotICAgICAgICAgICAgTE9HKEVNRSwgIkVNRSAtICVzIGlzIG5vdCBzdXBwb3J0
ZWQiLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICBsb2dnZXItPmluZm8o
TG9nRU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGtleVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIp
IG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0
ZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyA2
LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUgaW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVt
LgogICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9uID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtl
eVN5c3RlbSk7Ci0gICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUo
aW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSk7CisgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1v
dmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RG
TW92ZShwcm9taXNlKSwgV1RGTW92ZShsb2dnZXIpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsKICAg
ICB9KTsKIH0KIAotc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVm
UHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlKQorc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVm
UHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4m
JiBwcm9taXNlLCBSZWY8TG9nZ2VyPiYmIGxvZ2dlciwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVu
dGlmaWVyJiYgaWRlbnRpZmllcikKIHsKICAgICAvLyA2LjMuIEZvciBlYWNoIHZhbHVlIGluIHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zOgogICAgIGlmICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMu
aXNFbXB0eSgpKSB7CkBAIC04NCw3ICsxMTgsNyBAQCBzdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9y
dGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TQog
ICAgICAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlv
biA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuZmlyc3QoKSk7CiAgICAgICAgIHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zLnJlbW92ZSgwKTsKIAotICAgICAgICBDRE06OlN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25DYWxsYmFjayBjYWxsYmFjayA9IFtpbXBsZW1lbnRhdGlvbiA9IGltcGxl
bWVudGF0aW9uLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyA9IFdURk1vdmUoc3VwcG9ydGVkQ29u
ZmlndXJhdGlvbnMpLCBwcm9taXNlXSAoT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgQ0RNOjpTdXBw
b3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2FsbGJhY2sgPSBbaW1wbGVtZW50YXRpb24gPSBp
bXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29u
ZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAg
ICAvLyA2LjMuMy4gSWYgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24gaXMgbm90IE5vdFN1cHBvcnRl
ZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29u
ZmlndXJhdGlvbikgewogICAgICAgICAgICAgICAgIC8vIDYuMy4zLjEuIExldCBhY2Nlc3MgYmUg
YSBuZXcgTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mgb2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBm
b2xsb3dzOgpAQCAtOTcsMTggKzEzMSwxOSBAQCBzdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVk
Q29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TQogICAg
ICAgICAgICAgICAgIGF1dG8gYWNjZXNzID0gTWVkaWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZShr
ZXlTeXN0ZW0sIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbi52YWx1ZSgpKSwgaW1wbGVt
ZW50YXRpb24ucmVsZWFzZU5vbk51bGwoKSk7CiAKICAgICAgICAgICAgICAgICAvLyA2LjMuMy4y
LiBSZXNvbHZlIHByb21pc2Ugd2l0aCBhY2Nlc3MgYW5kIGFib3J0IHRoZSBwYXJhbGxlbCBzdGVw
cyBvZiB0aGlzIGFsZ29yaXRobS4KKyAgICAgICAgICAgICAgICBsb2dnZXItPmluZm8oTG9nRU1F
LCBpZGVudGlmaWVyLCAiUmVzb2x2ZWQ6IGtleVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBw
b3J0ZWRDb25maWd1cmF0aW9uKCIsIHN1cHBvcnRlZENvbmZpZ3VyYXRpb24sICIpIik7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNl
PE1lZGlhS2V5U3lzdGVtQWNjZXNzPj4oV1RGTW92ZShhY2Nlc3MpKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRD
b25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENv
bmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgICAgICB0cnlOZXh0U3Vw
cG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShzdXBw
b3J0ZWRDb25maWd1cmF0aW9ucyksIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUobG9nZ2VyKSwg
V1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgICAgIH07CiAgICAgICAgIGltcGxlbWVudGF0aW9u
LT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlv
biksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotCiAgICAg
Ly8gNi40LiBSZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCisgICAgbG9n
Z2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBzdXBwb3J0ZWRD
b25maWd1cmF0aW9ucyIpOwogICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggOGU5MmZkYWMzNzQwNDRiYWRlYmQ2MTRjNDAzNjcwNjkw
NjI4MWIyZC4uYTQ3ODc4NTBhZTllNGE2YWUxNmVhMTE0YTBiM2I3ZDRiZjA1ZTI5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTE4MTgsNiArMTgxOCw3IEBAIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGgu
Y3BwCiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKIAogcGxhdGZvcm0vZW5jcnlwdGVkbWVk
aWEvQ0RNRmFjdG9yeS5jcHAKK3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3Bw
CiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2ViS2l0QnJpZGdlLmNwcAogcGxhdGZvcm0vZ3Jh
cGhpY3MvQml0bWFwSW1hZ2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2I4ZTNjNTdiNmZiZmFkYzBlMGM5MzRlYTEzMjVm
NjVmNTVjN2Y3Zi4uNjFmYmM0NjM1MTA2NjRkZmQxOWQzN2Y1MzQ1YTdkMDFlYmMwNDNlMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtNDA5NSw2ICs0MDk1LDcgQEAKIAkJQ0Q4QjVBNDYxODBERkY0RTAwOEI4RTY1IC8qIFZpZGVv
VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0Q4QjVBNDUxODBERkY0RTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJj
ZS5oICovOyB9OwogCQlDRDhCNUE0OTE4MEUxMzhCMDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFT
b3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
OEI1QTQ4MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oICovOyB9Owog
CQlDRDhCNUE0QzE4MEUxN0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0QjE4MEUx
N0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlhU291cmNlLmggKi87IH07CisJCUNEOEQzMDZG
MjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9n
Z2luZy5oICovOyB9OwogCQlDRDkyRjUxMzIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxs
c2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q5MkY1MTgyMjYxMDM4
MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDkyRjUxNjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNj
cmVlbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDk0QTVERDFGNzFENUQ4MDBGNTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5NEE1REIxRjcxQ0JC
MDAwRjUyNUM1IC8qIENETUNsZWFyS2V5LmNwcCAqLzsgfTsKQEAgLTEzODYxLDYgKzEzODYyLDgg
QEAKIAkJQ0Q4QzZDMjcyMkZEREE5MDAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2tBdmFpbGFi
aWxpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1JlbW90ZVBsYXliYWNrQXZh
aWxhYmlsaXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhD
NkMyODIyRkREQTkwMDBBNzIwQUIgLyogSlNSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxi
YWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFj
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhDNkMyOTIyRkREQTkxMDBBNzIw
QUIgLyogSlNSZW1vdGVQbGF5YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZVBsYXliYWNr
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3
NSAvKiBDRE1Mb2dnaW5nLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENETUxvZ2dpbmcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RDMwNkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dp
bmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RNTG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEOTJGNTBGMjI2MEZGRUUwMEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxz
Y3JlZW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVlbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUNEOTJGNTEwMjI2MEZGRUUwMEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxzY3Jl
ZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRGdWxsc2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUNEOTJGNTE2MjI2MTAzODIwMEY4N0JCMyAvKiBGdWxsc2NyZWVuTWFu
YWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsc2NyZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjYyNTksNiArMjYyNjIsOCBAQAogCQkJCUNEOTRBNUNDMUY3MUNC
NjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5oICovLAogCQkJCUNEOTRBNUQwMUY3MUNCNkIw
MEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAqLywKIAkJCQlDRDk0QTVENTFGNzFDQjZEMDBG
NTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLywKKwkJCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5
NzUgLyogQ0RNTG9nZ2luZy5oICovLAorCQkJCUNEOEQzMDZFMjNBRDRGQTgwMDZDMzk3NSAvKiBD
RE1Mb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gZW5jcnlwdGVkbWVkaWE7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzAyODcsNiArMzAyOTIsNyBAQAogCQkJCTA3RTlF
MTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQxNzkyMTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRU
ZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAv
KiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDRDhEMzA2RjIz
QUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNDQy
RDcxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3QUE2QjZDMTY2RDJDMTMwMEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1
QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386264</attachid>
            <date>2019-12-20 15:15:53 -0800</date>
            <delta_ts>2020-01-06 15:38:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205519-20191220151552.patch</filename>
            <type>text/plain</type>
            <size>60678</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzNzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjU1ZjQ0MmY4NTExMzY3
OTJlNWU0Y2IwOTY0YzM4MzU0NGU0MDNmMC4uNDQxZDVmNGRmZDU1NDVmNTA1MDNiZWI1MjRjMTgw
OWQ5MjdlOGJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTEyLTIwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5nIGZvciBN
b2Rlcm4gRU1FIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhS2V5U2Vzc2lvbjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Np
b246OnVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNsb3NlKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhS2V5U2Vzc2lvbjo6c2Vzc2lvbkNsb3NlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OmxvZ0NoYW5uZWwgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmg6CisgICAgICAgICogTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlzOjpj
cmVhdGVTZXNzaW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6c2V0U2VydmVyQ2Vy
dGlmaWNhdGUpOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmg6
CisgICAgICAgICogTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsOgorICAgICAg
ICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcDoKKyAgICAgICAgKFdU
Rjo6TG9nQXJndW1lbnQ8VmVjdG9yPFQ+Pjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxPcHRpb25hbDxUPj46OnRvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKToKKyAgICAgICAgKFdlYkNvcmU6
OnRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6dG9KU09OT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvSlNPTlN0cmluZyk6
CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNE
TU1lZGlhQ2FwYWJpbGl0eT46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8
V2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dB
cmd1bWVudDxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lPjo6dG9TdHJpbmcpOgorICAgICAg
ICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTdGF0dXM+Ojp0b1N0cmluZyk6Cisg
ICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPjo6dG9TdHJp
bmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1SZXF1aXJlbWVudD46
OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGU+Ojp0b1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RN
TG9nZ2luZy5oOiBBZGRlZC4KKwogMjAxOS0xMi0xOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KIAogICAgICAgICBNZWRpYUtleVNlc3Npb24ubG9hZCgpIGZhaWxzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKaW5kZXggZGExOWJiZmYyYzdjZTgyYmVmYTgwMzVhZDc1NDJlM2U5ZjIyYTY5ZC4u
ODEwYjM1ZjllNGNhZGEzODcxMTlhZTk5MTYyMjU2OWY0MWMzNDY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9u
LmNwcApAQCAtNDksMjAgKzQ5LDIyIEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoTWVkaWFLZXlTZXNzaW9uKTsKIAotUmVmPE1lZGlhS2V5
U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFLZXlTZXNzaW9uVHlwZSBz
ZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1w
bGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYgaW5zdGFuY2VTZXNzaW9uKQor
UmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNl
c3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBs
ZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCiB7
Ci0gICAgYXV0byBzZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBNZWRpYUtleVNlc3Npb24oY29udGV4
dCwgV1RGTW92ZShrZXlzKSwgc2Vzc2lvblR5cGUsIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwg
V1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2VTZXNzaW9uKSkpOworICAg
IGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTZXNzaW9uKGRvY3VtZW50LCBX
VEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZN
b3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZVNlc3Npb24pKSk7CiAgICAgc2Vz
c2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLU1lZGlh
S2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lv
blR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVu
dGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNlU2Vzc2lvbikKLSAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKK01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNz
aW9uKERvY3VtZW50JiBkb2N1bWVudCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIs
IFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYgaW5z
dGFuY2VTZXNzaW9uKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1f
bG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigpKQogICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCiAg
ICAgLCBtX2V4cGlyYXRpb24oc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4o
KSkKICAgICAsIG1fY2xvc2VkUHJvbWlzZShtYWtlVW5pcXVlUmVmPENsb3NlZFByb21pc2U+KCkp
CkBAIC03Niw3ICs3OCw3IEBAIE1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLCiAgICAgLy8gVzNDIEVk
aXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKICAgICAvLyBjcmVhdGVTZXNzaW9uKCksIGN0
ZC4KIAotICAgIExPRyhFTUUsICJFTUUgLSBuZXcgc2Vzc2lvbiBjcmVhdGVkIik7CisgICAgSU5G
T19MT0coTE9HSURFTlRJRklFUiwgInNlc3Npb25UeXBlKCIsIHNlc3Npb25UeXBlLCAiKSwgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyKCIsIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgIikiKTsK
IAogICAgIC8vIDMuMS4gTGV0IHRoZSBzZXNzaW9uSWQgYXR0cmlidXRlIGJlIHRoZSBlbXB0eSBz
dHJpbmcuCiAgICAgLy8gMy4yLiBMZXQgdGhlIGV4cGlyYXRpb24gYXR0cmlidXRlIGJlIE5hTi4K
QEAgLTEyOCw5ICsxMzAsMTEgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVz
dChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAvLyBXaGVu
IHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8gMi4g
SWYgdGhpcyBvYmplY3QncyB1bmluaXRpYWxpemVkIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4gYSBw
cm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAgTE9HKEVNRSwg
IkVNRSAtIGdlbmVyYXRlIHJlcXVlc3QiKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVO
VElGSUVSOworICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJpbml0RGF0YVR5cGUoIiwgaW5pdERh
dGFUeXBlLCAiKSwgaW5pdERhdGEubGVuZ3RoKCIsIGluaXREYXRhLmxlbmd0aCgpLCAiKSIpOwog
CiAgICAgaWYgKG1fY2xvc2VkIHx8ICFtX3VuaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBjbG9zZWQoIiwgbV9jbG9zZWQsICIpIG9yICF1bmlu
aXRpYWxpemVkKCIsICFtX3VuaW5pdGlhbGl6ZWQsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDEs
NiArMTQ1LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBB
dG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAvLyA0LiBJZiBpbml0RGF0
YVR5cGUgaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRo
IGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgLy8gNS4gSWYgaW5pdERhdGEgaXMgYW4g
ZW1wdHkgYXJyYXksIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgIGlmIChpbml0RGF0YVR5cGUuaXNFbXB0eSgpIHx8ICFpbml0RGF0
YS5sZW5ndGgoKSkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGlu
aXREYXRhVHlwZSBlbXB0eSgiLCBpbml0RGF0YVR5cGUuaXNFbXB0eSgpLCAiKSBvciBpbml0RGF0
YSBlbXB0eSgiLCAhaW5pdERhdGEubGVuZ3RoKCksICIpIik7CiAgICAgICAgIHByb21pc2UtPnJl
amVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ5LDYgKzE1NCw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmlu
ZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gICAgaW5pdERhdGFUeXBlIGFzIGFu
IEluaXRpYWxpemF0aW9uIERhdGEgVHlwZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRo
IGEgTm90U3VwcG9ydGVkRXJyb3IuIFN0cmluZwogICAgIC8vICAgIGNvbXBhcmlzb24gaXMgY2Fz
ZS1zZW5zaXRpdmUuCiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0luaXREYXRh
VHlwZShpbml0RGF0YVR5cGUpKSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWpl
Y3RlZDogaW5pdERhdGFUeXBlKCIsIGluaXREYXRhVHlwZSwgIikgdW5zdXBwb3J0ZWQiKTsKICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTE1NywxOSArMTYzLDIxIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5l
cmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAg
ICAgLy8gOC4gTGV0IHNlc3Npb24gdHlwZSBiZSB0aGlzIG9iamVjdCdzIHNlc3Npb24gdHlwZS4K
ICAgICAvLyA5LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDEwLiBSdW4g
dGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBpbml0RGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkp
LCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
KyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdv
cmtpbmcsIFt0aGlzLCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRh
dGEoKSwgaW5pdERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgIC8vIDEwLjEuIElmIHRoZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0
RGF0YVR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4K
ICAgICAgICAgLy8gMTAuMi4gTGV0IHNhbml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQg
YW5kIHNhbml0aXplZCB2ZXJzaW9uIG9mIGluaXQgZGF0YS4KICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERhdGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUlu
aXREYXRhKGluaXREYXRhVHlwZSwgaW5pdERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRo
ZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgeworICAgICAg
ICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBjYW5ub3Qgc2Fu
aXRpemUgaW5pdCBkYXRhIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9y
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjQuIElm
IHNhbml0aXplZCBpbml0IGRhdGEgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RT
dXBwb3J0ZWRFcnJvci4KICAgICAgICAgaWYgKHNhbml0aXplZEluaXREYXRhLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDog
ZW1wdHkgc2FuaXRpemVkIGluaXQgZGF0YSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MTgxLDYgKzE4OSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgIC8vIDEwLjku
IFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgLy8g
MTAuOS4xLiBJZiB0aGUgc2FuaXRpemVkIGluaXQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBjZG0sIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvci4KICAgICAgICAg
aWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgKnNh
bml0aXplZEluaXREYXRhKSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6
dGFzaygpIFJlamVjdGVkOiB1bnN1cHBvcnRlZCBpbml0RGF0YVR5cGUgKCIsIGluaXREYXRhVHlw
ZSwgIikgb3Igc2FuaXRpemVkIGluaXREYXRhIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC0yMDQsOCArMjEzLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1f
bGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwogICAgICAgICB9CiAKLSAgICAgICAgTE9HKEVNRSwgIkVN
RSAtIHJlcXVlc3QgbGljZW5zZSBmcm9tIENETSBpbXBsZW1lbnRhdGlvbiIpOwotICAgICAgICBt
X2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFU
eXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMg
PSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmPFNo
YXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVk
c0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNj
ZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vu
c2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNl
Tm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJl
ZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wg
bmVlZHNJbmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUg
c3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0yMjYsOSArMjM0LDEwIEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25z
dCBCdWZmCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIDEwLjEwLiBRdWV1ZSBhIHRh
c2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIG1lc3Nh
Z2VUeXBlLCBzZXNzaW9uSWQsIHN1Y2NlZWRlZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBx
dWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcs
IFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgbWVzc2FnZSA9IFdURk1vdmUobWVz
c2FnZSksIG1lc3NhZ2VUeXBlLCBzZXNzaW9uSWQsIHN1Y2NlZWRlZCwgaWRlbnRpZmllciA9IFdU
Rk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIDEwLjEw
LjEuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJy
b3IgbmFtZS4KICAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vz
c2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSU5GT19M
T0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBmYWlsZWQgdG8gcmVxdWVzdCBsaWNl
bnNlIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRF
cnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBA
IC0yNDIsNiArMjUxLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChj
b25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgICAg
ICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAg
ICAvLyAxMC45LjMuIFJlc29sdmUgcHJvbWlzZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNl
LT5yZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC0yNTUsOSArMjY1
LDEzIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHVi
LmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5c2Vzc2lvbi1sb2FkCiAgICAgLy8gVzND
IEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKIAorICAgIGF1dG8gaWRlbnRpZmllciA9
IExPR0lERU5USUZJRVI7CisgICAgSU5GT19MT0coaWRlbnRpZmllciwgInNlc3Npb25JZCgiLCBz
ZXNzaW9uSWQsICIpIik7CisKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJl
dHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAv
LyAyLiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAo
bV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIXVuaW5pdGlhbGl6ZWQo
IiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFs
aWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2OCw2ICsyODIsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIC8vIDQuIElmIHNlc3Npb25JZCBpcyB0aGUg
ZW1wdHkgc3RyaW5nLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVh
dGVkIFR5cGVFcnJvci4KICAgICAvLyA1LiBJZiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElz
IHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBlPyBhbGdvcml0aG0gb24gdGhpcyBvYmplY3QncyBzZXNz
aW9uIHR5cGUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5
IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmIChzZXNzaW9uSWQuaXNFbXB0eSgpIHx8IG1fc2Vz
c2lvblR5cGUgPT0gTWVkaWFLZXlTZXNzaW9uVHlwZTo6VGVtcG9yYXJ5KSB7CisgICAgICAgIElO
Rk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2Vzc2lvbklEIGVtcHR5KCIsIHNlc3Npb25J
ZC5pc0VtcHR5KCksICIpIG9yIHNlc3Npb25UeXBlID09IFRlbXBvcmFyeSAoIiwgbV9zZXNzaW9u
VHlwZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnksICIpIik7CiAgICAgICAgIHBy
b21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc3
LDExICsyOTIsMTIgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBz
ZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKIAogICAgIC8vIDcuIExldCBw
cm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gOC4gUnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBU
YXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgc2Vzc2lvbklkLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZl
KCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgc2Vzc2lvbklkLCBwcm9taXNl
ID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgp
IG11dGFibGUgewogICAgICAgICAvLyA4LjEuIExldCBzYW5pdGl6ZWQgc2Vzc2lvbiBJRCBiZSBh
IHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRpemVkIHZlcnNpb24gb2Ygc2Vzc2lvbklkLgogICAgICAg
ICAvLyA4LjIuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCBz
ZXNzaW9uIElEIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBU
eXBlRXJyb3IuCiAgICAgICAgIE9wdGlvbmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkID0g
bV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKICAgICAgICAg
aWYgKCFzYW5pdGl6ZWRTZXNzaW9uSWQgfHwgc2FuaXRpemVkU2Vzc2lvbklkLT5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogc2FuaXRpemVk
U1Nlc3Npb25JRCBlbXB0eSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJv
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTI5OCw3ICszMTQsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAvLyA4LjYuIExldCBtZXNzYWdlIHR5cGUg
YmUgbnVsbC4KICAgICAgICAgLy8gOC43LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVw
cmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8v
IDguOC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+bG9hZFNlc3Npb24obV9zZXNzaW9uVHlwZSwgKnNhbml0aXpl
ZFNlc3Npb25JZCwgb3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyks
IHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRp
emVkU2Vzc2lvbklkXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+JiYga25vd25LZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lv
bjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9h
ZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5s
b2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksIHNhbml0aXplZFNlc3Npb25JZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWQsIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlv
biwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUlu
c3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAvLyA4
LjguMS4gSWYgdGhlcmUgaXMgbm8gZGF0YSBzdG9yZWQgZm9yIHRoZSBzYW5pdGl6ZWQgc2Vzc2lv
biBJRCBpbiB0aGUgb3JpZ2luLCByZXNvbHZlIHByb21pc2Ugd2l0aCBmYWxzZSBhbmQgYWJvcnQg
dGhlc2Ugc3RlcHMuCiAgICAgICAgICAgICAvLyA4LjguMi4gSWYgdGhlIHN0b3JlZCBzZXNzaW9u
J3Mgc2Vzc2lvbiB0eXBlIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgY3VycmVudCBNZWRpYUtleVNl
c3Npb24gc2Vzc2lvbiB0eXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBU
eXBlRXJyb3IuCiAgICAgICAgICAgICAvLyA4LjguMy4gTGV0IHNlc3Npb24gZGF0YSBiZSB0aGUg
ZGF0YSBzdG9yZWQgZm9yIHRoZSBzYW5pdGl6ZWQgc2Vzc2lvbiBJRCBpbiB0aGUgb3JpZ2luLiBU
aGlzIG11c3Qgbm90IGluY2x1ZGUgZGF0YSBmcm9tIG90aGVyIG9yaWdpbihzKSBvciB0aGF0IGlz
IG5vdCBhc3NvY2lhdGVkIHdpdGggYW4gb3JpZ2luLgpAQCAtMzEzLDEyICszMjksMTUgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgewogICAgICAgICAgICAgICAgIHN3
aXRjaCAoZmFpbHVyZSkgewogICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vU2Vzc2lvbkRhdGE6CisgICAgICAgICAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZDogTm9TZXNzaW9uRGF0YSIp
OwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNl
KTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGNhc2UgQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlw
ZToKKyAgICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJl
amVjdGVkOiBNaXNtYXRjaGVkU2Vzc2lvblR5cGUiKTsKICAgICAgICAgICAgICAgICAgICAgcHJv
bWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJl
OjpRdW90YUV4Y2VlZGVkOgorICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVy
LCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IFF1b3RhRXhjZWVkZWQiKTsKICAgICAgICAgICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFF1b3RhRXhjZWVkZWRFcnJvcik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vz
c2lvbkxvYWRGYWlsdXJlOjpOb25lOgpAQCAtMzI5LDkgKzM0OCwxMCBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlz
ZT4mJiBwcm9taQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyA4LjkuIFF1ZXVlIGEg
dGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tl
ZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtu
b3duS2V5cyA9IFdURk1vdmUoa25vd25LZXlzKSwgZXhwaXJhdGlvbiA9IFdURk1vdmUoZXhwaXJh
dGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQsIHN1
Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAg
ICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywga25vd25LZXlzID0gV1RGTW92ZShrbm93bktleXMpLCBleHBpcmF0aW9u
ID0gV1RGTW92ZShleHBpcmF0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNhbml0
aXplZFNlc3Npb25JZCwgc3VjY2VlZGVkLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAgICAg
ICAgIC8vIDguOS4xLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVj
dCBwcm9taXNlIHdpdGggYSB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAg
ICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFz
aygpIFJlamVjdGVkOiBPdGhlciBmYWlsdXJlIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CkBAIC0zNTQsNiArMzc0LDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWkKICAgICAgICAgICAgICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZS0+Zmly
c3QsIFdURk1vdmUobWVzc2FnZS0+c2Vjb25kKSk7CiAKICAgICAgICAgICAgICAgICAvLyA4Ljku
Ny4gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNl
LT5yZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0p
OwpAQCAtMzcwLDE1ICszOTEsMTggQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25z
dCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyBX
aGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8g
Mi4gSWYgdGhpcyBvYmplY3QncyBjYWxsYWJsZSB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJv
bWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIExPRyhFTUUsICJF
TUUgLSB1cGRhdGUgc2Vzc2lvbiBmb3IgJXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlkZW50
aWZpZXIsICJyZXNwb25zZS5sZW5ndGgoIiwgcmVzcG9uc2UubGVuZ3RoKCksICIpIik7CiAKICAg
ICBpZiAobV9jbG9zZWQgfHwgIW1fY2FsbGFibGUpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRp
ZmllciwgIlJlamVjdGVkOiBjbG9zZWQoIiwgbV9jbG9zZWQsICIpIG9yICFjYWxsYWJsZSgiLCAh
bV9jYWxsYWJsZSwgIikiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDMuIElmIHJlc3BvbnNlIGlz
IGFuIGVtcHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBj
cmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAoIXJlc3BvbnNlLmxlbmd0aCgpKSB7CisgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgcmVzcG9uc2UiKTsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBA
IC0zODYsMTIgKzQxMCwxMyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1
ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDQuIExl
dCByZXNwb25zZSBjb3B5IGJlIGEgY29weSBvZiB0aGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNl
IHBhcmFtZXRlci4KICAgICAvLyA1LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAg
IC8vIDYuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25z
ZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAg
ICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtp
bmcsIFt0aGlzLCByZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEo
KSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRp
ZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEu
IExldCBzYW5pdGl6ZWQgcmVzcG9uc2UgYmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2
ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHkuCiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNh
bml0aXplZFJlc3BvbnNlID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNw
b25zZSk7CiAKICAgICAgICAgLy8gNi4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBv
ciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2UgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBu
ZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8
fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiOjp0YXNrIC0gUmVqZWN0ZWQ6IGVtcHR5IHNhbml0aXplZCByZXNwb25zZSIp
OwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTQwMSw3ICs0MjYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21p
c2U+JgogICAgICAgICAvLyA2LjUuIExldCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4KICAgICAg
ICAgLy8gNi42LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhp
cyBvYmplY3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNlIHRoZSBj
ZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vz
c2lvbi0+dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgKnNhbml0aXpl
ZFJlc3BvbnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2VkLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2VkS2V5cywgT3B0aW9uYWw8
ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246
Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnVwZGF0ZUxpY2Vu
c2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRSZXNwb25zZSwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChib29sIHNlc3Npb25XYXNDbG9z
ZWQsIE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5n
ZWRLZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTQyOCw3ICs0NTMsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgLy8gTk9URTogU3RlcHMgNi43LjEuIGFu
ZCA2LjcuMi4gc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIENETUluc3RhbmNlLgogCiAgICAgICAg
ICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpG
YWlsZWQpIHsKLSAgICAgICAgICAgICAgICBMT0coRU1FLCAiRU1FIC0gZmFpbGVkIHRvIHVwZGF0
ZSBDRE0gbGljZW5zZSBmb3IgJXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKKyAgICAg
ICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQiKTsKICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC00MzcsOCArNDYyLDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYKICAgICAgICAgICAgIC8vICAgNi43LjMuMS4gTGV0IG1lc3NhZ2UgYmUgdGhh
dCBtZXNzYWdlLgogICAgICAgICAgICAgLy8gICA2LjcuMy4yLiBMZXQgbWVzc2FnZSB0eXBlIGJl
IHRoZSBhcHByb3ByaWF0ZSBNZWRpYUtleU1lc3NhZ2VUeXBlIGZvciB0aGUgbWVzc2FnZS4KICAg
ICAgICAgICAgIC8vIDYuOC4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgotICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgc2Vzc2lvbldhc0Nsb3NlZCwgY2hhbmdlZEtleXMgPSBX
VEZNb3ZlKGNoYW5nZWRLZXlzKSwgY2hhbmdlZEV4cGlyYXRpb24gPSBXVEZNb3ZlKGNoYW5nZWRF
eHBpcmF0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBMT0coRU1FLCAiRU1FIC0g
dXBkYXRpbmcgQ0RNIGxpY2Vuc2Ugc3VjY2VlZGVkIGZvciBzZXNzaW9uICVzLCBzZW5kaW5nIGEg
bWVzc2FnZSB0byB0aGUgbGljZW5zZSBzZXJ2ZXIiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHNlc3Npb25XYXNDbG9zZWQsIGNoYW5nZWRLZXlzID0g
V1RGTW92ZShjaGFuZ2VkS2V5cyksIGNoYW5nZWRFeHBpcmF0aW9uID0gV1RGTW92ZShjaGFuZ2Vk
RXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIC8vIDYuOC4xLgogICAgICAgICAgICAgICAgIGlmIChzZXNzaW9u
V2FzQ2xvc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIOKGsyBJZiBzZXNzaW9uIGNsb3Nl
ZCBpcyB0cnVlOgpAQCAtNDg0LDYgKzUwOCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRh
dGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAg
ICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgLy8gNi44LjIuIFJlc29sdmUgcHJv
bWlzZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVz
b2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CkBAIC00OTcsMzcgKzUyMiw0MiBAQCB2b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6Y2xvc2UoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXNlc3Npb24tY2xv
c2UKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogCisgICAgYXV0
byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVyKTsK
KwogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5U2Vzc2lv
biBvYmplY3QuCiAgICAgLy8gMi4gSWYgc2Vzc2lvbiBpcyBjbG9zZWQsIHJldHVybiBhIHJlc29s
dmVkIHByb21pc2UuCiAgICAgTE9HKEVNRSwgIkVNRSAtIGNsb3Npbmcgc2Vzc2lvbiAlcyIsIG1f
c2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgaWYgKG1fY2xvc2VkKSB7CisgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICJSZXNvbHZlZDogYWxyZWFkeSBjbG9zZWQiKTsKICAgICAg
ICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8g
My4gSWYgc2Vzc2lvbidzIGNhbGxhYmxlIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNl
IHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgaWYgKCFtX2NhbGxhYmxl
KSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogIWNhbGxhYmxlIik7
CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICAvLyA0LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgog
ICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVl
VGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3Ro
aXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA1LjEuIExldCBjZG0gYmUgdGhlIENETSBp
bnN0YW5jZSByZXByZXNlbnRlZCBieSBzZXNzaW9uJ3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAg
ICAgICAvLyA1LjIuIFVzZSBjZG0gdG8gY2xvc2UgdGhlIGtleSBzZXNzaW9uIGFzc29jaWF0ZWQg
d2l0aCBzZXNzaW9uLgotICAgICAgICBMT0coRU1FLCAiRU1FIC0gY2xvc2luZyBDRE0gc2Vzc2lv
biAlcyIsIG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICBtX2luc3RhbmNlU2Vz
c2lvbi0+Y2xvc2VTZXNzaW9uKG1fc2Vzc2lvbklkLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vh
a1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPmNsb3NlU2Vzc2lvbihtX3Nlc3Npb25JZCwgW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIC8vIDUuMy4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAg
ICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpO
ZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUg
eworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICAvLyA1LjMuMS4gUnVuIHRoZSBTZXNzaW9uIENsb3NlZCBhbGdvcml0aG0gb24gdGhlIHNlc3Np
b24uCiAgICAgICAgICAgICAgICAgc2Vzc2lvbkNsb3NlZCgpOwogCiAgICAgICAgICAgICAgICAg
Ly8gNS4zLjIuIFJlc29sdmUgcHJvbWlzZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVu
dGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CkBAIC01NDMsMjIgKzU3Mywy
NSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSkKIAogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEg
cHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElm
IHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KLSAgICBMT0coRU1FLCAiRU1FIC0g
cmVtb3Zpbmcgc2Vzc2lvbiAlcyIsIG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkpOworCisgICAg
YXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVy
KTsKIAogICAgIGlmIChtX2Nsb3NlZCB8fCAhbV9jYWxsYWJsZSkgeworICAgICAgICBJTkZPX0xP
RyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNhbGxh
YmxlKCIsICFtX2NhbGxhYmxlLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxp
ZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gMy4gTGV0IHBy
b21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA0LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVw
cyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0g
KCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlk
ZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8g
NC4xLiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmpl
Y3QncyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDQuMi4gTGV0IG1lc3NhZ2UgYmUg
bnVsbC4KICAgICAgICAgLy8gNC4zLiBMZXQgbWVzc2FnZSB0eXBlIGJlIG51bGwuCiAKICAgICAg
ICAgLy8gNC40LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0g
ICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwg
bV9zZXNzaW9uVHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9t
aXNlID0gV1RGTW92ZShwcm9taXNlKV0gKENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVj
dG9yJiYga2V5cywgT3B0aW9uYWw8UmVmPFNoYXJlZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKKyAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vzc2lvbklkLCBtX3Nlc3Np
b25UeXBlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKENETUlu
c3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yJiYga2V5cywgT3B0aW9uYWw8UmVmPFNoYXJl
ZEJ1ZmZlcj4+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3Vj
Y2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCkBAIC01NzcsNyArNjEwLDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246
OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAgICAgICAgICAvLyBO
T1RFOiBTdGVwIDQuNC4xLiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RNSW5zdGFuY2UuCiAK
ICAgICAgICAgICAgIC8vIDQuNS4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgotICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywga2V5cyA9IFdURk1vdmUoa2V5cyksIG1lc3NhZ2Ug
PSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2Up
XSAoKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtleXMgPSBXVEZNb3ZlKGtleXMp
LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUg
ewogICAgICAgICAgICAgICAgIC8vIDQuNS4xLiBSdW4gdGhlIFVwZGF0ZSBLZXkgU3RhdHVzZXMg
YWxnb3JpdGhtIG9uIHRoZSBzZXNzaW9uLCBwcm92aWRpbmcgYWxsIGtleSBJRChzKSBpbiB0aGUg
c2Vzc2lvbiBhbG9uZyB3aXRoIHRoZSAicmVsZWFzZWQiIE1lZGlhS2V5U3RhdHVzIHZhbHVlIGZv
ciBlYWNoLgogICAgICAgICAgICAgICAgIHVwZGF0ZUtleVN0YXR1c2VzKFdURk1vdmUoa2V5cykp
OwogCkBAIC01ODYsNiArNjE5LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAKICAgICAgICAgICAgICAgICAvLyA0LjUuMy4g
SWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRo
IGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBu
YW1lLgogICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9u
OjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhp
ZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGZhaWxlZCIpOwogICAgICAgICAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICAgICAgfQpAQCAtNTk2LDYgKzYzMCw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAg
ICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3NhZ2VUeXBlOjpMaWNlbnNlUmVs
ZWFzZSwgKm1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAgLy8gNC41LjYuIFJlc29sdmUgcHJv
bWlzZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVzb2x2ZWQiKTsK
ICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKICAg
ICAgICAgfSk7CkBAIC02OTAsNyArNzI1LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnNlc3Np
b25DbG9zZWQoKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVk
aWEvI3Nlc3Npb24tY2xvc2VkCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVy
IDIwMTYKLSAgICBMT0coRU1FLCAiRU1FIC0gc2Vzc2lvbiAlcyB3YXMgY2xvc2VkIiwgbV9zZXNz
aW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7CiAKICAg
ICAvLyAxLiBMZXQgc2Vzc2lvbiBiZSB0aGUgYXNzb2NpYXRlZCBNZWRpYUtleVNlc3Npb24gb2Jq
ZWN0LgogICAgIC8vIDIuIElmIHNlc3Npb24ncyBzZXNzaW9uIHR5cGUgaXMgInBlcnNpc3RlbnQt
dXNhZ2UtcmVjb3JkIiwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgpA
QCAtNzQyLDYgKzc3NywxMSBAQCBjb25zdCBjaGFyKiBNZWRpYUtleVNlc3Npb246OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdAogICAgIHJldHVybiAiTWVkaWFLZXlTZXNzaW9uIjsKIH0KIAor
V1RGTG9nQ2hhbm5lbCYgTWVkaWFLZXlTZXNzaW9uOjpsb2dDaGFubmVsKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gTG9nRU1FOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtl
eVNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFL
ZXlTZXNzaW9uLmgKaW5kZXggZTVmMTJkZWNjNmU1NDgxYjk4YTI5Yzg3OWJjOWFjMjBhZmMyNzBm
MC4uNWNiMzc2N2NlZGRiMTNlMzI2NTY2ZmZmMDFiNmIxY2RjMGI5NWQ3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lv
bi5oCkBAIC00Myw2ICs0MywxMCBAQAogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKK25hbWVzcGFjZSBXVEYgeworY2xhc3MgTG9nZ2Vy
OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKQEAgLTU3
LDcgKzYxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgSURMVHlwZT4gY2xhc3MgRE9NUHJvbWlzZVBy
b3h5OwogY2xhc3MgTWVkaWFLZXlTZXNzaW9uIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFLZXlTZXNzaW9uPiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBB
Y3RpdmVET01PYmplY3QsIHB1YmxpYyBDRE1JbnN0YW5jZVNlc3Npb25DbGllbnQgewogICAgIFdU
Rl9NQUtFX0lTT19BTExPQ0FURUQoTWVkaWFLZXlTZXNzaW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
ZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5j
dGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwor
ICAgIHN0YXRpYyBSZWY8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWFrUHRy
PE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlk
ZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOwogICAgIHZp
cnR1YWwgfk1lZGlhS2V5U2Vzc2lvbigpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYUtl
eVNlc3Npb24+OjpyZWY7CkBAIC04NCw3ICs4OCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIE1lZGlhS2V5
U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1l
ZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RN
PiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAgICBNZWRpYUtleVNlc3Npb24oRG9j
dW1lbnQmLCBXZWFrUHRyPE1lZGlhS2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1
c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Np
b24+JiYpOwogICAgIHZvaWQgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZSwgY29u
c3QgU2hhcmVkQnVmZmVyJik7CiAgICAgdm9pZCB1cGRhdGVFeHBpcmF0aW9uKGRvdWJsZSk7CiAg
ICAgdm9pZCBzZXNzaW9uQ2xvc2VkKCk7CkBAIC0xMDQsNiArMTA4LDEzIEBAIHByaXZhdGU6CiAg
ICAgLy8gQWN0aXZlRE9NT2JqZWN0CiAgICAgY29uc3QgY2hhciogYWN0aXZlRE9NT2JqZWN0TmFt
ZSgpIGNvbnN0IG92ZXJyaWRlOwogCisgICAgLy8gTG9nZ2VySGVscGVyCisgICAgY29uc3QgV1RG
OjpMb2dnZXImIGxvZ2dlcigpIGNvbnN0IHsgcmV0dXJuIG1fbG9nZ2VyOyB9CisgICAgY29uc3Qg
Y2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3QgeyByZXR1cm4gIk1lZGlhS2V5U2Vzc2lvbiI7IH0K
KyAgICBXVEZMb2dDaGFubmVsJiBsb2dDaGFubmVsKCkgY29uc3Q7CisgICAgY29uc3Qgdm9pZCog
bG9nSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIHRoaXM7IH0KKworICAgIFJlZjxXVEY6Okxv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgV2Vha1B0cjxNZWRpYUtleXM+IG1fa2V5czsKICAgICBTdHJp
bmcgbV9zZXNzaW9uSWQ7CiAgICAgZG91YmxlIG1fZXhwaXJhdGlvbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAppbmRleCBjNjI0
ZTUzMjllNTk2ODgyZjBkNDFmNTc0NTg4NWZjMjNkMzlhNmU0Li5jMGNkMDg5MjVhYmEyMmExNGNk
MzI2OTg3MjJhZjY2NjY5YzE4ZjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0zNCwxMSArMzQsMTEgQEAKICNpbmNs
dWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1DbGllbnQuaCIKICNpbmNsdWRlICJDRE1JbnN0YW5j
ZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5j
bHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC01NCw0OCArNTQsNjEgQEAgTWVkaWFLZXlzOjpNZWRpYUtleXMoYm9vbCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwKIAogTWVkaWFLZXlzOjp+
TWVkaWFLZXlzKCkgPSBkZWZhdWx0OwogCi1FeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9u
Pj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCitFeGNlcHRpb25PcjxSZWY8TWVk
aWFLZXlTZXNzaW9uPj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSkKIHsKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRp
ZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBM
T0coRU1FLCAiRU1FIC0gY2hlY2sgaWYgYSBuZXcgc2Vzc2lvbiBjYW4gYmUgY3JlYXRlZCIpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVk
aWFLZXlzIiwgX19mdW5jX18sIHRoaXMpOworICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3Vt
ZW50LmxvZ2dlcigpOwogCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUg
dXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRo
aXMgb2JqZWN0J3Mgc3VwcG9ydGVkIHNlc3Npb24gdHlwZXMgdmFsdWUgZG9lcyBub3QgY29udGFp
biBzZXNzaW9uVHlwZSwgdGhyb3cgW1dlYklETF0gYSBOb3RTdXBwb3J0ZWRFcnJvci4KLSAgICBp
ZiAoIW1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKKyAgICBp
ZiAoIW1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkgeworICAg
ICAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiB1bnN1cHBv
cnRlZCBzZXNzaW9uVHlwZTogIiwgc2Vzc2lvblR5cGUpOwogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uKE5vdFN1cHBvcnRlZEVycm9yKTsKKyAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUgaW1wbGVt
ZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBNZWRpYUtleVNlc3Npb24gb3BlcmF0aW9ucyBpbiB0
aGUgY3VycmVudCBzdGF0ZSwgdGhyb3cgW1dlYklETF0gYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0g
ICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1Nlc3Npb25zKCkpCisgICAgaWYgKCFt
X2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1Nlc3Npb25zKCkpIHsKKyAgICAgICAgbG9nZ2VyLT5p
bmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogaW1wbGVtZW50YXRpb24gZG9lcyBu
b3Qgc3VwcG9ydCBzZXNzaW9ucyIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRT
dGF0ZUVycm9yKTsKKyAgICB9CiAKICAgICBhdXRvIGluc3RhbmNlU2Vzc2lvbiA9IG1faW5zdGFu
Y2UtPmNyZWF0ZVNlc3Npb24oKTsKLSAgICBpZiAoIWluc3RhbmNlU2Vzc2lvbikKKyAgICBpZiAo
IWluc3RhbmNlU2Vzc2lvbikgeworICAgICAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlm
aWVyLCAiRXhjZXB0aW9uOiBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgfQogCiAgICAgLy8gMy4gTGV0
IHNlc3Npb24gYmUgYSBuZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdCwgYW5kIGluaXRpYWxpemUg
aXQgYXMgZm9sbG93czoKICAgICAvLyBOT1RFOiBDb250aW51ZWQgaW4gTWVkaWFLZXlTZXNzaW9u
LgogICAgIC8vIDQuIFJldHVybiBzZXNzaW9uLgotICAgIGF1dG8gc2Vzc2lvbiA9IE1lZGlhS2V5
U2Vzc2lvbjo6Y3JlYXRlKGNvbnRleHQsIG1ha2VXZWFrUHRyKCp0aGlzKSwgc2Vzc2lvblR5cGUs
IG1fdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBtX2ltcGxlbWVudGF0aW9uLmNvcHlSZWYoKSwg
aW5zdGFuY2VTZXNzaW9uLnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IE1l
ZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKGRvY3VtZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Np
b25UeXBlLCBtX3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5
UmVmKCksIGluc3RhbmNlU2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBsb2dnZXItPmlu
Zm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiIENyZWF0ZWQgc2Vzc2lvbiIpOwogICAgIG1fc2Vzc2lv
bnMuYXBwZW5kKHNlc3Npb24uY29weVJlZigpKTsKICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAot
dm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3ZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2Vy
dGlmaWNhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAgICAvLyBodHRw
czovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZl
cmNlcnRpZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYK
IAorICAgIGF1dG8gaWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigi
TWVkaWFLZXlzIiwgX19mdW5jX18sIHRoaXMpOworICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRv
Y3VtZW50LmxvZ2dlcigpOworCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0
aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElm
IHRoZSBLZXkgU3lzdGVtIGltcGxlbWVudGF0aW9uIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0
J3MgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVlIGRvZXMgbm90IHN1cHBvcnQKICAgICAvLyAgICBz
ZXJ2ZXIgY2VydGlmaWNhdGVzLCByZXR1cm4gYSBwcm9taXNlIHJlc29sdmVkIHdpdGggZmFsc2Uu
CiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygp
KSB7CisgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJSZWplY3RlZDog
IXN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkiKTsKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2
ZTxJRExCb29sZWFuPihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAy
LiBJZiBzZXJ2ZXJDZXJ0aWZpY2F0ZSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0dXJuIGEgcHJvbWlz
ZSByZWplY3RlZCB3aXRoIGEgbmV3IGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYg
KCFzZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5ndGgoKSkgeworICAgICAgICBsb2dnZXItPmluZm8oTG9n
RU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGVtcHR5IHNlcnZlckNlcnRpZmljYXRlIik7CiAg
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMTA2LDE1ICsxMTksMTcgQEAgdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRpZmlj
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmYKICAgICAvLyA0
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDUuIFJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgogCi0gICAgY29udGV4dC5ldmVudExvb3AoKS5xdWV1ZVRh
c2soVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGNlcnRpZmljYXRlID0gV1RGTW92ZShj
ZXJ0aWZpY2F0ZSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAg
ICBkb2N1bWVudC5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIGNlcnRpZmljYXRlID0gV1RGTW92ZShjZXJ0aWZpY2F0ZSksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBsb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNS4xLiBVc2UgdGhpcyBv
YmplY3QncyBjZG0gaW5zdGFuY2UgdG8gcHJvY2VzcyBjZXJ0aWZpY2F0ZS4KICAgICAgICAgaWYg
KG1faW5zdGFuY2UtPnNldFNlcnZlckNlcnRpZmljYXRlKFdURk1vdmUoY2VydGlmaWNhdGUpKSA9
PSBDRE1JbnN0YW5jZTo6RmFpbGVkKSB7CiAgICAgICAgICAgICAvLyA1LjIuIElmIHRoZSBwcmVj
ZWRpbmcgc3RlcCBmYWlsZWQsIHJlc29sdmUgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlv
biB3aG9zZSBuYW1lIGlzIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgorICAgICAgICAgICAg
bG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIlJlamVjdGVkLCBzZXRTZXJ2ZXJDZXJ0
aWZpY2F0ZSgpIGZhaWxlZCIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KKyAgICAgICAgbG9nZ2VyLT5pbmZvKExv
Z0VNRSwgaWRlbnRpZmllciwgIlJlc29sdmVkIik7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4odHJ1ZSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oCmluZGV4IDFlMmUxYTI3NzEzNDBlNmRmMWUw
YTk4YTU0MmNjZDVmODJhZTI4ZGYuLjNhYjY4NGM4YWNkNDkyYjM0ZGJlZmE5NTE2YzJjYzJiZDE5
Mzc4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9N
ZWRpYUtleXMuaApAQCAtNDMsOCArNDMsOCBAQCBjbGFzcyBDRE1DbGllbnQ7CiBjbGFzcyBDRE1J
bnN0YW5jZTsKIGNsYXNzIEJ1ZmZlclNvdXJjZTsKIGNsYXNzIERlZmVycmVkUHJvbWlzZTsKK2Ns
YXNzIERvY3VtZW50OwogY2xhc3MgTWVkaWFLZXlTZXNzaW9uOwotY2xhc3MgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dDsKIAogY2xhc3MgTWVkaWFLZXlzIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFL
ZXlzPiwgcHVibGljIENhbk1ha2VXZWFrUHRyPE1lZGlhS2V5cz4gewogcHVibGljOgpAQCAtNTcs
OCArNTcsOCBAQCBwdWJsaWM6CiAKICAgICB+TWVkaWFLZXlzKCk7CiAKLSAgICBFeGNlcHRpb25P
cjxSZWY8TWVkaWFLZXlTZXNzaW9uPj4gY3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7Ci0gICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJik7CisgICAgRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNy
ZWF0ZVNlc3Npb24oRG9jdW1lbnQmLCBNZWRpYUtleVNlc3Npb25UeXBlKTsKKyAgICB2b2lkIHNl
dFNlcnZlckNlcnRpZmljYXRlKERvY3VtZW50JiwgY29uc3QgQnVmZmVyU291cmNlJiwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJik7CiAKICAgICB2b2lkIGF0dGFjaENETUNsaWVudChDRE1DbGllbnQm
KTsKICAgICB2b2lkIGRldGFjaENETUNsaWVudChDRE1DbGllbnQmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbAppbmRleCBkNmYw
NGNkZGJlNTBkMzE0ODM5NWY2NWVjNmJmOTA1N2ZmYmY0ZGNlLi5kNWM0MmRhOTE2YTA1ZWRlZmM2
OWFlYjEzYzliMzM4ZjNhZDYxM2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCkBAIC0zMiw2ICszMiw2IEBACiAgICAgRGlz
YWJsZWRCeVF1aXJrPWhhc0Jyb2tlbkVuY3J5cHRlZE1lZGlhQVBJU3VwcG9ydCwKICAgICBJbXBs
ZW1lbnRhdGlvbkxhY2tzVlRhYmxlLAogXSBpbnRlcmZhY2UgTWVkaWFLZXlzIHsKLSAgICBbQ2Fs
bFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgTWF5VGhyb3dFeGNlcHRpb25dIE1lZGlhS2V5
U2Vzc2lvbiBjcmVhdGVTZXNzaW9uKG9wdGlvbmFsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lv
blR5cGUgPSAidGVtcG9yYXJ5Iik7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIFByb21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZl
ckNlcnRpZmljYXRlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93RXhjZXB0aW9u
XSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBNZWRpYUtleVNlc3Npb25U
eXBlIHNlc3Npb25UeXBlID0gInRlbXBvcmFyeSIpOworICAgIFtDYWxsV2l0aD1Eb2N1bWVudF0g
UHJvbWlzZTxib29sPiBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShCdWZmZXJTb3VyY2Ugc2VydmVyQ2Vy
dGlmaWNhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCAwYmFhZjhkNWZkMjhjNTlhYmE3NWM2Yzgy
NjAyN2Y0NDExNjE4MTQyLi5iYjc2MDYzMDdiOWQ3N2E3YjUzNGEzNDRiODAwNDhlNzgxMzA1MTM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmln
YXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9O
YXZpZ2F0b3JFTUUuY3BwCkBAIC0zMiwzMCArMzIsNjQgQEAKICNpZiBFTkFCTEUoRU5DUllQVEVE
X01FRElBKQogCiAjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiQ0RNTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNp
bmNsdWRlICJKU01lZGlhS2V5U3lzdGVtQWNjZXNzLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNlIFdURiB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RydWN0IExvZ0FyZ3VtZW50PFZlY3RvcjxUPj4geworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFQ+JiB2YWx1ZSkKKyAgICB7CisgICAgICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlsiKTsKKyAgICAgICAg
Zm9yIChhdXRvIGl0ZW0gOiB2YWx1ZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKExvZ0Fy
Z3VtZW50PFQ+Ojp0b1N0cmluZyhpdGVtKSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJdIik7
CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorfTsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBMb2dBcmd1bWVudDxPcHRpb25hbDxUPj4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgT3B0aW9uYWw8VD4mIHZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHZhbHVlID8gIm51bGxvcHQiX3MgOiBMb2dBcmd1bWVudDxUPjo6dG9TdHJp
bmcodmFsdWUudmFsdWUoKSk7CisgICAgfQorfTsKKworfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+
JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYg
c3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYpOworc3Rh
dGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBs
ZW1lbnRhdGlvbiwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0
ZWRDb25maWd1cmF0aW9ucywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiwgUmVmPExvZ2dlcj4m
JiwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYpOwogCi12b2lkIE5hdmlnYXRvckVN
RTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZp
Z3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKK3ZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nl
c3MoTmF2aWdhdG9yJiBuYXZpZ2F0b3IsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9y
dGVkQ29uZmlndXJhdGlvbnMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKICAg
ICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbmF2aWdhdG9y
LXJlcXVlc3RtZWRpYWtleXN5c3RlbWFjY2VzcwogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAw
OSBOb3ZlbWJlciAyMDE2Ci0gICAgTE9HKEVNRSwgIkVNRSAtIHJlcXVlc3QgbWVkaWEga2V5IHN5
c3RlbSBhY2Nlc3MgZm9yICVzIiwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCkpOworICAgIGF1dG8g
aWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTmF2aWdhdG9yRU1F
IiwgX19mdW5jX18sICZuYXZpZ2F0b3IpOworICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3Vt
ZW50LmxvZ2dlcigpOworCisgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgImtl
eVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucygiLCBzdXBw
b3J0ZWRDb25maWd1cmF0aW9ucywgIikiKTsKIAogICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMg
aW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAg
ICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJuIGEgcHJvbWlz
ZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgLy8gMi4gSWYg
c3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgaXMgZW1wdHksIHJldHVybiBhIHByb21pc2UgcmVqZWN0
ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmIChrZXlTeXN0ZW0uaXNF
bXB0eSgpIHx8IHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmlzRW1wdHkoKSkgeworICAgICAgICBs
b2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGVtcHR5IGtleVN5c3Rl
bSgiLCBrZXlTeXN0ZW0uaXNFbXB0eSgpLCAiKSBvciBlbXB0eSBzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucygiLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0VtcHR5KCksICIpIik7CiAgICAgICAg
IHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgZG9jdW1lbnQucG9zdFRhc2soW2tleVN5c3RlbSwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMg
PSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSksICZkb2N1bWVudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKKyAg
ICBkb2N1bWVudC5wb3N0VGFzayhba2V5U3lzdGVtLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyA9
IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgJmRvY3VtZW50LCBsb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBX
VEZNb3ZlKGlkZW50aWZpZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFibGUgewog
ICAgICAgICAvLyAzLiBMZXQgZG9jdW1lbnQgYmUgdGhlIGNhbGxpbmcgY29udGV4dCdzIERvY3Vt
ZW50LgogICAgICAgICAvLyA0LiBMZXQgb3JpZ2luIGJlIHRoZSBvcmlnaW4gb2YgZG9jdW1lbnQu
CiAgICAgICAgIC8vIDUuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCkBAIC02MywxOCAr
OTcsMTggQEAgdm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhO
YXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1lbnQsIGMKICAgICAgICAgLy8gNi4xLiBJZiBrZXlT
eXN0ZW0gaXMgbm90IG9uZSBvZiB0aGUgS2V5IFN5c3RlbXMgc3VwcG9ydGVkIGJ5IHRoZSB1c2Vy
IGFnZW50LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCiAgICAgICAg
IC8vICAgICAgU3RyaW5nIGNvbXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCiAgICAgICAgIGlm
ICghQ0RNOjpzdXBwb3J0c0tleVN5c3RlbShrZXlTeXN0ZW0pKSB7Ci0gICAgICAgICAgICBMT0co
RU1FLCAiRU1FIC0gJXMgaXMgbm90IHN1cHBvcnRlZCIsIGtleVN5c3RlbS51dGY4KCkuZGF0YSgp
KTsKKyAgICAgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJSZWplY3Rl
ZDoga2V5U3lzdGVtKCIsIGtleVN5c3RlbSwgIikgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0IGltcGxlbWVudGF0aW9uIGJlIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCiAgICAgICAgIGF1dG8gaW1wbGVtZW50YXRp
b24gPSBDRE06OmNyZWF0ZShkb2N1bWVudCwga2V5U3lzdGVtKTsKLSAgICAgICAgdHJ5TmV4dFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3Vw
cG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgdHJ5TmV4
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUo
c3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGxvZ2dl
ciksIFdURk1vdmUoaWRlbnRpZmllcikpOwogICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCB0cnlO
ZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBW
ZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCitzdGF0aWMgdm9pZCB0cnlO
ZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBW
ZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxMb2dnZXI+JiYgbG9n
Z2VyLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXImJiBpZGVudGlmaWVyKQogewogICAg
IC8vIDYuMy4gRm9yIGVhY2ggdmFsdWUgaW4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbnM6CiAgICAg
aWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0VtcHR5KCkpIHsKQEAgLTg0LDcgKzExOCw3
IEBAIHN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+
JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNCiAgICAgICAgIE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiBjYW5kaWRhdGVDb25maWd1cmF0aW9uID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1
cmF0aW9ucy5maXJzdCgpKTsKICAgICAgICAgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMucmVtb3Zl
KDApOwogCi0gICAgICAgIENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxi
YWNrID0gW2ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2VdIChPcHRp
b25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
IG11dGFibGUgeworICAgICAgICBDRE06OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayBj
YWxsYmFjayA9IFtpbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uLCBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9ucyA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBwcm9taXNlLCBs
b2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1
cmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIC8vIDYuMy4zLiBJZiBzdXBwb3J0ZWQgY29u
ZmlndXJhdGlvbiBpcyBub3QgTm90U3VwcG9ydGVkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb25maWd1cmF0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgLy8gNi4zLjMuMS4gTGV0IGFjY2VzcyBiZSBhIG5ldyBNZWRpYUtleVN5c3RlbUFjY2VzcyBv
YmplY3QsIGFuZCBpbml0aWFsaXplIGl0IGFzIGZvbGxvd3M6CkBAIC05NywxOCArMTMxLDE5IEBA
IHN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYg
aW1wbGVtZW50YXRpb24sIFZlY3RvcjxNCiAgICAgICAgICAgICAgICAgYXV0byBhY2Nlc3MgPSBN
ZWRpYUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlKGtleVN5c3RlbSwgV1RGTW92ZShzdXBwb3J0ZWRD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBpbXBsZW1lbnRhdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsK
IAogICAgICAgICAgICAgICAgIC8vIDYuMy4zLjIuIFJlc29sdmUgcHJvbWlzZSB3aXRoIGFjY2Vz
cyBhbmQgYWJvcnQgdGhlIHBhcmFsbGVsIHN0ZXBzIG9mIHRoaXMgYWxnb3JpdGhtLgorICAgICAg
ICAgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJSZXNvbHZlZDoga2V5
U3lzdGVtKCIsIGtleVN5c3RlbSwgIiksIHN1cHBvcnRlZENvbmZpZ3VyYXRpb24oIiwgc3VwcG9y
dGVkQ29uZmlndXJhdGlvbiwgIikiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZl
V2l0aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8TWVkaWFLZXlTeXN0ZW1BY2Nlc3M+PihXVEZN
b3ZlKGFjY2VzcykpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1l
bnRhdGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21p
c2UpKTsKKyAgICAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUo
aW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92
ZShwcm9taXNlKSwgV1RGTW92ZShsb2dnZXIpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsKICAgICAg
ICAgfTsKICAgICAgICAgaW1wbGVtZW50YXRpb24tPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24o
V1RGTW92ZShjYW5kaWRhdGVDb25maWd1cmF0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0KICAgICAvLyA2LjQuIFJlamVjdCBwcm9taXNlIHdpdGgg
YSBOb3RTdXBwb3J0ZWRFcnJvci4KKyAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVy
LCAiUmVqZWN0ZWQ6IGVtcHR5IHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zIik7CiAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA4ZTky
ZmRhYzM3NDA0NGJhZGViZDYxNGM0MDM2NzA2OTA2MjgxYjJkLi5hNDc4Nzg1MGFlOWU0YTZhZTE2
ZWExMTRhMGIzYjdkNGJmMDVlMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtMTgxOCw2ICsxODE4LDcg
QEAgcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKIHBsYXRmb3JtL2F1ZGlvL1plcm9Qb2xl
LmNwcAogCiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1GYWN0b3J5LmNwcAorcGxhdGZvcm0v
ZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvQU5HTEVX
ZWJLaXRCcmlkZ2UuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAz
YjhlM2M1N2I2ZmJmYWRjMGUwYzkzNGVhMTMyNWY2NWY1NWM3ZjdmLi42MWZiYzQ2MzUxMDY2NGRm
ZDE5ZDM3ZjUzNDVhN2QwMWViYzA0M2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MDk1LDYgKzQwOTUsNyBAQAogCQlDRDhC
NUE0NjE4MERGRjRFMDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0NTE4MERGRjRFMDA4
QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggKi87IH07CiAJCUNEOEI1QTQ5MTgwRTEz
OEIwMDhCOEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNDgxODBFMTM4QjAwOEI4RTY1IC8qIFRl
eHRUcmFja01lZGlhU291cmNlLmggKi87IH07CiAJCUNEOEI1QTRDMTgwRTE3QzAwMDhCOEU2NSAv
KiBBdWRpb1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENEOEI1QTRCMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVk
aWFTb3VyY2UuaCAqLzsgfTsKKwkJQ0Q4RDMwNkYyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEQz
MDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi87IH07CiAJCUNEOTJGNTEzMjI2
MEZGRUUwMEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxzY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTJGNTEwMjI2MEZGRUUwMEY4N0JCMyAvKiBE
b2N1bWVudEZ1bGxzY3JlZW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRDkyRjUxODIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTJG
NTE2MjI2MTAzODIwMEY4N0JCMyAvKiBGdWxsc2NyZWVuTWFuYWdlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEOTRBNUREMUY3MUQ1RDgwMEY1
MjVDNSAvKiBDRE1DbGVhcktleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDk0QTVEQjFGNzFDQkIwMDBGNTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3Bw
ICovOyB9OwpAQCAtMTM4NjEsNiArMTM4NjIsOCBAQAogCQlDRDhDNkMyNzIyRkREQTkwMDBBNzIw
QUIgLyogSlNSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOEM2QzI4MjJGRERBOTAwMEE3MjBBQiAvKiBKU1Jl
bW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1v
dGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNEOEM2QzI5MjJGRERBOTEwMEE3MjBBQiAvKiBKU1JlbW90ZVBsYXliYWNrLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTUmVtb3RlUGxheWJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q4RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ0RNTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhEMzA2
RTIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
RE1Mb2dnaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MEYyMjYw
RkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRGdWxs
c2NyZWVuLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTAyMjYwRkZF
RTAwRjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVu
dEZ1bGxzY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTYyMjYx
MDM4MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxz
Y3JlZW5NYW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjI1OSw2ICsy
NjI2Miw4IEBACiAJCQkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50
LmggKi8sCiAJCQkJQ0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5o
ICovLAogCQkJCUNEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICov
LAorCQkJCUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8sCisJCQkJ
Q0Q4RDMwNkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuY3BwICovLAogCQkJKTsKIAkJ
CXBhdGggPSBlbmNyeXB0ZWRtZWRpYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0z
MDI4Nyw2ICszMDI5Miw3IEBACiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3
OTIxNjZFODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMDc5NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCBp
biBIZWFkZXJzICovLAorCQkJCUNEOEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5n
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0I0NDJENzE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5k
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBQTZCNkMxNjZEMkMx
MzAwRDQ1NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzMzQxNmI4ZWJk
NDU2NWM1Y2U0Nzk4ZDI1NWU5NTYyNTRhMDc4YjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmNwcApAQCAtMCwwICsx
LDE1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE1M
b2dnaW5nLmgiCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uLmgiCisjaW5j
bHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5jbHVkZSAiQ0RNUmVzdHJpY3Rpb25zLmgi
CisjaW5jbHVkZSAiSlNNZWRpYUtleUVuY3J5cHRpb25TY2hlbWUuaCIKKyNpbmNsdWRlICJKU01l
ZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleVNlc3Npb25UeXBlLmgi
CisjaW5jbHVkZSAiSlNNZWRpYUtleVN0YXR1c01hcC5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlz
UmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK3N0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoY29uc3Qg
Q0RNTWVkaWFDYXBhYmlsaXR5JiBjYXBhYmlsaXR5KQoreworICAgIGF1dG8gb2JqZWN0ID0gSlNP
Tjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICBvYmplY3QtPnNldFN0cmluZygiY29udGVudFR5cGUi
X3MsIGNhcGFiaWxpdHkuY29udGVudFR5cGUpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJyb2J1
c3RuZXNzIl9zLCBjYXBhYmlsaXR5LnJvYnVzdG5lc3MpOworICAgIGlmIChjYXBhYmlsaXR5LmVu
Y3J5cHRpb25TY2hlbWUpCisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJlbmNyeXB0aW9uU2No
ZW1lIl9zLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhjYXBhYmlsaXR5LmVuY3J5cHRpb25T
Y2hlbWUudmFsdWUoKSkpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3N0YXRpYyBSZWY8SlNP
Tjo6T2JqZWN0PiB0b0pTT05PYmplY3QoY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlv
bnMpCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIG9i
amVjdC0+c2V0Qm9vbGVhbigiZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkIl9zLCByZXN0cmlj
dGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKTsKKyAgICBvYmplY3QtPnNldEJvb2xl
YW4oInBlcnNpc3RlbnRTdGF0ZURlbmllZCJfcywgcmVzdHJpY3Rpb25zLnBlcnNpc3RlbnRTdGF0
ZURlbmllZCk7CisgICAgYXV0byBkZW5pZWRTZXNzaW9uVHlwZXMgPSBKU09OOjpBcnJheTo6Y3Jl
YXRlKCk7CisgICAgZm9yIChhdXRvIHR5cGUgOiByZXN0cmljdGlvbnMuZGVuaWVkU2Vzc2lvblR5
cGVzKQorICAgICAgICBkZW5pZWRTZXNzaW9uVHlwZXMtPnB1c2hTdHJpbmcoY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcodHlwZSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImRlbmllZFNlc3Np
b25UeXBlcyJfcywgV1RGTW92ZShkZW5pZWRTZXNzaW9uVHlwZXMpKTsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KGNvbnN0IENE
TUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byBvYmpl
Y3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJsYWJl
bCJfcywgY29uZmlndXJhdGlvbi5sYWJlbCk7CisKKyAgICBhdXRvIGluaXREYXRhVHlwZXMgPSBK
U09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRvIGluaXREYXRhVHlwZSA6IGNvbmZp
Z3VyYXRpb24uaW5pdERhdGFUeXBlcykKKyAgICAgICAgaW5pdERhdGFUeXBlcy0+cHVzaFN0cmlu
Zyhpbml0RGF0YVR5cGUpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImluaXREYXRhVHlwZXMiX3Ms
IFdURk1vdmUoaW5pdERhdGFUeXBlcykpOworCisgICAgYXV0byBhdWRpb0NhcGFiaWxpdGllcyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8gY2FwYWJpbGl0eSA6IGNvbmZp
Z3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAgIGF1ZGlvQ2FwYWJpbGl0aWVzLT5w
dXNoT2JqZWN0KHRvSlNPTk9iamVjdChjYXBhYmlsaXR5KSk7CisgICAgb2JqZWN0LT5zZXRBcnJh
eSgiYXVkaW9DYXBhYmlsaXRpZXMiX3MsIFdURk1vdmUoYXVkaW9DYXBhYmlsaXRpZXMpKTsKKwor
ICAgIGF1dG8gdmlkZW9DYXBhYmlsaXRpZXMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAg
Zm9yIChhdXRvIGNhcGFiaWxpdHkgOiBjb25maWd1cmF0aW9uLnZpZGVvQ2FwYWJpbGl0aWVzKQor
ICAgICAgICB2aWRlb0NhcGFiaWxpdGllcy0+cHVzaE9iamVjdCh0b0pTT05PYmplY3QoY2FwYWJp
bGl0eSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoInZpZGVvQ2FwYWJpbGl0aWVzIl9zLCBXVEZN
b3ZlKHZpZGVvQ2FwYWJpbGl0aWVzKSk7CisKKyAgICBvYmplY3QtPnNldFN0cmluZygiZGlzdGlu
Y3RpdmVJZGVudGlmaWVyIl9zLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhjb25maWd1cmF0
aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllcikpOworICAgIG9iamVjdC0+c2V0U3RyaW5nKCJwZXJz
aXN0ZW50U3RhdGUiX3MsIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGNvbmZpZ3VyYXRpb24u
cGVyc2lzdGVudFN0YXRlKSk7CisKKyAgICBhdXRvIHNlc3Npb25UeXBlcyA9IEpTT046OkFycmF5
OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8gdHlwZSA6IGNvbmZpZ3VyYXRpb24uc2Vzc2lvblR5
cGVzKQorICAgICAgICBzZXNzaW9uVHlwZXMtPnB1c2hTdHJpbmcoY29udmVydEVudW1lcmF0aW9u
VG9TdHJpbmcodHlwZSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoInNlc3Npb25UeXBlcyJfcywg
V1RGTW92ZShzZXNzaW9uVHlwZXMpKTsKKworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3N0YXRp
YyBTdHJpbmcgdG9KU09OU3RyaW5nKGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNv
bmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvSlNPTk9iamVjdChjb25maWd1cmF0aW9uKS0+
dG9KU09OU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBTdHJpbmcgdG9KU09OU3RyaW5nKGNvbnN0IENE
TU1lZGlhQ2FwYWJpbGl0eSYgY2FwYWJpbGl0eSkKK3sKKyAgICByZXR1cm4gdG9KU09OT2JqZWN0
KGNhcGFiaWxpdHkpLT50b0pTT05TdHJpbmcoKTsKK30KKworc3RhdGljIFN0cmluZyB0b0pTT05T
dHJpbmcoY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCit7CisgICAgcmV0dXJu
IHRvSlNPTk9iamVjdChyZXN0cmljdGlvbnMpLT50b0pTT05TdHJpbmcoKTsKK30KKworfQorCitu
YW1lc3BhY2UgV1RGIHsKKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETUtleVN5c3Rl
bUNvbmZpZ3VyYXRpb24+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0pTT05TdHJpbmcoY29u
ZmlndXJhdGlvbik7Cit9CisKK1N0cmluZyBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZWRpYUNh
cGFiaWxpdHk+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHkmIGNh
cGFiaWxpdHkpCit7CisgICAgcmV0dXJuIHRvSlNPTlN0cmluZyhjYXBhYmlsaXR5KTsKK30KKwor
U3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucz46OnRvU3RyaW5nKGNv
bnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKQoreworICAgIHJldHVy
biB0b0pTT05TdHJpbmcocmVzdHJpY3Rpb25zKTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdl
YkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1F
bmNyeXB0aW9uU2NoZW1lJiB0eXBlKQoreworICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETUtleVN0
YXR1cz46OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUtleVN0YXR1cyYgdHlwZSkKK3sKKyAg
ICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK1N0cmluZyBM
b2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT46OnRvU3RyaW5nKGNvbnN0IFdlYkNv
cmU6OkNETU1lc3NhZ2VUeXBlJiB0eXBlKQoreworICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVJl
cXVpcmVtZW50Pjo6dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQmIHR5cGUp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOworfQorCitT
dHJpbmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU+Ojp0b1N0cmluZyhjb25z
dCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYgdHlwZSkKK3sKKyAgICByZXR1cm4gY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YjY2Y2I4
NjhmMjhlMTI0ZDVjODY3ZTQ1NDg4NmZjNjJiY2ViOGY1Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5oCkBAIC0wLDAg
KzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDRE1LZXlTeXN0
ZW1Db25maWd1cmF0aW9uOworc3RydWN0IENETU1lZGlhQ2FwYWJpbGl0eTsKK3N0cnVjdCBDRE1S
ZXN0cmljdGlvbnM7CisKK2VudW0gY2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZTsKK2VudW0gY2xh
c3MgQ0RNS2V5U3RhdHVzOworZW51bSBjbGFzcyBDRE1NZXNzYWdlVHlwZTsKK2VudW0gY2xhc3Mg
Q0RNUmVxdWlyZW1lbnQ7CitlbnVtIGNsYXNzIENETVNlc3Npb25UeXBlOworCit9CisKK25hbWVz
cGFjZSBXVEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwor
dGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25m
aWd1cmF0aW9uPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpD
RE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJik7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExv
Z0FyZ3VtZW50PFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJpbGl0eT4geworICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmlsaXR5Jik7Cit9OworCit0
ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucz4g
eworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rp
b25zJik7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNE
TUVuY3J5cHRpb25TY2hlbWU+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdl
YkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWUmKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3Qg
TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPiB7CisgICAgc3RhdGljIFN0cmluZyB0
b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1LZXlTdGF0dXMmKTsKK307CisKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGU+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlJik7Cit9Owor
Cit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVJlcXVpcmVtZW50
PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1SZXF1aXJl
bWVudCYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29y
ZTo6Q0RNU2Vzc2lvblR5cGUmKTsKK307CisKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386900</attachid>
            <date>2020-01-06 15:39:01 -0800</date>
            <delta_ts>2020-01-07 15:47:19 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205519-20200106153900.patch</filename>
            <type>text/plain</type>
            <size>60812</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiZDgzNjJiNWJkYWVm
NDEwNzI4MTVlZGE0NjQzZDVjMzQ3ZmIwZS4uYmE1Y2UxNGZiZWM0YWUzNTU1OTE5YzRmZTkyY2U0
ZTI1ZGZjOGZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE5LTEyLTIwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5nIGZvciBN
b2Rlcm4gRU1FIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHA6CisgICAgICAgIChXVEY6
OkxvZ0FyZ3VtZW50PFZlY3RvcjxUPj46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8T3B0aW9uYWw8VD4+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNPTk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTT05TdHJpbmcpOgor
ICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1N
ZWRpYUNhcGFiaWxpdHk+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucz46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT46OnRvU3RyaW5nKToKKyAgICAgICAg
KFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPjo6dG9TdHJpbmcpOgorICAg
ICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT46OnRvU3RyaW5n
KToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+Ojp0
b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxv
Z2dpbmcuaDogQWRkZWQuCisKIDIwMTktMTItMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBs
ZS5jb20+CiAKICAgICAgICAgTWVkaWFLZXlTZXNzaW9uLmxvYWQoKSBmYWlscwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Np
b24uY3BwCmluZGV4IGRhMTliYmZmMmM3Y2U4MmJlZmE4MDM1YWQ3NTQyZTNlOWYyMmE2OWQuLjgx
MGIzNWY5ZTRjYWRhMzg3MTE5YWU5OTE2MjI1NjlmNDFjMzQ2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5j
cHAKQEAgLTQ5LDIwICs0OSwyMiBAQAogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
U2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KKyNpbmNs
dWRlIDx3dGYvTG9nZ2VySGVscGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01B
S0VfSVNPX0FMTE9DQVRFRF9JTVBMKE1lZGlhS2V5U2Vzc2lvbik7CiAKLVJlZjxNZWRpYUtleVNl
c3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vz
c2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxl
bWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNlU2Vzc2lvbikKK1Jl
ZjxNZWRpYUtleVNlc3Npb24+IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNz
aW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVt
ZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYgaW5zdGFuY2VTZXNzaW9uKQogewot
ICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVmKCpuZXcgTWVkaWFLZXlTZXNzaW9uKGNvbnRleHQs
IFdURk1vdmUoa2V5cyksIHNlc3Npb25UeXBlLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFdU
Rk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKGluc3RhbmNlU2Vzc2lvbikpKTsKKyAgICBh
dXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vzc2lvbihkb2N1bWVudCwgV1RG
TW92ZShrZXlzKSwgc2Vzc2lvblR5cGUsIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgV1RGTW92
ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoaW5zdGFuY2VTZXNzaW9uKSkpOwogICAgIHNlc3Np
b24tPnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiBzZXNzaW9uOwogfQogCi1NZWRpYUtl
eVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25U
eXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRh
dGlvbiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCi0gICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCitNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lv
bihEb2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5
U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBS
ZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3Rh
bmNlU2Vzc2lvbikKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmZG9jdW1lbnQpCisgICAgLCBtX2xv
Z2dlcihkb2N1bWVudC5sb2dnZXIoKSkKICAgICAsIG1fa2V5cyhXVEZNb3ZlKGtleXMpKQogICAg
ICwgbV9leHBpcmF0aW9uKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6cXVpZXRfTmFOKCkp
CiAgICAgLCBtX2Nsb3NlZFByb21pc2UobWFrZVVuaXF1ZVJlZjxDbG9zZWRQcm9taXNlPigpKQpA
QCAtNzYsNyArNzgsNyBAQCBNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1lZGlhSwogICAgIC8vIFczQyBFZGl0
b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAgICAgLy8gY3JlYXRlU2Vzc2lvbigpLCBjdGQu
CiAKLSAgICBMT0coRU1FLCAiRU1FIC0gbmV3IHNlc3Npb24gY3JlYXRlZCIpOworICAgIElORk9f
TE9HKExPR0lERU5USUZJRVIsICJzZXNzaW9uVHlwZSgiLCBzZXNzaW9uVHlwZSwgIiksIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllcigiLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsICIpIik7CiAK
ICAgICAvLyAzLjEuIExldCB0aGUgc2Vzc2lvbklkIGF0dHJpYnV0ZSBiZSB0aGUgZW1wdHkgc3Ry
aW5nLgogICAgIC8vIDMuMi4gTGV0IHRoZSBleHBpcmF0aW9uIGF0dHJpYnV0ZSBiZSBOYU4uCkBA
IC0xMjgsOSArMTMwLDExIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3Qo
Y29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gV2hlbiB0
aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJuIGEg
cHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIuIElm
IHRoaXMgb2JqZWN0J3MgdW5pbml0aWFsaXplZCB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJv
bWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIExPRyhFTUUsICJF
TUUgLSBnZW5lcmF0ZSByZXF1ZXN0Iik7CisgICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJ
RklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiaW5pdERhdGFUeXBlKCIsIGluaXREYXRh
VHlwZSwgIiksIGluaXREYXRhLmxlbmd0aCgiLCBpbml0RGF0YS5sZW5ndGgoKSwgIikiKTsKIAog
ICAgIGlmIChtX2Nsb3NlZCB8fCAhbV91bmluaXRpYWxpemVkKSB7CisgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5pbml0
aWFsaXplZCgiLCAhbV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQxLDYg
KzE0NSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRv
bVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gNC4gSWYgaW5pdERhdGFU
eXBlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIC8vIDUuIElmIGluaXREYXRhIGlzIGFuIGVt
cHR5IGFycmF5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVk
IFR5cGVFcnJvci4KICAgICBpZiAoaW5pdERhdGFUeXBlLmlzRW1wdHkoKSB8fCAhaW5pdERhdGEu
bGVuZ3RoKCkpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBpbml0
RGF0YVR5cGUgZW1wdHkoIiwgaW5pdERhdGFUeXBlLmlzRW1wdHkoKSwgIikgb3IgaW5pdERhdGEg
ZW1wdHkoIiwgIWluaXREYXRhLmxlbmd0aCgpLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0OSw2ICsxNTQsNyBA
QCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcm
IGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIC8vICAgIGluaXREYXRhVHlwZSBhcyBhbiBJ
bml0aWFsaXphdGlvbiBEYXRhIFR5cGUsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
IE5vdFN1cHBvcnRlZEVycm9yLiBTdHJpbmcKICAgICAvLyAgICBjb21wYXJpc29uIGlzIGNhc2Ut
c2Vuc2l0aXZlLgogICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNJbml0RGF0YVR5
cGUoaW5pdERhdGFUeXBlKSkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0
ZWQ6IGluaXREYXRhVHlwZSgiLCBpbml0RGF0YVR5cGUsICIpIHVuc3VwcG9ydGVkIik7CiAgICAg
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xNTcsMTkgKzE2MywyMSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAg
IC8vIDguIExldCBzZXNzaW9uIHR5cGUgYmUgdGhpcyBvYmplY3QncyBzZXNzaW9uIHR5cGUuCiAg
ICAgLy8gOS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyAxMC4gUnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgaW5pdERhdGEgPSBT
aGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLmxlbmd0aCgpKSwg
aW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7Cisg
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3Jr
aW5nLCBbdGhpcywgaW5pdERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRh
KCksIGluaXREYXRhLmxlbmd0aCgpKSwgaW5pdERhdGFUeXBlLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewog
ICAgICAgICAvLyAxMC4xLiBJZiB0aGUgaW5pdCBkYXRhIGlzIG5vdCB2YWxpZCBmb3IgaW5pdERh
dGFUeXBlLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAg
ICAgICAgIC8vIDEwLjIuIExldCBzYW5pdGl6ZWQgaW5pdCBkYXRhIGJlIGEgdmFsaWRhdGVkIGFu
ZCBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBpbml0IGRhdGEuCiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHNhbml0aXplZEluaXREYXRhID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRpemVJbml0
RGF0YShpbml0RGF0YVR5cGUsIGluaXREYXRhKTsKIAogICAgICAgICAvLyAxMC4zLiBJZiB0aGUg
cHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRl
ZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkSW5pdERhdGEpIHsKKyAgICAgICAg
ICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogY2Fubm90IHNhbml0
aXplIGluaXQgZGF0YSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyAxMC40LiBJZiBz
YW5pdGl6ZWQgaW5pdCBkYXRhIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3Vw
cG9ydGVkRXJyb3IuCiAgICAgICAgIGlmIChzYW5pdGl6ZWRJbml0RGF0YS0+aXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IGVt
cHR5IHNhbml0aXplZCBpbml0IGRhdGEiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChO
b3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE4
MSw2ICsxODksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0
IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgICAgICAvLyAxMC45LiBV
c2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgICAgIC8vIDEw
LjkuMS4gSWYgdGhlIHNhbml0aXplZCBpbml0IGRhdGEgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUg
Y2RtLCByZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuCiAgICAgICAgIGlm
ICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNJbml0RGF0YShpbml0RGF0YVR5cGUsICpzYW5p
dGl6ZWRJbml0RGF0YSkpIHsKKyAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRh
c2soKSBSZWplY3RlZDogdW5zdXBwb3J0ZWQgaW5pdERhdGFUeXBlICgiLCBpbml0RGF0YVR5cGUs
ICIpIG9yIHNhbml0aXplZCBpbml0RGF0YSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0
KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MjA0LDggKzIxMyw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICBtX2xh
dGVzdERlY3J5cHRUaW1lID0gMDsKICAgICAgICAgfQogCi0gICAgICAgIExPRyhFTUUsICJFTUUg
LSByZXF1ZXN0IGxpY2Vuc2UgZnJvbSBDRE0gaW1wbGVtZW50YXRpb24iKTsKLSAgICAgICAgbV9p
bnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNlKG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlw
ZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5vbk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJ
bmRpdmlkdWFsaXphdGlvbiwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2Vl
ZGVkKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlcXVlc3RMaWNlbnNl
KG1fc2Vzc2lvblR5cGUsIGluaXREYXRhVHlwZSwgc2FuaXRpemVkSW5pdERhdGEucmVsZWFzZU5v
bk51bGwoKSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChSZWY8
U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBib29sIG5l
ZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1
Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIApAQCAtMjI2LDkgKzIzNCwxMCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6Z2VuZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3Qg
QnVmZgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyAxMC4xMC4gUXVldWUgYSB0YXNr
IHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAgICAgcXVldWVUYXNrS2VlcGlu
Z09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBtZXNzYWdl
VHlwZSwgc2Vzc2lvbklkLCBzdWNjZWVkZWRdICgpIG11dGFibGUgeworICAgICAgICAgICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBb
dGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpLCBtZXNzYWdlVHlwZSwgc2Vzc2lvbklkLCBzdWNjZWVkZWQsIGlkZW50aWZpZXIgPSBXVEZN
b3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICAvLyAxMC4xMC4x
LiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdp
dGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9y
IG5hbWUuCiAgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Np
b246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZmFpbGVkIHRvIHJlcXVlc3QgbGljZW5z
ZSIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJy
b3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQpAQCAt
MjQyLDYgKzI1MSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICAgICAg
ZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOwogCiAgICAgICAgICAgICAgICAg
Ly8gMTAuOS4zLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMjU1LDkgKzI2NSwx
MyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXNlc3Npb24tbG9hZAogICAgIC8vIFczQyBF
ZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBM
T0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJzZXNzaW9uSWQoIiwgc2Vz
c2lvbklkLCAiKSIpOworCiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8g
Mi4gSWYgdGhpcyBvYmplY3QncyB1bmluaXRpYWxpemVkIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgaWYgKG1f
Y2xvc2VkIHx8ICFtX3VuaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmll
ciwgIlJlamVjdGVkOiBjbG9zZWQoIiwgbV9jbG9zZWQsICIpIG9yICF1bmluaXRpYWxpemVkKCIs
ICFtX3VuaW5pdGlhbGl6ZWQsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlk
U3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0yNjgsNiArMjgyLDcgQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAvLyA0LiBJZiBzZXNzaW9uSWQgaXMgdGhlIGVt
cHR5IHN0cmluZywgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRl
ZCBUeXBlRXJyb3IuCiAgICAgLy8gNS4gSWYgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBJcyBw
ZXJzaXN0ZW50IHNlc3Npb24gdHlwZT8gYWxnb3JpdGhtIG9uIHRoaXMgb2JqZWN0J3Mgc2Vzc2lv
biB0eXBlIGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBj
cmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAoc2Vzc2lvbklkLmlzRW1wdHkoKSB8fCBtX3Nlc3Np
b25UeXBlID09IE1lZGlhS2V5U2Vzc2lvblR5cGU6OlRlbXBvcmFyeSkgeworICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNlc3Npb25JRCBlbXB0eSgiLCBzZXNzaW9uSWQu
aXNFbXB0eSgpLCAiKSBvciBzZXNzaW9uVHlwZSA9PSBUZW1wb3JhcnkgKCIsIG1fc2Vzc2lvblR5
cGUgPT0gTWVkaWFLZXlTZXNzaW9uVHlwZTo6VGVtcG9yYXJ5LCAiKSIpOwogICAgICAgICBwcm9t
aXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI3Nywx
MSArMjkyLDEyIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAKICAgICAvLyA3LiBMZXQgcHJv
bWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDguIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
IGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFz
a1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHNlc3Npb25JZCwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldICgpIG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHNlc3Npb25JZCwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBt
dXRhYmxlIHsKICAgICAgICAgLy8gOC4xLiBMZXQgc2FuaXRpemVkIHNlc3Npb24gSUQgYmUgYSB2
YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHNlc3Npb25JZC4KICAgICAgICAg
Ly8gOC4yLiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgc2Vz
c2lvbiBJRCBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlw
ZUVycm9yLgogICAgICAgICBPcHRpb25hbDxTdHJpbmc+IHNhbml0aXplZFNlc3Npb25JZCA9IG1f
aW1wbGVtZW50YXRpb24tPnNhbml0aXplU2Vzc2lvbklkKHNlc3Npb25JZCk7CiAgICAgICAgIGlm
ICghc2FuaXRpemVkU2Vzc2lvbklkIHx8IHNhbml0aXplZFNlc3Npb25JZC0+aXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IHNhbml0aXplZFNT
ZXNzaW9uSUQgZW1wdHkiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3Ip
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yOTgsNyArMzE0LDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgLy8gOC42LiBMZXQgbWVzc2FnZSB0eXBlIGJl
IG51bGwuCiAgICAgICAgIC8vIDguNy4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJl
c2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA4
LjguIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAg
bV9pbnN0YW5jZVNlc3Npb24tPmxvYWRTZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRT
ZXNzaW9uSWQsIG9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgc2FuaXRpemVkU2Vzc2lvbklkID0gKnNhbml0aXpl
ZFNlc3Npb25JZF0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9y
PiYmIGtub3duS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb24sIE9wdGlvbmFsPENE
TUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246
OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRG
YWlsdXJlIGZhaWx1cmUpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+bG9h
ZFNlc3Npb24obV9zZXNzaW9uVHlwZSwgKnNhbml0aXplZFNlc3Npb25JZCwgb3JpZ2luLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRpemVkU2Vzc2lvbklkLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5
U3RhdHVzVmVjdG9yPiYmIGtub3duS2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGV4cGlyYXRpb24s
IE9wdGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQsIENETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlIGZhaWx1cmUpIG11dGFibGUgewogICAgICAgICAgICAgLy8gOC44
LjEuIElmIHRoZXJlIGlzIG5vIGRhdGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24g
SUQgaW4gdGhlIG9yaWdpbiwgcmVzb2x2ZSBwcm9taXNlIHdpdGggZmFsc2UgYW5kIGFib3J0IHRo
ZXNlIHN0ZXBzLgogICAgICAgICAgICAgLy8gOC44LjIuIElmIHRoZSBzdG9yZWQgc2Vzc2lvbidz
IHNlc3Npb24gdHlwZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgTWVkaWFLZXlTZXNz
aW9uIHNlc3Npb24gdHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlw
ZUVycm9yLgogICAgICAgICAgICAgLy8gOC44LjMuIExldCBzZXNzaW9uIGRhdGEgYmUgdGhlIGRh
dGEgc3RvcmVkIGZvciB0aGUgc2FuaXRpemVkIHNlc3Npb24gSUQgaW4gdGhlIG9yaWdpbi4gVGhp
cyBtdXN0IG5vdCBpbmNsdWRlIGRhdGEgZnJvbSBvdGhlciBvcmlnaW4ocykgb3IgdGhhdCBpcyBu
b3QgYXNzb2NpYXRlZCB3aXRoIGFuIG9yaWdpbi4KQEAgLTMxMywxMiArMzI5LDE1IEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKICAgICAgICAgICAgICAgICBzd2l0
Y2ggKGZhaWx1cmUpIHsKICAgICAgICAgICAgICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6
U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb1Nlc3Npb25EYXRhOgorICAgICAgICAgICAgICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVzb2x2ZWQ6IE5vU2Vzc2lvbkRhdGEiKTsK
ICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPihmYWxzZSk7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNlIENETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpNaXNtYXRjaGVkU2Vzc2lvblR5cGU6
CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWpl
Y3RlZDogTWlzbWF0Y2hlZFNlc3Npb25UeXBlIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21p
c2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6
UXVvdGFFeGNlZWRlZDoKKyAgICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwg
Ijo6dGFzaygpIFJlamVjdGVkOiBRdW90YUV4Y2VlZGVkIik7CiAgICAgICAgICAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdChRdW90YUV4Y2VlZGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Np
b25Mb2FkRmFpbHVyZTo6Tm9uZToKQEAgLTMyOSw5ICszNDgsMTAgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gOC45LiBRdWV1ZSBhIHRh
c2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVw
aW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrbm93
bktleXMgPSBXVEZNb3ZlKGtub3duS2V5cyksIGV4cGlyYXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRp
b24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc2FuaXRpemVkU2Vzc2lvbklkLCBzdWNj
ZWVkZWQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29y
a2luZywgW3RoaXMsIGtub3duS2V5cyA9IFdURk1vdmUoa25vd25LZXlzKSwgZXhwaXJhdGlvbiA9
IFdURk1vdmUoZXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzYW5pdGl6
ZWRTZXNzaW9uSWQsIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50
aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgICAg
ICAvLyA4LjkuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWplY3Qg
cHJvbWlzZSB3aXRoIGEgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAg
ICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkKSB7CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2so
KSBSZWplY3RlZDogT3RoZXIgZmFpbHVyZSIpOwogICAgICAgICAgICAgICAgICAgICBwcm9taXNl
LT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICAgICAgfQpAQCAtMzU0LDYgKzM3NCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pCiAgICAgICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2UtPmZpcnN0
LCBXVEZNb3ZlKG1lc3NhZ2UtPnNlY29uZCkpOwogCiAgICAgICAgICAgICAgICAgLy8gOC45Ljcu
IFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUuCisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+
cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsK
QEAgLTM3MCwxNSArMzkxLDE4IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3Qg
QnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgLy8gV2hl
biB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlzIGNsb3NlZCwgcmV0dXJu
IGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIC8vIDIu
IElmIHRoaXMgb2JqZWN0J3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KLSAgICBMT0coRU1FLCAiRU1F
IC0gdXBkYXRlIHNlc3Npb24gZm9yICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Cisg
ICAgYXV0byBpZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAicmVzcG9uc2UubGVuZ3RoKCIsIHJlc3BvbnNlLmxlbmd0aCgpLCAiKSIpOwogCiAgICAg
aWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZp
ZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhY2FsbGFibGUoIiwgIW1f
Y2FsbGFibGUsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJv
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAzLiBJZiByZXNwb25zZSBpcyBh
biBlbXB0eSBhcnJheSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3Jl
YXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKCFyZXNwb25zZS5sZW5ndGgoKSkgeworICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGVtcHR5IHJlc3BvbnNlIik7CiAgICAgICAg
IHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
Mzg2LDEyICs0MTAsMTMgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZm
ZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyA0LiBMZXQg
cmVzcG9uc2UgY29weSBiZSBhIGNvcHkgb2YgdGhlIGNvbnRlbnRzIG9mIHRoZSByZXNwb25zZSBw
YXJhbWV0ZXIuCiAgICAgLy8gNS4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAv
LyA2LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tL
ZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBy
ZXNwb25zZSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2Uu
bGVuZ3RoKCkpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5n
LCBbdGhpcywgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNwb25zZS5kYXRhKCks
IHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNi4xLiBM
ZXQgc2FuaXRpemVkIHJlc3BvbnNlIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVy
c2lvbiBvZiByZXNwb25zZSBjb3B5LgogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5p
dGl6ZWRSZXNwb25zZSA9IG1faW1wbGVtZW50YXRpb24tPnNhbml0aXplUmVzcG9uc2UocmVzcG9u
c2UpOwogCiAgICAgICAgIC8vIDYuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3Ig
aWYgc2FuaXRpemVkIHJlc3BvbnNlIGlzIGVtcHR5LCByZWplY3QgcHJvbWlzZSB3aXRoIGEgbmV3
bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIGlmICghc2FuaXRpemVkUmVzcG9uc2UgfHwg
c2FuaXRpemVkUmVzcG9uc2UtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIjo6dGFzayAtIFJlamVjdGVkOiBlbXB0eSBzYW5pdGl6ZWQgcmVzcG9uc2UiKTsK
ICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC00MDEsNyArNDI2LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246
OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYKICAgICAgICAgLy8gNi41LiBMZXQgc2Vzc2lvbiBjbG9zZWQgYmUgZmFsc2UuCiAgICAgICAg
IC8vIDYuNi4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMg
b2JqZWN0J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA2LjcuIFVzZSB0aGUgY2Rt
IHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPnVwZGF0ZUxpY2Vuc2UobV9zZXNzaW9uSWQsIG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRS
ZXNwb25zZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5z
dGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRv
dWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpN
ZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNl
KG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoYm9vbCBzZXNzaW9uV2FzQ2xvc2Vk
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBjaGFuZ2Vk
S2V5cywgT3B0aW9uYWw8ZG91YmxlPiYmIGNoYW5nZWRFeHBpcmF0aW9uLCBPcHRpb25hbDxDRE1J
bnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpT
dWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghd2Vha1Ro
aXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MjgsNyArNDUzLDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYKICAgICAgICAgICAgIC8vIE5PVEU6IFN0ZXBzIDYuNy4xLiBhbmQg
Ni43LjIuIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBDRE1JbnN0YW5jZS4KIAogICAgICAgICAg
ICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFp
bGVkKSB7Ci0gICAgICAgICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIGZhaWxlZCB0byB1cGRhdGUg
Q0RNIGxpY2Vuc2UgZm9yICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CisgICAgICAg
ICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkIik7CiAgICAg
ICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtNDM3LDggKzQ2Miw3IEBAIHZvaWQgTWVkaWFLZXlT
ZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVk
UHJvbWlzZT4mCiAgICAgICAgICAgICAvLyAgIDYuNy4zLjEuIExldCBtZXNzYWdlIGJlIHRoYXQg
bWVzc2FnZS4KICAgICAgICAgICAgIC8vICAgNi43LjMuMi4gTGV0IG1lc3NhZ2UgdHlwZSBiZSB0
aGUgYXBwcm9wcmlhdGUgTWVkaWFLZXlNZXNzYWdlVHlwZSBmb3IgdGhlIG1lc3NhZ2UuCiAgICAg
ICAgICAgICAvLyA2LjguIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
LSAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHNlc3Npb25XYXNDbG9zZWQsIGNoYW5nZWRLZXlzID0gV1RG
TW92ZShjaGFuZ2VkS2V5cyksIGNoYW5nZWRFeHBpcmF0aW9uID0gV1RGTW92ZShjaGFuZ2VkRXhw
aXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgTE9HKEVNRSwgIkVNRSAtIHVw
ZGF0aW5nIENETSBsaWNlbnNlIHN1Y2NlZWRlZCBmb3Igc2Vzc2lvbiAlcywgc2VuZGluZyBhIG1l
c3NhZ2UgdG8gdGhlIGxpY2Vuc2Ugc2VydmVyIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7
CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNzaW9uV2FzQ2xvc2VkLCBjaGFuZ2VkS2V5cyA9IFdU
Rk1vdmUoY2hhbmdlZEtleXMpLCBjaGFuZ2VkRXhwaXJhdGlvbiA9IFdURk1vdmUoY2hhbmdlZEV4
cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICAvLyA2LjguMS4KICAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbldh
c0Nsb3NlZCkgewogICAgICAgICAgICAgICAgICAgICAvLyDihrMgSWYgc2Vzc2lvbiBjbG9zZWQg
aXMgdHJ1ZToKQEAgLTQ4NCw2ICs1MDgsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRl
KGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAg
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIDYuOC4yLiBSZXNvbHZlIHByb21p
c2UuCisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29s
dmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0pOwpAQCAtNDk3LDM3ICs1MjIsNDIgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OmNsb3NlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzZXNzaW9uLWNsb3Nl
CiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKIAorICAgIGF1dG8g
aWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgSU5GT19MT0coaWRlbnRpZmllcik7CisK
ICAgICAvLyAxLiBMZXQgc2Vzc2lvbiBiZSB0aGUgYXNzb2NpYXRlZCBNZWRpYUtleVNlc3Npb24g
b2JqZWN0LgogICAgIC8vIDIuIElmIHNlc3Npb24gaXMgY2xvc2VkLCByZXR1cm4gYSByZXNvbHZl
ZCBwcm9taXNlLgogICAgIExPRyhFTUUsICJFTUUgLSBjbG9zaW5nIHNlc3Npb24gJXMiLCBtX3Nl
c3Npb25JZC51dGY4KCkuZGF0YSgpKTsKIAogICAgIGlmIChtX2Nsb3NlZCkgeworICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiUmVzb2x2ZWQ6IGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAg
IHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDMu
IElmIHNlc3Npb24ncyBjYWxsYWJsZSB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSBy
ZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgogICAgIGlmICghbV9jYWxsYWJsZSkg
eworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFjYWxsYWJsZSIpOwog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gNC4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAg
ICAvLyA1LiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlz
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAgcXVldWVUYXNr
S2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAgLy8gNS4xLiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5z
dGFuY2UgcmVwcmVzZW50ZWQgYnkgc2Vzc2lvbidzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAg
ICAgLy8gNS4yLiBVc2UgY2RtIHRvIGNsb3NlIHRoZSBrZXkgc2Vzc2lvbiBhc3NvY2lhdGVkIHdp
dGggc2Vzc2lvbi4KLSAgICAgICAgTE9HKEVNRSwgIkVNRSAtIGNsb3NpbmcgQ0RNIHNlc3Npb24g
JXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Np
b24tPmNsb3NlU2Vzc2lvbihtX3Nlc3Npb25JZCwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAg
ICAgIG1faW5zdGFuY2VTZXNzaW9uLT5jbG9zZVNlc3Npb24obV9zZXNzaW9uSWQsIFt0aGlzLCB3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSks
IGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsKICAgICAgICAg
ICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAg
ICAvLyA1LjMuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAg
ICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0
d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlm
aWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAg
Ly8gNS4zLjEuIFJ1biB0aGUgU2Vzc2lvbiBDbG9zZWQgYWxnb3JpdGhtIG9uIHRoZSBzZXNzaW9u
LgogICAgICAgICAgICAgICAgIHNlc3Npb25DbG9zZWQoKTsKIAogICAgICAgICAgICAgICAgIC8v
IDUuMy4yLiBSZXNvbHZlIHByb21pc2UuCisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRp
ZmllciwgIjo6dGFzaygpIFJlc29sdmVkIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVz
b2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNTQzLDIyICs1NzMsMjUg
QEAgdm9pZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBy
b21pc2UpCiAKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVybiBhIHBy
b21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAvLyAyLiBJZiB0
aGlzIG9iamVjdCdzIGNhbGxhYmxlIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNlIHJl
amVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAgTE9HKEVNRSwgIkVNRSAtIHJl
bW92aW5nIHNlc3Npb24gJXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKKworICAgIGF1
dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgSU5GT19MT0coaWRlbnRpZmllcik7
CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1fY2FsbGFibGUpIHsKKyAgICAgICAgSU5GT19MT0co
aWRlbnRpZmllciwgIlJlamVjdGVkOiBjbG9zZWQoIiwgbV9jbG9zZWQsICIpIG9yICFjYWxsYWJs
ZSgiLCAhbV9jYWxsYWJsZSwgIikiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRT
dGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDMuIExldCBwcm9t
aXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8gNC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMg
aW4gcGFyYWxsZWw6Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNr
U291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgp
IG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDQu
MS4gTGV0IGNkbSBiZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0
J3MgY2RtIGluc3RhbmNlIHZhbHVlLgogICAgICAgICAvLyA0LjIuIExldCBtZXNzYWdlIGJlIG51
bGwuCiAgICAgICAgIC8vIDQuMy4gTGV0IG1lc3NhZ2UgdHlwZSBiZSBudWxsLgogCiAgICAgICAg
IC8vIDQuNC4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAg
ICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQsIG1f
c2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldIChDRE1JbnN0YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3Rv
ciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRCdWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT5yZW1vdmVTZXNzaW9uRGF0YShtX3Nlc3Npb25JZCwgbV9zZXNzaW9u
VHlwZSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RG
TW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChDRE1JbnN0
YW5jZVNlc3Npb246OktleVN0YXR1c1ZlY3RvciYmIGtleXMsIE9wdGlvbmFsPFJlZjxTaGFyZWRC
dWZmZXI+PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2Nl
ZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtNTc3LDcgKzYxMCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpy
ZW1vdmUoUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogICAgICAgICAgICAgLy8gTk9U
RTogU3RlcCA0LjQuMS4gc2hvdWxkIGJlIGltcGxlbWVudGVkIGluIENETUluc3RhbmNlLgogCiAg
ICAgICAgICAgICAvLyA0LjUuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVw
czoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtleXMgPSBXVEZNb3ZlKGtleXMpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgc3VjY2VlZGVkLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrZXlzID0gV1RGTW92ZShrZXlzKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoKSBtdXRhYmxlIHsK
ICAgICAgICAgICAgICAgICAvLyA0LjUuMS4gUnVuIHRoZSBVcGRhdGUgS2V5IFN0YXR1c2VzIGFs
Z29yaXRobSBvbiB0aGUgc2Vzc2lvbiwgcHJvdmlkaW5nIGFsbCBrZXkgSUQocykgaW4gdGhlIHNl
c3Npb24gYWxvbmcgd2l0aCB0aGUgInJlbGVhc2VkIiBNZWRpYUtleVN0YXR1cyB2YWx1ZSBmb3Ig
ZWFjaC4KICAgICAgICAgICAgICAgICB1cGRhdGVLZXlTdGF0dXNlcyhXVEZNb3ZlKGtleXMpKTsK
IApAQCAtNTg2LDYgKzYxOSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogCiAgICAgICAgICAgICAgICAgLy8gNC41LjMuIElm
IGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ldyBET01FeGNlcHRpb24gd2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFt
ZS4KICAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6
U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRl
bnRpZmllciwgIlJlamVjdGVkOiBmYWlsZWQiKTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlz
ZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KQEAgLTU5Niw2ICs2MzAsNyBAQCB2b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAgICAg
ICAgICAgICAgZW5xdWV1ZU1lc3NhZ2UoTWVkaWFLZXlNZXNzYWdlVHlwZTo6TGljZW5zZVJlbGVh
c2UsICptZXNzYWdlKTsKIAogICAgICAgICAgICAgICAgIC8vIDQuNS42LiBSZXNvbHZlIHByb21p
c2UuCisgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlc29sdmVkIik7CiAg
ICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpAQCAtNjkwLDcgKzcyNSw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpzZXNzaW9u
Q2xvc2VkKCkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlh
LyNzZXNzaW9uLWNsb3NlZAogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2Ci0gICAgTE9HKEVNRSwgIkVNRSAtIHNlc3Npb24gJXMgd2FzIGNsb3NlZCIsIG1fc2Vzc2lv
bklkLnV0ZjgoKS5kYXRhKCkpOworICAgIElORk9fTE9HKExPR0lERU5USUZJRVIpOwogCiAgICAg
Ly8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVkaWFLZXlTZXNzaW9uIG9iamVj
dC4KICAgICAvLyAyLiBJZiBzZXNzaW9uJ3Mgc2Vzc2lvbiB0eXBlIGlzICJwZXJzaXN0ZW50LXVz
YWdlLXJlY29yZCIsIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKQEAg
LTc0Miw2ICs3NzcsMTEgQEAgY29uc3QgY2hhciogTWVkaWFLZXlTZXNzaW9uOjphY3RpdmVET01P
YmplY3ROYW1lKCkgY29uc3QKICAgICByZXR1cm4gIk1lZGlhS2V5U2Vzc2lvbiI7CiB9CiAKK1dU
RkxvZ0NoYW5uZWwmIE1lZGlhS2V5U2Vzc2lvbjo6bG9nQ2hhbm5lbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIExvZ0VNRTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlT
ZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCmluZGV4IGU1ZjEyZGVjYzZlNTQ4MWI5OGEyOWM4NzliYzlhYzIwYWZjMjcwZjAu
LjVjYjM3NjdjZWRkYjEzZTMyNjU2NmZmZjAxYjZiMWNkYzBiOTVkNzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24u
aApAQCAtNDMsNiArNDMsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIExvZ2dlcjsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CkBAIC01Nyw3
ICs2MSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94
eTsKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlh
S2V5U2Vzc2lvbj4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0
aXZlRE9NT2JqZWN0LCBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKICAgICBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEKE1lZGlhS2V5U2Vzc2lvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGlj
IFJlZjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vh
a1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAg
ICBzdGF0aWMgUmVmPE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxN
ZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVu
dGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKICAgICB2aXJ0
dWFsIH5NZWRpYUtleVNlc3Npb24oKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlT
ZXNzaW9uPjo6cmVmOwpAQCAtODQsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5k
aW5nQWN0aXZpdHkoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUtleVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRp
YUtleVNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4m
JiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJik7CisgICAgTWVkaWFLZXlTZXNzaW9uKERvY3Vt
ZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNl
RGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9u
PiYmKTsKICAgICB2b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0
IFNoYXJlZEJ1ZmZlciYpOwogICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAg
IHZvaWQgc2Vzc2lvbkNsb3NlZCgpOwpAQCAtMTA0LDYgKzEwOCwxMyBAQCBwcml2YXRlOgogICAg
IC8vIEFjdGl2ZURPTU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUo
KSBjb25zdCBvdmVycmlkZTsKIAorICAgIC8vIExvZ2dlckhlbHBlcgorICAgIGNvbnN0IFdURjo6
TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsgfQorICAgIGNvbnN0IGNo
YXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRpYUtleVNlc3Npb24iOyB9Cisg
ICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CisKKyAgICBSZWY8V1RGOjpMb2dn
ZXI+IG1fbG9nZ2VyOwogICAgIFdlYWtQdHI8TWVkaWFLZXlzPiBtX2tleXM7CiAgICAgU3RyaW5n
IG1fc2Vzc2lvbklkOwogICAgIGRvdWJsZSBtX2V4cGlyYXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKaW5kZXggYzYyNGU1
MzI5ZTU5Njg4MmYwZDQxZjU3NDU4ODVmYzIzZDM5YTZlNC4uYzBjZDA4OTI1YWJhMjJhMTRjZDMy
Njk4NzIyYWY2NjY2OWMxOGY2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcApAQCAtMzQsMTEgKzM0LDExIEBACiAjaW5jbHVk
ZSAiQ0RNLmgiCiAjaW5jbHVkZSAiQ0RNQ2xpZW50LmgiCiAjaW5jbHVkZSAiQ0RNSW5zdGFuY2Uu
aCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1
ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1
ZGUgIk1lZGlhS2V5U2Vzc2lvbi5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
aCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NTQsNDggKzU0LDYxIEBAIE1lZGlhS2V5czo6TWVkaWFLZXlzKGJvb2wgdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsCiAKIE1lZGlhS2V5czo6fk1l
ZGlhS2V5cygpID0gZGVmYXVsdDsKIAotRXhjZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+
IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQorRXhjZXB0aW9uT3I8UmVmPE1lZGlh
S2V5U2Vzc2lvbj4+IE1lZGlhS2V5czo6Y3JlYXRlU2Vzc2lvbihEb2N1bWVudCYgZG9jdW1lbnQs
IE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2Mu
Z2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJjZXJ0aWZp
Y2F0ZQogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2Ci0gICAgTE9H
KEVNRSwgIkVNRSAtIGNoZWNrIGlmIGEgbmV3IHNlc3Npb24gY2FuIGJlIGNyZWF0ZWQiKTsKKyAg
ICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1lZGlh
S2V5cyIsIF9fZnVuY19fLCB0aGlzKTsKKyAgICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVu
dC5sb2dnZXIoKTsKIAogICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVz
ZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGlz
IG9iamVjdCdzIHN1cHBvcnRlZCBzZXNzaW9uIHR5cGVzIHZhbHVlIGRvZXMgbm90IGNvbnRhaW4g
c2Vzc2lvblR5cGUsIHRocm93IFtXZWJJRExdIGEgTm90U3VwcG9ydGVkRXJyb3IuCi0gICAgaWYg
KCFtX3N1cHBvcnRlZFNlc3Npb25UeXBlcy5jb250YWlucyhzZXNzaW9uVHlwZSkpCisgICAgaWYg
KCFtX3N1cHBvcnRlZFNlc3Npb25UeXBlcy5jb250YWlucyhzZXNzaW9uVHlwZSkpIHsKKyAgICAg
ICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogdW5zdXBwb3J0
ZWQgc2Vzc2lvblR5cGU6ICIsIHNlc3Npb25UeXBlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
bihOb3RTdXBwb3J0ZWRFcnJvcik7CisgICAgfQogCiAgICAgLy8gMi4gSWYgdGhlIGltcGxlbWVu
dGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgTWVkaWFLZXlTZXNzaW9uIG9wZXJhdGlvbnMgaW4gdGhl
IGN1cnJlbnQgc3RhdGUsIHRocm93IFtXZWJJRExdIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAg
IGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKQorICAgIGlmICghbV9p
bXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKSB7CisgICAgICAgIGxvZ2dlci0+aW5m
byhMb2dFTUUsIGlkZW50aWZpZXIsICJFeGNlcHRpb246IGltcGxlbWVudGF0aW9uIGRvZXMgbm90
IHN1cHBvcnQgc2Vzc2lvbnMiKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3Rh
dGVFcnJvcik7CisgICAgfQogCiAgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2luc3RhbmNl
LT5jcmVhdGVTZXNzaW9uKCk7Ci0gICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCisgICAgaWYgKCFp
bnN0YW5jZVNlc3Npb24pIHsKKyAgICAgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmll
ciwgIkV4Y2VwdGlvbjogY291bGQgbm90IGNyZWF0ZSBzZXNzaW9uIik7CiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3IpOworICAgIH0KIAogICAgIC8vIDMuIExldCBz
ZXNzaW9uIGJlIGEgbmV3IE1lZGlhS2V5U2Vzc2lvbiBvYmplY3QsIGFuZCBpbml0aWFsaXplIGl0
IGFzIGZvbGxvd3M6CiAgICAgLy8gTk9URTogQ29udGludWVkIGluIE1lZGlhS2V5U2Vzc2lvbi4K
ICAgICAvLyA0LiBSZXR1cm4gc2Vzc2lvbi4KLSAgICBhdXRvIHNlc3Npb24gPSBNZWRpYUtleVNl
c3Npb246OmNyZWF0ZShjb250ZXh0LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBlLCBt
X3VzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGlu
c3RhbmNlU2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBhdXRvIHNlc3Npb24gPSBNZWRp
YUtleVNlc3Npb246OmNyZWF0ZShkb2N1bWVudCwgbWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9u
VHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIG1faW1wbGVtZW50YXRpb24uY29weVJl
ZigpLCBpbnN0YW5jZVNlc3Npb24ucmVsZWFzZU5vbk51bGwoKSk7CisgICAgbG9nZ2VyLT5pbmZv
KExvZ0VNRSwgaWRlbnRpZmllciwgIiBDcmVhdGVkIHNlc3Npb24iKTsKICAgICBtX3Nlc3Npb25z
LmFwcGVuZChzZXNzaW9uLmNvcHlSZWYoKSk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLXZv
aWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVyQ2VydGlm
aWNhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRp
ZmljYXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6
Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRzZXJ2ZXJj
ZXJ0aWZpY2F0ZQogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk1l
ZGlhS2V5cyIsIF9fZnVuY19fLCB0aGlzKTsKKyAgICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1
bWVudC5sb2dnZXIoKTsKKwogICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhl
IHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0
aGUgS2V5IFN5c3RlbSBpbXBsZW1lbnRhdGlvbiByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdz
IGNkbSBpbXBsZW1lbnRhdGlvbiB2YWx1ZSBkb2VzIG5vdCBzdXBwb3J0CiAgICAgLy8gICAgc2Vy
dmVyIGNlcnRpZmljYXRlcywgcmV0dXJuIGEgcHJvbWlzZSByZXNvbHZlZCB3aXRoIGZhbHNlLgog
ICAgIGlmICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXJ2ZXJDZXJ0aWZpY2F0ZXMoKSkg
eworICAgICAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFz
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIik7CiAgICAgICAgIHByb21pc2UtPnJlc29sdmU8
SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gMi4g
SWYgc2VydmVyQ2VydGlmaWNhdGUgaXMgYW4gZW1wdHkgYXJyYXksIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhIG5ldyBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmICgh
c2VydmVyQ2VydGlmaWNhdGUubGVuZ3RoKCkpIHsKKyAgICAgICAgbG9nZ2VyLT5pbmZvKExvZ0VN
RSwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBzZXJ2ZXJDZXJ0aWZpY2F0ZSIpOwogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEwNiwxNSArMTE5LDE3IEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBCdWZmCiAgICAgLy8gNC4g
TGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA1LiBSdW4gdGhlIGZvbGxvd2lu
ZyBzdGVwcyBpbiBwYXJhbGxlbDoKIAotICAgIGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNr
KFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBjZXJ0aWZpY2F0ZSA9IFdURk1vdmUoY2Vy
dGlmaWNhdGUpLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7CisgICAg
ZG9jdW1lbnQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0
aGlzLCBjZXJ0aWZpY2F0ZSA9IFdURk1vdmUoY2VydGlmaWNhdGUpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDUuMS4gVXNlIHRoaXMgb2Jq
ZWN0J3MgY2RtIGluc3RhbmNlIHRvIHByb2Nlc3MgY2VydGlmaWNhdGUuCiAgICAgICAgIGlmICht
X2luc3RhbmNlLT5zZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSkgPT0g
Q0RNSW5zdGFuY2U6OkZhaWxlZCkgewogICAgICAgICAgICAgLy8gNS4yLiBJZiB0aGUgcHJlY2Vk
aW5nIHN0ZXAgZmFpbGVkLCByZXNvbHZlIHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24g
d2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KKyAgICAgICAgICAgIGxv
Z2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJSZWplY3RlZCwgc2V0U2VydmVyQ2VydGlm
aWNhdGUoKSBmYWlsZWQiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3Rh
dGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1
LjEuIFJlc29sdmUgcHJvbWlzZSB3aXRoIHRydWUuCisgICAgICAgIGxvZ2dlci0+aW5mbyhMb2dF
TUUsIGlkZW50aWZpZXIsICJSZXNvbHZlZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElE
TEJvb2xlYW4+KHRydWUpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCAxZTJlMWEyNzcxMzQwZTZkZjFlMGE5
OGE1NDJjY2Q1ZjgyYWUyOGRmLi4zYWI2ODRjOGFjZDQ5MmIzNGRiZWZhOTUxNmMyY2MyYmQxOTM3
ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01l
ZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgQ0RNQ2xpZW50OwogY2xhc3MgQ0RNSW5z
dGFuY2U7CiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBEZWZlcnJlZFByb21pc2U7CitjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAKIGNsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5
cz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYUtleXM+IHsKIHB1YmxpYzoKQEAgLTU3LDgg
KzU3LDggQEAgcHVibGljOgogCiAgICAgfk1lZGlhS2V5cygpOwogCi0gICAgRXhjZXB0aW9uT3I8
UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIE1lZGlhS2V5U2Vzc2lvblR5cGUpOwotICAgIHZvaWQgc2V0U2VydmVyQ2VydGlmaWNhdGUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVh
dGVTZXNzaW9uKERvY3VtZW50JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7CisgICAgdm9pZCBzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShEb2N1bWVudCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBhdHRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7
CiAgICAgdm9pZCBkZXRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKaW5kZXggZDZmMDRj
ZGRiZTUwZDMxNDgzOTVmNjVlYzZiZjkwNTdmZmJmNGRjZS4uZDVjNDJkYTkxNmEwNWVkZWZjNjlh
ZWIxM2M5YjMzOGYzYWQ2MTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9l
bmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMzIsNiArMzIsNiBAQAogICAgIERpc2Fi
bGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnQsCiAgICAgSW1wbGVt
ZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxX
aXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUtleVNl
c3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25U
eXBlID0gInRlbXBvcmFyeSIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
XSBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJjZSBzZXJ2ZXJD
ZXJ0aWZpY2F0ZSk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4Y2VwdGlvbl0g
TWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlTZXNzaW9uVHlw
ZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnRdIFBy
b21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNlcnZlckNlcnRp
ZmljYXRlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL05hdmlnYXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKaW5kZXggMGJhYWY4ZDVmZDI4YzU5YWJhNzVjNmM4MjYw
MjdmNDQxMTYxODE0Mi4uYmI3NjA2MzA3YjlkNzdhN2I1MzRhMzQ0YjgwMDQ4ZTc4MTMwNTEzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9OYXZpZ2F0
b3JFTUUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTmF2
aWdhdG9yRU1FLmNwcApAQCAtMzIsMzAgKzMyLDY0IEBACiAjaWYgRU5BQkxFKEVOQ1JZUFRFRF9N
RURJQSkKIAogI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkNETUxvZ2dpbmcuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVkLmgiCiAjaW5j
bHVkZSAiSlNNZWRpYUtleVN5c3RlbUFjY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBXVEYgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxhdGU8dHlwZW5h
bWUgVD4KK3N0cnVjdCBMb2dBcmd1bWVudDxWZWN0b3I8VD4+IHsKKyAgICBzdGF0aWMgU3RyaW5n
IHRvU3RyaW5nKGNvbnN0IFZlY3RvcjxUPiYgdmFsdWUpCisgICAgeworICAgICAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJbIik7CisgICAgICAgIGZv
ciAoYXV0byBpdGVtIDogdmFsdWUpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChMb2dBcmd1
bWVudDxUPjo6dG9TdHJpbmcoaXRlbSkpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgiXSIpOwor
ICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KK307CisKK3RlbXBsYXRl
PHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8T3B0aW9uYWw8VD4+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiB2YWx1ZSA/ICJudWxsb3B0Il9zIDogTG9nQXJndW1lbnQ8VD46OnRvU3RyaW5n
KHZhbHVlLnZhbHVlKCkpOworICAgIH0KK307CisKK30KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYm
IGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmKTsKK3N0YXRp
YyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVt
ZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVk
Q29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYsIFJlZjxMb2dnZXI+JiYs
IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmKTsKIAotdm9pZCBOYXZpZ2F0b3JFTUU6
OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3ImLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCit2b2lkIE5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNz
KE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
a2V5U3lzdGVtLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRl
ZENvbmZpZ3VyYXRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW5hdmlnYXRvci1y
ZXF1ZXN0bWVkaWFrZXlzeXN0ZW1hY2Nlc3MKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJFTUUgLSByZXF1ZXN0IG1lZGlhIGtleSBzeXN0
ZW0gYWNjZXNzIGZvciAlcyIsIGtleVN5c3RlbS51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIGlk
ZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoIk5hdmlnYXRvckVNRSIs
IF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKKyAgICBSZWY8TG9nZ2VyPiBsb2dnZXIgPSBkb2N1bWVu
dC5sb2dnZXIoKTsKKworICAgIGxvZ2dlci0+aW5mbyhMb2dFTUUsIGlkZW50aWZpZXIsICJrZXlT
eXN0ZW0oIiwga2V5U3lzdGVtLCAiKSwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMoIiwgc3VwcG9y
dGVkQ29uZmlndXJhdGlvbnMsICIpIik7CiAKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGlu
dm9rZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAg
Ly8gMS4gSWYga2V5U3lzdGVtIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2Ug
cmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIC8vIDIuIElmIHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zIGlzIGVtcHR5LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVk
IHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICBpZiAoa2V5U3lzdGVtLmlzRW1w
dHkoKSB8fCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgbG9n
Z2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBrZXlTeXN0ZW0o
Iiwga2V5U3lzdGVtLmlzRW1wdHkoKSwgIikgb3IgZW1wdHkgc3VwcG9ydGVkQ29uZmlndXJhdGlv
bnMoIiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpLCAiKSIpOwogICAgICAgICBw
cm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGRvY3VtZW50LnBvc3RUYXNrKFtrZXlTeXN0ZW0sIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zID0g
V1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCAmZG9jdW1lbnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7CisgICAg
ZG9jdW1lbnQucG9zdFRhc2soW2tleVN5c3RlbSwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgPSBX
VEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSksICZkb2N1bWVudCwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxlIHsKICAg
ICAgICAgLy8gMy4gTGV0IGRvY3VtZW50IGJlIHRoZSBjYWxsaW5nIGNvbnRleHQncyBEb2N1bWVu
dC4KICAgICAgICAgLy8gNC4gTGV0IG9yaWdpbiBiZSB0aGUgb3JpZ2luIG9mIGRvY3VtZW50Lgog
ICAgICAgICAvLyA1LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgpAQCAtNjMsMTggKzk3
LDE4IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2
aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAgICAgIC8vIDYuMS4gSWYga2V5U3lz
dGVtIGlzIG5vdCBvbmUgb2YgdGhlIEtleSBTeXN0ZW1zIHN1cHBvcnRlZCBieSB0aGUgdXNlciBh
Z2VudCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLgogICAgICAgICAv
LyAgICAgIFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgogICAgICAgICBpZiAo
IUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkgewotICAgICAgICAgICAgTE9HKEVN
RSwgIkVNRSAtICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSk7
CisgICAgICAgICAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6
IGtleVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIpIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICAgICAg
IHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA2LjIuIExldCBpbXBsZW1lbnRhdGlvbiBiZSB0aGUg
aW1wbGVtZW50YXRpb24gb2Yga2V5U3lzdGVtLgogICAgICAgICBhdXRvIGltcGxlbWVudGF0aW9u
ID0gQ0RNOjpjcmVhdGUoZG9jdW1lbnQsIGtleVN5c3RlbSk7Ci0gICAgICAgIHRyeU5leHRTdXBw
b3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBv
cnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgICAgIHRyeU5leHRT
dXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1
cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSwgV1RGTW92ZShsb2dnZXIp
LCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsKICAgICB9KTsKIH0KIAotc3RhdGljIHZvaWQgdHJ5TmV4
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVj
dG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9u
cywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorc3RhdGljIHZvaWQgdHJ5TmV4
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVj
dG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9u
cywgUmVmUHRyPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBSZWY8TG9nZ2VyPiYmIGxvZ2dl
ciwgV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyJiYgaWRlbnRpZmllcikKIHsKICAgICAv
LyA2LjMuIEZvciBlYWNoIHZhbHVlIGluIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zOgogICAgIGlm
ICghc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpKSB7CkBAIC04NCw3ICsxMTgsNyBA
QCBzdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYm
IGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TQogICAgICAgICBNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24gY2FuZGlkYXRlQ29uZmlndXJhdGlvbiA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJh
dGlvbnMuZmlyc3QoKSk7CiAgICAgICAgIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLnJlbW92ZSgw
KTsKIAotICAgICAgICBDRE06OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayBjYWxsYmFj
ayA9IFtpbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uLCBzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucyA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBwcm9taXNlXSAoT3B0aW9u
YWw8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uKSBt
dXRhYmxlIHsKKyAgICAgICAgQ0RNOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2sgPSBbaW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29uZmln
dXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSwgbG9n
Z2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KE9wdGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJh
dGlvbikgbXV0YWJsZSB7CiAgICAgICAgICAgICAvLyA2LjMuMy4gSWYgc3VwcG9ydGVkIGNvbmZp
Z3VyYXRpb24gaXMgbm90IE5vdFN1cHBvcnRlZCwgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAg
ICAgICAgICAgICBpZiAoc3VwcG9ydGVkQ29uZmlndXJhdGlvbikgewogICAgICAgICAgICAgICAg
IC8vIDYuMy4zLjEuIExldCBhY2Nlc3MgYmUgYSBuZXcgTWVkaWFLZXlTeXN0ZW1BY2Nlc3Mgb2Jq
ZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgpAQCAtOTcsMTggKzEzMSwxOSBAQCBz
dGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGlt
cGxlbWVudGF0aW9uLCBWZWN0b3I8TQogICAgICAgICAgICAgICAgIGF1dG8gYWNjZXNzID0gTWVk
aWFLZXlTeXN0ZW1BY2Nlc3M6OmNyZWF0ZShrZXlTeXN0ZW0sIFdURk1vdmUoc3VwcG9ydGVkQ29u
ZmlndXJhdGlvbi52YWx1ZSgpKSwgaW1wbGVtZW50YXRpb24ucmVsZWFzZU5vbk51bGwoKSk7CiAK
ICAgICAgICAgICAgICAgICAvLyA2LjMuMy4yLiBSZXNvbHZlIHByb21pc2Ugd2l0aCBhY2Nlc3Mg
YW5kIGFib3J0IHRoZSBwYXJhbGxlbCBzdGVwcyBvZiB0aGlzIGFsZ29yaXRobS4KKyAgICAgICAg
ICAgICAgICBsb2dnZXItPmluZm8oTG9nRU1FLCBpZGVudGlmaWVyLCAiUmVzb2x2ZWQ6IGtleVN5
c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9uKCIsIHN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24sICIpIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdp
dGhOZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5U3lzdGVtQWNjZXNzPj4oV1RGTW92
ZShhY2Nlc3MpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50
YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgICAgICAgICB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGlt
cGxlbWVudGF0aW9uKSwgV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIFdURk1vdmUo
cHJvbWlzZSksIFdURk1vdmUobG9nZ2VyKSwgV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgICAg
IH07CiAgICAgICAgIGltcGxlbWVudGF0aW9uLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdU
Rk1vdmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotCiAgICAgLy8gNi40LiBSZWplY3QgcHJvbWlzZSB3aXRoIGEg
Tm90U3VwcG9ydGVkRXJyb3IuCisgICAgbG9nZ2VyLT5pbmZvKExvZ0VNRSwgaWRlbnRpZmllciwg
IlJlamVjdGVkOiBlbXB0eSBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyIpOwogICAgIHByb21pc2Ut
PnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggYWNhZTZm
ZTM4ZGRlMjZjMjhjZjVkNDQ5MTFmYzVhYzMwYjI1ODY3NC4uMzhmNTI2YjFkNzhlYzIxMDI0YzE4
N2RlMjk2ZjBlMWVkZTM0MmE4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MjAsNiArMTgyMCw3IEBA
IHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5j
cHAKIAogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKK3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCiAKIHBsYXRmb3JtL2dyYXBoaWNzL0FOR0xFV2Vi
S2l0QnJpZGdlLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDRm
YjBkMzY4MmJlY2I1ZDQyODBhN2ZmZjI2YmNiNWRkYTA5NjI4NS4uNTU0MTVlMWM3ZjFiZDlhMWE3
ZGJmMWQ5NDVlOWNjNzE0ODUyZmEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDEwMiw2ICs0MTAyLDcgQEAKIAkJQ0Q4QjVB
NDYxODBERkY0RTAwOEI4RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNDUxODBERkY0RTAwOEI4
RTY1IC8qIFZpZGVvVHJhY2tNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDhCNUE0OTE4MEUxMzhC
MDA4QjhFNjUgLyogVGV4dFRyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEI1QTQ4MTgwRTEzOEIwMDhCOEU2NSAvKiBUZXh0
VHJhY2tNZWRpYVNvdXJjZS5oICovOyB9OwogCQlDRDhCNUE0QzE4MEUxN0MwMDA4QjhFNjUgLyog
QXVkaW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRDhCNUE0QjE4MEUxN0MwMDA4QjhFNjUgLyogQXVkaW9UcmFja01lZGlh
U291cmNlLmggKi87IH07CisJCUNEOEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5n
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhEMzA2
RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovOyB9OwogCQlDRDkyRjUxMzIyNjBG
RkVFMDBGODdCQjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMgLyogRG9j
dW1lbnRGdWxsc2NyZWVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQ0Q5MkY1MTgyMjYxMDM4MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDkyRjUx
NjIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1hbmFnZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRDk0QTVERDFGNzFENUQ4MDBGNTI1
QzUgLyogQ0RNQ2xlYXJLZXkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQ0Q5NEE1REIxRjcxQ0JCMDAwRjUyNUM1IC8qIENETUNsZWFyS2V5LmNwcCAq
LzsgfTsKQEAgLTEzODgxLDYgKzEzODgyLDggQEAKIAkJQ0Q4QzZDMjcyMkZEREE5MDAwQTcyMEFC
IC8qIEpTUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1JlbW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDRDhDNkMyODIyRkREQTkwMDBBNzIwQUIgLyogSlNSZW1v
dGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUmVtb3Rl
UGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRDhDNkMyOTIyRkREQTkxMDBBNzIwQUIgLyogSlNSZW1vdGVQbGF5YmFjay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU1JlbW90ZVBsYXliYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENETUxvZ2dpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q4RDMwNkUy
M0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ0RN
TG9nZ2luZy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTJGNTBGMjI2MEZG
RUUwMEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxzY3JlZW4uaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERvY3VtZW50RnVsbHNj
cmVlbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTJGNTEwMjI2MEZGRUUw
MEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxzY3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRG
dWxsc2NyZWVuLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNEOTJGNTE2MjI2MTAz
ODIwMEY4N0JCMyAvKiBGdWxsc2NyZWVuTWFuYWdlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGdWxsc2Ny
ZWVuTWFuYWdlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYyODQsNiArMjYy
ODcsOCBAQAogCQkJCUNEOTRBNUNDMUY3MUNCNjkwMEY1MjVDNSAvKiBDRE1SZXF1aXJlbWVudC5o
ICovLAogCQkJCUNEOTRBNUQwMUY3MUNCNkIwMEY1MjVDNSAvKiBDRE1SZXN0cmljdGlvbnMuaCAq
LywKIAkJCQlDRDk0QTVENTFGNzFDQjZEMDBGNTI1QzUgLyogQ0RNU2Vzc2lvblR5cGUuaCAqLywK
KwkJCQlDRDhEMzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovLAorCQkJCUNE
OEQzMDZFMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZW5jcnlwdGVkbWVkaWE7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzAz
MjEsNiArMzAzMjYsNyBAQAogCQkJCTA3RTlFMTJFMThGNUUyNzYwMDExQTNBNCAvKiBJbmJhbmRN
ZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OTQxNzky
MTY2RTg1NUYwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA3OTQxNzk0MTY2RUEwNEUwMDk0MTZDMiAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKKwkJCQlDRDhEMzA2RjIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMDdCNDQyRDcxNjZDNzBCMDAwNTU2Q0FEIC8qIEluYmFuZFRl
eHRUcmFja1ByaXZhdGVBVkYuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3QUE2QjZDMTY2RDJDMTMw
MEQ0NTY3MSAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMDdDRTc3RDUxNjcxMkE2QTAwQzU1QTQ3IC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVD
bGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ODIzMGU0MzZlY2Jm
ZmI2NTViODdlM2RjZDA1MzkyZjc1ZWU5Zjk0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHAKQEAgLTAsMCArMSwx
NTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ0RNTG9n
Z2luZy5oIgorCisjaWYgRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgIkNETUtl
eVN5c3RlbUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJDRE1NZWRpYUNhcGFiaWxpdHkuaCIK
KyNpbmNsdWRlICJDRE1SZXN0cmljdGlvbnMuaCIKKyNpbmNsdWRlICJKU01lZGlhS2V5RW5jcnlw
dGlvblNjaGVtZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlNZXNzYWdlRXZlbnQuaCIKKyNpbmNs
dWRlICJKU01lZGlhS2V5U2Vzc2lvblR5cGUuaCIKKyNpbmNsdWRlICJKU01lZGlhS2V5U3RhdHVz
TWFwLmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleXNSZXF1aXJlbWVudC5oIgorI2luY2x1ZGUgPHd0
Zi9KU09OVmFsdWVzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IHRvSlNPTk9iamVjdChjb25zdCBDRE1NZWRpYUNhcGFiaWxpdHkmIGNhcGFiaWxp
dHkpCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJjb250ZW50VHlwZSJfcywgY2FwYWJpbGl0eS5jb250ZW50VHlwZSk7
CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoInJvYnVzdG5lc3MiX3MsIGNhcGFiaWxpdHkucm9idXN0
bmVzcyk7CisgICAgaWYgKGNhcGFiaWxpdHkuZW5jcnlwdGlvblNjaGVtZSkKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoImVuY3J5cHRpb25TY2hlbWUiX3MsIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKGNhcGFiaWxpdHkuZW5jcnlwdGlvblNjaGVtZS52YWx1ZSgpKSk7CisgICAgcmV0dXJu
IG9iamVjdDsKK30KKworc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IHRvSlNPTk9iamVjdChjb25z
dCBDRE1SZXN0cmljdGlvbnMmIHJlc3RyaWN0aW9ucykKK3sKKyAgICBhdXRvIG9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgb2JqZWN0LT5zZXRCb29sZWFuKCJkaXN0aW5jdGl2
ZUlkZW50aWZpZXJEZW5pZWQiX3MsIHJlc3RyaWN0aW9ucy5kaXN0aW5jdGl2ZUlkZW50aWZpZXJE
ZW5pZWQpOworICAgIG9iamVjdC0+c2V0Qm9vbGVhbigicGVyc2lzdGVudFN0YXRlRGVuaWVkIl9z
LCByZXN0cmljdGlvbnMucGVyc2lzdGVudFN0YXRlRGVuaWVkKTsKKyAgICBhdXRvIGRlbmllZFNl
c3Npb25UeXBlcyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8gdHlwZSA6
IHJlc3RyaWN0aW9ucy5kZW5pZWRTZXNzaW9uVHlwZXMpCisgICAgICAgIGRlbmllZFNlc3Npb25U
eXBlcy0+cHVzaFN0cmluZyhjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKSk7CisgICAg
b2JqZWN0LT5zZXRBcnJheSgiZGVuaWVkU2Vzc2lvblR5cGVzIl9zLCBXVEZNb3ZlKGRlbmllZFNl
c3Npb25UeXBlcykpOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK3N0YXRpYyBSZWY8SlNPTjo6
T2JqZWN0PiB0b0pTT05PYmplY3QoY29uc3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29u
ZmlndXJhdGlvbikKK3sKKyAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoImxhYmVsIl9zLCBjb25maWd1cmF0aW9uLmxhYmVsKTsK
KworICAgIGF1dG8gaW5pdERhdGFUeXBlcyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBm
b3IgKGF1dG8gaW5pdERhdGFUeXBlIDogY29uZmlndXJhdGlvbi5pbml0RGF0YVR5cGVzKQorICAg
ICAgICBpbml0RGF0YVR5cGVzLT5wdXNoU3RyaW5nKGluaXREYXRhVHlwZSk7CisgICAgb2JqZWN0
LT5zZXRBcnJheSgiaW5pdERhdGFUeXBlcyJfcywgV1RGTW92ZShpbml0RGF0YVR5cGVzKSk7CisK
KyAgICBhdXRvIGF1ZGlvQ2FwYWJpbGl0aWVzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOworICAg
IGZvciAoYXV0byBjYXBhYmlsaXR5IDogY29uZmlndXJhdGlvbi5hdWRpb0NhcGFiaWxpdGllcykK
KyAgICAgICAgYXVkaW9DYXBhYmlsaXRpZXMtPnB1c2hPYmplY3QodG9KU09OT2JqZWN0KGNhcGFi
aWxpdHkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJhdWRpb0NhcGFiaWxpdGllcyJfcywgV1RG
TW92ZShhdWRpb0NhcGFiaWxpdGllcykpOworCisgICAgYXV0byB2aWRlb0NhcGFiaWxpdGllcyA9
IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8gY2FwYWJpbGl0eSA6IGNvbmZp
Z3VyYXRpb24udmlkZW9DYXBhYmlsaXRpZXMpCisgICAgICAgIHZpZGVvQ2FwYWJpbGl0aWVzLT5w
dXNoT2JqZWN0KHRvSlNPTk9iamVjdChjYXBhYmlsaXR5KSk7CisgICAgb2JqZWN0LT5zZXRBcnJh
eSgidmlkZW9DYXBhYmlsaXRpZXMiX3MsIFdURk1vdmUodmlkZW9DYXBhYmlsaXRpZXMpKTsKKwor
ICAgIG9iamVjdC0+c2V0U3RyaW5nKCJkaXN0aW5jdGl2ZUlkZW50aWZpZXIiX3MsIGNvbnZlcnRF
bnVtZXJhdGlvblRvU3RyaW5nKGNvbmZpZ3VyYXRpb24uZGlzdGluY3RpdmVJZGVudGlmaWVyKSk7
CisgICAgb2JqZWN0LT5zZXRTdHJpbmcoInBlcnNpc3RlbnRTdGF0ZSJfcywgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoY29uZmlndXJhdGlvbi5wZXJzaXN0ZW50U3RhdGUpKTsKKworICAgIGF1
dG8gc2Vzc2lvblR5cGVzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byB0
eXBlIDogY29uZmlndXJhdGlvbi5zZXNzaW9uVHlwZXMpCisgICAgICAgIHNlc3Npb25UeXBlcy0+
cHVzaFN0cmluZyhjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKSk7CisgICAgb2JqZWN0
LT5zZXRBcnJheSgic2Vzc2lvblR5cGVzIl9zLCBXVEZNb3ZlKHNlc3Npb25UeXBlcykpOworCisg
ICAgcmV0dXJuIG9iamVjdDsKK30KKworc3RhdGljIFN0cmluZyB0b0pTT05TdHJpbmcoY29uc3Qg
Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4g
dG9KU09OT2JqZWN0KGNvbmZpZ3VyYXRpb24pLT50b0pTT05TdHJpbmcoKTsKK30KKworc3RhdGlj
IFN0cmluZyB0b0pTT05TdHJpbmcoY29uc3QgQ0RNTWVkaWFDYXBhYmlsaXR5JiBjYXBhYmlsaXR5
KQoreworICAgIHJldHVybiB0b0pTT05PYmplY3QoY2FwYWJpbGl0eSktPnRvSlNPTlN0cmluZygp
OworfQorCitzdGF0aWMgU3RyaW5nIHRvSlNPTlN0cmluZyhjb25zdCBDRE1SZXN0cmljdGlvbnMm
IHJlc3RyaWN0aW9ucykKK3sKKyAgICByZXR1cm4gdG9KU09OT2JqZWN0KHJlc3RyaWN0aW9ucykt
PnRvSlNPTlN0cmluZygpOworfQorCit9CisKK25hbWVzcGFjZSBXVEYgeworCitTdHJpbmcgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj46OnRvU3RyaW5nKGNv
bnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7
CisgICAgcmV0dXJuIHRvSlNPTlN0cmluZyhjb25maWd1cmF0aW9uKTsKK30KKworU3RyaW5nIExv
Z0FyZ3VtZW50PFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJpbGl0eT46OnRvU3RyaW5nKGNvbnN0IFdl
YkNvcmU6OkNETU1lZGlhQ2FwYWJpbGl0eSYgY2FwYWJpbGl0eSkKK3sKKyAgICByZXR1cm4gdG9K
U09OU3RyaW5nKGNhcGFiaWxpdHkpOworfQorCitTdHJpbmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6
Q0RNUmVzdHJpY3Rpb25zPjo6dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25z
JiByZXN0cmljdGlvbnMpCit7CisgICAgcmV0dXJuIHRvSlNPTlN0cmluZyhyZXN0cmljdGlvbnMp
OworfQorCitTdHJpbmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT46
OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWUmIHR5cGUpCit7Cisg
ICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOworfQorCitTdHJpbmcg
TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPjo6dG9TdHJpbmcoY29uc3QgV2ViQ29y
ZTo6Q0RNS2V5U3RhdHVzJiB0eXBlKQoreworICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETU1lc3Nh
Z2VUeXBlPjo6dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUmIHR5cGUpCit7
CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOworfQorCitTdHJp
bmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+Ojp0b1N0cmluZyhjb25zdCBX
ZWJDb3JlOjpDRE1SZXF1aXJlbWVudCYgdHlwZSkKK3sKKyAgICByZXR1cm4gY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK1N0cmluZyBMb2dBcmd1bWVudDxXZWJDb3JlOjpD
RE1TZXNzaW9uVHlwZT46OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBlJiB0
eXBlKQoreworICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKTsKK30K
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45MTkyNDc2ZGNhNjgxYTJmNzNiMGM0YmUzNzVkZDdjMGMwYzFiZWZlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5o
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJM
RShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgQ0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbjsK
K3N0cnVjdCBDRE1NZWRpYUNhcGFiaWxpdHk7CitzdHJ1Y3QgQ0RNUmVzdHJpY3Rpb25zOworCitl
bnVtIGNsYXNzIENETUVuY3J5cHRpb25TY2hlbWU7CitlbnVtIGNsYXNzIENETUtleVN0YXR1czsK
K2VudW0gY2xhc3MgQ0RNTWVzc2FnZVR5cGU7CitlbnVtIGNsYXNzIENETVJlcXVpcmVtZW50Owor
ZW51bSBjbGFzcyBDRE1TZXNzaW9uVHlwZTsKKworfQorCituYW1lc3BhY2UgV1RGIHsKKwordGVt
cGxhdGU8dHlwZW5hbWU+CitzdHJ1Y3QgTG9nQXJndW1lbnQ7CisKK3RlbXBsYXRlIDw+CitzdHJ1
Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4geworICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpDRE1NZWRpYUNhcGFiaWxpdHk+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0
IFdlYkNvcmU6OkNETU1lZGlhQ2FwYWJpbGl0eSYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVj
dCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnM+IHsKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYpOworfTsKKwordGVt
cGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1l
PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1FbmNyeXB0
aW9uU2NoZW1lJik7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNv
cmU6OkNETUtleVN0YXR1cz4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2Vi
Q29yZTo6Q0RNS2V5U3RhdHVzJik7Cit9OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0
cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1SZXF1aXJlbWVudD4geworICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQmKTsKK307CisKK3Rl
bXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGU+IHsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETVNlc3Npb25UeXBl
Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387047</attachid>
            <date>2020-01-07 15:47:21 -0800</date>
            <delta_ts>2020-03-10 09:21:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205519-20200107154716.patch</filename>
            <type>text/plain</type>
            <size>62238</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjRiZDgzNjJiNWJkYWVm
NDEwNzI4MTVlZGE0NjQzZDVjMzQ3ZmIwZS4uZjgzOGJkMjcwYTE4ZGFmZDkyYTI5YTZjYWZkNDk2
MDk3MGY4YTEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE5LTEyLTIwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5nIGZvciBN
b2Rlcm4gRU1FIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHA6CisgICAgICAgIChXVEY6
OkxvZ0FyZ3VtZW50PFZlY3RvcjxUPj46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8T3B0aW9uYWw8VD4+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNPTk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTT05TdHJpbmcpOgor
ICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1N
ZWRpYUNhcGFiaWxpdHk+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucz46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT46OnRvU3RyaW5nKToKKyAgICAgICAg
KFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPjo6dG9TdHJpbmcpOgorICAg
ICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT46OnRvU3RyaW5n
KToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+Ojp0
b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxv
Z2dpbmcuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwOgorCiAyMDE5LTEyLTE5ICBKZXIgTm9ibGUgIDxq
ZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIE1lZGlhS2V5U2Vzc2lvbi5sb2FkKCkgZmFp
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlTZXNzaW9uLmNwcAppbmRleCBkYTE5YmJmZjJjN2NlODJiZWZhODAzNWFkNzU0MmUz
ZTlmMjJhNjlkLi44MTBiMzVmOWU0Y2FkYTM4NzExOWFlOTkxNjIyNTY5ZjQxYzM0NjZkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vz
c2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRp
YUtleVNlc3Npb24uY3BwCkBAIC00OSwyMCArNDksMjIgQEAKICNpbmNsdWRlICJTZXR0aW5ncy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8d3RmL0xvZ2dlckhlbHBlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChNZWRpYUtleVNlc3Npb24pOwogCi1S
ZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBrZXlzLCBNZWRpYUtleVNl
c3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVm
PENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4mJiBpbnN0YW5j
ZVNlc3Npb24pCitSZWY8TWVkaWFLZXlTZXNzaW9uPiBNZWRpYUtleVNlc3Npb246OmNyZWF0ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFdlYWtQdHI8TWVkaWFLZXlzPiYmIGtleXMsIE1lZGlhS2V5U2Vz
c2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8
Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmIGluc3RhbmNl
U2Vzc2lvbikKIHsKLSAgICBhdXRvIHNlc3Npb24gPSBhZG9wdFJlZigqbmV3IE1lZGlhS2V5U2Vz
c2lvbihjb250ZXh0LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlwZSwgdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShpbnN0YW5jZVNlc3Np
b24pKSk7CisgICAgYXV0byBzZXNzaW9uID0gYWRvcHRSZWYoKm5ldyBNZWRpYUtleVNlc3Npb24o
ZG9jdW1lbnQsIFdURk1vdmUoa2V5cyksIHNlc3Npb25UeXBlLCB1c2VEaXN0aW5jdGl2ZUlkZW50
aWZpZXIsIFdURk1vdmUoaW1wbGVtZW50YXRpb24pLCBXVEZNb3ZlKGluc3RhbmNlU2Vzc2lvbikp
KTsKICAgICBzZXNzaW9uLT5zdXNwZW5kSWZOZWVkZWQoKTsKICAgICByZXR1cm4gc2Vzc2lvbjsK
IH0KIAotTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFLZXlTZXNzaW9u
VHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+
JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYgaW5zdGFuY2VTZXNz
aW9uKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQorTWVkaWFLZXlTZXNzaW9uOjpN
ZWRpYUtleVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2V5cz4mJiBr
ZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3RpbmN0aXZl
SWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlU2Vz
c2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50
KQorICAgICwgbV9sb2dnZXIoZG9jdW1lbnQubG9nZ2VyKCkpCiAgICAgLCBtX2tleXMoV1RGTW92
ZShrZXlzKSkKICAgICAsIG1fZXhwaXJhdGlvbihzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46
OnF1aWV0X05hTigpKQogICAgICwgbV9jbG9zZWRQcm9taXNlKG1ha2VVbmlxdWVSZWY8Q2xvc2Vk
UHJvbWlzZT4oKSkKQEAgLTc2LDcgKzc4LDcgQEAgTWVkaWFLZXlTZXNzaW9uOjpNZWRpYUtleVNl
c3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUsKICAg
ICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogICAgIC8vIGNyZWF0ZVNl
c3Npb24oKSwgY3RkLgogCi0gICAgTE9HKEVNRSwgIkVNRSAtIG5ldyBzZXNzaW9uIGNyZWF0ZWQi
KTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAic2Vzc2lvblR5cGUoIiwgc2Vzc2lvblR5
cGUsICIpLCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIoIiwgdXNlRGlzdGluY3RpdmVJZGVudGlm
aWVyLCAiKSIpOwogCiAgICAgLy8gMy4xLiBMZXQgdGhlIHNlc3Npb25JZCBhdHRyaWJ1dGUgYmUg
dGhlIGVtcHR5IHN0cmluZy4KICAgICAvLyAzLjIuIExldCB0aGUgZXhwaXJhdGlvbiBhdHRyaWJ1
dGUgYmUgTmFOLgpAQCAtMTI4LDkgKzEzMCwxMSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2Vu
ZXJhdGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgog
ICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBy
dW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9z
ZWQsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4K
ICAgICAvLyAyLiBJZiB0aGlzIG9iamVjdCdzIHVuaW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2Us
IHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KLSAg
ICBMT0coRU1FLCAiRU1FIC0gZ2VuZXJhdGUgcmVxdWVzdCIpOworICAgIGF1dG8gaWRlbnRpZmll
ciA9IExPR0lERU5USUZJRVI7CisgICAgSU5GT19MT0coaWRlbnRpZmllciwgImluaXREYXRhVHlw
ZSgiLCBpbml0RGF0YVR5cGUsICIpLCBpbml0RGF0YS5sZW5ndGgoIiwgaW5pdERhdGEubGVuZ3Ro
KCksICIpIik7CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1fdW5pbml0aWFsaXplZCkgeworICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwg
Iikgb3IgIXVuaW5pdGlhbGl6ZWQoIiwgIW1fdW5pbml0aWFsaXplZCwgIikiKTsKICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTE0MSw2ICsxNDUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJhdGVSZXF1
ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAgIC8vIDQu
IElmIGluaXREYXRhVHlwZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1cm4gYSBwcm9taXNlIHJl
amVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAvLyA1LiBJZiBpbml0
RGF0YSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEg
bmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKGluaXREYXRhVHlwZS5pc0VtcHR5KCkg
fHwgIWluaXREYXRhLmxlbmd0aCgpKSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJS
ZWplY3RlZDogaW5pdERhdGFUeXBlIGVtcHR5KCIsIGluaXREYXRhVHlwZS5pc0VtcHR5KCksICIp
IG9yIGluaXREYXRhIGVtcHR5KCIsICFpbml0RGF0YS5sZW5ndGgoKSwgIikiKTsKICAgICAgICAg
cHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0x
NDksNiArMTU0LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25z
dCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAvLyAgICBpbml0RGF0
YVR5cGUgYXMgYW4gSW5pdGlhbGl6YXRpb24gRGF0YSBUeXBlLCByZXR1cm4gYSBwcm9taXNlIHJl
amVjdGVkIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvci4gU3RyaW5nCiAgICAgLy8gICAgY29tcGFy
aXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBv
cnRzSW5pdERhdGFUeXBlKGluaXREYXRhVHlwZSkpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRp
ZmllciwgIlJlamVjdGVkOiBpbml0RGF0YVR5cGUoIiwgaW5pdERhdGFUeXBlLCAiKSB1bnN1cHBv
cnRlZCIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU3LDE5ICsxNjMsMjEgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNv
bnN0IEJ1ZmYKICAgICAvLyA4LiBMZXQgc2Vzc2lvbiB0eXBlIGJlIHRoaXMgb2JqZWN0J3Mgc2Vz
c2lvbiB0eXBlLgogICAgIC8vIDkuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAg
Ly8gMTAuIFJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFz
a0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMs
IGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoaW5pdERhdGEuZGF0YSgpLCBpbml0RGF0
YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgp
IG11dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1Nv
dXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGluaXREYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
aW5pdERhdGEuZGF0YSgpLCBpbml0RGF0YS5sZW5ndGgoKSksIGluaXREYXRhVHlwZSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAo
KSBtdXRhYmxlIHsKICAgICAgICAgLy8gMTAuMS4gSWYgdGhlIGluaXQgZGF0YSBpcyBub3QgdmFs
aWQgZm9yIGluaXREYXRhVHlwZSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQg
VHlwZUVycm9yLgogICAgICAgICAvLyAxMC4yLiBMZXQgc2FuaXRpemVkIGluaXQgZGF0YSBiZSBh
IHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkIHZlcnNpb24gb2YgaW5pdCBkYXRhLgogICAgICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBzYW5pdGl6ZWRJbml0RGF0YSA9IG1faW1wbGVtZW50YXRpb24t
PnNhbml0aXplSW5pdERhdGEoaW5pdERhdGFUeXBlLCBpbml0RGF0YSk7CiAKICAgICAgICAgLy8g
MTAuMy4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXplZEluaXREYXRh
KSB7CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6
IGNhbm5vdCBzYW5pdGl6ZSBpbml0IGRhdGEiKTsKICAgICAgICAgICAgIHByb21pc2UtPnJlamVj
dChUeXBlRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gMTAuNC4gSWYgc2FuaXRpemVkIGluaXQgZGF0YSBpcyBlbXB0eSwgcmVqZWN0IHByb21pc2Ug
d2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLgogICAgICAgICBpZiAoc2FuaXRpemVkSW5pdERhdGEt
PmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IFJlamVjdGVkOiBlbXB0eSBzYW5pdGl6ZWQgaW5pdCBkYXRhIik7CiAgICAgICAgICAgICBwcm9t
aXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0xODEsNiArMTg5LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRl
UmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAg
ICAgLy8gMTAuOS4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgog
ICAgICAgICAvLyAxMC45LjEuIElmIHRoZSBzYW5pdGl6ZWQgaW5pdCBkYXRhIGlzIG5vdCBzdXBw
b3J0ZWQgYnkgdGhlIGNkbSwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9y
LgogICAgICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRzSW5pdERhdGEoaW5pdERh
dGFUeXBlLCAqc2FuaXRpemVkSW5pdERhdGEpKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVu
dGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IHVuc3VwcG9ydGVkIGluaXREYXRhVHlwZSAoIiwg
aW5pdERhdGFUeXBlLCAiKSBvciBzYW5pdGl6ZWQgaW5pdERhdGEiKTsKICAgICAgICAgICAgIHBy
b21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTIwNCw4ICsyMTMsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAg
ICAgICAgICAgbV9sYXRlc3REZWNyeXB0VGltZSA9IDA7CiAgICAgICAgIH0KIAotICAgICAgICBM
T0coRU1FLCAiRU1FIC0gcmVxdWVzdCBsaWNlbnNlIGZyb20gQ0RNIGltcGxlbWVudGF0aW9uIik7
Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5yZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBl
LCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXREYXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlz
LCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlz
ZSldIChSZWY8U2hhcmVkQnVmZmVyPiYmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgc2Vzc2lvbklk
LCBib29sIG5lZWRzSW5kaXZpZHVhbGl6YXRpb24sIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vz
c1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5y
ZXF1ZXN0TGljZW5zZShtX3Nlc3Npb25UeXBlLCBpbml0RGF0YVR5cGUsIHNhbml0aXplZEluaXRE
YXRhLnJlbGVhc2VOb25OdWxsKCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50
aWZpZXIpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNlc3Np
b25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1
Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhp
cykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTIyNiw5ICsyMzQsMTAgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gMTAuMTAu
IFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKLSAgICAgICAgICAgIHF1
ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywg
W3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkXSAoKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6
TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBtZXNzYWdlID0g
V1RGTW92ZShtZXNzYWdlKSwgbWVzc2FnZVR5cGUsIHNlc3Npb25JZCwgc3VjY2VlZGVkLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAg
ICAgLy8gMTAuMTAuMS4gSWYgYW55IG9mIHRoZSBwcmVjZWRpbmcgc3RlcHMgZmFpbGVkLCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3IERPTUV4Y2VwdGlvbiB3aG9zZSBuYW1lIGlzIHRoZSBhcHBy
b3ByaWF0ZSBlcnJvciBuYW1lLgogICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RN
SW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgICAg
ICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IGZhaWxlZCB0byBy
ZXF1ZXN0IGxpY2Vuc2UiKTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg
ICAgICAgIH0KQEAgLTI0Miw2ICsyNTEsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6Z2VuZXJh
dGVSZXF1ZXN0KGNvbnN0IEF0b21TdHJpbmcmIGluaXREYXRhVHlwZSwgY29uc3QgQnVmZgogICAg
ICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKIAogICAg
ICAgICAgICAgICAgIC8vIDEwLjkuMy4gUmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAg
LTI1NSw5ICsyNjUsMTMgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAvLyBodHRwczov
L3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzZXNzaW9uLWxvYWQK
ICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgogCisgICAgYXV0byBp
ZGVudGlmaWVyID0gTE9HSURFTlRJRklFUjsKKyAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAic2Vz
c2lvbklkKCIsIHNlc3Npb25JZCwgIikiKTsKKwogICAgIC8vIDEuIElmIHRoaXMgb2JqZWN0IGlz
IGNsb3NlZCwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVy
cm9yLgogICAgIC8vIDIuIElmIHRoaXMgb2JqZWN0J3MgdW5pbml0aWFsaXplZCB2YWx1ZSBpcyBm
YWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9y
LgogICAgIGlmIChtX2Nsb3NlZCB8fCAhbV91bmluaXRpYWxpemVkKSB7CisgICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBvciAhdW5p
bml0aWFsaXplZCgiLCAhbV91bmluaXRpYWxpemVkLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5y
ZWplY3QoSW52YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjY4
LDYgKzI4Miw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgLy8gNC4gSWYgc2Vzc2lv
bklkIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBh
IG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIC8vIDUuIElmIHRoZSByZXN1bHQgb2YgcnVu
bmluZyB0aGUgSXMgcGVyc2lzdGVudCBzZXNzaW9uIHR5cGU/IGFsZ29yaXRobSBvbiB0aGlzIG9i
amVjdCdzIHNlc3Npb24gdHlwZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3
aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKHNlc3Npb25JZC5pc0VtcHR5
KCkgfHwgbV9zZXNzaW9uVHlwZSA9PSBNZWRpYUtleVNlc3Npb25UeXBlOjpUZW1wb3JhcnkpIHsK
KyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBzZXNzaW9uSUQgZW1wdHko
Iiwgc2Vzc2lvbklkLmlzRW1wdHkoKSwgIikgb3Igc2Vzc2lvblR5cGUgPT0gVGVtcG9yYXJ5ICgi
LCBtX3Nlc3Npb25UeXBlID09IE1lZGlhS2V5U2Vzc2lvblR5cGU6OlRlbXBvcmFyeSwgIikiKTsK
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0yNzcsMTEgKzI5MiwxMiBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25z
dCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogCiAgICAg
Ly8gNy4gTGV0IHByb21pc2UgYmUgYSBuZXcgcHJvbWlzZS4KICAgICAvLyA4LiBSdW4gdGhlIGZv
bGxvd2luZyBzdGVwcyBpbiBwYXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNzaW9uSWQsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5n
T2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNzaW9u
SWQsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVu
dGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDguMS4gTGV0IHNhbml0aXplZCBzZXNz
aW9uIElEIGJlIGEgdmFsaWRhdGVkIGFuZC9vciBzYW5pdGl6ZWQgdmVyc2lvbiBvZiBzZXNzaW9u
SWQuCiAgICAgICAgIC8vIDguMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgb3IgaWYg
c2FuaXRpemVkIHNlc3Npb24gSUQgaXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXds
eSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgT3B0aW9uYWw8U3RyaW5nPiBzYW5pdGl6ZWRT
ZXNzaW9uSWQgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVNlc3Npb25JZChzZXNzaW9uSWQp
OwogICAgICAgICBpZiAoIXNhbml0aXplZFNlc3Npb25JZCB8fCBzYW5pdGl6ZWRTZXNzaW9uSWQt
PmlzRW1wdHkoKSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVk
OiBzYW5pdGl6ZWRTU2Vzc2lvbklEIGVtcHR5Iik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWpl
Y3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjk4LDcg
KzMxNCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lv
bklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgIC8vIDguNi4gTGV0IG1l
c3NhZ2UgdHlwZSBiZSBudWxsLgogICAgICAgICAvLyA4LjcuIExldCBjZG0gYmUgdGhlIENETSBp
bnN0YW5jZSByZXByZXNlbnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4K
ICAgICAgICAgLy8gOC44LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6Ci0gICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25J
ZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWRdIChPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Oktl
eVN0YXR1c1ZlY3Rvcj4mJiBrbm93bktleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBleHBpcmF0aW9u
LCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVzc2FnZSwgQ0RNSW5z
dGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0YW5jZVNlc3Npb246
OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBtdXRhYmxlIHsKKyAgICAgICAgbV9pbnN0YW5j
ZVNlc3Npb24tPmxvYWRTZXNzaW9uKG1fc2Vzc2lvblR5cGUsICpzYW5pdGl6ZWRTZXNzaW9uSWQs
IG9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0g
V1RGTW92ZShwcm9taXNlKSwgc2FuaXRpemVkU2Vzc2lvbklkID0gKnNhbml0aXplZFNlc3Npb25J
ZCwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildIChPcHRpb25hbDxDRE1JbnN0YW5j
ZVNlc3Npb246OktleVN0YXR1c1ZlY3Rvcj4mJiBrbm93bktleXMsIE9wdGlvbmFsPGRvdWJsZT4m
JiBleHBpcmF0aW9uLCBPcHRpb25hbDxDRE1JbnN0YW5jZVNlc3Npb246Ok1lc3NhZ2U+JiYgbWVz
c2FnZSwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkLCBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZSBmYWlsdXJlKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIC8vIDguOC4xLiBJZiB0aGVyZSBpcyBubyBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0
aXplZCBzZXNzaW9uIElEIGluIHRoZSBvcmlnaW4sIHJlc29sdmUgcHJvbWlzZSB3aXRoIGZhbHNl
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgICAgIC8vIDguOC4yLiBJZiB0aGUgc3Rv
cmVkIHNlc3Npb24ncyBzZXNzaW9uIHR5cGUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50
IE1lZGlhS2V5U2Vzc2lvbiBzZXNzaW9uIHR5cGUsIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXds
eSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgICAgIC8vIDguOC4zLiBMZXQgc2Vzc2lvbiBk
YXRhIGJlIHRoZSBkYXRhIHN0b3JlZCBmb3IgdGhlIHNhbml0aXplZCBzZXNzaW9uIElEIGluIHRo
ZSBvcmlnaW4uIFRoaXMgbXVzdCBub3QgaW5jbHVkZSBkYXRhIGZyb20gb3RoZXIgb3JpZ2luKHMp
IG9yIHRoYXQgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbiBvcmlnaW4uCkBAIC0zMTMsMTIgKzMy
OSwxNSBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25J
ZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAgaWYgKHN1Y2NlZWRl
ZCA9PSBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CiAgICAgICAg
ICAgICAgICAgc3dpdGNoIChmYWlsdXJlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBDRE1JbnN0
YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6Tm9TZXNzaW9uRGF0YToKKyAgICAgICAg
ICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlc29sdmVkOiBOb1Nl
c3Npb25EYXRhIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9v
bGVhbj4oZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAg
ICAgY2FzZSBDRE1JbnN0YW5jZVNlc3Npb246OlNlc3Npb25Mb2FkRmFpbHVyZTo6TWlzbWF0Y2hl
ZFNlc3Npb25UeXBlOgorICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAi
Ojp0YXNrKCkgUmVqZWN0ZWQ6IE1pc21hdGNoZWRTZXNzaW9uVHlwZSIpOwogICAgICAgICAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmU6OlF1b3RhRXhjZWVkZWQ6CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogUXVvdGFFeGNlZWRlZCIpOwogICAgICAg
ICAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoUXVvdGFFeGNlZWRlZEVycm9yKTsKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VT
ZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5vbmU6CkBAIC0zMjksOSArMzQ4LDEwIEBAIHZv
aWQgTWVkaWFLZXlTZXNzaW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVm
ZXJyZWRQcm9taXNlPiYmIHByb21pCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIDgu
OS4gUXVldWUgYSB0YXNrIHRvIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICAgICAg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5n
LCBbdGhpcywga25vd25LZXlzID0gV1RGTW92ZShrbm93bktleXMpLCBleHBpcmF0aW9uID0gV1RG
TW92ZShleHBpcmF0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNhbml0aXplZFNl
c3Npb25JZCwgc3VjY2VlZGVkLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrbm93bktleXMgPSBXVEZNb3ZlKGtub3duS2V5cyks
IGV4cGlyYXRpb24gPSBXVEZNb3ZlKGV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNz
YWdlKSwgc2FuaXRpemVkU2Vzc2lvbklkLCBzdWNjZWVkZWQsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAg
ICAgICAgICAgICAgICAgLy8gOC45LjEuIElmIGFueSBvZiB0aGUgcHJlY2VkaW5nIHN0ZXBzIGZh
aWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBuYW1lLgog
ICAgICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWU6OkZhaWxlZCkgeworICAgICAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlm
aWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IE90aGVyIGZhaWx1cmUiKTsKICAgICAgICAgICAgICAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KQEAgLTM1NCw2ICszNzQsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZSht
ZXNzYWdlLT5maXJzdCwgV1RGTW92ZShtZXNzYWdlLT5zZWNvbmQpKTsKIAogICAgICAgICAgICAg
ICAgIC8vIDguOS43LiBSZXNvbHZlIHByb21pc2Ugd2l0aCB0cnVlLgorICAgICAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4odHJ1ZSk7CiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgfSk7CkBAIC0zNzAsMTUgKzM5MSwxOCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+
JgogICAgIC8vIFdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVz
dCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAvLyAxLiBJZiB0aGlzIG9iamVjdCBpcyBj
bG9zZWQsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJv
ci4KICAgICAvLyAyLiBJZiB0aGlzIG9iamVjdCdzIGNhbGxhYmxlIHZhbHVlIGlzIGZhbHNlLCBy
ZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAg
TE9HKEVNRSwgIkVNRSAtIHVwZGF0ZSBzZXNzaW9uIGZvciAlcyIsIG1fc2Vzc2lvbklkLnV0Zjgo
KS5kYXRhKCkpOworICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgSU5G
T19MT0coaWRlbnRpZmllciwgInJlc3BvbnNlLmxlbmd0aCgiLCByZXNwb25zZS5sZW5ndGgoKSwg
IikiKTsKIAogICAgIGlmIChtX2Nsb3NlZCB8fCAhbV9jYWxsYWJsZSkgeworICAgICAgICBJTkZP
X0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgiLCBtX2Nsb3NlZCwgIikgb3IgIWNh
bGxhYmxlKCIsICFtX2NhbGxhYmxlLCAiKSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoSW52
YWxpZFN0YXRlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gMy4gSWYg
cmVzcG9uc2UgaXMgYW4gZW1wdHkgYXJyYXksIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmICghcmVzcG9uc2UubGVuZ3RoKCkp
IHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSByZXNwb25z
ZSIpOwogICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTM4NiwxMiArNDEwLDEzIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRh
dGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAg
ICAgLy8gNC4gTGV0IHJlc3BvbnNlIGNvcHkgYmUgYSBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0
aGUgcmVzcG9uc2UgcGFyYW1ldGVyLgogICAgIC8vIDUuIExldCBwcm9taXNlIGJlIGEgbmV3IHBy
b21pc2UuCiAgICAgLy8gNi4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0g
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3Jr
aW5nLCBbdGhpcywgcmVzcG9uc2UgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZXNwb25zZS5kYXRh
KCksIHJlc3BvbnNlLmxlbmd0aCgpKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11
dGFibGUgeworICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJj
ZTo6TmV0d29ya2luZywgW3RoaXMsIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUocmVz
cG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAg
ICAgIC8vIDYuMS4gTGV0IHNhbml0aXplZCByZXNwb25zZSBiZSBhIHZhbGlkYXRlZCBhbmQvb3Ig
c2FuaXRpemVkIHZlcnNpb24gb2YgcmVzcG9uc2UgY29weS4KICAgICAgICAgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gc2FuaXRpemVkUmVzcG9uc2UgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZVJl
c3BvbnNlKHJlc3BvbnNlKTsKIAogICAgICAgICAvLyA2LjIuIElmIHRoZSBwcmVjZWRpbmcgc3Rl
cCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCByZXNwb25zZSBpcyBlbXB0eSwgcmVqZWN0IHByb21p
c2Ugd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgICAgICBpZiAoIXNhbml0aXpl
ZFJlc3BvbnNlIHx8IHNhbml0aXplZFJlc3BvbnNlLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2sgLSBSZWplY3RlZDogZW1wdHkgc2FuaXRpemVk
IHJlc3BvbnNlIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDAxLDcgKzQyNiw3IEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNwb25zZSwgUmVmPERl
ZmVycmVkUHJvbWlzZT4mCiAgICAgICAgIC8vIDYuNS4gTGV0IHNlc3Npb24gY2xvc2VkIGJlIGZh
bHNlLgogICAgICAgICAvLyA2LjYuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNl
bnRlZCBieSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNi43
LiBVc2UgdGhlIGNkbSB0byBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkUmVzcG9uc2UsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlz
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldIChib29sIHNlc3Npb25XYXNDbG9zZWQsIE9w
dGlvbmFsPENETUluc3RhbmNlU2Vzc2lvbjo6S2V5U3RhdHVzVmVjdG9yPiYmIGNoYW5nZWRLZXlz
LCBPcHRpb25hbDxkb3VibGU+JiYgY2hhbmdlZEV4cGlyYXRpb24sIE9wdGlvbmFsPENETUluc3Rh
bmNlU2Vzc2lvbjo6TWVzc2FnZT4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+
dXBkYXRlTGljZW5zZShtX3Nlc3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgKnNhbml0aXplZFJlc3Bv
bnNlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKGJvb2wgc2Vz
c2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0
b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwg
T3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3Rh
bmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDI4LDcgKzQ1
Myw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiBy
ZXNwb25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgICAgICAvLyBOT1RFOiBTdGVw
cyA2LjcuMS4gYW5kIDYuNy4yLiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RNSW5zdGFuY2Uu
CiAKICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNj
ZXNzVmFsdWU6OkZhaWxlZCkgewotICAgICAgICAgICAgICAgIExPRyhFTUUsICJFTUUgLSBmYWls
ZWQgdG8gdXBkYXRlIENETSBsaWNlbnNlIGZvciAlcyIsIG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRh
KCkpOworICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWpl
Y3RlZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQzNyw4ICs0NjIsNyBAQCB2
b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2Us
IFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgLy8gICA2LjcuMy4xLiBMZXQgbWVz
c2FnZSBiZSB0aGF0IG1lc3NhZ2UuCiAgICAgICAgICAgICAvLyAgIDYuNy4zLjIuIExldCBtZXNz
YWdlIHR5cGUgYmUgdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5TWVzc2FnZVR5cGUgZm9yIHRoZSBt
ZXNzYWdlLgogICAgICAgICAgICAgLy8gNi44LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNzaW9uV2FzQ2xvc2VkLCBjaGFu
Z2VkS2V5cyA9IFdURk1vdmUoY2hhbmdlZEtleXMpLCBjaGFuZ2VkRXhwaXJhdGlvbiA9IFdURk1v
dmUoY2hhbmdlZEV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgcHJvbWlz
ZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIExPRyhF
TUUsICJFTUUgLSB1cGRhdGluZyBDRE0gbGljZW5zZSBzdWNjZWVkZWQgZm9yIHNlc3Npb24gJXMs
IHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBsaWNlbnNlIHNlcnZlciIsIG1fc2Vzc2lvbklkLnV0
ZjgoKS5kYXRhKCkpOworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0
aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgc2Vzc2lvbldhc0Nsb3NlZCwgY2hh
bmdlZEtleXMgPSBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgY2hhbmdlZEV4cGlyYXRpb24gPSBXVEZN
b3ZlKGNoYW5nZWRFeHBpcmF0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gNi44LjEuCiAgICAgICAgICAgICAgICAg
aWYgKHNlc3Npb25XYXNDbG9zZWQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g4oazIElmIHNl
c3Npb24gY2xvc2VkIGlzIHRydWU6CkBAIC00ODQsNiArNTA4LDcgQEAgdm9pZCBNZWRpYUtleVNl
c3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyA2LjguMi4g
UmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6
OnRhc2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQ5NywzNyArNTIyLDQyIEBAIHZvaWQg
TWVkaWFLZXlTZXNzaW9uOjpjbG9zZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5
c2Vzc2lvbi1jbG9zZQogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2
CiAKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlk
ZW50aWZpZXIpOworCiAgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVk
aWFLZXlTZXNzaW9uIG9iamVjdC4KICAgICAvLyAyLiBJZiBzZXNzaW9uIGlzIGNsb3NlZCwgcmV0
dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZS4KICAgICBMT0coRU1FLCAiRU1FIC0gY2xvc2luZyBzZXNz
aW9uICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV9jbG9zZWQp
IHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlc29sdmVkOiBhbHJlYWR5IGNsb3Nl
ZCIpOwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICAvLyAzLiBJZiBzZXNzaW9uJ3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAo
IW1fY2FsbGFibGUpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiAh
Y2FsbGFibGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEgbmV3
IHByb21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6
Ci0gICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewor
ICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29y
a2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RG
TW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDUuMS4gTGV0IGNkbSBi
ZSB0aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHNlc3Npb24ncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCiAgICAgICAgIC8vIDUuMi4gVXNlIGNkbSB0byBjbG9zZSB0aGUga2V5IHNlc3Npb24g
YXNzb2NpYXRlZCB3aXRoIHNlc3Npb24uCi0gICAgICAgIExPRyhFTUUsICJFTUUgLSBjbG9zaW5n
IENETSBzZXNzaW9uICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1f
aW5zdGFuY2VTZXNzaW9uLT5jbG9zZVNlc3Npb24obV9zZXNzaW9uSWQsIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11
dGFibGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+Y2xvc2VTZXNzaW9uKG1fc2Vzc2lv
bklkLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZN
b3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICAgICAgLy8gNS4zLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0g
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAg
ICAgICAgICAgICAgIC8vIDUuMy4xLiBSdW4gdGhlIFNlc3Npb24gQ2xvc2VkIGFsZ29yaXRobSBv
biB0aGUgc2Vzc2lvbi4KICAgICAgICAgICAgICAgICBzZXNzaW9uQ2xvc2VkKCk7CiAKICAgICAg
ICAgICAgICAgICAvLyA1LjMuMi4gUmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElO
Rk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAgICAg
IHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTU0
MywyMiArNTczLDI1IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogCiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2Vk
LCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAg
ICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyBjYWxsYWJsZSB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJu
IGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIExPRyhF
TUUsICJFTUUgLSByZW1vdmluZyBzZXNzaW9uICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEo
KSk7CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9H
KGlkZW50aWZpZXIpOwogCiAgICAgaWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7CisgICAg
ICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAi
KSBvciAhY2FsbGFibGUoIiwgIW1fY2FsbGFibGUsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJl
amVjdChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAv
LyAzLiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDQuIFJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2
ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShw
cm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewog
ICAgICAgICAvLyA0LjEuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBi
eSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNC4yLiBMZXQg
bWVzc2FnZSBiZSBudWxsLgogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVs
bC4KIAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2lu
ZyBzdGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1f
c2Vzc2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigq
dGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpL
ZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNz
YWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUg
eworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9u
SWQsIG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZp
ZXIpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBPcHRpb25h
bDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nl
c3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU3Nyw3ICs2MTAsNyBAQCB2b2lkIE1lZGlh
S2V5U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAg
ICAgICAgIC8vIE5PVEU6IFN0ZXAgNC40LjEuIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBDRE1J
bnN0YW5jZS4KIAogICAgICAgICAgICAgLy8gNC41LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBm
b2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUo
KnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrZXlzID0gV1RGTW92ZShrZXlz
KSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywga2V5cyA9IFdU
Rk1vdmUoa2V5cyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQsIHByb21p
c2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0g
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gNC41LjEuIFJ1biB0aGUgVXBkYXRlIEtl
eSBTdGF0dXNlcyBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBhbGwga2V5IElE
KHMpIGluIHRoZSBzZXNzaW9uIGFsb25nIHdpdGggdGhlICJyZWxlYXNlZCIgTWVkaWFLZXlTdGF0
dXMgdmFsdWUgZm9yIGVhY2guCiAgICAgICAgICAgICAgICAgdXBkYXRlS2V5U3RhdHVzZXMoV1RG
TW92ZShrZXlzKSk7CiAKQEAgLTU4Niw2ICs2MTksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogICAgICAgICAgICAgICAg
IC8vIDQuNS4zLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBw
cm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJp
YXRlIGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0
YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICAgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZmFpbGVkIik7CiAgICAgICAgICAgICAg
ICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC01OTYsNiArNjMwLDcgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
CiAgICAgICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGU6
OkxpY2Vuc2VSZWxlYXNlLCAqbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAgICAvLyA0LjUuNi4g
UmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJS
ZXNvbHZlZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9KTsKQEAgLTY5MCw3ICs3MjUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vz
c2lvbjo6c2Vzc2lvbkNsb3NlZCgpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2Vu
Y3J5cHRlZC1tZWRpYS8jc2Vzc2lvbi1jbG9zZWQKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQg
MDkgTm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJFTUUgLSBzZXNzaW9uICVzIHdhcyBjbG9z
ZWQiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElG
SUVSKTsKIAogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5
U2Vzc2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSWYgc2Vzc2lvbidzIHNlc3Npb24gdHlwZSBpcyAi
cGVyc2lzdGVudC11c2FnZS1yZWNvcmQiLCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4g
cGFyYWxsZWw6CkBAIC03NDIsNiArNzc3LDExIEBAIGNvbnN0IGNoYXIqIE1lZGlhS2V5U2Vzc2lv
bjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJNZWRpYUtleVNlc3Np
b24iOwogfQogCitXVEZMb2dDaGFubmVsJiBNZWRpYUtleVNlc3Npb246OmxvZ0NoYW5uZWwoKSBj
b25zdAoreworICAgIHJldHVybiBMb2dFTUU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL01lZGlhS2V5U2Vzc2lvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRt
ZWRpYS9NZWRpYUtleVNlc3Npb24uaAppbmRleCBlNWYxMmRlY2M2ZTU0ODFiOThhMjljODc5YmM5
YWMyMGFmYzI3MGYwLi41Y2IzNzY3Y2VkZGIxM2UzMjY1NjZmZmYwMWI2YjFjZGMwYjk1ZDc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5
U2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlTZXNzaW9uLmgKQEAgLTQzLDYgKzQzLDEwIEBACiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorbmFtZXNwYWNlIFdURiB7Citj
bGFzcyBMb2dnZXI7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQnVmZmVyU291
cmNlOwpAQCAtNTcsNyArNjEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBE
T01Qcm9taXNlUHJveHk7CiBjbGFzcyBNZWRpYUtleVNlc3Npb24gZmluYWwgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYUtleVNlc3Npb24+LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0
YSwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIENETUluc3RhbmNlU2Vzc2lvbkNsaWVu
dCB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChNZWRpYUtleVNlc3Npb24pOwogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8TWVkaWFLZXlTZXNzaW9uPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29s
IHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vz
c2lvbj4mJik7CisgICAgc3RhdGljIFJlZjxNZWRpYUtleVNlc3Npb24+IGNyZWF0ZShEb2N1bWVu
dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25UeXBlLCBib29sIHVzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUluc3RhbmNlU2Vzc2lvbj4m
Jik7CiAgICAgdmlydHVhbCB+TWVkaWFLZXlTZXNzaW9uKCk7CiAKICAgICB1c2luZyBSZWZDb3Vu
dGVkPE1lZGlhS2V5U2Vzc2lvbj46OnJlZjsKQEAgLTg0LDcgKzg4LDcgQEAgcHVibGljOgogICAg
IGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0g
ICAgTWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWFrUHRyPE1lZGlh
S2V5cz4mJiwgTWVkaWFLZXlTZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIFJlZjxDRE0+JiYsIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYpOworICAgIE1lZGlhS2V5
U2Vzc2lvbihEb2N1bWVudCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25U
eXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUlu
c3RhbmNlU2Vzc2lvbj4mJik7CiAgICAgdm9pZCBlbnF1ZXVlTWVzc2FnZShNZWRpYUtleU1lc3Nh
Z2VUeXBlLCBjb25zdCBTaGFyZWRCdWZmZXImKTsKICAgICB2b2lkIHVwZGF0ZUV4cGlyYXRpb24o
ZG91YmxlKTsKICAgICB2b2lkIHNlc3Npb25DbG9zZWQoKTsKQEAgLTEwNCw2ICsxMDgsMTMgQEAg
cHJpdmF0ZToKICAgICAvLyBBY3RpdmVET01PYmplY3QKICAgICBjb25zdCBjaGFyKiBhY3RpdmVE
T01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKKyAgICAvLyBMb2dnZXJIZWxwZXIKKyAg
ICBjb25zdCBXVEY6OkxvZ2dlciYgbG9nZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9sb2dnZXI7IH0K
KyAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCB7IHJldHVybiAiTWVkaWFLZXlT
ZXNzaW9uIjsgfQorICAgIFdURkxvZ0NoYW5uZWwmIGxvZ0NoYW5uZWwoKSBjb25zdDsKKyAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gdGhpczsgfQorCisgICAg
UmVmPFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBXZWFrUHRyPE1lZGlhS2V5cz4gbV9rZXlz
OwogICAgIFN0cmluZyBtX3Nlc3Npb25JZDsKICAgICBkb3VibGUgbV9leHBpcmF0aW9uOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3Bw
CmluZGV4IGM2MjRlNTMyOWU1OTY4ODJmMGQ0MWY1NzQ1ODg1ZmMyM2QzOWE2ZTQuLmJhODVhNjRi
ZDZmMDBmY2FiZjljMmNhZmFlODI2ZjU1YWUzNWQ2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKQEAgLTM0LDE1ICszNCwy
NSBAQAogI2luY2x1ZGUgIkNETS5oIgogI2luY2x1ZGUgIkNETUNsaWVudC5oIgogI2luY2x1ZGUg
IkNETUluc3RhbmNlLmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFdmVudExv
b3AuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKICNpbmNsdWRlICJNZWRpYUtleVNlc3Npb24uaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHZvaWQg
aW5mb0xvZyhMb2dnZXImIGxvZ2dlciwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCit7
CisjaWYgIUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBsb2dnZXIu
aW5mbyhMb2dFTUUsIGFyZ3VtZW50cy4uLik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2dn
ZXIpOworI2VuZGlmCit9CisKIE1lZGlhS2V5czo6TWVkaWFLZXlzKGJvb2wgdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBib29sIHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQsIGNvbnN0IFZlY3RvcjxN
ZWRpYUtleVNlc3Npb25UeXBlPiYgc3VwcG9ydGVkU2Vzc2lvblR5cGVzLCBSZWY8Q0RNPiYmIGlt
cGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2U+JiYgaW5zdGFuY2UpCiAgICAgOiBtX3VzZURp
c3RpbmN0aXZlSWRlbnRpZmllcih1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIpCiAgICAgLCBtX3Bl
cnNpc3RlbnRTdGF0ZUFsbG93ZWQocGVyc2lzdGVudFN0YXRlQWxsb3dlZCkKQEAgLTU0LDQ4ICs2
NCw2MSBAQCBNZWRpYUtleXM6Ok1lZGlhS2V5cyhib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmll
ciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLAogCiBNZWRpYUtleXM6On5NZWRpYUtleXMo
KSA9IGRlZmF1bHQ7CiAKLUV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBNZWRpYUtl
eXM6OmNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgTWVkaWFL
ZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSkKK0V4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Np
b24+PiBNZWRpYUtleXM6OmNyZWF0ZVNlc3Npb24oRG9jdW1lbnQmIGRvY3VtZW50LCBNZWRpYUtl
eVNlc3Npb25UeXBlIHNlc3Npb25UeXBlKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by9lbmNyeXB0ZWQtbWVkaWEvI2RvbS1tZWRpYWtleXMtc2V0c2VydmVyY2VydGlmaWNhdGUKICAg
ICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJF
TUUgLSBjaGVjayBpZiBhIG5ldyBzZXNzaW9uIGNhbiBiZSBjcmVhdGVkIik7CisgICAgYXV0byBp
ZGVudGlmaWVyID0gV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVyKCJNZWRpYUtleXMiLCBf
X2Z1bmNfXywgdGhpcyk7CisgICAgUmVmPExvZ2dlcj4gbG9nZ2VyID0gZG9jdW1lbnQubG9nZ2Vy
KCk7CiAKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHRoZSB1c2VyIGFnZW50
IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3Qn
cyBzdXBwb3J0ZWQgc2Vzc2lvbiB0eXBlcyB2YWx1ZSBkb2VzIG5vdCBjb250YWluIHNlc3Npb25U
eXBlLCB0aHJvdyBbV2ViSURMXSBhIE5vdFN1cHBvcnRlZEVycm9yLgotICAgIGlmICghbV9zdXBw
b3J0ZWRTZXNzaW9uVHlwZXMuY29udGFpbnMoc2Vzc2lvblR5cGUpKQorICAgIGlmICghbV9zdXBw
b3J0ZWRTZXNzaW9uVHlwZXMuY29udGFpbnMoc2Vzc2lvblR5cGUpKSB7CisgICAgICAgIGluZm9M
b2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiB1bnN1cHBvcnRlZCBzZXNzaW9uVHlw
ZTogIiwgc2Vzc2lvblR5cGUpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uKE5vdFN1cHBvcnRl
ZEVycm9yKTsKKyAgICB9CiAKICAgICAvLyAyLiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBu
b3Qgc3VwcG9ydCBNZWRpYUtleVNlc3Npb24gb3BlcmF0aW9ucyBpbiB0aGUgY3VycmVudCBzdGF0
ZSwgdGhyb3cgW1dlYklETF0gYW4gSW52YWxpZFN0YXRlRXJyb3IuCi0gICAgaWYgKCFtX2ltcGxl
bWVudGF0aW9uLT5zdXBwb3J0c1Nlc3Npb25zKCkpCisgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9u
LT5zdXBwb3J0c1Nlc3Npb25zKCkpIHsKKyAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZp
ZXIsICJFeGNlcHRpb246IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IHN1cHBvcnQgc2Vzc2lvbnMi
KTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJbnZhbGlkU3RhdGVFcnJvcik7CisgICAgfQog
CiAgICAgYXV0byBpbnN0YW5jZVNlc3Npb24gPSBtX2luc3RhbmNlLT5jcmVhdGVTZXNzaW9uKCk7
Ci0gICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pCisgICAgaWYgKCFpbnN0YW5jZVNlc3Npb24pIHsK
KyAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJFeGNlcHRpb246IGNvdWxkIG5v
dCBjcmVhdGUgc2Vzc2lvbiIpOwogICAgICAgICByZXR1cm4gRXhjZXB0aW9uKEludmFsaWRTdGF0
ZUVycm9yKTsKKyAgICB9CiAKICAgICAvLyAzLiBMZXQgc2Vzc2lvbiBiZSBhIG5ldyBNZWRpYUtl
eVNlc3Npb24gb2JqZWN0LCBhbmQgaW5pdGlhbGl6ZSBpdCBhcyBmb2xsb3dzOgogICAgIC8vIE5P
VEU6IENvbnRpbnVlZCBpbiBNZWRpYUtleVNlc3Npb24uCiAgICAgLy8gNC4gUmV0dXJuIHNlc3Np
b24uCi0gICAgYXV0byBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoY29udGV4dCwg
bWFrZVdlYWtQdHIoKnRoaXMpLCBzZXNzaW9uVHlwZSwgbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZp
ZXIsIG1faW1wbGVtZW50YXRpb24uY29weVJlZigpLCBpbnN0YW5jZVNlc3Npb24ucmVsZWFzZU5v
bk51bGwoKSk7CisgICAgYXV0byBzZXNzaW9uID0gTWVkaWFLZXlTZXNzaW9uOjpjcmVhdGUoZG9j
dW1lbnQsIG1ha2VXZWFrUHRyKCp0aGlzKSwgc2Vzc2lvblR5cGUsIG1fdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBtX2ltcGxlbWVudGF0aW9uLmNvcHlSZWYoKSwgaW5zdGFuY2VTZXNzaW9uLnJl
bGVhc2VOb25OdWxsKCkpOworICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiIENyZWF0
ZWQgc2Vzc2lvbiIpOwogICAgIG1fc2Vzc2lvbnMuYXBwZW5kKHNlc3Npb24uY29weVJlZigpKTsK
ICAgICByZXR1cm4gc2Vzc2lvbjsKIH0KIAotdm9pZCBNZWRpYUtleXM6OnNldFNlcnZlckNlcnRp
ZmljYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IEJ1ZmZlclNvdXJj
ZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3Zv
aWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNv
bnN0IEJ1ZmZlclNvdXJjZSYgc2VydmVyQ2VydGlmaWNhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIHsKICAgICAvLyBodHRwczovL3czYy5naXRodWIuaW8vZW5jcnlwdGVkLW1l
ZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRpZmljYXRlCiAgICAgLy8gVzNDIEVkaXRv
cidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKIAorICAgIGF1dG8gaWRlbnRpZmllciA9IFdURjo6
TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVkaWFLZXlzIiwgX19mdW5jX18sIHRoaXMpOwor
ICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3VtZW50LmxvZ2dlcigpOworCiAgICAgLy8gV2hl
biB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRoZSBLZXkgU3lzdGVtIGltcGxlbWVudGF0aW9u
IHJlcHJlc2VudGVkIGJ5IHRoaXMgb2JqZWN0J3MgY2RtIGltcGxlbWVudGF0aW9uIHZhbHVlIGRv
ZXMgbm90IHN1cHBvcnQKICAgICAvLyAgICBzZXJ2ZXIgY2VydGlmaWNhdGVzLCByZXR1cm4gYSBw
cm9taXNlIHJlc29sdmVkIHdpdGggZmFsc2UuCiAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5z
dXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpKSB7CisgICAgICAgIGluZm9Mb2cobG9nZ2VyLCBp
ZGVudGlmaWVyLCAiUmVqZWN0ZWQ6ICFzdXBwb3J0c1NlcnZlckNlcnRpZmljYXRlcygpIik7CiAg
ICAgICAgIHByb21pc2UtPnJlc29sdmU8SURMQm9vbGVhbj4oZmFsc2UpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gMi4gSWYgc2VydmVyQ2VydGlmaWNhdGUgaXMgYW4gZW1wdHkg
YXJyYXksIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ldyBhIG5ld2x5IGNyZWF0
ZWQgVHlwZUVycm9yLgogICAgIGlmICghc2VydmVyQ2VydGlmaWNhdGUubGVuZ3RoKCkpIHsKKyAg
ICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZWplY3RlZDogZW1wdHkgc2VydmVy
Q2VydGlmaWNhdGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC0xMDYsMTUgKzEyOSwxNyBAQCB2b2lkIE1lZGlhS2V5czo6
c2V0U2VydmVyQ2VydGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgQnVmZgogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCiAgICAgLy8g
NS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAKLSAgICBjb250ZXh0LmV2
ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgY2VydGlm
aWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRlKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSld
ICgpIG11dGFibGUgeworICAgIGRvY3VtZW50LmV2ZW50TG9vcCgpLnF1ZXVlVGFzayhUYXNrU291
cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgY2VydGlmaWNhdGUgPSBXVEZNb3ZlKGNlcnRpZmljYXRl
KSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGxvZ2dlciA9IFdURk1vdmUobG9nZ2VyKSwg
aWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAv
LyA1LjEuIFVzZSB0aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmlj
YXRlLgogICAgICAgICBpZiAobV9pbnN0YW5jZS0+c2V0U2VydmVyQ2VydGlmaWNhdGUoV1RGTW92
ZShjZXJ0aWZpY2F0ZSkpID09IENETUluc3RhbmNlOjpGYWlsZWQpIHsKICAgICAgICAgICAgIC8v
IDUuMi4gSWYgdGhlIHByZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGgg
YSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5h
bWUuCisgICAgICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlamVjdGVkLCBz
ZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGZhaWxlZCIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVq
ZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIDUuMS4gUmVzb2x2ZSBwcm9taXNlIHdpdGggdHJ1ZS4KKyAgICAgICAgaW5m
b0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZXNvbHZlZCIpOwogICAgICAgICBwcm9taXNlLT5y
ZXNvbHZlPElETEJvb2xlYW4+KHRydWUpOwogICAgIH0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaAppbmRleCAxZTJlMWEyNzcxMzQw
ZTZkZjFlMGE5OGE1NDJjY2Q1ZjgyYWUyOGRmLi4zYWI2ODRjOGFjZDQ5MmIzNGRiZWZhOTUxNmMy
Y2MyYmQxOTM3ODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRl
ZG1lZGlhL01lZGlhS2V5cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTWVkaWFLZXlzLmgKQEAgLTQzLDggKzQzLDggQEAgY2xhc3MgQ0RNQ2xpZW50OwogY2xh
c3MgQ0RNSW5zdGFuY2U7CiBjbGFzcyBCdWZmZXJTb3VyY2U7CiBjbGFzcyBEZWZlcnJlZFByb21p
c2U7CitjbGFzcyBEb2N1bWVudDsKIGNsYXNzIE1lZGlhS2V5U2Vzc2lvbjsKLWNsYXNzIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIE1lZGlhS2V5cyA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhS2V5cz4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxNZWRpYUtleXM+IHsKIHB1YmxpYzoK
QEAgLTU3LDggKzU3LDggQEAgcHVibGljOgogCiAgICAgfk1lZGlhS2V5cygpOwogCi0gICAgRXhj
ZXB0aW9uT3I8UmVmPE1lZGlhS2V5U2Vzc2lvbj4+IGNyZWF0ZVNlc3Npb24oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIE1lZGlhS2V5U2Vzc2lvblR5cGUpOwotICAgIHZvaWQgc2V0U2VydmVyQ2Vy
dGlmaWNhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Np
b24+PiBjcmVhdGVTZXNzaW9uKERvY3VtZW50JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7CisgICAg
dm9pZCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShEb2N1bWVudCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOwogCiAgICAgdm9pZCBhdHRhY2hDRE1DbGllbnQoQ0RN
Q2xpZW50Jik7CiAgICAgdm9pZCBkZXRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKaW5k
ZXggZDZmMDRjZGRiZTUwZDMxNDgzOTVmNjVlYzZiZjkwNTdmZmJmNGRjZS4uZDVjNDJkYTkxNmEw
NWVkZWZjNjlhZWIxM2M5YjMzOGYzYWQ2MTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbApAQCAtMzIsNiArMzIsNiBAQAog
ICAgIERpc2FibGVkQnlRdWlyaz1oYXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnQsCiAg
ICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7Ci0g
ICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBN
ZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBNZWRpYUtleVNlc3Npb25UeXBl
IHNlc3Npb25UeXBlID0gInRlbXBvcmFyeSIpOwotICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0XSBQcm9taXNlPGJvb2w+IHNldFNlcnZlckNlcnRpZmljYXRlKEJ1ZmZlclNvdXJj
ZSBzZXJ2ZXJDZXJ0aWZpY2F0ZSk7CisgICAgW0NhbGxXaXRoPURvY3VtZW50LCBNYXlUaHJvd0V4
Y2VwdGlvbl0gTWVkaWFLZXlTZXNzaW9uIGNyZWF0ZVNlc3Npb24ob3B0aW9uYWwgTWVkaWFLZXlT
ZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSA9ICJ0ZW1wb3JhcnkiKTsKKyAgICBbQ2FsbFdpdGg9RG9j
dW1lbnRdIFByb21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291cmNlIHNl
cnZlckNlcnRpZmljYXRlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHAKaW5kZXggMGJhYWY4ZDVmZDI4YzU5YWJh
NzVjNmM4MjYwMjdmNDQxMTYxODE0Mi4uNjk0NTY0YWYzZTU5M2E2OTYxNzU4ZmFmZDcyYTdkNTA0
N2E2YWMzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9OYXZpZ2F0b3JFTUUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVk
bWVkaWEvTmF2aWdhdG9yRU1FLmNwcApAQCAtMzIsMzAgKzMyLDc0IEBACiAjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKIAogI2luY2x1ZGUgIkNETS5oIgorI2luY2x1ZGUgIkNETUxvZ2dpbmcu
aCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURlZmVycmVk
LmgiCiAjaW5jbHVkZSAiSlNNZWRpYUtleVN5c3RlbUFjY2Vzcy5oIgogI2luY2x1ZGUgIkxvZ2dp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK25hbWVzcGFjZSBX
VEYgeworCit0ZW1wbGF0ZTx0eXBlbmFtZT4KK3N0cnVjdCBMb2dBcmd1bWVudDsKKwordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBMb2dBcmd1bWVudDxWZWN0b3I8VD4+IHsKKyAgICBzdGF0
aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFZlY3RvcjxUPiYgdmFsdWUpCisgICAgeworICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCJbIik7Cisg
ICAgICAgIGZvciAoYXV0byBpdGVtIDogdmFsdWUpCisgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChMb2dBcmd1bWVudDxUPjo6dG9TdHJpbmcoaXRlbSkpOworICAgICAgICBidWlsZGVyLmFwcGVu
ZCgiXSIpOworICAgICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworICAgIH0KK307CisK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8T3B0aW9uYWw8VD4+IHsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IE9wdGlvbmFsPFQ+JiB2YWx1ZSkKKyAg
ICB7CisgICAgICAgIHJldHVybiB2YWx1ZSA/ICJudWxsb3B0Il9zIDogTG9nQXJndW1lbnQ8VD46
OnRvU3RyaW5nKHZhbHVlLnZhbHVlKCkpOworICAgIH0KK307CisKK30KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQ
dHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYm
KTsKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lubGluZSB2b2lkIGluZm9Mb2co
TG9nZ2VyJiBsb2dnZXIsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJndW1lbnRzKQoreworI2lmICFM
T0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAgbG9nZ2VyLmluZm8oTG9n
RU1FLCBhcmd1bWVudHMuLi4pOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obG9nZ2VyKTsKKyNl
bmRpZgorfQorCitzdGF0aWMgdm9pZCB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQ
dHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0
aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYm
LCBSZWY8TG9nZ2VyPiYmLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXImJik7CiAKLXZv
aWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MoTmF2aWdhdG9yJiwg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgVmVjdG9yPE1lZGlh
S2V5U3lzdGVtQ29uZmlndXJhdGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQordm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRp
YUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3ImIG5hdmlnYXRvciwgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgVmVjdG9yPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJh
dGlvbj4mJiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vdzNjLmdpdGh1Yi5pby9lbmNyeXB0ZWQtbWVkaWEv
I2RvbS1uYXZpZ2F0b3ItcmVxdWVzdG1lZGlha2V5c3lzdGVtYWNjZXNzCiAgICAgLy8gVzNDIEVk
aXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKLSAgICBMT0coRU1FLCAiRU1FIC0gcmVxdWVz
dCBtZWRpYSBrZXkgc3lzdGVtIGFjY2VzcyBmb3IgJXMiLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEo
KSk7CisgICAgYXV0byBpZGVudGlmaWVyID0gV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVy
KCJOYXZpZ2F0b3JFTUUiLCBfX2Z1bmNfXywgJm5hdmlnYXRvcik7CisgICAgUmVmPExvZ2dlcj4g
bG9nZ2VyID0gZG9jdW1lbnQubG9nZ2VyKCk7CisKKyAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRp
ZmllciwgImtleVN5c3RlbSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9u
cygiLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucywgIikiKTsKIAogICAgIC8vIFdoZW4gdGhpcyBt
ZXRob2QgaXMgaW52b2tlZCwgdGhlIHVzZXIgYWdlbnQgbXVzdCBydW4gdGhlIGZvbGxvd2luZyBz
dGVwczoKICAgICAvLyAxLiBJZiBrZXlTeXN0ZW0gaXMgdGhlIGVtcHR5IHN0cmluZywgcmV0dXJu
IGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAg
Ly8gMi4gSWYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMgaXMgZW1wdHksIHJldHVybiBhIHByb21p
c2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmIChrZXlT
eXN0ZW0uaXNFbXB0eSgpIHx8IHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmlzRW1wdHkoKSkgewor
ICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBrZXlT
eXN0ZW0oIiwga2V5U3lzdGVtLmlzRW1wdHkoKSwgIikgb3IgZW1wdHkgc3VwcG9ydGVkQ29uZmln
dXJhdGlvbnMoIiwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpLCAiKSIpOwogICAg
ICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGRvY3VtZW50LnBvc3RUYXNrKFtrZXlTeXN0ZW0sIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCAmZG9jdW1lbnRdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgbXV0YWJsZSB7
CisgICAgZG9jdW1lbnQucG9zdFRhc2soW2tleVN5c3RlbSwgc3VwcG9ydGVkQ29uZmlndXJhdGlv
bnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksICZkb2N1bWVudCwgbG9nZ2VyID0gV1RGTW92ZShsb2dnZXIpLCBpZGVudGlmaWVy
ID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKICAgICAgICAgLy8gMy4gTGV0IGRvY3VtZW50IGJlIHRoZSBjYWxsaW5nIGNvbnRleHQncyBE
b2N1bWVudC4KICAgICAgICAgLy8gNC4gTGV0IG9yaWdpbiBiZSB0aGUgb3JpZ2luIG9mIGRvY3Vt
ZW50LgogICAgICAgICAvLyA1LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgpAQCAtNjMs
MTggKzEwNywxOCBAQCB2b2lkIE5hdmlnYXRvckVNRTo6cmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNj
ZXNzKE5hdmlnYXRvciYsIERvY3VtZW50JiBkb2N1bWVudCwgYwogICAgICAgICAvLyA2LjEuIElm
IGtleVN5c3RlbSBpcyBub3Qgb25lIG9mIHRoZSBLZXkgU3lzdGVtcyBzdXBwb3J0ZWQgYnkgdGhl
IHVzZXIgYWdlbnQsIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvci4KICAg
ICAgICAgLy8gICAgICBTdHJpbmcgY29tcGFyaXNvbiBpcyBjYXNlLXNlbnNpdGl2ZS4KICAgICAg
ICAgaWYgKCFDRE06OnN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSkpIHsKLSAgICAgICAgICAg
IExPRyhFTUUsICJFTUUgLSAlcyBpcyBub3Qgc3VwcG9ydGVkIiwga2V5U3lzdGVtLnV0ZjgoKS5k
YXRhKCkpOworICAgICAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZWplY3Rl
ZDoga2V5U3lzdGVtKCIsIGtleVN5c3RlbSwgIikgbm90IHN1cHBvcnRlZCIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDYuMi4gTGV0IGltcGxlbWVudGF0aW9uIGJlIHRo
ZSBpbXBsZW1lbnRhdGlvbiBvZiBrZXlTeXN0ZW0uCiAgICAgICAgIGF1dG8gaW1wbGVtZW50YXRp
b24gPSBDRE06OmNyZWF0ZShkb2N1bWVudCwga2V5U3lzdGVtKTsKLSAgICAgICAgdHJ5TmV4dFN1
cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUoc3Vw
cG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICAgICAgdHJ5TmV4
dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRhdGlvbiksIFdURk1vdmUo
c3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2UpLCBXVEZNb3ZlKGxvZ2dl
ciksIFdURk1vdmUoaWRlbnRpZmllcikpOwogICAgIH0pOwogfQogCi1zdGF0aWMgdm9pZCB0cnlO
ZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBW
ZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCitzdGF0aWMgdm9pZCB0cnlO
ZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihSZWZQdHI8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBW
ZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zLCBSZWZQdHI8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIFJlZjxMb2dnZXI+JiYgbG9n
Z2VyLCBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXImJiBpZGVudGlmaWVyKQogewogICAg
IC8vIDYuMy4gRm9yIGVhY2ggdmFsdWUgaW4gc3VwcG9ydGVkQ29uZmlndXJhdGlvbnM6CiAgICAg
aWYgKCFzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0VtcHR5KCkpIHsKQEAgLTg0LDcgKzEyOCw3
IEBAIHN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+
JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNCiAgICAgICAgIE1lZGlhS2V5U3lzdGVtQ29uZmln
dXJhdGlvbiBjYW5kaWRhdGVDb25maWd1cmF0aW9uID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1
cmF0aW9ucy5maXJzdCgpKTsKICAgICAgICAgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMucmVtb3Zl
KDApOwogCi0gICAgICAgIENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNrIGNhbGxi
YWNrID0gW2ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBvcnRlZENvbmZpZ3Vy
YXRpb25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2VdIChPcHRp
b25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZpZ3VyYXRpb24p
IG11dGFibGUgeworICAgICAgICBDRE06OlN1cHBvcnRlZENvbmZpZ3VyYXRpb25DYWxsYmFjayBj
YWxsYmFjayA9IFtpbXBsZW1lbnRhdGlvbiA9IGltcGxlbWVudGF0aW9uLCBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9ucyA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBwcm9taXNlLCBs
b2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoT3B0aW9uYWw8TWVkaWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiBzdXBwb3J0ZWRDb25maWd1
cmF0aW9uKSBtdXRhYmxlIHsKICAgICAgICAgICAgIC8vIDYuMy4zLiBJZiBzdXBwb3J0ZWQgY29u
ZmlndXJhdGlvbiBpcyBub3QgTm90U3VwcG9ydGVkLCBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICAgICAgICAgIGlmIChzdXBwb3J0ZWRDb25maWd1cmF0aW9uKSB7CiAgICAgICAgICAgICAg
ICAgLy8gNi4zLjMuMS4gTGV0IGFjY2VzcyBiZSBhIG5ldyBNZWRpYUtleVN5c3RlbUFjY2VzcyBv
YmplY3QsIGFuZCBpbml0aWFsaXplIGl0IGFzIGZvbGxvd3M6CkBAIC05NywxOCArMTQxLDE5IEBA
IHN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYg
aW1wbGVtZW50YXRpb24sIFZlY3RvcjxNCiAgICAgICAgICAgICAgICAgYXV0byBhY2Nlc3MgPSBN
ZWRpYUtleVN5c3RlbUFjY2Vzczo6Y3JlYXRlKGtleVN5c3RlbSwgV1RGTW92ZShzdXBwb3J0ZWRD
b25maWd1cmF0aW9uLnZhbHVlKCkpLCBpbXBsZW1lbnRhdGlvbi5yZWxlYXNlTm9uTnVsbCgpKTsK
IAogICAgICAgICAgICAgICAgIC8vIDYuMy4zLjIuIFJlc29sdmUgcHJvbWlzZSB3aXRoIGFjY2Vz
cyBhbmQgYWJvcnQgdGhlIHBhcmFsbGVsIHN0ZXBzIG9mIHRoaXMgYWxnb3JpdGhtLgorICAgICAg
ICAgICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiUmVzb2x2ZWQ6IGtleVN5c3Rl
bSgiLCBrZXlTeXN0ZW0sICIpLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9uKCIsIHN1cHBvcnRlZENv
bmZpZ3VyYXRpb24sICIpIik7CiAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhO
ZXdseUNyZWF0ZWQ8SURMSW50ZXJmYWNlPE1lZGlhS2V5U3lzdGVtQWNjZXNzPj4oV1RGTW92ZShh
Y2Nlc3MpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKLSAgICAg
ICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1wbGVtZW50YXRp
b24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7
CisgICAgICAgICAgICB0cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGltcGxl
bWVudGF0aW9uKSwgV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIFdURk1vdmUocHJv
bWlzZSksIFdURk1vdmUobG9nZ2VyKSwgV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgICAgIH07
CiAgICAgICAgIGltcGxlbWVudGF0aW9uLT5nZXRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1v
dmUoY2FuZGlkYXRlQ29uZmlndXJhdGlvbiksIFdURk1vdmUoY2FsbGJhY2spKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotCiAgICAgLy8gNi40LiBSZWplY3QgcHJvbWlzZSB3aXRoIGEgTm90
U3VwcG9ydGVkRXJyb3IuCisgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZWplY3Rl
ZDogZW1wdHkgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMiKTsKICAgICBwcm9taXNlLT5yZWplY3Qo
Tm90U3VwcG9ydGVkRXJyb3IpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGFjYWU2ZmUzOGRkZTI2
YzI4Y2Y1ZDQ0OTExZmM1YWMzMGIyNTg2NzQuLjM4ZjUyNmIxZDc4ZWMyMTAyNGMxODdkZTI5NmYw
ZTFlZGUzNDJhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC0xODIwLDYgKzE4MjAsNyBAQCBwbGF0Zm9y
bS9hdWRpby9WZWN0b3JNYXRoLmNwcAogcGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3BwCiAKIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUZhY3RvcnkuY3BwCitwbGF0Zm9ybS9lbmNyeXB0ZWRt
ZWRpYS9DRE1Mb2dnaW5nLmNwcAogCiBwbGF0Zm9ybS9ncmFwaGljcy9BTkdMRVdlYktpdEJyaWRn
ZS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGQ0ZmIwZDM2ODJi
ZWNiNWQ0MjgwYTdmZmYyNmJjYjVkZGEwOTYyODUuLjU1NDE1ZTFjN2YxYmQ5YTFhN2RiZjFkOTQ1
ZTljYzcxNDg1MmZhMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTQxMDIsNiArNDEwMiw3IEBACiAJCUNEOEI1QTQ2MTgwREZG
NEUwMDhCOEU2NSAvKiBWaWRlb1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEI1QTQ1MTgwREZGNEUwMDhCOEU2NSAvKiBW
aWRlb1RyYWNrTWVkaWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0Q4QjVBNDkxODBFMTM4QjAwOEI4RTY1
IC8qIFRleHRUcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0ODE4MEUxMzhCMDA4QjhFNjUgLyogVGV4dFRyYWNrTWVk
aWFTb3VyY2UuaCAqLzsgfTsKIAkJQ0Q4QjVBNEMxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJh
Y2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0Q4QjVBNEIxODBFMTdDMDAwOEI4RTY1IC8qIEF1ZGlvVHJhY2tNZWRpYVNvdXJjZS5o
ICovOyB9OworCQlDRDhEMzA2RjIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4RDMwNkQyM0FENEZB
ODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLzsgfTsKIAkJQ0Q5MkY1MTMyMjYwRkZFRTAwRjg3
QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0Q5MkY1MTAyMjYwRkZFRTAwRjg3QkIzIC8qIERvY3VtZW50RnVs
bHNjcmVlbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNEOTJGNTE4MjI2MTAzODIwMEY4N0JCMyAvKiBGdWxsc2NyZWVuTWFuYWdlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q5MkY1MTYyMjYxMDM4
MjAwRjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0Q5NEE1REQxRjcxRDVEODAwRjUyNUM1IC8qIENE
TUNsZWFyS2V5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEOTRBNURCMUY3MUNCQjAwMEY1MjVDNSAvKiBDRE1DbGVhcktleS5jcHAgKi87IH07CkBA
IC0xMzg4MSw2ICsxMzg4Miw4IEBACiAJCUNEOEM2QzI3MjJGRERBOTAwMEE3MjBBQiAvKiBKU1Jl
bW90ZVBsYXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0Q4QzZDMjgyMkZEREE5MDAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJh
Y2tBdmFpbGFiaWxpdHlDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1JlbW90ZVBsYXliYWNr
QXZhaWxhYmlsaXR5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q4
QzZDMjkyMkZEREE5MTAwQTcyMEFCIC8qIEpTUmVtb3RlUGxheWJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNSZW1vdGVQbGF5YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhE
MzA2RDIzQUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDRE1M
b2dnaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEOEQzMDZFMjNBRDRGQTgw
MDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENETUxvZ2dpbmcu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDkyRjUwRjIyNjBGRkVFMDBGODdC
QjMgLyogRG9jdW1lbnRGdWxsc2NyZWVuLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEb2N1bWVudEZ1bGxzY3JlZW4uaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDkyRjUxMDIyNjBGRkVFMDBGODdCQjMg
LyogRG9jdW1lbnRGdWxsc2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RnVsbHNjcmVl
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRDkyRjUxNjIyNjEwMzgyMDBGODdC
QjMgLyogRnVsbHNjcmVlbk1hbmFnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnVsbHNjcmVlbk1hbmFn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI2Mjg0LDYgKzI2Mjg3LDggQEAK
IAkJCQlDRDk0QTVDQzFGNzFDQjY5MDBGNTI1QzUgLyogQ0RNUmVxdWlyZW1lbnQuaCAqLywKIAkJ
CQlDRDk0QTVEMDFGNzFDQjZCMDBGNTI1QzUgLyogQ0RNUmVzdHJpY3Rpb25zLmggKi8sCiAJCQkJ
Q0Q5NEE1RDUxRjcxQ0I2RDAwRjUyNUM1IC8qIENETVNlc3Npb25UeXBlLmggKi8sCisJCQkJQ0Q4
RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLywKKwkJCQlDRDhEMzA2RTIz
QUQ0RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGVu
Y3J5cHRlZG1lZGlhOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTMwMzIxLDYgKzMw
MzI2LDcgQEAKIAkJCQkwN0U5RTEyRTE4RjVFMjc2MDAxMUEzQTQgLyogSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk0MTc5MjE2NkU4NTVG
MDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrLmggaW4gSGVhZGVycyAqLywKIAkJCQkwNzk0MTc5
NDE2NkVBMDRFMDA5NDE2QzIgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0Q4RDMwNkYyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3QjQ0MkQ3MTY2QzcwQjAwMDU1NkNBRCAvKiBJbmJhbmRUZXh0VHJhY2tQ
cml2YXRlQVZGLmggaW4gSGVhZGVycyAqLywKIAkJCQkwN0FBNkI2QzE2NkQyQzEzMDBENDU2NzEg
LyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUFWRk9iakMuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3
Q0U3N0Q1MTY3MTJBNkEwMEM1NUE0NyAvKiBJbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5
cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlw
dGVkbWVkaWEvQ0RNTG9nZ2luZy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTgyMzBlNDM2ZWNiZmZiNjU1Yjg3
ZTNkY2QwNTM5MmY3NWVlOWY5NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCkBAIC0wLDAgKzEsMTU3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNETUxvZ2dpbmcuaCIK
KworI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUEpCisKKyNpbmNsdWRlICJDRE1LZXlTeXN0ZW1D
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiQ0RNTWVkaWFDYXBhYmlsaXR5LmgiCisjaW5jbHVk
ZSAiQ0RNUmVzdHJpY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleUVuY3J5cHRpb25TY2hl
bWUuaCIKKyNpbmNsdWRlICJKU01lZGlhS2V5TWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiSlNN
ZWRpYUtleVNlc3Npb25UeXBlLmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleVN0YXR1c01hcC5oIgor
I2luY2x1ZGUgIkpTTWVkaWFLZXlzUmVxdWlyZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvSlNPTlZh
bHVlcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBSZWY8SlNPTjo6T2JqZWN0
PiB0b0pTT05PYmplY3QoY29uc3QgQ0RNTWVkaWFDYXBhYmlsaXR5JiBjYXBhYmlsaXR5KQorewor
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAgICBvYmplY3QtPnNl
dFN0cmluZygiY29udGVudFR5cGUiX3MsIGNhcGFiaWxpdHkuY29udGVudFR5cGUpOworICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJyb2J1c3RuZXNzIl9zLCBjYXBhYmlsaXR5LnJvYnVzdG5lc3MpOwor
ICAgIGlmIChjYXBhYmlsaXR5LmVuY3J5cHRpb25TY2hlbWUpCisgICAgICAgIG9iamVjdC0+c2V0
U3RyaW5nKCJlbmNyeXB0aW9uU2NoZW1lIl9zLCBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhj
YXBhYmlsaXR5LmVuY3J5cHRpb25TY2hlbWUudmFsdWUoKSkpOworICAgIHJldHVybiBvYmplY3Q7
Cit9CisKK3N0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiB0b0pTT05PYmplY3QoY29uc3QgQ0RNUmVz
dHJpY3Rpb25zJiByZXN0cmljdGlvbnMpCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmpl
Y3Q6OmNyZWF0ZSgpOworICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiZGlzdGluY3RpdmVJZGVudGlm
aWVyRGVuaWVkIl9zLCByZXN0cmljdGlvbnMuZGlzdGluY3RpdmVJZGVudGlmaWVyRGVuaWVkKTsK
KyAgICBvYmplY3QtPnNldEJvb2xlYW4oInBlcnNpc3RlbnRTdGF0ZURlbmllZCJfcywgcmVzdHJp
Y3Rpb25zLnBlcnNpc3RlbnRTdGF0ZURlbmllZCk7CisgICAgYXV0byBkZW5pZWRTZXNzaW9uVHlw
ZXMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRvIHR5cGUgOiByZXN0cmlj
dGlvbnMuZGVuaWVkU2Vzc2lvblR5cGVzKQorICAgICAgICBkZW5pZWRTZXNzaW9uVHlwZXMtPnB1
c2hTdHJpbmcoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSkpOworICAgIG9iamVjdC0+
c2V0QXJyYXkoImRlbmllZFNlc3Npb25UeXBlcyJfcywgV1RGTW92ZShkZW5pZWRTZXNzaW9uVHlw
ZXMpKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4g
dG9KU09OT2JqZWN0KGNvbnN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRp
b24pCit7CisgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOworICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJsYWJlbCJfcywgY29uZmlndXJhdGlvbi5sYWJlbCk7CisKKyAgICBh
dXRvIGluaXREYXRhVHlwZXMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRv
IGluaXREYXRhVHlwZSA6IGNvbmZpZ3VyYXRpb24uaW5pdERhdGFUeXBlcykKKyAgICAgICAgaW5p
dERhdGFUeXBlcy0+cHVzaFN0cmluZyhpbml0RGF0YVR5cGUpOworICAgIG9iamVjdC0+c2V0QXJy
YXkoImluaXREYXRhVHlwZXMiX3MsIFdURk1vdmUoaW5pdERhdGFUeXBlcykpOworCisgICAgYXV0
byBhdWRpb0NhcGFiaWxpdGllcyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1
dG8gY2FwYWJpbGl0eSA6IGNvbmZpZ3VyYXRpb24uYXVkaW9DYXBhYmlsaXRpZXMpCisgICAgICAg
IGF1ZGlvQ2FwYWJpbGl0aWVzLT5wdXNoT2JqZWN0KHRvSlNPTk9iamVjdChjYXBhYmlsaXR5KSk7
CisgICAgb2JqZWN0LT5zZXRBcnJheSgiYXVkaW9DYXBhYmlsaXRpZXMiX3MsIFdURk1vdmUoYXVk
aW9DYXBhYmlsaXRpZXMpKTsKKworICAgIGF1dG8gdmlkZW9DYXBhYmlsaXRpZXMgPSBKU09OOjpB
cnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRvIGNhcGFiaWxpdHkgOiBjb25maWd1cmF0aW9u
LnZpZGVvQ2FwYWJpbGl0aWVzKQorICAgICAgICB2aWRlb0NhcGFiaWxpdGllcy0+cHVzaE9iamVj
dCh0b0pTT05PYmplY3QoY2FwYWJpbGl0eSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoInZpZGVv
Q2FwYWJpbGl0aWVzIl9zLCBXVEZNb3ZlKHZpZGVvQ2FwYWJpbGl0aWVzKSk7CisKKyAgICBvYmpl
Y3QtPnNldFN0cmluZygiZGlzdGluY3RpdmVJZGVudGlmaWVyIl9zLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhjb25maWd1cmF0aW9uLmRpc3RpbmN0aXZlSWRlbnRpZmllcikpOworICAgIG9i
amVjdC0+c2V0U3RyaW5nKCJwZXJzaXN0ZW50U3RhdGUiX3MsIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKGNvbmZpZ3VyYXRpb24ucGVyc2lzdGVudFN0YXRlKSk7CisKKyAgICBhdXRvIHNlc3Np
b25UeXBlcyA9IEpTT046OkFycmF5OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8gdHlwZSA6IGNv
bmZpZ3VyYXRpb24uc2Vzc2lvblR5cGVzKQorICAgICAgICBzZXNzaW9uVHlwZXMtPnB1c2hTdHJp
bmcoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSkpOworICAgIG9iamVjdC0+c2V0QXJy
YXkoInNlc3Npb25UeXBlcyJfcywgV1RGTW92ZShzZXNzaW9uVHlwZXMpKTsKKworICAgIHJldHVy
biBvYmplY3Q7Cit9CisKK3N0YXRpYyBTdHJpbmcgdG9KU09OU3RyaW5nKGNvbnN0IENETUtleVN5
c3RlbUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24pCit7CisgICAgcmV0dXJuIHRvSlNPTk9i
amVjdChjb25maWd1cmF0aW9uKS0+dG9KU09OU3RyaW5nKCk7Cit9CisKK3N0YXRpYyBTdHJpbmcg
dG9KU09OU3RyaW5nKGNvbnN0IENETU1lZGlhQ2FwYWJpbGl0eSYgY2FwYWJpbGl0eSkKK3sKKyAg
ICByZXR1cm4gdG9KU09OT2JqZWN0KGNhcGFiaWxpdHkpLT50b0pTT05TdHJpbmcoKTsKK30KKwor
c3RhdGljIFN0cmluZyB0b0pTT05TdHJpbmcoY29uc3QgQ0RNUmVzdHJpY3Rpb25zJiByZXN0cmlj
dGlvbnMpCit7CisgICAgcmV0dXJuIHRvSlNPTk9iamVjdChyZXN0cmljdGlvbnMpLT50b0pTT05T
dHJpbmcoKTsKK30KKworfQorCituYW1lc3BhY2UgV1RGIHsKKworU3RyaW5nIExvZ0FyZ3VtZW50
PFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+Ojp0b1N0cmluZyhjb25zdCBXZWJD
b3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIHJl
dHVybiB0b0pTT05TdHJpbmcoY29uZmlndXJhdGlvbik7Cit9CisKK1N0cmluZyBMb2dBcmd1bWVu
dDxXZWJDb3JlOjpDRE1NZWRpYUNhcGFiaWxpdHk+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpD
RE1NZWRpYUNhcGFiaWxpdHkmIGNhcGFiaWxpdHkpCit7CisgICAgcmV0dXJuIHRvSlNPTlN0cmlu
ZyhjYXBhYmlsaXR5KTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVJlc3Ry
aWN0aW9ucz46OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETVJlc3RyaWN0aW9ucyYgcmVzdHJp
Y3Rpb25zKQoreworICAgIHJldHVybiB0b0pTT05TdHJpbmcocmVzdHJpY3Rpb25zKTsKK30KKwor
U3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETUVuY3J5cHRpb25TY2hlbWU+Ojp0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lJiB0eXBlKQoreworICAgIHJldHVy
biBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OkNETUtleVN0YXR1cz46OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN0YXR1cyYgdHlwZSkKK3sKKyAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
dHlwZSk7Cit9CisKK1N0cmluZyBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT46
OnRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETU1lc3NhZ2VUeXBlJiB0eXBlKQoreworICAgIHJl
dHVybiBjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0Fy
Z3VtZW50PFdlYkNvcmU6OkNETVJlcXVpcmVtZW50Pjo6dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6
Q0RNUmVxdWlyZW1lbnQmIHR5cGUpCit7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRv
U3RyaW5nKHR5cGUpOworfQorCitTdHJpbmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNU2Vzc2lv
blR5cGU+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYgdHlwZSkKK3sK
KyAgICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTE5MjQ3
NmRjYTY4MWEyZjczYjBjNGJlMzc1ZGQ3YzBjMGMxYmVmZQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuaApAQCAtMCww
ICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RydWN0IENETUtleVN5c3RlbUNvbmZpZ3VyYXRpb247CitzdHJ1Y3Qg
Q0RNTWVkaWFDYXBhYmlsaXR5Oworc3RydWN0IENETVJlc3RyaWN0aW9uczsKKworZW51bSBjbGFz
cyBDRE1FbmNyeXB0aW9uU2NoZW1lOworZW51bSBjbGFzcyBDRE1LZXlTdGF0dXM7CitlbnVtIGNs
YXNzIENETU1lc3NhZ2VUeXBlOworZW51bSBjbGFzcyBDRE1SZXF1aXJlbWVudDsKK2VudW0gY2xh
c3MgQ0RNU2Vzc2lvblR5cGU7CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5
cGVuYW1lPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0Fy
Z3VtZW50PFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IHsKKyAgICBzdGF0aWMg
U3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24m
KTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNTWVk
aWFDYXBhYmlsaXR5PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3Jl
OjpDRE1NZWRpYUNhcGFiaWxpdHkmKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKTsKK307CisKK3RlbXBsYXRlIDw+
CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT4geworICAg
IHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVt
ZSYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1L
ZXlTdGF0dXM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNE
TUtleVN0YXR1cyYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJD
b3JlOjpDRE1NZXNzYWdlVHlwZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qg
V2ViQ29yZTo6Q0RNTWVzc2FnZVR5cGUmKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9n
QXJndW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50Jik7Cit9OworCit0ZW1wbGF0ZSA8
Pgorc3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNlc3Npb25UeXBlPiB7CisgICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYpOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQcm92
aWRlckNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2xpYndl
YnJ0Yy9MaWJXZWJSVENQcm92aWRlckNvY29hLmNwcAppbmRleCA1ODEwYTBhZjNkNzY2OWUwZWQ3
NWNmZWFmYmQ5OGRiYWFlMTdjZDYyLi5kMTQ2MTA3OWM0YmRkODc1ZTI5YzAxMWU2Yzc0MDFjMDVk
NjZlNzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUHJvdmlkZXJDb2NvYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3Bw
CkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaWYgVVNFKExJQldFQlJUQykKIAorQUxMT1dfVU5VU0VE
X1BBUkFNRVRFUlNfQkVHSU4KICNpbmNsdWRlIDx3ZWJydGMvc2RrL1dlYktpdC9XZWJLaXRVdGls
aXRpZXMuaD4KK0FMTE9XX1VOVVNFRF9QQVJBTUVURVJTX0VORAorCiAjaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvZGFyd2luL1dlYWtMaW5raW5nLmg+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>393156</attachid>
            <date>2020-03-10 09:22:07 -0700</date>
            <delta_ts>2020-03-10 11:25:38 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-205519-20200310092206.patch</filename>
            <type>text/plain</type>
            <size>61656</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU4MTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2EyYzZiNzJmYjY5NThm
ZTk5MThhYjdhNjQ0NWI0ODE1MGYzNmYxOC4uZWYxZTFjNzc4NjdkYjA3N2Y1YmYzYjdjOWIzZWI3
OTRiN2VlZmVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTAzLTA5ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5nIGZvciBN
b2Rlcm4gRU1FIG1ldGhvZHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDU1MTkKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCisK
KyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246Ok1lZGlhS2V5U2Vzc2lvbik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUtleVNlc3Npb246OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9u
Ojp1cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFLZXlTZXNzaW9uOjpjbG9zZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYUtleVNlc3Npb246OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUtleVNlc3Npb246OnNlc3Npb25DbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFLZXlTZXNzaW9uOjpsb2dDaGFubmVsIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL2Vu
Y3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oOgorICAgICAgICAqIE1vZHVsZXMvZW5jcnlw
dGVkbWVkaWEvTWVkaWFLZXlzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhS2V5czo6Y3Jl
YXRlU2Vzc2lvbik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUtleXM6OnNldFNlcnZlckNlcnRp
ZmljYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5oOgor
ICAgICAgICAqIE1vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmlkbDoKKyAgICAgICAg
KiBNb2R1bGVzL2VuY3J5cHRlZG1lZGlhL05hdmlnYXRvckVNRS5jcHA6CisgICAgICAgIChXVEY6
OkxvZ0FyZ3VtZW50PFZlY3RvcjxUPj46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8T3B0aW9uYWw8VD4+Ojp0b1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2Vzcyk6CisgICAgICAgIChXZWJDb3JlOjp0
cnlOZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbik6CisgICAgICAgICogU291cmNlcy50eHQ6Cisg
ICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHBs
YXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnRvSlNPTk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjp0b0pTT05TdHJpbmcpOgor
ICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0
aW9uPjo6dG9TdHJpbmcpOgorICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1N
ZWRpYUNhcGFiaWxpdHk+Ojp0b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdl
YkNvcmU6OkNETVJlc3RyaWN0aW9ucz46OnRvU3RyaW5nKToKKyAgICAgICAgKFdURjo6TG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT46OnRvU3RyaW5nKToKKyAgICAgICAg
KFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNS2V5U3RhdHVzPjo6dG9TdHJpbmcpOgorICAg
ICAgICAoV1RGOjpMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZT46OnRvU3RyaW5n
KToKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+Ojp0
b1N0cmluZyk6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNlc3Npb25U
eXBlPjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2VuY3J5cHRlZG1lZGlhL0NETUxv
Z2dpbmcuaDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1Byb3ZpZGVyQ29jb2EuY3BwOgorCiAyMDIwLTAzLTA3ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBCZWdpbiBtb3Zpbmcgb2ZmIG9mIGxpdmUgcmFu
Z2VzIGZvciBXZWJLaXQgaW50ZXJuYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5jcHAKaW5kZXggMjlmYWI0OTkw
NjgyNTgzMmE1YWRkZDk5YTgwZThmMzRkOGQzMDhkNy4uODlmMGU3MDU1MGU5MWU2OTZkNTliNzk3
OTE5ZTA5YmZhMjE3MmU1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmNwcApAQCAtNDksMjAgKzQ5LDIyIEBA
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNs
dWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9Mb2dnZXJIZWxwZXIu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwo
TWVkaWFLZXlTZXNzaW9uKTsKIAotUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVkaWFLZXlTZXNzaW9u
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV2Vha1B0cjxNZWRpYUtl
eXM+JiYga2V5cywgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSwgYm9vbCB1c2VEaXN0
aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFJlZjxDRE1JbnN0
YW5jZVNlc3Npb24+JiYgaW5zdGFuY2VTZXNzaW9uKQorUmVmPE1lZGlhS2V5U2Vzc2lvbj4gTWVk
aWFLZXlTZXNzaW9uOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWFrUHRyPE1lZGlhS2V5
cz4mJiBrZXlzLCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlLCBib29sIHVzZURpc3Rp
bmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3Rh
bmNlU2Vzc2lvbj4mJiBpbnN0YW5jZVNlc3Npb24pCiB7Ci0gICAgYXV0byBzZXNzaW9uID0gYWRv
cHRSZWYoKm5ldyBNZWRpYUtleVNlc3Npb24oY29udGV4dCwgV1RGTW92ZShrZXlzKSwgc2Vzc2lv
blR5cGUsIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgV1RGTW92ZShpbXBsZW1lbnRhdGlvbiks
IFdURk1vdmUoaW5zdGFuY2VTZXNzaW9uKSkpOworICAgIGF1dG8gc2Vzc2lvbiA9IGFkb3B0UmVm
KCpuZXcgTWVkaWFLZXlTZXNzaW9uKGRvY3VtZW50LCBXVEZNb3ZlKGtleXMpLCBzZXNzaW9uVHlw
ZSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RG
TW92ZShpbnN0YW5jZVNlc3Npb24pKSk7CiAgICAgc2Vzc2lvbi0+c3VzcGVuZElmTmVlZGVkKCk7
CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLU1lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdlYWtQdHI8TWVkaWFLZXlzPiYm
IGtleXMsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBSZWY8Q0RNPiYmIGltcGxlbWVudGF0aW9uLCBSZWY8Q0RNSW5zdGFuY2VT
ZXNzaW9uPiYmIGluc3RhbmNlU2Vzc2lvbikKLSAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4
dCkKK01lZGlhS2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVudCwg
V2Vha1B0cjxNZWRpYUtleXM+JiYga2V5cywgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlw
ZSwgYm9vbCB1c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIsIFJlZjxDRE0+JiYgaW1wbGVtZW50YXRp
b24sIFJlZjxDRE1JbnN0YW5jZVNlc3Npb24+JiYgaW5zdGFuY2VTZXNzaW9uKQorICAgIDogQWN0
aXZlRE9NT2JqZWN0KCZkb2N1bWVudCkKKyAgICAsIG1fbG9nZ2VyKGRvY3VtZW50LmxvZ2dlcigp
KQogICAgICwgbV9rZXlzKFdURk1vdmUoa2V5cykpCiAgICAgLCBtX2V4cGlyYXRpb24oc3RkOjpu
dW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSkKICAgICAsIG1fY2xvc2VkUHJvbWlz
ZShtYWtlVW5pcXVlUmVmPENsb3NlZFByb21pc2U+KCkpCkBAIC03Niw3ICs3OCw3IEBAIE1lZGlh
S2V5U2Vzc2lvbjo6TWVkaWFLZXlTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIFdlYWtQdHI8TWVkaWFLCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVy
IDIwMTYKICAgICAvLyBjcmVhdGVTZXNzaW9uKCksIGN0ZC4KIAotICAgIExPRyhFTUUsICJFTUUg
LSBuZXcgc2Vzc2lvbiBjcmVhdGVkIik7CisgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInNl
c3Npb25UeXBlKCIsIHNlc3Npb25UeXBlLCAiKSwgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKCIs
IHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgIikiKTsKIAogICAgIC8vIDMuMS4gTGV0IHRoZSBz
ZXNzaW9uSWQgYXR0cmlidXRlIGJlIHRoZSBlbXB0eSBzdHJpbmcuCiAgICAgLy8gMy4yLiBMZXQg
dGhlIGV4cGlyYXRpb24gYXR0cmlidXRlIGJlIE5hTi4KQEAgLTEyOCw5ICsxMzAsMTEgQEAgdm9p
ZCBNZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0
RGF0YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQs
IHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4g
SWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGgg
YW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyB1bmluaXRp
YWxpemVkIHZhbHVlIGlzIGZhbHNlLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4g
SW52YWxpZFN0YXRlRXJyb3IuCi0gICAgTE9HKEVNRSwgIkVNRSAtIGdlbmVyYXRlIHJlcXVlc3Qi
KTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlk
ZW50aWZpZXIsICJpbml0RGF0YVR5cGUoIiwgaW5pdERhdGFUeXBlLCAiKSwgaW5pdERhdGEubGVu
Z3RoKCIsIGluaXREYXRhLmxlbmd0aCgpLCAiKSIpOwogCiAgICAgaWYgKG1fY2xvc2VkIHx8ICFt
X3VuaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVk
OiBjbG9zZWQoIiwgbV9jbG9zZWQsICIpIG9yICF1bmluaXRpYWxpemVkKCIsICFtX3VuaW5pdGlh
bGl6ZWQsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChJbnZhbGlkU3RhdGVFcnJvcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNDEsNiArMTQ1LDcgQEAgdm9pZCBNZWRpYUtl
eVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0YVR5cGUs
IGNvbnN0IEJ1ZmYKICAgICAvLyA0LiBJZiBpbml0RGF0YVR5cGUgaXMgdGhlIGVtcHR5IHN0cmlu
ZywgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJy
b3IuCiAgICAgLy8gNS4gSWYgaW5pdERhdGEgaXMgYW4gZW1wdHkgYXJyYXksIHJldHVybiBhIHBy
b21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAgIGlmIChp
bml0RGF0YVR5cGUuaXNFbXB0eSgpIHx8ICFpbml0RGF0YS5sZW5ndGgoKSkgeworICAgICAgICBJ
TkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGluaXREYXRhVHlwZSBlbXB0eSgiLCBpbml0
RGF0YVR5cGUuaXNFbXB0eSgpLCAiKSBvciBpbml0RGF0YSBlbXB0eSgiLCAhaW5pdERhdGEubGVu
Z3RoKCksICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMTQ5LDYgKzE1NCw3IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9u
OjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBC
dWZmCiAgICAgLy8gICAgaW5pdERhdGFUeXBlIGFzIGFuIEluaXRpYWxpemF0aW9uIERhdGEgVHlw
ZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGEgTm90U3VwcG9ydGVkRXJyb3IuIFN0
cmluZwogICAgIC8vICAgIGNvbXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCiAgICAgaWYgKCFt
X2ltcGxlbWVudGF0aW9uLT5zdXBwb3J0c0luaXREYXRhVHlwZShpbml0RGF0YVR5cGUpKSB7Cisg
ICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogaW5pdERhdGFUeXBlKCIsIGlu
aXREYXRhVHlwZSwgIikgdW5zdXBwb3J0ZWQiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5v
dFN1cHBvcnRlZEVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1NywxOSArMTYz
LDIxIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0
cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgLy8gOC4gTGV0IHNlc3Npb24gdHlw
ZSBiZSB0aGlzIG9iamVjdCdzIHNlc3Npb24gdHlwZS4KICAgICAvLyA5LiBMZXQgcHJvbWlzZSBi
ZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDEwLiBSdW4gdGhlIGZvbGxvd2luZyBzdGVwcyBpbiBw
YXJhbGxlbDoKLSAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3Vy
Y2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBpbml0RGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGlu
aXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkpLCBpbml0RGF0YVR5cGUsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2Jq
ZWN0QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBpbml0RGF0YSA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGluaXREYXRhLmRhdGEoKSwgaW5pdERhdGEubGVuZ3RoKCkp
LCBpbml0RGF0YVR5cGUsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0g
V1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDEwLjEuIElmIHRo
ZSBpbml0IGRhdGEgaXMgbm90IHZhbGlkIGZvciBpbml0RGF0YVR5cGUsIHJlamVjdCBwcm9taXNl
IHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAgLy8gMTAuMi4gTGV0IHNh
bml0aXplZCBpbml0IGRhdGEgYmUgYSB2YWxpZGF0ZWQgYW5kIHNhbml0aXplZCB2ZXJzaW9uIG9m
IGluaXQgZGF0YS4KICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gc2FuaXRpemVkSW5pdERh
dGEgPSBtX2ltcGxlbWVudGF0aW9uLT5zYW5pdGl6ZUluaXREYXRhKGluaXREYXRhVHlwZSwgaW5p
dERhdGEpOwogCiAgICAgICAgIC8vIDEwLjMuIElmIHRoZSBwcmVjZWRpbmcgc3RlcCBmYWlsZWQs
IHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAgICAg
aWYgKCFzYW5pdGl6ZWRJbml0RGF0YSkgeworICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmll
ciwgIjo6dGFzaygpIFJlamVjdGVkOiBjYW5ub3Qgc2FuaXRpemUgaW5pdCBkYXRhIik7CiAgICAg
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIDEwLjQuIElmIHNhbml0aXplZCBpbml0IGRhdGEgaXMg
ZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBOb3RTdXBwb3J0ZWRFcnJvci4KICAgICAgICAg
aWYgKHNhbml0aXplZEluaXREYXRhLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3RlZDogZW1wdHkgc2FuaXRpemVkIGluaXQgZGF0
YSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KE5vdFN1cHBvcnRlZEVycm9yKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTgxLDYgKzE4OSw3IEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29uc3QgQXRvbVN0cmluZyYgaW5pdERhdGFU
eXBlLCBjb25zdCBCdWZmCiAgICAgICAgIC8vIDEwLjkuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUg
dGhlIGZvbGxvd2luZyBzdGVwczoKICAgICAgICAgLy8gMTAuOS4xLiBJZiB0aGUgc2FuaXRpemVk
IGluaXQgZGF0YSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjZG0sIHJlamVjdCBwcm9taXNlIHdp
dGggYSBOb3RTdXBwb3J0ZWRFcnJvci4KICAgICAgICAgaWYgKCFtX2ltcGxlbWVudGF0aW9uLT5z
dXBwb3J0c0luaXREYXRhKGluaXREYXRhVHlwZSwgKnNhbml0aXplZEluaXREYXRhKSkgeworICAg
ICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiB1bnN1cHBv
cnRlZCBpbml0RGF0YVR5cGUgKCIsIGluaXREYXRhVHlwZSwgIikgb3Igc2FuaXRpemVkIGluaXRE
YXRhIik7CiAgICAgICAgICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMDQsOCArMjEzLDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgIG1fbGF0ZXN0RGVjcnlwdFRpbWUgPSAwOwog
ICAgICAgICB9CiAKLSAgICAgICAgTE9HKEVNRSwgIkVNRSAtIHJlcXVlc3QgbGljZW5zZSBmcm9t
IENETSBpbXBsZW1lbnRhdGlvbiIpOwotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVz
dExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERhdGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5y
ZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHBy
b21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBtZXNzYWdlLCBj
b25zdCBTdHJpbmcmIHNlc3Npb25JZCwgYm9vbCBuZWVkc0luZGl2aWR1YWxpemF0aW9uLCBDRE1J
bnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgeworICAgICAg
ICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVxdWVzdExpY2Vuc2UobV9zZXNzaW9uVHlwZSwgaW5pdERh
dGFUeXBlLCBzYW5pdGl6ZWRJbml0RGF0YS5yZWxlYXNlTm9uTnVsbCgpLCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVu
dGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKFJlZjxTaGFyZWRCdWZmZXI+JiYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIGJvb2wgbmVlZHNJbmRpdmlkdWFsaXphdGlvbiwg
Q0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFsdWUgc3VjY2VlZGVkKSBtdXRhYmxlIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0y
MjYsOSArMjM0LDEwIEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpnZW5lcmF0ZVJlcXVlc3QoY29u
c3QgQXRvbVN0cmluZyYgaW5pdERhdGFUeXBlLCBjb25zdCBCdWZmCiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIDEwLjEwLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRh
c2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIG1lc3NhZ2VUeXBlLCBzZXNzaW9uSWQsIHN1Y2Nl
ZWRlZF0gKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxp
dmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIG1lc3NhZ2VUeXBlLCBzZXNz
aW9uSWQsIHN1Y2NlZWRlZCwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11
dGFibGUgewogICAgICAgICAgICAgICAgIC8vIDEwLjEwLjEuIElmIGFueSBvZiB0aGUgcHJlY2Vk
aW5nIHN0ZXBzIGZhaWxlZCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIG5ldyBET01FeGNlcHRpb24g
d2hvc2UgbmFtZSBpcyB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgICAg
ICBpZiAoc3VjY2VlZGVkID09IENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWls
ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygp
IFJlamVjdGVkOiBmYWlsZWQgdG8gcmVxdWVzdCBsaWNlbnNlIik7CiAgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0yNDIsNiArMjUxLDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OmdlbmVyYXRlUmVxdWVzdChjb25zdCBBdG9tU3RyaW5nJiBpbml0RGF0
YVR5cGUsIGNvbnN0IEJ1ZmYKICAgICAgICAgICAgICAgICBlbnF1ZXVlTWVzc2FnZShtZXNzYWdl
VHlwZSwgbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAgICAvLyAxMC45LjMuIFJlc29sdmUgcHJv
bWlzZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVz
b2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgICAg
ICB9KTsKICAgICAgICAgfSk7CkBAIC0yNTUsOSArMjY1LDEzIEBAIHZvaWQgTWVkaWFLZXlTZXNz
aW9uOjpsb2FkKGNvbnN0IFN0cmluZyYgc2Vzc2lvbklkLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pCiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9t
LW1lZGlha2V5c2Vzc2lvbi1sb2FkCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVt
YmVyIDIwMTYKIAorICAgIGF1dG8gaWRlbnRpZmllciA9IExPR0lERU5USUZJRVI7CisgICAgSU5G
T19MT0coaWRlbnRpZmllciwgInNlc3Npb25JZCgiLCBzZXNzaW9uSWQsICIpIik7CisKICAgICAv
LyAxLiBJZiB0aGlzIG9iamVjdCBpcyBjbG9zZWQsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQg
d2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICAvLyAyLiBJZiB0aGlzIG9iamVjdCdzIHVu
aW5pdGlhbGl6ZWQgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBhIHByb21pc2UgcmVqZWN0ZWQgd2l0
aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAobV9jbG9zZWQgfHwgIW1fdW5pbml0aWFs
aXplZCkgeworICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGNsb3NlZCgi
LCBtX2Nsb3NlZCwgIikgb3IgIXVuaW5pdGlhbGl6ZWQoIiwgIW1fdW5pbml0aWFsaXplZCwgIiki
KTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTI2OCw2ICsyODIsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6
bG9hZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aQogICAgIC8vIDQuIElmIHNlc3Npb25JZCBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1cm4gYSBw
cm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICAvLyA1
LiBJZiB0aGUgcmVzdWx0IG9mIHJ1bm5pbmcgdGhlIElzIHBlcnNpc3RlbnQgc2Vzc2lvbiB0eXBl
PyBhbGdvcml0aG0gb24gdGhpcyBvYmplY3QncyBzZXNzaW9uIHR5cGUgaXMgZmFsc2UsIHJldHVy
biBhIHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIG5ld2x5IGNyZWF0ZWQgVHlwZUVycm9yLgogICAg
IGlmIChzZXNzaW9uSWQuaXNFbXB0eSgpIHx8IG1fc2Vzc2lvblR5cGUgPT0gTWVkaWFLZXlTZXNz
aW9uVHlwZTo6VGVtcG9yYXJ5KSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZWpl
Y3RlZDogc2Vzc2lvbklEIGVtcHR5KCIsIHNlc3Npb25JZC5pc0VtcHR5KCksICIpIG9yIHNlc3Np
b25UeXBlID09IFRlbXBvcmFyeSAoIiwgbV9zZXNzaW9uVHlwZSA9PSBNZWRpYUtleVNlc3Npb25U
eXBlOjpUZW1wb3JhcnksICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjc3LDExICsyOTIsMTIgQEAgdm9pZCBNZWRp
YUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWkKIAogICAgIC8vIDcuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2Uu
CiAgICAgLy8gOC4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0gICAgcXVl
dWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBb
dGhpcywgc2Vzc2lvbklkLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkgbXV0YWJsZSB7
CisgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3
b3JraW5nLCBbdGhpcywgc2Vzc2lvbklkLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRl
bnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAgICAvLyA4
LjEuIExldCBzYW5pdGl6ZWQgc2Vzc2lvbiBJRCBiZSBhIHZhbGlkYXRlZCBhbmQvb3Igc2FuaXRp
emVkIHZlcnNpb24gb2Ygc2Vzc2lvbklkLgogICAgICAgICAvLyA4LjIuIElmIHRoZSBwcmVjZWRp
bmcgc3RlcCBmYWlsZWQsIG9yIGlmIHNhbml0aXplZCBzZXNzaW9uIElEIGlzIGVtcHR5LCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgIE9wdGlv
bmFsPFN0cmluZz4gc2FuaXRpemVkU2Vzc2lvbklkID0gbV9pbXBsZW1lbnRhdGlvbi0+c2FuaXRp
emVTZXNzaW9uSWQoc2Vzc2lvbklkKTsKICAgICAgICAgaWYgKCFzYW5pdGl6ZWRTZXNzaW9uSWQg
fHwgc2FuaXRpemVkU2Vzc2lvbklkLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIElORk9fTE9H
KGlkZW50aWZpZXIsICJSZWplY3RlZDogc2FuaXRpemVkU1Nlc3Npb25JRCBlbXB0eSIpOwogICAg
ICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KQEAgLTI5OCw3ICszMTQsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9h
ZChjb25zdCBTdHJpbmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQog
ICAgICAgICAvLyA4LjYuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4KICAgICAgICAgLy8gOC43
LiBMZXQgY2RtIGJlIHRoZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3Qn
cyBjZG0gaW5zdGFuY2UgdmFsdWUuCiAgICAgICAgIC8vIDguOC4gVXNlIHRoZSBjZG0gdG8gZXhl
Y3V0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+bG9h
ZFNlc3Npb24obV9zZXNzaW9uVHlwZSwgKnNhbml0aXplZFNlc3Npb25JZCwgb3JpZ2luLCBbdGhp
cywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21p
c2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQgPSAqc2FuaXRpemVkU2Vzc2lvbklkXSAoT3B0aW9uYWw8
Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga25vd25LZXlzLCBPcHRpb25h
bDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNz
YWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRl
ZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFpbHVyZSkgbXV0YWJs
ZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT5sb2FkU2Vzc2lvbihtX3Nlc3Npb25UeXBl
LCAqc2FuaXRpemVkU2Vzc2lvbklkLCBvcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSksIHNhbml0aXplZFNlc3Npb25J
ZCA9ICpzYW5pdGl6ZWRTZXNzaW9uSWQsIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYga25vd25L
ZXlzLCBPcHRpb25hbDxkb3VibGU+JiYgZXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1Zh
bHVlIHN1Y2NlZWRlZCwgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmUgZmFp
bHVyZSkgbXV0YWJsZSB7CiAgICAgICAgICAgICAvLyA4LjguMS4gSWYgdGhlcmUgaXMgbm8gZGF0
YSBzdG9yZWQgZm9yIHRoZSBzYW5pdGl6ZWQgc2Vzc2lvbiBJRCBpbiB0aGUgb3JpZ2luLCByZXNv
bHZlIHByb21pc2Ugd2l0aCBmYWxzZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgICAgICAg
ICAvLyA4LjguMi4gSWYgdGhlIHN0b3JlZCBzZXNzaW9uJ3Mgc2Vzc2lvbiB0eXBlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBNZWRpYUtleVNlc3Npb24gc2Vzc2lvbiB0eXBlLCByZWpl
Y3QgcHJvbWlzZSB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgICAgICAgICAv
LyA4LjguMy4gTGV0IHNlc3Npb24gZGF0YSBiZSB0aGUgZGF0YSBzdG9yZWQgZm9yIHRoZSBzYW5p
dGl6ZWQgc2Vzc2lvbiBJRCBpbiB0aGUgb3JpZ2luLiBUaGlzIG11c3Qgbm90IGluY2x1ZGUgZGF0
YSBmcm9tIG90aGVyIG9yaWdpbihzKSBvciB0aGF0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW4g
b3JpZ2luLgpAQCAtMzEzLDEyICszMjksMTUgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQo
Y29uc3QgU3RyaW5nJiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAg
ICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNzVmFs
dWU6OkZhaWxlZCkgewogICAgICAgICAgICAgICAgIHN3aXRjaCAoZmFpbHVyZSkgewogICAgICAg
ICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9uTG9hZEZhaWx1cmU6Ok5v
U2Vzc2lvbkRhdGE6CisgICAgICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6
OnRhc2soKSBSZXNvbHZlZDogTm9TZXNzaW9uRGF0YSIpOwogICAgICAgICAgICAgICAgICAgICBw
cm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgICAgIGNhc2UgQ0RNSW5zdGFuY2VTZXNzaW9uOjpTZXNzaW9u
TG9hZEZhaWx1cmU6Ok1pc21hdGNoZWRTZXNzaW9uVHlwZToKKyAgICAgICAgICAgICAgICAgICAg
SU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBNaXNtYXRjaGVkU2Vzc2lv
blR5cGUiKTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVFcnJvcik7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICBjYXNlIENETUlu
c3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpRdW90YUV4Y2VlZGVkOgorICAgICAg
ICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVqZWN0ZWQ6IFF1
b3RhRXhjZWVkZWQiKTsKICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFF1b3Rh
RXhjZWVkZWRFcnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICBjYXNlIENETUluc3RhbmNlU2Vzc2lvbjo6U2Vzc2lvbkxvYWRGYWlsdXJlOjpOb25lOgpA
QCAtMzI5LDkgKzM0OCwxMCBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6bG9hZChjb25zdCBTdHJp
bmcmIHNlc3Npb25JZCwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taQogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICAvLyA4LjkuIFF1ZXVlIGEgdGFzayB0byBydW4gdGhlIGZvbGxvd2lu
ZyBzdGVwczoKLSAgICAgICAgICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywg
VGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIGtub3duS2V5cyA9IFdURk1vdmUoa25vd25L
ZXlzKSwgZXhwaXJhdGlvbiA9IFdURk1vdmUoZXhwaXJhdGlvbiksIG1lc3NhZ2UgPSBXVEZNb3Zl
KG1lc3NhZ2UpLCBzYW5pdGl6ZWRTZXNzaW9uSWQsIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09i
amVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywga25vd25LZXlz
ID0gV1RGTW92ZShrbm93bktleXMpLCBleHBpcmF0aW9uID0gV1RGTW92ZShleHBpcmF0aW9uKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNhbml0aXplZFNlc3Npb25JZCwgc3VjY2VlZGVk
LCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRp
ZmllcildICgpIG11dGFibGUgewogICAgICAgICAgICAgICAgIC8vIDguOS4xLiBJZiBhbnkgb2Yg
dGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBwcm9taXNlIHdpdGggYSB0aGUgYXBw
cm9wcmlhdGUgZXJyb3IgbmFtZS4KICAgICAgICAgICAgICAgICBpZiAoc3VjY2VlZGVkID09IENE
TUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlOjpGYWlsZWQpIHsKKyAgICAgICAgICAgICAg
ICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIjo6dGFzaygpIFJlamVjdGVkOiBPdGhlciBmYWls
dXJlIik7CiAgICAgICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRF
cnJvcik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBA
IC0zNTQsNiArMzc0LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Npb246OmxvYWQoY29uc3QgU3RyaW5n
JiBzZXNzaW9uSWQsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWkKICAgICAgICAgICAgICAg
ICAgICAgZW5xdWV1ZU1lc3NhZ2UobWVzc2FnZS0+Zmlyc3QsIFdURk1vdmUobWVzc2FnZS0+c2Vj
b25kKSk7CiAKICAgICAgICAgICAgICAgICAvLyA4LjkuNy4gUmVzb2x2ZSBwcm9taXNlIHdpdGgg
dHJ1ZS4KKyAgICAgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrKCkgUmVz
b2x2ZWQiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlPElETEJvb2xlYW4+KHRy
dWUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMzcwLDE1ICszOTEsMTggQEAg
dm9pZCBNZWRpYUtleVNlc3Npb246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNl
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9r
ZWQsIHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8g
MS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCByZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdp
dGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAgLy8gMi4gSWYgdGhpcyBvYmplY3QncyBjYWxs
YWJsZSB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIElu
dmFsaWRTdGF0ZUVycm9yLgotICAgIExPRyhFTUUsICJFTUUgLSB1cGRhdGUgc2Vzc2lvbiBmb3Ig
JXMiLCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBM
T0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJyZXNwb25zZS5sZW5ndGgo
IiwgcmVzcG9uc2UubGVuZ3RoKCksICIpIik7CiAKICAgICBpZiAobV9jbG9zZWQgfHwgIW1fY2Fs
bGFibGUpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiBjbG9zZWQo
IiwgbV9jbG9zZWQsICIpIG9yICFjYWxsYWJsZSgiLCAhbV9jYWxsYWJsZSwgIikiKTsKICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIC8vIDMuIElmIHJlc3BvbnNlIGlzIGFuIGVtcHR5IGFycmF5LCByZXR1cm4g
YSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAgICBp
ZiAoIXJlc3BvbnNlLmxlbmd0aCgpKSB7CisgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJS
ZWplY3RlZDogZW1wdHkgcmVzcG9uc2UiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KFR5cGVF
cnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0zODYsMTIgKzQxMCwxMyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgIC8vIDQuIExldCByZXNwb25zZSBjb3B5IGJlIGEgY29w
eSBvZiB0aGUgY29udGVudHMgb2YgdGhlIHJlc3BvbnNlIHBhcmFtZXRlci4KICAgICAvLyA1LiBM
ZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDYuIFJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhp
cywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHJlc3BvbnNlID0gU2hhcmVkQnVmZmVy
OjpjcmVhdGUocmVzcG9uc2UuZGF0YSgpLCByZXNwb25zZS5sZW5ndGgoKSksIHByb21pc2UgPSBX
VEZNb3ZlKHByb21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0
QWxpdmUoKnRoaXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCByZXNwb25zZSA9IFNo
YXJlZEJ1ZmZlcjo6Y3JlYXRlKHJlc3BvbnNlLmRhdGEoKSwgcmVzcG9uc2UubGVuZ3RoKCkpLCBw
cm9taXNlID0gV1RGTW92ZShwcm9taXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildICgpIG11dGFibGUgewogICAgICAgICAvLyA2LjEuIExldCBzYW5pdGl6ZWQgcmVzcG9uc2Ug
YmUgYSB2YWxpZGF0ZWQgYW5kL29yIHNhbml0aXplZCB2ZXJzaW9uIG9mIHJlc3BvbnNlIGNvcHku
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHNhbml0aXplZFJlc3BvbnNlID0gbV9pbXBs
ZW1lbnRhdGlvbi0+c2FuaXRpemVSZXNwb25zZShyZXNwb25zZSk7CiAKICAgICAgICAgLy8gNi4y
LiBJZiB0aGUgcHJlY2VkaW5nIHN0ZXAgZmFpbGVkLCBvciBpZiBzYW5pdGl6ZWQgcmVzcG9uc2Ug
aXMgZW1wdHksIHJlamVjdCBwcm9taXNlIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4K
ICAgICAgICAgaWYgKCFzYW5pdGl6ZWRSZXNwb25zZSB8fCBzYW5pdGl6ZWRSZXNwb25zZS0+aXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBJTkZPX0xPRyhpZGVudGlmaWVyLCAiOjp0YXNrIC0gUmVq
ZWN0ZWQ6IGVtcHR5IHNhbml0aXplZCByZXNwb25zZSIpOwogICAgICAgICAgICAgcHJvbWlzZS0+
cmVqZWN0KFR5cGVFcnJvcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQw
MSw3ICs0MjYsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNv
dXJjZSYgcmVzcG9uc2UsIFJlZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAvLyA2LjUuIExl
dCBzZXNzaW9uIGNsb3NlZCBiZSBmYWxzZS4KICAgICAgICAgLy8gNi42LiBMZXQgY2RtIGJlIHRo
ZSBDRE0gaW5zdGFuY2UgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QncyBjZG0gaW5zdGFuY2Ug
dmFsdWUuCiAgICAgICAgIC8vIDYuNy4gVXNlIHRoZSBjZG0gdG8gZXhlY3V0ZSB0aGUgZm9sbG93
aW5nIHN0ZXBzOgotICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+dXBkYXRlTGljZW5zZShtX3Nl
c3Npb25JZCwgbV9zZXNzaW9uVHlwZSwgc2FuaXRpemVkUmVzcG9uc2UucmVsZWFzZU5vbk51bGwo
KSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0gKGJvb2wgc2Vzc2lvbldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VT
ZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4m
JiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdl
PiYmIG1lc3NhZ2UsIENETUluc3RhbmNlU2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkg
bXV0YWJsZSB7CisgICAgICAgIG1faW5zdGFuY2VTZXNzaW9uLT51cGRhdGVMaWNlbnNlKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCBzYW5pdGl6ZWRSZXNwb25zZS5yZWxlYXNlTm9uTnVsbCgp
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKGJvb2wgc2Vzc2lv
bldhc0Nsb3NlZCwgT3B0aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3I+
JiYgY2hhbmdlZEtleXMsIE9wdGlvbmFsPGRvdWJsZT4mJiBjaGFuZ2VkRXhwaXJhdGlvbiwgT3B0
aW9uYWw8Q0RNSW5zdGFuY2VTZXNzaW9uOjpNZXNzYWdlPiYmIG1lc3NhZ2UsIENETUluc3RhbmNl
U2Vzc2lvbjo6U3VjY2Vzc1ZhbHVlIHN1Y2NlZWRlZCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBp
ZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDI4LDcgKzQ1Myw3
IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjp1cGRhdGUoY29uc3QgQnVmZmVyU291cmNlJiByZXNw
b25zZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mCiAgICAgICAgICAgICAvLyBOT1RFOiBTdGVwcyA2
LjcuMS4gYW5kIDYuNy4yLiBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gQ0RNSW5zdGFuY2UuCiAK
ICAgICAgICAgICAgIGlmIChzdWNjZWVkZWQgPT0gQ0RNSW5zdGFuY2VTZXNzaW9uOjpTdWNjZXNz
VmFsdWU6OkZhaWxlZCkgewotICAgICAgICAgICAgICAgIExPRyhFTUUsICJFTUUgLSBmYWlsZWQg
dG8gdXBkYXRlIENETSBsaWNlbnNlIGZvciAlcyIsIG1fc2Vzc2lvbklkLnV0ZjgoKS5kYXRhKCkp
OworICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZWplY3Rl
ZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTQzNyw4ICs0NjIsNyBAQCB2b2lk
IE1lZGlhS2V5U2Vzc2lvbjo6dXBkYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYgcmVzcG9uc2UsIFJl
ZjxEZWZlcnJlZFByb21pc2U+JgogICAgICAgICAgICAgLy8gICA2LjcuMy4xLiBMZXQgbWVzc2Fn
ZSBiZSB0aGF0IG1lc3NhZ2UuCiAgICAgICAgICAgICAvLyAgIDYuNy4zLjIuIExldCBtZXNzYWdl
IHR5cGUgYmUgdGhlIGFwcHJvcHJpYXRlIE1lZGlhS2V5TWVzc2FnZVR5cGUgZm9yIHRoZSBtZXNz
YWdlLgogICAgICAgICAgICAgLy8gNi44LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dp
bmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBzZXNzaW9uV2FzQ2xvc2VkLCBjaGFuZ2Vk
S2V5cyA9IFdURk1vdmUoY2hhbmdlZEtleXMpLCBjaGFuZ2VkRXhwaXJhdGlvbiA9IFdURk1vdmUo
Y2hhbmdlZEV4cGlyYXRpb24pLCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIExPRyhFTUUs
ICJFTUUgLSB1cGRhdGluZyBDRE0gbGljZW5zZSBzdWNjZWVkZWQgZm9yIHNlc3Npb24gJXMsIHNl
bmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBsaWNlbnNlIHNlcnZlciIsIG1fc2Vzc2lvbklkLnV0Zjgo
KS5kYXRhKCkpOworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlz
LCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywgc2Vzc2lvbldhc0Nsb3NlZCwgY2hhbmdl
ZEtleXMgPSBXVEZNb3ZlKGNoYW5nZWRLZXlzKSwgY2hhbmdlZEV4cGlyYXRpb24gPSBXVEZNb3Zl
KGNoYW5nZWRFeHBpcmF0aW9uKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gNi44LjEuCiAgICAgICAgICAgICAgICAgaWYg
KHNlc3Npb25XYXNDbG9zZWQpIHsKICAgICAgICAgICAgICAgICAgICAgLy8g4oazIElmIHNlc3Np
b24gY2xvc2VkIGlzIHRydWU6CkBAIC00ODQsNiArNTA4LDcgQEAgdm9pZCBNZWRpYUtleVNlc3Np
b246OnVwZGF0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHJlc3BvbnNlLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAvLyA2LjguMi4gUmVz
b2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICI6OnRh
c2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTQ5NywzNyArNTIyLDQyIEBAIHZvaWQgTWVk
aWFLZXlTZXNzaW9uOjpjbG9zZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAgICAg
Ly8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5c2Vz
c2lvbi1jbG9zZQogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAyMDE2CiAK
KyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlkZW50
aWZpZXIpOworCiAgICAgLy8gMS4gTGV0IHNlc3Npb24gYmUgdGhlIGFzc29jaWF0ZWQgTWVkaWFL
ZXlTZXNzaW9uIG9iamVjdC4KICAgICAvLyAyLiBJZiBzZXNzaW9uIGlzIGNsb3NlZCwgcmV0dXJu
IGEgcmVzb2x2ZWQgcHJvbWlzZS4KICAgICBMT0coRU1FLCAiRU1FIC0gY2xvc2luZyBzZXNzaW9u
ICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7CiAKICAgICBpZiAobV9jbG9zZWQpIHsK
KyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlc29sdmVkOiBhbHJlYWR5IGNsb3NlZCIp
OwogICAgICAgICBwcm9taXNlLT5yZXNvbHZlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICAvLyAzLiBJZiBzZXNzaW9uJ3MgY2FsbGFibGUgdmFsdWUgaXMgZmFsc2UsIHJldHVybiBh
IHByb21pc2UgcmVqZWN0ZWQgd2l0aCBhbiBJbnZhbGlkU3RhdGVFcnJvci4KICAgICBpZiAoIW1f
Y2FsbGFibGUpIHsKKyAgICAgICAgSU5GT19MT0coaWRlbnRpZmllciwgIlJlamVjdGVkOiAhY2Fs
bGFibGUiKTsKICAgICAgICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIDQuIExldCBwcm9taXNlIGJlIGEgbmV3IHBy
b21pc2UuCiAgICAgLy8gNS4gUnVuIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6Ci0g
ICAgcXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3Jr
aW5nLCBbdGhpcywgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFibGUgeworICAg
IHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgqdGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2lu
ZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92
ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIC8vIDUuMS4gTGV0IGNkbSBiZSB0
aGUgQ0RNIGluc3RhbmNlIHJlcHJlc2VudGVkIGJ5IHNlc3Npb24ncyBjZG0gaW5zdGFuY2UgdmFs
dWUuCiAgICAgICAgIC8vIDUuMi4gVXNlIGNkbSB0byBjbG9zZSB0aGUga2V5IHNlc3Npb24gYXNz
b2NpYXRlZCB3aXRoIHNlc3Npb24uCi0gICAgICAgIExPRyhFTUUsICJFTUUgLSBjbG9zaW5nIENE
TSBzZXNzaW9uICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgIG1faW5z
dGFuY2VTZXNzaW9uLT5jbG9zZVNlc3Npb24obV9zZXNzaW9uSWQsIFt0aGlzLCB3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldICgpIG11dGFi
bGUgeworICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+Y2xvc2VTZXNzaW9uKG1fc2Vzc2lvbklk
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHByb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkgbXV0YWJsZSB7
CiAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICAgICAgLy8gNS4zLiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMsIFRhc2tT
b3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNlKV0gKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRoaXMs
IFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9taXNl
KSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAgICAg
ICAgICAgICAgIC8vIDUuMy4xLiBSdW4gdGhlIFNlc3Npb24gQ2xvc2VkIGFsZ29yaXRobSBvbiB0
aGUgc2Vzc2lvbi4KICAgICAgICAgICAgICAgICBzZXNzaW9uQ2xvc2VkKCk7CiAKICAgICAgICAg
ICAgICAgICAvLyA1LjMuMi4gUmVzb2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElORk9f
TE9HKGlkZW50aWZpZXIsICI6OnRhc2soKSBSZXNvbHZlZCIpOwogICAgICAgICAgICAgICAgIHBy
b21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9KTsKQEAgLTU0Mywy
MiArNTczLDI1IEBAIHZvaWQgTWVkaWFLZXlTZXNzaW9uOjpyZW1vdmUoUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQogCiAgICAgLy8gMS4gSWYgdGhpcyBvYmplY3QgaXMgY2xvc2VkLCBy
ZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gSW52YWxpZFN0YXRlRXJyb3IuCiAgICAg
Ly8gMi4gSWYgdGhpcyBvYmplY3QncyBjYWxsYWJsZSB2YWx1ZSBpcyBmYWxzZSwgcmV0dXJuIGEg
cHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIExPRyhFTUUs
ICJFTUUgLSByZW1vdmluZyBzZXNzaW9uICVzIiwgbV9zZXNzaW9uSWQudXRmOCgpLmRhdGEoKSk7
CisKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBMT0dJREVOVElGSUVSOworICAgIElORk9fTE9HKGlk
ZW50aWZpZXIpOwogCiAgICAgaWYgKG1fY2xvc2VkIHx8ICFtX2NhbGxhYmxlKSB7CisgICAgICAg
IElORk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogY2xvc2VkKCIsIG1fY2xvc2VkLCAiKSBv
ciAhY2FsbGFibGUoIiwgIW1fY2FsbGFibGUsICIpIik7CiAgICAgICAgIHByb21pc2UtPnJlamVj
dChJbnZhbGlkU3RhdGVFcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAz
LiBMZXQgcHJvbWlzZSBiZSBhIG5ldyBwcm9taXNlLgogICAgIC8vIDQuIFJ1biB0aGUgZm9sbG93
aW5nIHN0ZXBzIGluIHBhcmFsbGVsOgotICAgIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgq
dGhpcywgVGFza1NvdXJjZTo6TmV0d29ya2luZywgW3RoaXMsIHByb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXSAoKSBtdXRhYmxlIHsKKyAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBwcm9taXNlID0gV1RGTW92ZShwcm9t
aXNlKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmllcildICgpIG11dGFibGUgewogICAg
ICAgICAvLyA0LjEuIExldCBjZG0gYmUgdGhlIENETSBpbnN0YW5jZSByZXByZXNlbnRlZCBieSB0
aGlzIG9iamVjdCdzIGNkbSBpbnN0YW5jZSB2YWx1ZS4KICAgICAgICAgLy8gNC4yLiBMZXQgbWVz
c2FnZSBiZSBudWxsLgogICAgICAgICAvLyA0LjMuIExldCBtZXNzYWdlIHR5cGUgYmUgbnVsbC4K
IAogICAgICAgICAvLyA0LjQuIFVzZSB0aGUgY2RtIHRvIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBz
dGVwczoKLSAgICAgICAgbV9pbnN0YW5jZVNlc3Npb24tPnJlbW92ZVNlc3Npb25EYXRhKG1fc2Vz
c2lvbklkLCBtX3Nlc3Npb25UeXBlLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhp
cyksIHByb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpXSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlT
dGF0dXNWZWN0b3ImJiBrZXlzLCBPcHRpb25hbDxSZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdl
LCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewor
ICAgICAgICBtX2luc3RhbmNlU2Vzc2lvbi0+cmVtb3ZlU2Vzc2lvbkRhdGEobV9zZXNzaW9uSWQs
IG1fc2Vzc2lvblR5cGUsIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcHJv
bWlzZSA9IFdURk1vdmUocHJvbWlzZSksIGlkZW50aWZpZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIp
XSAoQ0RNSW5zdGFuY2VTZXNzaW9uOjpLZXlTdGF0dXNWZWN0b3ImJiBrZXlzLCBPcHRpb25hbDxS
ZWY8U2hhcmVkQnVmZmVyPj4mJiBtZXNzYWdlLCBDRE1JbnN0YW5jZVNlc3Npb246OlN1Y2Nlc3NW
YWx1ZSBzdWNjZWVkZWQpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTU3Nyw3ICs2MTAsNyBAQCB2b2lkIE1lZGlhS2V5
U2Vzc2lvbjo6cmVtb3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKICAgICAgICAg
ICAgIC8vIE5PVEU6IFN0ZXAgNC40LjEuIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBDRE1JbnN0
YW5jZS4KIAogICAgICAgICAgICAgLy8gNC41LiBRdWV1ZSBhIHRhc2sgdG8gcnVuIHRoZSBmb2xs
b3dpbmcgc3RlcHM6Ci0gICAgICAgICAgICBxdWV1ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKnRo
aXMsIFRhc2tTb3VyY2U6Ok5ldHdvcmtpbmcsIFt0aGlzLCBrZXlzID0gV1RGTW92ZShrZXlzKSwg
bWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHN1Y2NlZWRlZCwgcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSldICgpIG11dGFibGUgeworICAgICAgICAgICAgcXVldWVUYXNrS2VlcGluZ09iamVj
dEFsaXZlKCp0aGlzLCBUYXNrU291cmNlOjpOZXR3b3JraW5nLCBbdGhpcywga2V5cyA9IFdURk1v
dmUoa2V5cyksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzdWNjZWVkZWQsIHByb21pc2Ug
PSBXVEZNb3ZlKHByb21pc2UpLCBpZGVudGlmaWVyID0gV1RGTW92ZShpZGVudGlmaWVyKV0gKCkg
bXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgLy8gNC41LjEuIFJ1biB0aGUgVXBkYXRlIEtleSBT
dGF0dXNlcyBhbGdvcml0aG0gb24gdGhlIHNlc3Npb24sIHByb3ZpZGluZyBhbGwga2V5IElEKHMp
IGluIHRoZSBzZXNzaW9uIGFsb25nIHdpdGggdGhlICJyZWxlYXNlZCIgTWVkaWFLZXlTdGF0dXMg
dmFsdWUgZm9yIGVhY2guCiAgICAgICAgICAgICAgICAgdXBkYXRlS2V5U3RhdHVzZXMoV1RGTW92
ZShrZXlzKSk7CiAKQEAgLTU4Niw2ICs2MTksNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lvbjo6cmVt
b3ZlKFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIAogICAgICAgICAgICAgICAgIC8v
IDQuNS4zLiBJZiBhbnkgb2YgdGhlIHByZWNlZGluZyBzdGVwcyBmYWlsZWQsIHJlamVjdCBwcm9t
aXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRl
IGVycm9yIG5hbWUuCiAgICAgICAgICAgICAgICAgaWYgKHN1Y2NlZWRlZCA9PSBDRE1JbnN0YW5j
ZVNlc3Npb246OlN1Y2Nlc3NWYWx1ZTo6RmFpbGVkKSB7CisgICAgICAgICAgICAgICAgICAgIElO
Rk9fTE9HKGlkZW50aWZpZXIsICJSZWplY3RlZDogZmFpbGVkIik7CiAgICAgICAgICAgICAgICAg
ICAgIHByb21pc2UtPnJlamVjdChOb3RTdXBwb3J0ZWRFcnJvcik7CiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC01OTYsNiArNjMwLDcgQEAgdm9pZCBN
ZWRpYUtleVNlc3Npb246OnJlbW92ZShSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiAg
ICAgICAgICAgICAgICAgICAgIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGU6Okxp
Y2Vuc2VSZWxlYXNlLCAqbWVzc2FnZSk7CiAKICAgICAgICAgICAgICAgICAvLyA0LjUuNi4gUmVz
b2x2ZSBwcm9taXNlLgorICAgICAgICAgICAgICAgIElORk9fTE9HKGlkZW50aWZpZXIsICJSZXNv
bHZlZCIpOwogICAgICAgICAgICAgICAgIHByb21pc2UtPnJlc29sdmUoKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKQEAgLTY5MCw3ICs3MjUsNyBAQCB2b2lkIE1lZGlhS2V5U2Vzc2lv
bjo6c2Vzc2lvbkNsb3NlZCgpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5
cHRlZC1tZWRpYS8jc2Vzc2lvbi1jbG9zZWQKICAgICAvLyBXM0MgRWRpdG9yJ3MgRHJhZnQgMDkg
Tm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJFTUUgLSBzZXNzaW9uICVzIHdhcyBjbG9zZWQi
LCBtX3Nlc3Npb25JZC51dGY4KCkuZGF0YSgpKTsKKyAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVS
KTsKIAogICAgIC8vIDEuIExldCBzZXNzaW9uIGJlIHRoZSBhc3NvY2lhdGVkIE1lZGlhS2V5U2Vz
c2lvbiBvYmplY3QuCiAgICAgLy8gMi4gSWYgc2Vzc2lvbidzIHNlc3Npb24gdHlwZSBpcyAicGVy
c2lzdGVudC11c2FnZS1yZWNvcmQiLCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFy
YWxsZWw6CkBAIC03NDIsNiArNzc3LDEzIEBAIGNvbnN0IGNoYXIqIE1lZGlhS2V5U2Vzc2lvbjo6
YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CiAgICAgcmV0dXJuICJNZWRpYUtleVNlc3Npb24i
OwogfQogCisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECitXVEZMb2dDaGFubmVsJiBNZWRpYUtl
eVNlc3Npb246OmxvZ0NoYW5uZWwoKSBjb25zdAoreworICAgIHJldHVybiBMb2dFTUU7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5U2Vzc2lvbi5oCmlu
ZGV4IGU1ZjEyZGVjYzZlNTQ4MWI5OGEyOWM4NzliYzlhYzIwYWZjMjcwZjAuLjQwNTIzNDc1NWIy
NWY5ODc1YTAzMjM3MWI0NWI1ZTM1NGNiMGMzOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlTZXNzaW9uLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleVNlc3Npb24uaApAQCAtNDMsNiAr
NDMsMTAgQEAKICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCituYW1lc3BhY2UgV1RGIHsKK2NsYXNzIExvZ2dlcjsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBCdWZmZXJTb3VyY2U7CkBAIC01Nyw3ICs2MSw3IEBAIHRl
bXBsYXRlPHR5cGVuYW1lIElETFR5cGU+IGNsYXNzIERPTVByb21pc2VQcm94eTsKIGNsYXNzIE1l
ZGlhS2V5U2Vzc2lvbiBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhS2V5U2Vzc2lvbj4s
IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhLCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgQ0RNSW5zdGFuY2VTZXNzaW9uQ2xpZW50IHsKICAgICBXVEZfTUFLRV9JU09fQUxM
T0NBVEVEKE1lZGlhS2V5U2Vzc2lvbik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYUtl
eVNlc3Npb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2Vha1B0cjxNZWRpYUtl
eXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVy
LCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKKyAgICBzdGF0aWMgUmVm
PE1lZGlhS2V5U2Vzc2lvbj4gY3JlYXRlKERvY3VtZW50JiwgV2Vha1B0cjxNZWRpYUtleXM+JiYs
IE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJZGVudGlmaWVyLCBSZWY8
Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKICAgICB2aXJ0dWFsIH5NZWRpYUtl
eVNlc3Npb24oKTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFLZXlTZXNzaW9uPjo6cmVm
OwpAQCAtODQsNyArODgsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHko
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUtleVNlc3Npb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFdlYWtQdHI8TWVkaWFLZXlzPiYmLCBNZWRpYUtleVNlc3Npb25U
eXBlLCBib29sIHVzZURpc3RpbmN0aXZlSWRlbnRpZmllciwgUmVmPENETT4mJiwgUmVmPENETUlu
c3RhbmNlU2Vzc2lvbj4mJik7CisgICAgTWVkaWFLZXlTZXNzaW9uKERvY3VtZW50JiwgV2Vha1B0
cjxNZWRpYUtleXM+JiYsIE1lZGlhS2V5U2Vzc2lvblR5cGUsIGJvb2wgdXNlRGlzdGluY3RpdmVJ
ZGVudGlmaWVyLCBSZWY8Q0RNPiYmLCBSZWY8Q0RNSW5zdGFuY2VTZXNzaW9uPiYmKTsKICAgICB2
b2lkIGVucXVldWVNZXNzYWdlKE1lZGlhS2V5TWVzc2FnZVR5cGUsIGNvbnN0IFNoYXJlZEJ1ZmZl
ciYpOwogICAgIHZvaWQgdXBkYXRlRXhwaXJhdGlvbihkb3VibGUpOwogICAgIHZvaWQgc2Vzc2lv
bkNsb3NlZCgpOwpAQCAtMTA0LDYgKzEwOCwxNSBAQCBwcml2YXRlOgogICAgIC8vIEFjdGl2ZURP
TU9iamVjdAogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVy
cmlkZTsKIAorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAorICAgIC8vIExvZ2dlckhlbHBlcgor
ICAgIGNvbnN0IFdURjo6TG9nZ2VyJiBsb2dnZXIoKSBjb25zdCB7IHJldHVybiBtX2xvZ2dlcjsg
fQorICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJNZWRpYUtl
eVNlc3Npb24iOyB9CisgICAgV1RGTG9nQ2hhbm5lbCYgbG9nQ2hhbm5lbCgpIGNvbnN0OworICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiB0aGlzOyB9CisjZW5k
aWYKKworICAgIFJlZjxXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgV2Vha1B0cjxNZWRpYUtl
eXM+IG1fa2V5czsKICAgICBTdHJpbmcgbV9zZXNzaW9uSWQ7CiAgICAgZG91YmxlIG1fZXhwaXJh
dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEv
TWVkaWFLZXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVk
aWFLZXlzLmNwcAppbmRleCAxODdkNTlkZWYzNDA1NWY4Y2M1Y2Q1OWJkN2YwYWE3NWE1ZTk2NTRk
Li45YThjY2M1ZjBkZmM1OTI4ZDhlMDVjNzRhMjA1ZDQzMDU0MDA0NTI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuY3BwCkBAIC0z
NCwxNSArMzQsMjUgQEAKICNpbmNsdWRlICJDRE0uaCIKICNpbmNsdWRlICJDRE1DbGllbnQuaCIK
ICNpbmNsdWRlICJDRE1JbnN0YW5jZS5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVk
ZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKICNpbmNs
dWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWVkaWFLZXlTZXNzaW9uLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lLi4uIEFyZ3VtZW50cz4KK2lu
bGluZSB2b2lkIGluZm9Mb2coTG9nZ2VyJiBsb2dnZXIsIGNvbnN0IEFyZ3VtZW50cyYuLi4gYXJn
dW1lbnRzKQoreworI2lmICFMT0dfRElTQUJMRUQgfHwgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisg
ICAgbG9nZ2VyLmluZm8oTG9nRU1FLCBhcmd1bWVudHMuLi4pOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0obG9nZ2VyKTsKKyNlbmRpZgorfQorCiBNZWRpYUtleXM6Ok1lZGlhS2V5cyhib29sIHVz
ZURpc3RpbmN0aXZlSWRlbnRpZmllciwgYm9vbCBwZXJzaXN0ZW50U3RhdGVBbGxvd2VkLCBjb25z
dCBWZWN0b3I8TWVkaWFLZXlTZXNzaW9uVHlwZT4mIHN1cHBvcnRlZFNlc3Npb25UeXBlcywgUmVm
PENETT4mJiBpbXBsZW1lbnRhdGlvbiwgUmVmPENETUluc3RhbmNlPiYmIGluc3RhbmNlKQogICAg
IDogbV91c2VEaXN0aW5jdGl2ZUlkZW50aWZpZXIodXNlRGlzdGluY3RpdmVJZGVudGlmaWVyKQog
ICAgICwgbV9wZXJzaXN0ZW50U3RhdGVBbGxvd2VkKHBlcnNpc3RlbnRTdGF0ZUFsbG93ZWQpCkBA
IC01NCw0OCArNjQsNjEgQEAgTWVkaWFLZXlzOjpNZWRpYUtleXMoYm9vbCB1c2VEaXN0aW5jdGl2
ZUlkZW50aWZpZXIsIGJvb2wgcGVyc2lzdGVudFN0YXRlQWxsb3dlZCwKIAogTWVkaWFLZXlzOjp+
TWVkaWFLZXlzKCkgPSBkZWZhdWx0OwogCi1FeGNlcHRpb25PcjxSZWY8TWVkaWFLZXlTZXNzaW9u
Pj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQsIE1lZGlhS2V5U2Vzc2lvblR5cGUgc2Vzc2lvblR5cGUpCitFeGNlcHRpb25PcjxSZWY8TWVk
aWFLZXlTZXNzaW9uPj4gTWVkaWFLZXlzOjpjcmVhdGVTZXNzaW9uKERvY3VtZW50JiBkb2N1bWVu
dCwgTWVkaWFLZXlTZXNzaW9uVHlwZSBzZXNzaW9uVHlwZSkKIHsKICAgICAvLyBodHRwczovL3cz
Yy5naXRodWIuaW8vZW5jcnlwdGVkLW1lZGlhLyNkb20tbWVkaWFrZXlzLXNldHNlcnZlcmNlcnRp
ZmljYXRlCiAgICAgLy8gVzNDIEVkaXRvcidzIERyYWZ0IDA5IE5vdmVtYmVyIDIwMTYKICAgICBM
T0coRU1FLCAiRU1FIC0gY2hlY2sgaWYgYSBuZXcgc2Vzc2lvbiBjYW4gYmUgY3JlYXRlZCIpOwor
ICAgIGF1dG8gaWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcigiTWVk
aWFLZXlzIiwgX19mdW5jX18sIHRoaXMpOworICAgIFJlZjxMb2dnZXI+IGxvZ2dlciA9IGRvY3Vt
ZW50LmxvZ2dlcigpOwogCiAgICAgLy8gV2hlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCB0aGUg
dXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIC8vIDEuIElmIHRo
aXMgb2JqZWN0J3Mgc3VwcG9ydGVkIHNlc3Npb24gdHlwZXMgdmFsdWUgZG9lcyBub3QgY29udGFp
biBzZXNzaW9uVHlwZSwgdGhyb3cgW1dlYklETF0gYSBOb3RTdXBwb3J0ZWRFcnJvci4KLSAgICBp
ZiAoIW1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkKKyAgICBp
ZiAoIW1fc3VwcG9ydGVkU2Vzc2lvblR5cGVzLmNvbnRhaW5zKHNlc3Npb25UeXBlKSkgeworICAg
ICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIkV4Y2VwdGlvbjogdW5zdXBwb3J0ZWQg
c2Vzc2lvblR5cGU6ICIsIHNlc3Npb25UeXBlKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihO
b3RTdXBwb3J0ZWRFcnJvcik7CisgICAgfQogCiAgICAgLy8gMi4gSWYgdGhlIGltcGxlbWVudGF0
aW9uIGRvZXMgbm90IHN1cHBvcnQgTWVkaWFLZXlTZXNzaW9uIG9wZXJhdGlvbnMgaW4gdGhlIGN1
cnJlbnQgc3RhdGUsIHRocm93IFtXZWJJRExdIGFuIEludmFsaWRTdGF0ZUVycm9yLgotICAgIGlm
ICghbV9pbXBsZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKQorICAgIGlmICghbV9pbXBs
ZW1lbnRhdGlvbi0+c3VwcG9ydHNTZXNzaW9ucygpKSB7CisgICAgICAgIGluZm9Mb2cobG9nZ2Vy
LCBpZGVudGlmaWVyLCAiRXhjZXB0aW9uOiBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0
IHNlc3Npb25zIik7CiAgICAgICAgIHJldHVybiBFeGNlcHRpb24oSW52YWxpZFN0YXRlRXJyb3Ip
OworICAgIH0KIAogICAgIGF1dG8gaW5zdGFuY2VTZXNzaW9uID0gbV9pbnN0YW5jZS0+Y3JlYXRl
U2Vzc2lvbigpOwotICAgIGlmICghaW5zdGFuY2VTZXNzaW9uKQorICAgIGlmICghaW5zdGFuY2VT
ZXNzaW9uKSB7CisgICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiRXhjZXB0aW9u
OiBjb3VsZCBub3QgY3JlYXRlIHNlc3Npb24iKTsKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbihJ
bnZhbGlkU3RhdGVFcnJvcik7CisgICAgfQogCiAgICAgLy8gMy4gTGV0IHNlc3Npb24gYmUgYSBu
ZXcgTWVkaWFLZXlTZXNzaW9uIG9iamVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoK
ICAgICAvLyBOT1RFOiBDb250aW51ZWQgaW4gTWVkaWFLZXlTZXNzaW9uLgogICAgIC8vIDQuIFJl
dHVybiBzZXNzaW9uLgotICAgIGF1dG8gc2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6Y3JlYXRl
KGNvbnRleHQsIG1ha2VXZWFrUHRyKCp0aGlzKSwgc2Vzc2lvblR5cGUsIG1fdXNlRGlzdGluY3Rp
dmVJZGVudGlmaWVyLCBtX2ltcGxlbWVudGF0aW9uLmNvcHlSZWYoKSwgaW5zdGFuY2VTZXNzaW9u
LnJlbGVhc2VOb25OdWxsKCkpOworICAgIGF1dG8gc2Vzc2lvbiA9IE1lZGlhS2V5U2Vzc2lvbjo6
Y3JlYXRlKGRvY3VtZW50LCBtYWtlV2Vha1B0cigqdGhpcyksIHNlc3Npb25UeXBlLCBtX3VzZURp
c3RpbmN0aXZlSWRlbnRpZmllciwgbV9pbXBsZW1lbnRhdGlvbi5jb3B5UmVmKCksIGluc3RhbmNl
U2Vzc2lvbi5yZWxlYXNlTm9uTnVsbCgpKTsKKyAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmll
ciwgIiBDcmVhdGVkIHNlc3Npb24iKTsKICAgICBtX3Nlc3Npb25zLmFwcGVuZChzZXNzaW9uLmNv
cHlSZWYoKSk7CiAgICAgcmV0dXJuIHNlc3Npb247CiB9CiAKLXZvaWQgTWVkaWFLZXlzOjpzZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE1lZGlhS2V5czo6c2V0U2VydmVy
Q2VydGlmaWNhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBCdWZmZXJTb3VyY2UmIHNlcnZl
ckNlcnRpZmljYXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7CiAgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRpYS8jZG9tLW1lZGlha2V5cy1zZXRz
ZXJ2ZXJjZXJ0aWZpY2F0ZQogICAgIC8vIFczQyBFZGl0b3IncyBEcmFmdCAwOSBOb3ZlbWJlciAy
MDE2CisgICAgYXV0byBpZGVudGlmaWVyID0gV1RGOjpMb2dnZXI6OkxvZ1NpdGVJZGVudGlmaWVy
KCJNZWRpYUtleXMiLCBfX2Z1bmNfXywgdGhpcyk7CisgICAgUmVmPExvZ2dlcj4gbG9nZ2VyID0g
ZG9jdW1lbnQubG9nZ2VyKCk7CiAKICAgICAvLyBXaGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQs
IHRoZSB1c2VyIGFnZW50IG11c3QgcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CiAgICAgLy8gMS4g
SWYgdGhlIEtleSBTeXN0ZW0gaW1wbGVtZW50YXRpb24gcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmpl
Y3QncyBjZG0gaW1wbGVtZW50YXRpb24gdmFsdWUgZG9lcyBub3Qgc3VwcG9ydAogICAgIC8vICAg
IHNlcnZlciBjZXJ0aWZpY2F0ZXMsIHJldHVybiBhIHByb21pc2UgcmVzb2x2ZWQgd2l0aCBmYWxz
ZS4KICAgICBpZiAoIW1faW1wbGVtZW50YXRpb24tPnN1cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVz
KCkpIHsKKyAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZWplY3RlZDogIXN1
cHBvcnRzU2VydmVyQ2VydGlmaWNhdGVzKCkiKTsKICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJ
RExCb29sZWFuPihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyAyLiBJ
ZiBzZXJ2ZXJDZXJ0aWZpY2F0ZSBpcyBhbiBlbXB0eSBhcnJheSwgcmV0dXJuIGEgcHJvbWlzZSBy
ZWplY3RlZCB3aXRoIGEgbmV3IGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKCFz
ZXJ2ZXJDZXJ0aWZpY2F0ZS5sZW5ndGgoKSkgeworICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRl
bnRpZmllciwgIlJlamVjdGVkOiBlbXB0eSBzZXJ2ZXJDZXJ0aWZpY2F0ZSIpOwogICAgICAgICBw
cm9taXNlLT5yZWplY3QoVHlwZUVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEw
NywxMyArMTMwLDE3IEBAIHZvaWQgTWVkaWFLZXlzOjpzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShjb25z
dCBCdWZmZXJTb3VyY2UmIHNlcnZlckNlcnRpZmljYXRlLCBSZWY8CiAgICAgLy8gNS4gUnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHMgaW4gcGFyYWxsZWw6CiAKICAgICAvLyA1LjEuIFVzZSB0aGlzIG9i
amVjdCdzIGNkbSBpbnN0YW5jZSB0byBwcm9jZXNzIGNlcnRpZmljYXRlLgotICAgIG1faW5zdGFu
Y2UtPnNldFNlcnZlckNlcnRpZmljYXRlKFdURk1vdmUoY2VydGlmaWNhdGUpLCBbcHJvbWlzZSA9
IFdURk1vdmUocHJvbWlzZSldIChhdXRvIHN1Y2Nlc3MpIHsKKyAgICBtX2luc3RhbmNlLT5zZXRT
ZXJ2ZXJDZXJ0aWZpY2F0ZShXVEZNb3ZlKGNlcnRpZmljYXRlKSwgW3Byb21pc2UgPSBXVEZNb3Zl
KHByb21pc2UpLCBsb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZpZXIgPSBXVEZNb3Zl
KGlkZW50aWZpZXIpXSAoYXV0byBzdWNjZXNzKSB7CiAgICAgICAgIC8vIDUuMi4gSWYgdGhlIHBy
ZWNlZGluZyBzdGVwIGZhaWxlZCwgcmVzb2x2ZSBwcm9taXNlIHdpdGggYSBuZXcgRE9NRXhjZXB0
aW9uIHdob3NlIG5hbWUgaXMgdGhlIGFwcHJvcHJpYXRlIGVycm9yIG5hbWUuCiAgICAgICAgIC8v
IDUuMS4gW0Vsc2UsXSBSZXNvbHZlIHByb21pc2Ugd2l0aCB0cnVlLgotICAgICAgICBpZiAoc3Vj
Y2VzcyA9PSBDRE1JbnN0YW5jZTo6RmFpbGVkKQorICAgICAgICBpZiAoc3VjY2VzcyA9PSBDRE1J
bnN0YW5jZTo6RmFpbGVkKSB7CisgICAgICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmll
ciwgIlJlamVjdGVkLCBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZSgpIGZhaWxlZCIpOwogICAgICAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KEludmFsaWRTdGF0ZUVycm9yKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVy
LCAiUmVzb2x2ZWQiKTsKKyAgICAgICAgcHJvbWlzZS0+cmVzb2x2ZTxJRExCb29sZWFuPih0cnVl
KTsKICAgICB9KTsKIAogICAgIC8vIDYuIFJldHVybiBwcm9taXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRpYS9NZWRpYUtleXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVkaWEvTWVkaWFLZXlzLmgKaW5kZXggYjZiNzJhMjcy
MjIyYjVjOWJkYzIyNTQwNjZiZThkZTI5MWJhNjg3ZC4uM2FiNjg0YzhhY2Q0OTJiMzRkYmVmYTk1
MTZjMmNjMmJkMTkzNzg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNy
eXB0ZWRtZWRpYS9NZWRpYUtleXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5
cHRlZG1lZGlhL01lZGlhS2V5cy5oCkBAIC00Myw4ICs0Myw4IEBAIGNsYXNzIENETUNsaWVudDsK
IGNsYXNzIENETUluc3RhbmNlOwogY2xhc3MgQnVmZmVyU291cmNlOwogY2xhc3MgRGVmZXJyZWRQ
cm9taXNlOworY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBNZWRpYUtleVNlc3Npb247Ci1jbGFzcyBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiBjbGFzcyBNZWRpYUtleXMgOiBwdWJsaWMgUmVmQ291
bnRlZDxNZWRpYUtleXM+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8TWVkaWFLZXlzPiB7CiBwdWJs
aWM6CkBAIC01Nyw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIH5NZWRpYUtleXMoKTsKIAotICAg
IEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBNZWRpYUtleVNlc3Npb25UeXBlKTsKLSAgICB2b2lkIHNldFNlcnZl
ckNlcnRpZmljYXRlKGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYp
OworICAgIEV4Y2VwdGlvbk9yPFJlZjxNZWRpYUtleVNlc3Npb24+PiBjcmVhdGVTZXNzaW9uKERv
Y3VtZW50JiwgTWVkaWFLZXlTZXNzaW9uVHlwZSk7CisgICAgdm9pZCBzZXRTZXJ2ZXJDZXJ0aWZp
Y2F0ZShEb2N1bWVudCYsIGNvbnN0IEJ1ZmZlclNvdXJjZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwogCiAgICAgdm9pZCBhdHRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CiAgICAgdm9pZCBk
ZXRhY2hDRE1DbGllbnQoQ0RNQ2xpZW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2VuY3J5cHRlZG1lZGlhL01lZGlhS2V5cy5pZGwKaW5kZXggZGIxYjA1MzQzYmMyMTM4Yzli
NmJjNTIyNWY3OTI5NzMzNmZkYjI5ZC4uZDVjNDJkYTkxNmEwNWVkZWZjNjlhZWIxM2M5YjMzOGYz
YWQ2MTNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0ZWRtZWRp
YS9NZWRpYUtleXMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZW5jcnlwdGVkbWVk
aWEvTWVkaWFLZXlzLmlkbApAQCAtMzIsNiArMzIsNiBAQAogICAgIERpc2FibGVkQnlRdWlyaz1o
YXNCcm9rZW5FbmNyeXB0ZWRNZWRpYUFQSVN1cHBvcnQsCiAgICAgSW1wbGVtZW50YXRpb25MYWNr
c1ZUYWJsZSwKIF0gaW50ZXJmYWNlIE1lZGlhS2V5cyB7Ci0gICAgW0NhbGxXaXRoPVNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQsIE1heVRocm93RXhjZXB0aW9uXSBNZWRpYUtleVNlc3Npb24gY3JlYXRl
U2Vzc2lvbihvcHRpb25hbCBNZWRpYUtleVNlc3Npb25UeXBlIHNlc3Npb25UeXBlID0gInRlbXBv
cmFyeSIpOwotICAgIFByb21pc2U8Ym9vbD4gc2V0U2VydmVyQ2VydGlmaWNhdGUoQnVmZmVyU291
cmNlIHNlcnZlckNlcnRpZmljYXRlKTsKKyAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIE1heVRocm93
RXhjZXB0aW9uXSBNZWRpYUtleVNlc3Npb24gY3JlYXRlU2Vzc2lvbihvcHRpb25hbCBNZWRpYUtl
eVNlc3Npb25UeXBlIHNlc3Npb25UeXBlID0gInRlbXBvcmFyeSIpOworICAgIFtDYWxsV2l0aD1E
b2N1bWVudF0gUHJvbWlzZTxib29sPiBzZXRTZXJ2ZXJDZXJ0aWZpY2F0ZShCdWZmZXJTb3VyY2Ug
c2VydmVyQ2VydGlmaWNhdGUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZW5jcnlwdGVkbWVkaWEvTmF2aWdhdG9yRU1FLmNwcAppbmRleCAwYmFhZjhkNWZkMjhjNTlh
YmE3NWM2YzgyNjAyN2Y0NDExNjE4MTQyLi42OTQ1NjRhZjNlNTkzYTY5NjE3NThmYWZkNzJhN2Q1
MDQ3YTZhYzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2VuY3J5cHRlZG1l
ZGlhL05hdmlnYXRvckVNRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9lbmNyeXB0
ZWRtZWRpYS9OYXZpZ2F0b3JFTUUuY3BwCkBAIC0zMiwzMCArMzIsNzQgQEAKICNpZiBFTkFCTEUo
RU5DUllQVEVEX01FRElBKQogCiAjaW5jbHVkZSAiQ0RNLmgiCisjaW5jbHVkZSAiQ0RNTG9nZ2lu
Zy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJy
ZWQuaCIKICNpbmNsdWRlICJKU01lZGlhS2V5U3lzdGVtQWNjZXNzLmgiCiAjaW5jbHVkZSAiTG9n
Z2luZy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKworbmFtZXNwYWNl
IFdURiB7CisKK3RlbXBsYXRlPHR5cGVuYW1lPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorc3RydWN0IExvZ0FyZ3VtZW50PFZlY3RvcjxUPj4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgVmVjdG9yPFQ+JiB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoIlsiKTsK
KyAgICAgICAgZm9yIChhdXRvIGl0ZW0gOiB2YWx1ZSkKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKExvZ0FyZ3VtZW50PFQ+Ojp0b1N0cmluZyhpdGVtKSk7CisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKCJdIik7CisgICAgICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7CisgICAgfQorfTsK
KwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK3N0cnVjdCBMb2dBcmd1bWVudDxPcHRpb25hbDxUPj4g
eworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgT3B0aW9uYWw8VD4mIHZhbHVlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID8gIm51bGxvcHQiX3MgOiBMb2dBcmd1bWVudDxU
Pjo6dG9TdHJpbmcodmFsdWUudmFsdWUoKSk7CisgICAgfQorfTsKKworfQogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJl
ZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYpOwordGVtcGxhdGU8dHlwZW5hbWUuLi4gQXJndW1lbnRzPgoraW5saW5lIHZvaWQgaW5mb0xv
ZyhMb2dnZXImIGxvZ2dlciwgY29uc3QgQXJndW1lbnRzJi4uLiBhcmd1bWVudHMpCit7CisjaWYg
IUxPR19ESVNBQkxFRCB8fCAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICBsb2dnZXIuaW5mbyhM
b2dFTUUsIGFyZ3VtZW50cy4uLik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShsb2dnZXIpOwor
I2VuZGlmCit9CisKK3N0YXRpYyB2b2lkIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJl
ZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24sIFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3Vy
YXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+
JiYsIFJlZjxMb2dnZXI+JiYsIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmKTsKIAot
dm9pZCBOYXZpZ2F0b3JFTUU6OnJlcXVlc3RNZWRpYUtleVN5c3RlbUFjY2VzcyhOYXZpZ2F0b3Im
LCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBWZWN0b3I8TWVk
aWFLZXlTeXN0ZW1Db25maWd1cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCit2b2lkIE5hdmlnYXRvckVNRTo6cmVxdWVzdE1l
ZGlhS2V5U3lzdGVtQWNjZXNzKE5hdmlnYXRvciYgbmF2aWdhdG9yLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBWZWN0b3I8TWVkaWFLZXlTeXN0ZW1Db25maWd1
cmF0aW9uPiYmIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly93M2MuZ2l0aHViLmlvL2VuY3J5cHRlZC1tZWRp
YS8jZG9tLW5hdmlnYXRvci1yZXF1ZXN0bWVkaWFrZXlzeXN0ZW1hY2Nlc3MKICAgICAvLyBXM0Mg
RWRpdG9yJ3MgRHJhZnQgMDkgTm92ZW1iZXIgMjAxNgotICAgIExPRyhFTUUsICJFTUUgLSByZXF1
ZXN0IG1lZGlhIGtleSBzeXN0ZW0gYWNjZXNzIGZvciAlcyIsIGtleVN5c3RlbS51dGY4KCkuZGF0
YSgpKTsKKyAgICBhdXRvIGlkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZp
ZXIoIk5hdmlnYXRvckVNRSIsIF9fZnVuY19fLCAmbmF2aWdhdG9yKTsKKyAgICBSZWY8TG9nZ2Vy
PiBsb2dnZXIgPSBkb2N1bWVudC5sb2dnZXIoKTsKKworICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVu
dGlmaWVyLCAia2V5U3lzdGVtKCIsIGtleVN5c3RlbSwgIiksIHN1cHBvcnRlZENvbmZpZ3VyYXRp
b25zKCIsIHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLCAiKSIpOwogCiAgICAgLy8gV2hlbiB0aGlz
IG1ldGhvZCBpcyBpbnZva2VkLCB0aGUgdXNlciBhZ2VudCBtdXN0IHJ1biB0aGUgZm9sbG93aW5n
IHN0ZXBzOgogICAgIC8vIDEuIElmIGtleVN5c3RlbSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZXR1
cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYSBuZXdseSBjcmVhdGVkIFR5cGVFcnJvci4KICAg
ICAvLyAyLiBJZiBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyBpcyBlbXB0eSwgcmV0dXJuIGEgcHJv
bWlzZSByZWplY3RlZCB3aXRoIGEgbmV3bHkgY3JlYXRlZCBUeXBlRXJyb3IuCiAgICAgaWYgKGtl
eVN5c3RlbS5pc0VtcHR5KCkgfHwgc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMuaXNFbXB0eSgpKSB7
CisgICAgICAgIGluZm9Mb2cobG9nZ2VyLCBpZGVudGlmaWVyLCAiUmVqZWN0ZWQ6IGVtcHR5IGtl
eVN5c3RlbSgiLCBrZXlTeXN0ZW0uaXNFbXB0eSgpLCAiKSBvciBlbXB0eSBzdXBwb3J0ZWRDb25m
aWd1cmF0aW9ucygiLCBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5pc0VtcHR5KCksICIpIik7CiAg
ICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgZG9jdW1lbnQucG9zdFRhc2soW2tleVN5c3RlbSwgc3VwcG9ydGVkQ29uZmlndXJh
dGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZSA9IFdURk1v
dmUocHJvbWlzZSksICZkb2N1bWVudF0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSBtdXRhYmxl
IHsKKyAgICBkb2N1bWVudC5wb3N0VGFzayhba2V5U3lzdGVtLCBzdXBwb3J0ZWRDb25maWd1cmF0
aW9ucyA9IFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKSwgJmRvY3VtZW50LCBsb2dnZXIgPSBXVEZNb3ZlKGxvZ2dlciksIGlkZW50aWZp
ZXIgPSBXVEZNb3ZlKGlkZW50aWZpZXIpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIG11dGFi
bGUgewogICAgICAgICAvLyAzLiBMZXQgZG9jdW1lbnQgYmUgdGhlIGNhbGxpbmcgY29udGV4dCdz
IERvY3VtZW50LgogICAgICAgICAvLyA0LiBMZXQgb3JpZ2luIGJlIHRoZSBvcmlnaW4gb2YgZG9j
dW1lbnQuCiAgICAgICAgIC8vIDUuIExldCBwcm9taXNlIGJlIGEgbmV3IHByb21pc2UuCkBAIC02
MywxOCArMTA3LDE4IEBAIHZvaWQgTmF2aWdhdG9yRU1FOjpyZXF1ZXN0TWVkaWFLZXlTeXN0ZW1B
Y2Nlc3MoTmF2aWdhdG9yJiwgRG9jdW1lbnQmIGRvY3VtZW50LCBjCiAgICAgICAgIC8vIDYuMS4g
SWYga2V5U3lzdGVtIGlzIG5vdCBvbmUgb2YgdGhlIEtleSBTeXN0ZW1zIHN1cHBvcnRlZCBieSB0
aGUgdXNlciBhZ2VudCwgcmVqZWN0IHByb21pc2Ugd2l0aCBhIE5vdFN1cHBvcnRlZEVycm9yLgog
ICAgICAgICAvLyAgICAgIFN0cmluZyBjb21wYXJpc29uIGlzIGNhc2Utc2Vuc2l0aXZlLgogICAg
ICAgICBpZiAoIUNETTo6c3VwcG9ydHNLZXlTeXN0ZW0oa2V5U3lzdGVtKSkgewotICAgICAgICAg
ICAgTE9HKEVNRSwgIkVNRSAtICVzIGlzIG5vdCBzdXBwb3J0ZWQiLCBrZXlTeXN0ZW0udXRmOCgp
LmRhdGEoKSk7CisgICAgICAgICAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlamVj
dGVkOiBrZXlTeXN0ZW0oIiwga2V5U3lzdGVtLCAiKSBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAg
ICAgICBwcm9taXNlLT5yZWplY3QoTm90U3VwcG9ydGVkRXJyb3IpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gNi4yLiBMZXQgaW1wbGVtZW50YXRpb24gYmUg
dGhlIGltcGxlbWVudGF0aW9uIG9mIGtleVN5c3RlbS4KICAgICAgICAgYXV0byBpbXBsZW1lbnRh
dGlvbiA9IENETTo6Y3JlYXRlKGRvY3VtZW50LCBrZXlTeXN0ZW0pOwotICAgICAgICB0cnlOZXh0
U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92ZShz
dXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOworICAgICAgICB0cnlO
ZXh0U3VwcG9ydGVkQ29uZmlndXJhdGlvbihXVEZNb3ZlKGltcGxlbWVudGF0aW9uKSwgV1RGTW92
ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIFdURk1vdmUocHJvbWlzZSksIFdURk1vdmUobG9n
Z2VyKSwgV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgfSk7CiB9CiAKLXN0YXRpYyB2b2lkIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24s
IFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJh
dGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyB2b2lkIHRy
eU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFJlZlB0cjxDRE0+JiYgaW1wbGVtZW50YXRpb24s
IFZlY3RvcjxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+JiYgc3VwcG9ydGVkQ29uZmlndXJh
dGlvbnMsIFJlZlB0cjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgUmVmPExvZ2dlcj4mJiBs
b2dnZXIsIFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllciYmIGlkZW50aWZpZXIpCiB7CiAg
ICAgLy8gNi4zLiBGb3IgZWFjaCB2YWx1ZSBpbiBzdXBwb3J0ZWRDb25maWd1cmF0aW9uczoKICAg
ICBpZiAoIXN1cHBvcnRlZENvbmZpZ3VyYXRpb25zLmlzRW1wdHkoKSkgewpAQCAtODQsNyArMTI4
LDcgQEAgc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENE
TT4mJiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE0KICAgICAgICAgTWVkaWFLZXlTeXN0ZW1Db25m
aWd1cmF0aW9uIGNhbmRpZGF0ZUNvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZp
Z3VyYXRpb25zLmZpcnN0KCkpOwogICAgICAgICBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucy5yZW1v
dmUoMCk7CiAKLSAgICAgICAgQ0RNOjpTdXBwb3J0ZWRDb25maWd1cmF0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2sgPSBbaW1wbGVtZW50YXRpb24gPSBpbXBsZW1lbnRhdGlvbiwgc3VwcG9ydGVkQ29uZmln
dXJhdGlvbnMgPSBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgcHJvbWlzZV0gKE9w
dGlvbmFsPE1lZGlhS2V5U3lzdGVtQ29uZmlndXJhdGlvbj4gc3VwcG9ydGVkQ29uZmlndXJhdGlv
bikgbXV0YWJsZSB7CisgICAgICAgIENETTo6U3VwcG9ydGVkQ29uZmlndXJhdGlvbkNhbGxiYWNr
IGNhbGxiYWNrID0gW2ltcGxlbWVudGF0aW9uID0gaW1wbGVtZW50YXRpb24sIHN1cHBvcnRlZENv
bmZpZ3VyYXRpb25zID0gV1RGTW92ZShzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyksIHByb21pc2Us
IGxvZ2dlciA9IFdURk1vdmUobG9nZ2VyKSwgaWRlbnRpZmllciA9IFdURk1vdmUoaWRlbnRpZmll
cildIChPcHRpb25hbDxNZWRpYUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IHN1cHBvcnRlZENvbmZp
Z3VyYXRpb24pIG11dGFibGUgewogICAgICAgICAgICAgLy8gNi4zLjMuIElmIHN1cHBvcnRlZCBj
b25maWd1cmF0aW9uIGlzIG5vdCBOb3RTdXBwb3J0ZWQsIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBz
OgogICAgICAgICAgICAgaWYgKHN1cHBvcnRlZENvbmZpZ3VyYXRpb24pIHsKICAgICAgICAgICAg
ICAgICAvLyA2LjMuMy4xLiBMZXQgYWNjZXNzIGJlIGEgbmV3IE1lZGlhS2V5U3lzdGVtQWNjZXNz
IG9iamVjdCwgYW5kIGluaXRpYWxpemUgaXQgYXMgZm9sbG93czoKQEAgLTk3LDE4ICsxNDEsMTkg
QEAgc3RhdGljIHZvaWQgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oUmVmUHRyPENETT4m
JiBpbXBsZW1lbnRhdGlvbiwgVmVjdG9yPE0KICAgICAgICAgICAgICAgICBhdXRvIGFjY2VzcyA9
IE1lZGlhS2V5U3lzdGVtQWNjZXNzOjpjcmVhdGUoa2V5U3lzdGVtLCBXVEZNb3ZlKHN1cHBvcnRl
ZENvbmZpZ3VyYXRpb24udmFsdWUoKSksIGltcGxlbWVudGF0aW9uLnJlbGVhc2VOb25OdWxsKCkp
OwogCiAgICAgICAgICAgICAgICAgLy8gNi4zLjMuMi4gUmVzb2x2ZSBwcm9taXNlIHdpdGggYWNj
ZXNzIGFuZCBhYm9ydCB0aGUgcGFyYWxsZWwgc3RlcHMgb2YgdGhpcyBhbGdvcml0aG0uCisgICAg
ICAgICAgICAgICAgaW5mb0xvZyhsb2dnZXIsIGlkZW50aWZpZXIsICJSZXNvbHZlZDoga2V5U3lz
dGVtKCIsIGtleVN5c3RlbSwgIiksIHN1cHBvcnRlZENvbmZpZ3VyYXRpb24oIiwgc3VwcG9ydGVk
Q29uZmlndXJhdGlvbiwgIikiKTsKICAgICAgICAgICAgICAgICBwcm9taXNlLT5yZXNvbHZlV2l0
aE5ld2x5Q3JlYXRlZDxJRExJbnRlcmZhY2U8TWVkaWFLZXlTeXN0ZW1BY2Nlc3M+PihXVEZNb3Zl
KGFjY2VzcykpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAg
ICAgICAgICAgdHJ5TmV4dFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RGTW92ZShpbXBsZW1lbnRh
dGlvbiksIFdURk1vdmUoc3VwcG9ydGVkQ29uZmlndXJhdGlvbnMpLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICAgICAgICAgIHRyeU5leHRTdXBwb3J0ZWRDb25maWd1cmF0aW9uKFdURk1vdmUoaW1w
bGVtZW50YXRpb24pLCBXVEZNb3ZlKHN1cHBvcnRlZENvbmZpZ3VyYXRpb25zKSwgV1RGTW92ZShw
cm9taXNlKSwgV1RGTW92ZShsb2dnZXIpLCBXVEZNb3ZlKGlkZW50aWZpZXIpKTsKICAgICAgICAg
fTsKICAgICAgICAgaW1wbGVtZW50YXRpb24tPmdldFN1cHBvcnRlZENvbmZpZ3VyYXRpb24oV1RG
TW92ZShjYW5kaWRhdGVDb25maWd1cmF0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0KICAgICAvLyA2LjQuIFJlamVjdCBwcm9taXNlIHdpdGggYSBO
b3RTdXBwb3J0ZWRFcnJvci4KKyAgICBpbmZvTG9nKGxvZ2dlciwgaWRlbnRpZmllciwgIlJlamVj
dGVkOiBlbXB0eSBzdXBwb3J0ZWRDb25maWd1cmF0aW9ucyIpOwogICAgIHByb21pc2UtPnJlamVj
dChOb3RTdXBwb3J0ZWRFcnJvcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Nv
dXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggMWI4YjgyM2NjN2Yx
ZTZhMDFjNDM0NWY2MjVlOTM1MWExYzkyMmYwMS4uNTUzZjk2NDZjYjg5MjFhOTU3ZGE4NzdlZGI2
NzBkZjdlNWZmOTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysr
IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTE4MjYsNiArMTgyNiw3IEBAIHBsYXRm
b3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwCiBwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5jcHAKIAog
cGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNRmFjdG9yeS5jcHAKK3BsYXRmb3JtL2VuY3J5cHRl
ZG1lZGlhL0NETUxvZ2dpbmcuY3BwCiBwbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Qcml2YXRl
LmNwcAogcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNUHJveHkuY3BwCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2MjU2NGEz
N2VjYzdjZDdjY2VjZmJlYzhkYmZjN2Q0MGI5YjAxNGI0Li5lYTk4ZWYwMTczN2NkMGMyMzU3Njg1
ZGRmOWVkYWJkYTc5M2U0OWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00MTM0LDYgKzQxMzQsNyBAQAogCQlDRDhCNUE0NjE4
MERGRjRFMDA4QjhFNjUgLyogVmlkZW9UcmFja01lZGlhU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRDhCNUE0NTE4MERGRjRFMDA4QjhFNjUg
LyogVmlkZW9UcmFja01lZGlhU291cmNlLmggKi87IH07CiAJCUNEOEI1QTQ5MTgwRTEzOEIwMDhC
OEU2NSAvKiBUZXh0VHJhY2tNZWRpYVNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Q4QjVBNDgxODBFMTM4QjAwOEI4RTY1IC8qIFRleHRUcmFj
a01lZGlhU291cmNlLmggKi87IH07CiAJCUNEOEI1QTRDMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRp
b1RyYWNrTWVkaWFTb3VyY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IENEOEI1QTRCMTgwRTE3QzAwMDhCOEU2NSAvKiBBdWRpb1RyYWNrTWVkaWFTb3Vy
Y2UuaCAqLzsgfTsKKwkJQ0Q4RDMwNkYyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOEQzMDZEMjNB
RDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi87IH07CiAJCUNEOTJGNTEzMjI2MEZGRUUw
MEY4N0JCMyAvKiBEb2N1bWVudEZ1bGxzY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTJGNTEwMjI2MEZGRUUwMEY4N0JCMyAvKiBEb2N1bWVu
dEZ1bGxzY3JlZW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDRDkyRjUxODIyNjEwMzgyMDBGODdCQjMgLyogRnVsbHNjcmVlbk1hbmFnZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEOTJGNTE2MjI2
MTAzODIwMEY4N0JCMyAvKiBGdWxsc2NyZWVuTWFuYWdlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNEOTRBNUREMUY3MUQ1RDgwMEY1MjVDNSAv
KiBDRE1DbGVhcktleS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDRDk0QTVEQjFGNzFDQkIwMDBGNTI1QzUgLyogQ0RNQ2xlYXJLZXkuY3BwICovOyB9
OwpAQCAtMTM5MzQsNiArMTM5MzUsOCBAQAogCQlDRDhDNkMyNzIyRkREQTkwMDBBNzIwQUIgLyog
SlNSZW1vdGVQbGF5YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTUmVtb3RlUGxheWJhY2tBdmFpbGFiaWxpdHlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUNEOEM2QzI4MjJGRERBOTAwMEE3MjBBQiAvKiBKU1JlbW90ZVBs
YXliYWNrQXZhaWxhYmlsaXR5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNSZW1vdGVQbGF5
YmFja0F2YWlsYWJpbGl0eUNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUNEOEM2QzI5MjJGRERBOTEwMEE3MjBBQiAvKiBKU1JlbW90ZVBsYXliYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUmVtb3RlUGxheWJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q4RDMwNkQyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q0RNTG9nZ2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDhEMzA2RTIzQUQ0
RkE4MDA2QzM5NzUgLyogQ0RNTG9nZ2luZy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDRE1Mb2dn
aW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MEYyMjYwRkZFRTAw
Rjg3QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRG9jdW1lbnRGdWxsc2NyZWVu
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTAyMjYwRkZFRTAwRjg3
QkIzIC8qIERvY3VtZW50RnVsbHNjcmVlbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudEZ1bGxz
Y3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0Q5MkY1MTYyMjYxMDM4MjAw
Rjg3QkIzIC8qIEZ1bGxzY3JlZW5NYW5hZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZ1bGxzY3JlZW5N
YW5hZ2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjM3Niw2ICsyNjM3OSw4
IEBACiAJCQkJQ0Q5NEE1Q0MxRjcxQ0I2OTAwRjUyNUM1IC8qIENETVJlcXVpcmVtZW50LmggKi8s
CiAJCQkJQ0Q5NEE1RDAxRjcxQ0I2QjAwRjUyNUM1IC8qIENETVJlc3RyaWN0aW9ucy5oICovLAog
CQkJCUNEOTRBNUQ1MUY3MUNCNkQwMEY1MjVDNSAvKiBDRE1TZXNzaW9uVHlwZS5oICovLAorCQkJ
CUNEOEQzMDZEMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggKi8sCisJCQkJQ0Q4RDMw
NkUyM0FENEZBODAwNkMzOTc1IC8qIENETUxvZ2dpbmcuY3BwICovLAogCQkJKTsKIAkJCXBhdGgg
PSBlbmNyeXB0ZWRtZWRpYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMDQyNiw2
ICszMDQzMSw3IEBACiAJCQkJMDdFOUUxMkUxOEY1RTI3NjAwMTFBM0E0IC8qIEluYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5NDE3OTIxNjZF
ODU1RjAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDc5
NDE3OTQxNjZFQTA0RTAwOTQxNkMyIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUNEOEQzMDZGMjNBRDRGQTgwMDZDMzk3NSAvKiBDRE1Mb2dnaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwN0I0NDJENzE2NkM3MEIwMDA1NTZDQUQgLyogSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZUFWRi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDdBQTZCNkMxNjZEMkMxMzAwRDQ1
NjcxIC8qIEluYmFuZFRleHRUcmFja1ByaXZhdGVBVkZPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwN0NFNzdENTE2NzEyQTZBMDBDNTVBNDcgLyogSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9l
bmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vu
Y3J5cHRlZG1lZGlhL0NETUxvZ2dpbmcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk4MjMwZTQzNmVjYmZmYjY1
NWI4N2UzZGNkMDUzOTJmNzVlZTlmOTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmNwcApAQCAtMCwwICsxLDE1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDRE1Mb2dnaW5n
LmgiCisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBKQorCisjaW5jbHVkZSAiQ0RNS2V5U3lz
dGVtQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIkNETU1lZGlhQ2FwYWJpbGl0eS5oIgorI2lu
Y2x1ZGUgIkNETVJlc3RyaWN0aW9ucy5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlFbmNyeXB0aW9u
U2NoZW1lLmgiCisjaW5jbHVkZSAiSlNNZWRpYUtleU1lc3NhZ2VFdmVudC5oIgorI2luY2x1ZGUg
IkpTTWVkaWFLZXlTZXNzaW9uVHlwZS5oIgorI2luY2x1ZGUgIkpTTWVkaWFLZXlTdGF0dXNNYXAu
aCIKKyNpbmNsdWRlICJKU01lZGlhS2V5c1JlcXVpcmVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0pT
T05WYWx1ZXMuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUmVmPEpTT046Ok9i
amVjdD4gdG9KU09OT2JqZWN0KGNvbnN0IENETU1lZGlhQ2FwYWJpbGl0eSYgY2FwYWJpbGl0eSkK
K3sKKyAgICBhdXRvIG9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CisgICAgb2JqZWN0
LT5zZXRTdHJpbmcoImNvbnRlbnRUeXBlIl9zLCBjYXBhYmlsaXR5LmNvbnRlbnRUeXBlKTsKKyAg
ICBvYmplY3QtPnNldFN0cmluZygicm9idXN0bmVzcyJfcywgY2FwYWJpbGl0eS5yb2J1c3RuZXNz
KTsKKyAgICBpZiAoY2FwYWJpbGl0eS5lbmNyeXB0aW9uU2NoZW1lKQorICAgICAgICBvYmplY3Qt
PnNldFN0cmluZygiZW5jcnlwdGlvblNjaGVtZSJfcywgY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoY2FwYWJpbGl0eS5lbmNyeXB0aW9uU2NoZW1lLnZhbHVlKCkpKTsKKyAgICByZXR1cm4gb2Jq
ZWN0OworfQorCitzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gdG9KU09OT2JqZWN0KGNvbnN0IENE
TVJlc3RyaWN0aW9ucyYgcmVzdHJpY3Rpb25zKQoreworICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKKyAgICBvYmplY3QtPnNldEJvb2xlYW4oImRpc3RpbmN0aXZlSWRl
bnRpZmllckRlbmllZCJfcywgcmVzdHJpY3Rpb25zLmRpc3RpbmN0aXZlSWRlbnRpZmllckRlbmll
ZCk7CisgICAgb2JqZWN0LT5zZXRCb29sZWFuKCJwZXJzaXN0ZW50U3RhdGVEZW5pZWQiX3MsIHJl
c3RyaWN0aW9ucy5wZXJzaXN0ZW50U3RhdGVEZW5pZWQpOworICAgIGF1dG8gZGVuaWVkU2Vzc2lv
blR5cGVzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byB0eXBlIDogcmVz
dHJpY3Rpb25zLmRlbmllZFNlc3Npb25UeXBlcykKKyAgICAgICAgZGVuaWVkU2Vzc2lvblR5cGVz
LT5wdXNoU3RyaW5nKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpKTsKKyAgICBvYmpl
Y3QtPnNldEFycmF5KCJkZW5pZWRTZXNzaW9uVHlwZXMiX3MsIFdURk1vdmUoZGVuaWVkU2Vzc2lv
blR5cGVzKSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworc3RhdGljIFJlZjxKU09OOjpPYmpl
Y3Q+IHRvSlNPTk9iamVjdChjb25zdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1
cmF0aW9uKQoreworICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKKyAg
ICBvYmplY3QtPnNldFN0cmluZygibGFiZWwiX3MsIGNvbmZpZ3VyYXRpb24ubGFiZWwpOworCisg
ICAgYXV0byBpbml0RGF0YVR5cGVzID0gSlNPTjo6QXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAo
YXV0byBpbml0RGF0YVR5cGUgOiBjb25maWd1cmF0aW9uLmluaXREYXRhVHlwZXMpCisgICAgICAg
IGluaXREYXRhVHlwZXMtPnB1c2hTdHJpbmcoaW5pdERhdGFUeXBlKTsKKyAgICBvYmplY3QtPnNl
dEFycmF5KCJpbml0RGF0YVR5cGVzIl9zLCBXVEZNb3ZlKGluaXREYXRhVHlwZXMpKTsKKworICAg
IGF1dG8gYXVkaW9DYXBhYmlsaXRpZXMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9y
IChhdXRvIGNhcGFiaWxpdHkgOiBjb25maWd1cmF0aW9uLmF1ZGlvQ2FwYWJpbGl0aWVzKQorICAg
ICAgICBhdWRpb0NhcGFiaWxpdGllcy0+cHVzaE9iamVjdCh0b0pTT05PYmplY3QoY2FwYWJpbGl0
eSkpOworICAgIG9iamVjdC0+c2V0QXJyYXkoImF1ZGlvQ2FwYWJpbGl0aWVzIl9zLCBXVEZNb3Zl
KGF1ZGlvQ2FwYWJpbGl0aWVzKSk7CisKKyAgICBhdXRvIHZpZGVvQ2FwYWJpbGl0aWVzID0gSlNP
Tjo6QXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byBjYXBhYmlsaXR5IDogY29uZmlndXJh
dGlvbi52aWRlb0NhcGFiaWxpdGllcykKKyAgICAgICAgdmlkZW9DYXBhYmlsaXRpZXMtPnB1c2hP
YmplY3QodG9KU09OT2JqZWN0KGNhcGFiaWxpdHkpKTsKKyAgICBvYmplY3QtPnNldEFycmF5KCJ2
aWRlb0NhcGFiaWxpdGllcyJfcywgV1RGTW92ZSh2aWRlb0NhcGFiaWxpdGllcykpOworCisgICAg
b2JqZWN0LT5zZXRTdHJpbmcoImRpc3RpbmN0aXZlSWRlbnRpZmllciJfcywgY29udmVydEVudW1l
cmF0aW9uVG9TdHJpbmcoY29uZmlndXJhdGlvbi5kaXN0aW5jdGl2ZUlkZW50aWZpZXIpKTsKKyAg
ICBvYmplY3QtPnNldFN0cmluZygicGVyc2lzdGVudFN0YXRlIl9zLCBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyhjb25maWd1cmF0aW9uLnBlcnNpc3RlbnRTdGF0ZSkpOworCisgICAgYXV0byBz
ZXNzaW9uVHlwZXMgPSBKU09OOjpBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRvIHR5cGUg
OiBjb25maWd1cmF0aW9uLnNlc3Npb25UeXBlcykKKyAgICAgICAgc2Vzc2lvblR5cGVzLT5wdXNo
U3RyaW5nKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpKTsKKyAgICBvYmplY3QtPnNl
dEFycmF5KCJzZXNzaW9uVHlwZXMiX3MsIFdURk1vdmUoc2Vzc2lvblR5cGVzKSk7CisKKyAgICBy
ZXR1cm4gb2JqZWN0OworfQorCitzdGF0aWMgU3RyaW5nIHRvSlNPTlN0cmluZyhjb25zdCBDRE1L
ZXlTeXN0ZW1Db25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0pT
T05PYmplY3QoY29uZmlndXJhdGlvbiktPnRvSlNPTlN0cmluZygpOworfQorCitzdGF0aWMgU3Ry
aW5nIHRvSlNPTlN0cmluZyhjb25zdCBDRE1NZWRpYUNhcGFiaWxpdHkmIGNhcGFiaWxpdHkpCit7
CisgICAgcmV0dXJuIHRvSlNPTk9iamVjdChjYXBhYmlsaXR5KS0+dG9KU09OU3RyaW5nKCk7Cit9
CisKK3N0YXRpYyBTdHJpbmcgdG9KU09OU3RyaW5nKGNvbnN0IENETVJlc3RyaWN0aW9ucyYgcmVz
dHJpY3Rpb25zKQoreworICAgIHJldHVybiB0b0pTT05PYmplY3QocmVzdHJpY3Rpb25zKS0+dG9K
U09OU3RyaW5nKCk7Cit9CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK1N0cmluZyBMb2dBcmd1
bWVudDxXZWJDb3JlOjpDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uPjo6dG9TdHJpbmcoY29uc3Qg
V2ViQ29yZTo6Q0RNS2V5U3lzdGVtQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAg
ICByZXR1cm4gdG9KU09OU3RyaW5nKGNvbmZpZ3VyYXRpb24pOworfQorCitTdHJpbmcgTG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNTWVkaWFDYXBhYmlsaXR5Pjo6dG9TdHJpbmcoY29uc3QgV2ViQ29y
ZTo6Q0RNTWVkaWFDYXBhYmlsaXR5JiBjYXBhYmlsaXR5KQoreworICAgIHJldHVybiB0b0pTT05T
dHJpbmcoY2FwYWJpbGl0eSk7Cit9CisKK1N0cmluZyBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1S
ZXN0cmljdGlvbnM+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmIHJl
c3RyaWN0aW9ucykKK3sKKyAgICByZXR1cm4gdG9KU09OU3RyaW5nKHJlc3RyaWN0aW9ucyk7Cit9
CisKK1N0cmluZyBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1FbmNyeXB0aW9uU2NoZW1lPjo6dG9T
dHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZSYgdHlwZSkKK3sKKyAgICBy
ZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK1N0cmluZyBMb2dB
cmd1bWVudDxXZWJDb3JlOjpDRE1LZXlTdGF0dXM+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpD
RE1LZXlTdGF0dXMmIHR5cGUpCit7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKHR5cGUpOworfQorCitTdHJpbmcgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNTWVzc2FnZVR5
cGU+Ojp0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1NZXNzYWdlVHlwZSYgdHlwZSkKK3sKKyAg
ICByZXR1cm4gY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodHlwZSk7Cit9CisKK1N0cmluZyBM
b2dBcmd1bWVudDxXZWJDb3JlOjpDRE1SZXF1aXJlbWVudD46OnRvU3RyaW5nKGNvbnN0IFdlYkNv
cmU6OkNETVJlcXVpcmVtZW50JiB0eXBlKQoreworICAgIHJldHVybiBjb252ZXJ0RW51bWVyYXRp
b25Ub1N0cmluZyh0eXBlKTsKK30KKworU3RyaW5nIExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNl
c3Npb25UeXBlPjo6dG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNU2Vzc2lvblR5cGUmIHR5cGUp
Cit7CisgICAgcmV0dXJuIGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHR5cGUpOworfQorCit9
CisKKyNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01FRElBKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZW5jcnlwdGVkbWVkaWEvQ0RNTG9nZ2luZy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMx
MzllMzUwZmM1MjE3ZTU0YjRiYWQ1OTFhMjhmOGY0ZTFiNmJmMzgKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lbmNyeXB0ZWRtZWRpYS9DRE1Mb2dnaW5nLmgKQEAg
LTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKEVO
Q1JZUFRFRF9NRURJQSkKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBDRE1LZXlTeXN0ZW1Db25maWd1cmF0aW9uOworc3Ry
dWN0IENETU1lZGlhQ2FwYWJpbGl0eTsKK3N0cnVjdCBDRE1SZXN0cmljdGlvbnM7CisKK2VudW0g
Y2xhc3MgQ0RNRW5jcnlwdGlvblNjaGVtZSA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENETUtleVN0
YXR1cyA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIENETU1lc3NhZ2VUeXBlIDogdWludDhfdDsKK2Vu
dW0gY2xhc3MgQ0RNUmVxdWlyZW1lbnQgOiB1aW50OF90OworZW51bSBjbGFzcyBDRE1TZXNzaW9u
VHlwZSA6IHVpbnQ4X3Q7CisKK30KKworbmFtZXNwYWNlIFdURiB7CisKK3RlbXBsYXRlPHR5cGVu
YW1lPgorc3RydWN0IExvZ0FyZ3VtZW50OworCit0ZW1wbGF0ZSA8Pgorc3RydWN0IExvZ0FyZ3Vt
ZW50PFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24+IHsKKyAgICBzdGF0aWMgU3Ry
aW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUtleVN5c3RlbUNvbmZpZ3VyYXRpb24mKTsK
K307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNTWVkaWFD
YXBhYmlsaXR5PiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpD
RE1NZWRpYUNhcGFiaWxpdHkmKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJndW1l
bnQ8V2ViQ29yZTo6Q0RNUmVzdHJpY3Rpb25zPiB7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBXZWJDb3JlOjpDRE1SZXN0cmljdGlvbnMmKTsKK307CisKK3RlbXBsYXRlIDw+Citz
dHJ1Y3QgTG9nQXJndW1lbnQ8V2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZT4geworICAgIHN0
YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2ViQ29yZTo6Q0RNRW5jcnlwdGlvblNjaGVtZSYp
OworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3JlOjpDRE1LZXlT
dGF0dXM+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFdlYkNvcmU6OkNETUtl
eVN0YXR1cyYpOworfTsKKwordGVtcGxhdGUgPD4KK3N0cnVjdCBMb2dBcmd1bWVudDxXZWJDb3Jl
OjpDRE1NZXNzYWdlVHlwZT4geworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgV2Vi
Q29yZTo6Q0RNTWVzc2FnZVR5cGUmKTsKK307CisKK3RlbXBsYXRlIDw+CitzdHJ1Y3QgTG9nQXJn
dW1lbnQ8V2ViQ29yZTo6Q0RNUmVxdWlyZW1lbnQ+IHsKKyAgICBzdGF0aWMgU3RyaW5nIHRvU3Ry
aW5nKGNvbnN0IFdlYkNvcmU6OkNETVJlcXVpcmVtZW50Jik7Cit9OworCit0ZW1wbGF0ZSA8Pgor
c3RydWN0IExvZ0FyZ3VtZW50PFdlYkNvcmU6OkNETVNlc3Npb25UeXBlPiB7CisgICAgc3RhdGlj
IFN0cmluZyB0b1N0cmluZyhjb25zdCBXZWJDb3JlOjpDRE1TZXNzaW9uVHlwZSYpOworfTsKKwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKEVOQ1JZUFRFRF9NRURJQSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>