<?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>175620</bug_id>
          
          <creation_ts>2017-08-15 21:57:15 -0700</creation_ts>
          <short_desc>[WebCrypto] Push WorkQueue dispatches for HKDF, HMAC, PBKDF2 algorithms into shared code</short_desc>
          <delta_ts>2017-08-29 04:31:31 -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="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>buildbot</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339054</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 21:57:15 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339059</commentid>
    <comment_count>1</comment_count>
      <attachid>318229</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-15 22:06:41 -0700</bug_when>
    <thetext>Created attachment 318229
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339061</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-15 22:08:23 -0700</bug_when>
    <thetext>Attachment 318229 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339164</commentid>
    <comment_count>3</comment_count>
      <attachid>318259</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-16 07:45:27 -0700</bug_when>
    <thetext>Created attachment 318259
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339165</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-16 07:47:12 -0700</bug_when>
    <thetext>Attachment 318259 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339994</commentid>
    <comment_count>5</comment_count>
      <attachid>318482</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-18 00:12:22 -0700</bug_when>
    <thetext>Created attachment 318482
Patch

Ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340565</commentid>
    <comment_count>6</comment_count>
      <attachid>318625</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-21 04:20:09 -0700</bug_when>
    <thetext>Created attachment 318625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342346</commentid>
    <comment_count>7</comment_count>
      <attachid>319070</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-25 01:19:34 -0700</bug_when>
    <thetext>Created attachment 319070
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1342884</commentid>
    <comment_count>8</comment_count>
      <attachid>319070</attachid>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2017-08-28 12:16:59 -0700</bug_when>
    <thetext>Comment on attachment 319070
Patch

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

Looks good to me. r=me. Good job.

&gt; Source/WebCore/crypto/mac/CryptoAlgorithmHMACMac.cpp:102
&gt; +    return signature.size() == expectedSignature.size() &amp;&amp; !constantTimeMemcmp(expectedSignature.data(), signature.data(), expectedSignature.size());

Forget to copy a comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343074</commentid>
    <comment_count>9</comment_count>
      <attachid>319248</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 00:54:11 -0700</bug_when>
    <thetext>Created attachment 319248
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343090</commentid>
    <comment_count>10</comment_count>
      <attachid>319248</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 04:30:51 -0700</bug_when>
    <thetext>Comment on attachment 319248
Patch for landing

Clearing flags on attachment: 319248

Committed r221294: &lt;http://trac.webkit.org/changeset/221294&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343091</commentid>
    <comment_count>11</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2017-08-29 04:30:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343092</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-29 04:31:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/34130599&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318229</attachid>
            <date>2017-08-15 22:06:41 -0700</date>
            <delta_ts>2017-08-16 07:45:23 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-175620-20170816070639.patch</filename>
            <type>text/plain</type>
            <size>24844</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTNmYTYxZTBjOTBhNjUz
NWNhODExMjdlYjM1N2Y2NzM4NTE4MzhkMi4uNGRhM2MxOWRiZTExOTUxM2YwMmRiYWNhMzIxNjgy
MDIxYmRhNzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtSEtERi5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1B
Qzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkp
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDoKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpkZXJpdmVCaXRzKToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaDoKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisK
IDIwMTctMDgtMTQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFdlYkRyaXZlcjogaGFuZGxlIGNsaWNrIGV2ZW50cyBvbiBvcHRpb24gZWxlbWVu
dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhLREYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSEtERi5jcHAKaW5kZXggZDkyODgxZGU5YjMwMjJhYzAxYzI1YTk1MTcwZjE1ZmFm
ODg3OWI2YS4uNTU5ZjAwNGUxMmY1MjMyMDA5NTBiZWE2ODYyNjcwMTE2ZWE5NTAyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtE
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtSEtERi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJTY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyAr
NTAsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVl
X3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3Jt
RGVyaXZlQml0cyhXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgs
IFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwg
d29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBX
VEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybURlcml2ZUJpdHMo
KnBhcmFtZXRlcnMsIGJhc2VLZXksIGxlbmd0aCk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAg
ICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3Vt
ZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAg
ICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtSEtERjo6aW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0IGZv
cm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVz
YWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJh
Y2smJiBleGNlcHRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaAppbmRleCBlYTY2MjBjZDllMjk4OWRl
ZjVjNzFjYWExYTAxYjE3Mzc1MWI4Yjk4Li4yOGViZWE3YmNmMzM4YmI0ZmVmMDZlYWY0MzVmYTEy
YWRiYzViODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1IS0RGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qg
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFj
dGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxs
YmFjayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3Jt
RGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwg
UmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0
aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAg
IHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5kZXggZjdhZmVhZDc2
NWEwZWMxYzZjOWU5OWMzNGNkNmUxODhhZmExZWMwOS4uMTEyMDM5NDAzODM1NDQ4YzdlOWExNWE0
ZGVkMjY1YWZlODI2MzJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZC5oIgogI2luY2x1ZGUg
IkNyeXB0b0tleURhdGFPY3RldFNlcXVlbmNlLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5o
IgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDx3dGYvVmFy
aWFudC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03MSwxMiArNzIsNDQgQEAgYm9vbCBD
cnlwdG9BbGdvcml0aG1ITUFDOjprZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXNEZXAKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYm
IGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgcGxhdGZvcm1TaWdu
KFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworICAgIGNvbnRleHQucmVm
KCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEgPSBX
VEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsK
KyAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybVNpZ24oa2V5LCBXVEZNb3ZlKGRhdGEpKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
ZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KKyAgICAgICAgY29udGV4dC5wb3N0VGFzayhbcmVzdWx0ID0gcmVzdWx0LnJl
bGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICB9KTsKKyAgICB9KTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBwbGF0Zm9ybVZl
cmlmeShXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3Jr
UXVldWUpOworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkg
PSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdU
Rk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewor
ICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVyaWZ5KGtleSwgV1RGTW92ZShzaWduYXR1
cmUpLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkg
eworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAg
ICAgY29udGV4dC5wb3N0VGFzayhbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgY29udGV4dC5wb3N0VGFz
ayhbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQpOworICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICB9KTsK
KyAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDRmNzAyYWQ4ZTNmOTUwMmRkMzM4YTdjOGI0
NWUxZmU3ZDBlMWFhNjAuLjQ3YWE3OGVkNTBmODBhNTRkYmVkMjAxMGI0YTQ3MzA2ZTVhNWIwYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmgKQEAgLTU4LDggKzU4LDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBpbXBvcnRLZXkoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0
ZWQmLCBjb25zdCBDcnlwdG9LZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNh
Z2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykg
ZmluYWw7CiAKICAgICBib29sIGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0
b0tleSYpIGNvbnN0OwotICAgIHZvaWQgcGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZl
Y3Rvcjx1aW50OF90PiYmLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZl
cmlmeShSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rv
cjx1aW50OF90PiYmLCBCb29sQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWlu
dDhfdD4mJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNv
bnN0IENyeXB0b0tleSYsIFZlY3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJik7CiAg
ICAgRXhjZXB0aW9uT3I8dm9pZD4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUht
YWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmLCBWZWN0b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0
b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNv
bnN0IENyeXB0b09wZXJhdGlvbkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9u
RGF0YSYsIEJvb2xDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9Dcnlw
dG9BbGdvcml0aG1QQktERjIuY3BwCmluZGV4IDVhMGU3NzJkZDQwNjI1MDdkZjFhNjRkNDE2NDU3
ODViOTA0ZjhmZjcuLjFmZTVkMGFhNTBkODFjMzBmNmEwNTA2NzA5NWFmYjFhN2VkZWQwNDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bVBCS0RGMi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyLmNwcApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRv
QWxnb3JpdGhtUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5oIgorI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00OSw3ICs1MCwyOCBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZlQml0cyhz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycwogICAgICAgICBleGNlcHRp
b25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAg
cGxhdGZvcm1EZXJpdmVCaXRzKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFzZUtleSks
IGxlbmd0aCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBj
b250ZXh0LCB3b3JrUXVldWUpOworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFz
ZUtleSA9IFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNv
bnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtRGVy
aXZlQml0cygqcGFyYW1ldGVycywgYmFzZUtleSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChy
ZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAg
ICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KAorICAgICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0K
IAogdm9pZCBDcnlwdG9BbGdvcml0aG1QQktERjI6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86Oktl
eUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBD
cnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oCmluZGV4IDFl
YjYzM2YxMjk0N2MxNTEzYTY3OWJjMTk4OWE1ZGQ4OGE0MWEwYTguLjRiNTNlYmMyOTJkNzExNTJh
ZGMzM2UyYTE2M2MxZDZkOTMxOTk3OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oCkBAIC00NSw3ICs0NSw3
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlGb3JtYXQs
IEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFj
ayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+
IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAK
LSAgICB2b2lkIHBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9y
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBs
YXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRv
S2V5Jiwgc2l6ZV90KTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5
cHQuY3BwCmluZGV4IDc2ZTQ1NDFiMmVmZWIwMWYwN2FjMDA2OTMyOGUwOGE3ODJjNDkzMzcuLmQw
MDE1ZmM5Zjc4NjU4NzkzYTU1ZWZlMjZjMThjODAzYjkwMzEwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0
LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTUzLDMyICsxNTIsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2UK
ICAgICByZXR1cm4gb3V0cHV0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRm
b3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1IS0RGOjpw
bGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywg
Y29uc3QgQ3J5cHRvS2V5JiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdU
Rk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0
byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPigq
cGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9L
ZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlw
dERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhr
ZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFz
aElkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFj
ayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0g
ZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0
byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtl
eSkua2V5KCksIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgaGtkZlBhcmFtZXRlcnMuaW5m
b1ZlY3RvcigpLCBsZW5ndGggLyA4LCBoa2RmUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7Cisg
ICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJv
ciB9OwogCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZN
b3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDQ5Yzk1OGNiY2RkZTRjYzhlZGUz
YTc0YzliNzVhZTlkZjMwZDYyMmIuLjQyNWE1ZmMxYmRlOTQ4OWRlNjA2NTNlNjIyNjVjNmE3NmVh
MjUwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtSE1BQ0dDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVk
ZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlITUFDLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1
ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFw
aGljVXRpbGl0aWVzLmg+CiAKQEAgLTg5LDU2ICs4OCwzMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25z
dCBWZQogICAgIHJldHVybiBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBrZXksIGRhdGEu
Zmlyc3QsIGRhdGEuc2Vjb25kKTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0
Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdU
Rk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZj
b250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5
cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5
cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAg
ICAgICAgaWYgKGFsZ29yaXRobSAhPSBHQ1JZX01BQ19OT05FKSB7Ci0gICAgICAgICAgICBhdXRv
IHJlc3VsdCA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAg
ICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVy
IGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAg
ICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3Vs
dCA9IFdURk1vdmUoKnJlc3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGV4Y2VwdGlv
bkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0
b0tleUhNQUM+KGtleSk7CisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdv
cml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxnb3Jp
dGhtID09IEdDUllfTUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworCisgICAgYXV0byByZXN1bHQgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3Jp
dGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGlmICgh
cmVzdWx0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKwor
ICAgIHJldHVybiBXVEZNb3ZlKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhN
QUM6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4m
JiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJv
b2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYg
a2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEp
CiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdU
Rk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92
ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkuZ2V0KCkpOwot
ICAgICAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShobWFjS2V5
Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAoYWxnb3JpdGhtICE9IEdD
UllfTUFDX05PTkUpIHsKLSAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBjYWxj
dWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKGV4cGVjdGVkU2lnbmF0dXJlKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0
aW1pbmcgYXR0YWNrcy4KLSAgICAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5z
aXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUtPnNpemUoKSAmJiAhY29uc3RhbnRUaW1lTWVtY21w
KGV4cGVjdGVkU2lnbmF0dXJlLT5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2ln
bmF0dXJlLT5zaXplKCkpOwotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCByZXN1bHQsIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENy
eXB0b0tleUhNQUM+KGtleSk7CisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RB
bGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxn
b3JpdGhtID09IEdDUllfTUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVy
YXRpb25FcnJvciB9OworCisgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNp
Z25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CisgICAgaWYgKCFleHBlY3RlZFNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICAvLyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29t
cGFyaXNvbiB0byBwcmV2ZW50IHRpbWluZyBhdHRhY2tzLgorICAgIHJldHVybiBzaWduYXR1cmUu
c2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLT5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1lbWNt
cChleHBlY3RlZFNpZ25hdHVyZS0+ZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNp
Z25hdHVyZS0+c2l6ZSgpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gQ3J5cHRvQWxnb3JpdGht
SE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNh
dGVkJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXlITUFDJiBrZXksIGNvbnN0IENyeXB0b09w
ZXJhdGlvbkRhdGEmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIFZvaWRDYWxsYmFj
ayYmIGZhaWx1cmVDYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcAppbmRleCBmMWY3OTIx
ZmMwZjdkZTc4ZTU3MGY5ZjkxMWE5YjUwNzBiOWZiZWViLi40MDQ5ZjY4MDdkZDNkNjQ5NTRjMWQy
ZDY2ODJlY2M1MWUxNjhlZmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU4LDMyICs1NywxNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0
cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
IGJhc2VLZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3Jr
UXVldWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJz
KSwga2V5ID0gV1RGTW92ZShrZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRv
d25jYXN0PENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAg
ICAgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkuZ2V0KCkpOwor
ICAgIGF1dG8mIHBia2RmMlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1QYmtk
ZjJQYXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0
cyhkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkpLmtleSgpLCBwYmtkZjJQYXJhbWV0ZXJz
LnNhbHRWZWN0b3IoKSwgcGJrZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgcGJrZGYyUGFy
YW1ldGVycy5pdGVyYXRpb25zLCBsZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKIAotICAgICAgICAgICAgYXV0byBv
dXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5z
YWx0VmVjdG9yKCksIHBia2RmMlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFt
ZXRlcnMuaXRlcmF0aW9ucywgbGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Ly8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sg
dG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250
ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIHJldHVy
biBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318259</attachid>
            <date>2017-08-16 07:45:27 -0700</date>
            <delta_ts>2017-08-18 00:12:18 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-175620-20170816164525.patch</filename>
            <type>text/plain</type>
            <size>36905</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwNzk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IzNzJmM2ZlZjUxYTk5
YWNhMWExOGQxOTYzNzU3ZmZkNDcxYzM0Yy4uOWU2MDg1NTE0NTYwNDc4OWFiZmExNTg2NzU3N2I0
M2E2ODVlM2ViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE3LTA4LTE2ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGNyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRv
QWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtSEtERi5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1B
Qzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkp
OgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaDoKKyAg
ICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpkZXJpdmVCaXRzKToKKyAgICAg
ICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaDoKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKToKKyAgICAg
ICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToKKyAgICAgICAg
KiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyk6Cisg
ICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAgICAgIChXZWJD
b3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAgICAgICogY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCiAyMDE3LTA4LTE2
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dTdHJlYW1lcl1bRU1FXSBSZXdvcmsgaGFuZGxpbmcga2V5IHN5c3RlbXMgYW5kIFVVSURz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1IS0RGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobUhLREYuY3BwCmluZGV4IGQ5Mjg4MWRlOWIzMDIyYWMwMWMyNWE5NTE3MGYxNWZhZjg4
NzliNmEuLjU1OWYwMDRlMTJmNTIzMjAwOTUwYmVhNjg2MjY3MDExNmVhOTUwMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhLREYuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5LDcgKzUw
LDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNr
KE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybURl
cml2ZUJpdHMoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBX
VEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdv
cmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgK
KyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RG
TW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1EZXJpdmVCaXRzKCpw
YXJhbWV0ZXJzLCBiYXNlS2V5LCBsZW5ndGgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJl
bmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhy
ZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAg
ICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAg
ICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENy
eXB0b0FsZ29yaXRobUhLREY6OmltcG9ydEtleShTdWJ0bGVDcnlwdG86OktleUZvcm1hdCBmb3Jt
YXQsIEtleURhdGEmJiBkYXRhLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2Fn
ZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNr
JiYgZXhjZXB0aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgKaW5kZXggZWE2NjIwY2Q5ZTI5ODlkZWY1
YzcxY2FhMWEwMWIxNzM3NTFiOGI5OC4uMjhlYmVhN2JjZjMzOGJiNGZlZjA2ZWFmNDM1ZmExMmFk
YmM1YjgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtSEtERi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhLREYuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0
ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3Rh
YmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJh
Y2smJikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybURl
cml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJl
ZjxDcnlwdG9LZXk+JiYsIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlv
bkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBz
dGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIHNpemVfdCk7CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IGY3YWZlYWQ3NjVh
MGVjMWM2YzllOTljMzRjZDZlMTg4YWZhMWVjMDkuLjExMjAzOTQwMzgzNTQ0OGM3ZTlhMTVhNGRl
ZDI2NWFmZTgyNjMyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9h
bGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlEYXRhT2N0ZXRTZXF1ZW5jZS5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUhNQUMuaCIK
KyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzEsMTIgKzcyLDQ0IEBAIGJvb2wgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6a2V5QWxnb3JpdGhtTWF0Y2hlcyhjb25zdCBDcnlwdG9BbGdvcml0
aG1IbWFjUGFyYW1zRGVwCiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbihzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4mJiBr
ZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4
Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQogewotICAgIHBsYXRmb3JtU2lnbihX
VEZNb3ZlKGtleSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKyAgICBjb250ZXh0LnJlZigp
OworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RG
TW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TaWduKGtleSwgV1RGTW92ZShkYXRhKSk7Cisg
ICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2Vj
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAg
ICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCisgICAgICAgIGNvbnRleHQucG9zdFRhc2soW3Jlc3VsdCA9IHJlc3VsdC5yZWxl
YXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAg
ICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgfSk7CisgICAgfSk7CiB9CiAKIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2ln
bmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgcGxhdGZvcm1WZXJp
ZnkoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1
ZXVlKTsKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0g
V1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybVZlcmlmeShrZXksIFdURk1vdmUoc2lnbmF0dXJl
KSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsK
KyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRl
ciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsK
KyAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICAv
LyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0
byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgIGNvbnRleHQucG9zdFRhc2so
W3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKKyAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgfSk7Cisg
ICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6Z2VuZXJhdGVLZXkoY29uc3Qg
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwg
Q3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlPcktleVBhaXJDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhNQUMuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhNQUMuaAppbmRleCA0ZjcwMmFkOGUzZjk1MDJkZDMzOGE3YzhiNDVl
MWZlN2QwZTFhYTYwLi40N2FhNzhlZDUwZjgwYTU0ZGJlZDIwMTBiNGE0NzMwNmU1YTViMGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxn
b3JpdGhtSE1BQy5oCkBAIC01OCw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gaW1wb3J0S2V5KGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5RGF0YSYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdl
Qml0bWFwLCBLZXlDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spIGZp
bmFsOwogCiAgICAgYm9vbCBrZXlBbGdvcml0aG1NYXRjaGVzKGNvbnN0IENyeXB0b0FsZ29yaXRo
bUhtYWNQYXJhbXNEZXByZWNhdGVkJiBhbGdvcml0aG1QYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9L
ZXkmKSBjb25zdDsKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0
b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJp
ZnkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8
dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVj
dG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiwgVmVjdG9yPHVpbnQ4
X3Q+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25Pcjxib29sPiBwbGF0Zm9ybVZlcmlmeShjb25z
dCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYpOwogICAg
IEV4Y2VwdGlvbk9yPHZvaWQ+IHBsYXRmb3JtU2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFj
UGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25zdCBDcnlwdG9PcGVy
YXRpb25EYXRhJiwgVmVjdG9yQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxi
YWNrKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYsIGNvbnN0IENyeXB0b0tleUhNQUMmLCBjb25z
dCBDcnlwdG9PcGVyYXRpb25EYXRhJiBzaWduYXR1cmUsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRh
dGEmLCBCb29sQ2FsbGJhY2smJiwgVm9pZENhbGxiYWNrJiYgZmFpbHVyZUNhbGxiYWNrKTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1QQktERjIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyLmNwcAppbmRleCA1YTBlNzcyZGQ0MDYyNTA3ZGYxYTY0ZDQxNjQ1Nzg1
YjkwNGY4ZmY3Li4xZmU1ZDBhYTUwZDgxYzMwZjZhMDUwNjcwOTVhZmIxYTdlZGVkMDQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1Q
QktERjIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0Fs
Z29yaXRobVBCS0RGMi5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDksNyArNTAsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0aG1QQktERjI6OmRlcml2ZUJpdHMoc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMKICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHBs
YXRmb3JtRGVyaXZlQml0cyhXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKGJhc2VLZXkpLCBs
ZW5ndGgsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29u
dGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQucmVmKCk7CisgICAgd29ya1F1ZXVlLmRp
c3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VL
ZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250
ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0byByZXN1bHQgPSBwbGF0Zm9ybURlcml2
ZUJpdHMoKnBhcmFtZXRlcnMsIGJhc2VLZXksIGxlbmd0aCk7CisgICAgICAgICAgICBpZiAocmVz
dWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAg
ICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
KyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Cisg
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAK
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjppbXBvcnRLZXkoU3VidGxlQ3J5cHRvOjpLZXlG
b3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5
cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaAppbmRleCAxZWI2
MzNmMTI5NDdjMTUxM2E2NzliYzE5ODlhNWRkODhhNDFhMGE4Li40YjUzZWJjMjkyZDcxMTUyYWRj
MzNlMmExNjNjMWQ2ZDkzMTk5NzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaApAQCAtNDUsNyArNDUsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KFN1YnRsZUNyeXB0bzo6S2V5Rm9ybWF0LCBL
ZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJz
PiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2sm
JiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBn
ZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFsOwogCi0g
ICAgdm9pZCBwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIHNpemVfdCBsZW5ndGgsIFZlY3RvckNh
bGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBX
b3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0
Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tl
eSYsIHNpemVfdCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0
LmNwcAppbmRleCA3NmU0NTQxYjJlZmViMDFmMDdhYzAwNjkzMjhlMDhhNzgyYzQ5MzM3Li5kMDEz
MjQ1OTFkY2FmYzg2MWE3MGU3MmExMTAyOWM3YTk3NjY3ZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5j
cHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1z
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVz
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE1MywzMiArMTUyLDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rv
cjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtlCiAg
ICAgcmV0dXJuIG91dHB1dDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9y
bURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYg
cGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxh
dGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNv
bnN0IENyeXB0b0tleSYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQucmVmKCk7
Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUo
cGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgaGtk
ZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+
KGJhc2VLZXkuZ2V0KCkpOwotCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2
ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJh
bWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0
VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1ldGVycyk7CiAKLSAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRv
IG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpLmtl
eSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0
b3IoKSwgbGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOworICAgIGlm
ICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsK
KyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggNDljOTU4Y2JjZGRlNGNjOGVkZTNhNzRjOWI3NWFl
OWRmMzBkNjIyYi4uNDI1YTVmYzFiZGU5NDg5ZGU2MDY1M2U2MjI2NWM2YTc2ZWEyNTBjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFD
R0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUhNQUNHQ3J5cHQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJDcnlwdG9B
bGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZC5oIgogI2luY2x1ZGUgIkNyeXB0b0tleUhNQUMu
aCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cGFsL2Ny
eXB0by9nY3J5cHQvSGFuZGxlLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRp
ZXMuaD4KIApAQCAtODksNTYgKzg4LDMzIEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1
aW50OF90Pj4gY2FsY3VsYXRlU2lnbmF0dXJlKGludCBhbGdvcml0aG0sIGNvbnN0IFZlCiAgICAg
cmV0dXJuIGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGtleSwgZGF0YS5maXJzdCwgZGF0
YS5zZWNvbmQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihS
ZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNl
cHRpb25PcjxWZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bihjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkp
LCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFD
PihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFs
Z29yaXRobShobWFjS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAo
YWxnb3JpdGhtICE9IEdDUllfTUFDX05PTkUpIHsKLSAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0g
Y2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YS5kYXRhKCks
IGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFj
ayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92
ZSgqcmVzdWx0KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7
Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
LSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
T3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9
KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4o
a2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShobWFj
S2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmIChhbGdvcml0aG0gPT0gR0NS
WV9NQUNfTk9ORSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CisKKyAgICBhdXRvIHJlc3VsdCA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNL
ZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgaWYgKCFyZXN1bHQpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJu
IFdURk1vdmUoKnJlc3VsdCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZv
cm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVy
ZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2Vw
dGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRv
QWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rv
cjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkp
LCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUo
ZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYg
aG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1
dG8gYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29y
aXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChhbGdvcml0aG0gIT0gR0NSWV9NQUNfTk9O
RSkgewotICAgICAgICAgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25h
dHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRTaWduYXR1cmUpIHsKLSAgICAgICAgICAgICAgICAv
LyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50IHRpbWluZyBhdHRh
Y2tzLgotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBl
eHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRT
aWduYXR1cmUtPmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUtPnNp
emUoKSk7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgot
ICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHJlc3VsdCwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJh
Y2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAg
ICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1B
Qz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobSho
bWFjS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmIChhbGdvcml0aG0gPT0g
R0NSWV9NQUNfTk9ORSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9y
IH07CisKKyAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFs
Z29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKKyAgICBp
ZiAoIWV4cGVjdGVkU2lnbmF0dXJlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKKworICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRv
IHByZXZlbnQgdGltaW5nIGF0dGFja3MuCisgICAgcmV0dXJuIHNpZ25hdHVyZS5zaXplKCkgPT0g
ZXhwZWN0ZWRTaWduYXR1cmUtPnNpemUoKSAmJiAhY29uc3RhbnRUaW1lTWVtY21wKGV4cGVjdGVk
U2lnbmF0dXJlLT5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLT5z
aXplKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0
Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFt
ZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0
YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYgZmFpbHVy
ZUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCmluZGV4IGYxZjc5MjFmYzBmN2RlNzhl
NTcwZjlmOTExYTliNTA3MGI5ZmJlZWIuLmI0M2RmYjU4NTMyMDhmMTc5MGVkOTMwN2JjMmMxMDc5
ZmYxZjYyMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlSYXcuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRF
eGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTgsMzIgKzU3
LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZl
Qml0cyhjb25zdCBWZWN0b3I8dWludDhfdD4mIGtlCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRv
S2V5PiYmIGtleSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhj
ZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWlu
dDhfdD4+IENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBzaXpl
X3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNo
KAotICAgICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGtleSA9IFdURk1v
dmUoa2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGF1dG8mIHBia2RmMlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1QYmtkZjJQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJh
d0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5LmdldCgpKTsKKyAgICBhdXRvJiBwYmtk
ZjJQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihwYXJh
bWV0ZXJzKTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMoZG93bmNhc3Q8Q3J5
cHRvS2V5UmF3PihrZXkpLmtleSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgcGJr
ZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgcGJrZGYyUGFyYW1ldGVycy5pdGVyYXRpb25z
LCBsZW5ndGgpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IgfTsKIAotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJp
dmVCaXRzKHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIHBia2Rm
MlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywg
bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNl
cHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkg
ZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dv
cmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAg
ICAgICBbb3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxi
YWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxs
YmFjayhvdXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcAppbmRleCBhNWYzYjRkZmQ0MTk0
ZWVlZjZkMzI1NTJjZjYzMTc5MzAzNTdkNTNlLi4yYTI4MWM1NWNlYTg1YzAyNjE5MDgzZTZiNjg3
Njk1ODVmMDlmZDBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhLREZNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5
cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKQEAgLTMxLDM1ICszMSwyMiBAQAogI2luY2x1ZGUgIkNv
bW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJh
bXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0
aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBzaXpl
X3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYm
IGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3Jr
UXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxn
b3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAg
IGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RG
TW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhr
ZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4oKnBhcmFt
ZXRlcnMpOwotICAgICAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJh
c2VLZXkuZ2V0KCkpOworICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRv
QWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0gZG93
bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwogCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQobGVuZ3RoIC8gOCk7Ci0gICAgICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRo
bTsKLSAgICAgICAgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhrZGZQYXJhbWV0ZXJz
Lmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0pOwotICAgICAgICAvLyA8cmRhcjovL3By
b2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiByYXdLZXkgaXMgbnVsbCwgQ0NLZXlEZXJp
dmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgotICAgICAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1h
YyhrQ0NLREZBbGdvcml0aG1IS0RGLCBkaWdlc3RBbGdvcml0aG0sIDAsIHJhd0tleS5rZXkoKS5k
YXRhKCksIHJhd0tleS5rZXkoKS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0
b3IoKS5kYXRhKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIDAsIDAsIGhr
ZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0
b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKSB7Ci0gICAgICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFj
ayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBj
YWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3Ip
OwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4
dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVz
dWx0KGxlbmd0aCAvIDgpOworICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsK
KyAgICBnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0oaGtkZlBhcmFtZXRlcnMuaGFzaElk
ZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7CisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5
NDU1PiBDdXJyZW50bHksIHdoZW4gcmF3S2V5IGlzIG51bGwsIENDS2V5RGVyaXZhdGlvbkhNYWMg
d2lsbCBiYWlsIG91dC4KKyAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0
aG1IS0RGLCBkaWdlc3RBbGdvcml0aG0sIDAsIHJhd0tleS5rZXkoKS5kYXRhKCksIHJhd0tleS5r
ZXkoKS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIGhr
ZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLnNh
bHRWZWN0b3IoKS5kYXRhKCksIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
T3BlcmF0aW9uRXJyb3IgfTsKKworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1B
Q01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNN
YWMuY3BwCmluZGV4IGY4ODIxYzAzZjhkZTM2Y2Y2Yjc2MjNlYWNiOTgwMDFlMGQ2NjE0ZDQuLmE0
MzU5NGNiMmY1ZTkyNGZkYjU0NWQ5NzUxMDFjMTk4NTE0N2FlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAtMzAs
NyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0
ZWQuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25ITUFDLmg+CiAjaW5j
bHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaD4KIApAQCAtODUsNTMgKzg0LDI1IEBA
IHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJlKENDSG1hY0FsZ29yaXRo
bSBhbGdvcml0aG0sIGNvbnN0IFZlY3RvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiBrZXks
IFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3Jr
UXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSks
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRv
JiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAgICAg
YXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKGhtYWNLZXkuaGFzaEFs
Z29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghYWxnb3JpdGhtKSB7Ci0gICAgICAg
ICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcg
YmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0
LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJy
b3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gcmVzdWx0ID0gY2Fs
Y3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBk
YXRhLnNpemUoKSk7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0
aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWFsZ29yaXRo
bSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEu
ZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25h
dHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9vbENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4
Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZl
Y3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAg
ICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShr
ZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEp
LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0
byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQoKSk7Ci0gICAgICAg
IGF1dG8gYWxnb3JpdGhtID0gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShobWFjS2V5Lmhhc2hB
bGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGV4cGVjdGVkU2ln
bmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRh
dGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGlt
ZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAgICAgIGJvb2wgcmVz
dWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkgJiYgIWNv
bnN0YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5kYXRh
KCksIGV4cGVjdGVkU2lnbmF0dXJlLnNpemUoKSk7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgcmVzdWx0LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0
aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWFsZ29yaXRo
bSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBh
dXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGht
YWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgcmV0dXJuIHNpZ25h
dHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUuc2l6ZSgpICYmICFjb25zdGFudFRpbWVN
ZW1jbXAoZXhwZWN0ZWRTaWduYXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3Rl
ZFNpZ25hdHVyZS5zaXplKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0
aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJl
Y2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleUhNQUMmIGtleSwgY29uc3QgQ3J5cHRv
T3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgVm9pZENhbGxi
YWNrJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVBCS0RGMk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVBCS0RGMk1hYy5jcHAKaW5kZXggZDYxNTMzYjc4NWU4YjBmOGMyNmNhMzZjYTMwMzhjNzg4
MDRhMDUxZi4uMWVkNDY2YjY1YjQ0NmM5Y2JmOTcyMmQ0YmU1MDQ1ODJlYTU3NDhmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
TWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJr
ZGYyUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCi0jaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25LZXlEZXJp
dmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDI5ICs1MywxNyBAQCBzdGF0
aWMgQ0NQc2V1ZG9SYW5kb21BbGdvcml0aG0gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaQogICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1QQktE
RjI6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBs
ZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1v
dmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBwYmtk
ZjJQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPigqcGFy
YW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4o
YmFzZUtleS5nZXQoKSk7CisgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwogCi0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTk1
NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktERiBiYWlscyBvdXQgd2hlbiBhbiBlbXB0
eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgotICAgICAgICBpZiAoQ0NLZXlEZXJpdmF0aW9u
UEJLREYoa0NDUEJLREYyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4ocmF3S2V5Lmtl
eSgpLmRhdGEoKSksIHJhd0tleS5rZXkoKS5zaXplKCksIHBia2RmMlBhcmFtZXRlcnMuc2FsdFZl
Y3RvcigpLmRhdGEoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBjb21t
b25DcnlwdG9ITUFDQWxnb3JpdGhtKHBia2RmMlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpLCBw
YmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIHJlc3VsdC5kYXRhKCksIGxlbmd0aCAvIDgpKSB7
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3Bl
cmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQz
OTk1NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktERiBiYWlscyBvdXQgd2hlbiBhbiBl
bXB0eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgorICAgIGlmIChDQ0tleURlcml2YXRpb25Q
QktERihrQ0NQQktERjIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihyYXdLZXkua2V5
KCkuZGF0YSgpKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVj
dG9yKCkuZGF0YSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIGNvbW1v
bkNyeXB0b0hNQUNBbGdvcml0aG0ocGJrZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciksIHBi
a2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgcmVzdWx0LmRhdGEoKSwgbGVuZ3RoIC8gOCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgcmV0dXJu
IFdURk1vdmUocmVzdWx0KTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318482</attachid>
            <date>2017-08-18 00:12:22 -0700</date>
            <delta_ts>2017-08-21 04:20:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175620-20170818091220.patch</filename>
            <type>text/plain</type>
            <size>38295</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGQyNGNmMjk5MTMwMmZj
NTQ1ZmJkYTFlNTU0Y2I5ZWVkYzQ3ZTk3Zi4uMmVjZmNiNDExNjA5MzM5YjE0N2I4MTE2NGM0YWM1
NGRiMjEyYzc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDE3LTA4LTE3ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQdXNoIHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29k
ZSBkdXBsaWNhdGVkIGJldHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxl
bWVudGF0aW9ucyBvZiBXZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAg
VGhpcyBwYXRjaCBmb2N1c2VzIG9uIHRoZSBIS0RGLCBITUFDIGFuZCBQQktERjIgYWxnb3JpdGht
cy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFzeW5jaHJvbm91cyBk
aXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2VwdGlvbk9yCisgICAg
ICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVjdHMgYXJlIHBhc3NlZCB0
aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1c2UgZGF0YSBnZXR0ZXJz
IGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgVmVjdG9yIG9i
amVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVu
Y2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFudWFsbHkgcmV0cmlldmUg
YW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBwYXJhbWV0ZXIgZGF0YSwg
YXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uIElucHV0CisgICAg
ICAgIGRhdGEgZm9yIHNpZ25hdHVyZSBhbmQgdmVyaWZpY2F0aW9uIG9wZXJhdGlvbnMgaXMgcGFz
c2VkIGluIHRocm91Z2gKKyAgICAgICAgcnZhbHVlIHJlZmVyZW5jZXMgaW4gb3JkZXIgdG8gZW5h
YmxlIGltcGxlbWVudGF0aW9ucyB0byByZXVzZSB0aGF0IGRhdGEKKyAgICAgICAgZWZmaWNpZW50
bHksIGlmIHBvc3NpYmxlIGFuZCByZXF1aXJlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0g
bm8gY2hhbmdlcyBpbiBiZWhhdmlvciB0aGF0J3MgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4K
KworICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyk6CisgICAg
ICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oOgorICAgICAgICAq
IGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlw
dG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobUhNQUMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1QQktERjIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJL
REYyOjpkZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1QQktERjIuaDoKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhL
REZHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxh
dGZvcm1EZXJpdmVCaXRzKToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUhNQUNHQ3J5cHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6
cGxhdGZvcm1TaWduKToKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBs
YXRmb3JtVmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBC
S0RGMkdDcnlwdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6
OnBsYXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0
aG1IS0RGTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBs
YXRmb3JtRGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1I
TUFDTWFjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtU2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9y
bVZlcmlmeSk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURl
cml2ZUJpdHMpOgorCiAyMDE3LTA4LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBw
bGUuY29tPgogCiAgICAgICAgIFtJbnB1dCBFdmVudHNdIFJlbmFtZSBpbnB1dFR5cGUgImZvcm1h
dEZvcmVDb2xvciIgdG8gImZvcm1hdEZvbnRDb2xvciIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKaW5kZXggZmIz
ZTIxZDgxYWMxNWZmMzJhOWFmNjhkMzYwMGU2NzQ0NWY2NTA2MS4uZjgyNTAzNWYxZTViMDg4MDE3
Y2U2MTUyNzdlODc3NmQwMTZiMmZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKQEAgLTMwLDYgKzMwLDcg
QEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlSYXcuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksNyArNTAsMjggQEAgdm9pZCBDcnlwdG9BbGdvcml0
aG1IS0RGOjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYKICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIHBsYXRmb3JtRGVyaXZlQml0cyhXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKworICAgIGNvbnRleHQu
cmVmKCk7CisgICAgd29ya1F1ZXVlLmRpc3BhdGNoKAorICAgICAgICBbcGFyYW1ldGVycyA9IFdU
Rk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgeworICAgICAgICAgICAgYXV0
byByZXN1bHQgPSBwbGF0Zm9ybURlcml2ZUJpdHMoKnBhcmFtZXRlcnMsIGJhc2VLZXksIGxlbmd0
aCk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAg
ICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5n
IGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAgIGNv
bnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxs
YmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAg
ICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVzdWx0
LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtERjo6aW1wb3J0
S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEmJiBkYXRhLCBjb25zdCBzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBib29sIGV4
dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleUNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2spCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgK
aW5kZXggNmI3ZGY5YmZmNGUyNjM2MGQ3OTk2YmQwOTczNjQyYTU0MmM2MDk1Zi4uOTgwMjE1YjQ0
OWJiODk4MWNjZDliYTY5Mzc2ZDAxZTY4NjFiZWI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaApAQCAtNDUsNyAr
NDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5
RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYs
IEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0
S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmKSBmaW5hbDsKIAotICAg
IHZvaWQgcGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmLCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxs
YmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29y
a1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZv
cm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkm
LCBzaXplX3QpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApp
bmRleCA5MDdmOTEzMDY0MGZlMjk3MzQxMGY4YjAxNTFlZjBhNmI0Yjk1NWNlLi42NzUxNmVmYzE0
MWM5NjZmZTY2ZTEzNTczZjg1MzM0ZmU1MTc5ZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcApAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5RGF0YU9jdGV0U2VxdWVuY2UuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlITUFDLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTcxLDEyICs3
Miw1MiBAQCBib29sIENyeXB0b0FsZ29yaXRobUhNQUM6OmtleUFsZ29yaXRobU1hdGNoZXMoY29u
c3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcAogCiB2b2lkIENyeXB0b0FsZ29yaXRobUhN
QUM6OnNpZ24oc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJl
ZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFj
ayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAg
ICBwbGF0Zm9ybVNpZ24oV1RGTW92ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7Cisg
ICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkg
PSBXVEZNb3ZlKGtleSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZv
cm1TaWduKGtleSwgV1RGTW92ZShkYXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4
Y2VwdGlvbigpKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgorICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAg
ICAgIFtlYyA9IHJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAg
ICAgICAgICBbcmVzdWx0ID0gcmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5
cHRvQWxnb3JpdGhtSE1BQzo6dmVyaWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2ln
bmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywg
RXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgcGxhdGZvcm1WZXJp
ZnkoV1RGTW92ZShrZXkpLCBXVEZNb3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1v
dmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1
ZXVlKTsKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAg
ICAgW2tleSA9IFdURk1vdmUoa2V5KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVyaWZ5KGtleSwgV1RG
TW92ZShzaWduYXR1cmUpLCBXVEZNb3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCisgICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAg
ICAgICAgICAgW2VjID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91
bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9j
dW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAg
ICAgICAgICAgICAgIFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9p
ZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJp
dG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNh
bGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGht
SE1BQy5oCmluZGV4IDgwMTNjNmZiOWRlYmNiM2E5Y2FhOTU1MjgxYWU5NmUzMWRkYTRhOGIuLjA2
M2VlNzdiODZkNmVlMDIwMTc5NDI5NDA3MTZjZDk0MjJmNzdmYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAg
LTU4LDggKzU4LDggQEAgcHJpdmF0ZToKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBpbXBvcnRLZXko
Y29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVyc0RlcHJlY2F0ZWQmLCBjb25zdCBDcnlwdG9L
ZXlEYXRhJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAsIEtleUNhbGxi
YWNrJiYsIFZvaWRDYWxsYmFjayYmIGZhaWx1cmVDYWxsYmFjaykgZmluYWw7CiAKICAgICBib29s
IGtleUFsZ29yaXRobU1hdGNoZXMoY29uc3QgQ3J5cHRvQWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJl
Y2F0ZWQmIGFsZ29yaXRobVBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYpIGNvbnN0OwotICAg
IHZvaWQgcGxhdGZvcm1TaWduKFJlZjxDcnlwdG9LZXk+JiYsIFZlY3Rvcjx1aW50OF90PiYmLCBW
ZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgV29ya1F1ZXVlJik7Ci0gICAgdm9pZCBwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5cHRvS2V5
PiYmLCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmLCBCb29s
Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBs
YXRmb3JtU2lnbihjb25zdCBDcnlwdG9LZXkmLCBWZWN0b3I8dWludDhfdD4mJik7CisgICAgc3Rh
dGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYsIFZl
Y3Rvcjx1aW50OF90PiYmLCBWZWN0b3I8dWludDhfdD4mJik7CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gcGxhdGZvcm1TaWduKGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJhbXNEZXByZWNhdGVk
JiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlvbkRhdGEmLCBWZWN0
b3JDYWxsYmFjayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogICAgIEV4Y2Vw
dGlvbk9yPHZvaWQ+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0FsZ29yaXRobUhtYWNQYXJh
bXNEZXByZWNhdGVkJiwgY29uc3QgQ3J5cHRvS2V5SE1BQyYsIGNvbnN0IENyeXB0b09wZXJhdGlv
bkRhdGEmIHNpZ25hdHVyZSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYsIEJvb2xDYWxsYmFj
ayYmLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2FsbGJhY2spOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIu
Y3BwCmluZGV4IDAwNTI1NWNmZTc4ZGUwYWQ0NzQ0ZTczOThiZDlmMTMxNzk0ZTEyNTIuLmZlOGU3
YTYyZDA4MDE5YThmNzFmZjZiNTZjNTNiOTRmYzBlMTUyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNw
cApAQCAtMzAsNiArMzAsNyBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5oIgorI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00OSw3ICs1MCwyOCBAQCB2
b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycwogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1EZXJpdmVCaXRz
KFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgV1RGTW92ZShj
YWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUp
OworCisgICAgY29udGV4dC5yZWYoKTsKKyAgICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAg
IFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1vdmUoYmFz
ZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7
CisgICAgICAgICAgICBhdXRvIHJlc3VsdCA9IHBsYXRmb3JtRGVyaXZlQml0cygqcGFyYW1ldGVy
cywgYmFzZUtleSwgbGVuZ3RoKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisg
ICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2Vj
ID0gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayld
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl
eHQuZGVyZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJl
ZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2Vy
IHRocmVhZHMuCisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAg
IFtyZXN1bHQgPSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OworICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdv
cml0aG1QQktERjI6OmltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQgZm9ybWF0LCBLZXlEYXRhJiYg
ZGF0YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYg
cGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5VXNhZ2VCaXRtYXAgdXNhZ2Vz
LCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNh
bGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5
cHRvQWxnb3JpdGhtUEJLREYyLmggYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1QQktERjIuaAppbmRleCA1NzBiYmQzNmJlYzVkYzdjMzU0OGNjYTZlNTRl
Mzc5ZWFjYTM1NjdmLi45NzMyYjFjMGI2ZmYzZWM0MGY3ODYzYzg1YWU3ZjFlYjI1Yjk4Zjc3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1QQktERjIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1QQktERjIuaApAQCAtNDUsNyArNDUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW1w
b3J0S2V5KENyeXB0b0tleUZvcm1hdCwgS2V5RGF0YSYmLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRvS2V5
VXNhZ2VCaXRtYXAsIEtleUNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYpIGZpbmFsOwog
ICAgIEV4Y2VwdGlvbk9yPHNpemVfdD4gZ2V0S2V5TGVuZ3RoKGNvbnN0IENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmKSBmaW5hbDsKIAotICAgIHZvaWQgcGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYm
LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV29ya1F1ZXVlJik7CisgICAgc3RhdGljIEV4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gcGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBh
cmFtZXRlcnMmLCBjb25zdCBDcnlwdG9LZXkmLCBzaXplX3QpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKaW5kZXggNzZlNDU0MWIyZWZlYjAxZjA3YWMw
MDY5MzI4ZTA4YTc4MmM0OTMzNy4uMDc1ODhkOWFmYzg4MDU1NThiMjJmMzQzMGY4OWE4YTQ4OWZm
MGFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1IS0RGR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAi
Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5oIgog
I2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNTMsMzIgKzE1MiwxNSBAQCBz
dGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29u
c3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZQogICAgIHJldHVybiBvdXRwdXQ7CiB9CiAKLXZvaWQgQ3J5
cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+JiYgYmFz
ZUtleSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+
IENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgc2l6ZV90IGxlbmd0
aCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShi
YXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKLSAgICAgICAgICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSGtkZlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYXV0byYgcmF3S2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihiYXNlS2V5LmdldCgpKTsKLQotICAgICAgICAgICAg
YXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwgaGtkZlBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9yKCksIGxlbmd0aCAvIDgs
IGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0
KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgICAgIFtjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KKyAgICBhdXRv
JiBoa2RmUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KHBh
cmFtZXRlcnMpOworICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5
KTsKIAotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92
ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0cyhyYXdLZXkua2V5KCks
IGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3Rvcigp
LCBsZW5ndGggLyA4LCBoa2RmUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7CisgICAgaWYgKCFv
dXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAg
IHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhN
QUNHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcAppbmRleCA0OWM5NThjYmNkZGU0Y2M4ZWRlM2E3NGM5Yjc1YWU5ZGYz
MGQ2MjJiLi41ZmJiMmRjYmQzZmE5ZjkxZjFiNGMyYzQ2ODA2Y2ZmZWExNWQwYjBjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5
cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
SE1BQ0dDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkNyeXB0b0FsZ29y
aXRobUhtYWNQYXJhbXNEZXByZWNhdGVkLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgot
I2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRv
L2djcnlwdC9IYW5kbGUuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5o
PgogCkBAIC04OSw1NiArODgsMzMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4
X3Q+PiBjYWxjdWxhdGVTaWduYXR1cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmUKICAgICByZXR1
cm4gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwga2V5LCBkYXRhLmZpcnN0LCBkYXRhLnNl
Y29uZCk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKFJlZjxD
cnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYm
IGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlv
bk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNv
bnN0IENyeXB0b0tleSYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtl
eS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3Jp
dGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChhbGdv
cml0aG0gIT0gR0NSWV9NQUNfTk9ORSkgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjYWxj
dWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKCpy
ZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVy
YXRpb25FcnJvcik7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOworICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkp
OworCisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tl
eS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxnb3JpdGhtID09IEdDUllf
TUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9Owor
CisgICAgYXV0byByZXN1bHQgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5
LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RG
TW92ZSgqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZl
cmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdv
cml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHNp
Z25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBobWFj
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBh
bGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGht
SWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGFsZ29yaXRobSAhPSBHQ1JZX01BQ19OT05FKSB7
Ci0gICAgICAgICAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJl
KGFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAg
ICAgICAgICAgIGlmIChleHBlY3RlZFNpZ25hdHVyZSkgewotICAgICAgICAgICAgICAgIC8vIFVz
aW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3Mu
Ci0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWduYXR1cmUuc2l6ZSgpID09IGV4cGVj
dGVkU2lnbmF0dXJlLT5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25h
dHVyZS0+ZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgp
KTsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsK
LSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2Fs
bGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgot
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhP
cGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0p
OwotICAgIH0pOworICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihr
ZXkpOworCisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1h
Y0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxnb3JpdGhtID09IEdD
UllfTUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OworCisgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdv
cml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgaWYg
KCFleHBlY3RlZFNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CisgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJl
dmVudCB0aW1pbmcgYXR0YWNrcy4KKyAgICByZXR1cm4gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBl
Y3RlZFNpZ25hdHVyZS0+c2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWdu
YXR1cmUtPmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1cmUtPnNpemUo
KSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3Jt
U2lnbihjb25zdCBDcnlwdG9BbGdvcml0aG1IbWFjUGFyYW1zRGVwcmVjYXRlZCYgcGFyYW1ldGVy
cywgY29uc3QgQ3J5cHRvS2V5SE1BQyYga2V5LCBjb25zdCBDcnlwdG9PcGVyYXRpb25EYXRhJiBk
YXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBWb2lkQ2FsbGJhY2smJiBmYWlsdXJlQ2Fs
bGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggZjFmNzkyMWZjMGY3ZGU3OGU1NzBm
OWY5MTFhOWI1MDcwYjlmYmVlYi4uOGZlNDU3NDZlZDBjMDM1YjZkZGUxMzcyZmNhZGE5YzlhZjVl
MmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdv
cml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1
ZGUgIkNyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJh
dy5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01OCwzMiArNTcsMTUg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRz
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2UKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lk
IENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxDcnlwdG9LZXk+
JiYga2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIHNpemVfdCBs
ZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0g
ICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwga2V5ID0gV1RGTW92ZShr
ZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewot
ICAgICAgICAgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29y
aXRobVBia2RmMlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAgICAgYXV0byYgcmF3S2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkuZ2V0KCkpOworICAgIGF1dG8mIHBia2RmMlBh
cmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBhcmFtZXRl
cnMpOworICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5KTsKIAot
ICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwg
cGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIHBia2RmMlBhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgbGVuZ3RoKTsKLSAgICAgICAgICAg
IGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAg
ICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRp
b25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBbb3V0cHV0ID0gV1RGTW92
ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhvdXRwdXQpOwotICAgICAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0cyhyYXdLZXkua2V5KCks
IHBia2RmMlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLCBwYmtkZjJQYXJhbWV0ZXJzLmhhc2hJZGVu
dGlmaWVyLCBwYmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIGxlbmd0aCk7CisgICAgaWYgKCFv
dXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAg
IHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZN
YWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFj
LmNwcAppbmRleCBhNWYzYjRkZmQ0MTk0ZWVlZjZkMzI1NTJjZjYzMTc5MzAzNTdkNTNlLi5iMzFl
MDBmMjU0ZmMyZDQ0NjJiNzE4NjlkNmE5MTllY2RmNzQ4NTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAKQEAgLTMxLDM1
ICszMSwyMiBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgogI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIK
LSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5
LCBzaXplX3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRp
c3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1v
dmUoYmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtSGtkZlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiByYXdLZXkgPSBk
b3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworICAgIGF1dG8mIGhrZGZQYXJh
bWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4ocGFyYW1ldGVycyk7
CisgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwogCi0gICAg
ICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgICAgIENDRGlnZXN0
QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICAgICAgZ2V0Q29tbW9uQ3J5cHRvRGlnZXN0
QWxnb3JpdGhtKGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBkaWdlc3RBbGdvcml0aG0p
OwotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiBy
YXdLZXkgaXMgbnVsbCwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgotICAgICAg
ICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0aG1IS0RGLCBkaWdlc3RBbGdv
cml0aG0sIDAsIHJhd0tleS5rZXkoKS5kYXRhKCksIHJhd0tleS5rZXkoKS5zaXplKCksIDAsIDAs
IGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9W
ZWN0b3IoKS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCks
IGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3VsdC5kYXRhKCksIHJlc3Vs
dC5zaXplKCkpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBi
YWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0
VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1
bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1
bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsK
KyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAgIENDRGlnZXN0QWxn
b3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKKyAgICBnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0
aG0oaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7CisKKyAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwgd2hlbiByYXdLZXkgaXMg
bnVsbCwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0LgorICAgIGlmIChDQ0tleURl
cml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGRpZ2VzdEFsZ29yaXRobSwgMCwgcmF3
S2V5LmtleSgpLmRhdGEoKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRl
cnMuaW5mb1ZlY3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUo
KSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBX
VEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCmluZGV4IGY4ODIxYzAzZjhkZTM2Y2Y2Yjc2
MjNlYWNiOTgwMDFlMGQ2NjE0ZDQuLmE0MzU5NGNiMmY1ZTkyNGZkYjU0NWQ5NzUxMDFjMTk4NTE0
N2FlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdv
cml0aG1ITUFDTWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxn
b3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvbW1vbkNy
eXB0by9Db21tb25ITUFDLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMu
aD4KIApAQCAtODUsNTMgKzg0LDI1IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRl
U2lnbmF0dXJlKENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFZlY3RvCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24o
UmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxi
YWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhj
ZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNp
Z24oY29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEpCiB7Ci0gICAg
Y29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5
KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4
Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgp
IG11dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1B
Qz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFD
QWxnb3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlm
ICghYWxnb3JpdGhtKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0
aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNL
ZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sg
PSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFj
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9
IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CiAKKyAgICByZXR1cm4gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0
aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CiB9CiAKLXZvaWQg
Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tleT4mJiBrZXks
IFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgQm9v
bENhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJh
Y2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVl
KQorRXhjZXB0aW9uT3I8Ym9vbD4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnko
Y29uc3QgQ3J5cHRvS2V5JiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIHNpZ25hdHVyZSwgVmVjdG9y
PHVpbnQ4X3Q+JiYgZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5k
aXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVy
ZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0o
KSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhN
QUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYWxnb3JpdGhtID0gY29tbW9uQ3J5cHRvSE1B
Q0FsZ29yaXRobShobWFjS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOwotICAgICAgICBp
ZiAoIWFsZ29yaXRobSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICBjb250ZXh0LmRl
cmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
ICAgICAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdv
cml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAg
IC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5nIGF0
dGFja3MuCi0gICAgICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3Rl
ZFNpZ25hdHVyZS5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25hdHVy
ZS5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLnNpemUoKSk7Ci0g
ICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWlu
ZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5w
b3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0LCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFj
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9
IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmll
cigpKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CisKKyAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRl
U2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7CisgICAgcmV0dXJuIHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUu
c2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWduYXR1cmUuZGF0YSgpLCBz
aWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkpOwogfQogCiBFeGNlcHRp
b25Pcjx2b2lkPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRv
QWxnb3JpdGhtSG1hY1BhcmFtc0RlcHJlY2F0ZWQmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tl
eUhNQUMmIGtleSwgY29uc3QgQ3J5cHRvT3BlcmF0aW9uRGF0YSYgZGF0YSwgVmVjdG9yQ2FsbGJh
Y2smJiBjYWxsYmFjaywgVm9pZENhbGxiYWNrJiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVBCS0RGMk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobVBCS0RGMk1hYy5jcHAKaW5kZXggZDYxNTMzYjc4
NWU4YjBmOGMyNmNhMzZjYTMwMzhjNzg4MDRhMDUxZi4uNWMzZDU2YjI3ZDUyYTA0YWM5MmVkMjUy
NjE5YzhkNTNjMzMxMTg2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9D
cnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5j
bHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5
UmF3LmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENv
bW1vbkNyeXB0by9Db21tb25LZXlEZXJpdmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
QEAgLTU0LDI5ICs1MywxNiBAQCBzdGF0aWMgQ0NQc2V1ZG9SYW5kb21BbGdvcml0aG0gY29tbW9u
Q3J5cHRvSE1BQ0FsZ29yaXRobShDcnlwdG9BbGdvcml0aG1JZGVudGlmaQogICAgIH0KIH0KIAot
dm9pZCBDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1
ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRv
S2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ss
IEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9y
PHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwg
c2l6ZV90IGxlbmd0aCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNw
YXRjaChbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3Zl
KGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICBhdXRvJiBwYmtkZjJQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxn
b3JpdGhtUGJrZGYyUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJhd0tleSA9
IGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtleS5nZXQoKSk7CisgICAgYXV0byYgcGJrZGYy
UGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1l
dGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwog
Ci0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgICAgIC8v
IDxyZGFyOi8vcHJvYmxlbS8zMjQzOTk1NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktE
RiBiYWlscyBvdXQgd2hlbiBhbiBlbXB0eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgotICAg
ICAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uUEJLREYoa0NDUEJLREYyLCByZWludGVycHJldF9jYXN0
PGNvbnN0IGNoYXIgKj4ocmF3S2V5LmtleSgpLmRhdGEoKSksIHJhd0tleS5rZXkoKS5zaXplKCks
IHBia2RmMlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGJrZGYyUGFyYW1ldGVycy5z
YWx0VmVjdG9yKCkuc2l6ZSgpLCBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKHBia2RmMlBhcmFt
ZXRlcnMuaGFzaElkZW50aWZpZXIpLCBwYmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIHJlc3Vs
dC5kYXRhKCksIGxlbmd0aCAvIDgpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBh
ZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAg
Y29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0g
V1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9
KTsKLSAgICB9KTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAg
IC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTk1NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25Q
QktERiBiYWlscyBvdXQgd2hlbiBhbiBlbXB0eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgor
ICAgIGlmIChDQ0tleURlcml2YXRpb25QQktERihrQ0NQQktERjIsIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgY2hhciAqPihyYXdLZXkua2V5KCkuZGF0YSgpKSwgcmF3S2V5LmtleSgpLnNpemUoKSwg
cGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNh
bHRWZWN0b3IoKS5zaXplKCksIGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0ocGJrZGYyUGFyYW1l
dGVycy5oYXNoSWRlbnRpZmllciksIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgcmVzdWx0
LmRhdGEoKSwgbGVuZ3RoIC8gOCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318625</attachid>
            <date>2017-08-21 04:20:09 -0700</date>
            <delta_ts>2017-08-25 01:19:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175620-20170821132007.patch</filename>
            <type>text/plain</type>
            <size>37046</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwNzE3OGZkMTRjYWI1
NTg0NzBjNTAyYzM5NjY5YmQ2OWRmNDVlOC4uNzJlYmNmNGFjMTBkNWIxOTY2OGIwMGZlMDBjNTQ4
MTgzNjMzYmJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDE3LTA4LTIxICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQdXNoIHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29k
ZSBkdXBsaWNhdGVkIGJldHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxl
bWVudGF0aW9ucyBvZiBXZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAg
VGhpcyBwYXRjaCBmb2N1c2VzIG9uIHRoZSBIS0RGLCBITUFDIGFuZCBQQktERjIgYWxnb3JpdGht
cy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFzeW5jaHJvbm91cyBk
aXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2VwdGlvbk9yCisgICAg
ICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVjdHMgYXJlIHBhc3NlZCB0
aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1c2UgZGF0YSBnZXR0ZXJz
IGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgVmVjdG9yIG9i
amVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVu
Y2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFudWFsbHkgcmV0cmlldmUg
YW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBwYXJhbWV0ZXIgZGF0YSwg
YXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uIElucHV0CisgICAg
ICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcyB0byB0aGUgb3JpZ2lu
YWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNoYW5nZXMg
aW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OmRlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUhNQUM6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
SE1BQzo6dmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJL
REYyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZl
Qml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
Lmg6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZl
Qml0cyk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlm
eSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURl
cml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2
ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgor
ICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKToK
KwogMjAxNy0wOC0yMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0VNRV0gQWRkIGJhc2ljIGltcGxlbWVudGF0aW9uIG9mIEhUTUxNZWRpYUVsZW1lbnQ6
OnNldE1lZGlhS2V5cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3Jp
dGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwCmluZGV4IGZiM2UyMWQ4MWFjMTVmZjMyYTlh
ZjY4ZDM2MDBlNjc0NDVmNjUwNjEuLmY4MjUwMzVmMWU1YjA4ODAxN2NlNjE1Mjc3ZTg3NzZkMDE2
YjJmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhLREYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhLREYuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ5LDcgKzUwLDI4IEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0
cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgIGV4
Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBwbGF0Zm9ybURlcml2ZUJpdHMoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYXNl
S2V5KSwgbGVuZ3RoLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtR
dWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMp
LCBiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
LCAmY29udGV4dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZv
cm1EZXJpdmVCaXRzKCpwYXJhbWV0ZXJzLCBiYXNlS2V5LCBsZW5ndGgpOworICAgICAgICAgICAg
aWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3Vs
ZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1
bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAor
ICAgICAgICAgICAgICAgICAgICBbZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUo
KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZN
b3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soCisgICAgICAgICAgICAgICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFs
dWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkgeworICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAg
ICAgICAgICBjb250ZXh0LmRlcmVmKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0p
OwogfQogCiB2b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OmltcG9ydEtleShDcnlwdG9LZXlGb3Jt
YXQgZm9ybWF0LCBLZXlEYXRhJiYgZGF0YSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgYm9vbCBleHRyYWN0YWJsZSwgQ3J5cHRv
S2V5VXNhZ2VCaXRtYXAgdXNhZ2VzLCBLZXlDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oCmluZGV4IDZiN2RmOWJmZjRl
MjYzNjBkNzk5NmJkMDk3MzY0MmE1NDJjNjA5NWYuLjk4MDIxNWI0NDliYjg5ODFjY2Q5YmE2OTM3
NmQwMWU2ODYxYmViNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFi
bGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFj
ayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtRGVy
aXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVm
PENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9u
Q2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0
YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhDcnlw
dG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKaW5kZXggYWY2NTIxYzNiM2Rk
MTlkYTMxYzVmYmZiNWJjMWQwYTMzZjk1NThkYy4uMzljY2VjNDc2NzU1MGIxZDlhYzI3MDY5ZDg0
MTI5ZjU4YWYwOTkxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKIAogI2lu
Y2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhtYWNLZXlQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9L
ZXlITUFDLmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDEyICs1OCw1MiBA
QCBDcnlwdG9BbGdvcml0aG1JZGVudGlmaWVyIENyeXB0b0FsZ29yaXRobUhNQUM6OmlkZW50aWZp
ZXIoKSBjb25zdAogCiB2b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnNpZ24oc3RkOjp1bmlxdWVf
cHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBwbGF0Zm9ybVNpZ24oV1RGTW92
ZShrZXkpLCBXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisgICAgY29udGV4dC5yZWYoKTsKKyAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goCisgICAgICAgIFtrZXkgPSBXVEZNb3ZlKGtleSksIGRhdGEg
PSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1TaWduKGtleSwgV1RGTW92ZShk
YXRhKSk7CisgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAg
ICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJl
aW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAgICAgICAgICAgICAg
IGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAgICAgICAgIFtlYyA9IHJlc3VsdC5yZWxl
YXNlRXhjZXB0aW9uKCkuY29kZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhlYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgorICAg
ICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICBbcmVzdWx0ID0gcmVz
dWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKKyAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6dmVy
aWZ5KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAgcGxhdGZvcm1WZXJpZnkoV1RGTW92ZShrZXkpLCBXVEZN
b3ZlKHNpZ25hdHVyZSksIFdURk1vdmUoZGF0YSksIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgY29udGV4dCwgd29ya1F1ZXVlKTsKKyAgICBjb250ZXh0LnJl
ZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAgICAgW2tleSA9IFdURk1vdmUoa2V5
KSwgc2lnbmF0dXJlID0gV1RGTW92ZShzaWduYXR1cmUpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwg
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3Zl
KGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IHBsYXRmb3JtVmVyaWZ5KGtleSwgV1RGTW92ZShzaWduYXR1cmUpLCBXVEZN
b3ZlKGRhdGEpKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCisgICAgICAgICAg
ICAgICAgY29udGV4dC5wb3N0VGFzaygKKyAgICAgICAgICAgICAgICAgICAgW2VjID0gcmVzdWx0
LnJlbGVhc2VFeGNlcHRpb24oKS5jb2RlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKGVjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
CisgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgIFtyZXN1bHQg
PSByZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOworICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5
UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDBhYTg4OWI5
YjljYzJhZjYxOGJlZTVjZWQ4YmUyYzU2NGE0OTY2ZjIuLmE1NWJkODliMDkwMDJmM2UxY2Y2OWUw
NTI5ZWZlYWUxNjcxYWJlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYs
IEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICBFeGNl
cHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmLCBW
ZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1W
ZXJpZnkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0
b3I8dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVy
aWZ5KGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RG
Mi5jcHAKaW5kZXggMDA1MjU1Y2ZlNzhkZTBhZDQ3NDRlNzM5OGJkOWYxMzE3OTRlMTI1Mi4uZmU4
ZTdhNjJkMDgwMTlhOGY3MWZmNmI1NmM1M2I5NGZjMGUxNTIyNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIu
Y3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ5LDcgKzUwLDI4IEBA
IHZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpkZXJpdmVCaXRzKHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJh
dGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybURlcml2ZUJp
dHMoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBXVEZNb3Zl
KGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1
ZSk7CisKKyAgICBjb250ZXh0LnJlZigpOworICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKKyAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShi
YXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gcGxhdGZvcm1EZXJpdmVCaXRzKCpwYXJhbWV0
ZXJzLCBiYXNlS2V5LCBsZW5ndGgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRp
b24oKSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
KyAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAorICAgICAgICAgICAgICAgICAgICBb
ZWMgPSByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soZWMpOworICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KKyAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCisgICAgICAgICAgICAg
ICAgW3Jlc3VsdCA9IHJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxi
YWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVm
KCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOwogfQogCiB2b2lkIENyeXB0b0Fs
Z29yaXRobVBCS0RGMjo6aW1wb3J0S2V5KENyeXB0b0tleUZvcm1hdCBmb3JtYXQsIEtleURhdGEm
JiBkYXRhLCBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2Fn
ZXMsIEtleUNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9u
Q2FsbGJhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1QQktERjIuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oCmluZGV4IDU3MGJiZDM2YmVjNWRjN2MzNTQ4Y2NhNmU1
NGUzNzllYWNhMzU2N2YuLjk3MzJiMWMwYjZmZjNlYzQwZjc4NjNjODVhZTdmMWViMjViOThmNzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobVBCS0RGMi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobVBCS0RGMi5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBp
bXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0
cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9L
ZXlVc2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7
CiAgICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3Jp
dGhtUGFyYW1ldGVycyYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybURlcml2ZUJpdHMoc3Rk
Ojp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+
JiYsIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0
aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIHNpemVfdCk7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0Ny
eXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcAppbmRleCA3NmU0NTQxYjJlZmViMDFmMDdh
YzAwNjkzMjhlMDhhNzgyYzQ5MzM3Li4wNzU4OGQ5YWZjODgwNTU1OGIyMmYzNDMwZjg5YThhNDg5
ZmYwYWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0Fs
Z29yaXRobUhLREZHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQv
Q3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRl
ICJDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3Lmgi
CiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE1MywzMiArMTUyLDE1IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZ2NyeXB0RGVyaXZlQml0cyhj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtlCiAgICAgcmV0dXJuIG91dHB1dDsKIH0KIAotdm9pZCBD
cnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENy
eXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBi
YXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRp
b25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90
Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYga2V5LCBzaXplX3QgbGVu
Z3RoKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKAotICAg
ICAgICBbcGFyYW1ldGVycyA9IFdURk1vdmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3Zl
KGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICAgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByYXdL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOwotCi0gICAgICAgICAg
ICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1l
dGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8g
OCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFvdXRw
dXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShl
eGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAgIGF1
dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4o
cGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3Pihr
ZXkpOwogCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZN
b3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxs
YmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXko
KSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9y
KCksIGxlbmd0aCAvIDgsIGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKTsKKyAgICBpZiAo
IW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07Cisg
ICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGht
SE1BQ0dDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29y
aXRobUhNQUNHQ3J5cHQuY3BwCmluZGV4IDZiYjE1NDVmMjM2YjI1NTc1NTliMzY1Y2NkYThlMDlh
OTc4Y2NmOTcuLjAyNTZlNWNiZTQ0NmVjMzMzY2E1MzRjYmI5MzExYzcyNjllY2ViNzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dD
cnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0
aG1ITUFDR0NyeXB0LmNwcApAQCAtMzIsNyArMzIsNiBAQAogI2lmIEVOQUJMRShTVUJUTEVfQ1JZ
UFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxwYWwvY3J5cHRvL2djcnlwdC9IYW5kbGUuaD4KICNp
bmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oPgogCkBAIC04Myw1NiArODIsMzMg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBjYWxjdWxhdGVTaWduYXR1
cmUoaW50IGFsZ29yaXRobSwgY29uc3QgVmUKICAgICByZXR1cm4gV1RGTW92ZShzaWduYXR1cmUp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihSZWY8Q3J5cHRv
S2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbihjb25zdCBD
cnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRl
eHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIGRh
dGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRh
YmxlIHsKLSAgICAgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtl
eS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3Jp
dGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChhbGdv
cml0aG0gIT0gR0NSWV9NQUNfTk9ORSkgewotICAgICAgICAgICAgYXV0byByZXN1bHQgPSBjYWxj
dWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0
YS5zaXplKCkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRv
IHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBv
c3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKCpy
ZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVy
YXRpb25FcnJvcik7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwot
ICAgIH0pOworICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkp
OworCisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tl
eS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxnb3JpdGhtID09IEdDUllf
TUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9Owor
CisgICAgYXV0byByZXN1bHQgPSBjYWxjdWxhdGVTaWduYXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5
LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpOworICAgIGlmICghcmVzdWx0KQorICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RG
TW92ZSgqcmVzdWx0KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZl
cmlmeShSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBW
ZWN0b3I8dWludDhfdD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9u
Q2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdv
cml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsK
LSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92
ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRh
dGEpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAg
YXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQoKSk7Ci0gICAg
ICAgIGF1dG8gYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxnb3JpdGhtKGhtYWNLZXkuaGFz
aEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmIChhbGdvcml0aG0gIT0gR0NSWV9N
QUNfTk9ORSkgewotICAgICAgICAgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0
ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNp
emUoKSk7Ci0gICAgICAgICAgICBpZiAoZXhwZWN0ZWRTaWduYXR1cmUpIHsKLSAgICAgICAgICAg
ICAgICAvLyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50IHRpbWlu
ZyBhdHRhY2tzLgotICAgICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUo
KSA9PSBleHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhw
ZWN0ZWRTaWduYXR1cmUtPmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1
cmUtPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVu
Y2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJl
YWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIHJlc3VsdCwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVm
ZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIg
dGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBX
VEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwot
ICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRv
S2V5SE1BQz4oa2V5KTsKKworICAgIGF1dG8gYWxnb3JpdGhtID0gZ2V0R0NyeXB0RGlnZXN0QWxn
b3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgaWYgKGFsZ29y
aXRobSA9PSBHQ1JZX01BQ19OT05FKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0
aW9uRXJyb3IgfTsKKworICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBjYWxjdWxhdGVTaWdu
YXR1cmUoYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkp
OworICAgIGlmICghZXhwZWN0ZWRTaWduYXR1cmUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OworICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJp
c29uIHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCisgICAgcmV0dXJuIHNpZ25hdHVyZS5zaXpl
KCkgPT0gZXhwZWN0ZWRTaWduYXR1cmUtPnNpemUoKSAmJiAhY29uc3RhbnRUaW1lTWVtY21wKGV4
cGVjdGVkU2lnbmF0dXJlLT5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0
dXJlLT5zaXplKCkpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
Z2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKaW5kZXggZjFmNzky
MWZjMGY3ZGU3OGU1NzBmOWY5MTFhOWI1MDcwYjlmYmVlYi4uOGZlNDU3NDZlZDBjMDM1YjZkZGUx
MzcyZmNhZGE5YzlhZjVlMmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2dj
cnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcy5oIgogI2luY2x1
ZGUgIkNyeXB0b0tleVJhdy5oIgogI2luY2x1ZGUgIkdDcnlwdFV0aWxpdGllcy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01OCwzMiArNTcsMTUgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2UKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRz
KHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMs
IFJlZjxDcnlwdG9LZXk+JiYga2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJp
dHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVl
dWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
a2V5ID0gV1RGTW92ZShrZXkpLCBsZW5ndGgsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayks
IGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0
XSgpIG11dGFibGUgewotICAgICAgICAgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25j
YXN0PENyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICAg
ICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkuZ2V0KCkpOworICAg
IGF1dG8mIHBia2RmMlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1QYmtkZjJQ
YXJhbXM+KHBhcmFtZXRlcnMpOworICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tl
eVJhdz4oa2V5KTsKIAotICAgICAgICAgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRz
KHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIHBia2RmMlBhcmFt
ZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgbGVuZ3Ro
KTsKLSAgICAgICAgICAgIGlmICghb3V0cHV0KSB7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugc2hv
dWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERv
Y3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2so
Ci0gICAgICAgICAgICAgICAgICAgIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICBb
b3V0cHV0ID0gV1RGTW92ZSgqb3V0cHV0KSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhv
dXRwdXQpOwotICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgIH0pOworICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0
cyhyYXdLZXkua2V5KCksIHBia2RmMlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLCBwYmtkZjJQYXJh
bWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBwYmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIGxlbmd0
aCk7CisgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworICAgIHJldHVybiBXVEZNb3ZlKCpvdXRwdXQpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0
b0FsZ29yaXRobUhLREZNYWMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9B
bGdvcml0aG1IS0RGTWFjLmNwcAppbmRleCBhNWYzYjRkZmQ0MTk0ZWVlZjZkMzI1NTJjZjYzMTc5
MzAzNTdkNTNlLi5iMzFlMDBmMjU0ZmMyZDQ0NjJiNzE4NjlkNmE5MTllY2RmNzQ4NTA3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1h
Yy5jcHAKQEAgLTMxLDM1ICszMSwyMiBAQAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGll
cy5oIgogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJD
cnlwdG9LZXlSYXcuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURl
cml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFy
YW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JD
YWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNr
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkK
K0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZv
cm1EZXJpdmVCaXRzKENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0
IENyeXB0b0tleSYga2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0g
ICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
YmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
JmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93
bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBh
dXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworICAg
IGF1dG8mIGhrZGZQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFt
cz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3
PihrZXkpOwogCi0gICAgICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0g
ICAgICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKLSAgICAgICAgZ2V0Q29t
bW9uQ3J5cHRvRGlnZXN0QWxnb3JpdGhtKGhrZGZQYXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyLCBk
aWdlc3RBbGdvcml0aG0pOwotICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1
cnJlbnRseSwgd2hlbiByYXdLZXkgaXMgbnVsbCwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJh
aWwgb3V0LgotICAgICAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uSE1hYyhrQ0NLREZBbGdvcml0aG1I
S0RGLCBkaWdlc3RBbGdvcml0aG0sIDAsIHJhd0tleS5rZXkoKS5kYXRhKCksIHJhd0tleS5rZXko
KS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5kYXRhKCksIGhrZGZQ
YXJhbWV0ZXJzLmluZm9WZWN0b3IoKS5zaXplKCksIDAsIDAsIGhrZGZQYXJhbWV0ZXJzLnNhbHRW
ZWN0b3IoKS5kYXRhKCksIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIHJlc3Vs
dC5kYXRhKCksIHJlc3VsdC5zaXplKCkpKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25s
eSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQv
V29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25D
YWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAg
IGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0
ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAg
ICB9KTsKLSAgICB9KTsKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOwor
ICAgIENDRGlnZXN0QWxnb3JpdGhtIGRpZ2VzdEFsZ29yaXRobTsKKyAgICBnZXRDb21tb25Dcnlw
dG9EaWdlc3RBbGdvcml0aG0oaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGRpZ2VzdEFs
Z29yaXRobSk7CisKKyAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk0NTU+IEN1cnJlbnRseSwg
d2hlbiByYXdLZXkgaXMgbnVsbCwgQ0NLZXlEZXJpdmF0aW9uSE1hYyB3aWxsIGJhaWwgb3V0Lgor
ICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhLREYsIGRpZ2VzdEFs
Z29yaXRobSwgMCwgcmF3S2V5LmtleSgpLmRhdGEoKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgMCwg
MCwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuaW5m
b1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEo
KSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0LmRhdGEoKSwgcmVz
dWx0LnNpemUoKSkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCmluZGV4IDU2YjZh
N2EwY2U5Y2ExNmIzZDFkZDEwNzRhZmVmZGNlZTNlY2Y5MzkuLmY5NWY1NTFiMGMzZTAyODI2MDgz
NTA3OGI4NjNlMzI3ZGM5ZDcxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcApAQCAtMjksNyArMjksNiBAQAogI2lmIEVO
QUJMRShTVUJUTEVfQ1JZUFRPKQogCiAjaW5jbHVkZSAiQ3J5cHRvS2V5SE1BQy5oIgotI2luY2x1
ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29t
bW9uSE1BQy5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CiAKQEAg
LTgyLDUzICs4MSwyNSBAQCBzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGNhbGN1bGF0ZVNpZ25hdHVy
ZShDQ0htYWNBbGdvcml0aG0gYWxnb3JpdGhtLCBjb25zdCBWZWN0bwogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9y
PFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0
IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29u
dGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4o
a2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxn
b3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICgh
YWxnb3JpdGhtKSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBj
YWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMu
Ci0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9u
Q2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAg
ICAgIGF1dG8gcmVzdWx0ID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXku
a2V5KCksIGRhdGEpOwotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxs
YmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0g
ICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJl
c3VsdCA9IFdURk1vdmUocmVzdWx0KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2Vw
dGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAg
ICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAg
ICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tl
eUhNQUM+KGtleSk7CisgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3Jp
dGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7CisgICAgaWYgKCFhbGdvcml0
aG0pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OwogCisgICAg
cmV0dXJuIGNhbGN1bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRh
KTsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeShSZWY8Q3J5
cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhf
dD4mJiBkYXRhLCBCb29sQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBl
eGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1
ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25Pcjxib29sPiBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVZlcmlmeShjb25zdCBDcnlwdG9LZXkmIGtleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiBzaWduYXR1cmUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250ZXh0
LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBzaWdu
YXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgaG1hY0tl
eSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleS5nZXQoKSk7Ci0gICAgICAgIGF1dG8gYWxn
b3JpdGhtID0gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShobWFjS2V5Lmhhc2hBbGdvcml0aG1J
ZGVudGlmaWVyKCkpOwotICAgICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFz
ayhbZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkg
ewotICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAg
ICAgICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0g
Y2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEpOwotICAg
ICAgICAvLyBVc2luZyBhIGNvbnN0YW50IHRpbWUgY29tcGFyaXNvbiB0byBwcmV2ZW50IHRpbWlu
ZyBhdHRhY2tzLgotICAgICAgICBib29sIHJlc3VsdCA9IHNpZ25hdHVyZS5zaXplKCkgPT0gZXhw
ZWN0ZWRTaWduYXR1cmUuc2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWdu
YXR1cmUuZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkp
OwotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIg
YmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRl
eHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgewotICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAg
ICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYg
aG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSk7CisgICAgYXV0byBhbGdvcml0
aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlkZW50
aWZpZXIoKSk7CisgICAgaWYgKCFhbGdvcml0aG0pCisgICAgICAgIHJldHVybiBFeGNlcHRpb24g
eyBPcGVyYXRpb25FcnJvciB9OworCisgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1
bGF0ZVNpZ25hdHVyZSgqYWxnb3JpdGhtLCBobWFjS2V5LmtleSgpLCBkYXRhKTsKKyAgICByZXR1
cm4gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkgJiYgIWNvbnN0
YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCks
IGV4cGVjdGVkU2lnbmF0dXJlLnNpemUoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcAppbmRleCBkNjE1
MzNiNzg1ZThiMGY4YzI2Y2EzNmNhMzAzOGM3ODgwNGEwNTFmLi41YzNkNTZiMjdkNTJhMDRhYzky
ZWQyNTI2MTljOGQ1M2MzMzExODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobVBCS0RGMk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwCkBAIC0zMCw3ICszMCw2IEBACiAK
ICNpbmNsdWRlICJDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlw
dG9LZXlSYXcuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVk
ZSA8Q29tbW9uQ3J5cHRvL0NvbW1vbktleURlcml2YXRpb24uaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewpAQCAtNTQsMjkgKzUzLDE2IEBAIHN0YXRpYyBDQ1BzZXVkb1JhbmRvbUFsZ29yaXRobSBj
b21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKENyeXB0b0FsZ29yaXRobUlkZW50aWZpCiAgICAgfQog
fQogCi12b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKHN0ZDo6
dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIFJlZjxD
cnlwdG9LZXk+JiYgYmFzZUtleSwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiBjYWxs
YmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCitFeGNlcHRpb25PcjxW
ZWN0b3I8dWludDhfdD4+IENyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRz
KENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIGNvbnN0IENyeXB0b0tleSYg
a2V5LCBzaXplX3QgbGVuZ3RoKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVl
LmRpc3BhdGNoKFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdU
Rk1vdmUoYmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhj
ZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkg
bXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIHBia2RmMlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlw
dG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgYXV0byYgcmF3
S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihiYXNlS2V5LmdldCgpKTsKKyAgICBhdXRvJiBw
YmtkZjJQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPihw
YXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGtl
eSk7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKLSAgICAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5OTU1PiBDdXJyZW50bHksIENDS2V5RGVyaXZhdGlv
blBCS0RGIGJhaWxzIG91dCB3aGVuIGFuIGVtcHR5IHBhc3N3b3JkL3NhbHQgaXMgcHJvdmlkZWQu
Ci0gICAgICAgIGlmIChDQ0tleURlcml2YXRpb25QQktERihrQ0NQQktERjIsIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgY2hhciAqPihyYXdLZXkua2V5KCkuZGF0YSgpKSwgcmF3S2V5LmtleSgpLnNp
emUoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgpLCBwYmtkZjJQYXJhbWV0
ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0ocGJrZGYy
UGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciksIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywg
cmVzdWx0LmRhdGEoKSwgbGVuZ3RoIC8gOCkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJh
Y2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAg
ICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1
bHQgPSBXVEZNb3ZlKHJlc3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7
CisgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzMyNDM5OTU1PiBDdXJyZW50bHksIENDS2V5RGVyaXZh
dGlvblBCS0RGIGJhaWxzIG91dCB3aGVuIGFuIGVtcHR5IHBhc3N3b3JkL3NhbHQgaXMgcHJvdmlk
ZWQuCisgICAgaWYgKENDS2V5RGVyaXZhdGlvblBCS0RGKGtDQ1BCS0RGMiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyICo+KHJhd0tleS5rZXkoKS5kYXRhKCkpLCByYXdLZXkua2V5KCkuc2l6
ZSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBia2RmMlBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLnNpemUoKSwgY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYmtkZjJQ
YXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKSwgcGJrZGYyUGFyYW1ldGVycy5pdGVyYXRpb25zLCBy
ZXN1bHQuZGF0YSgpLCBsZW5ndGggLyA4KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319070</attachid>
            <date>2017-08-25 01:19:34 -0700</date>
            <delta_ts>2017-08-29 00:54:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175620-20170825101932.patch</filename>
            <type>text/plain</type>
            <size>32713</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlYWI3MzAwNzI0MDIy
NTMxNmRkZjc5NWUyZGYwMzhmZWRkM2NlMy4uZjFmNmI1Mzk4MzgyZWUyYzNiYzJhMzU1Njk1OTNl
OTNjMGJiNmNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE3LTA4LTI1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQdXNoIHRoZSBXb3JrUXVldWUgZGlzcGF0Y2ggY29kZSBhbmQgb3RoZXIgY29k
ZSBkdXBsaWNhdGVkIGJldHdlZW4gdGhlCisgICAgICAgIE1hYyBhbmQgbGliZ2NyeXB0IGltcGxl
bWVudGF0aW9ucyBvZiBXZWIgQ3J5cHRvIGludG8gdGhlIHNoYXJlZCBsYXllci4KKyAgICAgICAg
VGhpcyBwYXRjaCBmb2N1c2VzIG9uIHRoZSBIS0RGLCBITUFDIGFuZCBQQktERjIgYWxnb3JpdGht
cy4KKworICAgICAgICBGdW5jdGlvbnMgd2l0aCBwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRh
dGlvbnMgdGhhdCBhcmUgaW52b2tlZCBmcm9tCisgICAgICAgIHRoZXNlIGFzeW5jaHJvbm91cyBk
aXNwYXRjaGVzIGFyZSBtYWRlIHN0YXRpYyBhbmQgcmV0dXJuIGFuIEV4Y2VwdGlvbk9yCisgICAg
ICAgIHZhbHVlLiBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzIG9iamVjdHMgYXJlIHBhc3NlZCB0
aHJvdWdoIG5vbi1jb25zdAorICAgICAgICByZWZlcmVuY2VzIGJlY2F1c2UgZGF0YSBnZXR0ZXJz
IGNvdWxkIGxhemlseSBjb25zdHJ1Y3QgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgVmVjdG9yIG9i
amVjdHMuIENyeXB0b0tleSBvYmplY3RzIGFyZSBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVu
Y2VzLgorICAgICAgICBJbXBsZW1lbnRhdGlvbnMgY2FuIHRoZW4gbWFudWFsbHkgcmV0cmlldmUg
YW5kIGZ1cnRoZXIgdmFsaWRhdGUgYW55IGtleQorICAgICAgICBvciBwYXJhbWV0ZXIgZGF0YSwg
YXMgcmVxdWlyZWQgZm9yIHRoYXQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uIElucHV0CisgICAg
ICAgIGRhdGEgaXMgcGFzc2VkIHRocm91Z2ggY29uc3QgcmVmZXJlbmNlcyB0byB0aGUgb3JpZ2lu
YWwgVmVjdG9yIG9iamVjdHMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNoYW5nZXMg
aW4gYmVoYXZpb3IgdGhhdCdzIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAgICAg
KiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OmRlcml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxn
b3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0
b0FsZ29yaXRobUhNQUM6OnNpZ24pOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGht
SE1BQzo6dmVyaWZ5KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0
aG1ITUFDLmg6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJL
REYyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZl
Qml0cyk6CisgICAgICAgICogY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
Lmg6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZl
Qml0cyk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2ln
bik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlm
eSk6CisgICAgICAgICogY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURl
cml2ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2
ZUJpdHMpOgorICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24pOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1WZXJpZnkpOgor
ICAgICAgICAqIGNyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobVBCS0RGMjo6cGxhdGZvcm1EZXJpdmVCaXRzKToK
KworMjAxNy0wOC0yNSAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CisKICAg
ICAgICAgW1dlYkNyeXB0b10gUHVzaCBXb3JrUXVldWUgZGlzcGF0Y2hlcyBmb3IgUlNBIGFsZ29y
aXRobXMgaW50byBzaGFyZWQgY29kZQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1NjIxCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwIGIvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKaW5kZXggZmIzZTIxZDgxYWMx
NWZmMzJhOWFmNjhkMzYwMGU2NzQ0NWY2NTA2MS4uZWM3MWVmMTc2Nzg1ZmY3ODIxMDhiN2Y0Nzdk
MTQxOGY2ODU3MmNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKQEAgLTQ5LDcgKzQ5LDExIEBAIHZvaWQg
Q3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxn
b3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVy
cm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0Zm9ybURlcml2ZUJpdHMoV1RG
TW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRleHQsIHdvcmtRdWV1ZSk7CisK
KyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRleHQsIFdURk1vdmUoY2FsbGJh
Y2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAgICAgW3BhcmFtZXRlcnMgPSBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoXSB7
CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1EZXJpdmVCaXRzKCpwYXJhbWV0ZXJzLCBiYXNl
S2V5LCBsZW5ndGgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1IS0RG
OjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0
IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMs
IGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJh
Y2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhLREYuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRo
bUhLREYuaAppbmRleCA2YjdkZjliZmY0ZTI2MzYwZDc5OTZiZDA5NzM2NDJhNTQyYzYwOTVmLi45
ODAyMTViNDQ5YmI4OTgxY2NkOWJhNjkzNzZkMDFlNjg2MWJlYjc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1IS0RGLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oCkBA
IC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBvcnRLZXkoQ3J5cHRvS2V5Rm9y
bWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJh
bWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCwgS2V5Q2Fs
bGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8c2l6
ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYpIGZpbmFs
OwogCi0gICAgdm9pZCBwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0Fs
Z29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYsIHNpemVfdCBsZW5ndGgsIFZl
Y3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYsIGNvbnN0IENy
eXB0b0tleSYsIHNpemVfdCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFD
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuY3BwCmluZGV4IGFmNjUyMWMzYjNkZDE5ZGEzMWM1ZmJmYjViYzFkMGEzM2Y5NTU4ZGMuLjA0
MWEyOTJiOGEwZDU2N2ZmNTNmOGZmMTJmMzRiZmE2YzBhYzI4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3Bw
CkBAIC01NywxMiArNTcsMTggQEAgQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmllciBDcnlwdG9BbGdv
cml0aG1ITUFDOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBSZWY8
Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0YSwgVmVjdG9yQ2FsbGJhY2sm
JiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25DYWxsYmFjaywgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3b3JrUXVldWUpCiB7Ci0gICAg
cGxhdGZvcm1TaWduKFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFj
ayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworICAg
IGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayks
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkp
LCBkYXRhID0gV1RGTW92ZShkYXRhKV0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtU2ln
bihrZXksIGRhdGEpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
Ojp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJl
ZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1
aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFj
ayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBX
b3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBwbGF0Zm9ybVZlcmlmeShXVEZNb3ZlKGtleSks
IFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RGTW92ZShjYWxsYmFjayksIFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworICAgIGRpc3Bh
dGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1v
dmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0gV1RGTW92ZShrZXkpLCBzaWdu
YXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZNb3ZlKGRhdGEpXSB7CisgICAg
ICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoa2V5LCBzaWduYXR1cmUsIGRhdGEpOworICAg
ICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpnZW5lcmF0ZUtleShjb25z
dCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBib29sIGV4dHJhY3RhYmxl
LCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5UGFpckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRo
bXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDBhYTg4OWI5YjljYzJhZjYxOGJlZTVjZWQ4
YmUyYzU2NGE0OTY2ZjIuLmE1NWJkODliMDkwMDJmM2UxY2Y2OWUwNTI5ZWZlYWUxNjcxYWJlYjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9B
bGdvcml0aG1ITUFDLmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGV4cG9y
dEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYsIEtleURhdGFDYWxsYmFjayYm
LCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdl
dEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAg
ICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmLCBWZWN0b3I8dWludDhfdD4mJiwg
VmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1WZXJpZnkoUmVmPENyeXB0b0tl
eT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0b3I8dWludDhfdD4mJiwgQm9v
bENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+Jik7Cisg
ICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5
cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5jcHAKaW5kZXggMDA1MjU1
Y2ZlNzhkZTBhZDQ3NDRlNzM5OGJkOWYxMzE3OTRlMTI1Mi4uMjAwZGYzYTI4ZjllMDAyMjliZTBi
OWZlMTZhNDQ2MDAwOGY0YjJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuY3BwCkBAIC00OSw3ICs0OSwx
MSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycwogICAgICAgICBleGNlcHRpb25DYWxsYmFjayhP
cGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgcGxhdGZvcm1EZXJp
dmVCaXRzKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3Jr
UXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1ZXVlLCBjb250ZXh0LCBXVEZN
b3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksCisgICAgICAgIFtwYXJh
bWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSks
IGxlbmd0aF0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3JtRGVyaXZlQml0cygqcGFyYW1l
dGVycywgYmFzZUtleSwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CiB9CiAKIHZvaWQgQ3J5cHRvQWxn
b3JpdGhtUEJLREYyOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5RGF0YSYm
IGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYm
IHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwIHVzYWdl
cywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRpb25D
YWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0Ny
eXB0b0FsZ29yaXRobVBCS0RGMi5oIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMv
Q3J5cHRvQWxnb3JpdGhtUEJLREYyLmgKaW5kZXggNTcwYmJkMzZiZWM1ZGM3YzM1NDhjY2E2ZTU0
ZTM3OWVhY2EzNTY3Zi4uOTczMmIxYzBiNmZmM2VjNDBmNzg2M2M4NWFlN2YxZWIyNWI5OGY3NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3Jp
dGhtUEJLREYyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtUEJLREYyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlt
cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29uc3Qgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsK
ICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0
aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6
OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiwgUmVmPENyeXB0b0tleT4m
Jiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOworICAgIHN0YXRpYyBFeGNlcHRp
b25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5
cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0
L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IDc2ZTQ1NDFiMmVmZWIwMWYwN2Fj
MDA2OTMyOGUwOGE3ODJjNDkzMzcuLjA3NTg4ZDlhZmM4ODA1NTU4YjIyZjM0MzBmODlhOGE0ODlm
ZjBhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxn
b3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9D
cnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
IkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRlICJDcnlwdG9LZXlSYXcuaCIK
ICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25D
b250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTUzLDMyICsxNTIsMTUgQEAg
c3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBnY3J5cHREZXJpdmVCaXRzKGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2UKICAgICByZXR1cm4gb3V0cHV0OwogfQogCi12b2lkIENy
eXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5
cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJh
c2VLZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlv
bkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+
PiBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIHNpemVfdCBsZW5n
dGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goCi0gICAg
ICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9IFdURk1vdmUo
YmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBhdXRvJiBoa2RmUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0Fs
Z29yaXRobUhrZGZQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIGF1dG8mIHJhd0tl
eSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtleS5nZXQoKSk7Ci0KLSAgICAgICAgICAg
IGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0cyhyYXdLZXkua2V5KCksIGhrZGZQYXJhbWV0
ZXJzLnNhbHRWZWN0b3IoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLCBsZW5ndGggLyA4
LCBoa2RmUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBpZiAoIW91dHB1
dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgICAgICBbY2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4
Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgYXV0
byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPihw
YXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGtl
eSk7CiAKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNr
cyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAgICAgW291dHB1dCA9IFdURk1v
dmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxi
YWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sob3V0cHV0KTsKLSAgICAg
ICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICB9KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgp
LCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJhbWV0ZXJzLmluZm9WZWN0b3Io
KSwgbGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpOworICAgIGlmICgh
b3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3BlcmF0aW9uRXJyb3IgfTsKKyAg
ICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1I
TUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3Jp
dGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggNmJiMTU0NWYyMzZiMjU1NzU1OWIzNjVjY2RhOGUwOWE5
NzhjY2Y5Ny4uMDI1NmU1Y2JlNDQ2ZWMzMzNjYTUzNGNiYjkzMTFjNzI2OWVjZWI3MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1ITUFDR0Ny
eXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRo
bUhNQUNHQ3J5cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2NyeXB0L0hhbmRsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CiAKQEAgLTgzLDU2ICs4MiwzMyBA
QCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGNhbGN1bGF0ZVNpZ25hdHVy
ZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZQogICAgIHJldHVybiBXVEZNb3ZlKHNpZ25hdHVyZSk7
CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKFJlZjxDcnlwdG9L
ZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKGNvbnN0IENy
eXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRhdGEpCiB7Ci0gICAgY29udGV4
dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9IFdURk1vdmUoa2V5KSwgZGF0
YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFi
bGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5
LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0
aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGFsZ29y
aXRobSAhPSBHQ1JZX01BQ19OT05FKSB7Ci0gICAgICAgICAgICBhdXRvIHJlc3VsdCA9IGNhbGN1
bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRh
LnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgLy8g
V2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8g
dGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3VsdCA9IFdURk1vdmUoKnJl
c3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJh
dGlvbkVycm9yKTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSk7CisgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENyeXB0b0tleUhNQUM+KGtleSk7
CisKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2VzdEFsZ29yaXRobShobWFjS2V5
Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmIChhbGdvcml0aG0gPT0gR0NSWV9N
QUNfTk9ORSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisK
KyAgICBhdXRvIHJlc3VsdCA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXku
a2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBXVEZN
b3ZlKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVy
aWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZl
Y3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25D
YWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29y
aXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0
b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewot
ICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3Zl
KGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0
YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RG
TW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBh
dXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAg
ICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNo
QWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGFsZ29yaXRobSAhPSBHQ1JZX01B
Q19OT05FKSB7Ci0gICAgICAgICAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3VsYXRl
U2lnbmF0dXJlKGFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YS5kYXRhKCksIGRhdGEuc2l6
ZSgpKTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZFNpZ25hdHVyZSkgewotICAgICAgICAgICAg
ICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5n
IGF0dGFja3MuCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBzaWduYXR1cmUuc2l6ZSgp
ID09IGV4cGVjdGVkU2lnbmF0dXJlLT5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1lbWNtcChleHBl
Y3RlZFNpZ25hdHVyZS0+ZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVy
ZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5j
ZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVh
ZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgcmVzdWx0LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZl
cmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0
aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdU
Rk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9L
ZXlITUFDPihrZXkpOworCisgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdv
cml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoYWxnb3Jp
dGhtID09IEdDUllfTUFDX05PTkUpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRp
b25FcnJvciB9OworCisgICAgYXV0byBleHBlY3RlZFNpZ25hdHVyZSA9IGNhbGN1bGF0ZVNpZ25h
dHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7
CisgICAgaWYgKCFleHBlY3RlZFNpZ25hdHVyZSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CisgICAgLy8gVXNpbmcgYSBjb25zdGFudCB0aW1lIGNvbXBhcmlz
b24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KKyAgICByZXR1cm4gc2lnbmF0dXJlLnNpemUo
KSA9PSBleHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhw
ZWN0ZWRTaWduYXR1cmUtPmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEoKSwgZXhwZWN0ZWRTaWduYXR1
cmUtPnNpemUoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcAppbmRleCBmMWY3OTIx
ZmMwZjdkZTc4ZTU3MGY5ZjkxMWE5YjUwNzBiOWZiZWViLi44ZmU0NTc0NmVkMGMwMzViNmRkZTEz
NzJmY2FkYTljOWFmNWUyYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5cHQuY3BwCkBAIC0zMyw3ICsz
Myw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zLmgiCiAjaW5jbHVk
ZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRpbGl0aWVzLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTU4LDMyICs1NywxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGdj
cnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMo
c3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywg
UmVmPENyeXB0b0tleT4mJiBrZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0
cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkm
IGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1
ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBr
ZXkgPSBXVEZNb3ZlKGtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwg
ZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRd
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiBwYmtkZjJQYXJhbWV0ZXJzID0gZG93bmNh
c3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgICAg
ICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGtleS5nZXQoKSk7CisgICAg
YXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobVBia2RmMlBh
cmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
UmF3PihrZXkpOwogCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2ZUJpdHMo
cmF3S2V5LmtleSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgcGJrZGYyUGFyYW1l
dGVycy5oYXNoSWRlbnRpZmllciwgcGJrZGYyUGFyYW1ldGVycy5pdGVyYXRpb25zLCBsZW5ndGgp
OwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91
bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9j
dW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzaygK
LSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu
ZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVy
ZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRo
cmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAgICAgICAgICAgIFtv
dXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBl
eGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG91
dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQgPSBnY3J5cHREZXJpdmVCaXRz
KHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIHBia2RmMlBhcmFt
ZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgbGVuZ3Ro
KTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0Fs
Z29yaXRobUhLREZNYWMuY3BwCmluZGV4IGE1ZjNiNGRmZDQxOTRlZWVmNmQzMjU1MmNmNjMxNzkz
MDM1N2Q1M2UuLmIzMWUwMGYyNTRmYzJkNDQ2MmI3MTg2OWQ2YTkxOWVjZGY3NDg1MDcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFj
LmNwcApAQCAtMzEsMzUgKzMxLDIyIEBACiAjaW5jbHVkZSAiQ29tbW9uQ3J5cHRvVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFtcy5oIgogI2luY2x1ZGUgIkNy
eXB0b0tleVJhdy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVy
aXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJh
bWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNh
bGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ss
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQor
RXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9y
bURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAg
ICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBi
YXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAm
Y29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3du
Y2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1ldGVycyk7Ci0gICAgICAgIGF1
dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtleS5nZXQoKSk7CisgICAg
YXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1z
PihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+
KGtleSk7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsKLSAg
ICAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwotICAgICAgICBnZXRDb21t
b25DcnlwdG9EaWdlc3RBbGdvcml0aG0oaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIGRp
Z2VzdEFsZ29yaXRobSk7Ci0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTQ1NT4gQ3Vy
cmVudGx5LCB3aGVuIHJhd0tleSBpcyBudWxsLCBDQ0tleURlcml2YXRpb25ITWFjIHdpbGwgYmFp
bCBvdXQuCi0gICAgICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFjKGtDQ0tERkFsZ29yaXRobUhL
REYsIGRpZ2VzdEFsZ29yaXRobSwgMCwgcmF3S2V5LmtleSgpLmRhdGEoKSwgcmF3S2V5LmtleSgp
LnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLmRhdGEoKSwgaGtkZlBh
cmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuc2FsdFZl
Y3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLnNpemUoKSwgcmVzdWx0
LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNh
bGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
ICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAg
Y29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tz
IGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCByZXN1bHQg
PSBXVEZNb3ZlKHJlc3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25D
YWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAg
IH0pOwotICAgIH0pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1bHQobGVuZ3RoIC8gOCk7Cisg
ICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOworICAgIGdldENvbW1vbkNyeXB0
b0RpZ2VzdEFsZ29yaXRobShoa2RmUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgZGlnZXN0QWxn
b3JpdGhtKTsKKworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3
aGVuIHJhd0tleSBpcyBudWxsLCBDQ0tleURlcml2YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCisg
ICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3JpdGhtSEtERiwgZGlnZXN0QWxn
b3JpdGhtLCAwLCByYXdLZXkua2V5KCkuZGF0YSgpLCByYXdLZXkua2V5KCkuc2l6ZSgpLCAwLCAw
LCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBoa2RmUGFyYW1ldGVycy5pbmZv
VmVjdG9yKCkuc2l6ZSgpLCAwLCAwLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuZGF0YSgp
LCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCByZXN1bHQuZGF0YSgpLCByZXN1
bHQuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07
CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01hYy5jcHAKaW5kZXggNTZiNmE3
YTBjZTljYTE2YjNkMWRkMTA3NGFmZWZkY2VlM2VjZjkzOS4uZjk1ZjU1MWIwYzNlMDI4MjYwODM1
MDc4Yjg2M2UzMjdkYzlkNzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21h
Yy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
bWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCkBAIC0yOSw3ICsyOSw2IEBACiAjaWYgRU5B
QkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21t
b25ITUFDLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNVdGlsaXRpZXMuaD4KIApAQCAt
ODIsNTMgKzgxLDI1IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4gY2FsY3VsYXRlU2lnbmF0dXJl
KENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFZlY3RvCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oUmVmPENyeXB0
b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZlY3RvckNhbGxiYWNrJiYgY2Fs
bGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVNpZ24oY29uc3Qg
Q3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgZGF0YSkKIHsKLSAgICBjb250
ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5ID0gV1RGTW92ZShrZXkpLCBk
YXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0
aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0
YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihr
ZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdv
cml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKCFh
bGdvcml0aG0pIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNh
bGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4K
LSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92
ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25D
YWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgYXV0byByZXN1bHQgPSBjYWxjdWxhdGVTaWduYXR1cmUoKmFsZ29yaXRobSwgaG1hY0tleS5r
ZXkoKSwgZGF0YSk7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxi
YWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAg
ICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVz
dWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0
aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAg
ICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5
SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0
aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWFsZ29yaXRo
bSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CiAKKyAgICBy
ZXR1cm4gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEp
OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlw
dG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90
PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4
Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVl
dWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBs
YXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4m
IHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQu
cmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25h
dHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRp
b25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdv
cml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKGhtYWNLZXkuaGFzaEFsZ29yaXRobUlk
ZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghYWxnb3JpdGhtKSB7Ci0gICAgICAgICAgICAvLyBX
ZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0
aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNr
KFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFj
ayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7
Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3BlcmF0aW9uRXJyb3IpOwotICAg
ICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gZXhwZWN0ZWRTaWduYXR1cmUgPSBj
YWxjdWxhdGVTaWduYXR1cmUoKmFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YSk7Ci0gICAg
ICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZlbnQgdGltaW5n
IGF0dGFja3MuCi0gICAgICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBl
Y3RlZFNpZ25hdHVyZS5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25h
dHVyZS5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVkU2lnbmF0dXJlLnNpemUoKSk7
Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBi
ZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4
dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0LCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBo
bWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRo
bSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRp
ZmllcigpKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBhdXRvIGV4cGVjdGVkU2lnbmF0dXJlID0gY2FsY3Vs
YXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEpOworICAgIHJldHVy
biBzaWduYXR1cmUuc2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLnNpemUoKSAmJiAhY29uc3Rh
bnRUaW1lTWVtY21wKGV4cGVjdGVkU2lnbmF0dXJlLmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEoKSwg
ZXhwZWN0ZWRTaWduYXR1cmUuc2l6ZSgpKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwIGIvU291cmNlL1dl
YkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwCmluZGV4IGQ2MTUz
M2I3ODVlOGIwZjhjMjZjYTM2Y2EzMDM4Yzc4ODA0YTA1MWYuLjVjM2Q1NmIyN2Q1MmEwNGFjOTJl
ZDI1MjYxOWM4ZDUzYzMzMTE4NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9t
YWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyTWFjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlw
dG8vbWFjL0NyeXB0b0FsZ29yaXRobVBCS0RGMk1hYy5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKIAog
I2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcy5oIgogI2luY2x1ZGUgIkNyeXB0
b0tleVJhdy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRl
IDxDb21tb25DcnlwdG8vQ29tbW9uS2V5RGVyaXZhdGlvbi5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CkBAIC01NCwyOSArNTMsMTYgQEAgc3RhdGljIENDUHNldWRvUmFuZG9tQWxnb3JpdGhtIGNv
bW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oQ3J5cHRvQWxnb3JpdGhtSWRlbnRpZmkKICAgICB9CiB9
CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYgcGFyYW1ldGVycywgUmVmPENy
eXB0b0tleT4mJiBiYXNlS2V5LCBzaXplX3QgbGVuZ3RoLCBWZWN0b3JDYWxsYmFjayYmIGNhbGxi
YWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPFZl
Y3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMo
Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBr
ZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUu
ZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RG
TW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBt
dXRhYmxlIHsKLSAgICAgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVBia2RmMlBhcmFtcz4oKnBhcmFtZXRlcnMpOwotICAgICAgICBhdXRvJiByYXdL
ZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+KGJhc2VLZXkuZ2V0KCkpOworICAgIGF1dG8mIHBi
a2RmMlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1QYmtkZjJQYXJhbXM+KHBh
cmFtZXRlcnMpOworICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oa2V5
KTsKIAotICAgICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOwotICAgICAg
ICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk5NTU+IEN1cnJlbnRseSwgQ0NLZXlEZXJpdmF0aW9u
UEJLREYgYmFpbHMgb3V0IHdoZW4gYW4gZW1wdHkgcGFzc3dvcmQvc2FsdCBpcyBwcm92aWRlZC4K
LSAgICAgICAgaWYgKENDS2V5RGVyaXZhdGlvblBCS0RGKGtDQ1BCS0RGMiwgcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyICo+KHJhd0tleS5rZXkoKS5kYXRhKCkpLCByYXdLZXkua2V5KCkuc2l6
ZSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5kYXRhKCksIHBia2RmMlBhcmFtZXRl
cnMuc2FsdFZlY3RvcigpLnNpemUoKSwgY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShwYmtkZjJQ
YXJhbWV0ZXJzLmhhc2hJZGVudGlmaWVyKSwgcGJrZGYyUGFyYW1ldGVycy5pdGVyYXRpb25zLCBy
ZXN1bHQuZGF0YSgpLCBsZW5ndGggLyA4KSkgewotICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9u
bHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50
L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhbZXhjZXB0aW9u
Q2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAg
ICBjb250ZXh0LmRlcmVmKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFj
a3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAg
ICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJlc3Vs
dCA9IFdURk1vdmUocmVzdWx0KSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlv
bkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgewotICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAg
ICAgfSk7Ci0gICAgfSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChsZW5ndGggLyA4KTsK
KyAgICAvLyA8cmRhcjovL3Byb2JsZW0vMzI0Mzk5NTU+IEN1cnJlbnRseSwgQ0NLZXlEZXJpdmF0
aW9uUEJLREYgYmFpbHMgb3V0IHdoZW4gYW4gZW1wdHkgcGFzc3dvcmQvc2FsdCBpcyBwcm92aWRl
ZC4KKyAgICBpZiAoQ0NLZXlEZXJpdmF0aW9uUEJLREYoa0NDUEJLREYyLCByZWludGVycHJldF9j
YXN0PGNvbnN0IGNoYXIgKj4ocmF3S2V5LmtleSgpLmRhdGEoKSksIHJhd0tleS5rZXkoKS5zaXpl
KCksIHBia2RmMlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgcGJrZGYyUGFyYW1ldGVy
cy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKHBia2RmMlBh
cmFtZXRlcnMuaGFzaElkZW50aWZpZXIpLCBwYmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIHJl
c3VsdC5kYXRhKCksIGxlbmd0aCAvIDgpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319248</attachid>
            <date>2017-08-29 00:54:11 -0700</date>
            <delta_ts>2017-08-29 00:54:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-175620-20170829095409.patch</filename>
            <type>text/plain</type>
            <size>32742</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxMjkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTZlN2QwMjIzYmU4MDU1
OGUwMjU3MDJmZTU2YzkzZWUxOWRlYmRlNC4uZTE1ZGYzOGRkYzEwMDAxY2JmN2UyOGFjOTU0ODcy
NGVhMDNiMjI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUyIEBACiAyMDE3LTA4LTI5ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbV2ViQ3J5cHRvXSBQ
dXNoIFdvcmtRdWV1ZSBkaXNwYXRjaGVzIGZvciBIS0RGLCBITUFDLCBQQktERjIgYWxnb3JpdGht
cyBpbnRvIHNoYXJlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzU2MjAKKworICAgICAgICBSZXZpZXdlZCBieSBKaWV3ZW4gVGFuLgorCisg
ICAgICAgIFB1c2ggdGhlIFdvcmtRdWV1ZSBkaXNwYXRjaCBjb2RlIGFuZCBvdGhlciBjb2RlIGR1
cGxpY2F0ZWQgYmV0d2VlbiB0aGUKKyAgICAgICAgTWFjIGFuZCBsaWJnY3J5cHQgaW1wbGVtZW50
YXRpb25zIG9mIFdlYiBDcnlwdG8gaW50byB0aGUgc2hhcmVkIGxheWVyLgorICAgICAgICBUaGlz
IHBhdGNoIGZvY3VzZXMgb24gdGhlIEhLREYsIEhNQUMgYW5kIFBCS0RGMiBhbGdvcml0aG1zLgor
CisgICAgICAgIEZ1bmN0aW9ucyB3aXRoIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9u
cyB0aGF0IGFyZSBpbnZva2VkIGZyb20KKyAgICAgICAgdGhlc2UgYXN5bmNocm9ub3VzIGRpc3Bh
dGNoZXMgYXJlIG1hZGUgc3RhdGljIGFuZCByZXR1cm4gYW4gRXhjZXB0aW9uT3IKKyAgICAgICAg
dmFsdWUuIENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnMgb2JqZWN0cyBhcmUgcGFzc2VkIHRocm91
Z2ggbm9uLWNvbnN0CisgICAgICAgIHJlZmVyZW5jZXMgYmVjYXVzZSBkYXRhIGdldHRlcnMgY291
bGQgbGF6aWx5IGNvbnN0cnVjdCB0aGUgdW5kZXJseWluZworICAgICAgICBWZWN0b3Igb2JqZWN0
cy4gQ3J5cHRvS2V5IG9iamVjdHMgYXJlIHBhc3NlZCB0aHJvdWdoIGNvbnN0IHJlZmVyZW5jZXMu
CisgICAgICAgIEltcGxlbWVudGF0aW9ucyBjYW4gdGhlbiBtYW51YWxseSByZXRyaWV2ZSBhbmQg
ZnVydGhlciB2YWxpZGF0ZSBhbnkga2V5CisgICAgICAgIG9yIHBhcmFtZXRlciBkYXRhLCBhcyBy
ZXF1aXJlZCBmb3IgdGhhdCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbi4gSW5wdXQKKyAgICAgICAg
ZGF0YSBpcyBwYXNzZWQgdGhyb3VnaCBjb25zdCByZWZlcmVuY2VzIHRvIHRoZSBvcmlnaW5hbCBW
ZWN0b3Igb2JqZWN0cy4KKworICAgICAgICBObyBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyBpbiBi
ZWhhdmlvciB0aGF0J3MgY292ZXJlZCBieSBleGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIGNy
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyk6CisgICAgICAgICogY3J5cHRvL2Fs
Z29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5oOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxn
b3JpdGhtSE1BQzo6c2lnbik6CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFD
Ojp2ZXJpZnkpOgorICAgICAgICAqIGNyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhN
QUMuaDoKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpkZXJpdmVCaXRz
KToKKyAgICAgICAgKiBjcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIuaDoK
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSEtERjo6cGxhdGZvcm1EZXJpdmVCaXRz
KToKKyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZvcm1TaWduKToK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KToK
KyAgICAgICAgKiBjcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1QQktERjI6OnBsYXRmb3JtRGVyaXZl
Qml0cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1IS0RGTWFjLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0
cyk6CisgICAgICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtU2lnbik6CisgICAg
ICAgIChXZWJDb3JlOjpDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0Zm9ybVZlcmlmeSk6CisgICAg
ICAgICogY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q3J5cHRvQWxnb3JpdGhtUEJLREYyOjpwbGF0Zm9ybURlcml2ZUJpdHMpOgorCisy
MDE3LTA4LTI5ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKwogICAgICAg
ICBVbnJldmlld2VkIFdQRSBkZWJ1ZyBidWlsZCBmaXguCiAKICAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL0FwcGVuZFBpcGVsaW5lLmNwcDoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAK
aW5kZXggZmIzZTIxZDgxYWMxNWZmMzJhOWFmNjhkMzYwMGU2NzQ0NWY2NTA2MS4uZWM3MWVmMTc2
Nzg1ZmY3ODIxMDhiN2Y0NzdkMTQxOGY2ODU3MmNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSEtERi5jcHAKQEAgLTQ5
LDcgKzQ5LDExIEBAIHZvaWQgQ3J5cHRvQWxnb3JpdGhtSEtERjo6ZGVyaXZlQml0cyhzdGQ6OnVu
aXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mCiAgICAgICAgIGV4Y2VwdGlvbkNh
bGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBwbGF0
Zm9ybURlcml2ZUJpdHMoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShiYXNlS2V5KSwgbGVu
Z3RoLCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNvbnRl
eHQsIHdvcmtRdWV1ZSk7CisKKyAgICBkaXNwYXRjaE9wZXJhdGlvbih3b3JrUXVldWUsIGNvbnRl
eHQsIFdURk1vdmUoY2FsbGJhY2spLCBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwKKyAgICAg
ICAgW3BhcmFtZXRlcnMgPSBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShi
YXNlS2V5KSwgbGVuZ3RoXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1EZXJpdmVCaXRz
KCpwYXJhbWV0ZXJzLCBiYXNlS2V5LCBsZW5ndGgpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1IS0RGOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0IGZvcm1hdCwgS2V5
RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFw
IHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNl
cHRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0
aG1zL0NyeXB0b0FsZ29yaXRobUhLREYuaAppbmRleCA2YjdkZjliZmY0ZTI2MzYwZDc5OTZiZDA5
NzM2NDJhNTQyYzYwOTVmLi45ODAyMTViNDQ5YmI4OTgxY2NkOWJhNjkzNzZkMDFlNjg2MWJlYjc0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdv
cml0aG1IS0RGLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRv
QWxnb3JpdGhtSEtERi5oCkBAIC00NSw3ICs0NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbXBv
cnRLZXkoQ3J5cHRvS2V5Rm9ybWF0LCBLZXlEYXRhJiYsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxD
cnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzPiYmLCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlV
c2FnZUJpdG1hcCwgS2V5Q2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJikgZmluYWw7CiAg
ICAgRXhjZXB0aW9uT3I8c2l6ZV90PiBnZXRLZXlMZW5ndGgoY29uc3QgQ3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycyYpIGZpbmFsOwogCi0gICAgdm9pZCBwbGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1
bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYs
IHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycyYsIGNvbnN0IENyeXB0b0tleSYsIHNpemVfdCk7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9D
cnlwdG9BbGdvcml0aG1ITUFDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1z
L0NyeXB0b0FsZ29yaXRobUhNQUMuY3BwCmluZGV4IGFmNjUyMWMzYjNkZDE5ZGEzMWM1ZmJmYjVi
YzFkMGEzM2Y5NTU4ZGMuLjA0MWEyOTJiOGEwZDU2N2ZmNTNmOGZmMTJmMzRiZmE2YzBhYzI4ZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29y
aXRobUhNQUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0
b0FsZ29yaXRobUhNQUMuY3BwCkBAIC01NywxMiArNTcsMTggQEAgQ3J5cHRvQWxnb3JpdGhtSWRl
bnRpZmllciBDcnlwdG9BbGdvcml0aG1ITUFDOjppZGVudGlmaWVyKCkgY29uc3QKIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1ITUFDOjpzaWduKHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdvcml0aG1Q
YXJhbWV0ZXJzPiYmLCBSZWY8Q3J5cHRvS2V5PiYmIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiYgZGF0
YSwgVmVjdG9yQ2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2FsbGJhY2smJiBleGNlcHRp
b25DYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgV29ya1F1ZXVlJiB3
b3JrUXVldWUpCiB7Ci0gICAgcGxhdGZvcm1TaWduKFdURk1vdmUoa2V5KSwgV1RGTW92ZShkYXRh
KSwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0
LCB3b3JrUXVldWUpOworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwg
V1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBb
a2V5ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKV0geworICAgICAgICAgICAg
cmV0dXJuIHBsYXRmb3JtU2lnbihrZXksIGRhdGEpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBD
cnlwdG9BbGdvcml0aG1ITUFDOjp2ZXJpZnkoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRo
bVBhcmFtZXRlcnM+JiYsIFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBz
aWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNr
LCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKIHsKLSAgICBwbGF0Zm9ybVZl
cmlmeShXVEZNb3ZlKGtleSksIFdURk1vdmUoc2lnbmF0dXJlKSwgV1RGTW92ZShkYXRhKSwgV1RG
TW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjb250ZXh0LCB3b3Jr
UXVldWUpOworICAgIGRpc3BhdGNoT3BlcmF0aW9uKHdvcmtRdWV1ZSwgY29udGV4dCwgV1RGTW92
ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLAorICAgICAgICBba2V5ID0g
V1RGTW92ZShrZXkpLCBzaWduYXR1cmUgPSBXVEZNb3ZlKHNpZ25hdHVyZSksIGRhdGEgPSBXVEZN
b3ZlKGRhdGEpXSB7CisgICAgICAgICAgICByZXR1cm4gcGxhdGZvcm1WZXJpZnkoa2V5LCBzaWdu
YXR1cmUsIGRhdGEpOworICAgICAgICB9KTsKIH0KIAogdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFD
OjpnZW5lcmF0ZUtleShjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBib29sIGV4dHJhY3RhYmxlLCBDcnlwdG9LZXlVc2FnZUJpdG1hcCB1c2FnZXMsIEtleU9yS2V5
UGFpckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtSE1BQy5oCmluZGV4IDBhYTg4OWI5
YjljYzJhZjYxOGJlZTVjZWQ4YmUyYzU2NGE0OTY2ZjIuLmE1NWJkODliMDkwMDJmM2UxY2Y2OWUw
NTI5ZWZlYWUxNjcxYWJlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdv
cml0aG1zL0NyeXB0b0FsZ29yaXRobUhNQUMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8v
YWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1ITUFDLmgKQEAgLTUwLDggKzUwLDggQEAgcHJpdmF0
ZToKICAgICB2b2lkIGV4cG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIFJlZjxDcnlwdG9LZXk+JiYs
IEtleURhdGFDYWxsYmFjayYmLCBFeGNlcHRpb25DYWxsYmFjayYmKSBmaW5hbDsKICAgICBFeGNl
cHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChjb25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0
ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRmb3JtU2lnbihSZWY8Q3J5cHRvS2V5PiYmLCBW
ZWN0b3I8dWludDhfdD4mJiwgVmVjdG9yQ2FsbGJhY2smJiwgRXhjZXB0aW9uQ2FsbGJhY2smJiwg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwotICAgIHZvaWQgcGxhdGZvcm1W
ZXJpZnkoUmVmPENyeXB0b0tleT4mJiwgVmVjdG9yPHVpbnQ4X3Q+JiYgc2lnbmF0dXJlLCBWZWN0
b3I8dWludDhfdD4mJiwgQm9vbENhbGxiYWNrJiYsIEV4Y2VwdGlvbkNhbGxiYWNrJiYsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBXb3JrUXVldWUmKTsKKyAgICBzdGF0aWMgRXhjZXB0aW9uT3I8
VmVjdG9yPHVpbnQ4X3Q+PiBwbGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+Jik7CisgICAgc3RhdGljIEV4Y2VwdGlvbk9yPGJvb2w+IHBsYXRmb3JtVmVy
aWZ5KGNvbnN0IENyeXB0b0tleSYsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYsIGNvbnN0IFZlY3Rv
cjx1aW50OF90PiYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RG
Mi5jcHAKaW5kZXggMDA1MjU1Y2ZlNzhkZTBhZDQ3NDRlNzM5OGJkOWYxMzE3OTRlMTI1Mi4uMjAw
ZGYzYTI4ZjllMDAyMjliZTBiOWZlMTZhNDQ2MDAwOGY0YjJiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vYWxnb3JpdGhtcy9DcnlwdG9BbGdvcml0aG1QQktERjIu
Y3BwCkBAIC00OSw3ICs0OSwxMSBAQCB2b2lkIENyeXB0b0FsZ29yaXRobVBCS0RGMjo6ZGVyaXZl
Qml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycwogICAgICAgICBl
eGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgcGxhdGZvcm1EZXJpdmVCaXRzKFdURk1vdmUocGFyYW1ldGVycyksIFdURk1vdmUoYmFz
ZUtleSksIGxlbmd0aCwgV1RGTW92ZShjYWxsYmFjayksIFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJh
Y2spLCBjb250ZXh0LCB3b3JrUXVldWUpOworCisgICAgZGlzcGF0Y2hPcGVyYXRpb24od29ya1F1
ZXVlLCBjb250ZXh0LCBXVEZNb3ZlKGNhbGxiYWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayksCisgICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwgYmFzZUtleSA9
IFdURk1vdmUoYmFzZUtleSksIGxlbmd0aF0geworICAgICAgICAgICAgcmV0dXJuIHBsYXRmb3Jt
RGVyaXZlQml0cygqcGFyYW1ldGVycywgYmFzZUtleSwgbGVuZ3RoKTsKKyAgICAgICAgfSk7CiB9
CiAKIHZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjppbXBvcnRLZXkoQ3J5cHRvS2V5Rm9ybWF0
IGZvcm1hdCwgS2V5RGF0YSYmIGRhdGEsIGNvbnN0IHN0ZDo6dW5pcXVlX3B0cjxDcnlwdG9BbGdv
cml0aG1QYXJhbWV0ZXJzPiYmIHBhcmFtZXRlcnMsIGJvb2wgZXh0cmFjdGFibGUsIENyeXB0b0tl
eVVzYWdlQml0bWFwIHVzYWdlcywgS2V5Q2FsbGJhY2smJiBjYWxsYmFjaywgRXhjZXB0aW9uQ2Fs
bGJhY2smJiBleGNlcHRpb25DYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Ny
eXB0by9hbGdvcml0aG1zL0NyeXB0b0FsZ29yaXRobVBCS0RGMi5oIGIvU291cmNlL1dlYkNvcmUv
Y3J5cHRvL2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmgKaW5kZXggNTcwYmJkMzZi
ZWM1ZGM3YzM1NDhjY2E2ZTU0ZTM3OWVhY2EzNTY3Zi4uOTczMmIxYzBiNmZmM2VjNDBmNzg2M2M4
NWFlN2YxZWIyNWI5OGY3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2FsZ29y
aXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRv
L2FsZ29yaXRobXMvQ3J5cHRvQWxnb3JpdGhtUEJLREYyLmgKQEAgLTQ1LDcgKzQ1LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGltcG9ydEtleShDcnlwdG9LZXlGb3JtYXQsIEtleURhdGEmJiwgY29u
c3Qgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRlcnM+JiYsIGJvb2wgZXh0
cmFjdGFibGUsIENyeXB0b0tleVVzYWdlQml0bWFwLCBLZXlDYWxsYmFjayYmLCBFeGNlcHRpb25D
YWxsYmFjayYmKSBmaW5hbDsKICAgICBFeGNlcHRpb25PcjxzaXplX3Q+IGdldEtleUxlbmd0aChj
b25zdCBDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJikgZmluYWw7CiAKLSAgICB2b2lkIHBsYXRm
b3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4m
JiwgUmVmPENyeXB0b0tleT4mJiwgc2l6ZV90IGxlbmd0aCwgVmVjdG9yQ2FsbGJhY2smJiwgRXhj
ZXB0aW9uQ2FsbGJhY2smJiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdvcmtRdWV1ZSYpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxWZWN0b3I8dWludDhfdD4+IHBsYXRmb3JtRGVyaXZlQml0
cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiwgY29uc3QgQ3J5cHRvS2V5Jiwgc2l6ZV90KTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobUhLREZHQ3J5cHQuY3BwCmluZGV4IDc2
ZTQ1NDFiMmVmZWIwMWYwN2FjMDA2OTMyOGUwOGE3ODJjNDkzMzcuLjA3NTg4ZDlhZmM4ODA1NTU4
YjIyZjM0MzBmODlhOGE0ODlmZjBhYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0
by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtSEtERkdDcnlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1IS0RGR0NyeXB0LmNwcApAQCAtMzMsNyAr
MzMsNiBAQAogI2luY2x1ZGUgIkNyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXMuaCIKICNpbmNsdWRl
ICJDcnlwdG9LZXlSYXcuaCIKICNpbmNsdWRlICJHQ3J5cHRVdGlsaXRpZXMuaCIKLSNpbmNsdWRl
ICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MTUzLDMyICsxNTIsMTUgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBn
Y3J5cHREZXJpdmVCaXRzKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYga2UKICAgICByZXR1cm4gb3V0
cHV0OwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhz
dGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBS
ZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYg
Y2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9u
T3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJp
dHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYgcGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5
JiBrZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVl
dWUuZGlzcGF0Y2goCi0gICAgICAgIFtwYXJhbWV0ZXJzID0gV1RGTW92ZShwYXJhbWV0ZXJzKSwg
YmFzZUtleSA9IFdURk1vdmUoYmFzZUtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKSwg
JmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiBoa2RmUGFyYW1ldGVycyA9
IGRvd25jYXN0PENyeXB0b0FsZ29yaXRobUhrZGZQYXJhbXM+KCpwYXJhbWV0ZXJzKTsKLSAgICAg
ICAgICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFzZUtleS5nZXQo
KSk7Ci0KLSAgICAgICAgICAgIGF1dG8gb3V0cHV0ID0gZ2NyeXB0RGVyaXZlQml0cyhyYXdLZXku
a2V5KCksIGhrZGZQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1Zl
Y3RvcigpLCBsZW5ndGggLyA4LCBoa2RmUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBpZiAoIW91dHB1dCkgewotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAotICAgICAg
ICAgICAgICAgICAgICBbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNrKV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2so
T3BlcmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigp
OwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICB9CisgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdv
cml0aG1Ia2RmUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByYXdLZXkgPSBkb3duY2Fz
dDxDcnlwdG9LZXlSYXc+KGtleSk7CiAKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRl
cmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3Jr
ZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soCi0gICAgICAgICAgICAg
ICAgW291dHB1dCA9IFdURk1vdmUoKm91dHB1dCksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJh
Y2sob3V0cHV0KTsKLSAgICAgICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICB9KTsKKyAgICBhdXRvIG91dHB1dCA9IGdjcnlwdERlcml2
ZUJpdHMocmF3S2V5LmtleSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCksIGhrZGZQYXJh
bWV0ZXJzLmluZm9WZWN0b3IoKSwgbGVuZ3RoIC8gOCwgaGtkZlBhcmFtZXRlcnMuaGFzaElkZW50
aWZpZXIpOworICAgIGlmICghb3V0cHV0KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgT3Bl
cmF0aW9uRXJyb3IgfTsKKyAgICByZXR1cm4gV1RGTW92ZSgqb3V0cHV0KTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlw
dC9DcnlwdG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9n
Y3J5cHQvQ3J5cHRvQWxnb3JpdGhtSE1BQ0dDcnlwdC5jcHAKaW5kZXggNmJiMTU0NWYyMzZiMjU1
NzU1OWIzNjVjY2RhOGUwOWE5NzhjY2Y5Ny4uMDI1NmU1Y2JlNDQ2ZWMzMzNjYTUzNGNiYjkzMTFj
NzI2OWVjZWI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9Dcnlw
dG9BbGdvcml0aG1ITUFDR0NyeXB0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vZ2Ny
eXB0L0NyeXB0b0FsZ29yaXRobUhNQUNHQ3J5cHQuY3BwCkBAIC0zMiw3ICszMiw2IEBACiAjaWYg
RU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9LZXlITUFDLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vZ2Ny
eXB0L0hhbmRsZS5oPgogI2luY2x1ZGUgPHd0Zi9DcnlwdG9ncmFwaGljVXRpbGl0aWVzLmg+CiAK
QEAgLTgzLDU2ICs4MiwzMyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IGNhbGN1bGF0ZVNpZ25hdHVyZShpbnQgYWxnb3JpdGhtLCBjb25zdCBWZQogICAgIHJldHVybiBX
VEZNb3ZlKHNpZ25hdHVyZSk7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxhdGZv
cm1TaWduKFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBkYXRhLCBWZWN0
b3JDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxi
YWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1
ZSkKK0V4Y2VwdGlvbk9yPFZlY3Rvcjx1aW50OF90Pj4gQ3J5cHRvQWxnb3JpdGhtSE1BQzo6cGxh
dGZvcm1TaWduKGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGRh
dGEpCiB7Ci0gICAgY29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW2tleSA9
IFdURk1vdmUoa2V5KSwgZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShj
YWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayks
ICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8
Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBnZXRH
Q3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsK
LSAgICAgICAgaWYgKGFsZ29yaXRobSAhPSBHQ1JZX01BQ19OT05FKSB7Ci0gICAgICAgICAgICBh
dXRvIHJlc3VsdCA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCks
IGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFm
dGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICAg
ICAgICAgIGNvbnRleHQucG9zdFRhc2soW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHJl
c3VsdCA9IFdURk1vdmUoKnJlc3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBXZSBzaG91bGQgb25seSBk
ZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29y
a2VyIHRocmVhZHMuCi0gICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgIGV4Y2Vw
dGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgIGNvbnRleHQuZGVyZWYo
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7CisgICAgYXV0byYgaG1hY0tleSA9IGRvd25jYXN0PENy
eXB0b0tleUhNQUM+KGtleSk7CisKKyAgICBhdXRvIGFsZ29yaXRobSA9IGdldEdDcnlwdERpZ2Vz
dEFsZ29yaXRobShobWFjS2V5Lmhhc2hBbGdvcml0aG1JZGVudGlmaWVyKCkpOworICAgIGlmIChh
bGdvcml0aG0gPT0gR0NSWV9NQUNfTk9ORSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9w
ZXJhdGlvbkVycm9yIH07CisKKyAgICBhdXRvIHJlc3VsdCA9IGNhbGN1bGF0ZVNpZ25hdHVyZShh
bGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7CisgICAg
aWYgKCFyZXN1bHQpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9
OworICAgIHJldHVybiBXVEZNb3ZlKCpyZXN1bHQpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUhNQUM6OnBsYXRmb3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhf
dD4mJiBzaWduYXR1cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNh
bGxiYWNrLCBFeGNlcHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9y
PGJvb2w+IENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tl
eSYga2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVp
bnQ4X3Q+JiBkYXRhKQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3Bh
dGNoKFtrZXkgPSBXVEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwg
ZGF0YSA9IFdURk1vdmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2Vw
dGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11
dGFibGUgewotICAgICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4o
a2V5LmdldCgpKTsKLSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBnZXRHQ3J5cHREaWdlc3RBbGdv
cml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKLSAgICAgICAgaWYgKGFs
Z29yaXRobSAhPSBHQ1JZX01BQ19OT05FKSB7Ci0gICAgICAgICAgICBhdXRvIGV4cGVjdGVkU2ln
bmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKGFsZ29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0
YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZFNpZ25hdHVy
ZSkgewotICAgICAgICAgICAgICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29u
IHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAgICAgICAgICAgICAgYm9vbCByZXN1bHQg
PSBzaWduYXR1cmUuc2l6ZSgpID09IGV4cGVjdGVkU2lnbmF0dXJlLT5zaXplKCkgJiYgIWNvbnN0
YW50VGltZU1lbWNtcChleHBlY3RlZFNpZ25hdHVyZS0+ZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgp
LCBleHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgpKTsKLSAgICAgICAgICAgICAgICAvLyBXZSBzaG91
bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9j
dW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAgY29udGV4dC5wb3N0VGFzayhb
Y2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0LCBleGNlcHRpb25DYWxsYmFjayA9
IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ug
c2hvdWxkIG9ubHkgZGVyZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhl
IERvY3VtZW50L1dvcmtlciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtleGNl
cHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICBj
b250ZXh0LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIGF1dG8mIGhtYWNLZXkg
PSBkb3duY2FzdDxDcnlwdG9LZXlITUFDPihrZXkpOworCisgICAgYXV0byBhbGdvcml0aG0gPSBn
ZXRHQ3J5cHREaWdlc3RBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKKyAgICBpZiAoYWxnb3JpdGhtID09IEdDUllfTUFDX05PTkUpCisgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworCisgICAgYXV0byBleHBlY3RlZFNpZ25hdHVy
ZSA9IGNhbGN1bGF0ZVNpZ25hdHVyZShhbGdvcml0aG0sIGhtYWNLZXkua2V5KCksIGRhdGEuZGF0
YSgpLCBkYXRhLnNpemUoKSk7CisgICAgaWYgKCFleHBlY3RlZFNpZ25hdHVyZSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgLy8gVXNpbmcgYSBjb25z
dGFudCB0aW1lIGNvbXBhcmlzb24gdG8gcHJldmVudCB0aW1pbmcgYXR0YWNrcy4KKyAgICByZXR1
cm4gc2lnbmF0dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS0+c2l6ZSgpICYmICFjb25z
dGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWduYXR1cmUtPmRhdGEoKSwgc2lnbmF0dXJlLmRhdGEo
KSwgZXhwZWN0ZWRTaWduYXR1cmUtPnNpemUoKSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2NyeXB0by9nY3J5cHQvQ3J5cHRvQWxnb3JpdGhtUEJLREYyR0NyeXB0
LmNwcAppbmRleCBmMWY3OTIxZmMwZjdkZTc4ZTU3MGY5ZjkxMWE5YjUwNzBiOWZiZWViLi44ZmU0
NTc0NmVkMGMwMzViNmRkZTEzNzJmY2FkYTljOWFmNWUyYTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jcnlwdG8vZ2NyeXB0L0NyeXB0b0FsZ29yaXRobVBCS0RGMkdDcnlwdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2djcnlwdC9DcnlwdG9BbGdvcml0aG1QQktERjJHQ3J5
cHQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJrZGYy
UGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCiAjaW5jbHVkZSAiR0NyeXB0VXRp
bGl0aWVzLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU4LDMyICs1NywxNSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxW
ZWN0b3I8dWludDhfdD4+IGdjcnlwdERlcml2ZUJpdHMoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBr
ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXZvaWQgQ3J5cHRvQWxnb3JpdGhtUEJLREYyOjpw
bGF0Zm9ybURlcml2ZUJpdHMoc3RkOjp1bmlxdWVfcHRyPENyeXB0b0FsZ29yaXRobVBhcmFtZXRl
cnM+JiYgcGFyYW1ldGVycywgUmVmPENyeXB0b0tleT4mJiBrZXksIHNpemVfdCBsZW5ndGgsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1QQktERjI6
OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJz
LCBjb25zdCBDcnlwdG9LZXkmIGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBjb250ZXh0LnJl
ZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaCgKLSAgICAgICAgW3BhcmFtZXRlcnMgPSBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBrZXkgPSBXVEZNb3ZlKGtleSksIGxlbmd0aCwgY2FsbGJhY2sgPSBX
VEZNb3ZlKGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNh
bGxiYWNrKSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRvJiBwYmtkZjJQ
YXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgICAgICBhdXRvJiByYXdLZXkgPSBkb3duY2FzdDxDcnlwdG9LZXlSYXc+
KGtleS5nZXQoKSk7CisgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENyeXB0
b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwogCi0gICAgICAgICAgICBhdXRvIG91dHB1dCA9
IGdjcnlwdERlcml2ZUJpdHMocmF3S2V5LmtleSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0
b3IoKSwgcGJrZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciwgcGJrZGYyUGFyYW1ldGVycy5p
dGVyYXRpb25zLCBsZW5ndGgpOwotICAgICAgICAgICAgaWYgKCFvdXRwdXQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVp
bmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICAgICAg
Y29udGV4dC5wb3N0VGFzaygKLSAgICAgICAgICAgICAgICAgICAgW2NhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFj
ayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4Y2VwdGlvbkNhbGxiYWNrKE9wZXJhdGlvbkVycm9yKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0ZXIgYmVpbmcgYmFjayB0byB0aGUg
RG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAgICBjb250ZXh0LnBvc3RUYXNrKAot
ICAgICAgICAgICAgICAgIFtvdXRwdXQgPSBXVEZNb3ZlKCpvdXRwdXQpLCBjYWxsYmFjayA9IFdU
Rk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2Fs
bGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG91dHB1dCk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuZGVy
ZWYoKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7CisgICAgYXV0byBvdXRwdXQg
PSBnY3J5cHREZXJpdmVCaXRzKHJhd0tleS5rZXkoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVj
dG9yKCksIHBia2RmMlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIsIHBia2RmMlBhcmFtZXRlcnMu
aXRlcmF0aW9ucywgbGVuZ3RoKTsKKyAgICBpZiAoIW91dHB1dCkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUoKm91dHB1dCk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSEtERk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
cnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhLREZNYWMuY3BwCmluZGV4IGE1ZjNiNGRmZDQxOTRl
ZWVmNmQzMjU1MmNmNjMxNzkzMDM1N2Q1M2UuLmIzMWUwMGYyNTRmYzJkNDQ2MmI3MTg2OWQ2YTkx
OWVjZGY3NDg1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRv
QWxnb3JpdGhtSEtERk1hYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9Dcnlw
dG9BbGdvcml0aG1IS0RGTWFjLmNwcApAQCAtMzEsMzUgKzMxLDIyIEBACiAjaW5jbHVkZSAiQ29t
bW9uQ3J5cHRvVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtSGtkZlBhcmFt
cy5oIgogI2luY2x1ZGUgIkNyeXB0b0tleVJhdy5oIgotI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12b2lkIENyeXB0b0FsZ29yaXRo
bUhLREY6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGht
UGFyYW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVf
dCBsZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYg
ZXhjZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtR
dWV1ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdv
cml0aG1IS0RGOjpwbGF0Zm9ybURlcml2ZUJpdHMoQ3J5cHRvQWxnb3JpdGhtUGFyYW1ldGVycyYg
cGFyYW1ldGVycywgY29uc3QgQ3J5cHRvS2V5JiBrZXksIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAg
Y29udGV4dC5yZWYoKTsKLSAgICB3b3JrUXVldWUuZGlzcGF0Y2goW3BhcmFtZXRlcnMgPSBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBiYXNlS2V5ID0gV1RGTW92ZShiYXNlS2V5KSwgbGVuZ3RoLCBjYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhj
ZXB0aW9uQ2FsbGJhY2spLCAmY29udGV4dF0oKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byYgaGtk
ZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9BbGdvcml0aG1Ia2RmUGFyYW1zPigqcGFyYW1l
dGVycyk7Ci0gICAgICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4oYmFz
ZUtleS5nZXQoKSk7CisgICAgYXV0byYgaGtkZlBhcmFtZXRlcnMgPSBkb3duY2FzdDxDcnlwdG9B
bGdvcml0aG1Ia2RmUGFyYW1zPihwYXJhbWV0ZXJzKTsKKyAgICBhdXRvJiByYXdLZXkgPSBkb3du
Y2FzdDxDcnlwdG9LZXlSYXc+KGtleSk7CiAKLSAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3Vs
dChsZW5ndGggLyA4KTsKLSAgICAgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGht
OwotICAgICAgICBnZXRDb21tb25DcnlwdG9EaWdlc3RBbGdvcml0aG0oaGtkZlBhcmFtZXRlcnMu
aGFzaElkZW50aWZpZXIsIGRpZ2VzdEFsZ29yaXRobSk7Ci0gICAgICAgIC8vIDxyZGFyOi8vcHJv
YmxlbS8zMjQzOTQ1NT4gQ3VycmVudGx5LCB3aGVuIHJhd0tleSBpcyBudWxsLCBDQ0tleURlcml2
YXRpb25ITWFjIHdpbGwgYmFpbCBvdXQuCi0gICAgICAgIGlmIChDQ0tleURlcml2YXRpb25ITWFj
KGtDQ0tERkFsZ29yaXRobUhLREYsIGRpZ2VzdEFsZ29yaXRobSwgMCwgcmF3S2V5LmtleSgpLmRh
dGEoKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgMCwgMCwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3Rv
cigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuaW5mb1ZlY3RvcigpLnNpemUoKSwgMCwgMCwgaGtk
ZlBhcmFtZXRlcnMuc2FsdFZlY3RvcigpLmRhdGEoKSwgaGtkZlBhcmFtZXRlcnMuc2FsdFZlY3Rv
cigpLnNpemUoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSkpIHsKLSAgICAgICAgICAg
IC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNr
IHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9z
dFRhc2soW2V4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7
Ci0gICAgICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgLy8gV2Ugc2hvdWxkIG9ubHkgZGVy
ZWZlcmVuY2UgY2FsbGJhY2tzIGFmdGVyIGJlaW5nIGJhY2sgdG8gdGhlIERvY3VtZW50L1dvcmtl
ciB0aHJlYWRzLgotICAgICAgICBjb250ZXh0LnBvc3RUYXNrKFtjYWxsYmFjayA9IFdURk1vdmUo
Y2FsbGJhY2spLCByZXN1bHQgPSBXVEZNb3ZlKHJlc3VsdCksIGV4Y2VwdGlvbkNhbGxiYWNrID0g
V1RGTW92ZShleGNlcHRpb25DYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRl
eHQpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAgICAgICAgICBjb250ZXh0
LmRlcmVmKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOworICAgIFZlY3Rvcjx1aW50OF90PiByZXN1
bHQobGVuZ3RoIC8gOCk7CisgICAgQ0NEaWdlc3RBbGdvcml0aG0gZGlnZXN0QWxnb3JpdGhtOwor
ICAgIGdldENvbW1vbkNyeXB0b0RpZ2VzdEFsZ29yaXRobShoa2RmUGFyYW1ldGVycy5oYXNoSWRl
bnRpZmllciwgZGlnZXN0QWxnb3JpdGhtKTsKKworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQz
OTQ1NT4gQ3VycmVudGx5LCB3aGVuIHJhd0tleSBpcyBudWxsLCBDQ0tleURlcml2YXRpb25ITWFj
IHdpbGwgYmFpbCBvdXQuCisgICAgaWYgKENDS2V5RGVyaXZhdGlvbkhNYWMoa0NDS0RGQWxnb3Jp
dGhtSEtERiwgZGlnZXN0QWxnb3JpdGhtLCAwLCByYXdLZXkua2V5KCkuZGF0YSgpLCByYXdLZXku
a2V5KCkuc2l6ZSgpLCAwLCAwLCBoa2RmUGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuZGF0YSgpLCBo
a2RmUGFyYW1ldGVycy5pbmZvVmVjdG9yKCkuc2l6ZSgpLCAwLCAwLCBoa2RmUGFyYW1ldGVycy5z
YWx0VmVjdG9yKCkuZGF0YSgpLCBoa2RmUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBy
ZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IE9wZXJhdGlvbkVycm9yIH07CisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFD
TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtSE1BQ01h
Yy5jcHAKaW5kZXggNTZiNmE3YTBjZTljYTE2YjNkMWRkMTA3NGFmZWZkY2VlM2VjZjkzOS4uYjBh
ZjhiNDJkYzE2NzNlZDQwNmQ4YjNlZjBlOTk1NjEzZTE4MzAwYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1ITUFDTWFjLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29yaXRobUhNQUNNYWMuY3BwCkBAIC0yOSw3
ICsyOSw2IEBACiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiAKICNpbmNsdWRlICJDcnlwdG9L
ZXlITUFDLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUg
PENvbW1vbkNyeXB0by9Db21tb25ITUFDLmg+CiAjaW5jbHVkZSA8d3RmL0NyeXB0b2dyYXBoaWNV
dGlsaXRpZXMuaD4KIApAQCAtODIsNTMgKzgxLDI2IEBAIHN0YXRpYyBWZWN0b3I8dWludDhfdD4g
Y2FsY3VsYXRlU2lnbmF0dXJlKENDSG1hY0FsZ29yaXRobSBhbGdvcml0aG0sIGNvbnN0IFZlY3Rv
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1ITUFDOjpwbGF0
Zm9ybVNpZ24oUmVmPENyeXB0b0tleT4mJiBrZXksIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIFZl
Y3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhjZXB0aW9uQ2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1ZSYgd29ya1F1
ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0aG1ITUFDOjpw
bGF0Zm9ybVNpZ24oY29uc3QgQ3J5cHRvS2V5JiBrZXksIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
ZGF0YSkKIHsKLSAgICBjb250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChba2V5
ID0gV1RGTW92ZShrZXkpLCBkYXRhID0gV1RGTW92ZShkYXRhKSwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgZXhjZXB0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGV4Y2VwdGlvbkNhbGxiYWNr
KSwgJmNvbnRleHRdKCkgbXV0YWJsZSB7Ci0gICAgICAgIGF1dG8mIGhtYWNLZXkgPSBkb3duY2Fz
dDxDcnlwdG9LZXlITUFDPihrZXkuZ2V0KCkpOwotICAgICAgICBhdXRvIGFsZ29yaXRobSA9IGNv
bW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigp
KTsKLSAgICAgICAgaWYgKCFhbGdvcml0aG0pIHsKLSAgICAgICAgICAgIC8vIFdlIHNob3VsZCBv
bmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVu
dC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgICAgIGNvbnRleHQucG9zdFRhc2soW2V4Y2VwdGlv
bkNhbGxiYWNrID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksIGNhbGxiYWNrID0gV1RGTW92
ZShjYWxsYmFjayldKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpIHsKLSAgICAgICAg
ICAgICAgICBleGNlcHRpb25DYWxsYmFjayhPcGVyYXRpb25FcnJvcik7Ci0gICAgICAgICAgICAg
ICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLSAgICAgICAgYXV0byByZXN1bHQgPSBjYWxjdWxhdGVTaWduYXR1cmUoKmFs
Z29yaXRobSwgaG1hY0tleS5rZXkoKSwgZGF0YSk7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5
IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9X
b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZN
b3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRpb25DYWxsYmFj
ayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgY29u
dGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0g
ZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsKKyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1v
bkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5oYXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsK
KyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlv
bkVycm9yIH07CiAKKyAgICByZXR1cm4gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGht
YWNLZXkua2V5KCksIGRhdGEpOwogfQogCi12b2lkIENyeXB0b0FsZ29yaXRobUhNQUM6OnBsYXRm
b3JtVmVyaWZ5KFJlZjxDcnlwdG9LZXk+JiYga2V5LCBWZWN0b3I8dWludDhfdD4mJiBzaWduYXR1
cmUsIFZlY3Rvcjx1aW50OF90PiYmIGRhdGEsIEJvb2xDYWxsYmFjayYmIGNhbGxiYWNrLCBFeGNl
cHRpb25DYWxsYmFjayYmIGV4Y2VwdGlvbkNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBXb3JrUXVldWUmIHdvcmtRdWV1ZSkKK0V4Y2VwdGlvbk9yPGJvb2w+IENyeXB0
b0FsZ29yaXRobUhNQUM6OnBsYXRmb3JtVmVyaWZ5KGNvbnN0IENyeXB0b0tleSYga2V5LCBjb25z
dCBWZWN0b3I8dWludDhfdD4mIHNpZ25hdHVyZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBkYXRh
KQogewotICAgIGNvbnRleHQucmVmKCk7Ci0gICAgd29ya1F1ZXVlLmRpc3BhdGNoKFtrZXkgPSBX
VEZNb3ZlKGtleSksIHNpZ25hdHVyZSA9IFdURk1vdmUoc2lnbmF0dXJlKSwgZGF0YSA9IFdURk1v
dmUoZGF0YSksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNr
ID0gV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAg
ICAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5LmdldCgpKTsK
LSAgICAgICAgYXV0byBhbGdvcml0aG0gPSBjb21tb25DcnlwdG9ITUFDQWxnb3JpdGhtKGhtYWNL
ZXkuaGFzaEFsZ29yaXRobUlkZW50aWZpZXIoKSk7Ci0gICAgICAgIGlmICghYWxnb3JpdGhtKSB7
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3Bl
cmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGF1dG8gZXhw
ZWN0ZWRTaWduYXR1cmUgPSBjYWxjdWxhdGVTaWduYXR1cmUoKmFsZ29yaXRobSwgaG1hY0tleS5r
ZXkoKSwgZGF0YSk7Ci0gICAgICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29u
IHRvIHByZXZlbnQgdGltaW5nIGF0dGFja3MuCi0gICAgICAgIGJvb2wgcmVzdWx0ID0gc2lnbmF0
dXJlLnNpemUoKSA9PSBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkgJiYgIWNvbnN0YW50VGltZU1l
bWNtcChleHBlY3RlZFNpZ25hdHVyZS5kYXRhKCksIHNpZ25hdHVyZS5kYXRhKCksIGV4cGVjdGVk
U2lnbmF0dXJlLnNpemUoKSk7Ci0gICAgICAgIC8vIFdlIHNob3VsZCBvbmx5IGRlcmVmZXJlbmNl
IGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBEb2N1bWVudC9Xb3JrZXIgdGhyZWFk
cy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNr
KSwgcmVzdWx0LCBleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2sp
XShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhyZXN1bHQpOwotICAgICAgICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAg
ICB9KTsKKyAgICBhdXRvJiBobWFjS2V5ID0gZG93bmNhc3Q8Q3J5cHRvS2V5SE1BQz4oa2V5KTsK
KyAgICBhdXRvIGFsZ29yaXRobSA9IGNvbW1vbkNyeXB0b0hNQUNBbGdvcml0aG0oaG1hY0tleS5o
YXNoQWxnb3JpdGhtSWRlbnRpZmllcigpKTsKKyAgICBpZiAoIWFsZ29yaXRobSkKKyAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE9wZXJhdGlvbkVycm9yIH07CisKKyAgICBhdXRvIGV4cGVjdGVk
U2lnbmF0dXJlID0gY2FsY3VsYXRlU2lnbmF0dXJlKCphbGdvcml0aG0sIGhtYWNLZXkua2V5KCks
IGRhdGEpOworICAgIC8vIFVzaW5nIGEgY29uc3RhbnQgdGltZSBjb21wYXJpc29uIHRvIHByZXZl
bnQgdGltaW5nIGF0dGFja3MuCisgICAgcmV0dXJuIHNpZ25hdHVyZS5zaXplKCkgPT0gZXhwZWN0
ZWRTaWduYXR1cmUuc2l6ZSgpICYmICFjb25zdGFudFRpbWVNZW1jbXAoZXhwZWN0ZWRTaWduYXR1
cmUuZGF0YSgpLCBzaWduYXR1cmUuZGF0YSgpLCBleHBlY3RlZFNpZ25hdHVyZS5zaXplKCkpOwog
fQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVBCS0RGMk1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8vbWFjL0NyeXB0b0FsZ29y
aXRobVBCS0RGMk1hYy5jcHAKaW5kZXggZDYxNTMzYjc4NWU4YjBmOGMyNmNhMzZjYTMwMzhjNzg4
MDRhMDUxZi4uNWMzZDU2YjI3ZDUyYTA0YWM5MmVkMjUyNjE5YzhkNTNjMzMxMTg2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9DcnlwdG9BbGdvcml0aG1QQktERjJNYWMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvQ3J5cHRvQWxnb3JpdGhtUEJLREYy
TWFjLmNwcApAQCAtMzAsNyArMzAsNiBAQAogCiAjaW5jbHVkZSAiQ3J5cHRvQWxnb3JpdGhtUGJr
ZGYyUGFyYW1zLmgiCiAjaW5jbHVkZSAiQ3J5cHRvS2V5UmF3LmgiCi0jaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPENvbW1vbkNyeXB0by9Db21tb25LZXlEZXJp
dmF0aW9uLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU0LDI5ICs1MywxNiBAQCBzdGF0
aWMgQ0NQc2V1ZG9SYW5kb21BbGdvcml0aG0gY29tbW9uQ3J5cHRvSE1BQ0FsZ29yaXRobShDcnlw
dG9BbGdvcml0aG1JZGVudGlmaQogICAgIH0KIH0KIAotdm9pZCBDcnlwdG9BbGdvcml0aG1QQktE
RjI6OnBsYXRmb3JtRGVyaXZlQml0cyhzdGQ6OnVuaXF1ZV9wdHI8Q3J5cHRvQWxnb3JpdGhtUGFy
YW1ldGVycz4mJiBwYXJhbWV0ZXJzLCBSZWY8Q3J5cHRvS2V5PiYmIGJhc2VLZXksIHNpemVfdCBs
ZW5ndGgsIFZlY3RvckNhbGxiYWNrJiYgY2FsbGJhY2ssIEV4Y2VwdGlvbkNhbGxiYWNrJiYgZXhj
ZXB0aW9uQ2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIFdvcmtRdWV1
ZSYgd29ya1F1ZXVlKQorRXhjZXB0aW9uT3I8VmVjdG9yPHVpbnQ4X3Q+PiBDcnlwdG9BbGdvcml0
aG1QQktERjI6OnBsYXRmb3JtRGVyaXZlQml0cyhDcnlwdG9BbGdvcml0aG1QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzLCBjb25zdCBDcnlwdG9LZXkmIGtleSwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBj
b250ZXh0LnJlZigpOwotICAgIHdvcmtRdWV1ZS5kaXNwYXRjaChbcGFyYW1ldGVycyA9IFdURk1v
dmUocGFyYW1ldGVycyksIGJhc2VLZXkgPSBXVEZNb3ZlKGJhc2VLZXkpLCBsZW5ndGgsIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayksIGV4Y2VwdGlvbkNhbGxiYWNrID0gV1RGTW92ZShleGNl
cHRpb25DYWxsYmFjayksICZjb250ZXh0XSgpIG11dGFibGUgewotICAgICAgICBhdXRvJiBwYmtk
ZjJQYXJhbWV0ZXJzID0gZG93bmNhc3Q8Q3J5cHRvQWxnb3JpdGhtUGJrZGYyUGFyYW1zPigqcGFy
YW1ldGVycyk7Ci0gICAgICAgIGF1dG8mIHJhd0tleSA9IGRvd25jYXN0PENyeXB0b0tleVJhdz4o
YmFzZUtleS5nZXQoKSk7CisgICAgYXV0byYgcGJrZGYyUGFyYW1ldGVycyA9IGRvd25jYXN0PENy
eXB0b0FsZ29yaXRobVBia2RmMlBhcmFtcz4ocGFyYW1ldGVycyk7CisgICAgYXV0byYgcmF3S2V5
ID0gZG93bmNhc3Q8Q3J5cHRvS2V5UmF3PihrZXkpOwogCi0gICAgICAgIFZlY3Rvcjx1aW50OF90
PiByZXN1bHQobGVuZ3RoIC8gOCk7Ci0gICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQzOTk1
NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktERiBiYWlscyBvdXQgd2hlbiBhbiBlbXB0
eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgotICAgICAgICBpZiAoQ0NLZXlEZXJpdmF0aW9u
UEJLREYoa0NDUEJLREYyLCByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4ocmF3S2V5Lmtl
eSgpLmRhdGEoKSksIHJhd0tleS5rZXkoKS5zaXplKCksIHBia2RmMlBhcmFtZXRlcnMuc2FsdFZl
Y3RvcigpLmRhdGEoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVjdG9yKCkuc2l6ZSgpLCBjb21t
b25DcnlwdG9ITUFDQWxnb3JpdGhtKHBia2RmMlBhcmFtZXRlcnMuaGFzaElkZW50aWZpZXIpLCBw
YmtkZjJQYXJhbWV0ZXJzLml0ZXJhdGlvbnMsIHJlc3VsdC5kYXRhKCksIGxlbmd0aCAvIDgpKSB7
Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgb25seSBkZXJlZmVyZW5jZSBjYWxsYmFja3MgYWZ0
ZXIgYmVpbmcgYmFjayB0byB0aGUgRG9jdW1lbnQvV29ya2VyIHRocmVhZHMuCi0gICAgICAgICAg
ICBjb250ZXh0LnBvc3RUYXNrKFtleGNlcHRpb25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9u
Q2FsbGJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICAgICAgZXhjZXB0aW9uQ2FsbGJhY2soT3Bl
cmF0aW9uRXJyb3IpOwotICAgICAgICAgICAgICAgIGNvbnRleHQuZGVyZWYoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIC8vIFdlIHNo
b3VsZCBvbmx5IGRlcmVmZXJlbmNlIGNhbGxiYWNrcyBhZnRlciBiZWluZyBiYWNrIHRvIHRoZSBE
b2N1bWVudC9Xb3JrZXIgdGhyZWFkcy4KLSAgICAgICAgY29udGV4dC5wb3N0VGFzayhbY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgcmVzdWx0ID0gV1RGTW92ZShyZXN1bHQpLCBleGNlcHRp
b25DYWxsYmFjayA9IFdURk1vdmUoZXhjZXB0aW9uQ2FsbGJhY2spXShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQpOwotICAgICAg
ICAgICAgY29udGV4dC5kZXJlZigpOwotICAgICAgICB9KTsKLSAgICB9KTsKKyAgICBWZWN0b3I8
dWludDhfdD4gcmVzdWx0KGxlbmd0aCAvIDgpOworICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8zMjQz
OTk1NT4gQ3VycmVudGx5LCBDQ0tleURlcml2YXRpb25QQktERiBiYWlscyBvdXQgd2hlbiBhbiBl
bXB0eSBwYXNzd29yZC9zYWx0IGlzIHByb3ZpZGVkLgorICAgIGlmIChDQ0tleURlcml2YXRpb25Q
QktERihrQ0NQQktERjIsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihyYXdLZXkua2V5
KCkuZGF0YSgpKSwgcmF3S2V5LmtleSgpLnNpemUoKSwgcGJrZGYyUGFyYW1ldGVycy5zYWx0VmVj
dG9yKCkuZGF0YSgpLCBwYmtkZjJQYXJhbWV0ZXJzLnNhbHRWZWN0b3IoKS5zaXplKCksIGNvbW1v
bkNyeXB0b0hNQUNBbGdvcml0aG0ocGJrZGYyUGFyYW1ldGVycy5oYXNoSWRlbnRpZmllciksIHBi
a2RmMlBhcmFtZXRlcnMuaXRlcmF0aW9ucywgcmVzdWx0LmRhdGEoKSwgbGVuZ3RoIC8gOCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBPcGVyYXRpb25FcnJvciB9OworICAgIHJldHVybiBX
VEZNb3ZlKHJlc3VsdCk7CiB9CiAKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>