<?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>191157</bug_id>
          
          <creation_ts>2018-11-01 10:38:02 -0700</creation_ts>
          <short_desc>[EME, GStreamer] Ensure key id buffers are present and simplify lifetime management of ClearKey class</short_desc>
          <delta_ts>2018-11-07 03:50: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>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>191316</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Charlie Turner">cturner</reporter>
          <assigned_to name="Charlie Turner">cturner</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1474159</commentid>
    <comment_count>0</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-01 10:38:02 -0700</bug_when>
    <thetext>[EME, GStreamer] Ensure key id buffers are present and simplify lifetime management of ClearKey class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474162</commentid>
    <comment_count>1</comment_count>
      <attachid>353617</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-01 10:44:21 -0700</bug_when>
    <thetext>Created attachment 353617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474485</commentid>
    <comment_count>2</comment_count>
      <attachid>353617</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-02 07:56:18 -0700</bug_when>
    <thetext>Comment on attachment 353617
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        [EME, GStreamer] Ensure key id buffers are present and simplify lifetime management of ClearKey class

We usually write it like [EME][GStreamer]

&gt; Source/WebCore/ChangeLog:17
&gt; +        bindings

Period at the end.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:103
&gt; +        ASSERT(!error);
&gt; +        GST_ERROR_OBJECT(self, &quot;Failed to create AES 128 CTR cipher handle: %s&quot;, gpg_strerror(error));

Please, swap these lines, we would like to see the GST_ERROR in the logs before we ASSERT and die if in debug.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:153
&gt; +static gboolean webKitMediaClearKeyDecryptorFindAndSetKey(WebKitMediaClearKeyDecryptPrivate* priv, WebCore::GstMappedBuffer&amp; keyIDBuffer)

I wonder if we should make this a  const GstMapperBuffer &amp;. I guess it would imply making the data accessor const as well.

And gosh, we messed up names here... These classes need a deep clean up for style and naming.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:157
&gt; +        if (!gst_buffer_memcmp(key.keyID.get(), 0, keyIDBuffer.data(), keyIDBuffer.size())) {

You know what?  It would be nice to define a operator== for this on the mapped buffer, one could be taking a GstBuffer* and a second one taking another mapped buffer, even the second could be implemented on terms of the first. Of course, you wouldn&apos;t need the second now, so we could leave it out of the question for now.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:174
&gt; +    ASSERT(mappedKeyValueBufferr.size() == CLEARKEY_SIZE);

oops! I would advise either making a debug build or writing RELEASE_ASSERTs until just before submitting the patch.

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:273
&gt;      GstBuffer* keyIDBuffer = nullptr;
&gt; -    if (value)
&gt; -        keyIDBuffer = gst_value_get_buffer(value);
&gt; -
&gt; -    WebKitMediaCommonEncryptionDecryptClass* klass = WEBKIT_MEDIA_CENC_DECRYPT_GET_CLASS(self);
&gt; -    if (!klass-&gt;setupCipher(self, keyIDBuffer)) {
&gt; -        GST_ERROR_OBJECT(self, &quot;Failed to configure cipher&quot;);
&gt; +    if (!value) {
&gt; +        GST_ERROR_OBJECT(self, &quot;Failed to get key id for buffer&quot;);
&gt;          gst_buffer_remove_meta(buffer, reinterpret_cast&lt;GstMeta*&gt;(protectionMeta));
&gt;          return GST_FLOW_NOT_SUPPORTED;
&gt;      }
&gt; +    keyIDBuffer = gst_value_get_buffer(value);

if (!value)  {
...
}
GstBuffer* keyIDBuffer = gst_value_get_buffer(value);

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:275
&gt; +    WebKitMediaCommonEncryptionDecryptClass* klass = WEBKIT_MEDIA_CENC_DECRYPT_GET_CLASS(self);

This can be moved below, right?

&gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:57
&gt; +    gboolean (*decrypt)(WebKitMediaCommonEncryptionDecrypt*, GstBuffer* ivBuffer, GstBuffer* keyIDBuffer, GstBuffer* buffer, unsigned subSamplesCount, GstBuffer* subSamplesBuffer);

Just a comment for the future here. These are methods that live only in the WebKit world, not GStreamer&apos;s. I think we should rework the style, of course not now and nowadays it is well as it is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475484</commentid>
    <comment_count>3</comment_count>
      <attachid>353959</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-06 03:19:34 -0800</bug_when>
    <thetext>Created attachment 353959
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475486</commentid>
    <comment_count>4</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-06 03:23:30 -0800</bug_when>
    <thetext>(In reply to Xabier Rodríguez Calvar from comment #2)
&gt; Comment on attachment 353617 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353617&amp;action=review
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:153
&gt; &gt; +static gboolean webKitMediaClearKeyDecryptorFindAndSetKey(WebKitMediaClearKeyDecryptPrivate* priv, WebCore::GstMappedBuffer&amp; keyIDBuffer)
&gt; 
&gt; I wonder if we should make this a  const GstMapperBuffer &amp;. I guess it would
&gt; imply making the data accessor const as well.
&gt; 
&gt; And gosh, we messed up names here... These classes need a deep clean up for
&gt; style and naming.

Did you mean webKitMediaClearKeyDecryptor&lt;ACTUAL_METHOD_NAME_HERE&gt; convention in this file, or the GstMappedBuffer class? The former can be removed when a single decryptor is introduced.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:157
&gt; &gt; +        if (!gst_buffer_memcmp(key.keyID.get(), 0, keyIDBuffer.data(), keyIDBuffer.size())) {
&gt; 
&gt; You know what?  It would be nice to define a operator== for this on the
&gt; mapped buffer, one could be taking a GstBuffer* and a second one taking
&gt; another mapped buffer, even the second could be implemented on terms of the
&gt; first. Of course, you wouldn&apos;t need the second now, so we could leave it out
&gt; of the question for now.

It would be, I added one in this patch which triggered me to set r? again.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:57
&gt; &gt; +    gboolean (*decrypt)(WebKitMediaCommonEncryptionDecrypt*, GstBuffer* ivBuffer, GstBuffer* keyIDBuffer, GstBuffer* buffer, unsigned subSamplesCount, GstBuffer* subSamplesBuffer);
&gt; 
&gt; Just a comment for the future here. These are methods that live only in the
&gt; WebKit world, not GStreamer&apos;s. I think we should rework the style, of course
&gt; not now and nowadays it is well as it is.

I would have made them bool rather than gboolean for example, but just following coding convention. This file will be removed soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475883</commentid>
    <comment_count>5</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2018-11-06 22:13:35 -0800</bug_when>
    <thetext>(In reply to Charlie Turner from comment #4)
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:153
&gt; &gt; &gt; +static gboolean webKitMediaClearKeyDecryptorFindAndSetKey(WebKitMediaClearKeyDecryptPrivate* priv, WebCore::GstMappedBuffer&amp; keyIDBuffer)
&gt; &gt; 
&gt; &gt; I wonder if we should make this a  const GstMapperBuffer &amp;. I guess it would
&gt; &gt; imply making the data accessor const as well.
&gt; &gt; 
&gt; &gt; And gosh, we messed up names here... These classes need a deep clean up for
&gt; &gt; style and naming.
&gt; 
&gt; Did you mean webKitMediaClearKeyDecryptor&lt;ACTUAL_METHOD_NAME_HERE&gt;
&gt; convention in this file, or the GstMappedBuffer class? The former can be
&gt; removed when a single decryptor is introduced.

Yes, I mean the former. But I see you didn&apos;t make the keyIDBuffer const. Why?

&gt; 
&gt; &gt; &gt; Source/WebCore/platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.h:57
&gt; &gt; &gt; +    gboolean (*decrypt)(WebKitMediaCommonEncryptionDecrypt*, GstBuffer* ivBuffer, GstBuffer* keyIDBuffer, GstBuffer* buffer, unsigned subSamplesCount, GstBuffer* subSamplesBuffer);
&gt; &gt; 
&gt; &gt; Just a comment for the future here. These are methods that live only in the
&gt; &gt; WebKit world, not GStreamer&apos;s. I think we should rework the style, of course
&gt; &gt; not now and nowadays it is well as it is.
&gt; 
&gt; I would have made them bool rather than gboolean for example, but just
&gt; following coding convention. This file will be removed soon.

Yes, I mean that and some other &quot;irregularities&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475925</commentid>
    <comment_count>6</comment_count>
      <attachid>354075</attachid>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2018-11-07 02:00:29 -0800</bug_when>
    <thetext>Created attachment 354075
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475949</commentid>
    <comment_count>7</comment_count>
      <attachid>354075</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-07 03:50:38 -0800</bug_when>
    <thetext>Comment on attachment 354075
Patch

Clearing flags on attachment: 354075

Committed r237921: &lt;https://trac.webkit.org/changeset/237921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475950</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-07 03:50:39 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353617</attachid>
            <date>2018-11-01 10:44:21 -0700</date>
            <delta_ts>2018-11-06 03:19:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191157-20181101174420.patch</filename>
            <type>text/plain</type>
            <size>15275</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJhMWY3NGZhMGViZjI3
YTNiZjc1NzFhNTczMDkxNGJiNTVhZDgzZC4uODlmYzIyOTk4YTE4ZGUzNGNlODAwZWFkODFmNWI2
Zjk2YmFjMDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE4LTExLTAxICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FLCBHU3RyZWFt
ZXJdIEVuc3VyZSBrZXkgaWQgYnVmZmVycyBhcmUgcHJlc2VudCBhbmQgc2ltcGxpZnkgbGlmZXRp
bWUgbWFuYWdlbWVudCBvZiBDbGVhcktleSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxMTU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgbW92aW5n
IHRoZSBjbGVhcmtleSBkZWNyeXB0b3IgYmVoaW5kIGEKKyAgICAgICAgbmV3IGRlY3J5cHQgQVBJ
IGluIENETUluc3RhbmNlLCB3aGljaCB3aWxsIGJlIHNlbnQgaW50byB0aGUKKyAgICAgICAgcGlw
ZWxpbmUgdG8gaGFuZGxlIGtleSBtYW5hZ2VtZW50IGFuZCBkZWNyeXB0aW9uLiBUaGlzIGlzIGZv
ciBhCisgICAgICAgIGxhdGVyIHBhdGNoLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rpbmcg
Y2xlYXIga2V5IHRlc3RzIGluIG1lZGlhL2VuY3J5cHRlZC1tZWRpYS4KKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2NsYXNz
X2luaXQpOiBSZW1vdmUgc2V0dXAvcmVsZWFzZQorICAgICAgICBiaW5kaW5ncworICAgICAgICAo
d2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2luaXQpOiBJbml0aWFsaXplIGdjcnlwdCBj
aXBoZXIKKyAgICAgICAgaGVyZSBvbmNlIGluc3RlYWQgb2YgZm9yIGV2ZXJ5IGJ1ZmZlciB0byBi
ZSBkZWNyeXB0ZWQuCisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxp
emUpOiBBbmQgZGVzdHJveSB0aGUgY2lwaGVyCisgICAgICAgIGNvbnRleHQgd2hlbiB0aGUgZGVj
cnlwdG9yIGlzIGRlc3Ryb3llZC4KKyAgICAgICAgKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0
b3JGaW5kQW5kU2V0S2V5KTogRmFjdG9yIG91dCB0aGUga2V5CisgICAgICAgIHJldHJpZXZhbCBh
bmQgY29udGV4dCBzZXR0aW5nIGluIHRoaXMgbWV0aG9kLCBjYWxsIGl0IGZvciBlYWNoCisgICAg
ICAgIHNhbXBsZS4KKyAgICAgICAgKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0
KTogQmFzZSBrZXkgaWQgYnVmZmVyIGludG8KKyAgICAgICAgdGhpcyBmdW5jdGlvbiwgYW5kIHJl
bW92ZSBjaXBoZXIgY3JlYXRpb24gLyBkZXN0cm95IG1ldGhvZHMuCisgICAgICAgICh3ZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOiBEZWxldGVkLgorICAgICAgICAod2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBoZXIpOiBEZWxldGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlv
bkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY29tbW9uX2Vu
Y3J5cHRpb25fZGVjcnlwdF9jbGFzc19pbml0KTogUmVtb3ZlCisgICAgICAgIHNldHVwL3JlbGVh
c2UgYmluZGluZ3MKKyAgICAgICAgKHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRU
cmFuc2Zvcm1JblBsYWNlKTogRW5zdXJlIGEga2V5CisgICAgICAgIGlkIGlzIHByZXNlbnQgYW5k
IHBhc3MgaXQgdG8gdGhlIGRlY3J5cHQgY2xhc3MgbWV0aG9kLgorICAgICAgICAod2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRTZXR1cENpcGhlcik6IERlbGV0ZWQuCisg
ICAgICAgICh3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0RGVmYXVsdFJlbGVhc2VD
aXBoZXIpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oOgorCiAyMDE4LTEw
LTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViUlRD
XSBFbmFibGUgVlA4IGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9X
ZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggOGFlM2E1NjM2MzI5ZjRi
ZGI4ZmIyNmQxZDk4OGMzMTM3Y2ZlN2ZjYi4uYzdkN2VkNWM2ZjYzNTU3MmJmZTY1YjM5YmQyZDlh
NzdmMzY2YWU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVh
cktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTQ1LDkgKzQ1LDcgQEAgc3RydWN0IF9XZWJL
aXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUgewogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOwogc3RhdGljIGdib29sZWFuIHdl
YktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25zZShXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RFdmVudCopOwotc3RhdGljIGdib29sZWFu
IHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENpcGhlcihXZWJLaXRNZWRpYUNvbW1v
bkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKik7Ci1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9u
RGVjcnlwdCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlciogc2FtcGxlLCB1bnNpZ25lZCBzdWJT
YW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7Ci1zdGF0aWMgdm9pZCB3ZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0Kik7CitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5
cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZl
ciogaXYsIEdzdEJ1ZmZlcioga2V5aWQsIEdzdEJ1ZmZlciogc2FtcGxlLCB1bnNpZ25lZCBzdWJT
YW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7CiAKIEdTVF9ERUJVR19DQVRFR09S
WV9TVEFUSUMod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2RlYnVnX2NhdGVnb3J5KTsK
ICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9k
ZWJ1Z19jYXRlZ29yeQpAQCAtODksOSArODcsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfbWVkaWFf
Y2xlYXJfa2V5X2RlY3J5cHRfY2xhc3NfaW5pdChXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdAog
ICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyogY2VuY0NsYXNzID0g
V0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9DTEFTUyhrbGFzcyk7CiAgICAgY2VuY0NsYXNzLT5w
cm90ZWN0aW9uU3lzdGVtSWQgPSBXZWJDb3JlOjpHU3RyZWFtZXJFTUVVdGlsaXRpZXM6OnNfQ2xl
YXJLZXlVVUlEOwogICAgIGNlbmNDbGFzcy0+aGFuZGxlS2V5UmVzcG9uc2UgPSBHU1RfREVCVUdf
RlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFuZGxlS2V5UmVzcG9uc2UpOwot
ICAgIGNlbmNDbGFzcy0+c2V0dXBDaXBoZXIgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRp
YUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOwogICAgIGNlbmNDbGFzcy0+ZGVjcnlwdCA9
IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KTsK
LSAgICBjZW5jQ2xhc3MtPnJlbGVhc2VDaXBoZXIgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRN
ZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcik7CiAKICAgICBnX3R5cGVfY2xhc3Nf
YWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZh
dGUpKTsKIH0KQEAgLTEwMiwxMyArOTgsMTcgQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX2Ns
ZWFyX2tleV9kZWNyeXB0X2luaXQoV2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHQqIHNlbGYKIAog
ICAgIHNlbGYtPnByaXYgPSBwcml2OwogICAgIG5ldyAocHJpdikgV2ViS2l0TWVkaWFDbGVhcktl
eURlY3J5cHRQcml2YXRlKCk7CisgICAgaWYgKGdjcnlfZXJyb3JfdCBlcnJvciA9IGdjcnlfY2lw
aGVyX29wZW4oJihwcml2LT5oYW5kbGUpLCBHQ1JZX0NJUEhFUl9BRVMxMjgsIEdDUllfQ0lQSEVS
X01PREVfQ1RSLCBHQ1JZX0NJUEhFUl9TRUNVUkUpKSB7CisgICAgICAgIEFTU0VSVCghZXJyb3Ip
OworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gY3JlYXRlIEFFUyAx
MjggQ1RSIGNpcGhlciBoYW5kbGU6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CisgICAgfQog
fQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUoR09i
amVjdCogb2JqZWN0KQogewogICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0KiBzZWxmID0g
V0VCS0lUX01FRElBX0NLX0RFQ1JZUFQob2JqZWN0KTsKICAgICBXZWJLaXRNZWRpYUNsZWFyS2V5
RGVjcnlwdFByaXZhdGUqIHByaXYgPSBzZWxmLT5wcml2OwotCisgICAgZ2NyeV9jaXBoZXJfY2xv
c2UocHJpdi0+aGFuZGxlKTsKICAgICBwcml2LT5+V2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRQ
cml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXpl
LCAob2JqZWN0KSk7CkBAIC0xNTAsNTggKzE1MCwzNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRvckhhbmRsZUtleVJlc3BvbnNlKFdlYktpdE1lZGlhQ29tbW9u
RQogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVh
cktleURlY3J5cHRvclNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHQqIHNlbGYsIEdzdEJ1ZmZlcioga2V5SURCdWZmZXIpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmRBbmRTZXRLZXkoV2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHRQcml2YXRlKiBwcml2LCBXZWJDb3JlOjpHc3RNYXBwZWRCdWZmZXImIGtleUlEQnVmZmVy
KQogewotICAgIGlmICgha2V5SURCdWZmZXIpIHsKLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVChz
ZWxmLCAiZ290IG5vIGtleSBpZCBidWZmZXIiKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLQotICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJ
VF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdFQktJVF9NRURJQV9DS19ERUNSWVBUKHNl
bGYpKTsKLSAgICBnY3J5X2Vycm9yX3QgZXJyb3I7Ci0KICAgICBHUmVmUHRyPEdzdEJ1ZmZlcj4g
a2V5QnVmZmVyOwotICAgIFdlYkNvcmU6OkdzdE1hcHBlZEJ1ZmZlciBtYXBwZWRLZXlJZEJ1ZmZl
cihrZXlJREJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKLSAgICBpZiAoIW1hcHBlZEtleUlkQnVmZmVy
KSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBtYXAga2V5IElE
IGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAgZm9yIChhdXRv
JiBrZXkgOiBwcml2LT5rZXlzKSB7Ci0gICAgICAgIGlmICghZ3N0X2J1ZmZlcl9tZW1jbXAoa2V5
LmtleUlELmdldCgpLCAwLCBtYXBwZWRLZXlJZEJ1ZmZlci5kYXRhKCksIG1hcHBlZEtleUlkQnVm
ZmVyLnNpemUoKSkpIHsKKyAgICAgICAgaWYgKCFnc3RfYnVmZmVyX21lbWNtcChrZXkua2V5SUQu
Z2V0KCksIDAsIGtleUlEQnVmZmVyLmRhdGEoKSwga2V5SURCdWZmZXIuc2l6ZSgpKSkgewogICAg
ICAgICAgICAga2V5QnVmZmVyID0ga2V5LmtleVZhbHVlOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWtleUJ1ZmZlcikgewotICAgICAgICBHU1RfRVJS
T1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gZmluZCBhbiBhcHByb3ByaWF0ZSBrZXkgYnVmZmVy
Iik7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBlcnJvciA9IGdjcnlfY2lw
aGVyX29wZW4oJihwcml2LT5oYW5kbGUpLCBHQ1JZX0NJUEhFUl9BRVMxMjgsIEdDUllfQ0lQSEVS
X01PREVfQ1RSLCBHQ1JZX0NJUEhFUl9TRUNVUkUpOwotICAgIGlmIChlcnJvcikgewotICAgICAg
ICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gY3JlYXRlIEFFUyAxMjggQ1RSIGNp
cGhlciBoYW5kbGU6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CisgICAgICAgIEdTVF9FUlJP
Ul9PQkpFQ1QocHJpdiwgIkZhaWxlZCB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGtleSBidWZmZXIi
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFdlYkNvcmU6OkdzdE1hcHBl
ZEJ1ZmZlciBtYXBwZWRLZXlCdWZmZXIoa2V5QnVmZmVyLmdldCgpLCBHU1RfTUFQX1JFQUQpOwot
ICAgIGlmICghbWFwcGVkS2V5QnVmZmVyKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2Vs
ZiwgIkZhaWxlZCB0byBtYXAgZGVjcnlwdGlvbiBrZXkiKTsKKyAgICBXZWJDb3JlOjpHc3RNYXBw
ZWRCdWZmZXIgbWFwcGVkS2V5VmFsdWVCdWZmZXIoa2V5QnVmZmVyLmdldCgpLCBHU1RfTUFQX1JF
QUQpOworICAgIGlmICghbWFwcGVkS2V5VmFsdWVCdWZmZXIpIHsKKyAgICAgICAgR1NUX0VSUk9S
X09CSkVDVChwcml2LCAiRmFpbGVkIHRvIG1hcCBkZWNyeXB0aW9uIGtleSIpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgQVNTRVJUKG1hcHBlZEtleUJ1ZmZlci5zaXplKCkg
PT0gQ0xFQVJLRVlfU0laRSk7Ci0gICAgZXJyb3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkocHJpdi0+
aGFuZGxlLCBtYXBwZWRLZXlCdWZmZXIuZGF0YSgpLCBtYXBwZWRLZXlCdWZmZXIuc2l6ZSgpKTsK
LSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZ2NyeV9j
aXBoZXJfc2V0a2V5IGZhaWxlZDogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICBBU1NF
UlQobWFwcGVkS2V5VmFsdWVCdWZmZXJyLnNpemUoKSA9PSBDTEVBUktFWV9TSVpFKTsKKyAgICBp
ZiAoZ2NyeV9lcnJvcl90IGVycm9yID0gZ2NyeV9jaXBoZXJfc2V0a2V5KHByaXYtPmhhbmRsZSwg
bWFwcGVkS2V5VmFsdWVCdWZmZXIuZGF0YSgpLCBtYXBwZWRLZXlWYWx1ZUJ1ZmZlci5zaXplKCkp
KSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QocHJpdiwgImdjcnlfY2lwaGVyX3NldGtleSBm
YWlsZWQ6ICVzIiwgZ3BnX3N0cmVycm9yKGVycm9yKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRl
Y3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciogaXZCdWZmZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNp
Z25lZCBzdWJTYW1wbGVDb3VudCwgR3N0QnVmZmVyKiBzdWJTYW1wbGVzQnVmZmVyKQorc3RhdGlj
IGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlciogaXZCdWZmZXIsIEdzdEJ1
ZmZlcioga2V5SURCdWZmZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVD
b3VudCwgR3N0QnVmZmVyKiBzdWJTYW1wbGVzQnVmZmVyKQogewogICAgIC8vIENoZWNrIGl2QnVm
ZmVyIGlzbid0IG51bGwuCiAgICAgaWYgKCFpdkJ1ZmZlcikgewpAQCAtMjI1LDYgKzIwNCw3IEBA
IHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlwdChXZWJL
aXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAgICAgfQogCiAgICAgV2ViS2l0TWVkaWFDbGVhcktl
eURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VUX1BSSVZB
VEUoV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQoc2VsZikpOworCiAgICAgZ2NyeV9lcnJvcl90IGNp
cGhlckVycm9yID0gZ2NyeV9jaXBoZXJfc2V0Y3RyKHByaXYtPmhhbmRsZSwgY3RyLCBDTEVBUktF
WV9TSVpFKTsKICAgICBpZiAoY2lwaGVyRXJyb3IpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChzZWxmLCAiZ2NyeV9jaXBoZXJfc2V0Y3RyIGZhaWxlZDogJXMiLCBncGdfc3RyZXJyb3IoY2lw
aGVyRXJyb3IpKTsKQEAgLTIzMyw3ICsyMTMsMTMgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1l
ZGlhQ2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkQK
IAogICAgIC8vIENoZWNrIGJ1ZmZlciBpc24ndCBudWxsLgogICAgIGlmICghYnVmZmVyKSB7Ci0g
ICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkVycm9yLCB0aGUgYnVmZmVyIGlzIG51bGwi
KTsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiTm8gYnVmZmVyIHRvIGRlY3J5cHQi
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFdlYkNvcmU6OkdzdE1hcHBl
ZEJ1ZmZlciBtYXBwZWRLZXlJZEJ1ZmZlcihrZXlJREJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKKyAg
ICBpZiAoIW1hcHBlZEtleUlkQnVmZmVyKSB7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2Vs
ZiwgIkZhaWxlZCB0byBtYXAga2V5IGlkIGJ1ZmZlciIpOwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0yNDMsNiArMjI5LDggQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlh
Q2xlYXJLZXlEZWNyeXB0b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkQKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0b3JGaW5kQW5kU2V0S2V5KHByaXYsIG1hcHBlZEtleUlkQnVmZmVyKTsKKwogICAgIHVuc2ln
bmVkIHBvc2l0aW9uID0gMDsKICAgICB1bnNpZ25lZCBzYW1wbGVJbmRleCA9IDA7CiAKQEAgLTMw
OSwxMCArMjk3LDQgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0
b3JEZWNyeXB0KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclJlbGVhc2VDaXBo
ZXIoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKLXsKLSAgICBXZWJL
aXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0tfREVD
UllQVF9HRVRfUFJJVkFURShXRUJLSVRfTUVESUFfQ0tfREVDUllQVChzZWxmKSk7Ci0gICAgZ2Ny
eV9jaXBoZXJfY2xvc2UocHJpdi0+aGFuZGxlKTsKLX0KLQogI2VuZGlmIC8vIEVOQUJMRShFTkNS
WVBURURfTUVESUEpICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNw
cAppbmRleCAyOTdjYjVkNzk0NmRjM2FkZDUzYmQ2NGI3YTFlNGY0YzdhOGU0MjY1Li4wNThlODE3
NDhjNjNjMDE4NWM2ZjMzMmIzZmZmZTRjMTk1ZDhiMThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRp
b25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJl
YW1lci5jcHAKQEAgLTQ1LDggKzQ1LDYgQEAgc3RhdGljIEdzdENhcHMqIHdlYmtpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1DYXBzKEdzdEJhc2VUcmFuc2Zvcm0KIHN0YXRp
YyBHc3RGbG93UmV0dXJuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zv
cm1JblBsYWNlKEdzdEJhc2VUcmFuc2Zvcm0qLCBHc3RCdWZmZXIqKTsKIHN0YXRpYyBnYm9vbGVh
biB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0U2lua0V2ZW50SGFuZGxlcihHc3RC
YXNlVHJhbnNmb3JtKiwgR3N0RXZlbnQqKTsKIAotc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHREZWZhdWx0U2V0dXBDaXBoZXIoV2ViS2l0TWVkaWFDb21t
b25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciopOwotc3RhdGljIHZvaWQgd2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRSZWxlYXNlQ2lwaGVyKFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyh3
ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeSk7CiAj
ZGVmaW5lIEdTVF9DQVRfREVGQVVMVCB3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVj
cnlwdF9kZWJ1Z19jYXRlZ29yeQpAQCAtNzEsOSArNjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRf
bWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9jbGFzc19pbml0KFdlYktpdE1lZGlhQ29t
bW9uRQogICAgIGJhc2VUcmFuc2Zvcm1DbGFzcy0+dHJhbnNmb3JtX2lwX29uX3Bhc3N0aHJvdWdo
ID0gRkFMU0U7CiAgICAgYmFzZVRyYW5zZm9ybUNsYXNzLT5zaW5rX2V2ZW50ID0gR1NUX0RFQlVH
X0ZVTkNQVFIod2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRs
ZXIpOwogCi0gICAga2xhc3MtPnNldHVwQ2lwaGVyID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRTZXR1cENpcGhlcik7Ci0gICAga2xh
c3MtPnJlbGVhc2VDaXBoZXIgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0RGVmYXVsdFJlbGVhc2VDaXBoZXIpOwotCiAgICAgZ190eXBlX2NsYXNz
X2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdFByaXZhdGUpKTsKIH0KIApAQCAtMjcwLDM0ICsyNjUsMzAgQEAgc3RhdGljIEdzdEZsb3dS
ZXR1cm4gd2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFRyYW5zZm9ybUluUGxhY2Uo
R3N0QmFzZVQKIAogICAgIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUocHJvdGVjdGlv
bk1ldGEtPmluZm8sICJraWQiKTsKICAgICBHc3RCdWZmZXIqIGtleUlEQnVmZmVyID0gbnVsbHB0
cjsKLSAgICBpZiAodmFsdWUpCi0gICAgICAgIGtleUlEQnVmZmVyID0gZ3N0X3ZhbHVlX2dldF9i
dWZmZXIodmFsdWUpOwotCi0gICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdENs
YXNzKiBrbGFzcyA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX0NMQVNTKHNlbGYpOwot
ICAgIGlmICgha2xhc3MtPnNldHVwQ2lwaGVyKHNlbGYsIGtleUlEQnVmZmVyKSkgewotICAgICAg
ICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gY29uZmlndXJlIGNpcGhlciIpOwor
ICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRmFpbGVk
IHRvIGdldCBrZXkgaWQgZm9yIGJ1ZmZlciIpOwogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9t
ZXRhKGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsK
ICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9TVVBQT1JURUQ7CiAgICAgfQorICAgIGtleUlE
QnVmZmVyID0gZ3N0X3ZhbHVlX2dldF9idWZmZXIodmFsdWUpOworCisgICAgV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdENsYXNzKiBrbGFzcyA9IFdFQktJVF9NRURJQV9DRU5DX0RF
Q1JZUFRfR0VUX0NMQVNTKHNlbGYpOwogCiAgICAgdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92
YWx1ZShwcm90ZWN0aW9uTWV0YS0+aW5mbywgIml2Iik7CiAgICAgaWYgKCF2YWx1ZSkgewogICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gZ2V0IElWIGZvciBzYW1wbGUi
KTsKLSAgICAgICAga2xhc3MtPnJlbGVhc2VDaXBoZXIoc2VsZik7CiAgICAgICAgIGdzdF9idWZm
ZXJfcmVtb3ZlX21ldGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1ldGEqPihwcm90ZWN0
aW9uTWV0YSkpOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsKICAgICB9
CiAKICAgICBHc3RCdWZmZXIqIGl2QnVmZmVyID0gZ3N0X3ZhbHVlX2dldF9idWZmZXIodmFsdWUp
OwogICAgIEdTVF9UUkFDRV9PQkpFQ1Qoc2VsZiwgImRlY3J5cHRpbmciKTsKLSAgICBpZiAoIWts
YXNzLT5kZWNyeXB0KHNlbGYsIGl2QnVmZmVyLCBidWZmZXIsIHN1YlNhbXBsZUNvdW50LCBzdWJT
YW1wbGVzQnVmZmVyKSkgeworICAgIGlmICgha2xhc3MtPmRlY3J5cHQoc2VsZiwgaXZCdWZmZXIs
IGtleUlEQnVmZmVyLCBidWZmZXIsIHN1YlNhbXBsZUNvdW50LCBzdWJTYW1wbGVzQnVmZmVyKSkg
ewogICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJEZWNyeXB0aW9uIGZhaWxlZCIpOwot
ICAgICAgICBrbGFzcy0+cmVsZWFzZUNpcGhlcihzZWxmKTsKICAgICAgICAgZ3N0X2J1ZmZlcl9y
ZW1vdmVfbWV0YShidWZmZXIsIHJlaW50ZXJwcmV0X2Nhc3Q8R3N0TWV0YSo+KHByb3RlY3Rpb25N
ZXRhKSk7CiAgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfU1VQUE9SVEVEOwogICAgIH0KIAot
ICAgIGtsYXNzLT5yZWxlYXNlQ2lwaGVyKHNlbGYpOwogICAgIGdzdF9idWZmZXJfcmVtb3ZlX21l
dGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1ldGEqPihwcm90ZWN0aW9uTWV0YSkpOwog
ICAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KQEAgLTM1NiwxNSArMzQ3LDQgQEAgc3RhdGljIEdz
dFN0YXRlQ2hhbmdlUmV0dXJuIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckNo
YW5nZVN0YXRlKEdzdEUKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi0KLXN0YXRpYyBnYm9vbGVh
biB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0RGVmYXVsdFNldHVwQ2lwaGVyKFdl
YktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIqKQotewotICAgIHJl
dHVybiB0cnVlOwotfQotCi0KLXN0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlv
bkRlY3J5cHREZWZhdWx0UmVsZWFzZUNpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0KikKLXsKLX0KLQogI2VuZGlmIC8vIEVOQUJMRShFTkNSWVBURURfTUVESUEpICYmIFVT
RShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oCmluZGV4IDI2Nzc5MWFlM2ViMTZj
ZDM3Yzc4NTllZDZkZmM3YzI0YWE0OGNiMWMuLjIyMjExMjU0ZWI3ZDllZjU0NjYwNTdmZDdkNTQz
NDIxOWVjZWYyZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2Vi
S2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5oCkBAIC01NCw5ICs1NCw3IEBA
IHN0cnVjdCBfV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdENsYXNzIHsKIAogICAg
IGNvbnN0IGNoYXIqIHByb3RlY3Rpb25TeXN0ZW1JZDsKICAgICBnYm9vbGVhbiAoKmhhbmRsZUtl
eVJlc3BvbnNlKShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0RXZlbnQq
IGV2ZW50KTsKLSAgICBnYm9vbGVhbiAoKnNldHVwQ2lwaGVyKShXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKik7Ci0gICAgZ2Jvb2xlYW4gKCpkZWNyeXB0KShX
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKiBpdkJ1ZmZlciwg
R3N0QnVmZmVyKiBidWZmZXIsIHVuc2lnbmVkIHN1YlNhbXBsZXNDb3VudCwgR3N0QnVmZmVyKiBz
dWJTYW1wbGVzQnVmZmVyKTsKLSAgICB2b2lkICgqcmVsZWFzZUNpcGhlcikoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCopOworICAgIGdib29sZWFuICgqZGVjcnlwdCkoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciogaXZCdWZmZXIsIEdzdEJ1
ZmZlcioga2V5SURCdWZmZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVz
Q291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlc0J1ZmZlcik7CiB9OwogCiBHX0VORF9ERUNMUwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353959</attachid>
            <date>2018-11-06 03:19:34 -0800</date>
            <delta_ts>2018-11-07 02:00:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191157-20181106111932.patch</filename>
            <type>text/plain</type>
            <size>17166</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJhMWY3NGZhMGViZjI3
YTNiZjc1NzFhNTczMDkxNGJiNTVhZDgzZC4uYWNiYzI0ZjkxZDE2MTUwMjdlNjUzYzM4OGY3YTNh
YzU2MDg5Njg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTExLTA2ICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FXVtHU3RyZWFt
ZXJdIEVuc3VyZSBrZXkgaWQgYnVmZmVycyBhcmUgcHJlc2VudCBhbmQgc2ltcGxpZnkgbGlmZXRp
bWUgbWFuYWdlbWVudCBvZiBDbGVhcktleSBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTE1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1vdmlu
ZyB0aGUgY2xlYXJrZXkgZGVjcnlwdG9yIGJlaGluZCBhCisgICAgICAgIG5ldyBkZWNyeXB0IEFQ
SSBpbiBDRE1JbnN0YW5jZSwgd2hpY2ggd2lsbCBiZSBzZW50IGludG8gdGhlCisgICAgICAgIHBp
cGVsaW5lIHRvIGhhbmRsZSBrZXkgbWFuYWdlbWVudCBhbmQgZGVjcnlwdGlvbi4gVGhpcyBpcyBm
b3IgYQorICAgICAgICBsYXRlciBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGNsZWFyIGtleSB0ZXN0cyBpbiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHc3RNYXBwZWRCdWZmZXI6OmRhdGEgY29uc3QpOiBBZGQgYSBjb25zdCBkYXRhIGFj
Y2Vzc29yLAorICAgICAgICBzaW5jZSB3ZSBhcmUgbm93IHByb3ZpZGluZyBvcGVyYXRvcj09J3Mg
b24gY29uc3Qgb2JqZWN0cyBvZiB0aGlzCisgICAgICAgIGNsYXNzIHRoYXQgbmVlZCBjb25zdCBh
Y2Nlc3MgdG8gdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSk6IEFkZCBhIHN3YXAgb2YgdGhlIG5ldworICAgICAgICBlcXVhbGl0
eSBvcGVyYXRvciBzbyB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBoYXZlIHRoZQorICAg
ICAgICBHc3RCdWZmZXIgb24gdGhlIFJIUyBvZiB0aGUgZXF1YWxpdHkgYWxsIHRoZSB0aW1lLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlZmluZSBhbiBlcXVhbGl0eSBvcGVyYXRv
ciBiZXR3ZWVuIEdzdAorICAgICAgICBidWZmZXJzIGFuZCBXZWJDb3JlJ3MgbWFwcGVkIGJ1ZmZl
cnMuIEdzdCBjcmVhdGVzIGEgcmVmIGFuZCBhCisgICAgICAgIHNlcGFyYXRlIHJlYWQgdmlldyB1
bmRlciB0aGUgY292ZXJzIGluIHRoZSBtZW1jbXAgY2FsbCwgc28gd2UgZG8KKyAgICAgICAgbm90
IG5lZWQgdG8gbWFwIHRoZSBidWZmZXIgb3Vyc2VsdmVzLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2NsYXNzX2luaXQpOiBS
ZW1vdmUgc2V0dXAvcmVsZWFzZQorICAgICAgICBiaW5kaW5ncy4KKyAgICAgICAgKHdlYmtpdF9t
ZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9pbml0KTogSW5pdGlhbGl6ZSBnY3J5cHQgY2lwaGVyCisg
ICAgICAgIGhlcmUgb25jZSBpbnN0ZWFkIG9mIGZvciBldmVyeSBidWZmZXIgdG8gYmUgZGVjcnlw
dGVkLgorICAgICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmFsaXplKTogQW5k
IGRlc3Ryb3kgdGhlIGNpcGhlcgorICAgICAgICBjb250ZXh0IHdoZW4gdGhlIGRlY3J5cHRvciBp
cyBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluZEFu
ZFNldEtleSk6IEZhY3RvciBvdXQgdGhlIGtleQorICAgICAgICByZXRyaWV2YWwgYW5kIGNvbnRl
eHQgc2V0dGluZyBpbiB0aGlzIG1ldGhvZCwgY2FsbCBpdCBmb3IgZWFjaAorICAgICAgICBzYW1w
bGUuCisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlwdCk6IEJhc2Ug
a2V5IGlkIGJ1ZmZlciBpbnRvCisgICAgICAgIHRoaXMgZnVuY3Rpb24sIGFuZCByZW1vdmUgY2lw
aGVyIGNyZWF0aW9uIC8gZGVzdHJveSBtZXRob2RzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1l
ci5jcHA6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9j
bGFzc19pbml0KTogUmVtb3ZlCisgICAgICAgIHNldHVwL3JlbGVhc2UgYmluZGluZ3MuCisgICAg
ICAgICh3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtSW5QbGFjZSk6
IEVuc3VyZSBhIGtleQorICAgICAgICBpZCBpcyBwcmVzZW50IGFuZCBwYXNzIGl0IHRvIHRoZSBk
ZWNyeXB0IGNsYXNzIG1ldGhvZC4KKyAgICAgICAgKHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlv
bkRlY3J5cHREZWZhdWx0U2V0dXBDaXBoZXIpOiBEZWxldGVkLgorICAgICAgICAod2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRSZWxlYXNlQ2lwaGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaDoKKwogMjAxOC0xMC0yOSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlJUQ10gRW5hYmxlIFZQOCBieSBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjVjOTk2NTQ1MjJjNzgzZmQzODU1
YmNkMTNkODdlYzMxZjM4NGMwNC4uMzY0NWFlZDhiZTQ3MjMyZWE1MDUxNGE0ZjgwODhhZmI4ZjJh
NDE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMTA3LDE1ICsxMDcsMzMgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHVpbnQ4X3QqIGRhdGEoKSB7IEFTU0VSVChtX2lzVmFsaWQpOyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1faW5mby5kYXRhKTsgfQorICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KG1faW5mby5kYXRhKTsgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2luZm8uc2l6
ZSk7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lz
VmFsaWQ7IH0KKwogcHJpdmF0ZToKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdz
dE1hcHBlZEJ1ZmZlciYsIGNvbnN0IEdzdE1hcHBlZEJ1ZmZlciYpOworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgR3N0TWFwcGVkQnVmZmVyJiwgY29uc3QgR3N0QnVmZmVyKik7Cisg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHc3RCdWZmZXIqIGEsIGNvbnN0IEdzdE1h
cHBlZEJ1ZmZlciYgYikgeyByZXR1cm4gb3BlcmF0b3I9PShiLCBhKTsgfQorCiAgICAgR3N0QnVm
ZmVyKiBtX2J1ZmZlciB7IG51bGxwdHIgfTsKICAgICBHc3RNYXBJbmZvIG1faW5mbzsKICAgICBi
b29sIG1faXNWYWxpZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEdzdE1hcHBlZEJ1ZmZlciYgYSwgY29uc3QgR3N0TWFwcGVkQnVmZmVyJiBiKQoreworICAg
IHJldHVybiBhLnNpemUoKSA9PSBiLnNpemUoKSAmJiAhZ3N0X2J1ZmZlcl9tZW1jbXAoYS5tX2J1
ZmZlciwgMCwgYi5kYXRhKCksIGIuc2l6ZSgpKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHc3RNYXBwZWRCdWZmZXImIGEsIGNvbnN0IEdzdEJ1ZmZlciogYikKK3sKKyAgICBH
c3RCdWZmZXIqIG5vbkNvbnN0QiA9IGNvbnN0X2Nhc3Q8R3N0QnVmZmVyKj4oYik7CisgICAgcmV0
dXJuIGEuc2l6ZSgpID09IGdzdF9idWZmZXJfZ2V0X3NpemUobm9uQ29uc3RCKSAmJiAhZ3N0X2J1
ZmZlcl9tZW1jbXAobm9uQ29uc3RCLCAwLCBhLmRhdGEoKSwgYS5zaXplKCkpOworfQorCiBib29s
IGdzdFJlZ2lzdHJ5SGFzRWxlbWVudEZvck1lZGlhVHlwZShHTGlzdCogZWxlbWVudEZhY3Rvcmll
cywgY29uc3QgY2hhciogY2Fwc1N0cmluZyk7CiB2b2lkIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdl
Q2FsbGJhY2soR3N0RWxlbWVudCAqcGlwZWxpbmUpOwogdm9pZCBkaXNjb25uZWN0U2ltcGxlQnVz
TWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQgKnBpcGVsaW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlE
ZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXgg
OGFlM2E1NjM2MzI5ZjRiZGI4ZmIyNmQxZDk4OGMzMTM3Y2ZlN2ZjYi4uNWRiMGY1ZjNmNDE2OTJl
ZTFhM2FlZGMzM2EzMjU3MTg2NGQ2YzJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTQ1LDkgKzQ1LDcg
QEAgc3RydWN0IF9XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUgewogCiBzdGF0aWMg
dm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOwogc3Rh
dGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25z
ZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RFdmVudCopOwot
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENpcGhlcihX
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKik7Ci1zdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlciogc2FtcGxl
LCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7Ci1zdGF0
aWMgdm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcihXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Kik7CitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVk
aWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlcioga2V5aWQsIEdzdEJ1ZmZlciogc2FtcGxl
LCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7CiAKIEdT
VF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5KTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9jbGVh
cl9rZXlfZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeQpAQCAtODksOSArODcsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfY2xhc3NfaW5pdChXZWJLaXRNZWRpYUNs
ZWFyS2V5RGVjcnlwdAogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFz
cyogY2VuY0NsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9DTEFTUyhrbGFzcyk7CiAg
ICAgY2VuY0NsYXNzLT5wcm90ZWN0aW9uU3lzdGVtSWQgPSBXZWJDb3JlOjpHU3RyZWFtZXJFTUVV
dGlsaXRpZXM6OnNfQ2xlYXJLZXlVVUlEOwogICAgIGNlbmNDbGFzcy0+aGFuZGxlS2V5UmVzcG9u
c2UgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFuZGxl
S2V5UmVzcG9uc2UpOwotICAgIGNlbmNDbGFzcy0+c2V0dXBDaXBoZXIgPSBHU1RfREVCVUdfRlVO
Q1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOwogICAgIGNlbmND
bGFzcy0+ZGVjcnlwdCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0b3JEZWNyeXB0KTsKLSAgICBjZW5jQ2xhc3MtPnJlbGVhc2VDaXBoZXIgPSBHU1RfREVCVUdf
RlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcik7CiAKICAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRNZWRpYUNsZWFy
S2V5RGVjcnlwdFByaXZhdGUpKTsKIH0KQEAgLTEwMiwxMyArOTgsMTcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2luaXQoV2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHQqIHNlbGYKIAogICAgIHNlbGYtPnByaXYgPSBwcml2OwogICAgIG5ldyAocHJpdikgV2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKCk7CisgICAgaWYgKGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJihwcml2LT5oYW5kbGUpLCBHQ1JZX0NJUEhFUl9BRVMx
MjgsIEdDUllfQ0lQSEVSX01PREVfQ1RSLCBHQ1JZX0NJUEhFUl9TRUNVUkUpKSB7CisgICAgICAg
IEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjcmVhdGUgQUVTIDEyOCBDVFIgY2lw
aGVyIGhhbmRsZTogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgQVNTRVJUKCFl
cnJvcik7CisgICAgfQogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlw
dG9yRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlE
ZWNyeXB0KiBzZWxmID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQob2JqZWN0KTsKICAgICBXZWJL
aXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHByaXYgPSBzZWxmLT5wcml2OwotCisgICAg
Z2NyeV9jaXBoZXJfY2xvc2UocHJpdi0+aGFuZGxlKTsKICAgICBwcml2LT5+V2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHRQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1Rf
Q0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CkBAIC0xNTAsNTggKzE1MCwzNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckhhbmRsZUtleVJlc3BvbnNlKFdl
YktpdE1lZGlhQ29tbW9uRQogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlcioga2V5SURCdWZmZXIpCitzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmRBbmRTZXRLZXkoV2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2LCBXZWJDb3JlOjpHc3RNYXBwZWRCdWZm
ZXImIGtleUlEQnVmZmVyKQogewotICAgIGlmICgha2V5SURCdWZmZXIpIHsKLSAgICAgICAgR1NU
X0VSUk9SX09CSkVDVChzZWxmLCAiZ290IG5vIGtleSBpZCBidWZmZXIiKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdFQktJVF9NRURJ
QV9DS19ERUNSWVBUKHNlbGYpKTsKLSAgICBnY3J5X2Vycm9yX3QgZXJyb3I7Ci0KICAgICBHUmVm
UHRyPEdzdEJ1ZmZlcj4ga2V5QnVmZmVyOwotICAgIFdlYkNvcmU6OkdzdE1hcHBlZEJ1ZmZlciBt
YXBwZWRLZXlJZEJ1ZmZlcihrZXlJREJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKLSAgICBpZiAoIW1h
cHBlZEtleUlkQnVmZmVyKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxl
ZCB0byBtYXAga2V5IElEIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQot
CiAgICAgZm9yIChhdXRvJiBrZXkgOiBwcml2LT5rZXlzKSB7Ci0gICAgICAgIGlmICghZ3N0X2J1
ZmZlcl9tZW1jbXAoa2V5LmtleUlELmdldCgpLCAwLCBtYXBwZWRLZXlJZEJ1ZmZlci5kYXRhKCks
IG1hcHBlZEtleUlkQnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgaWYgKGtleS5rZXlJRC5nZXQo
KSA9PSBrZXlJREJ1ZmZlcikgewogICAgICAgICAgICAga2V5QnVmZmVyID0ga2V5LmtleVZhbHVl
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWtleUJ1
ZmZlcikgewotICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8gZmluZCBh
biBhcHByb3ByaWF0ZSBrZXkgYnVmZmVyIik7CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QocHJp
diwgIkZhaWxlZCB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGtleSBidWZmZXIiKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfb3BlbigmKHBy
aXYtPmhhbmRsZSksIEdDUllfQ0lQSEVSX0FFUzEyOCwgR0NSWV9DSVBIRVJfTU9ERV9DVFIsIEdD
UllfQ0lQSEVSX1NFQ1VSRSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9P
QkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjcmVhdGUgQUVTIDEyOCBDVFIgY2lwaGVyIGhhbmRsZTog
JXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICBXZWJDb3JlOjpHc3RNYXBwZWRCdWZmZXIg
bWFwcGVkS2V5VmFsdWVCdWZmZXIoa2V5QnVmZmVyLmdldCgpLCBHU1RfTUFQX1JFQUQpOworICAg
IGlmICghbWFwcGVkS2V5VmFsdWVCdWZmZXIpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChw
cml2LCAiRmFpbGVkIHRvIG1hcCBkZWNyeXB0aW9uIGtleSIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6R3N0TWFwcGVkQnVmZmVyIG1hcHBlZEtleUJ1ZmZl
cihrZXlCdWZmZXIuZ2V0KCksIEdTVF9NQVBfUkVBRCk7Ci0gICAgaWYgKCFtYXBwZWRLZXlCdWZm
ZXIpIHsKLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRmFpbGVkIHRvIG1hcCBkZWNy
eXB0aW9uIGtleSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgQVNTRVJU
KG1hcHBlZEtleUJ1ZmZlci5zaXplKCkgPT0gQ0xFQVJLRVlfU0laRSk7Ci0gICAgZXJyb3IgPSBn
Y3J5X2NpcGhlcl9zZXRrZXkocHJpdi0+aGFuZGxlLCBtYXBwZWRLZXlCdWZmZXIuZGF0YSgpLCBt
YXBwZWRLZXlCdWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgR1NUX0VS
Uk9SX09CSkVDVChzZWxmLCAiZ2NyeV9jaXBoZXJfc2V0a2V5IGZhaWxlZDogJXMiLCBncGdfc3Ry
ZXJyb3IoZXJyb3IpKTsKKyAgICBBU1NFUlQobWFwcGVkS2V5VmFsdWVCdWZmZXIuc2l6ZSgpID09
IENMRUFSS0VZX1NJWkUpOworICAgIGlmIChnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5X2NpcGhl
cl9zZXRrZXkocHJpdi0+aGFuZGxlLCBtYXBwZWRLZXlWYWx1ZUJ1ZmZlci5kYXRhKCksIG1hcHBl
ZEtleVZhbHVlQnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVChwcml2
LCAiZ2NyeV9jaXBoZXJfc2V0a2V5IGZhaWxlZDogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVyKiBpdkJ1ZmZlciwg
R3N0QnVmZmVyKiBidWZmZXIsIHVuc2lnbmVkIHN1YlNhbXBsZUNvdW50LCBHc3RCdWZmZXIqIHN1
YlNhbXBsZXNCdWZmZXIpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5
cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0
QnVmZmVyKiBpdkJ1ZmZlciwgR3N0QnVmZmVyKiBrZXlJREJ1ZmZlciwgR3N0QnVmZmVyKiBidWZm
ZXIsIHVuc2lnbmVkIHN1YlNhbXBsZUNvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXNCdWZmZXIp
CiB7CiAgICAgLy8gQ2hlY2sgaXZCdWZmZXIgaXNuJ3QgbnVsbC4KICAgICBpZiAoIWl2QnVmZmVy
KSB7CkBAIC0yMzMsNyArMjEyLDEzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFy
S2V5RGVjcnlwdG9yRGVjcnlwdChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAKICAgICAv
LyBDaGVjayBidWZmZXIgaXNuJ3QgbnVsbC4KICAgICBpZiAoIWJ1ZmZlcikgewotICAgICAgICBH
U1RfRVJST1JfT0JKRUNUKHNlbGYsICJFcnJvciwgdGhlIGJ1ZmZlciBpcyBudWxsIik7CisgICAg
ICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5vIGJ1ZmZlciB0byBkZWNyeXB0Iik7CisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHc3RNYXBwZWRCdWZmZXIg
bWFwcGVkS2V5SWRCdWZmZXIoa2V5SURCdWZmZXIsIEdTVF9NQVBfUkVBRCk7CisgICAgaWYgKCFt
YXBwZWRLZXlJZEJ1ZmZlcikgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWls
ZWQgdG8gbWFwIGtleSBpZCBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IApAQCAtMjQzLDYgKzIyOCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5
RGVjcnlwdG9yRGVjcnlwdChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKKyAgICB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmlu
ZEFuZFNldEtleShwcml2LCBtYXBwZWRLZXlJZEJ1ZmZlcik7CisKICAgICB1bnNpZ25lZCBwb3Np
dGlvbiA9IDA7CiAgICAgdW5zaWduZWQgc2FtcGxlSW5kZXggPSAwOwogCkBAIC0zMDksMTAgKzI5
Niw0IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlw
dChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0
YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxlYXNlQ2lwaGVyKFdlYktp
dE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCi17Ci0gICAgV2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFRfR0VU
X1BSSVZBVEUoV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQoc2VsZikpOwotICAgIGdjcnlfY2lwaGVy
X2Nsb3NlKHByaXYtPmhhbmRsZSk7Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXgg
Mjk3Y2I1ZDc5NDZkYzNhZGQ1M2JkNjRiN2ExZTRmNGM3YThlNDI2NS4uZGQyNjE5ZjFhNWEyNDc0
OWFlZWJiYjcyM2FlNDk2ZDhkY2U4YmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlw
dG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3Bw
CkBAIC00NSw4ICs0NSw2IEBAIHN0YXRpYyBHc3RDYXBzKiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0VHJhbnNmb3JtQ2FwcyhHc3RCYXNlVHJhbnNmb3JtCiBzdGF0aWMgR3N0Rmxv
d1JldHVybiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtSW5QbGFj
ZShHc3RCYXNlVHJhbnNmb3JtKiwgR3N0QnVmZmVyKik7CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0
TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0QmFzZVRyYW5z
Zm9ybSosIEdzdEV2ZW50Kik7CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0RGVmYXVsdFNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlw
dGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIqKTsKLXN0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHREZWZhdWx0UmVsZWFzZUNpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0Kik7CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpOwogI2RlZmluZSBH
U1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVi
dWdfY2F0ZWdvcnkKQEAgLTcxLDkgKzY5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X21lZGlhX2Nv
bW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfY2xhc3NfaW5pdChXZWJLaXRNZWRpYUNvbW1vbkUKICAg
ICBiYXNlVHJhbnNmb3JtQ2xhc3MtPnRyYW5zZm9ybV9pcF9vbl9wYXNzdGhyb3VnaCA9IEZBTFNF
OwogICAgIGJhc2VUcmFuc2Zvcm1DbGFzcy0+c2lua19ldmVudCA9IEdTVF9ERUJVR19GVU5DUFRS
KHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRTaW5rRXZlbnRIYW5kbGVyKTsKIAot
ICAgIGtsYXNzLT5zZXR1cENpcGhlciA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ29t
bW9uRW5jcnlwdGlvbkRlY3J5cHREZWZhdWx0U2V0dXBDaXBoZXIpOwotICAgIGtsYXNzLT5yZWxl
YXNlQ2lwaGVyID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9u
RGVjcnlwdERlZmF1bHRSZWxlYXNlQ2lwaGVyKTsKLQogICAgIGdfdHlwZV9jbGFzc19hZGRfcHJp
dmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRQcml2
YXRlKSk7CiB9CiAKQEAgLTI2OSwzNSArMjY0LDMxIEBAIHN0YXRpYyBHc3RGbG93UmV0dXJuIHdl
YmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBsYWNlKEdzdEJhc2VU
CiAgICAgfQogCiAgICAgdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShwcm90ZWN0aW9u
TWV0YS0+aW5mbywgImtpZCIpOwotICAgIEdzdEJ1ZmZlcioga2V5SURCdWZmZXIgPSBudWxscHRy
OwotICAgIGlmICh2YWx1ZSkKLSAgICAgICAga2V5SURCdWZmZXIgPSBnc3RfdmFsdWVfZ2V0X2J1
ZmZlcih2YWx1ZSk7CiAKLSAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Q2xh
c3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfQ0xBU1Moc2VsZik7Ci0g
ICAgaWYgKCFrbGFzcy0+c2V0dXBDaXBoZXIoc2VsZiwga2V5SURCdWZmZXIpKSB7Ci0gICAgICAg
IEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjb25maWd1cmUgY2lwaGVyIik7Cisg
ICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQg
dG8gZ2V0IGtleSBpZCBmb3IgYnVmZmVyIik7CiAgICAgICAgIGdzdF9idWZmZXJfcmVtb3ZlX21l
dGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1ldGEqPihwcm90ZWN0aW9uTWV0YSkpOwog
ICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsKICAgICB9CisgICAgR3N0QnVm
ZmVyKiBrZXlJREJ1ZmZlciA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyKHZhbHVlKTsKIAogICAgIHZh
bHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUocHJvdGVjdGlvbk1ldGEtPmluZm8sICJpdiIp
OwogICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRmFp
bGVkIHRvIGdldCBJViBmb3Igc2FtcGxlIik7Ci0gICAgICAgIGtsYXNzLT5yZWxlYXNlQ2lwaGVy
KHNlbGYpOwogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVpbnRlcnBy
ZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsKICAgICAgICAgcmV0dXJuIEdTVF9G
TE9XX05PVF9TVVBQT1JURUQ7CiAgICAgfQogCiAgICAgR3N0QnVmZmVyKiBpdkJ1ZmZlciA9IGdz
dF92YWx1ZV9nZXRfYnVmZmVyKHZhbHVlKTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRp
b25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfQ0xB
U1Moc2VsZik7CisKICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJkZWNyeXB0aW5nIik7Ci0g
ICAgaWYgKCFrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVD
b3VudCwgc3ViU2FtcGxlc0J1ZmZlcikpIHsKKyAgICBpZiAoIWtsYXNzLT5kZWNyeXB0KHNlbGYs
IGl2QnVmZmVyLCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3ViU2FtcGxl
c0J1ZmZlcikpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRGVjcnlwdGlvbiBm
YWlsZWQiKTsKLSAgICAgICAga2xhc3MtPnJlbGVhc2VDaXBoZXIoc2VsZik7CiAgICAgICAgIGdz
dF9idWZmZXJfcmVtb3ZlX21ldGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1ldGEqPihw
cm90ZWN0aW9uTWV0YSkpOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsK
ICAgICB9CiAKLSAgICBrbGFzcy0+cmVsZWFzZUNpcGhlcihzZWxmKTsKICAgICBnc3RfYnVmZmVy
X3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlv
bk1ldGEpKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CkBAIC0zNTYsMTUgKzM0Nyw0IEBA
IHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25E
ZWNyeXB0b3JDaGFuZ2VTdGF0ZShHc3RFCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotCi1zdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRTZXR1
cENpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKikK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotCi1zdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNvbW1v
bkVuY3J5cHRpb25EZWNyeXB0RGVmYXVsdFJlbGVhc2VDaXBoZXIoV2ViS2l0TWVkaWFDb21tb25F
bmNyeXB0aW9uRGVjcnlwdCopCi17Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQVEVEX01F
RElBKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
ZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaAppbmRleCAyNjc3
OTFhZTNlYjE2Y2QzN2M3ODU5ZWQ2ZGZjN2MyNGFhNDhjYjFjLi4yMjIxMTI1NGViN2Q5ZWY1NDY2
MDU3ZmQ3ZDU0MzQyMTllY2VmMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JH
U3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaApAQCAtNTQs
OSArNTQsNyBAQCBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFz
cyB7CiAKICAgICBjb25zdCBjaGFyKiBwcm90ZWN0aW9uU3lzdGVtSWQ7CiAgICAgZ2Jvb2xlYW4g
KCpoYW5kbGVLZXlSZXNwb25zZSkoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCos
IEdzdEV2ZW50KiBldmVudCk7Ci0gICAgZ2Jvb2xlYW4gKCpzZXR1cENpcGhlcikoV2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciopOwotICAgIGdib29sZWFuICgq
ZGVjcnlwdCkoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciog
aXZCdWZmZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291bnQsIEdz
dEJ1ZmZlciogc3ViU2FtcGxlc0J1ZmZlcik7Ci0gICAgdm9pZCAoKnJlbGVhc2VDaXBoZXIpKFdl
YktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKKyAgICBnYm9vbGVhbiAoKmRlY3J5
cHQpKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIqIGl2QnVm
ZmVyLCBHc3RCdWZmZXIqIGtleUlEQnVmZmVyLCBHc3RCdWZmZXIqIGJ1ZmZlciwgdW5zaWduZWQg
c3ViU2FtcGxlc0NvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXNCdWZmZXIpOwogfTsKIAogR19F
TkRfREVDTFMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>354075</attachid>
            <date>2018-11-07 02:00:29 -0800</date>
            <delta_ts>2018-11-07 03:50:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191157-20181107100028.patch</filename>
            <type>text/plain</type>
            <size>17172</size>
            <attacher name="Charlie Turner">cturner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NTQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWJhMWY3NGZhMGViZjI3
YTNiZjc1NzFhNTczMDkxNGJiNTVhZDgzZC4uYWNiYzI0ZjkxZDE2MTUwMjdlNjUzYzM4OGY3YTNh
YzU2MDg5Njg2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTExLTA2ICBDaGFy
bGllIFR1cm5lciAgPGN0dXJuZXJAaWdhbGlhLmNvbT4KKworICAgICAgICBbRU1FXVtHU3RyZWFt
ZXJdIEVuc3VyZSBrZXkgaWQgYnVmZmVycyBhcmUgcHJlc2VudCBhbmQgc2ltcGxpZnkgbGlmZXRp
bWUgbWFuYWdlbWVudCBvZiBDbGVhcktleSBjbGFzcy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTE1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIG1vdmlu
ZyB0aGUgY2xlYXJrZXkgZGVjcnlwdG9yIGJlaGluZCBhCisgICAgICAgIG5ldyBkZWNyeXB0IEFQ
SSBpbiBDRE1JbnN0YW5jZSwgd2hpY2ggd2lsbCBiZSBzZW50IGludG8gdGhlCisgICAgICAgIHBp
cGVsaW5lIHRvIGhhbmRsZSBrZXkgbWFuYWdlbWVudCBhbmQgZGVjcnlwdGlvbi4gVGhpcyBpcyBm
b3IgYQorICAgICAgICBsYXRlciBwYXRjaC4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5n
IGNsZWFyIGtleSB0ZXN0cyBpbiBtZWRpYS9lbmNyeXB0ZWQtbWVkaWEuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpHc3RNYXBwZWRCdWZmZXI6OmRhdGEgY29uc3QpOiBBZGQgYSBjb25zdCBkYXRhIGFj
Y2Vzc29yLAorICAgICAgICBzaW5jZSB3ZSBhcmUgbm93IHByb3ZpZGluZyBvcGVyYXRvcj09J3Mg
b24gY29uc3Qgb2JqZWN0cyBvZiB0aGlzCisgICAgICAgIGNsYXNzIHRoYXQgbmVlZCBjb25zdCBh
Y2Nlc3MgdG8gdGhlIGRhdGEgcG9pbnRlci4KKyAgICAgICAgKFdlYkNvcmU6OkdzdE1hcHBlZEJ1
ZmZlcjo6b3BlcmF0b3I9PSk6IEFkZCBhIHN3YXAgb2YgdGhlIG5ldworICAgICAgICBlcXVhbGl0
eSBvcGVyYXRvciBzbyB5b3UgZG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0byBoYXZlIHRoZQorICAg
ICAgICBHc3RCdWZmZXIgb24gdGhlIFJIUyBvZiB0aGUgZXF1YWxpdHkgYWxsIHRoZSB0aW1lLgor
ICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I9PSk6IERlZmluZSBhbiBlcXVhbGl0eSBvcGVyYXRv
ciBiZXR3ZWVuIEdzdAorICAgICAgICBidWZmZXJzIGFuZCBXZWJDb3JlJ3MgbWFwcGVkIGJ1ZmZl
cnMuIEdzdCBjcmVhdGVzIGEgcmVmIGFuZCBhCisgICAgICAgIHNlcGFyYXRlIHJlYWQgdmlldyB1
bmRlciB0aGUgY292ZXJzIGluIHRoZSBtZW1jbXAgY2FsbCwgc28gd2UgZG8KKyAgICAgICAgbm90
IG5lZWQgdG8gbWFwIHRoZSBidWZmZXIgb3Vyc2VsdmVzLgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2NsYXNzX2luaXQpOiBS
ZW1vdmUgc2V0dXAvcmVsZWFzZQorICAgICAgICBiaW5kaW5ncy4KKyAgICAgICAgKHdlYmtpdF9t
ZWRpYV9jbGVhcl9rZXlfZGVjcnlwdF9pbml0KTogSW5pdGlhbGl6ZSBnY3J5cHQgY2lwaGVyCisg
ICAgICAgIGhlcmUgb25jZSBpbnN0ZWFkIG9mIGZvciBldmVyeSBidWZmZXIgdG8gYmUgZGVjcnlw
dGVkLgorICAgICAgICAod2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmFsaXplKTogQW5k
IGRlc3Ryb3kgdGhlIGNpcGhlcgorICAgICAgICBjb250ZXh0IHdoZW4gdGhlIGRlY3J5cHRvciBp
cyBkZXN0cm95ZWQuCisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluZEFu
ZFNldEtleSk6IEZhY3RvciBvdXQgdGhlIGtleQorICAgICAgICByZXRyaWV2YWwgYW5kIGNvbnRl
eHQgc2V0dGluZyBpbiB0aGlzIG1ldGhvZCwgY2FsbCBpdCBmb3IgZWFjaAorICAgICAgICBzYW1w
bGUuCisgICAgICAgICh3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlwdCk6IEJhc2Ug
a2V5IGlkIGJ1ZmZlciBpbnRvCisgICAgICAgIHRoaXMgZnVuY3Rpb24sIGFuZCByZW1vdmUgY2lw
aGVyIGNyZWF0aW9uIC8gZGVzdHJveSBtZXRob2RzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1l
ci5jcHA6CisgICAgICAgICh3ZWJraXRfbWVkaWFfY29tbW9uX2VuY3J5cHRpb25fZGVjcnlwdF9j
bGFzc19pbml0KTogUmVtb3ZlCisgICAgICAgIHNldHVwL3JlbGVhc2UgYmluZGluZ3MuCisgICAg
ICAgICh3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtSW5QbGFjZSk6
IEVuc3VyZSBhIGtleQorICAgICAgICBpZCBpcyBwcmVzZW50IGFuZCBwYXNzIGl0IHRvIHRoZSBk
ZWNyeXB0IGNsYXNzIG1ldGhvZC4KKyAgICAgICAgKHdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlv
bkRlY3J5cHREZWZhdWx0U2V0dXBDaXBoZXIpOiBEZWxldGVkLgorICAgICAgICAod2ViS2l0TWVk
aWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1bHRSZWxlYXNlQ2lwaGVyKTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaDoKKwogMjAxOC0xMC0yOSAgWW91ZW5uIEZhYmxl
dCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYlJUQ10gRW5hYmxlIFZQOCBieSBk
ZWZhdWx0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyQ29tbW9uLmgKaW5kZXggZjVjOTk2NTQ1MjJjNzgzZmQzODU1
YmNkMTNkODdlYzMxZjM4NGMwNC4uMzY0NWFlZDhiZTQ3MjMyZWE1MDUxNGE0ZjgwODhhZmI4ZjJh
NDE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0dTdHJlYW1lckNvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJDb21tb24uaApAQCAtMTA3LDE1ICsxMDcsMzMgQEAgcHVi
bGljOgogICAgIH0KIAogICAgIHVpbnQ4X3QqIGRhdGEoKSB7IEFTU0VSVChtX2lzVmFsaWQpOyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dWludDhfdCo+KG1faW5mby5kYXRhKTsgfQorICAgIGNvbnN0IHVp
bnQ4X3QqIGRhdGEoKSBjb25zdCB7IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gc3RhdGljX2Nh
c3Q8dWludDhfdCo+KG1faW5mby5kYXRhKTsgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7
IEFTU0VSVChtX2lzVmFsaWQpOyByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PihtX2luZm8uc2l6
ZSk7IH0KIAogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBtX2lz
VmFsaWQ7IH0KKwogcHJpdmF0ZToKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdz
dE1hcHBlZEJ1ZmZlciYsIGNvbnN0IEdzdE1hcHBlZEJ1ZmZlciYpOworICAgIGZyaWVuZCBib29s
IG9wZXJhdG9yPT0oY29uc3QgR3N0TWFwcGVkQnVmZmVyJiwgY29uc3QgR3N0QnVmZmVyKik7Cisg
ICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBHc3RCdWZmZXIqIGEsIGNvbnN0IEdzdE1h
cHBlZEJ1ZmZlciYgYikgeyByZXR1cm4gb3BlcmF0b3I9PShiLCBhKTsgfQorCiAgICAgR3N0QnVm
ZmVyKiBtX2J1ZmZlciB7IG51bGxwdHIgfTsKICAgICBHc3RNYXBJbmZvIG1faW5mbzsKICAgICBi
b29sIG1faXNWYWxpZCB7IGZhbHNlIH07CiB9OwogCitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IEdzdE1hcHBlZEJ1ZmZlciYgYSwgY29uc3QgR3N0TWFwcGVkQnVmZmVyJiBiKQoreworICAg
IHJldHVybiBhLnNpemUoKSA9PSBiLnNpemUoKSAmJiAhZ3N0X2J1ZmZlcl9tZW1jbXAoYS5tX2J1
ZmZlciwgMCwgYi5kYXRhKCksIGIuc2l6ZSgpKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBHc3RNYXBwZWRCdWZmZXImIGEsIGNvbnN0IEdzdEJ1ZmZlciogYikKK3sKKyAgICBH
c3RCdWZmZXIqIG5vbkNvbnN0QiA9IGNvbnN0X2Nhc3Q8R3N0QnVmZmVyKj4oYik7CisgICAgcmV0
dXJuIGEuc2l6ZSgpID09IGdzdF9idWZmZXJfZ2V0X3NpemUobm9uQ29uc3RCKSAmJiAhZ3N0X2J1
ZmZlcl9tZW1jbXAobm9uQ29uc3RCLCAwLCBhLmRhdGEoKSwgYS5zaXplKCkpOworfQorCiBib29s
IGdzdFJlZ2lzdHJ5SGFzRWxlbWVudEZvck1lZGlhVHlwZShHTGlzdCogZWxlbWVudEZhY3Rvcmll
cywgY29uc3QgY2hhciogY2Fwc1N0cmluZyk7CiB2b2lkIGNvbm5lY3RTaW1wbGVCdXNNZXNzYWdl
Q2FsbGJhY2soR3N0RWxlbWVudCAqcGlwZWxpbmUpOwogdm9pZCBkaXNjb25uZWN0U2ltcGxlQnVz
TWVzc2FnZUNhbGxiYWNrKEdzdEVsZW1lbnQgKnBpcGVsaW5lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q2xlYXJLZXlE
ZWNyeXB0b3JHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXgg
OGFlM2E1NjM2MzI5ZjRiZGI4ZmIyNmQxZDk4OGMzMTM3Y2ZlN2ZjYi4uMzNmNjA4OWE1NDk2MGQy
MjU5YTlkMDA3MzRhNTM0NjQ2NTAyOTlhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9XZWJLaXRDbGVhcktleURlY3J5cHRvckdTdHJlYW1lci5jcHAKQEAgLTQ1LDkgKzQ1LDcg
QEAgc3RydWN0IF9XZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUgewogCiBzdGF0aWMg
dm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yRmluYWxpemUoR09iamVjdCopOwogc3Rh
dGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JIYW5kbGVLZXlSZXNwb25z
ZShXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiBzZWxmLCBHc3RFdmVudCopOwot
c3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JTZXR1cENpcGhlcihX
ZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVmZmVyKik7Ci1zdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlciogc2FtcGxl
LCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7Ci1zdGF0
aWMgdm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcihXZWJLaXRN
ZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0Kik7CitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVk
aWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdCosIEdzdEJ1ZmZlciogaXYsIEdzdEJ1ZmZlcioga2V5aWQsIEdzdEJ1ZmZlciogc2FtcGxl
LCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlcyk7CiAKIEdT
VF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2Rl
YnVnX2NhdGVnb3J5KTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtpdF9tZWRpYV9jbGVh
cl9rZXlfZGVjcnlwdF9kZWJ1Z19jYXRlZ29yeQpAQCAtODksOSArODcsNyBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfbWVkaWFfY2xlYXJfa2V5X2RlY3J5cHRfY2xhc3NfaW5pdChXZWJLaXRNZWRpYUNs
ZWFyS2V5RGVjcnlwdAogICAgIFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFz
cyogY2VuY0NsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9DTEFTUyhrbGFzcyk7CiAg
ICAgY2VuY0NsYXNzLT5wcm90ZWN0aW9uU3lzdGVtSWQgPSBXZWJDb3JlOjpHU3RyZWFtZXJFTUVV
dGlsaXRpZXM6OnNfQ2xlYXJLZXlVVUlEOwogICAgIGNlbmNDbGFzcy0+aGFuZGxlS2V5UmVzcG9u
c2UgPSBHU1RfREVCVUdfRlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9ySGFuZGxl
S2V5UmVzcG9uc2UpOwotICAgIGNlbmNDbGFzcy0+c2V0dXBDaXBoZXIgPSBHU1RfREVCVUdfRlVO
Q1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yU2V0dXBDaXBoZXIpOwogICAgIGNlbmND
bGFzcy0+ZGVjcnlwdCA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNy
eXB0b3JEZWNyeXB0KTsKLSAgICBjZW5jQ2xhc3MtPnJlbGVhc2VDaXBoZXIgPSBHU1RfREVCVUdf
RlVOQ1BUUih3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9yUmVsZWFzZUNpcGhlcik7CiAKICAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRNZWRpYUNsZWFy
S2V5RGVjcnlwdFByaXZhdGUpKTsKIH0KQEAgLTEwMiwxMyArOTgsMTcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X21lZGlhX2NsZWFyX2tleV9kZWNyeXB0X2luaXQoV2ViS2l0TWVkaWFDbGVhcktleURl
Y3J5cHQqIHNlbGYKIAogICAgIHNlbGYtPnByaXYgPSBwcml2OwogICAgIG5ldyAocHJpdikgV2Vi
S2l0TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKCk7CisgICAgaWYgKGdjcnlfZXJyb3JfdCBl
cnJvciA9IGdjcnlfY2lwaGVyX29wZW4oJihwcml2LT5oYW5kbGUpLCBHQ1JZX0NJUEhFUl9BRVMx
MjgsIEdDUllfQ0lQSEVSX01PREVfQ1RSLCBHQ1JZX0NJUEhFUl9TRUNVUkUpKSB7CisgICAgICAg
IEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjcmVhdGUgQUVTIDEyOCBDVFIgY2lw
aGVyIGhhbmRsZTogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICAgICAgQVNTRVJUKCFl
cnJvcik7CisgICAgfQogfQogCiBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlw
dG9yRmluYWxpemUoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlE
ZWNyeXB0KiBzZWxmID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQob2JqZWN0KTsKICAgICBXZWJL
aXRNZWRpYUNsZWFyS2V5RGVjcnlwdFByaXZhdGUqIHByaXYgPSBzZWxmLT5wcml2OwotCisgICAg
Z2NyeV9jaXBoZXJfY2xvc2UocHJpdi0+aGFuZGxlKTsKICAgICBwcml2LT5+V2ViS2l0TWVkaWFD
bGVhcktleURlY3J5cHRQcml2YXRlKCk7CiAKICAgICBHU1RfQ0FMTF9QQVJFTlQoR19PQkpFQ1Rf
Q0xBU1MsIGZpbmFsaXplLCAob2JqZWN0KSk7CkBAIC0xNTAsNTggKzE1MCwzNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckhhbmRsZUtleVJlc3BvbnNlKFdl
YktpdE1lZGlhQ29tbW9uRQogICAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvclNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIEdzdEJ1ZmZlcioga2V5SURCdWZmZXIpCitzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckZpbmRBbmRTZXRLZXkoV2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2LCBjb25zdCBXZWJDb3JlOjpHc3RNYXBw
ZWRCdWZmZXImIGtleUlEQnVmZmVyKQogewotICAgIGlmICgha2V5SURCdWZmZXIpIHsKLSAgICAg
ICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZ290IG5vIGtleSBpZCBidWZmZXIiKTsKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIFdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0
UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DS19ERUNSWVBUX0dFVF9QUklWQVRFKFdFQktJ
VF9NRURJQV9DS19ERUNSWVBUKHNlbGYpKTsKLSAgICBnY3J5X2Vycm9yX3QgZXJyb3I7Ci0KICAg
ICBHUmVmUHRyPEdzdEJ1ZmZlcj4ga2V5QnVmZmVyOwotICAgIFdlYkNvcmU6OkdzdE1hcHBlZEJ1
ZmZlciBtYXBwZWRLZXlJZEJ1ZmZlcihrZXlJREJ1ZmZlciwgR1NUX01BUF9SRUFEKTsKLSAgICBp
ZiAoIW1hcHBlZEtleUlkQnVmZmVyKSB7Ci0gICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwg
IkZhaWxlZCB0byBtYXAga2V5IElEIGJ1ZmZlciIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCiAgICAgZm9yIChhdXRvJiBrZXkgOiBwcml2LT5rZXlzKSB7Ci0gICAgICAgIGlmICgh
Z3N0X2J1ZmZlcl9tZW1jbXAoa2V5LmtleUlELmdldCgpLCAwLCBtYXBwZWRLZXlJZEJ1ZmZlci5k
YXRhKCksIG1hcHBlZEtleUlkQnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgaWYgKGtleS5rZXlJ
RC5nZXQoKSA9PSBrZXlJREJ1ZmZlcikgewogICAgICAgICAgICAga2V5QnVmZmVyID0ga2V5Lmtl
eVZhbHVlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAo
IWtleUJ1ZmZlcikgewotICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJGYWlsZWQgdG8g
ZmluZCBhbiBhcHByb3ByaWF0ZSBrZXkgYnVmZmVyIik7CisgICAgICAgIEdTVF9FUlJPUl9PQkpF
Q1QocHJpdiwgIkZhaWxlZCB0byBmaW5kIGFuIGFwcHJvcHJpYXRlIGtleSBidWZmZXIiKTsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGVycm9yID0gZ2NyeV9jaXBoZXJfb3Bl
bigmKHByaXYtPmhhbmRsZSksIEdDUllfQ0lQSEVSX0FFUzEyOCwgR0NSWV9DSVBIRVJfTU9ERV9D
VFIsIEdDUllfQ0lQSEVSX1NFQ1VSRSk7Ci0gICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjcmVhdGUgQUVTIDEyOCBDVFIgY2lwaGVyIGhh
bmRsZTogJXMiLCBncGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICBXZWJDb3JlOjpHc3RNYXBwZWRC
dWZmZXIgbWFwcGVkS2V5VmFsdWVCdWZmZXIoa2V5QnVmZmVyLmdldCgpLCBHU1RfTUFQX1JFQUQp
OworICAgIGlmICghbWFwcGVkS2V5VmFsdWVCdWZmZXIpIHsKKyAgICAgICAgR1NUX0VSUk9SX09C
SkVDVChwcml2LCAiRmFpbGVkIHRvIG1hcCBkZWNyeXB0aW9uIGtleSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCi0gICAgV2ViQ29yZTo6R3N0TWFwcGVkQnVmZmVyIG1hcHBlZEtl
eUJ1ZmZlcihrZXlCdWZmZXIuZ2V0KCksIEdTVF9NQVBfUkVBRCk7Ci0gICAgaWYgKCFtYXBwZWRL
ZXlCdWZmZXIpIHsKLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRmFpbGVkIHRvIG1h
cCBkZWNyeXB0aW9uIGtleSIpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAg
QVNTRVJUKG1hcHBlZEtleUJ1ZmZlci5zaXplKCkgPT0gQ0xFQVJLRVlfU0laRSk7Ci0gICAgZXJy
b3IgPSBnY3J5X2NpcGhlcl9zZXRrZXkocHJpdi0+aGFuZGxlLCBtYXBwZWRLZXlCdWZmZXIuZGF0
YSgpLCBtYXBwZWRLZXlCdWZmZXIuc2l6ZSgpKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAg
R1NUX0VSUk9SX09CSkVDVChzZWxmLCAiZ2NyeV9jaXBoZXJfc2V0a2V5IGZhaWxlZDogJXMiLCBn
cGdfc3RyZXJyb3IoZXJyb3IpKTsKKyAgICBBU1NFUlQobWFwcGVkS2V5VmFsdWVCdWZmZXIuc2l6
ZSgpID09IENMRUFSS0VZX1NJWkUpOworICAgIGlmIChnY3J5X2Vycm9yX3QgZXJyb3IgPSBnY3J5
X2NpcGhlcl9zZXRrZXkocHJpdi0+aGFuZGxlLCBtYXBwZWRLZXlWYWx1ZUJ1ZmZlci5kYXRhKCks
IG1hcHBlZEtleVZhbHVlQnVmZmVyLnNpemUoKSkpIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVD
VChwcml2LCAiZ2NyeV9jaXBoZXJfc2V0a2V5IGZhaWxlZDogJXMiLCBncGdfc3RyZXJyb3IoZXJy
b3IpKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHJldHVybiB0cnVlOwog
fQogCi1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktleURlY3J5cHRvckRlY3J5cHQo
V2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwgR3N0QnVmZmVyKiBpdkJ1
ZmZlciwgR3N0QnVmZmVyKiBidWZmZXIsIHVuc2lnbmVkIHN1YlNhbXBsZUNvdW50LCBHc3RCdWZm
ZXIqIHN1YlNhbXBsZXNCdWZmZXIpCitzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDbGVhcktl
eURlY3J5cHRvckRlY3J5cHQoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2Vs
ZiwgR3N0QnVmZmVyKiBpdkJ1ZmZlciwgR3N0QnVmZmVyKiBrZXlJREJ1ZmZlciwgR3N0QnVmZmVy
KiBidWZmZXIsIHVuc2lnbmVkIHN1YlNhbXBsZUNvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXNC
dWZmZXIpCiB7CiAgICAgLy8gQ2hlY2sgaXZCdWZmZXIgaXNuJ3QgbnVsbC4KICAgICBpZiAoIWl2
QnVmZmVyKSB7CkBAIC0yMzMsNyArMjEyLDEzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRp
YUNsZWFyS2V5RGVjcnlwdG9yRGVjcnlwdChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAK
ICAgICAvLyBDaGVjayBidWZmZXIgaXNuJ3QgbnVsbC4KICAgICBpZiAoIWJ1ZmZlcikgewotICAg
ICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJFcnJvciwgdGhlIGJ1ZmZlciBpcyBudWxsIik7
CisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIk5vIGJ1ZmZlciB0byBkZWNyeXB0Iik7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBXZWJDb3JlOjpHc3RNYXBwZWRC
dWZmZXIgbWFwcGVkS2V5SWRCdWZmZXIoa2V5SURCdWZmZXIsIEdTVF9NQVBfUkVBRCk7CisgICAg
aWYgKCFtYXBwZWRLZXlJZEJ1ZmZlcikgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYs
ICJGYWlsZWQgdG8gbWFwIGtleSBpZCBidWZmZXIiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMjQzLDYgKzIyOCw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNs
ZWFyS2V5RGVjcnlwdG9yRGVjcnlwdChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKKyAgICB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlw
dG9yRmluZEFuZFNldEtleShwcml2LCBtYXBwZWRLZXlJZEJ1ZmZlcik7CisKICAgICB1bnNpZ25l
ZCBwb3NpdGlvbiA9IDA7CiAgICAgdW5zaWduZWQgc2FtcGxlSW5kZXggPSAwOwogCkBAIC0zMDks
MTAgKzI5Niw0IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNsZWFyS2V5RGVjcnlwdG9y
RGVjcnlwdChXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25ECiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKLXN0YXRpYyB2b2lkIHdlYktpdE1lZGlhQ2xlYXJLZXlEZWNyeXB0b3JSZWxlYXNlQ2lwaGVy
KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCi17Ci0gICAgV2ViS2l0
TWVkaWFDbGVhcktleURlY3J5cHRQcml2YXRlKiBwcml2ID0gV0VCS0lUX01FRElBX0NLX0RFQ1JZ
UFRfR0VUX1BSSVZBVEUoV0VCS0lUX01FRElBX0NLX0RFQ1JZUFQoc2VsZikpOwotICAgIGdjcnlf
Y2lwaGVyX2Nsb3NlKHByaXYtPmhhbmRsZSk7Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAK
aW5kZXggMjk3Y2I1ZDc5NDZkYzNhZGQ1M2JkNjRiN2ExZTRmNGM3YThlNDI2NS4uZGQyNjE5ZjFh
NWEyNDc0OWFlZWJiYjcyM2FlNDk2ZDhkY2U4YmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9u
RGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFt
ZXIuY3BwCkBAIC00NSw4ICs0NSw2IEBAIHN0YXRpYyBHc3RDYXBzKiB3ZWJraXRNZWRpYUNvbW1v
bkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3JtQ2FwcyhHc3RCYXNlVHJhbnNmb3JtCiBzdGF0aWMg
R3N0Rmxvd1JldHVybiB3ZWJraXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0VHJhbnNmb3Jt
SW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiwgR3N0QnVmZmVyKik7CiBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFNpbmtFdmVudEhhbmRsZXIoR3N0QmFz
ZVRyYW5zZm9ybSosIEdzdEV2ZW50Kik7CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0RGVmYXVsdFNldHVwQ2lwaGVyKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIqKTsKLXN0YXRpYyB2b2lkIHdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHREZWZhdWx0UmVsZWFzZUNpcGhlcihXZWJLaXRNZWRpYUNv
bW1vbkVuY3J5cHRpb25EZWNyeXB0Kik7CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMod2Vi
a2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfZGVidWdfY2F0ZWdvcnkpOwogI2Rl
ZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21lZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5
cHRfZGVidWdfY2F0ZWdvcnkKQEAgLTcxLDkgKzY5LDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X21l
ZGlhX2NvbW1vbl9lbmNyeXB0aW9uX2RlY3J5cHRfY2xhc3NfaW5pdChXZWJLaXRNZWRpYUNvbW1v
bkUKICAgICBiYXNlVHJhbnNmb3JtQ2xhc3MtPnRyYW5zZm9ybV9pcF9vbl9wYXNzdGhyb3VnaCA9
IEZBTFNFOwogICAgIGJhc2VUcmFuc2Zvcm1DbGFzcy0+c2lua19ldmVudCA9IEdTVF9ERUJVR19G
VU5DUFRSKHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRTaW5rRXZlbnRIYW5kbGVy
KTsKIAotICAgIGtsYXNzLT5zZXR1cENpcGhlciA9IEdTVF9ERUJVR19GVU5DUFRSKHdlYktpdE1l
ZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHREZWZhdWx0U2V0dXBDaXBoZXIpOwotICAgIGtsYXNz
LT5yZWxlYXNlQ2lwaGVyID0gR1NUX0RFQlVHX0ZVTkNQVFIod2ViS2l0TWVkaWFDb21tb25FbmNy
eXB0aW9uRGVjcnlwdERlZmF1bHRSZWxlYXNlQ2lwaGVyKTsKLQogICAgIGdfdHlwZV9jbGFzc19h
ZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRQcml2YXRlKSk7CiB9CiAKQEAgLTI2OSwzNSArMjY0LDMxIEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHdlYmtpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHRUcmFuc2Zvcm1JblBsYWNlKEdz
dEJhc2VUCiAgICAgfQogCiAgICAgdmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZShwcm90
ZWN0aW9uTWV0YS0+aW5mbywgImtpZCIpOwotICAgIEdzdEJ1ZmZlcioga2V5SURCdWZmZXIgPSBu
dWxscHRyOwotICAgIGlmICh2YWx1ZSkKLSAgICAgICAga2V5SURCdWZmZXIgPSBnc3RfdmFsdWVf
Z2V0X2J1ZmZlcih2YWx1ZSk7CiAKLSAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNy
eXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9HRVRfQ0xBU1Moc2Vs
Zik7Ci0gICAgaWYgKCFrbGFzcy0+c2V0dXBDaXBoZXIoc2VsZiwga2V5SURCdWZmZXIpKSB7Ci0g
ICAgICAgIEdTVF9FUlJPUl9PQkpFQ1Qoc2VsZiwgIkZhaWxlZCB0byBjb25maWd1cmUgY2lwaGVy
Iik7CisgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUKHNlbGYsICJG
YWlsZWQgdG8gZ2V0IGtleSBpZCBmb3IgYnVmZmVyIik7CiAgICAgICAgIGdzdF9idWZmZXJfcmVt
b3ZlX21ldGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1ldGEqPihwcm90ZWN0aW9uTWV0
YSkpOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBPUlRFRDsKICAgICB9CisgICAg
R3N0QnVmZmVyKiBrZXlJREJ1ZmZlciA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyKHZhbHVlKTsKIAog
ICAgIHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUocHJvdGVjdGlvbk1ldGEtPmluZm8s
ICJpdiIpOwogICAgIGlmICghdmFsdWUpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxm
LCAiRmFpbGVkIHRvIGdldCBJViBmb3Igc2FtcGxlIik7Ci0gICAgICAgIGtsYXNzLT5yZWxlYXNl
Q2lwaGVyKHNlbGYpOwogICAgICAgICBnc3RfYnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVp
bnRlcnByZXRfY2FzdDxHc3RNZXRhKj4ocHJvdGVjdGlvbk1ldGEpKTsKICAgICAgICAgcmV0dXJu
IEdTVF9GTE9XX05PVF9TVVBQT1JURUQ7CiAgICAgfQogCiAgICAgR3N0QnVmZmVyKiBpdkJ1ZmZl
ciA9IGdzdF92YWx1ZV9nZXRfYnVmZmVyKHZhbHVlKTsKKyAgICBXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0Q2xhc3MqIGtsYXNzID0gV0VCS0lUX01FRElBX0NFTkNfREVDUllQVF9H
RVRfQ0xBU1Moc2VsZik7CisKICAgICBHU1RfVFJBQ0VfT0JKRUNUKHNlbGYsICJkZWNyeXB0aW5n
Iik7Ci0gICAgaWYgKCFrbGFzcy0+ZGVjcnlwdChzZWxmLCBpdkJ1ZmZlciwgYnVmZmVyLCBzdWJT
YW1wbGVDb3VudCwgc3ViU2FtcGxlc0J1ZmZlcikpIHsKKyAgICBpZiAoIWtsYXNzLT5kZWNyeXB0
KHNlbGYsIGl2QnVmZmVyLCBrZXlJREJ1ZmZlciwgYnVmZmVyLCBzdWJTYW1wbGVDb3VudCwgc3Vi
U2FtcGxlc0J1ZmZlcikpIHsKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiRGVjcnlw
dGlvbiBmYWlsZWQiKTsKLSAgICAgICAga2xhc3MtPnJlbGVhc2VDaXBoZXIoc2VsZik7CiAgICAg
ICAgIGdzdF9idWZmZXJfcmVtb3ZlX21ldGEoYnVmZmVyLCByZWludGVycHJldF9jYXN0PEdzdE1l
dGEqPihwcm90ZWN0aW9uTWV0YSkpOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX1NVUFBP
UlRFRDsKICAgICB9CiAKLSAgICBrbGFzcy0+cmVsZWFzZUNpcGhlcihzZWxmKTsKICAgICBnc3Rf
YnVmZmVyX3JlbW92ZV9tZXRhKGJ1ZmZlciwgcmVpbnRlcnByZXRfY2FzdDxHc3RNZXRhKj4ocHJv
dGVjdGlvbk1ldGEpKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CkBAIC0zNTYsMTUgKzM0
Nyw0IEBAIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRNZWRpYUNvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JDaGFuZ2VTdGF0ZShHc3RFCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
Ci1zdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdERlZmF1
bHRTZXR1cENpcGhlcihXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0KiwgR3N0QnVm
ZmVyKikKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotCi1zdGF0aWMgdm9pZCB3ZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0RGVmYXVsdFJlbGVhc2VDaXBoZXIoV2ViS2l0TWVkaWFD
b21tb25FbmNyeXB0aW9uRGVjcnlwdCopCi17Ci19Ci0KICNlbmRpZiAvLyBFTkFCTEUoRU5DUllQ
VEVEX01FRElBKSAmJiBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaAppbmRl
eCAyNjc3OTFhZTNlYjE2Y2QzN2M3ODU5ZWQ2ZGZjN2MyNGFhNDhjYjFjLi4yMjIxMTI1NGViN2Q5
ZWY1NDY2MDU3ZmQ3ZDU0MzQyMTllY2VmMmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNy
eXB0b3JHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuaApA
QCAtNTQsOSArNTQsNyBAQCBzdHJ1Y3QgX1dlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5
cHRDbGFzcyB7CiAKICAgICBjb25zdCBjaGFyKiBwcm90ZWN0aW9uU3lzdGVtSWQ7CiAgICAgZ2Jv
b2xlYW4gKCpoYW5kbGVLZXlSZXNwb25zZSkoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVj
cnlwdCosIEdzdEV2ZW50KiBldmVudCk7Ci0gICAgZ2Jvb2xlYW4gKCpzZXR1cENpcGhlcikoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1ZmZlciopOwotICAgIGdib29s
ZWFuICgqZGVjcnlwdCkoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCosIEdzdEJ1
ZmZlciogaXZCdWZmZXIsIEdzdEJ1ZmZlciogYnVmZmVyLCB1bnNpZ25lZCBzdWJTYW1wbGVzQ291
bnQsIEdzdEJ1ZmZlciogc3ViU2FtcGxlc0J1ZmZlcik7Ci0gICAgdm9pZCAoKnJlbGVhc2VDaXBo
ZXIpKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqKTsKKyAgICBnYm9vbGVhbiAo
KmRlY3J5cHQpKFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqLCBHc3RCdWZmZXIq
IGl2QnVmZmVyLCBHc3RCdWZmZXIqIGtleUlEQnVmZmVyLCBHc3RCdWZmZXIqIGJ1ZmZlciwgdW5z
aWduZWQgc3ViU2FtcGxlc0NvdW50LCBHc3RCdWZmZXIqIHN1YlNhbXBsZXNCdWZmZXIpOwogfTsK
IAogR19FTkRfREVDTFMK
</data>

          </attachment>
      

    </bug>

</bugzilla>