<?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>90667</bug_id>
          
          <creation_ts>2012-07-06 01:51:02 -0700</creation_ts>
          <short_desc>[JSC] HTML extensions to String.prototype should escape &quot; as &amp;quot; in argument values</short_desc>
          <delta_ts>2012-11-08 16:05:40 -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>JavaScriptCore</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>http://mathias.html5.org/tests/javascript/string/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>101257</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>mathias</cc>
    
    <cc>oliver</cc>
    
    <cc>peter</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663952</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-07-06 01:51:02 -0700</bug_when>
    <thetext>Currently:

&gt; &apos;_&apos;.link(&apos;a&quot;b&apos;)
&apos;&lt;a href=&quot;a&quot;b&quot;&gt;_&lt;/a&gt;&apos;

Expected result:

&gt; &apos;_&apos;.link(&apos;a&quot;b&apos;)
&apos;&lt;a href=&quot;a&amp;quot;b&quot;&gt;_&lt;/a&gt;&apos;

The problem here is JSC doesn’t escape &quot; into &amp;quot; at the moment, which is a potential security risk (XSS vector).

For this reason, Chrome/V8 escapes &quot; into &amp;quot;. Firefox/Spidermonkey is going to change its behavior to do the same: https://bugzilla.mozilla.org/show_bug.cgi?id=352437 Opera/Carakan will change its behavior too, as soon as other browsers change (bug DSK-369206).

http://mathias.html5.org/specs/javascript/#escapeattributevalue requires escaping the &quot;.

Tests: http://mathias.html5.org/tests/javascript/string/

Here’s a list of the methods that have this issue:

* String.prototype.anchor(name)
* String.prototype.fontcolor(color)
* String.prototype.fontsize(size)
* String.prototype.link(href)

See http://trac.webkit.org/browser/trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687444</commentid>
    <comment_count>1</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-08-04 06:57:35 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; For this reason, Chrome/V8 escapes &quot; into &amp;quot;. Firefox/Spidermonkey is going to change its behavior to do the same: https://bugzilla.mozilla.org/show_bug.cgi?id=352437

Update: Firefox/Spidermonkey just landed this change.
https://bugzilla.mozilla.org/show_bug.cgi?id=352437#c16</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687476</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-04 12:16:14 -0700</bug_when>
    <thetext>&gt; &apos;_&apos;.link(&apos;a&quot;b&apos;)
&quot;&lt;a href=&quot;a&amp;quot;b&quot;&gt;_&lt;/a&gt;&quot;

Seems to work as expected in V8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687484</commentid>
    <comment_count>3</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2012-08-04 12:49:57 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; &apos;_&apos;.link(&apos;a&quot;b&apos;)
&gt; &quot;&lt;a href=&quot;a&amp;quot;b&quot;&gt;_&lt;/a&gt;&quot;
&gt; 
&gt; Seems to work as expected in V8.


That’s what I said in comment #0, no?

V8 does the right thing and escapes &quot; as &amp;quot; correctly, but it also (needlessly) escapes some other characters, i.e. U+0027 APOSTROPHE and the &lt; and &gt; characters. These other escapes aren’t needed for security, and no other engine applies them. For this reason, I’ve filed a bug and submitted a patch against that behavior here: http://code.google.com/p/v8/issues/detail?id=2217</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758723</commentid>
    <comment_count>4</comment_count>
      <attachid>172367</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-05 11:19:46 -0800</bug_when>
    <thetext>Created attachment 172367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758774</commentid>
    <comment_count>5</comment_count>
      <attachid>172367</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-05 12:14:31 -0800</bug_when>
    <thetext>Comment on attachment 172367
Patch

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

No clue if the patch is correct, but some comments regarding performance:

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1391
&gt; +    String color = a0.toString(exec)-&gt;value(exec);

JSValue has toWTFString(), it is more efficient for some types when the value is not a string.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1392
&gt; +    // Escape quotation mark.

The Comment is not adding anything.

&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1393
&gt; +    color.replace(&apos;&quot;&apos;, ASCIILiteral(&quot;&amp;quot;&quot;));

I don&apos;t like the idea of creating a new String every time. ASCIILiteral() will save you some time, but we can do better.
What about adding StringImpl::replace() for string literals?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758796</commentid>
    <comment_count>6</comment_count>
      <attachid>172367</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-05 12:37:01 -0800</bug_when>
    <thetext>Comment on attachment 172367
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1391
&gt;&gt; +    String color = a0.toString(exec)-&gt;value(exec);
&gt; 
&gt; JSValue has toWTFString(), it is more efficient for some types when the value is not a string.

Ok

&gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1392
&gt;&gt; +    // Escape quotation mark.
&gt; 
&gt; The Comment is not adding anything.

Ok

&gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1393
&gt;&gt; +    color.replace(&apos;&quot;&apos;, ASCIILiteral(&quot;&amp;quot;&quot;));
&gt; 
&gt; I don&apos;t like the idea of creating a new String every time. ASCIILiteral() will save you some time, but we can do better.
&gt; What about adding StringImpl::replace() for string literals?

I think this is a good idea this should probably be done in a separate patch, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758798</commentid>
    <comment_count>7</comment_count>
      <attachid>172380</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-05 12:39:48 -0800</bug_when>
    <thetext>Created attachment 172380
Patch

Take Benjamin&apos;s feedback into consideration.

I haven&apos;t added a StringImpl::replace() that takes a literal yet though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758808</commentid>
    <comment_count>8</comment_count>
      <attachid>172380</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-11-05 12:57:53 -0800</bug_when>
    <thetext>Comment on attachment 172380
Patch

Attachment 172380 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/14722812</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758860</commentid>
    <comment_count>9</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-05 14:00:15 -0800</bug_when>
    <thetext>&gt; &gt;&gt; Source/JavaScriptCore/runtime/StringPrototype.cpp:1393
&gt; &gt;&gt; +    color.replace(&apos;&quot;&apos;, ASCIILiteral(&quot;&amp;quot;&quot;));
&gt; &gt; 
&gt; &gt; I don&apos;t like the idea of creating a new String every time. ASCIILiteral() will save you some time, but we can do better.
&gt; &gt; What about adding StringImpl::replace() for string literals?
&gt; 
&gt; I think this is a good idea this should probably be done in a separate patch, right?

Yep, that would be better in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759003</commentid>
    <comment_count>10</comment_count>
      <attachid>172431</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-05 16:19:37 -0800</bug_when>
    <thetext>Created attachment 172431
Patch

Stop using ASCIILiteral(). Calling String::replace() with a literal replacement string will no longer construct a WTF::String object after Bug 101257 is closed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760490</commentid>
    <comment_count>11</comment_count>
      <attachid>172746</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-07 02:37:26 -0800</bug_when>
    <thetext>Created attachment 172746
Patch

Use replaceWithLiteral() instead of replace() for efficiency (now that the dependency patch landed).

Any feedback on this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761005</commentid>
    <comment_count>12</comment_count>
      <attachid>172746</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-07 13:19:01 -0800</bug_when>
    <thetext>Comment on attachment 172746
Patch

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

The patch itself looks good. I think the tests could be better.

&gt; LayoutTests/ChangeLog:14
&gt; +        * fast/js/script-tests/string-prototype-escape-attribute.js: Added.
&gt; +        * fast/js/string-prototype-escape-attribute-expected.txt: Added.
&gt; +        * fast/js/string-prototype-escape-attribute.html: Added.

I think the test names are not descriptive enough.
Wouldn&apos;t it be better to create one test for each of those functions? A quick grep in fast/js tells me their coverage may be bad, but maybe they are tested elsewhere?

&gt; LayoutTests/fast/js/script-tests/string-prototype-escape-attribute.js:5
&gt; +shouldBe(&quot;&apos;_&apos;.anchor(&apos;\x22&apos;)&quot;, &apos;&quot;&lt;a name=\\&quot;&amp;quot;\\&quot;&gt;_&lt;/a&gt;&quot;&apos;);

Why use \x22 instead of &quot;? it looks more confusing.
You should also have tests with the quote being with some text and pathologically bad examples, e.g:
&quot;_&quot;.anchor(&apos;&quot; href=&quot;http://evil.com&quot;&apos;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761422</commentid>
    <comment_count>13</comment_count>
      <attachid>172946</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-08 00:26:59 -0800</bug_when>
    <thetext>Created attachment 172946
Patch

Take Benjamin&apos;s feedback into consideration. I added a lot of more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761914</commentid>
    <comment_count>14</comment_count>
      <attachid>172946</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 10:21:09 -0800</bug_when>
    <thetext>Comment on attachment 172946
Patch

Attachment 172946 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14762736

New failing tests:
fast/js/string-fontsize.html
fast/js/string-anchor.html
fast/js/string-link.html
fast/js/string-fontcolor.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761951</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-08 10:36:57 -0800</bug_when>
    <thetext>It appears V8 does not throw for null / undefined arguments.

According to [1] it is supposed to throw a type error when CheckObjectCoercible is called for null or undefined.

According to [2], CheckObjectCoercible should be called for those methods.

This is causing the new tests to fail on Chromium port.

[1] http://ecma-international.org/ecma-262/5.1/#sec-9.10
[2] http://mathias.html5.org/specs/javascript/#string.prototype.anchor</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761968</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-08 10:49:53 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; It appears V8 does not throw for null / undefined arguments.
&gt; 
&gt; According to [1] it is supposed to throw a type error when CheckObjectCoercible is called for null or undefined.
&gt; 
&gt; According to [2], CheckObjectCoercible should be called for those methods.
&gt; 
&gt; This is causing the new tests to fail on Chromium port.
&gt; 
&gt; [1] http://ecma-international.org/ecma-262/5.1/#sec-9.10
&gt; [2] http://mathias.html5.org/specs/javascript/#string.prototype.anchor

That shows the test coverage has already improved :)

Just in case, check what the other browsers are doing, sometime a spec is ignored by everyone. If JSC is not the only engine with that behavior, I guess we&apos;ll just add a failure in Chromium&apos;s test expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761973</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-08 10:56:01 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; It appears V8 does not throw for null / undefined arguments.
&gt; &gt; 
&gt; &gt; According to [1] it is supposed to throw a type error when CheckObjectCoercible is called for null or undefined.
&gt; &gt; 
&gt; &gt; According to [2], CheckObjectCoercible should be called for those methods.
&gt; &gt; 
&gt; &gt; This is causing the new tests to fail on Chromium port.
&gt; &gt; 
&gt; &gt; [1] http://ecma-international.org/ecma-262/5.1/#sec-9.10
&gt; &gt; [2] http://mathias.html5.org/specs/javascript/#string.prototype.anchor
&gt; 
&gt; That shows the test coverage has already improved :)
&gt; 
&gt; Just in case, check what the other browsers are doing, sometime a spec is ignored by everyone. If JSC is not the only engine with that behavior, I guess we&apos;ll just add a failure in Chromium&apos;s test expectations.

It appears there is already a bug filed for that:
http://code.google.com/p/v8/issues/detail?id=2218

It seems that Opera and Firefox throw, IE doesn&apos;t.

Should I skip these new test cases for Chromium port? Or should I remove those checks from the test cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761984</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-08 11:09:31 -0800</bug_when>
    <thetext>&gt; Should I skip these new test cases for Chromium port? Or should I remove those checks from the test cases?

Don&apos;t remove the checks, it is great you added them. You can just add a failure expectation for Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761988</commentid>
    <comment_count>19</comment_count>
      <attachid>173076</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-11-08 11:11:28 -0800</bug_when>
    <thetext>Created attachment 173076
Patch

Skip new tests for chromium port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762257</commentid>
    <comment_count>20</comment_count>
      <attachid>173076</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-11-08 15:44:23 -0800</bug_when>
    <thetext>Comment on attachment 173076
Patch

Looks good to me, good tests too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762276</commentid>
    <comment_count>21</comment_count>
      <attachid>173076</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 16:05:32 -0800</bug_when>
    <thetext>Comment on attachment 173076
Patch

Clearing flags on attachment: 173076

Committed r133966: &lt;http://trac.webkit.org/changeset/133966&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762277</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-08 16:05:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172367</attachid>
            <date>2012-11-05 11:19:46 -0800</date>
            <delta_ts>2012-11-05 12:39:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_escape_quotation_mark.patch</filename>
            <type>text/plain</type>
            <size>6761</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmMxY2VkLi40Mzc3YjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCB0ZXN0IGNhc2UgdG8gY2hlY2sKKyAgICAgICAgdGhhdCBIVE1M
IGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBjb3JyZWN0bHkgZXNjYXBlIHRoZSBxdW90
YXRpb24KKyAgICAgICAgbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzLgorCisgICAg
ICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBl
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBT
dGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWFyayBhIGZsYWt5IHRlc3QuICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM2YmRkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSw4IEBA
CitkZXNjcmlwdGlvbigKKydUaGlzIGlzIGEgdGVzdCBjYXNlIGZvciA8YSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjciPmJ1ZyA5MDY2NzwvYT4uJworKTsKKwor
c2hvdWxkQmUoIidfJy5hbmNob3IoJ1x4MjInKSIsICciPGEgbmFtZT1cXCImcXVvdDtcXCI+Xzwv
YT4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRjb2xvcignXHgyMicpIiwgJyI8Zm9udCBjb2xvcj1c
XCImcXVvdDtcXCI+XzwvZm9udD4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRzaXplKCdceDIyJyki
LCAnIjxmb250IHNpemU9XFwiJnF1b3Q7XFwiPl88L2ZvbnQ+IicpOworc2hvdWxkQmUoIidfJy5s
aW5rKCdceDIyJykiLCAnIjxhIGhyZWY9XFwiJnF1b3Q7XFwiPl88L2E+IicpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2Fw
ZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkxNTI5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmlu
Zy1wcm90b3R5cGUtZXNjYXBlLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBA
QAorVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgYnVnIDkwNjY3LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyAnXycuYW5jaG9yKCciJykgaXMgIjxhIG5hbWU9XCImcXVvdDtc
Ij5fPC9hPiIKK1BBU1MgJ18nLmZvbnRjb2xvcignIicpIGlzICI8Zm9udCBjb2xvcj1cIiZxdW90
O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycuZm9udHNpemUoJyInKSBpcyAiPGZvbnQgc2l6ZT1cIiZx
dW90O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycubGluaygnIicpIGlzICI8YSBocmVmPVwiJnF1b3Q7
XCI+XzwvYT4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjhiNzE4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtZXNj
YXBlLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCA1NzE3OGQwLi5lYjZiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0xMS0wNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtKU0NdIEhUTUwgZXh0ZW5zaW9ucyB0byBTdHJp
bmcucHJvdG90eXBlIHNob3VsZCBlc2NhcGUgIiBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzY2FwZSBx
dW90YXRpb24gbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzIHRvOgorICAgICAgICAt
IFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlw
ZS5mb250Y29sb3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShz
aXplKQorICAgICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRo
aXMgYmVoYXZpb3IgbWF0Y2hlcyBDaHJvbWl1bS9WOCBhbmQgRmlyZWZveC9TcGlkZXJtb25rZXkK
KyAgICAgICAgaW1wbGVtZW50YXRpb25zIGFuZCBpcyByZXF1aXRlZCBieToKKyAgICAgICAgaHR0
cDovL21hdGhpYXMuaHRtbDUub3JnL3NwZWNzL2phdmFzY3JpcHQvI2VzY2FwZWF0dHJpYnV0ZXZh
bHVlCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2sg
KFhTUyB2ZWN0b3IpLgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNGb250c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0Fu
Y2hvcik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorCiAyMDEyLTExLTAz
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZWxpbmUgSklU
IHNob3VsZCB1c2Ugc3RydWN0dXJlIHdhdGNocG9pbnRzIHdoZW5ldmVyIHBvc3NpYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCA1YWFmZThiLi5hNzQ2MDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzODgsNyArMTM4OCwxMSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEw
ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICI8Zm9udCBjb2xvcj1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOworICAgIFN0cmluZyBjb2xvciA9
IGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAvLyBFc2NhcGUgcXVvdGF0aW9u
IG1hcmsuCisgICAgY29sb3IucmVwbGFjZSgnIicsIEFTQ0lJTGl0ZXJhbCgiJnF1b3Q7IikpOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMs
ICI8Zm9udCBjb2xvcj1cIiIsIGNvbG9yLCAiXCI+IiwgcywgIjwvZm9udD4iKSk7CiB9CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0
YXRlKiBleGVjKQpAQCAtMTQzMyw3ICsxNDM3LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jRm9udHNpemUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBpbXBsKSk7CiAg
ICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5n
KGV4ZWMsICI8Zm9udCBzaXplPVwiIiwgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAi
XCI+IiwgcywgIjwvZm9udD4iKSk7CisgICAgU3RyaW5nIGZvbnRTaXplID0gYTAudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIC8vIEVzY2FwZSBxdW90YXRpb24gbWFyay4KKyAgICBm
b250U2l6ZS5yZXBsYWNlKCciJywgQVNDSUlMaXRlcmFsKCImcXVvdDsiKSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IHNp
emU9XCIiLCBmb250U2l6ZSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3RhdGUqIGV4ZWMp
CkBAIC0xNDQzLDcgKzE0NTEsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGEg
bmFtZT1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2E+
IikpOworICAgIFN0cmluZyBhbmNob3IgPSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CisgICAgLy8gRXNjYXBlIHF1b3RhdGlvbiBtYXJrLgorICAgIGFuY2hvci5yZXBsYWNlKCciJywg
QVNDSUlMaXRlcmFsKCImcXVvdDsiKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBhbmNob3IsICJcIj4iLCBz
LCAiPC9hPiIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0NTQsNiArMTQ2Niw4IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwog
ICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBTdHJpbmcgbGlua1RleHQg
PSBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgLy8gRXNjYXBlIHF1b3RhdGlv
biBtYXJrLgorICAgIGxpbmtUZXh0LnJlcGxhY2UoJyInLCBBU0NJSUxpdGVyYWwoIiZxdW90OyIp
KTsKIAogICAgIHVuc2lnbmVkIGxpbmtUZXh0U2l6ZSA9IGxpbmtUZXh0Lmxlbmd0aCgpOwogICAg
IHVuc2lnbmVkIHN0cmluZ1NpemUgPSBzLmxlbmd0aCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172380</attachid>
            <date>2012-11-05 12:39:48 -0800</date>
            <delta_ts>2012-11-05 16:19:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_escape_quotation_mark.patch</filename>
            <type>text/plain</type>
            <size>6692</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmMxY2VkLi40Mzc3YjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCB0ZXN0IGNhc2UgdG8gY2hlY2sKKyAgICAgICAgdGhhdCBIVE1M
IGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBjb3JyZWN0bHkgZXNjYXBlIHRoZSBxdW90
YXRpb24KKyAgICAgICAgbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzLgorCisgICAg
ICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBl
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBT
dGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWFyayBhIGZsYWt5IHRlc3QuICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM2YmRkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSw4IEBA
CitkZXNjcmlwdGlvbigKKydUaGlzIGlzIGEgdGVzdCBjYXNlIGZvciA8YSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjciPmJ1ZyA5MDY2NzwvYT4uJworKTsKKwor
c2hvdWxkQmUoIidfJy5hbmNob3IoJ1x4MjInKSIsICciPGEgbmFtZT1cXCImcXVvdDtcXCI+Xzwv
YT4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRjb2xvcignXHgyMicpIiwgJyI8Zm9udCBjb2xvcj1c
XCImcXVvdDtcXCI+XzwvZm9udD4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRzaXplKCdceDIyJyki
LCAnIjxmb250IHNpemU9XFwiJnF1b3Q7XFwiPl88L2ZvbnQ+IicpOworc2hvdWxkQmUoIidfJy5s
aW5rKCdceDIyJykiLCAnIjxhIGhyZWY9XFwiJnF1b3Q7XFwiPl88L2E+IicpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2Fw
ZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkxNTI5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmlu
Zy1wcm90b3R5cGUtZXNjYXBlLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBA
QAorVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgYnVnIDkwNjY3LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyAnXycuYW5jaG9yKCciJykgaXMgIjxhIG5hbWU9XCImcXVvdDtc
Ij5fPC9hPiIKK1BBU1MgJ18nLmZvbnRjb2xvcignIicpIGlzICI8Zm9udCBjb2xvcj1cIiZxdW90
O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycuZm9udHNpemUoJyInKSBpcyAiPGZvbnQgc2l6ZT1cIiZx
dW90O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycubGluaygnIicpIGlzICI8YSBocmVmPVwiJnF1b3Q7
XCI+XzwvYT4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjhiNzE4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtZXNj
YXBlLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCA1NzE3OGQwLi5lYjZiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0xMS0wNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtKU0NdIEhUTUwgZXh0ZW5zaW9ucyB0byBTdHJp
bmcucHJvdG90eXBlIHNob3VsZCBlc2NhcGUgIiBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzY2FwZSBx
dW90YXRpb24gbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzIHRvOgorICAgICAgICAt
IFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlw
ZS5mb250Y29sb3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShz
aXplKQorICAgICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRo
aXMgYmVoYXZpb3IgbWF0Y2hlcyBDaHJvbWl1bS9WOCBhbmQgRmlyZWZveC9TcGlkZXJtb25rZXkK
KyAgICAgICAgaW1wbGVtZW50YXRpb25zIGFuZCBpcyByZXF1aXRlZCBieToKKyAgICAgICAgaHR0
cDovL21hdGhpYXMuaHRtbDUub3JnL3NwZWNzL2phdmFzY3JpcHQvI2VzY2FwZWF0dHJpYnV0ZXZh
bHVlCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2sg
KFhTUyB2ZWN0b3IpLgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNGb250c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0Fu
Y2hvcik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorCiAyMDEyLTExLTAz
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZWxpbmUgSklU
IHNob3VsZCB1c2Ugc3RydWN0dXJlIHdhdGNocG9pbnRzIHdoZW5ldmVyIHBvc3NpYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCA1YWFmZThiLi5iNTUyYmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzODgsNyArMTM4OCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEw
ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICI8Zm9udCBjb2xvcj1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOworICAgIFN0cmluZyBjb2xvciA9
IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGNvbG9yLnJlcGxhY2UoJyInLCBBU0NJSUxpdGVy
YWwoIiZxdW90OyIpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhleGVjLCAiPGZvbnQgY29sb3I9XCIiLCBjb2xvciwgIlwiPiIsIHMsICI8L2Zv
bnQ+IikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVu
Y0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0MzMsNyArMTQzNiwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmco
ZXhlYywgaW1wbCkpOwogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQgc2l6ZT1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOworICAgIFN0cmluZyBmb250U2l6
ZSA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGZvbnRTaXplLnJlcGxhY2UoJyInLCBBU0NJ
SUxpdGVyYWwoIiZxdW90OyIpKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtl
Tm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQgc2l6ZT1cIiIsIGZvbnRTaXplLCAiXCI+Iiwg
cywgIjwvZm9udD4iKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0NDMsNyArMTQ0OSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3Rh
dGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0
cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1Zh
bHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8YSBuYW1lPVwiIiwgYTAudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpLCAiXCI+IiwgcywgIjwvYT4iKSk7CisgICAgU3RyaW5nIGFuY2hvciA9
IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGFuY2hvci5yZXBsYWNlKCciJywgQVNDSUlMaXRl
cmFsKCImcXVvdDsiKSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRy
aXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBhbmNob3IsICJcIj4iLCBzLCAiPC9hPiIp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMaW5r
KEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0NTMsNyArMTQ2Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVl
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJn
dW1lbnQoMCk7Ci0gICAgU3RyaW5nIGxpbmtUZXh0ID0gYTAudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpOworICAgIFN0cmluZyBsaW5rVGV4dCA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAg
IGxpbmtUZXh0LnJlcGxhY2UoJyInLCBBU0NJSUxpdGVyYWwoIiZxdW90OyIpKTsKIAogICAgIHVu
c2lnbmVkIGxpbmtUZXh0U2l6ZSA9IGxpbmtUZXh0Lmxlbmd0aCgpOwogICAgIHVuc2lnbmVkIHN0
cmluZ1NpemUgPSBzLmxlbmd0aCgpOwo=
</data>
<flag name="commit-queue"
          id="186668"
          type_id="3"
          status="-"
          setter="gtk-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172431</attachid>
            <date>2012-11-05 16:19:37 -0800</date>
            <delta_ts>2012-11-07 02:37:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_escape_quotation_mark.patch</filename>
            <type>text/plain</type>
            <size>6636</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0YmMxY2VkLi40Mzc3YjBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCB0ZXN0IGNhc2UgdG8gY2hlY2sKKyAgICAgICAgdGhhdCBIVE1M
IGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBjb3JyZWN0bHkgZXNjYXBlIHRoZSBxdW90
YXRpb24KKyAgICAgICAgbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzLgorCisgICAg
ICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBl
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA1ICBT
dGVwaGVuIFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJv
bWl1bV0gTWFyayBhIGZsYWt5IHRlc3QuICBVbnJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmM2YmRkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10
ZXN0cy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUuanMKQEAgLTAsMCArMSw4IEBA
CitkZXNjcmlwdGlvbigKKydUaGlzIGlzIGEgdGVzdCBjYXNlIGZvciA8YSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjciPmJ1ZyA5MDY2NzwvYT4uJworKTsKKwor
c2hvdWxkQmUoIidfJy5hbmNob3IoJ1x4MjInKSIsICciPGEgbmFtZT1cXCImcXVvdDtcXCI+Xzwv
YT4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRjb2xvcignXHgyMicpIiwgJyI8Zm9udCBjb2xvcj1c
XCImcXVvdDtcXCI+XzwvZm9udD4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRzaXplKCdceDIyJyki
LCAnIjxmb250IHNpemU9XFwiJnF1b3Q7XFwiPl88L2ZvbnQ+IicpOworc2hvdWxkQmUoIidfJy5s
aW5rKCdceDIyJykiLCAnIjxhIGhyZWY9XFwiJnF1b3Q7XFwiPl88L2E+IicpOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2Fw
ZS1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjkxNTI5MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmlu
Zy1wcm90b3R5cGUtZXNjYXBlLWF0dHJpYnV0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBA
QAorVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgYnVnIDkwNjY3LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyAnXycuYW5jaG9yKCciJykgaXMgIjxhIG5hbWU9XCImcXVvdDtc
Ij5fPC9hPiIKK1BBU1MgJ18nLmZvbnRjb2xvcignIicpIGlzICI8Zm9udCBjb2xvcj1cIiZxdW90
O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycuZm9udHNpemUoJyInKSBpcyAiPGZvbnQgc2l6ZT1cIiZx
dW90O1wiPl88L2ZvbnQ+IgorUEFTUyAnXycubGluaygnIicpIGlzICI8YSBocmVmPVwiJnF1b3Q7
XCI+XzwvYT4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3RvdHlw
ZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYjhiNzE4NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmluZy1wcm90b3R5cGUtZXNj
YXBlLWF0dHJpYnV0ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRl
c3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwppbmRleCA1NzE3OGQwLi5lYjZiNDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyOCBAQAorMjAxMi0xMS0wNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUu
ZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtKU0NdIEhUTUwgZXh0ZW5zaW9ucyB0byBTdHJp
bmcucHJvdG90eXBlIHNob3VsZCBlc2NhcGUgIiBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzY2FwZSBx
dW90YXRpb24gbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzIHRvOgorICAgICAgICAt
IFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlw
ZS5mb250Y29sb3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShz
aXplKQorICAgICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRo
aXMgYmVoYXZpb3IgbWF0Y2hlcyBDaHJvbWl1bS9WOCBhbmQgRmlyZWZveC9TcGlkZXJtb25rZXkK
KyAgICAgICAgaW1wbGVtZW50YXRpb25zIGFuZCBpcyByZXF1aXRlZCBieToKKyAgICAgICAgaHR0
cDovL21hdGhpYXMuaHRtbDUub3JnL3NwZWNzL2phdmFzY3JpcHQvI2VzY2FwZWF0dHJpYnV0ZXZh
bHVlCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2sg
KFhTUyB2ZWN0b3IpLgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IpOgorICAgICAgICAoSlNDOjpz
dHJpbmdQcm90b0Z1bmNGb250c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0Fu
Y2hvcik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorCiAyMDEyLTExLTAz
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQmFzZWxpbmUgSklU
IHNob3VsZCB1c2Ugc3RydWN0dXJlIHdhdGNocG9pbnRzIHdoZW5ldmVyIHBvc3NpYmxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCA1YWFmZThiLi41NjM4MDcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEzODgsNyArMTM4OCwxMCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBz
ID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEw
ID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VO
b250cml2aWFsU3RyaW5nKGV4ZWMsICI8Zm9udCBjb2xvcj1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOworICAgIFN0cmluZyBjb2xvciA9
IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGNvbG9yLnJlcGxhY2UoJyInLCAiJnF1b3Q7Iik7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhl
YywgIjxmb250IGNvbG9yPVwiIiwgY29sb3IsICJcIj4iLCBzLCAiPC9mb250PiIpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250c2l6ZShFeGVj
U3RhdGUqIGV4ZWMpCkBAIC0xNDMzLDcgKzE0MzYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGltcGwpKTsK
ICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJp
bmcoZXhlYywgIjxmb250IHNpemU9XCIiLCBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyks
ICJcIj4iLCBzLCAiPC9mb250PiIpKTsKKyAgICBTdHJpbmcgZm9udFNpemUgPSBhMC50b1dURlN0
cmluZyhleGVjKTsKKyAgICBmb250U2l6ZS5yZXBsYWNlKCciJywgIiZxdW90OyIpOworCisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8Zm9u
dCBzaXplPVwiIiwgZm9udFNpemUsICJcIj4iLCBzLCAiPC9mb250PiIpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBl
eGVjKQpAQCAtMTQ0Myw3ICsxNDQ5LDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7CiAgICAgU3RyaW5nIHMgPSB0aGlzVmFsdWUudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIEpTVmFsdWUgYTAgPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywg
IjxhIG5hbWU9XCIiLCBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAi
PC9hPiIpKTsKKyAgICBTdHJpbmcgYW5jaG9yID0gYTAudG9XVEZTdHJpbmcoZXhlYyk7CisgICAg
YW5jaG9yLnJlcGxhY2UoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBhbmNob3IsICJc
Ij4iLCBzLCAiPC9hPiIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0NTMsNyArMTQ2Miw4IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmlu
ZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVl
IGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIGxpbmtUZXh0ID0gYTAudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsaW5rVGV4dCA9IGEwLnRvV1RGU3Ry
aW5nKGV4ZWMpOworICAgIGxpbmtUZXh0LnJlcGxhY2UoJyInLCAiJnF1b3Q7Iik7CiAKICAgICB1
bnNpZ25lZCBsaW5rVGV4dFNpemUgPSBsaW5rVGV4dC5sZW5ndGgoKTsKICAgICB1bnNpZ25lZCBz
dHJpbmdTaXplID0gcy5sZW5ndGgoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172746</attachid>
            <date>2012-11-07 02:37:26 -0800</date>
            <delta_ts>2012-11-08 00:26:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_string_prototype_escape2.patch</filename>
            <type>text/plain</type>
            <size>6639</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkZTVkMmI4Li5iNmQ4OTgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMTEt
MDcgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVz
Y2FwZS1hdHRyaWJ1dGUuaHRtbCB0ZXN0IGNhc2UgdG8gY2hlY2sKKyAgICAgICAgdGhhdCBIVE1M
IGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBjb3JyZWN0bHkgZXNjYXBlIHRoZSBxdW90
YXRpb24KKyAgICAgICAgbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzLgorCisgICAg
ICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0cmli
dXRlLmpzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBl
LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5n
LXByb3RvdHlwZS1lc2NhcGUtYXR0cmlidXRlLmh0bWw6IEFkZGVkLgorCiAyMDEyLTExLTA3ICBE
b21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CiAKICAgICAg
ICAgW0VGTF0gVW5yZXZpZXdlZCBnYXJkZW5pbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLWVzY2FwZS1hdHRyaWJ1dGUuanMg
Yi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9zdHJpbmctcHJvdG90eXBlLWVzY2Fw
ZS1hdHRyaWJ1dGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZiZGQ0
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL3N0
cmluZy1wcm90b3R5cGUtZXNjYXBlLWF0dHJpYnV0ZS5qcwpAQCAtMCwwICsxLDggQEAKK2Rlc2Ny
aXB0aW9uKAorJ1RoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIDxhIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2NyI+YnVnIDkwNjY3PC9hPi4nCispOworCitzaG91bGRC
ZSgiJ18nLmFuY2hvcignXHgyMicpIiwgJyI8YSBuYW1lPVxcIiZxdW90O1xcIj5fPC9hPiInKTsK
K3Nob3VsZEJlKCInXycuZm9udGNvbG9yKCdceDIyJykiLCAnIjxmb250IGNvbG9yPVxcIiZxdW90
O1xcIj5fPC9mb250PiInKTsKK3Nob3VsZEJlKCInXycuZm9udHNpemUoJ1x4MjInKSIsICciPGZv
bnQgc2l6ZT1cXCImcXVvdDtcXCI+XzwvZm9udD4iJyk7CitzaG91bGRCZSgiJ18nLmxpbmsoJ1x4
MjInKSIsICciPGEgaHJlZj1cXCImcXVvdDtcXCI+XzwvYT4iJyk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBlLWF0dHJpYnV0ZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBlLWF0dHJp
YnV0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1
MjkzOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXByb3Rv
dHlwZS1lc2NhcGUtYXR0cmlidXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlz
IGlzIGEgdGVzdCBjYXNlIGZvciBidWcgOTA2NjcuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KKworCitQQVNTICdfJy5hbmNob3IoJyInKSBpcyAiPGEgbmFtZT1cIiZxdW90O1wiPl88L2E+
IgorUEFTUyAnXycuZm9udGNvbG9yKCciJykgaXMgIjxmb250IGNvbG9yPVwiJnF1b3Q7XCI+Xzwv
Zm9udD4iCitQQVNTICdfJy5mb250c2l6ZSgnIicpIGlzICI8Zm9udCBzaXplPVwiJnF1b3Q7XCI+
XzwvZm9udD4iCitQQVNTICdfJy5saW5rKCciJykgaXMgIjxhIGhyZWY9XCImcXVvdDtcIj5fPC9h
PiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1wcm90b3R5cGUtZXNjYXBlLWF0
dHJpYnV0ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90eXBlLWVzY2Fw
ZS1hdHRyaWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGI3
MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcHJvdG90
eXBlLWVzY2FwZS1hdHRyaWJ1dGUuaHRtbApAQCAtMCwwICsxLDEwIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3RyaW5nLXByb3RvdHlwZS1lc2NhcGUtYXR0
cmlidXRlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDg0NzlhYzUuLjNhOTQwYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI4IEBACisyMDEyLTExLTA3ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBp
bnRlbC5jb20+CisKKyAgICAgICAgW0pTQ10gSFRNTCBleHRlbnNpb25zIHRvIFN0cmluZy5wcm90
b3R5cGUgc2hvdWxkIGVzY2FwZSAiIGFzICZxdW90OyBpbiBhcmd1bWVudCB2YWx1ZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIHF1b3RhdGlv
biBtYXJrIGFzICZxdW90OyBpbiBhcmd1bWVudCB2YWx1ZXMgdG86CisgICAgICAgIC0gU3RyaW5n
LnByb3RvdHlwZS5hbmNob3IobmFtZSkKKyAgICAgICAgLSBTdHJpbmcucHJvdG90eXBlLmZvbnRj
b2xvcihjb2xvcikKKyAgICAgICAgLSBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpCisg
ICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5saW5rKGhyZWYpCisKKyAgICAgICAgVGhpcyBiZWhh
dmlvciBtYXRjaGVzIENocm9taXVtL1Y4IGFuZCBGaXJlZm94L1NwaWRlcm1vbmtleQorICAgICAg
ICBpbXBsZW1lbnRhdGlvbnMgYW5kIGlzIHJlcXVpdGVkIGJ5OgorICAgICAgICBodHRwOi8vbWF0
aGlhcy5odG1sNS5vcmcvc3BlY3MvamF2YXNjcmlwdC8jZXNjYXBlYXR0cmlidXRldmFsdWUKKwor
ICAgICAgICBUaGlzIGFsc28gZml4ZXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkgcmlzayAoWFNTIHZl
Y3RvcikuCisKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OnN0cmluZ1Byb3RvRnVuY0ZvbnRjb2xvcik6CisgICAgICAgIChKU0M6OnN0cmluZ1By
b3RvRnVuY0ZvbnRzaXplKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jQW5jaG9yKToK
KyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jTGluayk6CisKIDIwMTItMTEtMDYgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgcGFyc2VyIG92ZXJo
ZWFkIGluIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKaW5kZXggNWFhZmU4Yi4uZTNiOWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMzg4LDcgKzEzODgs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250Y29s
b3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQgY29sb3I9XCIiLCBh
MC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9mb250PiIpKTsKKyAg
ICBTdHJpbmcgY29sb3IgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBjb2xvci5yZXBsYWNl
V2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IGNvbG9yPVwiIiwgY29sb3IsICJc
Ij4iLCBzLCAiPC9mb250PiIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBz
dHJpbmdQcm90b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDMzLDcgKzE0MzYs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250c2l6
ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250
cml2aWFsU3RyaW5nKGV4ZWMsIGltcGwpKTsKICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IHNpemU9XCIiLCBhMC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9mb250PiIpKTsKKyAgICBT
dHJpbmcgZm9udFNpemUgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBmb250U2l6ZS5yZXBs
YWNlV2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IHNpemU9XCIiLCBmb250U2l6
ZSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHN0cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDQzLDcgKzE0
NDksMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNBbmNo
b3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7
CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGEgbmFtZT1cIiIsIGEwLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2E+IikpOworICAgIFN0cmlu
ZyBhbmNob3IgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBhbmNob3IucmVwbGFjZVdpdGhM
aXRlcmFsKCciJywgIiZxdW90OyIpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8YSBuYW1lPVwiIiwgYW5jaG9yLCAiXCI+Iiwgcywg
IjwvYT4iKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDUzLDcgKzE0NjIsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0YXRlKiBleGVjKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBTdHJpbmcgcyA9IHRo
aXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4
ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyBsaW5rVGV4dCA9IGEwLnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbGlua1RleHQgPSBhMC50b1dURlN0cmluZyhleGVj
KTsKKyAgICBsaW5rVGV4dC5yZXBsYWNlV2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CiAKICAg
ICB1bnNpZ25lZCBsaW5rVGV4dFNpemUgPSBsaW5rVGV4dC5sZW5ndGgoKTsKICAgICB1bnNpZ25l
ZCBzdHJpbmdTaXplID0gcy5sZW5ndGgoKTsK
</data>
<flag name="review"
          id="187176"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172946</attachid>
            <date>2012-11-08 00:26:59 -0800</date>
            <delta_ts>2012-11-08 11:11:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_escape_quote2.patch</filename>
            <type>text/plain</type>
            <size>15942</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ZWM0Y2M1Li4xNWUxMWJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTItMTEt
MDggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIHRo
ZSBmb2xsb3dpbmcgU3RyaW5nLnByb3RvdHlwZSBtZXRob2RzOgorICAgICAgICAtIFN0cmluZy5w
cm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250Y29s
b3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKQorICAg
ICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRob3NlIHRlc3Rz
IGFsc28gY2hlY2sgdGhhdCB0aGUgcXVvdGF0aW9uIG1hcmsgaXMgY29ycmVjdGx5IGVzY2FwZWQK
KyAgICAgICAgaW4gYXJndW1lbnQgdmFsdWVzIHRvIHByZXZlbnQgcG90ZW50aWFsIGV4cGxvaXRz
LgorCisgICAgICAgICogZmFzdC9qcy9zdHJpbmctYW5jaG9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9zdHJpbmctYW5jaG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvc3RyaW5nLWZvbnRjb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvc3RyaW5nLWZvbnRjb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3N0cmluZy1mb250c2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
c3RyaW5nLWZvbnRzaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5nLWxp
bmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1saW5rLmh0
bWw6IEFkZGVkLgorCiAyMDEyLTExLTA3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEluZmluaXRlIGxvb3AgaW4gRGF0YUdy
aWQ6OmF1dG9TaXplQ29sdW1uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmlu
Zy1hbmNob3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctYW5jaG9y
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWExNzAz
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctYW5jaG9yLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVzdCBjYXNlIGZvciBTdHJp
bmcucHJvdG90eXBlLmFuY2hvcihuYW1lKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgor
CisKK1BBU1MgJ18nLmFuY2hvcignYicpIGlzICI8YSBuYW1lPVwiYlwiPl88L2E+IgorUEFTUyAn
PCcuYW5jaG9yKCc8JykgaXMgIjxhIG5hbWU9XCI8XCI+PDwvYT4iCitQQVNTICdfJy5hbmNob3Io
MHgyQSkgaXMgIjxhIG5hbWU9XCI0MlwiPl88L2E+IgorUEFTUyAnXycuYW5jaG9yKCciJykgaXMg
IjxhIG5hbWU9XCImcXVvdDtcIj5fPC9hPiIKK1BBU1MgJ18nLmFuY2hvcignIiBocmVmPSJodHRw
Oi8vd3d3LmV2aWwuY29tJykgaXMgIjxhIG5hbWU9XCImcXVvdDsgaHJlZj0mcXVvdDtodHRwOi8v
d3d3LmV2aWwuY29tXCI+XzwvYT4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yLmNhbGwo
MHgyQSwgMHgyQSkgaXMgIjxhIG5hbWU9XCI0MlwiPjQyPC9hPiIKK1BBU1MgU3RyaW5nLnByb3Rv
dHlwZS5hbmNob3IuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yLmNhbGwobnVsbCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5h
bmNob3IubGVuZ3RoIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1hbmNo
b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWFuY2hvci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMGNiYTAKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1hbmNob3IuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigKKydUaGlzIGlzIGEgdGVzdCBj
YXNlIGZvciBTdHJpbmcucHJvdG90eXBlLmFuY2hvcihuYW1lKS4nCispOworCisvLyBUaGlzIHRl
c3QgaXMgYmFzZWQgb24gaHR0cDovL21hdGhpYXMuaHRtbDUub3JnL3Rlc3RzL2phdmFzY3JpcHQv
c3RyaW5nLy4KKworLy8gU2ltcGxlIGNhc2UuCitzaG91bGRCZSgiJ18nLmFuY2hvcignYicpIiwg
JyI8YSBuYW1lPVxcImJcXCI+XzwvYT4iJyk7CisKKy8vIERvZXMgbm90IGVzY2FwZSBzcGVjaWFs
IGNoYXJhY3RlcnMgaW4gYHRoaXNgIHZhbHVlLgorc2hvdWxkQmUoIic8Jy5hbmNob3IoJzwnKSIs
ICciPGEgbmFtZT1cXCI8XFwiPjw8L2E+IicpOworCisvLyBmaXJzdCBhcmd1bWVudCBnZXRzIFRv
U3RyaW5nKCllZC4KK3Nob3VsZEJlKCInXycuYW5jaG9yKDB4MkEpIiwgJyI8YSBuYW1lPVxcIjQy
XFwiPl88L2E+IicpOworCisvLyBDaGVjayB0aGF0IHRoZSBxdW90YXRpb24gbWFyayBpcyBjb3Jy
ZWN0bHkgZXNjYXBlZC4KK3Nob3VsZEJlKCInXycuYW5jaG9yKCdcIicpIiwgJyI8YSBuYW1lPVxc
IiZxdW90O1xcIj5fPC9hPiInKTsKK3Nob3VsZEJlKCInXycuYW5jaG9yKCdcIiBocmVmPVwiaHR0
cDovL3d3dy5ldmlsLmNvbScpIiwgJyI8YSBuYW1lPVxcIiZxdW90OyBocmVmPSZxdW90O2h0dHA6
Ly93d3cuZXZpbC5jb21cXCI+XzwvYT4iJyk7CisKKy8vIEdlbmVyaWMgdXNlIG9uIE51bWJlciBv
YmplY3QuCitzaG91bGRCZSgiU3RyaW5nLnByb3RvdHlwZS5hbmNob3IuY2FsbCgweDJBLCAweDJB
KSIsICciPGEgbmFtZT1cXCI0MlxcIj40MjwvYT4iJyk7CisKKy8vIEdlbmVyaWMgdXNlIG9uIG5v
bi1jb2VyY2libGUgb2JqZWN0IGB1bmRlZmluZWRgLgorc2hvdWxkVGhyb3coIlN0cmluZy5wcm90
b3R5cGUuYW5jaG9yLmNhbGwodW5kZWZpbmVkKSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicp
OworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29lcmNpYmxlIG9iamVjdCBgbnVsbGAuCitzaG91
bGRUaHJvdygiU3RyaW5nLnByb3RvdHlwZS5hbmNob3IuY2FsbChudWxsKSIsICciVHlwZUVycm9y
OiBUeXBlIGVycm9yIicpOworCisvLyBDaGVjayBhbmNob3IubGVuZ3RoLgorc2hvdWxkQmUoIlN0
cmluZy5wcm90b3R5cGUuYW5jaG9yLmxlbmd0aCIsICIxIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWZvbnRjb2xvci1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250Y29sb3ItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMWI5NGYKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250Y29sb3ItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIFN0cmluZy5wcm90
b3R5cGUuZm9udGNvbG9yKGNvbG9yKS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgJ18nLmZvbnRjb2xvcignYicpIGlzICI8Zm9udCBjb2xvcj1cImJcIj5fPC9mb250PiIK
K1BBU1MgJzwnLmZvbnRjb2xvcignPCcpIGlzICI8Zm9udCBjb2xvcj1cIjxcIj48PC9mb250PiIK
K1BBU1MgJ18nLmZvbnRjb2xvcigweDJBKSBpcyAiPGZvbnQgY29sb3I9XCI0MlwiPl88L2ZvbnQ+
IgorUEFTUyAnXycuZm9udGNvbG9yKCciJykgaXMgIjxmb250IGNvbG9yPVwiJnF1b3Q7XCI+Xzwv
Zm9udD4iCitQQVNTICdfJy5mb250Y29sb3IoJyIgc2l6ZT0iMnB4JykgaXMgIjxmb250IGNvbG9y
PVwiJnF1b3Q7IHNpemU9JnF1b3Q7MnB4XCI+XzwvZm9udD4iCitQQVNTIFN0cmluZy5wcm90b3R5
cGUuZm9udGNvbG9yLmNhbGwoMHgyQSwgMHgyQSkgaXMgIjxmb250IGNvbG9yPVwiNDJcIj40Mjwv
Zm9udD4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmNhbGwodW5kZWZpbmVkKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBTdHJpbmcucHJvdG90
eXBlLmZvbnRjb2xvci5jYWxsKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmxlbmd0aCBpcyAxCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udGNvbG9yLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2pzL3N0cmluZy1mb250Y29sb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi44MTVlYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdHJpbmctZm9udGNvbG9yLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oCisnVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgU3RyaW5n
LnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpLicKKyk7CisKKy8vIFRoaXMgdGVzdCBpcyBiYXNl
ZCBvbiBodHRwOi8vbWF0aGlhcy5odG1sNS5vcmcvdGVzdHMvamF2YXNjcmlwdC9zdHJpbmcvLgor
CisvLyBTaW1wbGUgY2FzZS4KK3Nob3VsZEJlKCInXycuZm9udGNvbG9yKCdiJykiLCAnIjxmb250
IGNvbG9yPVxcImJcXCI+XzwvZm9udD4iJyk7CisKKy8vIERvZXMgbm90IGVzY2FwZSBzcGVjaWFs
IGNoYXJhY3RlcnMgaW4gYHRoaXNgIHZhbHVlLgorc2hvdWxkQmUoIic8Jy5mb250Y29sb3IoJzwn
KSIsICciPGZvbnQgY29sb3I9XFwiPFxcIj48PC9mb250PiInKTsKKworLy8gRmlyc3QgYXJndW1l
bnQgZ2V0cyBUb1N0cmluZygpZWQuCitzaG91bGRCZSgiJ18nLmZvbnRjb2xvcigweDJBKSIsICci
PGZvbnQgY29sb3I9XFwiNDJcXCI+XzwvZm9udD4iJyk7CisKKy8vIENoZWNrIHRoYXQgdGhlIHF1
b3RhdGlvbiBtYXJrIGlzIGNvcnJlY3RseSBlc2NhcGVkLgorc2hvdWxkQmUoIidfJy5mb250Y29s
b3IoJ1wiJykiLCAnIjxmb250IGNvbG9yPVxcIiZxdW90O1xcIj5fPC9mb250PiInKTsKK3Nob3Vs
ZEJlKCInXycuZm9udGNvbG9yKCdcIiBzaXplPVwiMnB4JykiLCAnIjxmb250IGNvbG9yPVxcIiZx
dW90OyBzaXplPSZxdW90OzJweFxcIj5fPC9mb250PiInKTsKKworLy8gR2VuZXJpYyB1c2Ugb24g
TnVtYmVyIG9iamVjdC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90eXBlLmZvbnRjb2xvci5jYWxs
KDB4MkEsIDB4MkEpIiwgJyI8Zm9udCBjb2xvcj1cXCI0MlxcIj40MjwvZm9udD4iJyk7CisKKy8v
IEdlbmVyaWMgdXNlIG9uIG5vbi1jb2VyY2libGUgb2JqZWN0IGB1bmRlZmluZWRgLgorc2hvdWxk
VGhyb3coIlN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmNhbGwodW5kZWZpbmVkKSIsICciVHlw
ZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29lcmNpYmxl
IG9iamVjdCBgbnVsbGAuCitzaG91bGRUaHJvdygiU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3Iu
Y2FsbChudWxsKSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBDaGVjayBmb250
Y29sb3IubGVuZ3RoLgorc2hvdWxkQmUoIlN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmxlbmd0
aCIsICIxIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvanMvc3RyaW5nLWZvbnRzaXplLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
anMvc3RyaW5nLWZvbnRzaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jZTA3OWIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdHJpbmctZm9udHNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgaXMg
YSB0ZXN0IGNhc2UgZm9yIFN0cmluZy5wcm90b3R5cGUuZm9udHNpemUoc2l6ZSkuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdfJy5mb250c2l6ZSgnIicpIGlzICI8Zm9u
dCBzaXplPVwiJnF1b3Q7XCI+XzwvZm9udD4iCitQQVNTICdfJy5mb250c2l6ZSgnYicpIGlzICI8
Zm9udCBzaXplPVwiYlwiPl88L2ZvbnQ+IgorUEFTUyAnPCcuZm9udHNpemUoJzwnKSBpcyAiPGZv
bnQgc2l6ZT1cIjxcIj48PC9mb250PiIKK1BBU1MgJ18nLmZvbnRzaXplKDB4MkEpIGlzICI8Zm9u
dCBzaXplPVwiNDJcIj5fPC9mb250PiIKK1BBU1MgJ18nLmZvbnRzaXplKCciJykgaXMgIjxmb250
IHNpemU9XCImcXVvdDtcIj5fPC9mb250PiIKK1BBU1MgJ18nLmZvbnRzaXplKCciIGNvbG9yPSJi
JykgaXMgIjxmb250IHNpemU9XCImcXVvdDsgY29sb3I9JnF1b3Q7YlwiPl88L2ZvbnQ+IgorUEFT
UyBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplLmNhbGwoMHgyQSwgMHgyQSkgaXMgIjxmb250IHNp
emU9XCI0MlwiPjQyPC9mb250PiIKK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZS5jYWxs
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1Mg
U3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZS5jYWxsKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBUeXBl
RXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuZm9udHNpemUubGVuZ3Ro
IGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250c2l6ZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udHNpemUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi44MDc2NjBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdHJpbmctZm9udHNpemUuaHRtbApAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigKKydUaGlzIGlzIGEgdGVzdCBjYXNlIGZv
ciBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpLicKKyk7CisKKy8vIFRoaXMgdGVzdCBp
cyBiYXNlZCBvbiBodHRwOi8vbWF0aGlhcy5odG1sNS5vcmcvdGVzdHMvamF2YXNjcmlwdC9zdHJp
bmcvLgorCisvLyBDaGVjayB0aGF0IHRoZSBxdW90YXRpb24gbWFyayBpcyBjb3JyZWN0bHkgZXNj
YXBlZC4KK3Nob3VsZEJlKCInXycuZm9udHNpemUoJ1wiJykiLCAnIjxmb250IHNpemU9XFwiJnF1
b3Q7XFwiPl88L2ZvbnQ+IicpOworCisvLyBTaW1wbGUgY2FzZS4KK3Nob3VsZEJlKCInXycuZm9u
dHNpemUoJ2InKSIsICciPGZvbnQgc2l6ZT1cXCJiXFwiPl88L2ZvbnQ+IicpOworCisvLyBEb2Vz
IG5vdCBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGB0aGlzYCB2YWx1ZS4KK3Nob3VsZEJl
KCInPCcuZm9udHNpemUoJzwnKSIsICciPGZvbnQgc2l6ZT1cXCI8XFwiPjw8L2ZvbnQ+IicpOwor
CisvLyBGaXJzdCBhcmd1bWVudCBnZXRzIFRvU3RyaW5nKCllZC4KK3Nob3VsZEJlKCInXycuZm9u
dHNpemUoMHgyQSkiLCAnIjxmb250IHNpemU9XFwiNDJcXCI+XzwvZm9udD4iJyk7CisKKy8vIENo
ZWNrIHRoYXQgdGhlIHF1b3RhdGlvbiBtYXJrIGlzIGNvcnJlY3RseSBlc2NhcGVkLgorc2hvdWxk
QmUoIidfJy5mb250c2l6ZSgnXCInKSIsICciPGZvbnQgc2l6ZT1cXCImcXVvdDtcXCI+XzwvZm9u
dD4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRzaXplKCdcIiBjb2xvcj1cImInKSIsICciPGZvbnQg
c2l6ZT1cXCImcXVvdDsgY29sb3I9JnF1b3Q7YlxcIj5fPC9mb250PiInKTsKKworLy8gR2VuZXJp
YyB1c2Ugb24gTnVtYmVyIG9iamVjdC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90eXBlLmZvbnRz
aXplLmNhbGwoMHgyQSwgMHgyQSkiLCAnIjxmb250IHNpemU9XFwiNDJcXCI+NDI8L2ZvbnQ+Iicp
OworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29lcmNpYmxlIG9iamVjdCBgdW5kZWZpbmVkYC4K
K3Nob3VsZFRocm93KCJTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplLmNhbGwodW5kZWZpbmVkKSIs
ICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29l
cmNpYmxlIG9iamVjdCBgbnVsbGAuCitzaG91bGRUaHJvdygiU3RyaW5nLnByb3RvdHlwZS5mb250
c2l6ZS5jYWxsKG51bGwpIiwgJyJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiJyk7CisKKy8vIENoZWNr
IGZvbnRzaXplLmxlbmd0aC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplLmxl
bmd0aCIsICIxIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvc3RyaW5nLWxpbmstZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdHJpbmctbGluay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZjgxMThmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3Ry
aW5nLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgaXMgYSB0ZXN0IGNh
c2UgZm9yIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKS4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK1BBU1MgJ18nLmxpbmsoJyInKSBpcyAiPGEgaHJlZj1cIiZxdW90O1wiPl88
L2E+IgorUEFTUyAnXycubGluaygnYicpIGlzICI8YSBocmVmPVwiYlwiPl88L2E+IgorUEFTUyAn
PCcubGluaygnPCcpIGlzICI8YSBocmVmPVwiPFwiPjw8L2E+IgorUEFTUyAnXycubGluaygweDJB
KSBpcyAiPGEgaHJlZj1cIjQyXCI+XzwvYT4iCitQQVNTICdfJy5saW5rKCciJykgaXMgIjxhIGhy
ZWY9XCImcXVvdDtcIj5fPC9hPiIKK1BBU1MgJ18nLmxpbmsoJyIgdGFyZ2V0PSJfYmxhbmsnKSBp
cyAiPGEgaHJlZj1cIiZxdW90OyB0YXJnZXQ9JnF1b3Q7X2JsYW5rXCI+XzwvYT4iCitQQVNTIFN0
cmluZy5wcm90b3R5cGUubGluay5jYWxsKDB4MkEsIDB4MkEpIGlzICI8YSBocmVmPVwiNDJcIj40
MjwvYT4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUubGluay5jYWxsKHVuZGVmaW5lZCkgdGhyZXcg
ZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5s
aW5rLmNhbGwobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BB
U1MgU3RyaW5nLnByb3RvdHlwZS5saW5rLmxlbmd0aCBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdHJpbmctbGluay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctbGlu
ay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMmM5NjIKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1saW5rLmh0bWwKQEAgLTAs
MCArMSw0NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oCisnVGhp
cyBpcyBhIHRlc3QgY2FzZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5saW5rKGhyZWYpLicKKyk7CisK
Ky8vIFRoaXMgdGVzdCBpcyBiYXNlZCBvbiBodHRwOi8vbWF0aGlhcy5odG1sNS5vcmcvdGVzdHMv
amF2YXNjcmlwdC9zdHJpbmcvLgorCisvLyBDaGVjayB0aGF0IHRoZSBxdW90YXRpb24gbWFyayBp
cyBjb3JyZWN0bHkgZXNjYXBlZC4KK3Nob3VsZEJlKCInXycubGluaygnXCInKSIsICciPGEgaHJl
Zj1cXCImcXVvdDtcXCI+XzwvYT4iJyk7CisKKy8vIFNpbXBsZSBjYXNlLgorc2hvdWxkQmUoIidf
Jy5saW5rKCdiJykiLCAnIjxhIGhyZWY9XFwiYlxcIj5fPC9hPiInKTsKKworLy8gRG9lcyBub3Qg
ZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBgdGhpc2AgdmFsdWUuCitzaG91bGRCZSgiJzwn
LmxpbmsoJzwnKSIsICciPGEgaHJlZj1cXCI8XFwiPjw8L2E+IicpOworCisvLyBGaXJzdCBhcmd1
bWVudCBnZXRzIFRvU3RyaW5nKCllZC4KK3Nob3VsZEJlKCInXycubGluaygweDJBKSIsICciPGEg
aHJlZj1cXCI0MlxcIj5fPC9hPiInKTsKKworLy8gQ2hlY2sgdGhhdCB0aGUgcXVvdGF0aW9uIG1h
cmsgaXMgY29ycmVjdGx5IGVzY2FwZWQuCitzaG91bGRCZSgiJ18nLmxpbmsoJ1wiJykiLCAnIjxh
IGhyZWY9XFwiJnF1b3Q7XFwiPl88L2E+IicpOworc2hvdWxkQmUoIidfJy5saW5rKCdcIiB0YXJn
ZXQ9XCJfYmxhbmsnKSIsICciPGEgaHJlZj1cXCImcXVvdDsgdGFyZ2V0PSZxdW90O19ibGFua1xc
Ij5fPC9hPiInKTsKKworLy8gR2VuZXJpYyB1c2Ugb24gTnVtYmVyIG9iamVjdC4KK3Nob3VsZEJl
KCJTdHJpbmcucHJvdG90eXBlLmxpbmsuY2FsbCgweDJBLCAweDJBKSIsICciPGEgaHJlZj1cXCI0
MlxcIj40MjwvYT4iJyk7CisKKy8vIEdlbmVyaWMgdXNlIG9uIG5vbi1jb2VyY2libGUgb2JqZWN0
IGB1bmRlZmluZWRgLgorc2hvdWxkVGhyb3coIlN0cmluZy5wcm90b3R5cGUubGluay5jYWxsKHVu
ZGVmaW5lZCkiLCAnIlR5cGVFcnJvcjogVHlwZSBlcnJvciInKTsKKworLy8gR2VuZXJpYyB1c2Ug
b24gbm9uLWNvZXJjaWJsZSBvYmplY3QgYG51bGxgLgorc2hvdWxkVGhyb3coIlN0cmluZy5wcm90
b3R5cGUubGluay5jYWxsKG51bGwpIiwgJyJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiJyk7CisKKy8v
IENoZWNrIGxpbmsubGVuZ3RoLgorc2hvdWxkQmUoIlN0cmluZy5wcm90b3R5cGUubGluay5sZW5n
dGgiLCAiMSIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpp
bmRleCBmMjM1ZDlmLi5kNjdkNDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAxMi0xMS0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpA
aW50ZWwuY29tPgorCisgICAgICAgIFtKU0NdIEhUTUwgZXh0ZW5zaW9ucyB0byBTdHJpbmcucHJv
dG90eXBlIHNob3VsZCBlc2NhcGUgIiBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDY2NworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVzY2FwZSBxdW90YXRp
b24gbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzIHRvOgorICAgICAgICAtIFN0cmlu
Zy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250
Y29sb3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKQor
ICAgICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRoaXMgYmVo
YXZpb3IgbWF0Y2hlcyBDaHJvbWl1bS9WOCBhbmQgRmlyZWZveC9TcGlkZXJtb25rZXkKKyAgICAg
ICAgaW1wbGVtZW50YXRpb25zIGFuZCBpcyByZXF1aXRlZCBieToKKyAgICAgICAgaHR0cDovL21h
dGhpYXMuaHRtbDUub3JnL3NwZWNzL2phdmFzY3JpcHQvI2VzY2FwZWF0dHJpYnV0ZXZhbHVlCisK
KyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcG90ZW50aWFsIHNlY3VyaXR5IHJpc2sgKFhTUyB2
ZWN0b3IpLgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IpOgorICAgICAgICAoSlNDOjpzdHJpbmdQ
cm90b0Z1bmNGb250c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0FuY2hvcik6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorCiAyMDEyLTExLTA3ICBNYXJr
IEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vha0Jsb2Nr
cyBzaG91bGQgYmUgSGVhcEJsb2NrcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNWFhZmU4Yi4uZTNiOWU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0x
Mzg4LDcgKzEzODgsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNGb250Y29sb3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQg
Y29sb3I9XCIiLCBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9m
b250PiIpKTsKKyAgICBTdHJpbmcgY29sb3IgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBj
b2xvci5yZXBsYWNlV2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IGNvbG9yPVwi
IiwgY29sb3IsICJcIj4iLCBzLCAiPC9mb250PiIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCkBAIC0x
NDMzLDcgKzE0MzYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90
b0Z1bmNGb250c2l6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIGltcGwpKTsKICAgICB9CiAKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IHNp
emU9XCIiLCBhMC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcIj4iLCBzLCAiPC9mb250
PiIpKTsKKyAgICBTdHJpbmcgZm9udFNpemUgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBm
b250U2l6ZS5yZXBsYWNlV2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxmb250IHNpemU9
XCIiLCBmb250U2l6ZSwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3RhdGUqIGV4ZWMpCkBA
IC0xNDQzLDcgKzE0NDksMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQ
cm90b0Z1bmNBbmNob3IoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjKTsKICAgICBTdHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgSlNWYWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGEgbmFt
ZT1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8L2E+Iikp
OworICAgIFN0cmluZyBhbmNob3IgPSBhMC50b1dURlN0cmluZyhleGVjKTsKKyAgICBhbmNob3Iu
cmVwbGFjZVdpdGhMaXRlcmFsKCciJywgIiZxdW90OyIpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8YSBuYW1lPVwiIiwgYW5jaG9y
LCAiXCI+IiwgcywgIjwvYT4iKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
c3RyaW5nUHJvdG9GdW5jTGluayhFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xNDUzLDcgKzE0NjIsOCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xpbmsoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKICAgICBT
dHJpbmcgcyA9IHRoaXNWYWx1ZS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgSlNW
YWx1ZSBhMCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIFN0cmluZyBsaW5rVGV4dCA9IGEwLnRv
U3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbGlua1RleHQgPSBhMC50b1dU
RlN0cmluZyhleGVjKTsKKyAgICBsaW5rVGV4dC5yZXBsYWNlV2l0aExpdGVyYWwoJyInLCAiJnF1
b3Q7Iik7CiAKICAgICB1bnNpZ25lZCBsaW5rVGV4dFNpemUgPSBsaW5rVGV4dC5sZW5ndGgoKTsK
ICAgICB1bnNpZ25lZCBzdHJpbmdTaXplID0gcy5sZW5ndGgoKTsK
</data>
<flag name="commit-queue"
          id="187458"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173076</attachid>
            <date>2012-11-08 11:11:28 -0800</date>
            <delta_ts>2012-11-08 16:05:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>90667_escape_quote4.patch</filename>
            <type>text/plain</type>
            <size>17486</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBmNjE0NjdmLi4xYzg4Nzg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTItMTEt
MDggIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKworICAg
ICAgICBbSlNDXSBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgZXNj
YXBlICIgYXMgJnF1b3Q7IGluIGFyZ3VtZW50IHZhbHVlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA2NjcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5b3V0IHRlc3QgY292ZXJhZ2UgZm9yIHRo
ZSBmb2xsb3dpbmcgU3RyaW5nLnByb3RvdHlwZSBtZXRob2RzOgorICAgICAgICAtIFN0cmluZy5w
cm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250Y29s
b3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZShzaXplKQorICAg
ICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAgICAgIFRob3NlIHRlc3Rz
IGFsc28gY2hlY2sgdGhhdCB0aGUgcXVvdGF0aW9uIG1hcmsgaXMgY29ycmVjdGx5IGVzY2FwZWQK
KyAgICAgICAgaW4gYXJndW1lbnQgdmFsdWVzIHRvIHByZXZlbnQgcG90ZW50aWFsIGV4cGxvaXRz
LgorCisgICAgICAgICogZmFzdC9qcy9zdHJpbmctYW5jaG9yLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9qcy9zdHJpbmctYW5jaG9yLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvc3RyaW5nLWZvbnRjb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvanMvc3RyaW5nLWZvbnRjb2xvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pz
L3N0cmluZy1mb250c2l6ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
c3RyaW5nLWZvbnRzaXplLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvc3RyaW5nLWxp
bmstZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3N0cmluZy1saW5rLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6
IFNraXAgbmV3IHRlc3RzIGZvciBjaHJvbWl1bSBwb3J0IGR1ZQorICAgICAgICB0byBodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0yMjE4CisKIDIwMTItMTEtMDgg
IEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNdWx0aXBsZSBM
YXlvdXQgVGVzdHMgKGUuZy4gZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1jbGVh
ci5odG1sKSBpcyBmYWlsaW5nIGFmdGVyIHIxMzM4NDAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3N0cmluZy1hbmNob3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9zdHJpbmctYW5jaG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41MGI1M2VhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9z
dHJpbmctYW5jaG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUaGlzIGlzIGEgdGVz
dCBjYXNlIGZvciBTdHJpbmcucHJvdG90eXBlLmFuY2hvcihuYW1lKS4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ18nLmFuY2hvcignYicpIGlzICI8YSBuYW1lPVwiYlwi
Pl88L2E+IgorUEFTUyAnPCcuYW5jaG9yKCdiJykgaXMgIjxhIG5hbWU9XCJiXCI+PDwvYT4iCitQ
QVNTICdfJy5hbmNob3IoMHgyQSkgaXMgIjxhIG5hbWU9XCI0MlwiPl88L2E+IgorUEFTUyAnXycu
YW5jaG9yKCciJykgaXMgIjxhIG5hbWU9XCImcXVvdDtcIj5fPC9hPiIKK1BBU1MgJ18nLmFuY2hv
cignIiBocmVmPSJodHRwOi8vd3d3LmV2aWwuY29tJykgaXMgIjxhIG5hbWU9XCImcXVvdDsgaHJl
Zj0mcXVvdDtodHRwOi8vd3d3LmV2aWwuY29tXCI+XzwvYT4iCitQQVNTIFN0cmluZy5wcm90b3R5
cGUuYW5jaG9yLmNhbGwoMHgyQSwgMHgyQSkgaXMgIjxhIG5hbWU9XCI0MlwiPjQyPC9hPiIKK1BB
U1MgU3RyaW5nLnByb3RvdHlwZS5hbmNob3IuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yLmNh
bGwobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3Ry
aW5nLnByb3RvdHlwZS5hbmNob3IubGVuZ3RoIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2pzL3N0cmluZy1hbmNob3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWFuY2hv
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZTA1MzcKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1hbmNob3IuaHRtbApAQCAt
MCwwICsxLDQxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigKKydU
aGlzIGlzIGEgdGVzdCBjYXNlIGZvciBTdHJpbmcucHJvdG90eXBlLmFuY2hvcihuYW1lKS4nCisp
OworCisvLyBUaGlzIHRlc3QgaXMgYmFzZWQgb24gaHR0cDovL21hdGhpYXMuaHRtbDUub3JnL3Rl
c3RzL2phdmFzY3JpcHQvc3RyaW5nLy4KKworLy8gU2ltcGxlIGNhc2UuCitzaG91bGRCZSgiJ18n
LmFuY2hvcignYicpIiwgJyI8YSBuYW1lPVxcImJcXCI+XzwvYT4iJyk7CisKKy8vIERvZXMgbm90
IGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHRoaXNgIHZhbHVlLgorc2hvdWxkQmUoIic8
Jy5hbmNob3IoJ2InKSIsICciPGEgbmFtZT1cXCJiXFwiPjw8L2E+IicpOworCisvLyBmaXJzdCBh
cmd1bWVudCBnZXRzIFRvU3RyaW5nKCllZC4KK3Nob3VsZEJlKCInXycuYW5jaG9yKDB4MkEpIiwg
JyI8YSBuYW1lPVxcIjQyXFwiPl88L2E+IicpOworCisvLyBDaGVjayB0aGF0IHRoZSBxdW90YXRp
b24gbWFyayBpcyBjb3JyZWN0bHkgZXNjYXBlZC4KK3Nob3VsZEJlKCInXycuYW5jaG9yKCdcIicp
IiwgJyI8YSBuYW1lPVxcIiZxdW90O1xcIj5fPC9hPiInKTsKK3Nob3VsZEJlKCInXycuYW5jaG9y
KCdcIiBocmVmPVwiaHR0cDovL3d3dy5ldmlsLmNvbScpIiwgJyI8YSBuYW1lPVxcIiZxdW90OyBo
cmVmPSZxdW90O2h0dHA6Ly93d3cuZXZpbC5jb21cXCI+XzwvYT4iJyk7CisKKy8vIEdlbmVyaWMg
dXNlIG9uIE51bWJlciBvYmplY3QuCitzaG91bGRCZSgiU3RyaW5nLnByb3RvdHlwZS5hbmNob3Iu
Y2FsbCgweDJBLCAweDJBKSIsICciPGEgbmFtZT1cXCI0MlxcIj40MjwvYT4iJyk7CisKKy8vIEdl
bmVyaWMgdXNlIG9uIG5vbi1jb2VyY2libGUgb2JqZWN0IGB1bmRlZmluZWRgLgorc2hvdWxkVGhy
b3coIlN0cmluZy5wcm90b3R5cGUuYW5jaG9yLmNhbGwodW5kZWZpbmVkKSIsICciVHlwZUVycm9y
OiBUeXBlIGVycm9yIicpOworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29lcmNpYmxlIG9iamVj
dCBgbnVsbGAuCitzaG91bGRUaHJvdygiU3RyaW5nLnByb3RvdHlwZS5hbmNob3IuY2FsbChudWxs
KSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBDaGVjayBhbmNob3IubGVuZ3Ro
Lgorc2hvdWxkQmUoIlN0cmluZy5wcm90b3R5cGUuYW5jaG9yLmxlbmd0aCIsICIxIik7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5n
LWZvbnRjb2xvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250
Y29sb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRm
MzVkNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250
Y29sb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgaXMgYSB0ZXN0IGNhc2Ug
Zm9yIFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yKGNvbG9yKS4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgJ18nLmZvbnRjb2xvcignYicpIGlzICI8Zm9udCBjb2xvcj1c
ImJcIj5fPC9mb250PiIKK1BBU1MgJzwnLmZvbnRjb2xvcignYicpIGlzICI8Zm9udCBjb2xvcj1c
ImJcIj48PC9mb250PiIKK1BBU1MgJ18nLmZvbnRjb2xvcigweDJBKSBpcyAiPGZvbnQgY29sb3I9
XCI0MlwiPl88L2ZvbnQ+IgorUEFTUyAnXycuZm9udGNvbG9yKCciJykgaXMgIjxmb250IGNvbG9y
PVwiJnF1b3Q7XCI+XzwvZm9udD4iCitQQVNTICdfJy5mb250Y29sb3IoJyIgc2l6ZT0iMnB4Jykg
aXMgIjxmb250IGNvbG9yPVwiJnF1b3Q7IHNpemU9JnF1b3Q7MnB4XCI+XzwvZm9udD4iCitQQVNT
IFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmNhbGwoMHgyQSwgMHgyQSkgaXMgIjxmb250IGNv
bG9yPVwiNDJcIj40MjwvZm9udD4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmNh
bGwodW5kZWZpbmVkKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFT
UyBTdHJpbmcucHJvdG90eXBlLmZvbnRjb2xvci5jYWxsKG51bGwpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmxl
bmd0aCBpcyAxCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udGNvbG9yLmh0
bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1mb250Y29sb3IuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjliOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udGNvbG9yLmh0bWwKQEAgLTAsMCArMSw0MSBAQAor
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oCisnVGhpcyBpcyBhIHRlc3Qg
Y2FzZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5mb250Y29sb3IoY29sb3IpLicKKyk7CisKKy8vIFRo
aXMgdGVzdCBpcyBiYXNlZCBvbiBodHRwOi8vbWF0aGlhcy5odG1sNS5vcmcvdGVzdHMvamF2YXNj
cmlwdC9zdHJpbmcvLgorCisvLyBTaW1wbGUgY2FzZS4KK3Nob3VsZEJlKCInXycuZm9udGNvbG9y
KCdiJykiLCAnIjxmb250IGNvbG9yPVxcImJcXCI+XzwvZm9udD4iJyk7CisKKy8vIERvZXMgbm90
IGVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gYHRoaXNgIHZhbHVlLgorc2hvdWxkQmUoIic8
Jy5mb250Y29sb3IoJ2InKSIsICciPGZvbnQgY29sb3I9XFwiYlxcIj48PC9mb250PiInKTsKKwor
Ly8gRmlyc3QgYXJndW1lbnQgZ2V0cyBUb1N0cmluZygpZWQuCitzaG91bGRCZSgiJ18nLmZvbnRj
b2xvcigweDJBKSIsICciPGZvbnQgY29sb3I9XFwiNDJcXCI+XzwvZm9udD4iJyk7CisKKy8vIENo
ZWNrIHRoYXQgdGhlIHF1b3RhdGlvbiBtYXJrIGlzIGNvcnJlY3RseSBlc2NhcGVkLgorc2hvdWxk
QmUoIidfJy5mb250Y29sb3IoJ1wiJykiLCAnIjxmb250IGNvbG9yPVxcIiZxdW90O1xcIj5fPC9m
b250PiInKTsKK3Nob3VsZEJlKCInXycuZm9udGNvbG9yKCdcIiBzaXplPVwiMnB4JykiLCAnIjxm
b250IGNvbG9yPVxcIiZxdW90OyBzaXplPSZxdW90OzJweFxcIj5fPC9mb250PiInKTsKKworLy8g
R2VuZXJpYyB1c2Ugb24gTnVtYmVyIG9iamVjdC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90eXBl
LmZvbnRjb2xvci5jYWxsKDB4MkEsIDB4MkEpIiwgJyI8Zm9udCBjb2xvcj1cXCI0MlxcIj40Mjwv
Zm9udD4iJyk7CisKKy8vIEdlbmVyaWMgdXNlIG9uIG5vbi1jb2VyY2libGUgb2JqZWN0IGB1bmRl
ZmluZWRgLgorc2hvdWxkVGhyb3coIlN0cmluZy5wcm90b3R5cGUuZm9udGNvbG9yLmNhbGwodW5k
ZWZpbmVkKSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBHZW5lcmljIHVzZSBv
biBub24tY29lcmNpYmxlIG9iamVjdCBgbnVsbGAuCitzaG91bGRUaHJvdygiU3RyaW5nLnByb3Rv
dHlwZS5mb250Y29sb3IuY2FsbChudWxsKSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOwor
CisvLyBDaGVjayBmb250Y29sb3IubGVuZ3RoLgorc2hvdWxkQmUoIlN0cmluZy5wcm90b3R5cGUu
Zm9udGNvbG9yLmxlbmd0aCIsICIxIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWZvbnRzaXplLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWZvbnRzaXplLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjBjYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udHNpemUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTkgQEAKK1RoaXMgaXMgYSB0ZXN0IGNhc2UgZm9yIFN0cmluZy5wcm90b3R5cGUuZm9udHNpemUo
c2l6ZSkuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTICdfJy5mb250c2l6
ZSgnIicpIGlzICI8Zm9udCBzaXplPVwiJnF1b3Q7XCI+XzwvZm9udD4iCitQQVNTICdfJy5mb250
c2l6ZSgnYicpIGlzICI8Zm9udCBzaXplPVwiYlwiPl88L2ZvbnQ+IgorUEFTUyAnPCcuZm9udHNp
emUoJ2InKSBpcyAiPGZvbnQgc2l6ZT1cImJcIj48PC9mb250PiIKK1BBU1MgJ18nLmZvbnRzaXpl
KDB4MkEpIGlzICI8Zm9udCBzaXplPVwiNDJcIj5fPC9mb250PiIKK1BBU1MgJ18nLmZvbnRzaXpl
KCciJykgaXMgIjxmb250IHNpemU9XCImcXVvdDtcIj5fPC9mb250PiIKK1BBU1MgJ18nLmZvbnRz
aXplKCciIGNvbG9yPSJiJykgaXMgIjxmb250IHNpemU9XCImcXVvdDsgY29sb3I9JnF1b3Q7Ylwi
Pl88L2ZvbnQ+IgorUEFTUyBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplLmNhbGwoMHgyQSwgMHgy
QSkgaXMgIjxmb250IHNpemU9XCI0MlwiPjQyPC9mb250PiIKK1BBU1MgU3RyaW5nLnByb3RvdHlw
ZS5mb250c2l6ZS5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5mb250c2l6ZS5jYWxsKG51bGwpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIFN0cmluZy5wcm90b3R5cGUu
Zm9udHNpemUubGVuZ3RoIGlzIDEKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1m
b250c2l6ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udHNpemUuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDFlMDU2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctZm9udHNpemUuaHRtbApAQCAtMCwwICsx
LDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigKKydUaGlzIGlz
IGEgdGVzdCBjYXNlIGZvciBTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplKHNpemUpLicKKyk7CisK
Ky8vIFRoaXMgdGVzdCBpcyBiYXNlZCBvbiBodHRwOi8vbWF0aGlhcy5odG1sNS5vcmcvdGVzdHMv
amF2YXNjcmlwdC9zdHJpbmcvLgorCisvLyBDaGVjayB0aGF0IHRoZSBxdW90YXRpb24gbWFyayBp
cyBjb3JyZWN0bHkgZXNjYXBlZC4KK3Nob3VsZEJlKCInXycuZm9udHNpemUoJ1wiJykiLCAnIjxm
b250IHNpemU9XFwiJnF1b3Q7XFwiPl88L2ZvbnQ+IicpOworCisvLyBTaW1wbGUgY2FzZS4KK3No
b3VsZEJlKCInXycuZm9udHNpemUoJ2InKSIsICciPGZvbnQgc2l6ZT1cXCJiXFwiPl88L2ZvbnQ+
IicpOworCisvLyBEb2VzIG5vdCBlc2NhcGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGB0aGlzYCB2
YWx1ZS4KK3Nob3VsZEJlKCInPCcuZm9udHNpemUoJ2InKSIsICciPGZvbnQgc2l6ZT1cXCJiXFwi
Pjw8L2ZvbnQ+IicpOworCisvLyBGaXJzdCBhcmd1bWVudCBnZXRzIFRvU3RyaW5nKCllZC4KK3No
b3VsZEJlKCInXycuZm9udHNpemUoMHgyQSkiLCAnIjxmb250IHNpemU9XFwiNDJcXCI+XzwvZm9u
dD4iJyk7CisKKy8vIENoZWNrIHRoYXQgdGhlIHF1b3RhdGlvbiBtYXJrIGlzIGNvcnJlY3RseSBl
c2NhcGVkLgorc2hvdWxkQmUoIidfJy5mb250c2l6ZSgnXCInKSIsICciPGZvbnQgc2l6ZT1cXCIm
cXVvdDtcXCI+XzwvZm9udD4iJyk7CitzaG91bGRCZSgiJ18nLmZvbnRzaXplKCdcIiBjb2xvcj1c
ImInKSIsICciPGZvbnQgc2l6ZT1cXCImcXVvdDsgY29sb3I9JnF1b3Q7YlxcIj5fPC9mb250PiIn
KTsKKworLy8gR2VuZXJpYyB1c2Ugb24gTnVtYmVyIG9iamVjdC4KK3Nob3VsZEJlKCJTdHJpbmcu
cHJvdG90eXBlLmZvbnRzaXplLmNhbGwoMHgyQSwgMHgyQSkiLCAnIjxmb250IHNpemU9XFwiNDJc
XCI+NDI8L2ZvbnQ+IicpOworCisvLyBHZW5lcmljIHVzZSBvbiBub24tY29lcmNpYmxlIG9iamVj
dCBgdW5kZWZpbmVkYC4KK3Nob3VsZFRocm93KCJTdHJpbmcucHJvdG90eXBlLmZvbnRzaXplLmNh
bGwodW5kZWZpbmVkKSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworCisvLyBHZW5lcmlj
IHVzZSBvbiBub24tY29lcmNpYmxlIG9iamVjdCBgbnVsbGAuCitzaG91bGRUaHJvdygiU3RyaW5n
LnByb3RvdHlwZS5mb250c2l6ZS5jYWxsKG51bGwpIiwgJyJUeXBlRXJyb3I6IFR5cGUgZXJyb3Ii
Jyk7CisKKy8vIENoZWNrIGZvbnRzaXplLmxlbmd0aC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90
eXBlLmZvbnRzaXplLmxlbmd0aCIsICIxIik7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLWxpbmstZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctbGluay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uY2MzNWQxYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvanMvc3RyaW5nLWxpbmstZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1Ro
aXMgaXMgYSB0ZXN0IGNhc2UgZm9yIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKS4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgJ18nLmxpbmsoJyInKSBpcyAiPGEgaHJl
Zj1cIiZxdW90O1wiPl88L2E+IgorUEFTUyAnXycubGluaygnYicpIGlzICI8YSBocmVmPVwiYlwi
Pl88L2E+IgorUEFTUyAnPCcubGluaygnYicpIGlzICI8YSBocmVmPVwiYlwiPjw8L2E+IgorUEFT
UyAnXycubGluaygweDJBKSBpcyAiPGEgaHJlZj1cIjQyXCI+XzwvYT4iCitQQVNTICdfJy5saW5r
KCciJykgaXMgIjxhIGhyZWY9XCImcXVvdDtcIj5fPC9hPiIKK1BBU1MgJ18nLmxpbmsoJyIgdGFy
Z2V0PSJfYmxhbmsnKSBpcyAiPGEgaHJlZj1cIiZxdW90OyB0YXJnZXQ9JnF1b3Q7X2JsYW5rXCI+
XzwvYT4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUubGluay5jYWxsKDB4MkEsIDB4MkEpIGlzICI8
YSBocmVmPVwiNDJcIj40MjwvYT4iCitQQVNTIFN0cmluZy5wcm90b3R5cGUubGluay5jYWxsKHVu
ZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgU3Ry
aW5nLnByb3RvdHlwZS5saW5rLmNhbGwobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KK1BBU1MgU3RyaW5nLnByb3RvdHlwZS5saW5rLmxlbmd0aCBpcyAxCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctbGluay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9qcy9zdHJpbmctbGluay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjlmODA2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1s
aW5rLmh0bWwKQEAgLTAsMCArMSw0NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oCisnVGhpcyBpcyBhIHRlc3QgY2FzZSBmb3IgU3RyaW5nLnByb3RvdHlwZS5saW5r
KGhyZWYpLicKKyk7CisKKy8vIFRoaXMgdGVzdCBpcyBiYXNlZCBvbiBodHRwOi8vbWF0aGlhcy5o
dG1sNS5vcmcvdGVzdHMvamF2YXNjcmlwdC9zdHJpbmcvLgorCisvLyBDaGVjayB0aGF0IHRoZSBx
dW90YXRpb24gbWFyayBpcyBjb3JyZWN0bHkgZXNjYXBlZC4KK3Nob3VsZEJlKCInXycubGluaygn
XCInKSIsICciPGEgaHJlZj1cXCImcXVvdDtcXCI+XzwvYT4iJyk7CisKKy8vIFNpbXBsZSBjYXNl
Lgorc2hvdWxkQmUoIidfJy5saW5rKCdiJykiLCAnIjxhIGhyZWY9XFwiYlxcIj5fPC9hPiInKTsK
KworLy8gRG9lcyBub3QgZXNjYXBlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiBgdGhpc2AgdmFsdWUu
CitzaG91bGRCZSgiJzwnLmxpbmsoJ2InKSIsICciPGEgaHJlZj1cXCJiXFwiPjw8L2E+IicpOwor
CisvLyBGaXJzdCBhcmd1bWVudCBnZXRzIFRvU3RyaW5nKCllZC4KK3Nob3VsZEJlKCInXycubGlu
aygweDJBKSIsICciPGEgaHJlZj1cXCI0MlxcIj5fPC9hPiInKTsKKworLy8gQ2hlY2sgdGhhdCB0
aGUgcXVvdGF0aW9uIG1hcmsgaXMgY29ycmVjdGx5IGVzY2FwZWQuCitzaG91bGRCZSgiJ18nLmxp
bmsoJ1wiJykiLCAnIjxhIGhyZWY9XFwiJnF1b3Q7XFwiPl88L2E+IicpOworc2hvdWxkQmUoIidf
Jy5saW5rKCdcIiB0YXJnZXQ9XCJfYmxhbmsnKSIsICciPGEgaHJlZj1cXCImcXVvdDsgdGFyZ2V0
PSZxdW90O19ibGFua1xcIj5fPC9hPiInKTsKKworLy8gR2VuZXJpYyB1c2Ugb24gTnVtYmVyIG9i
amVjdC4KK3Nob3VsZEJlKCJTdHJpbmcucHJvdG90eXBlLmxpbmsuY2FsbCgweDJBLCAweDJBKSIs
ICciPGEgaHJlZj1cXCI0MlxcIj40MjwvYT4iJyk7CisKKy8vIEdlbmVyaWMgdXNlIG9uIG5vbi1j
b2VyY2libGUgb2JqZWN0IGB1bmRlZmluZWRgLgorc2hvdWxkVGhyb3coIlN0cmluZy5wcm90b3R5
cGUubGluay5jYWxsKHVuZGVmaW5lZCkiLCAnIlR5cGVFcnJvcjogVHlwZSBlcnJvciInKTsKKwor
Ly8gR2VuZXJpYyB1c2Ugb24gbm9uLWNvZXJjaWJsZSBvYmplY3QgYG51bGxgLgorc2hvdWxkVGhy
b3coIlN0cmluZy5wcm90b3R5cGUubGluay5jYWxsKG51bGwpIiwgJyJUeXBlRXJyb3I6IFR5cGUg
ZXJyb3IiJyk7CisKKy8vIENoZWNrIGxpbmsubGVuZ3RoLgorc2hvdWxkQmUoIlN0cmluZy5wcm90
b3R5cGUubGluay5sZW5ndGgiLCAiMSIpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA4NzFjNmY5
Li40ODYyZTdmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTI0NTcsNiArMjQ1NywxMyBAQCBjcmJ1Zy5jb20vNjM5MjEgZmFzdC9jYW52
YXMvY2FudmFzLWZpbGxQYXRoLXNoYWRvdy5odG1sIFsgRmFpbHVyZSBdCiAjIEZJWE1FOiBOZWVk
IHRvIGFkZCB0b29saW5nIHN1cHBvcnQgZm9yIFY4IGJ1Z3MuCiBjb2RlLmdvb2dsZS5jb20vcC92
OC9pc3N1ZXMvZGV0YWlsP2lkPTk1MyBmYXN0L3JlZ2V4L3BjcmUtdGVzdC0xLmh0bWwgWyBUaW1l
b3V0IF0KIAorIyBIVE1MIGV4dGVuc2lvbnMgdG8gU3RyaW5nLnByb3RvdHlwZSBzaG91bGQgdGhy
b3cgYW4gZXJyb3IgaWYgdGhlIGB0aGlzYCBvYmplY3QKKyMgaXMgbm90IGNvZXJjaWJsZSAoaS5l
LiBgbnVsbGAgb3IgYHVuZGVmaW5lZGApCitjb2RlLmdvb2dsZS5jb20vcC92OC9pc3N1ZXMvZGV0
YWlsP2lkPTIyMTggZmFzdC9qcy9zdHJpbmctYW5jaG9yLmh0bWwgWyBGYWlsdXJlIF0KK2NvZGUu
Z29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjIxOCBmYXN0L2pzL3N0cmluZy1mb250
Y29sb3IuaHRtbCBbIEZhaWx1cmUgXQorY29kZS5nb29nbGUuY29tL3AvdjgvaXNzdWVzL2RldGFp
bD9pZD0yMjE4IGZhc3QvanMvc3RyaW5nLWZvbnRzaXplLmh0bWwgWyBGYWlsdXJlIF0KK2NvZGUu
Z29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MjIxOCBmYXN0L2pzL3N0cmluZy1saW5r
Lmh0bWwgWyBGYWlsdXJlIF0KKwogd2Via2l0Lm9yZy9iLzUwMjgyIFsgQW5kcm9pZCBMaW51eCBX
aW4gXSBmYXN0L2ltYWdlcy9pbWFnZW1hcC1mb2N1cy1yaW5nLW91dGxpbmUtY29sb3ItZXhwbGlj
aXRseS1pbmhlcml0ZWQtZnJvbS1tYXAuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzUw
MjgyIFsgQW5kcm9pZCBMaW51eCBXaW4gXSBmYXN0L2ltYWdlcy9pbWFnZW1hcC1mb2N1cy1yaW5n
LW91dGxpbmUtY29sb3Itbm90LWluaGVyaXRlZC1mcm9tLW1hcC5odG1sIFsgRmFpbHVyZSBdCiB3
ZWJraXQub3JnL2IvNTAyODIgWyBBbmRyb2lkIExpbnV4IFdpbiBdIGZhc3QvaW1hZ2VzL2ltYWdl
bWFwLWZvY3VzLXJpbmctb3V0bGluZS1jb2xvci5odG1sIFsgRmFpbHVyZSBdCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwppbmRleCA0OGQ2NjQ3Li4yOTFiZWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMi0xMS0wOCAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlz
dG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAgIFtKU0NdIEhUTUwgZXh0ZW5zaW9ucyB0
byBTdHJpbmcucHJvdG90eXBlIHNob3VsZCBlc2NhcGUgIiBhcyAmcXVvdDsgaW4gYXJndW1lbnQg
dmFsdWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MDY2NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVz
Y2FwZSBxdW90YXRpb24gbWFyayBhcyAmcXVvdDsgaW4gYXJndW1lbnQgdmFsdWVzIHRvOgorICAg
ICAgICAtIFN0cmluZy5wcm90b3R5cGUuYW5jaG9yKG5hbWUpCisgICAgICAgIC0gU3RyaW5nLnBy
b3RvdHlwZS5mb250Y29sb3IoY29sb3IpCisgICAgICAgIC0gU3RyaW5nLnByb3RvdHlwZS5mb250
c2l6ZShzaXplKQorICAgICAgICAtIFN0cmluZy5wcm90b3R5cGUubGluayhocmVmKQorCisgICAg
ICAgIFRoaXMgYmVoYXZpb3IgbWF0Y2hlcyBDaHJvbWl1bS9WOCBhbmQgRmlyZWZveC9TcGlkZXJt
b25rZXkKKyAgICAgICAgaW1wbGVtZW50YXRpb25zIGFuZCBpcyByZXF1aXRlZCBieToKKyAgICAg
ICAgaHR0cDovL21hdGhpYXMuaHRtbDUub3JnL3NwZWNzL2phdmFzY3JpcHQvI2VzY2FwZWF0dHJp
YnV0ZXZhbHVlCisKKyAgICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgcG90ZW50aWFsIHNlY3VyaXR5
IHJpc2sgKFhTUyB2ZWN0b3IpLgorCisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNGb250Y29sb3IpOgorICAgICAgICAo
SlNDOjpzdHJpbmdQcm90b0Z1bmNGb250c2l6ZSk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3Rv
RnVuY0FuY2hvcik6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0xpbmspOgorCiAyMDEy
LTExLTA4ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIE9w
YXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSgpIHNob3VsZCB1c2UgU3RyaW5nSW1wbDo6aXNvbGF0ZWRD
b3B5KCkgdG8gbWFrZSBzdHJpbmcgY29waWVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA1YWFmZThiLi5lM2I5ZTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
QEAgLTEzODgsNyArMTM4OCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0ZvbnRjb2xvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8
Zm9udCBjb2xvcj1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMs
ICI8L2ZvbnQ+IikpOworICAgIFN0cmluZyBjb2xvciA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgIGNvbG9yLnJlcGxhY2VXaXRoTGl0ZXJhbCgnIicsICImcXVvdDsiKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQgY29s
b3I9XCIiLCBjb2xvciwgIlwiPiIsIHMsICI8L2ZvbnQ+IikpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykK
QEAgLTE0MzMsNyArMTQzNiwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0ZvbnRzaXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgaW1wbCkpOwogICAgIH0KIAotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZv
bnQgc2l6ZT1cIiIsIGEwLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSwgIlwiPiIsIHMsICI8
L2ZvbnQ+IikpOworICAgIFN0cmluZyBmb250U2l6ZSA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOwor
ICAgIGZvbnRTaXplLnJlcGxhY2VXaXRoTGl0ZXJhbCgnIicsICImcXVvdDsiKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmluZyhleGVjLCAiPGZvbnQg
c2l6ZT1cIiIsIGZvbnRTaXplLCAiXCI+IiwgcywgIjwvZm9udD4iKSk7CiB9CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jQW5jaG9yKEV4ZWNTdGF0ZSogZXhl
YykKQEAgLTE0NDMsNyArMTQ0OSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY0FuY2hvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMpOwogICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKICAgICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICI8
YSBuYW1lPVwiIiwgYTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXCI+IiwgcywgIjwv
YT4iKSk7CisgICAgU3RyaW5nIGFuY2hvciA9IGEwLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGFu
Y2hvci5yZXBsYWNlV2l0aExpdGVyYWwoJyInLCAiJnF1b3Q7Iik7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTWFrZU5vbnRyaXZpYWxTdHJpbmcoZXhlYywgIjxhIG5hbWU9XCIiLCBh
bmNob3IsICJcIj4iLCBzLCAiPC9hPiIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNMaW5rKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTE0NTMsNyArMTQ2
Miw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTGluayhF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwog
ICAgIFN0cmluZyBzID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAg
ICBKU1ZhbHVlIGEwID0gZXhlYy0+YXJndW1lbnQoMCk7Ci0gICAgU3RyaW5nIGxpbmtUZXh0ID0g
YTAudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsaW5rVGV4dCA9IGEw
LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIGxpbmtUZXh0LnJlcGxhY2VXaXRoTGl0ZXJhbCgnIics
ICImcXVvdDsiKTsKIAogICAgIHVuc2lnbmVkIGxpbmtUZXh0U2l6ZSA9IGxpbmtUZXh0Lmxlbmd0
aCgpOwogICAgIHVuc2lnbmVkIHN0cmluZ1NpemUgPSBzLmxlbmd0aCgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>