<?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>28737</bug_id>
          
          <creation_ts>2009-08-26 06:11:38 -0700</creation_ts>
          <short_desc>[V8] SQLTransactionCustom binding causing execute-sql-args.html layout test to fail.</short_desc>
          <delta_ts>2009-09-02 04:55:54 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Ben Murdoch">benm</reporter>
          <assigned_to name="Ben Murdoch">benm</assigned_to>
          <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>142833</commentid>
    <comment_count>0</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-08-26 06:11:38 -0700</bug_when>
    <thetext>The bindings for SQLTransaction in V8 throw an exception if the optional parameters are passed as null, and also do not accept array-like objects as the sqlArgs parameter. Hence it fails the storage/execute-sql-args.html layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143143</commentid>
    <comment_count>1</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-08-27 10:34:57 -0700</bug_when>
    <thetext>I&apos;ve created a patch to add the required functionality to the V8 bindings, please see attached.

I&apos;ve also made changes to the layout test:
- Moved the call to executeSql() to the list of calls expected to throw an exception (and updated the JSC binding to do that) as I think that V8 has the behaviour correct here. The spec says the SQL statement is required, so if omitted it seems correct to throw an exception.

- Removed the exception message body from the expected results as the format of exception message from JSC and V8 differ. That way the test is agnostic to JS engine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143144</commentid>
    <comment_count>2</comment_count>
      <attachid>38673</attachid>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-08-27 10:36:16 -0700</bug_when>
    <thetext>Created attachment 38673
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144171</commentid>
    <comment_count>3</comment_count>
      <attachid>38673</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 03:00:01 -0700</bug_when>
    <thetext>Comment on attachment 38673
Proposed patch

 47     if (args.size() == 0) {
should be args.isEmpty()

I probably would have written &apos;return &quot;&quot;;&apos;, but maybe this is slightly faster/better:
+        return StringImpl::empty();

I&apos;m no v8 expert, but these bindings look about as sane as V8 bindings get... which of course is wild raving verbose lunacy:
+                lengthGetter = sqlArgsObject-&gt;Get(v8::String::New(&quot;length&quot;));
I mean, really?

Don&apos;t we have a throwError(&quot;foo&quot;) function by now which returns undefined so this doesn&apos;t have to be 2 lines?
+            V8Proxy::throwError(V8Proxy::TypeError, &quot;sqlArgs should be array or object!&quot;);
+            return v8::Undefined();

This seems OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144174</commentid>
    <comment_count>4</comment_count>
      <attachid>38673</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-02 03:00:37 -0700</bug_when>
    <thetext>Comment on attachment 38673
Proposed patch

Since you&apos;re a committer now, I&apos;ll r+ and you can make modifications when you land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144187</commentid>
    <comment_count>5</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-09-02 04:02:03 -0700</bug_when>
    <thetext>Thanks Eric. I&apos;ve implemented your suggestions and will land the patch.

(In reply to comment #3)
&gt; (From update of attachment 38673 [details])
&gt;  47     if (args.size() == 0) {
&gt; should be args.isEmpty()
&gt; 
Fixed.

&gt; I probably would have written &apos;return &quot;&quot;;&apos;, but maybe this is slightly
&gt; faster/better:
&gt; +        return StringImpl::empty();
&gt;
There&apos;s another site in V8Binding.cpp where we return StrimImpl::empty() instead of &quot;&quot;, so I think I&apos;ll stick to that precedent.

&gt; I&apos;m no v8 expert, but these bindings look about as sane as V8 bindings get...
&gt; which of course is wild raving verbose lunacy:
&gt; +                lengthGetter = sqlArgsObject-&gt;Get(v8::String::New(&quot;length&quot;));
&gt; I mean, really?
Yeah, as far as I&apos;m aware this is the procedure for querying properties ... 

&gt; Don&apos;t we have a throwError(&quot;foo&quot;) function by now which returns undefined so
&gt; this doesn&apos;t have to be 2 lines?
&gt; +            V8Proxy::throwError(V8Proxy::TypeError, &quot;sqlArgs should be array
&gt; or object!&quot;);
&gt; +            return v8::Undefined();
You&apos;re right, there is and I updated the code to use it instead.


&gt; This seems OK.
Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144192</commentid>
    <comment_count>6</comment_count>
    <who name="Ben Murdoch">benm</who>
    <bug_when>2009-09-02 04:55:54 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Sending        LayoutTests/storage/execute-sql-args-expected.txt
Sending        LayoutTests/storage/execute-sql-args.html
Sending        WebCore/ChangeLog
Sending        WebCore/bindings/js/JSSQLTransactionCustom.cpp
Sending        WebCore/bindings/v8/V8Binding.cpp
Sending        WebCore/bindings/v8/custom/V8SQLTransactionCustom.cpp
Transmitting file data .......
Committed revision 47962.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38673</attachid>
            <date>2009-08-27 10:36:16 -0700</date>
            <delta_ts>2009-09-02 03:00:37 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>28737.txt</filename>
            <type>text/plain</type>
            <size>10751</size>
            <attacher name="Ben Murdoch">benm</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0NzgyMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMDktMDgtMjcgIEJlbiBNdXJkb2NoICA8YmVubUBnb29nbGUuY29t
PgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yODcz
NworICAgICAgICAKKyAgICAgICAgVXBkYXRlIEphdmFTY3JpcHQgYmluZGluZ3MgaW4gSlNDIGFu
ZCBWOCBmb3IgU1FMVHJhbnNhY3Rpb24gdG8gdGhyb3cgZXhjZXB0aW9ucyBpbiB0aGUgcmlnaHQg
cGxhY2VzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uOjpleGVjdXRlU3FsKTogVGhy
b3cgYW4gZXhjZXB0aW9uIGlmIG5vIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byBleGVjdXRlU3Fs
KCkuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OnY4VmFsdWVUb1dlYkNvcmVTdHJpbmcpOiBDYXRjaCBhbiBleGNlcHRpb24gaWYgdGhyb3du
IGZyb20gdG9TdHJpbmcoKS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFu
c2FjdGlvbkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQUxMQkFDS19GVU5DX0RFQ0wp
OiBBbGxvdyAiYXJyYXlpc2ggb2JqZWN0cyIgdG8gYmUgcGFzc2VkIHRvIGV4ZWN1dGVTcWwuCisK
IDIwMDktMDgtMjcgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChidWlsZCBmaXgpLgpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCShyZXZpc2lvbiA0NzgxNykK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEpT
VmFsdWUgSlNTUUxUcmFuc2FjdGlvbjo6ZXhlY3V0ZVNxbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCiB7CisgICAgaWYgKGFyZ3Muc2l6ZSgpID09IDApIHsKKyAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFNZTlRBWF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKKyAgICB9CisKICAgICBTdHJpbmcgc3FsU3RhdGVtZW50ID0gYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAkocmV2
aXNpb24gNDc4MTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4OSwxMCArMTg5LDExIEBAIFN0cmluZyB2OFZhbHVlVG9XZWJDb3JlU3Ry
aW5nKHY4OjpIYW5kbGUKIAogICAgIHY4OjpUcnlDYXRjaCBibG9jazsKICAgICB2ODo6SGFuZGxl
PHY4OjpTdHJpbmc+IHY4U3RyaW5nID0gb2JqZWN0LT5Ub1N0cmluZygpOwotICAgIC8vIENoZWNr
IGZvciBlbXB0eSBoYW5kbGVzIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRpb24K
LSAgICAvLyBpcyB0aHJvd24gYXMgcGFydCBvZiBpbnZva2luZyB0b1N0cmluZyBvbiB0aGUgb2Jq
ZWN0ZWN0LgotICAgIGlmICh2OFN0cmluZy5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBTdHJp
bmdJbXBsOjplbXB0eSgpOworICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhbiBleGNlcHRp
b24gaXMgdGhyb3duIGFzIHBhcnQgb2YgaW52b2tpbmcgdG9TdHJpbmcgb24gdGhlIG9iamVjdC4N
CisgICAgaWYgKGJsb2NrLkhhc0NhdWdodCgpKSB7DQorICAgICAgICB0aHJvd0Vycm9yKGJsb2Nr
LkV4Y2VwdGlvbigpKTsNCisgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjplbXB0eSgpOw0KKyAg
ICB9CiAgICAgcmV0dXJuIHY4U3RyaW5nVG9XZWJDb3JlU3RyaW5nKHY4U3RyaW5nLCBEb05vdEV4
dGVybmFsaXplLCBQbGFpblN0cmluZ1R5cGUpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAkocmV2aXNp
b24gNDc4MTcpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9u
Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMjUgKzU4LDQ1IEBAIENBTExCQUNLX0ZV
TkNfREVDTChTUUxUcmFuc2FjdGlvbkV4ZWN1dGUKIAogICAgIFZlY3RvcjxTUUxWYWx1ZT4gc3Fs
VmFsdWVzOwogCi0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgIC8vIEZJWE1F
OiBNYWtlIHRoaXMgd29yayBmb3Igdjg6OkFycmF5aXNoIG9iamVjdHMsIGFzIHdlbGwKLSAgICAg
ICAgaWYgKCFhcmdzWzFdLT5Jc0FycmF5KCkpIHsKLSAgICAgICAgICAgIFY4UHJveHk6OnRocm93
RXJyb3IoVjhQcm94eTo6VHlwZUVycm9yLCAiU3RhdGVtZW50IGFyZ3VtZW50cyBtdXN0IGJlIGFu
IHY4OjpBcnJheS4iKTsKLSAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Ci0gICAg
ICAgIH0KKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDEgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFy
Z3NbMV0pKSB7CisgICAgICAgIGlmIChhcmdzWzFdLT5Jc09iamVjdCgpKSB7CisgICAgICAgICAg
ICB1aW50MzJfdCBzcWxBcmdzTGVuZ3RoID0gMDsKKyAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBzcWxBcmdzT2JqZWN0ID0gYXJnc1sxXS0+VG9PYmplY3QoKTsKKyAgICAgICAgICAg
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IGxlbmd0aEdldHRlcjsKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CisgICAgICAgICAgICAgICAgbGVuZ3RoR2V0
dGVyID0gc3FsQXJnc09iamVjdC0+R2V0KHY4OjpTdHJpbmc6Ok5ldygibGVuZ3RoIikpOworICAg
ICAgICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRocm93RXJyb3IoYmxvY2suRXhjZXB0aW9uKCkpOworICAgICAgICAgICAgfQogCi0g
ICAgICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IGFyZ3VtZW50cyA9IHY4OjpMb2NhbDx2ODo6QXJy
YXk+OjpDYXN0KGFyZ3NbMV0pOwotICAgICAgICB1aW50MzJfdCBsZW5ndGggPSBhcmd1bWVudHMt
Pkxlbmd0aCgpOwotCi0gICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlID0gYXJndW1l
bnRzLT5HZXQodjg6OkludGVnZXI6Ok5ldyhpKSk7Ci0gICAgICAgICAgICBpZiAodmFsdWUuSXNF
bXB0eSgpIHx8IHZhbHVlLT5Jc051bGwoKSkKLSAgICAgICAgICAgICAgICBzcWxWYWx1ZXMuYXBw
ZW5kKFNRTFZhbHVlKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUtPklzTnVtYmVyKCkp
Ci0gICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh2YWx1ZS0+TnVtYmVy
VmFsdWUoKSkpOworICAgICAgICAgICAgaWYgKGlzVW5kZWZpbmVkT3JOdWxsKGxlbmd0aEdldHRl
cikpCisgICAgICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IHNxbEFyZ3NPYmplY3QtPkdldFBy
b3BlcnR5TmFtZXMoKS0+TGVuZ3RoKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh0b1dlYkNvcmVTdHJpbmcodmFsdWUpKSk7Cisg
ICAgICAgICAgICAgICAgc3FsQXJnc0xlbmd0aCA9IGxlbmd0aEdldHRlci0+VWludDMyVmFsdWUo
KTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBzcWxBcmdzTGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OkludGVnZXI+IGtleSA9
IHY4OjpJbnRlZ2VyOjpOZXcoaSk7CisgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1
ZT4gdmFsdWU7CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICB2ODo6VHJ5
Q2F0Y2ggYmxvY2s7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc3FsQXJnc09iamVjdC0+
R2V0KGtleSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChibG9jay5IYXNDYXVnaHQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGJsb2NrLkV4Y2VwdGlvbigp
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuSXNFbXB0
eSgpIHx8IHZhbHVlLT5Jc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFw
cGVuZChTUUxWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS0+SXNOdW1i
ZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh2YWx1
ZS0+TnVtYmVyVmFsdWUoKSkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgc3FsVmFsdWVzLmFwcGVuZChTUUxWYWx1ZSh0b1dlYkNvcmVTdHJpbmcodmFsdWUpKSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBWOFByb3h5Ojp0
aHJvd0Vycm9yKFY4UHJveHk6OlR5cGVFcnJvciwgInNxbEFyZ3Mgc2hvdWxkIGJlIGFycmF5IG9y
IG9iamVjdCEiKTsKKyAgICAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiAgICAgICAg
IH0KKwogICAgIH0KIAogICAgIFNRTFRyYW5zYWN0aW9uKiB0cmFuc2FjdGlvbiA9IFY4RE9NV3Jh
cHBlcjo6Y29udmVydFRvTmF0aXZlT2JqZWN0PFNRTFRyYW5zYWN0aW9uPihWOENsYXNzSW5kZXg6
OlNRTFRSQU5TQUNUSU9OLCBhcmdzLkhvbGRlcigpKTsKQEAgLTg0LDcgKzEwNCw3IEBAIENBTExC
QUNLX0ZVTkNfREVDTChTUUxUcmFuc2FjdGlvbkV4ZWN1dGUKICAgICBGcmFtZSogZnJhbWUgPSBW
OFByb3h5OjpyZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKTsKIAogICAgIFJlZlB0cjxT
UUxTdGF0ZW1lbnRDYWxsYmFjaz4gY2FsbGJhY2s7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAy
KSB7CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAyICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdz
WzJdKSkgewogICAgICAgICBpZiAoIWFyZ3NbMl0tPklzT2JqZWN0KCkpIHsKICAgICAgICAgICAg
IFY4UHJveHk6OnRocm93RXJyb3IoVjhQcm94eTo6VHlwZUVycm9yLCAiU3RhdGVtZW50IGNhbGxi
YWNrIG11c3QgYmUgb2YgdmFsaWQgdHlwZS4iKTsKICAgICAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CkBAIC05NSw4ICsxMTUsOCBAQCBDQUxMQkFDS19GVU5DX0RFQ0woU1FMVHJhbnNh
Y3Rpb25FeGVjdXRlCiAgICAgfQogCiAgICAgUmVmUHRyPFNRTFN0YXRlbWVudEVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2s7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAzKSB7Ci0gICAgICAg
IGlmICghYXJnc1syXS0+SXNPYmplY3QoKSkgeworICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMyAm
JiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1szXSkpIHsKKyAgICAgICAgaWYgKCFhcmdzWzNdLT5J
c09iamVjdCgpKSB7CiAgICAgICAgICAgICBWOFByb3h5Ojp0aHJvd0Vycm9yKFY4UHJveHk6OlR5
cGVFcnJvciwgIlN0YXRlbWVudCBlcnJvciBjYWxsYmFjayBtdXN0IGJlIG9mIHZhbGlkIHR5cGUu
Iik7CiAgICAgICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgICAgICB9CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiA0NzgyMykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDA5LTA4LTI3ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29v
Z2xlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mjg3MzcKKyAgICAgICAgCisgICAgICAgIFVwZGF0ZSB0aGUgZXhlY3V0ZS1zcWwtYXJncy5o
dG1sIHRvIGJlIGFnbm9zdGljIHRvIGV4Y2VwdGlvbiBtZXNzYWdlIGZvcm1hdHRpbmcgYmV0d2Vl
biBKU0MgYW5kIFY4IGFuZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBubyBwYXJhbWV0ZXJzIGFy
ZSBwYXNzZWQgdG8gdGhlIGV4ZWN1dGVTcWwoKSBmdW5jdGlvbi4KKworICAgICAgICAqIHN0b3Jh
Z2UvZXhlY3V0ZS1zcWwtYXJncy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RvcmFnZS9leGVj
dXRlLXNxbC1hcmdzLmh0bWw6CisKIDIwMDktMDgtMjcgIFJlbmF0YSBIb2RvdmFuICA8aG9kb3Zh
bi5yZW5hdGFAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBI
aWRheWF0LgpJbmRleDogTGF5b3V0VGVzdHMvc3RvcmFnZS9leGVjdXRlLXNxbC1hcmdzLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2V4ZWN1dGUtc3FsLWFy
Z3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA0NzgxNykKKysrIExheW91dFRlc3RzL3N0b3JhZ2Uv
ZXhlY3V0ZS1zcWwtYXJncy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSwz
IEBACi1QQVNTLiBleGVjdXRlU3FsKCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1Mu
IGV4ZWN1dGVTcWwobnVsbCkgZGlkIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KIFBBU1MuIGV4ZWN1
dGVTcWwodW5kZWZpbmVkKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgogUEFTUy4gZXhlY3V0
ZVNxbCgwKSBkaWQgbm90IHRocm93IGFuIGV4Y2VwdGlvbgpAQCAtMTYsMTQgKzE1LDE1IEBAIFBB
U1MuIGV4ZWN1dGVTcWwoIiIsIG51bGwsIHsgfSkgZGlkIG5vdCAKIFBBU1MuIGV4ZWN1dGVTcWwo
IiIsIG51bGwsIG51bGwsIG51bGwpIGRpZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uCiBQQVNTLiBl
eGVjdXRlU3FsKCIiLCBudWxsLCBudWxsLCB1bmRlZmluZWQpIGRpZCBub3QgdGhyb3cgYW4gZXhj
ZXB0aW9uCiBQQVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCBudWxsLCB7IH0pIGRpZCBub3QgdGhy
b3cgYW4gZXhjZXB0aW9uCi1QQVNTLiBleGVjdXRlU3FsKHRocm93T25Ub1N0cmluZ09iamVjdCkg
dGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkOiBDYW5ub3QgY2FsbCB0b1N0cmluZyBvbiB0
aGlzIG9iamVjdC4KLVBBU1MuIGV4ZWN1dGVTcWwoIiIsIHRocm93T25HZXRMZW5ndGhPYmplY3Qp
IHRocmV3IGFuIGV4Y2VwdGlvbiBhcyBleHBlY3RlZDogQ2Fubm90IGdldCBsZW5ndGggb2YgdGhp
cyBvYmplY3QuCi1QQVNTLiBleGVjdXRlU3FsKCIiLCB0aHJvd09uR2V0WmVyb09iamVjdCkgdGhy
ZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkOiBDYW5ub3QgZ2V0IDAgcHJvcGVydHkgb2YgdGhp
cyBvYmplY3QuCi1QQVNTLiBleGVjdXRlU3FsKCIiLCBbIHRocm93T25Ub1N0cmluZ09iamVjdCBd
KSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQ6IENhbm5vdCBjYWxsIHRvU3RyaW5nIG9u
IHRoaXMgb2JqZWN0LgotUEFTUy4gZXhlY3V0ZVNxbCgiIiwgMCkgdGhyZXcgYW4gZXhjZXB0aW9u
IGFzIGV4cGVjdGVkOiBFcnJvcjogVFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcK
LVBBU1MuIGV4ZWN1dGVTcWwoIiIsICIiKSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQ6
IEVycm9yOiBUWVBFX01JU01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNwotUEFTUy4gZXhlY3V0
ZVNxbCgiIiwgbnVsbCwgMCkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkOiBFcnJvcjog
VFlQRV9NSVNNQVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcKLVBBU1MuIGV4ZWN1dGVTcWwoIiIs
IG51bGwsICIiKSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQ6IEVycm9yOiBUWVBFX01J
U01BVENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNwotUEFTUy4gZXhlY3V0ZVNxbCgiIiwgbnVsbCwg
bnVsbCwgMCkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkOiBFcnJvcjogVFlQRV9NSVNN
QVRDSF9FUlI6IERPTSBFeGNlcHRpb24gMTcKLVBBU1MuIGV4ZWN1dGVTcWwoIiIsIG51bGwsIG51
bGwsICIiKSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQ6IEVycm9yOiBUWVBFX01JU01B
VENIX0VSUjogRE9NIEV4Y2VwdGlvbiAxNworUEFTUy4gZXhlY3V0ZVNxbCgpIHRocmV3IGFuIGV4
Y2VwdGlvbiBhcyBleHBlY3RlZC4KK1BBU1MuIGV4ZWN1dGVTcWwodGhyb3dPblRvU3RyaW5nT2Jq
ZWN0KSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQuCitQQVNTLiBleGVjdXRlU3FsKCIi
LCB0aHJvd09uR2V0TGVuZ3RoT2JqZWN0KSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQu
CitQQVNTLiBleGVjdXRlU3FsKCIiLCB0aHJvd09uR2V0WmVyb09iamVjdCkgdGhyZXcgYW4gZXhj
ZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0ZVNxbCgiIiwgWyB0aHJvd09uVG9TdHJp
bmdPYmplY3QgXSkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0
ZVNxbCgiIiwgMCkgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgorUEFTUy4gZXhlY3V0
ZVNxbCgiIiwgIiIpIHRocmV3IGFuIGV4Y2VwdGlvbiBhcyBleHBlY3RlZC4KK1BBU1MuIGV4ZWN1
dGVTcWwoIiIsIG51bGwsIDApIHRocmV3IGFuIGV4Y2VwdGlvbiBhcyBleHBlY3RlZC4KK1BBU1Mu
IGV4ZWN1dGVTcWwoIiIsIG51bGwsICIiKSB0aHJldyBhbiBleGNlcHRpb24gYXMgZXhwZWN0ZWQu
CitQQVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCBudWxsLCAwKSB0aHJldyBhbiBleGNlcHRpb24g
YXMgZXhwZWN0ZWQuCitQQVNTLiBleGVjdXRlU3FsKCIiLCBudWxsLCBudWxsLCAiIikgdGhyZXcg
YW4gZXhjZXB0aW9uIGFzIGV4cGVjdGVkLgogCkluZGV4OiBMYXlvdXRUZXN0cy9zdG9yYWdlL2V4
ZWN1dGUtc3FsLWFyZ3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdG9yYWdlL2V4
ZWN1dGUtc3FsLWFyZ3MuaHRtbAkocmV2aXNpb24gNDc4MTcpCisrKyBMYXlvdXRUZXN0cy9zdG9y
YWdlL2V4ZWN1dGUtc3FsLWFyZ3MuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNiBA
QCB2YXIgdGhyb3dPbkdldFplcm9PYmplY3QgPSB7IGxlbmd0aDogMSB9CiB0aHJvd09uR2V0WmVy
b09iamVjdC5fX2RlZmluZUdldHRlcl9fKCIwIiwgZnVuY3Rpb24gKCkgeyB0aHJvdyAiQ2Fubm90
IGdldCAwIHByb3BlcnR5IG9mIHRoaXMgb2JqZWN0LiI7IH0pOwogCiB2YXIgZXhwZWN0Tm9FeGNl
cHRpb24gPSBbCi0gICAgJycsCiAgICAgJ251bGwnLAogICAgICd1bmRlZmluZWQnLAogICAgICcw
JywKQEAgLTM0LDYgKzMzLDcgQEAgdmFyIGV4cGVjdE5vRXhjZXB0aW9uID0gWwogXTsKIAogdmFy
IGV4cGVjdEV4Y2VwdGlvbiA9IFsKKyAgICAnJywKICAgICAndGhyb3dPblRvU3RyaW5nT2JqZWN0
JywKICAgICAnIiIsIHRocm93T25HZXRMZW5ndGhPYmplY3QnLAogICAgICciIiwgdGhyb3dPbkdl
dFplcm9PYmplY3QnLApAQCAtNjYsNyArNjYsNyBAQCBmdW5jdGlvbiBydW5UcmFuc2FjdGlvblRl
c3QodHJhbnNhY3Rpb24sCiAgICAgdmFyIGV4Y2VwdGlvbiA9IHRyeUV4ZWN1dGVTcWwodHJhbnNh
Y3Rpb24sIHBhcmFtZXRlckxpc3QpOwogICAgIGlmIChleHBlY3RFeGNlcHRpb24pIHsKICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIHdyaXRlTWVzc2FnZVRvTG9nKCJQQVNTLiBl
eGVjdXRlU3FsKCIgKyBwYXJhbWV0ZXJMaXN0ICsgIikgdGhyZXcgYW4gZXhjZXB0aW9uIGFzIGV4
cGVjdGVkOiAiICsgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHdyaXRlTWVzc2FnZVRvTG9nKCJQ
QVNTLiBleGVjdXRlU3FsKCIgKyBwYXJhbWV0ZXJMaXN0ICsgIikgdGhyZXcgYW4gZXhjZXB0aW9u
IGFzIGV4cGVjdGVkLiIpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB3cml0ZU1lc3NhZ2VU
b0xvZygiKkZBSUwqLiBleGVjdXRlU3FsKCIgKyBwYXJhbWV0ZXJMaXN0ICsgIikgZGlkIG5vdCB0
aHJvdyBhbiBleGNlcHRpb24iKTsKICAgICB9IGVsc2Ugewo=
</data>
<flag name="review"
          id="19673"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="19916"
          type_id="3"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>