<?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>61799</bug_id>
          
          <creation_ts>2011-05-31 12:29:09 -0700</creation_ts>
          <short_desc>Fix LayoutTests/canvas/suite/tests/2d.text.measure.width.space.html</short_desc>
          <delta_ts>2022-07-18 13:54:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Canvas</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>46506</blocked>
    
    <blocked>92974</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Philip Rogers">pdr</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>pravind.2k4</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>412787</commentid>
    <comment_count>0</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-05-31 12:29:09 -0700</bug_when>
    <thetext>Fix LayoutTests/canvas/suite/tests/2d.text.measure.width.space.html. This is failing because we don&apos;t properly collapse whitespace in canvas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413352</commentid>
    <comment_count>1</comment_count>
      <attachid>95596</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-06-01 07:02:18 -0700</bug_when>
    <thetext>Created attachment 95596
Fix LayoutTests/canvas/suite/tests/2d.text.measure.width.space.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413398</commentid>
    <comment_count>2</comment_count>
      <attachid>95607</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-06-01 08:40:28 -0700</bug_when>
    <thetext>Created attachment 95607
Adds simplifyHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413399</commentid>
    <comment_count>3</comment_count>
      <attachid>95608</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-06-01 08:40:59 -0700</bug_when>
    <thetext>Created attachment 95608
Adds simplifyHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413433</commentid>
    <comment_count>4</comment_count>
      <attachid>95608</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-01 09:29:36 -0700</bug_when>
    <thetext>Comment on attachment 95608
Adds simplifyHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests

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

Wow, is the behavior really specified this way? That sounds like a mistake in the design of this API. Seems bizarre to collapse the spaces out of a string that is being passed in from JavaScript.

review- because I’d like to see a faster version of the “no collapsing needed” code path.

&gt; Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp:1879
&gt; +    const String&amp; str = simplifyHTMLWhiteSpace(text);

We frown on abbreviations like “str”. Maybe “simplifiedText” or the argument could be named rawText and this local could be text.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:65
&gt; +    const UChar* fromend = from + length;

We’d normally capitalize the E here.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:66
&gt; +    int outc = 0;

We try to avoid variable names like this with abbreviations rather than words.

&gt; Source/WebCore/html/parser/HTMLParserIdioms.cpp:69
&gt; +    StringBuffer data(length);

Unfortunately, this allocates a new buffer in memory every time, even if nothing changes. I think we want to further optimize the no-collapse case so the buffer is only created the first time we have to change something.

Since most strings won’t need to be collapsed, I think we could just do a complete pass checking if there is anything to collapse before actually creating the buffer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413435</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-01 09:30:18 -0700</bug_when>
    <thetext>Can someone raise this issue on the relevant standards list? This collapsing behavior seems like the wrong choice. Maybe we can nip this in the bud before it’s too late.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414106</commentid>
    <comment_count>6</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-06-02 07:39:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can someone raise this issue on the relevant standards list? This collapsing behavior seems like the wrong choice. Maybe we can nip this in the bud before it’s too late.

I asked for clarification on the whitespace collapse issue on IRC and it&apos;s clear that it isn&apos;t clear what the correct behavior is. I posted the following to the public-canvas-api list asking for clarification:
http://lists.w3.org/Archives/Public/public-canvas-api/2011AprJun/0037.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414924</commentid>
    <comment_count>7</comment_count>
      <attachid>95919</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2011-06-03 08:48:45 -0700</bug_when>
    <thetext>Created attachment 95919
Adds replaceHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests

From my reading of the spec, it looks like white space should not be collapsed (meaning the tests are wrong and my patch was wrong), but please hold off on an actual review until it&apos;s confirmed. I updated this patch to reflect the reviewer comments and have a more optimized conversion step from html white space characters to &apos; &apos;. I also temporarily used simplifyWhiteSpace() to do the collapsing.

When I get a response on this message (http://lists.w3.org/Archives/Public/public-canvas-api/2011AprJun/0037.html), I&apos;ll update this bug with the final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681558</commentid>
    <comment_count>8</comment_count>
    <who name="Pravin D">pravind.2k4</who>
    <bug_when>2012-07-29 08:41:23 -0700</bug_when>
    <thetext>Hi Philip, 

I was trying to work on 
http://w3c-test.org/html/tests/approved/canvas/2d.text.draw.space.collapse.nonspace.html

Which similar this issue I guess...

Is there any updates on this issue?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681641</commentid>
    <comment_count>9</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2012-07-29 18:53:22 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Hi Philip, 
&gt; 
&gt; I was trying to work on 
&gt; http://w3c-test.org/html/tests/approved/canvas/2d.text.draw.space.collapse.nonspace.html
&gt; 
&gt; Which similar this issue I guess...
&gt; 
&gt; Is there any updates on this issue?

Hey Pravin, there was an update to this. The spec was modified slightly so that it now contains the line &quot;&apos;white-space&apos; property of the inline element set to &apos;pre&apos;&quot;, which is what I think we wanted.

I have sent a patch to Philip (the canvas test author) to update the tests but I haven&apos;t heard back yet. I wonder... should we just update the tests in WebKit and mark it as differing from the original?

WRT your bug, I think these are very similar indeed. Does this patch fix your test as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>681826</commentid>
    <comment_count>10</comment_count>
    <who name="Pravin D">pravind.2k4</who>
    <bug_when>2012-07-30 03:13:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Hi Philip, 
&gt; &gt; 
&gt; &gt; I was trying to work on 
&gt; &gt; http://w3c-test.org/html/tests/approved/canvas/2d.text.draw.space.collapse.nonspace.html
&gt; &gt; 
&gt; &gt; Which similar this issue I guess...
&gt; &gt; 
&gt; &gt; Is there any updates on this issue?
&gt; 
&gt; Hey Pravin, there was an update to this. The spec was modified slightly so that it now contains the line &quot;&apos;white-space&apos; property of the inline element set to &apos;pre&apos;&quot;, which is what I think we wanted.
&gt; 
&gt; I have sent a patch to Philip (the canvas test author) to update the tests but I haven&apos;t heard back yet. I wonder... should we just update the tests in WebKit and mark it as differing from the original?
&gt; 
&gt; WRT your bug, I think these are very similar indeed. Does this patch fix your test as well?
&gt; 

Did more analysis on the issue I was looking into... I guess its a little different from one you are tackling... 
However I&apos;m guessing that the failure in LayoutTests/canvas/suite/tests/2d.text.measure.width.space.html maybe partly due to 
LayoutTests/canvas/philip/tests/2d.text.draw.space.collapse.nonspace.html ... I&apos;ll raise another bug for the same n get back to you...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688392</commentid>
    <comment_count>11</comment_count>
    <who name="Pravin D">pravind.2k4</who>
    <bug_when>2012-08-06 13:40:27 -0700</bug_when>
    <thetext>Hi Philip,

Kindly see the bug https://bugs.webkit.org/show_bug.cgi?id=92974 ... it is also dependent on this bug... Expecting a patch soon :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884843</commentid>
    <comment_count>12</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-18 13:54:37 -0700</bug_when>
    <thetext>It looks like we still have some level of failure here:

https://wpt.fyi/results/html/canvas/element/text-styles/2d.text.measure.width.space.html?label=master&amp;label=experimental&amp;aligned&amp;q=2d.text.measure.width.space.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1884844</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-07-18 13:54:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/97218118&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95596</attachid>
            <date>2011-06-01 07:02:18 -0700</date>
            <delta_ts>2011-06-01 08:40:28 -0700</delta_ts>
            <desc>Fix LayoutTests/canvas/suite/tests/2d.text.measure.width.space.html</desc>
            <filename>61799.2.patch</filename>
            <type>text/plain</type>
            <size>8663</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3ODAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBS
b2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxpZnlIVE1MV2hpdGVTcGFjZSBtZXRob2QgdG8gY29s
bGFwc2Ugd2hpdGVzcGFjZSBwZXIgdGhlIEhUTUwgc3BlYywgYW5kIGNhbGwgaXQgaW4gQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCgpLiBUaGlzIG1ha2VzIHVzIHBhc3MgMmQu
dGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwsIHNlZTogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTYxNzk5LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMh
KQorCisgICAgICAgICogaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRDo6bWVhc3VyZVRleHQp
OgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2ltcGxpZnlIVE1MV2hpdGVTcGFjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oOgorCiAyMDExLTA2LTAxICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5y
ZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
ODc3ODguCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJldmlzaW9uIDg3Nzk4KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgpAQCAtMTg3
NCw2ICsxODc1LDkgQEAgdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleAog
CiBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1
cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKKyAgICAvLyBOZWVkIHRvIHRyaW0gYW5kIGNv
bGxhcHNlIHdoaXRlc3BhY2UuCisgICAgY29uc3QgU3RyaW5nJiBzdHIgPSBzaW1wbGlmeUhUTUxX
aGl0ZVNwYWNlKHRleHQpOworCiAgICAgUmVmUHRyPFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4
dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAjaWYgUExBVEZPUk0oUVQpCkBAIC0xODgyLDcgKzE4ODYs
NyBAQCBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDCiAgICAgRm9udDo6
c2V0Q29kZVBhdGgoRm9udDo6Q29tcGxleCk7CiAjZW5kaWYKIAotICAgIG1ldHJpY3MtPnNldFdp
ZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVuKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxl
bmd0aCgpKSkpOworICAgIG1ldHJpY3MtPnNldFdpZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0
UnVuKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5ndGgoKSkpKTsKIAogI2lmIFBMQVRGT1JNKFFU
KQogICAgIEZvbnQ6OnNldENvZGVQYXRoKG9sZENvZGVQYXRoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCShyZXZpc2lvbiA4Nzc5
OCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMu
aD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmlu
Zy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTU3LDYgKzU4LDQyIEBAIFN0cmluZyBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0hUTUxTcGFjZXMKICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFkaW5nU3BhY2Vz
LCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2VzKSk7CiB9CiAK
K1N0cmluZyBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorewor
ICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciog
ZnJvbSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGZyb21lbmQgPSBm
cm9tICsgbGVuZ3RoOworICAgIGludCBvdXRjID0gMDsKKyAgICBib29sIGNoYW5nZWRUb1NwYWNl
ID0gZmFsc2U7CisKKyAgICBTdHJpbmdCdWZmZXIgZGF0YShsZW5ndGgpOworICAgIFVDaGFyKiB0
byA9IGRhdGEuY2hhcmFjdGVycygpOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgd2hp
bGUgKGZyb20gIT0gZnJvbWVuZCAmJiBpc0hUTUxTcGFjZSgqZnJvbSkpIHsKKyAgICAgICAgICAg
IGlmICgqZnJvbSAhPSAnICcpCisgICAgICAgICAgICAgICAgY2hhbmdlZFRvU3BhY2UgPSB0cnVl
OworICAgICAgICAgICAgZnJvbSsrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChmcm9tICE9
IGZyb21lbmQgJiYgIWlzSFRNTFNwYWNlKCpmcm9tKSkKKyAgICAgICAgICAgIHRvW291dGMrK10g
PSAqZnJvbSsrOworICAgICAgICBpZiAoZnJvbSAhPSBmcm9tZW5kKQorICAgICAgICAgICAgdG9b
b3V0YysrXSA9ICcgJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
CisgICAgaWYgKG91dGMgPiAwICYmIHRvW291dGMgLSAxXSA9PSAnICcpCisgICAgICAgIG91dGMt
LTsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3V0YykgPT0gbGVuZ3RoICYmICFj
aGFuZ2VkVG9TcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGRhdGEuc2hyaW5r
KG91dGMpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoZGF0YSk7Cit9CisKIFN0cmluZyBz
ZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgLy8gQWNjb3JkaW5n
IHRvIEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBuIGFzIGEg
ZmxvYXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2Vy
SWRpb21zLmgJKHJldmlzaW9uIDg3Nzk4KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBAIGJvb2wg
aXNOb3RIVE1MU3BhY2UoVUNoYXIpOwogLy8gU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hp
dGVzcGFjZSBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uIAogU3RyaW5nIHN0
cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBTdHJpbmcmKTsKIAorLy8gVHJp
bSBsZWFkaW5nIGFuZCB0cmFpbGluZyBIVE1MU3BhY2UgYW5kIGNvbGxhcHNlIGludGVybmFsIEhU
TUwgc3BhY2VzLgorU3RyaW5nIHNpbXBsaWZ5SFRNTFdoaXRlU3BhY2UoY29uc3QgU3RyaW5nJik7
CisKIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24ncyBhbGdv
cml0aG0gdG8gY29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyBmb3IgbnVtYmVyIGFuZCByYW5n
ZSB0eXBlcy4KIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7CiAKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDg3ODAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVcGRhdGUgdGVzdHMgYW5kIHNraXAgbGlzdHMgdG8gcmVmbGVjdCBwYXNzaW5nIHRlc3QgZm9y
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc5OQorCisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5t
ZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9T
a2lwcGVkOgorCiAyMDExLTA2LTAxICBHYWJvciBMb2tpICA8bG9raUB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IENzYWJhIE9zenRyb2dvbsOhYy4KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KHJldmlzaW9uIDg3Nzk4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDMwLDcgKzIwMzAsNiBAQCBCVUdX
SzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0CiBCVUdXSzUwODU5IDogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQu
aHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9u
dC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zeXN0ZW0uaHRtbCA9IFRFWFQKLUJVR1dL
NDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5o
dG1sID0gVEVYVAogCiAvLyBUaGVzZSB0ZXN0cyBmYWlsIGV2ZXJ5d2hlcmUgd2UgdXNlIHNraWEg
YW5kIGFyZSBtb3N0IGxpa2VseSBza2lhIGJ1Z3MKIEJVR1dLNDU5OTEgTElOVVggV0lOIDogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5vYmplY3QudXBkYXRlLmh0bWwgPSBURVhUCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2aXNpb24gODc3OTgpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTA2NCw3ICsxMDY0
LDYgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UucwogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQuaHRt
bAogc3ZnL2ZpbHRlcnMvc291cmNlQWxwaGEuc3ZnCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZm9udC5wYXJzZS5zeXN0ZW0uaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1l
YXN1cmUud2lkdGguc3BhY2UuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy90b0RhdGFVUkwuanBl
Zy5hbHBoYS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzL3R5cGUucHJvdG90eXBlLmh0bWwKIApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCShyZXZpc2lvbiA4
Nzc5OCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTE3Niw3ICsxNzYsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQu
Zm9udC5wYXJzZS5pCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXpl
LnBlcmNlbnRhZ2UuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uu
c2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0
LmZvbnQucGFyc2Uuc3lzdGVtLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFz
dXJlLndpZHRoLnNwYWNlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcu
YWxwaGEuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCiAKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQu
bWVhc3VyZS53aWR0aC5zcGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRo
LnNwYWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc3OTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2Ut
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEgQEAKLUZhaWxlZCBhc3NlcnRp
b24gY3R4Lm1lYXN1cmVUZXh0KCdBIEInKS53aWR0aCA9PT0gMTUwIChnb3QgMjAwW251bWJlcl0s
IGV4cGVjdGVkIDE1MFtudW1iZXJdKQotRmFpbGVkIGFzc2VydGlvbiBjdHgubWVhc3VyZVRleHQo
J0EgXHgwOVx4MGFceDBjXHgwZCBceDA5XHgwYVx4MGNceDBkQicpLndpZHRoID09PSAxNTAgKGdv
dCA0NTBbbnVtYmVyXSwgZXhwZWN0ZWQgMTUwW251bWJlcl0pCi1GYWlsZWQgYXNzZXJ0aW9uIGN0
eC5tZWFzdXJlVGV4dCgnIEFCJykud2lkdGggPT09IDEwMCAoZ290IDE1MFtudW1iZXJdLCBleHBl
Y3RlZCAxMDBbbnVtYmVyXSkKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVUZXh0KCdBQiAn
KS53aWR0aCA9PT0gMTAwIChnb3QgMTUwW251bWJlcl0sIGV4cGVjdGVkIDEwMFtudW1iZXJdKQor
UGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDg3Nzk4KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTg2Nyw3
ICsxODY3LDYgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaQogY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmRlZmF1
bHQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJj
ZW50YWdlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3Rl
bS5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRyYW5zZm9ybWF0aW9uLnNldFRyYW5zZm9ybS5z
a2V3ZWQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50cmFuc2Zvcm1hdGlvbi50cmFuc2Zv
cm0uc2tld2VkLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>95607</attachid>
            <date>2011-06-01 08:40:28 -0700</date>
            <delta_ts>2011-06-01 08:40:59 -0700</delta_ts>
            <desc>Adds simplifyHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests.</desc>
            <filename>61799.3.patch</filename>
            <type>application/octet-stream</type>
            <size>15037</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBS
b2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxpZnlIVE1MV2hpdGVTcGFjZSB0byBjb2xsYXBzZSB3
aGl0ZXNwYWNlIHBlciB0aGUgSFRNTCBzcGVjIGFuZCBjYWxsIGl0IGluIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6bWVhc3VyZVRleHQoKSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dCgpLiBUaGlzIHByb3Blcmx5IGNvbGxhcHNlcyB0ZXh0IGluIHRoZXNlIG1ldGhvZHMs
IGFuZCBjYXVzZXMgdXMgdG8gcGFzcyBzZXZlcmFsIG9mIHBoaWxpcCdzIGNhbnZhcyB0ZXN0czsg
c2VlIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzk5CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxpZnlIVE1M
V2hpdGVTcGFjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgor
CiAyMDExLTA2LTAxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJl
dmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgpAQCAtMTg3NCw2ICsxODc1LDkgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleAogCiBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsK
KyAgICAvLyBOZWVkIHRvIHRyaW0gYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCisgICAgY29uc3Qg
U3RyaW5nJiBzdHIgPSBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKHRleHQpOworCiAgICAgUmVmUHRy
PFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAjaWYgUExB
VEZPUk0oUVQpCkBAIC0xODgyLDcgKzE4ODYsNyBAQCBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBD
YW52YXNSZW5kZXJpbmdDCiAgICAgRm9udDo6c2V0Q29kZVBhdGgoRm9udDo6Q29tcGxleCk7CiAj
ZW5kaWYKIAotICAgIG1ldHJpY3MtPnNldFdpZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVu
KHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSkpOworICAgIG1ldHJpY3MtPnNldFdp
ZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVuKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5n
dGgoKSkpKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZvbnQ6OnNldENvZGVQYXRoKG9sZENv
ZGVQYXRoKTsKQEAgLTE5MTIsOCArMTkxNiwxMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJCiAgICAgYm9vbCBpc1JUTCA9IGRpcmVjdGlvbiA9PSBSVEw7CiAgICAg
Ym9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBjb21wdXRlZFN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlIDogZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxl
bmd0aCgpOwotICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSB0ZXh0LmNoYXJhY3RlcnMoKTsKKyAg
ICAvLyBOZWVkIHRvIHRyaW0gYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCisgICAgY29uc3QgU3Ry
aW5nJiBzdHIgPSBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKHRleHQpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gc3RyLmNoYXJh
Y3RlcnMoKTsKICAgICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAw
LCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlKTsK
IAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dCBhdCB0aGUgY29ycmVjdCBwb2ludC4KQEAgLTE5
MzYsNyArMTk0Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBmb250LndpZHRoKFRl
eHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24s
IGRpcmVjdGlvbiwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lkdGgoVGV4
dFJ1bihzdHIsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBk
aXJlY3Rpb24sIG92ZXJyaWRlKSk7CiAKICAgICBUZXh0QWxpZ24gYWxpZ24gPSBzdGF0ZSgpLm1f
dGV4dEFsaWduOwogICAgIGlmIChhbGlnbiA9PSBTdGFydFRleHRBbGlnbikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCShyZXZpc2lv
biA4NzgwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU3LDYgKzU4LDQyIEBAIFN0cmluZyBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMKICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFkaW5n
U3BhY2VzLCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2VzKSk7
CiB9CiAKK1N0cmluZyBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBjb25zdCBV
Q2hhciogZnJvbSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGZyb21l
bmQgPSBmcm9tICsgbGVuZ3RoOworICAgIGludCBvdXRjID0gMDsKKyAgICBib29sIGNoYW5nZWRU
b1NwYWNlID0gZmFsc2U7CisKKyAgICBTdHJpbmdCdWZmZXIgZGF0YShsZW5ndGgpOworICAgIFVD
aGFyKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiBpc0hUTUxTcGFjZSgqZnJvbSkpIHsKKyAgICAg
ICAgICAgIGlmICgqZnJvbSAhPSAnICcpCisgICAgICAgICAgICAgICAgY2hhbmdlZFRvU3BhY2Ug
PSB0cnVlOworICAgICAgICAgICAgZnJvbSsrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChm
cm9tICE9IGZyb21lbmQgJiYgIWlzSFRNTFNwYWNlKCpmcm9tKSkKKyAgICAgICAgICAgIHRvW291
dGMrK10gPSAqZnJvbSsrOworICAgICAgICBpZiAoZnJvbSAhPSBmcm9tZW5kKQorICAgICAgICAg
ICAgdG9bb3V0YysrXSA9ICcgJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKG91dGMgPiAwICYmIHRvW291dGMgLSAxXSA9PSAnICcpCisgICAgICAg
IG91dGMtLTsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3V0YykgPT0gbGVuZ3Ro
ICYmICFjaGFuZ2VkVG9TcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGRhdGEu
c2hyaW5rKG91dGMpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoZGF0YSk7Cit9CisKIFN0
cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgLy8gQWNj
b3JkaW5nIHRvIEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBu
IGFzIGEgZmxvYXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBA
IGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIpOwogLy8gU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxp
bmcgd2hpdGVzcGFjZSBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uIAogU3Ry
aW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBTdHJpbmcmKTsKIAor
Ly8gVHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyBIVE1MU3BhY2UgYW5kIGNvbGxhcHNlIGludGVy
bmFsIEhUTUwgc3BhY2VzLgorU3RyaW5nIHNpbXBsaWZ5SFRNTFdoaXRlU3BhY2UoY29uc3QgU3Ry
aW5nJik7CisKIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24n
cyBhbGdvcml0aG0gdG8gY29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyBmb3IgbnVtYmVyIGFu
ZCByYW5nZSB0eXBlcy4KIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBSb2dlcnMgIDxw
ZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdGVzdHMgYW5kIHNraXAgbGlzdHMgdG8gcmVmbGVjdCBwYXNzaW5nIHRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc5OQorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJk
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
dGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLmVuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNl
Lm90aGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5z
cGFjZS5jb2xsYXBzZS5zdGFydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDExLTA2LTAxICBTaGlz
aGlyIEFncmF3YWwgIDxzaGlzaGlyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUb255IEdlbnRpbGNvcmUuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA4NzgwNikKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjAxOSwxOCArMjAxOSwxMyBAQCBCVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0CiBCVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRy
YXcuYmFzZWxpbmUubWlkZGxlLmh0bWwgPSBURVhUCiBCVUdXSzM4NDYzIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUudG9wLmh0bWwgPSBURVhUCiBCVUdXSzIwODY3
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5mb250ZmFj
ZS5odG1sID0gVEVYVAotQlVHV0s0NTk5MSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5k
cmF3LnNwYWNlLmNvbGxhcHNlLmVuZC5odG1sID0gVEVYVAogQlVHV0s0NTk5MSA6IGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm5vbnNwYWNlLmh0bWwgPSBU
RVhUCi1CVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2Uu
Y29sbGFwc2Uub3RoZXIuaHRtbCA9IFRFWFQKLUJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS5odG1sID0gVEVYVAotQlVHV0s0
NTk5MSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0
YXJ0Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0
LmZvbnQucGFyc2UuYmFzaWMuaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sID0g
VEVYVAogQlVHV0s1MDg1OSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNl
LnNpemUucGVyY2VudGFnZS5kZWZhdWx0Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5IDogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmh0bWwgPSBU
RVhUCiBCVUdXSzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uu
c3lzdGVtLmh0bWwgPSBURVhUCi1CVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50
ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UuaHRtbCA9IFRFWFQKIAogLy8gVGhlc2UgdGVzdHMgZmFp
bCBldmVyeXdoZXJlIHdlIHVzZSBza2lhIGFuZCBhcmUgbW9zdCBsaWtlbHkgc2tpYSBidWdzCiBC
VUdXSzQ1OTkxIExJTlVYIFdJTiA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQub2Jq
ZWN0LnVwZGF0ZS5odG1sID0gVEVYVApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJl
dmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTIsMTEgKzEwNTIsNyBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5iYXNlbGluCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGlu
ZS5taWRkbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUu
dG9wLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
Zm9udGZhY2UuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29s
bGFwc2UuZW5kLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNv
bGxhcHNlLm5vbnNwYWNlLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNw
YWNlLmNvbGxhcHNlLm90aGVyLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3
LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5k
cmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5mb250LnBhcnNlLmJhc2ljLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250
LnBhcnNlLmNvbXBsZXguaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFy
c2UuaW52YWxpZC5odG1sCkBAIC0xMDY0LDcgKzEwNjAsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnRleHQuZm9udC5wYXJzZS5zCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5w
YXJzZS5zaXplLnBlcmNlbnRhZ2UuZGVmYXVsdC5odG1sCiBzdmcvZmlsdGVycy9zb3VyY2VBbHBo
YS5zdmcKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1sZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDE4ICsxNjUs
MTMgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbgogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUubWlkZGxlLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLnRvcC5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmZvbnRmYWNlLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLmVuZC5odG1sCiBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5ub25zcGFjZS5odG1sCi1jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5vdGhlci5odG1sCi1j
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zdGFydC5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5iYXNpYy5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnNpemUucGVyY2VudGFnZS5kZWZhdWx0
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5k
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotRmFpbGVkIGFzc2VydGlvbjogZ290IHBpeGVs
IFsyNTUsMCwwLDI1NV0gYXQgKDc1LDI1KSwgZXhwZWN0ZWQgWzAsMjU1LDAsMjU1XSArLy0gMgor
UGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uub3RoZXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5vdGhlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3ODA2
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwyICsxIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBh
dCAoMjUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCi1GYWlsZWQgYXNzZXJ0aW9u
OiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBhdCAoNzUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwy
NTVdICsvLSAyCitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSww
LDAsMjU1XSBhdCAoMjUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCitQYXNzZWQK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zdGFydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3
LnNwYWNlLmNvbGxhcHNlLnN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcu
c3BhY2UuY29sbGFwc2Uuc3RhcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsx
IEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBhdCAoMjUsMjUp
LCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCitQYXNzZWQKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5z
cGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEgQEAKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVU
ZXh0KCdBIEInKS53aWR0aCA9PT0gMTUwIChnb3QgMjAwW251bWJlcl0sIGV4cGVjdGVkIDE1MFtu
dW1iZXJdKQotRmFpbGVkIGFzc2VydGlvbiBjdHgubWVhc3VyZVRleHQoJ0EgXHgwOVx4MGFceDBj
XHgwZCBceDA5XHgwYVx4MGNceDBkQicpLndpZHRoID09PSAxNTAgKGdvdCA0NTBbbnVtYmVyXSwg
ZXhwZWN0ZWQgMTUwW251bWJlcl0pCi1GYWlsZWQgYXNzZXJ0aW9uIGN0eC5tZWFzdXJlVGV4dCgn
IEFCJykud2lkdGggPT09IDEwMCAoZ290IDE1MFtudW1iZXJdLCBleHBlY3RlZCAxMDBbbnVtYmVy
XSkKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVUZXh0KCdBQiAnKS53aWR0aCA9PT0gMTAw
IChnb3QgMTUwW251bWJlcl0sIGV4cGVjdGVkIDEwMFtudW1iZXJdKQorUGFzc2VkCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTg1NiwxOCArMTg1NiwxMyBAQCBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS50b3AuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5mb250ZmFjZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbAotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLmh0bWwKIGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm5vbnNwYWNlLmh0bWwKLWNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLmh0bWwKLWNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwKLWNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0Lmh0bWwK
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmJhc2ljLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXguaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sCiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuZGVmYXVsdC5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRt
bAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLmh0bWwKLWNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudHJhbnNmb3JtYXRpb24uc2V0VHJhbnNmb3JtLnNrZXdlZC5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybS5za2V3ZWQu
aHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95608</attachid>
            <date>2011-06-01 08:40:59 -0700</date>
            <delta_ts>2011-06-01 09:29:36 -0700</delta_ts>
            <desc>Adds simplifyHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests</desc>
            <filename>61799.3.patch</filename>
            <type>text/plain</type>
            <size>15037</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBS
b2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxpZnlIVE1MV2hpdGVTcGFjZSB0byBjb2xsYXBzZSB3
aGl0ZXNwYWNlIHBlciB0aGUgSFRNTCBzcGVjIGFuZCBjYWxsIGl0IGluIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6bWVhc3VyZVRleHQoKSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dCgpLiBUaGlzIHByb3Blcmx5IGNvbGxhcHNlcyB0ZXh0IGluIHRoZXNlIG1ldGhvZHMs
IGFuZCBjYXVzZXMgdXMgdG8gcGFzcyBzZXZlcmFsIG9mIHBoaWxpcCdzIGNhbnZhcyB0ZXN0czsg
c2VlIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzk5CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxpZnlIVE1M
V2hpdGVTcGFjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgor
CiAyMDExLTA2LTAxICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAJKHJl
dmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2lu
Y2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIkltYWdlRGF0YS5oIgpAQCAtMTg3NCw2ICsxODc1LDkgQEAgdm9pZCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleAogCiBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKIHsK
KyAgICAvLyBOZWVkIHRvIHRyaW0gYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCisgICAgY29uc3Qg
U3RyaW5nJiBzdHIgPSBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKHRleHQpOworCiAgICAgUmVmUHRy
PFRleHRNZXRyaWNzPiBtZXRyaWNzID0gVGV4dE1ldHJpY3M6OmNyZWF0ZSgpOwogCiAjaWYgUExB
VEZPUk0oUVQpCkBAIC0xODgyLDcgKzE4ODYsNyBAQCBQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBD
YW52YXNSZW5kZXJpbmdDCiAgICAgRm9udDo6c2V0Q29kZVBhdGgoRm9udDo6Q29tcGxleCk7CiAj
ZW5kaWYKIAotICAgIG1ldHJpY3MtPnNldFdpZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVu
KHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSkpOworICAgIG1ldHJpY3MtPnNldFdp
ZHRoKGFjY2Vzc0ZvbnQoKS53aWR0aChUZXh0UnVuKHN0ci5jaGFyYWN0ZXJzKCksIHN0ci5sZW5n
dGgoKSkpKTsKIAogI2lmIFBMQVRGT1JNKFFUKQogICAgIEZvbnQ6OnNldENvZGVQYXRoKG9sZENv
ZGVQYXRoKTsKQEAgLTE5MTIsOCArMTkxNiwxMCBAQCB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRDo6ZHJhd1RleHRJCiAgICAgYm9vbCBpc1JUTCA9IGRpcmVjdGlvbiA9PSBSVEw7CiAgICAg
Ym9vbCBvdmVycmlkZSA9IGNvbXB1dGVkU3R5bGUgPyBjb21wdXRlZFN0eWxlLT51bmljb2RlQmlk
aSgpID09IE92ZXJyaWRlIDogZmFsc2U7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSB0ZXh0Lmxl
bmd0aCgpOwotICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSB0ZXh0LmNoYXJhY3RlcnMoKTsKKyAg
ICAvLyBOZWVkIHRvIHRyaW0gYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2UuCisgICAgY29uc3QgU3Ry
aW5nJiBzdHIgPSBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKHRleHQpOworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nID0gc3RyLmNoYXJh
Y3RlcnMoKTsKICAgICBUZXh0UnVuIHRleHRSdW4oc3RyaW5nLCBsZW5ndGgsIGZhbHNlLCAwLCAw
LCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlKTsK
IAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4dCBhdCB0aGUgY29ycmVjdCBwb2ludC4KQEAgLTE5
MzYsNyArMTk0Miw3IEBAIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3VGV4dEkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgZmxvYXQgd2lkdGggPSBmb250LndpZHRoKFRl
eHRSdW4odGV4dCwgZmFsc2UsIDAsIDAsIFRleHRSdW46OkFsbG93VHJhaWxpbmdFeHBhbnNpb24s
IGRpcmVjdGlvbiwgb3ZlcnJpZGUpKTsKKyAgICBmbG9hdCB3aWR0aCA9IGZvbnQud2lkdGgoVGV4
dFJ1bihzdHIsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhwYW5zaW9uLCBk
aXJlY3Rpb24sIG92ZXJyaWRlKSk7CiAKICAgICBUZXh0QWxpZ24gYWxpZ24gPSBzdGF0ZSgpLm1f
dGV4dEFsaWduOwogICAgIGlmIChhbGlnbiA9PSBTdGFydFRleHRBbGlnbikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCShyZXZpc2lv
biA4NzgwNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvZHRvYS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21p
Y1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1ZmZlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU3LDYgKzU4LDQyIEBAIFN0cmluZyBzdHJpcExlYWRpbmdBbmRU
cmFpbGluZ0hUTUxTcGFjZXMKICAgICByZXR1cm4gc3RyaW5nLnN1YnN0cmluZyhudW1MZWFkaW5n
U3BhY2VzLCBsZW5ndGggLSAobnVtTGVhZGluZ1NwYWNlcyArIG51bVRyYWlsaW5nU3BhY2VzKSk7
CiB9CiAKK1N0cmluZyBzaW1wbGlmeUhUTUxXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKKyAgICBjb25zdCBV
Q2hhciogZnJvbSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGZyb21l
bmQgPSBmcm9tICsgbGVuZ3RoOworICAgIGludCBvdXRjID0gMDsKKyAgICBib29sIGNoYW5nZWRU
b1NwYWNlID0gZmFsc2U7CisKKyAgICBTdHJpbmdCdWZmZXIgZGF0YShsZW5ndGgpOworICAgIFVD
aGFyKiB0byA9IGRhdGEuY2hhcmFjdGVycygpOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAg
ICAgd2hpbGUgKGZyb20gIT0gZnJvbWVuZCAmJiBpc0hUTUxTcGFjZSgqZnJvbSkpIHsKKyAgICAg
ICAgICAgIGlmICgqZnJvbSAhPSAnICcpCisgICAgICAgICAgICAgICAgY2hhbmdlZFRvU3BhY2Ug
PSB0cnVlOworICAgICAgICAgICAgZnJvbSsrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChm
cm9tICE9IGZyb21lbmQgJiYgIWlzSFRNTFNwYWNlKCpmcm9tKSkKKyAgICAgICAgICAgIHRvW291
dGMrK10gPSAqZnJvbSsrOworICAgICAgICBpZiAoZnJvbSAhPSBmcm9tZW5kKQorICAgICAgICAg
ICAgdG9bb3V0YysrXSA9ICcgJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorCisgICAgaWYgKG91dGMgPiAwICYmIHRvW291dGMgLSAxXSA9PSAnICcpCisgICAgICAg
IG91dGMtLTsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1bnNpZ25lZD4ob3V0YykgPT0gbGVuZ3Ro
ICYmICFjaGFuZ2VkVG9TcGFjZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKKworICAgIGRhdGEu
c2hyaW5rKG91dGMpOworCisgICAgcmV0dXJuIFN0cmluZzo6YWRvcHQoZGF0YSk7Cit9CisKIFN0
cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSBudW1iZXIpCiB7CiAgICAgLy8gQWNj
b3JkaW5nIHRvIEhUTUw1LCAidGhlIGJlc3QgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlciBu
IGFzIGEgZmxvYXRpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDg3ODA2KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw5IEBA
IGJvb2wgaXNOb3RIVE1MU3BhY2UoVUNoYXIpOwogLy8gU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxp
bmcgd2hpdGVzcGFjZSBhcyBkZWZpbmVkIGJ5IHRoZSBIVE1MIHNwZWNpZmljYXRpb24uIAogU3Ry
aW5nIHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyhjb25zdCBTdHJpbmcmKTsKIAor
Ly8gVHJpbSBsZWFkaW5nIGFuZCB0cmFpbGluZyBIVE1MU3BhY2UgYW5kIGNvbGxhcHNlIGludGVy
bmFsIEhUTUwgc3BhY2VzLgorU3RyaW5nIHNpbXBsaWZ5SFRNTFdoaXRlU3BhY2UoY29uc3QgU3Ry
aW5nJik7CisKIC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24n
cyBhbGdvcml0aG0gdG8gY29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyBmb3IgbnVtYmVyIGFu
ZCByYW5nZSB0eXBlcy4KIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7CiAK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBSb2dlcnMgIDxw
ZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVcGRhdGUgdGVzdHMgYW5kIHNraXAgbGlzdHMgdG8gcmVmbGVjdCBwYXNzaW5nIHRl
c3QgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc5OQorCisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJk
L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQu
dGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLmVuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNl
Lm90aGVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5z
cGFjZS5jb2xsYXBzZS5zdGFydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDExLTA2LTAxICBTaGlz
aGlyIEFncmF3YWwgIDxzaGlzaGlyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBUb255IEdlbnRpbGNvcmUuCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA4NzgwNikKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjAxOSwxOCArMjAxOSwxMyBAQCBCVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0CiBCVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRy
YXcuYmFzZWxpbmUubWlkZGxlLmh0bWwgPSBURVhUCiBCVUdXSzM4NDYzIDogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUudG9wLmh0bWwgPSBURVhUCiBCVUdXSzIwODY3
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5mb250ZmFj
ZS5odG1sID0gVEVYVAotQlVHV0s0NTk5MSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5k
cmF3LnNwYWNlLmNvbGxhcHNlLmVuZC5odG1sID0gVEVYVAogQlVHV0s0NTk5MSA6IGNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm5vbnNwYWNlLmh0bWwgPSBU
RVhUCi1CVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2Uu
Y29sbGFwc2Uub3RoZXIuaHRtbCA9IFRFWFQKLUJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS5odG1sID0gVEVYVAotQlVHV0s0
NTk5MSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0
YXJ0Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0
LmZvbnQucGFyc2UuYmFzaWMuaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5
IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sID0g
VEVYVAogQlVHV0s1MDg1OSA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNl
LnNpemUucGVyY2VudGFnZS5kZWZhdWx0Lmh0bWwgPSBURVhUCiBCVUdXSzUwODU5IDogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmh0bWwgPSBU
RVhUCiBCVUdXSzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uu
c3lzdGVtLmh0bWwgPSBURVhUCi1CVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50
ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UuaHRtbCA9IFRFWFQKIAogLy8gVGhlc2UgdGVzdHMgZmFp
bCBldmVyeXdoZXJlIHdlIHVzZSBza2lhIGFuZCBhcmUgbW9zdCBsaWtlbHkgc2tpYSBidWdzCiBC
VUdXSzQ1OTkxIExJTlVYIFdJTiA6IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQuZ3JhZGllbnQub2Jq
ZWN0LnVwZGF0ZS5odG1sID0gVEVYVApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJl
dmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTEwNTIsMTEgKzEwNTIsNyBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5iYXNlbGluCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGlu
ZS5taWRkbGUuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUu
dG9wLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGgu
Zm9udGZhY2UuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29s
bGFwc2UuZW5kLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNv
bGxhcHNlLm5vbnNwYWNlLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNw
YWNlLmNvbGxhcHNlLm90aGVyLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3
LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwKLWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5k
cmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5mb250LnBhcnNlLmJhc2ljLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250
LnBhcnNlLmNvbXBsZXguaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFy
c2UuaW52YWxpZC5odG1sCkBAIC0xMDY0LDcgKzEwNjAsNiBAQCBjYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnRleHQuZm9udC5wYXJzZS5zCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5w
YXJzZS5zaXplLnBlcmNlbnRhZ2UuZGVmYXVsdC5odG1sCiBzdmcvZmlsdGVycy9zb3VyY2VBbHBo
YS5zdmcKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMtbGVvcGFyZC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1sZW9wYXJkL1NraXBwZWQJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWxlb3BhcmQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDE4ICsxNjUs
MTMgQEAgY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbgogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUubWlkZGxlLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLnRvcC5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmZvbnRmYWNlLmh0bWwKLWNhbnZhcy9waGls
aXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLmVuZC5odG1sCiBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5ub25zcGFjZS5odG1sCi1jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5vdGhlci5odG1sCi1j
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zdGFydC5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5iYXNpYy5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5jb21wbGV4Lmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmludmFsaWQuaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnNpemUucGVyY2VudGFnZS5kZWZhdWx0
Lmh0bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnN5c3RlbS5odG1s
Ci1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzL3RvRGF0YVVSTC5qcGVnLmFscGhhLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvdHlwZS5wcm90b3R5cGUuaHRtbAogCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5k
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMSArMSBAQAotRmFpbGVkIGFzc2VydGlvbjogZ290IHBpeGVs
IFsyNTUsMCwwLDI1NV0gYXQgKDc1LDI1KSwgZXhwZWN0ZWQgWzAsMjU1LDAsMjU1XSArLy0gMgor
UGFzc2VkCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0
cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uub3RoZXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5vdGhlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3ODA2
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMSwyICsxIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBh
dCAoMjUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCi1GYWlsZWQgYXNzZXJ0aW9u
OiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBhdCAoNzUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwy
NTVdICsvLSAyCitQYXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xICsxIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSww
LDAsMjU1XSBhdCAoMjUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCitQYXNzZWQK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zdGFydC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3
LnNwYWNlLmNvbGxhcHNlLnN0YXJ0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcu
c3BhY2UuY29sbGFwc2Uuc3RhcnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xICsx
IEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwgWzI1NSwwLDAsMjU1XSBhdCAoMjUsMjUp
LCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCitQYXNzZWQKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5z
cGFjZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gODc4MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEgQEAKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVU
ZXh0KCdBIEInKS53aWR0aCA9PT0gMTUwIChnb3QgMjAwW251bWJlcl0sIGV4cGVjdGVkIDE1MFtu
dW1iZXJdKQotRmFpbGVkIGFzc2VydGlvbiBjdHgubWVhc3VyZVRleHQoJ0EgXHgwOVx4MGFceDBj
XHgwZCBceDA5XHgwYVx4MGNceDBkQicpLndpZHRoID09PSAxNTAgKGdvdCA0NTBbbnVtYmVyXSwg
ZXhwZWN0ZWQgMTUwW251bWJlcl0pCi1GYWlsZWQgYXNzZXJ0aW9uIGN0eC5tZWFzdXJlVGV4dCgn
IEFCJykud2lkdGggPT09IDEwMCAoZ290IDE1MFtudW1iZXJdLCBleHBlY3RlZCAxMDBbbnVtYmVy
XSkKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVUZXh0KCdBQiAnKS53aWR0aCA9PT0gMTAw
IChnb3QgMTUwW251bWJlcl0sIGV4cGVjdGVkIDEwMFtudW1iZXJdKQorUGFzc2VkCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDg3ODA2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMTg1NiwxOCArMTg1NiwxMyBAQCBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS50b3AuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5mb250ZmFjZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5mb250ZmFjZS5ub3RpbnBhZ2UuaHRtbAotY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLmh0bWwKIGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm5vbnNwYWNlLmh0bWwKLWNhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLmh0bWwKLWNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwKLWNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0Lmh0bWwK
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmJhc2ljLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXguaHRtbAogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sCiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuZGVmYXVsdC5odG1sCiBj
YW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRt
bAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLmh0bWwKLWNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwKIGNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudHJhbnNmb3JtYXRpb24uc2V0VHJhbnNmb3JtLnNrZXdlZC5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRyYW5zZm9ybWF0aW9uLnRyYW5zZm9ybS5za2V3ZWQu
aHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCg==
</data>
<flag name="review"
          id="89136"
          type_id="1"
          status="-"
          setter="darin"
    />
    <flag name="commit-queue"
          id="89137"
          type_id="3"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95919</attachid>
            <date>2011-06-03 08:48:45 -0700</date>
            <delta_ts>2011-06-03 08:48:45 -0700</delta_ts>
            <desc>Adds replaceHTMLWhiteSpace and call it in drawText as well as measureText, which makes us pass 5 of Philip&apos;s canvas tests</desc>
            <filename>61799.4.patch</filename>
            <type>text/plain</type>
            <size>14922</size>
            <attacher name="Philip Rogers">pdr</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MDE1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBS
b2dlcnMgIDxwZHJAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgc2ltcGxpZnlIVE1MV2hpdGVTcGFjZSB0byBjb2xsYXBzZSB3
aGl0ZXNwYWNlIHBlciB0aGUgSFRNTCBzcGVjIGFuZCBjYWxsIGl0IGluIENhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyRDo6bWVhc3VyZVRleHQoKSBhbmQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpk
cmF3VGV4dCgpLiBUaGlzIHByb3Blcmx5IGNvbGxhcHNlcyB0ZXh0IGluIHRoZXNlIG1ldGhvZHMs
IGFuZCBjYXVzZXMgdXMgdG8gcGFzcyBzZXZlcmFsIG9mIHBoaWxpcCdzIGNhbnZhcyB0ZXN0czsg
c2VlIGJ1ZzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxNzk5CisK
KyAgICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVu
ZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2ltcGxpZnlIVE1M
V2hpdGVTcGFjZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5oOgor
CiAyMDExLTA2LTAzICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJELmNwcAkocmV2aXNpb24gODgwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBACiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCkBAIC0xODcyLDggKzE4NzMsMTEgQEAgdm9p
ZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQ6OnN0cm9rZVRleAogICAgIGRyYXdUZXh0SW50ZXJu
YWwodGV4dCwgeCwgeSwgZmFsc2UsIG1heFdpZHRoLCB0cnVlKTsKIH0KIAotUGFzc1JlZlB0cjxU
ZXh0TWV0cmljcz4gQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjptZWFzdXJlVGV4dChjb25zdCBT
dHJpbmcmIHRleHQpCitQYXNzUmVmUHRyPFRleHRNZXRyaWNzPiBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkQ6Om1lYXN1cmVUZXh0KGNvbnN0IFN0cmluZyYgcmF3VGV4dCkKIHsKKyAgICAvLyBOZWVk
IHRvIHJlcGxhY2UgYW5kIHNpbXBsaWZ5IChjb2xsYXBzZSkgd2hpdGVzcGFjZS4KKyAgICBjb25z
dCBTdHJpbmcmIHRleHQgPSByZXBsYWNlSFRNTFdoaXRlU3BhY2UocmF3VGV4dCkuc2ltcGxpZnlX
aGl0ZVNwYWNlKCk7CisKICAgICBSZWZQdHI8VGV4dE1ldHJpY3M+IG1ldHJpY3MgPSBUZXh0TWV0
cmljczo6Y3JlYXRlKCk7CiAKICNpZiBQTEFURk9STShRVCkKQEAgLTE4OTEsNyArMTg5NSw3IEBA
IFBhc3NSZWZQdHI8VGV4dE1ldHJpY3M+IENhbnZhc1JlbmRlcmluZ0MKICAgICByZXR1cm4gbWV0
cmljcy5yZWxlYXNlKCk7CiB9CiAKLXZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEOjpkcmF3
VGV4dEludGVybmFsKGNvbnN0IFN0cmluZyYgdGV4dCwgZmxvYXQgeCwgZmxvYXQgeSwgYm9vbCBm
aWxsLCBmbG9hdCAvKm1heFdpZHRoKi8sIGJvb2wgLyp1c2VNYXhXaWR0aCovKQordm9pZCBDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SW50ZXJuYWwoY29uc3QgU3RyaW5nJiByYXdU
ZXh0LCBmbG9hdCB4LCBmbG9hdCB5LCBib29sIGZpbGwsIGZsb2F0IC8qbWF4V2lkdGgqLywgYm9v
bCAvKnVzZU1heFdpZHRoKi8pCiB7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBjID0gZHJhd2luZ0Nv
bnRleHQoKTsKICAgICBpZiAoIWMpCkBAIC0xOTEyLDkgKzE5MTYsMTEgQEAgdm9pZCBDYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQ6OmRyYXdUZXh0SQogICAgIGJvb2wgaXNSVEwgPSBkaXJlY3Rpb24g
PT0gUlRMOwogICAgIGJvb2wgb3ZlcnJpZGUgPSBjb21wdXRlZFN0eWxlID8gY29tcHV0ZWRTdHls
ZS0+dW5pY29kZUJpZGkoKSA9PSBPdmVycmlkZSA6IGZhbHNlOwogCisgICAgLy8gTmVlZCB0byBy
ZXBsYWNlIGFuZCBzaW1wbGlmeSAoY29sbGFwc2UpIHdoaXRlc3BhY2UuCisgICAgY29uc3QgU3Ry
aW5nJiB0ZXh0ID0gcmVwbGFjZUhUTUxXaGl0ZVNwYWNlKHJhd1RleHQpLnNpbXBsaWZ5V2hpdGVT
cGFjZSgpOworCiAgICAgdW5zaWduZWQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKLSAgICBjb25z
dCBVQ2hhciogc3RyaW5nID0gdGV4dC5jaGFyYWN0ZXJzKCk7Ci0gICAgVGV4dFJ1biB0ZXh0UnVu
KHN0cmluZywgbGVuZ3RoLCBmYWxzZSwgMCwgMCwgVGV4dFJ1bjo6QWxsb3dUcmFpbGluZ0V4cGFu
c2lvbiwgZGlyZWN0aW9uLCBvdmVycmlkZSk7CisgICAgVGV4dFJ1biB0ZXh0UnVuKHRleHQuY2hh
cmFjdGVycygpLCBsZW5ndGgsIGZhbHNlLCAwLCAwLCBUZXh0UnVuOjpBbGxvd1RyYWlsaW5nRXhw
YW5zaW9uLCBkaXJlY3Rpb24sIG92ZXJyaWRlKTsKIAogICAgIC8vIERyYXcgdGhlIGl0ZW0gdGV4
dCBhdCB0aGUgY29ycmVjdCBwb2ludC4KICAgICBGbG9hdFBvaW50IGxvY2F0aW9uKHgsIHkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5j
cHAJKHJldmlzaW9uIDg4MDE1KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
IDx3dGYvTWF0aEV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi9kdG9hLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVmZmVyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsNiArNTgsMzAgQEAgU3RyaW5nIHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcwogICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5n
KG51bUxlYWRpbmdTcGFjZXMsIGxlbmd0aCAtIChudW1MZWFkaW5nU3BhY2VzICsgbnVtVHJhaWxp
bmdTcGFjZXMpKTsKIH0KIAorY29uc3QgU3RyaW5nIHJlcGxhY2VIVE1MV2hpdGVTcGFjZShjb25z
dCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBjb25zdCBVQ2hhciogc3RyaW5nQ2hhcmFjdGVycyA9
IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0
aCgpOworICAgIGJvb2wgaGFzQ2hhbmdlZFNwYWNlID0gZmFsc2U7CisgICAgVUNoYXIqIHJlcGxh
Y2VkQ2hhcmFjdGVyczsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5ndGg7ICsr
aSkgeworICAgICAgICBpZiAoc3RyaW5nQ2hhcmFjdGVyc1tpXSAhPSAnICcgJiYgaXNIVE1MU3Bh
Y2Uoc3RyaW5nQ2hhcmFjdGVyc1tpXSkpIHsKKyAgICAgICAgICAgIGlmICghaGFzQ2hhbmdlZFNw
YWNlKSB7CisgICAgICAgICAgICAgICAgcmVwbGFjZWRDaGFyYWN0ZXJzID0gbmV3IFVDaGFyW2xl
bmd0aF07CisgICAgICAgICAgICAgICAgbWVtY3B5KHJlcGxhY2VkQ2hhcmFjdGVycywgc3RyaW5n
Q2hhcmFjdGVycywgbGVuZ3RoICogc2l6ZW9mKFVDaGFyKSk7CisgICAgICAgICAgICAgICAgaGFz
Q2hhbmdlZFNwYWNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcGxhY2Vk
Q2hhcmFjdGVyc1tpXSA9ICcgJzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChoYXNDaGFu
Z2VkU3BhY2UpCisgICAgICAgIHJldHVybiBTdHJpbmcocmVwbGFjZWRDaGFyYWN0ZXJzLCBsZW5n
dGgpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHN0cmluZzsKK30KKwogU3RyaW5nIHNlcmlh
bGl6ZUZvck51bWJlclR5cGUoZG91YmxlIG51bWJlcikKIHsKICAgICAvLyBBY2NvcmRpbmcgdG8g
SFRNTDUsICJ0aGUgYmVzdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbnVtYmVyIG4gYXMgYSBmbG9h
dGluZwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlv
bXMuaAkocmV2aXNpb24gODgwMTUpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VySWRpb21zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDkgQEAgYm9vbCBpc05v
dEhUTUxTcGFjZShVQ2hhcik7CiAvLyBTdHJpcCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNw
YWNlIGFzIGRlZmluZWQgYnkgdGhlIEhUTUwgc3BlY2lmaWNhdGlvbi4gCiBTdHJpbmcgc3RyaXBM
ZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGNvbnN0IFN0cmluZyYpOwogCisvLyBSZXBsYWNl
IEhUTUwgd2hpdGUgc3BhY2UgY2hhcmFjdGVycyB3aXRoIHJlZ3VsYXIgc3BhY2UgY2hhcmFjdGVy
cy4KK2NvbnN0IFN0cmluZyByZXBsYWNlSFRNTFdoaXRlU3BhY2UoY29uc3QgU3RyaW5nJik7CisK
IC8vIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBIVE1MIHNwZWNpZmljYXRpb24ncyBhbGdvcml0
aG0gdG8gY29udmVydCBhIG51bWJlciB0byBhIHN0cmluZyBmb3IgbnVtYmVyIGFuZCByYW5nZSB0
eXBlcy4KIFN0cmluZyBzZXJpYWxpemVGb3JOdW1iZXJUeXBlKGRvdWJsZSk7CiAKSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDg4MDE1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDYtMDEgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGUgdGVzdHMgYW5kIHNraXAgbGlzdHMgdG8gcmVmbGVjdCBwYXNzaW5nIHRlc3QgZm9yIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTc5OQorCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3
LnNwYWNlLmNvbGxhcHNlLmVuZC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFj
L2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8y
ZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xs
YXBzZS5zdGFydC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjL2NhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDExLTA2LTAzICBZYWVsIEFoYXJvbiAg
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJv
aGRlIENocmlzdGlhbnNlbi4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDg4MDE1KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0yMDAzLDE4ICsyMDAzLDEzIEBAIEJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQKIEJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJh
dy5iYXNlbGluZS5taWRkbGUuaHRtbCA9IFRFWFQKIEJVR1dLMzg0NjMgOiBjYW52YXMvcGhpbGlw
L3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS50b3AuaHRtbCA9IFRFWFQKIEJVR1dLMjA4Njcg
OiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmZvbnRmYWNl
Lmh0bWwgPSBURVhUCi1CVUdXSzQ1OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRy
YXcuc3BhY2UuY29sbGFwc2UuZW5kLmh0bWwgPSBURVhUCiBCVUdXSzQ1OTkxIDogY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uubm9uc3BhY2UuaHRtbCA9IFRF
WFQKLUJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5j
b2xsYXBzZS5vdGhlci5odG1sID0gVEVYVAotQlVHV0s0NTk5MSA6IGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwgPSBURVhUCi1CVUdXSzQ1
OTkxIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3Rh
cnQuaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQu
Zm9udC5wYXJzZS5iYXNpYy5odG1sID0gVEVYVAogQlVHV0s1MDg1OSA6IGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXguaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkg
OiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkLmh0bWwgPSBU
RVhUCiBCVUdXSzUwODU5IDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uu
c2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQuaHRtbCA9IFRFWFQKIEJVR1dLNTA4NTkgOiBjYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRtbCA9IFRF
WFQKIEJVR1dLNTA4NTkgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5z
eXN0ZW0uaHRtbCA9IFRFWFQKLUJVR1dLNDU5OTEgOiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRl
eHQubWVhc3VyZS53aWR0aC5zcGFjZS5odG1sID0gVEVYVAogCiAvLyBUaGVzZSB0ZXN0cyBmYWls
IGV2ZXJ5d2hlcmUgd2UgdXNlIHNraWEgYW5kIGFyZSBtb3N0IGxpa2VseSBza2lhIGJ1Z3MKIEJV
R1dLNDU5OTEgTElOVVggV0lOIDogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC5ncmFkaWVudC5vYmpl
Y3QudXBkYXRlLmh0bWwgPSBURVhUCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkocmV2
aXNpb24gODgwMTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5OSwxMSArMTA5OSw3IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LmJhc2VsaW4KIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW5l
Lm1pZGRsZS5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS50
b3AuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuZmlsbC5tYXhXaWR0aC5m
b250ZmFjZS5odG1sCi1jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xs
YXBzZS5lbmQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29s
bGFwc2Uubm9uc3BhY2UuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3Bh
Y2UuY29sbGFwc2Uub3RoZXIuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcu
c3BhY2UuY29sbGFwc2Uuc3BhY2UuaHRtbAotY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRy
YXcuc3BhY2UuY29sbGFwc2Uuc3RhcnQuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0
LmZvbnQucGFyc2UuYmFzaWMuaHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQu
cGFyc2UuY29tcGxleC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJz
ZS5pbnZhbGlkLmh0bWwKQEAgLTExMTEsNyArMTEwNyw2IEBAIGNhbnZhcy9waGlsaXAvdGVzdHMv
MmQudGV4dC5mb250LnBhcnNlLnMKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBh
cnNlLnNpemUucGVyY2VudGFnZS5kZWZhdWx0Lmh0bWwKIHN2Zy9maWx0ZXJzL3NvdXJjZUFscGhh
LnN2ZwogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLmh0bWwK
LWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcuYWxwaGEuaHRtbAogY2FudmFzL3BoaWxp
cC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1sZW9wYXJkL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLWxlb3BhcmQvU2tpcHBlZAkocmV2aXNpb24gODgwMTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtbGVvcGFyZC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTggKzE2NSwx
MyBAQCBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluCiBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5iYXNlbGluZS5taWRkbGUuaHRtbAogY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuYmFzZWxpbmUudG9wLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQudGV4dC5kcmF3LmZpbGwubWF4V2lkdGguZm9udGZhY2UuaHRtbAotY2FudmFzL3BoaWxp
cC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2UuZW5kLmh0bWwKIGNhbnZhcy9waGls
aXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm5vbnNwYWNlLmh0bWwKLWNhbnZh
cy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLmh0bWwKLWNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLmh0bWwK
LWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0Lmh0
bWwKIGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmJhc2ljLmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLmNvbXBsZXguaHRtbAogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuaW52YWxpZC5odG1sCiBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zaXplLnBlcmNlbnRhZ2UuaHRtbAogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc2l6ZS5wZXJjZW50YWdlLmRlZmF1bHQu
aHRtbAogY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2Uuc3lzdGVtLmh0bWwK
LWNhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNwYWNlLmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvdG9EYXRhVVJMLmpwZWcuYWxwaGEuaHRtbAogY2FudmFzL3BoaWxp
cC90ZXN0cy90eXBlLnByb3RvdHlwZS5odG1sCiAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5lbmQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52
YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5lbmQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA4ODAxNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5lbmQtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xICsxIEBACi1GYWlsZWQgYXNzZXJ0aW9uOiBnb3QgcGl4ZWwg
WzI1NSwwLDAsMjU1XSBhdCAoNzUsMjUpLCBleHBlY3RlZCBbMCwyNTUsMCwyNTVdICsvLSAyCitQ
YXNzZWQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3Rz
LzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5vdGhlci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LnNwYWNlLmNvbGxhcHNlLm90aGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODgwMTUp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0
LmRyYXcuc3BhY2UuY29sbGFwc2Uub3RoZXItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDIgKzEgQEAKLUZhaWxlZCBhc3NlcnRpb246IGdvdCBwaXhlbCBbMjU1LDAsMCwyNTVdIGF0
ICgyNSwyNSksIGV4cGVjdGVkIFswLDI1NSwwLDI1NV0gKy8tIDIKLUZhaWxlZCBhc3NlcnRpb246
IGdvdCBwaXhlbCBbMjU1LDAsMCwyNTVdIGF0ICg3NSwyNSksIGV4cGVjdGVkIFswLDI1NSwwLDI1
NV0gKy8tIDIKK1Bhc3NlZApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9w
aGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnNwYWNlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA4ODAxNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5zcGFjZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEgKzEgQEAKLUZhaWxlZCBhc3NlcnRpb246IGdvdCBwaXhlbCBbMjU1LDAs
MCwyNTVdIGF0ICgyNSwyNSksIGV4cGVjdGVkIFswLDI1NSwwLDI1NV0gKy8tIDIKK1Bhc3NlZApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4
dC5kcmF3LnNwYWNlLmNvbGxhcHNlLnN0YXJ0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcu
c3BhY2UuY29sbGFwc2Uuc3RhcnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4ODAxNSkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZHJhdy5z
cGFjZS5jb2xsYXBzZS5zdGFydC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEgKzEg
QEAKLUZhaWxlZCBhc3NlcnRpb246IGdvdCBwaXhlbCBbMjU1LDAsMCwyNTVdIGF0ICgyNSwyNSks
IGV4cGVjdGVkIFswLDI1NSwwLDI1NV0gKy8tIDIKK1Bhc3NlZApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2NhbnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5tZWFzdXJlLndpZHRoLnNw
YWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA4ODAxNSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jYW52YXMv
cGhpbGlwL3Rlc3RzLzJkLnRleHQubWVhc3VyZS53aWR0aC5zcGFjZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSBAQAotRmFpbGVkIGFzc2VydGlvbiBjdHgubWVhc3VyZVRl
eHQoJ0EgQicpLndpZHRoID09PSAxNTAgKGdvdCAyMDBbbnVtYmVyXSwgZXhwZWN0ZWQgMTUwW251
bWJlcl0pCi1GYWlsZWQgYXNzZXJ0aW9uIGN0eC5tZWFzdXJlVGV4dCgnQSBceDA5XHgwYVx4MGNc
eDBkIFx4MDlceDBhXHgwY1x4MGRCJykud2lkdGggPT09IDE1MCAoZ290IDQ1MFtudW1iZXJdLCBl
eHBlY3RlZCAxNTBbbnVtYmVyXSkKLUZhaWxlZCBhc3NlcnRpb24gY3R4Lm1lYXN1cmVUZXh0KCcg
QUInKS53aWR0aCA9PT0gMTAwIChnb3QgMTUwW251bWJlcl0sIGV4cGVjdGVkIDEwMFtudW1iZXJd
KQotRmFpbGVkIGFzc2VydGlvbiBjdHgubWVhc3VyZVRleHQoJ0FCICcpLndpZHRoID09PSAxMDAg
KGdvdCAxNTBbbnVtYmVyXSwgZXhwZWN0ZWQgMTAwW251bWJlcl0pCitQYXNzZWQKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gODgwMTUpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEzLDE4ICsxOTEzLDEzIEBAIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5kcmF3LmJhc2VsaW4KIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQudGV4dC5kcmF3LmJhc2VsaW5lLnRvcC5odG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJk
LnRleHQuZHJhdy5maWxsLm1heFdpZHRoLmZvbnRmYWNlLmh0bWwKIGNhbnZhcy9waGlsaXAvdGVz
dHMvMmQudGV4dC5kcmF3LmZvbnRmYWNlLm5vdGlucGFnZS5odG1sCi1jYW52YXMvcGhpbGlwL3Rl
c3RzLzJkLnRleHQuZHJhdy5zcGFjZS5jb2xsYXBzZS5lbmQuaHRtbAogY2FudmFzL3BoaWxpcC90
ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uubm9uc3BhY2UuaHRtbAotY2FudmFzL3Bo
aWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uub3RoZXIuaHRtbAotY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3BhY2UuaHRtbAotY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmRyYXcuc3BhY2UuY29sbGFwc2Uuc3RhcnQuaHRtbAog
Y2FudmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuYmFzaWMuaHRtbAogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50ZXh0LmZvbnQucGFyc2UuY29tcGxleC5odG1sCiBjYW52YXMvcGhp
bGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5pbnZhbGlkLmh0bWwKIGNhbnZhcy9waGlsaXAv
dGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnNpemUucGVyY2VudGFnZS5kZWZhdWx0Lmh0bWwKIGNh
bnZhcy9waGlsaXAvdGVzdHMvMmQudGV4dC5mb250LnBhcnNlLnNpemUucGVyY2VudGFnZS5odG1s
CiBjYW52YXMvcGhpbGlwL3Rlc3RzLzJkLnRleHQuZm9udC5wYXJzZS5zeXN0ZW0uaHRtbAotY2Fu
dmFzL3BoaWxpcC90ZXN0cy8yZC50ZXh0Lm1lYXN1cmUud2lkdGguc3BhY2UuaHRtbAogY2FudmFz
L3BoaWxpcC90ZXN0cy8yZC50cmFuc2Zvcm1hdGlvbi5zZXRUcmFuc2Zvcm0uc2tld2VkLmh0bWwK
IGNhbnZhcy9waGlsaXAvdGVzdHMvMmQudHJhbnNmb3JtYXRpb24udHJhbnNmb3JtLnNrZXdlZC5o
dG1sCiBjYW52YXMvcGhpbGlwL3Rlc3RzL3R5cGUucHJvdG90eXBlLmh0bWwK
</data>

          </attachment>
      

    </bug>

</bugzilla>