<?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>143480</bug_id>
          
          <creation_ts>2015-04-07 06:22:08 -0700</creation_ts>
          <short_desc>[GStreamer] extra-headers and keep-alive properties for HTTP source element</short_desc>
          <delta_ts>2015-04-08 09:11:44 -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>528+ (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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>pnormand</cc>
    
    <cc>slomo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083301</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-07 06:22:08 -0700</bug_when>
    <thetext>These properties are useful for adaptive streaming use-cases, the demuxer tries to set them on the src element used for fragments downloading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083303</commentid>
    <comment_count>1</comment_count>
      <attachid>250264</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-07 06:31:05 -0700</bug_when>
    <thetext>Created attachment 250264
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083304</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-07 06:32:49 -0700</bug_when>
    <thetext>Attachment 250264 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:251:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:253:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:254:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:255:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:258:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:259:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:260:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:261:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:362:  Declaration has space between type name and * in const GstStructure *s  [whitespace/declaration] [3]
Total errors found: 9 in 2 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083305</commentid>
    <comment_count>3</comment_count>
      <attachid>250265</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-07 06:35:52 -0700</bug_when>
    <thetext>Created attachment 250265
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083306</commentid>
    <comment_count>4</comment_count>
      <attachid>250265</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-07 06:58:47 -0700</bug_when>
    <thetext>Comment on attachment 250265
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:112
&gt; +    bool keep_alive;

this should be keepAlive

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:252
&gt; +            FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));

Use C++ style cast for GParamFlags

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:256
&gt; +            GST_TYPE_STRUCTURE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));

Use C++ style cast for GParamFlags

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:270
&gt; +    priv-&gt;keep_alive = FALSE;

keep_alive -&gt; keepAlive, FALSE -&gt; false But this is false already since the private struct is filled with 0 on allocation

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:334
&gt; +    if (priv-&gt;extraHeaders) {
&gt; +        gst_structure_free(priv-&gt;extraHeaders);
&gt; +        priv-&gt;extraHeaders = nullptr;
&gt; +    }

Don&apos;t we have a GUniquePtr impl for GstStructure?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:471
&gt; +static gboolean webKitWebSrcSetExtraHeader(GQuark fieldId, const GValue* value, gpointer userData)

This could be bool

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:474
&gt; +    ResourceRequest* request = static_cast&lt;ResourceRequest*&gt;(userData);
&gt; +    const gchar* fieldName = g_quark_to_string(fieldId);

Move this to where it&apos;s first needed.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:477
&gt; +    if (G_VALUE_TYPE(value) == G_TYPE_STRING)

G_VALUE_HOLDS_STRING?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:504
&gt; +                return FALSE;

Do we want to return if any of the elements fail, or should we try with the rest?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:506
&gt; +    } else if (G_VALUE_TYPE(value) == GST_TYPE_LIST) {

I would return TRUE in previous if instead of the else

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:511
&gt; +                return FALSE;

Do we want to return if any of the elements fail, or should we try with the rest?

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:513
&gt; +        }
&gt; +    } else

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083316</commentid>
    <comment_count>5</comment_count>
      <attachid>250265</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-07 09:04:12 -0700</bug_when>
    <thetext>Comment on attachment 250265
patch

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

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:504
&gt;&gt; +                return FALSE;
&gt; 
&gt; Do we want to return if any of the elements fail, or should we try with the rest?

This code is inspired from gst&apos;s souphttpsrc element, I&apos;d rather avoid a different behavior here.

&gt;&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:511
&gt;&gt; +                return FALSE;
&gt; 
&gt; Do we want to return if any of the elements fail, or should we try with the rest?

This code is inspired from gst&apos;s souphttpsrc element, I&apos;d rather avoid a different behavior here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083318</commentid>
    <comment_count>6</comment_count>
      <attachid>250269</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-07 09:05:04 -0700</bug_when>
    <thetext>Created attachment 250269
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083320</commentid>
    <comment_count>7</comment_count>
      <attachid>250269</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2015-04-07 09:19:14 -0700</bug_when>
    <thetext>Comment on attachment 250269
patch

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

&gt; Source/WebCore/platform/graphics/gstreamer/GUniquePtrGStreamer.h:35
&gt; +template&lt;&gt; struct GPtrDeleter&lt;GstStructure&gt; {
&gt; +    void operator() (GstStructure* ptr) const
&gt; +    {
&gt; +        if (ptr)
&gt; +            gst_structure_free(ptr);
&gt; +    }
&gt; +};

I just asked if we had this already, but now that we are adding it, it would be easier to use the WTF_DEFINE_GPTR_DELETER macro.

WTF_DEFINE_GPTR_DELETER(GstStructure, gst_structure_free)

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:479
&gt; +        return FALSE;

false

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:485
&gt; +    return TRUE;

true

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:491
&gt; +        unsigned n = gst_value_array_get_size(value);

Sorry that I missed this in my previous review, use a more descriptive name than &apos;n&apos; for the variable.

&gt; Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:501
&gt; +        unsigned n = gst_value_list_get_size(value);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083516</commentid>
    <comment_count>8</comment_count>
      <attachid>250269</attachid>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2015-04-07 18:53:54 -0700</bug_when>
    <thetext>Comment on attachment 250269
patch

Looks good to me too! You probably also want to implement another properties from souphttpsrc here: compress. That&apos;s very useful for HTTP adaptive streaming (it&apos;s used for the playlists/Manifests there, which are plaintext).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083567</commentid>
    <comment_count>9</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-08 00:11:23 -0700</bug_when>
    <thetext>Committed r182523: &lt;http://trac.webkit.org/changeset/182523&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083568</commentid>
    <comment_count>10</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2015-04-08 00:12:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 250269 [details]
&gt; patch
&gt; 
&gt; Looks good to me too! You probably also want to implement another properties
&gt; from souphttpsrc here: compress. That&apos;s very useful for HTTP adaptive
&gt; streaming (it&apos;s used for the playlists/Manifests there, which are plaintext).

Yeah I saw it&apos;s used by hlsdemux, thought about adding it as well, but is it really worth it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083625</commentid>
    <comment_count>11</comment_count>
    <who name="Sebastian Dröge (slomo)">slomo</who>
    <bug_when>2015-04-08 09:11:44 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; Comment on attachment 250269 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; Looks good to me too! You probably also want to implement another properties
&gt; &gt; from souphttpsrc here: compress. That&apos;s very useful for HTTP adaptive
&gt; &gt; streaming (it&apos;s used for the playlists/Manifests there, which are plaintext).
&gt; 
&gt; Yeah I saw it&apos;s used by hlsdemux, thought about adding it as well, but is it
&gt; really worth it?

They can easily become 1-2MB uncompressed, and as it&apos;s plaintext it compresses well and can get down to 100kb or something. Makes a big difference with the time needed from clicking play to getting the first media on the screen/speakers :) Especially if it&apos;s audio-only and you have a mobile data connection.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250264</attachid>
            <date>2015-04-07 06:31:05 -0700</date>
            <delta_ts>2015-04-07 06:35:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>10423</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhMzhjN2MyNmQxNjBhZTc0YTQ0M2E0MmQ4ODJmMDAzYWJlMGE0OTdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgQXByIDIwMTUgMTU6Mjk6NTIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyNiArKysrKwogLi4uL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwICAgICAgICAgfCAxMjYgKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQs
IDE0MCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMyNDU3
NC4uOGMyMzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA0LTA3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBleHRyYS1oZWFkZXJzIGFuZCBrZWVwLWFsaXZlIHByb3BlcnRpZXMgZm9yIEhUVFAgc291cmNl
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzQ4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEtlZXAgdGhlIHJlc291cmNlIGxvYWRlciBhcm91bmQgd2hlbiBwZXJzaXN0ZW50IEhUVFAgY29u
bmVjdGlvbgorICAgICAgICBzdXBwb3J0IGlzIGVuYWJsZWQuIFRoZSBrZWVwLWFsaXZlIHByb3Bl
cnR5IGlzIHNldCB0byBmYWxzZSBieQorICAgICAgICBkZWZhdWx0LiBBbHNvIGJlZm9yZSBzZW5k
aW5nIHRoZSBIVFRQIHJlcXVlc3Qgd2Ugbm93IGNoZWNrIHRoZQorICAgICAgICBjb250ZW50cyBv
ZiB0aGUgZXh0cmEtaGVhZGVycyBHc3RTdHJ1Y3R1cmUgYW5kIHNldCBhZGRpdGlvbmFsCisgICAg
ICAgIGhlYWRlcnMgYmFzZWQgb24gdGhlIHN0cnVjdHVyZSBjb250ZW50cy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl9zcmNfaW5pdCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNG
aW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQ2xl
YXIgcmVzb3VyY2UgbG9hZGVyIG9ubHkgZm9yIG5vbi1wZXJzaXN0ZW50IGNvbm5lY3Rpb25zLgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIpOiBVdGlsaXR5IGZ1bmN0aW9uIHRv
IGFwcGVuZCBoZWFkZXJzCisgICAgICAgIHRvIGFuIGV4aXN0aW5nIHJlcXVlc3QgYmFzZWQgb24g
YSBHVmFsdWUgY29udGVudHMuCisgICAgICAgICh3ZWJLaXRXZWJTcmNQcm9jZXNzRXh0cmFIZWFk
ZXJzKTogUGFyc2UgYSBHVmFsdWUgYW5kIHNldCBoZWFkZXJzCisgICAgICAgIGJhc2VkIG9uIGl0
cyBjb250ZW50cy4KKyAgICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KTogRXh0cmEgaGVhZGVycyBh
bmQgcGVyc2lzdGVudCBjb25uZWN0aW9uCisgICAgICAgIHN1cHBvcnQuIFRoZSByZXNvdXJjZSBs
b2FkZXIgaXMgbm93IGxhemlseSBpbml0aWFsaXplZCBoZXJlLgorCiAyMDE1LTA0LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQmluZyB2aWRlbyBzZWFyY2gg
cmVzdWx0IHBhZ2VzIGFyZSBub3QgUGFnZUNhY2hlYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA0MGI2NjI4Li5kODE5NDQyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTA5LDYgKzEwOSw4IEBA
IHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgR3N0QXBwU3JjKiBhcHBzcmM7CiAg
ICAgR3N0UGFkKiBzcmNwYWQ7CiAgICAgZ2NoYXIqIHVyaTsKKyAgICBib29sIGtlZXBfYWxpdmU7
CisgICAgR3N0U3RydWN0dXJlKiBleHRyYUhlYWRlcnM7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllciogcGxheWVyOwogCkBAIC0xNDUsNyArMTQ3LDkgQEAgZW51bSB7CiAgICAgUFJPUF9JUkFE
SU9fR0VOUkUsCiAgICAgUFJPUF9JUkFESU9fVVJMLAogICAgIFBST1BfSVJBRElPX1RJVExFLAot
ICAgIFBST1BfTE9DQVRJT04KKyAgICBQUk9QX0xPQ0FUSU9OLAorICAgIFBST1BfS0VFUF9BTElW
RSwKKyAgICBQUk9QX0VYVFJBX0hFQURFUlMKIH07CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1w
bGF0ZSBzcmNUZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLApAQCAtMjQy
LDYgKzI0NiwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktp
dFdlYlNyY0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkxvY2F0aW9uIHRvIHJlYWQgZnJvbSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1G
bGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9LRUVQX0FMSVZFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImtlZXAtYWxpdmUiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImtlZXAtYWxpdmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlVzZSBIVFRQIHBlcnNpc3RlbnQgY29ubmVjdGlvbnMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0Us
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5H
UykpKTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKG9rbGFzcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VYVFJBX0hFQURFUlMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJl
eHRyYS1oZWFkZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkV4dHJhIEhlYWRlcnMiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXh0cmEgaGVhZGVycyB0byBhcHBlbmQg
dG8gdGhlIEhUVFAgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEdTVF9UWVBFX1NUUlVDVFVSRSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJhbUZsYWdzKSAo
R19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCiAgICAgZWts
YXNzLT5jaGFuZ2Vfc3RhdGUgPSB3ZWJLaXRXZWJTcmNDaGFuZ2VTdGF0ZTsKIAogICAgIGdfdHlw
ZV9jbGFzc19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNyY1ByaXZhdGUpKTsK
QEAgLTI1NCw2ICsyNzUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19pbml0KFdlYktp
dFdlYlNyYyogc3JjKQogICAgIHNyYy0+cHJpdiA9IHByaXY7CiAgICAgbmV3IChwcml2KSBXZWJL
aXRXZWJTcmNQcml2YXRlKCk7CiAKKyAgICBwcml2LT5rZWVwX2FsaXZlID0gRkFMU0U7CisKICAg
ICBwcml2LT5hcHBzcmMgPSBHU1RfQVBQX1NSQyhnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UoImFw
cHNyYyIsIDApKTsKICAgICBpZiAoIXByaXYtPmFwcHNyYykgewogICAgICAgICBHU1RfRVJST1Jf
T0JKRUNUKHNyYywgIkZhaWxlZCB0byBjcmVhdGUgYXBwc3JjIik7CkBAIC0zMTMsNiArMzM2LDEx
IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAg
ICBXZWJLaXRXZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKG9iamVjdCk7CiAgICAgV2ViS2l0
V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKIAorICAgIGlmIChwcml2LT5leHRyYUhl
YWRlcnMpIHsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlKHByaXYtPmV4dHJhSGVhZGVycyk7
CisgICAgICAgIHByaXYtPmV4dHJhSGVhZGVycyA9IG51bGxwdHI7CisgICAgfQorCiAgICAgZ19m
cmVlKHByaXYtPnVyaSk7CiAgICAgcHJpdi0+fldlYktpdFdlYlNyY1ByaXZhdGUoKTsKIApAQCAt
MzI3LDYgKzM1NSwxOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9M
T0NBVElPTjoKICAgICAgICAgZ3N0X3VyaV9oYW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRfY2Fz
dDxHc3RVUklIYW5kbGVyKj4oc3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSwgMCk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9LRUVQX0FMSVZFOgorICAgICAgICBzcmMtPnBy
aXYtPmtlZXBfYWxpdmUgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX0VYVFJBX0hFQURFUlM6IHsKKyAgICAgICAgY29uc3QgR3N0U3Ry
dWN0dXJlICpzID0gZ3N0X3ZhbHVlX2dldF9zdHJ1Y3R1cmUodmFsdWUpOworCisgICAgICAgIGlm
IChzcmMtPnByaXYtPmV4dHJhSGVhZGVycykKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJl
ZShzcmMtPnByaXYtPmV4dHJhSGVhZGVycyk7CisKKyAgICAgICAgc3JjLT5wcml2LT5leHRyYUhl
YWRlcnMgPSBzID8gZ3N0X3N0cnVjdHVyZV9jb3B5KHMpIDogbnVsbHB0cjsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTM1
NSw2ICszOTUsMTIgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUKICAgICBjYXNlIFBST1BfTE9D
QVRJT046CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+dXJpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0tFRVBfQUxJVkU6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmtlZXBfYWxpdmUpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRVhUUkFfSEVBREVSUzoKKyAgICAgICAgZ3N0X3ZhbHVlX3NldF9zdHJ1Y3R1
cmUodmFsdWUsIHByaXYtPmV4dHJhSGVhZGVycyk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BJRCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTM4OSw3ICs0MzUsOCBAQCBzdGF0aWMg
dm9pZCB3ZWJLaXRXZWJTcmNTdG9wKFdlYktpdFdlYlNyYyogc3JjKQogICAgICAgICBwcml2LT5j
bGllbnQgPSAwOwogICAgIH0KIAotICAgIHByaXYtPmxvYWRlciA9IG51bGxwdHI7CisgICAgaWYg
KCFwcml2LT5rZWVwX2FsaXZlKQorICAgICAgICBwcml2LT5sb2FkZXIgPSBudWxscHRyOwogCiAg
ICAgaWYgKHByaXYtPmJ1ZmZlcikgewogICAgICAgICB1bm1hcEdzdEJ1ZmZlcihwcml2LT5idWZm
ZXIuZ2V0KCkpOwpAQCAtNDMwLDYgKzQ3Nyw1NCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNT
dG9wKFdlYktpdFdlYlNyYyogc3JjKQogICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiU3RvcHBl
ZCByZXF1ZXN0Iik7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhl
YWRlcihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgUmVzb3VyY2VSZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8UmVzb3Vy
Y2VSZXF1ZXN0Kj4odXNlckRhdGEpOworICAgIGNvbnN0IGdjaGFyKiBmaWVsZE5hbWUgPSBnX3F1
YXJrX3RvX3N0cmluZyhmaWVsZElkKTsKKyAgICBHVW5pcXVlUHRyPGdjaGFyPiBmaWVsZENvbnRl
bnQ7CisKKyAgICBpZiAoR19WQUxVRV9UWVBFKHZhbHVlKSA9PSBHX1RZUEVfU1RSSU5HKQorICAg
ICAgICBmaWVsZENvbnRlbnQucmVzZXQoZ192YWx1ZV9kdXBfc3RyaW5nKHZhbHVlKSk7CisgICAg
ZWxzZSB7CisgICAgICAgIEdWYWx1ZSBkZXN0ID0gR19WQUxVRV9JTklUOworCisgICAgICAgIGdf
dmFsdWVfaW5pdCgmZGVzdCwgR19UWVBFX1NUUklORyk7CisgICAgICAgIGlmIChnX3ZhbHVlX3Ry
YW5zZm9ybSh2YWx1ZSwgJmRlc3QpKQorICAgICAgICAgICAgZmllbGRDb250ZW50LnJlc2V0KGdf
dmFsdWVfZHVwX3N0cmluZygmZGVzdCkpOworICAgIH0KKworICAgIGlmICghZmllbGRDb250ZW50
LmdldCgpKSB7CisgICAgICAgIEdTVF9FUlJPUigiZXh0cmEtaGVhZGVycyBmaWVsZCAnJXMnIGNv
bnRhaW5zIG5vIHZhbHVlIG9yIGNhbid0IGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyIsIGZpZWxk
TmFtZSk7CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBHU1RfREVCVUcoIkFw
cGVuZGluZyBleHRyYSBoZWFkZXI6IFwiJXM6ICVzXCIiLCBmaWVsZE5hbWUsIGZpZWxkQ29udGVu
dC5nZXQoKSk7CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKGZpZWxkTmFtZSwgZmll
bGRDb250ZW50LmdldCgpKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFu
IHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMoR1F1YXJrIGZpZWxkSWQsIGNvbnN0IEdW
YWx1ZSogdmFsdWUsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGlmIChHX1ZBTFVFX1RZUEUo
dmFsdWUpID09IEdTVF9UWVBFX0FSUkFZKSB7CisgICAgICAgIHVuc2lnbmVkIG4gPSBnc3RfdmFs
dWVfYXJyYXlfZ2V0X3NpemUodmFsdWUpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFk
ZXIoZmllbGRJZCwgZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSh2YWx1ZSwgaSksIHVzZXJEYXRh
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKEdfVkFMVUVfVFlQRSh2YWx1ZSkgPT0gR1NUX1RZUEVfTElTVCkgeworICAgICAgICB1bnNp
Z25lZCBuID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3NpemUodmFsdWUpOworCisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghd2ViS2l0V2Vi
U3JjU2V0RXh0cmFIZWFkZXIoZmllbGRJZCwgZ3N0X3ZhbHVlX2xpc3RfZ2V0X3ZhbHVlKHZhbHVl
LCBpKSwgdXNlckRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAg
fQorICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIo
ZmllbGRJZCwgdmFsdWUsIHVzZXJEYXRhKTsKKworICAgIHJldHVybiBUUlVFOworfQorCiBzdGF0
aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKIHsKICAgICBXZWJL
aXRXZWJTcmNQcml2YXRlKiBwcml2ID0gc3JjLT5wcml2OwpAQCAtNDQ5LDcgKzU0NCw2IEBAIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgIH0KIAog
ICAgIEFTU0VSVCghcHJpdi0+Y2xpZW50KTsKLSAgICBBU1NFUlQoIXByaXYtPmxvYWRlcik7CiAK
ICAgICBVUkwgdXJsID0gVVJMKFVSTCgpLCBwcml2LT51cmkpOwogCkBAIC00NTcsNiArNTUxLDgg
QEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAg
cmVxdWVzdC5zZXRBbGxvd0Nvb2tpZXModHJ1ZSk7CiAgICAgcmVxdWVzdC5zZXRGaXJzdFBhcnR5
Rm9yQ29va2llcyh1cmwpOwogCisgICAgcHJpdi0+c2l6ZSA9IDA7CisKICAgICBpZiAocHJpdi0+
cGxheWVyKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihwcml2LT5wbGF5ZXItPnJl
ZmVycmVyKCkpOwogCkBAIC00ODEsMjEgKzU3NywyNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJT
cmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKICAgICB9CiAgICAgcHJpdi0+b2Zmc2V0ID0gcHJp
di0+cmVxdWVzdGVkT2Zmc2V0OwogCisgICAgaWYgKCFwcml2LT5rZWVwX2FsaXZlKSB7CisgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGFudCBjb25uZWN0aW9uIHN1cHBvcnQg
ZGlzYWJsZWQiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRl
ck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgIH0KKworICAgIGlmIChwcml2LT5leHRy
YUhlYWRlcnMpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5leHRyYUhlYWRl
cnMsIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1ZXN0KTsKKwogICAgIC8v
IFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFkYXRhLCBqdXN0IGluIGNh
c2UgLi4uCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6Oklj
eU1ldGFkYXRhLCAiMSIpOwogCiAgICAgYm9vbCBsb2FkRmFpbGVkID0gdHJ1ZTsKLSAgICBpZiAo
cHJpdi0+cGxheWVyKSB7CisgICAgaWYgKHByaXYtPnBsYXllciAmJiAhcHJpdi0+bG9hZGVyKQog
ICAgICAgICBwcml2LT5sb2FkZXIgPSBwcml2LT5wbGF5ZXItPmNyZWF0ZVJlc291cmNlTG9hZGVy
KHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ+KHNyYykpOwot
ICAgICAgICBpZiAocHJpdi0+bG9hZGVyKSB7Ci0gICAgICAgICAgICBQbGF0Zm9ybU1lZGlhUmVz
b3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIGxvYWRPcHRpb25zID0gMDsKLSAgICAgICAgICAgIGlm
IChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkKLSAgICAgICAgICAgICAgICBsb2Fk
T3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkJ1ZmZl
ckRhdGE7Ci0gICAgICAgICAgICBsb2FkRmFpbGVkID0gIXByaXYtPmxvYWRlci0+c3RhcnQocmVx
dWVzdCwgbG9hZE9wdGlvbnMpOwotICAgICAgICB9Ci0gICAgfQogCi0gICAgaWYgKCFwcml2LT5s
b2FkZXIpIHsKKyAgICBpZiAocHJpdi0+bG9hZGVyKSB7CisgICAgICAgIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMgbG9hZE9wdGlvbnMgPSAwOworICAgICAgICBpZiAo
cmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJibG9iIikpCisgICAgICAgICAgICBsb2FkT3B0aW9u
cyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb246OkJ1ZmZlckRhdGE7
CisgICAgICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+bG9hZGVyLT5zdGFydChyZXF1ZXN0LCBsb2Fk
T3B0aW9ucyk7CisgICAgfSBlbHNlIHsKICAgICAgICAgcHJpdi0+Y2xpZW50ID0gbmV3IFJlc291
cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50KHNyYywgcmVxdWVzdCk7CiAgICAgICAgIGxvYWRGYWls
ZWQgPSBwcml2LT5jbGllbnQtPmxvYWRGYWlsZWQoKTsKICAgICB9Ci0tIAoyLjEuNA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250265</attachid>
            <date>2015-04-07 06:35:52 -0700</date>
            <delta_ts>2015-04-07 09:05:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>9855</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwYzRhYjcwNGQ1MWJmZmJiYjA1MjgwMjU1MmRiMDMwYTI1ZjA5ZGE2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgQXByIDIwMTUgMTU6Mjk6NTIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyNiArKysrKwogLi4uL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIu
Y3BwICAgICAgICAgfCAxMTcgKysrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQs
IDEzMSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMyNDU3
NC4uOGMyMzgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE1LTA0LTA3ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBleHRyYS1oZWFkZXJzIGFuZCBrZWVwLWFsaXZlIHByb3BlcnRpZXMgZm9yIEhUVFAgc291cmNl
IGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0MzQ4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEtlZXAgdGhlIHJlc291cmNlIGxvYWRlciBhcm91bmQgd2hlbiBwZXJzaXN0ZW50IEhUVFAgY29u
bmVjdGlvbgorICAgICAgICBzdXBwb3J0IGlzIGVuYWJsZWQuIFRoZSBrZWVwLWFsaXZlIHByb3Bl
cnR5IGlzIHNldCB0byBmYWxzZSBieQorICAgICAgICBkZWZhdWx0LiBBbHNvIGJlZm9yZSBzZW5k
aW5nIHRoZSBIVFRQIHJlcXVlc3Qgd2Ugbm93IGNoZWNrIHRoZQorICAgICAgICBjb250ZW50cyBv
ZiB0aGUgZXh0cmEtaGVhZGVycyBHc3RTdHJ1Y3R1cmUgYW5kIHNldCBhZGRpdGlvbmFsCisgICAg
ICAgIGhlYWRlcnMgYmFzZWQgb24gdGhlIHN0cnVjdHVyZSBjb250ZW50cy4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAod2Via2l0X3dlYl9zcmNfaW5pdCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNG
aW5hbGl6ZSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNTdG9wKTogQ2xl
YXIgcmVzb3VyY2UgbG9hZGVyIG9ubHkgZm9yIG5vbi1wZXJzaXN0ZW50IGNvbm5lY3Rpb25zLgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIpOiBVdGlsaXR5IGZ1bmN0aW9uIHRv
IGFwcGVuZCBoZWFkZXJzCisgICAgICAgIHRvIGFuIGV4aXN0aW5nIHJlcXVlc3QgYmFzZWQgb24g
YSBHVmFsdWUgY29udGVudHMuCisgICAgICAgICh3ZWJLaXRXZWJTcmNQcm9jZXNzRXh0cmFIZWFk
ZXJzKTogUGFyc2UgYSBHVmFsdWUgYW5kIHNldCBoZWFkZXJzCisgICAgICAgIGJhc2VkIG9uIGl0
cyBjb250ZW50cy4KKyAgICAgICAgKHdlYktpdFdlYlNyY1N0YXJ0KTogRXh0cmEgaGVhZGVycyBh
bmQgcGVyc2lzdGVudCBjb25uZWN0aW9uCisgICAgICAgIHN1cHBvcnQuIFRoZSByZXNvdXJjZSBs
b2FkZXIgaXMgbm93IGxhemlseSBpbml0aWFsaXplZCBoZXJlLgorCiAyMDE1LTA0LTA2ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQmluZyB2aWRlbyBzZWFyY2gg
cmVzdWx0IHBhZ2VzIGFyZSBub3QgUGFnZUNhY2hlYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0
V2ViU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA0MGI2NjI4Li5mYzEzMGQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291
cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTA5LDYgKzEwOSw4IEBA
IHN0cnVjdCBfV2ViS2l0V2ViU3JjUHJpdmF0ZSB7CiAgICAgR3N0QXBwU3JjKiBhcHBzcmM7CiAg
ICAgR3N0UGFkKiBzcmNwYWQ7CiAgICAgZ2NoYXIqIHVyaTsKKyAgICBib29sIGtlZXBfYWxpdmU7
CisgICAgR3N0U3RydWN0dXJlKiBleHRyYUhlYWRlcnM7CiAKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllciogcGxheWVyOwogCkBAIC0xNDUsNyArMTQ3LDkgQEAgZW51bSB7CiAgICAgUFJPUF9JUkFE
SU9fR0VOUkUsCiAgICAgUFJPUF9JUkFESU9fVVJMLAogICAgIFBST1BfSVJBRElPX1RJVExFLAot
ICAgIFBST1BfTE9DQVRJT04KKyAgICBQUk9QX0xPQ0FUSU9OLAorICAgIFBST1BfS0VFUF9BTElW
RSwKKyAgICBQUk9QX0VYVFJBX0hFQURFUlMKIH07CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1w
bGF0ZSBzcmNUZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFKCJzcmMiLApAQCAtMjQy
LDYgKzI0NiwxNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NyY19jbGFzc19pbml0KFdlYktp
dFdlYlNyY0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIkxvY2F0aW9uIHRvIHJlYWQgZnJvbSIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHUGFyYW1G
bGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2tsYXNzLCBQUk9QX0tFRVBfQUxJ
VkUsCisgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJrZWVwLWFsaXZlIiwgImtlZXAtYWxp
dmUiLCAiVXNlIEhUVFAgcGVyc2lzdGVudCBjb25uZWN0aW9ucyIsCisgICAgICAgICAgICBGQUxT
RSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJ
TkdTKSkpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsIFBS
T1BfRVhUUkFfSEVBREVSUywKKyAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJleHRyYS1oZWFk
ZXJzIiwgIkV4dHJhIEhlYWRlcnMiLCAiRXh0cmEgaGVhZGVycyB0byBhcHBlbmQgdG8gdGhlIEhU
VFAgcmVxdWVzdCIsCisgICAgICAgICAgICBHU1RfVFlQRV9TVFJVQ1RVUkUsIChHUGFyYW1GbGFn
cykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKwogICAg
IGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gd2ViS2l0V2ViU3JjQ2hhbmdlU3RhdGU7CiAKICAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTcmNQcml2YXRl
KSk7CkBAIC0yNTQsNiArMjY3LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zcmNfaW5pdChX
ZWJLaXRXZWJTcmMqIHNyYykKICAgICBzcmMtPnByaXYgPSBwcml2OwogICAgIG5ldyAocHJpdikg
V2ViS2l0V2ViU3JjUHJpdmF0ZSgpOwogCisgICAgcHJpdi0+a2VlcF9hbGl2ZSA9IEZBTFNFOwor
CiAgICAgcHJpdi0+YXBwc3JjID0gR1NUX0FQUF9TUkMoZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtl
KCJhcHBzcmMiLCAwKSk7CiAgICAgaWYgKCFwcml2LT5hcHBzcmMpIHsKICAgICAgICAgR1NUX0VS
Uk9SX09CSkVDVChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIGFwcHNyYyIpOwpAQCAtMzEzLDYgKzMy
OCwxMSBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNGaW5hbGl6ZShHT2JqZWN0KiBvYmplY3Qp
CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhvYmplY3QpOwogICAgIFdl
YktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CiAKKyAgICBpZiAocHJpdi0+ZXh0
cmFIZWFkZXJzKSB7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShwcml2LT5leHRyYUhlYWRl
cnMpOworICAgICAgICBwcml2LT5leHRyYUhlYWRlcnMgPSBudWxscHRyOworICAgIH0KKwogICAg
IGdfZnJlZShwcml2LT51cmkpOwogICAgIHByaXYtPn5XZWJLaXRXZWJTcmNQcml2YXRlKCk7CiAK
QEAgLTMyNyw2ICszNDcsMTcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0UHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wSUQsIGNvbnN0IEdWYWx1ZSoKICAgICBjYXNlIFBS
T1BfTE9DQVRJT046CiAgICAgICAgIGdzdF91cmlfaGFuZGxlcl9zZXRfdXJpKHJlaW50ZXJwcmV0
X2Nhc3Q8R3N0VVJJSGFuZGxlcio+KHNyYyksIGdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSksIDAp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfS0VFUF9BTElWRToKKyAgICAgICAgc3Jj
LT5wcml2LT5rZWVwX2FsaXZlID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUFJPUF9FWFRSQV9IRUFERVJTOiB7CisgICAgICAgIGlmIChzcmMt
PnByaXYtPmV4dHJhSGVhZGVycykKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZShzcmMt
PnByaXYtPmV4dHJhSGVhZGVycyk7CisKKyAgICAgICAgY29uc3QgR3N0U3RydWN0dXJlKiBzID0g
Z3N0X3ZhbHVlX2dldF9zdHJ1Y3R1cmUodmFsdWUpOworICAgICAgICBzcmMtPnByaXYtPmV4dHJh
SGVhZGVycyA9IHMgPyBnc3Rfc3RydWN0dXJlX2NvcHkocykgOiBudWxscHRyOworICAgICAgICBi
cmVhazsKKyAgICB9CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElE
X1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcElELCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MzU1LDYgKzM4NiwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eShHT2Jq
ZWN0KiBvYmplY3QsIGd1aW50IHByb3BJRCwgR1ZhbHVlKiB2YWx1ZQogICAgIGNhc2UgUFJPUF9M
T0NBVElPTjoKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT51cmkpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfS0VFUF9BTElWRToKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+a2VlcF9hbGl2ZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FWFRSQV9IRUFERVJTOgorICAgICAgICBnc3RfdmFsdWVfc2V0X3N0cnVj
dHVyZSh2YWx1ZSwgcHJpdi0+ZXh0cmFIZWFkZXJzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVm
YXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwg
cHJvcElELCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg5LDcgKzQyNiw4IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIHByaXYt
PmNsaWVudCA9IDA7CiAgICAgfQogCi0gICAgcHJpdi0+bG9hZGVyID0gbnVsbHB0cjsKKyAgICBp
ZiAoIXByaXYtPmtlZXBfYWxpdmUpCisgICAgICAgIHByaXYtPmxvYWRlciA9IG51bGxwdHI7CiAK
ICAgICBpZiAocHJpdi0+YnVmZmVyKSB7CiAgICAgICAgIHVubWFwR3N0QnVmZmVyKHByaXYtPmJ1
ZmZlci5nZXQoKSk7CkBAIC00MzAsNiArNDY4LDU0IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNy
Y1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdG9w
cGVkIHJlcXVlc3QiKTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1NldEV4dHJh
SGVhZGVyKEdRdWFyayBmaWVsZElkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBncG9pbnRlciB1c2Vy
RGF0YSkKK3sKKyAgICBSZXNvdXJjZVJlcXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNv
dXJjZVJlcXVlc3QqPih1c2VyRGF0YSk7CisgICAgY29uc3QgZ2NoYXIqIGZpZWxkTmFtZSA9IGdf
cXVhcmtfdG9fc3RyaW5nKGZpZWxkSWQpOworICAgIEdVbmlxdWVQdHI8Z2NoYXI+IGZpZWxkQ29u
dGVudDsKKworICAgIGlmIChHX1ZBTFVFX1RZUEUodmFsdWUpID09IEdfVFlQRV9TVFJJTkcpCisg
ICAgICAgIGZpZWxkQ29udGVudC5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgR1ZhbHVlIGRlc3QgPSBHX1ZBTFVFX0lOSVQ7CisKKyAgICAgICAg
Z192YWx1ZV9pbml0KCZkZXN0LCBHX1RZUEVfU1RSSU5HKTsKKyAgICAgICAgaWYgKGdfdmFsdWVf
dHJhbnNmb3JtKHZhbHVlLCAmZGVzdCkpCisgICAgICAgICAgICBmaWVsZENvbnRlbnQucmVzZXQo
Z192YWx1ZV9kdXBfc3RyaW5nKCZkZXN0KSk7CisgICAgfQorCisgICAgaWYgKCFmaWVsZENvbnRl
bnQuZ2V0KCkpIHsKKyAgICAgICAgR1NUX0VSUk9SKCJleHRyYS1oZWFkZXJzIGZpZWxkICclcycg
Y29udGFpbnMgbm8gdmFsdWUgb3IgY2FuJ3QgYmUgY29udmVydGVkIHRvIGEgc3RyaW5nIiwgZmll
bGROYW1lKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIEdTVF9ERUJVRygi
QXBwZW5kaW5nIGV4dHJhIGhlYWRlcjogXCIlczogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250
ZW50LmdldCgpKTsKKyAgICByZXF1ZXN0LT5zZXRIVFRQSGVhZGVyRmllbGQoZmllbGROYW1lLCBm
aWVsZENvbnRlbnQuZ2V0KCkpOworICAgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0V2ViU3JjUHJvY2Vzc0V4dHJhSGVhZGVycyhHUXVhcmsgZmllbGRJZCwgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKEdfVkFMVUVfVFlQ
RSh2YWx1ZSkgPT0gR1NUX1RZUEVfQVJSQVkpIHsKKyAgICAgICAgdW5zaWduZWQgbiA9IGdzdF92
YWx1ZV9hcnJheV9nZXRfc2l6ZSh2YWx1ZSk7CisKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKCF3ZWJLaXRXZWJTcmNTZXRFeHRyYUhl
YWRlcihmaWVsZElkLCBnc3RfdmFsdWVfYXJyYXlfZ2V0X3ZhbHVlKHZhbHVlLCBpKSwgdXNlckRh
dGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSBpZiAoR19WQUxVRV9UWVBFKHZhbHVlKSA9PSBHU1RfVFlQRV9MSVNUKSB7CisgICAgICAgIHVu
c2lnbmVkIG4gPSBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSh2YWx1ZSk7CisKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgaWYgKCF3ZWJLaXRX
ZWJTcmNTZXRFeHRyYUhlYWRlcihmaWVsZElkLCBnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUodmFs
dWUsIGkpLCB1c2VyRGF0YSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAg
ICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhlYWRl
cihmaWVsZElkLCB2YWx1ZSwgdXNlckRhdGEpOworCisgICAgcmV0dXJuIFRSVUU7Cit9CisKIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogewogICAgIFdl
YktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnByaXY7CkBAIC00NDksNyArNTM1LDYgQEAg
c3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQog
CiAgICAgQVNTRVJUKCFwcml2LT5jbGllbnQpOwotICAgIEFTU0VSVCghcHJpdi0+bG9hZGVyKTsK
IAogICAgIFVSTCB1cmwgPSBVUkwoVVJMKCksIHByaXYtPnVyaSk7CiAKQEAgLTQ1Nyw2ICs1NDIs
OCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykKICAg
ICByZXF1ZXN0LnNldEFsbG93Q29va2llcyh0cnVlKTsKICAgICByZXF1ZXN0LnNldEZpcnN0UGFy
dHlGb3JDb29raWVzKHVybCk7CiAKKyAgICBwcml2LT5zaXplID0gMDsKKwogICAgIGlmIChwcml2
LT5wbGF5ZXIpCiAgICAgICAgIHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHByaXYtPnBsYXllci0+
cmVmZXJyZXIoKSk7CiAKQEAgLTQ4MSwyMSArNTY4LDI3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdl
YlNyY1N0YXJ0KFdlYktpdFdlYlNyYyogc3JjKQogICAgIH0KICAgICBwcml2LT5vZmZzZXQgPSBw
cml2LT5yZXF1ZXN0ZWRPZmZzZXQ7CiAKKyAgICBpZiAoIXByaXYtPmtlZXBfYWxpdmUpIHsKKyAg
ICAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJQZXJzaXN0YW50IGNvbm5lY3Rpb24gc3VwcG9y
dCBkaXNhYmxlZCIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVh
ZGVyTmFtZTo6Q29ubmVjdGlvbiwgImNsb3NlIik7CisgICAgfQorCisgICAgaWYgKHByaXYtPmV4
dHJhSGVhZGVycykKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9mb3JlYWNoKHByaXYtPmV4dHJhSGVh
ZGVycywgd2ViS2l0V2ViU3JjUHJvY2Vzc0V4dHJhSGVhZGVycywgJnJlcXVlc3QpOworCiAgICAg
Ly8gV2UgYWx3YXlzIHJlcXVlc3QgSWNlY2FzdC9TaG91dGNhc3QgbWV0YWRhdGEsIGp1c3QgaW4g
Y2FzZSAuLi4KICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6
SWN5TWV0YWRhdGEsICIxIik7CiAKICAgICBib29sIGxvYWRGYWlsZWQgPSB0cnVlOwotICAgIGlm
IChwcml2LT5wbGF5ZXIpIHsKKyAgICBpZiAocHJpdi0+cGxheWVyICYmICFwcml2LT5sb2FkZXIp
CiAgICAgICAgIHByaXYtPmxvYWRlciA9IHByaXYtPnBsYXllci0+Y3JlYXRlUmVzb3VyY2VMb2Fk
ZXIoc3RkOjptYWtlX3VuaXF1ZTxDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudD4oc3JjKSk7
Ci0gICAgICAgIGlmIChwcml2LT5sb2FkZXIpIHsKLSAgICAgICAgICAgIFBsYXRmb3JtTWVkaWFS
ZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMgbG9hZE9wdGlvbnMgPSAwOwotICAgICAgICAgICAg
aWYgKHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiYmxvYiIpKQotICAgICAgICAgICAgICAgIGxv
YWRPcHRpb25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVm
ZmVyRGF0YTsKLSAgICAgICAgICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+bG9hZGVyLT5zdGFydChy
ZXF1ZXN0LCBsb2FkT3B0aW9ucyk7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICBpZiAoIXByaXYt
PmxvYWRlcikgeworICAgIGlmIChwcml2LT5sb2FkZXIpIHsKKyAgICAgICAgUGxhdGZvcm1NZWRp
YVJlc291cmNlTG9hZGVyOjpMb2FkT3B0aW9ucyBsb2FkT3B0aW9ucyA9IDA7CisgICAgICAgIGlm
IChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkKKyAgICAgICAgICAgIGxvYWRPcHRp
b25zIHw9IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbjo6QnVmZmVyRGF0
YTsKKyAgICAgICAgbG9hZEZhaWxlZCA9ICFwcml2LT5sb2FkZXItPnN0YXJ0KHJlcXVlc3QsIGxv
YWRPcHRpb25zKTsKKyAgICB9IGVsc2UgewogICAgICAgICBwcml2LT5jbGllbnQgPSBuZXcgUmVz
b3VyY2VIYW5kbGVTdHJlYW1pbmdDbGllbnQoc3JjLCByZXF1ZXN0KTsKICAgICAgICAgbG9hZEZh
aWxlZCA9IHByaXYtPmNsaWVudC0+bG9hZEZhaWxlZCgpOwogICAgIH0KLS0gCjIuMS40
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250269</attachid>
            <date>2015-04-07 09:05:04 -0700</date>
            <delta_ts>2015-04-07 09:19:14 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>11065</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA4NDcwNWUyMzMxMWJkZjlmZjU2ZTg5NTYxNjIwOTNlY2UwZWUzODhhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDcgQXByIDIwMTUgMTU6Mjk6NTIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBw
YXRjaAoKLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyOCArKysrKysKIC4uLi9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJl
YW1lci5oICAgICAgIHwgIDQwICsrKysrKysrCiAuLi4vZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJj
ZUdTdHJlYW1lci5jcHAgICAgICAgICB8IDExMSArKysrKysrKysrKysrKysrKystLS0KIDMgZmls
ZXMgY2hhbmdlZCwgMTY3IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQogY3JlYXRlIG1v
ZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HVW5p
cXVlUHRyR1N0cmVhbWVyLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzMyNDU3NC4uODc3NjgzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE1LTA0LTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBleHRyYS1oZWFkZXJzIGFu
ZCBrZWVwLWFsaXZlIHByb3BlcnRpZXMgZm9yIEhUVFAgc291cmNlIGVsZW1lbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEtlZXAgdGhlIHJlc291cmNl
IGxvYWRlciBhcm91bmQgd2hlbiBwZXJzaXN0ZW50IEhUVFAgY29ubmVjdGlvbgorICAgICAgICBz
dXBwb3J0IGlzIGVuYWJsZWQuIFRoZSBrZWVwLWFsaXZlIHByb3BlcnR5IGlzIHNldCB0byBmYWxz
ZSBieQorICAgICAgICBkZWZhdWx0LiBBbHNvIGJlZm9yZSBzZW5kaW5nIHRoZSBIVFRQIHJlcXVl
c3Qgd2Ugbm93IGNoZWNrIHRoZQorICAgICAgICBjb250ZW50cyBvZiB0aGUgZXh0cmEtaGVhZGVy
cyBHc3RTdHJ1Y3R1cmUgYW5kIHNldCBhZGRpdGlvbmFsCisgICAgICAgIGhlYWRlcnMgYmFzZWQg
b24gdGhlIHN0cnVjdHVyZSBjb250ZW50cy4KKworICAgICAgICBQYXRjaCBpbnNwaXJlZCBieSBH
U3RyZWFtZXIncyBzb3VwaHR0cHNyYyBlbGVtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3
ZWJraXRfd2ViX3NyY19pbml0KToKKyAgICAgICAgKHdlYktpdFdlYlNyY0ZpbmFsaXplKToKKyAg
ICAgICAgKHdlYktpdFdlYlNyY1NldFByb3BlcnR5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY0dl
dFByb3BlcnR5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1N0b3ApOiBDbGVhciByZXNvdXJjZSBs
b2FkZXIgb25seSBmb3Igbm9uLXBlcnNpc3RlbnQgY29ubmVjdGlvbnMuCisgICAgICAgICh3ZWJL
aXRXZWJTcmNTZXRFeHRyYUhlYWRlcik6IFV0aWxpdHkgZnVuY3Rpb24gdG8gYXBwZW5kIGhlYWRl
cnMKKyAgICAgICAgdG8gYW4gZXhpc3RpbmcgcmVxdWVzdCBiYXNlZCBvbiBhIEdWYWx1ZSBjb250
ZW50cy4KKyAgICAgICAgKHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMpOiBQYXJzZSBh
IEdWYWx1ZSBhbmQgc2V0IGhlYWRlcnMKKyAgICAgICAgYmFzZWQgb24gaXRzIGNvbnRlbnRzLgor
ICAgICAgICAod2ViS2l0V2ViU3JjU3RhcnQpOiBFeHRyYSBoZWFkZXJzIGFuZCBwZXJzaXN0ZW50
IGNvbm5lY3Rpb24KKyAgICAgICAgc3VwcG9ydC4gVGhlIHJlc291cmNlIGxvYWRlciBpcyBub3cg
bGF6aWx5IGluaXRpYWxpemVkIGhlcmUuCisKIDIwMTUtMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBCaW5nIHZpZGVvIHNlYXJjaCByZXN1bHQgcGFnZXMg
YXJlIG5vdCBQYWdlQ2FjaGVhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1VuaXF1ZVB0ckdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQdHJHU3RyZWFtZXIuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGE4ZjIzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dVbmlxdWVQdHJH
U3RyZWFtZXIuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogIENvcHlyaWdodCAoQykgMjAxNSBJ
Z2FsaWEgUy5MCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqICBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgR1VuaXF1ZVB0ckdTdHJlYW1lcl9oCisjZGVm
aW5lIEdVbmlxdWVQdHJHU3RyZWFtZXJfaAorI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRl
IDxnc3QvZ3N0c3RydWN0dXJlLmg+CisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR1VuaXF1ZVB0ci5o
PgorCituYW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgR1B0ckRlbGV0ZXI8R3N0
U3RydWN0dXJlPiB7CisgICAgdm9pZCBvcGVyYXRvcigpIChHc3RTdHJ1Y3R1cmUqIHB0cikgY29u
c3QKKyAgICB7CisgICAgICAgIGlmIChwdHIpCisgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2Zy
ZWUocHRyKTsKKyAgICB9Cit9OworCit9CisKKyNlbmRpZiAvLyBVU0UoR1NUUkVBTUVSKQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCmluZGV4IDQw
YjY2MjguLjIxYWVjZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFt
ZXIuY3BwCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgi
CiAjaW5jbHVkZSAiR1N0cmVhbWVyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiR1VuaXF1ZVB0ckdT
dHJlYW1lci5oIgogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlh
UGxheWVyLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTEwOSw2ICsxMTAsOCBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlNyY1ByaXZhdGUgewogICAgIEdzdEFwcFNyYyogYXBwc3JjOwog
ICAgIEdzdFBhZCogc3JjcGFkOwogICAgIGdjaGFyKiB1cmk7CisgICAgYm9vbCBrZWVwQWxpdmU7
CisgICAgR1VuaXF1ZVB0cjxHc3RTdHJ1Y3R1cmU+IGV4dHJhSGVhZGVyczsKIAogICAgIFdlYkNv
cmU6Ok1lZGlhUGxheWVyKiBwbGF5ZXI7CiAKQEAgLTE0NSw3ICsxNDgsOSBAQCBlbnVtIHsKICAg
ICBQUk9QX0lSQURJT19HRU5SRSwKICAgICBQUk9QX0lSQURJT19VUkwsCiAgICAgUFJPUF9JUkFE
SU9fVElUTEUsCi0gICAgUFJPUF9MT0NBVElPTgorICAgIFBST1BfTE9DQVRJT04sCisgICAgUFJP
UF9LRUVQX0FMSVZFLAorICAgIFBST1BfRVhUUkFfSEVBREVSUwogfTsKIAogc3RhdGljIEdzdFN0
YXRpY1BhZFRlbXBsYXRlIHNyY1RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUoInNy
YyIsCkBAIC0yNDIsNiArMjQ3LDE1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc3JjX2NsYXNz
X2luaXQoV2ViS2l0V2ViU3JjQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTG9jYXRpb24gdG8gcmVhZCBmcm9tIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJ
TkdTKSkpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShva2xhc3MsIFBS
T1BfS0VFUF9BTElWRSwKKyAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImtlZXAtYWxpdmUi
LCAia2VlcC1hbGl2ZSIsICJVc2UgSFRUUCBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIiwKKyAgICAg
ICAgICAgIEZBTFNFLCBzdGF0aWNfY2FzdDxHUGFyYW1GbGFncz4oR19QQVJBTV9SRUFEV1JJVEUg
fCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFs
bF9wcm9wZXJ0eShva2xhc3MsIFBST1BfRVhUUkFfSEVBREVSUywKKyAgICAgICAgZ19wYXJhbV9z
cGVjX2JveGVkKCJleHRyYS1oZWFkZXJzIiwgIkV4dHJhIEhlYWRlcnMiLCAiRXh0cmEgaGVhZGVy
cyB0byBhcHBlbmQgdG8gdGhlIEhUVFAgcmVxdWVzdCIsCisgICAgICAgICAgICBHU1RfVFlQRV9T
VFJVQ1RVUkUsIHN0YXRpY19jYXN0PEdQYXJhbUZsYWdzPihHX1BBUkFNX1JFQURXUklURSB8IEdf
UEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisKICAgICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IHdl
YktpdFdlYlNyY0NoYW5nZVN0YXRlOwogCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGts
YXNzLCBzaXplb2YoV2ViS2l0V2ViU3JjUHJpdmF0ZSkpOwpAQCAtMzI3LDYgKzM0MSwxNCBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTZXRQcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50
IHByb3BJRCwgY29uc3QgR1ZhbHVlKgogICAgIGNhc2UgUFJPUF9MT0NBVElPTjoKICAgICAgICAg
Z3N0X3VyaV9oYW5kbGVyX3NldF91cmkocmVpbnRlcnByZXRfY2FzdDxHc3RVUklIYW5kbGVyKj4o
c3JjKSwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSwgMCk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9LRUVQX0FMSVZFOgorICAgICAgICBzcmMtPnByaXYtPmtlZXBBbGl2ZSA9IGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
RVhUUkFfSEVBREVSUzogeworICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUqIHMgPSBnc3RfdmFs
dWVfZ2V0X3N0cnVjdHVyZSh2YWx1ZSk7CisgICAgICAgIHNyYy0+cHJpdi0+ZXh0cmFIZWFkZXJz
LnJlc2V0KHMgPyBnc3Rfc3RydWN0dXJlX2NvcHkocykgOiBudWxscHRyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9Q
Uk9QRVJUWV9JRChvYmplY3QsIHByb3BJRCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTM1
NSw2ICszNzcsMTIgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjR2V0UHJvcGVydHkoR09iamVj
dCogb2JqZWN0LCBndWludCBwcm9wSUQsIEdWYWx1ZSogdmFsdWUKICAgICBjYXNlIFBST1BfTE9D
QVRJT046CiAgICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgcHJpdi0+dXJpKTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0tFRVBfQUxJVkU6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmtlZXBBbGl2ZSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FWFRSQV9IRUFERVJTOgorICAgICAgICBnc3RfdmFsdWVfc2V0X3N0cnVjdHVy
ZSh2YWx1ZSwgcHJpdi0+ZXh0cmFIZWFkZXJzLmdldCgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAg
ZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVj
dCwgcHJvcElELCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg5LDcgKzQxNyw4IEBAIHN0
YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0b3AoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgICAgIHBy
aXYtPmNsaWVudCA9IDA7CiAgICAgfQogCi0gICAgcHJpdi0+bG9hZGVyID0gbnVsbHB0cjsKKyAg
ICBpZiAoIXByaXYtPmtlZXBBbGl2ZSkKKyAgICAgICAgcHJpdi0+bG9hZGVyID0gbnVsbHB0cjsK
IAogICAgIGlmIChwcml2LT5idWZmZXIpIHsKICAgICAgICAgdW5tYXBHc3RCdWZmZXIocHJpdi0+
YnVmZmVyLmdldCgpKTsKQEAgLTQzMCw2ICs0NTksNTcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2Vi
U3JjU3RvcChXZWJLaXRXZWJTcmMqIHNyYykKICAgICBHU1RfREVCVUdfT0JKRUNUKHNyYywgIlN0
b3BwZWQgcmVxdWVzdCIpOwogfQogCitzdGF0aWMgYm9vbCB3ZWJLaXRXZWJTcmNTZXRFeHRyYUhl
YWRlcihHUXVhcmsgZmllbGRJZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgR1VuaXF1ZVB0cjxnY2hhcj4gZmllbGRDb250ZW50OworCisgICAgaWYgKEdf
VkFMVUVfSE9MRFNfU1RSSU5HKHZhbHVlKSkKKyAgICAgICAgZmllbGRDb250ZW50LnJlc2V0KGdf
dmFsdWVfZHVwX3N0cmluZyh2YWx1ZSkpOworICAgIGVsc2UgeworICAgICAgICBHVmFsdWUgZGVz
dCA9IEdfVkFMVUVfSU5JVDsKKworICAgICAgICBnX3ZhbHVlX2luaXQoJmRlc3QsIEdfVFlQRV9T
VFJJTkcpOworICAgICAgICBpZiAoZ192YWx1ZV90cmFuc2Zvcm0odmFsdWUsICZkZXN0KSkKKyAg
ICAgICAgICAgIGZpZWxkQ29udGVudC5yZXNldChnX3ZhbHVlX2R1cF9zdHJpbmcoJmRlc3QpKTsK
KyAgICB9CisKKyAgICBjb25zdCBnY2hhciogZmllbGROYW1lID0gZ19xdWFya190b19zdHJpbmco
ZmllbGRJZCk7CisgICAgaWYgKCFmaWVsZENvbnRlbnQuZ2V0KCkpIHsKKyAgICAgICAgR1NUX0VS
Uk9SKCJleHRyYS1oZWFkZXJzIGZpZWxkICclcycgY29udGFpbnMgbm8gdmFsdWUgb3IgY2FuJ3Qg
YmUgY29udmVydGVkIHRvIGEgc3RyaW5nIiwgZmllbGROYW1lKTsKKyAgICAgICAgcmV0dXJuIEZB
TFNFOworICAgIH0KKworICAgIEdTVF9ERUJVRygiQXBwZW5kaW5nIGV4dHJhIGhlYWRlcjogXCIl
czogJXNcIiIsIGZpZWxkTmFtZSwgZmllbGRDb250ZW50LmdldCgpKTsKKyAgICBSZXNvdXJjZVJl
cXVlc3QqIHJlcXVlc3QgPSBzdGF0aWNfY2FzdDxSZXNvdXJjZVJlcXVlc3QqPih1c2VyRGF0YSk7
CisgICAgcmVxdWVzdC0+c2V0SFRUUEhlYWRlckZpZWxkKGZpZWxkTmFtZSwgZmllbGRDb250ZW50
LmdldCgpKTsKKyAgICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYktpdFdl
YlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMoR1F1YXJrIGZpZWxkSWQsIGNvbnN0IEdWYWx1ZSogdmFs
dWUsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIGlmIChHX1ZBTFVFX1RZUEUodmFsdWUpID09
IEdTVF9UWVBFX0FSUkFZKSB7CisgICAgICAgIHVuc2lnbmVkIG4gPSBnc3RfdmFsdWVfYXJyYXlf
Z2V0X3NpemUodmFsdWUpOworCisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBp
KyspIHsKKyAgICAgICAgICAgIGlmICghd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoZmllbGRJ
ZCwgZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSh2YWx1ZSwgaSksIHVzZXJEYXRhKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFRSVUU7
CisgICAgfQorCisgICAgaWYgKEdfVkFMVUVfVFlQRSh2YWx1ZSkgPT0gR1NUX1RZUEVfTElTVCkg
eworICAgICAgICB1bnNpZ25lZCBuID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3NpemUodmFsdWUpOwor
CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAg
IGlmICghd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoZmllbGRJZCwgZ3N0X3ZhbHVlX2xpc3Rf
Z2V0X3ZhbHVlKHZhbHVlLCBpKSwgdXNlckRhdGEpKQorICAgICAgICAgICAgICAgIHJldHVybiBG
QUxTRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisKKyAgICByZXR1
cm4gd2ViS2l0V2ViU3JjU2V0RXh0cmFIZWFkZXIoZmllbGRJZCwgdmFsdWUsIHVzZXJEYXRhKTsK
K30KKwogc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiB7
CiAgICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKQEAgLTQ0OSw3ICs1
MjksNiBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNTdGFydChXZWJLaXRXZWJTcmMqIHNyYykK
ICAgICB9CiAKICAgICBBU1NFUlQoIXByaXYtPmNsaWVudCk7Ci0gICAgQVNTRVJUKCFwcml2LT5s
b2FkZXIpOwogCiAgICAgVVJMIHVybCA9IFVSTChVUkwoKSwgcHJpdi0+dXJpKTsKIApAQCAtNDU3
LDYgKzUzNiw4IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY1N0YXJ0KFdlYktpdFdlYlNyYyog
c3JjKQogICAgIHJlcXVlc3Quc2V0QWxsb3dDb29raWVzKHRydWUpOwogICAgIHJlcXVlc3Quc2V0
Rmlyc3RQYXJ0eUZvckNvb2tpZXModXJsKTsKIAorICAgIHByaXYtPnNpemUgPSAwOworCiAgICAg
aWYgKHByaXYtPnBsYXllcikKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocHJpdi0+
cGxheWVyLT5yZWZlcnJlcigpKTsKIApAQCAtNDgxLDIxICs1NjIsMjcgQEAgc3RhdGljIHZvaWQg
d2ViS2l0V2ViU3JjU3RhcnQoV2ViS2l0V2ViU3JjKiBzcmMpCiAgICAgfQogICAgIHByaXYtPm9m
ZnNldCA9IHByaXYtPnJlcXVlc3RlZE9mZnNldDsKIAorICAgIGlmICghcHJpdi0+a2VlcEFsaXZl
KSB7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiUGVyc2lzdGVudCBjb25uZWN0aW9u
IHN1cHBvcnQgZGlzYWJsZWQiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQo
SFRUUEhlYWRlck5hbWU6OkNvbm5lY3Rpb24sICJjbG9zZSIpOworICAgIH0KKworICAgIGlmIChw
cml2LT5leHRyYUhlYWRlcnMpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZm9yZWFjaChwcml2LT5l
eHRyYUhlYWRlcnMuZ2V0KCksIHdlYktpdFdlYlNyY1Byb2Nlc3NFeHRyYUhlYWRlcnMsICZyZXF1
ZXN0KTsKKwogICAgIC8vIFdlIGFsd2F5cyByZXF1ZXN0IEljZWNhc3QvU2hvdXRjYXN0IG1ldGFk
YXRhLCBqdXN0IGluIGNhc2UgLi4uCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoSFRU
UEhlYWRlck5hbWU6OkljeU1ldGFkYXRhLCAiMSIpOwogCiAgICAgYm9vbCBsb2FkRmFpbGVkID0g
dHJ1ZTsKLSAgICBpZiAocHJpdi0+cGxheWVyKSB7CisgICAgaWYgKHByaXYtPnBsYXllciAmJiAh
cHJpdi0+bG9hZGVyKQogICAgICAgICBwcml2LT5sb2FkZXIgPSBwcml2LT5wbGF5ZXItPmNyZWF0
ZVJlc291cmNlTG9hZGVyKHN0ZDo6bWFrZV91bmlxdWU8Q2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdD
bGllbnQ+KHNyYykpOwotICAgICAgICBpZiAocHJpdi0+bG9hZGVyKSB7Ci0gICAgICAgICAgICBQ
bGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRpb25zIGxvYWRPcHRpb25zID0gMDsK
LSAgICAgICAgICAgIGlmIChyZXF1ZXN0LnVybCgpLnByb3RvY29sSXMoImJsb2IiKSkKLSAgICAg
ICAgICAgICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6Okxv
YWRPcHRpb246OkJ1ZmZlckRhdGE7Ci0gICAgICAgICAgICBsb2FkRmFpbGVkID0gIXByaXYtPmxv
YWRlci0+c3RhcnQocmVxdWVzdCwgbG9hZE9wdGlvbnMpOwotICAgICAgICB9Ci0gICAgfQogCi0g
ICAgaWYgKCFwcml2LT5sb2FkZXIpIHsKKyAgICBpZiAocHJpdi0+bG9hZGVyKSB7CisgICAgICAg
IFBsYXRmb3JtTWVkaWFSZXNvdXJjZUxvYWRlcjo6TG9hZE9wdGlvbnMgbG9hZE9wdGlvbnMgPSAw
OworICAgICAgICBpZiAocmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJibG9iIikpCisgICAgICAg
ICAgICBsb2FkT3B0aW9ucyB8PSBQbGF0Zm9ybU1lZGlhUmVzb3VyY2VMb2FkZXI6OkxvYWRPcHRp
b246OkJ1ZmZlckRhdGE7CisgICAgICAgIGxvYWRGYWlsZWQgPSAhcHJpdi0+bG9hZGVyLT5zdGFy
dChyZXF1ZXN0LCBsb2FkT3B0aW9ucyk7CisgICAgfSBlbHNlIHsKICAgICAgICAgcHJpdi0+Y2xp
ZW50ID0gbmV3IFJlc291cmNlSGFuZGxlU3RyZWFtaW5nQ2xpZW50KHNyYywgcmVxdWVzdCk7CiAg
ICAgICAgIGxvYWRGYWlsZWQgPSBwcml2LT5jbGllbnQtPmxvYWRGYWlsZWQoKTsKICAgICB9Ci0t
IAoyLjEuNA==
</data>
<flag name="review"
          id="275088"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>