<?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>67516</bug_id>
          
          <creation_ts>2011-09-02 11:48:25 -0700</creation_ts>
          <short_desc>[V8] JavaScriptAudioNode should not declare that it mixes in EventTarget</short_desc>
          <delta_ts>2013-09-12 22:31:14 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>67312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dominic Cooney">dominicc</reporter>
          <assigned_to name="Dominic Cooney">dominicc</assigned_to>
          <cc>andersca</cc>
    
    <cc>arv</cc>
    
    <cc>crogers</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>461391</commentid>
    <comment_count>0</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 11:48:25 -0700</bug_when>
    <thetext>This is part of larger clean-up explained in meta bug 67312.

JavaScriptAudioNode is #ifdef&apos;d to declare it mixes in EventTarget in the V8 bindings, but we probably don’t want to do this because:

1. It is not an event target per the spec &lt;https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/specification.html#JavaScriptAudioNode-section&gt;

2. It doesn’t have addEventListener, removeEventListener and dispatchEvent, which event targets should have.

Because JavaScriptAudioNode has a callback, it wants to opt in to V8’s event-listener-keepalive-backreference scheme. JSC splits this into a separate &quot;mark children&quot; concept. For now we need to special-case JavaScriptAudioNode in the V8 code generator, like we do for SVGElementInstance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461396</commentid>
    <comment_count>1</comment_count>
      <attachid>106171</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 11:51:01 -0700</bug_when>
    <thetext>Created attachment 106171
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461454</commentid>
    <comment_count>2</comment_count>
      <attachid>106180</attachid>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 13:04:57 -0700</bug_when>
    <thetext>Created attachment 106180
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461537</commentid>
    <comment_count>3</comment_count>
      <attachid>106180</attachid>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-09-02 14:47:07 -0700</bug_when>
    <thetext>Comment on attachment 106180
Patch

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

&gt; Source/WebCore/bindings/js/JSEventTarget.cpp:-182
&gt; -        return toJS(exec, globalObject, jsAudioNode);

I notice you&apos;re removing this from the JSC code-path.  Do you also need to make an appropriate change in CodeGeneratorJS.pm?

I agree we should move over to Callback, but I don&apos;t want to land a change which will break web audio on any of the ports</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461595</commentid>
    <comment_count>4</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 15:49:30 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 106180 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106180&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSEventTarget.cpp:-182
&gt; &gt; -        return toJS(exec, globalObject, jsAudioNode);
&gt; 
&gt; I notice you&apos;re removing this from the JSC code-path.  Do you also need to make an appropriate change in CodeGeneratorJS.pm?

You’re right; this could be problematic for JSC.

&gt; I agree we should move over to Callback, but I don&apos;t want to land a change which will break web audio on any of the ports

Is JSC WebAudio in a buildable state? I may as well make onaudioprocess a callback.

It would be nice if JavaScriptAudioNode had unit tests. Can you help me write one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461599</commentid>
    <comment_count>5</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-02 15:52:55 -0700</bug_when>
    <thetext>Two more follow-up questions:

Do any other browsers have implementations/are working on implementations of Web Audio?

Who is a good person to ask to review Web Audio patches?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461616</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-09-02 16:29:41 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 106180 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106180&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/bindings/js/JSEventTarget.cpp:-182
&gt; &gt; &gt; -        return toJS(exec, globalObject, jsAudioNode);
&gt; &gt; 
&gt; &gt; I notice you&apos;re removing this from the JSC code-path.  Do you also need to make an appropriate change in CodeGeneratorJS.pm?
&gt; 
&gt; You’re right; this could be problematic for JSC.
&gt; 
&gt; &gt; I agree we should move over to Callback, but I don&apos;t want to land a change which will break web audio on any of the ports
&gt; 
&gt; Is JSC WebAudio in a buildable state? I may as well make onaudioprocess a callback.

Yes, it&apos;s possible to build for the mac port and the GTK project has an experimental version running, although their changes are not committed yet.

I think it&apos;s best to have the complete change from EventListener -&gt; Callback working before we land.  I can help you test that this is working properly.
You can also test this somewhat yourself by making sure that this page runs correctly both before and after the change:
http://chromium.googlecode.com/svn/trunk/samples/audio/javascript-processing.html

You can &quot;view source&quot; to see how this works -- pretty simple in this case (except for the WebGL part which isn&apos;t relevant to our test)

&gt; 
&gt; It would be nice if JavaScriptAudioNode had unit tests. Can you help me write one?

Yes, probably it would simply involve verifying that the callback is firing repeatedly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461618</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-09-02 16:30:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Two more follow-up questions:
&gt; 
&gt; Do any other browsers have implementations/are working on implementations of Web Audio?
&gt; 
&gt; Who is a good person to ask to review Web Audio patches?

I&apos;d like to be on the review list, and Kenneth Russell does many Web Audio reviews.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462229</commentid>
    <comment_count>8</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-09-05 12:47:43 -0700</bug_when>
    <thetext>Should the callback take four parameters:

void processAudio(JavaScriptAudioNode node, float playbackTime, sequence&lt;AudioBuffer&gt; inputBuffer, sequence&lt;AudioBuffer&gt; outputBuffer)

Or should it take one object with these as properties? If it takes an object, what should the type of that object be named? (AudioProcessEvent isn’t a good name, because the object is no longer an event.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462237</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-09-05 13:12:19 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Should the callback take four parameters:
&gt; 
&gt; void processAudio(JavaScriptAudioNode node, float playbackTime, sequence&lt;AudioBuffer&gt; inputBuffer, sequence&lt;AudioBuffer&gt; outputBuffer)
&gt; 
&gt; Or should it take one object with these as properties? If it takes an object, what should the type of that object be named? (AudioProcessEvent isn’t a good name, because the object is no longer an event.)

I don&apos;t want to change the existing API and break code that&apos;s already out in the field, so let&apos;s stick with one object with these as properties.  How about re-naming like this &quot;AudioProcessingEvent&quot; -&gt; &quot;AudioProcessingCallbackInfo&quot; ?

Please also note that the current implementation has both &quot;inputBuffer&quot; and &quot;outputBuffer&quot; passed directly as type &quot;AudioBuffer&quot; instead of &quot;sequence&lt;AudioBuffer&gt;&quot; (as the spec currently describes).  I&apos;ll change the spec to match the current behavior along with the new name we choose to replace AudioProcessingEvent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518108</commentid>
    <comment_count>10</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-12-08 21:51:10 -0800</bug_when>
    <thetext>So the proposed IDL is something like:

interface JavaScriptAudioNode : AudioNode {
  attribute AudioProcessingCallback onaudioprocess;
  readonly attribute long bufferSize;
}

[Callback, NoInterfaceObject]
interface AudioProcessingCallback {
  void processAudio(AudioProcessingCallbackInfo info);
}

[NoInterfaceObject]
interface AudioProcessingCallbackInfo {
  attribute JavaScriptAudioNode node;
  readonly attribute float playbackTime;
  readonly attribute AudioBuffer inputBuffer;
  readonly attribute AudioBuffer outputBuffer;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518980</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-11 19:45:42 -0800</bug_when>
    <thetext>Dominic, yes this looks about right.  I&apos;m assuming that &quot;processAudio()&quot; is just internal IDL language for the C++ part and has no meaning in JavaScript?  In other words, the actual JavaScript callback function can be any name.  Sorry if I&apos;m being stupid - just want to make sure.

We can change &quot;playbackTime&quot; to be double instead of float -- see:
https://bugs.webkit.org/show_bug.cgi?id=74030</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519015</commentid>
    <comment_count>12</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2011-12-11 22:00:30 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; Dominic, yes this looks about right.  I&apos;m assuming that &quot;processAudio()&quot; is just internal IDL language for the C++ part and has no meaning in JavaScript?  In other words, the actual JavaScript callback function can be any name.  Sorry if I&apos;m being stupid - just want to make sure.

It depends. If you do this:

var n = /* some JavaScriptAudioNode */
n.onaudioprocess = f;

then f can be a function with any name. However if you do

n = onaudioprocess = o;

where o is an object that is not a function, then it will try to call o.processAudio(…). If that should be a different name, we can change it.

&gt; We can change &quot;playbackTime&quot; to be double instead of float -- see:
&gt; https://bugs.webkit.org/show_bug.cgi?id=74030

Got it. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519025</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-11 22:54:35 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Dominic, yes this looks about right.  I&apos;m assuming that &quot;processAudio()&quot; is just internal IDL language for the C++ part and has no meaning in JavaScript?  In other words, the actual JavaScript callback function can be any name.  Sorry if I&apos;m being stupid - just want to make sure.
&gt; 
&gt; It depends. If you do this:
&gt; 
&gt; var n = /* some JavaScriptAudioNode */
&gt; n.onaudioprocess = f;
&gt; 
&gt; then f can be a function with any name. However if you do
&gt; 
&gt; n = onaudioprocess = o;
&gt; 
&gt; where o is an object that is not a function, then it will try to call o.processAudio(…). If that should be a different name, we can change it.

Oh right, now I remember you explaining this to me.  That sounds fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928640</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-09-12 22:31:14 -0700</bug_when>
    <thetext>V8 is gone.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106171</attachid>
            <date>2011-09-02 11:51:01 -0700</date>
            <delta_ts>2011-09-02 13:04:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67516-20110902115100.patch</filename>
            <type>text/plain</type>
            <size>2276</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MWZjMzQ5OWMwZGE3NjA4
ODIxMWNhMmVjMTc5ZWIwZWRkYTg4OWIyLi4yMzc0NTM1NDRlYWZhNmQyYmYwZDBmY2MzNWRkZDhm
ZjEzYjkwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMDIgIERvbWlu
aWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgSmF2YVNj
cmlwdEF1ZGlvTm9kZSBubyBsb25nZXIgY2xhaW0gdG8gYmUgYW4gRXZlbnRUYXJnZXQuIEl0IGlz
IG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IExheW91dFRlc3RzL3dlYmF1ZGlvLCBhbHRob3VnaCBKYXZhU2NyaXB0QXVkaW9Ob2RlIGlz
IG5vdCB0ZXN0ZWQgOigKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxGaWVsZHMpOiBKYXZhU2NyaXB0QXVkaW9Ob2Rl
IHdhbnRzIHRvIGtlZXAgaXRzIG9uYXVkaW9wcm9jZXNzIGNhbGxiYWNrIGFsaXZlLgorICAgICAg
ICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsOiBEb24ndCBjbGFpbSB0byBiZSBF
dmVudFRhcmdldC4KKwogMjAxMS0wOS0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBCZWZvcmVQcm9jZXNzRXZlbnQsIGl0IHdhcyBuZXZlciBtZWFudCB0
byBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQppbmRleCA5ZTI2MzQwNWI3NDUyZGVmNGJlNTRhMzk5MGY3ZTFhOWEwZjZkOGUzLi4z
YjVhYzFmYWJmYjUzMmM0ODc1ZGFhMzljMGY1NjEwYjg0YmJmZjhiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTA4LDYg
KzUwOCw3IEBAIHN1YiBHZXRJbnRlcm5hbEZpZWxkcwogICAgICAgICAoJGRhdGFOb2RlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiRXZlbnRUYXJnZXQifSB8fAogICAgICAgICAgSXNTdWJUeXBlKCRk
YXRhTm9kZSwgIkFic3RyYWN0V29ya2VyIikgfHwKICAgICAgICAgIElzU3ViVHlwZSgkZGF0YU5v
ZGUsICJXb3JrZXJDb250ZXh0IikgfHwKKyAgICAgICAgICRuYW1lIGVxICJKYXZhU2NyaXB0QXVk
aW9Ob2RlIiB8fAogICAgICAgICAgJG5hbWUgZXEgIlNWR0VsZW1lbnRJbnN0YW5jZSIpKSB7CiAg
ICAgICAgIHB1c2goQGN1c3RvbUludGVybmFsRmllbGRzLCAiZXZlbnRMaXN0ZW5lckNhY2hlSW5k
ZXgiKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9KYXZhU2Ny
aXB0QXVkaW9Ob2RlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRp
b05vZGUuaWRsCmluZGV4IGVmNTM1OWI5NzZlYWM2MzIxZDE4NWM5MWZhNjk1MjE1ZWZlNzg5NTku
LmIxMDI4NDk5ZDQ0ODIyYjA5ZmEwY2RjZTM2MTFkOTZiOGE5NTQxZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsCkBAIC0yNywxMCArMjcs
NyBAQCBtb2R1bGUgYXVkaW8gewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFs
PVdFQl9BVURJTywKICAgICAgICAgR2VuZXJhdGVUb0pTLAotICAgICAgICBDdXN0b21NYXJrRnVu
Y3Rpb24sCi0jaWYgZGVmaW5lZChWOF9CSU5ESU5HKSAmJiBWOF9CSU5ESU5HCi0gICAgICAgIEV2
ZW50VGFyZ2V0Ci0jZW5kaWYKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uCiAgICAgXSBKYXZh
U2NyaXB0QXVkaW9Ob2RlIDogQXVkaW9Ob2RlIHsKICAgICAgICAgLy8gUmVuZGVyaW5nIGNhbGxi
YWNrCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYXVkaW9wcm9jZXNzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106180</attachid>
            <date>2011-09-02 13:04:57 -0700</date>
            <delta_ts>2011-09-02 15:49:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67516-20110902130456.patch</filename>
            <type>text/plain</type>
            <size>3175</size>
            <attacher name="Dominic Cooney">dominicc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQ0MzUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4MWZjMzQ5OWMwZGE3NjA4
ODIxMWNhMmVjMTc5ZWIwZWRkYTg4OWIyLi4yMzc0NTM1NDRlYWZhNmQyYmYwZDBmY2MzNWRkZDhm
ZjEzYjkwZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDktMDIgIERvbWlu
aWMgQ29vbmV5ICA8ZG9taW5pY2NAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgSmF2YVNj
cmlwdEF1ZGlvTm9kZSBubyBsb25nZXIgY2xhaW0gdG8gYmUgYW4gRXZlbnRUYXJnZXQuIEl0IGlz
IG5vdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3
NTE2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IExheW91dFRlc3RzL3dlYmF1ZGlvLCBhbHRob3VnaCBKYXZhU2NyaXB0QXVkaW9Ob2RlIGlz
IG5vdCB0ZXN0ZWQgOigKKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoR2V0SW50ZXJuYWxGaWVsZHMpOiBKYXZhU2NyaXB0QXVkaW9Ob2Rl
IHdhbnRzIHRvIGtlZXAgaXRzIG9uYXVkaW9wcm9jZXNzIGNhbGxiYWNrIGFsaXZlLgorICAgICAg
ICAqIHdlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsOiBEb24ndCBjbGFpbSB0byBiZSBF
dmVudFRhcmdldC4KKwogMjAxMS0wOS0wMiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFJlbW92ZSBCZWZvcmVQcm9jZXNzRXZlbnQsIGl0IHdhcyBuZXZlciBtZWFudCB0
byBiZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAppbmRl
eCAyZjNmNjFiYTczMTdiM2U3NjU1NWVjY2Q4NmY1MjQwNzg3M2NhZDc4Li5jYTUzMDNkM2E5NmY2
MWM2ZDJhN2FjZGUyZDMwZTQwNTBiNmU2NmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcApAQCAtODYsOCArODYsNiBAQAogI2lmIEVOQUJMRShXRUJf
QVVESU8pCiAjaW5jbHVkZSAiQXVkaW9Db250ZXh0LmgiCiAjaW5jbHVkZSAiSlNBdWRpb0NvbnRl
eHQuaCIKLSNpbmNsdWRlICJKU0phdmFTY3JpcHRBdWRpb05vZGUuaCIKLSNpbmNsdWRlICJKYXZh
U2NyaXB0QXVkaW9Ob2RlLmgiCiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJfU09DS0VUUykKQEAg
LTE3OCw4ICsxNzYsNiBAQCBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFdmVudFRhcmdldCogdGFyZwogI2VuZGlmCiAKICNpZiBF
TkFCTEUoV0VCX0FVRElPKQotICAgIGlmIChKYXZhU2NyaXB0QXVkaW9Ob2RlKiBqc0F1ZGlvTm9k
ZSA9IHRhcmdldC0+dG9KYXZhU2NyaXB0QXVkaW9Ob2RlKCkpCi0gICAgICAgIHJldHVybiB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCwganNBdWRpb05vZGUpOwogICAgIGlmIChBdWRpb0NvbnRleHQq
IGF1ZGlvQ29udGV4dCA9IHRhcmdldC0+dG9BdWRpb0NvbnRleHQoKSkKICAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBhdWRpb0NvbnRleHQpOwogI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4
IDllMjYzNDA1Yjc0NTJkZWY0YmU1NGEzOTkwZjdlMWE5YTBmNmQ4ZTMuLjNiNWFjMWZhYmZiNTMy
YzQ4NzVkYWEzOWMwZjU2MTBiODRiYmZmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC01MDgsNiArNTA4LDcgQEAgc3Vi
IEdldEludGVybmFsRmllbGRzCiAgICAgICAgICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJFdmVudFRhcmdldCJ9IHx8CiAgICAgICAgICBJc1N1YlR5cGUoJGRhdGFOb2RlLCAiQWJz
dHJhY3RXb3JrZXIiKSB8fAogICAgICAgICAgSXNTdWJUeXBlKCRkYXRhTm9kZSwgIldvcmtlckNv
bnRleHQiKSB8fAorICAgICAgICAgJG5hbWUgZXEgIkphdmFTY3JpcHRBdWRpb05vZGUiIHx8CiAg
ICAgICAgICAkbmFtZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIikpIHsKICAgICAgICAgcHVzaChA
Y3VzdG9tSW50ZXJuYWxGaWVsZHMsICJldmVudExpc3RlbmVyQ2FjaGVJbmRleCIpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUu
aWRsIGIvU291cmNlL1dlYkNvcmUvd2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwKaW5k
ZXggZWY1MzU5Yjk3NmVhYzYzMjFkMTg1YzkxZmE2OTUyMTVlZmU3ODk1OS4uYjEwMjg0OTlkNDQ4
MjJiMDlmYTBjZGNlMzYxMWQ5NmI4YTk1NDFkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d2ViYXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvd2Vi
YXVkaW8vSmF2YVNjcmlwdEF1ZGlvTm9kZS5pZGwKQEAgLTI3LDEwICsyNyw3IEBAIG1vZHVsZSBh
dWRpbyB7CiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAog
ICAgICAgICBHZW5lcmF0ZVRvSlMsCi0gICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKLSNpZiBk
ZWZpbmVkKFY4X0JJTkRJTkcpICYmIFY4X0JJTkRJTkcKLSAgICAgICAgRXZlbnRUYXJnZXQKLSNl
bmRpZgorICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24KICAgICBdIEphdmFTY3JpcHRBdWRpb05v
ZGUgOiBBdWRpb05vZGUgewogICAgICAgICAvLyBSZW5kZXJpbmcgY2FsbGJhY2sKICAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hdWRpb3Byb2Nlc3M7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>