<?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>162908</bug_id>
          
          <creation_ts>2016-10-04 09:14:24 -0700</creation_ts>
          <short_desc>[GStreamer][EME] Add EME support to base private player</short_desc>
          <delta_ts>2016-10-26 01:47:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Local 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>157314</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Enrique Ocaña">eocanha</reporter>
          <assigned_to name="Enrique Ocaña">eocanha</assigned_to>
          <cc>calvaris</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236202</commentid>
    <comment_count>0</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 09:14:24 -0700</bug_when>
    <thetext>Add encryption key management support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236203</commentid>
    <comment_count>1</comment_count>
      <attachid>290605</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 09:18:17 -0700</bug_when>
    <thetext>Created attachment 290605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236205</commentid>
    <comment_count>2</comment_count>
      <attachid>290605</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-04 09:18:48 -0700</bug_when>
    <thetext>Comment on attachment 290605
Patch

Wait until all the patches in 157314 are ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237963</commentid>
    <comment_count>3</comment_count>
      <attachid>290605</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 07:11:36 -0700</bug_when>
    <thetext>Comment on attachment 290605
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:111
&gt; +#if ENABLE(ENCRYPTED_MEDIA_V2)

You can move this to the top of the function. If this is the only thing to do we can even compile the check out of no EME is activated.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:114
&gt; +        gst_element_register(0, &quot;webkitclearkey&quot;, GST_RANK_PRIMARY + 100, WEBKIT_TYPE_MEDIA_CK_DECRYPT);

0 -&gt; nullptr

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:283
&gt; +            gboolean valid = gst_structure_get(structure, &quot;data&quot;, GST_TYPE_BUFFER, &amp;data,
&gt; +                &quot;key-system-id&quot;, G_TYPE_STRING, &amp;keySystemId, nullptr);

According to the gst_structure_get: &quot;For strings and boxed types you will receive a copy which you will need to release with either g_free() or the suitable function for the boxed type.&quot; so it seems we are leaking things here. GRefPtr with outPtr seems the solution.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:290
&gt; +#if ENABLE(ENCRYPTED_MEDIA_V2)

This is useless.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1095
&gt; +        GST_DEBUG(&quot;no event handler for key needed&quot;);

GST_INFO?

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1114
&gt; +    if (!supportsKeySystem(keySystem, emptyString()))
&gt; +        return nullptr;
&gt; +
&gt; +    GST_DEBUG(&quot;creating key session for %s&quot;, keySystem.utf8().data());
&gt; +    return nullptr;

WAT? This log doesn&apos;t make sense if you return null. Actually, nothing on the function makes sense. Even it is the default implementation we should just return nullptr and maybe, only maybe, add a GST_TRACE warning that we are returning null.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1126
&gt; +    GST_DEBUG(&quot;Checking for KeySystem support with %s and type %s&quot;, keySystem.utf8().data(), mimeType.utf8().data());

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:224
&gt; +    CDMSession* m_cdmSession;

Who has ownership of this? Does it make sense to add a smart pointer here? It does not seem to be freed anywhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237966</commentid>
    <comment_count>4</comment_count>
      <attachid>290605</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-08 07:17:07 -0700</bug_when>
    <thetext>Comment on attachment 290605
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:285
&gt; +            if (!valid || !gst_buffer_map(data, &amp;mapInfo, GST_MAP_READ))

UNLIKELY?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239729</commentid>
    <comment_count>5</comment_count>
      <attachid>290605</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-13 02:13:27 -0700</bug_when>
    <thetext>Comment on attachment 290605
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:224
&gt;&gt; +    CDMSession* m_cdmSession;
&gt; 
&gt; Who has ownership of this? Does it make sense to add a smart pointer here? It does not seem to be freed anywhere.

MediaKeySession holds a unique_ptr&lt;CDMSession&gt;. The rest of the classes with access to the CDMSession must live with just a raw pointer to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240768</commentid>
    <comment_count>6</comment_count>
      <attachid>291767</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-16 12:08:28 -0700</bug_when>
    <thetext>Created attachment 291767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1240966</commentid>
    <comment_count>7</comment_count>
      <attachid>291767</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-17 09:08:02 -0700</bug_when>
    <thetext>Comment on attachment 291767
Patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1148
&gt; +    if (!supportsKeySystem(keySystem, emptyString()))
&gt; +        GST_DEBUG(&quot;KeySystem not supported, returning null CDMSession&quot;);
&gt; +    else
&gt; +        GST_TRACE(&quot;KeySystem supported, but returning null CDMSession anyway&quot;);

It doesn&apos;t make sense that this function is here and return null regardless the result of supportsKeySystem. This is wrong. I guess this is supposed to NOT happen because I guess subclasses should override it.

If it&apos;s compulsory to override it and we are fishing or compile errors, ASSERT_NOT_REACHED and return nullptr.

If it is not compulsory to override it and this is still correctly called from somewhere else, then just return nullptr, GST_DEBUG to make clear that we are at the base class returning always null and do not ever call supportsKeySystem.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1161
&gt; +    GST_DEBUG(&quot;Checking for KeySystem support with %s and type %s&quot;, keySystem.utf8().data(), mimeType.utf8().data());

Something similar applies here.

If this is supposed to be compulsory overridden, then ASSERT_NOT_REACHED and return false

If this is supposed to be called sometimes (remember that we are not calling this from createSession anymore), then add a more meaningful comment for ensure that we are at the base class and are returning always false.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242566</commentid>
    <comment_count>8</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-20 13:35:41 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1148
&gt; &gt; +    if (!supportsKeySystem(keySystem, emptyString()))
&gt;
&gt; If it is not compulsory to override it and this is still correctly called
&gt; from somewhere else, then just return nullptr, GST_DEBUG to make clear that
&gt; we are at the base class returning always null and do not ever call
&gt; supportsKeySystem.

supportsKeySystem() can&apos;t be removed. It&apos;s used from MediaPlayerPrivateGStreamer::registerMediaEngine(). It&apos;s part of the group of functions used by MediaPlayer to choose the right MediaPlayerPrivate implementor for each kind of media content.

&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1161
&gt; &gt; +    GST_DEBUG(&quot;Checking for KeySystem support with %s and type %s&quot;, keySystem.utf8().data(), mimeType.utf8().data());
&gt; 
&gt; Something similar applies here.
&gt; 
&gt; If this is supposed to be compulsory overridden, then ASSERT_NOT_REACHED and
&gt; return false

Not the case, it&apos;s not to be overriden.

&gt; If this is supposed to be called sometimes (remember that we are not calling
&gt; this from createSession anymore), then add a more meaningful comment for
&gt; ensure that we are at the base class and are returning always false.

There&apos;s no need to state that the comment comes from the base class. The GStreamer log system is already explicit enough about that, printing the source code file name and line number.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242591</commentid>
    <comment_count>9</comment_count>
      <attachid>292258</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-20 13:58:33 -0700</bug_when>
    <thetext>Created attachment 292258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242790</commentid>
    <comment_count>10</comment_count>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-21 00:51:16 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; supportsKeySystem() can&apos;t be removed. It&apos;s used from
&gt; MediaPlayerPrivateGStreamer::registerMediaEngine(). It&apos;s part of the group
&gt; of functions used by MediaPlayer to choose the right MediaPlayerPrivate
&gt; implementor for each kind of media content.

Sorry for not being clearer here. I didn&apos;t mean to remove the function but the function call as you did in your next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242796</commentid>
    <comment_count>11</comment_count>
      <attachid>292258</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2016-10-21 00:55:10 -0700</bug_when>
    <thetext>Comment on attachment 292258
Patch

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

For me this can be fixed at landing time unless Žan has something else to say.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1145
&gt; +    GST_DEBUG(&quot;Requested CDMSession for KeySystem %s: Returning null.&quot;, keySystem.utf8().data());

IMHO, already returning null is a weird enough situation so that we raise the debug level at least to GST_INFO.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:1158
&gt; +    GST_DEBUG(&quot;Checking for KeySystem support with %s and type %s: false.&quot;, keySystem.utf8().data(), mimeType.utf8().data());

Ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:125
&gt; +    void needKey(RefPtr&lt;Uint8Array&gt; initData);

Remove the parameter name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243101</commentid>
    <comment_count>12</comment_count>
      <attachid>292412</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-21 14:28:52 -0700</bug_when>
    <thetext>Created attachment 292412
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244679</commentid>
    <comment_count>13</comment_count>
      <attachid>292897</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:22:15 -0700</bug_when>
    <thetext>Created attachment 292897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244716</commentid>
    <comment_count>14</comment_count>
      <attachid>292897</attachid>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:46:58 -0700</bug_when>
    <thetext>Comment on attachment 292897
Patch

Clearing flags on attachment: 292897

Committed r207884: &lt;http://trac.webkit.org/changeset/207884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244717</commentid>
    <comment_count>15</comment_count>
    <who name="Enrique Ocaña">eocanha</who>
    <bug_when>2016-10-26 01:47:07 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290605</attachid>
            <date>2016-10-04 09:18:17 -0700</date>
            <delta_ts>2016-10-16 12:08:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162908-20161004161505.patch</filename>
            <type>text/plain</type>
            <size>12334</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2NTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmE5Nzc1YmNjYTNmMTQ0
Nzk1NzUxZWNiOGFmOWRlM2Q2ZTNlNmJjYy4uYWM3YzE2ZmMyNmNmYTQ5NjY0MmFjZDdjNDc3Njlm
YWUyNGVkN2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBBZGQgRU1FIHN1cHBvcnQgdG8gYmFzZSBwcml2YXRlIHBsYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVuY3J5cHRp
b24ga2V5IG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGF1dGhv
cmVkIGJ5IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpo
YW5kbGVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpkaXNwYXRjaERl
Y3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U3RyZWFtVm9sdW1l
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBpcGVsaW5lKToKKworMjAxNi0xMC0wNCAg
RW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAg
IFtHU3RyZWFtZXJdW01TRV0gV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIgcmVmYWN0b3JpbmcK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggYjJmZWRiMGI2N2RiZmQ0ZjMyZmRkZjI1OTEyZWZjNWMyNWRkZTVjZC4uOTMxZDcw
YzBkMzMzZDc0YTdmOGY0N2ZlOTllNmJmYjQzMTJiODk0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMyw3ICszLDggQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTUsIDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTg3
LDYgKzg4LDE0IEBACiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyNpbmNsdWRlICJVVUlELmgiCisjaW5jbHVkZSAiV2ViS2l0
Q2xlYXJLZXlEZWNyeXB0b3JHU3RyZWFtZXIuaCIKKyNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGlu
ZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL1R5cGVkQXJyYXlJbmxpbmVzLmg+CisjaW5jbHVkZSA8
cnVudGltZS9VaW50OEFycmF5Lmg+CisjZW5kaWYKKwogR1NUX0RFQlVHX0NBVEVHT1JZKHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgd2Via2l0X21l
ZGlhX3BsYXllcl9kZWJ1ZwogCkBAIC05NCw2ICsxMDMsMTggQEAgdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCit2b2lkIHJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVy
RWxlbWVudHMoKQoreworICAgIGlmICghd2Via2l0R3N0Q2hlY2tWZXJzaW9uKDEsIDYsIDEpKQor
ICAgICAgICByZXR1cm47CisKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIEdS
ZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IGNsZWFyS2V5RGVjcnlwdG9yRmFjdG9yeSA9IGdzdF9l
bGVtZW50X2ZhY3RvcnlfZmluZCgid2Via2l0Y2xlYXJrZXkiKTsKKyAgICBpZiAoIWNsZWFyS2V5
RGVjcnlwdG9yRmFjdG9yeSkKKyAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIoMCwgIndlYmtp
dGNsZWFya2V5IiwgR1NUX1JBTktfUFJJTUFSWSArIDEwMCwgV0VCS0lUX1RZUEVfTUVESUFfQ0tf
REVDUllQVCk7CisjZW5kaWYKK30KKwogc3RhdGljIGludCBncmVhdGVzdENvbW1vbkRpdmlzb3Io
aW50IGEsIGludCBiKQogewogICAgIHdoaWxlIChiKSB7CkBAIC0yMTcsMzMgKzIzOCw2NiBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVsaW5lKEdzdEVsZW1l
bnQqIHBpcGVsaW5lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Omhh
bmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CisgICAgVU5VU0VEX1BBUkFN
KG1lc3NhZ2UpOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCi0gICAgaWYgKEdTVF9NRVNTQUdFX1RZ
UEUobWVzc2FnZSkgIT0gR1NUX01FU1NBR0VfTkVFRF9DT05URVhUKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBjb25zdCBnY2hhciogY29udGV4dFR5cGU7Ci0gICAgZ3N0X21lc3NhZ2Vf
cGFyc2VfY29udGV4dF90eXBlKG1lc3NhZ2UsICZjb250ZXh0VHlwZSk7Ci0KLSAgICBpZiAoIWVu
c3VyZUdzdEdMQ29udGV4dCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKEdTVF9N
RVNTQUdFX1RZUEUobWVzc2FnZSkgPT0gR1NUX01FU1NBR0VfTkVFRF9DT05URVhUKSB7CisgICAg
ICAgIGNvbnN0IGdjaGFyKiBjb250ZXh0VHlwZTsKKyAgICAgICAgZ3N0X21lc3NhZ2VfcGFyc2Vf
Y29udGV4dF90eXBlKG1lc3NhZ2UsICZjb250ZXh0VHlwZSk7CisKKyAgICAgICAgaWYgKCFlbnN1
cmVHc3RHTENvbnRleHQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAoIWdfc3RyY21wMChjb250ZXh0VHlwZSwgR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFKSkg
eworICAgICAgICAgICAgR1JlZlB0cjxHc3RDb250ZXh0PiBkaXNwbGF5Q29udGV4dCA9IGFkb3B0
R1JlZihnc3RfY29udGV4dF9uZXcoR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFLCBUUlVFKSk7
CisgICAgICAgICAgICBnc3RfY29udGV4dF9zZXRfZ2xfZGlzcGxheShkaXNwbGF5Q29udGV4dC5n
ZXQoKSwgbV9nbERpc3BsYXkuZ2V0KCkpOworICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc2V0X2Nv
bnRleHQoR1NUX0VMRU1FTlQobWVzc2FnZS0+c3JjKSwgZGlzcGxheUNvbnRleHQuZ2V0KCkpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KIAotICAgIGlmICghZ19zdHJjbXAw
KGNvbnRleHRUeXBlLCBHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUpKSB7Ci0gICAgICAgIEdS
ZWZQdHI8R3N0Q29udGV4dD4gZGlzcGxheUNvbnRleHQgPSBhZG9wdEdSZWYoZ3N0X2NvbnRleHRf
bmV3KEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSwgVFJVRSkpOwotICAgICAgICBnc3RfY29u
dGV4dF9zZXRfZ2xfZGlzcGxheShkaXNwbGF5Q29udGV4dC5nZXQoKSwgbV9nbERpc3BsYXkuZ2V0
KCkpOwotICAgICAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dChHU1RfRUxFTUVOVChtZXNzYWdl
LT5zcmMpLCBkaXNwbGF5Q29udGV4dC5nZXQoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICBpZiAoIWdfc3RyY21wMChjb250ZXh0VHlwZSwgImdzdC5nbC5hcHBfY29udGV4dCIpKSB7
CisgICAgICAgICAgICBHUmVmUHRyPEdzdENvbnRleHQ+IGFwcENvbnRleHQgPSBhZG9wdEdSZWYo
Z3N0X2NvbnRleHRfbmV3KCJnc3QuZ2wuYXBwX2NvbnRleHQiLCBUUlVFKSk7CisgICAgICAgICAg
ICBHc3RTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVy
ZShhcHBDb250ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVj
dHVyZSwgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05URVhULCBtX2dsQ29udGV4dC5nZXQoKSwg
bnVsbHB0cik7CisgICAgICAgICAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dChHU1RfRUxFTUVO
VChtZXNzYWdlLT5zcmMpLCBhcHBDb250ZXh0LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgfQorI2VuZGlmIC8vIFVTRShHU1RSRUFNRVJfR0wpCiAKLSAg
ICBpZiAoIWdfc3RyY21wMChjb250ZXh0VHlwZSwgImdzdC5nbC5hcHBfY29udGV4dCIpKSB7Ci0g
ICAgICAgIEdSZWZQdHI8R3N0Q29udGV4dD4gYXBwQ29udGV4dCA9IGFkb3B0R1JlZihnc3RfY29u
dGV4dF9uZXcoImdzdC5nbC5hcHBfY29udGV4dCIsIFRSVUUpKTsKLSAgICAgICAgR3N0U3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUoYXBwQ29udGV4
dC5nZXQoKSk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0KHN0cnVjdHVyZSwgImNvbnRleHQi
LCBHU1RfR0xfVFlQRV9DT05URVhULCBtX2dsQ29udGV4dC5nZXQoKSwgbnVsbHB0cik7Ci0gICAg
ICAgIGdzdF9lbGVtZW50X3NldF9jb250ZXh0KEdTVF9FTEVNRU5UKG1lc3NhZ2UtPnNyYyksIGFw
cENvbnRleHQuZ2V0KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CisjaWYgRU5BQkxF
KEVOQ1JZUFRFRF9NRURJQV9WMikKKyAgICBpZiAoR1NUX01FU1NBR0VfVFlQRShtZXNzYWdlKSA9
PSBHU1RfTUVTU0FHRV9FTEVNRU5UKSB7CisgICAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gZ3N0X21lc3NhZ2VfZ2V0X3N0cnVjdHVyZShtZXNzYWdlKTsKKyAgICAgICAgaWYg
KGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUoc3RydWN0dXJlLCAiZHJtLWtleS1uZWVkZWQiKSkgewor
ICAgICAgICAgICAgR1NUX0RFQlVHKCJoYW5kbGluZyBkcm0ta2V5LW5lZWRlZCBtZXNzYWdlIik7
CisKKyAgICAgICAgICAgIC8vIEhlcmUgd2UgcmVjZWl2ZSB0aGUgRFJNIGluaXQgZGF0YSBmcm9t
IHRoZSBwaXBlbGluZTogd2Ugd2lsbCBlbWl0CisgICAgICAgICAgICAvLyB0aGUgbmVlZGtleSBl
dmVudCB3aXRoIHRoYXQgZGF0YSBhbmQgdGhlIGJyb3dzZXIgbWlnaHQgY3JlYXRlIGEKKyAgICAg
ICAgICAgIC8vIENETVNlc3Npb24gZnJvbSB0aGlzIGV2ZW50IGhhbmRsZXIuIElmIHN1Y2ggYSBz
ZXNzaW9uIHdhcyBjcmVhdGVkCisgICAgICAgICAgICAvLyBXZSB3aWxsIGVtaXQgdGhlIG1lc3Nh
Z2UgZXZlbnQgZnJvbSB0aGUgc2Vzc2lvbiB0byBwcm92aWRlIHRoZQorICAgICAgICAgICAgLy8g
RFJNIGNoYWxsZW5nZSB0byB0aGUgYnJvd3NlciBhbmQgd2FpdCBmb3IgYW4gdXBkYXRlLiBJZiBv
biB0aGUKKyAgICAgICAgICAgIC8vIGNvbnRyYXJ5IG5vIHNlc3Npb24gd2FzIGNyZWF0ZWQgd2Ug
d29uJ3Qgd2FpdCBhbmQgbGV0IHRoZSBwaXBlbGluZQorICAgICAgICAgICAgLy8gZXJyb3Igb3V0
IGJ5IGl0c2VsZi4KKyAgICAgICAgICAgIEdzdEJ1ZmZlciogZGF0YTsKKyAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGtleVN5c3RlbUlkOworICAgICAgICAgICAgZ2Jvb2xlYW4gdmFsaWQgPSBnc3Rf
c3RydWN0dXJlX2dldChzdHJ1Y3R1cmUsICJkYXRhIiwgR1NUX1RZUEVfQlVGRkVSLCAmZGF0YSwK
KyAgICAgICAgICAgICAgICAia2V5LXN5c3RlbS1pZCIsIEdfVFlQRV9TVFJJTkcsICZrZXlTeXN0
ZW1JZCwgbnVsbHB0cik7CisgICAgICAgICAgICBHc3RNYXBJbmZvIG1hcEluZm87CisgICAgICAg
ICAgICBpZiAoIXZhbGlkIHx8ICFnc3RfYnVmZmVyX21hcChkYXRhLCAmbWFwSW5mbywgR1NUX01B
UF9SRUFEKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEdT
VF9ERUJVRygic2NoZWR1bGluZyBrZXlOZWVkZWQgZXZlbnQiKTsKKyAgICAgICAgICAgIC8vIEZJ
WE1FOiBQcm92aWRlIGEgc29tZWhvdyB2YWxpZCBzZXNzaW9uSWQuCisjaWYgRU5BQkxFKEVOQ1JZ
UFRFRF9NRURJQV9WMikKKyAgICAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9
IFVpbnQ4QXJyYXk6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIg
Kj4obWFwSW5mby5kYXRhKSwgbWFwSW5mby5zaXplKTsKKyAgICAgICAgICAgIG5lZWRLZXkoaW5p
dERhdGEpOwogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7Ci0jZW5kaWYgLy8gVVNF
KEdTVFJFQU1FUl9HTCkKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlm
CisgICAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwKGRhdGEsICZtYXBJbmZvKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShFTkNS
WVBURURfTUVESUFfVjIpCiAKICAgICByZXR1cm4gZmFsc2U7CiB9CkBAIC0xMDM0LDYgKzEwODgs
NTIgQEAgdW5zaWduZWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6dmlkZW9EZWNv
ZGVkQnl0ZUNvdW50KCkgY29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBv
c2l0aW9uKTsKIH0KIAorI2lmIEVOQUJMRShFTkNSWVBURURfTUVESUFfVjIpCit2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6Om5lZWRLZXkoUmVmUHRyPFVpbnQ4QXJyYXk+IGlu
aXREYXRhKQoreworICAgIGlmICghbV9wbGF5ZXItPmtleU5lZWRlZChpbml0RGF0YS5nZXQoKSkp
CisgICAgICAgIEdTVF9ERUJVRygibm8gZXZlbnQgaGFuZGxlciBmb3Iga2V5IG5lZWRlZCIpOwor
fQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24o
Q0RNU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBHU1RfREVCVUcoInNldHRpbmcgQ0RNIHNlc3Np
b24gdG8gJXAiLCBzZXNzaW9uKTsKKyAgICBtX2NkbVNlc3Npb24gPSBzZXNzaW9uOworfQorCit2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmtleUFkZGVkKCkKK3sKK30KKwor
c3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmNyZWF0ZVNlc3Npb24oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIENETVNlc3Npb25DbGll
bnQqIGNsaWVudCkKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgZW1w
dHlTdHJpbmcoKSkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgR1NUX0RFQlVHKCJj
cmVhdGluZyBrZXkgc2Vzc2lvbiBmb3IgJXMiLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSk7Cisg
ICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZTo6ZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdzdEJ1ZmZlciogYnVmZmVyKQoreworICAgIGdz
dF9lbGVtZW50X3NlbmRfZXZlbnQobV9waXBlbGluZS5nZXQoKSwgZ3N0X2V2ZW50X25ld19jdXN0
b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwKKyAgICAgICAgZ3N0X3N0cnVjdHVy
ZV9uZXcoImRybS1jaXBoZXIiLCAia2V5IiwgR1NUX1RZUEVfQlVGRkVSLCBidWZmZXIsIG51bGxw
dHIpKSk7Cit9CisjZW5kaWYKKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNl
OjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5n
JiBtaW1lVHlwZSkKK3sKKyAgICBHU1RfREVCVUcoIkNoZWNraW5nIGZvciBLZXlTeXN0ZW0gc3Vw
cG9ydCB3aXRoICVzIGFuZCB0eXBlICVzIiwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCksIG1pbWVU
eXBlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRpYVBsYXll
cjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmV4dGVuZGVk
U3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMsIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0KQoreworICAgIFVOVVNFRF9QQVJB
TShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAKICNlbmRpZiAvLyBV
U0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggMzZiZDhhNTY0NWIxMTYzYjY3NTE2M2EyZTZlOWZkM2I1NDQyM2Nh
Yi4uOTdhMDQwYzdkYjkwNGExM2IzMGZiZTFhY2M2YzZmNzgyNzlkMjliOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0yLDcgKzIs
OCBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIElnYWxpYSBTLkwKKyAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCwgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqCiAgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtNTMsNiArNTQsOCBAQCBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNsYXNzIEludFNpemU7
CiBjbGFzcyBJbnRSZWN0OwogCit2b2lkIHJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVudHMo
KTsKKwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZSA6IHB1YmxpYyBNZWRp
YVBsYXllclByaXZhdGVJbnRlcmZhY2UKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1NfVEhS
RUFERUQpIHx8IChVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpKQogICAgICwgcHVibGljIFBsYXRmb3JtTGF5ZXIKQEAgLTExNiwxMiArMTE5LDIzIEBA
IHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShFTkNSWVBURURf
TUVESUFfVjIpCisgICAgdm9pZCBuZWVkS2V5KFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSk7
CisgICAgdm9pZCBzZXRDRE1TZXNzaW9uKENETVNlc3Npb24qKTsKKyAgICB2b2lkIGtleUFkZGVk
KCk7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqKTsK
KyNlbmRpZgorCisgICAgc3RhdGljIGJvb2wgc3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5n
JiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYgbWltZVR5cGUpOworICAgIHN0YXRpYyBNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIGV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5l
U3VwcG9ydFBhcmFtZXRlcnMmLCBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlKTsKKwogI2lmIFVT
RShHU1RSRUFNRVJfR0wpCiAgICAgYm9vbCBjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1
cmUoR3JhcGhpY3NDb250ZXh0M0QqLCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEZW51bSwgR0MzRGlu
dCwgR0MzRGVudW0sIEdDM0RlbnVtLCBHQzNEZW51bSwgYm9vbCwgYm9vbCkgb3ZlcnJpZGU7CiAg
ICAgTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2VGb3JDdXJyZW50VGltZSgpIG92ZXJyaWRlOwog
I2VuZGlmCiAKICAgICB2b2lkIHNldFZpZGVvU291cmNlT3JpZW50YXRpb24oY29uc3QgSW1hZ2VP
cmllbnRhdGlvbiYpOworICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lKCkgY29uc3QgeyByZXR1cm4g
bV9waXBlbGluZS5nZXQoKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyQmFzZShNZWRpYVBsYXllciopOwpAQCAtMTc0LDcgKzE4OCw3IEBAIHByb3RlY3Rl
ZDoKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fdmlkZW9TaW5rOwogICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gbV9mcHNTaW5rOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIG1fcmVhZHlT
dGF0ZTsKLSAgICBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRlOworICAg
IG11dGFibGUgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBtX25ldHdvcmtTdGF0ZTsKICAgICBJ
bnRTaXplIG1fc2l6ZTsKICAgICBtdXRhYmxlIEdNdXRleCBtX3NhbXBsZU11dGV4OwogICAgIEdS
ZWZQdHI8R3N0U2FtcGxlPiBtX3NhbXBsZTsKQEAgLTIwNSw3ICsyMTksMTIgQEAgcHJvdGVjdGVk
OgogI2VuZGlmCiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fdmlkZW9Tb3VyY2VPcmllbnRhdGlv
bjsKKyNpZiBFTkFCTEUoRU5DUllQVEVEX01FRElBX1YyKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxD
RE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENETVNlc3Npb25DbGllbnQq
KTsKKyAgICBDRE1TZXNzaW9uKiBtX2NkbVNlc3Npb247CisjZW5kaWYKIH07CisKIH0KIAogI2Vu
ZGlmIC8vIFVTRShHU1RSRUFNRVIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291767</attachid>
            <date>2016-10-16 12:08:28 -0700</date>
            <delta_ts>2016-10-20 13:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162908-20161016190456.patch</filename>
            <type>text/plain</type>
            <size>10526</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU3ZGQzYTYxNTdlZGFh
OWI3Mzc3ZDljZDAwZDdiNzc1ZjA2MTFmOC4uNGM0NjFiYTlhOThjZjU4NjBhZGI2YWNkZjgxYTI5
OTNmZGExOTkxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBBZGQgRU1FIHN1cHBvcnQgdG8gYmFzZSBwcml2YXRlIHBsYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVuY3J5cHRp
b24ga2V5IG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGF1dGhv
cmVkIGJ5IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpo
YW5kbGVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpkaXNwYXRjaERl
Y3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U3RyZWFtVm9sdW1l
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBpcGVsaW5lKToKKworMjAxNi0xMC0wNCAg
RW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAg
IFtHU3RyZWFtZXJdW01TRV0gV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIgcmVmYWN0b3JpbmcK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggNzg3MmU2NTBlNDlkZmE3Njg3MTJlOWEzMzMyNGNkMThlZDBjY2NiZC4uNmU1YzRj
ZTJlYjc0MzM2ZGMyMjEyNjk4YzYyNjMyODAyYWM2N2QzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMyw3ICszLDggQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTUsIDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkw
LDYgKzkxLDE0IEBACiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIldl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2VuZGlmCisKIEdTVF9ERUJVR19DQVRFR09SWSh3
ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcKIApAQCAtOTcsNiArMTA2LDE4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCByZWdpc3RlcldlYktpdEdTdHJl
YW1lckVsZW1lbnRzKCkKK3sKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAg
ICBpZiAoIXdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCA2LCAxKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gY2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRjbGVhcmtleSIpOworICAgIGlmICgh
Y2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5KQorICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3Rlcihu
dWxscHRyLCAid2Via2l0Y2xlYXJrZXkiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLCBXRUJLSVRf
VFlQRV9NRURJQV9DS19ERUNSWVBUKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW50IGdyZWF0ZXN0
Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiB7CiAgICAgd2hpbGUgKGIpIHsKQEAgLTIyMCw2
ICsyNDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVs
aW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CisgICAg
VU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgaWYgKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgIT0gR1NUX01FU1NBR0VfTkVFRF9DT05URVhUKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzcsNiArMjU5LDM3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6aGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9H
TCkKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChHU1RfTUVT
U0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpIHsKKyAgICAgICAgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1l
c3NhZ2UpOworICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJk
cm0ta2V5LW5lZWRlZCIpKSB7CisgICAgICAgICAgICBHU1RfREVCVUcoImhhbmRsaW5nIGRybS1r
ZXktbmVlZGVkIG1lc3NhZ2UiKTsKKworICAgICAgICAgICAgLy8gSGVyZSB3ZSByZWNlaXZlIHRo
ZSBEUk0gaW5pdCBkYXRhIGZyb20gdGhlIHBpcGVsaW5lOiB3ZSB3aWxsIGVtaXQKKyAgICAgICAg
ICAgIC8vIHRoZSBuZWVka2V5IGV2ZW50IHdpdGggdGhhdCBkYXRhIGFuZCB0aGUgYnJvd3NlciBt
aWdodCBjcmVhdGUgYQorICAgICAgICAgICAgLy8gQ0RNU2Vzc2lvbiBmcm9tIHRoaXMgZXZlbnQg
aGFuZGxlci4gSWYgc3VjaCBhIHNlc3Npb24gd2FzIGNyZWF0ZWQKKyAgICAgICAgICAgIC8vIFdl
IHdpbGwgZW1pdCB0aGUgbWVzc2FnZSBldmVudCBmcm9tIHRoZSBzZXNzaW9uIHRvIHByb3ZpZGUg
dGhlCisgICAgICAgICAgICAvLyBEUk0gY2hhbGxlbmdlIHRvIHRoZSBicm93c2VyIGFuZCB3YWl0
IGZvciBhbiB1cGRhdGUuIElmIG9uIHRoZQorICAgICAgICAgICAgLy8gY29udHJhcnkgbm8gc2Vz
c2lvbiB3YXMgY3JlYXRlZCB3ZSB3b24ndCB3YWl0IGFuZCBsZXQgdGhlIHBpcGVsaW5lCisgICAg
ICAgICAgICAvLyBlcnJvciBvdXQgYnkgaXRzZWxmLgorICAgICAgICAgICAgR1JlZlB0cjxHc3RC
dWZmZXI+IGRhdGE7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBrZXlTeXN0ZW1J
ZDsKKyAgICAgICAgICAgIGdib29sZWFuIHZhbGlkID0gZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0
dXJlLCAiZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgJmRhdGEub3V0UHRyKCksCisgICAgICAgICAg
ICAgICAgImtleS1zeXN0ZW0taWQiLCBHX1RZUEVfU1RSSU5HLCAma2V5U3lzdGVtSWQub3V0UHRy
KCksIG51bGxwdHIpOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJbmZvOworICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCF2YWxpZCB8fCAhZ3N0X2J1ZmZlcl9tYXAoZGF0YS5nZXQoKSwgJm1h
cEluZm8sIEdTVF9NQVBfUkVBRCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGtleU5lZWRlZCBldmVudCIpOworICAg
ICAgICAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzb21laG93IHZhbGlkIHNlc3Npb25JZC4KKyAg
ICAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4obWFwSW5mby5kYXRhKSwg
bWFwSW5mby5zaXplKTsKKyAgICAgICAgICAgIG5lZWRLZXkoaW5pdERhdGEpOworICAgICAgICAg
ICAgZ3N0X2J1ZmZlcl91bm1hcChkYXRhLmdldCgpLCAmbWFwSW5mbyk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA3MCw2ICsxMTIz
LDUyIEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZpZGVvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
b3NpdGlvbik7CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmVlZEtleShSZWZQdHI8VWludDhBcnJh
eT4gaW5pdERhdGEpCit7CisgICAgaWYgKCFtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhLmdl
dCgpKSkKKyAgICAgICAgR1NUX0lORk8oIm5vIGV2ZW50IGhhbmRsZXIgZm9yIGtleSBuZWVkZWQi
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRDRE1TZXNz
aW9uKENETVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgR1NUX0RFQlVHKCJzZXR0aW5nIENETSBz
ZXNzaW9uIHRvICVwIiwgc2Vzc2lvbik7CisgICAgbV9jZG1TZXNzaW9uID0gc2Vzc2lvbjsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjprZXlBZGRlZCgpCit7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDRE1TZXNzaW9u
Q2xpZW50KikKK3sKKyAgICBpZiAoIXN1cHBvcnRzS2V5U3lzdGVtKGtleVN5c3RlbSwgZW1wdHlT
dHJpbmcoKSkpCisgICAgICAgIEdTVF9ERUJVRygiS2V5U3lzdGVtIG5vdCBzdXBwb3J0ZWQsIHJl
dHVybmluZyBudWxsIENETVNlc3Npb24iKTsKKyAgICBlbHNlCisgICAgICAgIEdTVF9UUkFDRSgi
S2V5U3lzdGVtIHN1cHBvcnRlZCwgYnV0IHJldHVybmluZyBudWxsIENETVNlc3Npb24gYW55d2F5
Iik7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6ZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdzdEJ1ZmZlciogYnVmZmVyKQorewor
ICAgIGdzdF9lbGVtZW50X3NlbmRfZXZlbnQobV9waXBlbGluZS5nZXQoKSwgZ3N0X2V2ZW50X25l
d19jdXN0b20oR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQiwKKyAgICAgICAgZ3N0X3N0
cnVjdHVyZV9uZXcoImRybS1jaXBoZXIiLCAia2V5IiwgR1NUX1RZUEVfQlVGRkVSLCBidWZmZXIs
IG51bGxwdHIpKSk7Cit9CisjZW5kaWYKKworYm9vbCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpzdXBwb3J0c0tleVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBHU1RfREVCVUcoIkNoZWNraW5nIGZvciBLZXlTeXN0
ZW0gc3VwcG9ydCB3aXRoICVzIGFuZCB0eXBlICVzIiwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCks
IG1pbWVUeXBlLnV0ZjgoKS5kYXRhKCkpOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRp
YVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmV4
dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBh
cmFtZXRlcnMsIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0KQoreworICAgIFVOVVNF
RF9QQVJBTShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAKICNlbmRp
ZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggMjllNGRlYzZhNTA4Yzc4NTE5NDBkZTUxNjJmOTc1ZWY4
NDVlNjliZC4uNjg0YTAzNTVjZDI2NzBkZmIyOWIxZTY5N2JiMTlhNGQ4ZTk3NWIyMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0y
LDcgKzIsOCBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBh
dG9rZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIElnYWxpYSBTLkwKKyAqIENv
cHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCisgKiBDb3B5cmln
aHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjsKIAordm9pZCByZWdpc3RlcldlYktpdEdT
dHJlYW1lckVsZW1lbnRzKCk7CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTX1RIUkVBREVEKSB8fCAoVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybUxheWVyCkBAIC0x
MTgsMTIgKzEyMSwyMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIG5lZWRLZXkoUmVmUHRyPFVp
bnQ4QXJyYXk+IGluaXREYXRhKTsKKyAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiop
OworICAgIHZvaWQga2V5QWRkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNyeXB0
aW9uS2V5KEdzdEJ1ZmZlciopOworI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tl
eVN5c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7
CisgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5
cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYsIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUpOworCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1Rl
eHR1cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmpl
Y3QsIEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29s
LCBib29sKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJl
bnRUaW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmll
bnRhdGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9uJik7CisgICAgR3N0RWxlbWVudCogcGlwZWxp
bmUoKSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKICAg
ICBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKik7CkBAIC0xODMs
NyArMTk3LDcgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV92aWRlb1Np
bms7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1Npbms7CiAgICAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUg
bV9uZXR3b3JrU3RhdGU7CisgICAgbXV0YWJsZSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1f
bmV0d29ya1N0YXRlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIG11dGFibGUgR011dGV4IG1f
c2FtcGxlTXV0ZXg7CiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwpAQCAtMjE0LDEx
ICsyMjgsMTUgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1f
dmlkZW9Tb3VyY2VPcmllbnRhdGlvbjsKLQorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01F
RElBKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0
IFN0cmluZyYsIENETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uKiBtX2NkbVNlc3Np
b247CisjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxW
aWRlb1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogI2VuZGlm
CiB9OworCiB9CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292258</attachid>
            <date>2016-10-20 13:58:33 -0700</date>
            <delta_ts>2016-10-21 14:28:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162908-20161020205454.patch</filename>
            <type>text/plain</type>
            <size>10411</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2Yzk5ZTUxZTRlOTFk
NTcxNjdkMjNjMmE4NmZkNTBiZDg0NDczMy4uZjRkODNjNjY5MTVhMzZhZjMxMWFmNjk0ODVlZmY0
NTQzODY0ZTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBBZGQgRU1FIHN1cHBvcnQgdG8gYmFzZSBwcml2YXRlIHBsYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVuY3J5cHRp
b24ga2V5IG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGF1dGhv
cmVkIGJ5IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpo
YW5kbGVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpkaXNwYXRjaERl
Y3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U3RyZWFtVm9sdW1l
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBpcGVsaW5lKToKKworMjAxNi0xMC0wNCAg
RW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAg
IFtHU3RyZWFtZXJdW01TRV0gV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIgcmVmYWN0b3JpbmcK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggNzg3MmU2NTBlNDlkZmE3Njg3MTJlOWEzMzMyNGNkMThlZDBjY2NiZC4uODdmZTQ5
YTA2ZTFkYmE5Nzk2NTdlYjNjMTM0MTIxYmYzZjE2ZGZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMyw3ICszLDggQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTUsIDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkw
LDYgKzkxLDE0IEBACiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIldl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2VuZGlmCisKIEdTVF9ERUJVR19DQVRFR09SWSh3
ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcKIApAQCAtOTcsNiArMTA2LDE4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCByZWdpc3RlcldlYktpdEdTdHJl
YW1lckVsZW1lbnRzKCkKK3sKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAg
ICBpZiAoIXdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCA2LCAxKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gY2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRjbGVhcmtleSIpOworICAgIGlmICgh
Y2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5KQorICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3Rlcihu
dWxscHRyLCAid2Via2l0Y2xlYXJrZXkiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLCBXRUJLSVRf
VFlQRV9NRURJQV9DS19ERUNSWVBUKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW50IGdyZWF0ZXN0
Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiB7CiAgICAgd2hpbGUgKGIpIHsKQEAgLTIyMCw2
ICsyNDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVs
aW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CisgICAg
VU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgaWYgKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgIT0gR1NUX01FU1NBR0VfTkVFRF9DT05URVhUKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzcsNiArMjU5LDM3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6aGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9H
TCkKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChHU1RfTUVT
U0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpIHsKKyAgICAgICAgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1l
c3NhZ2UpOworICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJk
cm0ta2V5LW5lZWRlZCIpKSB7CisgICAgICAgICAgICBHU1RfREVCVUcoImhhbmRsaW5nIGRybS1r
ZXktbmVlZGVkIG1lc3NhZ2UiKTsKKworICAgICAgICAgICAgLy8gSGVyZSB3ZSByZWNlaXZlIHRo
ZSBEUk0gaW5pdCBkYXRhIGZyb20gdGhlIHBpcGVsaW5lOiB3ZSB3aWxsIGVtaXQKKyAgICAgICAg
ICAgIC8vIHRoZSBuZWVka2V5IGV2ZW50IHdpdGggdGhhdCBkYXRhIGFuZCB0aGUgYnJvd3NlciBt
aWdodCBjcmVhdGUgYQorICAgICAgICAgICAgLy8gQ0RNU2Vzc2lvbiBmcm9tIHRoaXMgZXZlbnQg
aGFuZGxlci4gSWYgc3VjaCBhIHNlc3Npb24gd2FzIGNyZWF0ZWQKKyAgICAgICAgICAgIC8vIFdl
IHdpbGwgZW1pdCB0aGUgbWVzc2FnZSBldmVudCBmcm9tIHRoZSBzZXNzaW9uIHRvIHByb3ZpZGUg
dGhlCisgICAgICAgICAgICAvLyBEUk0gY2hhbGxlbmdlIHRvIHRoZSBicm93c2VyIGFuZCB3YWl0
IGZvciBhbiB1cGRhdGUuIElmIG9uIHRoZQorICAgICAgICAgICAgLy8gY29udHJhcnkgbm8gc2Vz
c2lvbiB3YXMgY3JlYXRlZCB3ZSB3b24ndCB3YWl0IGFuZCBsZXQgdGhlIHBpcGVsaW5lCisgICAg
ICAgICAgICAvLyBlcnJvciBvdXQgYnkgaXRzZWxmLgorICAgICAgICAgICAgR1JlZlB0cjxHc3RC
dWZmZXI+IGRhdGE7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBrZXlTeXN0ZW1J
ZDsKKyAgICAgICAgICAgIGdib29sZWFuIHZhbGlkID0gZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0
dXJlLCAiZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgJmRhdGEub3V0UHRyKCksCisgICAgICAgICAg
ICAgICAgImtleS1zeXN0ZW0taWQiLCBHX1RZUEVfU1RSSU5HLCAma2V5U3lzdGVtSWQub3V0UHRy
KCksIG51bGxwdHIpOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJbmZvOworICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCF2YWxpZCB8fCAhZ3N0X2J1ZmZlcl9tYXAoZGF0YS5nZXQoKSwgJm1h
cEluZm8sIEdTVF9NQVBfUkVBRCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGtleU5lZWRlZCBldmVudCIpOworICAg
ICAgICAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzb21laG93IHZhbGlkIHNlc3Npb25JZC4KKyAg
ICAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4obWFwSW5mby5kYXRhKSwg
bWFwSW5mby5zaXplKTsKKyAgICAgICAgICAgIG5lZWRLZXkoaW5pdERhdGEpOworICAgICAgICAg
ICAgZ3N0X2J1ZmZlcl91bm1hcChkYXRhLmdldCgpLCAmbWFwSW5mbyk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA3MCw2ICsxMTIz
LDQ4IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZpZGVvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
b3NpdGlvbik7CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmVlZEtleShSZWZQdHI8VWludDhBcnJh
eT4gaW5pdERhdGEpCit7CisgICAgaWYgKCFtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhLmdl
dCgpKSkKKyAgICAgICAgR1NUX0lORk8oIm5vIGV2ZW50IGhhbmRsZXIgZm9yIGtleSBuZWVkZWQi
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRDRE1TZXNz
aW9uKENETVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgR1NUX0RFQlVHKCJzZXR0aW5nIENETSBz
ZXNzaW9uIHRvICVwIiwgc2Vzc2lvbik7CisgICAgbV9jZG1TZXNzaW9uID0gc2Vzc2lvbjsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjprZXlBZGRlZCgpCit7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDRE1TZXNzaW9u
Q2xpZW50KikKK3sKKyAgICBHU1RfREVCVUcoIlJlcXVlc3RlZCBDRE1TZXNzaW9uIGZvciBLZXlT
eXN0ZW0gJXM6IFJldHVybmluZyBudWxsLiIsIGtleVN5c3RlbS51dGY4KCkuZGF0YSgpKTsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJC
YXNlOjpkaXNwYXRjaERlY3J5cHRpb25LZXkoR3N0QnVmZmVyKiBidWZmZXIpCit7CisgICAgZ3N0
X2VsZW1lbnRfc2VuZF9ldmVudChtX3BpcGVsaW5lLmdldCgpLCBnc3RfZXZlbnRfbmV3X2N1c3Rv
bShHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLAorICAgICAgICBnc3Rfc3RydWN0dXJl
X25ldygiZHJtLWNpcGhlciIsICJrZXkiLCBHU1RfVFlQRV9CVUZGRVIsIGJ1ZmZlciwgbnVsbHB0
cikpKTsKK30KKyNlbmRpZgorCitib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnN1cHBvcnRzS2V5U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKQoreworICAgIEdTVF9ERUJVRygiQ2hlY2tpbmcgZm9yIEtleVN5c3RlbSBzdXBw
b3J0IHdpdGggJXMgYW5kIHR5cGUgJXM6IGZhbHNlLiIsIGtleVN5c3RlbS51dGY4KCkuZGF0YSgp
LCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK01lZGlh
UGxheWVyOjpTdXBwb3J0c1R5cGUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0
ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYgcGFy
YW1ldGVycywgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSByZXN1bHQpCit7CisgICAgVU5VU0VE
X1BBUkFNKHBhcmFtZXRlcnMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0KIAogI2VuZGlm
IC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuaAppbmRleCAyOWU0ZGVjNmE1MDhjNzg1MTk0MGRlNTE2MmY5NzVlZjg0
NWU2OWJkLi42ODRhMDM1NWNkMjY3MGRmYjI5YjFlNjk3YmIxOWE0ZDhlOTc1YjIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmgKQEAgLTIs
NyArMiw4IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDkgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA3IEFscCBUb2tlciA8YWxwQGF0
b2tlci5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgSWdhbGlhIFMuTAorICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDE1LCAyMDE2IElnYWxpYSBTLkwKKyAqIENvcHlyaWdo
dCAoQykgMjAxNSwgMjAxNiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC01NCw2ICs1NSw4IEBAIGNsYXNzIEludFNpemU7CiBjbGFzcyBJbnRSZWN0OwogY2xh
c3MgVmlkZW9UZXh0dXJlQ29waWVyR1N0cmVhbWVyOwogCit2b2lkIHJlZ2lzdGVyV2ViS2l0R1N0
cmVhbWVyRWxlbWVudHMoKTsKKwogY2xhc3MgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZSA6IHB1YmxpYyBNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2UKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1NfVEhSRUFERUQpIHx8IChVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpKQogICAgICwgcHVibGljIFBsYXRmb3JtTGF5ZXIKQEAgLTEx
OCwxMiArMTIxLDIzIEBAIHB1YmxpYzoKICAgICBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5k
ZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAorI2lmIEVO
QUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHZvaWQgbmVlZEtleShSZWZQdHI8VWlu
dDhBcnJheT4gaW5pdERhdGEpOworICAgIHZvaWQgc2V0Q0RNU2Vzc2lvbihDRE1TZXNzaW9uKik7
CisgICAgdm9pZCBrZXlBZGRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERlY3J5cHRp
b25LZXkoR3N0QnVmZmVyKik7CisjZW5kaWYKKworICAgIHN0YXRpYyBib29sIHN1cHBvcnRzS2V5
U3lzdGVtKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlKTsK
KyAgICBzdGF0aWMgTWVkaWFQbGF5ZXI6OlN1cHBvcnRzVHlwZSBleHRlbmRlZFN1cHBvcnRzVHlw
ZShjb25zdCBNZWRpYUVuZ2luZVN1cHBvcnRQYXJhbWV0ZXJzJiwgTWVkaWFQbGF5ZXI6OlN1cHBv
cnRzVHlwZSk7CisKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIGJvb2wgY29weVZpZGVvVGV4
dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGxhdGZvcm0zRE9iamVj
dCwgR0MzRGVudW0sIEdDM0RpbnQsIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRGVudW0sIGJvb2ws
IGJvb2wpIG92ZXJyaWRlOwogICAgIE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlRm9yQ3VycmVu
dFRpbWUoKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRWaWRlb1NvdXJjZU9yaWVu
dGF0aW9uKGNvbnN0IEltYWdlT3JpZW50YXRpb24mKTsKKyAgICBHc3RFbGVtZW50KiBwaXBlbGlu
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGlwZWxpbmUuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAg
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UoTWVkaWFQbGF5ZXIqKTsKQEAgLTE4Myw3
ICsxOTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3ZpZGVvU2lu
azsKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IG1fZnBzU2luazsKICAgICBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7Ci0gICAgTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZSBt
X25ldHdvcmtTdGF0ZTsKKyAgICBtdXRhYmxlIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9u
ZXR3b3JrU3RhdGU7CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAgbXV0YWJsZSBHTXV0ZXggbV9z
YW1wbGVNdXRleDsKICAgICBHUmVmUHRyPEdzdFNhbXBsZT4gbV9zYW1wbGU7CkBAIC0yMTQsMTEg
KzIyOCwxNSBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYKIAogICAgIEltYWdlT3JpZW50YXRpb24gbV92
aWRlb1NvdXJjZU9yaWVudGF0aW9uOwotCisjaWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVE
SUEpCisgICAgc3RkOjp1bmlxdWVfcHRyPENETVNlc3Npb24+IGNyZWF0ZVNlc3Npb24oY29uc3Qg
U3RyaW5nJiwgQ0RNU2Vzc2lvbkNsaWVudCopOworICAgIENETVNlc3Npb24qIG1fY2RtU2Vzc2lv
bjsKKyNlbmRpZgogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgc3RkOjp1bmlxdWVfcHRyPFZp
ZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcj4gbV92aWRlb1RleHR1cmVDb3BpZXI7CiAjZW5kaWYK
IH07CisKIH0KIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292412</attachid>
            <date>2016-10-21 14:28:52 -0700</date>
            <delta_ts>2016-10-26 01:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162908-20161021212512.patch</filename>
            <type>text/plain</type>
            <size>10400</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3NjM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmY2Yzk5ZTUxZTRlOTFk
NTcxNjdkMjNjMmE4NmZkNTBiZDg0NDczMy4uZjRkODNjNjY5MTVhMzZhZjMxMWFmNjk0ODVlZmY0
NTQzODY0ZTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE2LTEwLTA0ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBBZGQgRU1FIHN1cHBvcnQgdG8gYmFzZSBwcml2YXRlIHBsYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGVuY3J5cHRp
b24ga2V5IG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGF1dGhv
cmVkIGJ5IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRHU3RyZWFtZXJFbGVtZW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpo
YW5kbGVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlOjpuZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6a2V5QWRkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlU2Vzc2lvbik6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpkaXNwYXRjaERl
Y3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlwZWxpbmUpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U3RyZWFtVm9sdW1l
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBpcGVsaW5lKToKKworMjAxNi0xMC0wNCAg
RW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgorCiAgICAgICAg
IFtHU3RyZWFtZXJdW01TRV0gV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIgcmVmYWN0b3JpbmcK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MjkwMgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5j
cHAKaW5kZXggNzg3MmU2NTBlNDlkZmE3Njg3MTJlOWEzMzMyNGNkMThlZDBjY2NiZC4uNDM5NWQ3
NTBiN2NjZjgxNGNmNDljYTA4Mjk0MDk1YzYzZmM5N2U5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMyw3ICszLDggQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICog
Q29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4K
LSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDksIDIwMTAsIDIwMTUsIDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0IChDKSAyMDE1
LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTkw
LDYgKzkxLDE0IEBACiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KICNlbmRpZgogCisjaWYgRU5BQkxF
KExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiVVVJRC5oIgorI2luY2x1ZGUgIldl
YktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5oPgorI2luY2x1
ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2VuZGlmCisKIEdTVF9ERUJVR19DQVRFR09SWSh3
ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHdlYmtp
dF9tZWRpYV9wbGF5ZXJfZGVidWcKIApAQCAtOTcsNiArMTA2LDE4IEBAIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCByZWdpc3RlcldlYktpdEdTdHJl
YW1lckVsZW1lbnRzKCkKK3sKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAg
ICBpZiAoIXdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCA2LCAxKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gY2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5
ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRjbGVhcmtleSIpOworICAgIGlmICgh
Y2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5KQorICAgICAgICBnc3RfZWxlbWVudF9yZWdpc3Rlcihu
dWxscHRyLCAid2Via2l0Y2xlYXJrZXkiLCBHU1RfUkFOS19QUklNQVJZICsgMTAwLCBXRUJLSVRf
VFlQRV9NRURJQV9DS19ERUNSWVBUKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW50IGdyZWF0ZXN0
Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiB7CiAgICAgd2hpbGUgKGIpIHsKQEAgLTIyMCw2
ICsyNDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldFBpcGVs
aW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2UpCiB7CisgICAg
VU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAgICAgaWYgKEdT
VF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgIT0gR1NUX01FU1NBR0VfTkVFRF9DT05URVhUKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzcsNiArMjU5LDM3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZTo6aGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2FnZSogbWVzc2Fn
ZSkKICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUl9H
TCkKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlmIChHU1RfTUVT
U0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpIHsKKyAgICAgICAgY29u
c3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3RydWN0dXJlKG1l
c3NhZ2UpOworICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1Y3R1cmUsICJk
cm0ta2V5LW5lZWRlZCIpKSB7CisgICAgICAgICAgICBHU1RfREVCVUcoImhhbmRsaW5nIGRybS1r
ZXktbmVlZGVkIG1lc3NhZ2UiKTsKKworICAgICAgICAgICAgLy8gSGVyZSB3ZSByZWNlaXZlIHRo
ZSBEUk0gaW5pdCBkYXRhIGZyb20gdGhlIHBpcGVsaW5lOiB3ZSB3aWxsIGVtaXQKKyAgICAgICAg
ICAgIC8vIHRoZSBuZWVka2V5IGV2ZW50IHdpdGggdGhhdCBkYXRhIGFuZCB0aGUgYnJvd3NlciBt
aWdodCBjcmVhdGUgYQorICAgICAgICAgICAgLy8gQ0RNU2Vzc2lvbiBmcm9tIHRoaXMgZXZlbnQg
aGFuZGxlci4gSWYgc3VjaCBhIHNlc3Npb24gd2FzIGNyZWF0ZWQKKyAgICAgICAgICAgIC8vIFdl
IHdpbGwgZW1pdCB0aGUgbWVzc2FnZSBldmVudCBmcm9tIHRoZSBzZXNzaW9uIHRvIHByb3ZpZGUg
dGhlCisgICAgICAgICAgICAvLyBEUk0gY2hhbGxlbmdlIHRvIHRoZSBicm93c2VyIGFuZCB3YWl0
IGZvciBhbiB1cGRhdGUuIElmIG9uIHRoZQorICAgICAgICAgICAgLy8gY29udHJhcnkgbm8gc2Vz
c2lvbiB3YXMgY3JlYXRlZCB3ZSB3b24ndCB3YWl0IGFuZCBsZXQgdGhlIHBpcGVsaW5lCisgICAg
ICAgICAgICAvLyBlcnJvciBvdXQgYnkgaXRzZWxmLgorICAgICAgICAgICAgR1JlZlB0cjxHc3RC
dWZmZXI+IGRhdGE7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBrZXlTeXN0ZW1J
ZDsKKyAgICAgICAgICAgIGdib29sZWFuIHZhbGlkID0gZ3N0X3N0cnVjdHVyZV9nZXQoc3RydWN0
dXJlLCAiZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgJmRhdGEub3V0UHRyKCksCisgICAgICAgICAg
ICAgICAgImtleS1zeXN0ZW0taWQiLCBHX1RZUEVfU1RSSU5HLCAma2V5U3lzdGVtSWQub3V0UHRy
KCksIG51bGxwdHIpOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJbmZvOworICAgICAgICAg
ICAgaWYgKFVOTElLRUxZKCF2YWxpZCB8fCAhZ3N0X2J1ZmZlcl9tYXAoZGF0YS5nZXQoKSwgJm1h
cEluZm8sIEdTVF9NQVBfUkVBRCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGtleU5lZWRlZCBldmVudCIpOworICAg
ICAgICAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzb21laG93IHZhbGlkIHNlc3Npb25JZC4KKyAg
ICAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJyYXk6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4obWFwSW5mby5kYXRhKSwg
bWFwSW5mby5zaXplKTsKKyAgICAgICAgICAgIG5lZWRLZXkoaW5pdERhdGEpOworICAgICAgICAg
ICAgZ3N0X2J1ZmZlcl91bm1hcChkYXRhLmdldCgpLCAmbWFwSW5mbyk7CisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTEVHQUNZX0VO
Q1JZUFRFRF9NRURJQSkKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA3MCw2ICsxMTIz
LDQ4IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnZpZGVvRGVj
b2RlZEJ5dGVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
b3NpdGlvbik7CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKK3ZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmVlZEtleShSZWZQdHI8VWludDhBcnJh
eT4gaW5pdERhdGEpCit7CisgICAgaWYgKCFtX3BsYXllci0+a2V5TmVlZGVkKGluaXREYXRhLmdl
dCgpKSkKKyAgICAgICAgR1NUX0lORk8oIm5vIGV2ZW50IGhhbmRsZXIgZm9yIGtleSBuZWVkZWQi
KTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpzZXRDRE1TZXNz
aW9uKENETVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgR1NUX0RFQlVHKCJzZXR0aW5nIENETSBz
ZXNzaW9uIHRvICVwIiwgc2Vzc2lvbik7CisgICAgbV9jZG1TZXNzaW9uID0gc2Vzc2lvbjsKK30K
Kwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjprZXlBZGRlZCgpCit7Cit9
CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBDRE1TZXNzaW9u
Q2xpZW50KikKK3sKKyAgICBHU1RfSU5GTygiUmVxdWVzdGVkIENETVNlc3Npb24gZm9yIEtleVN5
c3RlbSAlczogUmV0dXJuaW5nIG51bGwuIiwga2V5U3lzdGVtLnV0ZjgoKS5kYXRhKCkpOworICAg
IHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmRpc3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sKKyAgICBnc3Rf
ZWxlbWVudF9zZW5kX2V2ZW50KG1fcGlwZWxpbmUuZ2V0KCksIGdzdF9ldmVudF9uZXdfY3VzdG9t
KEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0IsCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVf
bmV3KCJkcm0tY2lwaGVyIiwgImtleSIsIEdTVF9UWVBFX0JVRkZFUiwgYnVmZmVyLCBudWxscHRy
KSkpOworfQorI2VuZGlmCisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6
c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0IFN0cmluZyYg
bWltZVR5cGUpCit7CisgICAgR1NUX0lORk8oIkNoZWNraW5nIGZvciBLZXlTeXN0ZW0gc3VwcG9y
dCB3aXRoICVzIGFuZCB0eXBlICVzOiBmYWxzZS4iLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSwg
bWltZVR5cGUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitNZWRpYVBs
YXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OmV4dGVu
ZGVkU3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRlcnMmIHBhcmFt
ZXRlcnMsIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0KQoreworICAgIFVOVVNFRF9Q
QVJBTShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAKICNlbmRpZiAv
LyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmgKaW5kZXggMjllNGRlYzZhNTA4Yzc4NTE5NDBkZTUxNjJmOTc1ZWY4NDVl
NjliZC4uMGY3Nzk0NzNlYmZkM2Y2ZDgwN2U5N2RhY2NhODg0MmEzZjhjZmFlYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0yLDcg
KzIsOCBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0ZC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9r
ZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIElnYWxpYSBTLkwKKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVjdDsKIGNsYXNz
IFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjsKIAordm9pZCByZWdpc3RlcldlYktpdEdTdHJl
YW1lckVsZW1lbnRzKCk7CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Ug
OiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTX1RIUkVBREVEKSB8fCAoVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTKSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybUxheWVyCkBAIC0xMTgs
MTIgKzEyMSwyMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVy
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIG5lZWRLZXkoUmVmUHRyPFVpbnQ4
QXJyYXk+KTsKKyAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiopOworICAgIHZvaWQg
a2V5QWRkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNyeXB0aW9uS2V5KEdzdEJ1
ZmZlciopOworI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5c3RlbShjb25z
dCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7CisgICAgc3RhdGlj
IE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUoY29uc3QgTWVk
aWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYsIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUpOwor
CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1cmVUb1BsYXRm
b3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RlbnVt
LCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBib29sKSBvdmVy
cmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRUaW1lKCkgb3Zl
cnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRhdGlvbihjb25z
dCBJbWFnZU9yaWVudGF0aW9uJik7CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUoKSBjb25zdCB7
IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKik7CkBAIC0xODMsNyArMTk3LDcgQEAg
cHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV92aWRlb1Npbms7CiAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1Npbms7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
bV9yZWFkeVN0YXRlOwotICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9uZXR3b3JrU3Rh
dGU7CisgICAgbXV0YWJsZSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0d29ya1N0YXRl
OwogICAgIEludFNpemUgbV9zaXplOwogICAgIG11dGFibGUgR011dGV4IG1fc2FtcGxlTXV0ZXg7
CiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwpAQCAtMjE0LDExICsyMjgsMTUgQEAg
cHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fdmlkZW9Tb3VyY2VP
cmllbnRhdGlvbjsKLQorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIHN0
ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYsIENE
TVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uKiBtX2NkbVNlc3Npb247CisjZW5kaWYK
ICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRlb1RleHR1cmVD
b3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogI2VuZGlmCiB9OworCiB9CiAK
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292897</attachid>
            <date>2016-10-26 01:22:15 -0700</date>
            <delta_ts>2016-10-26 01:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-162908-20161026081827.patch</filename>
            <type>text/plain</type>
            <size>10409</size>
            <attacher name="Enrique Ocaña">eocanha</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQzZGFiZWQxYzJiNDUw
Zjk3NDQ3MDg3ZDkwOWYzNGExM2Q5NzkzZi4uMjI5ZDAxZTRjY2UxMmU3NWE3Mjg1ZGY4MjA4ZDE2
N2IxOGFiMjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDE2LTEwLTI2ICBFbnJp
cXVlIE9jYcOxYSBHb256w6FsZXogIDxlb2NhbmhhQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dT
dHJlYW1lcl1bRU1FXSBBZGQgRU1FIHN1cHBvcnQgdG8gYmFzZSBwcml2YXRlIHBsYXllcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTA4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgWGFiaWVyIFJvZHJpZ3Vlei1DYWx2YXIuCisKKyAgICAgICAgQWRk
IGVuY3J5cHRpb24ga2V5IG1hbmFnZW1lbnQgc3VwcG9ydC4KKworICAgICAgICBUaGlzIHBhdGNo
IGlzIGF1dGhvcmVkIGJ5IFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+LgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVnaXN0ZXJXZWJLaXRHU3RyZWFt
ZXJFbGVtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpoYW5kbGVTeW5jTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlOjpuZWVkS2V5KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnNldENETVNlc3Npb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6a2V5QWRkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6Y3JlYXRlU2Vzc2lv
bik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpk
aXNwYXRjaERlY3J5cHRpb25LZXkpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6ZXh0ZW5kZWRTdXBwb3J0c1R5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6fk1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0UGlwZWxpbmUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6c2V0U3Ry
ZWFtVm9sdW1lRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBpcGVsaW5lKToKKworMjAx
Ni0xMC0yNiAgRW5yaXF1ZSBPY2HDsWEgR29uesOhbGV6ICA8ZW9jYW5oYUBpZ2FsaWEuY29tPgor
CiAgICAgICAgIFtHU3RyZWFtZXJdW01TRV0gV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIgcmVm
YWN0b3JpbmcKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2MjkwMgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZS5jcHAKaW5kZXggYzAwNjIxNmRkZjJmNGVlNGM1MTNkZmI5ODFkMjBkMDUxOGY3ZTgw
OC4uMTJlNTkxZjQ2ZGY1MTAyZTBkNTIyN2VhOTIwMTMyZWU5YTIxN2RkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcApAQCAtMyw3
ICszLDggQEAKICAqIENvcHlyaWdodCAoQykgMjAwNyBDb2xsYWJvcmEgTHRkLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIgPGFscEBhdG9rZXIu
Y29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdu
b21lLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBJZ2FsaWEgUy5MCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTUsIDIwMTYgSWdhbGlhIFMuTAorICogQ29weXJpZ2h0
IChDKSAyMDE1LCAyMDE2IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCiAgKgogICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTkwLDYgKzkxLDE0IEBACiAjaW5jbHVkZSA8Y2Fpcm8tZ2wuaD4KICNlbmRpZgogCisj
aWYgRU5BQkxFKExFR0FDWV9FTkNSWVBURURfTUVESUEpCisjaW5jbHVkZSAiVVVJRC5oIgorI2lu
Y2x1ZGUgIldlYktpdENsZWFyS2V5RGVjcnlwdG9yR1N0cmVhbWVyLmgiCisjaW5jbHVkZSA8cnVu
dGltZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9UeXBlZEFycmF5SW5saW5lcy5o
PgorI2luY2x1ZGUgPHJ1bnRpbWUvVWludDhBcnJheS5oPgorI2VuZGlmCisKIEdTVF9ERUJVR19D
QVRFR09SWSh3ZWJraXRfbWVkaWFfcGxheWVyX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZB
VUxUIHdlYmtpdF9tZWRpYV9wbGF5ZXJfZGVidWcKIApAQCAtOTcsNiArMTA2LDE4IEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCByZWdpc3Rlcldl
YktpdEdTdHJlYW1lckVsZW1lbnRzKCkKK3sKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9N
RURJQSkKKyAgICBpZiAoIXdlYmtpdEdzdENoZWNrVmVyc2lvbigxLCA2LCAxKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4gY2xlYXJLZXlEZWNyeXB0
b3JGYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRjbGVhcmtleSIpOwor
ICAgIGlmICghY2xlYXJLZXlEZWNyeXB0b3JGYWN0b3J5KQorICAgICAgICBnc3RfZWxlbWVudF9y
ZWdpc3RlcihudWxscHRyLCAid2Via2l0Y2xlYXJrZXkiLCBHU1RfUkFOS19QUklNQVJZICsgMTAw
LCBXRUJLSVRfVFlQRV9NRURJQV9DS19ERUNSWVBUKTsKKyNlbmRpZgorfQorCiBzdGF0aWMgaW50
IGdyZWF0ZXN0Q29tbW9uRGl2aXNvcihpbnQgYSwgaW50IGIpCiB7CiAgICAgd2hpbGUgKGIpIHsK
QEAgLTIyMCw2ICsyNDEsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnNldFBpcGVsaW5lKEdzdEVsZW1lbnQqIHBpcGVsaW5lKQogCiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2U6OmhhbmRsZVN5bmNNZXNzYWdlKEdzdE1lc3NhZ2UqIG1lc3NhZ2Up
CiB7CisgICAgVU5VU0VEX1BBUkFNKG1lc3NhZ2UpOwogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiAg
ICAgaWYgKEdTVF9NRVNTQUdFX1RZUEUobWVzc2FnZSkgIT0gR1NUX01FU1NBR0VfTkVFRF9DT05U
RVhUKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzcsNiArMjU5LDM3IEBAIGJvb2wgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6aGFuZGxlU3luY01lc3NhZ2UoR3N0TWVzc2Fn
ZSogbWVzc2FnZSkKICAgICBVTlVTRURfUEFSQU0obWVzc2FnZSk7CiAjZW5kaWYgLy8gVVNFKEdT
VFJFQU1FUl9HTCkKIAorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQorICAgIGlm
IChHU1RfTUVTU0FHRV9UWVBFKG1lc3NhZ2UpID09IEdTVF9NRVNTQUdFX0VMRU1FTlQpIHsKKyAg
ICAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBnc3RfbWVzc2FnZV9nZXRfc3Ry
dWN0dXJlKG1lc3NhZ2UpOworICAgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZShzdHJ1
Y3R1cmUsICJkcm0ta2V5LW5lZWRlZCIpKSB7CisgICAgICAgICAgICBHU1RfREVCVUcoImhhbmRs
aW5nIGRybS1rZXktbmVlZGVkIG1lc3NhZ2UiKTsKKworICAgICAgICAgICAgLy8gSGVyZSB3ZSBy
ZWNlaXZlIHRoZSBEUk0gaW5pdCBkYXRhIGZyb20gdGhlIHBpcGVsaW5lOiB3ZSB3aWxsIGVtaXQK
KyAgICAgICAgICAgIC8vIHRoZSBuZWVka2V5IGV2ZW50IHdpdGggdGhhdCBkYXRhIGFuZCB0aGUg
YnJvd3NlciBtaWdodCBjcmVhdGUgYQorICAgICAgICAgICAgLy8gQ0RNU2Vzc2lvbiBmcm9tIHRo
aXMgZXZlbnQgaGFuZGxlci4gSWYgc3VjaCBhIHNlc3Npb24gd2FzIGNyZWF0ZWQKKyAgICAgICAg
ICAgIC8vIFdlIHdpbGwgZW1pdCB0aGUgbWVzc2FnZSBldmVudCBmcm9tIHRoZSBzZXNzaW9uIHRv
IHByb3ZpZGUgdGhlCisgICAgICAgICAgICAvLyBEUk0gY2hhbGxlbmdlIHRvIHRoZSBicm93c2Vy
IGFuZCB3YWl0IGZvciBhbiB1cGRhdGUuIElmIG9uIHRoZQorICAgICAgICAgICAgLy8gY29udHJh
cnkgbm8gc2Vzc2lvbiB3YXMgY3JlYXRlZCB3ZSB3b24ndCB3YWl0IGFuZCBsZXQgdGhlIHBpcGVs
aW5lCisgICAgICAgICAgICAvLyBlcnJvciBvdXQgYnkgaXRzZWxmLgorICAgICAgICAgICAgR1Jl
ZlB0cjxHc3RCdWZmZXI+IGRhdGE7CisgICAgICAgICAgICBHVW5pcXVlT3V0UHRyPGdjaGFyPiBr
ZXlTeXN0ZW1JZDsKKyAgICAgICAgICAgIGdib29sZWFuIHZhbGlkID0gZ3N0X3N0cnVjdHVyZV9n
ZXQoc3RydWN0dXJlLCAiZGF0YSIsIEdTVF9UWVBFX0JVRkZFUiwgJmRhdGEub3V0UHRyKCksCisg
ICAgICAgICAgICAgICAgImtleS1zeXN0ZW0taWQiLCBHX1RZUEVfU1RSSU5HLCAma2V5U3lzdGVt
SWQub3V0UHRyKCksIG51bGxwdHIpOworICAgICAgICAgICAgR3N0TWFwSW5mbyBtYXBJbmZvOwor
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2YWxpZCB8fCAhZ3N0X2J1ZmZlcl9tYXAoZGF0YS5n
ZXQoKSwgJm1hcEluZm8sIEdTVF9NQVBfUkVBRCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAgICAgR1NUX0RFQlVHKCJzY2hlZHVsaW5nIGtleU5lZWRlZCBldmVu
dCIpOworICAgICAgICAgICAgLy8gRklYTUU6IFByb3ZpZGUgYSBzb21laG93IHZhbGlkIHNlc3Np
b25JZC4KKyAgICAgICAgICAgIFJlZlB0cjxVaW50OEFycmF5PiBpbml0RGF0YSA9IFVpbnQ4QXJy
YXk6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIgKj4obWFwSW5m
by5kYXRhKSwgbWFwSW5mby5zaXplKTsKKyAgICAgICAgICAgIG5lZWRLZXkoaW5pdERhdGEpOwor
ICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcChkYXRhLmdldCgpLCAmbWFwSW5mbyk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUo
TEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTA3
MCw2ICsxMTIzLDQ4IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6
OnZpZGVvRGVjb2RlZEJ5dGVDb3VudCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwb3NpdGlvbik7CiB9CiAKKyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJ
QSkKK3ZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6bmVlZEtleShSZWZQdHI8
VWludDhBcnJheT4gaW5pdERhdGEpCit7CisgICAgaWYgKCFtX3BsYXllci0+a2V5TmVlZGVkKGlu
aXREYXRhLmdldCgpKSkKKyAgICAgICAgR1NUX0lORk8oIm5vIGV2ZW50IGhhbmRsZXIgZm9yIGtl
eSBuZWVkZWQiKTsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpz
ZXRDRE1TZXNzaW9uKENETVNlc3Npb24qIHNlc3Npb24pCit7CisgICAgR1NUX0RFQlVHKCJzZXR0
aW5nIENETSBzZXNzaW9uIHRvICVwIiwgc2Vzc2lvbik7CisgICAgbV9jZG1TZXNzaW9uID0gc2Vz
c2lvbjsKK30KKwordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjprZXlBZGRl
ZCgpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlOjpjcmVhdGVTZXNzaW9uKGNvbnN0IFN0cmluZyYga2V5U3lzdGVtLCBD
RE1TZXNzaW9uQ2xpZW50KikKK3sKKyAgICBHU1RfSU5GTygiUmVxdWVzdGVkIENETVNlc3Npb24g
Zm9yIEtleVN5c3RlbSAlczogUmV0dXJuaW5nIG51bGwuIiwga2V5U3lzdGVtLnV0ZjgoKS5kYXRh
KCkpOworICAgIHJldHVybiBudWxscHRyOworfQorCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lckJhc2U6OmRpc3BhdGNoRGVjcnlwdGlvbktleShHc3RCdWZmZXIqIGJ1ZmZlcikKK3sK
KyAgICBnc3RfZWxlbWVudF9zZW5kX2V2ZW50KG1fcGlwZWxpbmUuZ2V0KCksIGdzdF9ldmVudF9u
ZXdfY3VzdG9tKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0IsCisgICAgICAgIGdzdF9z
dHJ1Y3R1cmVfbmV3KCJkcm0tY2lwaGVyIiwgImtleSIsIEdTVF9UWVBFX0JVRkZFUiwgYnVmZmVy
LCBudWxscHRyKSkpOworfQorI2VuZGlmCisKK2Jvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyQmFzZTo6c3VwcG9ydHNLZXlTeXN0ZW0oY29uc3QgU3RyaW5nJiBrZXlTeXN0ZW0sIGNvbnN0
IFN0cmluZyYgbWltZVR5cGUpCit7CisgICAgR1NUX0lORk8oIkNoZWNraW5nIGZvciBLZXlTeXN0
ZW0gc3VwcG9ydCB3aXRoICVzIGFuZCB0eXBlICVzOiBmYWxzZS4iLCBrZXlTeXN0ZW0udXRmOCgp
LmRhdGEoKSwgbWltZVR5cGUudXRmOCgpLmRhdGEoKSk7CisgICAgcmV0dXJuIGZhbHNlOworfQor
CitNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJh
c2U6OmV4dGVuZGVkU3VwcG9ydHNUeXBlKGNvbnN0IE1lZGlhRW5naW5lU3VwcG9ydFBhcmFtZXRl
cnMmIHBhcmFtZXRlcnMsIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgcmVzdWx0KQoreworICAg
IFVOVVNFRF9QQVJBTShwYXJhbWV0ZXJzKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB9CiAK
ICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXJCYXNlLmgKaW5kZXggYTczYTk1NTNkZjQ4OWViYzBjNmZiZTA2MGUw
ZTg2YjliYTdlNTc2ZS4uYTA4YjNlYWFmOTMwY2ZlMDE1NGJiMzMxN2ViNzNkNGI1YWEzZGI2MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5o
CkBAIC0yLDcgKzIsOCBAQAogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA5IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQ29sbGFib3JhIEx0
ZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNyBBbHAgVG9rZXIg
PGFscEBhdG9rZXIuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIElnYWxpYSBTLkwK
KyAqIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCwgMjAxNSwgMjAxNiBJZ2FsaWEgUy5MCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTUsIDIwMTYgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtNTQsNiArNTUsOCBAQCBjbGFzcyBJbnRTaXplOwogY2xhc3MgSW50UmVj
dDsKIGNsYXNzIFZpZGVvVGV4dHVyZUNvcGllckdTdHJlYW1lcjsKIAordm9pZCByZWdpc3Rlcldl
YktpdEdTdHJlYW1lckVsZW1lbnRzKCk7CisKIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lckJhc2UgOiBwdWJsaWMgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlCiAjaWYgVVNFKENP
T1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVEKSB8fCAoVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAm
JiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSkKICAgICAsIHB1YmxpYyBQbGF0Zm9ybUxheWVy
CkBAIC0xMTgsMTIgKzEyMSwyMyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwb3J0c0FjY2VsZXJh
dGVkUmVuZGVyaW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoTEVHQUNZX0VOQ1JZUFRFRF9NRURJQSkKKyAgICB2b2lkIG5lZWRLZXkoUmVm
UHRyPFVpbnQ4QXJyYXk+KTsKKyAgICB2b2lkIHNldENETVNlc3Npb24oQ0RNU2Vzc2lvbiopOwor
ICAgIHZvaWQga2V5QWRkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZWNyeXB0aW9u
S2V5KEdzdEJ1ZmZlciopOworI2VuZGlmCisKKyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0tleVN5
c3RlbShjb25zdCBTdHJpbmcmIGtleVN5c3RlbSwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSk7Cisg
ICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBwb3J0c1R5cGUgZXh0ZW5kZWRTdXBwb3J0c1R5cGUo
Y29uc3QgTWVkaWFFbmdpbmVTdXBwb3J0UGFyYW1ldGVycyYsIE1lZGlhUGxheWVyOjpTdXBwb3J0
c1R5cGUpOworCiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBib29sIGNvcHlWaWRlb1RleHR1
cmVUb1BsYXRmb3JtVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBsYXRmb3JtM0RPYmplY3Qs
IEdDM0RlbnVtLCBHQzNEaW50LCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RlbnVtLCBib29sLCBi
b29sKSBvdmVycmlkZTsKICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRU
aW1lKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0VmlkZW9Tb3VyY2VPcmllbnRh
dGlvbihjb25zdCBJbWFnZU9yaWVudGF0aW9uJik7CisgICAgR3N0RWxlbWVudCogcGlwZWxpbmUo
KSBjb25zdCB7IHJldHVybiBtX3BpcGVsaW5lLmdldCgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlKE1lZGlhUGxheWVyKik7CkBAIC0xODMsNyAr
MTk3LDcgQEAgcHJvdGVjdGVkOgogICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV92aWRlb1Npbms7
CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX2Zwc1Npbms7CiAgICAgTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgbV9yZWFkeVN0YXRlOwotICAgIE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGUgbV9u
ZXR3b3JrU3RhdGU7CisgICAgbXV0YWJsZSBNZWRpYVBsYXllcjo6TmV0d29ya1N0YXRlIG1fbmV0
d29ya1N0YXRlOwogICAgIEludFNpemUgbV9zaXplOwogICAgIG11dGFibGUgR011dGV4IG1fc2Ft
cGxlTXV0ZXg7CiAgICAgR1JlZlB0cjxHc3RTYW1wbGU+IG1fc2FtcGxlOwpAQCAtMjE0LDExICsy
MjgsMTUgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAKICAgICBJbWFnZU9yaWVudGF0aW9uIG1fdmlk
ZW9Tb3VyY2VPcmllbnRhdGlvbjsKLQorI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElB
KQorICAgIHN0ZDo6dW5pcXVlX3B0cjxDRE1TZXNzaW9uPiBjcmVhdGVTZXNzaW9uKGNvbnN0IFN0
cmluZyYsIENETVNlc3Npb25DbGllbnQqKTsKKyAgICBDRE1TZXNzaW9uKiBtX2NkbVNlc3Npb247
CisjZW5kaWYKICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxWaWRl
b1RleHR1cmVDb3BpZXJHU3RyZWFtZXI+IG1fdmlkZW9UZXh0dXJlQ29waWVyOwogI2VuZGlmCiB9
OworCiB9CiAKICNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>