<?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>191596</bug_id>
          
          <creation_ts>2018-11-13 13:17:14 -0800</creation_ts>
          <short_desc>[iOS] Shift + Tab does not focus previous field</short_desc>
          <delta_ts>2018-11-15 11:15:39 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 12</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.facebook.com</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar, PlatformOnly</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>173341</dependson>
          <blocked>190571</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>megan_gardner</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1478113</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-13 13:17:14 -0800</bug_when>
    <thetext>Pressing Shift + Tab does not focus the previous field on facebook.com.

Steps to reproduce:

The following assume that a hardware keyboard is attached.

1. Visit &lt;https://www.facebook.com&gt;.
2. Tap the password field.
3. Press Shift + Tab.

Then the Email or Phone field should be focused. But there is no change in focus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478115</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-13 13:17:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/45892053&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478132</commentid>
    <comment_count>2</comment_count>
      <attachid>354699</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-13 13:50:24 -0800</bug_when>
    <thetext>Created attachment 354699
Patch and layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478154</commentid>
    <comment_count>3</comment_count>
      <attachid>354699</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-13 15:03:52 -0800</bug_when>
    <thetext>Comment on attachment 354699
Patch and layout tests

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

r=me, with non-internal iOS builds fixed

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:2427
&gt; +        return [self isFirstResponder];

Have you considered consulting `AssistedNodeInformation.hasNextNode` or `AssistedNodeInformation.hasPreviousNode` as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478155</commentid>
    <comment_count>4</comment_count>
      <attachid>354699</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-13 15:07:54 -0800</bug_when>
    <thetext>Comment on attachment 354699
Patch and layout tests

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

&gt; Tools/ChangeLog:21
&gt; +        and an array of modifier keys. The behavior of this function is analagous to eventSender.keyDown().

Nit - analagous =&gt; analogous

&gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:405
&gt; +    // Character can be either a single Unicode code point or a the name of a special key (e.g. &quot;downArrow&quot;).

Nit - &quot;or a the&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478215</commentid>
    <comment_count>5</comment_count>
      <attachid>354728</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-13 16:42:04 -0800</bug_when>
    <thetext>Created attachment 354728
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478216</commentid>
    <comment_count>6</comment_count>
      <attachid>354728</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-13 16:42:53 -0800</bug_when>
    <thetext>Comment on attachment 354728
For EWS

For EWS. Need to address review feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478976</commentid>
    <comment_count>7</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-15 10:58:18 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #3)
&gt; Comment on attachment 354699 [details]
&gt; Patch and layout tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354699&amp;action=review
&gt; 
&gt; r=me, with non-internal iOS builds fixed
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:2427
&gt; &gt; +        return [self isFirstResponder];
&gt; 
&gt; Have you considered consulting `AssistedNodeInformation.hasNextNode` or
&gt; `AssistedNodeInformation.hasPreviousNode` as well?

Will write in terms of AssistedNodeInformation.has{Next, Previous}Node such that the beginning of -canPerformActionForWebView reads:
[[
- (BOOL)canPerformActionForWebView:(SEL)action withSender:(id)sender
{        
{
    if (action == @selector(_nextAccessoryTab:))
        return hasAssistedNode(_assistedNodeInformation) &amp;&amp; _assistedNodeInformation.hasNextNode;
    if (action == @selector(_previousAccessoryTab:))
        return hasAssistedNode(_assistedNodeInformation) &amp;&amp; _assistedNodeInformation.hasPreviousNode;
...
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478977</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-15 10:58:33 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 354699 [details]
&gt; Patch and layout tests
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=354699&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:21
&gt; &gt; +        and an array of modifier keys. The behavior of this function is analagous to eventSender.keyDown().
&gt; 
&gt; Nit - analagous =&gt; analogous
&gt; 

Will fix.

&gt; &gt; Tools/WebKitTestRunner/ios/UIScriptControllerIOS.mm:405
&gt; &gt; +    // Character can be either a single Unicode code point or a the name of a special key (e.g. &quot;downArrow&quot;).
&gt; 
&gt; Nit - &quot;or a the&quot;

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478980</commentid>
    <comment_count>9</comment_count>
      <attachid>354957</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-15 11:04:55 -0800</bug_when>
    <thetext>Created attachment 354957
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1478982</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-11-15 11:15:39 -0800</bug_when>
    <thetext>Committed r238235: &lt;https://trac.webkit.org/changeset/238235&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354699</attachid>
            <date>2018-11-13 13:50:24 -0800</date>
            <delta_ts>2018-11-13 16:42:03 -0800</delta_ts>
            <desc>Patch and layout tests</desc>
            <filename>bug-191596-20181113135023.patch</filename>
            <type>text/plain</type>
            <size>27657</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDI4ODI1ODc5Y2ViOWNiNjRk
ZjRkZTZlYTk2YTkwMjYzNWEzYzdkMzAuLjc1ZTgwNzI2OWRmYzhmZWQyOGRlNjgxNjY2MWRjNWZi
NmI3ZDRhMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTEtMTMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNoaWZ0ICsgVGFiIGRv
ZXMgbm90IGZvY3VzIHByZXZpb3VzIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1ODky
MDUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdp
cmUgdXAgdGhlIHRoZSB0YWIgYW5kIHNoaWZ0ICsgdGFiIGtleSBjb21tYW5kcyB0byB0aGUgV0tX
ZWJWaWV3L1dLQ29udGVudFZpZXcncworICAgICAgICBhY3Rpb24gZm9yd2FyZGluZyBtZWNoYW5p
c20uIEFsc28gcmVuYW1lIC1fcHJldkFjY2Vzc29yeVRhYiB0byAtX3ByZXZpb3VzQWNjZXNzb3J5
VGFiLgorCisgICAgICAgICogUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oOiBBZGQgbW9yZSBT
UEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAg
ICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgY2FuUGVyZm9ybUFjdGlvbkZvcldlYlZpZXc6d2l0aFNlbmRlcjpd
KToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBrZXlDb21tYW5kc10pOgorICAgICAgICAoLVtX
S0NvbnRlbnRWaWV3IF9uZXh0QWNjZXNzb3J5VGFiRm9yV2ViVmlldzpdKTogQWRkZWQuCisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXZpb3VzQWNjZXNzb3J5VGFiRm9yV2ViVmlldzpdKTog
QWRkZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX25leHRBY2Nlc3NvcnlUYWI6XSk6IERl
bGV0ZWQuCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgX3ByZXZBY2Nlc3NvcnlUYWI6XSk6IERl
bGV0ZWQuCisKIDIwMTgtMTEtMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIENvbnNvbGlkYXRlIFdlYktpdCBVSUtpdFNQSS5oIGFuZCBVSUtpdFRlc3RTUEku
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmgg
Yi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNzVmYTVm
OTk2YjJjNTJlMzg2M2M5MTg5NGQzNjRlY2NhZWY5NDNkLi44ZmM1MzNlNjliODczNTY0MDgzZTYy
NjdmNmVjY2FlMGM3ZDQzZDcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlL
aXRTUEkuaApAQCAtMTY4LDYgKzE2OCw3IEBAIFdURl9FWFRFUk5fQ19FTkQKIC0gKEJPT0wpaXNT
dXNwZW5kZWRVbmRlckxvY2s7CiAtICh2b2lkKV9lbnF1ZXVlSElERXZlbnQ6KElPSElERXZlbnRS
ZWYpZXZlbnQ7CiAtICh2b2lkKV9oYW5kbGVISURFdmVudDooSU9ISURFdmVudFJlZilldmVudDsK
KystICh2b2lkKWhhbmRsZUtleVVJRXZlbnQ6KFVJRXZlbnQgKilldmVudDsKIEBlbmQKIAogdHlw
ZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlEYXRlUGlja2VyUHJpdmF0ZU1vZGUpICB7CkBAIC0x
MDIzLDggKzEwMjQsMTAgQEAgdHlwZWRlZiBOU0ludGVnZXIgVUlDb21wb3NpdGluZ01vZGU7CiBA
ZW5kCiAKIEBpbnRlcmZhY2UgVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQgKCkKLUBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgVUlLZXlib2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7Cisr
IChVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqKV9ldmVudFdpdGhJbnB1dDooTlNTdHJpbmcgKilp
bnB1dCBpbnB1dEZsYWdzOihVSUtleWJvYXJkSW5wdXRGbGFncylmbGFnczsKKy0gKHZvaWQpX3Nl
dEhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2ZW50IGtleWJvYXJkOihHU0tleWJvYXJkUmVmKWdz
S2V5Ym9hcmQ7CiAtIChVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAqKV9jbG9uZUV2ZW50IE5TX1JF
VFVSTlNfUkVUQUlORUQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJS2V5Ym9h
cmRJbnB1dEZsYWdzIF9pbnB1dEZsYWdzOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
KSBDRkluZGV4IF9rZXlDb2RlOwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGZmNDVhNTI0YWFkN2Zj
YmM2NjdlOGYwNTA0ZTMyODNlMjc3Y2QxZTIuLjg4OWYwOGQzOTE4MDQ4ZjAxNDg4OGMxOTIxMGI0
YzI5OGM5N2U2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC0xNTEsNiArMTUxLDkgQEAgY2xhc3MgVVJMOwog
LSAodm9pZClfdHJhbnNsaXRlcmF0ZUNoaW5lc2U6KGlkKXNlbmRlcjsKIC0gKHZvaWQpcmVwbGFj
ZTooaWQpc2VuZGVyOwogCistICh2b2lkKV9uZXh0QWNjZXNzb3J5VGFiOihpZClzZW5kZXI7Cist
ICh2b2lkKV9wcmV2aW91c0FjY2Vzc29yeVRhYjooaWQpc2VuZGVyOworCiAtICh2b2lkKV9pbmNy
ZW1lbnRGb2N1c1ByZXNlcnZhdGlvbkNvdW50OwogLSAodm9pZClfZGVjcmVtZW50Rm9jdXNQcmVz
ZXJ2YXRpb25Db3VudDsKIC0gKHZvaWQpX3Jlc2V0Rm9jdXNQcmVzZXJ2YXRpb25Db3VudDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAppbmRleCA1YzQxNDI1NmY5YjU2OGRkYTVhNjhlM2JhMjkyYWZmNjkzNzc0YjRmLi5h
ZWQ0ZWFjMTgzOWVmNzc0MjA0N2M2ZGY3ZDE2ODRlY2I4ZTA0YzZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTMyLDcgKzEzMiw5IEBAIHR5cGVkZWYgc3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25DCiAgICAgTShhbGlnbkxl
ZnQpIFwKICAgICBNKGFsaWduUmlnaHQpIFwKICAgICBNKGFsaWduQ2VudGVyKSBcCi0gICAgTShh
bGlnbkp1c3RpZmllZCkKKyAgICBNKGFsaWduSnVzdGlmaWVkKSBcCisgICAgTShfbmV4dEFjY2Vz
c29yeVRhYikgXAorICAgIE0oX3ByZXZpb3VzQWNjZXNzb3J5VGFiKQogCiAjZGVmaW5lIEZPUl9F
QUNIX1BSSVZBVEVfV0tDT05URU5UVklFV19BQ1RJT04oTSkgXAogICAgIE0oX2FsaWduQ2VudGVy
KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQppbmRleCA3MGM4ODM2Nzc0ODJmOTlhZjI2MzMyNzI2OTJjOWU2NGM2
ODMwZDA0Li5mMThhNzEyMzk5YTdkZTdkNjM3YjU4MmQ1MGIzM2YwMDQxYjJjNTgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNDIyLDcgKzI0MjIsMTAgQEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9u
OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgogfQogCiAtIChCT09MKWNhblBlcmZv
cm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNlbmRlcgoteyAg
ICAgICAgCit7CisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6
KSB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKF9wcmV2aW91c0FjY2Vzc29yeVRhYjopKQorICAgICAg
ICByZXR1cm4gW3NlbGYgaXNGaXJzdFJlc3BvbmRlcl07CisKICAgICBhdXRvIGVkaXRvclN0YXRl
ID0gX3BhZ2UtPmVkaXRvclN0YXRlKCk7CiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoX3No
b3dUZXh0U3R5bGVPcHRpb25zOikpCiAgICAgICAgIHJldHVybiBlZGl0b3JTdGF0ZS5pc0NvbnRl
bnRSaWNobHlFZGl0YWJsZSAmJiBlZGl0b3JTdGF0ZS5zZWxlY3Rpb25Jc1JhbmdlICYmICFfc2hv
d2luZ1RleHRTdHlsZU9wdGlvbnM7CkBAIC0zMTk5LDE4ICszMjAyLDE4IEBAIC0gKE5TQXJyYXkg
KilrZXlDb21tYW5kcwogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgc3RhdGljIE5TQXJyYXkq
IGVkaXRhYmxlS2V5Q29tbWFuZHMgPSBbQFsKLSAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1h
bmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczowIGFjdGlvbjpAc2VsZWN0b3IoX25leHRB
Y2Nlc3NvcnlUYWI6KV0sCi0gICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0
OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNoaWZ0IGFjdGlvbjpAc2VsZWN0b3Io
X3ByZXZBY2Nlc3NvcnlUYWI6KV0KKyAgICAgICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0
aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNz
b3J5VGFiOildLAorICAgICAgICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJc
dCIgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hpZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJl
dmlvdXNBY2Nlc3NvcnlUYWI6KV0KICAgICBdIHJldGFpbl07CiAgICAgcmV0dXJuIGVkaXRhYmxl
S2V5Q29tbWFuZHM7CiB9CiAKLS0gKHZvaWQpX25leHRBY2Nlc3NvcnlUYWI6KGlkKXNlbmRlcgor
LSAodm9pZClfbmV4dEFjY2Vzc29yeVRhYkZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAgIFtz
ZWxmIGFjY2Vzc29yeVRhYjpZRVNdOwogfQogCi0tICh2b2lkKV9wcmV2QWNjZXNzb3J5VGFiOihp
ZClzZW5kZXIKKy0gKHZvaWQpX3ByZXZpb3VzQWNjZXNzb3J5VGFiRm9yV2ViVmlldzooaWQpc2Vu
ZGVyCiB7CiAgICAgW3NlbGYgYWNjZXNzb3J5VGFiOk5PXTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwM2NmOWNmNzhhZDA5MmZhNjUyOTBl
YTZjNWY5MGNkYzM1MTBmNzgzLi45MGJhZWJmOWY0MzVkYTYyMTMwYzg5OTY3ZGJlNDBhYWI5NDhh
MmVkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTgtMTEtMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1NdIFNoaWZ0ICsgVGFiIGRvZXMgbm90IGZvY3VzIHByZXZpb3Vz
IGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTE1OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1ODkyMDUzPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSB0byBz
dXBwb3J0IHRlc3RpbmcgYSBrZXkgZG93biBldmVudCB3aXRoIG1vZGlmaWVycyBieSBjcmVhdGlu
ZworICAgICAgICBhbmQgZGlzcGF0Y2hpbmcgYSBVSUV2ZW50LiBUaGlzIGluZnJhc3RydWN0dXJl
IHJlcGxhY2VzIHRoZSBwcmV2aW91cyBtZWNoYW5pc20gaW4KKyAgICAgICAgVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0gdG8gZ2VuZXJhdGUgYSBJT0hJREV2
ZW50IGZvciBhCisgICAgICAgIGtleWRvd24gYXMgaXQgZGlkIG5vdCBzdXBwb3J0IGNyZWF0aW5n
IGFuIGV2ZW50IHdpdGggbW9kaWZpZXIga2V5IHN0YXRlIHRoYXQgd291bGQKKyAgICAgICAgYmUg
cmVjb2duaXplZCBieSBVSUtpdC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2lvcy9VSVNj
cmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6
a2V5RG93bik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93blVzaW5n
SGFyZHdhcmVLZXlib2FyZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJv
bGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQpOiBEZWxldGVkLgorICAgICAgICAqIFRl
c3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxl
ci5pZGw6CisgICAgICAgIEFkZCBmdW5jdGlvbiB1aUNvbnRyb2xsZXIua2V5RG93bigpIHRoYXQg
dGFrZXMgYSBjaGFyYWN0ZXIgdGhhdCByZXByZXNlbnRzIGEga2V5Ym9hcmQga2V5CisgICAgICAg
IGFuZCBhbiBhcnJheSBvZiBtb2RpZmllciBrZXlzLiBUaGUgYmVoYXZpb3Igb2YgdGhpcyBmdW5j
dGlvbiBpcyBhbmFsYWdvdXMgdG8gZXZlbnRTZW5kZXIua2V5RG93bigpLgorICAgICAgICBSZW1v
dmUgZnVuY3Rpb25zIHVpQ29udHJvbGxlci5rZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKCkg
YW5kIHVpQ29udHJvbGxlci5rZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZCgpCisgICAgICAgIGFz
IHRoZSBmb3JtZXIgaXMgcmVwbGFjZWQgYnkgdWlDb250cm9sbGVyLmtleURvd24oKSBhbmQgdGhl
IGxhdHRlciB3YXMgbmV2ZXIgdXNlZC4KKworICAgICAgICAqIFRlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXVFI6OlVJU2Ny
aXB0Q29udHJvbGxlcjo6a2V5RG93bik6IEFkZGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVu
dEdlbmVyYXRvci5oOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2Vu
ZXJhdG9yLm1tOgorICAgICAgICAoY3JlYXRlSElES2V5RG93bkV2ZW50KTogQWRkZWQuCisgICAg
ICAgICgtW0hJREV2ZW50R2VuZXJhdG9yIGtleURvd246Y29tcGxldGlvbkJsb2NrOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBrZXlVcDpjb21wbGV0aW9uQmxvY2s6
XSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RSOjphcnJheUxlbmd0aCk6IEFkZGVkLgorICAgICAg
ICAoV1RSOjpwYXJzZU1vZGlmaWVyKTogQWRkZWQuCisgICAgICAgIChXVFI6OnBhcnNlTW9kaWZp
ZXJBcnJheSk6IEFkZGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleURv
d24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25Vc2luZ0hhcmR3
YXJlS2V5Ym9hcmQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6
OmtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKTogRGVsZXRlZC4KKwogMjAxOC0xMS0xMyAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQ29uc29saWRhdGUgV2Vi
S2l0IFVJS2l0U1BJLmggYW5kIFVJS2l0VGVzdFNQSS5oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQppbmRleCA3NjBhYmEwZmJhZDJlNzJj
NWU0YzhjZjkyOTA1ZTU3ZWQ4ZDk1OTRkLi5lNWFjNzdkNjJiZmUxZGZkN2ZmOTljYjgwNTNkNDRj
ODNiYmNmZjY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRD
b250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENv
bnRyb2xsZXJJT1MubW0KQEAgLTE1MSwxMSArMTUxLDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFj
dGUKIHsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25Vc2luZ0hhcmR3YXJl
S2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQotewot
fQotCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQo
SlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKQordm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYpCiB7CiB9CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdz
L1VJU2NyaXB0Q29udHJvbGxlci5pZGwgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCmluZGV4IDRlM2ZkNDkzOTEz
Mjk1YjIxZjA2NzExYjA0YzQ5NTcyZDgwZWVmMWQuLmRlODA0ZWY4MTBiMTE0ZWNlYzJhYzYxOTdh
NGZjZTgyNDgwZGIwZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKKysrIGIvVG9vbHMvVGVz
dFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVy
LmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0zMCw2ICszMCwxNCBAQCBlbnVtIERldmljZU9yaWVudGF0aW9uIHsKICAgICAibGFuZHNj
YXBlLXJpZ2h0IgogfTsKIAorZW51bSBNb2RpZmllcktleSB7CisgICAgImFsdCIsCisgICAgImNh
cHNMb2NrIiwKKyAgICAiY3RybCIsCisgICAgIm1ldGEiLCAvLyBDb21tYW5kIGtleSBvbiBNYWMg
YW5kIGlPUworICAgICJzaGlmdCIKK307CisKIGludGVyZmFjZSBVSVNjcmlwdENvbnRyb2xsZXIg
ewogCiAgICAgdm9pZCBkb0FzeW5jVGFzayhvYmplY3QgY2FsbGJhY2spOyAvLyBVc2VkIHRvIHRl
c3QgdGhlIGhhcm5lc3MuCkBAIC02MCw4ICs2OCw4IEBAIGludGVyZmFjZSBVSVNjcmlwdENvbnRy
b2xsZXIgewogCiAgICAgdm9pZCBlbnRlclRleHQoRE9NU3RyaW5nIHRleHQpOwogICAgIHZvaWQg
dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChET01TdHJpbmcgY2hhcmFjdGVyLCBv
YmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChE
T01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2spOwotICAgIHZvaWQga2V5VXBVc2lu
Z0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsK
KworICAgIHZvaWQga2V5RG93bihET01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgbW9kaWZpZXJB
cnJheSk7CiAKICAgICAvLyBldmVudHNKU09OIGRlc2NyaWJlcyBhIHNlcmllcyBvZiB1c2VyIGV2
ZW50cyBpbiBKU09OIGZvcm0uIEZvciB0aGUga2V5cywgc2VlIEhJREV2ZW50R2VuZXJhdG9yLm1t
LgogICAgIC8vIEZvciBleGFtcGxlLCB0aGlzIEpTT04gZGVzY3JpYmVzIGEgdG91Y2ggZG93biBm
b2xsb3dlZCBieSBhIHRvdWNoIHVwIChpLmUuIGEgc2luZ2xlIHRhcCkuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCBmMjVlYzEyNzY3NmFmYTBkODEyNTE2MGJlYjMzNzhjYzhlYmY0YWY4
Li5kNDExNjA4OGVlODM3YWNlYjJhYTIwMDgyZmQ0ZjEzNDNlN2E5Y2M2IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0
Q29udHJvbGxlci5jcHAKQEAgLTI5NiwxMSArMjk2LDcgQEAgdm9pZCBVSVNjcmlwdENvbnRyb2xs
ZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYsIEpTVmFs
dWUKIHsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtl
eWJvYXJkKEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKQotewotfQotCi12b2lkIFVJU2NyaXB0Q29u
dHJvbGxlcjo6a2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNWYWx1
ZVJlZikKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2Ny
aXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDBlOTUyMTljYzNiMzY2
NGYyYThkYzA2NTI2ODkyNWFmNzQ5OTRiM2IuLjZiNGZiZDkxMmJhZGJiNjZkMzc4MGJjYTIyZGRk
NDA0ZWEzZTJkZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRD
b250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQv
VUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oCkBAIC04OSw4ICs4OSw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZW50ZXJUZXh0KEpTU3RyaW5nUmVmKTsKICAgICB2b2lkIHR5cGVD
aGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1Zh
bHVlUmVmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQo
SlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNhbGxiYWNrKTsKLSAgICB2b2lkIGtl
eVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJl
ZiBjYWxsYmFjayk7CisKKyAgICB2b2lkIGtleURvd24oSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBK
U1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXkpOwogCiAgICAgdm9pZCBrZXlib2FyZEFjY2Vzc29yeUJh
ck5leHQoKTsKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5QmFyUHJldmlvdXMoKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmggYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oCmluZGV4IGU3YTll
OThmYzNhZjY2Mjg2MjI2ZDNhNTk1YzAzZDkwMzQ2MWFkNTAuLjE2ZjVkYWFjNjhmNjNiODMyNjg3
YTdjOGRlNWQwZGY4YjU0ZTY2ZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIv
aW9zL0hJREV2ZW50R2VuZXJhdG9yLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3Mv
SElERXZlbnRHZW5lcmF0b3IuaApAQCAtMjYsNiArMjYsNyBAQAogI2ltcG9ydCAiVUlLaXRTUEku
aCIKIAogI2ltcG9ydCA8Q29yZUdyYXBoaWNzL0NHR2VvbWV0cnkuaD4KKyNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogLy8gS2V5cyBmb3Igc2VuZEV2ZW50U3RyZWFtOmNvbXBsZXRpb25CbG9j
azouCiBleHRlcm4gTlNTdHJpbmcqIGNvbnN0IFRvcExldmVsRXZlbnRJbmZvS2V5OwpAQCAtNjgs
NiArNjksOCBAQCBleHRlcm4gTlNTdHJpbmcqIGNvbnN0IEhJREV2ZW50UGhhc2VDYW5jZWxlZDsK
IAogZXh0ZXJuIE5TVUludGVnZXIgY29uc3QgSElETWF4VG91Y2hDb3VudDsKIAorUmV0YWluUHRy
PElPSElERXZlbnRSZWY+IGNyZWF0ZUhJREtleURvd25FdmVudChOU1N0cmluZyAqLCB1aW50NjRf
dCB0aW1lc3RhbXApOworCiBAaW50ZXJmYWNlIEhJREV2ZW50R2VuZXJhdG9yIDogTlNPYmplY3QK
IAogKyAoSElERXZlbnRHZW5lcmF0b3IgKilzaGFyZWRISURFdmVudEdlbmVyYXRvcjsKQEAgLTEw
NSw3ICsxMDgsNSBAQCBleHRlcm4gTlNVSW50ZWdlciBjb25zdCBISURNYXhUb3VjaENvdW50Owog
CiAvLyBLZXlib2FyZAogLSAodm9pZClrZXlQcmVzczooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29t
cGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7Ci0tICh2b2lkKWtl
eURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkJsb2NrOwotLSAodm9pZClrZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIg
Y29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2s7CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9y
Lm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KaW5k
ZXggNGM4NDJiOGRhZjhmMTRlMDRjMTJhNGVhYTc0NmI3ZGFlNjZlNjcwMi4uNzE2MTJmYzY1MDE1
YmM1NzliYzk4MjA1N2RlYTRiNzUzZDgxZjFiMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW0KQEAgLTMzLDcgKzMzLDYgQEAKICNpbXBvcnQg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0
Zi9PcHRpb25hbC5oPgotI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CiAKIFNPRlRfTElOS19QUklWQVRFX0ZSQU1FV09SSyhCYWNrQm9hcmRTZXJ2
aWNlcykKQEAgLTE5OSw4ICsxOTgsNiBAQCAtICh2b2lkKWRlYWxsb2MKICAgICBbc3VwZXIgZGVh
bGxvY107CiB9CiAKLQotCiAtICh2b2lkKV9zZW5kSU9ISURLZXlib2FyZEV2ZW50Oih1aW50NjRf
dCl0aW1lc3RhbXAgdXNhZ2U6KHVpbnQzMl90KXVzYWdlIGlzS2V5RG93bjooYm9vbClpc0tleURv
d24KIHsKICAgICBSZXRhaW5QdHI8SU9ISURFdmVudFJlZj4gZXZlbnRSZWYgPSBhZG9wdENGKElP
SElERXZlbnRDcmVhdGVLZXlib2FyZEV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsCkBAIC05NzYs
MjUgKzk3MywxMiBAQCBzdGF0aWMgaW5saW5lIHVpbnQzMl90IGhpZFVzYWdlQ29kZUZvckNoYXJh
Y3RlcihOU1N0cmluZyAqa2V5KQogICAgIHJldHVybiAwOwogfQogCi0tICh2b2lkKWtleVByZXNz
OihOU1N0cmluZyAqKWNoYXJhY3RlciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNv
bXBsZXRpb25CbG9jaworUmV0YWluUHRyPElPSElERXZlbnRSZWY+IGNyZWF0ZUhJREtleURvd25F
dmVudChOU1N0cmluZyAqY2hhcmFjdGVyLCB1aW50NjRfdCB0aW1lc3RhbXApCiB7Ci0gICAgYm9v
bCBzaG91bGRXcmFwV2l0aFNoaWZ0ID0gc2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hh
cmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgdWludDMyX3QgdXNhZ2UgPSBoaWRVc2FnZUNvZGVGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hUaW1lID0gbWFj
aF9hYnNvbHV0ZV90aW1lKCk7Ci0KLSAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlmdCkKLSAgICAg
ICAgW3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1dGVNYWNoVGltZSB1c2FnZTpr
SElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQgaXNLZXlEb3duOnRydWVdOwotCi0gICAgW3NlbGYg
X3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1dGVNYWNoVGltZSB1c2FnZTp1c2FnZSBpc0tl
eURvd246dHJ1ZV07Ci0gICAgW3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1dGVN
YWNoVGltZSB1c2FnZTp1c2FnZSBpc0tleURvd246ZmFsc2VdOwotCi0gICAgaWYgKHNob3VsZFdy
YXBXaXRoU2hpZnQpCi0gICAgICAgIFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29s
dXRlTWFjaFRpbWUgdXNhZ2U6a0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0IGlzS2V5RG93bjpm
YWxzZV07Ci0KLSAgICBbc2VsZiBfc2VuZE1hcmtlckhJREV2ZW50V2l0aENvbXBsZXRpb25CbG9j
azpjb21wbGV0aW9uQmxvY2tdOworICAgIHJldHVybiBhZG9wdENGKElPSElERXZlbnRDcmVhdGVL
ZXlib2FyZEV2ZW50KGtDRkFsbG9jYXRvckRlZmF1bHQsIHRpbWVzdGFtcCwga0hJRFBhZ2VfS2V5
Ym9hcmRPcktleXBhZCwgaGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKGNoYXJhY3RlciksIHRydWUg
Lyoga2V5IGRvd24gKi8sIGtJT0hJREV2ZW50T3B0aW9uTm9uZSkpOwogfQogCi0tICh2b2lkKWtl
eURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkJsb2NrCistICh2b2lkKWtleVByZXNzOihOU1N0cmluZyAqKWNoYXJhY3Rl
ciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jawogewogICAg
IGJvb2wgc2hvdWxkV3JhcFdpdGhTaGlmdCA9IHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIpOwogICAgIHVpbnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2Rl
Rm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CkBAIC0xMDA0LDE2ICs5ODgsNiBAQCAtICh2b2lkKWtl
eURvd246KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbgogICAgICAgICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNv
bHV0ZU1hY2hUaW1lIHVzYWdlOmtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdCBpc0tleURvd246
dHJ1ZV07CiAKICAgICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0ZU1hY2hU
aW1lIHVzYWdlOnVzYWdlIGlzS2V5RG93bjp0cnVlXTsKLQotICAgIFtzZWxmIF9zZW5kTWFya2Vy
SElERXZlbnRXaXRoQ29tcGxldGlvbkJsb2NrOmNvbXBsZXRpb25CbG9ja107Ci19Ci0KLS0gKHZv
aWQpa2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXiko
dm9pZCkpY29tcGxldGlvbkJsb2NrCi17Ci0gICAgYm9vbCBzaG91bGRXcmFwV2l0aFNoaWZ0ID0g
c2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50Rm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAg
dWludDMyX3QgdXNhZ2UgPSBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAg
ICB1aW50NjRfdCBhYnNvbHV0ZU1hY2hUaW1lID0gbWFjaF9hYnNvbHV0ZV90aW1lKCk7Ci0KICAg
ICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0ZU1hY2hUaW1lIHVzYWdlOnVz
YWdlIGlzS2V5RG93bjpmYWxzZV07CiAKICAgICBpZiAoc2hvdWxkV3JhcFdpdGhTaGlmdCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklP
Uy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5t
bQppbmRleCBkYThlNzNhM2ZhZWVjYmFlNTVkNzdhYTcxMjBlMjkzODI2NzQ0ZDZjLi43NjA3Mjgx
NDFlYjc2ZWIyMmE5MWUyNzc1MmEzMDY5ODdlN2UyZDc5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCkBAIC00Miw2ICs0Miwx
NCBAQAogI2ltcG9ydCA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhVSUtpdCkKK1NPRlRfTElOS19D
TEFTUyhVSUtpdCwgVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQpCisKK0BpbnRlcmZhY2UgVUlQaHlz
aWNhbEtleWJvYXJkRXZlbnQgKFVJUGh5c2ljYWxLZXlib2FyZEV2ZW50SGFjaykKK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIE5TSW50ZWdlciBfbW9kaWZpZXJGbGFnczsKK0BlbmQKIAog
bmFtZXNwYWNlIFdUUiB7CiAKQEAgLTM0MCwyOCArMzQ4LDc1IEBAIHZvaWQgVUlTY3JpcHRDb250
cm9sbGVyOjp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNo
YXJhY3RlCiAgICAgfV07CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duVXNp
bmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxs
YmFjaykKK3N0YXRpYyB1bnNpZ25lZCBhcnJheUxlbmd0aChKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgYXJyYXkpCiB7Ci0gICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4
dC0+cHJlcGFyZUZvckFzeW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVu
dCk7CisgICAgYXV0byBsZW5ndGhTdHJpbmcgPSBhZG9wdChKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4
Q1N0cmluZygibGVuZ3RoIikpOworICAgIGlmIChhdXRvIGxlbmd0aFZhbHVlID0gSlNPYmplY3RH
ZXRQcm9wZXJ0eShjb250ZXh0LCBhcnJheSwgbGVuZ3RoU3RyaW5nLmdldCgpLCBudWxscHRyKSkK
KyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU1ZhbHVlVG9OdW1iZXIoY29u
dGV4dCwgbGVuZ3RoVmFsdWUsIG51bGxwdHIpKTsKKyAgICByZXR1cm4gMDsKK30KIAotICAgIC8v
IEFzc3VtZXMgdGhhdCB0aGUga2V5Ym9hcmQgaXMgYWxyZWFkeSBzaG93bi4KLSAgICBbW0hJREV2
ZW50R2VuZXJhdG9yIHNoYXJlZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlEb3duOnRvV1RGU3RyaW5n
KHRvV0soY2hhcmFjdGVyKSkgY29tcGxldGlvbkJsb2NrOl57Ci0gICAgICAgIGlmICghbV9jb250
ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2NvbnRleHQtPmFzeW5jVGFza0Nv
bXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH1dOworc3RhdGljIFVJS2V5TW9kaWZpZXJGbGFncyBw
YXJzZU1vZGlmaWVyKEpTU3RyaW5nUmVmIG1vZGlmaWVyKQoreworICAgIGlmIChKU1N0cmluZ0lz
RXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAiYWx0IikpCisgICAgICAgIHJldHVybiBVSUtl
eU1vZGlmaWVyQWx0ZXJuYXRlOworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5n
KG1vZGlmaWVyLCAiY2Fwc0xvY2siKSkKKyAgICAgICAgcmV0dXJuIFVJS2V5TW9kaWZpZXJBbHBo
YVNoaWZ0OworICAgIGlmIChKU1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAi
Y3RybCIpKQorICAgICAgICByZXR1cm4gVUlLZXlNb2RpZmllckNvbnRyb2w7CisgICAgaWYgKEpT
U3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobW9kaWZpZXIsICJtZXRhIikpCisgICAgICAgIHJl
dHVybiBVSUtleU1vZGlmaWVyQ29tbWFuZDsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4
Q1N0cmluZyhtb2RpZmllciwgInNoaWZ0IikpCisgICAgICAgIHJldHVybiBVSUtleU1vZGlmaWVy
U2hpZnQ7CisgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlV
cFVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spCitzdGF0aWMgVUlLZXlNb2RpZmllckZsYWdzIHBhcnNlTW9kaWZpZXJBcnJheShK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiBhcnJheVZhbHVlKQogewotICAgIHVuc2ln
bmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQtPnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ss
IENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQpOworICAgIGlmICghYXJyYXlWYWx1ZSkKKyAgICAg
ICAgcmV0dXJuIDA7CiAKLSAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIGtleWJvYXJkIGlzIGFscmVh
ZHkgc2hvd24uCi0gICAgW1tISURFdmVudEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRv
cl0ga2V5VXA6dG9XVEZTdHJpbmcodG9XSyhjaGFyYWN0ZXIpKSBjb21wbGV0aW9uQmxvY2s6XnsK
LSAgICAgICAgaWYgKCFtX2NvbnRleHQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1f
Y29udGV4dC0+YXN5bmNUYXNrQ29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfV07CisgICAgLy8g
VGhlIHZhbHVlIG1heSBlaXRoZXIgYmUgYSBzdHJpbmcgd2l0aCBhIHNpbmdsZSBtb2RpZmllciBv
ciBhbiBhcnJheSBvZiBtb2RpZmllcnMuCisgICAgaWYgKEpTVmFsdWVJc1N0cmluZyhjb250ZXh0
LCBhcnJheVZhbHVlKSkgeworICAgICAgICBhdXRvIHN0cmluZyA9IGFkb3B0KEpTVmFsdWVUb1N0
cmluZ0NvcHkoY29udGV4dCwgYXJyYXlWYWx1ZSwgbnVsbHB0cikpOworICAgICAgICByZXR1cm4g
cGFyc2VNb2RpZmllcihzdHJpbmcuZ2V0KCkpOworICAgIH0KKworICAgIGlmICghSlNWYWx1ZUlz
T2JqZWN0KGNvbnRleHQsIGFycmF5VmFsdWUpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBKU09i
amVjdFJlZiBhcnJheSA9IGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KGFycmF5VmFsdWUpOworICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGFycmF5TGVuZ3RoKGNvbnRleHQsIGFycmF5KTsKKyAgICBVSUtl
eU1vZGlmaWVyRmxhZ3MgbW9kaWZpZXJzID0gMDsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OworICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlID0gSlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgo
Y29udGV4dCwgYXJyYXksIGksICZleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0aW9uKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGF1dG8gc3RyaW5nID0gYWRvcHQoSlNWYWx1
ZVRvU3RyaW5nQ29weShjb250ZXh0LCB2YWx1ZSwgJmV4Y2VwdGlvbikpOworICAgICAgICBpZiAo
ZXhjZXB0aW9uKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIG1vZGlmaWVycyB8PSBw
YXJzZU1vZGlmaWVyKHN0cmluZy5nZXQoKSk7CisgICAgfQorICAgIHJldHVybiBtb2RpZmllcnM7
Cit9CisKK3ZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmIGNoYXJh
Y3RlciwgSlNWYWx1ZVJlZiBtb2RpZmllckFycmF5KQoreworICAgIC8vIENoYXJhY3RlciBjYW4g
YmUgZWl0aGVyIGEgc2luZ2xlIFVuaWNvZGUgY29kZSBwb2ludCBvciBhIHRoZSBuYW1lIG9mIGEg
c3BlY2lhbCBrZXkgKGUuZy4gImRvd25BcnJvdyIpLgorICAgIC8vIGNyZWF0ZUhJREtleUV2ZW50
KCkga25vd3MgaG93IHRvIG1hcCB0aGVzZSBzcGVjaWFsIGtleXMgdG8gdGhlIGFwcHJvcHJpYXRl
IGtleWNvZGUuCisgICAgLy8KKyAgICAvLyBGSVhNRTogVGhlIFVJRXZlbnQgaW5wdXQgc3RyaW5n
IGZvciBzcGVjaWFsIGtleXMgKGUuZy4gImRvd25BcnJvdyIpIHNob3VsZCBlaXRoZXIgYmUgYSBV
SUtleUlucHV0KgorICAgIC8vIHN0cmluZyBjb25zdGFudCBvciBhbiBBU0NJSSBjb250cm9sIGNo
YXJhY3Rlci4gSW4gcHJhY3RpY2UgdGhlIGlucHV0IHN0cmluZyBmb3IgYSBzcGVjaWFsIGtleSBp
cworICAgIC8vIGFtYmlndWlvdXMgKGUuZy4gRjUgYW5kIEY2IGhhdmUgdGhlIHNhbWUgc3RyaW5n
IC0gdGhlIEFTQ0lJIERMRSBjaGFyYWN0ZXIpIGFuZCBoZW5jZSBpdCBpcyBlZmZlY3RpdmVseQor
ICAgIC8vIGlnbm9yZWQgaW4gZmF2b3Igb2Yga2V5IGlkZW50aWZpY2F0aW9uIGJ5IGtleWNvZGUu
IFNvLCB3ZSBqdXN0IHRha2UgdGhlIGVtcHR5IHN0cmluZyBhcyB0aGUgaW5wdXQgc3RyaW5nCisg
ICAgLy8gZm9yIGEgc3BlY2lhbCBrZXkuCisgICAgU3RyaW5nIGlucHV0U3RyaW5nID0gdG9XVEZT
dHJpbmcodG9XSyhjaGFyYWN0ZXIpKTsKKyAgICBTdHJpbmcgdWlFdmVudElucHV0U3RyaW5nID0g
aW5wdXRTdHJpbmcubGVuZ3RoKCkgPiAxID8gZW1wdHlTdHJpbmcoKSA6IGlucHV0U3RyaW5nOwor
ICAgIGF1dG8gKmtleWJvYXJkRXZlbnQgPSBbZ2V0VUlQaHlzaWNhbEtleWJvYXJkRXZlbnRDbGFz
cygpIF9ldmVudFdpdGhJbnB1dDp1aUV2ZW50SW5wdXRTdHJpbmcgaW5wdXRGbGFnczooVUlLZXli
b2FyZElucHV0RmxhZ3MpMF07CisgICAga2V5Ym9hcmRFdmVudC5fbW9kaWZpZXJGbGFncyA9IHBh
cnNlTW9kaWZpZXJBcnJheShtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBtb2RpZmllckFycmF5KTsK
KyAgICBhdXRvIGhpZEV2ZW50ID0gY3JlYXRlSElES2V5RG93bkV2ZW50KGlucHV0U3RyaW5nLCBr
ZXlib2FyZEV2ZW50LnRpbWVzdGFtcCk7CisgICAgW2tleWJvYXJkRXZlbnQgX3NldEhJREV2ZW50
OmhpZEV2ZW50LmdldCgpIGtleWJvYXJkOm51bGxwdHJdOworICAgIFtbVUlBcHBsaWNhdGlvbiBz
aGFyZWRBcHBsaWNhdGlvbl0gaGFuZGxlS2V5VUlFdmVudDprZXlib2FyZEV2ZW50XTsKIH0KIAog
dm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRpc21pc3NGb3JtQWNjZXNzb3J5VmlldygpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggYTE2ZjBiMDBmODE1ODRhM2ExMmU2ZTczYjM1Nzg0NzE3Zjk4ODI1ZC4uMGI3MjgyZjVjMjJk
NDIwMTQ5MzI0NTRjMDBiZmEyNmI5NTMwODUxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4
LTExLTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9T
XSBTaGlmdCArIFRhYiBkb2VzIG5vdCBmb2N1cyBwcmV2aW91cyBmaWVsZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTk2CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS80NTg5MjA1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IHJlZ3Jlc3Mg
dGhlIHRhYiBhbmQgc2hpZnQgKyB0YWIga2V5IGNvbW1hbmRzLgorCisgICAgICAgICogZmFzdC9l
dmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLXByZXZp
b3VzLWZpZWxkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHJlc291cmNlcy91aS1oZWxwZXIuanM6
CisgICAgICAgICh3aW5kb3cuVUlIZWxwZXIua2V5RG93bik6IFVwZGF0ZWQgdG8gc3VwcG9ydCB0
YWtpbmcgYW4gb3B0aW9uYWwgYXJyYXkgb2YgbW9kaWZpZXJzIChkZWZhdWx0czogW10pCisgICAg
ICAgIGFuZCB1c2UgdGhlIG5ldyBpbmZyYXN0cnVjdHVyZSB0byBnZW5lcmF0ZSBhIGtleSBkb3du
IGV2ZW50IGZvciB0aGUgc3BlY2lmaWVkIGNoYXJhY3Rlci4KKwogMjAxOC0xMS0xMiAgQW50b2lu
ZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWIgQW5pbWF0aW9uc10g
RG9uJ3Qgc2NoZWR1bGUgYW5pbWF0aW9uIGZyYW1lcyBvciB1cGRhdGUgc3R5bGUgd2hpbGUgYW4g
YWNjZWxlcmF0ZWQgYW5pbWF0aW9uIGlzIHJ1bm5pbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLW5leHQtZmllbGQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNmNTRjODI3YzhmMmZhYmJlMjI3MzVhOWQxMDA5ZjBlMjY2YjhjNjUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLW5l
eHQtZmllbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdGhhdCBwcmVzc2lu
ZyB0aGUgdGFiIGtleSBpbiBhIGZvY3VzZWQgZmllbGQgZm9jdXNlcyB0aGUgbmV4dCBmaWVsZCBp
biB0YWIgb3JkZXIuCisKK1BBU1MgZm9jdXNlZCB0aGUgc2Vjb25kIGZpZWxkLgorCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzA2ZGFhNDhjYTg5NzJmMTYzY2ZlYjVlMzI4NDc1ODQwZWVhMGJhNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWIt
bmV4dC1maWVsZC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgdGhhdCBwcmVzc2luZyB0aGUgdGFi
IGtleSBpbiBhIGZvY3VzZWQgZmllbGQgZm9jdXNlcyB0aGUgbmV4dCBmaWVsZCBpbiB0YWIgb3Jk
ZXIuPC9wPgorPHAgaWQ9InJlc3VsdCI+RkFJTCBkaWQgbm90IGZvY3VzIHRoZSBzZWNvbmQgZmll
bGQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJmaXJzdEZpZWxkIj48aW5wdXQgdHlwZT0i
dGV4dCIgaWQ9InNlY29uZEZpZWxkIiBvbmZvY3VzPSJwYXNzZWQoKSI+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIgfHwgIXRlc3RSdW5uZXIucnVuVUlTY3Jp
cHQpCisgICAgICAgIHJldHVybjsKKyAgICBhd2FpdCBVSUhlbHBlci5hY3RpdmF0ZUZvcm1Db250
cm9sKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXJzdEZpZWxkIikpOworICAgIGF3YWl0IFVJ
SGVscGVyLmtleURvd24oIlx0Iik7Cit9CisKK2Z1bmN0aW9uIHBhc3NlZCgpCit7CisgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLnRleHRDb250ZW50ID0gIlBBU1MgZm9jdXNl
ZCB0aGUgc2Vjb25kIGZpZWxkLiI7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3Mv
Zm9jdXMtdGFiLXByZXZpb3VzLWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjYwNGE3NmFhOTM2NDVkOGJmOGE4YzgzMWM4NmU1MzExMzM2MzQyYTEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLXByZXZpb3VzLWZp
ZWxkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK1Rlc3RzIHRoYXQgcHJlc3Npbmcgc2hp
ZnQgKyB0YWIgaW4gYSBmb2N1c2VkIGZpZWxkIGZvY3VzZXMgdGhlIHByZXZpb3VzIGZpZWxkIGlu
IHRhYiBvcmRlci4KKworUEFTUyBmb2N1c2VkIHRoZSBmaXJzdCBmaWVsZC4KKworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLXByZXZpb3VzLWZpZWxk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLXByZXZpb3VzLWZp
ZWxkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThiYzA3NDYyNzNjZmI2ZDMwZjI3NjAxYzYxNzU0YmM1N2Ey
YjU2MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1
cy10YWItcHJldmlvdXMtZmllbGQuaHRtbApAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL3VpLWhl
bHBlci5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRlc3RzIHRoYXQgcHJlc3Np
bmcgc2hpZnQgKyB0YWIgaW4gYSBmb2N1c2VkIGZpZWxkIGZvY3VzZXMgdGhlIHByZXZpb3VzIGZp
ZWxkIGluIHRhYiBvcmRlci48L3A+Cis8cCBpZD0icmVzdWx0Ij5GQUlMIGRpZCBub3QgZm9jdXMg
dGhlIGZpcnN0IGZpZWxkLjwvcD4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZmlyc3RGaWVsZCIg
b25mb2N1cz0icGFzc2VkKCkiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2Vjb25kRmllbGQiIGF1
dG9mb2N1cz4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKwor
YXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8
fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgcmV0dXJuOworICAgIGF3YWl0IFVJ
SGVscGVyLmFjdGl2YXRlRm9ybUNvbnRyb2woZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY29u
ZEZpZWxkIikpOworICAgIGF3YWl0IFVJSGVscGVyLmtleURvd24oIlx0IiwgWyJzaGlmdCJdKTsK
K30KKworZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
cmVzdWx0IikudGV4dENvbnRlbnQgPSAiUEFTUyBmb2N1c2VkIHRoZSBmaXJzdCBmaWVsZC4iOwor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25l
KCk7Cit9CisKK3J1blRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcyBiL0xheW91dFRlc3RzL3Jl
c291cmNlcy91aS1oZWxwZXIuanMKaW5kZXggYWU3MGYwM2RkMzFiZGRiODM0ZWNhZTEyMGFkZGU4
MzlhNDdkOGRmMC4uOTk0NWQyZmRkMjFhM2Q5ZWUxMzViMzM4ZWFmMjUzZWIxNzA3YTMzMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcworKysgYi9MYXlvdXRU
ZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCkBAIC01NCw3ICs1NCw3IEBAIHdpbmRvdy5VSUhl
bHBlciA9IGNsYXNzIFVJSGVscGVyIHsKICAgICAgICAgcmV0dXJuIFVJSGVscGVyLmFjdGl2YXRl
QXQoeCwgeSk7CiAgICAgfQogCi0gICAgc3RhdGljIGtleURvd24oa2V5KQorICAgIHN0YXRpYyBr
ZXlEb3duKGtleSwgbW9kaWZpZXJzPVtdKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlzV2Vi
S2l0MigpIHx8ICF0aGlzLmlzSU9TKCkpIHsKICAgICAgICAgICAgIGV2ZW50U2VuZGVyLmtleURv
d24oa2V5KTsKQEAgLTYyLDEwICs2Miw3IEBAIHdpbmRvdy5VSUhlbHBlciA9IGNsYXNzIFVJSGVs
cGVyIHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkg
PT4gewotICAgICAgICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgCi0gICAgICAgICAgICAg
ICAgdWlDb250cm9sbGVyLmtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoImRvd25BcnJvdyIs
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgICB1aUNvbnRyb2xsZXIudWlTY3JpcHRD
b21wbGV0ZSgiRG9uZSIpOwotICAgICAgICAgICAgICAgIH0pO2AsIHJlc29sdmUpOworICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ydW5VSVNjcmlwdChgdWlDb250cm9sbGVyLmtleURvd24oIiR7a2V5
fSIsICR7SlNPTi5zdHJpbmdpZnkobW9kaWZpZXJzKX0pO2AsIHJlc29sdmUpOwogICAgICAgICB9
KTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354728</attachid>
            <date>2018-11-13 16:42:04 -0800</date>
            <delta_ts>2018-11-15 11:04:54 -0800</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-191596-20181113164204.patch</filename>
            <type>text/plain</type>
            <size>27938</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI3MzRmOTVhMjNiMDkzOTRj
MDA0YzBmNTVkN2QyYzM4NmI5ZTg4ZGIuLmU0YjFiNjUxNWMxNWQyMDg4NWVlMTM5YWU4NzZmZWVh
MDljZTU0MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTEtMTMgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNoaWZ0ICsgVGFiIGRv
ZXMgbm90IGZvY3VzIHByZXZpb3VzIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1ODky
MDUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBXaXJl
IHVwIHRoZSB0aGUgdGFiIGFuZCBzaGlmdCArIHRhYiBrZXkgY29tbWFuZHMgdG8gdGhlIFdLV2Vi
Vmlldy9XS0NvbnRlbnRWaWV3J3MKKyAgICAgICAgYWN0aW9uIGZvcndhcmRpbmcgbWVjaGFuaXNt
LiBBbHNvIHJlbmFtZSAtX3ByZXZBY2Nlc3NvcnlUYWIgdG8gLV9wcmV2aW91c0FjY2Vzc29yeVRh
Yi4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogQWRkIG1vcmUgU1BJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcga2V5Q29tbWFuZHNdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfbmV4dEFjY2Vzc29yeVRhYkZvcldlYlZpZXc6XSk6IEFkZGVkLgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9wcmV2aW91c0FjY2Vzc29yeVRhYkZvcldlYlZpZXc6XSk6IEFk
ZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9uZXh0QWNjZXNzb3J5VGFiOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmV2QWNjZXNzb3J5VGFiOl0pOiBEZWxl
dGVkLgorCiAyMDE4LTExLTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUg
ZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5lYXIgemVybwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9QbGF0Zm9ybS9zcGkvaW9zL1VJS2l0U1BJLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3Nw
aS9pb3MvVUlLaXRTUEkuaAppbmRleCAyNzVmYTVmOTk2YjJjNTJlMzg2M2M5MTg5NGQzNjRlY2Nh
ZWY5NDNkLi44ZjZlM2FhMTUyOTYwNDU0YzU3Mzk5N2VkNjZlNTRiNzdhNTgzNDFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaApAQCAtMTU4LDcgKzE1OCw4IEBA
IHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJUHJldmlld0l0ZW1UeXBlKSB7CiBAZW5kCiAK
IFdURl9FWFRFUk5fQ19CRUdJTgotdHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50ICogSU9ISURF
dmVudFJlZjsKK3R5cGVkZWYgc3RydWN0IF9fSU9ISURFdmVudCogSU9ISURFdmVudFJlZjsKK3R5
cGVkZWYgc3RydWN0IF9fR1NLZXlib2FyZCogR1NLZXlib2FyZFJlZjsKIFdURl9FWFRFUk5fQ19F
TkQKIAogQGludGVyZmFjZSBVSUFwcGxpY2F0aW9uICgpCkBAIC0xNjgsNiArMTY5LDcgQEAgV1RG
X0VYVEVSTl9DX0VORAogLSAoQk9PTClpc1N1c3BlbmRlZFVuZGVyTG9jazsKIC0gKHZvaWQpX2Vu
cXVldWVISURFdmVudDooSU9ISURFdmVudFJlZilldmVudDsKIC0gKHZvaWQpX2hhbmRsZUhJREV2
ZW50OihJT0hJREV2ZW50UmVmKWV2ZW50OworLSAodm9pZCloYW5kbGVLZXlVSUV2ZW50OihVSUV2
ZW50ICopZXZlbnQ7CiBAZW5kCiAKIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFVJRGF0ZVBp
Y2tlclByaXZhdGVNb2RlKSAgewpAQCAtMTAyMyw4ICsxMDI1LDEwIEBAIHR5cGVkZWYgTlNJbnRl
Z2VyIFVJQ29tcG9zaXRpbmdNb2RlOwogQGVuZAogCiBAaW50ZXJmYWNlIFVJUGh5c2ljYWxLZXli
b2FyZEV2ZW50ICgpCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFVJS2V5Ym9hcmRJ
bnB1dEZsYWdzIF9pbnB1dEZsYWdzOworKyAoVUlQaHlzaWNhbEtleWJvYXJkRXZlbnQgKilfZXZl
bnRXaXRoSW5wdXQ6KE5TU3RyaW5nICopaW5wdXQgaW5wdXRGbGFnczooVUlLZXlib2FyZElucHV0
RmxhZ3MpZmxhZ3M7CistICh2b2lkKV9zZXRISURFdmVudDooSU9ISURFdmVudFJlZilldmVudCBr
ZXlib2FyZDooR1NLZXlib2FyZFJlZilnc0tleWJvYXJkOwogLSAoVUlQaHlzaWNhbEtleWJvYXJk
RXZlbnQgKilfY2xvbmVFdmVudCBOU19SRVRVUk5TX1JFVEFJTkVEOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBVSUtleWJvYXJkSW5wdXRGbGFncyBfaW5wdXRGbGFnczsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQ0ZJbmRleCBfa2V5Q29kZTsKIEBlbmQKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJu
YWwuaAppbmRleCBmZjQ1YTUyNGFhZDdmY2JjNjY3ZThmMDUwNGUzMjgzZTI3N2NkMWUyLi44ODlm
MDhkMzkxODA0OGYwMTQ4ODhjMTkyMTBiNGMyOThjOTdlNmZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtMTUx
LDYgKzE1MSw5IEBAIGNsYXNzIFVSTDsKIC0gKHZvaWQpX3RyYW5zbGl0ZXJhdGVDaGluZXNlOihp
ZClzZW5kZXI7CiAtICh2b2lkKXJlcGxhY2U6KGlkKXNlbmRlcjsKIAorLSAodm9pZClfbmV4dEFj
Y2Vzc29yeVRhYjooaWQpc2VuZGVyOworLSAodm9pZClfcHJldmlvdXNBY2Nlc3NvcnlUYWI6KGlk
KXNlbmRlcjsKKwogLSAodm9pZClfaW5jcmVtZW50Rm9jdXNQcmVzZXJ2YXRpb25Db3VudDsKIC0g
KHZvaWQpX2RlY3JlbWVudEZvY3VzUHJlc2VydmF0aW9uQ291bnQ7CiAtICh2b2lkKV9yZXNldEZv
Y3VzUHJlc2VydmF0aW9uQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggNWM0MTQyNTZmOWI1NjhkZGE1
YTY4ZTNiYTI5MmFmZjY5Mzc3NGI0Zi4uYWVkNGVhYzE4MzllZjc3NDIwNDdjNmRmN2QxNjg0ZWNi
OGUwNGM2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTItMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTItMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEzMiw3ICsxMzIsOSBAQCB0eXBlZGVmIHN0ZDo6
cGFpcjxXZWJLaXQ6OkludGVyYWN0aW9uSW5mb3JtYXRpb25SZXF1ZXN0LCBJbnRlcmFjdGlvbklu
Zm9ybWF0aW9uQwogICAgIE0oYWxpZ25MZWZ0KSBcCiAgICAgTShhbGlnblJpZ2h0KSBcCiAgICAg
TShhbGlnbkNlbnRlcikgXAotICAgIE0oYWxpZ25KdXN0aWZpZWQpCisgICAgTShhbGlnbkp1c3Rp
ZmllZCkgXAorICAgIE0oX25leHRBY2Nlc3NvcnlUYWIpIFwKKyAgICBNKF9wcmV2aW91c0FjY2Vz
c29yeVRhYikKIAogI2RlZmluZSBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9O
KE0pIFwKICAgICBNKF9hbGlnbkNlbnRlcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggYjg4N2I3N2Iw
MThjODllYTdiYTU1MTkzMzNhZDFkNDk5YTdhMDhiOS4uM2I3OTU2NTU2ODNhNTEyZGVmZjExMzAx
YmNhMWI1OTQwOTcxNTgwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQzMyw3ICsyNDMzLDEwIEBA
IC0gKEJPT0wpY2FuUGVyZm9ybUFjdGlvbjooU0VMKWFjdGlvbiB3aXRoU2VuZGVyOihpZClzZW5k
ZXIKIH0KIAogLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uRm9yV2ViVmlldzooU0VMKWFjdGlvbiB3
aXRoU2VuZGVyOihpZClzZW5kZXIKLXsgICAgICAgIAoreworICAgIGlmIChhY3Rpb24gPT0gQHNl
bGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOikgfHwgYWN0aW9uID09IEBzZWxlY3RvcihfcHJldmlv
dXNBY2Nlc3NvcnlUYWI6KSkKKyAgICAgICAgcmV0dXJuIFtzZWxmIGlzRmlyc3RSZXNwb25kZXJd
OworCiAgICAgYXV0byBlZGl0b3JTdGF0ZSA9IF9wYWdlLT5lZGl0b3JTdGF0ZSgpOwogICAgIGlm
IChhY3Rpb24gPT0gQHNlbGVjdG9yKF9zaG93VGV4dFN0eWxlT3B0aW9uczopKQogICAgICAgICBy
ZXR1cm4gZWRpdG9yU3RhdGUuaXNDb250ZW50UmljaGx5RWRpdGFibGUgJiYgZWRpdG9yU3RhdGUu
c2VsZWN0aW9uSXNSYW5nZSAmJiAhX3Nob3dpbmdUZXh0U3R5bGVPcHRpb25zOwpAQCAtMzIxMCwx
OCArMzIxMywxOCBAQCAtIChOU0FycmF5ICopa2V5Q29tbWFuZHMKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIHN0YXRpYyBOU0FycmF5KiBlZGl0YWJsZUtleUNvbW1hbmRzID0gW0BbCi0gICAg
ICAgW1VJS2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6
MCBhY3Rpb246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOildLAotICAgICAgIFtVSUtleUNv
bW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmllckZsYWdzOlVJS2V5TW9kaWZp
ZXJTaGlmdCBhY3Rpb246QHNlbGVjdG9yKF9wcmV2QWNjZXNzb3J5VGFiOildCisgICAgICAgIFtV
SUtleUNvbW1hbmQga2V5Q29tbWFuZFdpdGhJbnB1dDpAIlx0IiBtb2RpZmllckZsYWdzOjAgYWN0
aW9uOkBzZWxlY3RvcihfbmV4dEFjY2Vzc29yeVRhYjopXSwKKyAgICAgICAgW1VJS2V5Q29tbWFu
ZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmllclNo
aWZ0IGFjdGlvbjpAc2VsZWN0b3IoX3ByZXZpb3VzQWNjZXNzb3J5VGFiOildCiAgICAgXSByZXRh
aW5dOwogICAgIHJldHVybiBlZGl0YWJsZUtleUNvbW1hbmRzOwogfQogCi0tICh2b2lkKV9uZXh0
QWNjZXNzb3J5VGFiOihpZClzZW5kZXIKKy0gKHZvaWQpX25leHRBY2Nlc3NvcnlUYWJGb3JXZWJW
aWV3OihpZClzZW5kZXIKIHsKICAgICBbc2VsZiBhY2Nlc3NvcnlUYWI6WUVTXTsKIH0KIAotLSAo
dm9pZClfcHJldkFjY2Vzc29yeVRhYjooaWQpc2VuZGVyCistICh2b2lkKV9wcmV2aW91c0FjY2Vz
c29yeVRhYkZvcldlYlZpZXc6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIGFjY2Vzc29yeVRhYjpO
T107CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggOWFiMDQyZTg1OGYyNGM0MTk4MjI2ZDYyOTEyZDUwMTY5ZmNlOGRlOC4uZWY0OWI5MWQ5ZmFl
Mzc1YmI5MWMwNjM5MDM4M2U3YWZjZjExZGIxOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE4LTExLTEzICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBTaGlmdCArIFRh
YiBkb2VzIG5vdCBmb2N1cyBwcmV2aW91cyBmaWVsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80
NTg5MjA1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAg
QWRkIGluZnJhc3RydWN0dXJlIHRvIHN1cHBvcnQgdGVzdGluZyBhIGtleSBkb3duIGV2ZW50IHdp
dGggbW9kaWZpZXJzIGJ5IGNyZWF0aW5nCisgICAgICAgIGFuZCBkaXNwYXRjaGluZyBhIFVJRXZl
bnQuIFRoaXMgaW5mcmFzdHJ1Y3R1cmUgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG1lY2hhbmlzbSBp
bgorICAgICAgICBUb29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5t
bSB0byBnZW5lcmF0ZSBhIElPSElERXZlbnQgZm9yIGEKKyAgICAgICAga2V5ZG93biBhcyBpdCBk
aWQgbm90IHN1cHBvcnQgY3JlYXRpbmcgYW4gZXZlbnQgd2l0aCBtb2RpZmllciBrZXkgc3RhdGUg
dGhhdCB3b3VsZAorICAgICAgICBiZSByZWNvZ25pemVkIGJ5IFVJS2l0LgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRD
b250cm9sbGVyOjprZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZCk6
IERlbGV0ZWQuCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmlu
ZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgQWRkIGZ1bmN0aW9uIHVpQ29u
dHJvbGxlci5rZXlEb3duKCkgdGhhdCB0YWtlcyBhIGNoYXJhY3RlciB0aGF0IHJlcHJlc2VudHMg
YSBrZXlib2FyZCBrZXkKKyAgICAgICAgYW5kIGFuIGFycmF5IG9mIG1vZGlmaWVyIGtleXMuIFRo
ZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFuYWxhZ291cyB0byBldmVudFNlbmRlci5r
ZXlEb3duKCkuCisgICAgICAgIFJlbW92ZSBmdW5jdGlvbnMgdWlDb250cm9sbGVyLmtleURvd25V
c2luZ0hhcmR3YXJlS2V5Ym9hcmQoKSBhbmQgdWlDb250cm9sbGVyLmtleVVwVXNpbmdIYXJkd2Fy
ZUtleWJvYXJkKCkKKyAgICAgICAgYXMgdGhlIGZvcm1lciBpcyByZXBsYWNlZCBieSB1aUNvbnRy
b2xsZXIua2V5RG93bigpIGFuZCB0aGUgbGF0dGVyIHdhcyBuZXZlciB1c2VkLgorCisgICAgICAg
ICogVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duKTogQWRkZWQuCisg
ICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9h
cmQpOiBEZWxldGVkLgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25V
c2luZ0hhcmR3YXJlS2V5Ym9hcmQpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RSdW5uZXJTaGFy
ZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmg6CisgICAgICAgICogV2ViS2l0VGVz
dFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IubW06CisgICAgICAgIChjcmVhdGVISURLZXlE
b3duRXZlbnQpOiBBZGRlZC4KKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3Iga2V5RG93bjpj
b21wbGV0aW9uQmxvY2s6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW0hJREV2ZW50R2VuZXJhdG9y
IGtleVVwOmNvbXBsZXRpb25CbG9jazpdKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXVFI6OmFycmF5
TGVuZ3RoKTogQWRkZWQuCisgICAgICAgIChXVFI6OnBhcnNlTW9kaWZpZXIpOiBBZGRlZC4KKyAg
ICAgICAgKFdUUjo6cGFyc2VNb2RpZmllckFycmF5KTogQWRkZWQuCisgICAgICAgIChXVFI6OlVJ
U2NyaXB0Q29udHJvbGxlcjo6a2V5RG93bik6CisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJv
bGxlcjo6a2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZCk6IERlbGV0ZWQuCisgICAgICAgIChX
VFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQpOiBEZWxl
dGVkLgorCiAyMDE4LTExLTEzICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBzaG93IHNlbGVjdGlvbiBVSSBmb3IgZWRpdGFibGUg
ZWxlbWVudHMgd2l0aCBvcGFjaXR5IG5lYXIgemVybwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KaW5kZXggZDQxNjg2ZGY3ZjgxZGFiNTdm
NGQxNDc4OGEzYjE2MzkzYjUzMjgyOS4uYWU0NmRmNmNmZDRiMjY2ODY1ZjVkOThmZDNkYmQzYTQ0
M2RiMzQwYyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0Q29u
dHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250
cm9sbGVySU9TLm1tCkBAIC0xNTEsMTEgKzE1MSw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3Rl
CiB7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlEb3duVXNpbmdIYXJkd2FyZUtl
eWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKLXsKLX0K
LQotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpT
U3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3ZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjprZXlEb3duKEpTU3RyaW5nUmVmLCBKU1ZhbHVlUmVmKQogewogfQogCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9V
SVNjcmlwdENvbnRyb2xsZXIuaWRsIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENv
bnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAppbmRleCA1MmQzMzBhYjIxODA1
NzcwNjY5MDBhZWNlOTQ4OWM2ZGJhZTY4NWQwLi5lMDAxODA3Yzk3ZjUwMTY2ZmFjMWJkZDY2MGRk
ZmY3NmIwYjZiMTI4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0
Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsCisrKyBiL1Rvb2xzL1Rlc3RS
dW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5p
ZGwKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMzAsNiArMzAsMTQgQEAgZW51bSBEZXZpY2VPcmllbnRhdGlvbiB7CiAgICAgImxhbmRzY2Fw
ZS1yaWdodCIKIH07CiAKK2VudW0gTW9kaWZpZXJLZXkgeworICAgICJhbHQiLAorICAgICJjYXBz
TG9jayIsCisgICAgImN0cmwiLAorICAgICJtZXRhIiwgLy8gQ29tbWFuZCBrZXkgb24gTWFjIGFu
ZCBpT1MKKyAgICAic2hpZnQiCit9OworCiBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9sbGVyIHsK
IAogICAgIHZvaWQgZG9Bc3luY1Rhc2sob2JqZWN0IGNhbGxiYWNrKTsgLy8gVXNlZCB0byB0ZXN0
IHRoZSBoYXJuZXNzLgpAQCAtNjAsOCArNjgsOCBAQCBpbnRlcmZhY2UgVUlTY3JpcHRDb250cm9s
bGVyIHsKIAogICAgIHZvaWQgZW50ZXJUZXh0KERPTVN0cmluZyB0ZXh0KTsKICAgICB2b2lkIHR5
cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2Jq
ZWN0IGNhbGxiYWNrKTsKLSAgICB2b2lkIGtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoRE9N
U3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IGNhbGxiYWNrKTsKLSAgICB2b2lkIGtleVVwVXNpbmdI
YXJkd2FyZUtleWJvYXJkKERPTVN0cmluZyBjaGFyYWN0ZXIsIG9iamVjdCBjYWxsYmFjayk7CisK
KyAgICB2b2lkIGtleURvd24oRE9NU3RyaW5nIGNoYXJhY3Rlciwgb2JqZWN0IG1vZGlmaWVyQXJy
YXkpOwogCiAgICAgLy8gZXZlbnRzSlNPTiBkZXNjcmliZXMgYSBzZXJpZXMgb2YgdXNlciBldmVu
dHMgaW4gSlNPTiBmb3JtLiBGb3IgdGhlIGtleXMsIHNlZSBISURFdmVudEdlbmVyYXRvci5tbS4K
ICAgICAvLyBGb3IgZXhhbXBsZSwgdGhpcyBKU09OIGRlc2NyaWJlcyBhIHRvdWNoIGRvd24gZm9s
bG93ZWQgYnkgYSB0b3VjaCB1cCAoaS5lLiBhIHNpbmdsZSB0YXApLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNw
cCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNGRjYjRhNjQ5NmEzYTNlM2EyZTM4NWNiMTE1NzE5MTAzZTdiMDkxZS4u
NjdjYTc5OTQ3NjJmYjgyMWNkMmQ4YzczOWU2Nzc2NDk3Zjk5N2E2OCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmNw
cAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuY3BwCkBAIC0yOTYsMTEgKzI5Niw3IEBAIHZvaWQgVUlTY3JpcHRDb250cm9sbGVy
Ojp0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmLCBKU1ZhbHVl
CiB7CiB9CiAKLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXli
b2FyZChKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZikKLXsKLX0KLQotdm9pZCBVSVNjcmlwdENvbnRy
b2xsZXI6OmtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYsIEpTVmFsdWVS
ZWYpCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiwgSlNWYWx1
ZVJlZikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmggYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAppbmRleCBlYmJmNTQ4OTdkNDg3MjBk
MTk2ZTYyYmNmMjgyZmYzNjZjMTczZTU4Li41M2VkZGM4ZWE0NzVlYjViYTU2Zjc2MjBkNGZmNTZm
YTBiZDU1MGEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29u
dGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJ
U2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuaApAQCAtODksOCArODksOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGVudGVyVGV4dChKU1N0cmluZ1JlZik7CiAgICAgdm9pZCB0eXBlQ2hh
cmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1
ZVJlZiBjYWxsYmFjayk7Ci0gICAgdm9pZCBrZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpT
U3RyaW5nUmVmIGNoYXJhY3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjayk7Ci0gICAgdm9pZCBrZXlV
cFVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYg
Y2FsbGJhY2spOworCisgICAgdm9pZCBrZXlEb3duKEpTU3RyaW5nUmVmIGNoYXJhY3RlciwgSlNW
YWx1ZVJlZiBtb2RpZmllckFycmF5KTsKIAogICAgIHZvaWQga2V5Ym9hcmRBY2Nlc3NvcnlCYXJO
ZXh0KCk7CiAgICAgdm9pZCBrZXlib2FyZEFjY2Vzc29yeUJhclByZXZpb3VzKCk7CmRpZmYgLS1n
aXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5oIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaAppbmRleCBlN2E5ZTk4
ZmMzYWY2NjI4NjIyNmQzYTU5NWMwM2Q5MDM0NjFhZDUwLi4xNmY1ZGFhYzY4ZjYzYjgzMjY4N2E3
YzhkZTVkMGRmOGI1NGU2NmYyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJ
REV2ZW50R2VuZXJhdG9yLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIlVJS2l0U1BJLmgi
CiAKICNpbXBvcnQgPENvcmVHcmFwaGljcy9DR0dlb21ldHJ5Lmg+CisjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CiAKIC8vIEtleXMgZm9yIHNlbmRFdmVudFN0cmVhbTpjb21wbGV0aW9uQmxvY2s6
LgogZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBUb3BMZXZlbEV2ZW50SW5mb0tleTsKQEAgLTY4LDYg
KzY5LDggQEAgZXh0ZXJuIE5TU3RyaW5nKiBjb25zdCBISURFdmVudFBoYXNlQ2FuY2VsZWQ7CiAK
IGV4dGVybiBOU1VJbnRlZ2VyIGNvbnN0IEhJRE1heFRvdWNoQ291bnQ7CiAKK1JldGFpblB0cjxJ
T0hJREV2ZW50UmVmPiBjcmVhdGVISURLZXlEb3duRXZlbnQoTlNTdHJpbmcgKiwgdWludDY0X3Qg
dGltZXN0YW1wKTsKKwogQGludGVyZmFjZSBISURFdmVudEdlbmVyYXRvciA6IE5TT2JqZWN0CiAK
ICsgKEhJREV2ZW50R2VuZXJhdG9yICopc2hhcmVkSElERXZlbnRHZW5lcmF0b3I7CkBAIC0xMDUs
NyArMTA4LDUgQEAgZXh0ZXJuIE5TVUludGVnZXIgY29uc3QgSElETWF4VG91Y2hDb3VudDsKIAog
Ly8gS2V5Ym9hcmQKIC0gKHZvaWQpa2V5UHJlc3M6KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBs
ZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwotLSAodm9pZClrZXlE
b3duOihOU1N0cmluZyAqKWNoYXJhY3RlciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25CbG9jazsKLS0gKHZvaWQpa2V5VXA6KE5TU3RyaW5nICopY2hhcmFjdGVyIGNv
bXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrOwogCiBAZW5kCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5t
bSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCmluZGV4
IDRjODQyYjhkYWY4ZjE0ZTA0YzEyYTRlYWE3NDZiN2RhZTY2ZTY3MDIuLjcxNjEyZmM2NTAxNWJj
NTc5YmM5ODIwNTdkZWE0Yjc1M2Q4MWYxYjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1tCkBAIC0zMyw3ICszMyw2IEBACiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYv
T3B0aW9uYWwuaD4KLSNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9Tb2Z0
TGlua2luZy5oPgogCiBTT0ZUX0xJTktfUFJJVkFURV9GUkFNRVdPUksoQmFja0JvYXJkU2Vydmlj
ZXMpCkBAIC0xOTksOCArMTk4LDYgQEAgLSAodm9pZClkZWFsbG9jCiAgICAgW3N1cGVyIGRlYWxs
b2NdOwogfQogCi0KLQogLSAodm9pZClfc2VuZElPSElES2V5Ym9hcmRFdmVudDoodWludDY0X3Qp
dGltZXN0YW1wIHVzYWdlOih1aW50MzJfdCl1c2FnZSBpc0tleURvd246KGJvb2wpaXNLZXlEb3du
CiB7CiAgICAgUmV0YWluUHRyPElPSElERXZlbnRSZWY+IGV2ZW50UmVmID0gYWRvcHRDRihJT0hJ
REV2ZW50Q3JlYXRlS2V5Ym9hcmRFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LApAQCAtOTc2LDI1
ICs5NzMsMTIgQEAgc3RhdGljIGlubGluZSB1aW50MzJfdCBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0
ZXIoTlNTdHJpbmcgKmtleSkKICAgICByZXR1cm4gMDsKIH0KIAotLSAodm9pZClrZXlQcmVzczoo
TlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21w
bGV0aW9uQmxvY2sKK1JldGFpblB0cjxJT0hJREV2ZW50UmVmPiBjcmVhdGVISURLZXlEb3duRXZl
bnQoTlNTdHJpbmcgKmNoYXJhY3RlciwgdWludDY0X3QgdGltZXN0YW1wKQogewotICAgIGJvb2wg
c2hvdWxkV3JhcFdpdGhTaGlmdCA9IHNob3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJh
Y3RlcihjaGFyYWN0ZXIpOwotICAgIHVpbnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2RlRm9yQ2hh
cmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAgdWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hf
YWJzb2x1dGVfdGltZSgpOwotCi0gICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQpCi0gICAgICAg
IFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29sdXRlTWFjaFRpbWUgdXNhZ2U6a0hJ
RFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0IGlzS2V5RG93bjp0cnVlXTsKLQotICAgIFtzZWxmIF9z
ZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29sdXRlTWFjaFRpbWUgdXNhZ2U6dXNhZ2UgaXNLZXlE
b3duOnRydWVdOwotICAgIFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29sdXRlTWFj
aFRpbWUgdXNhZ2U6dXNhZ2UgaXNLZXlEb3duOmZhbHNlXTsKLQotICAgIGlmIChzaG91bGRXcmFw
V2l0aFNoaWZ0KQotICAgICAgICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0
ZU1hY2hUaW1lIHVzYWdlOmtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdCBpc0tleURvd246ZmFs
c2VdOwotCi0gICAgW3NlbGYgX3NlbmRNYXJrZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6
Y29tcGxldGlvbkJsb2NrXTsKKyAgICByZXR1cm4gYWRvcHRDRihJT0hJREV2ZW50Q3JlYXRlS2V5
Ym9hcmRFdmVudChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCB0aW1lc3RhbXAsIGtISURQYWdlX0tleWJv
YXJkT3JLZXlwYWQsIGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpLCB0cnVlIC8q
IGtleSBkb3duICovLCBrSU9ISURFdmVudE9wdGlvbk5vbmUpKTsKIH0KIAotLSAodm9pZClrZXlE
b3duOihOU1N0cmluZyAqKWNoYXJhY3RlciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb25CbG9jaworLSAodm9pZClrZXlQcmVzczooTlNTdHJpbmcgKiljaGFyYWN0ZXIg
Y29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uQmxvY2sKIHsKICAgICBi
b29sIHNob3VsZFdyYXBXaXRoU2hpZnQgPSBzaG91bGRXcmFwV2l0aFNoaWZ0S2V5RXZlbnRGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyKTsKICAgICB1aW50MzJfdCB1c2FnZSA9IGhpZFVzYWdlQ29kZUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIpOwpAQCAtMTAwNCwxNiArOTg4LDYgQEAgLSAodm9pZClrZXlE
b3duOihOU1N0cmluZyAqKWNoYXJhY3RlciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQp
KWNvbXBsZXRpb24KICAgICAgICAgW3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1
dGVNYWNoVGltZSB1c2FnZTprSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQgaXNLZXlEb3duOnRy
dWVdOwogCiAgICAgW3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1dGVNYWNoVGlt
ZSB1c2FnZTp1c2FnZSBpc0tleURvd246dHJ1ZV07Ci0KLSAgICBbc2VsZiBfc2VuZE1hcmtlckhJ
REV2ZW50V2l0aENvbXBsZXRpb25CbG9jazpjb21wbGV0aW9uQmxvY2tdOwotfQotCi0tICh2b2lk
KWtleVVwOihOU1N0cmluZyAqKWNoYXJhY3RlciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZv
aWQpKWNvbXBsZXRpb25CbG9jawotewotICAgIGJvb2wgc2hvdWxkV3JhcFdpdGhTaGlmdCA9IHNo
b3VsZFdyYXBXaXRoU2hpZnRLZXlFdmVudEZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgIHVp
bnQzMl90IHVzYWdlID0gaGlkVXNhZ2VDb2RlRm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7Ci0gICAg
dWludDY0X3QgYWJzb2x1dGVNYWNoVGltZSA9IG1hY2hfYWJzb2x1dGVfdGltZSgpOwotCiAgICAg
W3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJzb2x1dGVNYWNoVGltZSB1c2FnZTp1c2Fn
ZSBpc0tleURvd246ZmFsc2VdOwogCiAgICAgaWYgKHNob3VsZFdyYXBXaXRoU2hpZnQpCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1Mu
bW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0K
aW5kZXggZmZlYTdhMDBmYWUwZDM4YmMzZTRmYTRlYmM1NGQyZWM1NjhiMmQyYS4uMTE5ZjJkMGE2
MDk2MzMyNmE2NGRiZmE4N2QyZjUxMzc4ODg2NjAyYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCisrKyBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQpAQCAtNDIsNiArNDIsMTQg
QEAKICNpbXBvcnQgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL1Nv
ZnRMaW5raW5nLmg+CisKK1NPRlRfTElOS19GUkFNRVdPUksoVUlLaXQpCitTT0ZUX0xJTktfQ0xB
U1MoVUlLaXQsIFVJUGh5c2ljYWxLZXlib2FyZEV2ZW50KQorCitAaW50ZXJmYWNlIFVJUGh5c2lj
YWxLZXlib2FyZEV2ZW50IChVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudEhhY2spCitAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBOU0ludGVnZXIgX21vZGlmaWVyRmxhZ3M7CitAZW5kCiAKIG5h
bWVzcGFjZSBXVFIgewogCkBAIC0zNDAsMjggKzM0OCw3NSBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFy
YWN0ZQogICAgIH1dOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93blVzaW5n
SGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJh
Y2spCitzdGF0aWMgdW5zaWduZWQgYXJyYXlMZW5ndGgoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGFycmF5KQogewotICAgIHVuc2lnbmVkIGNhbGxiYWNrSUQgPSBtX2NvbnRleHQt
PnByZXBhcmVGb3JBc3luY1Rhc2soY2FsbGJhY2ssIENhbGxiYWNrVHlwZU5vblBlcnNpc3RlbnQp
OworICAgIGF1dG8gbGVuZ3RoU3RyaW5nID0gYWRvcHQoSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoImxlbmd0aCIpKTsKKyAgICBpZiAoYXV0byBsZW5ndGhWYWx1ZSA9IEpTT2JqZWN0R2V0
UHJvcGVydHkoY29udGV4dCwgYXJyYXksIGxlbmd0aFN0cmluZy5nZXQoKSwgbnVsbHB0cikpCisg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNWYWx1ZVRvTnVtYmVyKGNvbnRl
eHQsIGxlbmd0aFZhbHVlLCBudWxscHRyKSk7CisgICAgcmV0dXJuIDA7Cit9CiAKLSAgICAvLyBB
c3N1bWVzIHRoYXQgdGhlIGtleWJvYXJkIGlzIGFscmVhZHkgc2hvd24uCi0gICAgW1tISURFdmVu
dEdlbmVyYXRvciBzaGFyZWRISURFdmVudEdlbmVyYXRvcl0ga2V5RG93bjp0b1dURlN0cmluZyh0
b1dLKGNoYXJhY3RlcikpIGNvbXBsZXRpb25CbG9jazpeewotICAgICAgICBpZiAoIW1fY29udGV4
dCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21w
bGV0ZShjYWxsYmFja0lEKTsKLSAgICB9XTsKK3N0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgcGFy
c2VNb2RpZmllcihKU1N0cmluZ1JlZiBtb2RpZmllcikKK3sKKyAgICBpZiAoSlNTdHJpbmdJc0Vx
dWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgImFsdCIpKQorICAgICAgICByZXR1cm4gVUlLZXlN
b2RpZmllckFsdGVybmF0ZTsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyht
b2RpZmllciwgImNhcHNMb2NrIikpCisgICAgICAgIHJldHVybiBVSUtleU1vZGlmaWVyQWxwaGFT
aGlmdDsKKyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgImN0
cmwiKSkKKyAgICAgICAgcmV0dXJuIFVJS2V5TW9kaWZpZXJDb250cm9sOworICAgIGlmIChKU1N0
cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAibWV0YSIpKQorICAgICAgICByZXR1
cm4gVUlLZXlNb2RpZmllckNvbW1hbmQ7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobW9kaWZpZXIsICJzaGlmdCIpKQorICAgICAgICByZXR1cm4gVUlLZXlNb2RpZmllclNo
aWZ0OworICAgIHJldHVybiAwOwogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBV
c2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNh
bGxiYWNrKQorc3RhdGljIFVJS2V5TW9kaWZpZXJGbGFncyBwYXJzZU1vZGlmaWVyQXJyYXkoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgYXJyYXlWYWx1ZSkKIHsKLSAgICB1bnNpZ25l
ZCBjYWxsYmFja0lEID0gbV9jb250ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBD
YWxsYmFja1R5cGVOb25QZXJzaXN0ZW50KTsKKyAgICBpZiAoIWFycmF5VmFsdWUpCisgICAgICAg
IHJldHVybiAwOwogCi0gICAgLy8gQXNzdW1lcyB0aGF0IHRoZSBrZXlib2FyZCBpcyBhbHJlYWR5
IHNob3duLgotICAgIFtbSElERXZlbnRHZW5lcmF0b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3Jd
IGtleVVwOnRvV1RGU3RyaW5nKHRvV0soY2hhcmFjdGVyKSkgY29tcGxldGlvbkJsb2NrOl57Ci0g
ICAgICAgIGlmICghbV9jb250ZXh0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX2Nv
bnRleHQtPmFzeW5jVGFza0NvbXBsZXRlKGNhbGxiYWNrSUQpOwotICAgIH1dOworICAgIC8vIFRo
ZSB2YWx1ZSBtYXkgZWl0aGVyIGJlIGEgc3RyaW5nIHdpdGggYSBzaW5nbGUgbW9kaWZpZXIgb3Ig
YW4gYXJyYXkgb2YgbW9kaWZpZXJzLgorICAgIGlmIChKU1ZhbHVlSXNTdHJpbmcoY29udGV4dCwg
YXJyYXlWYWx1ZSkpIHsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJp
bmdDb3B5KGNvbnRleHQsIGFycmF5VmFsdWUsIG51bGxwdHIpKTsKKyAgICAgICAgcmV0dXJuIHBh
cnNlTW9kaWZpZXIoc3RyaW5nLmdldCgpKTsKKyAgICB9CisKKyAgICBpZiAoIUpTVmFsdWVJc09i
amVjdChjb250ZXh0LCBhcnJheVZhbHVlKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgSlNPYmpl
Y3RSZWYgYXJyYXkgPSBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihhcnJheVZhbHVlKTsKKyAgICB1
bnNpZ25lZCBsZW5ndGggPSBhcnJheUxlbmd0aChjb250ZXh0LCBhcnJheSk7CisgICAgVUlLZXlN
b2RpZmllckZsYWdzIG1vZGlmaWVycyA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKSB7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
KyAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZSA9IEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KGNv
bnRleHQsIGFycmF5LCBpLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBhdXRvIHN0cmluZyA9IGFkb3B0KEpTVmFsdWVU
b1N0cmluZ0NvcHkoY29udGV4dCwgdmFsdWUsICZleGNlcHRpb24pKTsKKyAgICAgICAgaWYgKGV4
Y2VwdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtb2RpZmllcnMgfD0gcGFy
c2VNb2RpZmllcihzdHJpbmcuZ2V0KCkpOworICAgIH0KKyAgICByZXR1cm4gbW9kaWZpZXJzOwor
fQorCit2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiBjaGFyYWN0
ZXIsIEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSkKK3sKKyAgICAvLyBDaGFyYWN0ZXIgY2FuIGJl
IGVpdGhlciBhIHNpbmdsZSBVbmljb2RlIGNvZGUgcG9pbnQgb3IgYSB0aGUgbmFtZSBvZiBhIHNw
ZWNpYWwga2V5IChlLmcuICJkb3duQXJyb3ciKS4KKyAgICAvLyBjcmVhdGVISURLZXlFdmVudCgp
IGtub3dzIGhvdyB0byBtYXAgdGhlc2Ugc3BlY2lhbCBrZXlzIHRvIHRoZSBhcHByb3ByaWF0ZSBr
ZXljb2RlLgorICAgIC8vCisgICAgLy8gRklYTUU6IFRoZSBVSUV2ZW50IGlucHV0IHN0cmluZyBm
b3Igc3BlY2lhbCBrZXlzIChlLmcuICJkb3duQXJyb3ciKSBzaG91bGQgZWl0aGVyIGJlIGEgVUlL
ZXlJbnB1dCoKKyAgICAvLyBzdHJpbmcgY29uc3RhbnQgb3IgYW4gQVNDSUkgY29udHJvbCBjaGFy
YWN0ZXIuIEluIHByYWN0aWNlIHRoZSBpbnB1dCBzdHJpbmcgZm9yIGEgc3BlY2lhbCBrZXkgaXMK
KyAgICAvLyBhbWJpZ3Vpb3VzIChlLmcuIEY1IGFuZCBGNiBoYXZlIHRoZSBzYW1lIHN0cmluZyAt
IHRoZSBBU0NJSSBETEUgY2hhcmFjdGVyKSBhbmQgaGVuY2UgaXQgaXMgZWZmZWN0aXZlbHkKKyAg
ICAvLyBpZ25vcmVkIGluIGZhdm9yIG9mIGtleSBpZGVudGlmaWNhdGlvbiBieSBrZXljb2RlLiBT
bywgd2UganVzdCB0YWtlIHRoZSBlbXB0eSBzdHJpbmcgYXMgdGhlIGlucHV0IHN0cmluZworICAg
IC8vIGZvciBhIHNwZWNpYWwga2V5LgorICAgIFN0cmluZyBpbnB1dFN0cmluZyA9IHRvV1RGU3Ry
aW5nKHRvV0soY2hhcmFjdGVyKSk7CisgICAgU3RyaW5nIHVpRXZlbnRJbnB1dFN0cmluZyA9IGlu
cHV0U3RyaW5nLmxlbmd0aCgpID4gMSA/IGVtcHR5U3RyaW5nKCkgOiBpbnB1dFN0cmluZzsKKyAg
ICBhdXRvICprZXlib2FyZEV2ZW50ID0gW2dldFVJUGh5c2ljYWxLZXlib2FyZEV2ZW50Q2xhc3Mo
KSBfZXZlbnRXaXRoSW5wdXQ6dWlFdmVudElucHV0U3RyaW5nIGlucHV0RmxhZ3M6KFVJS2V5Ym9h
cmRJbnB1dEZsYWdzKTBdOworICAgIGtleWJvYXJkRXZlbnQuX21vZGlmaWVyRmxhZ3MgPSBwYXJz
ZU1vZGlmaWVyQXJyYXkobV9jb250ZXh0LT5qc0NvbnRleHQoKSwgbW9kaWZpZXJBcnJheSk7Cisg
ICAgYXV0byBoaWRFdmVudCA9IGNyZWF0ZUhJREtleURvd25FdmVudChpbnB1dFN0cmluZywga2V5
Ym9hcmRFdmVudC50aW1lc3RhbXApOworICAgIFtrZXlib2FyZEV2ZW50IF9zZXRISURFdmVudDpo
aWRFdmVudC5nZXQoKSBrZXlib2FyZDpudWxscHRyXTsKKyAgICBbW1VJQXBwbGljYXRpb24gc2hh
cmVkQXBwbGljYXRpb25dIGhhbmRsZUtleVVJRXZlbnQ6a2V5Ym9hcmRFdmVudF07CiB9CiAKIHZv
aWQgVUlTY3JpcHRDb250cm9sbGVyOjpkaXNtaXNzRm9ybUFjY2Vzc29yeVZpZXcoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDFjYjg1NGE4ZTZhMjRmMGRmMWUyMGJlODY4OWM5ODI4Y2ZlYjI5MmMuLjUzZGUxMmFhNDFiMmUw
YTlkODY0ZTYyYzY1YzBjNmU4MTNiYjkyMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0x
MS0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisKKyAgICAgICAgW2lPU10g
U2hpZnQgKyBUYWIgZG9lcyBub3QgZm9jdXMgcHJldmlvdXMgZmllbGQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTU5NgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vNDU4OTIwNTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgor
CisgICAgICAgIEFkZCB0ZXN0cyB0byBlbnN1cmUgdGhhdCB3ZSBkbyBub3QgcmVncmVzcyB0aGUg
dGFiIGFuZCBzaGlmdCArIHRhYiBrZXkgY29tbWFuZHMuCisKKyAgICAgICAgKiBmYXN0L2V2ZW50
cy9pb3MvZm9jdXMtdGFiLW5leHQtZmllbGQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLW5leHQtZmllbGQuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1wcmV2aW91cy1maWVsZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMt
ZmllbGQuaHRtbDogQWRkZWQuCisgICAgICAgICogcmVzb3VyY2VzL3VpLWhlbHBlci5qczoKKyAg
ICAgICAgKHdpbmRvdy5VSUhlbHBlci5rZXlEb3duKTogVXBkYXRlZCB0byBzdXBwb3J0IHRha2lu
ZyBhbiBvcHRpb25hbCBhcnJheSBvZiBtb2RpZmllcnMgKGRlZmF1bHRzOiBbXSkKKyAgICAgICAg
YW5kIHVzZSB0aGUgbmV3IGluZnJhc3RydWN0dXJlIHRvIGdlbmVyYXRlIGEga2V5IGRvd24gZXZl
bnQgZm9yIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyLgorCiAyMDE4LTExLTEzICBSb3NzIEtpcnNs
aW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2
aWV3ZWQgbGF5b3V0IHRlc3QgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2Y1NGM4MjdjOGYyZmFiYmUyMjczNWE5ZDEwMDlmMGUyNjZiOGM2NQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1m
aWVsZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUZXN0cyB0aGF0IHByZXNzaW5nIHRo
ZSB0YWIga2V5IGluIGEgZm9jdXNlZCBmaWVsZCBmb2N1c2VzIHRoZSBuZXh0IGZpZWxkIGluIHRh
YiBvcmRlci4KKworUEFTUyBmb2N1c2VkIHRoZSBzZWNvbmQgZmllbGQuCisKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLW5leHQtZmllbGQuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jMDZkYWE0OGNhODk3MmYxNjNjZmViNWUzMjg0NzU4NDBlZWEwYmE2Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0
LWZpZWxkLmh0bWwKQEAgLTAsMCArMSwzNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UZXN0cyB0aGF0IHByZXNzaW5nIHRoZSB0YWIga2V5
IGluIGEgZm9jdXNlZCBmaWVsZCBmb2N1c2VzIHRoZSBuZXh0IGZpZWxkIGluIHRhYiBvcmRlci48
L3A+Cis8cCBpZD0icmVzdWx0Ij5GQUlMIGRpZCBub3QgZm9jdXMgdGhlIHNlY29uZCBmaWVsZC48
L3A+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImZpcnN0RmllbGQiPjxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0ic2Vjb25kRmllbGQiIG9uZm9jdXM9InBhc3NlZCgpIj4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0
ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkK
KyAgICAgICAgcmV0dXJuOworICAgIGF3YWl0IFVJSGVscGVyLmFjdGl2YXRlRm9ybUNvbnRyb2wo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpcnN0RmllbGQiKSk7CisgICAgYXdhaXQgVUlIZWxw
ZXIua2V5RG93bigiXHQiKTsKK30KKworZnVuY3Rpb24gcGFzc2VkKCkKK3sKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikudGV4dENvbnRlbnQgPSAiUEFTUyBmb2N1c2VkIHRo
ZSBzZWNvbmQgZmllbGQuIjsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1
cy10YWItcHJldmlvdXMtZmllbGQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvaW9zL2ZvY3VzLXRhYi1wcmV2aW91cy1maWVsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjA0YTc2YWE5MzY0NWQ4YmY4YThjODMxYzg2ZTUzMTEzMzYzNDJhMQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorVGVzdHMgdGhhdCBwcmVzc2luZyBzaGlmdCAr
IHRhYiBpbiBhIGZvY3VzZWQgZmllbGQgZm9jdXNlcyB0aGUgcHJldmlvdXMgZmllbGQgaW4gdGFi
IG9yZGVyLgorCitQQVNTIGZvY3VzZWQgdGhlIGZpcnN0IGZpZWxkLgorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hOGJjMDc0NjI3M2NmYjZkMzBmMjc2MDFjNjE3NTRiYzU3YTJiNTYw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRh
Yi1wcmV2aW91cy1maWVsZC5odG1sCkBAIC0wLDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVy
LmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGVzdHMgdGhhdCBwcmVzc2luZyBz
aGlmdCArIHRhYiBpbiBhIGZvY3VzZWQgZmllbGQgZm9jdXNlcyB0aGUgcHJldmlvdXMgZmllbGQg
aW4gdGFiIG9yZGVyLjwvcD4KKzxwIGlkPSJyZXN1bHQiPkZBSUwgZGlkIG5vdCBmb2N1cyB0aGUg
Zmlyc3QgZmllbGQuPC9wPgorPGlucHV0IHR5cGU9InRleHQiIGlkPSJmaXJzdEZpZWxkIiBvbmZv
Y3VzPSJwYXNzZWQoKSI+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzZWNvbmRGaWVsZCIgYXV0b2Zv
Y3VzPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworfQorCithc3lu
YyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICByZXR1cm47CisgICAgYXdhaXQgVUlIZWxw
ZXIuYWN0aXZhdGVGb3JtQ29udHJvbChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Vjb25kRmll
bGQiKSk7CisgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigiXHQiLCBbInNoaWZ0Il0pOworfQor
CitmdW5jdGlvbiBwYXNzZWQoKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS50ZXh0Q29udGVudCA9ICJQQVNTIGZvY3VzZWQgdGhlIGZpcnN0IGZpZWxkLiI7CisgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsK
K30KKworcnVuVGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzIGIvTGF5b3V0VGVzdHMvcmVzb3Vy
Y2VzL3VpLWhlbHBlci5qcwppbmRleCBmMDk2NTkxYWQwMTIzZjM4NWI1NzUxNDNkMmRjOWE0MTQz
YThiMWVhLi4xYTVmNGI3ODY2MjU0OWUxNDJlMmM0ZmVmNzI3MTY4ZDdkYmY1OWIyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCisrKyBiL0xheW91dFRlc3Rz
L3Jlc291cmNlcy91aS1oZWxwZXIuanMKQEAgLTU0LDcgKzU0LDcgQEAgd2luZG93LlVJSGVscGVy
ID0gY2xhc3MgVUlIZWxwZXIgewogICAgICAgICByZXR1cm4gVUlIZWxwZXIuYWN0aXZhdGVBdCh4
LCB5KTsKICAgICB9CiAKLSAgICBzdGF0aWMga2V5RG93bihrZXkpCisgICAgc3RhdGljIGtleURv
d24oa2V5LCBtb2RpZmllcnM9W10pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaXNXZWJLaXQy
KCkgfHwgIXRoaXMuaXNJT1MoKSkgewogICAgICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93bihr
ZXkpOwpAQCAtNjIsMTAgKzYyLDcgQEAgd2luZG93LlVJSGVscGVyID0gY2xhc3MgVUlIZWxwZXIg
ewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7
Ci0gICAgICAgICAgICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGAKLSAgICAgICAgICAgICAgICB1
aUNvbnRyb2xsZXIua2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2FyZCgiZG93bkFycm93IiwgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci51aVNjcmlwdENvbXBs
ZXRlKCJEb25lIik7Ci0gICAgICAgICAgICAgICAgfSk7YCwgcmVzb2x2ZSk7CisgICAgICAgICAg
ICB0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KGB1aUNvbnRyb2xsZXIua2V5RG93bigiJHtrZXl9Iiwg
JHtKU09OLnN0cmluZ2lmeShtb2RpZmllcnMpfSk7YCwgcmVzb2x2ZSk7CiAgICAgICAgIH0pOwog
ICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354957</attachid>
            <date>2018-11-15 11:04:55 -0800</date>
            <delta_ts>2018-11-15 11:04:55 -0800</delta_ts>
            <desc>To Land</desc>
            <filename>bug-191596-20181115110452.patch</filename>
            <type>text/plain</type>
            <size>28939</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MjMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGIxMmExMzI0OWEwMmUwZmE1
ZmJiYTJkMWUzYzVlNzU4OTU2MzlmNzkuLjZmMjM5MzZkYmU3NzA1ZDkzYzlkNzZmNzNjMDY3OGVj
YTczYmFmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTgtMTEtMTUgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNoaWZ0ICsgVGFiIGRv
ZXMgbm90IGZvY3VzIHByZXZpb3VzIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1ODky
MDUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBXaXJl
IHVwIHRoZSB0aGUgdGFiIGFuZCBzaGlmdCArIHRhYiBrZXkgY29tbWFuZHMgdG8gdGhlIFdLV2Vi
Vmlldy9XS0NvbnRlbnRWaWV3J3MKKyAgICAgICAgYWN0aW9uIGZvcndhcmRpbmcgbWVjaGFuaXNt
LiBBbHNvIHJlbmFtZSAtX3ByZXZBY2Nlc3NvcnlUYWIgdG8gLV9wcmV2aW91c0FjY2Vzc29yeVRh
Yi4KKworICAgICAgICAqIFBsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaDogQWRkIG1vcmUgU1BJ
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAgICAgICAo
LVtXS0NvbnRlbnRWaWV3IGNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OndpdGhTZW5kZXI6XSk6
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcga2V5Q29tbWFuZHNdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfbmV4dEFjY2Vzc29yeVRhYkZvcldlYlZpZXc6XSk6IEFkZGVkLgorICAgICAg
ICAoLVtXS0NvbnRlbnRWaWV3IF9wcmV2aW91c0FjY2Vzc29yeVRhYkZvcldlYlZpZXc6XSk6IEFk
ZGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9uZXh0QWNjZXNzb3J5VGFiOl0pOiBEZWxl
dGVkLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wcmV2QWNjZXNzb3J5VGFiOl0pOiBEZWxl
dGVkLgorCiAyMDE4LTExLTE1ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAog
ICAgICAgICBEZWxldGUgb2xkIC54Y2ZpbGVsaXN0IGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1BsYXRmb3JtL3NwaS9pb3MvVUlLaXRTUEkuaCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vc3BpL2lvcy9VSUtpdFNQSS5oCmluZGV4IGYyOTViMTNhMTY2NzczNmNhZTY2YWUzNDQ2MTMz
Y2RjYjI4YWMzMjYuLjllZWZiOTc4NGZiZTY4OWIwOTBhNWIwMWZjZWVjZTcwZDY1NDEzMmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vc3BpL2lvcy9VSUtpdFNQSS5oCkBAIC0xNTgsNyArMTU4
LDggQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlQcmV2aWV3SXRlbVR5cGUpIHsKIEBl
bmQKIAogV1RGX0VYVEVSTl9DX0JFR0lOCi10eXBlZGVmIHN0cnVjdCBfX0lPSElERXZlbnQgKiBJ
T0hJREV2ZW50UmVmOwordHlwZWRlZiBzdHJ1Y3QgX19JT0hJREV2ZW50KiBJT0hJREV2ZW50UmVm
OwordHlwZWRlZiBzdHJ1Y3QgX19HU0tleWJvYXJkKiBHU0tleWJvYXJkUmVmOwogV1RGX0VYVEVS
Tl9DX0VORAogCiBAaW50ZXJmYWNlIFVJQXBwbGljYXRpb24gKCkKQEAgLTE2OCw2ICsxNjksNyBA
QCBXVEZfRVhURVJOX0NfRU5ECiAtIChCT09MKWlzU3VzcGVuZGVkVW5kZXJMb2NrOwogLSAodm9p
ZClfZW5xdWV1ZUhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2ZW50OwogLSAodm9pZClfaGFuZGxl
SElERXZlbnQ6KElPSElERXZlbnRSZWYpZXZlbnQ7CistICh2b2lkKWhhbmRsZUtleVVJRXZlbnQ6
KFVJRXZlbnQgKilldmVudDsKIEBlbmQKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVUlE
YXRlUGlja2VyUHJpdmF0ZU1vZGUpICB7CkBAIC0xMDIzLDggKzEwMjUsMTAgQEAgdHlwZWRlZiBO
U0ludGVnZXIgVUlDb21wb3NpdGluZ01vZGU7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVUlQaHlzaWNh
bEtleWJvYXJkRXZlbnQgKCkKLUBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlLZXli
b2FyZElucHV0RmxhZ3MgX2lucHV0RmxhZ3M7CisrIChVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCAq
KV9ldmVudFdpdGhJbnB1dDooTlNTdHJpbmcgKilpbnB1dCBpbnB1dEZsYWdzOihVSUtleWJvYXJk
SW5wdXRGbGFncylmbGFnczsKKy0gKHZvaWQpX3NldEhJREV2ZW50OihJT0hJREV2ZW50UmVmKWV2
ZW50IGtleWJvYXJkOihHU0tleWJvYXJkUmVmKWdzS2V5Ym9hcmQ7CiAtIChVSVBoeXNpY2FsS2V5
Ym9hcmRFdmVudCAqKV9jbG9uZUV2ZW50IE5TX1JFVFVSTlNfUkVUQUlORUQ7CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFVJS2V5Ym9hcmRJbnB1dEZsYWdzIF9pbnB1dEZsYWdzOwog
QHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBDRkluZGV4IF9rZXlDb2RlOwogQGVuZAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oCmluZGV4IDVjM2RjMzQ3NDcxYjQ4ZTdjM2ViZGUxZmE0ZGE3MDc5NTlhNGI1ZjMu
LmMyNjZkNmVkNDU2MjE2NzViM2YyYTJmNTA5ZDgzNGQxMzY2YWE0NDkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBA
IC0xNTEsNiArMTUxLDkgQEAgY2xhc3MgVVJMOwogLSAodm9pZClfdHJhbnNsaXRlcmF0ZUNoaW5l
c2U6KGlkKXNlbmRlcjsKIC0gKHZvaWQpcmVwbGFjZTooaWQpc2VuZGVyOwogCistICh2b2lkKV9u
ZXh0QWNjZXNzb3J5VGFiOihpZClzZW5kZXI7CistICh2b2lkKV9wcmV2aW91c0FjY2Vzc29yeVRh
YjooaWQpc2VuZGVyOworCiAtICh2b2lkKV9pbmNyZW1lbnRGb2N1c1ByZXNlcnZhdGlvbkNvdW50
OwogLSAodm9pZClfZGVjcmVtZW50Rm9jdXNQcmVzZXJ2YXRpb25Db3VudDsKIC0gKHZvaWQpX3Jl
c2V0Rm9jdXNQcmVzZXJ2YXRpb25Db3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCAzYmQxZTI1Y2QxYTg4
NjcyNTc3NjE2OTRmMThjNmM1YmI2ZjhkOTJmLi5jNDhjMzlkNjZkYzEzOTY0MjA1NjU0YjlkNTQw
ZjBmNjg3ODg0MjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMi0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDYgKzExNCw4IEBAIHR5cGVkZWYg
c3RkOjpwYWlyPFdlYktpdDo6SW50ZXJhY3Rpb25JbmZvcm1hdGlvblJlcXVlc3QsIEludGVyYWN0
aW9uSW5mb3JtYXRpb25DCiAgICAgTShfc2hhcmUpIFwKICAgICBNKF9zaG93VGV4dFN0eWxlT3B0
aW9ucykgXAogICAgIE0oX3RyYW5zbGl0ZXJhdGVDaGluZXNlKSBcCisgICAgTShfbmV4dEFjY2Vz
c29yeVRhYikgXAorICAgIE0oX3ByZXZpb3VzQWNjZXNzb3J5VGFiKSBcCiAgICAgTShjb3B5KSBc
CiAgICAgTShjdXQpIFwKICAgICBNKHBhc3RlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCA1MmNiYTRm
YzhlZDY1NDU5MWU4ZDliNWE5OThjMDA2ZjFiZmEzOGY3Li4yMWQzMTc3MDA2YjFjNmRmMDE2YmFi
ZjNlMGMzNmE3Mzg4NDJhMDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNDQwLDcgKzI0NDAsMTIg
QEAgLSAoQk9PTCljYW5QZXJmb3JtQWN0aW9uOihTRUwpYWN0aW9uIHdpdGhTZW5kZXI6KGlkKXNl
bmRlcgogfQogCiAtIChCT09MKWNhblBlcmZvcm1BY3Rpb25Gb3JXZWJWaWV3OihTRUwpYWN0aW9u
IHdpdGhTZW5kZXI6KGlkKXNlbmRlcgoteyAgICAgICAgCit7CisgICAgaWYgKGFjdGlvbiA9PSBA
c2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6KSkKKyAgICAgICAgcmV0dXJuIGhhc0Fzc2lzdGVk
Tm9kZShfYXNzaXN0ZWROb2RlSW5mb3JtYXRpb24pICYmIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlv
bi5oYXNOZXh0Tm9kZTsKKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihfcHJldmlvdXNBY2Nl
c3NvcnlUYWI6KSkKKyAgICAgICAgcmV0dXJuIGhhc0Fzc2lzdGVkTm9kZShfYXNzaXN0ZWROb2Rl
SW5mb3JtYXRpb24pICYmIF9hc3Npc3RlZE5vZGVJbmZvcm1hdGlvbi5oYXNQcmV2aW91c05vZGU7
CisKICAgICBhdXRvIGVkaXRvclN0YXRlID0gX3BhZ2UtPmVkaXRvclN0YXRlKCk7CiAgICAgaWYg
KGFjdGlvbiA9PSBAc2VsZWN0b3IoX3Nob3dUZXh0U3R5bGVPcHRpb25zOikpCiAgICAgICAgIHJl
dHVybiBlZGl0b3JTdGF0ZS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSAmJiBlZGl0b3JTdGF0ZS5z
ZWxlY3Rpb25Jc1JhbmdlICYmICFfc2hvd2luZ1RleHRTdHlsZU9wdGlvbnM7CkBAIC0zMjE4LDE4
ICszMjIzLDE4IEBAIC0gKE5TQXJyYXkgKilrZXlDb21tYW5kcwogICAgICAgICByZXR1cm4gbmls
OwogCiAgICAgc3RhdGljIE5TQXJyYXkqIGVkaXRhYmxlS2V5Q29tbWFuZHMgPSBbQFsKLSAgICAg
ICBbVUlLZXlDb21tYW5kIGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczow
IGFjdGlvbjpAc2VsZWN0b3IoX25leHRBY2Nlc3NvcnlUYWI6KV0sCi0gICAgICAgW1VJS2V5Q29t
bWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6VUlLZXlNb2RpZmll
clNoaWZ0IGFjdGlvbjpAc2VsZWN0b3IoX3ByZXZBY2Nlc3NvcnlUYWI6KV0KKyAgICAgICAgW1VJ
S2V5Q29tbWFuZCBrZXlDb21tYW5kV2l0aElucHV0OkAiXHQiIG1vZGlmaWVyRmxhZ3M6MCBhY3Rp
b246QHNlbGVjdG9yKF9uZXh0QWNjZXNzb3J5VGFiOildLAorICAgICAgICBbVUlLZXlDb21tYW5k
IGtleUNvbW1hbmRXaXRoSW5wdXQ6QCJcdCIgbW9kaWZpZXJGbGFnczpVSUtleU1vZGlmaWVyU2hp
ZnQgYWN0aW9uOkBzZWxlY3RvcihfcHJldmlvdXNBY2Nlc3NvcnlUYWI6KV0KICAgICBdIHJldGFp
bl07CiAgICAgcmV0dXJuIGVkaXRhYmxlS2V5Q29tbWFuZHM7CiB9CiAKLS0gKHZvaWQpX25leHRB
Y2Nlc3NvcnlUYWI6KGlkKXNlbmRlcgorLSAodm9pZClfbmV4dEFjY2Vzc29yeVRhYkZvcldlYlZp
ZXc6KGlkKXNlbmRlcgogewogICAgIFtzZWxmIGFjY2Vzc29yeVRhYjpZRVNdOwogfQogCi0tICh2
b2lkKV9wcmV2QWNjZXNzb3J5VGFiOihpZClzZW5kZXIKKy0gKHZvaWQpX3ByZXZpb3VzQWNjZXNz
b3J5VGFiRm9yV2ViVmlldzooaWQpc2VuZGVyCiB7CiAgICAgW3NlbGYgYWNjZXNzb3J5VGFiOk5P
XTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBhMzU0MTgyNzQxZTZiY2JiNDk2ZjU2YjJmYWNjZjc4OGE2NzhiYWMzLi43ODcyODFjZTk0NjVh
ZmFkMmY1ZTVlMGY1ZjkzODAyZGU2ZGMzMzhkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMTgtMTEtMTUgIERhbmll
bCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdIFNoaWZ0ICsgVGFi
IGRvZXMgbm90IGZvY3VzIHByZXZpb3VzIGZpZWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE1OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ1
ODkyMDUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICBB
ZGQgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCB0ZXN0aW5nIGEga2V5IGRvd24gZXZlbnQgd2l0
aCBtb2RpZmllcnMgYnkgY3JlYXRpbmcKKyAgICAgICAgYW5kIGRpc3BhdGNoaW5nIGEgVUlFdmVu
dC4gVGhpcyBpbmZyYXN0cnVjdHVyZSByZXBsYWNlcyB0aGUgcHJldmlvdXMgbWVjaGFuaXNtIGlu
CisgICAgICAgIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLm1t
IHRvIGdlbmVyYXRlIGEgSU9ISURFdmVudCBmb3IgYQorICAgICAgICBrZXlkb3duIGFzIGl0IGRp
ZCBub3Qgc3VwcG9ydCBjcmVhdGluZyBhbiBldmVudCB3aXRoIG1vZGlmaWVyIGtleSBzdGF0ZSB0
aGF0IHdvdWxkCisgICAgICAgIGJlIHJlY29nbml6ZWQgYnkgVUlLaXQuCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tOgorICAgICAgICAoV1RS
OjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd24pOgorICAgICAgICAoV1RSOjpVSVNjcmlwdENv
bnRyb2xsZXI6OmtleURvd25Vc2luZ0hhcmR3YXJlS2V5Ym9hcmQpOiBEZWxldGVkLgorICAgICAg
ICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5k
aW5ncy9VSVNjcmlwdENvbnRyb2xsZXIuaWRsOgorICAgICAgICBBZGQgZnVuY3Rpb24gdWlDb250
cm9sbGVyLmtleURvd24oKSB0aGF0IHRha2VzIGEgY2hhcmFjdGVyIHRoYXQgcmVwcmVzZW50cyBh
IGtleWJvYXJkIGtleQorICAgICAgICBhbmQgYW4gYXJyYXkgb2YgbW9kaWZpZXIga2V5cy4gVGhl
IGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gaXMgYW5hbG9nb3VzIHRvIGV2ZW50U2VuZGVyLmtl
eURvd24oKS4KKyAgICAgICAgUmVtb3ZlIGZ1bmN0aW9ucyB1aUNvbnRyb2xsZXIua2V5RG93blVz
aW5nSGFyZHdhcmVLZXlib2FyZCgpIGFuZCB1aUNvbnRyb2xsZXIua2V5VXBVc2luZ0hhcmR3YXJl
S2V5Ym9hcmQoKQorICAgICAgICBhcyB0aGUgZm9ybWVyIGlzIHJlcGxhY2VkIGJ5IHVpQ29udHJv
bGxlci5rZXlEb3duKCkgYW5kIHRoZSBsYXR0ZXIgd2FzIG5ldmVyIHVzZWQuCisKKyAgICAgICAg
KiBUZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoV1RSOjpVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd24pOiBBZGRlZC4KKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2Fy
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXVFI6OlVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93blVz
aW5nSGFyZHdhcmVLZXlib2FyZCk6IERlbGV0ZWQuCisgICAgICAgICogVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbToKKyAgICAgICAgKGNyZWF0ZUhJREtleURv
d25FdmVudCk6IEFkZGVkLgorICAgICAgICAoLVtISURFdmVudEdlbmVyYXRvciBrZXlEb3duOmNv
bXBsZXRpb25CbG9jazpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bSElERXZlbnRHZW5lcmF0b3Ig
a2V5VXA6Y29tcGxldGlvbkJsb2NrOl0pOiBEZWxldGVkLgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6YXJyYXlM
ZW5ndGgpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6cGFyc2VNb2RpZmllcik6IEFkZGVkLgorICAg
ICAgICAoV1RSOjpwYXJzZU1vZGlmaWVyQXJyYXkpOiBBZGRlZC4KKyAgICAgICAgKFdUUjo6VUlT
Y3JpcHRDb250cm9sbGVyOjprZXlEb3duKToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjprZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKTogRGVsZXRlZC4KKyAgICAgICAgKFdU
Ujo6VUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2FyZCk6IERlbGV0
ZWQuCisKIDIwMTgtMTEtMTUgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIERlbGV0ZSBvbGQgLnhjZmlsZWxpc3QgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0gYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IGQ0MTY4NmRmN2Y4MWRh
YjU3ZjRkMTQ3ODhhM2IxNjM5M2I1MzI4MjkuLmFlNDZkZjZjZmQ0YjI2Njg2NWY1ZDk4ZmQzZGJk
M2E0NDNkYjM0MGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQpAQCAtMTUxLDExICsxNTEsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFy
YWN0ZQogewogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5RG93blVzaW5nSGFyZHdh
cmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spCi17
Ci19Ci0KLXZvaWQgVUlTY3JpcHRDb250cm9sbGVyOjprZXlVcFVzaW5nSGFyZHdhcmVLZXlib2Fy
ZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spCit2b2lkIFVJU2Ny
aXB0Q29udHJvbGxlcjo6a2V5RG93bihKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZikKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvQmluZGlu
Z3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbCBiL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3Jp
cHRDb250ZXh0L0JpbmRpbmdzL1VJU2NyaXB0Q29udHJvbGxlci5pZGwKaW5kZXggNTJkMzMwYWIy
MTgwNTc3MDY2OTAwYWVjZTk0ODljNmRiYWU2ODVkMC4uZTAwMTgwN2M5N2Y1MDE2NmZhYzFiZGQ2
NjBkZGZmNzZiMGI2YjEyOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNj
cmlwdENvbnRleHQvQmluZGluZ3MvVUlTY3JpcHRDb250cm9sbGVyLmlkbAorKysgYi9Ub29scy9U
ZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9CaW5kaW5ncy9VSVNjcmlwdENvbnRyb2xs
ZXIuaWRsCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTMwLDYgKzMwLDE0IEBAIGVudW0gRGV2aWNlT3JpZW50YXRpb24gewogICAgICJsYW5k
c2NhcGUtcmlnaHQiCiB9OwogCitlbnVtIE1vZGlmaWVyS2V5IHsKKyAgICAiYWx0IiwKKyAgICAi
Y2Fwc0xvY2siLAorICAgICJjdHJsIiwKKyAgICAibWV0YSIsIC8vIENvbW1hbmQga2V5IG9uIE1h
YyBhbmQgaU9TCisgICAgInNoaWZ0IgorfTsKKwogaW50ZXJmYWNlIFVJU2NyaXB0Q29udHJvbGxl
ciB7CiAKICAgICB2b2lkIGRvQXN5bmNUYXNrKG9iamVjdCBjYWxsYmFjayk7IC8vIFVzZWQgdG8g
dGVzdCB0aGUgaGFybmVzcy4KQEAgLTYwLDggKzY4LDggQEAgaW50ZXJmYWNlIFVJU2NyaXB0Q29u
dHJvbGxlciB7CiAKICAgICB2b2lkIGVudGVyVGV4dChET01TdHJpbmcgdGV4dCk7CiAgICAgdm9p
ZCB0eXBlQ2hhcmFjdGVyVXNpbmdIYXJkd2FyZUtleWJvYXJkKERPTVN0cmluZyBjaGFyYWN0ZXIs
IG9iamVjdCBjYWxsYmFjayk7Ci0gICAgdm9pZCBrZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJk
KERPTVN0cmluZyBjaGFyYWN0ZXIsIG9iamVjdCBjYWxsYmFjayk7Ci0gICAgdm9pZCBrZXlVcFVz
aW5nSGFyZHdhcmVLZXlib2FyZChET01TdHJpbmcgY2hhcmFjdGVyLCBvYmplY3QgY2FsbGJhY2sp
OworCisgICAgdm9pZCBrZXlEb3duKERPTVN0cmluZyBjaGFyYWN0ZXIsIG9iamVjdCBtb2RpZmll
ckFycmF5KTsKIAogICAgIC8vIGV2ZW50c0pTT04gZGVzY3JpYmVzIGEgc2VyaWVzIG9mIHVzZXIg
ZXZlbnRzIGluIEpTT04gZm9ybS4gRm9yIHRoZSBrZXlzLCBzZWUgSElERXZlbnRHZW5lcmF0b3Iu
bW0uCiAgICAgLy8gRm9yIGV4YW1wbGUsIHRoaXMgSlNPTiBkZXNjcmliZXMgYSB0b3VjaCBkb3du
IGZvbGxvd2VkIGJ5IGEgdG91Y2ggdXAgKGkuZS4gYSBzaW5nbGUgdGFwKS4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5jcHAgYi9Ub29scy9UZXN0UnVubmVyU2hhcmVkL1VJU2NyaXB0Q29udGV4dC9VSVNjcmlwdENv
bnRyb2xsZXIuY3BwCmluZGV4IDRkY2I0YTY0OTZhM2EzZTNhMmUzODVjYjExNTcxOTEwM2U3YjA5
MWUuLjY3Y2E3OTk0NzYyZmI4MjFjZDJkOGM3MzllNjc3NjQ5N2Y5OTdhNjggMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlTY3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlwdENvbnRleHQvVUlTY3Jp
cHRDb250cm9sbGVyLmNwcApAQCAtMjk2LDExICsyOTYsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6dHlwZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiwgSlNW
YWx1ZQogewogfQogCi12b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6a2V5VXBVc2luZ0hhcmR3YXJl
S2V5Ym9hcmQoSlNTdHJpbmdSZWYsIEpTVmFsdWVSZWYpCi17Ci19Ci0KLXZvaWQgVUlTY3JpcHRD
b250cm9sbGVyOjprZXlEb3duVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmLCBKU1Zh
bHVlUmVmKQordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd24oSlNTdHJpbmdSZWYsIEpT
VmFsdWVSZWYpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RSdW5uZXJTaGFyZWQvVUlT
Y3JpcHRDb250ZXh0L1VJU2NyaXB0Q29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZWJiZjU0ODk3ZDQ4
NzIwZDE5NmU2MmJjZjI4MmZmMzY2YzE3M2U1OC4uNTNlZGRjOGVhNDc1ZWI1YmE1NmY3NjIwZDRm
ZjU2ZmEwYmQ1NTBhMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFJ1bm5lclNoYXJlZC9VSVNjcmlw
dENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvVGVzdFJ1bm5lclNoYXJl
ZC9VSVNjcmlwdENvbnRleHQvVUlTY3JpcHRDb250cm9sbGVyLmgKQEAgLTg5LDggKzg5LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBlbnRlclRleHQoSlNTdHJpbmdSZWYpOwogICAgIHZvaWQgdHlw
ZUNoYXJhY3RlclVzaW5nSGFyZHdhcmVLZXlib2FyZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpT
VmFsdWVSZWYgY2FsbGJhY2spOwotICAgIHZvaWQga2V5RG93blVzaW5nSGFyZHdhcmVLZXlib2Fy
ZChKU1N0cmluZ1JlZiBjaGFyYWN0ZXIsIEpTVmFsdWVSZWYgY2FsbGJhY2spOwotICAgIHZvaWQg
a2V5VXBVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVl
UmVmIGNhbGxiYWNrKTsKKworICAgIHZvaWQga2V5RG93bihKU1N0cmluZ1JlZiBjaGFyYWN0ZXIs
IEpTVmFsdWVSZWYgbW9kaWZpZXJBcnJheSk7CiAKICAgICB2b2lkIGtleWJvYXJkQWNjZXNzb3J5
QmFyTmV4dCgpOwogICAgIHZvaWQga2V5Ym9hcmRBY2Nlc3NvcnlCYXJQcmV2aW91cygpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL0hJREV2ZW50R2VuZXJhdG9yLmgKaW5kZXggZTdh
OWU5OGZjM2FmNjYyODYyMjZkM2E1OTVjMDNkOTAzNDYxYWQ1MC4uMTZmNWRhYWM2OGY2M2I4MzI2
ODdhN2M4ZGU1ZDBkZjhiNTRlNjZmMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9pb3MvSElERXZlbnRHZW5lcmF0b3IuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lv
cy9ISURFdmVudEdlbmVyYXRvci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJVSUtpdFNQ
SS5oIgogCiAjaW1wb3J0IDxDb3JlR3JhcGhpY3MvQ0dHZW9tZXRyeS5oPgorI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgogCiAvLyBLZXlzIGZvciBzZW5kRXZlbnRTdHJlYW06Y29tcGxldGlvbkJs
b2NrOi4KIGV4dGVybiBOU1N0cmluZyogY29uc3QgVG9wTGV2ZWxFdmVudEluZm9LZXk7CkBAIC02
OCw2ICs2OSw4IEBAIGV4dGVybiBOU1N0cmluZyogY29uc3QgSElERXZlbnRQaGFzZUNhbmNlbGVk
OwogCiBleHRlcm4gTlNVSW50ZWdlciBjb25zdCBISURNYXhUb3VjaENvdW50OwogCitSZXRhaW5Q
dHI8SU9ISURFdmVudFJlZj4gY3JlYXRlSElES2V5RG93bkV2ZW50KE5TU3RyaW5nICosIHVpbnQ2
NF90IHRpbWVzdGFtcCk7CisKIEBpbnRlcmZhY2UgSElERXZlbnRHZW5lcmF0b3IgOiBOU09iamVj
dAogCiArIChISURFdmVudEdlbmVyYXRvciAqKXNoYXJlZEhJREV2ZW50R2VuZXJhdG9yOwpAQCAt
MTA1LDcgKzEwOCw1IEBAIGV4dGVybiBOU1VJbnRlZ2VyIGNvbnN0IEhJRE1heFRvdWNoQ291bnQ7
CiAKIC8vIEtleWJvYXJkCiAtICh2b2lkKWtleVByZXNzOihOU1N0cmluZyAqKWNoYXJhY3RlciBj
b21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKLS0gKHZvaWQp
a2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uQmxvY2s7Ci0tICh2b2lkKWtleVVwOihOU1N0cmluZyAqKWNoYXJhY3Rl
ciBjb21wbGV0aW9uQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25CbG9jazsKIAogQGVu
ZApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvSElERXZlbnRHZW5lcmF0
b3IubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpp
bmRleCA0Yzg0MmI4ZGFmOGYxNGUwNGMxMmE0ZWFhNzQ2YjdkYWU2NmU2NzAyLi43MTYxMmZjNjUw
MTViYzU3OWJjOTgyMDU3ZGVhNGI3NTNkODFmMWIwIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL2lvcy9ISURFdmVudEdlbmVyYXRvci5tbQpAQCAtMzMsNyArMzMsNiBAQAogI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8
d3RmL09wdGlvbmFsLmg+Ci0jaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3dGYv
U29mdExpbmtpbmcuaD4KIAogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKEJhY2tCb2FyZFNl
cnZpY2VzKQpAQCAtMTk5LDggKzE5OCw2IEBAIC0gKHZvaWQpZGVhbGxvYwogICAgIFtzdXBlciBk
ZWFsbG9jXTsKIH0KIAotCi0KIC0gKHZvaWQpX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6KHVpbnQ2
NF90KXRpbWVzdGFtcCB1c2FnZToodWludDMyX3QpdXNhZ2UgaXNLZXlEb3duOihib29sKWlzS2V5
RG93bgogewogICAgIFJldGFpblB0cjxJT0hJREV2ZW50UmVmPiBldmVudFJlZiA9IGFkb3B0Q0Yo
SU9ISURFdmVudENyZWF0ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwKQEAgLTk3
NiwyNSArOTczLDEyIEBAIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgaGlkVXNhZ2VDb2RlRm9yQ2hh
cmFjdGVyKE5TU3RyaW5nICprZXkpCiAgICAgcmV0dXJuIDA7CiB9CiAKLS0gKHZvaWQpa2V5UHJl
c3M6KE5TU3RyaW5nICopY2hhcmFjdGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkJsb2NrCitSZXRhaW5QdHI8SU9ISURFdmVudFJlZj4gY3JlYXRlSElES2V5RG93
bkV2ZW50KE5TU3RyaW5nICpjaGFyYWN0ZXIsIHVpbnQ2NF90IHRpbWVzdGFtcCkKIHsKLSAgICBi
b29sIHNob3VsZFdyYXBXaXRoU2hpZnQgPSBzaG91bGRXcmFwV2l0aFNoaWZ0S2V5RXZlbnRGb3JD
aGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAgICB1aW50MzJfdCB1c2FnZSA9IGhpZFVzYWdlQ29kZUZv
ckNoYXJhY3RlcihjaGFyYWN0ZXIpOwotICAgIHVpbnQ2NF90IGFic29sdXRlTWFjaFRpbWUgPSBt
YWNoX2Fic29sdXRlX3RpbWUoKTsKLQotICAgIGlmIChzaG91bGRXcmFwV2l0aFNoaWZ0KQotICAg
ICAgICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0ZU1hY2hUaW1lIHVzYWdl
OmtISURVc2FnZV9LZXlib2FyZExlZnRTaGlmdCBpc0tleURvd246dHJ1ZV07Ci0KLSAgICBbc2Vs
ZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0ZU1hY2hUaW1lIHVzYWdlOnVzYWdlIGlz
S2V5RG93bjp0cnVlXTsKLSAgICBbc2VsZiBfc2VuZElPSElES2V5Ym9hcmRFdmVudDphYnNvbHV0
ZU1hY2hUaW1lIHVzYWdlOnVzYWdlIGlzS2V5RG93bjpmYWxzZV07Ci0KLSAgICBpZiAoc2hvdWxk
V3JhcFdpdGhTaGlmdCkKLSAgICAgICAgW3NlbGYgX3NlbmRJT0hJREtleWJvYXJkRXZlbnQ6YWJz
b2x1dGVNYWNoVGltZSB1c2FnZTprSElEVXNhZ2VfS2V5Ym9hcmRMZWZ0U2hpZnQgaXNLZXlEb3du
OmZhbHNlXTsKLQotICAgIFtzZWxmIF9zZW5kTWFya2VySElERXZlbnRXaXRoQ29tcGxldGlvbkJs
b2NrOmNvbXBsZXRpb25CbG9ja107CisgICAgcmV0dXJuIGFkb3B0Q0YoSU9ISURFdmVudENyZWF0
ZUtleWJvYXJkRXZlbnQoa0NGQWxsb2NhdG9yRGVmYXVsdCwgdGltZXN0YW1wLCBrSElEUGFnZV9L
ZXlib2FyZE9yS2V5cGFkLCBoaWRVc2FnZUNvZGVGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKSwgdHJ1
ZSAvKiBrZXkgZG93biAqLywga0lPSElERXZlbnRPcHRpb25Ob25lKSk7CiB9CiAKLS0gKHZvaWQp
a2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uQmxvY2sKKy0gKHZvaWQpa2V5UHJlc3M6KE5TU3RyaW5nICopY2hhcmFj
dGVyIGNvbXBsZXRpb25CbG9jazoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkJsb2NrCiB7CiAg
ICAgYm9vbCBzaG91bGRXcmFwV2l0aFNoaWZ0ID0gc2hvdWxkV3JhcFdpdGhTaGlmdEtleUV2ZW50
Rm9yQ2hhcmFjdGVyKGNoYXJhY3Rlcik7CiAgICAgdWludDMyX3QgdXNhZ2UgPSBoaWRVc2FnZUNv
ZGVGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKQEAgLTEwMDQsMTYgKzk4OCw2IEBAIC0gKHZvaWQp
a2V5RG93bjooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2b2lkICheKSh2
b2lkKSljb21wbGV0aW9uCiAgICAgICAgIFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFi
c29sdXRlTWFjaFRpbWUgdXNhZ2U6a0hJRFVzYWdlX0tleWJvYXJkTGVmdFNoaWZ0IGlzS2V5RG93
bjp0cnVlXTsKIAogICAgIFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29sdXRlTWFj
aFRpbWUgdXNhZ2U6dXNhZ2UgaXNLZXlEb3duOnRydWVdOwotCi0gICAgW3NlbGYgX3NlbmRNYXJr
ZXJISURFdmVudFdpdGhDb21wbGV0aW9uQmxvY2s6Y29tcGxldGlvbkJsb2NrXTsKLX0KLQotLSAo
dm9pZClrZXlVcDooTlNTdHJpbmcgKiljaGFyYWN0ZXIgY29tcGxldGlvbkJsb2NrOih2b2lkIChe
KSh2b2lkKSljb21wbGV0aW9uQmxvY2sKLXsKLSAgICBib29sIHNob3VsZFdyYXBXaXRoU2hpZnQg
PSBzaG91bGRXcmFwV2l0aFNoaWZ0S2V5RXZlbnRGb3JDaGFyYWN0ZXIoY2hhcmFjdGVyKTsKLSAg
ICB1aW50MzJfdCB1c2FnZSA9IGhpZFVzYWdlQ29kZUZvckNoYXJhY3RlcihjaGFyYWN0ZXIpOwot
ICAgIHVpbnQ2NF90IGFic29sdXRlTWFjaFRpbWUgPSBtYWNoX2Fic29sdXRlX3RpbWUoKTsKLQog
ICAgIFtzZWxmIF9zZW5kSU9ISURLZXlib2FyZEV2ZW50OmFic29sdXRlTWFjaFRpbWUgdXNhZ2U6
dXNhZ2UgaXNLZXlEb3duOmZhbHNlXTsKIAogICAgIGlmIChzaG91bGRXcmFwV2l0aFNoaWZ0KQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCmluZGV4IGZmZWE3YTAwZmFlMGQzOGJjM2U0ZmE0ZWJjNTRkMmVjNTY4YjJkMmEuLjYxMGZh
MjA2YjRkNjJkMTc1YWY3OWQ0MTQ1NzM3NDJlYjkxOGU4Y2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTQyLDYgKzQy
LDE0IEBACiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPHd0
Zi9Tb2Z0TGlua2luZy5oPgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKFVJS2l0KQorU09GVF9MSU5L
X0NMQVNTKFVJS2l0LCBVSVBoeXNpY2FsS2V5Ym9hcmRFdmVudCkKKworQGludGVyZmFjZSBVSVBo
eXNpY2FsS2V5Ym9hcmRFdmVudCAoVUlQaHlzaWNhbEtleWJvYXJkRXZlbnRIYWNrKQorQHByb3Bl
cnR5IChub25hdG9taWMsIGFzc2lnbikgTlNJbnRlZ2VyIF9tb2RpZmllckZsYWdzOworQGVuZAog
CiBuYW1lc3BhY2UgV1RSIHsKIApAQCAtMzQwLDI4ICszNDgsNzUgQEAgdm9pZCBVSVNjcmlwdENv
bnRyb2xsZXI6OnR5cGVDaGFyYWN0ZXJVc2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYg
Y2hhcmFjdGUKICAgICB9XTsKIH0KIAotdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd25V
c2luZ0hhcmR3YXJlS2V5Ym9hcmQoSlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIGNh
bGxiYWNrKQorc3RhdGljIHVuc2lnbmVkIGFycmF5TGVuZ3RoKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBhcnJheSkKIHsKLSAgICB1bnNpZ25lZCBjYWxsYmFja0lEID0gbV9jb250
ZXh0LT5wcmVwYXJlRm9yQXN5bmNUYXNrKGNhbGxiYWNrLCBDYWxsYmFja1R5cGVOb25QZXJzaXN0
ZW50KTsKKyAgICBhdXRvIGxlbmd0aFN0cmluZyA9IGFkb3B0KEpTU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJsZW5ndGgiKSk7CisgICAgaWYgKGF1dG8gbGVuZ3RoVmFsdWUgPSBKU09iamVj
dEdldFByb3BlcnR5KGNvbnRleHQsIGFycmF5LCBsZW5ndGhTdHJpbmcuZ2V0KCksIG51bGxwdHIp
KQorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTVmFsdWVUb051bWJlcihj
b250ZXh0LCBsZW5ndGhWYWx1ZSwgbnVsbHB0cikpOworICAgIHJldHVybiAwOworfQogCi0gICAg
Ly8gQXNzdW1lcyB0aGF0IHRoZSBrZXlib2FyZCBpcyBhbHJlYWR5IHNob3duLgotICAgIFtbSElE
RXZlbnRHZW5lcmF0b3Igc2hhcmVkSElERXZlbnRHZW5lcmF0b3JdIGtleURvd246dG9XVEZTdHJp
bmcodG9XSyhjaGFyYWN0ZXIpKSBjb21wbGV0aW9uQmxvY2s6XnsKLSAgICAgICAgaWYgKCFtX2Nv
bnRleHQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1fY29udGV4dC0+YXN5bmNUYXNr
Q29tcGxldGUoY2FsbGJhY2tJRCk7Ci0gICAgfV07CitzdGF0aWMgVUlLZXlNb2RpZmllckZsYWdz
IHBhcnNlTW9kaWZpZXIoSlNTdHJpbmdSZWYgbW9kaWZpZXIpCit7CisgICAgaWYgKEpTU3RyaW5n
SXNFcXVhbFRvVVRGOENTdHJpbmcobW9kaWZpZXIsICJhbHRLZXkiKSkKKyAgICAgICAgcmV0dXJu
IFVJS2V5TW9kaWZpZXJBbHRlcm5hdGU7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENT
dHJpbmcobW9kaWZpZXIsICJjYXBzTG9ja0tleSIpKQorICAgICAgICByZXR1cm4gVUlLZXlNb2Rp
ZmllckFscGhhU2hpZnQ7CisgICAgaWYgKEpTU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobW9k
aWZpZXIsICJjdHJsS2V5IikpCisgICAgICAgIHJldHVybiBVSUtleU1vZGlmaWVyQ29udHJvbDsK
KyAgICBpZiAoSlNTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtb2RpZmllciwgIm1ldGFLZXki
KSkKKyAgICAgICAgcmV0dXJuIFVJS2V5TW9kaWZpZXJDb21tYW5kOworICAgIGlmIChKU1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKG1vZGlmaWVyLCAic2hpZnRLZXkiKSkKKyAgICAgICAgcmV0
dXJuIFVJS2V5TW9kaWZpZXJTaGlmdDsKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBVSVNjcmlw
dENvbnRyb2xsZXI6OmtleVVwVXNpbmdIYXJkd2FyZUtleWJvYXJkKEpTU3RyaW5nUmVmIGNoYXJh
Y3RlciwgSlNWYWx1ZVJlZiBjYWxsYmFjaykKK3N0YXRpYyBVSUtleU1vZGlmaWVyRmxhZ3MgcGFy
c2VNb2RpZmllckFycmF5KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIGFycmF5VmFs
dWUpCiB7Ci0gICAgdW5zaWduZWQgY2FsbGJhY2tJRCA9IG1fY29udGV4dC0+cHJlcGFyZUZvckFz
eW5jVGFzayhjYWxsYmFjaywgQ2FsbGJhY2tUeXBlTm9uUGVyc2lzdGVudCk7CisgICAgaWYgKCFh
cnJheVZhbHVlKQorICAgICAgICByZXR1cm4gMDsKIAotICAgIC8vIEFzc3VtZXMgdGhhdCB0aGUg
a2V5Ym9hcmQgaXMgYWxyZWFkeSBzaG93bi4KLSAgICBbW0hJREV2ZW50R2VuZXJhdG9yIHNoYXJl
ZEhJREV2ZW50R2VuZXJhdG9yXSBrZXlVcDp0b1dURlN0cmluZyh0b1dLKGNoYXJhY3RlcikpIGNv
bXBsZXRpb25CbG9jazpeewotICAgICAgICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgbV9jb250ZXh0LT5hc3luY1Rhc2tDb21wbGV0ZShjYWxsYmFja0lEKTsK
LSAgICB9XTsKKyAgICAvLyBUaGUgdmFsdWUgbWF5IGVpdGhlciBiZSBhIHN0cmluZyB3aXRoIGEg
c2luZ2xlIG1vZGlmaWVyIG9yIGFuIGFycmF5IG9mIG1vZGlmaWVycy4KKyAgICBpZiAoSlNWYWx1
ZUlzU3RyaW5nKGNvbnRleHQsIGFycmF5VmFsdWUpKSB7CisgICAgICAgIGF1dG8gc3RyaW5nID0g
YWRvcHQoSlNWYWx1ZVRvU3RyaW5nQ29weShjb250ZXh0LCBhcnJheVZhbHVlLCBudWxscHRyKSk7
CisgICAgICAgIHJldHVybiBwYXJzZU1vZGlmaWVyKHN0cmluZy5nZXQoKSk7CisgICAgfQorCisg
ICAgaWYgKCFKU1ZhbHVlSXNPYmplY3QoY29udGV4dCwgYXJyYXlWYWx1ZSkpCisgICAgICAgIHJl
dHVybiAwOworICAgIEpTT2JqZWN0UmVmIGFycmF5ID0gY29uc3RfY2FzdDxKU09iamVjdFJlZj4o
YXJyYXlWYWx1ZSk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXlMZW5ndGgoY29udGV4dCwg
YXJyYXkpOworICAgIFVJS2V5TW9kaWZpZXJGbGFncyBtb2RpZmllcnMgPSAwOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgeworICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IG51bGxwdHI7CisgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBKU09iamVjdEdl
dFByb3BlcnR5QXRJbmRleChjb250ZXh0LCBhcnJheSwgaSwgJmV4Y2VwdGlvbik7CisgICAgICAg
IGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byBzdHJp
bmcgPSBhZG9wdChKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIHZhbHVlLCAmZXhjZXB0aW9u
KSk7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgbW9kaWZpZXJzIHw9IHBhcnNlTW9kaWZpZXIoc3RyaW5nLmdldCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIG1vZGlmaWVyczsKK30KKwordm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmtleURvd24o
SlNTdHJpbmdSZWYgY2hhcmFjdGVyLCBKU1ZhbHVlUmVmIG1vZGlmaWVyQXJyYXkpCit7CisgICAg
Ly8gQ2hhcmFjdGVyIGNhbiBiZSBlaXRoZXIgYSBzaW5nbGUgVW5pY29kZSBjb2RlIHBvaW50IG9y
IHRoZSBuYW1lIG9mIGEgc3BlY2lhbCBrZXkgKGUuZy4gImRvd25BcnJvdyIpLgorICAgIC8vIGNy
ZWF0ZUhJREtleUV2ZW50KCkga25vd3MgaG93IHRvIG1hcCB0aGVzZSBzcGVjaWFsIGtleXMgdG8g
dGhlIGFwcHJvcHJpYXRlIGtleWNvZGUuCisgICAgLy8KKyAgICAvLyBGSVhNRTogVGhlIFVJRXZl
bnQgaW5wdXQgc3RyaW5nIGZvciBzcGVjaWFsIGtleXMgKGUuZy4gImRvd25BcnJvdyIpIHNob3Vs
ZCBlaXRoZXIgYmUgYSBVSUtleUlucHV0KgorICAgIC8vIHN0cmluZyBjb25zdGFudCBvciBhbiBB
U0NJSSBjb250cm9sIGNoYXJhY3Rlci4gSW4gcHJhY3RpY2UgdGhlIGlucHV0IHN0cmluZyBmb3Ig
YSBzcGVjaWFsIGtleSBpcworICAgIC8vIGFtYmlndWlvdXMgKGUuZy4gRjUgYW5kIEY2IGhhdmUg
dGhlIHNhbWUgc3RyaW5nIC0gdGhlIEFTQ0lJIERMRSBjaGFyYWN0ZXIpIGFuZCBoZW5jZSBpdCBp
cyBlZmZlY3RpdmVseQorICAgIC8vIGlnbm9yZWQgaW4gZmF2b3Igb2Yga2V5IGlkZW50aWZpY2F0
aW9uIGJ5IGtleWNvZGUuIFNvLCB3ZSBqdXN0IHRha2UgdGhlIGVtcHR5IHN0cmluZyBhcyB0aGUg
aW5wdXQgc3RyaW5nCisgICAgLy8gZm9yIGEgc3BlY2lhbCBrZXkuCisgICAgU3RyaW5nIGlucHV0
U3RyaW5nID0gdG9XVEZTdHJpbmcodG9XSyhjaGFyYWN0ZXIpKTsKKyAgICBTdHJpbmcgdWlFdmVu
dElucHV0U3RyaW5nID0gaW5wdXRTdHJpbmcubGVuZ3RoKCkgPiAxID8gZW1wdHlTdHJpbmcoKSA6
IGlucHV0U3RyaW5nOworICAgIGF1dG8gKmtleWJvYXJkRXZlbnQgPSBbZ2V0VUlQaHlzaWNhbEtl
eWJvYXJkRXZlbnRDbGFzcygpIF9ldmVudFdpdGhJbnB1dDp1aUV2ZW50SW5wdXRTdHJpbmcgaW5w
dXRGbGFnczooVUlLZXlib2FyZElucHV0RmxhZ3MpMF07CisgICAga2V5Ym9hcmRFdmVudC5fbW9k
aWZpZXJGbGFncyA9IHBhcnNlTW9kaWZpZXJBcnJheShtX2NvbnRleHQtPmpzQ29udGV4dCgpLCBt
b2RpZmllckFycmF5KTsKKyAgICBhdXRvIGhpZEV2ZW50ID0gY3JlYXRlSElES2V5RG93bkV2ZW50
KGlucHV0U3RyaW5nLCBrZXlib2FyZEV2ZW50LnRpbWVzdGFtcCk7CisgICAgW2tleWJvYXJkRXZl
bnQgX3NldEhJREV2ZW50OmhpZEV2ZW50LmdldCgpIGtleWJvYXJkOm51bGxwdHJdOworICAgIFtb
VUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0gaGFuZGxlS2V5VUlFdmVudDprZXlib2Fy
ZEV2ZW50XTsKIH0KIAogdm9pZCBVSVNjcmlwdENvbnRyb2xsZXI6OmRpc21pc3NGb3JtQWNjZXNz
b3J5VmlldygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggZGI0MDhlZDc4YzAzNzE3YjhlYmU2NTI1OThhNTVhY2JlMWNhOGQ0
NC4uY2I1M2M0YjY2MjRhY2JmYzU1MGQyNjA0Njg1MGQ3NmM5Y2NiZGUzYSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDE4LTExLTE1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXSBTaGlmdCArIFRhYiBkb2VzIG5vdCBmb2N1cyBwcmV2aW91cyBmaWVs
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxNTk2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NTg5MjA1Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgQWRkIHRlc3RzIHRvIGVuc3VyZSB0aGF0IHdlIGRv
IG5vdCByZWdyZXNzIHRoZSB0YWIgYW5kIHNoaWZ0ICsgdGFiIGtleSBjb21tYW5kcy4KKworICAg
ICAgICAqIGZhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9pb3MvZm9jdXMtdGFiLXByZXZpb3Vz
LWZpZWxkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvaW9zL2Zv
Y3VzLXRhYi1wcmV2aW91cy1maWVsZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9p
b3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgdGVzdCBmb2N1cy10YWItcHJldmlvdXMtZmll
bGQuaHRtbCBpbiBMZWdhY3kgV2ViS2l0IGFzCisgICAgICAgIHdlIGRvIG5vdCBzdXBwb3J0IHRl
c3Rpbmcga2V5IGNvbW1hbmRzIHdpdGggbW9kaWZpZXIga2V5cy4KKyAgICAgICAgKiByZXNvdXJj
ZXMvdWktaGVscGVyLmpzOgorICAgICAgICAod2luZG93LlVJSGVscGVyLmtleURvd24pOiBVcGRh
dGVkIHRvIHN1cHBvcnQgdGFraW5nIGFuIG9wdGlvbmFsIGFycmF5IG9mIG1vZGlmaWVycyAoZGVm
YXVsdHM6IFtdKQorICAgICAgICBhbmQgdXNlIHRoZSBuZXcgaW5mcmFzdHJ1Y3R1cmUgdG8gZ2Vu
ZXJhdGUgYSBrZXkgZG93biBldmVudCBmb3IgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIuCisKIDIw
MTgtMTEtMTUgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0ZSBSVENQZWVyQ29ubmVjdGlvbiBKUyBidWlsdC1pbnMgdG8gYmUgY2xvc2VyIHRvIHNwZWNX
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0
LWZpZWxkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10
YWItbmV4dC1maWVsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Y1NGM4MjdjOGYyZmFiYmUy
MjczNWE5ZDEwMDlmMGUyNjZiOGM2NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2lvcy9mb2N1cy10YWItbmV4dC1maWVsZC1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw1IEBACitUZXN0cyB0aGF0IHByZXNzaW5nIHRoZSB0YWIga2V5IGluIGEgZm9jdXNlZCBmaWVs
ZCBmb2N1c2VzIHRoZSBuZXh0IGZpZWxkIGluIHRhYiBvcmRlci4KKworUEFTUyBmb2N1c2VkIHRo
ZSBzZWNvbmQgZmllbGQuCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
aW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9p
b3MvZm9jdXMtdGFiLW5leHQtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDZkYWE0OGNhODk3MmYx
NjNjZmViNWUzMjg0NzU4NDBlZWEwYmE2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1uZXh0LWZpZWxkLmh0bWwKQEAgLTAsMCArMSwzNCBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4u
L3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
ZXN0cyB0aGF0IHByZXNzaW5nIHRoZSB0YWIga2V5IGluIGEgZm9jdXNlZCBmaWVsZCBmb2N1c2Vz
IHRoZSBuZXh0IGZpZWxkIGluIHRhYiBvcmRlci48L3A+Cis8cCBpZD0icmVzdWx0Ij5GQUlMIGRp
ZCBub3QgZm9jdXMgdGhlIHNlY29uZCBmaWVsZC48L3A+Cis8aW5wdXQgdHlwZT0idGV4dCIgaWQ9
ImZpcnN0RmllbGQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ic2Vjb25kRmllbGQiIG9uZm9jdXM9
InBhc3NlZCgpIj4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKK30K
KworYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
ciB8fCAhdGVzdFJ1bm5lci5ydW5VSVNjcmlwdCkKKyAgICAgICAgcmV0dXJuOworICAgIGF3YWl0
IFVJSGVscGVyLmFjdGl2YXRlRm9ybUNvbnRyb2woZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZp
cnN0RmllbGQiKSk7CisgICAgYXdhaXQgVUlIZWxwZXIua2V5RG93bigiXHQiKTsKK30KKworZnVu
Y3Rpb24gcGFzc2VkKCkKK3sKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
dGV4dENvbnRlbnQgPSAiUEFTUyBmb2N1c2VkIHRoZSBzZWNvbmQgZmllbGQuIjsKKyAgICBpZiAo
d2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitydW5UZXN0KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1wcmV2aW91cy1m
aWVsZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA0YTc2YWE5MzY0NWQ4YmY4YThjODMxYzg2
ZTUzMTEzMzYzNDJhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBA
QAorVGVzdHMgdGhhdCBwcmVzc2luZyBzaGlmdCArIHRhYiBpbiBhIGZvY3VzZWQgZmllbGQgZm9j
dXNlcyB0aGUgcHJldmlvdXMgZmllbGQgaW4gdGFiIG9yZGVyLgorCitQQVNTIGZvY3VzZWQgdGhl
IGZpcnN0IGZpZWxkLgorCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2lv
cy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45M2Y3MTgyYzEw
MDRlMjUzYzU1Zjc2NGUyMGRjZDc3YjdjZGRjMzcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvaW9zL2ZvY3VzLXRhYi1wcmV2aW91cy1maWVsZC5odG1sCkBAIC0w
LDAgKzEsMzQgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+VGVzdHMgdGhhdCBwcmVzc2luZyBzaGlmdCArIHRhYiBpbiBhIGZvY3VzZWQgZmll
bGQgZm9jdXNlcyB0aGUgcHJldmlvdXMgZmllbGQgaW4gdGFiIG9yZGVyLjwvcD4KKzxwIGlkPSJy
ZXN1bHQiPkZBSUwgZGlkIG5vdCBmb2N1cyB0aGUgZmlyc3QgZmllbGQuPC9wPgorPGlucHV0IHR5
cGU9InRleHQiIGlkPSJmaXJzdEZpZWxkIiBvbmZvY3VzPSJwYXNzZWQoKSI+PGlucHV0IHR5cGU9
InRleHQiIGlkPSJzZWNvbmRGaWVsZCIgYXV0b2ZvY3VzPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworfQorCithc3luYyBmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAg
ICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAg
ICAgICByZXR1cm47CisgICAgYXdhaXQgVUlIZWxwZXIuYWN0aXZhdGVGb3JtQ29udHJvbChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgic2Vjb25kRmllbGQiKSk7CisgICAgYXdhaXQgVUlIZWxwZXIu
a2V5RG93bigiXHQiLCBbInNoaWZ0S2V5Il0pOworfQorCitmdW5jdGlvbiBwYXNzZWQoKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS50ZXh0Q29udGVudCA9ICJQQVNT
IGZvY3VzZWQgdGhlIGZpcnN0IGZpZWxkLiI7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworcnVuVGVzdCgpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMKaW5kZXggMmZiZTdkNWNmNzM4MGU4ZGZiYmY5Y2ViZTI4Mzg5YzY1NWRl
ODFlYi4uNmNmOWYyODNlYzNjMDg1M2Y4NWY3NDMzMmY2ZDQxMTdiZDc2YTIxOSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMzEsNiArMzEs
OSBAQCBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3BvaW50ZXJldmVudHMgWyBTa2lw
IF0KIGZhc3QvZm9ybXMvZGF0YWxpc3QgWyBXb250Rml4IF0KIGltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvZm9ybXMvdGhlLWRhdGFsaXN0LWVsZW1lbnQgWyBX
b250Rml4IF0KIAorIyBObyBzdXBwb3J0IGZvciB0ZXN0aW5nIGtleSBjb21tYW5kcyB3aXRoIG1v
ZGlmaWVycyBpbiBXSzEKK2Zhc3QvZXZlbnRzL2lvcy9mb2N1cy10YWItcHJldmlvdXMtZmllbGQu
aHRtbCBbIFNraXAgXQorCiAjIDxpbnB1dCB0eXBlPWNvbG9yPiBpcyBub3Qgc3VwcG9ydGVkIGlu
IFdlYktpdDEgb24gaU9TLgogZmFzdC9mb3Jtcy9jb2xvci9pbnB1dC1jb2xvci1vbmNoYW5nZS1l
dmVudC5odG1sIFsgRmFpbHVyZSBdCiBmYXN0L2Zvcm1zL2NvbG9yL2lucHV0LWNvbG9yLXJlYWRv
bmx5Lmh0bWwgWyBGYWlsdXJlIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Jlc291cmNlcy91
aS1oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvdWktaGVscGVyLmpzCmluZGV4IGYw
OTY1OTFhZDAxMjNmMzg1YjU3NTE0M2QyZGM5YTQxNDNhOGIxZWEuLjFhNWY0Yjc4NjYyNTQ5ZTE0
MmUyYzRmZWY3MjcxNjhkN2RiZjU5YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3Jlc291cmNl
cy91aS1oZWxwZXIuanMKKysrIGIvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL3VpLWhlbHBlci5qcwpA
QCAtNTQsNyArNTQsNyBAQCB3aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAg
ICAgIHJldHVybiBVSUhlbHBlci5hY3RpdmF0ZUF0KHgsIHkpOwogICAgIH0KIAotICAgIHN0YXRp
YyBrZXlEb3duKGtleSkKKyAgICBzdGF0aWMga2V5RG93bihrZXksIG1vZGlmaWVycz1bXSkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5pc1dlYktpdDIoKSB8fCAhdGhpcy5pc0lPUygpKSB7CiAg
ICAgICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKGtleSk7CkBAIC02MiwxMCArNjIsNyBAQCB3
aW5kb3cuVUlIZWxwZXIgPSBjbGFzcyBVSUhlbHBlciB7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKLSAgICAgICAgICAgIHRlc3RSdW5uZXIu
cnVuVUlTY3JpcHQoYAotICAgICAgICAgICAgICAgIHVpQ29udHJvbGxlci5rZXlEb3duVXNpbmdI
YXJkd2FyZUtleWJvYXJkKCJkb3duQXJyb3ciLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdWlDb250cm9sbGVyLnVpU2NyaXB0Q29tcGxldGUoIkRvbmUiKTsKLSAgICAgICAgICAg
ICAgICB9KTtgLCByZXNvbHZlKTsKKyAgICAgICAgICAgIHRlc3RSdW5uZXIucnVuVUlTY3JpcHQo
YHVpQ29udHJvbGxlci5rZXlEb3duKCIke2tleX0iLCAke0pTT04uc3RyaW5naWZ5KG1vZGlmaWVy
cyl9KTtgLCByZXNvbHZlKTsKICAgICAgICAgfSk7CiAgICAgfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>