<?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>73163</bug_id>
          
          <creation_ts>2011-11-26 22:16:32 -0800</creation_ts>
          <short_desc>Remove platform/audio/fftw</short_desc>
          <delta_ts>2011-12-12 14:13:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>crogers</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>dwim79</cc>
    
    <cc>dw.im</cc>
    
    <cc>kbr</cc>
    
    <cc>pnormand</cc>
    
    <cc>s.choi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>509405</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-26 22:16:32 -0800</bug_when>
    <thetext>Remove platform/audio/fftw</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509406</commentid>
    <comment_count>1</comment_count>
      <attachid>116666</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-26 22:18:08 -0800</bug_when>
    <thetext>Created attachment 116666
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509624</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-28 00:53:50 -0800</bug_when>
    <thetext>Is there a discussion about a possible alternative to it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509626</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-28 00:56:34 -0800</bug_when>
    <thetext>It&apos;d be great if the patch updates configure.ac as well, no need to check for libfftw there if support for it is removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509628</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 00:59:09 -0800</bug_when>
    <thetext>&gt; Is there a discussion about a possible alternative to it?

Are you using this code?  If so, I&apos;m happy to leave it in the tree, but you should check whether you&apos;re complying with the various licenses.  IANAL, but s.choi pointed out that there might be some license compatibility problems between FFTW and WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509640</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-28 01:17:53 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Is there a discussion about a possible alternative to it?
&gt; 
&gt; Are you using this code?  If so, I&apos;m happy to leave it in the tree, but you should check whether you&apos;re complying with the various licenses.  IANAL, but s.choi pointed out that there might be some license compatibility problems between FFTW and WebKit.

I&apos;ll test your patch in my webaudio branch and report back :)
If needed we can hook in the FFT GStreamer lib anyway, it&apos;s LGPL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509649</commentid>
    <comment_count>6</comment_count>
    <who name="Soo-Hyun Choi">s.choi</who>
    <bug_when>2011-11-28 01:37:13 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; &gt; Is there a discussion about a possible alternative to it?
&gt; &gt; 
&gt; &gt; Are you using this code?  If so, I&apos;m happy to leave it in the tree, but you should check whether you&apos;re complying with the various licenses.  IANAL, but s.choi pointed out that there might be some license compatibility problems between FFTW and WebKit.
&gt; 
&gt; I&apos;ll test your patch in my webaudio branch and report back :)
&gt; If needed we can hook in the FFT GStreamer lib anyway, it&apos;s LGPL.

I would think FFT GStreamer can be a nice alternative. FFTW.org is GPL, so it may lead into potential license conflict with WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>509703</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-28 03:32:20 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; Is there a discussion about a possible alternative to it?
&gt; &gt; &gt; 
&gt; &gt; &gt; Are you using this code?  If so, I&apos;m happy to leave it in the tree, but you should check whether you&apos;re complying with the various licenses.  IANAL, but s.choi pointed out that there might be some license compatibility problems between FFTW and WebKit.
&gt; &gt; 
&gt; &gt; I&apos;ll test your patch in my webaudio branch and report back :)
&gt; &gt; If needed we can hook in the FFT GStreamer lib anyway, it&apos;s LGPL.
&gt; 
&gt; I would think FFT GStreamer can be a nice alternative.

Yes, for the ports already using GStreamer :)
We indeed need a replacement for FFTW, I&apos;ll try to provide one using gstfft for the folks interested.

&gt; FFTW.org is GPL, so it may lead into potential license conflict with WebKit.

Yes. I think Chris Rogers chosed FFTW initially because it&apos;s very very fast :)
It seems we could contact MIT and get a unlimited-use license, see http://www.fftw.org/faq/section1.html#isfftwfree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510102</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-28 13:03:10 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; (In reply to comment #4)
&gt; &gt; &gt; &gt; &gt; Is there a discussion about a possible alternative to it?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Are you using this code?  If so, I&apos;m happy to leave it in the tree, but you should check whether you&apos;re complying with the various licenses.  IANAL, but s.choi pointed out that there might be some license compatibility problems between FFTW and WebKit.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;ll test your patch in my webaudio branch and report back :)
&gt; &gt; &gt; If needed we can hook in the FFT GStreamer lib anyway, it&apos;s LGPL.
&gt; &gt; 
&gt; &gt; I would think FFT GStreamer can be a nice alternative.
&gt; 
&gt; Yes, for the ports already using GStreamer :)
&gt; We indeed need a replacement for FFTW, I&apos;ll try to provide one using gstfft for the folks interested.
&gt; 
&gt; &gt; FFTW.org is GPL, so it may lead into potential license conflict with WebKit.
&gt; 
&gt; Yes. I think Chris Rogers chosed FFTW initially because it&apos;s very very fast :)
&gt; It seems we could contact MIT and get a unlimited-use license, see http://www.fftw.org/faq/section1.html#isfftwfree

There were some attempts to secure a non-GPL license for the use of FFTW in WebKit, but these were so far unsuccessful. There&apos;s been no activity on this front for several months.

Chromium is currently using ffmpeg&apos;s FFT on Windows and Linux, because that library is already being linked in to the browser, so there was no increase in code size by doing so.

I personally don&apos;t mind r+&apos;ing this patch, though think it would be best if Chris Rogers would be given the chance to comment. He&apos;s currently on vacation but due back in a week or two.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510149</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 13:58:33 -0800</bug_when>
    <thetext>We can wait for him to get back.  There&apos;s no particular rush on this patch.  It just seems like a good cleanup so folks don&apos;t accidentally walk into a licensing trap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510446</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-11-28 20:37:20 -0800</bug_when>
    <thetext>Adam, please don&apos;t remove this code as the GTK port relies on it.  Presumably their license obligations are less stringent than the other ports since much of their code is GPL.

The mac port uses Accelerate.framework, while chromium uses FFmpeg</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510542</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-28 23:53:04 -0800</bug_when>
    <thetext>Thanks Chris.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510595</commentid>
    <comment_count>12</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-29 01:30:24 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Adam, please don&apos;t remove this code as the GTK port relies on it.  Presumably their license obligations are less stringent than the other ports since much of their code is GPL.
&gt; 

Our code is LGPL actually.
We are in violation of the LGPL if we link against FFTW indeed. But this is unlikely to happen currently because our WebAudio support is not fully landed and not yet enabled by default.

Reopening then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510613</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-29 01:57:27 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; Adam, please don&apos;t remove this code as the GTK port relies on it.  Presumably their license obligations are less stringent than the other ports since much of their code is GPL.
&gt; &gt; 
&gt; 
&gt; Our code is LGPL actually.
&gt; We are in violation of the LGPL if we link against FFTW indeed. But this is unlikely to happen currently because our WebAudio support is not fully landed and not yet enabled by default.
&gt; 
&gt; Reopening then!

I created bug 73295 to disable WebAudio on GTK. We&apos;ll re-enable it when the gstfftw-based implementation lands.
So GTK is not blocking this patch anymore!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510815</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-29 08:59:51 -0800</bug_when>
    <thetext>Ok.  It sounds like we should land this patch then (possibly including a change to configure.ac).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>510863</commentid>
    <comment_count>15</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2011-11-29 09:45:38 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; Ok.  It sounds like we should land this patch then (possibly including a change to configure.ac).

The configure.ac change is not needed I think. I can just fix it up when we add the GStreamer fft implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>511290</commentid>
    <comment_count>16</comment_count>
      <attachid>116666</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-11-29 18:31:06 -0800</bug_when>
    <thetext>Comment on attachment 116666
Patch

I&apos;d still like crogers to give a thumbs up to this removal, but otherwise seems fine to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518858</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-10 19:03:20 -0800</bug_when>
    <thetext>MIT *does* have commercial license options for FFTW which make it compatible with LGPL, so in theory a port could use FFTW.  And since, performance-wise, FFTW is one of the better options we have, it would be nice to avoid removing this code.  But, I&apos;m not a lawyer and I don&apos;t know how best to call out this code as needing special care.  At the least, maybe we should add some precautionary comments in the header file?

Maybe we can bring this discussion up on webkit-dev, so that the more legal-oriented folks can weigh in.  It would be nice to keep the code if possible, for potential use by ports with the appropriate commercial license.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518893</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-11 09:11:06 -0800</bug_when>
    <thetext>Rather than having a bunch of code that someone might use one day, we can add the code back if someone actually wants to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518922</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Rogers">crogers</who>
    <bug_when>2011-12-11 13:21:04 -0800</bug_when>
    <thetext>That seems reasonable, although it makes it difficult for ports to know that the code is available if it&apos;s not actually visible in the tree.  I don&apos;t want to hold this back if everybody else wants it removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518940</commentid>
    <comment_count>20</comment_count>
    <who name="Soo-Hyun Choi">s.choi</who>
    <bug_when>2011-12-11 16:34:43 -0800</bug_when>
    <thetext>As said in their homepage, FFTW can be purchased to be compatible with LGPL, and we are aware of it. But as I pointed earlier in the chrome-dev, this could potentially introduce a license trap, leading to a serous license violation.

I would like it to be removed from WebKit source tree, leaving it to a browser vendor&apos;s decision whether or not to implement a necessary port as their necessary.

I don&apos;t mind bring this issue to webkit-dev, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518946</commentid>
    <comment_count>21</comment_count>
      <attachid>116666</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-11 17:14:29 -0800</bug_when>
    <thetext>Comment on attachment 116666
Patch

Given that no one is using this code today, I think we&apos;re better off removing it.  If someone wants to use it in the future, then we can figure out how to let them do that without creating a license trap for others.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518948</commentid>
    <comment_count>22</comment_count>
      <attachid>116666</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-11 17:17:52 -0800</bug_when>
    <thetext>Comment on attachment 116666
Patch

Rejecting attachment 116666 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
LED at 1305.
Hunk #3 FAILED at 1920.
3 out of 3 hunks FAILED -- saving rejects to file Source/WebCore/WebCore.gyp/WebCore.gyp.rej
patching file Source/WebCore/platform/audio/FFTFrame.h
patching file Source/WebCore/platform/audio/FFTFrameStub.cpp
patching file Source/WebCore/platform/audio/fftw/FFTFrameFFTW.cpp
rm &apos;Source/WebCore/platform/audio/fftw/FFTFrameFFTW.cpp&apos;

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/10827924</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519451</commentid>
    <comment_count>23</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-12 14:13:37 -0800</bug_when>
    <thetext>Committed r102622: &lt;http://trac.webkit.org/changeset/102622&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116666</attachid>
            <date>2011-11-26 22:18:08 -0800</date>
            <delta_ts>2011-12-11 17:17:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73163-20111126221806.patch</filename>
            <type>text/plain</type>
            <size>17784</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMTE5OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDExLTExLTI2ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIHBsYXRmb3JtL2F1ZGlv
L2ZmdHcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcz
MTYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhl
IEZGVFcgbGlicmFyeSBpcyBHUEwsIG5vdCBMR1BMLCBsaWtlIFdlYktpdC4gIFRoaXMgcGF0Y2gg
cmVtb3ZlcyB0aGUKKyAgICAgICAgaW50ZWdyYXRpb24gd2l0aCB0aGUgbGlicmFyeSBzbyBmb2xr
cyB3aG8gdXNlIFdlYkF1ZGlvIGRvbid0CisgICAgICAgIGFjY2lkZW50aWFsbHkgdmlvbGF0ZSB0
aGUgR1BMIGJ5IGxpbmtpbmcgaW4gRkZUVy4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lw
aToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oOgorICAgICAgICAqIHBsYXRm
b3JtL2F1ZGlvL0ZGVEZyYW1lU3R1Yi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vYXVkaW8vZmZ0
dzogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5j
cHA6IFJlbW92ZWQuCisKIDIwMTEtMTEtMjYgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9s
bGl2aWVycy5jb20+CiAKICAgICAgICAgW3d4XSBVbnJldmlld2VkIGJ1aWxkIGZpeC4gQ2hhbmdl
IHRoZSBvcmRlciBvZiB3eCBoZWFkZXIgaW5jbHVkZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CShyZXZpc2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtNTAxLDE0ICs1MDEsNiBAQCBEZXJpdmVkU291cmNlcy9XZWJDb3JlL1hM
aW5rTmFtZXMuY3BwIDogCiBpZiBFTkFCTEVfV0VCX0FVRElPCiBGRUFUVVJFX0RFRklORVMgKz0g
RU5BQkxFX1dFQl9BVURJTz0xCiB3ZWJjb3JlX2NwcGZsYWdzICs9IC1ERU5BQkxFX1dFQl9BVURJ
Tz0xCi0KLWlmIFVTRV9XRUJBVURJT19GRlRXCi1GRUFUVVJFX0RFRklORVMgKz0gV1RGX1VTRV9X
RUJBVURJT19GRlRXPTEKLXdlYmNvcmVfY3BwZmxhZ3MgKz0gLURXVEZfVVNFX1dFQkFVRElPX0ZG
VFc9MQotd2ViY29yZV9zb3VyY2VzICs9IFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAKLWVuZGlmCi0KIGVuZGlmCiAKICMgLS0tLQpAQCAtODI5
LDcgKzgyMSw2IEBAIGxpYldlYkNvcmVHdGtfbGFfQ1BQRkxBR1MgPSBcCiAJJChHU1RSRUFNRVJf
Q0ZMQUdTKSBcCiAJJChHVEtfQ0ZMQUdTKSBcCiAJJChISUxET05fQ0ZMQUdTKSBcCi0JJChMSUJG
RlRXX0NGTEFHUykgXAogCSQoTElCU09VUF9DRkxBR1MpIFwKIAkkKExJQlhNTF9DRkxBR1MpIFwK
IAkkKExJQlhTTFRfQ0ZMQUdTKSBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiAxMDEx
MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMy
MDMsNyArMzIwMyw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vYXVkaW8vWmVyb1BvbGUuY3Bw
JywKICAgICAgICAgICAgICdwbGF0Zm9ybS9hdWRpby9aZXJvUG9sZS5oJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9hdWRpby9jaHJvbWl1bS9BdWRpb0J1c0Nocm9taXVtLmNwcCcsCi0gICAgICAg
ICAgICAncGxhdGZvcm0vYXVkaW8vZmZ0dy9GRlRGcmFtZUZGVFcuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9hdWRpby9tYWMvQXVkaW9CdXNNYWMubW0nLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2F1ZGlvL21hYy9BdWRpb0Rlc3RpbmF0aW9uTWFjLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vYXVkaW8vbWFjL0F1ZGlvRGVzdGluYXRpb25NYWMuaCcsCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAkocmV2aXNpb24gMTAxMTIyKQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEwOTIsMTEg
KzEwOTIsNiBAQAogICAgICAgICAgICAgJ2luY2x1ZGVfZGlycysrKyc6IFsnLi4vZG9tJ10sCiAg
ICAgICAgICAgfSwKICAgICAgICAgfV0sCi0gICAgICAgIFsnKE9TPT0ibGludXgiIG9yIE9TPT0i
d2luIikgYW5kICJXVEZfVVNFX1dFQkFVRElPX0ZGVFc9MSIgaW4gZmVhdHVyZV9kZWZpbmVzJywg
ewotICAgICAgICAgICdpbmNsdWRlX2RpcnMnOiBbCi0gICAgICAgICAgICAnPChjaHJvbWl1bV9z
cmNfZGlyKS90aGlyZF9wYXJ0eS9mZnR3L2FwaScsCi0gICAgICAgICAgXSwKLSAgICAgICAgfV0s
CiAgICAgICBdLAogICAgIH0sCiAgICAgewpAQCAtMTMwNSwxNCArMTMwMCw2IEBACiAgICAgICAg
ICAgICAnaW5jbHVkZV9kaXJzKysnOiBbJy4uL2RvbSddLAogICAgICAgICAgIH0sCiAgICAgICAg
IH1dLAotICAgICAgICBbJyhPUz09ImxpbnV4IiBvciBPUz09IndpbiIpIGFuZCAiV1RGX1VTRV9X
RUJBVURJT19GRlRXPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKLSAgICAgICAgICAjIFRoaXMg
ZGlyZWN0b3J5IG5lZWRzIHRvIGJlIG9uIHRoZSBpbmNsdWRlIHBhdGggZm9yIG11bHRpcGxlIHN1
Yi10YXJnZXRzIG9mIHdlYmNvcmUuCi0gICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGlu
Z3MnOiB7Ci0gICAgICAgICAgICAnaW5jbHVkZV9kaXJzJzogWwotICAgICAgICAgICAgICAnPChj
aHJvbWl1bV9zcmNfZGlyKS90aGlyZF9wYXJ0eS9mZnR3L2FwaScsCi0gICAgICAgICAgICBdLAot
ICAgICAgICAgIH0sCi0gICAgICAgIH1dLAogICAgICAgICBbJyhPUz09Im1hYyIgb3IgT1M9PSJs
aW51eCIgb3IgT1M9PSJ3aW4iKSBhbmQgIldURl9VU0VfV0VCQVVESU9fRkZNUEVHPTEiIGluIGZl
YXR1cmVfZGVmaW5lcycsIHsKICAgICAgICAgICAjIFRoaXMgZGlyZWN0b3J5IG5lZWRzIHRvIGJl
IG9uIHRoZSBpbmNsdWRlIHBhdGggZm9yIG11bHRpcGxlIHN1Yi10YXJnZXRzIG9mIHdlYmNvcmUu
CiAgICAgICAgICAgJ2RpcmVjdF9kZXBlbmRlbnRfc2V0dGluZ3MnOiB7CkBAIC0xOTIwLDIzICsx
OTA3LDYgQEAKICAgICAgICAgICAgICdpbmNsdWRlX2RpcnMrKysnOiBbJy4uL2RvbSddLAogICAg
ICAgICAgIH0sCiAgICAgICAgIH1dLAotICAgICAgICBbJ09TPT0ibGludXgiIGFuZCAiV1RGX1VT
RV9XRUJBVURJT19GRlRXPTEiIGluIGZlYXR1cmVfZGVmaW5lcycsIHsKLSAgICAgICAgICAjIEZJ
WE1FOiAoa2JyKSBmaWd1cmUgb3V0IGhvdyB0byBtYWtlIHRoZXNlIGRlcGVuZGVuY2llcwotICAg
ICAgICAgICMgd29yayBpbiBhIGNyb3NzLXBsYXRmb3JtIHdheS4gQXR0ZW1wdHMgdG8gdXNlCi0g
ICAgICAgICAgIyAibGlua19zZXR0aW5ncyIgYW5kICJsaWJyYXJpZXMiIGluIGNvbmp1bmN0aW9u
IHdpdGggdGhlCi0gICAgICAgICAgIyBtc3ZzLXNwZWNpZmljIHNldHRpbmdzIGRpZG4ndCB3b3Jr
IHNvIGZhci4KLSAgICAgICAgICAnYWxsX2RlcGVuZGVudF9zZXR0aW5ncyc6IHsKLSAgICAgICAg
ICAgICdsZGZsYWdzJzogWwotICAgICAgICAgICAgICAjIEZJWE1FOiAoa2JyKSBidWlsZCB0aGUg
RkZUVyBpbnRvIFBST0RVQ1RfRElSIHVzaW5nIEdZUC4KLSAgICAgICAgICAgICAgJy1MdGhpcmRf
cGFydHkvZmZ0dy8ubGlicycsCi0gICAgICAgICAgICBdLAotICAgICAgICAgICAgJ2xpbmtfc2V0
dGluZ3MnOiB7Ci0gICAgICAgICAgICAgICdsaWJyYXJpZXMnOiBbCi0gICAgICAgICAgICAgICAg
Jy1sZmZ0dzNmJwotICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9
LAotICAgICAgICB9XSwKICAgICAgICAgWydlbmFibGVfc3ZnIT0wJywgewogICAgICAgICAgICdk
ZXBlbmRlbmNpZXMnOiBbCiAgICAgICAgICAgICAnd2ViY29yZV9zdmcnLApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCShyZXZpc2lvbiAxMDExMjIpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NywxMCArNDcsNiBAQAogI2luY2x1ZGUgIm1rbF9kZnRpLmgiCiAjZW5kaWYgLy8gVVNFKFdF
QkFVRElPX01LTCkKIAotI2lmIFVTRShXRUJBVURJT19GRlRXKQotI2luY2x1ZGUgImZmdHczLmgi
Ci0jZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGVFcpCi0KICNpZiBVU0UoV0VCQVVESU9fRkZNUEVH
KQogc3RydWN0IFJERlRDb250ZXh0OwogI2VuZGlmIC8vIFVTRShXRUJBVURJT19GRk1QRUcpCkBA
IC0xNTAsMzAgKzE0Niw2IEBAIHByaXZhdGU6CiAgICAgQXVkaW9GbG9hdEFycmF5IG1faW1hZ0Rh
dGE7CiAjZW5kaWYgLy8gVVNFKFdFQkFVRElPX0ZGTVBFRykKIAotI2lmIFVTRShXRUJBVURJT19G
RlRXKQotICAgIGZmdHdmX3BsYW4gbV9mb3J3YXJkUGxhbjsKLSAgICBmZnR3Zl9wbGFuIG1fYmFj
a3dhcmRQbGFuOwotCi0gICAgZW51bSBEaXJlY3Rpb24gewotICAgICAgICBGb3J3YXJkLAotICAg
ICAgICBCYWNrd2FyZAotICAgIH07Ci0KLSAgICAvLyBCb3RoIHRoZSByZWFsIGFuZCBpbWFnaW5h
cnkgZGF0YSBhcmUgc3RvcmVkIGhlcmUuCi0gICAgLy8gVGhlIHJlYWwgZGF0YSBpcyBzdG9yZWQg
Zmlyc3QsIGZvbGxvd2VkIGJ5IHRocmVlIGZsb2F0IHZhbHVlcyBvZiBwYWRkaW5nLgotICAgIC8v
IFRoZSBpbWFnaW5hcnkgZGF0YSBpcyBzdG9yZWQgYWZ0ZXIgdGhlIHBhZGRpbmcgYW5kIGlzIDE2
LWJ5dGUgYWxpZ25lZCAoaWYgbV9kYXRhIGl0c2VsZiBpcyBhbGlnbmVkKS4KLSAgICAvLyBUaGUg
cmVhc29uIHdlIGRvbid0IHVzZSBzZXBhcmF0ZSBhcnJheXMgZm9yIHJlYWwgYW5kIGltYWdpbmFy
eSBpcyBiZWNhdXNlIHRoZSBGRlRXIHBsYW5zIGFyZSBzaGFyZWQKLSAgICAvLyBiZXR3ZWVuIEZG
VEZyYW1lIGluc3RhbmNlcyBhbmQgcmVxdWlyZSB0aGF0IHRoZSByZWFsIGFuZCBpbWFnaW5hcnkg
ZGF0YSBwb2ludGVycyBiZSB0aGUgc2FtZSBkaXN0YW5jZSBhcGFydC4KLSAgICBBdWRpb0Zsb2F0
QXJyYXkgbV9kYXRhOwotCi0gICAgc3RhdGljIE11dGV4ICpzX3BsYW5Mb2NrOwotICAgIHN0YXRp
YyBmZnR3Zl9wbGFuKiBmZnR3Rm9yd2FyZFBsYW5zOwotICAgIHN0YXRpYyBmZnR3Zl9wbGFuKiBm
ZnR3QmFja3dhcmRQbGFuczsKLQotICAgIHN0YXRpYyBmZnR3Zl9wbGFuIGZmdHdQbGFuRm9yU2l6
ZSh1bnNpZ25lZCBmZnRTaXplLCBEaXJlY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsb2F0KiwgZmxvYXQqLCBmbG9hdCopOwotI2VuZGlmIC8vIFVTRShXRUJB
VURJT19GRlRXKQotCiAjZW5kaWYgLy8gIVVTRV9BQ0NFTEVSQVRFX0ZGVAogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vRkZURnJhbWVTdHViLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0dWIuY3BwCShyZXZp
c2lvbiAxMDExMjIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9GRlRGcmFtZVN0
dWIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoV0VC
X0FVRElPKQogCi0jaWYgIU9TKERBUldJTikgJiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0Uo
V0VCQVVESU9fRkZUVykgJiYgIVVTRShXRUJBVURJT19GRk1QRUcpCisjaWYgIU9TKERBUldJTikg
JiYgIVVTRShXRUJBVURJT19NS0wpICYmICFVU0UoV0VCQVVESU9fRkZNUEVHKQogCiAjaW5jbHVk
ZSAiRkZURnJhbWUuaCIKIApAQCAtMTAyLDYgKzEwMiw2IEBAIGZsb2F0KiBGRlRGcmFtZTo6aW1h
Z0RhdGEoKSBjb25zdAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyAhT1Mo
REFSV0lOKSAmJiAhVVNFKFdFQkFVRElPX01LTCkgJiYgIVVTRShXRUJBVURJT19GRlRXKQorI2Vu
ZGlmIC8vICFPUyhEQVJXSU4pICYmICFVU0UoV0VCQVVESU9fTUtMKQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQl9BVURJTykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmdHcv
RkZURnJhbWVGRlRXLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9mZnR3L0ZGVEZyYW1lRkZUVy5jcHAJKHJldmlzaW9uIDEwMTEyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2ZmdHcvRkZURnJhbWVGRlRXLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSwzMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8vIEZGVEZyYW1lIGltcGxlbWVudGF0aW9uIHVz
aW5nIHRoZSBGRlRXIGxpYnJhcnkuCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lmIEVOQUJM
RShXRUJfQVVESU8pCi0KLSNpZiAhT1MoREFSV0lOKSAmJiBVU0UoV0VCQVVESU9fRkZUVykKLQot
I2luY2x1ZGUgIkZGVEZyYW1lLmgiCi0KLSNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IGludCBrTWF4RkZUUG93MlNpemUgPSAyNDsKLQot
ZmZ0d2ZfcGxhbiogRkZURnJhbWU6OmZmdHdGb3J3YXJkUGxhbnMgPSAwOwotZmZ0d2ZfcGxhbiog
RkZURnJhbWU6OmZmdHdCYWNrd2FyZFBsYW5zID0gMDsKLQotTXV0ZXgqIEZGVEZyYW1lOjpzX3Bs
YW5Mb2NrID0gMDsKLQotbmFtZXNwYWNlIHsKLQotdW5zaWduZWQgdW5wYWNrZWRGRlRXRGF0YVNp
emUodW5zaWduZWQgZmZ0U2l6ZSkKLXsKLSAgICByZXR1cm4gZmZ0U2l6ZSAvIDIgKyAxOwotfQot
Ci19IC8vIGFub255bW91cyBuYW1lc3BhY2UKLQotCi0vLyBOb3JtYWwgY29uc3RydWN0b3I6IGFs
bG9jYXRlcyBmb3IgYSBnaXZlbiBmZnRTaXplLgotRkZURnJhbWU6OkZGVEZyYW1lKHVuc2lnbmVk
IGZmdFNpemUpCi0gICAgOiBtX0ZGVFNpemUoZmZ0U2l6ZSkKLSAgICAsIG1fbG9nMkZGVFNpemUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGxvZzIoZmZ0U2l6ZSkpKQotICAgICwgbV9mb3J3YXJkUGxh
bigwKQotICAgICwgbV9iYWNrd2FyZFBsYW4oMCkKLSAgICAsIG1fZGF0YSgyICogKDMgKyB1bnBh
Y2tlZEZGVFdEYXRhU2l6ZShmZnRTaXplKSkpIC8vIGVub3VnaCBzcGFjZSBmb3IgcmVhbCBhbmQg
aW1hZ2luYXJ5IGRhdGEgcGx1cyAxNi1ieXRlIGFsaWdubWVudCBwYWRkaW5nCi17Ci0gICAgLy8g
V2Ugb25seSBhbGxvdyBwb3dlciBvZiB0d28uCi0gICAgQVNTRVJUKDFVTCA8PCBtX2xvZzJGRlRT
aXplID09IG1fRkZUU2l6ZSk7Ci0KLSAgICAvLyBGRlRXIHdvbid0IGNyZWF0ZSBhIHBsYW4gd2l0
aG91dCBiZWluZyBhYmxlIHRvIGxvb2sgYXQgbm9uLW51bGwKLSAgICAvLyBwb2ludGVycyBmb3Ig
dGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YTsgaXQgd2FudHMgdG8gYmUgYWJsZSB0bwotICAgIC8v
IHNlZSB3aGV0aGVyIHRoZXNlIGFycmF5cyBhcmUgYWxpZ25lZCBwcm9wZXJseSBmb3IgdmVjdG9y
Ci0gICAgLy8gb3BlcmF0aW9ucy4gSWRlYWxseSB3ZSB3b3VsZCB1c2UgZmZ0d19tYWxsb2MgYW5k
IGZmdHdfZnJlZSBmb3IKLSAgICAvLyB0aGUgaW5wdXQgYW5kIG91dHB1dCBhcnJheXMgdG8gZW5z
dXJlIHByb3BlciBhbGlnbm1lbnQgZm9yIFNJTUQKLSAgICAvLyBvcGVyYXRpb25zLCBzbyB0aGF0
IHdlIGRvbid0IGhhdmUgdG8gc3BlY2lmeSBGRlRXX1VOQUxJR05FRAotICAgIC8vIHdoZW4gY3Jl
YXRpbmcgdGhlIHBsYW4uIEhvd2V2ZXIsIHNpbmNlIHdlIGRvbid0IGhhdmUgY29udHJvbAotICAg
IC8vIG92ZXIgdGhlIGFsaWdubWVudCBvZiB0aGUgYXJyYXkgcGFzc2VkIHRvIGRvRkZUIC8gZG9J
bnZlcnNlRkZULAotICAgIC8vIHdlIHdvdWxkIG5lZWQgdG8gbWVtY3B5IGl0IGluIHRvIG9yIG91
dCBvZiB0aGUgRkZURnJhbWUsIGFkZGluZwotICAgIC8vIG92ZXJoZWFkLiBGb3IgdGhlIHRpbWUg
YmVpbmcsIHdlIGp1c3QgYXNzdW1lIHVuYWxpZ25lZCBkYXRhIGFuZAotICAgIC8vIHBhc3MgYSB0
ZW1wb3JhcnkgcG9pbnRlciBkb3duLgotCi0gICAgZmxvYXQgdGVtcG9yYXJ5OwotICAgIG1fZm9y
d2FyZFBsYW4gPSBmZnR3UGxhbkZvclNpemUoZmZ0U2l6ZSwgRm9yd2FyZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZ0ZW1wb3JhcnksIHJlYWxEYXRhKCksIGltYWdEYXRh
KCkpOwotICAgIG1fYmFja3dhcmRQbGFuID0gZmZ0d1BsYW5Gb3JTaXplKGZmdFNpemUsIEJhY2t3
YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxEYXRhKCksIGlt
YWdEYXRhKCksICZ0ZW1wb3JhcnkpOwotfQotCi0vLyBDcmVhdGVzIGEgYmxhbmsvZW1wdHkgZnJh
bWUgKGludGVycG9sYXRlKCkgbXVzdCBsYXRlciBiZSBjYWxsZWQpLgotRkZURnJhbWU6OkZGVEZy
YW1lKCkKLSAgICA6IG1fRkZUU2l6ZSgwKQotICAgICwgbV9sb2cyRkZUU2l6ZSgwKQotICAgICwg
bV9mb3J3YXJkUGxhbigwKQotICAgICwgbV9iYWNrd2FyZFBsYW4oMCkKLXsKLX0KLQotLy8gQ29w
eSBjb25zdHJ1Y3Rvci4KLUZGVEZyYW1lOjpGRlRGcmFtZShjb25zdCBGRlRGcmFtZSYgZnJhbWUp
Ci0gICAgOiBtX0ZGVFNpemUoZnJhbWUubV9GRlRTaXplKQotICAgICwgbV9sb2cyRkZUU2l6ZShm
cmFtZS5tX2xvZzJGRlRTaXplKQotICAgICwgbV9mb3J3YXJkUGxhbigwKQotICAgICwgbV9iYWNr
d2FyZFBsYW4oMCkKLSAgICAsIG1fZGF0YSgyICogKDMgKyB1bnBhY2tlZEZGVFdEYXRhU2l6ZShm
ZnRTaXplKCkpKSkgLy8gZW5vdWdoIHNwYWNlIGZvciByZWFsIGFuZCBpbWFnaW5hcnkgZGF0YSBw
bHVzIDE2LWJ5dGUgYWxpZ25tZW50IHBhZGRpbmcKLXsKLSAgICAvLyBTZWUgdGhlIG5vcm1hbCBj
b25zdHJ1Y3RvciBmb3IgYW4gZXhwbGFuYXRpb24gb2YgdGhlIHRlbXBvcmFyeSBwb2ludGVyLgot
ICAgIGZsb2F0IHRlbXBvcmFyeTsKLSAgICBtX2ZvcndhcmRQbGFuID0gZmZ0d1BsYW5Gb3JTaXpl
KG1fRkZUU2l6ZSwgRm9yd2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICZ0ZW1wb3JhcnksIHJlYWxEYXRhKCksIGltYWdEYXRhKCkpOwotICAgIG1fYmFja3dhcmRQbGFu
ID0gZmZ0d1BsYW5Gb3JTaXplKG1fRkZUU2l6ZSwgQmFja3dhcmQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhbERhdGEoKSwgaW1hZ0RhdGEoKSwgJnRlbXBvcmFyeSk7
Ci0KLSAgICAvLyBDb3B5L3NldHVwIGZyYW1lIGRhdGEuCi0gICAgc2l6ZV90IG5ieXRlcyA9IHNp
emVvZihmbG9hdCkgKiB1bnBhY2tlZEZGVFdEYXRhU2l6ZShmZnRTaXplKCkpOwotICAgIG1lbWNw
eShyZWFsRGF0YSgpLCBmcmFtZS5yZWFsRGF0YSgpLCBuYnl0ZXMpOwotICAgIG1lbWNweShpbWFn
RGF0YSgpLCBmcmFtZS5pbWFnRGF0YSgpLCBuYnl0ZXMpOwotfQotCi1GRlRGcmFtZTo6fkZGVEZy
YW1lKCkKLXsKLX0KLQotdm9pZCBGRlRGcmFtZTo6bXVsdGlwbHkoY29uc3QgRkZURnJhbWUmIGZy
YW1lKQotewotICAgIEZGVEZyYW1lJiBmcmFtZTEgPSAqdGhpczsKLSAgICBGRlRGcmFtZSYgZnJh
bWUyID0gY29uc3RfY2FzdDxGRlRGcmFtZSY+KGZyYW1lKTsKLQotICAgIGZsb2F0KiByZWFsUDEg
PSBmcmFtZTEucmVhbERhdGEoKTsKLSAgICBmbG9hdCogaW1hZ1AxID0gZnJhbWUxLmltYWdEYXRh
KCk7Ci0gICAgY29uc3QgZmxvYXQqIHJlYWxQMiA9IGZyYW1lMi5yZWFsRGF0YSgpOwotICAgIGNv
bnN0IGZsb2F0KiBpbWFnUDIgPSBmcmFtZTIuaW1hZ0RhdGEoKTsKLQotICAgIC8vIFNjYWxlIGFj
Y291bnRzIHRoZSBwZWN1bGlhciBzY2FsaW5nIG9mIHZlY0xpYiBvbiB0aGUgTWFjLgotICAgIC8v
IFRoaXMgZW5zdXJlcyB0aGUgcmlnaHQgc2NhbGluZyBhbGwgdGhlIHdheSBiYWNrIHRvIGludmVy
c2UgRkZULgotICAgIC8vIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhlIHNjYWxpbmcgb24gdGhlIE1h
YyB0aGVuIHRoaXMgc2NhbGUKLSAgICAvLyBmYWN0b3Igd2lsbCBuZWVkIHRvIGNoYW5nZSB0b28u
Ci0gICAgZmxvYXQgc2NhbGUgPSAwLjVmOwotCi0gICAgLy8gTXVsdGlwbHkgdGhlIHBhY2tlZCBE
Qy9ueXF1aXN0IGNvbXBvbmVudAotICAgIHJlYWxQMVswXSAqPSBzY2FsZSAqIHJlYWxQMlswXTsK
LSAgICBpbWFnUDFbMF0gKj0gc2NhbGUgKiBpbWFnUDJbMF07Ci0KLSAgICAvLyBDb21wbGV4IG11
bHRpcGxpY2F0aW9uLiBJZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuCi0gICAg
Ly8gd2Ugc2hvdWxkIHVzZSBTU0Ugb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0
LgotICAgIHVuc2lnbmVkIGhhbGZTaXplID0gZmZ0U2l6ZSgpIC8gMjsKLQotICAgIGZvciAodW5z
aWduZWQgaSA9IDE7IGkgPCBoYWxmU2l6ZTsgKytpKSB7Ci0gICAgICAgIGZsb2F0IHJlYWxSZXN1
bHQgPSByZWFsUDFbaV0gKiByZWFsUDJbaV0gLSBpbWFnUDFbaV0gKiBpbWFnUDJbaV07Ci0gICAg
ICAgIGZsb2F0IGltYWdSZXN1bHQgPSByZWFsUDFbaV0gKiBpbWFnUDJbaV0gKyBpbWFnUDFbaV0g
KiByZWFsUDJbaV07Ci0KLSAgICAgICAgcmVhbFAxW2ldID0gc2NhbGUgKiByZWFsUmVzdWx0Owot
ICAgICAgICBpbWFnUDFbaV0gPSBzY2FsZSAqIGltYWdSZXN1bHQ7Ci0gICAgfQotfQotCi12b2lk
IEZGVEZyYW1lOjpkb0ZGVChmbG9hdCogZGF0YSkKLXsKLSAgICBmZnR3Zl9leGVjdXRlX3NwbGl0
X2RmdF9yMmMobV9mb3J3YXJkUGxhbiwgZGF0YSwgcmVhbERhdGEoKSwgaW1hZ0RhdGEoKSk7Ci0K
LSAgICAvLyBTY2FsZSB0aGUgZnJlcXVlbmN5IGRvbWFpbiBkYXRhIHRvIG1hdGNoIHZlY0xpYidz
IHNjYWxlIGZhY3RvcgotICAgIC8vIG9uIHRoZSBNYWMuIEZJWE1FOiBpZiB3ZSBjaGFuZ2UgdGhl
IGRlZmluaXRpb24gb2YgRkZURnJhbWUgdG8KLSAgICAvLyBlbGltaW5hdGUgdGhpcyBzY2FsZSBm
YWN0b3IgdGhlbiB0aGlzIGNvZGUgd2lsbCBuZWVkIHRvIGNoYW5nZS4KLSAgICAvLyBBbHNvLCBp
ZiB0aGlzIGxvb3AgdHVybnMgb3V0IHRvIGJlIGhvdCB0aGVuIHdlIHNob3VsZCB1c2UgU1NFCi0g
ICAgLy8gb3Igb3RoZXIgaW50cmluc2ljcyB0byBhY2NlbGVyYXRlIGl0LgotICAgIGZsb2F0IHNj
YWxlRmFjdG9yID0gMjsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB1bnBhY2tlZEZGVFdEYXRhU2l6
ZShmZnRTaXplKCkpOwotICAgIGZsb2F0KiByZWFsRGF0YSA9IHRoaXMtPnJlYWxEYXRhKCk7Ci0g
ICAgZmxvYXQqIGltYWdEYXRhID0gdGhpcy0+aW1hZ0RhdGEoKTsKLQotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICByZWFsRGF0YVtpXSA9IHJlYWxE
YXRhW2ldICogc2NhbGVGYWN0b3I7Ci0gICAgICAgIGltYWdEYXRhW2ldID0gaW1hZ0RhdGFbaV0g
KiBzY2FsZUZhY3RvcjsKLSAgICB9Ci0KLSAgICAvLyBNb3ZlIHRoZSBOeXF1aXN0IGNvbXBvbmVu
dCB0byB0aGUgbG9jYXRpb24gZXhwZWN0ZWQgYnkgdGhlCi0gICAgLy8gRkZURnJhbWUgQVBJLgot
ICAgIGltYWdEYXRhWzBdID0gcmVhbERhdGFbbGVuZ3RoIC0gMV07Ci19Ci0KLXZvaWQgRkZURnJh
bWU6OmRvSW52ZXJzZUZGVChmbG9hdCogZGF0YSkKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB1
bnBhY2tlZEZGVFdEYXRhU2l6ZShmZnRTaXplKCkpOwotICAgIGZsb2F0KiByZWFsRGF0YSA9IHRo
aXMtPnJlYWxEYXRhKCk7Ci0gICAgZmxvYXQqIGltYWdEYXRhID0gdGhpcy0+aW1hZ0RhdGEoKTsK
LQotICAgIC8vIE1vdmUgdGhlIE55cXVpc3QgY29tcG9uZW50IHRvIHRoZSBsb2NhdGlvbiBleHBl
Y3RlZCBieSBGRlRXLgotICAgIHJlYWxEYXRhW2xlbmd0aCAtIDFdID0gaW1hZ0RhdGFbMF07Ci0g
ICAgaW1hZ0RhdGFbbGVuZ3RoIC0gMV0gPSAwOwotICAgIGltYWdEYXRhWzBdID0gMDsKLQotICAg
IGZmdHdmX2V4ZWN1dGVfc3BsaXRfZGZ0X2MycihtX2JhY2t3YXJkUGxhbiwgcmVhbERhdGEsIGlt
YWdEYXRhLCBkYXRhKTsKLQotICAgIC8vIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHNjYWxpbmcgb2Yg
dGhlIHRpbWUgZG9tYWluIGRhdGEuCi0gICAgLy8gRklYTUU6IGlmIHdlIGNoYW5nZSB0aGUgZGVm
aW5pdGlvbiBvZiBGRlRGcmFtZSB0byBlbGltaW5hdGUgdGhlCi0gICAgLy8gc2NhbGUgZmFjdG9y
IHRoZW4gdGhpcyBjb2RlIHdpbGwgbmVlZCB0byBjaGFuZ2UuIEFsc28sIGlmIHRoaXMKLSAgICAv
LyBsb29wIHR1cm5zIG91dCB0byBiZSBob3QgdGhlbiB3ZSBzaG91bGQgdXNlIFNTRSBvciBvdGhl
cgotICAgIC8vIGludHJpbnNpY3MgdG8gYWNjZWxlcmF0ZSBpdC4KLSAgICBmbG9hdCBzY2FsZUZh
Y3RvciA9IDEuMCAvICgyLjAgKiBmZnRTaXplKCkpOwotICAgIHVuc2lnbmVkIG4gPSBmZnRTaXpl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkKLSAgICAgICAgZGF0YVtp
XSAqPSBzY2FsZUZhY3RvcjsKLQotICAgIC8vIE1vdmUgdGhlIE55cXVpc3QgY29tcG9uZW50IGJh
Y2sgdG8gdGhlIGxvY2F0aW9uIGV4cGVjdGVkIGJ5IHRoZQotICAgIC8vIEZGVEZyYW1lIEFQSS4K
LSAgICBpbWFnRGF0YVswXSA9IHJlYWxEYXRhW2xlbmd0aCAtIDFdOwotfQotCi12b2lkIEZGVEZy
YW1lOjppbml0aWFsaXplKCkKLXsKLSAgICBpZiAoIWZmdHdGb3J3YXJkUGxhbnMpIHsKLSAgICAg
ICAgZmZ0d0ZvcndhcmRQbGFucyA9IG5ldyBmZnR3Zl9wbGFuW2tNYXhGRlRQb3cyU2l6ZV07Ci0g
ICAgICAgIGZmdHdCYWNrd2FyZFBsYW5zID0gbmV3IGZmdHdmX3BsYW5ba01heEZGVFBvdzJTaXpl
XTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrTWF4RkZUUG93MlNpemU7ICsraSkgewot
ICAgICAgICAgICAgZmZ0d0ZvcndhcmRQbGFuc1tpXSA9IDA7Ci0gICAgICAgICAgICBmZnR3QmFj
a3dhcmRQbGFuc1tpXSA9IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIXNfcGxhbkxv
Y2spCi0gICAgICAgIHNfcGxhbkxvY2sgPSBuZXcgTXV0ZXgoKTsKLX0KLQotdm9pZCBGRlRGcmFt
ZTo6Y2xlYW51cCgpCi17Ci0gICAgaWYgKCFmZnR3Rm9yd2FyZFBsYW5zKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGtNYXhGRlRQb3cyU2l6ZTsgKytpKSB7Ci0g
ICAgICAgIGlmIChmZnR3Rm9yd2FyZFBsYW5zW2ldKQotICAgICAgICAgICAgZmZ0d2ZfZGVzdHJv
eV9wbGFuKGZmdHdGb3J3YXJkUGxhbnNbaV0pOwotICAgICAgICBpZiAoZmZ0d0JhY2t3YXJkUGxh
bnNbaV0pCi0gICAgICAgICAgICBmZnR3Zl9kZXN0cm95X3BsYW4oZmZ0d0JhY2t3YXJkUGxhbnNb
aV0pOwotICAgIH0KLQotICAgIGRlbGV0ZVtdIGZmdHdGb3J3YXJkUGxhbnM7Ci0gICAgZGVsZXRl
W10gZmZ0d0JhY2t3YXJkUGxhbnM7Ci0KLSAgICBmZnR3Rm9yd2FyZFBsYW5zID0gMDsKLSAgICBm
ZnR3QmFja3dhcmRQbGFucyA9IDA7Ci0gICAgCi0gICAgZGVsZXRlIHNfcGxhbkxvY2s7Ci0gICAg
c19wbGFuTG9jayA9IDA7Ci19Ci0KLWZsb2F0KiBGRlRGcmFtZTo6cmVhbERhdGEoKSBjb25zdAot
ewotICAgIHJldHVybiBjb25zdF9jYXN0PGZsb2F0Kj4obV9kYXRhLmRhdGEoKSk7Ci19Ci0KLWZs
b2F0KiBGRlRGcmFtZTo6aW1hZ0RhdGEoKSBjb25zdAotewotICAgIC8vIEltYWdpbmFyeSBkYXRh
IGlzIHN0b3JlZCBmb2xsb3dpbmcgdGhlIHJlYWwgZGF0YSB3aXRoIGVub3VnaCBwYWRkaW5nIGZv
ciAxNi1ieXRlIGFsaWdubWVudC4KLSAgICByZXR1cm4gY29uc3RfY2FzdDxmbG9hdCo+KHJlYWxE
YXRhKCkgKyB1bnBhY2tlZEZGVFdEYXRhU2l6ZShmZnRTaXplKCkpICsgMyk7Ci19Ci0KLWZmdHdm
X3BsYW4gRkZURnJhbWU6OmZmdHdQbGFuRm9yU2l6ZSh1bnNpZ25lZCBmZnRTaXplLCBEaXJlY3Rp
b24gZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0
KiBkYXRhMSwgZmxvYXQqIGRhdGEyLCBmbG9hdCogZGF0YTMpCi17Ci0gICAgLy8gaW5pdGlhbGl6
ZSgpIG11c3QgYmUgY2FsbGVkIGZpcnN0LgotICAgIEFTU0VSVChmZnR3Rm9yd2FyZFBsYW5zKTsK
LSAgICBpZiAoIWZmdHdGb3J3YXJkUGxhbnMpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgICAK
LSAgICBBU1NFUlQoc19wbGFuTG9jayk7Ci0gICAgaWYgKCFzX3BsYW5Mb2NrKQotICAgICAgICBy
ZXR1cm4gMDsKLSAgICBNdXRleExvY2tlciBsb2NrZXIoKnNfcGxhbkxvY2spOyAgICAKLSAgICAg
ICAgCi0gICAgQVNTRVJUKGZmdFNpemUpOwotICAgIGludCBwb3cyc2l6ZSA9IHN0YXRpY19jYXN0
PGludD4obG9nMihmZnRTaXplKSk7Ci0gICAgQVNTRVJUKHBvdzJzaXplIDwga01heEZGVFBvdzJT
aXplKTsKLSAgICBmZnR3Zl9wbGFuKiBwbGFucyA9IChkaXJlY3Rpb24gPT0gRm9yd2FyZCkgPyBm
ZnR3Rm9yd2FyZFBsYW5zIDogZmZ0d0JhY2t3YXJkUGxhbnM7Ci0gICAgaWYgKCFwbGFuc1twb3cy
c2l6ZV0pIHsKLSAgICAgICAgZmZ0d2ZfaW9kaW0gZGltZW5zaW9uOwotICAgICAgICBkaW1lbnNp
b24ubiA9IGZmdFNpemU7Ci0gICAgICAgIGRpbWVuc2lvbi5pcyA9IDE7Ci0gICAgICAgIGRpbWVu
c2lvbi5vcyA9IDE7Ci0KLSAgICAgICAgLy8gRm9yIHRoZSB0aW1lIGJlaW5nLCB3ZSBkbyBub3Qg
dGFrZSB0aGUgaW5wdXQgZGF0YSBpbnRvCi0gICAgICAgIC8vIGFjY291bnQgd2hlbiBjaG9vc2lu
ZyBhIHBsYW4sIHNvIHRoYXQgd2UgY2FuIG1vc3QgZWFzaWx5Ci0gICAgICAgIC8vIHJldXNlIHBs
YW5zIHdpdGggZGlmZmVyZW50IGlucHV0IGRhdGEuCi0KLSAgICAgICAgLy8gRklYTUU6IGFsbG9j
YXRlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBpbnNpZGUgdGhpcyBjbGFzcyB0bwotICAgICAgICAv
LyBiZSBhYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIGFsaWdubWVudCBhbmQgU0lNRCBvcHRpbWl6
YXRpb25zLgotICAgICAgICB1bnNpZ25lZCBmbGFncyA9IEZGVFdfRVNUSU1BVEUgfCBGRlRXX1BS
RVNFUlZFX0lOUFVUIHwgRkZUV19VTkFMSUdORUQ7Ci0gICAgICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7Ci0gICAgICAgIGNhc2UgRm9yd2FyZDoKLSAgICAgICAgICAgIHBsYW5zW3BvdzJzaXplXSA9
IGZmdHdmX3BsYW5fZ3VydV9zcGxpdF9kZnRfcjJjKDEsICZkaW1lbnNpb24sIDAsIDAsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhMSwgZGF0YTIsIGRhdGEzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQmFja3dhcmQ6Ci0gICAgICAgICAgICBwbGFuc1twb3cyc2l6ZV0gPSBmZnR3Zl9w
bGFuX2d1cnVfc3BsaXRfZGZ0X2MycigxLCAmZGltZW5zaW9uLCAwLCAwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTEsIGRh
dGEyLCBkYXRhMywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgfQotICAgIEFTU0VSVChwbGFuc1twb3cyc2l6ZV0pOwotICAgIHJldHVybiBwbGFuc1twb3cy
c2l6ZV07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vICFPUyhEQVJX
SU4pICYmIFVTRShXRUJBVURJT19GRlRXKQotCi0jZW5kaWYgLy8gRU5BQkxFKFdFQl9BVURJTykK
</data>
<flag name="review"
          id="115891"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="115892"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>