<?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>179708</bug_id>
          
          <creation_ts>2017-11-14 16:42:44 -0800</creation_ts>
          <short_desc>[Web Animations] Complete support for keyframe animations</short_desc>
          <delta_ts>2017-12-21 11:51:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=179707</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=122912</see_also>
          <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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1371654</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-14 16:42:44 -0800</bug_when>
    <thetext>We&apos;re adding basic support for from-to animations in https://bugs.webkit.org/show_bug.cgi?id=179707, but we need to support the full complexity of multiple keyframe animations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1380633</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-12-12 04:41:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/34953942&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384114</commentid>
    <comment_count>2</comment_count>
      <attachid>330032</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-12-21 09:10:18 -0800</bug_when>
    <thetext>Created attachment 330032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384167</commentid>
    <comment_count>3</comment_count>
      <attachid>330043</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-12-21 11:11:23 -0800</bug_when>
    <thetext>Created attachment 330043
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384168</commentid>
    <comment_count>4</comment_count>
      <attachid>330032</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-21 11:12:28 -0800</bug_when>
    <thetext>Comment on attachment 330032
Patch

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

It stresses me out that so much code is landing without many tests.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:101
&gt; +static inline ExceptionOr&lt;void&gt; processIterableKeyframes(ExecState&amp; state, Strong&lt;JSObject&gt;&amp;&amp; keyframesInput, JSValue method, Vector&lt;KeyframeEffect::ProcessedKeyframe&gt;&amp; processedKeyframes)

It might be nicer to have this function return an ExceptionOr&lt;Vector&lt;KeyframeEffect::ProcessedKeyframe&gt;&gt;, to avoid having an out parameter.

&gt; Source/WebCore/animation/KeyframeEffect.cpp:132
&gt; +            auto ownPropertyName = ownPropertyNames[j];
&gt; +            auto ownPropertyNameAsString = ownPropertyName.string();
&gt; +            auto ownPropertyRawValue = keyframe-&gt;get(&amp;state, ownPropertyName);
&gt; +            if (ownPropertyName == &quot;easing&quot;)
&gt; +                easing = convert&lt;IDLDOMString&gt;(state, ownPropertyRawValue);
&gt; +            else if (ownPropertyNameAsString == &quot;offset&quot;)
&gt; +                offset = convert&lt;IDLNullable&lt;IDLDouble&gt;&gt;(state, ownPropertyRawValue);
&gt; +            else if (ownPropertyName == &quot;composite&quot;)

What is ownPropertyNameAsString for? You already compare ownPropertyName == &quot;easing&quot; and &quot;composite&quot;. Why is &quot;offset&quot; different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384169</commentid>
    <comment_count>5</comment_count>
      <attachid>330043</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-21 11:12:58 -0800</bug_when>
    <thetext>Comment on attachment 330043
Patch

copying review from previous patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384171</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2017-12-21 11:13:23 -0800</bug_when>
    <thetext>I&apos;m sure Darin or someone will find lots of nits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384182</commentid>
    <comment_count>7</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-12-21 11:41:35 -0800</bug_when>
    <thetext>(In reply to Dean Jackson from comment #4)
&gt; Comment on attachment 330032 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=330032&amp;action=review
&gt; 
&gt; It stresses me out that so much code is landing without many tests.

There are many tests, they&apos;re simply all using Element.animate(), which is landing next.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:101
&gt; &gt; +static inline ExceptionOr&lt;void&gt; processIterableKeyframes(ExecState&amp; state, Strong&lt;JSObject&gt;&amp;&amp; keyframesInput, JSValue method, Vector&lt;KeyframeEffect::ProcessedKeyframe&gt;&amp; processedKeyframes)
&gt; 
&gt; It might be nicer to have this function return an
&gt; ExceptionOr&lt;Vector&lt;KeyframeEffect::ProcessedKeyframe&gt;&gt;, to avoid having an
&gt; out parameter.

Yes, I can do that. It was easier to follow the spec text by passing around the out parameter though.

&gt; &gt; Source/WebCore/animation/KeyframeEffect.cpp:132
&gt; &gt; +            auto ownPropertyName = ownPropertyNames[j];
&gt; &gt; +            auto ownPropertyNameAsString = ownPropertyName.string();
&gt; &gt; +            auto ownPropertyRawValue = keyframe-&gt;get(&amp;state, ownPropertyName);
&gt; &gt; +            if (ownPropertyName == &quot;easing&quot;)
&gt; &gt; +                easing = convert&lt;IDLDOMString&gt;(state, ownPropertyRawValue);
&gt; &gt; +            else if (ownPropertyNameAsString == &quot;offset&quot;)
&gt; &gt; +                offset = convert&lt;IDLNullable&lt;IDLDouble&gt;&gt;(state, ownPropertyRawValue);
&gt; &gt; +            else if (ownPropertyName == &quot;composite&quot;)
&gt; 
&gt; What is ownPropertyNameAsString for? You already compare ownPropertyName ==
&gt; &quot;easing&quot; and &quot;composite&quot;. Why is &quot;offset&quot; different?

I started out by only implementing offset, and then added easing and composite. But I see that JSC::Identifier, which is the type of ownPropertyName, supports string comparisons, so I&apos;ll remove ownPropertyName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384190</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-12-21 11:51:43 -0800</bug_when>
    <thetext>Committed r226234: &lt;https://trac.webkit.org/changeset/226234&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330032</attachid>
            <date>2017-12-21 09:10:18 -0800</date>
            <delta_ts>2017-12-21 11:12:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179708-20171221181017.patch</filename>
            <type>text/plain</type>
            <size>58035</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMWI1MjZmZTUxYmYw
OWFkMjAyZTk4MTFmNjBmZTk5ODNhMjY0ZS4uN2E5YmE3YzY0MzE0N2E2YzYyZWU4NDI4ZjViY2M3
NDhjZjlkZmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTEyLTIxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBDb21wbGV0ZSBzdXBwb3J0IGZvciBrZXlmcmFtZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk3MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQgc2VjdGlvbiA1
LjEwLjMgIlByb2Nlc3NpbmcgYSBrZXlmcmFtZXMgYXJndW1lbnQiIG9mIHRoZSBXZWIgQW5pbWF0
aW9ucyBzcGVjIHRvIGhhbmRsZQorICAgICAgICBtdWx0aXBsZSBrZXlmcmFtZXMsIHJhdGhlciB0
aGFuIG9ubHkgdHdvLCBwcm92aWRlZCBlaXRoZXIgaW4gaXRlcmFibGUgKGllLiBhcnJheSkgb3Ig
cHJvcGVydHktaW5kZXgKKyAgICAgICAgKGllLiBkaWN0aW9uYXJ5KSBmb3JtLiBBbHRob3VnaCB3
ZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCB0aW1pbmcgZnVuY3Rpb24gb3IgY29tcG9zaXRlIG9w
ZXJhdGlvbnMsCisgICAgICAgIHdlIHBhcnNlIHRoZW0gYXMgd2VsbC4KKworICAgICAgICBXaGls
ZSB0aGVyZSBhcmUgbWluaW1hbCB0ZXN0IGNoYW5nZXMsIHRoZXJlIHdpbGwgYmUgYSBob3N0IG9m
IGNoYW5nZXMgaW4gdGhlIG5leHQgcGF0Y2ggaW4gd2hpY2gKKyAgICAgICAgd2UgdHVybiBFbGVt
ZW50LmFuaW1hdGUoKSBvbi4KKworICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGVOYW1lVG9BbmltYXRpb25Qcm9wZXJ0
eU5hbWUpOiBOZXcgdXRpbGl0eSB0byBjb252ZXJ0IGFuIElETC1wYXJzZWQgSlMgcHJvcGVydHkK
KyAgICAgICAgaW50byBhIFdlYkNvcmUgQ1NTUHJvcGVydHlJRC4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKTogQ29udmVydHMgIm51bGwiIG9mZnNldHMg
aW50byBjb21wdXRlZCBvZmZzZXQgdmFsdWVzIGFzIHNwZWNpZmllZAorICAgICAgICBpbiBzZWN0
aW9uIDQuNC4yLiAiQ2FsY3VsYXRpbmcgY29tcHV0ZWQga2V5ZnJhbWVzIi4KKyAgICAgICAgKFdl
YkNvcmU6OnByb2Nlc3NJdGVyYWJsZUtleWZyYW1lcyk6IFByb2Nlc3MgdGhlIGl0ZXJhYmxlIGZv
cm0gb2YgdGhlIGtleWZyYW1lcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NL
ZXlmcmFtZUxpa2VPYmplY3QpOiBQcm9jZXNzIGEga2V5ZnJhbWUtbGlrZSBvYmplY3QgZm91bmQg
aW4gdGhlIHByb3BlcnR5LWluZGV4ZWQgZm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NQ
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMpOiBQcm9jZXNzIHRoZSBwcm9wZXJ0eS1pbmRleGVkIGZv
cm0gb2YgdGhlIGtleWZyYW1lcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRLZXlmcmFtZXMpOiBTaW5jZSB0aGlzIG1ldGhvZCBhbmQgcHJvY2Vzc0tleWZy
YW1lcygpIHNoYXJlIHRoZSBzYW1lIHNpZ25hdHVyZSwKKyAgICAgICAgd2UgY2FuIGp1c3QgcmV0
dXJuIHRoZSB2YWx1ZSBmcm9tIHByb2Nlc3NLZXlmcmFtZXMoKSBkaXJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKTogUHJvY2VzcyB0aGUg
a2V5ZnJhbWVzIGFyZ3VtZW50IGFzIHNwZWNpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphcHBseUF0TG9jYWxUaW1lKTogRGVsZWdhdGUgYmxlbmRpbmcgdG8gdGhlIG5l
dyBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKCkKKyAgICAgICAgc2luY2UgdGhpcyB0YXNr
IGlzIG5vdyBtb3JlIGNvbXBsZXggZHVlIHRvIGhhbmRsaW5nIG9mIG11bHRpcGxlIGtleWZyYW1l
cy4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpnZXRBbmltYXRlZFN0eWxlKTog
RGVsZWdhdGUgYmxlbmRpbmcgdG8gdGhlIG5ldyBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxl
KCkKKyAgICAgICAgc2luY2UgdGhpcyB0YXNrIGlzIG5vdyBtb3JlIGNvbXBsZXggZHVlIHRvIGhh
bmRsaW5nIG9mIG11bHRpcGxlIGtleWZyYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKTogSGFuZGxlIG11bHRpcGxlIGFu
ZCBpbXBsaWNpdCBzdGFydCBhbmQgZW5kIGtleWZyYW1lcy4KKyAgICAgICAgKiBhbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuaDogQWRkIHNvbWUgbmV3IHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFyc2lu
ZyBwdXJwb3Nlcy4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsOiBFeHBv
c2UgdGhlIENvbXBvc2l0ZU9wZXJhdGlvbiBlbnVtIGFuZCB0aGUgQmFzZVByb3BlcnR5SW5kZXhl
ZEtleWZyYW1lIGRpY3Rpb25hcnkKKyAgICAgICAgdXNlZCBpbiBwcm9jZXNzS2V5ZnJhbWVMaWtl
T2JqZWN0KCkuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlJREZyb21KYXZh
U2NyaXB0UHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uOjppc1Byb3BlcnR5QW5pbWF0YWJs
ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaDoKKwog
MjAxNy0xMi0yMCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjI2MTYwKSBCdWlsZCBicm9rZW4gd2hlbiBNRURJQV9TVFJFQU0gaXMgZGlzYWJsZWQg
d2l0aCBNZWRpYVN0cmVhbVJlcXVlc3QgbmFtZXNwYWNlIGNvbmZ1c2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggMGU1NWI2OWVjOGVhZTIyY2Yw
NGYyN2Q4NGZkODAyOTAyZGU0YjRkOS4uZjgyYzIwYzZhM2U2YzdhMDE5N2M4OTg4ODlkZTNiOTJm
ZTg4M2Y2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTM4LDYgKzM5LDMzMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUlE
IElETEF0dHJpYnV0ZU5hbWVUb0FuaW1hdGlvblByb3BlcnR5TmFtZShTdHJpbmcgaWRsQXR0cmli
dXRlTmFtZSkKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlv
bnMtMS8jaWRsLWF0dHJpYnV0ZS1uYW1lLXRvLWFuaW1hdGlvbi1wcm9wZXJ0eS1uYW1lCisgICAg
Ly8gMS4gSWYgYXR0cmlidXRlIGNvbmZvcm1zIHRvIHRoZSA8Y3VzdG9tLXByb3BlcnR5LW5hbWU+
IHByb2R1Y3Rpb24sIHJldHVybiBhdHRyaWJ1dGUuCisgICAgLy8gMi4gSWYgYXR0cmlidXRlIGlz
IHRoZSBzdHJpbmcgImNzc0Zsb2F0IiwgdGhlbiByZXR1cm4gYW4gYW5pbWF0aW9uIHByb3BlcnR5
IHJlcHJlc2VudGluZyB0aGUgQ1NTIGZsb2F0IHByb3BlcnR5LgorICAgIGlmIChpZGxBdHRyaWJ1
dGVOYW1lID09ICJjc3NGbG9hdCIpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUZsb2F0Owor
ICAgIC8vIDMuIElmIGF0dHJpYnV0ZSBpcyB0aGUgc3RyaW5nICJjc3NPZmZzZXQiLCB0aGVuIHJl
dHVybiBhbiBhbmltYXRpb24gcHJvcGVydHkgcmVwcmVzZW50aW5nIHRoZSBDU1Mgb2Zmc2V0IHBy
b3BlcnR5LgorICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBDU1MgIm9mZnNldCIg
cHJvcGVydHkKKyAgICAvLyA0LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIGFwcGx5
aW5nIHRoZSBJREwgYXR0cmlidXRlIHRvIENTUyBwcm9wZXJ0eSBhbGdvcml0aG0gW0NTU09NXSB0
byBhdHRyaWJ1dGUuCisgICAgcmV0dXJuIENTU1N0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShpZGxBdHRyaWJ1dGVOYW1lKTsKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKFZlY3RvcjxL
ZXlmcmFtZUVmZmVjdDo6UHJvY2Vzc2VkS2V5ZnJhbWU+JiBrZXlmcmFtZXMpCit7CisgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2NvbXB1dGUtbWlzc2lu
Zy1rZXlmcmFtZS1vZmZzZXRzCisKKyAgICBpZiAoa2V5ZnJhbWVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gMS4gRm9yIGVhY2gga2V5ZnJhbWUsIGluIGtleWZyYW1lcywg
bGV0IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGtleWZyYW1lIGJlIGVxdWFs
IHRvIGl0cyBrZXlmcmFtZSBvZmZzZXQgdmFsdWUuCisKKyAgICAvLyAyLiBJZiBrZXlmcmFtZXMg
Y29udGFpbnMgbW9yZSB0aGFuIG9uZSBrZXlmcmFtZSBhbmQgdGhlIGNvbXB1dGVkIGtleWZyYW1l
IG9mZnNldCBvZiB0aGUgZmlyc3Qga2V5ZnJhbWUgaW4ga2V5ZnJhbWVzIGlzIG51bGwsCisgICAg
Ly8gICAgc2V0IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGtleWZy
YW1lIHRvIDAuCisgICAgaWYgKGtleWZyYW1lcy5zaXplKCkgPiAxICYmICFrZXlmcmFtZXNbMF0u
b2Zmc2V0KQorICAgICAgICBrZXlmcmFtZXNbMF0ub2Zmc2V0ID0gMDsKKworICAgIC8vIDMuIElm
IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGxhc3Qga2V5ZnJhbWUgaW4ga2V5
ZnJhbWVzIGlzIG51bGwsIHNldCBpdHMgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IHRvIDEuCisg
ICAgaWYgKCFrZXlmcmFtZXMubGFzdCgpLm9mZnNldCkKKyAgICAgICAga2V5ZnJhbWVzLmxhc3Qo
KS5vZmZzZXQgPSAxOworCisgICAgLy8gNC4gRm9yIGVhY2ggcGFpciBvZiBrZXlmcmFtZXMgQSBh
bmQgQiB3aGVyZToKKyAgICAvLyAgICAtIEEgYXBwZWFycyBiZWZvcmUgQiBpbiBrZXlmcmFtZXMs
IGFuZAorICAgIC8vICAgIC0gQSBhbmQgQiBoYXZlIGEgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0
IHRoYXQgaXMgbm90IG51bGwsIGFuZAorICAgIC8vICAgIC0gYWxsIGtleWZyYW1lcyBiZXR3ZWVu
IEEgYW5kIEIgaGF2ZSBhIG51bGwgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0LAorICAgIC8vICAg
IGNhbGN1bGF0ZSB0aGUgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IG9mIGVhY2gga2V5ZnJhbWUg
YmV0d2VlbiBBIGFuZCBCIGFzIGZvbGxvd3M6CisgICAgLy8gICAgMS4gTGV0IG9mZnNldGsgYmUg
dGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBhIGtleWZyYW1lIGsuCisgICAgLy8gICAg
Mi4gTGV0IG4gYmUgdGhlIG51bWJlciBvZiBrZXlmcmFtZXMgYmV0d2VlbiBhbmQgaW5jbHVkaW5n
IEEgYW5kIEIgbWludXMgMS4KKyAgICAvLyAgICAzLiBMZXQgaW5kZXggcmVmZXIgdG8gdGhlIHBv
c2l0aW9uIG9mIGtleWZyYW1lIGluIHRoZSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMgYmV0d2VlbiBB
IGFuZCBCIHN1Y2ggdGhhdCB0aGUgZmlyc3Qga2V5ZnJhbWUgYWZ0ZXIgQSBoYXMgYW4gaW5kZXgg
b2YgMS4KKyAgICAvLyAgICA0LiBTZXQgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBr
ZXlmcmFtZSB0byBvZmZzZXRBICsgKG9mZnNldEIg4oiSIG9mZnNldEEpIMOXIGluZGV4IC8gbi4K
KyAgICBzaXplX3QgaW5kZXhPZkxhc3RLZXlmcmFtZVdpdGhOb25OdWxsT2Zmc2V0ID0gMDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGtleWZyYW1lcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBhdXRvIGtleWZyYW1lID0ga2V5ZnJhbWVzW2ldOworICAgICAgICBpZiAoIWtleWZyYW1lLm9m
ZnNldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW5kZXhPZkxhc3RLZXlm
cmFtZVdpdGhOb25OdWxsT2Zmc2V0ID09IGkgLSAxKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZG91YmxlIGxhc3ROb25OdWxsT2Zmc2V0ID0ga2V5ZnJhbWVzW2luZGV4T2ZMYXN0
S2V5ZnJhbWVXaXRoTm9uTnVsbE9mZnNldF0ub2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIGRvdWJs
ZSBvZmZzZXREZWx0YSA9IGtleWZyYW1lLm9mZnNldC52YWx1ZSgpIC0gbGFzdE5vbk51bGxPZmZz
ZXQ7CisgICAgICAgIGRvdWJsZSBvZmZzZXRJbmNyZW1lbnQgPSBvZmZzZXREZWx0YSAvIChpIC0g
aW5kZXhPZkxhc3RLZXlmcmFtZVdpdGhOb25OdWxsT2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4T2ZGaXJzdEtleWZyYW1lV2l0aE51bGxPZmZzZXQgPSBpbmRleE9mTGFzdEtleWZyYW1lV2l0
aE5vbk51bGxPZmZzZXQgKyAxOworICAgICAgICBmb3IgKHNpemVfdCBqID0gaW5kZXhPZkZpcnN0
S2V5ZnJhbWVXaXRoTnVsbE9mZnNldDsgaiA8IGk7ICsraikKKyAgICAgICAgICAgIGtleWZyYW1l
c1tqXS5vZmZzZXQgPSBsYXN0Tm9uTnVsbE9mZnNldCArIChqIC0gaW5kZXhPZkxhc3RLZXlmcmFt
ZVdpdGhOb25OdWxsT2Zmc2V0KSAqIG9mZnNldEluY3JlbWVudDsKKworICAgICAgICBpbmRleE9m
TGFzdEtleWZyYW1lV2l0aE5vbk51bGxPZmZzZXQgPSBpOworICAgIH0KK30KKworc3RhdGljIGlu
bGluZSBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzSXRlcmFibGVLZXlmcmFtZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0LCBKU1ZhbHVlIG1ldGhv
ZCwgVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQcm9jZXNzZWRLZXlmcmFtZT4mIHByb2Nlc3NlZEtl
eWZyYW1lcykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8vIDEuIExldCBpdGVyIGJlIEdldEl0ZXJh
dG9yKG9iamVjdCwgbWV0aG9kKS4KKyAgICBmb3JFYWNoSW5JdGVyYWJsZShzdGF0ZSwga2V5ZnJh
bWVzSW5wdXQuZ2V0KCksIG1ldGhvZCwgWyZwcm9jZXNzZWRLZXlmcmFtZXNdKFZNJiB2bSwgRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBuZXh0VmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsK
KyAgICAgICAgaWYgKCFuZXh0VmFsdWUgfHwgIW5leHRWYWx1ZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworCisgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBKU09iamVjdCoga2V5ZnJh
bWUgPSBuZXh0VmFsdWUudG9PYmplY3QoJnN0YXRlKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgb3duUHJvcGVydHlOYW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZh
dGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoa2V5ZnJhbWUsICZzdGF0ZSwgb3duUHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
KCkpOworICAgICAgICBzaXplX3QgbnVtYmVyT2ZQcm9wZXJ0aWVzID0gb3duUHJvcGVydHlOYW1l
cy5zaXplKCk7CisKKyAgICAgICAgS2V5ZnJhbWVFZmZlY3Q6OlByb2Nlc3NlZEtleWZyYW1lIGtl
eWZyYW1lT3V0cHV0OworCisgICAgICAgIFN0cmluZyBlYXNpbmcgPSAibGluZWFyIjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9mZnNldDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxL
ZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPiBjb21wb3NpdGU7CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJPZlByb3BlcnRpZXM7ICsraikgeworICAgICAg
ICAgICAgYXV0byBvd25Qcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2pdOworICAgICAg
ICAgICAgYXV0byBvd25Qcm9wZXJ0eU5hbWVBc1N0cmluZyA9IG93blByb3BlcnR5TmFtZS5zdHJp
bmcoKTsKKyAgICAgICAgICAgIGF1dG8gb3duUHJvcGVydHlSYXdWYWx1ZSA9IGtleWZyYW1lLT5n
ZXQoJnN0YXRlLCBvd25Qcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgaWYgKG93blByb3BlcnR5
TmFtZSA9PSAiZWFzaW5nIikKKyAgICAgICAgICAgICAgICBlYXNpbmcgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oc3RhdGUsIG93blByb3BlcnR5UmF3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBp
ZiAob3duUHJvcGVydHlOYW1lQXNTdHJpbmcgPT0gIm9mZnNldCIpCisgICAgICAgICAgICAgICAg
b2Zmc2V0ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExEb3VibGU+PihzdGF0ZSwgb3duUHJvcGVy
dHlSYXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChvd25Qcm9wZXJ0eU5hbWUgPT0gImNv
bXBvc2l0ZSIpCisgICAgICAgICAgICAgICAgY29tcG9zaXRlID0gY29udmVydDxJRExFbnVtZXJh
dGlvbjxLZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPj4oc3RhdGUsIG93blByb3Bl
cnR5UmF3VmFsdWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBj
c3NQcm9wZXJ0eUlkID0gSURMQXR0cmlidXRlTmFtZVRvQW5pbWF0aW9uUHJvcGVydHlOYW1lKG93
blByb3BlcnR5TmFtZUFzU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoQ1NTUHJvcGVydHlB
bmltYXRpb246OmlzUHJvcGVydHlBbmltYXRhYmxlKGNzc1Byb3BlcnR5SWQpKQorICAgICAgICAg
ICAgICAgICAgICBrZXlmcmFtZU91dHB1dC5jc3NQcm9wZXJ0aWVzQW5kVmFsdWVzLnNldChjc3NQ
cm9wZXJ0eUlkLCBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIG93blByb3BlcnR5UmF3VmFs
dWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGtleWZy
YW1lT3V0cHV0LmVhc2luZyA9IGVhc2luZzsKKyAgICAgICAga2V5ZnJhbWVPdXRwdXQub2Zmc2V0
ID0gb2Zmc2V0OworICAgICAgICBrZXlmcmFtZU91dHB1dC5jb21wb3NpdGUgPSBjb21wb3NpdGU7
CisKKyAgICAgICAgcHJvY2Vzc2VkS2V5ZnJhbWVzLmFwcGVuZChXVEZNb3ZlKGtleWZyYW1lT3V0
cHV0KSk7CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBUeXBlRXJyb3IgfSk7CisKKyAgICByZXR1cm4geyB9
OworfQorCitzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPEtleWZyYW1lRWZmZWN0OjpLZXlmcmFt
ZUxpa2VPYmplY3Q+IHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3QoRXhlY1N0YXRlJiBzdGF0ZSwg
U3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0KQoreworICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNwcm9jZXNzLWEta2V5ZnJhbWUtbGlrZS1v
YmplY3QKKworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gMS4gUnVuIHRoZSBwcm9jZWR1cmUgdG8gY29u
dmVydCBhbiBFQ01BU2NyaXB0IHZhbHVlIHRvIGEgZGljdGlvbmFyeSB0eXBlIFtXRUJJRExdIHdp
dGgga2V5ZnJhbWUgaW5wdXQgYXMgdGhlIEVDTUFTY3JpcHQgdmFsdWUgYXMgZm9sbG93czoKKyAg
ICAvLyAKKyAgICAvLyAgICBkaWN0aW9uYXJ5IEJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZSB7
CisgICAgLy8gICAgICAgIChkb3VibGU/IG9yIHNlcXVlbmNlPGRvdWJsZT8+KSAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gW107CisgICAgLy8gICAgICAgIChET01TdHJpbmcgb3Igc2Vx
dWVuY2U8RE9NU3RyaW5nPikgICAgICAgICAgICAgICAgICAgZWFzaW5nID0gW107CisgICAgLy8g
ICAgICAgIChDb21wb3NpdGVPcGVyYXRpb24gb3Igc2VxdWVuY2U8Q29tcG9zaXRlT3BlcmF0aW9u
PikgY29tcG9zaXRlID0gW107CisgICAgLy8gICAgfTsKKyAgICAvLworICAgIC8vICAgIFN0b3Jl
IHRoZSByZXN1bHQgb2YgdGhpcyBwcm9jZWR1cmUgYXMga2V5ZnJhbWUgb3V0cHV0LgorICAgIGF1
dG8gYmFzZVByb3BlcnRpZXMgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8S2V5ZnJhbWVFZmZlY3Q6
OkJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZT4+KHN0YXRlLCBrZXlmcmFtZXNJbnB1dC5nZXQo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH0pOworCisgICAgS2V5ZnJhbWVFZmZlY3Q6OktleWZyYW1lTGlrZU9iamVjdCBrZXlmcmFtZU91
cHV0OworICAgIGtleWZyYW1lT3VwdXQuYmFzZVByb3BlcnRpZXMgPSBiYXNlUHJvcGVydGllczsK
KworICAgIC8vIDIuIEJ1aWxkIHVwIGEgbGlzdCBvZiBhbmltYXRhYmxlIHByb3BlcnRpZXMgYXMg
Zm9sbG93czoKKyAgICAvLworICAgIC8vICAgIDEuIExldCBhbmltYXRhYmxlIHByb3BlcnRpZXMg
YmUgYSBsaXN0IG9mIHByb3BlcnR5IG5hbWVzIChpbmNsdWRpbmcgc2hvcnRoYW5kIHByb3BlcnRp
ZXMgdGhhdCBoYXZlIGxvbmdoYW5kIHN1Yi1wcm9wZXJ0aWVzCisgICAgLy8gICAgICAgdGhhdCBh
cmUgYW5pbWF0YWJsZSkgdGhhdCBjYW4gYmUgYW5pbWF0ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9u
LgorICAgIC8vICAgIDIuIENvbnZlcnQgZWFjaCBwcm9wZXJ0eSBuYW1lIGluIGFuaW1hdGFibGUg
cHJvcGVydGllcyB0byB0aGUgZXF1aXZhbGVudCBJREwgYXR0cmlidXRlIGJ5IGFwcGx5aW5nIHRo
ZSBhbmltYXRpb24gcHJvcGVydHkKKyAgICAvLyAgICAgICBuYW1lIHRvIElETCBhdHRyaWJ1dGUg
bmFtZSBhbGdvcml0aG0uCisKKyAgICAvLyAzLiBMZXQgaW5wdXQgcHJvcGVydGllcyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgdGhlIEVudW1lcmFibGVPd25OYW1lcyBvcGVyYXRpb24gd2l0aCBr
ZXlmcmFtZSBpbnB1dCBhcyB0aGUgb2JqZWN0LgorICAgIFByb3BlcnR5TmFtZUFycmF5IGlucHV0
UHJvcGVydGllcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xN
b2RlOjpFeGNsdWRlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhrZXlmcmFt
ZXNJbnB1dC5nZXQoKSwgJnN0YXRlLCBpbnB1dFByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKKworICAgIC8vIDQuIE1ha2UgdXAgYSBuZXcgbGlzdCBhbmltYXRpb24gcHJvcGVydGllcyB0
aGF0IGNvbnNpc3RzIG9mIGFsbCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBpbiBib3RoIGlu
cHV0IHByb3BlcnRpZXMgYW5kIGFuaW1hdGFibGUKKyAgICAvLyAgICBwcm9wZXJ0aWVzLCBvciB3
aGljaCBhcmUgaW4gaW5wdXQgcHJvcGVydGllcyBhbmQgY29uZm9ybSB0byB0aGUgPGN1c3RvbS1w
cm9wZXJ0eS1uYW1lPiBwcm9kdWN0aW9uLgorCisgICAgLy8gNS4gU29ydCBhbmltYXRpb24gcHJv
cGVydGllcyBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIFVuaWNvZGUgY29kZXBvaW50cyB0aGF0
IGRlZmluZSBlYWNoIHByb3BlcnR5IG5hbWUuCisgICAgLy8gICAgV2Ugb25seSBhY3R1YWxseSBw
ZXJmb3JtIHRoaXMgYWZ0ZXIgc3RlcCA2LgorCisgICAgLy8gNi4gRm9yIGVhY2ggcHJvcGVydHkg
bmFtZSBpbiBhbmltYXRpb24gcHJvcGVydGllcywKKyAgICBzaXplX3QgbnVtYmVyT2ZQcm9wZXJ0
aWVzID0gaW5wdXRQcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGF1dG8gY3NzUHJvcGVydHlJRCA9
IElETEF0dHJpYnV0ZU5hbWVUb0FuaW1hdGlvblByb3BlcnR5TmFtZShpbnB1dFByb3BlcnRpZXNb
aV0uc3RyaW5nKCkpOworICAgICAgICBpZiAoIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjppc1Byb3Bl
cnR5QW5pbWF0YWJsZShjc3NQcm9wZXJ0eUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIC8vIDEuIExldCByYXcgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBb
W0dldF1dIGludGVybmFsIG1ldGhvZCBvbiBrZXlmcmFtZSBpbnB1dCwgd2l0aCBwcm9wZXJ0eSBu
YW1lIGFzIHRoZSBwcm9wZXJ0eQorICAgICAgICAvLyAgICBrZXkgYW5kIGtleWZyYW1lIGlucHV0
IGFzIHRoZSByZWNlaXZlci4KKyAgICAgICAgYXV0byByYXdWYWx1ZSA9IGtleWZyYW1lc0lucHV0
LT5nZXQoJnN0YXRlLCBpbnB1dFByb3BlcnRpZXNbaV0pOworCisgICAgICAgIC8vIDIuIENoZWNr
IHRoZSBjb21wbGV0aW9uIHJlY29yZCBvZiByYXcgdmFsdWUuCisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKworICAgICAgICAvLyAz
LiBDb252ZXJ0IHJhdyB2YWx1ZSB0byBhIERPTVN0cmluZyBvciBzZXF1ZW5jZSBvZiBET01TdHJp
bmdzIHByb3BlcnR5IHZhbHVlcyBhcyBmb2xsb3dzOgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBw
cm9wZXJ0eVZhbHVlczsKKyAgICAgICAgLy8gTGV0IHByb3BlcnR5IHZhbHVlcyBiZSB0aGUgcmVz
dWx0IG9mIGNvbnZlcnRpbmcgcmF3IHZhbHVlIHRvIElETCB0eXBlIChET01TdHJpbmcgb3Igc2Vx
dWVuY2U8RE9NU3RyaW5nPikKKyAgICAgICAgLy8gdXNpbmcgdGhlIHByb2NlZHVyZXMgZGVmaW5l
ZCBmb3IgY29udmVydGluZyBhbiBFQ01BU2NyaXB0IHZhbHVlIHRvIGFuIElETCB2YWx1ZSBbV0VC
SURMXS4KKyAgICAgICAgLy8gSWYgcHJvcGVydHkgdmFsdWVzIGlzIGEgc2luZ2xlIERPTVN0cmlu
ZywgcmVwbGFjZSBwcm9wZXJ0eSB2YWx1ZXMgd2l0aCBhIHNlcXVlbmNlIG9mIERPTVN0cmluZ3Mg
d2l0aCB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgcHJvcGVydHkKKyAgICAgICAgLy8gVmFsdWVzIGFz
IHRoZSBvbmx5IGVsZW1lbnQuCisgICAgICAgIGlmIChyYXdWYWx1ZS5pc1N0cmluZygpKQorICAg
ICAgICAgICAgcHJvcGVydHlWYWx1ZXMgPSB7IHJhd1ZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkg
fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlWYWx1ZXMgPSBjb252ZXJ0PElE
TFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCByYXdWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKworICAgICAg
ICAvLyA0LiBDYWxjdWxhdGUgdGhlIG5vcm1hbGl6ZWQgcHJvcGVydHkgbmFtZSBhcyB0aGUgcmVz
dWx0IG9mIGFwcGx5aW5nIHRoZSBJREwgYXR0cmlidXRlIG5hbWUgdG8gYW5pbWF0aW9uIHByb3Bl
cnR5IG5hbWUgYWxnb3JpdGhtIHRvIHByb3BlcnR5IG5hbWUuCisgICAgICAgIC8vIDUuIEFkZCBh
IHByb3BlcnR5IHRvIHRvIGtleWZyYW1lIG91dHB1dCB3aXRoIG5vcm1hbGl6ZWQgcHJvcGVydHkg
bmFtZSBhcyB0aGUgcHJvcGVydHkgbmFtZSwgYW5kIHByb3BlcnR5IHZhbHVlcyBhcyB0aGUgcHJv
cGVydHkgdmFsdWUuCisgICAgICAgIGtleWZyYW1lT3VwdXQucHJvcGVydGllc0FuZFZhbHVlcy5h
cHBlbmQoeyBjc3NQcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlcyB9KTsKKyAgICB9CisKKyAgICAv
LyBOb3cgd2UgY2FuIHBlcmZvcm0gc3RlcCA1LgorICAgIHN0ZDo6c29ydChrZXlmcmFtZU91cHV0
LnByb3BlcnRpZXNBbmRWYWx1ZXMuYmVnaW4oKSwga2V5ZnJhbWVPdXB1dC5wcm9wZXJ0aWVzQW5k
VmFsdWVzLmVuZCgpLCBbXShhdXRvJiBsaHMsIGF1dG8mIHJocykgeworICAgICAgICByZXR1cm4g
Z2V0UHJvcGVydHlOYW1lU3RyaW5nKGxocy5wcm9wZXJ0eSkudXRmOCgpIDwgZ2V0UHJvcGVydHlO
YW1lU3RyaW5nKHJocy5wcm9wZXJ0eSkudXRmOCgpOworICAgIH0pOworCisgICAgLy8gNy4gUmV0
dXJuIGtleWZyYW1lIG91dHB1dC4KKyAgICByZXR1cm4geyBXVEZNb3ZlKGtleWZyYW1lT3VwdXQp
IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5
SW5kZXhlZEtleWZyYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5
ZnJhbWVzSW5wdXQsIFZlY3RvcjxLZXlmcmFtZUVmZmVjdDo6UHJvY2Vzc2VkS2V5ZnJhbWU+JiBw
cm9jZXNzZWRLZXlmcmFtZXMpCit7CisgICAgLy8gMS4gTGV0IHByb3BlcnR5LWluZGV4ZWQga2V5
ZnJhbWUgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBwcm9jZWR1cmUgdG8gcHJvY2VzcyBh
IGtleWZyYW1lLWxpa2Ugb2JqZWN0IHBhc3Npbmcgb2JqZWN0IGFzIHRoZSBrZXlmcmFtZSBpbnB1
dC4KKyAgICBhdXRvIHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3RSZXN1bHQgPSBwcm9jZXNzS2V5
ZnJhbWVMaWtlT2JqZWN0KHN0YXRlLCBXVEZNb3ZlKGtleWZyYW1lc0lucHV0KSk7CisgICAgaWYg
KHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3RSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBwcm9jZXNzS2V5ZnJhbWVMaWtlT2JqZWN0UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBhdXRvIHByb3BlcnR5SW5kZXhlZEtleWZyYW1lID0gcHJvY2Vzc0tleWZyYW1lTGlr
ZU9iamVjdFJlc3VsdC5yZXR1cm5WYWx1ZSgpOworCisgICAgLy8gMi4gRm9yIGVhY2ggbWVtYmVy
LCBtLCBpbiBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CisgICAgZm9yIChhdXRvJiBtIDogcHJvcGVydHlJbmRleGVkS2V5ZnJhbWUucHJvcGVy
dGllc0FuZFZhbHVlcykgeworICAgICAgICAvLyAxLiBMZXQgcHJvcGVydHkgbmFtZSBiZSB0aGUg
a2V5IGZvciBtLgorICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IG0ucHJvcGVydHk7CisgICAg
ICAgIC8vIDIuIElmIHByb3BlcnR5IG5hbWUgaXMg4oCcY29tcG9zaXRl4oCdLCBvciDigJxlYXNp
bmfigJ0sIG9yIOKAnG9mZnNldOKAnSwgc2tpcCB0aGUgcmVtYWluaW5nIHN0ZXBzIGluIHRoaXMg
bG9vcCBhbmQgY29udGludWUgZnJvbSB0aGUgbmV4dCBtZW1iZXIgaW4gcHJvcGVydHktaW5kZXhl
ZAorICAgICAgICAvLyAgICBrZXlmcmFtZSBhZnRlciBtLgorICAgICAgICAvLyAgICBXZSBza2lw
IHRoaXMgdGVzdCBzaW5jZSB3ZSBzcGxpdCB0aG9zZSBwcm9wZXJ0aWVzIGFuZCB0aGUgYWN0dWFs
IENTUyBwcm9wZXJ0aWVzIHRoYXQgd2UncmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLgorICAg
ICAgICAvLyAzLiBMZXQgcHJvcGVydHkgdmFsdWVzIGJlIHRoZSB2YWx1ZSBmb3IgbS4KKyAgICAg
ICAgYXV0byBwcm9wZXJ0eVZhbHVlcyA9IG0udmFsdWVzOworICAgICAgICAvLyA0LiBMZXQgcHJv
cGVydHkga2V5ZnJhbWVzIGJlIGFuIGVtcHR5IHNlcXVlbmNlIG9mIGtleWZyYW1lcy4KKyAgICAg
ICAgVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQcm9jZXNzZWRLZXlmcmFtZT4gcHJvcGVydHlLZXlm
cmFtZXM7CisgICAgICAgIC8vIDUuIEZvciBlYWNoIHZhbHVlLCB2LCBpbiBwcm9wZXJ0eSB2YWx1
ZXMgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICBmb3IgKGF1dG8mIHYgOiBw
cm9wZXJ0eVZhbHVlcykgeworICAgICAgICAgICAgLy8gMS4gTGV0IGsgYmUgYSBuZXcga2V5ZnJh
bWUgd2l0aCBhIG51bGwga2V5ZnJhbWUgb2Zmc2V0LgorICAgICAgICAgICAgS2V5ZnJhbWVFZmZl
Y3Q6OlByb2Nlc3NlZEtleWZyYW1lIGs7CisgICAgICAgICAgICAvLyAyLiBBZGQgdGhlIHByb3Bl
cnR5LXZhbHVlIHBhaXIsIHByb3BlcnR5IG5hbWUg4oaSIHYsIHRvIGsuCisgICAgICAgICAgICBr
LmNzc1Byb3BlcnRpZXNBbmRWYWx1ZXMuc2V0KHByb3BlcnR5TmFtZSwgdik7CisgICAgICAgICAg
ICAvLyAzLiBBcHBlbmQgayB0byBwcm9wZXJ0eSBrZXlmcmFtZXMuCisgICAgICAgICAgICBwcm9w
ZXJ0eUtleWZyYW1lcy5hcHBlbmQoayk7CisgICAgICAgIH0KKyAgICAgICAgLy8gNi4gQXBwbHkg
dGhlIHByb2NlZHVyZSB0byBjb21wdXRlIG1pc3Npbmcga2V5ZnJhbWUgb2Zmc2V0cyB0byBwcm9w
ZXJ0eSBrZXlmcmFtZXMuCisgICAgICAgIGNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKHBy
b3BlcnR5S2V5ZnJhbWVzKTsKKworICAgICAgICAvLyA3LiBBZGQga2V5ZnJhbWVzIGluIHByb3Bl
cnR5IGtleWZyYW1lcyB0byBwcm9jZXNzZWQga2V5ZnJhbWVzLgorICAgICAgICBmb3IgKGF1dG8m
IGtleWZyYW1lIDogcHJvcGVydHlLZXlmcmFtZXMpCisgICAgICAgICAgICBwcm9jZXNzZWRLZXlm
cmFtZXMuYXBwZW5kKGtleWZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAzLiBTb3J0IHByb2Nlc3Nl
ZCBrZXlmcmFtZXMgYnkgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBlYWNoIGtleWZy
YW1lIGluIGluY3JlYXNpbmcgb3JkZXIuCisgICAgc3RkOjpzb3J0KHByb2Nlc3NlZEtleWZyYW1l
cy5iZWdpbigpLCBwcm9jZXNzZWRLZXlmcmFtZXMuZW5kKCksIFtdKGF1dG8mIGxocywgYXV0byYg
cmhzKSB7CisgICAgICAgIHJldHVybiBsaHMub2Zmc2V0LnZhbHVlKCkgPCByaHMub2Zmc2V0LnZh
bHVlKCk7CisgICAgfSk7CisKKyAgICAvLyA0LiBNZXJnZSBhZGphY2VudCBrZXlmcmFtZXMgaW4g
cHJvY2Vzc2VkIGtleWZyYW1lcyB3aGVuIHRoZXkgaGF2ZSBlcXVhbCBjb21wdXRlZCBrZXlmcmFt
ZSBvZmZzZXRzLgorICAgIHNpemVfdCBpID0gMTsKKyAgICB3aGlsZSAoaSA8IHByb2Nlc3NlZEtl
eWZyYW1lcy5zaXplKCkpIHsKKyAgICAgICAgYXV0byYga2V5ZnJhbWUgPSBwcm9jZXNzZWRLZXlm
cmFtZXNbaV07CisgICAgICAgIGF1dG8mIHByZXZpb3VzS2V5ZnJhbWUgPSBwcm9jZXNzZWRLZXlm
cmFtZXNbaSAtIDFdOworICAgICAgICAvLyBJZiB0aGUgb2Zmc2V0cyBvZiB0aGlzIGtleWZyYW1l
IGFuZCB0aGUgcHJldmlvdXMga2V5ZnJhbWUgYXJlIGRpZmZlcmVudCwKKyAgICAgICAgLy8gdGhp
cyBtZWFucyB0aGF0IHRoZSB0d28ga2V5ZnJhbWVzIHNob3VsZCBub3QgYmUgbWVyZ2VkIGFuZCB3
ZSBjYW4gbW92ZQorICAgICAgICAvLyBvbiB0byB0aGUgbmV4dCBrZXlmcmFtZS4KKyAgICAgICAg
aWYgKGtleWZyYW1lLm9mZnNldC52YWx1ZSgpICE9IHByZXZpb3VzS2V5ZnJhbWUub2Zmc2V0LnZh
bHVlKCkpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgYm90aCB0aGlzIGtleWZyYW1lIGFuZCB0aGUgcHJl
dmlvdXMga2V5ZnJhbWUgc2hvdWxkIGJlIG1lcmdlZC4KKyAgICAgICAgLy8gVW5wcm9jZXNzZWQg
a2V5ZnJhbWVzIGluIHByb2Nlc3NlZEtleWZyYW1lcyBhdCB0aGlzIHN0YWdlIGhhdmUgYSBzaW5n
bGUKKyAgICAgICAgLy8gcHJvcGVydHkgaW4gY3NzUHJvcGVydGllc0FuZFZhbHVlcywgc28ganVz
dCBzZXQgdGhpcyBvbiB0aGUgcHJldmlvdXMga2V5ZnJhbWUuCisgICAgICAgIGF1dG8gc2luZ2xl
VmFsdWVJbktleWZyYW1lID0ga2V5ZnJhbWUuY3NzUHJvcGVydGllc0FuZFZhbHVlcy5iZWdpbigp
OworICAgICAgICBwcmV2aW91c0tleWZyYW1lLmNzc1Byb3BlcnRpZXNBbmRWYWx1ZXMuc2V0KHNp
bmdsZVZhbHVlSW5LZXlmcmFtZS0+a2V5LCBzaW5nbGVWYWx1ZUluS2V5ZnJhbWUtPnZhbHVlKTsK
KyAgICAgICAgLy8gU2luY2Ugd2UndmUgcHJvY2Vzc2VkIHRoaXMga2V5ZnJhbWUsIHdlIGNhbiBy
ZW1vdmUgaXQgYW5kIGtlZXAgaSB0aGUgc2FtZQorICAgICAgICAvLyBzbyB0aGF0IHdlIHByb2Nl
c3MgdGhlIG5leHQga2V5ZnJhbWUgaW4gdGhlIG5leHQgbG9vcCBpdGVyYXRpb24uCisgICAgICAg
IHByb2Nlc3NlZEtleWZyYW1lcy5yZW1vdmUoaSk7CisgICAgfQorCisgICAgLy8gNS4gTGV0IG9m
ZnNldHMgYmUgYSBzZXF1ZW5jZSBvZiBudWxsYWJsZSBkb3VibGUgdmFsdWVzIGFzc2lnbmVkIGJh
c2VkIG9uIHRoZSB0eXBlIG9mIHRoZSDigJxvZmZzZXTigJ0gbWVtYmVyIG9mIHRoZSBwcm9wZXJ0
eS1pbmRleGVkIGtleWZyYW1lIGFzIGZvbGxvd3M6CisgICAgLy8gICAgLSBzZXF1ZW5jZTxkb3Vi
bGU/PiwgdGhlIHZhbHVlIG9mIOKAnG9mZnNldOKAnSBhcy1pcy4KKyAgICAvLyAgICAtIGRvdWJs
ZT8sIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSB3aXRoIHRoZSB2YWx1ZSBvZiDigJxvZmZzZXTi
gJ0gYXMgaXRzIHNpbmdsZSBpdGVtLCBpLmUuIMKrIG9mZnNldCDCuywKKyAgICAvLyBGSVhNRTog
dXBkYXRlIHRoaXMgd2hlbiB3ZSBmaWd1cmUgb3V0IGhvdyB0byBkZWFsIHdpdGggbnVsbGFibGUg
ZG91YmxlcyBoZXJlLgorICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+IG9mZnNldHM7
CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCisg
ICAgICAgIG9mZnNldHMgPSBXVEY6OmdldDxWZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+Pj4o
cHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsKKyAgICBlbHNl
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKKyAgICAgICAgb2Zmc2V0cy5hcHBlbmQoV1RGOjpn
ZXQ8ZG91YmxlPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQp
KTsKKyAgICBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPG51bGxwdHJfdD4ocHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKKyAgICAgICAgb2Zmc2V0
cy5hcHBlbmQoc3RkOjpudWxsb3B0KTsKKworICAgIC8vIDYuIEFzc2lnbiBlYWNoIHZhbHVlIGlu
IG9mZnNldHMgdG8gdGhlIGtleWZyYW1lIG9mZnNldCBvZiB0aGUga2V5ZnJhbWUgd2l0aCBjb3Jy
ZXNwb25kaW5nIHBvc2l0aW9uIGluIHByb3BlcnR5IGtleWZyYW1lcyB1bnRpbCB0aGUgZW5kIG9m
IGVpdGhlciBzZXF1ZW5jZSBpcyByZWFjaGVkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
b2Zmc2V0cy5zaXplKCkgJiYgaSA8IHByb2Nlc3NlZEtleWZyYW1lcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgcHJvY2Vzc2VkS2V5ZnJhbWVzW2ldLm9mZnNldCA9IG9mZnNldHNbaV07CisKKyAgICAv
LyA3LiBMZXQgZWFzaW5ncyBiZSBhIHNlcXVlbmNlIG9mIERPTVN0cmluZyB2YWx1ZXMgYXNzaWdu
ZWQgYmFzZWQgb24gdGhlIHR5cGUgb2YgdGhlIOKAnGVhc2luZ+KAnSBtZW1iZXIgb2YgdGhlIHBy
b3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgYXMgZm9sbG93czoKKyAgICAvLyAgICAtIHNlcXVlbmNl
PERPTVN0cmluZz4sIHRoZSB2YWx1ZSBvZiDigJxlYXNpbmfigJ0gYXMtaXMuCisgICAgLy8gICAg
LSBET01TdHJpbmcsIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSB3aXRoIHRoZSB2YWx1ZSBvZiDi
gJxlYXNpbmfigJ0gYXMgaXRzIHNpbmdsZSBpdGVtLCBpLmUuIMKrIGVhc2luZyDCuywKKyAgICBW
ZWN0b3I8U3RyaW5nPiBlYXNpbmdzOworICAgIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFZl
Y3RvcjxTdHJpbmc+Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5lYXNp
bmcpKQorICAgICAgICBlYXNpbmdzID0gV1RGOjpnZXQ8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5
SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmVhc2luZyk7CisgICAgZWxzZSBpZiAoV1RG
Ojpob2xkc19hbHRlcm5hdGl2ZTxTdHJpbmc+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQ
cm9wZXJ0aWVzLmVhc2luZykpCisgICAgICAgIGVhc2luZ3MuYXBwZW5kKFdURjo6Z2V0PFN0cmlu
Zz4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuZWFzaW5nKSk7CisKKyAg
ICAvLyA4LiBJZiBlYXNpbmdzIGlzIGFuIGVtcHR5IHNlcXVlbmNlLCBsZXQgaXQgYmUgYSBzZXF1
ZW5jZSBvZiBsZW5ndGggb25lIGNvbnRhaW5pbmcgdGhlIHNpbmdsZSB2YWx1ZSDigJxsaW5lYXLi
gJ0sIGkuZS4gwqsgImxpbmVhciIgwrsuCisgICAgaWYgKGVhc2luZ3MuaXNFbXB0eSgpKQorICAg
ICAgICBlYXNpbmdzLmFwcGVuZCgibGluZWFyIik7CisKKyAgICAvLyA5LiBJZiBlYXNpbmdzIGhh
cyBmZXdlciBpdGVtcyB0aGFuIHByb3BlcnR5IGtleWZyYW1lcywgcmVwZWF0IHRoZSBlbGVtZW50
cyBpbiBlYXNpbmdzIHN1Y2Nlc3NpdmVseSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcgb2Yg
dGhlIGxpc3QgdW50aWwgZWFzaW5ncyBoYXMgYXMgbWFueQorICAgIC8vICAgIGl0ZW1zIGFzIHBy
b3BlcnR5IGtleWZyYW1lcy4KKyAgICBpZiAoZWFzaW5ncy5zaXplKCkgPCBwcm9jZXNzZWRLZXlm
cmFtZXMuc2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBpbml0aWFsTnVtYmVyT2ZFYXNpbmdzID0g
ZWFzaW5ncy5zaXplKCk7CisgICAgICAgIGZvciAoaSA9IGluaXRpYWxOdW1iZXJPZkVhc2luZ3Mg
KyAxOyBpIDwgcHJvY2Vzc2VkS2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkKKyAgICAgICAgICAg
IGVhc2luZ3MuYXBwZW5kKGVhc2luZ3NbaSAlIGluaXRpYWxOdW1iZXJPZkVhc2luZ3NdKTsKKyAg
ICB9CisKKyAgICAvLyAxMC4gSWYgZWFzaW5ncyBoYXMgbW9yZSBpdGVtcyB0aGFuIHByb3BlcnR5
IGtleWZyYW1lcywgc3RvcmUgdGhlIGV4Y2VzcyBpdGVtcyBhcyB1bnVzZWQgZWFzaW5ncy4KKyAg
ICAvLyBGSVhNRTogV2UgZG9uJ3QgZGVhbCB3aXRoIHRoaXMgeWV0LgorCisgICAgLy8gMTEuIEFz
c2lnbiBlYWNoIHZhbHVlIGluIGVhc2luZ3MgdG8gYSBwcm9wZXJ0eSBuYW1lZCDigJxlYXNpbmfi
gJ0gb24gdGhlIGtleWZyYW1lIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW4gcHJv
cGVydHkga2V5ZnJhbWVzIHVudGlsIHRoZSBlbmQgb2YgcHJvcGVydHkga2V5ZnJhbWVzCisgICAg
Ly8gICAgIGlzIHJlYWNoZWQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlYXNpbmdzLnNp
emUoKSAmJiBpIDwgcHJvY2Vzc2VkS2V5ZnJhbWVzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9j
ZXNzZWRLZXlmcmFtZXNbaV0uZWFzaW5nID0gZWFzaW5nc1tpXTsKKworICAgIC8vIDEyLiBJZiB0
aGUg4oCcY29tcG9zaXRl4oCdIG1lbWJlciBvZiB0aGUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFt
ZSBpcyBub3QgYW4gZW1wdHkgc2VxdWVuY2U6CisgICAgVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpD
b21wb3NpdGVPcGVyYXRpb24+IGNvbXBvc2l0ZU1vZGVzOworICAgIGlmIChXVEY6OmhvbGRzX2Fs
dGVybmF0aXZlPFZlY3RvcjxLZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPj4ocHJv
cGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuY29tcG9zaXRlKSkKKyAgICAgICAg
Y29tcG9zaXRlTW9kZXMgPSBXVEY6OmdldDxWZWN0b3I8S2V5ZnJhbWVFZmZlY3Q6OkNvbXBvc2l0
ZU9wZXJhdGlvbj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLmNvbXBv
c2l0ZSk7CisgICAgZWxzZSBpZiAoV1RGOjpob2xkc19hbHRlcm5hdGl2ZTxLZXlmcmFtZUVmZmVj
dDo6Q29tcG9zaXRlT3BlcmF0aW9uPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVy
dGllcy5jb21wb3NpdGUpKQorICAgICAgICBjb21wb3NpdGVNb2Rlcy5hcHBlbmQoV1RGOjpnZXQ8
S2V5ZnJhbWVFZmZlY3Q6OkNvbXBvc2l0ZU9wZXJhdGlvbj4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMuY29tcG9zaXRlKSk7CisgICAgaWYgKCFjb21wb3NpdGVNb2Rlcy5p
c0VtcHR5KCkpIHsKKyAgICAgICAgLy8gMS4gTGV0IGNvbXBvc2l0ZSBtb2RlcyBiZSBhIHNlcXVl
bmNlIG9mIGNvbXBvc2l0ZSBvcGVyYXRpb25zIGFzc2lnbmVkIGZyb20gdGhlIOKAnGNvbXBvc2l0
ZeKAnSBtZW1iZXIgb2YgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZS4gSWYgdGhhdCBtZW1iZXIg
aXMgYSBzaW5nbGUgY29tcG9zaXRlCisgICAgICAgIC8vICAgIG9wZXJhdGlvbiwgbGV0IGNvbXBv
c2l0ZSBtb2RlcyBiZSBhIHNlcXVlbmNlIG9mIGxlbmd0aCBvbmUsIHdpdGggdGhlIHZhbHVlIG9m
IHRoZSDigJxjb21wb3NpdGXigJ0gYXMgaXRzIHNpbmdsZSBpdGVtLgorICAgICAgICAvLyAyLiBB
cyB3aXRoIGVhc2luZ3MsIGlmIGNvbXBvc2l0ZSBtb2RlcyBoYXMgZmV3ZXIgaXRlbXMgdGhhbiBw
cm9wZXJ0eSBrZXlmcmFtZXMsIHJlcGVhdCB0aGUgZWxlbWVudHMgaW4gY29tcG9zaXRlIG1vZGVz
IHN1Y2Nlc3NpdmVseSBzdGFydGluZyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YKKyAgICAgICAgLy8g
ICAgdGhlIGxpc3QgdW50aWwgY29tcG9zaXRlIG1vZGVzIGhhcyBhcyBtYW55IGl0ZW1zIGFzIHBy
b3BlcnR5IGtleWZyYW1lcy4KKyAgICAgICAgaWYgKGNvbXBvc2l0ZU1vZGVzLnNpemUoKSA8IHBy
b2Nlc3NlZEtleWZyYW1lcy5zaXplKCkpIHsKKyAgICAgICAgICAgIHNpemVfdCBpbml0aWFsTnVt
YmVyT2ZDb21wb3NpdGVNb2RlcyA9IGNvbXBvc2l0ZU1vZGVzLnNpemUoKTsKKyAgICAgICAgICAg
IGZvciAoaSA9IGluaXRpYWxOdW1iZXJPZkNvbXBvc2l0ZU1vZGVzICsgMTsgaSA8IHByb2Nlc3Nl
ZEtleWZyYW1lcy5zaXplKCkgLSAxOyArK2kpCisgICAgICAgICAgICAgICAgY29tcG9zaXRlTW9k
ZXMuYXBwZW5kKGNvbXBvc2l0ZU1vZGVzW2kgJSBpbml0aWFsTnVtYmVyT2ZDb21wb3NpdGVNb2Rl
c10pOworICAgICAgICB9CisgICAgICAgIC8vIDMuIEFzc2lnbiBlYWNoIHZhbHVlIGluIGNvbXBv
c2l0ZSBtb2RlcyB0byB0aGUga2V5ZnJhbWUtc3BlY2lmaWMgY29tcG9zaXRlIG9wZXJhdGlvbiBv
biB0aGUga2V5ZnJhbWUgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiBwcm9wZXJ0
eSBrZXlmcmFtZXMgdW50aWwKKyAgICAgICAgLy8gICAgdGhlIGVuZCBvZiBwcm9wZXJ0eSBrZXlm
cmFtZXMgaXMgcmVhY2hlZC4KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb21wb3Np
dGVNb2Rlcy5zaXplKCkgJiYgaSA8IHByb2Nlc3NlZEtleWZyYW1lcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgICAgIHByb2Nlc3NlZEtleWZyYW1lc1tpXS5jb21wb3NpdGUgPSBjb21wb3NpdGVNb2Rl
c1tpXTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCiBFeGNlcHRpb25PcjxSZWY8S2V5
ZnJhbWVFZmZlY3Q+PiBLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVs
ZW1lbnQqIHRhcmdldCwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lcykKIHsKICAgICBhdXRv
IGtleWZyYW1lRWZmZWN0ID0gYWRvcHRSZWYoKm5ldyBLZXlmcmFtZUVmZmVjdCh0YXJnZXQpKTsK
QEAgLTU2LDc1ICszODIsMTAzIEBAIEtleWZyYW1lRWZmZWN0OjpLZXlmcmFtZUVmZmVjdChFbGVt
ZW50KiB0YXJnZXQpCiB7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0Ojpz
ZXRLZXlmcmFtZXMoRXhlY1N0YXRlJiBzdGF0ZSwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1l
cykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0OjpzZXRLZXlmcmFtZXMoRXhlY1N0
YXRlJiBzdGF0ZSwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0KQogewotICAgIGF1
dG8gcHJvY2Vzc0tleWZyYW1lc1Jlc3VsdCA9IHByb2Nlc3NLZXlmcmFtZXMoc3RhdGUsIFdURk1v
dmUoa2V5ZnJhbWVzKSk7Ci0gICAgaWYgKHByb2Nlc3NLZXlmcmFtZXNSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCi0gICAgICAgIHJldHVybiBwcm9jZXNzS2V5ZnJhbWVzUmVzdWx0LnJlbGVhc2VFeGNl
cHRpb24oKTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBwcm9jZXNzS2V5ZnJhbWVzKHN0
YXRlLCBXVEZNb3ZlKGtleWZyYW1lc0lucHV0KSk7CiB9CiAKLUV4Y2VwdGlvbk9yPHZvaWQ+IEtl
eWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4ZWNTdGF0ZSYgc3RhdGUsIFN0cm9uZzxK
U09iamVjdD4mJiBrZXlmcmFtZXMpCitFeGNlcHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6
cHJvY2Vzc0tleWZyYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5
ZnJhbWVzSW5wdXQpCiB7Ci0gICAgLy8gRklYTUU6IFdlIG9ubHkgaGF2ZSBwcmltaXRpdmUgdG8t
ZnJvbSBwYXJzaW5nLCBmb3IgZnVsbCBzdXBwb3J0IHNlZSB3ZWJraXQub3JnL2IvMTc5NzA4Lgot
ICAgIC8vIEZ1bGwgc3BlY2lmaWNhdGlvbiBpcyBhdCBodHRwczovL3czYy5naXRodWIuaW8vd2Vi
LWFuaW1hdGlvbnMvI3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQuCi0KLSAgICBpZiAo
IW1fdGFyZ2V0IHx8ICFrZXlmcmFtZXMpCisgICAgLy8gMS4gSWYgb2JqZWN0IGlzIG51bGwsIHJl
dHVybiBhbiBlbXB0eSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMuCisgICAgaWYgKCFtX3RhcmdldCB8
fCAha2V5ZnJhbWVzSW5wdXQuZ2V0KCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAo
IWlzSlNBcnJheShrZXlmcmFtZXMuZ2V0KCkpKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
VHlwZUVycm9yIH07Ci0KLSAgICBLZXlmcmFtZUxpc3QgbmV3S2V5ZnJhbWVzKCJrZXlmcmFtZS1l
ZmZlY3QtIiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7Ci0KICAgICBWTSYgdm0gPSBz
dGF0ZS52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVzb2x2ZXIgPSBtX3RhcmdldC0+c3R5bGVSZXNvbHZl
cigpOwotICAgIGF1dG8gcGFyc2VyQ29udGV4dCA9IENTU1BhcnNlckNvbnRleHQoSFRNTFN0YW5k
YXJkTW9kZSk7CisgICAgLy8gMi4gTGV0IHByb2Nlc3NlZCBrZXlmcmFtZXMgYmUgYW4gZW1wdHkg
c2VxdWVuY2Ugb2Yga2V5ZnJhbWVzLgorICAgIFZlY3RvcjxQcm9jZXNzZWRLZXlmcmFtZT4gcHJv
Y2Vzc2VkS2V5ZnJhbWVzOwogCi0gICAgYXV0byogYXJyYXkgPSBqc0Nhc3Q8Y29uc3QgSlNBcnJh
eSo+KGtleWZyYW1lcy5nZXQoKSk7Ci0gICAgYXV0byBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7
Ci0gICAgaWYgKGxlbmd0aCAhPSAyKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVy
cm9yIH07CisgICAgLy8gMy4gTGV0IG1ldGhvZCBiZSB0aGUgcmVzdWx0IG9mIEdldE1ldGhvZChv
YmplY3QsIEBAaXRlcmF0b3IpLgorICAgIGF1dG8gbWV0aG9kID0ga2V5ZnJhbWVzSW5wdXQuZ2V0
KCktPmdldCgmc3RhdGUsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sKTsKIAotICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBjb25zdCBK
U1ZhbHVlIHZhbHVlID0gYXJyYXktPmdldEluZGV4KCZzdGF0ZSwgaSk7Ci0gICAgICAgIGlmIChz
Y29wZS5leGNlcHRpb24oKSB8fCAhdmFsdWUgfHwgIXZhbHVlLmlzT2JqZWN0KCkpCisgICAgLy8g
NC4gQ2hlY2sgdGhlIGNvbXBsZXRpb24gcmVjb3JkIG9mIG1ldGhvZC4KKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBUeXBlRXJyb3IgfSk7CisKKyAgICAvLyA1LiBQ
ZXJmb3JtIHRoZSBzdGVwcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCBtYXRjaGluZyBjb25k
aXRpb24gZnJvbSBiZWxvdywKKyAgICBpZiAoIW1ldGhvZC5pc1VuZGVmaW5lZCgpKQorICAgICAg
ICBwcm9jZXNzSXRlcmFibGVLZXlmcmFtZXMoc3RhdGUsIFdURk1vdmUoa2V5ZnJhbWVzSW5wdXQp
LCBXVEZNb3ZlKG1ldGhvZCksIHByb2Nlc3NlZEtleWZyYW1lcyk7CisgICAgZWxzZQorICAgICAg
ICBwcm9jZXNzUHJvcGVydHlJbmRleGVkS2V5ZnJhbWVzKHN0YXRlLCBXVEZNb3ZlKGtleWZyYW1l
c0lucHV0KSwgcHJvY2Vzc2VkS2V5ZnJhbWVzKTsKKworICAgIGlmICghcHJvY2Vzc2VkS2V5ZnJh
bWVzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIC8vIDYuIElmIHByb2Nlc3Nl
ZCBrZXlmcmFtZXMgaXMgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldCwgdGhyb3cgYSBUeXBl
RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIC8vIDcuIElmIHRoZXJlIGV4aXN0IGFu
eSBrZXlmcmFtZSBpbiBwcm9jZXNzZWQga2V5ZnJhbWVzIHdob3NlIGtleWZyYW1lIG9mZnNldCBp
cyBub24tbnVsbCBhbmQgbGVzcyB0aGFuCisgICAgLy8gICAgemVybyBvciBncmVhdGVyIHRoYW4g
b25lLCB0aHJvdyBhIFR5cGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZG91Ymxl
IGxhc3ROb25OdWxsT2Zmc2V0ID0gLTE7CisgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IHByb2Nl
c3NlZEtleWZyYW1lcykgeworICAgICAgICBpZiAoIWtleWZyYW1lLm9mZnNldCkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIG9mZnNldCA9IGtleWZyYW1lLm9mZnNldC52YWx1
ZSgpOworICAgICAgICBpZiAob2Zmc2V0IDw9IGxhc3ROb25OdWxsT2Zmc2V0IHx8IG9mZnNldCA8
IDAgfHwgb2Zmc2V0ID4gMSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJy
b3IgfTsKLSAgICAgICAgSlNPYmplY3QqIGtleWZyYW1lID0gdmFsdWUudG9PYmplY3QoJnN0YXRl
KTsKLSAgICAgICAgUHJvcGVydHlOYW1lQXJyYXkgb3duUHJvcGVydHlOYW1lcygmdm0sIFByb3Bl
cnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKLSAgICAg
ICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoa2V5ZnJhbWUsICZzdGF0ZSwgb3duUHJv
cGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlKCkpOwotICAgICAgICBzaXplX3QgbnVtYmVyT2ZQ
cm9wZXJ0aWVzID0gb3duUHJvcGVydHlOYW1lcy5zaXplKCk7CisgICAgICAgIGxhc3ROb25OdWxs
T2Zmc2V0ID0gb2Zmc2V0OworICAgIH0KKworICAgIC8vIFdlIHRha2UgYSBzbGlnaHQgZGV0b3Vy
IGZyb20gdGhlIHNwZWMgdGV4dCBhbmQgY29tcHV0ZSB0aGUgbWlzc2luZyBrZXlmcmFtZSBvZmZz
ZXRzIHJpZ2h0IGF3YXkKKyAgICAvLyBzaW5jZSB0aGV5IGNhbiBiZSBjb21wdXRlZCB1cC1mcm9u
dC4KKyAgICBjb21wdXRlTWlzc2luZ0tleWZyYW1lT2Zmc2V0cyhwcm9jZXNzZWRLZXlmcmFtZXMp
OworCisgICAgS2V5ZnJhbWVMaXN0IGtleWZyYW1lTGlzdCgia2V5ZnJhbWUtZWZmZWN0LSIgKyBj
cmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCkpOworICAgIFN0eWxlUmVzb2x2ZXImIHN0eWxlUmVz
b2x2ZXIgPSBtX3RhcmdldC0+c3R5bGVSZXNvbHZlcigpOworICAgIGF1dG8gcGFyc2VyQ29udGV4
dCA9IENTU1BhcnNlckNvbnRleHQoSFRNTFN0YW5kYXJkTW9kZSk7CisKKyAgICAvLyA4LiBGb3Ig
ZWFjaCBmcmFtZSBpbiBwcm9jZXNzZWQga2V5ZnJhbWVzLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CisgICAgZm9yIChhdXRvJiBrZXlmcmFtZSA6IHByb2Nlc3NlZEtleWZyYW1lcykgewor
ICAgICAgICAvLyAxLiBGb3IgZWFjaCBwcm9wZXJ0eS12YWx1ZSBwYWlyIGluIGZyYW1lLCBwYXJz
ZSB0aGUgcHJvcGVydHkgdmFsdWUgdXNpbmcgdGhlIHN5bnRheCBzcGVjaWZpZWQgZm9yIHRoYXQg
cHJvcGVydHkuCisgICAgICAgIC8vICAgIElmIHRoZSBwcm9wZXJ0eSB2YWx1ZSBpcyBpbnZhbGlk
IGFjY29yZGluZyB0byB0aGUgc3ludGF4IGZvciB0aGUgcHJvcGVydHksIGRpc2NhcmQgdGhlIHBy
b3BlcnR5LXZhbHVlIHBhaXIuCisgICAgICAgIC8vICAgIFVzZXIgYWdlbnRzIHRoYXQgcHJvdmlk
ZSBzdXBwb3J0IGZvciBkaWFnbm9zaW5nIGVycm9ycyBpbiBjb250ZW50IFNIT1VMRCBwcm9kdWNl
IGFuIGFwcHJvcHJpYXRlIHdhcm5pbmcKKyAgICAgICAgLy8gICAgaGlnaGxpZ2h0aW5nIHRoZSBp
bnZhbGlkIHByb3BlcnR5IHZhbHVlLgogCiAgICAgICAgIFN0cmluZ0J1aWxkZXIgY3NzVGV4dDsK
LSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJPZlByb3BlcnRpZXM7ICsraikg
ewotICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmQob3duUHJvcGVydHlOYW1lc1tqXS5zdHJpbmco
KSk7CisgICAgICAgIGZvciAoYXV0byBpdCA9IGtleWZyYW1lLmNzc1Byb3BlcnRpZXNBbmRWYWx1
ZXMuYmVnaW4oKSwgZW5kID0ga2V5ZnJhbWUuY3NzUHJvcGVydGllc0FuZFZhbHVlcy5lbmQoKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChnZXRQcm9wZXJ0
eU5hbWVTdHJpbmcoaXQtPmtleSkpOwogICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmRMaXRlcmFs
KCI6ICIpOwotICAgICAgICAgICAgY3NzVGV4dC5hcHBlbmQoa2V5ZnJhbWUtPmdldCgmc3RhdGUs
IG93blByb3BlcnR5TmFtZXNbal0pLnRvV1RGU3RyaW5nKCZzdGF0ZSkpOworICAgICAgICAgICAg
Y3NzVGV4dC5hcHBlbmQoaXQtPnZhbHVlKTsKICAgICAgICAgICAgIGNzc1RleHQuYXBwZW5kTGl0
ZXJhbCgiOyAiKTsKICAgICAgICAgfQogCisgICAgICAgIEtleWZyYW1lVmFsdWUga2V5ZnJhbWVW
YWx1ZShrZXlmcmFtZS5vZmZzZXQudmFsdWUoKSwgbnVsbHB0cik7CiAgICAgICAgIGF1dG8gcmVu
ZGVyU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAgICAgIGF1dG8gc3R5bGVQ
cm9wZXJ0aWVzID0gTXV0YWJsZVN0eWxlUHJvcGVydGllczo6Y3JlYXRlKCk7CiAgICAgICAgIHN0
eWxlUHJvcGVydGllcy0+cGFyc2VEZWNsYXJhdGlvbihjc3NUZXh0LnRvU3RyaW5nKCksIHBhcnNl
ckNvbnRleHQpOwogICAgICAgICB1bnNpZ25lZCBudW1iZXJPZkNTU1Byb3BlcnRpZXMgPSBzdHls
ZVByb3BlcnRpZXMtPnByb3BlcnR5Q291bnQoKTsKIAotICAgICAgICBLZXlmcmFtZVZhbHVlIGtl
eWZyYW1lVmFsdWUoMCwgbnVsbHB0cik7Ci0gICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsg
PCBudW1iZXJPZkNTU1Byb3BlcnRpZXM7ICsraykgewotICAgICAgICAgICAgYXV0byBjc3NQcm9w
ZXJ0eUlkID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUF0KGspLmlkKCk7CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNTU1Byb3BlcnRpZXM7ICsraSkgeworICAg
ICAgICAgICAgYXV0byBjc3NQcm9wZXJ0eUlkID0gc3R5bGVQcm9wZXJ0aWVzLT5wcm9wZXJ0eUF0
KGkpLmlkKCk7CiAgICAgICAgICAgICBrZXlmcmFtZVZhbHVlLmFkZFByb3BlcnR5KGNzc1Byb3Bl
cnR5SWQpOwotICAgICAgICAgICAgbmV3S2V5ZnJhbWVzLmFkZFByb3BlcnR5KGNzc1Byb3BlcnR5
SWQpOwotICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9TdHlsZShjc3NQ
cm9wZXJ0eUlkLCBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaykudmFsdWUoKSwgV1RGTW92
ZShyZW5kZXJTdHlsZSkpOworICAgICAgICAgICAga2V5ZnJhbWVMaXN0LmFkZFByb3BlcnR5KGNz
c1Byb3BlcnR5SWQpOworICAgICAgICAgICAgc3R5bGVSZXNvbHZlci5hcHBseVByb3BlcnR5VG9T
dHlsZShjc3NQcm9wZXJ0eUlkLCBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaSkudmFsdWUo
KSwgV1RGTW92ZShyZW5kZXJTdHlsZSkpOwogICAgICAgICAgICAgcmVuZGVyU3R5bGUgPSBzdHls
ZVJlc29sdmVyLnN0YXRlKCkudGFrZVN0eWxlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBrZXlm
cmFtZVZhbHVlLnNldEtleShpKTsKICAgICAgICAga2V5ZnJhbWVWYWx1ZS5zZXRTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmVQdHIoKnJlbmRlclN0eWxlKSk7Ci0gICAgICAgIG5ld0tleWZyYW1lcy5p
bnNlcnQoV1RGTW92ZShrZXlmcmFtZVZhbHVlKSk7CisgICAgICAgIGtleWZyYW1lTGlzdC5pbnNl
cnQoV1RGTW92ZShrZXlmcmFtZVZhbHVlKSk7CisKKyAgICAgICAgLy8gMi4gTGV0IHRoZSB0aW1p
bmcgZnVuY3Rpb24gb2YgZnJhbWUgYmUgdGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSDigJxlYXNp
bmfigJ0gcHJvcGVydHkgb24gZnJhbWUgdXNpbmcgdGhlIENTUyBzeW50YXgKKyAgICAgICAgLy8g
ICAgZGVmaW5lZCBmb3IgdGhlIGVhc2luZyBwcm9wZXJ0eSBvZiB0aGUgQW5pbWF0aW9uRWZmZWN0
VGltaW5nUmVhZE9ubHkgaW50ZXJmYWNlLgorICAgICAgICAvLyAgICBJZiBwYXJzaW5nIHRoZSDi
gJxlYXNpbmfigJ0gcHJvcGVydHkgZmFpbHMsIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0
aGlzIHByb2NlZHVyZS4KKyAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCB3aGVuIHdlIHN1cHBv
cnQgZWFzaW5nLgogICAgIH0KIAotICAgIG1fa2V5ZnJhbWVzID0gV1RGTW92ZShuZXdLZXlmcmFt
ZXMpOworICAgIC8vIDkuIFBhcnNlIGVhY2ggb2YgdGhlIHZhbHVlcyBpbiB1bnVzZWQgZWFzaW5n
cyB1c2luZyB0aGUgQ1NTIHN5bnRheCBkZWZpbmVkIGZvciBlYXNpbmcgcHJvcGVydHkgb2YgdGhl
CisgICAgLy8gICAgQW5pbWF0aW9uRWZmZWN0VGltaW5nUmVhZE9ubHkgaW50ZXJmYWNlLCBhbmQg
aWYgYW55IG9mIHRoZSB2YWx1ZXMgZmFpbCB0byBwYXJzZSwgdGhyb3cgYSBUeXBlRXJyb3IKKyAg
ICAvLyAgICBhbmQgYWJvcnQgdGhpcyBwcm9jZWR1cmUuCisgICAgLy8gRklYTUU6IGltcGxlbWVu
dCB3aGVuIHdlIHN1cHBvcnQgZWFzaW5nLgorCisgICAgbV9rZXlmcmFtZXMgPSBXVEZNb3ZlKGtl
eWZyYW1lTGlzdCk7CiAKICAgICBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAKQEAg
LTE3MCwxMSArNTI0LDggQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlBdExvY2FsVGltZShT
ZWNvbmRzIGxvY2FsVGltZSwgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWwKICAgICB9CiAgICAgbV9z
dGFydGVkID0gdHJ1ZTsKIAotICAgIGlmICghbmVlZHNUb1N0YXJ0QWNjZWxlcmF0ZWQgJiYgIW1f
c3RhcnRlZEFjY2VsZXJhdGVkKSB7Ci0gICAgICAgIGZsb2F0IHByb2dyZXNzID0gbG9jYWxUaW1l
IC8gdGltaW5nKCktPmR1cmF0aW9uKCk7Ci0gICAgICAgIGZvciAoYXV0byBjc3NQcm9wZXJ0eUlk
IDogbV9rZXlmcmFtZXMucHJvcGVydGllcygpKQotICAgICAgICAgICAgQ1NTUHJvcGVydHlBbmlt
YXRpb246OmJsZW5kUHJvcGVydGllcyh0aGlzLCBjc3NQcm9wZXJ0eUlkLCAmdGFyZ2V0U3R5bGUs
IG1fa2V5ZnJhbWVzWzBdLnN0eWxlKCksIG1fa2V5ZnJhbWVzWzFdLnN0eWxlKCksIHByb2dyZXNz
KTsKLSAgICB9CisgICAgaWYgKCFuZWVkc1RvU3RhcnRBY2NlbGVyYXRlZCAmJiAhbV9zdGFydGVk
QWNjZWxlcmF0ZWQpCisgICAgICAgIHNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUodGFyZ2V0
U3R5bGUsIGxvY2FsVGltZSAvIHRpbWluZygpLT5kdXJhdGlvbigpKTsKIAogICAgIC8vIGh0dHBz
Oi8vdzNjLmdpdGh1Yi5pby93ZWItYW5pbWF0aW9ucy8jc2lkZS1lZmZlY3RzLXNlY3Rpb24KICAg
ICAvLyBGb3IgZXZlcnkgcHJvcGVydHkgdGFyZ2V0ZWQgYnkgYXQgbGVhc3Qgb25lIGFuaW1hdGlv
biBlZmZlY3QgdGhhdCBpcyBjdXJyZW50IG9yIGluIGVmZmVjdCwgdGhlIHVzZXIgYWdlbnQKQEAg
LTIxMCw5ICs1NjEsNTMgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6Z2V0QW5pbWF0ZWRTdHlsZShz
dGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+JiBhbmltYXRlZFN0eWwKICAgICBpZiAoIWFuaW1h
dGVkU3R5bGUpCiAgICAgICAgIGFuaW1hdGVkU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
cmVuZGVyZXIoKS0+c3R5bGUoKSk7CiAKKyAgICBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxl
KCphbmltYXRlZFN0eWxlLmdldCgpLCBsb2NhbFRpbWUudmFsdWUoKSAvIHRpbWluZygpLT5kdXJh
dGlvbigpKTsKK30KKwordm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0ZWRQcm9wZXJ0aWVz
SW5TdHlsZShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIGRvdWJsZSBwcm9ncmVzcykKK3sKKyAg
ICBzaXplX3QgbnVtYmVyT2ZLZXlmcmFtZXMgPSBtX2tleWZyYW1lcy5zaXplKCk7CiAgICAgZm9y
IChhdXRvIGNzc1Byb3BlcnR5SWQgOiBtX2tleWZyYW1lcy5wcm9wZXJ0aWVzKCkpIHsKLSAgICAg
ICAgZmxvYXQgcHJvZ3Jlc3MgPSBsb2NhbFRpbWUudmFsdWUoKSAvIHRpbWluZygpLT5kdXJhdGlv
bigpOwotICAgICAgICBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMs
IGNzc1Byb3BlcnR5SWQsIGFuaW1hdGVkU3R5bGUuZ2V0KCksIG1fa2V5ZnJhbWVzWzBdLnN0eWxl
KCksIG1fa2V5ZnJhbWVzWzFdLnN0eWxlKCksIHByb2dyZXNzKTsKKyAgICAgICAgaW50IHN0YXJ0
S2V5ZnJhbWVJbmRleCA9IC0xOworICAgICAgICBpbnQgZW5kS2V5ZnJhbWVJbmRleCA9IC0xOwor
CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZLZXlmcmFtZXM7ICsraSkg
eworICAgICAgICAgICAgYXV0byYga2V5ZnJhbWUgPSBtX2tleWZyYW1lc1tpXTsKKyAgICAgICAg
ICAgIGlmICgha2V5ZnJhbWUuY29udGFpbnNQcm9wZXJ0eShjc3NQcm9wZXJ0eUlkKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKGtleWZyYW1lLmtleSgpID4g
cHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgICAgICBlbmRLZXlmcmFtZUluZGV4ID0gaTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhcnRLZXlm
cmFtZUluZGV4ID0gaTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHdlIGRpZG4ndCBmaW5k
IGEgc3RhcnQga2V5ZnJhbWUsIHRoaXMgbWVhbnMgdGhlcmUgaXMgYW4gaW1wbGljaXQgc3RhcnQg
a2V5ZnJhbWUuCisgICAgICAgIGRvdWJsZSBzdGFydE9mZnNldDsKKyAgICAgICAgY29uc3QgUmVu
ZGVyU3R5bGUqIHN0YXJ0U3R5bGU7CisgICAgICAgIGlmIChzdGFydEtleWZyYW1lSW5kZXggPT0g
LTEpIHsKKyAgICAgICAgICAgIHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIHN0YXJ0U3R5
bGUgPSAmdGFyZ2V0U3R5bGU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGFydE9m
ZnNldCA9IG1fa2V5ZnJhbWVzW3N0YXJ0S2V5ZnJhbWVJbmRleF0ua2V5KCk7CisgICAgICAgICAg
ICBzdGFydFN0eWxlID0gbV9rZXlmcmFtZXNbc3RhcnRLZXlmcmFtZUluZGV4XS5zdHlsZSgpOwor
ICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0IGZpbmQgYW4gZW5kIGtleWZyYW1l
LCB0aGlzIG1lYW5zIHRoZXJlIGlzIGFuIGltcGxpY2l0IGVuZCBrZXlmcmFtZS4KKyAgICAgICAg
ZG91YmxlIGVuZE9mZnNldDsKKyAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGVuZFN0eWxlOwor
ICAgICAgICBpZiAoZW5kS2V5ZnJhbWVJbmRleCA9PSAtMSkgeworICAgICAgICAgICAgZW5kT2Zm
c2V0ID0gMTsKKyAgICAgICAgICAgIGVuZFN0eWxlID0gJnRhcmdldFN0eWxlOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgZW5kT2Zmc2V0ID0gbV9rZXlmcmFtZXNbZW5kS2V5ZnJhbWVJ
bmRleF0ua2V5KCk7CisgICAgICAgICAgICBlbmRTdHlsZSA9IG1fa2V5ZnJhbWVzW2VuZEtleWZy
YW1lSW5kZXhdLnN0eWxlKCk7CisgICAgICAgIH0KKworICAgICAgICBhdXRvIHByb2dyZXNzSW5S
YW5nZSA9IChwcm9ncmVzcyAtIHN0YXJ0T2Zmc2V0KSAvIChlbmRPZmZzZXQgLSBzdGFydE9mZnNl
dCk7CisgICAgICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXModGhpcywg
Y3NzUHJvcGVydHlJZCwgJnRhcmdldFN0eWxlLCBzdGFydFN0eWxlLCBlbmRTdHlsZSwgcHJvZ3Jl
c3NJblJhbmdlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmgKaW5kZXggN2I0OWMxOTYyZTIzMjllMjc4NmQ0OWM2YTk2MjQyMDY4ZGVkODBlMi4u
NGM2NjhhYjZmMTRjYTg0ZGRiYzJkNjYyMDhmYTQwODQ1OTJmZDBlYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmgKQEAgLTQxLDYgKzQxLDMxIEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gY3JlYXRlKEpTQzo6
RXhlY1N0YXRlJiwgRWxlbWVudCosIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYpOwogICAg
IH5LZXlmcmFtZUVmZmVjdCgpIHsgfQogCisgICAgZW51bSBjbGFzcyBDb21wb3NpdGVPcGVyYXRp
b24geyBSZXBsYWNlLCBBZGQsIEFjY3VtdWxhdGUgfTsKKworICAgIHN0cnVjdCBCYXNlUHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUgeworICAgICAgICBWYXJpYW50PG51bGxwdHJfdCwgZG91YmxlLCBW
ZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+Pj4gb2Zmc2V0OworICAgICAgICBWYXJpYW50PFN0
cmluZywgVmVjdG9yPFN0cmluZz4+IGVhc2luZzsKKyAgICAgICAgVmFyaWFudDxDb21wb3NpdGVP
cGVyYXRpb24sIFZlY3RvcjxDb21wb3NpdGVPcGVyYXRpb24+PiBjb21wb3NpdGU7CisgICAgfTsK
KworICAgIHN0cnVjdCBQcm9wZXJ0eUFuZFZhbHVlcyB7CisgICAgICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHk7CisgICAgICAgIFZlY3RvcjxTdHJpbmc+IHZhbHVlczsKKyAgICB9OworCisgICAg
c3RydWN0IEtleWZyYW1lTGlrZU9iamVjdCB7CisgICAgICAgIEJhc2VQcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZSBiYXNlUHJvcGVydGllczsKKyAgICAgICAgVmVjdG9yPFByb3BlcnR5QW5kVmFsdWVz
PiBwcm9wZXJ0aWVzQW5kVmFsdWVzOworICAgIH07CisKKyAgICBzdHJ1Y3QgUHJvY2Vzc2VkS2V5
ZnJhbWUgeworICAgICAgICBTdHJpbmcgZWFzaW5nOworICAgICAgICBzdGQ6Om9wdGlvbmFsPGRv
dWJsZT4gb2Zmc2V0OworICAgICAgICBzdGQ6Om9wdGlvbmFsPENvbXBvc2l0ZU9wZXJhdGlvbj4g
Y29tcG9zaXRlOworICAgICAgICBIYXNoTWFwPENTU1Byb3BlcnR5SUQsIFN0cmluZz4gY3NzUHJv
cGVydGllc0FuZFZhbHVlczsKKyAgICB9OworCiAgICAgRWxlbWVudCogdGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRLZXlm
cmFtZXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKICAg
ICB2b2lkIGdldEFuaW1hdGVkU3R5bGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiYgYW5p
bWF0ZWRTdHlsZSk7CkBAIC02MCw2ICs4NSw4IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgS2V5
ZnJhbWVFZmZlY3QoRWxlbWVudCopOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHByb2Nlc3NLZXlm
cmFtZXMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKKwor
ICAgIHZvaWQgc2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZShSZW5kZXJTdHlsZSYsIGRvdWJs
ZSk7CiAgICAgdm9pZCBjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCk7CiAgICAgYm9vbCBz
aG91bGRSdW5BY2NlbGVyYXRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmlkbAppbmRleCA1MTlhMGI2ZjMwNTE1YmRkYjYwYWYzOGY5ZTE5M2ExM2FlZDI3
MjdiLi5iOGU0MTVlMjBhOTQwNjEwZjAwOWM2YTVlMGRjMjkwNDFlNzg4OWI2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwKQEAgLTMyLDMgKzMyLDExIEBA
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQ/IHRhcmdldDsKICAgICBbTWF5VGhyb3dF
eGNlcHRpb24sIENhbGxXaXRoPVNjcmlwdFN0YXRlXSB2b2lkIHNldEtleWZyYW1lcyhvYmplY3Q/
IGtleWZyYW1lcyk7CiB9OworCitlbnVtIENvbXBvc2l0ZU9wZXJhdGlvbiB7ICJyZXBsYWNlIiwg
ImFkZCIsICJhY2N1bXVsYXRlIiB9OworCitkaWN0aW9uYXJ5IEJhc2VQcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZSB7CisgICAgKGRvdWJsZT8gb3Igc2VxdWVuY2U8ZG91YmxlPz4pIG9mZnNldCA9IFtd
OworICAgIChET01TdHJpbmcgb3Igc2VxdWVuY2U8RE9NU3RyaW5nPikgZWFzaW5nID0gW107Cisg
ICAgKENvbXBvc2l0ZU9wZXJhdGlvbiBvciBzZXF1ZW5jZTxDb21wb3NpdGVPcGVyYXRpb24+KSBj
b21wb3NpdGUgPSBbXTsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggMmY2ODg2MjJkNTFlMjk0OTc2MDUxYmIxNWQ0MGNhOWQ4MDAzOTY1My4uYjUx
MzcwNWQwOWMwOTIwYzE0YjNjMjc5OGFjMDFkYmZkNmRiYzkyMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtMjUwLDYgKzI1MCwxMSBAQCBzdGF0aWMg
Q1NTUHJvcGVydHlJbmZvIHBhcnNlSmF2YVNjcmlwdENTU1Byb3BlcnR5TmFtZShjb25zdCBBdG9t
aWNTdHJpbmcmIHByb3BlcgogCiB9CiAKK0NTU1Byb3BlcnR5SUQgQ1NTU3R5bGVEZWNsYXJhdGlv
bjo6Z2V0Q1NTUHJvcGVydHlJREZyb21KYXZhU2NyaXB0UHJvcGVydHlOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBwYXJzZUphdmFTY3JpcHRDU1NQ
cm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKS5wcm9wZXJ0eUlEOworfQorCiBzdGQ6Om9wdGlvbmFs
PFZhcmlhbnQ8U3RyaW5nLCBkb3VibGU+PiBDU1NTdHlsZURlY2xhcmF0aW9uOjpuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgYXV0byBwcm9wZXJ0eUlu
Zm8gPSBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5oCmluZGV4IGRiYjk5MWE2ZmE3MDQ2YmE2
NzZlMmNlNDYyNzk3OGQ3ZDdkOWJkZWMuLmIxOGM5Y2UzMjc0OTlhY2QwNTJhZTI4ZjA4MzU3Y2Rm
NzQwMjlmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaApAQCAt
NzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TmFtZWRJdGVt
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgU3RyaW5nIHZhbHVlLCBib29sJiBwcm9wZXJ0eVN1
cHBvcnRlZCk7CiAgICAgVmVjdG9yPEF0b21pY1N0cmluZz4gc3VwcG9ydGVkUHJvcGVydHlOYW1l
cygpIGNvbnN0OwogCisgICAgc3RhdGljIENTU1Byb3BlcnR5SUQgZ2V0Q1NTUHJvcGVydHlJREZy
b21KYXZhU2NyaXB0UHJvcGVydHlOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOwogcHJvdGVjdGVk
OgogICAgIENTU1N0eWxlRGVjbGFyYXRpb24oKSA9IGRlZmF1bHQ7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCmlu
ZGV4IDllNWRjMmM4YjliMDE1MGFjMzhiYjIzNDJjYzRmMTZjMmFjMGE0ZTkuLmVhMTIxODk1MTU4
MzBlOTM4ODU2NTg0ZDFiOWI3NTM5YTE5ZjFlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKQEAgLTE3MTYsNiAr
MTcxNiwxMSBAQCBib29sIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXMoY29u
c3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorYm9vbCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6aXNQcm9wZXJ0eUFuaW1hdGFibGUoQ1NTUHJv
cGVydHlJRCBwcm9wKQoreworICAgIHJldHVybiBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJN
YXA6OnNpbmdsZXRvbigpLndyYXBwZXJGb3JQcm9wZXJ0eShwcm9wKTsKK30KKwogYm9vbCBDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6YW5pbWF0aW9uT2ZQcm9wZXJ0eUlzQWNjZWxlcmF0ZWQoQ1NTUHJv
cGVydHlJRCBwcm9wKQogewogICAgIEFuaW1hdGlvblByb3BlcnR5V3JhcHBlckJhc2UqIHdyYXBw
ZXIgPSBDU1NQcm9wZXJ0eUFuaW1hdGlvbldyYXBwZXJNYXA6OnNpbmdsZXRvbigpLndyYXBwZXJG
b3JQcm9wZXJ0eShwcm9wKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0
aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oCmluZGV4IGZkOTRkZDE2MmY3NjkwNWNmYjQ4ZjI3NDBh
MjljYzQyMDYxMTBhMzEuLmU5ZmM3ZmZhNzQ0MjQ4YjVhZmMyNjAxNTg1MzA0OTE5NTY1Y2Y3OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5p
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uaApAQCAtMzgsNiArMzgsNyBAQCBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3Mg
Q1NTUHJvcGVydHlBbmltYXRpb24gewogcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzUHJvcGVy
dHlBbmltYXRhYmxlKENTU1Byb3BlcnR5SUQpOwogICAgIHN0YXRpYyBib29sIGFuaW1hdGlvbk9m
UHJvcGVydHlJc0FjY2VsZXJhdGVkKENTU1Byb3BlcnR5SUQpOwogICAgIHN0YXRpYyBib29sIHBy
b3BlcnRpZXNFcXVhbChDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3Qg
UmVuZGVyU3R5bGUqIGIpOwogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGdldFByb3BlcnR5QXRJ
bmRleChpbnQsIGJvb2wmIGlzU2hvcnRoYW5kKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0NTVjMDYxNDViNTE3MGNkZjhi
ZjRkNmU0YTVkM2M5MTNjOWMxZDlkLi45M2I5YjY5NTEwMmQ5NTk5Yjc4ZTZlZDU1YjM2MTU1Y2Fk
ZGVjMjJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMTItMjEgIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIENvbXBsZXRl
IHN1cHBvcnQgZm9yIGtleWZyYW1lIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTcwOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZSBzb21lIFdQVCBleHBlY3RhdGlvbnMgd2l0
aCBwcm9ncmVzc2lvbnMgZHVlIHRvIHN1cHBvcnRpbmcgYWxsIGtleWZyYW1lcyBhcmd1bWVudHMu
CisKKyAgICAgICAgKiBodHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1l
RWZmZWN0L2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWIt
YW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFt
ZXMtYXJndW1lbnQtMDAyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3dwdC93ZWItYW5p
bWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3NldEtleWZyYW1lcy1leHBlY3RlZC50
eHQ6CisKIDIwMTctMTItMjAgIE1zMmdlciAgPE1zMmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAg
IE1ha2UgZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcXVvdGVzLWxhbmcuaHRtbCBwYXNzIG9u
IEdUSwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50
ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L2Nv
bnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCA1N2I2ZmVlNThjNzUzZDVjMTNiNmE4YThiZTZm
MmY1YmRhMzMzMTg5Li40YWNhOGE5MTdlNDk0Y2MyMjI5YTFiYmIwM2YwM2I0ZDE1YTg4OWFlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2Vz
L0tleWZyYW1lRWZmZWN0L2NvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L2NvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMTk3LDcgKzE5Nyw1IEBAIEZBSUwgSW52YWxpZCBLZXlm
cmFtZUVmZmVjdFJlYWRPbmx5IG9wdGlvbiBieSBhIG11bHRpLXZhbHVlIGVhc2luZyBhc3NlcnRf
dGhyb3dzCiAgICAgfSIgdGhyZXcgb2JqZWN0ICJSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2
YXJpYWJsZTogS2V5ZnJhbWVFZmZlY3RSZWFkT25seSIgKCJSZWZlcmVuY2VFcnJvciIpIGV4cGVj
dGVkIG9iamVjdCAiW29iamVjdCBPYmplY3RdIiAoIlR5cGVFcnJvciIpCiBGQUlMIGEgS2V5ZnJh
bWVFZmZlY3RSZWFkT25seSBjb25zdHJ1Y3RlZCB3aXRoIG51bGwgdGFyZ2V0IENhbid0IGZpbmQg
dmFyaWFibGU6IEtleWZyYW1lRWZmZWN0UmVhZE9ubHkKIFBBU1MgS2V5ZnJhbWVFZmZlY3QgY29u
c3RydWN0b3IgY3JlYXRlcyBhbiBBbmltYXRpb25FZmZlY3RUaW1pbmcgdGltaW5nIG9iamVjdCAK
LUZBSUwgS2V5ZnJhbWVFZmZlY3QgY29uc3RydWN0b3IgcHJvcGFnYXRlcyBleGNlcHRpb25zIGdl
bmVyYXRlZCBieSBhY2Nlc3NpbmcgdGhlIG9wdGlvbnMgb2JqZWN0IGFzc2VydF90aHJvd3M6IGZ1
bmN0aW9uICJmdW5jdGlvbiAoKSB7Ci0gICAgbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdldCwgeyBn
ZXQgbGVmdCgpIHsgdGhyb3cgdGVzdF9lcnJvciB9fSkKLSAgfSIgdGhyZXcgb2JqZWN0ICJUeXBl
RXJyb3I6IFR5cGUgZXJyb3IiICgiVHlwZUVycm9yIikgZXhwZWN0ZWQgb2JqZWN0ICJbb2JqZWN0
IE9iamVjdF0iICgidGVzdCIpCitQQVNTIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHByb3Bh
Z2F0ZXMgZXhjZXB0aW9ucyBnZW5lcmF0ZWQgYnkgYWNjZXNzaW5nIHRoZSBvcHRpb25zIG9iamVj
dCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50
ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9wcm9jZXNzaW5nLWEta2V5ZnJhbWVzLWFyZ3VtZW50LTAw
Mi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRl
cmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQtMDAy
LWV4cGVjdGVkLnR4dAppbmRleCAzMGIzOTMzYjg5MGVlNjk3NjM1NWUzYzdlMGIwYjMzNTNhYWVh
ZDBiLi5jNWNiODAxN2MzZWM2NmEyMGIyYWY2ODM1ZmY0MmM1OTFkMjExNzU5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1l
RWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQtMDAyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZy
YW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMtYXJndW1lbnQtMDAyLWV4cGVjdGVkLnR4
dApAQCAtMSw5ICsxLDEzIEBACiAKLUZBSUwgZWFzaW5nIHZhbHVlcyBhcmUgcGFyc2VkIGNvcnJl
Y3RseSB3aGVuIHNldCBvbiBhIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgVHlwZSBlcnJvcgor
RkFJTCBlYXNpbmcgdmFsdWVzIGFyZSBwYXJzZWQgY29ycmVjdGx5IHdoZW4gc2V0IG9uIGEgcHJv
cGVydHktaW5kZXhlZCBrZXlmcmFtZSBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBp
cyB1bmRlZmluZWQpCiBGQUlMIGVhc2luZyB2YWx1ZXMgYXJlIHBhcnNlZCBjb3JyZWN0bHkgd2hl
biB1c2luZyBhIGtleWZyYW1lIHNlcXVlbmNlIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEg
ZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFt
ZXMnIGlzIHVuZGVmaW5lZCkKLVBBU1MgSW52YWxpZCBlYXNpbmcgdmFsdWVzIGFyZSBjb3JyZWN0
bHkgcmVqZWN0ZWQgd2hlbiBzZXQgb24gYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lIAotUEFT
UyBJbnZhbGlkIGVhc2luZyB2YWx1ZXMgYXJlIGNvcnJlY3RseSByZWplY3RlZCB3aGVuIHVzaW5n
IGEga2V5ZnJhbWUgc2VxdWVuY2UgCi1GQUlMIEVycm9ycyBmcm9tIGludmFsaWQgZWFzaW5ncyBv
biBhIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgYXJlIHRocm93biBhZnRlciByZWFkaW5nIGFs
bCBwcm9wZXJ0aWVzIGFzc2VydF9lcXVhbHM6IEFsbCBwcm9wZXJ0aWVzIHdlcmUgcmVhZCBiZWZv
cmUgdGhyb3dpbmcgdGhlIGVhc2luZyBlcnJvciBleHBlY3RlZCAyIGJ1dCBnb3QgMAorRkFJTCBJ
bnZhbGlkIGVhc2luZyB2YWx1ZXMgYXJlIGNvcnJlY3RseSByZWplY3RlZCB3aGVuIHNldCBvbiBh
IHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgYXNzZXJ0X3Rocm93czogVHlwZUVycm9yIGlzIHRo
cm93biBmb3IgZWFzaW5nICcnIGZ1bmN0aW9uICIoKSA9PiB7CisgICAgICBuZXcgS2V5ZnJhbWVF
ZmZlY3QodGFyZ2V0LCB7IGVhc2luZzogaW52YWxpZEVhc2luZyB9KTsKKyAgICB9IiBkaWQgbm90
IHRocm93CitGQUlMIEludmFsaWQgZWFzaW5nIHZhbHVlcyBhcmUgY29ycmVjdGx5IHJlamVjdGVk
IHdoZW4gdXNpbmcgYSBrZXlmcmFtZSBzZXF1ZW5jZSBhc3NlcnRfdGhyb3dzOiBUeXBlRXJyb3Ig
aXMgdGhyb3duIGZvciBlYXNpbmcgJycgZnVuY3Rpb24gIigpID0+IHsKKyAgICAgIG5ldyBLZXlm
cmFtZUVmZmVjdCh0YXJnZXQsIFt7IGVhc2luZzogaW52YWxpZEVhc2luZyB9XSk7CisgICAgfSIg
ZGlkIG5vdCB0aHJvdworRkFJTCBFcnJvcnMgZnJvbSBpbnZhbGlkIGVhc2luZ3Mgb24gYSBwcm9w
ZXJ0eS1pbmRleGVkIGtleWZyYW1lIGFyZSB0aHJvd24gYWZ0ZXIgcmVhZGluZyBhbGwgcHJvcGVy
dGllcyBhc3NlcnRfZXF1YWxzOiBBbGwgcHJvcGVydGllcyB3ZXJlIHJlYWQgYmVmb3JlIHRocm93
aW5nIHRoZSBlYXNpbmcgZXJyb3IgZXhwZWN0ZWQgMiBidXQgZ290IDEKIEZBSUwgRXJyb3JzIGZy
b20gaW52YWxpZCBlYXNpbmdzIG9uIGEga2V5ZnJhbWUgc2VxdWVuY2UgYXJlIHRocm93biBhZnRl
ciByZWFkaW5nIGFsbCBwcm9wZXJ0aWVzIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICIoKSA9PiB7
CiAgICAgbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdldCwgWyBrZjEsIGtmMiBdKTsKICAgfSIgZGlk
IG5vdCB0aHJvdwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlv
bnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9zZXRLZXlmcmFtZXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVm
ZmVjdC9zZXRLZXlmcmFtZXMtZXhwZWN0ZWQudHh0CmluZGV4IDJmMGY3ZjMyNTA5MDcwYjYxMWVh
OWNlMDhkYWNkYzcwZTI5MDcyYWMuLjFkMDgxYWM3ZGQ4ZGFjZDg4MDc1OGMwNjYxYjE5YzZkN2Q4
Mzg0ZGEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3Qvc2V0S2V5ZnJhbWVzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5pbWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZm
ZWN0L3NldEtleWZyYW1lcy1leHBlY3RlZC50eHQKQEAgLTEsNDkgKzEsNTMgQEAKIAotRkFJTCBL
ZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYW4gZW1wdHkga2V5ZnJhbWUgVHlwZSBlcnJv
cgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdv
IHZhbHVlIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gVHlwZSBlcnJv
cgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgc2hvcnRoYW5kIHBy
b3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9u
IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHBy
b3BlcnR5IChvbmUgc2hvcnRoYW5kIGFuZCBvbmUgb2YgaXRzIGxvbmdoYW5kIGNvbXBvbmVudHMp
IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIFR5cGUg
ZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5
IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIFR5cGUg
ZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5
IHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gd2l0aCBkaWZmZXJlbnQg
bnVtYmVycyBvZiB2YWx1ZXMgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxh
Y2VkIHdpdGggYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdpdGgg
YW4gaW52YWxpZCB2YWx1ZSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFj
ZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFt
ZXMgc3BlY2lmaWNhdGlvbiB0aGF0IG5lZWRzIHRvIHN0cmluZ2lmeSBpdHMgdmFsdWVzIFR5cGUg
ZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgcHJvcGVydHktaW5k
ZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB3aXRoIGEgQ1NTIHZhcmlhYmxlIHJlZmVyZW5j
ZSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHByb3Bl
cnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gd2l0aCBhIENTUyB2YXJpYWJsZSBy
ZWZlcmVuY2UgaW4gYSBzaG9ydGhhbmQgcHJvcGVydHkgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFt
ZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgb25lIHZhbHVlIHByb3BlcnR5
LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFt
ZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgb25lIG5vbi1hcnJheSB2YWx1
ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIFR5cGUgZXJyb3IKLUZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byB2YWx1
ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdoZXJlIHRoZSBmaXJz
dCB2YWx1ZSBpcyBpbnZhbGlkIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZy
YW1lcyBzcGVjaWZpY2F0aW9uIHdoZXJlIHRoZSBzZWNvbmQgdmFsdWUgaXMgaW52YWxpZCBUeXBl
IGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0
eSBvbmUga2V5ZnJhbWUgc2VxdWVuY2UgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJl
IHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdvIGtleWZyYW1lIHNlcXVlbmNlIFR5cGUg
ZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5
IHR3byBrZXlmcmFtZSBzZXF1ZW5jZSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUg
cmVwbGFjZWQgd2l0aCBhIG9uZSBzaG9ydGhhbmQgcHJvcGVydHkgdHdvIGtleWZyYW1lIHNlcXVl
bmNlIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdv
IHByb3BlcnR5IChhIHNob3J0aGFuZCBhbmQgb25lIG9mIGl0cyBjb21wb25lbnQgbG9uZ2hhbmRz
KSB0d28ga2V5ZnJhbWUgc2VxdWVuY2UgVHlwZSBlcnJvcgorRkFJTCBLZXlmcmFtZXMgY2FuIGJl
IHJlcGxhY2VkIHdpdGggYW4gZW1wdHkga2V5ZnJhbWUgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtl
eWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdp
dGggYSBvbmUgcHJvcGVydHkgdHdvIHZhbHVlIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNw
ZWNpZmljYXRpb24gZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdl
ZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVk
KQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgc2hvcnRoYW5kIHBy
b3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9u
IGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtl
eWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5
ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5IChvbmUgc2hvcnRoYW5k
IGFuZCBvbmUgb2YgaXRzIGxvbmdoYW5kIGNvbXBvbmVudHMpIHR3byB2YWx1ZSBwcm9wZXJ0eS1p
bmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlm
cmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRo
IGEgdHdvIHByb3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVj
aWZpY2F0aW9uIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZm
ZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5IHByb3Bl
cnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gd2l0aCBkaWZmZXJlbnQgbnVtYmVy
cyBvZiB2YWx1ZXMgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdl
ZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVk
KQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBwcm9wZXJ0eS1pbmRleGVk
IGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdpdGggYW4gaW52YWxpZCB2YWx1ZSBlZmZlY3QuZ2V0
S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScs
ICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhl
ZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB0aGF0IG5lZWRzIHRvIHN0cmluZ2lmeSBpdHMgdmFs
dWVzIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0Lmdl
dEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwg
S2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFt
ZXMgc3BlY2lmaWNhdGlvbiB3aXRoIGEgQ1NTIHZhcmlhYmxlIHJlZmVyZW5jZSBlZmZlY3QuZ2V0
S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScs
ICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRp
b24gd2l0aCBhIENTUyB2YXJpYWJsZSByZWZlcmVuY2UgaW4gYSBzaG9ydGhhbmQgcHJvcGVydHkg
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgb25lIHZhbHVlIHByb3Bl
cnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gZWZmZWN0LmdldEtleWZyYW1lcyBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0Lmdl
dEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2Vk
IHdpdGggYSBvbmUgcHJvcGVydHkgb25lIG5vbi1hcnJheSB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVk
IGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVu
Y3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMn
IGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25l
IHByb3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0
aW9uIHdoZXJlIHRoZSBmaXJzdCB2YWx1ZSBpcyBpbnZhbGlkIGVmZmVjdC5nZXRLZXlmcmFtZXMg
aXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5n
ZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNl
ZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1l
cyBzcGVjaWZpY2F0aW9uIHdoZXJlIHRoZSBzZWNvbmQgdmFsdWUgaXMgaW52YWxpZCBlZmZlY3Qu
Z2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMo
KScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSBvbmUga2V5ZnJhbWUgc2VxdWVuY2Ug
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdvIGtleWZyYW1lIHNl
cXVlbmNlIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0
LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5IHR3byBrZXlm
cmFtZSBzZXF1ZW5jZSBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBzaG9ydGhhbmQg
cHJvcGVydHkgdHdvIGtleWZyYW1lIHNlcXVlbmNlIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90
IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlm
cmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRo
IGEgdHdvIHByb3BlcnR5IChhIHNob3J0aGFuZCBhbmQgb25lIG9mIGl0cyBjb21wb25lbnQgbG9u
Z2hhbmRzKSB0d28ga2V5ZnJhbWUgc2VxdWVuY2UgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3Qg
YSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZy
YW1lcycgaXMgdW5kZWZpbmVkKQogRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGgg
YSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIGR1cGxpY2F0ZSB2YWx1ZXMgZm9yIGEgZ2l2ZW4gaW50
ZXJpb3Igb2Zmc2V0IFR5cGUgZXJyb3IKIEZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3
aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBkdXBsaWNhdGUgdmFsdWVzIGZvciBvZmZzZXRz
IDAgYW5kIDEgVHlwZSBlcnJvcgogRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGgg
YSB0d28gcHJvcGVydHkgZm91ciBrZXlmcmFtZSBzZXF1ZW5jZSBUeXBlIGVycm9yCi1GQUlMIEtl
eWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBrZXlmcmFtZSBzZXF1ZW5jZSB3
aXRoIG9taXR0ZWQgb2Zmc2V0IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgc2luZ2xlIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggbnVsbCBvZmZzZXQgVHlw
ZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUga2V5
ZnJhbWUgc2VxdWVuY2Ugd2l0aCBzdHJpbmcgb2Zmc2V0IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJh
bWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IGtleWZyYW1lIHNlcXVlbmNl
IHdpdGggc29tZSBvbWl0dGVkIG9mZnNldHMgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2Fu
IGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBz
b21lIG51bGwgb2Zmc2V0cyBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFj
ZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIHNvbWUgb21pdHRl
ZCBvZmZzZXRzIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRo
IGEgb25lIHByb3BlcnR5IGtleWZyYW1lIHNlcXVlbmNlIHdpdGggYWxsIG9taXR0ZWQgb2Zmc2V0
cyBUeXBlIGVycm9yCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHNpbmds
ZSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIG9taXR0ZWQgb2Zmc2V0IGVmZmVjdC5nZXRLZXlmcmFt
ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVj
dC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgc2luZ2xlIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggbnVsbCBvZmZzZXQgZWZm
ZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJh
bWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFt
ZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBz
dHJpbmcgb2Zmc2V0IGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAn
ZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5l
ZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IGtl
eWZyYW1lIHNlcXVlbmNlIHdpdGggc29tZSBvbWl0dGVkIG9mZnNldHMgZWZmZWN0LmdldEtleWZy
YW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZm
ZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJl
cGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBzb21lIG51
bGwgb2Zmc2V0cyBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2Vm
ZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQp
CitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSBrZXlm
cmFtZSBzZXF1ZW5jZSB3aXRoIHNvbWUgb21pdHRlZCBvZmZzZXRzIGVmZmVjdC5nZXRLZXlmcmFt
ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVj
dC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IGtleWZyYW1lIHNlcXVlbmNlIHdpdGggYWxsIG9taXR0
ZWQgb2Zmc2V0cyBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2Vm
ZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQp
CiBGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNl
IHdpdGggZGlmZmVyZW50IGVhc2luZyB2YWx1ZXMsIGJ1dCB0aGUgc2FtZSBlYXNpbmcgdmFsdWUg
Zm9yIGEgZ2l2ZW4gb2Zmc2V0IFR5cGUgZXJyb3IKIEZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBkaWZmZXJlbnQgY29tcG9zaXRlIHZh
bHVlcywgYnV0IHRoZSBzYW1lIGNvbXBvc2l0ZSB2YWx1ZSBmb3IgYSBnaXZlbiBvZmZzZXQgVHlw
ZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVy
dHkgdHdvIGtleWZyYW1lIHNlcXVlbmNlIHRoYXQgbmVlZHMgdG8gc3RyaW5naWZ5IGl0cyB2YWx1
ZXMgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlm
cmFtZSBzZXF1ZW5jZSB3aXRoIGEgQ1NTIHZhcmlhYmxlIHJlZmVyZW5jZSBUeXBlIGVycm9yCi1G
QUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdp
dGggYSBDU1MgdmFyaWFibGUgcmVmZXJlbmNlIGluIGEgc2hvcnRoYW5kIHByb3BlcnR5IFR5cGUg
ZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2Vx
dWVuY2Ugd2hlcmUgc2hvcnRoYW5kIHByZWNlZGVzIGxvbmdoYW5kIFR5cGUgZXJyb3IKLUZBSUwg
S2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2hlcmUg
bG9uZ2hhbmQgcHJlY2VkZXMgc2hvcnRoYW5kIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNh
biBiZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2hlcmUgbGVzc2VyIHNob3J0
aGFuZCBwcmVjZWRlcyBncmVhdGVyIHNob3J0aGFuZCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1l
cyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdoZXJlIGdyZWF0ZXIg
c2hvcnRoYW5kIHByZWNlZGVzIGxlc3NlciBzaG9ydGhhbmQgVHlwZSBlcnJvcgotRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVu
Y2Ugd2hlcmUgb25lIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSB0aGUgZmlyc3Qga2V5ZnJhbWUg
VHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJv
cGVydHkga2V5ZnJhbWUgc2VxdWVuY2Ugd2hlcmUgb25lIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJv
bSB0aGUgbGFzdCBrZXlmcmFtZSBUeXBlIGVycm9yCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVw
bGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28ga2V5ZnJhbWUgc2VxdWVuY2UgdGhhdCBuZWVk
cyB0byBzdHJpbmdpZnkgaXRzIHZhbHVlcyBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1
bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVz
JyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtl
eWZyYW1lIHNlcXVlbmNlIHdpdGggYSBDU1MgdmFyaWFibGUgcmVmZXJlbmNlIGVmZmVjdC5nZXRL
ZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywg
J2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBi
ZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBhIENTUyB2YXJpYWJsZSBy
ZWZlcmVuY2UgaW4gYSBzaG9ydGhhbmQgcHJvcGVydHkgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtl
eWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdp
dGggYSBrZXlmcmFtZSBzZXF1ZW5jZSB3aGVyZSBzaG9ydGhhbmQgcHJlY2VkZXMgbG9uZ2hhbmQg
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlmcmFtZSBzZXF1ZW5jZSB3aGVyZSBsb25n
aGFuZCBwcmVjZWRlcyBzaG9ydGhhbmQgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycg
aXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlm
cmFtZSBzZXF1ZW5jZSB3aGVyZSBsZXNzZXIgc2hvcnRoYW5kIHByZWNlZGVzIGdyZWF0ZXIgc2hv
cnRoYW5kIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0
LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2hl
cmUgZ3JlYXRlciBzaG9ydGhhbmQgcHJlY2VkZXMgbGVzc2VyIHNob3J0aGFuZCBlZmZlY3QuZ2V0
S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScs
ICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aGVyZSBv
bmUgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHRoZSBmaXJzdCBrZXlmcmFtZSBlZmZlY3QuZ2V0
S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScs
ICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aGVyZSBv
bmUgcHJvcGVydHkgaXMgbWlzc2luZyBmcm9tIHRoZSBsYXN0IGtleWZyYW1lIGVmZmVjdC5nZXRL
ZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywg
J2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKIEZBSUwgS2V5ZnJhbWVzIGNhbiBi
ZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCByZXBlYXRlZCB2YWx1ZXMg
YXQgb2Zmc2V0IDEgd2l0aCBkaWZmZXJlbnQgZWFzaW5ncyBUeXBlIGVycm9yCi1GQUlMIEtleWZy
YW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyB3aXRoIGFuIG91dC1v
Zi1ib3VuZGVkIHBvc2l0aXZlIG9mZnNldCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lRWZmZWN0
IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyB3aXRoIGFuIG91dC1vZi1ib3VuZGVk
IG5lZ2F0aXZlIG9mZnNldCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVj
dG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyBub3QgbG9vc2VseSBzb3J0ZWQgYnkgb2Zmc2V0IFR5
cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVFZmZlY3QgY29uc3RydWN0b3IgdGhyb3dzIHdpdGggcHJv
cGVydHktaW5kZXhlZCBrZXlmcmFtZXMgd2l0aCBhbiBpbnZhbGlkIGVhc2luZyB2YWx1ZSBUeXBl
IGVycm9yCi1GQUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGEga2V5
ZnJhbWUgc2VxdWVuY2Ugd2l0aCBhbiBpbnZhbGlkIGVhc2luZyB2YWx1ZSBUeXBlIGVycm9yCi1G
QUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyB3aXRo
IGFuIGludmFsaWQgY29tcG9zaXRlIHZhbHVlIFR5cGUgZXJyb3IKK1BBU1MgS2V5ZnJhbWVFZmZl
Y3QgY29uc3RydWN0b3IgdGhyb3dzIHdpdGgga2V5ZnJhbWVzIHdpdGggYW4gb3V0LW9mLWJvdW5k
ZWQgcG9zaXRpdmUgb2Zmc2V0IAorUEFTUyBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJv
d3Mgd2l0aCBrZXlmcmFtZXMgd2l0aCBhbiBvdXQtb2YtYm91bmRlZCBuZWdhdGl2ZSBvZmZzZXQg
CitQQVNTIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyBu
b3QgbG9vc2VseSBzb3J0ZWQgYnkgb2Zmc2V0IAorRkFJTCBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1
Y3RvciB0aHJvd3Mgd2l0aCBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyB3aXRoIGFuIGludmFs
aWQgZWFzaW5nIHZhbHVlIGFzc2VydF90aHJvd3M6IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7Cisg
ICAgICBlZmZlY3Quc2V0S2V5ZnJhbWVzKHN1YnRlc3QuaW5wdXQpOworICAgIH0iIGRpZCBub3Qg
dGhyb3cKK0ZBSUwgS2V5ZnJhbWVFZmZlY3QgY29uc3RydWN0b3IgdGhyb3dzIHdpdGggYSBrZXlm
cmFtZSBzZXF1ZW5jZSB3aXRoIGFuIGludmFsaWQgZWFzaW5nIHZhbHVlIGFzc2VydF90aHJvd3M6
IGZ1bmN0aW9uICJmdW5jdGlvbiAoKSB7CisgICAgICBlZmZlY3Quc2V0S2V5ZnJhbWVzKHN1YnRl
c3QuaW5wdXQpOworICAgIH0iIGRpZCBub3QgdGhyb3cKK1BBU1MgS2V5ZnJhbWVFZmZlY3QgY29u
c3RydWN0b3IgdGhyb3dzIHdpdGgga2V5ZnJhbWVzIHdpdGggYW4gaW52YWxpZCBjb21wb3NpdGUg
dmFsdWUgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330043</attachid>
            <date>2017-12-21 11:11:23 -0800</date>
            <delta_ts>2017-12-21 11:12:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179708-20171221201121.patch</filename>
            <type>text/plain</type>
            <size>58045</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI2MTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTBiMWI1MjZmZTUxYmYw
OWFkMjAyZTk4MTFmNjBmZTk5ODNhMjY0ZS4uN2E5YmE3YzY0MzE0N2E2YzYyZWU4NDI4ZjViY2M3
NDhjZjlkZmYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE3LTEyLTIxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBDb21wbGV0ZSBzdXBwb3J0IGZvciBrZXlmcmFtZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk3MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBpbXBsZW1lbnQgc2VjdGlvbiA1
LjEwLjMgIlByb2Nlc3NpbmcgYSBrZXlmcmFtZXMgYXJndW1lbnQiIG9mIHRoZSBXZWIgQW5pbWF0
aW9ucyBzcGVjIHRvIGhhbmRsZQorICAgICAgICBtdWx0aXBsZSBrZXlmcmFtZXMsIHJhdGhlciB0
aGFuIG9ubHkgdHdvLCBwcm92aWRlZCBlaXRoZXIgaW4gaXRlcmFibGUgKGllLiBhcnJheSkgb3Ig
cHJvcGVydHktaW5kZXgKKyAgICAgICAgKGllLiBkaWN0aW9uYXJ5KSBmb3JtLiBBbHRob3VnaCB3
ZSBkb24ndCBjdXJyZW50bHkgc3VwcG9ydCB0aW1pbmcgZnVuY3Rpb24gb3IgY29tcG9zaXRlIG9w
ZXJhdGlvbnMsCisgICAgICAgIHdlIHBhcnNlIHRoZW0gYXMgd2VsbC4KKworICAgICAgICBXaGls
ZSB0aGVyZSBhcmUgbWluaW1hbCB0ZXN0IGNoYW5nZXMsIHRoZXJlIHdpbGwgYmUgYSBob3N0IG9m
IGNoYW5nZXMgaW4gdGhlIG5leHQgcGF0Y2ggaW4gd2hpY2gKKyAgICAgICAgd2UgdHVybiBFbGVt
ZW50LmFuaW1hdGUoKSBvbi4KKworICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJRExBdHRyaWJ1dGVOYW1lVG9BbmltYXRpb25Qcm9wZXJ0
eU5hbWUpOiBOZXcgdXRpbGl0eSB0byBjb252ZXJ0IGFuIElETC1wYXJzZWQgSlMgcHJvcGVydHkK
KyAgICAgICAgaW50byBhIFdlYkNvcmUgQ1NTUHJvcGVydHlJRC4KKyAgICAgICAgKFdlYkNvcmU6
OmNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKTogQ29udmVydHMgIm51bGwiIG9mZnNldHMg
aW50byBjb21wdXRlZCBvZmZzZXQgdmFsdWVzIGFzIHNwZWNpZmllZAorICAgICAgICBpbiBzZWN0
aW9uIDQuNC4yLiAiQ2FsY3VsYXRpbmcgY29tcHV0ZWQga2V5ZnJhbWVzIi4KKyAgICAgICAgKFdl
YkNvcmU6OnByb2Nlc3NJdGVyYWJsZUtleWZyYW1lcyk6IFByb2Nlc3MgdGhlIGl0ZXJhYmxlIGZv
cm0gb2YgdGhlIGtleWZyYW1lcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NL
ZXlmcmFtZUxpa2VPYmplY3QpOiBQcm9jZXNzIGEga2V5ZnJhbWUtbGlrZSBvYmplY3QgZm91bmQg
aW4gdGhlIHByb3BlcnR5LWluZGV4ZWQgZm9ybS4KKyAgICAgICAgKFdlYkNvcmU6OnByb2Nlc3NQ
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMpOiBQcm9jZXNzIHRoZSBwcm9wZXJ0eS1pbmRleGVkIGZv
cm0gb2YgdGhlIGtleWZyYW1lcyBhcmd1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRLZXlmcmFtZXMpOiBTaW5jZSB0aGlzIG1ldGhvZCBhbmQgcHJvY2Vzc0tleWZy
YW1lcygpIHNoYXJlIHRoZSBzYW1lIHNpZ25hdHVyZSwKKyAgICAgICAgd2UgY2FuIGp1c3QgcmV0
dXJuIHRoZSB2YWx1ZSBmcm9tIHByb2Nlc3NLZXlmcmFtZXMoKSBkaXJlY3RseS4KKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKTogUHJvY2VzcyB0aGUg
a2V5ZnJhbWVzIGFyZ3VtZW50IGFzIHNwZWNpZmllZC4KKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphcHBseUF0TG9jYWxUaW1lKTogRGVsZWdhdGUgYmxlbmRpbmcgdG8gdGhlIG5l
dyBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKCkKKyAgICAgICAgc2luY2UgdGhpcyB0YXNr
IGlzIG5vdyBtb3JlIGNvbXBsZXggZHVlIHRvIGhhbmRsaW5nIG9mIG11bHRpcGxlIGtleWZyYW1l
cy4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpnZXRBbmltYXRlZFN0eWxlKTog
RGVsZWdhdGUgYmxlbmRpbmcgdG8gdGhlIG5ldyBzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxl
KCkKKyAgICAgICAgc2luY2UgdGhpcyB0YXNrIGlzIG5vdyBtb3JlIGNvbXBsZXggZHVlIHRvIGhh
bmRsaW5nIG9mIG11bHRpcGxlIGtleWZyYW1lcy4KKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRBbmltYXRlZFByb3BlcnRpZXNJblN0eWxlKTogSGFuZGxlIG11bHRpcGxlIGFu
ZCBpbXBsaWNpdCBzdGFydCBhbmQgZW5kIGtleWZyYW1lcy4KKyAgICAgICAgKiBhbmltYXRpb24v
S2V5ZnJhbWVFZmZlY3QuaDogQWRkIHNvbWUgbmV3IHN0cnVjdHVyZXMgdXNlZCBmb3IgcGFyc2lu
ZyBwdXJwb3Nlcy4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsOiBFeHBv
c2UgdGhlIENvbXBvc2l0ZU9wZXJhdGlvbiBlbnVtIGFuZCB0aGUgQmFzZVByb3BlcnR5SW5kZXhl
ZEtleWZyYW1lIGRpY3Rpb25hcnkKKyAgICAgICAgdXNlZCBpbiBwcm9jZXNzS2V5ZnJhbWVMaWtl
T2JqZWN0KCkuCisgICAgICAgICogY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Z2V0Q1NTUHJvcGVydHlJREZyb21KYXZh
U2NyaXB0UHJvcGVydHlOYW1lKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
OgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uOjppc1Byb3BlcnR5QW5pbWF0YWJs
ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaDoKKwog
MjAxNy0xMi0yMCAgTXMyZ2VyICA8TXMyZ2VyQGlnYWxpYS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTihyMjI2MTYwKSBCdWlsZCBicm9rZW4gd2hlbiBNRURJQV9TVFJFQU0gaXMgZGlzYWJsZWQg
d2l0aCBNZWRpYVN0cmVhbVJlcXVlc3QgbmFtZXNwYWNlIGNvbmZ1c2lvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKaW5kZXggMGU1NWI2OWVjOGVhZTIyY2Yw
NGYyN2Q4NGZkODAyOTAyZGU0YjRkOS4uYzgxOWIyNTM1MWE3ZTZkMzk2MDlkMWU3MDcxZjQ1OTVi
NWY1NzE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3Bw
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNpbmNsdWRlICJD
U1NQcm9wZXJ0eUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRl
ICJTdHlsZVByb3BlcnRpZXMuaCIKQEAgLTM4LDYgKzM5LDMzMSBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAorc3RhdGljIGlubGluZSBDU1NQcm9wZXJ0eUlE
IElETEF0dHJpYnV0ZU5hbWVUb0FuaW1hdGlvblByb3BlcnR5TmFtZShTdHJpbmcgaWRsQXR0cmli
dXRlTmFtZSkKK3sKKyAgICAvLyBodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvd2ViLWFuaW1hdGlv
bnMtMS8jaWRsLWF0dHJpYnV0ZS1uYW1lLXRvLWFuaW1hdGlvbi1wcm9wZXJ0eS1uYW1lCisgICAg
Ly8gMS4gSWYgYXR0cmlidXRlIGNvbmZvcm1zIHRvIHRoZSA8Y3VzdG9tLXByb3BlcnR5LW5hbWU+
IHByb2R1Y3Rpb24sIHJldHVybiBhdHRyaWJ1dGUuCisgICAgLy8gMi4gSWYgYXR0cmlidXRlIGlz
IHRoZSBzdHJpbmcgImNzc0Zsb2F0IiwgdGhlbiByZXR1cm4gYW4gYW5pbWF0aW9uIHByb3BlcnR5
IHJlcHJlc2VudGluZyB0aGUgQ1NTIGZsb2F0IHByb3BlcnR5LgorICAgIGlmIChpZGxBdHRyaWJ1
dGVOYW1lID09ICJjc3NGbG9hdCIpCisgICAgICAgIHJldHVybiBDU1NQcm9wZXJ0eUZsb2F0Owor
ICAgIC8vIDMuIElmIGF0dHJpYnV0ZSBpcyB0aGUgc3RyaW5nICJjc3NPZmZzZXQiLCB0aGVuIHJl
dHVybiBhbiBhbmltYXRpb24gcHJvcGVydHkgcmVwcmVzZW50aW5nIHRoZSBDU1Mgb2Zmc2V0IHBy
b3BlcnR5LgorICAgIC8vIEZJWE1FOiB3ZSBkb24ndCBzdXBwb3J0IHRoZSBDU1MgIm9mZnNldCIg
cHJvcGVydHkKKyAgICAvLyA0LiBPdGhlcndpc2UsIHJldHVybiB0aGUgcmVzdWx0IG9mIGFwcGx5
aW5nIHRoZSBJREwgYXR0cmlidXRlIHRvIENTUyBwcm9wZXJ0eSBhbGdvcml0aG0gW0NTU09NXSB0
byBhdHRyaWJ1dGUuCisgICAgcmV0dXJuIENTU1N0eWxlRGVjbGFyYXRpb246OmdldENTU1Byb3Bl
cnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShpZGxBdHRyaWJ1dGVOYW1lKTsKK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKFZlY3RvcjxL
ZXlmcmFtZUVmZmVjdDo6UHJvY2Vzc2VkS2V5ZnJhbWU+JiBrZXlmcmFtZXMpCit7CisgICAgLy8g
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL3dlYi1hbmltYXRpb25zLTEvI2NvbXB1dGUtbWlzc2lu
Zy1rZXlmcmFtZS1vZmZzZXRzCisKKyAgICBpZiAoa2V5ZnJhbWVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgLy8gMS4gRm9yIGVhY2gga2V5ZnJhbWUsIGluIGtleWZyYW1lcywg
bGV0IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGtleWZyYW1lIGJlIGVxdWFs
IHRvIGl0cyBrZXlmcmFtZSBvZmZzZXQgdmFsdWUuCisKKyAgICAvLyAyLiBJZiBrZXlmcmFtZXMg
Y29udGFpbnMgbW9yZSB0aGFuIG9uZSBrZXlmcmFtZSBhbmQgdGhlIGNvbXB1dGVkIGtleWZyYW1l
IG9mZnNldCBvZiB0aGUgZmlyc3Qga2V5ZnJhbWUgaW4ga2V5ZnJhbWVzIGlzIG51bGwsCisgICAg
Ly8gICAgc2V0IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGtleWZy
YW1lIHRvIDAuCisgICAgaWYgKGtleWZyYW1lcy5zaXplKCkgPiAxICYmICFrZXlmcmFtZXNbMF0u
b2Zmc2V0KQorICAgICAgICBrZXlmcmFtZXNbMF0ub2Zmc2V0ID0gMDsKKworICAgIC8vIDMuIElm
IHRoZSBjb21wdXRlZCBrZXlmcmFtZSBvZmZzZXQgb2YgdGhlIGxhc3Qga2V5ZnJhbWUgaW4ga2V5
ZnJhbWVzIGlzIG51bGwsIHNldCBpdHMgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IHRvIDEuCisg
ICAgaWYgKCFrZXlmcmFtZXMubGFzdCgpLm9mZnNldCkKKyAgICAgICAga2V5ZnJhbWVzLmxhc3Qo
KS5vZmZzZXQgPSAxOworCisgICAgLy8gNC4gRm9yIGVhY2ggcGFpciBvZiBrZXlmcmFtZXMgQSBh
bmQgQiB3aGVyZToKKyAgICAvLyAgICAtIEEgYXBwZWFycyBiZWZvcmUgQiBpbiBrZXlmcmFtZXMs
IGFuZAorICAgIC8vICAgIC0gQSBhbmQgQiBoYXZlIGEgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0
IHRoYXQgaXMgbm90IG51bGwsIGFuZAorICAgIC8vICAgIC0gYWxsIGtleWZyYW1lcyBiZXR3ZWVu
IEEgYW5kIEIgaGF2ZSBhIG51bGwgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0LAorICAgIC8vICAg
IGNhbGN1bGF0ZSB0aGUgY29tcHV0ZWQga2V5ZnJhbWUgb2Zmc2V0IG9mIGVhY2gga2V5ZnJhbWUg
YmV0d2VlbiBBIGFuZCBCIGFzIGZvbGxvd3M6CisgICAgLy8gICAgMS4gTGV0IG9mZnNldGsgYmUg
dGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBhIGtleWZyYW1lIGsuCisgICAgLy8gICAg
Mi4gTGV0IG4gYmUgdGhlIG51bWJlciBvZiBrZXlmcmFtZXMgYmV0d2VlbiBhbmQgaW5jbHVkaW5n
IEEgYW5kIEIgbWludXMgMS4KKyAgICAvLyAgICAzLiBMZXQgaW5kZXggcmVmZXIgdG8gdGhlIHBv
c2l0aW9uIG9mIGtleWZyYW1lIGluIHRoZSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMgYmV0d2VlbiBB
IGFuZCBCIHN1Y2ggdGhhdCB0aGUgZmlyc3Qga2V5ZnJhbWUgYWZ0ZXIgQSBoYXMgYW4gaW5kZXgg
b2YgMS4KKyAgICAvLyAgICA0LiBTZXQgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBr
ZXlmcmFtZSB0byBvZmZzZXRBICsgKG9mZnNldEIg4oiSIG9mZnNldEEpIMOXIGluZGV4IC8gbi4K
KyAgICBzaXplX3QgaW5kZXhPZkxhc3RLZXlmcmFtZVdpdGhOb25OdWxsT2Zmc2V0ID0gMDsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMTsgaSA8IGtleWZyYW1lcy5zaXplKCk7ICsraSkgeworICAgICAg
ICBhdXRvIGtleWZyYW1lID0ga2V5ZnJhbWVzW2ldOworICAgICAgICBpZiAoIWtleWZyYW1lLm9m
ZnNldCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoaW5kZXhPZkxhc3RLZXlm
cmFtZVdpdGhOb25OdWxsT2Zmc2V0ID09IGkgLSAxKQorICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgZG91YmxlIGxhc3ROb25OdWxsT2Zmc2V0ID0ga2V5ZnJhbWVzW2luZGV4T2ZMYXN0
S2V5ZnJhbWVXaXRoTm9uTnVsbE9mZnNldF0ub2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIGRvdWJs
ZSBvZmZzZXREZWx0YSA9IGtleWZyYW1lLm9mZnNldC52YWx1ZSgpIC0gbGFzdE5vbk51bGxPZmZz
ZXQ7CisgICAgICAgIGRvdWJsZSBvZmZzZXRJbmNyZW1lbnQgPSBvZmZzZXREZWx0YSAvIChpIC0g
aW5kZXhPZkxhc3RLZXlmcmFtZVdpdGhOb25OdWxsT2Zmc2V0KTsKKyAgICAgICAgc2l6ZV90IGlu
ZGV4T2ZGaXJzdEtleWZyYW1lV2l0aE51bGxPZmZzZXQgPSBpbmRleE9mTGFzdEtleWZyYW1lV2l0
aE5vbk51bGxPZmZzZXQgKyAxOworICAgICAgICBmb3IgKHNpemVfdCBqID0gaW5kZXhPZkZpcnN0
S2V5ZnJhbWVXaXRoTnVsbE9mZnNldDsgaiA8IGk7ICsraikKKyAgICAgICAgICAgIGtleWZyYW1l
c1tqXS5vZmZzZXQgPSBsYXN0Tm9uTnVsbE9mZnNldCArIChqIC0gaW5kZXhPZkxhc3RLZXlmcmFt
ZVdpdGhOb25OdWxsT2Zmc2V0KSAqIG9mZnNldEluY3JlbWVudDsKKworICAgICAgICBpbmRleE9m
TGFzdEtleWZyYW1lV2l0aE5vbk51bGxPZmZzZXQgPSBpOworICAgIH0KK30KKworc3RhdGljIGlu
bGluZSBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzSXRlcmFibGVLZXlmcmFtZXMoRXhlY1N0YXRl
JiBzdGF0ZSwgU3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0LCBKU1ZhbHVlIG1ldGhv
ZCwgVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQcm9jZXNzZWRLZXlmcmFtZT4mIHByb2Nlc3NlZEtl
eWZyYW1lcykKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIC8vIDEuIExldCBpdGVyIGJlIEdldEl0ZXJh
dG9yKG9iamVjdCwgbWV0aG9kKS4KKyAgICBmb3JFYWNoSW5JdGVyYWJsZShzdGF0ZSwga2V5ZnJh
bWVzSW5wdXQuZ2V0KCksIG1ldGhvZCwgWyZwcm9jZXNzZWRLZXlmcmFtZXNdKFZNJiB2bSwgRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBuZXh0VmFsdWUpIC0+IEV4Y2VwdGlvbk9yPHZvaWQ+IHsK
KyAgICAgICAgaWYgKCFuZXh0VmFsdWUgfHwgIW5leHRWYWx1ZS5pc09iamVjdCgpKQorICAgICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9OworCisgICAgICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgICAgICBKU09iamVjdCoga2V5ZnJh
bWUgPSBuZXh0VmFsdWUudG9PYmplY3QoJnN0YXRlKTsKKyAgICAgICAgUHJvcGVydHlOYW1lQXJy
YXkgb3duUHJvcGVydHlOYW1lcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZh
dGVTeW1ib2xNb2RlOjpFeGNsdWRlKTsKKyAgICAgICAgSlNPYmplY3Q6OmdldE93blByb3BlcnR5
TmFtZXMoa2V5ZnJhbWUsICZzdGF0ZSwgb3duUHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2Rl
KCkpOworICAgICAgICBzaXplX3QgbnVtYmVyT2ZQcm9wZXJ0aWVzID0gb3duUHJvcGVydHlOYW1l
cy5zaXplKCk7CisKKyAgICAgICAgS2V5ZnJhbWVFZmZlY3Q6OlByb2Nlc3NlZEtleWZyYW1lIGtl
eWZyYW1lT3V0cHV0OworCisgICAgICAgIFN0cmluZyBlYXNpbmcgPSAibGluZWFyIjsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxkb3VibGU+IG9mZnNldDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxL
ZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPiBjb21wb3NpdGU7CisKKyAgICAgICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJPZlByb3BlcnRpZXM7ICsraikgeworICAgICAg
ICAgICAgYXV0byBvd25Qcm9wZXJ0eU5hbWUgPSBvd25Qcm9wZXJ0eU5hbWVzW2pdOworICAgICAg
ICAgICAgYXV0byBvd25Qcm9wZXJ0eU5hbWVBc1N0cmluZyA9IG93blByb3BlcnR5TmFtZS5zdHJp
bmcoKTsKKyAgICAgICAgICAgIGF1dG8gb3duUHJvcGVydHlSYXdWYWx1ZSA9IGtleWZyYW1lLT5n
ZXQoJnN0YXRlLCBvd25Qcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgaWYgKG93blByb3BlcnR5
TmFtZSA9PSAiZWFzaW5nIikKKyAgICAgICAgICAgICAgICBlYXNpbmcgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oc3RhdGUsIG93blByb3BlcnR5UmF3VmFsdWUpOworICAgICAgICAgICAgZWxzZSBp
ZiAob3duUHJvcGVydHlOYW1lQXNTdHJpbmcgPT0gIm9mZnNldCIpCisgICAgICAgICAgICAgICAg
b2Zmc2V0ID0gY29udmVydDxJRExOdWxsYWJsZTxJRExEb3VibGU+PihzdGF0ZSwgb3duUHJvcGVy
dHlSYXdWYWx1ZSk7CisgICAgICAgICAgICBlbHNlIGlmIChvd25Qcm9wZXJ0eU5hbWUgPT0gImNv
bXBvc2l0ZSIpCisgICAgICAgICAgICAgICAgY29tcG9zaXRlID0gY29udmVydDxJRExFbnVtZXJh
dGlvbjxLZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPj4oc3RhdGUsIG93blByb3Bl
cnR5UmF3VmFsdWUpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXV0byBj
c3NQcm9wZXJ0eUlkID0gSURMQXR0cmlidXRlTmFtZVRvQW5pbWF0aW9uUHJvcGVydHlOYW1lKG93
blByb3BlcnR5TmFtZUFzU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoQ1NTUHJvcGVydHlB
bmltYXRpb246OmlzUHJvcGVydHlBbmltYXRhYmxlKGNzc1Byb3BlcnR5SWQpKQorICAgICAgICAg
ICAgICAgICAgICBrZXlmcmFtZU91dHB1dC5jc3NQcm9wZXJ0aWVzQW5kVmFsdWVzLnNldChjc3NQ
cm9wZXJ0eUlkLCBjb252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIG93blByb3BlcnR5UmF3VmFs
dWUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKyAgICAgICAgfQorCisgICAgICAgIGtleWZy
YW1lT3V0cHV0LmVhc2luZyA9IGVhc2luZzsKKyAgICAgICAga2V5ZnJhbWVPdXRwdXQub2Zmc2V0
ID0gb2Zmc2V0OworICAgICAgICBrZXlmcmFtZU91dHB1dC5jb21wb3NpdGUgPSBjb21wb3NpdGU7
CisKKyAgICAgICAgcHJvY2Vzc2VkS2V5ZnJhbWVzLmFwcGVuZChXVEZNb3ZlKGtleWZyYW1lT3V0
cHV0KSk7CisKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9KTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBFeGNlcHRpb24geyBUeXBlRXJyb3IgfSk7CisKKyAgICByZXR1cm4geyB9
OworfQorCitzdGF0aWMgaW5saW5lIEV4Y2VwdGlvbk9yPEtleWZyYW1lRWZmZWN0OjpLZXlmcmFt
ZUxpa2VPYmplY3Q+IHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3QoRXhlY1N0YXRlJiBzdGF0ZSwg
U3Ryb25nPEpTT2JqZWN0PiYmIGtleWZyYW1lc0lucHV0KQoreworICAgIC8vIGh0dHBzOi8vZHJh
ZnRzLmNzc3dnLm9yZy93ZWItYW5pbWF0aW9ucy0xLyNwcm9jZXNzLWEta2V5ZnJhbWUtbGlrZS1v
YmplY3QKKworICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgLy8gMS4gUnVuIHRoZSBwcm9jZWR1cmUgdG8gY29u
dmVydCBhbiBFQ01BU2NyaXB0IHZhbHVlIHRvIGEgZGljdGlvbmFyeSB0eXBlIFtXRUJJRExdIHdp
dGgga2V5ZnJhbWUgaW5wdXQgYXMgdGhlIEVDTUFTY3JpcHQgdmFsdWUgYXMgZm9sbG93czoKKyAg
ICAvLyAKKyAgICAvLyAgICBkaWN0aW9uYXJ5IEJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZSB7
CisgICAgLy8gICAgICAgIChkb3VibGU/IG9yIHNlcXVlbmNlPGRvdWJsZT8+KSAgICAgICAgICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gW107CisgICAgLy8gICAgICAgIChET01TdHJpbmcgb3Igc2Vx
dWVuY2U8RE9NU3RyaW5nPikgICAgICAgICAgICAgICAgICAgZWFzaW5nID0gW107CisgICAgLy8g
ICAgICAgIChDb21wb3NpdGVPcGVyYXRpb24gb3Igc2VxdWVuY2U8Q29tcG9zaXRlT3BlcmF0aW9u
PikgY29tcG9zaXRlID0gW107CisgICAgLy8gICAgfTsKKyAgICAvLworICAgIC8vICAgIFN0b3Jl
IHRoZSByZXN1bHQgb2YgdGhpcyBwcm9jZWR1cmUgYXMga2V5ZnJhbWUgb3V0cHV0LgorICAgIGF1
dG8gYmFzZVByb3BlcnRpZXMgPSBjb252ZXJ0PElETERpY3Rpb25hcnk8S2V5ZnJhbWVFZmZlY3Q6
OkJhc2VQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZT4+KHN0YXRlLCBrZXlmcmFtZXNJbnB1dC5nZXQo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgVHlwZUVycm9y
IH0pOworCisgICAgS2V5ZnJhbWVFZmZlY3Q6OktleWZyYW1lTGlrZU9iamVjdCBrZXlmcmFtZU91
cHV0OworICAgIGtleWZyYW1lT3VwdXQuYmFzZVByb3BlcnRpZXMgPSBiYXNlUHJvcGVydGllczsK
KworICAgIC8vIDIuIEJ1aWxkIHVwIGEgbGlzdCBvZiBhbmltYXRhYmxlIHByb3BlcnRpZXMgYXMg
Zm9sbG93czoKKyAgICAvLworICAgIC8vICAgIDEuIExldCBhbmltYXRhYmxlIHByb3BlcnRpZXMg
YmUgYSBsaXN0IG9mIHByb3BlcnR5IG5hbWVzIChpbmNsdWRpbmcgc2hvcnRoYW5kIHByb3BlcnRp
ZXMgdGhhdCBoYXZlIGxvbmdoYW5kIHN1Yi1wcm9wZXJ0aWVzCisgICAgLy8gICAgICAgdGhhdCBh
cmUgYW5pbWF0YWJsZSkgdGhhdCBjYW4gYmUgYW5pbWF0ZWQgYnkgdGhlIGltcGxlbWVudGF0aW9u
LgorICAgIC8vICAgIDIuIENvbnZlcnQgZWFjaCBwcm9wZXJ0eSBuYW1lIGluIGFuaW1hdGFibGUg
cHJvcGVydGllcyB0byB0aGUgZXF1aXZhbGVudCBJREwgYXR0cmlidXRlIGJ5IGFwcGx5aW5nIHRo
ZSBhbmltYXRpb24gcHJvcGVydHkKKyAgICAvLyAgICAgICBuYW1lIHRvIElETCBhdHRyaWJ1dGUg
bmFtZSBhbGdvcml0aG0uCisKKyAgICAvLyAzLiBMZXQgaW5wdXQgcHJvcGVydGllcyBiZSB0aGUg
cmVzdWx0IG9mIGNhbGxpbmcgdGhlIEVudW1lcmFibGVPd25OYW1lcyBvcGVyYXRpb24gd2l0aCBr
ZXlmcmFtZSBpbnB1dCBhcyB0aGUgb2JqZWN0LgorICAgIFByb3BlcnR5TmFtZUFycmF5IGlucHV0
UHJvcGVydGllcygmdm0sIFByb3BlcnR5TmFtZU1vZGU6OlN0cmluZ3MsIFByaXZhdGVTeW1ib2xN
b2RlOjpFeGNsdWRlKTsKKyAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhrZXlmcmFt
ZXNJbnB1dC5nZXQoKSwgJnN0YXRlLCBpbnB1dFByb3BlcnRpZXMsIEVudW1lcmF0aW9uTW9kZSgp
KTsKKworICAgIC8vIDQuIE1ha2UgdXAgYSBuZXcgbGlzdCBhbmltYXRpb24gcHJvcGVydGllcyB0
aGF0IGNvbnNpc3RzIG9mIGFsbCBvZiB0aGUgcHJvcGVydGllcyB0aGF0IGFyZSBpbiBib3RoIGlu
cHV0IHByb3BlcnRpZXMgYW5kIGFuaW1hdGFibGUKKyAgICAvLyAgICBwcm9wZXJ0aWVzLCBvciB3
aGljaCBhcmUgaW4gaW5wdXQgcHJvcGVydGllcyBhbmQgY29uZm9ybSB0byB0aGUgPGN1c3RvbS1w
cm9wZXJ0eS1uYW1lPiBwcm9kdWN0aW9uLgorCisgICAgLy8gNS4gU29ydCBhbmltYXRpb24gcHJv
cGVydGllcyBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIFVuaWNvZGUgY29kZXBvaW50cyB0aGF0
IGRlZmluZSBlYWNoIHByb3BlcnR5IG5hbWUuCisgICAgLy8gICAgV2Ugb25seSBhY3R1YWxseSBw
ZXJmb3JtIHRoaXMgYWZ0ZXIgc3RlcCA2LgorCisgICAgLy8gNi4gRm9yIGVhY2ggcHJvcGVydHkg
bmFtZSBpbiBhbmltYXRpb24gcHJvcGVydGllcywKKyAgICBzaXplX3QgbnVtYmVyT2ZQcm9wZXJ0
aWVzID0gaW5wdXRQcm9wZXJ0aWVzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IG51bWJlck9mUHJvcGVydGllczsgKytpKSB7CisgICAgICAgIGF1dG8gY3NzUHJvcGVydHlJRCA9
IElETEF0dHJpYnV0ZU5hbWVUb0FuaW1hdGlvblByb3BlcnR5TmFtZShpbnB1dFByb3BlcnRpZXNb
aV0uc3RyaW5nKCkpOworICAgICAgICBpZiAoIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjppc1Byb3Bl
cnR5QW5pbWF0YWJsZShjc3NQcm9wZXJ0eUlEKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIC8vIDEuIExldCByYXcgdmFsdWUgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBb
W0dldF1dIGludGVybmFsIG1ldGhvZCBvbiBrZXlmcmFtZSBpbnB1dCwgd2l0aCBwcm9wZXJ0eSBu
YW1lIGFzIHRoZSBwcm9wZXJ0eQorICAgICAgICAvLyAgICBrZXkgYW5kIGtleWZyYW1lIGlucHV0
IGFzIHRoZSByZWNlaXZlci4KKyAgICAgICAgYXV0byByYXdWYWx1ZSA9IGtleWZyYW1lc0lucHV0
LT5nZXQoJnN0YXRlLCBpbnB1dFByb3BlcnRpZXNbaV0pOworCisgICAgICAgIC8vIDIuIENoZWNr
IHRoZSBjb21wbGV0aW9uIHJlY29yZCBvZiByYXcgdmFsdWUuCisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKworICAgICAgICAvLyAz
LiBDb252ZXJ0IHJhdyB2YWx1ZSB0byBhIERPTVN0cmluZyBvciBzZXF1ZW5jZSBvZiBET01TdHJp
bmdzIHByb3BlcnR5IHZhbHVlcyBhcyBmb2xsb3dzOgorICAgICAgICBWZWN0b3I8U3RyaW5nPiBw
cm9wZXJ0eVZhbHVlczsKKyAgICAgICAgLy8gTGV0IHByb3BlcnR5IHZhbHVlcyBiZSB0aGUgcmVz
dWx0IG9mIGNvbnZlcnRpbmcgcmF3IHZhbHVlIHRvIElETCB0eXBlIChET01TdHJpbmcgb3Igc2Vx
dWVuY2U8RE9NU3RyaW5nPikKKyAgICAgICAgLy8gdXNpbmcgdGhlIHByb2NlZHVyZXMgZGVmaW5l
ZCBmb3IgY29udmVydGluZyBhbiBFQ01BU2NyaXB0IHZhbHVlIHRvIGFuIElETCB2YWx1ZSBbV0VC
SURMXS4KKyAgICAgICAgLy8gSWYgcHJvcGVydHkgdmFsdWVzIGlzIGEgc2luZ2xlIERPTVN0cmlu
ZywgcmVwbGFjZSBwcm9wZXJ0eSB2YWx1ZXMgd2l0aCBhIHNlcXVlbmNlIG9mIERPTVN0cmluZ3Mg
d2l0aCB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgcHJvcGVydHkKKyAgICAgICAgLy8gVmFsdWVzIGFz
IHRoZSBvbmx5IGVsZW1lbnQuCisgICAgICAgIGlmIChyYXdWYWx1ZS5pc1N0cmluZygpKQorICAg
ICAgICAgICAgcHJvcGVydHlWYWx1ZXMgPSB7IHJhd1ZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkg
fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJvcGVydHlWYWx1ZXMgPSBjb252ZXJ0PElE
TFNlcXVlbmNlPElETERPTVN0cmluZz4+KHN0YXRlLCByYXdWYWx1ZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKworICAgICAg
ICAvLyA0LiBDYWxjdWxhdGUgdGhlIG5vcm1hbGl6ZWQgcHJvcGVydHkgbmFtZSBhcyB0aGUgcmVz
dWx0IG9mIGFwcGx5aW5nIHRoZSBJREwgYXR0cmlidXRlIG5hbWUgdG8gYW5pbWF0aW9uIHByb3Bl
cnR5IG5hbWUgYWxnb3JpdGhtIHRvIHByb3BlcnR5IG5hbWUuCisgICAgICAgIC8vIDUuIEFkZCBh
IHByb3BlcnR5IHRvIHRvIGtleWZyYW1lIG91dHB1dCB3aXRoIG5vcm1hbGl6ZWQgcHJvcGVydHkg
bmFtZSBhcyB0aGUgcHJvcGVydHkgbmFtZSwgYW5kIHByb3BlcnR5IHZhbHVlcyBhcyB0aGUgcHJv
cGVydHkgdmFsdWUuCisgICAgICAgIGtleWZyYW1lT3VwdXQucHJvcGVydGllc0FuZFZhbHVlcy5h
cHBlbmQoeyBjc3NQcm9wZXJ0eUlELCBwcm9wZXJ0eVZhbHVlcyB9KTsKKyAgICB9CisKKyAgICAv
LyBOb3cgd2UgY2FuIHBlcmZvcm0gc3RlcCA1LgorICAgIHN0ZDo6c29ydChrZXlmcmFtZU91cHV0
LnByb3BlcnRpZXNBbmRWYWx1ZXMuYmVnaW4oKSwga2V5ZnJhbWVPdXB1dC5wcm9wZXJ0aWVzQW5k
VmFsdWVzLmVuZCgpLCBbXShhdXRvJiBsaHMsIGF1dG8mIHJocykgeworICAgICAgICByZXR1cm4g
Z2V0UHJvcGVydHlOYW1lU3RyaW5nKGxocy5wcm9wZXJ0eSkudXRmOCgpIDwgZ2V0UHJvcGVydHlO
YW1lU3RyaW5nKHJocy5wcm9wZXJ0eSkudXRmOCgpOworICAgIH0pOworCisgICAgLy8gNy4gUmV0
dXJuIGtleWZyYW1lIG91dHB1dC4KKyAgICByZXR1cm4geyBXVEZNb3ZlKGtleWZyYW1lT3VwdXQp
IH07Cit9CisKK3N0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc1Byb3BlcnR5
SW5kZXhlZEtleWZyYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5
ZnJhbWVzSW5wdXQsIFZlY3RvcjxLZXlmcmFtZUVmZmVjdDo6UHJvY2Vzc2VkS2V5ZnJhbWU+JiBw
cm9jZXNzZWRLZXlmcmFtZXMpCit7CisgICAgLy8gMS4gTGV0IHByb3BlcnR5LWluZGV4ZWQga2V5
ZnJhbWUgYmUgdGhlIHJlc3VsdCBvZiBydW5uaW5nIHRoZSBwcm9jZWR1cmUgdG8gcHJvY2VzcyBh
IGtleWZyYW1lLWxpa2Ugb2JqZWN0IHBhc3Npbmcgb2JqZWN0IGFzIHRoZSBrZXlmcmFtZSBpbnB1
dC4KKyAgICBhdXRvIHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3RSZXN1bHQgPSBwcm9jZXNzS2V5
ZnJhbWVMaWtlT2JqZWN0KHN0YXRlLCBXVEZNb3ZlKGtleWZyYW1lc0lucHV0KSk7CisgICAgaWYg
KHByb2Nlc3NLZXlmcmFtZUxpa2VPYmplY3RSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBwcm9jZXNzS2V5ZnJhbWVMaWtlT2JqZWN0UmVzdWx0LnJlbGVhc2VFeGNlcHRpb24o
KTsKKyAgICBhdXRvIHByb3BlcnR5SW5kZXhlZEtleWZyYW1lID0gcHJvY2Vzc0tleWZyYW1lTGlr
ZU9iamVjdFJlc3VsdC5yZXR1cm5WYWx1ZSgpOworCisgICAgLy8gMi4gRm9yIGVhY2ggbWVtYmVy
LCBtLCBpbiBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CisgICAgZm9yIChhdXRvJiBtIDogcHJvcGVydHlJbmRleGVkS2V5ZnJhbWUucHJvcGVy
dGllc0FuZFZhbHVlcykgeworICAgICAgICAvLyAxLiBMZXQgcHJvcGVydHkgbmFtZSBiZSB0aGUg
a2V5IGZvciBtLgorICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IG0ucHJvcGVydHk7CisgICAg
ICAgIC8vIDIuIElmIHByb3BlcnR5IG5hbWUgaXMg4oCcY29tcG9zaXRl4oCdLCBvciDigJxlYXNp
bmfigJ0sIG9yIOKAnG9mZnNldOKAnSwgc2tpcCB0aGUgcmVtYWluaW5nIHN0ZXBzIGluIHRoaXMg
bG9vcCBhbmQgY29udGludWUgZnJvbSB0aGUgbmV4dCBtZW1iZXIgaW4gcHJvcGVydHktaW5kZXhl
ZAorICAgICAgICAvLyAgICBrZXlmcmFtZSBhZnRlciBtLgorICAgICAgICAvLyAgICBXZSBza2lw
IHRoaXMgdGVzdCBzaW5jZSB3ZSBzcGxpdCB0aG9zZSBwcm9wZXJ0aWVzIGFuZCB0aGUgYWN0dWFs
IENTUyBwcm9wZXJ0aWVzIHRoYXQgd2UncmUgY3VycmVudGx5IGl0ZXJhdGluZyBvdmVyLgorICAg
ICAgICAvLyAzLiBMZXQgcHJvcGVydHkgdmFsdWVzIGJlIHRoZSB2YWx1ZSBmb3IgbS4KKyAgICAg
ICAgYXV0byBwcm9wZXJ0eVZhbHVlcyA9IG0udmFsdWVzOworICAgICAgICAvLyA0LiBMZXQgcHJv
cGVydHkga2V5ZnJhbWVzIGJlIGFuIGVtcHR5IHNlcXVlbmNlIG9mIGtleWZyYW1lcy4KKyAgICAg
ICAgVmVjdG9yPEtleWZyYW1lRWZmZWN0OjpQcm9jZXNzZWRLZXlmcmFtZT4gcHJvcGVydHlLZXlm
cmFtZXM7CisgICAgICAgIC8vIDUuIEZvciBlYWNoIHZhbHVlLCB2LCBpbiBwcm9wZXJ0eSB2YWx1
ZXMgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgorICAgICAgICBmb3IgKGF1dG8mIHYgOiBw
cm9wZXJ0eVZhbHVlcykgeworICAgICAgICAgICAgLy8gMS4gTGV0IGsgYmUgYSBuZXcga2V5ZnJh
bWUgd2l0aCBhIG51bGwga2V5ZnJhbWUgb2Zmc2V0LgorICAgICAgICAgICAgS2V5ZnJhbWVFZmZl
Y3Q6OlByb2Nlc3NlZEtleWZyYW1lIGs7CisgICAgICAgICAgICAvLyAyLiBBZGQgdGhlIHByb3Bl
cnR5LXZhbHVlIHBhaXIsIHByb3BlcnR5IG5hbWUg4oaSIHYsIHRvIGsuCisgICAgICAgICAgICBr
LmNzc1Byb3BlcnRpZXNBbmRWYWx1ZXMuc2V0KHByb3BlcnR5TmFtZSwgdik7CisgICAgICAgICAg
ICAvLyAzLiBBcHBlbmQgayB0byBwcm9wZXJ0eSBrZXlmcmFtZXMuCisgICAgICAgICAgICBwcm9w
ZXJ0eUtleWZyYW1lcy5hcHBlbmQoayk7CisgICAgICAgIH0KKyAgICAgICAgLy8gNi4gQXBwbHkg
dGhlIHByb2NlZHVyZSB0byBjb21wdXRlIG1pc3Npbmcga2V5ZnJhbWUgb2Zmc2V0cyB0byBwcm9w
ZXJ0eSBrZXlmcmFtZXMuCisgICAgICAgIGNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKHBy
b3BlcnR5S2V5ZnJhbWVzKTsKKworICAgICAgICAvLyA3LiBBZGQga2V5ZnJhbWVzIGluIHByb3Bl
cnR5IGtleWZyYW1lcyB0byBwcm9jZXNzZWQga2V5ZnJhbWVzLgorICAgICAgICBmb3IgKGF1dG8m
IGtleWZyYW1lIDogcHJvcGVydHlLZXlmcmFtZXMpCisgICAgICAgICAgICBwcm9jZXNzZWRLZXlm
cmFtZXMuYXBwZW5kKGtleWZyYW1lKTsKKyAgICB9CisKKyAgICAvLyAzLiBTb3J0IHByb2Nlc3Nl
ZCBrZXlmcmFtZXMgYnkgdGhlIGNvbXB1dGVkIGtleWZyYW1lIG9mZnNldCBvZiBlYWNoIGtleWZy
YW1lIGluIGluY3JlYXNpbmcgb3JkZXIuCisgICAgc3RkOjpzb3J0KHByb2Nlc3NlZEtleWZyYW1l
cy5iZWdpbigpLCBwcm9jZXNzZWRLZXlmcmFtZXMuZW5kKCksIFtdKGF1dG8mIGxocywgYXV0byYg
cmhzKSB7CisgICAgICAgIHJldHVybiBsaHMub2Zmc2V0LnZhbHVlKCkgPCByaHMub2Zmc2V0LnZh
bHVlKCk7CisgICAgfSk7CisKKyAgICAvLyA0LiBNZXJnZSBhZGphY2VudCBrZXlmcmFtZXMgaW4g
cHJvY2Vzc2VkIGtleWZyYW1lcyB3aGVuIHRoZXkgaGF2ZSBlcXVhbCBjb21wdXRlZCBrZXlmcmFt
ZSBvZmZzZXRzLgorICAgIHNpemVfdCBpID0gMTsKKyAgICB3aGlsZSAoaSA8IHByb2Nlc3NlZEtl
eWZyYW1lcy5zaXplKCkpIHsKKyAgICAgICAgYXV0byYga2V5ZnJhbWUgPSBwcm9jZXNzZWRLZXlm
cmFtZXNbaV07CisgICAgICAgIGF1dG8mIHByZXZpb3VzS2V5ZnJhbWUgPSBwcm9jZXNzZWRLZXlm
cmFtZXNbaSAtIDFdOworICAgICAgICAvLyBJZiB0aGUgb2Zmc2V0cyBvZiB0aGlzIGtleWZyYW1l
IGFuZCB0aGUgcHJldmlvdXMga2V5ZnJhbWUgYXJlIGRpZmZlcmVudCwKKyAgICAgICAgLy8gdGhp
cyBtZWFucyB0aGF0IHRoZSB0d28ga2V5ZnJhbWVzIHNob3VsZCBub3QgYmUgbWVyZ2VkIGFuZCB3
ZSBjYW4gbW92ZQorICAgICAgICAvLyBvbiB0byB0aGUgbmV4dCBrZXlmcmFtZS4KKyAgICAgICAg
aWYgKGtleWZyYW1lLm9mZnNldC52YWx1ZSgpICE9IHByZXZpb3VzS2V5ZnJhbWUub2Zmc2V0LnZh
bHVlKCkpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICB9CisgICAgICAgIC8vIE90aGVyd2lzZSwgYm90aCB0aGlzIGtleWZyYW1lIGFuZCB0aGUgcHJl
dmlvdXMga2V5ZnJhbWUgc2hvdWxkIGJlIG1lcmdlZC4KKyAgICAgICAgLy8gVW5wcm9jZXNzZWQg
a2V5ZnJhbWVzIGluIHByb2Nlc3NlZEtleWZyYW1lcyBhdCB0aGlzIHN0YWdlIGhhdmUgYSBzaW5n
bGUKKyAgICAgICAgLy8gcHJvcGVydHkgaW4gY3NzUHJvcGVydGllc0FuZFZhbHVlcywgc28ganVz
dCBzZXQgdGhpcyBvbiB0aGUgcHJldmlvdXMga2V5ZnJhbWUuCisgICAgICAgIGF1dG8gc2luZ2xl
VmFsdWVJbktleWZyYW1lID0ga2V5ZnJhbWUuY3NzUHJvcGVydGllc0FuZFZhbHVlcy5iZWdpbigp
OworICAgICAgICBwcmV2aW91c0tleWZyYW1lLmNzc1Byb3BlcnRpZXNBbmRWYWx1ZXMuc2V0KHNp
bmdsZVZhbHVlSW5LZXlmcmFtZS0+a2V5LCBzaW5nbGVWYWx1ZUluS2V5ZnJhbWUtPnZhbHVlKTsK
KyAgICAgICAgLy8gU2luY2Ugd2UndmUgcHJvY2Vzc2VkIHRoaXMga2V5ZnJhbWUsIHdlIGNhbiBy
ZW1vdmUgaXQgYW5kIGtlZXAgaSB0aGUgc2FtZQorICAgICAgICAvLyBzbyB0aGF0IHdlIHByb2Nl
c3MgdGhlIG5leHQga2V5ZnJhbWUgaW4gdGhlIG5leHQgbG9vcCBpdGVyYXRpb24uCisgICAgICAg
IHByb2Nlc3NlZEtleWZyYW1lcy5yZW1vdmUoaSk7CisgICAgfQorCisgICAgLy8gNS4gTGV0IG9m
ZnNldHMgYmUgYSBzZXF1ZW5jZSBvZiBudWxsYWJsZSBkb3VibGUgdmFsdWVzIGFzc2lnbmVkIGJh
c2VkIG9uIHRoZSB0eXBlIG9mIHRoZSDigJxvZmZzZXTigJ0gbWVtYmVyIG9mIHRoZSBwcm9wZXJ0
eS1pbmRleGVkIGtleWZyYW1lIGFzIGZvbGxvd3M6CisgICAgLy8gICAgLSBzZXF1ZW5jZTxkb3Vi
bGU/PiwgdGhlIHZhbHVlIG9mIOKAnG9mZnNldOKAnSBhcy1pcy4KKyAgICAvLyAgICAtIGRvdWJs
ZT8sIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSB3aXRoIHRoZSB2YWx1ZSBvZiDigJxvZmZzZXTi
gJ0gYXMgaXRzIHNpbmdsZSBpdGVtLCBpLmUuIMKrIG9mZnNldCDCuywKKyAgICAvLyBGSVhNRTog
dXBkYXRlIHRoaXMgd2hlbiB3ZSBmaWd1cmUgb3V0IGhvdyB0byBkZWFsIHdpdGggbnVsbGFibGUg
ZG91YmxlcyBoZXJlLgorICAgIFZlY3RvcjxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4+IG9mZnNldHM7
CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91
YmxlPj4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVzLm9mZnNldCkpCisg
ICAgICAgIG9mZnNldHMgPSBXVEY6OmdldDxWZWN0b3I8c3RkOjpvcHRpb25hbDxkb3VibGU+Pj4o
cHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KTsKKyAgICBlbHNl
IGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPGRvdWJsZT4ocHJvcGVydHlJbmRleGVkS2V5ZnJh
bWUuYmFzZVByb3BlcnRpZXMub2Zmc2V0KSkKKyAgICAgICAgb2Zmc2V0cy5hcHBlbmQoV1RGOjpn
ZXQ8ZG91YmxlPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQp
KTsKKyAgICBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPHN0ZDo6bnVsbHB0cl90Pihw
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5vZmZzZXQpKQorICAgICAgICBv
ZmZzZXRzLmFwcGVuZChzdGQ6Om51bGxvcHQpOworCisgICAgLy8gNi4gQXNzaWduIGVhY2ggdmFs
dWUgaW4gb2Zmc2V0cyB0byB0aGUga2V5ZnJhbWUgb2Zmc2V0IG9mIHRoZSBrZXlmcmFtZSB3aXRo
IGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW4gcHJvcGVydHkga2V5ZnJhbWVzIHVudGlsIHRoZSBl
bmQgb2YgZWl0aGVyIHNlcXVlbmNlIGlzIHJlYWNoZWQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBvZmZzZXRzLnNpemUoKSAmJiBpIDwgcHJvY2Vzc2VkS2V5ZnJhbWVzLnNpemUoKTsgKytp
KQorICAgICAgICBwcm9jZXNzZWRLZXlmcmFtZXNbaV0ub2Zmc2V0ID0gb2Zmc2V0c1tpXTsKKwor
ICAgIC8vIDcuIExldCBlYXNpbmdzIGJlIGEgc2VxdWVuY2Ugb2YgRE9NU3RyaW5nIHZhbHVlcyBh
c3NpZ25lZCBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUg4oCcZWFzaW5n4oCdIG1lbWJlciBvZiB0
aGUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZSBhcyBmb2xsb3dzOgorICAgIC8vICAgIC0gc2Vx
dWVuY2U8RE9NU3RyaW5nPiwgdGhlIHZhbHVlIG9mIOKAnGVhc2luZ+KAnSBhcy1pcy4KKyAgICAv
LyAgICAtIERPTVN0cmluZywgYSBzZXF1ZW5jZSBvZiBsZW5ndGggb25lIHdpdGggdGhlIHZhbHVl
IG9mIOKAnGVhc2luZ+KAnSBhcyBpdHMgc2luZ2xlIGl0ZW0sIGkuZS4gwqsgZWFzaW5nIMK7LAor
ICAgIFZlY3RvcjxTdHJpbmc+IGVhc2luZ3M7CisgICAgaWYgKFdURjo6aG9sZHNfYWx0ZXJuYXRp
dmU8VmVjdG9yPFN0cmluZz4+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQcm9wZXJ0aWVz
LmVhc2luZykpCisgICAgICAgIGVhc2luZ3MgPSBXVEY6OmdldDxWZWN0b3I8U3RyaW5nPj4ocHJv
cGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMuZWFzaW5nKTsKKyAgICBlbHNlIGlm
IChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPFN0cmluZz4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUu
YmFzZVByb3BlcnRpZXMuZWFzaW5nKSkKKyAgICAgICAgZWFzaW5ncy5hcHBlbmQoV1RGOjpnZXQ8
U3RyaW5nPihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5lYXNpbmcpKTsK
KworICAgIC8vIDguIElmIGVhc2luZ3MgaXMgYW4gZW1wdHkgc2VxdWVuY2UsIGxldCBpdCBiZSBh
IHNlcXVlbmNlIG9mIGxlbmd0aCBvbmUgY29udGFpbmluZyB0aGUgc2luZ2xlIHZhbHVlIOKAnGxp
bmVhcuKAnSwgaS5lLiDCqyAibGluZWFyIiDCuy4KKyAgICBpZiAoZWFzaW5ncy5pc0VtcHR5KCkp
CisgICAgICAgIGVhc2luZ3MuYXBwZW5kKCJsaW5lYXIiKTsKKworICAgIC8vIDkuIElmIGVhc2lu
Z3MgaGFzIGZld2VyIGl0ZW1zIHRoYW4gcHJvcGVydHkga2V5ZnJhbWVzLCByZXBlYXQgdGhlIGVs
ZW1lbnRzIGluIGVhc2luZ3Mgc3VjY2Vzc2l2ZWx5IHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmlu
ZyBvZiB0aGUgbGlzdCB1bnRpbCBlYXNpbmdzIGhhcyBhcyBtYW55CisgICAgLy8gICAgaXRlbXMg
YXMgcHJvcGVydHkga2V5ZnJhbWVzLgorICAgIGlmIChlYXNpbmdzLnNpemUoKSA8IHByb2Nlc3Nl
ZEtleWZyYW1lcy5zaXplKCkpIHsKKyAgICAgICAgc2l6ZV90IGluaXRpYWxOdW1iZXJPZkVhc2lu
Z3MgPSBlYXNpbmdzLnNpemUoKTsKKyAgICAgICAgZm9yIChpID0gaW5pdGlhbE51bWJlck9mRWFz
aW5ncyArIDE7IGkgPCBwcm9jZXNzZWRLZXlmcmFtZXMuc2l6ZSgpIC0gMTsgKytpKQorICAgICAg
ICAgICAgZWFzaW5ncy5hcHBlbmQoZWFzaW5nc1tpICUgaW5pdGlhbE51bWJlck9mRWFzaW5nc10p
OworICAgIH0KKworICAgIC8vIDEwLiBJZiBlYXNpbmdzIGhhcyBtb3JlIGl0ZW1zIHRoYW4gcHJv
cGVydHkga2V5ZnJhbWVzLCBzdG9yZSB0aGUgZXhjZXNzIGl0ZW1zIGFzIHVudXNlZCBlYXNpbmdz
LgorICAgIC8vIEZJWE1FOiBXZSBkb24ndCBkZWFsIHdpdGggdGhpcyB5ZXQuCisKKyAgICAvLyAx
MS4gQXNzaWduIGVhY2ggdmFsdWUgaW4gZWFzaW5ncyB0byBhIHByb3BlcnR5IG5hbWVkIOKAnGVh
c2luZ+KAnSBvbiB0aGUga2V5ZnJhbWUgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBp
biBwcm9wZXJ0eSBrZXlmcmFtZXMgdW50aWwgdGhlIGVuZCBvZiBwcm9wZXJ0eSBrZXlmcmFtZXMK
KyAgICAvLyAgICAgaXMgcmVhY2hlZC4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGVhc2lu
Z3Muc2l6ZSgpICYmIGkgPCBwcm9jZXNzZWRLZXlmcmFtZXMuc2l6ZSgpOyArK2kpCisgICAgICAg
IHByb2Nlc3NlZEtleWZyYW1lc1tpXS5lYXNpbmcgPSBlYXNpbmdzW2ldOworCisgICAgLy8gMTIu
IElmIHRoZSDigJxjb21wb3NpdGXigJ0gbWVtYmVyIG9mIHRoZSBwcm9wZXJ0eS1pbmRleGVkIGtl
eWZyYW1lIGlzIG5vdCBhbiBlbXB0eSBzZXF1ZW5jZToKKyAgICBWZWN0b3I8S2V5ZnJhbWVFZmZl
Y3Q6OkNvbXBvc2l0ZU9wZXJhdGlvbj4gY29tcG9zaXRlTW9kZXM7CisgICAgaWYgKFdURjo6aG9s
ZHNfYWx0ZXJuYXRpdmU8VmVjdG9yPEtleWZyYW1lRWZmZWN0OjpDb21wb3NpdGVPcGVyYXRpb24+
Pihwcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKQorICAg
ICAgICBjb21wb3NpdGVNb2RlcyA9IFdURjo6Z2V0PFZlY3RvcjxLZXlmcmFtZUVmZmVjdDo6Q29t
cG9zaXRlT3BlcmF0aW9uPj4ocHJvcGVydHlJbmRleGVkS2V5ZnJhbWUuYmFzZVByb3BlcnRpZXMu
Y29tcG9zaXRlKTsKKyAgICBlbHNlIGlmIChXVEY6OmhvbGRzX2FsdGVybmF0aXZlPEtleWZyYW1l
RWZmZWN0OjpDb21wb3NpdGVPcGVyYXRpb24+KHByb3BlcnR5SW5kZXhlZEtleWZyYW1lLmJhc2VQ
cm9wZXJ0aWVzLmNvbXBvc2l0ZSkpCisgICAgICAgIGNvbXBvc2l0ZU1vZGVzLmFwcGVuZChXVEY6
OmdldDxLZXlmcmFtZUVmZmVjdDo6Q29tcG9zaXRlT3BlcmF0aW9uPihwcm9wZXJ0eUluZGV4ZWRL
ZXlmcmFtZS5iYXNlUHJvcGVydGllcy5jb21wb3NpdGUpKTsKKyAgICBpZiAoIWNvbXBvc2l0ZU1v
ZGVzLmlzRW1wdHkoKSkgeworICAgICAgICAvLyAxLiBMZXQgY29tcG9zaXRlIG1vZGVzIGJlIGEg
c2VxdWVuY2Ugb2YgY29tcG9zaXRlIG9wZXJhdGlvbnMgYXNzaWduZWQgZnJvbSB0aGUg4oCcY29t
cG9zaXRl4oCdIG1lbWJlciBvZiBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lLiBJZiB0aGF0IG1l
bWJlciBpcyBhIHNpbmdsZSBjb21wb3NpdGUKKyAgICAgICAgLy8gICAgb3BlcmF0aW9uLCBsZXQg
Y29tcG9zaXRlIG1vZGVzIGJlIGEgc2VxdWVuY2Ugb2YgbGVuZ3RoIG9uZSwgd2l0aCB0aGUgdmFs
dWUgb2YgdGhlIOKAnGNvbXBvc2l0ZeKAnSBhcyBpdHMgc2luZ2xlIGl0ZW0uCisgICAgICAgIC8v
IDIuIEFzIHdpdGggZWFzaW5ncywgaWYgY29tcG9zaXRlIG1vZGVzIGhhcyBmZXdlciBpdGVtcyB0
aGFuIHByb3BlcnR5IGtleWZyYW1lcywgcmVwZWF0IHRoZSBlbGVtZW50cyBpbiBjb21wb3NpdGUg
bW9kZXMgc3VjY2Vzc2l2ZWx5IHN0YXJ0aW5nIGZyb20gdGhlIGJlZ2lubmluZyBvZgorICAgICAg
ICAvLyAgICB0aGUgbGlzdCB1bnRpbCBjb21wb3NpdGUgbW9kZXMgaGFzIGFzIG1hbnkgaXRlbXMg
YXMgcHJvcGVydHkga2V5ZnJhbWVzLgorICAgICAgICBpZiAoY29tcG9zaXRlTW9kZXMuc2l6ZSgp
IDwgcHJvY2Vzc2VkS2V5ZnJhbWVzLnNpemUoKSkgeworICAgICAgICAgICAgc2l6ZV90IGluaXRp
YWxOdW1iZXJPZkNvbXBvc2l0ZU1vZGVzID0gY29tcG9zaXRlTW9kZXMuc2l6ZSgpOworICAgICAg
ICAgICAgZm9yIChpID0gaW5pdGlhbE51bWJlck9mQ29tcG9zaXRlTW9kZXMgKyAxOyBpIDwgcHJv
Y2Vzc2VkS2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkKKyAgICAgICAgICAgICAgICBjb21wb3Np
dGVNb2Rlcy5hcHBlbmQoY29tcG9zaXRlTW9kZXNbaSAlIGluaXRpYWxOdW1iZXJPZkNvbXBvc2l0
ZU1vZGVzXSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gMy4gQXNzaWduIGVhY2ggdmFsdWUgaW4g
Y29tcG9zaXRlIG1vZGVzIHRvIHRoZSBrZXlmcmFtZS1zcGVjaWZpYyBjb21wb3NpdGUgb3BlcmF0
aW9uIG9uIHRoZSBrZXlmcmFtZSB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHBy
b3BlcnR5IGtleWZyYW1lcyB1bnRpbAorICAgICAgICAvLyAgICB0aGUgZW5kIG9mIHByb3BlcnR5
IGtleWZyYW1lcyBpcyByZWFjaGVkLgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNv
bXBvc2l0ZU1vZGVzLnNpemUoKSAmJiBpIDwgcHJvY2Vzc2VkS2V5ZnJhbWVzLnNpemUoKTsgKytp
KQorICAgICAgICAgICAgcHJvY2Vzc2VkS2V5ZnJhbWVzW2ldLmNvbXBvc2l0ZSA9IGNvbXBvc2l0
ZU1vZGVzW2ldOworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKIEV4Y2VwdGlvbk9yPFJl
ZjxLZXlmcmFtZUVmZmVjdD4+IEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoRXhlY1N0YXRlJiBzdGF0
ZSwgRWxlbWVudCogdGFyZ2V0LCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzKQogewogICAg
IGF1dG8ga2V5ZnJhbWVFZmZlY3QgPSBhZG9wdFJlZigqbmV3IEtleWZyYW1lRWZmZWN0KHRhcmdl
dCkpOwpAQCAtNTYsNzUgKzM4MiwxMDMgQEAgS2V5ZnJhbWVFZmZlY3Q6OktleWZyYW1lRWZmZWN0
KEVsZW1lbnQqIHRhcmdldCkKIHsKIH0KIAotRXhjZXB0aW9uT3I8dm9pZD4gS2V5ZnJhbWVFZmZl
Y3Q6OnNldEtleWZyYW1lcyhFeGVjU3RhdGUmIHN0YXRlLCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5
ZnJhbWVzKQorRXhjZXB0aW9uT3I8dm9pZD4gS2V5ZnJhbWVFZmZlY3Q6OnNldEtleWZyYW1lcyhF
eGVjU3RhdGUmIHN0YXRlLCBTdHJvbmc8SlNPYmplY3Q+JiYga2V5ZnJhbWVzSW5wdXQpCiB7Ci0g
ICAgYXV0byBwcm9jZXNzS2V5ZnJhbWVzUmVzdWx0ID0gcHJvY2Vzc0tleWZyYW1lcyhzdGF0ZSwg
V1RGTW92ZShrZXlmcmFtZXMpKTsKLSAgICBpZiAocHJvY2Vzc0tleWZyYW1lc1Jlc3VsdC5oYXNF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIHByb2Nlc3NLZXlmcmFtZXNSZXN1bHQucmVsZWFz
ZUV4Y2VwdGlvbigpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIHByb2Nlc3NLZXlmcmFt
ZXMoc3RhdGUsIFdURk1vdmUoa2V5ZnJhbWVzSW5wdXQpKTsKIH0KIAotRXhjZXB0aW9uT3I8dm9p
ZD4gS2V5ZnJhbWVFZmZlY3Q6OnByb2Nlc3NLZXlmcmFtZXMoRXhlY1N0YXRlJiBzdGF0ZSwgU3Ry
b25nPEpTT2JqZWN0PiYmIGtleWZyYW1lcykKK0V4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZm
ZWN0Ojpwcm9jZXNzS2V5ZnJhbWVzKEV4ZWNTdGF0ZSYgc3RhdGUsIFN0cm9uZzxKU09iamVjdD4m
JiBrZXlmcmFtZXNJbnB1dCkKIHsKLSAgICAvLyBGSVhNRTogV2Ugb25seSBoYXZlIHByaW1pdGl2
ZSB0by1mcm9tIHBhcnNpbmcsIGZvciBmdWxsIHN1cHBvcnQgc2VlIHdlYmtpdC5vcmcvYi8xNzk3
MDguCi0gICAgLy8gRnVsbCBzcGVjaWZpY2F0aW9uIGlzIGF0IGh0dHBzOi8vdzNjLmdpdGh1Yi5p
by93ZWItYW5pbWF0aW9ucy8jcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1hcmd1bWVudC4KLQotICAg
IGlmICghbV90YXJnZXQgfHwgIWtleWZyYW1lcykKKyAgICAvLyAxLiBJZiBvYmplY3QgaXMgbnVs
bCwgcmV0dXJuIGFuIGVtcHR5IHNlcXVlbmNlIG9mIGtleWZyYW1lcy4KKyAgICBpZiAoIW1fdGFy
Z2V0IHx8ICFrZXlmcmFtZXNJbnB1dC5nZXQoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAg
IGlmICghaXNKU0FycmF5KGtleWZyYW1lcy5nZXQoKSkpCi0gICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBUeXBlRXJyb3IgfTsKLQotICAgIEtleWZyYW1lTGlzdCBuZXdLZXlmcmFtZXMoImtleWZy
YW1lLWVmZmVjdC0iICsgY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpKTsKLQogICAgIFZNJiB2
bSA9IHN0YXRlLnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCi0gICAgU3R5bGVSZXNvbHZlciYgc3R5bGVSZXNvbHZlciA9IG1fdGFyZ2V0LT5zdHlsZVJl
c29sdmVyKCk7Ci0gICAgYXV0byBwYXJzZXJDb250ZXh0ID0gQ1NTUGFyc2VyQ29udGV4dChIVE1M
U3RhbmRhcmRNb2RlKTsKKyAgICAvLyAyLiBMZXQgcHJvY2Vzc2VkIGtleWZyYW1lcyBiZSBhbiBl
bXB0eSBzZXF1ZW5jZSBvZiBrZXlmcmFtZXMuCisgICAgVmVjdG9yPFByb2Nlc3NlZEtleWZyYW1l
PiBwcm9jZXNzZWRLZXlmcmFtZXM7CiAKLSAgICBhdXRvKiBhcnJheSA9IGpzQ2FzdDxjb25zdCBK
U0FycmF5Kj4oa2V5ZnJhbWVzLmdldCgpKTsKLSAgICBhdXRvIGxlbmd0aCA9IGFycmF5LT5sZW5n
dGgoKTsKLSAgICBpZiAobGVuZ3RoICE9IDIpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBU
eXBlRXJyb3IgfTsKKyAgICAvLyAzLiBMZXQgbWV0aG9kIGJlIHRoZSByZXN1bHQgb2YgR2V0TWV0
aG9kKG9iamVjdCwgQEBpdGVyYXRvcikuCisgICAgYXV0byBtZXRob2QgPSBrZXlmcmFtZXNJbnB1
dC5nZXQoKS0+Z2V0KCZzdGF0ZSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wpOwog
Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGNv
bnN0IEpTVmFsdWUgdmFsdWUgPSBhcnJheS0+Z2V0SW5kZXgoJnN0YXRlLCBpKTsKLSAgICAgICAg
aWYgKHNjb3BlLmV4Y2VwdGlvbigpIHx8ICF2YWx1ZSB8fCAhdmFsdWUuaXNPYmplY3QoKSkKKyAg
ICAvLyA0LiBDaGVjayB0aGUgY29tcGxldGlvbiByZWNvcmQgb2YgbWV0aG9kLgorICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9KTsKKworICAgIC8v
IDUuIFBlcmZvcm0gdGhlIHN0ZXBzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IG1hdGNoaW5n
IGNvbmRpdGlvbiBmcm9tIGJlbG93LAorICAgIGlmICghbWV0aG9kLmlzVW5kZWZpbmVkKCkpCisg
ICAgICAgIHByb2Nlc3NJdGVyYWJsZUtleWZyYW1lcyhzdGF0ZSwgV1RGTW92ZShrZXlmcmFtZXNJ
bnB1dCksIFdURk1vdmUobWV0aG9kKSwgcHJvY2Vzc2VkS2V5ZnJhbWVzKTsKKyAgICBlbHNlCisg
ICAgICAgIHByb2Nlc3NQcm9wZXJ0eUluZGV4ZWRLZXlmcmFtZXMoc3RhdGUsIFdURk1vdmUoa2V5
ZnJhbWVzSW5wdXQpLCBwcm9jZXNzZWRLZXlmcmFtZXMpOworCisgICAgaWYgKCFwcm9jZXNzZWRL
ZXlmcmFtZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgLy8gNi4gSWYgcHJv
Y2Vzc2VkIGtleWZyYW1lcyBpcyBub3QgbG9vc2VseSBzb3J0ZWQgYnkgb2Zmc2V0LCB0aHJvdyBh
IFR5cGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgLy8gNy4gSWYgdGhlcmUgZXhp
c3QgYW55IGtleWZyYW1lIGluIHByb2Nlc3NlZCBrZXlmcmFtZXMgd2hvc2Uga2V5ZnJhbWUgb2Zm
c2V0IGlzIG5vbi1udWxsIGFuZCBsZXNzIHRoYW4KKyAgICAvLyAgICB6ZXJvIG9yIGdyZWF0ZXIg
dGhhbiBvbmUsIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBk
b3VibGUgbGFzdE5vbk51bGxPZmZzZXQgPSAtMTsKKyAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDog
cHJvY2Vzc2VkS2V5ZnJhbWVzKSB7CisgICAgICAgIGlmICgha2V5ZnJhbWUub2Zmc2V0KQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0ga2V5ZnJhbWUub2Zmc2V0
LnZhbHVlKCk7CisgICAgICAgIGlmIChvZmZzZXQgPD0gbGFzdE5vbk51bGxPZmZzZXQgfHwgb2Zm
c2V0IDwgMCB8fCBvZmZzZXQgPiAxKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5
cGVFcnJvciB9OwotICAgICAgICBKU09iamVjdCoga2V5ZnJhbWUgPSB2YWx1ZS50b09iamVjdCgm
c3RhdGUpOwotICAgICAgICBQcm9wZXJ0eU5hbWVBcnJheSBvd25Qcm9wZXJ0eU5hbWVzKCZ2bSwg
UHJvcGVydHlOYW1lTW9kZTo6U3RyaW5ncywgUHJpdmF0ZVN5bWJvbE1vZGU6OkV4Y2x1ZGUpOwot
ICAgICAgICBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlOYW1lcyhrZXlmcmFtZSwgJnN0YXRlLCBv
d25Qcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUoKSk7Ci0gICAgICAgIHNpemVfdCBudW1i
ZXJPZlByb3BlcnRpZXMgPSBvd25Qcm9wZXJ0eU5hbWVzLnNpemUoKTsKKyAgICAgICAgbGFzdE5v
bk51bGxPZmZzZXQgPSBvZmZzZXQ7CisgICAgfQorCisgICAgLy8gV2UgdGFrZSBhIHNsaWdodCBk
ZXRvdXIgZnJvbSB0aGUgc3BlYyB0ZXh0IGFuZCBjb21wdXRlIHRoZSBtaXNzaW5nIGtleWZyYW1l
IG9mZnNldHMgcmlnaHQgYXdheQorICAgIC8vIHNpbmNlIHRoZXkgY2FuIGJlIGNvbXB1dGVkIHVw
LWZyb250LgorICAgIGNvbXB1dGVNaXNzaW5nS2V5ZnJhbWVPZmZzZXRzKHByb2Nlc3NlZEtleWZy
YW1lcyk7CisKKyAgICBLZXlmcmFtZUxpc3Qga2V5ZnJhbWVMaXN0KCJrZXlmcmFtZS1lZmZlY3Qt
IiArIGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSk7CisgICAgU3R5bGVSZXNvbHZlciYgc3R5
bGVSZXNvbHZlciA9IG1fdGFyZ2V0LT5zdHlsZVJlc29sdmVyKCk7CisgICAgYXV0byBwYXJzZXJD
b250ZXh0ID0gQ1NTUGFyc2VyQ29udGV4dChIVE1MU3RhbmRhcmRNb2RlKTsKKworICAgIC8vIDgu
IEZvciBlYWNoIGZyYW1lIGluIHByb2Nlc3NlZCBrZXlmcmFtZXMsIHBlcmZvcm0gdGhlIGZvbGxv
d2luZyBzdGVwczoKKyAgICBmb3IgKGF1dG8mIGtleWZyYW1lIDogcHJvY2Vzc2VkS2V5ZnJhbWVz
KSB7CisgICAgICAgIC8vIDEuIEZvciBlYWNoIHByb3BlcnR5LXZhbHVlIHBhaXIgaW4gZnJhbWUs
IHBhcnNlIHRoZSBwcm9wZXJ0eSB2YWx1ZSB1c2luZyB0aGUgc3ludGF4IHNwZWNpZmllZCBmb3Ig
dGhhdCBwcm9wZXJ0eS4KKyAgICAgICAgLy8gICAgSWYgdGhlIHByb3BlcnR5IHZhbHVlIGlzIGlu
dmFsaWQgYWNjb3JkaW5nIHRvIHRoZSBzeW50YXggZm9yIHRoZSBwcm9wZXJ0eSwgZGlzY2FyZCB0
aGUgcHJvcGVydHktdmFsdWUgcGFpci4KKyAgICAgICAgLy8gICAgVXNlciBhZ2VudHMgdGhhdCBw
cm92aWRlIHN1cHBvcnQgZm9yIGRpYWdub3NpbmcgZXJyb3JzIGluIGNvbnRlbnQgU0hPVUxEIHBy
b2R1Y2UgYW4gYXBwcm9wcmlhdGUgd2FybmluZworICAgICAgICAvLyAgICBoaWdobGlnaHRpbmcg
dGhlIGludmFsaWQgcHJvcGVydHkgdmFsdWUuCiAKICAgICAgICAgU3RyaW5nQnVpbGRlciBjc3NU
ZXh0OwotICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51bWJlck9mUHJvcGVydGllczsg
KytqKSB7Ci0gICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChvd25Qcm9wZXJ0eU5hbWVzW2pdLnN0
cmluZygpKTsKKyAgICAgICAgZm9yIChhdXRvIGl0ID0ga2V5ZnJhbWUuY3NzUHJvcGVydGllc0Fu
ZFZhbHVlcy5iZWdpbigpLCBlbmQgPSBrZXlmcmFtZS5jc3NQcm9wZXJ0aWVzQW5kVmFsdWVzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgICAgIGNzc1RleHQuYXBwZW5kKGdldFBy
b3BlcnR5TmFtZVN0cmluZyhpdC0+a2V5KSk7CiAgICAgICAgICAgICBjc3NUZXh0LmFwcGVuZExp
dGVyYWwoIjogIik7Ci0gICAgICAgICAgICBjc3NUZXh0LmFwcGVuZChrZXlmcmFtZS0+Z2V0KCZz
dGF0ZSwgb3duUHJvcGVydHlOYW1lc1tqXSkudG9XVEZTdHJpbmcoJnN0YXRlKSk7CisgICAgICAg
ICAgICBjc3NUZXh0LmFwcGVuZChpdC0+dmFsdWUpOwogICAgICAgICAgICAgY3NzVGV4dC5hcHBl
bmRMaXRlcmFsKCI7ICIpOwogICAgICAgICB9CiAKKyAgICAgICAgS2V5ZnJhbWVWYWx1ZSBrZXlm
cmFtZVZhbHVlKGtleWZyYW1lLm9mZnNldC52YWx1ZSgpLCBudWxscHRyKTsKICAgICAgICAgYXV0
byByZW5kZXJTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICAgICAgYXV0byBz
dHlsZVByb3BlcnRpZXMgPSBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpjcmVhdGUoKTsKICAgICAg
ICAgc3R5bGVQcm9wZXJ0aWVzLT5wYXJzZURlY2xhcmF0aW9uKGNzc1RleHQudG9TdHJpbmcoKSwg
cGFyc2VyQ29udGV4dCk7CiAgICAgICAgIHVuc2lnbmVkIG51bWJlck9mQ1NTUHJvcGVydGllcyA9
IHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlDb3VudCgpOwogCi0gICAgICAgIEtleWZyYW1lVmFs
dWUga2V5ZnJhbWVWYWx1ZSgwLCBudWxscHRyKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBrID0g
MDsgayA8IG51bWJlck9mQ1NTUHJvcGVydGllczsgKytrKSB7Ci0gICAgICAgICAgICBhdXRvIGNz
c1Byb3BlcnR5SWQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3BlcnR5QXQoaykuaWQoKTsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ1NTUHJvcGVydGllczsgKytpKSB7
CisgICAgICAgICAgICBhdXRvIGNzc1Byb3BlcnR5SWQgPSBzdHlsZVByb3BlcnRpZXMtPnByb3Bl
cnR5QXQoaSkuaWQoKTsKICAgICAgICAgICAgIGtleWZyYW1lVmFsdWUuYWRkUHJvcGVydHkoY3Nz
UHJvcGVydHlJZCk7Ci0gICAgICAgICAgICBuZXdLZXlmcmFtZXMuYWRkUHJvcGVydHkoY3NzUHJv
cGVydHlJZCk7Ci0gICAgICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVydHlUb1N0eWxl
KGNzc1Byb3BlcnR5SWQsIHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBdChrKS52YWx1ZSgpLCBX
VEZNb3ZlKHJlbmRlclN0eWxlKSk7CisgICAgICAgICAgICBrZXlmcmFtZUxpc3QuYWRkUHJvcGVy
dHkoY3NzUHJvcGVydHlJZCk7CisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLmFwcGx5UHJvcGVy
dHlUb1N0eWxlKGNzc1Byb3BlcnR5SWQsIHN0eWxlUHJvcGVydGllcy0+cHJvcGVydHlBdChpKS52
YWx1ZSgpLCBXVEZNb3ZlKHJlbmRlclN0eWxlKSk7CiAgICAgICAgICAgICByZW5kZXJTdHlsZSA9
IHN0eWxlUmVzb2x2ZXIuc3RhdGUoKS50YWtlU3R5bGUoKTsKICAgICAgICAgfQogCi0gICAgICAg
IGtleWZyYW1lVmFsdWUuc2V0S2V5KGkpOwogICAgICAgICBrZXlmcmFtZVZhbHVlLnNldFN0eWxl
KFJlbmRlclN0eWxlOjpjbG9uZVB0cigqcmVuZGVyU3R5bGUpKTsKLSAgICAgICAgbmV3S2V5ZnJh
bWVzLmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKKyAgICAgICAga2V5ZnJhbWVMaXN0
Lmluc2VydChXVEZNb3ZlKGtleWZyYW1lVmFsdWUpKTsKKworICAgICAgICAvLyAyLiBMZXQgdGhl
IHRpbWluZyBmdW5jdGlvbiBvZiBmcmFtZSBiZSB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIOKA
nGVhc2luZ+KAnSBwcm9wZXJ0eSBvbiBmcmFtZSB1c2luZyB0aGUgQ1NTIHN5bnRheAorICAgICAg
ICAvLyAgICBkZWZpbmVkIGZvciB0aGUgZWFzaW5nIHByb3BlcnR5IG9mIHRoZSBBbmltYXRpb25F
ZmZlY3RUaW1pbmdSZWFkT25seSBpbnRlcmZhY2UuCisgICAgICAgIC8vICAgIElmIHBhcnNpbmcg
dGhlIOKAnGVhc2luZ+KAnSBwcm9wZXJ0eSBmYWlscywgdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFi
b3J0IHRoaXMgcHJvY2VkdXJlLgorICAgICAgICAvLyBGSVhNRTogaW1wbGVtZW50IHdoZW4gd2Ug
c3VwcG9ydCBlYXNpbmcuCiAgICAgfQogCi0gICAgbV9rZXlmcmFtZXMgPSBXVEZNb3ZlKG5ld0tl
eWZyYW1lcyk7CisgICAgLy8gOS4gUGFyc2UgZWFjaCBvZiB0aGUgdmFsdWVzIGluIHVudXNlZCBl
YXNpbmdzIHVzaW5nIHRoZSBDU1Mgc3ludGF4IGRlZmluZWQgZm9yIGVhc2luZyBwcm9wZXJ0eSBv
ZiB0aGUKKyAgICAvLyAgICBBbmltYXRpb25FZmZlY3RUaW1pbmdSZWFkT25seSBpbnRlcmZhY2Us
IGFuZCBpZiBhbnkgb2YgdGhlIHZhbHVlcyBmYWlsIHRvIHBhcnNlLCB0aHJvdyBhIFR5cGVFcnJv
cgorICAgIC8vICAgIGFuZCBhYm9ydCB0aGlzIHByb2NlZHVyZS4KKyAgICAvLyBGSVhNRTogaW1w
bGVtZW50IHdoZW4gd2Ugc3VwcG9ydCBlYXNpbmcuCisKKyAgICBtX2tleWZyYW1lcyA9IFdURk1v
dmUoa2V5ZnJhbWVMaXN0KTsKIAogICAgIGNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKTsK
IApAQCAtMTcwLDExICs1MjQsOCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseUF0TG9jYWxU
aW1lKFNlY29uZHMgbG9jYWxUaW1lLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIH0KICAg
ICBtX3N0YXJ0ZWQgPSB0cnVlOwogCi0gICAgaWYgKCFuZWVkc1RvU3RhcnRBY2NlbGVyYXRlZCAm
JiAhbV9zdGFydGVkQWNjZWxlcmF0ZWQpIHsKLSAgICAgICAgZmxvYXQgcHJvZ3Jlc3MgPSBsb2Nh
bFRpbWUgLyB0aW1pbmcoKS0+ZHVyYXRpb24oKTsKLSAgICAgICAgZm9yIChhdXRvIGNzc1Byb3Bl
cnR5SWQgOiBtX2tleWZyYW1lcy5wcm9wZXJ0aWVzKCkpCi0gICAgICAgICAgICBDU1NQcm9wZXJ0
eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIGNzc1Byb3BlcnR5SWQsICZ0YXJnZXRT
dHlsZSwgbV9rZXlmcmFtZXNbMF0uc3R5bGUoKSwgbV9rZXlmcmFtZXNbMV0uc3R5bGUoKSwgcHJv
Z3Jlc3MpOwotICAgIH0KKyAgICBpZiAoIW5lZWRzVG9TdGFydEFjY2VsZXJhdGVkICYmICFtX3N0
YXJ0ZWRBY2NlbGVyYXRlZCkKKyAgICAgICAgc2V0QW5pbWF0ZWRQcm9wZXJ0aWVzSW5TdHlsZSh0
YXJnZXRTdHlsZSwgbG9jYWxUaW1lIC8gdGltaW5nKCktPmR1cmF0aW9uKCkpOwogCiAgICAgLy8g
aHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYi1hbmltYXRpb25zLyNzaWRlLWVmZmVjdHMtc2VjdGlv
bgogICAgIC8vIEZvciBldmVyeSBwcm9wZXJ0eSB0YXJnZXRlZCBieSBhdCBsZWFzdCBvbmUgYW5p
bWF0aW9uIGVmZmVjdCB0aGF0IGlzIGN1cnJlbnQgb3IgaW4gZWZmZWN0LCB0aGUgdXNlciBhZ2Vu
dApAQCAtMjEwLDkgKzU2MSw1MyBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpnZXRBbmltYXRlZFN0
eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4mIGFuaW1hdGVkU3R5bAogICAgIGlmICgh
YW5pbWF0ZWRTdHlsZSkKICAgICAgICAgYW5pbWF0ZWRTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9u
ZVB0cihyZW5kZXJlcigpLT5zdHlsZSgpKTsKIAorICAgIHNldEFuaW1hdGVkUHJvcGVydGllc0lu
U3R5bGUoKmFuaW1hdGVkU3R5bGUuZ2V0KCksIGxvY2FsVGltZS52YWx1ZSgpIC8gdGltaW5nKCkt
PmR1cmF0aW9uKCkpOworfQorCit2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRBbmltYXRlZFByb3Bl
cnRpZXNJblN0eWxlKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgZG91YmxlIHByb2dyZXNzKQor
eworICAgIHNpemVfdCBudW1iZXJPZktleWZyYW1lcyA9IG1fa2V5ZnJhbWVzLnNpemUoKTsKICAg
ICBmb3IgKGF1dG8gY3NzUHJvcGVydHlJZCA6IG1fa2V5ZnJhbWVzLnByb3BlcnRpZXMoKSkgewot
ICAgICAgICBmbG9hdCBwcm9ncmVzcyA9IGxvY2FsVGltZS52YWx1ZSgpIC8gdGltaW5nKCktPmR1
cmF0aW9uKCk7Ci0gICAgICAgIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXMo
dGhpcywgY3NzUHJvcGVydHlJZCwgYW5pbWF0ZWRTdHlsZS5nZXQoKSwgbV9rZXlmcmFtZXNbMF0u
c3R5bGUoKSwgbV9rZXlmcmFtZXNbMV0uc3R5bGUoKSwgcHJvZ3Jlc3MpOworICAgICAgICBpbnQg
c3RhcnRLZXlmcmFtZUluZGV4ID0gLTE7CisgICAgICAgIGludCBlbmRLZXlmcmFtZUluZGV4ID0g
LTE7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZktleWZyYW1lczsg
KytpKSB7CisgICAgICAgICAgICBhdXRvJiBrZXlmcmFtZSA9IG1fa2V5ZnJhbWVzW2ldOworICAg
ICAgICAgICAgaWYgKCFrZXlmcmFtZS5jb250YWluc1Byb3BlcnR5KGNzc1Byb3BlcnR5SWQpKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoa2V5ZnJhbWUua2V5
KCkgPiBwcm9ncmVzcykgeworICAgICAgICAgICAgICAgIGVuZEtleWZyYW1lSW5kZXggPSBpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdGFy
dEtleWZyYW1lSW5kZXggPSBpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZGlkbid0
IGZpbmQgYSBzdGFydCBrZXlmcmFtZSwgdGhpcyBtZWFucyB0aGVyZSBpcyBhbiBpbXBsaWNpdCBz
dGFydCBrZXlmcmFtZS4KKyAgICAgICAgZG91YmxlIHN0YXJ0T2Zmc2V0OworICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZTsKKyAgICAgICAgaWYgKHN0YXJ0S2V5ZnJhbWVJbmRl
eCA9PSAtMSkgeworICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSAwOworICAgICAgICAgICAgc3Rh
cnRTdHlsZSA9ICZ0YXJnZXRTdHlsZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0
YXJ0T2Zmc2V0ID0gbV9rZXlmcmFtZXNbc3RhcnRLZXlmcmFtZUluZGV4XS5rZXkoKTsKKyAgICAg
ICAgICAgIHN0YXJ0U3R5bGUgPSBtX2tleWZyYW1lc1tzdGFydEtleWZyYW1lSW5kZXhdLnN0eWxl
KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhbiBlbmQga2V5
ZnJhbWUsIHRoaXMgbWVhbnMgdGhlcmUgaXMgYW4gaW1wbGljaXQgZW5kIGtleWZyYW1lLgorICAg
ICAgICBkb3VibGUgZW5kT2Zmc2V0OworICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSogZW5kU3R5
bGU7CisgICAgICAgIGlmIChlbmRLZXlmcmFtZUluZGV4ID09IC0xKSB7CisgICAgICAgICAgICBl
bmRPZmZzZXQgPSAxOworICAgICAgICAgICAgZW5kU3R5bGUgPSAmdGFyZ2V0U3R5bGU7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlbmRPZmZzZXQgPSBtX2tleWZyYW1lc1tlbmRLZXlm
cmFtZUluZGV4XS5rZXkoKTsKKyAgICAgICAgICAgIGVuZFN0eWxlID0gbV9rZXlmcmFtZXNbZW5k
S2V5ZnJhbWVJbmRleF0uc3R5bGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcHJvZ3Jl
c3NJblJhbmdlID0gKHByb2dyZXNzIC0gc3RhcnRPZmZzZXQpIC8gKGVuZE9mZnNldCAtIHN0YXJ0
T2Zmc2V0KTsKKyAgICAgICAgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcyh0
aGlzLCBjc3NQcm9wZXJ0eUlkLCAmdGFyZ2V0U3R5bGUsIHN0YXJ0U3R5bGUsIGVuZFN0eWxlLCBw
cm9ncmVzc0luUmFuZ2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaAppbmRleCA3YjQ5YzE5NjJlMjMyOWUyNzg2ZDQ5YzZhOTYyNDIwNjhkZWQ4
MGUyLi5jYzJiOTg5MWY2MmEzMTcwNjFhYWY1ODkxNGVjMzRlNjE1MjEyMTczIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtNDEsNiArNDEsMzEgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8S2V5ZnJhbWVFZmZlY3Q+PiBjcmVhdGUo
SlNDOjpFeGVjU3RhdGUmLCBFbGVtZW50KiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJik7
CiAgICAgfktleWZyYW1lRWZmZWN0KCkgeyB9CiAKKyAgICBlbnVtIGNsYXNzIENvbXBvc2l0ZU9w
ZXJhdGlvbiB7IFJlcGxhY2UsIEFkZCwgQWNjdW11bGF0ZSB9OworCisgICAgc3RydWN0IEJhc2VQ
cm9wZXJ0eUluZGV4ZWRLZXlmcmFtZSB7CisgICAgICAgIFZhcmlhbnQ8c3RkOjpudWxscHRyX3Qs
IGRvdWJsZSwgVmVjdG9yPHN0ZDo6b3B0aW9uYWw8ZG91YmxlPj4+IG9mZnNldDsKKyAgICAgICAg
VmFyaWFudDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+PiBlYXNpbmc7CisgICAgICAgIFZhcmlhbnQ8
Q29tcG9zaXRlT3BlcmF0aW9uLCBWZWN0b3I8Q29tcG9zaXRlT3BlcmF0aW9uPj4gY29tcG9zaXRl
OworICAgIH07CisKKyAgICBzdHJ1Y3QgUHJvcGVydHlBbmRWYWx1ZXMgeworICAgICAgICBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5OworICAgICAgICBWZWN0b3I8U3RyaW5nPiB2YWx1ZXM7CisgICAg
fTsKKworICAgIHN0cnVjdCBLZXlmcmFtZUxpa2VPYmplY3QgeworICAgICAgICBCYXNlUHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUgYmFzZVByb3BlcnRpZXM7CisgICAgICAgIFZlY3RvcjxQcm9wZXJ0
eUFuZFZhbHVlcz4gcHJvcGVydGllc0FuZFZhbHVlczsKKyAgICB9OworCisgICAgc3RydWN0IFBy
b2Nlc3NlZEtleWZyYW1lIHsKKyAgICAgICAgU3RyaW5nIGVhc2luZzsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG9mZnNldDsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxDb21wb3NpdGVP
cGVyYXRpb24+IGNvbXBvc2l0ZTsKKyAgICAgICAgSGFzaE1hcDxDU1NQcm9wZXJ0eUlELCBTdHJp
bmc+IGNzc1Byb3BlcnRpZXNBbmRWYWx1ZXM7CisgICAgfTsKKwogICAgIEVsZW1lbnQqIHRhcmdl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgRXhjZXB0aW9uT3I8dm9p
ZD4gc2V0S2V5ZnJhbWVzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4mJik7CiAgICAgdm9pZCBnZXRBbmltYXRlZFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4mIGFuaW1hdGVkU3R5bGUpOwpAQCAtNjAsNiArODUsOCBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIEtleWZyYW1lRWZmZWN0KEVsZW1lbnQqKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBw
cm9jZXNzS2V5ZnJhbWVzKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4mJik7CisKKyAgICB2b2lkIHNldEFuaW1hdGVkUHJvcGVydGllc0luU3R5bGUoUmVuZGVyU3R5
bGUmLCBkb3VibGUpOwogICAgIHZvaWQgY29tcHV0ZVN0YWNraW5nQ29udGV4dEltcGFjdCgpOwog
ICAgIGJvb2wgc2hvdWxkUnVuQWNjZWxlcmF0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5pZGwKaW5kZXggNTE5YTBiNmYzMDUxNWJkZGI2MGFmMzhmOWUx
OTNhMTNhZWQyNzI3Yi4uYjhlNDE1ZTIwYTk0MDYxMGYwMDljNmE1ZTBkYzI5MDQxZTc4ODliNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaWRsCkBAIC0zMiwz
ICszMiwxMSBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50PyB0YXJnZXQ7CiAgICAg
W01heVRocm93RXhjZXB0aW9uLCBDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gdm9pZCBzZXRLZXlmcmFt
ZXMob2JqZWN0PyBrZXlmcmFtZXMpOwogfTsKKworZW51bSBDb21wb3NpdGVPcGVyYXRpb24geyAi
cmVwbGFjZSIsICJhZGQiLCAiYWNjdW11bGF0ZSIgfTsKKworZGljdGlvbmFyeSBCYXNlUHJvcGVy
dHlJbmRleGVkS2V5ZnJhbWUgeworICAgIChkb3VibGU/IG9yIHNlcXVlbmNlPGRvdWJsZT8+KSBv
ZmZzZXQgPSBbXTsKKyAgICAoRE9NU3RyaW5nIG9yIHNlcXVlbmNlPERPTVN0cmluZz4pIGVhc2lu
ZyA9IFtdOworICAgIChDb21wb3NpdGVPcGVyYXRpb24gb3Igc2VxdWVuY2U8Q29tcG9zaXRlT3Bl
cmF0aW9uPikgY29tcG9zaXRlID0gW107Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
RGVjbGFyYXRpb24uY3BwCmluZGV4IDJmNjg4NjIyZDUxZTI5NDk3NjA1MWJiMTVkNDBjYTlkODAw
Mzk2NTMuLmI1MTM3MDVkMDljMDkyMGMxNGIzYzI3OThhYzAxZGJmZDZkYmM5MjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTI1MCw2ICsyNTAsMTEg
QEAgc3RhdGljIENTU1Byb3BlcnR5SW5mbyBwYXJzZUphdmFTY3JpcHRDU1NQcm9wZXJ0eU5hbWUo
Y29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXIKIAogfQogCitDU1NQcm9wZXJ0eUlEIENTU1N0eWxl
RGVjbGFyYXRpb246OmdldENTU1Byb3BlcnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gcGFyc2VKYXZh
U2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSkucHJvcGVydHlJRDsKK30KKwogc3Rk
OjpvcHRpb25hbDxWYXJpYW50PFN0cmluZywgZG91YmxlPj4gQ1NTU3R5bGVEZWNsYXJhdGlvbjo6
bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIGF1dG8g
cHJvcGVydHlJbmZvID0gcGFyc2VKYXZhU2NyaXB0Q1NTUHJvcGVydHlOYW1lKHByb3BlcnR5TmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVEZWNsYXJhdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlRGVjbGFyYXRpb24uaAppbmRleCBkYmI5OTFh
NmZhNzA0NmJhNjc2ZTJjZTQ2Mjc5NzhkN2Q3ZDliZGVjLi5iMThjOWNlMzI3NDk5YWNkMDUyYWUy
OGYwODM1N2NkZjc0MDI5Zjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVEZWNsYXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZURlY2xhcmF0
aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHVibGljOgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNl
dE5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFN0cmluZyB2YWx1ZSwgYm9vbCYg
cHJvcGVydHlTdXBwb3J0ZWQpOwogICAgIFZlY3RvcjxBdG9taWNTdHJpbmc+IHN1cHBvcnRlZFBy
b3BlcnR5TmFtZXMoKSBjb25zdDsKIAorICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIGdldENTU1By
b3BlcnR5SURGcm9tSmF2YVNjcmlwdFByb3BlcnR5TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsK
IHByb3RlY3RlZDoKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKCkgPSBkZWZhdWx0OwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmNwcAppbmRleCA5ZTVkYzJjOGI5YjAxNTBhYzM4YmIyMzQyY2M0ZjE2YzJhYzBhNGU5Li5l
YTEyMTg5NTE1ODMwZTkzODg1NjU4NGQxYjliNzUzOWExOWYxZTRmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCkBA
IC0xNzE2LDYgKzE3MTYsMTEgQEAgYm9vbCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9w
ZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKK2Jvb2wgQ1NTUHJvcGVydHlBbmltYXRpb246OmlzUHJvcGVydHlBbmltYXRh
YmxlKENTU1Byb3BlcnR5SUQgcHJvcCkKK3sKKyAgICByZXR1cm4gQ1NTUHJvcGVydHlBbmltYXRp
b25XcmFwcGVyTWFwOjpzaW5nbGV0b24oKS53cmFwcGVyRm9yUHJvcGVydHkocHJvcCk7Cit9CisK
IGJvb2wgQ1NTUHJvcGVydHlBbmltYXRpb246OmFuaW1hdGlvbk9mUHJvcGVydHlJc0FjY2VsZXJh
dGVkKENTU1Byb3BlcnR5SUQgcHJvcCkKIHsKICAgICBBbmltYXRpb25Qcm9wZXJ0eVdyYXBwZXJC
YXNlKiB3cmFwcGVyID0gQ1NTUHJvcGVydHlBbmltYXRpb25XcmFwcGVyTWFwOjpzaW5nbGV0b24o
KS53cmFwcGVyRm9yUHJvcGVydHkocHJvcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uaAppbmRleCBmZDk0ZGQxNjJmNzY5MDVj
ZmI0OGYyNzQwYTI5Y2M0MjA2MTEwYTMxLi5lOWZjN2ZmYTc0NDI0OGI1YWZjMjYwMTU4NTMwNDkx
OTU2NWNmNzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQ
cm9wZXJ0eUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NT
U1Byb3BlcnR5QW5pbWF0aW9uLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgUmVuZGVyU3R5bGU7
CiAKIGNsYXNzIENTU1Byb3BlcnR5QW5pbWF0aW9uIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgYm9v
bCBpc1Byb3BlcnR5QW5pbWF0YWJsZShDU1NQcm9wZXJ0eUlEKTsKICAgICBzdGF0aWMgYm9vbCBh
bmltYXRpb25PZlByb3BlcnR5SXNBY2NlbGVyYXRlZChDU1NQcm9wZXJ0eUlEKTsKICAgICBzdGF0
aWMgYm9vbCBwcm9wZXJ0aWVzRXF1YWwoQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUq
IGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiKTsKICAgICBzdGF0aWMgQ1NTUHJvcGVydHlJRCBnZXRQ
cm9wZXJ0eUF0SW5kZXgoaW50LCBib29sJiBpc1Nob3J0aGFuZCk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDU1YzA2MTQ1
YjUxNzBjZGY4YmY0ZDZlNGE1ZDNjOTEzYzljMWQ5ZC4uOTNiOWI2OTUxMDJkOTU5OWI3OGU2ZWQ1
NWIzNjE1NWNhZGRlYzIyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTEyLTIxICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBDb21wbGV0ZSBzdXBwb3J0IGZvciBrZXlmcmFtZSBhbmltYXRpb25zCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzk3MDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2Ugc29tZSBXUFQgZXhwZWN0
YXRpb25zIHdpdGggcHJvZ3Jlc3Npb25zIGR1ZSB0byBzdXBwb3J0aW5nIGFsbCBrZXlmcmFtZXMg
YXJndW1lbnRzLgorCisgICAgICAgICogaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNl
cy9LZXlmcmFtZUVmZmVjdC9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0
cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9wcm9jZXNzaW5n
LWEta2V5ZnJhbWVzLWFyZ3VtZW50LTAwMi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93
cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9zZXRLZXlmcmFtZXMt
ZXhwZWN0ZWQudHh0OgorCiAyMDE3LTEyLTIwICBNczJnZXIgIDxNczJnZXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBNYWtlIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3F1b3Rlcy1sYW5nLmh0
bWwgcGFzcyBvbiBHVEsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFt
ZUVmZmVjdC9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggNTdiNmZlZTU4Yzc1M2Q1YzEz
YjZhOGE4YmU2ZjJmNWJkYTMzMzE4OS4uNGFjYThhOTE3ZTQ5NGNjMjIyOWExYmJiMDNmMDNiNGQx
NWE4ODlhZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMv
aW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVm
ZmVjdC9jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTE5Nyw3ICsxOTcsNSBAQCBGQUlMIElu
dmFsaWQgS2V5ZnJhbWVFZmZlY3RSZWFkT25seSBvcHRpb24gYnkgYSBtdWx0aS12YWx1ZSBlYXNp
bmcgYXNzZXJ0X3Rocm93cwogICAgIH0iIHRocmV3IG9iamVjdCAiUmVmZXJlbmNlRXJyb3I6IENh
bid0IGZpbmQgdmFyaWFibGU6IEtleWZyYW1lRWZmZWN0UmVhZE9ubHkiICgiUmVmZXJlbmNlRXJy
b3IiKSBleHBlY3RlZCBvYmplY3QgIltvYmplY3QgT2JqZWN0XSIgKCJUeXBlRXJyb3IiKQogRkFJ
TCBhIEtleWZyYW1lRWZmZWN0UmVhZE9ubHkgY29uc3RydWN0ZWQgd2l0aCBudWxsIHRhcmdldCBD
YW4ndCBmaW5kIHZhcmlhYmxlOiBLZXlmcmFtZUVmZmVjdFJlYWRPbmx5CiBQQVNTIEtleWZyYW1l
RWZmZWN0IGNvbnN0cnVjdG9yIGNyZWF0ZXMgYW4gQW5pbWF0aW9uRWZmZWN0VGltaW5nIHRpbWlu
ZyBvYmplY3QgCi1GQUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHByb3BhZ2F0ZXMgZXhj
ZXB0aW9ucyBnZW5lcmF0ZWQgYnkgYWNjZXNzaW5nIHRoZSBvcHRpb25zIG9iamVjdCBhc3NlcnRf
dGhyb3dzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgewotICAgIG5ldyBLZXlmcmFtZUVmZmVjdCh0
YXJnZXQsIHsgZ2V0IGxlZnQoKSB7IHRocm93IHRlc3RfZXJyb3IgfX0pCi0gIH0iIHRocmV3IG9i
amVjdCAiVHlwZUVycm9yOiBUeXBlIGVycm9yIiAoIlR5cGVFcnJvciIpIGV4cGVjdGVkIG9iamVj
dCAiW29iamVjdCBPYmplY3RdIiAoInRlc3QiKQorUEFTUyBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1
Y3RvciBwcm9wYWdhdGVzIGV4Y2VwdGlvbnMgZ2VuZXJhdGVkIGJ5IGFjY2Vzc2luZyB0aGUgb3B0
aW9ucyBvYmplY3QgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1h
cmd1bWVudC0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1h
dGlvbnMvaW50ZXJmYWNlcy9LZXlmcmFtZUVmZmVjdC9wcm9jZXNzaW5nLWEta2V5ZnJhbWVzLWFy
Z3VtZW50LTAwMi1leHBlY3RlZC50eHQKaW5kZXggMzBiMzkzM2I4OTBlZTY5NzYzNTVlM2M3ZTBi
MGIzMzUzYWFlYWQwYi4uYzVjYjgwMTdjM2VjNjZhMjBiMmFmNjgzNWZmNDJjNTkxZDIxMTc1OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNl
cy9LZXlmcmFtZUVmZmVjdC9wcm9jZXNzaW5nLWEta2V5ZnJhbWVzLWFyZ3VtZW50LTAwMi1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJm
YWNlcy9LZXlmcmFtZUVmZmVjdC9wcm9jZXNzaW5nLWEta2V5ZnJhbWVzLWFyZ3VtZW50LTAwMi1l
eHBlY3RlZC50eHQKQEAgLTEsOSArMSwxMyBAQAogCi1GQUlMIGVhc2luZyB2YWx1ZXMgYXJlIHBh
cnNlZCBjb3JyZWN0bHkgd2hlbiBzZXQgb24gYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lIFR5
cGUgZXJyb3IKK0ZBSUwgZWFzaW5nIHZhbHVlcyBhcmUgcGFyc2VkIGNvcnJlY3RseSB3aGVuIHNl
dCBvbiBhIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWUgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBu
b3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtl
eWZyYW1lcycgaXMgdW5kZWZpbmVkKQogRkFJTCBlYXNpbmcgdmFsdWVzIGFyZSBwYXJzZWQgY29y
cmVjdGx5IHdoZW4gdXNpbmcgYSBrZXlmcmFtZSBzZXF1ZW5jZSBlZmZlY3QuZ2V0S2V5ZnJhbWVz
IGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3Qu
Z2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCi1QQVNTIEludmFsaWQgZWFzaW5nIHZhbHVlcyBh
cmUgY29ycmVjdGx5IHJlamVjdGVkIHdoZW4gc2V0IG9uIGEgcHJvcGVydHktaW5kZXhlZCBrZXlm
cmFtZSAKLVBBU1MgSW52YWxpZCBlYXNpbmcgdmFsdWVzIGFyZSBjb3JyZWN0bHkgcmVqZWN0ZWQg
d2hlbiB1c2luZyBhIGtleWZyYW1lIHNlcXVlbmNlIAotRkFJTCBFcnJvcnMgZnJvbSBpbnZhbGlk
IGVhc2luZ3Mgb24gYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lIGFyZSB0aHJvd24gYWZ0ZXIg
cmVhZGluZyBhbGwgcHJvcGVydGllcyBhc3NlcnRfZXF1YWxzOiBBbGwgcHJvcGVydGllcyB3ZXJl
IHJlYWQgYmVmb3JlIHRocm93aW5nIHRoZSBlYXNpbmcgZXJyb3IgZXhwZWN0ZWQgMiBidXQgZ290
IDAKK0ZBSUwgSW52YWxpZCBlYXNpbmcgdmFsdWVzIGFyZSBjb3JyZWN0bHkgcmVqZWN0ZWQgd2hl
biBzZXQgb24gYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lIGFzc2VydF90aHJvd3M6IFR5cGVF
cnJvciBpcyB0aHJvd24gZm9yIGVhc2luZyAnJyBmdW5jdGlvbiAiKCkgPT4geworICAgICAgbmV3
IEtleWZyYW1lRWZmZWN0KHRhcmdldCwgeyBlYXNpbmc6IGludmFsaWRFYXNpbmcgfSk7CisgICAg
fSIgZGlkIG5vdCB0aHJvdworRkFJTCBJbnZhbGlkIGVhc2luZyB2YWx1ZXMgYXJlIGNvcnJlY3Rs
eSByZWplY3RlZCB3aGVuIHVzaW5nIGEga2V5ZnJhbWUgc2VxdWVuY2UgYXNzZXJ0X3Rocm93czog
VHlwZUVycm9yIGlzIHRocm93biBmb3IgZWFzaW5nICcnIGZ1bmN0aW9uICIoKSA9PiB7CisgICAg
ICBuZXcgS2V5ZnJhbWVFZmZlY3QodGFyZ2V0LCBbeyBlYXNpbmc6IGludmFsaWRFYXNpbmcgfV0p
OworICAgIH0iIGRpZCBub3QgdGhyb3cKK0ZBSUwgRXJyb3JzIGZyb20gaW52YWxpZCBlYXNpbmdz
IG9uIGEgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZSBhcmUgdGhyb3duIGFmdGVyIHJlYWRpbmcg
YWxsIHByb3BlcnRpZXMgYXNzZXJ0X2VxdWFsczogQWxsIHByb3BlcnRpZXMgd2VyZSByZWFkIGJl
Zm9yZSB0aHJvd2luZyB0aGUgZWFzaW5nIGVycm9yIGV4cGVjdGVkIDIgYnV0IGdvdCAxCiBGQUlM
IEVycm9ycyBmcm9tIGludmFsaWQgZWFzaW5ncyBvbiBhIGtleWZyYW1lIHNlcXVlbmNlIGFyZSB0
aHJvd24gYWZ0ZXIgcmVhZGluZyBhbGwgcHJvcGVydGllcyBhc3NlcnRfdGhyb3dzOiBmdW5jdGlv
biAiKCkgPT4gewogICAgIG5ldyBLZXlmcmFtZUVmZmVjdCh0YXJnZXQsIFsga2YxLCBrZjIgXSk7
CiAgIH0iIGRpZCBub3QgdGhyb3cKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
Yi1hbmltYXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3Qvc2V0S2V5ZnJhbWVzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYi1hbmltYXRpb25zL2ludGVyZmFjZXMv
S2V5ZnJhbWVFZmZlY3Qvc2V0S2V5ZnJhbWVzLWV4cGVjdGVkLnR4dAppbmRleCAyZjBmN2YzMjUw
OTA3MGI2MTFlYTljZTA4ZGFjZGM3MGUyOTA3MmFjLi4xZDA4MWFjN2RkOGRhY2Q4ODA3NThjMDY2
MWIxOWM2ZDdkODM4NGRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWItYW5p
bWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3NldEtleWZyYW1lcy1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2ViLWFuaW1hdGlvbnMvaW50ZXJmYWNlcy9L
ZXlmcmFtZUVmZmVjdC9zZXRLZXlmcmFtZXMtZXhwZWN0ZWQudHh0CkBAIC0xLDQ5ICsxLDUzIEBA
CiAKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IGtleWZyYW1l
IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHBy
b3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9u
IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHNo
b3J0aGFuZCBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3Bl
Y2lmaWNhdGlvbiBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0
aCBhIHR3byBwcm9wZXJ0eSAob25lIHNob3J0aGFuZCBhbmQgb25lIG9mIGl0cyBsb25naGFuZCBj
b21wb25lbnRzKSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNh
dGlvbiBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3
byBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNh
dGlvbiBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3
byBwcm9wZXJ0eSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdpdGgg
ZGlmZmVyZW50IG51bWJlcnMgb2YgdmFsdWVzIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNh
biBiZSByZXBsYWNlZCB3aXRoIGEgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNh
dGlvbiB3aXRoIGFuIGludmFsaWQgdmFsdWUgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2Fu
IGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdvIHZhbHVlIHByb3BlcnR5LWluZGV4
ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gdGhhdCBuZWVkcyB0byBzdHJpbmdpZnkgaXRzIHZh
bHVlcyBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHBy
b3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gd2l0aCBhIENTUyB2YXJpYWJs
ZSByZWZlcmVuY2UgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdp
dGggYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdpdGggYSBDU1Mg
dmFyaWFibGUgcmVmZXJlbmNlIGluIGEgc2hvcnRoYW5kIHByb3BlcnR5IFR5cGUgZXJyb3IKLUZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IG9uZSB2YWx1
ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIFR5cGUgZXJyb3IKLUZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IG9uZSBub24t
YXJyYXkgdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiBUeXBl
IGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0
eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB3aGVy
ZSB0aGUgZmlyc3QgdmFsdWUgaXMgaW52YWxpZCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5k
ZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB3aGVyZSB0aGUgc2Vjb25kIHZhbHVlIGlzIGlu
dmFsaWQgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBv
bmUgcHJvcGVydHkgb25lIGtleWZyYW1lIHNlcXVlbmNlIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJh
bWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byBrZXlmcmFtZSBzZXF1
ZW5jZSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3
byBwcm9wZXJ0eSB0d28ga2V5ZnJhbWUgc2VxdWVuY2UgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFt
ZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgc2hvcnRoYW5kIHByb3BlcnR5IHR3byBrZXlm
cmFtZSBzZXF1ZW5jZSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQg
d2l0aCBhIHR3byBwcm9wZXJ0eSAoYSBzaG9ydGhhbmQgYW5kIG9uZSBvZiBpdHMgY29tcG9uZW50
IGxvbmdoYW5kcykgdHdvIGtleWZyYW1lIHNlcXVlbmNlIFR5cGUgZXJyb3IKK0ZBSUwgS2V5ZnJh
bWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGFuIGVtcHR5IGtleWZyYW1lIGVmZmVjdC5nZXRLZXlm
cmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2Vm
ZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSBy
ZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byB2YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtl
eWZyYW1lcyBzcGVjaWZpY2F0aW9uIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHNo
b3J0aGFuZCBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3Bl
Y2lmaWNhdGlvbiBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2Vm
ZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQp
CitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSAob25l
IHNob3J0aGFuZCBhbmQgb25lIG9mIGl0cyBsb25naGFuZCBjb21wb25lbnRzKSB0d28gdmFsdWUg
cHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiBlZmZlY3QuZ2V0S2V5ZnJh
bWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZl
Y3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVw
bGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlm
cmFtZXMgc3BlY2lmaWNhdGlvbiBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9u
LiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1
bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9w
ZXJ0eSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIHdpdGggZGlmZmVy
ZW50IG51bWJlcnMgb2YgdmFsdWVzIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rp
b24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlz
IHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgcHJvcGVy
dHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB3aXRoIGFuIGludmFsaWQgdmFsdWUg
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdvIHZhbHVlIHByb3Bl
cnR5LWluZGV4ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gdGhhdCBuZWVkcyB0byBzdHJpbmdp
ZnkgaXRzIHZhbHVlcyBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4g
J2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmlu
ZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHByb3BlcnR5LWluZGV4
ZWQga2V5ZnJhbWVzIHNwZWNpZmljYXRpb24gd2l0aCBhIENTUyB2YXJpYWJsZSByZWZlcmVuY2Ug
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBz
cGVjaWZpY2F0aW9uIHdpdGggYSBDU1MgdmFyaWFibGUgcmVmZXJlbmNlIGluIGEgc2hvcnRoYW5k
IHByb3BlcnR5IGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZm
ZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IG9uZSB2
YWx1ZSBwcm9wZXJ0eS1pbmRleGVkIGtleWZyYW1lcyBzcGVjaWZpY2F0aW9uIGVmZmVjdC5nZXRL
ZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywg
J2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBi
ZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IG9uZSBub24tYXJyYXkgdmFsdWUgcHJvcGVy
dHktaW5kZXhlZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlz
IG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0
S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQg
d2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMg
c3BlY2lmaWNhdGlvbiB3aGVyZSB0aGUgZmlyc3QgdmFsdWUgaXMgaW52YWxpZCBlZmZlY3QuZ2V0
S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScs
ICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4g
YmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSB0d28gdmFsdWUgcHJvcGVydHktaW5kZXhl
ZCBrZXlmcmFtZXMgc3BlY2lmaWNhdGlvbiB3aGVyZSB0aGUgc2Vjb25kIHZhbHVlIGlzIGludmFs
aWQgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0
S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBL
ZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgb25lIGtleWZyYW1l
IHNlcXVlbmNlIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZm
ZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IHR3byBr
ZXlmcmFtZSBzZXF1ZW5jZSBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRl
ZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0
eSB0d28ga2V5ZnJhbWUgc2VxdWVuY2UgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5j
dGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycg
aXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUg
c2hvcnRoYW5kIHByb3BlcnR5IHR3byBrZXlmcmFtZSBzZXF1ZW5jZSBlZmZlY3QuZ2V0S2V5ZnJh
bWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZl
Y3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVw
bGFjZWQgd2l0aCBhIHR3byBwcm9wZXJ0eSAoYSBzaG9ydGhhbmQgYW5kIG9uZSBvZiBpdHMgY29t
cG9uZW50IGxvbmdoYW5kcykgdHdvIGtleWZyYW1lIHNlcXVlbmNlIGVmZmVjdC5nZXRLZXlmcmFt
ZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVj
dC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKIEZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBkdXBsaWNhdGUgdmFsdWVzIGZvciBh
IGdpdmVuIGludGVyaW9yIG9mZnNldCBUeXBlIGVycm9yCiBGQUlMIEtleWZyYW1lcyBjYW4gYmUg
cmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggZHVwbGljYXRlIHZhbHVlcyBm
b3Igb2Zmc2V0cyAwIGFuZCAxIFR5cGUgZXJyb3IKIEZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBs
YWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5IGZvdXIga2V5ZnJhbWUgc2VxdWVuY2UgVHlwZSBlcnJv
cgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBzaW5nbGUga2V5ZnJhbWUg
c2VxdWVuY2Ugd2l0aCBvbWl0dGVkIG9mZnNldCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIG51bGwg
b2Zmc2V0IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEg
c2luZ2xlIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggc3RyaW5nIG9mZnNldCBUeXBlIGVycm9yCi1G
QUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSBrZXlmcmFt
ZSBzZXF1ZW5jZSB3aXRoIHNvbWUgb21pdHRlZCBvZmZzZXRzIFR5cGUgZXJyb3IKLUZBSUwgS2V5
ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IGtleWZyYW1lIHNlcXVl
bmNlIHdpdGggc29tZSBudWxsIG9mZnNldHMgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2Fu
IGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBz
b21lIG9taXR0ZWQgb2Zmc2V0cyBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVw
bGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIGFsbCBvbWl0
dGVkIG9mZnNldHMgVHlwZSBlcnJvcgorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdp
dGggYSBzaW5nbGUga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBvbWl0dGVkIG9mZnNldCBlZmZlY3Qu
Z2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMo
KScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIG51bGwg
b2Zmc2V0IGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0
LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZB
SUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgc2luZ2xlIGtleWZyYW1lIHNlcXVl
bmNlIHdpdGggc3RyaW5nIG9mZnNldCBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0
aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBp
cyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBw
cm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIHNvbWUgb21pdHRlZCBvZmZzZXRzIGVmZmVj
dC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1l
cygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVz
IGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgb25lIHByb3BlcnR5IGtleWZyYW1lIHNlcXVlbmNlIHdp
dGggc29tZSBudWxsIG9mZnNldHMgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMg
dW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJv
cGVydHkga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBzb21lIG9taXR0ZWQgb2Zmc2V0cyBlZmZlY3Qu
Z2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMo
KScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIG9uZSBwcm9wZXJ0eSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRo
IGFsbCBvbWl0dGVkIG9mZnNldHMgZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlv
bi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMg
dW5kZWZpbmVkKQogRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlmcmFt
ZSBzZXF1ZW5jZSB3aXRoIGRpZmZlcmVudCBlYXNpbmcgdmFsdWVzLCBidXQgdGhlIHNhbWUgZWFz
aW5nIHZhbHVlIGZvciBhIGdpdmVuIG9mZnNldCBUeXBlIGVycm9yCiBGQUlMIEtleWZyYW1lcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggZGlmZmVyZW50IGNv
bXBvc2l0ZSB2YWx1ZXMsIGJ1dCB0aGUgc2FtZSBjb21wb3NpdGUgdmFsdWUgZm9yIGEgZ2l2ZW4g
b2Zmc2V0IFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEg
b25lIHByb3BlcnR5IHR3byBrZXlmcmFtZSBzZXF1ZW5jZSB0aGF0IG5lZWRzIHRvIHN0cmluZ2lm
eSBpdHMgdmFsdWVzIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3
aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBhIENTUyB2YXJpYWJsZSByZWZlcmVuY2UgVHlw
ZSBlcnJvcgotRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlmcmFtZSBz
ZXF1ZW5jZSB3aXRoIGEgQ1NTIHZhcmlhYmxlIHJlZmVyZW5jZSBpbiBhIHNob3J0aGFuZCBwcm9w
ZXJ0eSBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtl
eWZyYW1lIHNlcXVlbmNlIHdoZXJlIHNob3J0aGFuZCBwcmVjZWRlcyBsb25naGFuZCBUeXBlIGVy
cm9yCi1GQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVl
bmNlIHdoZXJlIGxvbmdoYW5kIHByZWNlZGVzIHNob3J0aGFuZCBUeXBlIGVycm9yCi1GQUlMIEtl
eWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdoZXJlIGxl
c3NlciBzaG9ydGhhbmQgcHJlY2VkZXMgZ3JlYXRlciBzaG9ydGhhbmQgVHlwZSBlcnJvcgotRkFJ
TCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBrZXlmcmFtZSBzZXF1ZW5jZSB3aGVy
ZSBncmVhdGVyIHNob3J0aGFuZCBwcmVjZWRlcyBsZXNzZXIgc2hvcnRoYW5kIFR5cGUgZXJyb3IK
LUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgdHdvIHByb3BlcnR5IGtleWZy
YW1lIHNlcXVlbmNlIHdoZXJlIG9uZSBwcm9wZXJ0eSBpcyBtaXNzaW5nIGZyb20gdGhlIGZpcnN0
IGtleWZyYW1lIFR5cGUgZXJyb3IKLUZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRo
IGEgdHdvIHByb3BlcnR5IGtleWZyYW1lIHNlcXVlbmNlIHdoZXJlIG9uZSBwcm9wZXJ0eSBpcyBt
aXNzaW5nIGZyb20gdGhlIGxhc3Qga2V5ZnJhbWUgVHlwZSBlcnJvcgorRkFJTCBLZXlmcmFtZXMg
Y2FuIGJlIHJlcGxhY2VkIHdpdGggYSBvbmUgcHJvcGVydHkgdHdvIGtleWZyYW1lIHNlcXVlbmNl
IHRoYXQgbmVlZHMgdG8gc3RyaW5naWZ5IGl0cyB2YWx1ZXMgZWZmZWN0LmdldEtleWZyYW1lcyBp
cyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5ZnJhbWVzKCknLCAnZWZmZWN0Lmdl
dEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlmcmFtZXMgY2FuIGJlIHJlcGxhY2Vk
IHdpdGggYSBrZXlmcmFtZSBzZXF1ZW5jZSB3aXRoIGEgQ1NTIHZhcmlhYmxlIHJlZmVyZW5jZSBl
ZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlm
cmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCitGQUlMIEtleWZy
YW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggYSBDU1Mg
dmFyaWFibGUgcmVmZXJlbmNlIGluIGEgc2hvcnRoYW5kIHByb3BlcnR5IGVmZmVjdC5nZXRLZXlm
cmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2Vm
ZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSBy
ZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2hlcmUgc2hvcnRoYW5kIHByZWNlZGVz
IGxvbmdoYW5kIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMgbm90IGEgZnVuY3Rpb24uIChJbiAnZWZm
ZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRLZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkK
K0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ug
d2hlcmUgbG9uZ2hhbmQgcHJlY2VkZXMgc2hvcnRoYW5kIGVmZmVjdC5nZXRLZXlmcmFtZXMgaXMg
bm90IGEgZnVuY3Rpb24uIChJbiAnZWZmZWN0LmdldEtleWZyYW1lcygpJywgJ2VmZmVjdC5nZXRL
ZXlmcmFtZXMnIGlzIHVuZGVmaW5lZCkKK0ZBSUwgS2V5ZnJhbWVzIGNhbiBiZSByZXBsYWNlZCB3
aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2hlcmUgbGVzc2VyIHNob3J0aGFuZCBwcmVjZWRlcyBn
cmVhdGVyIHNob3J0aGFuZCBlZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAo
SW4gJ2VmZmVjdC5nZXRLZXlmcmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRl
ZmluZWQpCitGQUlMIEtleWZyYW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNl
cXVlbmNlIHdoZXJlIGdyZWF0ZXIgc2hvcnRoYW5kIHByZWNlZGVzIGxlc3NlciBzaG9ydGhhbmQg
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVu
Y2Ugd2hlcmUgb25lIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSB0aGUgZmlyc3Qga2V5ZnJhbWUg
ZWZmZWN0LmdldEtleWZyYW1lcyBpcyBub3QgYSBmdW5jdGlvbi4gKEluICdlZmZlY3QuZ2V0S2V5
ZnJhbWVzKCknLCAnZWZmZWN0LmdldEtleWZyYW1lcycgaXMgdW5kZWZpbmVkKQorRkFJTCBLZXlm
cmFtZXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSB0d28gcHJvcGVydHkga2V5ZnJhbWUgc2VxdWVu
Y2Ugd2hlcmUgb25lIHByb3BlcnR5IGlzIG1pc3NpbmcgZnJvbSB0aGUgbGFzdCBrZXlmcmFtZSBl
ZmZlY3QuZ2V0S2V5ZnJhbWVzIGlzIG5vdCBhIGZ1bmN0aW9uLiAoSW4gJ2VmZmVjdC5nZXRLZXlm
cmFtZXMoKScsICdlZmZlY3QuZ2V0S2V5ZnJhbWVzJyBpcyB1bmRlZmluZWQpCiBGQUlMIEtleWZy
YW1lcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggcmVwZWF0
ZWQgdmFsdWVzIGF0IG9mZnNldCAxIHdpdGggZGlmZmVyZW50IGVhc2luZ3MgVHlwZSBlcnJvcgot
RkFJTCBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJvd3Mgd2l0aCBrZXlmcmFtZXMgd2l0
aCBhbiBvdXQtb2YtYm91bmRlZCBwb3NpdGl2ZSBvZmZzZXQgVHlwZSBlcnJvcgotRkFJTCBLZXlm
cmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJvd3Mgd2l0aCBrZXlmcmFtZXMgd2l0aCBhbiBvdXQt
b2YtYm91bmRlZCBuZWdhdGl2ZSBvZmZzZXQgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZUVmZmVj
dCBjb25zdHJ1Y3RvciB0aHJvd3Mgd2l0aCBrZXlmcmFtZXMgbm90IGxvb3NlbHkgc29ydGVkIGJ5
IG9mZnNldCBUeXBlIGVycm9yCi1GQUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93
cyB3aXRoIHByb3BlcnR5LWluZGV4ZWQga2V5ZnJhbWVzIHdpdGggYW4gaW52YWxpZCBlYXNpbmcg
dmFsdWUgVHlwZSBlcnJvcgotRkFJTCBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJvd3Mg
d2l0aCBhIGtleWZyYW1lIHNlcXVlbmNlIHdpdGggYW4gaW52YWxpZCBlYXNpbmcgdmFsdWUgVHlw
ZSBlcnJvcgotRkFJTCBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJvd3Mgd2l0aCBrZXlm
cmFtZXMgd2l0aCBhbiBpbnZhbGlkIGNvbXBvc2l0ZSB2YWx1ZSBUeXBlIGVycm9yCitQQVNTIEtl
eWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyB3aXRoIGFuIG91
dC1vZi1ib3VuZGVkIHBvc2l0aXZlIG9mZnNldCAKK1BBU1MgS2V5ZnJhbWVFZmZlY3QgY29uc3Ry
dWN0b3IgdGhyb3dzIHdpdGgga2V5ZnJhbWVzIHdpdGggYW4gb3V0LW9mLWJvdW5kZWQgbmVnYXRp
dmUgb2Zmc2V0IAorUEFTUyBLZXlmcmFtZUVmZmVjdCBjb25zdHJ1Y3RvciB0aHJvd3Mgd2l0aCBr
ZXlmcmFtZXMgbm90IGxvb3NlbHkgc29ydGVkIGJ5IG9mZnNldCAKK0ZBSUwgS2V5ZnJhbWVFZmZl
Y3QgY29uc3RydWN0b3IgdGhyb3dzIHdpdGggcHJvcGVydHktaW5kZXhlZCBrZXlmcmFtZXMgd2l0
aCBhbiBpbnZhbGlkIGVhc2luZyB2YWx1ZSBhc3NlcnRfdGhyb3dzOiBmdW5jdGlvbiAiZnVuY3Rp
b24gKCkgeworICAgICAgZWZmZWN0LnNldEtleWZyYW1lcyhzdWJ0ZXN0LmlucHV0KTsKKyAgICB9
IiBkaWQgbm90IHRocm93CitGQUlMIEtleWZyYW1lRWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3
aXRoIGEga2V5ZnJhbWUgc2VxdWVuY2Ugd2l0aCBhbiBpbnZhbGlkIGVhc2luZyB2YWx1ZSBhc3Nl
cnRfdGhyb3dzOiBmdW5jdGlvbiAiZnVuY3Rpb24gKCkgeworICAgICAgZWZmZWN0LnNldEtleWZy
YW1lcyhzdWJ0ZXN0LmlucHV0KTsKKyAgICB9IiBkaWQgbm90IHRocm93CitQQVNTIEtleWZyYW1l
RWZmZWN0IGNvbnN0cnVjdG9yIHRocm93cyB3aXRoIGtleWZyYW1lcyB3aXRoIGFuIGludmFsaWQg
Y29tcG9zaXRlIHZhbHVlIAogCg==
</data>
<flag name="review"
          id="349080"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>