<?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>25613</bug_id>
          
          <creation_ts>2009-05-07 05:59:57 -0700</creation_ts>
          <short_desc>[GTK] Allow to embed any GtkWidget for embed/object</short_desc>
          <delta_ts>2009-05-27 03:23:39 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Holger Freyther">zecke</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>christian</cc>
    
    <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>120268</commentid>
    <comment_count>0</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-07 05:59:57 -0700</bug_when>
    <thetext>Allow to embed any GtkWidget (with and without GdkWindow) into HTML by using the embed/object tags. This patch will allow to react to an ordinary plugin load by emitting a signal and embedding the returned GtkWidget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120269</commentid>
    <comment_count>1</comment_count>
      <attachid>30096</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-07 06:01:25 -0700</bug_when>
    <thetext>Created attachment 30096
Implement Widget::setIsSelected by setting a property (when it exists)

Provide a implementation for Widget::setIsSelected using the GObject properties.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120270</commentid>
    <comment_count>2</comment_count>
      <attachid>30097</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-07 06:02:29 -0700</bug_when>
    <thetext>Created attachment 30097
Change FrameLoaderClient::createPlugin to emit a signal and maybe take a GtkWidget

Implement this feature. Add a new class to swallow any GtkWidget and embed it into the ScrollView of WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120271</commentid>
    <comment_count>3</comment_count>
      <attachid>30098</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-07 06:03:12 -0700</bug_when>
    <thetext>Created attachment 30098
Usage example

A simple example how to embed the gtk scribble example as flash replacement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120406</commentid>
    <comment_count>4</comment_count>
      <attachid>30097</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-07 23:59:59 -0700</bug_when>
    <thetext>Comment on attachment 30097
Change FrameLoaderClient::createPlugin to emit a signal and maybe take a GtkWidget

&gt; +template &lt;&gt; void freeOwnedGPtr&lt;GHashTable&gt;(GHashTable* ptr)
&gt; +{
&gt; +    if (ptr)
&gt; +        g_hash_table_unref(ptr);
&gt; +}
&gt; +
&gt;  } // namespace WTF
&gt; diff --git a/JavaScriptCore/wtf/GOwnPtr.h b/JavaScriptCore/wtf/GOwnPtr.h
&gt; index bbb793a..8d03ff2 100644
&gt; --- a/JavaScriptCore/wtf/GOwnPtr.h
&gt; +++ b/JavaScriptCore/wtf/GOwnPtr.h
&gt; @@ -35,6 +35,7 @@ namespace WTF {
&gt;      template&lt;&gt; void freeOwnedGPtr&lt;GMutex&gt;(GMutex*);
&gt;      template&lt;&gt; void freeOwnedGPtr&lt;GPatternSpec&gt;(GPatternSpec*);
&gt;      template&lt;&gt; void freeOwnedGPtr&lt;GDir&gt;(GDir*);
&gt; +    template&lt;&gt; void freeOwnedGPtr&lt;GHashTable&gt;(GHashTable*);
&gt;  
&gt;      template &lt;typename T&gt; class GOwnPtr : Noncopyable {
&gt;      public:

I&apos;m going to be a pain in the ass and say that this should go in a separate commit :D

The rest of the patch looks good to me, but since it&apos;s new API I&apos;ll wait for Gustavo&apos;s review to give r+ (we have a rule now to require two reviews for new API).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120407</commentid>
    <comment_count>5</comment_count>
      <attachid>30096</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-08 00:02:23 -0700</bug_when>
    <thetext>Comment on attachment 30096
Implement Widget::setIsSelected by setting a property (when it exists)

&gt; +    /* See if it has a widget-set-is-selected property and set it */
&gt; +    GParamSpec* spec = g_object_class_find_property(G_OBJECT_GET_CLASS(platformWidget()),
&gt; +                                                    &quot;widget-set-is-selected&quot;);

I wonder if we should prefix the property name with &apos;webkit-&apos; or something like that, to avoid potential collisions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120414</commentid>
    <comment_count>6</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-08 04:56:38 -0700</bug_when>
    <thetext>
&gt; I&apos;m going to be a pain in the ass and say that this should go in a separate
&gt; commit :D

no problem. the addition doesn&apos;t stand by itself though, without the rest of the patch no one is using this template specialization, without a user/benefitor the change doesn&apos;t make sense... at least this was my logic.


&gt; 
&gt; The rest of the patch looks good to me, but since it&apos;s new API I&apos;ll wait for
&gt; Gustavo&apos;s review to give r+ (we have a rule now to require two reviews for new
&gt; API).

Take your time, I have not put much thinking into it but from using it for a bit... what if you don&apos;t want a certain plugin to load but don&apos;t want to provide a GtkWidget? create-plugin will not allow you to do this... maybe you want to have another signal, a different API.... or such.. :)

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120415</commentid>
    <comment_count>7</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-08 04:59:27 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 30096 [review])
&gt; &gt; +    /* See if it has a widget-set-is-selected property and set it */
&gt; &gt; +    GParamSpec* spec = g_object_class_find_property(G_OBJECT_GET_CLASS(platformWidget()),
&gt; &gt; +                                                    &quot;widget-set-is-selected&quot;);
&gt; 
&gt; I wonder if we should prefix the property name with &apos;webkit-&apos; or something like
&gt; that, to avoid potential collisions.

webkit-widget-set-is-selected is a bit long? So far http://www.google.com/codesearch?q=widget-set-is-selected&amp;hl=en&amp;btnG=Search+Code is not listing any code, and no widget within gtk itself has such a property. I was thinking about adding a prefix but then thought that

     a) having the concept of a selectable widget
     b) embedding it into WebKit

happen at the same time is highly unlikely... but maybe we should just be safe...

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>120453</commentid>
    <comment_count>8</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-05-08 12:43:26 -0700</bug_when>
    <thetext>Would passing a dummy widget work, as a means of disabling a particular plugin? Together with a way to find out about all supported plugins, this might be enough. For example passing a GtkImage containing a &quot;Disabled&quot; icon.

I like the simplicity of this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122914</commentid>
    <comment_count>9</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-23 23:48:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Take your time, I have not put much thinking into it but from using it for a
&gt; bit... what if you don&apos;t want a certain plugin to load but don&apos;t want to
&gt; provide a GtkWidget? create-plugin will not allow you to do this... maybe you
&gt; want to have another signal, a different API.... or such.. :)
&gt; 

IMHO that should be solved with a generic API to block the loading of any resource (which we need anyway for things like adblock).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122916</commentid>
    <comment_count>10</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-23 23:52:01 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; webkit-widget-set-is-selected is a bit long? So far
&gt; http://www.google.com/codesearch?q=widget-set-is-selected&amp;hl=en&amp;btnG=Search+Code
&gt; is not listing any code, and no widget within gtk itself has such a property. I
&gt; was thinking about adding a prefix but then thought that
&gt; 
&gt;      a) having the concept of a selectable widget
&gt;      b) embedding it into WebKit
&gt; 
&gt; happen at the same time is highly unlikely... but maybe we should just be
&gt; safe...
&gt; 

I think we should rather be safe than sorry :)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122917</commentid>
    <comment_count>11</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-23 23:53:54 -0700</bug_when>
    <thetext>And another comment, shouldn&apos;t the signal be better called &quot;create-plugin-widget&quot;? &quot;create-plugin&quot; seems a bit too generic, this is only related to widgets acting as plugins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122924</commentid>
    <comment_count>12</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-24 01:25:59 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; webkit-widget-set-is-selected is a bit long? So far
&gt; &gt; http://www.google.com/codesearch?q=widget-set-is-selected&amp;hl=en&amp;btnG=Search+Code
&gt; &gt; is not listing any code, and no widget within gtk itself has such a property. I
&gt; &gt; was thinking about adding a prefix but then thought that
&gt; &gt; 
&gt; &gt;      a) having the concept of a selectable widget
&gt; &gt;      b) embedding it into WebKit
&gt; &gt; 
&gt; &gt; happen at the same time is highly unlikely... but maybe we should just be
&gt; &gt; safe...
&gt; &gt; 
&gt; 
&gt; I think we should rather be safe than sorry :)
&gt; 

hehe. The question is what namespace to use? The namespace of the concept (selectable widgets)? Or the namespace of the library? Certainly using webkit- is the most safe thing we can do, is it the best one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122928</commentid>
    <comment_count>13</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-24 01:36:06 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; Take your time, I have not put much thinking into it but from using it for a
&gt; &gt; bit... what if you don&apos;t want a certain plugin to load but don&apos;t want to
&gt; &gt; provide a GtkWidget? create-plugin will not allow you to do this... maybe you
&gt; &gt; want to have another signal, a different API.... or such.. :)
&gt; &gt; 
&gt; 
&gt; IMHO that should be solved with a generic API to block the loading of any
&gt; resource (which we need anyway for things like adblock).


Right. we are scratching the surface of several topics here:
  1.) DOM API (I would love to see something like QWebElement here). To decide if an element should be loaded or removed from the DOM.

  2.) PluginDatabase and PluginFactory interfaces/classes. The app should have the power to decide which plugins are known, which plugins to load...

  3.) Something I just forgot...


From my point of view this simple signal is meant for people wanting to integrate widgets into a WebKitWebView, one side product is an easy to develop flash blocker, the main use case is more like the scribble example though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123188</commentid>
    <comment_count>14</comment_count>
      <attachid>30096</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-26 14:14:45 -0700</bug_when>
    <thetext>Comment on attachment 30096
Implement Widget::setIsSelected by setting a property (when it exists)

&gt; +        Implement Widget::setIsSelected for Gtk+ by searching
&gt; +        for a signal of the name widget-set-is-selected and if
&gt; +        this signal is available in the instance we have then
&gt; +        emit it. The signal signature does expect one gboolean
&gt; +        parameter and to return nothing.

^^

property.

&gt; +    g_object_set(platformWidget(), &quot;widget-set-is-selected&quot;, isSelected, NULL);

I&apos;d name it &apos;webkit-widget-is-selected&apos;. I think we want to make the library be the namespace here, because the widget is selected in the context of our library; &apos;set&apos; is something we would expect to see in a method name, not in a property IMO. With this change, r=me. I&apos;m tagging r+ since Xan already reviewed and suggested adding webkit-, as well. I don&apos;t think he&apos;ll opppose to s/set-//.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123189</commentid>
    <comment_count>15</comment_count>
      <attachid>30097</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-26 14:18:19 -0700</bug_when>
    <thetext>Comment on attachment 30097
Change FrameLoaderClient::createPlugin to emit a signal and maybe take a GtkWidget

&gt; +    webkit_web_view_signals[PLUGIN_WIDGET] = g_signal_new(&quot;create-plugin&quot;,

I&apos;m with Xan here. &quot;create-plugin-widget&quot; sounds good. I think this API is good for the use case it intends to cover, and we will want to investigate how to block specific resources with the help of the DataSource API, I think. r=me on the API with that change (and remember to update the property name in the doc string), I&apos;ll poke Xan to update the review flag here =P.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123251</commentid>
    <comment_count>16</comment_count>
      <attachid>30097</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-27 00:56:25 -0700</bug_when>
    <thetext>Comment on attachment 30097
Change FrameLoaderClient::createPlugin to emit a signal and maybe take a GtkWidget

r=me with the name change discussed (and don&apos;t forget to change the Since: version number)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123258</commentid>
    <comment_count>17</comment_count>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-05-27 03:23:39 -0700</bug_when>
    <thetext>Landed in r44182 and r44183. I should have updated the property name, the changelog to refer to a property name, the signal to create-plugin-widget, the API documentation, the reference to the property and have added a Since 1.1.8. Something I forgot? Please reopen the bug if that is the case.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30096</attachid>
            <date>2009-05-07 06:01:25 -0700</date>
            <delta_ts>2009-05-26 14:14:45 -0700</delta_ts>
            <desc>Implement Widget::setIsSelected by setting a property (when it exists)</desc>
            <filename>0001-2009-05-06-Holger-Hans-Peter-Freyther-zecke-selfi.patch</filename>
            <type>text/plain</type>
            <size>2840</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSAzNTlmYzE4MGJjNTU3MmMwZTMxYjU4YmIwY2UxNzBjMmNjYTkwZTE4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFdlZCwgNiBNYXkgMjAwOSAxMToxOToxMCArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIDIwMDktMDUtMDYgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyICA8emVja2VAc2Vs
ZmlzaC5vcmc+CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBJ
bXBsZW1lbnQgV2lkZ2V0OjpzZXRJc1NlbGVjdGVkIGZvciBHdGsrIGJ5IGNoZWNraW5nCiAgICAg
ICAgaWYgYSBwcm9wZXJ0eSBjYWxsZWQgd2lkZ2V0LXNldC1pcy1zZWxlY3RlZCBleGlzdHMKICAg
ICAgICBhbmQgdGhlbiBzZXR0aW5nIGl0LiBUaGUgR3RrV2lkZ2V0IGNhbiByZWFjdCB0byB0aGlz
CiAgICAgICAgcHJvcGVydHkgY2hhbmdlIGJ5IGNoYW5naW5nIHRoZSB2aXN1YWwgYXBwZWFyYW5j
ZSBvZgogICAgICAgIHRoZSB3aWRnZXQuCgogICAgICAgICogcGxhdGZvcm0vZ3RrL1dpZGdldEd0
ay5jcHA6CiAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0SXNTZWxlY3RlZCk6Ci0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCB8ICAgMTYgKysrKysrKysrKysrLS0tLQog
MiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDViZDI5
ZC4uMjZmOWMyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAwOS0wNS0wNiAgSG9sZ2VyIEhhbnMgUGV0ZXIg
RnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbXBsZW1lbnQgV2lkZ2V0OjpzZXRJc1NlbGVjdGVkIGZv
ciBHdGsrIGJ5IHNlYXJjaGluZworICAgICAgICBmb3IgYSBzaWduYWwgb2YgdGhlIG5hbWUgd2lk
Z2V0LXNldC1pcy1zZWxlY3RlZCBhbmQgaWYKKyAgICAgICAgdGhpcyBzaWduYWwgaXMgYXZhaWxh
YmxlIGluIHRoZSBpbnN0YW5jZSB3ZSBoYXZlIHRoZW4KKyAgICAgICAgZW1pdCBpdC4gVGhlIHNp
Z25hbCBzaWduYXR1cmUgZG9lcyBleHBlY3Qgb25lIGdib29sZWFuCisgICAgICAgIHBhcmFtZXRl
ciBhbmQgdG8gcmV0dXJuIG5vdGhpbmcuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvV2lkZ2V0
R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6c2V0SXNTZWxlY3RlZCk6CisKIDIw
MDktMDUtMDYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAg
ICAgICAgd3ggYnVpbGQgZml4LCBmaXhlcyBmb3Igd3ggdHJ1bmsgYnVpbGRzLgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1dpZGdldEd0ay5jcHAKaW5kZXggNGYwOWU3Ny4uOGRmZmM1OCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvV2lkZ2V0R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9XaWRnZXRHdGsuY3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAw
NiBNaWNoYWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAw
OSBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIKICNpbmNsdWRlICJIb3N0V2luZG93LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgotI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAKICNp
bmNsdWRlIDxnZGsvZ2RrLmg+CkBAIC05OSw5ICs5OCwxOCBAQCB2b2lkIFdpZGdldDo6cGFpbnQo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogfQogCi12
b2lkIFdpZGdldDo6c2V0SXNTZWxlY3RlZChib29sKQordm9pZCBXaWRnZXQ6OnNldElzU2VsZWN0
ZWQoYm9vbCBpc1NlbGVjdGVkKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFw
bGF0Zm9ybVdpZGdldCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBTZWUgaWYgaXQgaGFz
IGEgd2lkZ2V0LXNldC1pcy1zZWxlY3RlZCBwcm9wZXJ0eSBhbmQgc2V0IGl0ICovCisgICAgR1Bh
cmFtU3BlYyogc3BlYyA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkoR19PQkpFQ1RfR0VU
X0NMQVNTKHBsYXRmb3JtV2lkZ2V0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJ3aWRnZXQtc2V0LWlzLXNlbGVjdGVkIik7CisgICAgaWYg
KCFzcGVjKQorICAgICAgICByZXR1cm47CisKKyAgICBnX29iamVjdF9zZXQocGxhdGZvcm1XaWRn
ZXQoKSwgIndpZGdldC1zZXQtaXMtc2VsZWN0ZWQiLCBpc1NlbGVjdGVkLCBOVUxMKTsKIH0KIAog
SW50UmVjdCBXaWRnZXQ6OmZyYW1lUmVjdCgpIGNvbnN0Ci0tIAoxLjYuMC40Cgo=
</data>
<flag name="review"
          id="15112"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30097</attachid>
            <date>2009-05-07 06:02:29 -0700</date>
            <delta_ts>2009-05-27 00:56:25 -0700</delta_ts>
            <desc>Change FrameLoaderClient::createPlugin to emit a signal and maybe take a GtkWidget</desc>
            <filename>0002-JavaScripCore.patch</filename>
            <type>text/plain</type>
            <size>17737</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA5YzIwNmVjZjUzODhkMGE4NDQyYWFmMGM0NTc5MzRhYjhhZWNhMjc1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFRodSwgNyBNYXkgMjAwOSAxMzoxNjoxNSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIEphdmFTY3JpcENvcmU6CiAyMDA5LTA1LTA3ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5
dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgQmUgYWJsZSB0byB1c2UgR093blB0ciBmb3IgR0hhc2hUYWJsZSBhcyB3
ZWxsLiBUaGUgYXNzdW1wdGlvbgogICAgICAgIGlzIHRoYXQgdGhlIGhhc2ggdGFibGUgaGFzIGJl
ZW4gY3JlYXRlZCB3aXRoIGdfaGFzaF90YWJsZV9uZXdfZnVsbAogICAgICAgIGFuZCBoYXMgcHJv
cGVyIGRlc3RydWN0aW9uIGZ1bmN0aW9ucy4KCiAgICAgICAgKiB3dGYvR093blB0ci5jcHA6CiAg
ICAgICAgKFdURjo6R0hhc2hUYWJsZSk6CiAgICAgICAgKiB3dGYvR093blB0ci5oOgoKV2ViQ29y
ZToKMjAwOS0wNS0wNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFkZCBh
IFdlYkNvcmU6OldpZGdldCB0aGF0IGNhbiBlbWJlZCBHdGtXaWRnZXQgd2l0aCBhbmQKICAgICAg
ICB3aXRob3V0IGEgR2RrV2luZG93LiBUaGlzIGNhbiBiZSB1c2VkIHRvIGVtYmVkIGFueSBHdGtX
aWRnZXQuCgogICAgICAgIFNvbWUgYml0cyBhcmUgZGlyZWN0bHkgY29waWVkIGZyb20gdGhlIFNj
cm9sbGJhciBpbXBsZW1lbnRhdGlvbgogICAgICAgIGJ1dCBjYW4gbm90IGJlIGVhc2lseSBzaGFy
ZWQgaGVyZS4KCiAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKICAgICAgICAqIHBsYXRmb3JtL2d0
ay9HdGtQbHVnaW5XaWRnZXQuY3BwOiBBZGRlZC4KICAgICAgICAoV2ViQ29yZTo6R3RrUGx1Z2lu
V2lkZ2V0OjpHdGtQbHVnaW5XaWRnZXQpOgogICAgICAgIChXZWJDb3JlOjpHdGtQbHVnaW5XaWRn
ZXQ6OmludmFsaWRhdGVSZWN0KToKICAgICAgICAoV2ViQ29yZTo6R3RrUGx1Z2luV2lkZ2V0Ojpm
cmFtZVJlY3RzQ2hhbmdlZCk6CiAgICAgICAgKFdlYkNvcmU6Okd0a1BsdWdpbldpZGdldDo6cGFp
bnQpOgogICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5oOiBBZGRlZC4KCldl
YktpdDoKMjAwOS0wNS0wNyAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxm
aXNoLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgIEFk
ZCBhIG5ldyBzaWduYWwgY2FsbGVkICJjcmVhdGUtcGx1Z2luIiBhbmQgZW1pdCBpdCBmcm9tCiAg
ICAgICAgd2l0aGluIHRoZSBGcmFtZUxvYWRlckNsaWVudEd0azo6Y3JlYXRlUGx1Z2luIG1ldGhv
ZC4gSWYgYQogICAgICAgIEd0a1dpZGdldCBnZXRzIHJldHVybmVkIGl0IHdpbGwgYmUgZW1iZWRk
ZWQgYXMgYSBXZWJDb3JlOjpXaWRnZXQKICAgICAgICB1c2luZyB0aGUgbmV3IEd0a1BsdWdpbldp
ZGdldC4KCiAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
CiAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZVBsdWdpbik6CiAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CiAgICAgICAgKHdlYmtpdF9zaWduYWxfYWNj
dW11bGF0b3Jfb2JqZWN0X2hhbmRsZWQpOgogICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdCk6CiAgICAgICAgKiB3ZWJraXRtYXJzaGFsLmxpc3Q6Ci0tLQogSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsrKwogSmF2YVNjcmlw
dENvcmUvd3RmL0dPd25QdHIuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIEphdmFT
Y3JpcHRDb3JlL3d0Zi9HT3duUHRyLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBX
ZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTgg
KysrKwogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fCAgICAyICsKIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5jcHAgICAgICAg
ICAgIHwgIDEwNSArKysrKysrKysrKysrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3Rr
UGx1Z2luV2lkZ2V0LmggICAgICAgICAgICAgfCAgIDQyICsrKysrKysrCiBXZWJLaXQvZ3RrL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrCiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCB8ICAgMjQgKysrKyst
CiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCAgICAgICAgICAgICAgICB8ICAg
MzEgKysrKysrLQogV2ViS2l0L2d0ay93ZWJraXRtYXJzaGFsLmxpc3QgICAgICAgICAgICAgICAg
ICAgICAgfCAgICAxICsKIDExIGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1Bs
dWdpbldpZGdldC5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBXZWJDb3JlL3BsYXRmb3JtL2d0ay9H
dGtQbHVnaW5XaWRnZXQuaAoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBi
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzNDdlYzY3Li4wOGY4MjU0IDEwMDY0NAot
LS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDUtMDcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0
aGVyICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmUgYWJsZSB0byB1c2UgR093blB0ciBmb3IgR0hhc2hUYWJsZSBh
cyB3ZWxsLiBUaGUgYXNzdW1wdGlvbgorICAgICAgICBpcyB0aGF0IHRoZSBoYXNoIHRhYmxlIGhh
cyBiZWVuIGNyZWF0ZWQgd2l0aCBnX2hhc2hfdGFibGVfbmV3X2Z1bGwKKyAgICAgICAgYW5kIGhh
cyBwcm9wZXIgZGVzdHJ1Y3Rpb24gZnVuY3Rpb25zLgorCisgICAgICAgICogd3RmL0dPd25QdHIu
Y3BwOgorICAgICAgICAoV1RGOjpHSGFzaFRhYmxlKToKKyAgICAgICAgKiB3dGYvR093blB0ci5o
OgorCiAyMDA5LTA1LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWogU3RhY2hvd2lhayAmIERhcmluIEFkbGVy
LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0dPd25QdHIuY3BwIGIvSmF2YVNjcmlw
dENvcmUvd3RmL0dPd25QdHIuY3BwCmluZGV4IDU4ODY5ZjQuLjQzMjg4NWYgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3d0Zi9HT3duUHRyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS93dGYv
R093blB0ci5jcHAKQEAgLTU2LDQgKzU2LDEwIEBAIHRlbXBsYXRlIDw+IHZvaWQgZnJlZU93bmVk
R1B0cjxHRGlyPihHRGlyKiBwdHIpCiAgICAgICAgIGdfZGlyX2Nsb3NlKHB0cik7CiB9CiAKK3Rl
bXBsYXRlIDw+IHZvaWQgZnJlZU93bmVkR1B0cjxHSGFzaFRhYmxlPihHSGFzaFRhYmxlKiBwdHIp
Cit7CisgICAgaWYgKHB0cikKKyAgICAgICAgZ19oYXNoX3RhYmxlX3VucmVmKHB0cik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdURgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvd3RmL0dPd25Q
dHIuaCBiL0phdmFTY3JpcHRDb3JlL3d0Zi9HT3duUHRyLmgKaW5kZXggYmJiNzkzYS4uOGQwM2Zm
MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvd3RmL0dPd25QdHIuaAorKysgYi9KYXZhU2Ny
aXB0Q29yZS93dGYvR093blB0ci5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXVEYgewog
ICAgIHRlbXBsYXRlPD4gdm9pZCBmcmVlT3duZWRHUHRyPEdNdXRleD4oR011dGV4Kik7CiAgICAg
dGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R1BhdHRlcm5TcGVjPihHUGF0dGVyblNwZWMq
KTsKICAgICB0ZW1wbGF0ZTw+IHZvaWQgZnJlZU93bmVkR1B0cjxHRGlyPihHRGlyKik7CisgICAg
dGVtcGxhdGU8PiB2b2lkIGZyZWVPd25lZEdQdHI8R0hhc2hUYWJsZT4oR0hhc2hUYWJsZSopOwog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGNsYXNzIEdPd25QdHIgOiBOb25jb3B5YWJsZSB7
CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNmY5YzI2Li5lZjliZDIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDA5LTA1LTA3
ICBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciAgPHplY2tlQHNlbGZpc2gub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIFdlYkNvcmU6
OldpZGdldCB0aGF0IGNhbiBlbWJlZCBHdGtXaWRnZXQgd2l0aCBhbmQKKyAgICAgICAgd2l0aG91
dCBhIEdka1dpbmRvdy4gVGhpcyBjYW4gYmUgdXNlZCB0byBlbWJlZCBhbnkgR3RrV2lkZ2V0Lgor
CisgICAgICAgIFNvbWUgYml0cyBhcmUgZGlyZWN0bHkgY29waWVkIGZyb20gdGhlIFNjcm9sbGJh
ciBpbXBsZW1lbnRhdGlvbgorICAgICAgICBidXQgY2FuIG5vdCBiZSBlYXNpbHkgc2hhcmVkIGhl
cmUuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
R3RrUGx1Z2luV2lkZ2V0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHdGtQbHVnaW5X
aWRnZXQ6Okd0a1BsdWdpbldpZGdldCk6CisgICAgICAgIChXZWJDb3JlOjpHdGtQbHVnaW5XaWRn
ZXQ6OmludmFsaWRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okd0a1BsdWdpbldpZGdldDo6
ZnJhbWVSZWN0c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6R3RrUGx1Z2luV2lkZ2V0Ojpw
YWludCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5oOiBBZGRlZC4K
KwogMjAwOS0wNS0wNiAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIgIDx6ZWNrZUBzZWxmaXNo
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGJk
MDAzZGQuLjgzODdmZjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTgwMiw2ICsxODAyLDggQEAgd2ViY29yZWd0a19z
b3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9GaWxlQ2hvb3Nlckd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0ZpbGVTeXN0ZW1HdGsuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQbHVn
aW5XaWRnZXQuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuaCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS1VSTEd0ay5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0v
Z3RrL0tleUV2ZW50R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvS2V5Ym9hcmRDb2Rl
cy5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMmRkOTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtQbHVnaW5XaWRnZXQuY3BwCkBAIC0wLDAgKzEsMTA1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJHdGtQbHVnaW5XaWRnZXQuaCIKKworI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIlNjcm9sbFZpZXcuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitHdGtQbHVnaW5XaWRnZXQ6Okd0a1BsdWdpbldpZGdldChHdGtXaWRnZXQq
IHdpZGdldCkKKyAgICA6IFdpZGdldCh3aWRnZXQpCit7CisgICAgZ3RrX3dpZGdldF9oaWRlKHdp
ZGdldCk7Cit9CisKK3ZvaWQgR3RrUGx1Z2luV2lkZ2V0OjppbnZhbGlkYXRlUmVjdChjb25zdCBJ
bnRSZWN0JiBfcmVjdCkKK3sKKyAgICAvKiBubyBuZWVkIHRvICovCisgICAgaWYgKEdUS19XSURH
RVRfTk9fV0lORE9XKHBsYXRmb3JtV2lkZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
ZGtXaW5kb3cqIHdpbmRvdyA9IHBsYXRmb3JtV2lkZ2V0KCktPndpbmRvdzsKKyAgICBpZiAoIXdp
bmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR2RrUmVjdGFuZ2xlIHJlY3QgPSBfcmVjdDsK
KyAgICBnZGtfd2luZG93X2ludmFsaWRhdGVfcmVjdCh3aW5kb3csICZyZWN0LCBGQUxTRSk7Cit9
CisKK3ZvaWQgR3RrUGx1Z2luV2lkZ2V0OjpmcmFtZVJlY3RzQ2hhbmdlZCgpCit7CisgICAgSW50
UmVjdCByZWN0ID0gZnJhbWVSZWN0KCk7CisgICAgSW50UG9pbnQgbG9jID0gcGFyZW50KCktPmNv
bnRlbnRzVG9XaW5kb3cocmVjdC5sb2NhdGlvbigpKTsKKyAgICBHdGtBbGxvY2F0aW9uIGFsbG9j
YXRpb24gPSB7IGxvYy54KCksIGxvYy55KCksIHJlY3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSB9
OworCisgICAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0KHBsYXRmb3JtV2lkZ2V0KCksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSk7CisgICAgZ3RrX3dpZGdldF9zaXplX2FsbG9jYXRl
KHBsYXRmb3JtV2lkZ2V0KCksICZhbGxvY2F0aW9uKTsKKyAgICBndGtfd2lkZ2V0X3Nob3cocGxh
dGZvcm1XaWRnZXQoKSk7Cit9CisKK3ZvaWQgR3RrUGx1Z2luV2lkZ2V0OjpwYWludChHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCit7CisgICAgaWYgKCFjb250
ZXh0LT5nZGtFeHBvc2VFdmVudCgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiBvbmx5IHBh
aW50IHdpZGdldHMgd2l0aCBOT19XSU5ET1cgdGhpcyB3YXkgKi8KKyAgICBpZiAoIUdUS19XSURH
RVRfTk9fV0lORE9XKHBsYXRmb3JtV2lkZ2V0KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBH
dGtXaWRnZXQqIHdpZGdldCA9IHBsYXRmb3JtV2lkZ2V0KCk7CisgICAgQVNTRVJUKEdUS19XSURH
RVRfTk9fV0lORE9XKHdpZGdldCkpOworCisgICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2RrX2V2ZW50
X25ldyhHREtfRVhQT1NFKTsKKyAgICBldmVudC0+ZXhwb3NlID0gKmNvbnRleHQtPmdka0V4cG9z
ZUV2ZW50KCk7CisgICAgZXZlbnQtPmV4cG9zZS5hcmVhID0gc3RhdGljX2Nhc3Q8R2RrUmVjdGFu
Z2xlPihyZWN0KTsKKworICAgIEludFBvaW50IGxvYyA9IHBhcmVudCgpLT5jb250ZW50c1RvV2lu
ZG93KHJlY3QubG9jYXRpb24oKSk7CisKKyAgICBldmVudC0+ZXhwb3NlLmFyZWEueCA9IGxvYy54
KCk7CisgICAgZXZlbnQtPmV4cG9zZS5hcmVhLnkgPSBsb2MueSgpOworCisgICAgZXZlbnQtPmV4
cG9zZS5yZWdpb24gPSBnZGtfcmVnaW9uX3JlY3RhbmdsZSgmZXZlbnQtPmV4cG9zZS5hcmVhKTsK
KworICAgIC8qCisgICAgICogVGhpcyB3aWxsIGJlIHVucmVmJ2VkIGJ5IGdka19ldmVudF9mcmVl
LgorICAgICAqLworICAgIGdfb2JqZWN0X3JlZihldmVudC0+ZXhwb3NlLndpbmRvdyk7CisKKyAg
ICAvKgorICAgICAqIElmIHdlIGFyZSBnb2luZyB0byBwYWludCBkbyB0aGUgdHJhbnNsYXRpb24g
YW5kIEd0a0FsbG9jYXRpb24gbWFuaXB1bGF0aW9uLgorICAgICAqLworICAgIGlmICghZ2RrX3Jl
Z2lvbl9lbXB0eShldmVudC0+ZXhwb3NlLnJlZ2lvbikpCisgICAgICAgIGd0a193aWRnZXRfc2Vu
ZF9leHBvc2Uod2lkZ2V0LCBldmVudCk7CisKKyAgICBnZGtfZXZlbnRfZnJlZShldmVudCk7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrUGx1Z2luV2lkZ2V0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2FkMzQ2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0d0a1BsdWdpbldpZGdldC5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDkgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHdGtQbHVnaW5XaWRnZXRfaAorI2RlZmluZSBH
dGtQbHVnaW5XaWRnZXRfaAorCisjaW5jbHVkZSAiV2lkZ2V0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICBjbGFzcyBHdGtQbHVnaW5XaWRnZXQgOiBwdWJsaWMgV2lkZ2V0IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIEd0a1BsdWdpbldpZGdldChHdGtXaWRnZXQqKTsKKyAgICAgICAgdm9p
ZCBpbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZvaWQgZnJhbWVSZWN0
c0NoYW5nZWQoKTsKKyAgICAgICAgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJ
bnRSZWN0Jik7CisgICAgfTsKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0No
YW5nZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGE1NmNiYTguLjJlODhlOTYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDUtMDcgIEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
ICA8emVja2VAc2VsZmlzaC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHNpZ25hbCBjYWxsZWQgImNyZWF0ZS1wbHVnaW4iIGFu
ZCBlbWl0IGl0IGZyb20KKyAgICAgICAgd2l0aGluIHRoZSBGcmFtZUxvYWRlckNsaWVudEd0azo6
Y3JlYXRlUGx1Z2luIG1ldGhvZC4gSWYgYQorICAgICAgICBHdGtXaWRnZXQgZ2V0cyByZXR1cm5l
ZCBpdCB3aWxsIGJlIGVtYmVkZGVkIGFzIGEgV2ViQ29yZTo6V2lkZ2V0CisgICAgICAgIHVzaW5n
IHRoZSBuZXcgR3RrUGx1Z2luV2lkZ2V0LgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dDo6Y3JlYXRlUGx1Z2luKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfc2lnbmFsX2FjY3VtdWxhdG9yX29iamVjdF9oYW5kbGVkKToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKiB3ZWJraXRtYXJzaGFs
Lmxpc3Q6CisKIDIwMDktMDUtMDYgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9y
b25oYUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAppbmRleCAyZTcwODZhLi43YTcwMzI4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAg
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+Ci0gKiAg
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiAg
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQHR3b3Rv
YXN0cy5kZT4KICAqICBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4gIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSA8Z25zQGdub21lLm9yZz4KQEAgLTI5LDYgKzI5LDggQEAKICNpbmNsdWRlICJGcmFtZUxvYWRl
ci5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgorI2lu
Y2x1ZGUgIkdPd25QdHIuaCIKKyNpbmNsdWRlICJHdGtQbHVnaW5XaWRnZXQuaCIKICNpbmNsdWRl
ICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKQEAgLTQ0NCw2ICs0NDYsMjYgQEAgdm9pZCBGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZy
YW1lUG9saWN5RnVuY3QKIAogV2lkZ2V0KiBGcmFtZUxvYWRlckNsaWVudDo6Y3JlYXRlUGx1Z2lu
KGNvbnN0IEludFNpemUmIHBsdWdpblNpemUsIEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50LCBj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wg
bG9hZE1hbnVhbGx5KQogeworICAgIC8qIENoZWNrIGlmIHdlIHdhbnQgdG8gZW1iZWQgYSBHdGtX
aWRnZXQsIGZhbGxiYWNrIHRvIHBsdWdpbnMgbGF0ZXIgKi8KKyAgICBDU3RyaW5nIHVybFN0cmlu
ZyA9IHVybC5zdHJpbmcoKS51dGY4KCk7CisgICAgQ1N0cmluZyBtaW1lVHlwZVN0cmluZyA9IG1p
bWVUeXBlLnV0ZjgoKTsKKworICAgIEFTU0VSVChwYXJhbU5hbWVzLnNpemUoKSA9PSBwYXJhbVZh
bHVlcy5zaXplKCkpOworICAgIEdPd25QdHI8R0hhc2hUYWJsZT4gaGFzaChnX2hhc2hfdGFibGVf
bmV3X2Z1bGwoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsIGdfZnJlZSwgZ19mcmVlKSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBhcmFtTmFtZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgZ19oYXNoX3RhYmxlX2luc2VydChoYXNoLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGdfc3RyZHVwKHBhcmFtTmFtZXNbaV0udXRmOCgpLmRhdGEoKSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ19zdHJkdXAocGFyYW1WYWx1ZXNbaV0udXRmOCgpLmRhdGEoKSkp
OworICAgIH0KKworICAgIEd0a1dpZGdldCogZ3RrV2lkZ2V0ID0gMDsKKyAgICBnX3NpZ25hbF9l
bWl0X2J5X25hbWUoZ2V0Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSwgImNyZWF0ZS1wbHVnaW4iLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZVN0cmluZy5kYXRhKCksIHVybFN0cmlu
Zy5kYXRhKCksIGhhc2guZ2V0KCksICZndGtXaWRnZXQpOworICAgIGlmIChndGtXaWRnZXQpCisg
ICAgICAgIHJldHVybiBuZXcgR3RrUGx1Z2luV2lkZ2V0KGd0a1dpZGdldCk7CisKKworCiAgICAg
UGx1Z2luVmlldyogcGx1Z2luVmlldyA9IFBsdWdpblZpZXc6OmNyZWF0ZShjb3JlKG1fZnJhbWUp
LCBwbHVnaW5TaXplLCBlbGVtZW50LCB1cmwsIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCBtaW1l
VHlwZSwgbG9hZE1hbnVhbGx5KTsKIAogICAgIGlmIChwbHVnaW5WaWV3LT5zdGF0dXMoKSA9PSBQ
bHVnaW5TdGF0dXNMb2FkZWRTdWNjZXNzZnVsbHkpCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCmluZGV4IDlkMDJlY2UuLmViMTdmMmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCkBAIC0xNDAsNiArMTQwLDcgQEAgZW51bSB7CiAgICAgRE9XTkxPQURfUkVRVUVTVEVELAog
ICAgIE1PVkVfQ1VSU09SLAogICAgIFBSSU5UX1JFUVVFU1RFRCwKKyAgICBQTFVHSU5fV0lER0VU
LAogICAgIExBU1RfU0lHTkFMCiB9OwogCkBAIC05MjMsNyArOTI0LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0K
IAotc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVk
KEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3Qg
R1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRlciBkdW1teSkKK3N0YXRpYyBnYm9vbGVhbiB3
ZWJraXRfc2lnbmFsX2FjY3VtdWxhdG9yX29iamVjdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9u
SGludCogaWhpbnQsIEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0
dXJuLCBncG9pbnRlciBkdW1teSkKIHsKICAgICBncG9pbnRlciBuZXdXZWJWaWV3ID0gZ192YWx1
ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOwogICAgIGdfdmFsdWVfc2V0X29iamVjdChyZXR1
cm5BY2N1LCBuZXdXZWJWaWV3KTsKQEAgLTEwNDcsNyArMTA0OCw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNz
KQogICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKICAgICAgICAg
ICAgIChHU2lnbmFsRmxhZ3MpR19TSUdOQUxfUlVOX0xBU1QsCiAgICAgICAgICAgICBHX1NUUlVD
VF9PRkZTRVQgKFdlYktpdFdlYlZpZXdDbGFzcywgY3JlYXRlX3dlYl92aWV3KSwKLSAgICAgICAg
ICAgIHdlYmtpdF9jcmVhdGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkLAorICAgICAgICAgICAg
d2Via2l0X3NpZ25hbF9hY2N1bXVsYXRvcl9vYmplY3RfaGFuZGxlZCwKICAgICAgICAgICAgIE5V
TEwsCiAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9PQkpFQ1RfX09CSkVDVCwKICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX1dFQl9WSUVXICwgMSwKQEAgLTE2MjksNiArMTYzMCwzMiBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICAgICAgICAgIEdUS19UWVBFX01PVkVNRU5UX1NURVAsCiAgICAgICAg
ICAgICBHX1RZUEVfSU5UKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNyZWF0
ZS1wbHVnaW46CisgICAgICogQHdlYl92aWV3OiB0aGUgb2JqZWN0IHdoaWNoIHJlY2VpdmVkIHRo
ZSBzaWduYWwKKyAgICAgKiBAbWltZV90eXBlOiB0aGUgbWltZXR5cGUgb2YgdGhlIHJlcXVlc3Rl
ZCBvYmplY3QKKyAgICAgKiBAdXJsOiB0aGUgdXJsIHRvIGxvYWQKKyAgICAgKiBAcGFyYW06IGEg
I0dIYXNoVGFibGUgd2l0aCBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMgKHN0cmluZ3MpCisgICAgICoK
KyAgICAgKiBUaGUgI1dlYktpdFdlYlZpZXc6OmNyZWF0ZS1wbHVnaW4gc2lnbmFsIHdpbGwgYmUg
ZW1pdHRlZCB0bworICAgICAqIGNyZWF0ZSBhIHBsdWdpbiB3aWRnZXQgZm9yIGVtYmVkIG9yIG9i
amVjdCBIVE1MIHRhZ3MuIFRoaXMKKyAgICAgKiBhbGxvd3MgdG8gZW1iZWQgYSBHdGtXaWRnZXQg
YXMgYSBwbHVnaW4gaW50byBIVE1MIGNvbnRlbnQuIEluCisgICAgICogY2FzZSBvZiBhIHRleHR1
YWwgc2VsZWN0aW9uIG9mIHRoZSBHdGtXaWRnZXQgV2ViQ29yZSB3aWxsIGF0dGVtcHQKKyAgICAg
KiB0byBzZXQgdGhlIHByb3BlcnR5IHZhbHVlIG9mICJ3aWRnZXQtc2V0LWlzLXNlbGVjdGVkIi4g
VGhpcyBjYW4KKyAgICAgKiBiZSB1c2VkIHRvIGRyYXcgYSB2aXN1YWwgaW5kaWNhdG9yIG9mIHRo
ZSBzZWxlY3Rpb24uCisgICAgICoKKyAgICAgKiBTaW5jZTogMS4xLjcKKyAgICAgKi8KKyAgICB3
ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tQTFVHSU5fV0lER0VUXSA9IGdfc2lnbmFsX25ldygiY3Jl
YXRlLXBsdWdpbiIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykgKEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdO
QUxfQUNUSU9OKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICB3ZWJraXRfc2lnbmFsX2Fj
Y3VtdWxhdG9yX29iamVjdF9oYW5kbGVkLAorICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAg
IHdlYmtpdF9tYXJzaGFsX09CSkVDVF9fU1RSSU5HX1NUUklOR19QT0lOVEVSLAorICAgICAgICAg
ICAgR1RLX1RZUEVfV0lER0VULCAzLAorICAgICAgICAgICAgR19UWVBFX1NUUklORywgR19UWVBF
X1NUUklORywgR19UWVBFX0hBU0hfVEFCTEUpOworCiAgICAgLyoKICAgICAgKiBpbXBsZW1lbnRh
dGlvbnMgb2YgdmlydHVhbCBtZXRob2RzCiAgICAgICovCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3Rr
L3dlYmtpdG1hcnNoYWwubGlzdCBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CmluZGV4
IGY2YWVkMGQuLmFhMGQ0MGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5s
aXN0CisrKyBiL1dlYktpdC9ndGsvd2Via2l0bWFyc2hhbC5saXN0CkBAIC0xMCw2ICsxMCw3IEBA
IEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKIEJPT0xFQU46Vk9JRAogRU5VTTpPQkpFQ1QsT0JK
RUNUCiBPQkpFQ1Q6T0JKRUNUCitPQkpFQ1Q6U1RSSU5HLFNUUklORyxQT0lOVEVSCiBPQkpFQ1Q6
Vk9JRAogVk9JRDpPQkpFQ1QsT0JKRUNUCiBWT0lEOk9CSkVDVCxQT0lOVEVSLFBPSU5URVIKLS0g
CjEuNi4wLjQKCg==
</data>
<flag name="review"
          id="15113"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30098</attachid>
            <date>2009-05-07 06:03:12 -0700</date>
            <delta_ts>2009-05-07 06:03:12 -0700</delta_ts>
            <desc>Usage example</desc>
            <filename>0003-Example-for-the-create-plugin.patch</filename>
            <type>text/plain</type>
            <size>5028</size>
            <attacher name="Holger Freyther">zecke</attacher>
            
              <data encoding="base64">RnJvbSA1NzA1NDA1N2FjYmM2YzBhYzE2OWMyOGM0ZDAzNDgwMzFiZTgyYTRlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlciA8emVja2VAc2Vs
ZmlzaC5vcmc+CkRhdGU6IFRodSwgNyBNYXkgMjAwOSAxMzoxOTo0OSArMDIwMApTdWJqZWN0OiBb
UEFUQ0hdIEV4YW1wbGUgZm9yIHRoZSBjcmVhdGUtcGx1Z2luLi4uLgoKLS0tCiBXZWJLaXRUb29s
cy9HdGtMYXVuY2hlci9tYWluLmMgfCAgMTMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysKIDEgZmlsZXMgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDAgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvV2Vi
S2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IDFiYWI5YWUuLmMxMDcxMzAgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9XZWJLaXRUb29scy9H
dGtMYXVuY2hlci9tYWluLmMKQEAgLTM1LDYgKzM1LDEyNiBAQCBzdGF0aWMgZ2NoYXIqIG1haW5f
dGl0bGU7CiBzdGF0aWMgZ2RvdWJsZSBsb2FkX3Byb2dyZXNzOwogc3RhdGljIGd1aW50IHN0YXR1
c19jb250ZXh0X2lkOwogCisvKiBHdGsgZXhhbXBsZS4uLiAqLworLyogQmFja2luZyBwaXhtYXAg
Zm9yIGRyYXdpbmcgYXJlYSAqLworc3RhdGljIEdka1BpeG1hcCAqcGl4bWFwID0gTlVMTDsKKwor
LyogQ3JlYXRlIGEgbmV3IGJhY2tpbmcgcGl4bWFwIG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplICov
CitzdGF0aWMgZ2Jvb2xlYW4gY29uZmlndXJlX2V2ZW50KCBHdGtXaWRnZXQgICAgICAgICAqd2lk
Z2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRDb25maWd1cmUg
KmV2ZW50ICkKK3sKKyAgaWYgKHBpeG1hcCkKKyAgICBnX29iamVjdF91bnJlZiAocGl4bWFwKTsK
KworICBwaXhtYXAgPSBnZGtfcGl4bWFwX25ldyAod2lkZ2V0LT53aW5kb3csCisJCQkgICB3aWRn
ZXQtPmFsbG9jYXRpb24ud2lkdGgsCisJCQkgICB3aWRnZXQtPmFsbG9jYXRpb24uaGVpZ2h0LAor
CQkJICAgLTEpOworICBnZGtfZHJhd19yZWN0YW5nbGUgKHBpeG1hcCwKKwkJICAgICAgd2lkZ2V0
LT5zdHlsZS0+d2hpdGVfZ2MsCisJCSAgICAgIFRSVUUsCisJCSAgICAgIDAsIDAsCisJCSAgICAg
IHdpZGdldC0+YWxsb2NhdGlvbi53aWR0aCwKKwkJICAgICAgd2lkZ2V0LT5hbGxvY2F0aW9uLmhl
aWdodCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIFJlZHJhdyB0aGUgc2NyZWVuIGZyb20g
dGhlIGJhY2tpbmcgcGl4bWFwICovCitzdGF0aWMgZ2Jvb2xlYW4gZXhwb3NlX2V2ZW50KCBHdGtX
aWRnZXQgICAgICAqd2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZl
bnRFeHBvc2UgKmV2ZW50ICkKK3sKKyAgZ2RrX2RyYXdfZHJhd2FibGUgKHdpZGdldC0+d2luZG93
LAorCQkgICAgIHdpZGdldC0+c3R5bGUtPmZnX2djW0dUS19XSURHRVRfU1RBVEUgKHdpZGdldCld
LAorCQkgICAgIHBpeG1hcCwKKwkJICAgICBldmVudC0+YXJlYS54LCBldmVudC0+YXJlYS55LAor
CQkgICAgIGV2ZW50LT5hcmVhLngsIGV2ZW50LT5hcmVhLnksCisJCSAgICAgZXZlbnQtPmFyZWEu
d2lkdGgsIGV2ZW50LT5hcmVhLmhlaWdodCk7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKiBE
cmF3IGEgcmVjdGFuZ2xlIG9uIHRoZSBzY3JlZW4gKi8KK3N0YXRpYyB2b2lkIGRyYXdfYnJ1c2go
IEd0a1dpZGdldCAqd2lkZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICB4
LAorICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICB5KQoreworICBHZGtSZWN0YW5n
bGUgdXBkYXRlX3JlY3Q7CisKKyAgdXBkYXRlX3JlY3QueCA9IHggLSA1OworICB1cGRhdGVfcmVj
dC55ID0geSAtIDU7CisgIHVwZGF0ZV9yZWN0LndpZHRoID0gMTA7CisgIHVwZGF0ZV9yZWN0Lmhl
aWdodCA9IDEwOworICBnZGtfZHJhd19yZWN0YW5nbGUgKHBpeG1hcCwKKwkJICAgICAgd2lkZ2V0
LT5zdHlsZS0+YmxhY2tfZ2MsCisJCSAgICAgIFRSVUUsCisJCSAgICAgIHVwZGF0ZV9yZWN0Lngs
IHVwZGF0ZV9yZWN0LnksCisJCSAgICAgIHVwZGF0ZV9yZWN0LndpZHRoLCB1cGRhdGVfcmVjdC5o
ZWlnaHQpOworICBndGtfd2lkZ2V0X3F1ZXVlX2RyYXdfYXJlYSAod2lkZ2V0LCAKKwkJICAgICAg
ICAgICAgICB1cGRhdGVfcmVjdC54LCB1cGRhdGVfcmVjdC55LAorCQkgICAgICAgICAgICAgIHVw
ZGF0ZV9yZWN0LndpZHRoLCB1cGRhdGVfcmVjdC5oZWlnaHQpOworfQorCitzdGF0aWMgZ2Jvb2xl
YW4gYnV0dG9uX3ByZXNzX2V2ZW50KCBHdGtXaWRnZXQgICAgICAqd2lkZ2V0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR2RrRXZlbnRCdXR0b24gKmV2ZW50ICkKK3sKKyAg
aWYgKGV2ZW50LT5idXR0b24gPT0gMSAmJiBwaXhtYXAgIT0gTlVMTCkKKyAgICBkcmF3X2JydXNo
ICh3aWRnZXQsIGV2ZW50LT54LCBldmVudC0+eSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0
YXRpYyBnYm9vbGVhbiBtb3Rpb25fbm90aWZ5X2V2ZW50KCBHdGtXaWRnZXQgKndpZGdldCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtFdmVudE1vdGlvbiAqZXZlbnQg
KQoreworICBpbnQgeCwgeTsKKyAgR2RrTW9kaWZpZXJUeXBlIHN0YXRlOworCisgIGlmIChldmVu
dC0+aXNfaGludCkKKyAgICBnZGtfd2luZG93X2dldF9wb2ludGVyIChldmVudC0+d2luZG93LCAm
eCwgJnksICZzdGF0ZSk7CisgIGVsc2UKKyAgICB7CisgICAgICB4ID0gZXZlbnQtPng7CisgICAg
ICB5ID0gZXZlbnQtPnk7CisgICAgICBzdGF0ZSA9IGV2ZW50LT5zdGF0ZTsKKyAgICB9CisgICAg
CisgIGlmIChzdGF0ZSAmIEdES19CVVRUT04xX01BU0sgJiYgcGl4bWFwICE9IE5VTEwpCisgICAg
ZHJhd19icnVzaCAod2lkZ2V0LCB4LCB5KTsKKyAgCisgIHJldHVybiBUUlVFOworfQorCitzdGF0
aWMgR3RrV2lkZ2V0Kgorc2NyaWJibGVfZm9vICh2b2lkKQoreworICAvKiBDcmVhdGUgdGhlIGRy
YXdpbmcgYXJlYSAqLworCisgIEd0a1dpZGdldCogZHJhd2luZ19hcmVhID0gZ3RrX2RyYXdpbmdf
YXJlYV9uZXcgKCk7CisKKyAgLyogU2lnbmFscyB1c2VkIHRvIGhhbmRsZSBiYWNraW5nIHBpeG1h
cCAqLworCisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChkcmF3aW5nX2FyZWEpLCAiZXhw
b3NlX2V2ZW50IiwKKwkJICAgIEdfQ0FMTEJBQ0sgKGV4cG9zZV9ldmVudCksIE5VTEwpOworICBn
X3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoZHJhd2luZ19hcmVhKSwiY29uZmlndXJlX2V2ZW50
IiwKKwkJICAgIEdfQ0FMTEJBQ0sgKGNvbmZpZ3VyZV9ldmVudCksIE5VTEwpOworCisgIC8qIEV2
ZW50IHNpZ25hbHMgKi8KKworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoZHJhd2luZ19h
cmVhKSwgIm1vdGlvbl9ub3RpZnlfZXZlbnQiLAorCQkgICAgR19DQUxMQkFDSyAobW90aW9uX25v
dGlmeV9ldmVudCksIE5VTEwpOworICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAoZHJhd2lu
Z19hcmVhKSwgImJ1dHRvbl9wcmVzc19ldmVudCIsCisJCSAgICBHX0NBTExCQUNLIChidXR0b25f
cHJlc3NfZXZlbnQpLCBOVUxMKTsKKworICBndGtfd2lkZ2V0X3NldF9ldmVudHMgKGRyYXdpbmdf
YXJlYSwgR0RLX0VYUE9TVVJFX01BU0sKKwkJCSB8IEdES19MRUFWRV9OT1RJRllfTUFTSworCQkJ
IHwgR0RLX0JVVFRPTl9QUkVTU19NQVNLCisJCQkgfCBHREtfUE9JTlRFUl9NT1RJT05fTUFTSwor
CQkJIHwgR0RLX1BPSU5URVJfTU9USU9OX0hJTlRfTUFTSyk7CisgICAgcmV0dXJuIGRyYXdpbmdf
YXJlYTsKK30KKworCiBzdGF0aWMgdm9pZAogYWN0aXZhdGVfdXJpX2VudHJ5X2NiIChHdGtXaWRn
ZXQqIGVudHJ5LCBncG9pbnRlciBkYXRhKQogewpAQCAtNjQsNiArMTg0LDE3IEBAIGxpbmtfaG92
ZXJfY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIGNvbnN0IGdjaGFyKiB0aXRsZSwgY29uc3QgZ2No
YXIqIGxpbmssIGdwb2luCiAgICAgICAgIGd0a19zdGF0dXNiYXJfcHVzaCAobWFpbl9zdGF0dXNi
YXIsIHN0YXR1c19jb250ZXh0X2lkLCBsaW5rKTsKIH0KIAorc3RhdGljIEd0a1dpZGdldCoKK2Ny
ZWF0ZV9wbHVnaW5fY2IgKFdlYktpdFdlYlZpZXcqIHBhZ2UsIGNvbnN0IGdjaGFyKiBtaW1ldHlw
ZSwgY29uc3QgZ2NoYXIqIHVyaSwgR0hhc2hUYWJsZSogaGFzaCwgZ3BvaW50ZXIgZGF0YSkKK3sK
KyAgICBwcmludGYoInBsdWdpbiBmb3IgbWltZVR5cGU6ICVzIHVyaTogJXNcbiIsIG1pbWV0eXBl
LCB1cmkpOworI2lmIDEKKyAgICByZXR1cm4gc2NyaWJibGVfZm9vKCk7CisjZWxzZQorICAgIHJl
dHVybiBndGtfbGFiZWxfbmV3KCJHb3QgYSBKb2I/Iik7CisjZW5kaWYKK30KKwogc3RhdGljIHZv
aWQKIHRpdGxlX2NoYW5nZV9jYiAoV2ViS2l0V2ViVmlldyogd2ViX3ZpZXcsIFdlYktpdFdlYkZy
YW1lKiB3ZWJfZnJhbWUsIGNvbnN0IGdjaGFyKiB0aXRsZSwgZ3BvaW50ZXIgZGF0YSkKIHsKQEAg
LTEyMiw2ICsyNTMsNyBAQCBjcmVhdGVfYnJvd3NlciAoKQogICAgIGdfc2lnbmFsX2Nvbm5lY3Qg
KHdlYl92aWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0sgKG5vdGlmeV9sb2Fk
X3N0YXR1c19jYiksIHdlYl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0ICh3ZWJfdmlldywg
Im5vdGlmeTo6cHJvZ3Jlc3MiLCBHX0NBTExCQUNLIChub3RpZnlfcHJvZ3Jlc3NfY2IpLCB3ZWJf
dmlldyk7CiAgICAgZ19zaWduYWxfY29ubmVjdCAod2ViX3ZpZXcsICJob3ZlcmluZy1vdmVyLWxp
bmsiLCBHX0NBTExCQUNLIChsaW5rX2hvdmVyX2NiKSwgd2ViX3ZpZXcpOworICAgIGdfc2lnbmFs
X2Nvbm5lY3QgKHdlYl92aWV3LCAiY3JlYXRlLXBsdWdpbiIsIEdfQ0FMTEJBQ0sgKGNyZWF0ZV9w
bHVnaW5fY2IpLCB3ZWJfdmlldyk7CiAKICAgICByZXR1cm4gc2Nyb2xsZWRfd2luZG93OwogfQot
LSAKMS42LjAuNAoK
</data>

          </attachment>
      

    </bug>

</bugzilla>