<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>191736</bug_id>
          
          <creation_ts>2009-05-05 20:57:52 +0000</creation_ts>
          <short_desc>Twitter More button broken in Konqueror</short_desc>
          <delta_ts>2010-02-12 17:34:05 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>konqueror</product>
          <component>general</component>
          <version>unspecified</version>
          <rep_platform>unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Aaron Williams">aaronw</reporter>
          <assigned_to name="Konqueror Bugs">konqueror-bugs-null</assigned_to>
          <cc>aaronw</cc>
    
    <cc>germain</cc>
    
    <cc>kde.bugs</cc>
    
    <cc>kon_chr2000-linux</cc>
          
          <cf_commitlink></cf_commitlink>
          <cf_versionfixedin></cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752735</commentid>
    <comment_count>0</comment_count>
    <who name="Aaron Williams">aaronw</who>
    <bug_when>2009-05-05 20:57:52 +0000</bug_when>
    <thetext>Version:           4.2.2 (KDE 4.2.2) &quot;release 114&quot; (using 4.2.2 (KDE 4.2.2) &quot;release 114&quot;, KDE:KDE4:Factory:Desktop / openSUSE_11.0)
Compiler:          gcc
OS:                Linux (x86_64) release 2.6.25.20-0.1-default

When viewing entries on twitter.com the &quot;more&quot; button does not function. I have no problems with Firefox 3.0.10.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>766040</commentid>
    <comment_count>1</comment_count>
    <who name="Aaron Williams">aaronw</who>
    <bug_when>2009-05-28 04:12:36 +0000</bug_when>
    <thetext>I am seeing exactly the same behavior as described above. Additionally, the Update button is unresponsive. I have tried setting the user agent to Safari 2.0 and Firefox 2.0.8 and neither fixes the problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799084</commentid>
    <comment_count>2</comment_count>
      <attachid>35646</attachid>
    <who name="P B">kde.bugs</who>
    <bug_when>2009-07-26 18:40:02 +0000</bug_when>
    <thetext>Created attachment 35646
screengrab of &quot;more&quot; button, before and after pressing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>799085</commentid>
    <comment_count>3</comment_count>
    <who name="P B">kde.bugs</who>
    <bug_when>2009-07-26 18:40:48 +0000</bug_when>
    <thetext>Ditto on KDE 4.2.98 (4.3 RC3). The button as displayed switches from saying &quot;more&quot; to a rotating circular graphic, but nothing else happens, even after an hour or more. Tested on multiple Twitter accounts. I was not logged in to Twitter, I don&apos;t have an account. Attachment shows, above, un-pressed button, and below, the rotating circular graphical element after the button is pressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907281</commentid>
    <comment_count>4</comment_count>
    <who name="P B">kde.bugs</who>
    <bug_when>2010-01-28 13:26:16 +0000</bug_when>
    <thetext>Still broken in 4.3.5 (running on Kubuntu 9.10).

Amazed this is still showing as unconfirmed, it&apos;s simplicity itself to test. Go to any Twitter feed page, say http://twitter.com/stephenfry, scroll to the end of the page, and click the &quot;More&quot; button. Watch as nothing loads.

Please fix this, all it takes is one site a user needs regular access to to not work, and they will switch to another browser that does, e.g. Firefox. Twitter is one of the world&apos;s most popular websites these days, and so there is potential for losing a lot of users.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907350</commentid>
    <comment_count>5</comment_count>
    <who name="Maksim Orlovich">maksim</who>
    <bug_when>2010-01-28 16:44:23 +0000</bug_when>
    <thetext>If I recall correctly, this issue will go away once Twitter updates jQuery (and when a new version of it will be released). We can&apos;t really do anything sane to fix this, since the regexp it uses is simply too inefficient for the regular expression library we use to not run out of stack space on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907376</commentid>
    <comment_count>6</comment_count>
    <who name="P B">kde.bugs</who>
    <bug_when>2010-01-28 17:53:59 +0000</bug_when>
    <thetext>I see. So is this a problem with kjs or libpcre (or whatever the library is) then, as clearly other browsers are coping with this awful regexp? And the problem with kjs/library too deep rooted to fix?

Since we all know that the sites are never blamed for not working by the user if they know it works on their other computer/browser/at work/etc, it would still be great to fix this (and likely fixing it improves the library in other ways). Twitter aren&apos;t going to update without a reason, and this specific issue isn&apos;t an issue to them, just people who want to access Twitter via Konqueror.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907725</commentid>
    <comment_count>7</comment_count>
      <attachid>40337</attachid>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-29 06:12:06 +0000</bug_when>
    <thetext>Created attachment 40337
workaround

@Maksim : do you remember the workaround we discussed once?
I&apos;ll attach the last version of it (it is a bit simpler now), in case you want to consider adding it at some point.

I know this is not pleasing to consider, but I must say I&apos;ve seen the debug output of it (&quot;Pattern: xxx was rewritten to xxx&quot;) pass by while browsing an extremely worrying amount of times - and without it, my stack blows up at a measly 2048 chars :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>907786</commentid>
    <comment_count>8</comment_count>
      <attachid>40343</attachid>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-29 09:39:28 +0000</bug_when>
    <thetext>Created attachment 40343
ha, found back that old benchmark Maksim wrote, and tweaked it into a comparison/regression test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908596</commentid>
    <comment_count>9</comment_count>
    <who name="Maksim Orlovich">maksim</who>
    <bug_when>2010-01-30 21:07:55 +0000</bug_when>
    <thetext>You may be right, this may be the pragmatic thing to do. Are you confident 
that the patch gets the captures exactly the same, though, and that there isn&apos;t any escaping to consider or something?

(And man, running this comparison benchmark on Opera 10.10 is hilarious).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908873</commentid>
    <comment_count>10</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-31 06:59:34 +0000</bug_when>
    <thetext>&gt; Are you confident that the patch gets the captures exactly the same,

yes, very confident. I removed the handling of the one form that I coudn&apos;t find a strict equivalent to, i.e (.|/s)* : &quot;capture last char of zero or more&quot; (I think it is impossible to rewrite in an efficient form, but I may be missing something)

you can see that substrings equivalence is already tested by the benchmark.

ironic thing is those piss poor regexp writters certainly did not intend to capture the last character at all.

&gt;  and that there isn&apos;t any escaping to consider or something?

ouch, no, you are right, the patch is broken in that respect... [(.|/s)+] will be happily transformed. Will fix. Fortunately, we already have the parsing logic for that so it should be less painful than poking one&apos;s eye out ^^;

&gt; (And man, running this comparison benchmark on Opera 10.10 is hilarious).

Wow! indeed. Older versions did not show such dramatic differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908881</commentid>
    <comment_count>11</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-31 07:27:40 +0000</bug_when>
    <thetext>ahah, I&apos;m stupid.

(.|\s)* == (?:[\w\W]*([\w\W])|([\w\W])*)

it doesn&apos;t matter that the right side of the alternative is inefficient, since it will only match in the &apos;zero characters&apos; case :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908912</commentid>
    <comment_count>12</comment_count>
      <attachid>40407</attachid>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-31 10:27:59 +0000</bug_when>
    <thetext>Created attachment 40407
new patch, accounting for escapes and (.|\s)*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908918</commentid>
    <comment_count>13</comment_count>
      <attachid>40409</attachid>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-01-31 10:37:30 +0000</bug_when>
    <thetext>Created attachment 40409
modified version with some more tests

beware that expression R5 is so inefficient it will DOS all js engines.
chrome: Matching time for R5: 2079443ms :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911352</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Espy">kon_chr2000-linux</who>
    <bug_when>2010-02-04 16:40:00 +0000</bug_when>
    <thetext>This is a noob question, but how do I apply to workaround?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>913240</commentid>
    <comment_count>15</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-02-08 15:04:33 +0000</bug_when>
    <thetext>so barring any further comments, I&apos;ll be queuing the patch for commit in a few days..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915343</commentid>
    <comment_count>16</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-02-12 05:21:10 +0000</bug_when>
    <thetext>SVN commit 1088985 by ggarand:

rewrite a very common and extremely inefficient regular expression pattern
in a form that is equivalent but does not require a recursion.

this is several order of magnitude faster in any RE engine and prevents
libpcre from eating the stack.

BUG: 191736
CCBUG: 189904

 M  +78 -14    regexp.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&amp;revision=1088985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915736</commentid>
    <comment_count>17</comment_count>
    <who name="Germain Garand">germain</who>
    <bug_when>2010-02-12 17:34:05 +0000</bug_when>
    <thetext>SVN commit 1089179 by ggarand:

might want that too... even the dot is using such broken expressions!
----------
automatically merged revision 1088985:
rewrite a very common and extremely inefficient regular expression pattern
in a form that is equivalent but does not require a recursion.

this is several order of magnitude faster in any RE engine and prevents
libpcre from eating the stack.

BUG: 191736

 M  +78 -14    regexp.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&amp;revision=1089179</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>35646</attachid>
            <date>2009-07-26 18:40:02 +0000</date>
            <delta_ts>2009-07-26 18:40:02 +0000</delta_ts>
            <desc>screengrab of &quot;more&quot; button, before and after pressing</desc>
            <filename>more.png</filename>
            <type>image/png</type>
            <size>18860</size>
            <attacher name="P B">kde.bugs</attacher>
            
              <data encoding="base64">iVBORw0KGgoAAAANSUhEUgAAAlUAAAEmCAYAAABLWGVAAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A
/wD/oL2nkwAAAAlwSFlzAAAOTQAADiYBwNzaZQAAAAd0SU1FB9kHGhAlGeTfV/sAACAASURBVHja
7d15mBTVuT/wby29zQbDMiguCAFFE3fzxMRoJBovGo1GUUMiCorGYC7xqsQtaAwuMVGeKKhxiZi4
KxowcY0bbhe9UVFQyE8FV1aBWbu7umv5/VF1ak7VVPUyM8CA38/z8DBT09XdtZ16z3uWUtZ/ucZB
Dw0Y2AQiIiKirdWSxYvQv3+/Hr2Hyt1IRERE1HMMqoiIiIgYVBERERExqCIiIiJiUEVEREREnfS+
+KUWf/CB//Oeo0ZxOZdzOZdzOZdzOZcHlsu/9xUKp1QgIiKirzpOqUBERETURzCoIiIiImJQRURE
RMSgioiIiIhBFRERERExqCIiIiJiUEVERETEoIqIiIiIQRURERERMagiIiIiYlBFRERExKCKiIiI
iEEVERERETGoIiIiImJQRURERMSgioiIiIhBFRERERFVSu+LX2r58uU8MkRERFTWiBEjGFSVs8su
u/BMISIioliPPPJInwqq2PxHRERExKCKiIiIiEEVEREREYMqIiIiImJQRURERMSgioiIiIhBFRER
ERGDKiIiIiJiUEVERETEoIqIiIiIQRURERHRNk3nLiCiTaX2qpMAALOP+jmue+3vWNm2AbsOHIor
xvwU//vZf3Dv4gX4sqMFe283HLOP+jn2HDLMX/e5Fe/i9y/PxaLVK+A4DvbZfgQuPngcDhu+V5f3
v/v4/8HsNx7HkjWfoKNooOPShwAAr322FFe/NBf/XvkhCpaJPZp2wvnfPg4/3v1AHhwi6nXMVBHR
JvfiJ0vw+lnX4y/H/jeWrP0UJzz4e3zSshZvn/0n3HncVPx75Yf4+T9vhqIofkB13P1XQVNVLDln
FpZNvRkJVcNx91+F51a82+X9Z7/xOP589BSs/fXdyE2fC0VR8PKn7+PIe34H07Hw5tkz8dkFd2Lv
7YbjlEdn4r7FL/GgEBGDKiLa+lwxZjzqk2kctesB/rLLDx2PhlQGx40+EAoULFnziR9UXfPyXNiO
g2sOPxXb1w/A4Jp+uOqwU2A7Dn7/8lz/dcJNPzwbuw3aAYqiwHEcOI6DKxc8BNO2MHPsZOzYMAh1
iTSu+v4pAIA/vPpol/cgIuopNv8R0Sa3S/8hAIC0lvCXDW90l6lecGM5tv+3RauWAwC+MWSYHyR9
vWlnAMDbq5b7wZOw++CdACCw7K1VHwEAvnnreV2+z/INq7u8BxERgyoi6vPUiABGXubA6fX3F1b/
+m/ol6rhQSCiTV/WcRcQUV+zz/YjAADvrfnUX7ZkzScAgH29v5Wz//ZfAwC88sn7frbLtu3APyIi
BlVEtNWJyiTFZZcuPngcVEXBJc/djTXtzVjX0YLpz98HVVFw8SEnVvT+lx/6EyQ1HRf96694d83H
KFomPmv5Eve+uwCH/+0yHhAi6nVs/iOiPuew4Xth3vhL8fuX52KP2ecAAPbebjjmjb8Uh4/Yu6K+
UN/eaTSeP+1KXPvqozjqnt+h1chicG0/HDLs67hizHj2qSKiXqes/3JNj0uVAQObevVLLV++HLvs
sguPDtE2QFXdhLjc3FbpMjFCTx6pJ5rySq0XKORC7yGvy6CKaOv2yCOP4MQTT+yV91qyeBH69+/X
o/fos5kq0zR5thBtCzW3iGCm0mXhgKrU30sFSFHTJzCgIqLexuY/ItqkKu1LFRfklAt+KgmOGEAR
0Vc6qGKmioiIiLYmHP1HRERExKCKiIiIqG9g8x8RERFRL2CmioiIiIhBFREREVHfwOY/IiIiol7A
TBURERERgyoiIiKivoHNf0RERES9gJkqIiIiol7QZzNVCxYs4NEhIiIiBlU9MWLECIwYMYJHh4iI
iLYabP4jIiIiYlBFRERExKCKiIiIiEEVERERETGoIiIiImJQRURERMSgioiIiIhBFRERERExqCIi
IiJiUEVERETEoIqIiIiIQRURERERMagiIiIiYlBFRERExKCKiIiIiEEVERERETGoIiIiImJQRURE
RMSgioiIiIhBFRERERExqCIiIiJiUEVERETEoIqIiIiIQRURERERMagiIiIiYlBFRERExKCKiIiI
iBhUERERETGoIiIiImJQRURERMSgioiIiIgYVBERERExqCIiIiLqg5T1X65xuBuIiIiIeoaZKiIi
IiIGVUREREQMqoiIiIgYVBERERERgyoiIiIiBlVEREREDKqIiIiIGFQREREREYMqIiIiIgZVRERE
RAyqiIiIiBhUERERERGDKiIiIiIGVURERERbA7033mTAwCbuSSIiIvpKY6aKiIiIiEEVEREREYMq
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
ldzkJr6HPP1C+BlJccEQR9MQERHRZg+q4ibUlEfyiXmYLMvCgAEDUSgY/jw9YvKsutpaDNluKNLe
swTDRFCk6zoymUyXx9nENblxNA0RERFtFUFVpQGK6OeUSCSQyaS7BEViSoByzWpR8/bEBUKLP/jA
/3nPUaO4nMu5nMu5nMu5nMsDy+XftzRl/ZdrnO6uHA6KBgxsYphKREREW60lixehf/9+myZTVUkW
i4iIiOirTuUuICIiImJQRURERMSgioiIiIhBFRERERExqCIiIiJiUEVERETEoIqIiIiIQRURERER
MagiIiIiYlBFRERExKCKiIiIiEEVERERETGoIiIiImJQRURERMSgioiIiIhBFRERERFVSO/LX27j
xo08QkRERFRWY2Mjg6qtYScRERFR39VXkjBs/iMiIiJiUEVERETEoIqIiIiIQRURERERMagiIiIi
YlBFRERExKCKiIiIiEEVERERETGoIiIiItpEdO4CIurrVqxYgVWrVmHt2rXYsGEDTNNEQ0MDmpqa
sOOOO2LXXXflTiIiBlVERKW88847WL58OVpaWmBZForFIkzTxKpVq/DFF1/gww8/xLp163DQQQdx
ZxERgyoioihLlizBRx99BMMwsPPOO2PIkCFobGyE4zhYu3YtVqxYgf/85z945ZVXYNs2Dj74YO40
ImJQRUQk++yzz/DFF1/Atm2MGjUKBxxwQODvO+ywA/bdd18888wzWLhwId5++20MHjwYo0eP5s4j
oi2CHdWJqE/asGED8vk8hg4d2iWgkh1xxBEYNWoU1qxZg48++og7jogYVBERydrb26HrOgYPHlz2
tSNGjIBlWfj444+544iIQRURkcwwDCQSCfTr16/sa3fYYQdYloXVq1dzxxHRFsM+VUTUJ2maVvFr
HceBZVmwLIs7joi2GGaqiKhPqq+vRyKRQDabLfvaTz/9FKZpYtCgQdxxRMSgiohIVldXB03T0NHR
Ufa17733HizLwi677MIdR0QMqoiIwkFVTU0Ncrkcli9fXvK1b731FgYNGsSZ1Yloi2KfKiLqk4YO
HYpisYiNGzeira0Ny5cvR01NDbbbbjsAwJdffum/9s9//jOeeuopfOMb3+COIyIGVUREYcOGDfOb
APP5PCzLQjabRSKRgKqq0HUdquom3MeOHcsdRkQMqoiI4uy4445Yu3YtCoUCTNMEACiKAk3ToKpq
RfNYERExqCIiAtDU1MSdQER9HjuqExERETGoIiIiImJQRURERMSgioiIiIgYVBERERExqCIiIiJi
UEVERETEoIqIiIiIGFQRERERbSJ9fkb1jRs38igRERERg6qeaGxs5BEiIiKirQKb/4iIiIgYVBER
ERExqCIiIiJiUEVEREREDKqIiIiIGFQRERERMagiIiIiYlBFRERERAyqiIiIiBhUERERETGoIiIi
ImJQRUREREQMqoiIiIgYVBERERExqCIiIiJiUEVEREREDKqIiIiIGFQRERERMagiIiIiYlBFRERE
RAyqiIiIiBhUERERETGoIiIiImJQRUREREQMqoiIiIgYVBERERExqCIiIiIiBlVEREREDKqIiIiI
GFQRERERMagiIiIiIgZVRERERAyqiIiIiPogZf2XaxzuBiIiIqKeYaaKiIiIiEEVEREREYMqIiIi
IgZVRERERMSgioiIiIhBFRERERGDKiIiIiIGVURERETEoIqIiIiIQRURERERgyoiIiIiBlVERERE
xKCKiIiIiEEVERER0dZA7803GzCwiXuUiIiIvpKYqSIiIiJiUEVERETEoIqIiIiIQRURERERMagi
IiIiYlBFRERExKCKaCuTmTGOO4HHiLivuS+5P8t+JoOqbcC/X3wZl008C2f/4GhcNunneHPBy7Gv
XfCPJ3DucSfh/HE/xevPveAv/+SDDzHtpFMw7aRT8MkHH5Zd/upT/8LUY07AReNPw2cfLe/yOZPH
jO3yr5Ryf98cbMfB7rOmYPdZU+A4zha9MHuzcDCsIqY+cRuG/OFU7Hj9JMx+4/GttsDMzBiHmhkn
YtQNZ+P+xS9t9u/wzEdv45u3noeGq07GXjdPxYNLXu6z+ytbNHDmY7Mx+NpTMGzmGbj5/57YKm9i
cdelOB+GXjcRd771bI+/09Z0bDfFddHXArxNWSZuyn3CoGobCKjm3noHJpw3FbOfmIcJ503F3Nvu
jA2sVn78Ca6++06cet5U3Pun2f7yR2+fg+MnT8Lxkyfh0dvnlF3+0M234bzrrsHZv700sFy444Wn
cMcLT3X5OY7893CAtbkCroWfL8O3dxqNA3faDQs//882Uyv93YsP4vPW9Xhnyg1Ycs5srGzdsMW2
oafr56bPRftvHsKtP5qCc5+8fbPvy0l/vxHnfvtYrL3wHvz9J5fgyQ/eqnrbNtd5cNnz96K9kMf7
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
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40337</attachid>
            <date>2010-01-29 06:12:06 +0000</date>
            <delta_ts>2010-01-29 06:12:06 +0000</delta_ts>
            <desc>workaround</desc>
            <filename>inefficient_regexp.try2.diff</filename>
            <type>text/plain</type>
            <size>2763</size>
            <attacher name="Germain Garand">germain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2tqcy9yZWdleHAuY3BwIGIva2pzL3JlZ2V4cC5jcHAKaW5kZXggNzc0YmJk
ZS4uZWE2YTFhMyAxMDA2NDQKLS0tIGEva2pzL3JlZ2V4cC5jcHAKKysrIGIva2pzL3JlZ2V4cC5j
cHAKQEAgLTUzLDkgKzUzLDExIEBAIHN0YXRpYyBVU3RyaW5nIHNhbml0aXplUGF0dGVybihjb25z
dCBVU3RyaW5nICZwKQogewogICBVU3RyaW5nIG5ld1BhdHRlcm47CiAKKyAgYm9vbCBjaGFuZ2Vk
ID0gZmFsc2U7CiAgIGNvbnN0IGNoYXIqIGNvbnN0IG5pbCA9ICJcXHgwMCI7CiAgIGlmIChwLmZp
bmQoIlxcdSIpID49IDAgfHwgcC5maW5kKEtKUzo6VUNoYXIoJ1wwJykpID49IDApIHsKICAgICBi
b29sIGVzY2FwZSA9IGZhbHNlOworICAgIGNoYW5nZWQgPSB0cnVlOwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgcC5zaXplKCk7ICsraSkgewogICAgICAgVUNoYXIgYyA9IHBbaV07CiAgICAgICBp
ZiAoZXNjYXBlKSB7CkBAIC0xMjEsMTAgKzEyMyw0NyBAQCBzdGF0aWMgVVN0cmluZyBzYW5pdGl6
ZVBhdHRlcm4oY29uc3QgVVN0cmluZyAmcCkKICAgICAgICAgICBuZXdQYXR0ZXJuICs9IFVTdHJp
bmcoJmMsIDEpOwogICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gbmV3UGF0dGVybjsKLSAgfSBl
bHNlIHsKLSAgICByZXR1cm4gcDsKICAgfQorICAvLyBSZXdyaXRlIHZlcnkgaW5lZmZpY2llbnQg
UkUgZm9ybXVsYXRpb246CisgIC8vICgufFxzKSsgaXMgb2Z0ZW4gdXNlZCBpbnN0ZWFkIG9mIHRo
ZSBsZXNzIGludHVpdGl2ZSwgYnV0IHZhc3RseSBwcmVmZXJhYmxlIFtcd1xXXSsKKyAgLy8gVGhl
IGZpcnN0IHdvcmRpbmcgbmVlZHMgdG8gcmVjdXJzZSBhdCBlYWNoIGNoYXJhY3RlciBtYXRjaGVk
LCBsZWFkaW5nIHRvIHJhcGlkIGV4aGF1c3Rpb24gb2YgbGliUENSRSdzIHN0YWNrIHNwYWNlLgor
ICBpZiAocC5maW5kKCIufFxccykiKT49MCkgeworICAgICAgaWYgKG5ld1BhdHRlcm4uaXNFbXB0
eSgpKQorICAgICAgICAgIG5ld1BhdHRlcm4gPSBwOworICAgICAgaW50IGlkeCA9IG5ld1BhdHRl
cm4uZmluZCgiLnxcXHMpIik7CisgICAgICBpbnQgcHJldmlkeCA9IDA7CisgICAgICBVU3RyaW5n
IHRtcDsKKyAgICAgIGJvb2wgbm9uQ2FwdHVyaW5nID0gZmFsc2U7CisgICAgICB3aGlsZSAoaWR4
ID49IDApIHsKKyAgICAgICAgICBpZiAoKChpZHggPiAwICYmIG5ld1BhdHRlcm5baWR4LTFdID09
ICcoJykgfHwgCisgICAgICAgICAgICAgIChub25DYXB0dXJpbmcgPSAoaWR4ID4gMiAmJiBuZXdQ
YXR0ZXJuW2lkeC0zXSA9PSAnKCcgJiYgbmV3UGF0dGVybltpZHgtMl0gPT0gJz8nICYmIG5ld1Bh
dHRlcm5baWR4LTFdID09ICc6JykpKSAmJgorICAgICAgICAgICAgICBuZXdQYXR0ZXJuLnNpemUo
KSA+PSBpZHgrNiAmJiAobmV3UGF0dGVybltpZHgrNV0gPT0gJysnIHx8IChuZXdQYXR0ZXJuW2lk
eCs1XSA9PSAnKicgJiYgbm9uQ2FwdHVyaW5nKSkgJiYKKyAgICAgICAgICAgICAgLy8gbm8gbmVl
ZCB0byBkbyBhbnl0aGluZyBpZiB0aGUgcGF0dGVybiBpcyBtaW5pbWFsIGUuZy4gKC58XHMpKz8K
KyAgICAgICAgICAgICAgIShuZXdQYXR0ZXJuLnNpemUoKSA+IGlkeCs2ICYmIG5ld1BhdHRlcm5b
aWR4KzZdID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgaWYgKG5vbkNhcHR1cmluZykgeyAgICAgICAgLy8gdHJpdmlhbCBjYXNl
OiAoPzoufFxzKSsgPT4gW1x3XFddKworICAgICAgICAgICAgICAgICAgICAgIHRtcC5hcHBlbmQo
bmV3UGF0dGVybiwgcHJldmlkeCwgaWR4LXByZXZpZHgtMyk7CisgICAgICAgICAgICAgICAgICAg
ICAgdG1wLmFwcGVuZCgiW1xcd1xcV10iKTsKKyAgICAgICAgICAgICAgICAgICAgICB0bXAuYXBw
ZW5kKG5ld1BhdHRlcm5baWR4KzVdKTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAgICAg
ICAgICAgICAgICAgIC8vIGNhcHR1cmUgbGFzdCBvZiBvbmUgb3IgbW9yZTogKC58XHMpKyA9PiBb
XHdcV10qKFtcd1xXXSkKKyAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQobmV3UGF0dGVybltp
ZHgrNV0gPT0gJysnKTsKKyAgICAgICAgICAgICAgICAgICAgICB0bXAuYXBwZW5kKG5ld1BhdHRl
cm4sIHByZXZpZHgsIGlkeC1wcmV2aWR4LTEpOworICAgICAgICAgICAgICAgICAgICAgIHRtcC5h
cHBlbmQoIltcXHdcXFddKihbXFx3XFxXXSkiKTsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICB0bXAuYXBwZW5kKG5ld1BhdHRlcm4sIHByZXZp
ZHgsIGlkeC1wcmV2aWR4KzUpOworICAgICAgICAgIH0KKyAgICAgICAgICBwcmV2aWR4ID0gaWR4
KzY7CisgICAgICAgICAgaWR4ID0gbmV3UGF0dGVybi5maW5kKCIufFxccykiLCBwcmV2aWR4KTsK
KyAgICAgIH0KKyAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgdG1wLmFwcGVuZChuZXdQ
YXR0ZXJuLCBwcmV2aWR4KTsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlBhdHRlcm46ICVz
ICIsIG5ld1BhdHRlcm4uYXNjaWkoKSk7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJ3YXMg
cmV3cml0dGVuIHRvOiAlc1xuIiwgdG1wLmFzY2lpKCkpOworICAgICAgICAgIG5ld1BhdHRlcm4g
PSB0bXA7CisgICAgICB9CisgIH0KKyAgcmV0dXJuIChjaGFuZ2VkID8gbmV3UGF0dGVybiA6IHAp
OwogfQogCiAvLyBGb3Igbm93LCB0aGUgb25seSAnZXh0ZW5zaW9uJyB0byBzdGFuZGFyZCB3ZSBh
cmUgd2lsbGluZyB0byBkZWFsIHdpdGggaXMK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40343</attachid>
            <date>2010-01-29 09:39:28 +0000</date>
            <delta_ts>2010-01-31 10:37:30 +0000</delta_ts>
            <desc>ha, found back that old benchmark Maksim wrote, and tweaked it into a comparison/regression test</desc>
            <filename>re.html</filename>
            <type>text/html</type>
            <size>4176</size>
            <attacher name="Germain Garand">germain</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gdGVzdCgpIHsKICAgIHZhciBSMSA9IC8oPCg/Oi58XHMpKj4pKD86
LnxccykrPi87IC8qID09IFIzICovCiAgICB2YXIgUjIgPSAvKDwoLnxccykrPikoLnxccykrPi87
IC8qID09IFI0ICovCiAgICB2YXIgUjMgPSAvKDxbXHdcV10qPilbXHdcV10rPi87CiAgICB2YXIg
UjQgPSAvKDxbXHdcV10qKFtcd1xXXSk+KVtcd1xXXSooW1x3XFddKT4vOwogICAgdmFyIFJVTlMg
PSAzMDA7CiAgICB2YXIgdHh0ICA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaXJlaG9zZS00
NjE5MzM3IikuaW5uZXJIVE1MOwogICAgdmFyIHMxID0gbmV3IERhdGUoKTsKICAgIHZhciBtYXRj
aDEsIG1hdGNoMiwgbWF0Y2gzLCBtYXRjaDQ7CiAgICB0cnkgewogICAgICAgIGZvciAodmFyIHQg
PSAwOyB0IDwgUlVOUzsgKyt0KQogICAgICAgICAgICBtYXRjaDEgPSBSMS5leGVjKHR4dCk7CiAg
ICB9IGNhdGNoIChlKSB7CiAgICAgICAgYWxlcnQoIkZhaWx1cmUgIzE6IiArIGUpOwogICAgfQog
ICAgdmFyIHMyID0gbmV3IERhdGUoKTsKICAgIHRyeSB7CiAgICAgICAgZm9yICh2YXIgdCA9IDA7
IHQgPCBSVU5TOyArK3QpCiAgICAgICAgICAgIG1hdGNoMiA9IFIyLmV4ZWModHh0KTsKICAgIH0g
Y2F0Y2ggKGUpIHsKICAgICAgICBhbGVydCgiRmFpbHVyZSAjMjoiICsgZSk7CiAgICB9CiAgICB2
YXIgczMgPSBuZXcgRGF0ZSgpOwogICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciB0ID0gMDsgdCA8
IFJVTlM7ICsrdCkKICAgICAgICAgICAgbWF0Y2gzID0gUjMuZXhlYyh0eHQpOwogICAgfSBjYXRj
aCAoZSkgewogICAgICAgIGFsZXJ0KCJGYWlsdXJlICMzOiIgKyBlKTsKICAgIH0KICAgIHZhciBz
NCA9IG5ldyBEYXRlKCk7CiAgICB0cnkgewogICAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgUlVO
UzsgKyt0KQogICAgICAgICAgICBtYXRjaDQgPSBSNC5leGVjKHR4dCk7CiAgICB9IGNhdGNoIChl
KSB7CiAgICAgICAgYWxlcnQoIkZhaWx1cmUgIzQ6IiArIGUpOwogICAgfQogICAgdmFyIHM1ID0g
bmV3IERhdGUoKTsKICAgIGRvY3VtZW50LndyaXRlKCI8ZGl2PiBNYXRjaGluZyB0aW1lIGZvciBS
MTogIiArIChzMiAtIHMxKSArICJtcyAgLS0gIiArIFIxLnNvdXJjZSArICI8L2Rpdj4iKTsKICAg
IGRvY3VtZW50LndyaXRlKCI8ZGl2PiBNYXRjaGluZyB0aW1lIGZvciBSMjogIiArIChzMyAtIHMy
KSArICJtcyAgLS0gIiArIFIyLnNvdXJjZSArICI8L2Rpdj4iKTsKICAgIGRvY3VtZW50LndyaXRl
KCI8aDM+IC0tLS0tLS0tLS0gRXF1aXZhbGVudCBSZWdFeHBzOjwvaDM+Iik7CiAgICBkb2N1bWVu
dC53cml0ZSgiPGRpdj4gTWF0Y2hpbmcgdGltZSBmb3IgUjM6ICIgKyAoczQgLSBzMykgKyAibXMg
IC0tICIgKyBSMy5zb3VyY2UgKyAiPC9kaXY+Iik7CiAgICBkb2N1bWVudC53cml0ZSgiPGRpdj4g
TWF0Y2hpbmcgdGltZSBmb3IgUjQ6ICIgKyAoczUgLSBzNCkgKyAibXMgIC0tICIgKyBSNC5zb3Vy
Y2UgKyAiPC9kaXY+Iik7CiAgICBkb2N1bWVudC53cml0ZSgiPGJyPjxkaXY+IE1hdGNoZWQgc3Ry
aW5ncyBhcmUgaWRlbnRpY2FsOiAiICsgCiAgICAgICAgICAgICAgICAgICgobWF0Y2gxWzFdID09
IG1hdGNoMlsxXSAmJiBtYXRjaDJbMV0gPT0gbWF0Y2gzWzFdICYmIG1hdGNoM1sxXSA9PSBtYXRj
aDRbMV0pICYmIAogICAgICAgICAgICAgICAgICAgKG1hdGNoMlsyXSA9PSBtYXRjaDRbMl0gJiYg
bWF0Y2gyWzNdID09IG1hdGNoNFszXSkpICsgIjwvZGl2PiIpOwp9Cjwvc2NyaXB0PgoKPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgo8ZGl2IGlkPSJmaXJlaG9zZS00NjE5MzM3IiBjbGFzcz0iZmhpdGVt
IGZoaXRlbS1zdG9yeSBhcnRpY2xlIHVzZXJtb2RlIHRodW1icyIgc3R5bGU9ImRpc3BsYXk6bm9u
ZSI+CjxzcGFuIGNsYXNzPSJzZC1pbmZvLWJsb2NrIiBzdHlsZT0iZGlzcGxheTogbm9uZSI+Cgk8
c3BhbiBjbGFzcz0ic2Qta2V5LWZpcmVob3NlLWlkIj40NjE5MzM3PC9zcGFuPgoJPHNwYW4gY2xh
c3M9InR5cGUiPnN0b3J5PC9zcGFuPgoKPC9zcGFuPgoJCQkJCQkJPGRpdiBjbGFzcz0iYm9keSIg
aWQ9ImZoYm9keS00NjE5MzM3Ij4KCgkJCQkJCQkJPHNwYW4gY2xhc3M9Im1lZGlhIHRvcGljIHRv
cGljaWNvbiIgaWQ9InRvcGljLTQ2MTkzMzciPgoJCQkJCQkJCQk8YSBocmVmPSIvL3NsYXNoZG90
Lm9yZy9pbmRleDIucGw/ZmhmaWx0ZXI9c2VjdXJpdHkiIG9uY2xpY2s9InJldHVybiBhZGRmaGZp
bHRlcignc2VjdXJpdHknKTsiPgoKCgoJCQk8ZGl2IGNsYXNzPSJ0b3BpY3NlY3VyaXR5IiBzdHls
ZT0id2lkdGg6NTlweDsgaGVpZ2h0Ojc4cHg7Ij48L2Rpdj4KCgk8L2E+CgkJCQkJCQkJPC9zcGFu
PgoKCgoJCQkJCQkJCQkJPGRpdiBpZD0idGV4dC00NjE5MzM3Ij4KCQkJCQkJCQkJCTxhIGhyZWY9
Imh0dHA6Ly9wc3ljaGljYmxhc3QuY29tLyIgcmVsPSJub2ZvbGxvdyI+Z2JpY2tmb3JkPC9hPiB3
cml0ZXMgPGk+IkFkZW9uYSwgdGhlIGZpcnN0IG9wZW4gc291cmNlIHN5c3RlbSBmb3IgdHJhY2tp
bmcgdGhlIGxvY2F0aW9uIG9mIHlvdXIgbG9zdCBvciBzdG9sZW4gbGFwdG9wLCB3YXMgPGEgaHJl
Zj0iLy9pdC5zbGFzaGRvdC5vcmcvYXJ0aWNsZS5wbD9zaWQ9MDgvMDcvMTQvMTMzOTIxOSZhbXA7
dGlkPTE3MiI+ZmVhdHVyZWQgb24gU2xhc2hkb3Q8L2E+IGxhc3QgeWVhci4gSSB3YXMgc3Rva2Vk
IHdoZW4gSSByZWFkIGFib3V0IGhvdyBpdCB3b3JrZWQgYW5kIEkgaW5zdGFsbGVkIGl0IGltbWVk
aWF0ZWx5LiBJIGp1c3Qgd2VudCB0byBsb29rIGZvciB1cGRhdGVzIG9uIHRoZSBzaXRlIGFuZCB3
YXMgZ3JlZXRlZCB3aXRoIGEgZ2lhbnQgd2FybmluZyBtZXNzYWdlIHN0YXRpbmcsICdBZGVvbmEg
aXMgY3VycmVudGx5IG5vdCB3b3JraW5nLicgSXQgc2VlbXMgdGhhdCBPcGVuREhULCB0aGUgZGlz
dHJpYnV0ZWQgaGFzaCB0YWJsZSB0aGF0IHN0b3JlcyB0aGUgbG9jYXRpb24gaW5mb3JtYXRpb24g
YW5kIHBob3RvcywgaGFzIGJlZW4gZmFpcmx5IHVuc3RhYmxlIGxhdGVseS4gVGhlIGRldmVsb3Bl
cnMgY2xhaW0gdGhhdCB0aGlzIGlzICJsYXJnZWx5IGJlY2F1c2UgdGhlIGJhY2stZW5kIE9wZW5E
SFQgc3lzdGVtIGlzIG5vdCBhYmxlIHRvIHRvbGVyYXRlIHRoZSBsb2FkIGltcG9zZWQgYnkgQWRl
b25hLiA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5kaHQub3JnLyI+T3BlbkRIVDwvYT4gcmVtb3Zl
ZCB0aGUgbmVlZCBmb3IgYSBjZW50cmFsaXplZCBkYXRhYmFzZSB3aXRoIHRyYWNraW5nIGluZm9y
bWF0aW9uLCB3aGljaCBpbiBlZmZlY3QgcHJldmVudHMgYSAzcmQgcGFydHkgZnJvbSB0cmFja2lu
ZyBhIHVzZXIncyB3aGVyZWFib3V0cy4gT3BlbkRIVCB3YXMgU2VhbiBSaGVhJ3MgUGguRC4gcHJv
amVjdCBiYWNrIGluIDIwMDUgYW5kIGhlIGhhcyBkZWNpZGVkIHRvIG9mZmljaWFsbHkgYm93IG91
dCBvZiBtYWludGFpbmluZyBpdCBhcyBvZiBKdWx5IDFzdCwgd2hpY2ggaGFzIGxlZnQgdGhlIGRl
dmVsb3BlcnMgb2YgQWRlb25hIGxvb2tpbmcgZm9yIGFub3RoZXIgYmFjayBlbmQgdG8gc3RvcmUg
bG9jYXRpb24gaW5mb3JtYXRpb24gYW5kIHBob3Rvcy4gVGhlIDxhIGhyZWY9Imh0dHBzOi8vZWRn
ZS5sYXVuY2hwYWQubmV0L2FkZW9uYSI+c291cmNlIGNvZGUgZm9yIEFkZW9uYTwvYT4gaXMgYXZh
aWxhYmxlIGFuZCB0aGV5IGFyZSBhY3RpdmVseSBzZWVraW5nIGRldmVsb3BlciBjb250cmlidXRp
b25zIG9uIDxhIGhyZWY9Imh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9hZGVvbmEtZGV2
ZWxvcGVycy9icm93c2VfdGhyZWFkL3RocmVhZC84MWFhMTgzMWQwOTUxN2Y3Ij50aGUgZGV2ZWxv
cGVyJ3MgbGlzdDwvYT4uIERvIGFueSBkZXZlbG9wZXJzIGhhdmUgaWRlYXMgb24gd2hlcmUgdG8g
cHV0IHNjYWRzIG9mIGluZm9ybWF0aW9uIGluIGEgZnJlZSwgcmVsaWFibGUsIGFub255bW91cywg
YW5kIHNlY3VyZSBtYW5uZXI/IjwvaT48L2Rpdj4KCgoKCgoJCQkJCQkJPHNwYW4gY2xhc3M9InZi
YWxsb29uLWZpcmVob3NlbGlzdCByZF81Ij4KCQkJCQkJCQk8c3Bhbj5Db21tZW50czo8L3NwYW4+
CgkJCQkJCQkJPGEgaHJlZj0iLy9pdC5zbGFzaGRvdC5vcmcvY29tbWVudHMucGw/c2lkPTEyNDM5
MjMiIGlkPSJjb21tZW50Y250LTQ2MTkzMzciPjgxPC9hPgoJCQkJCQkJPC9zcGFuPgoKCgoJCQkJ
CQk8aHI+CgoKPC9kaXY+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40407</attachid>
            <date>2010-01-31 10:27:59 +0000</date>
            <delta_ts>2010-01-31 10:27:59 +0000</delta_ts>
            <desc>new patch, accounting for escapes and (.|\s)*</desc>
            <filename>x</filename>
            <type>text/plain</type>
            <size>6190</size>
            <attacher name="Germain Garand">germain</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL2tqcy9yZWdleHAuY3BwIGIva2pzL3JlZ2V4cC5jcHAKaW5kZXggNzc0YmJk
ZS4uMTFmMzA4MyAxMDA2NDQKLS0tIGEva2pzL3JlZ2V4cC5jcHAKKysrIGIva2pzL3JlZ2V4cC5j
cHAKQEAgLTQ0LDYgKzQ0LDggQEAgbmFtZXNwYWNlIEtKUyB7CiAKIFJlZ0V4cDo6VVRGOFN1cHBv
cnRTdGF0ZSBSZWdFeHA6OnV0ZjhTdXBwb3J0ID0gUmVnRXhwOjpVbmtub3duOwogCitzdGF0aWMg
Ym9vbCBzYW5pdGl6ZVBhdHRlcm5FeHRlbnNpb25zKFVTdHJpbmcgJnAsIFdURjo6VmVjdG9yPGlu
dD4qIHBhcmVuSWR4ID0gMCk7CisKIC8vIEpTIHJlZ2V4cHMgY2FuIGNvbnRhaW4gVW5pY29kZSBl
c2NhcGUgc2VxdWVuY2VzIChcdXh4eHgpIHdoaWNoCiAvLyBhcmUgcmF0aGVyIHVuY29tbW9uIGVs
c2V3aGVyZS4gQXMgb3VyIHJlZ2V4cCBsaWJzIGRvbid0IHVuZGVyc3RhbmQKIC8vIHRoZW0gd2Ug
ZG8gdGhlIHVuZXNjYXBpbmcgb3Vyc2VsdmVzIGludGVybmFsbHkuCkBAIC01MSwxMSArNTMsMTMg
QEAgUmVnRXhwOjpVVEY4U3VwcG9ydFN0YXRlIFJlZ0V4cDo6dXRmOFN1cHBvcnQgPSBSZWdFeHA6
OlVua25vd247CiAvLyBleHBlY3RzIG51bGwgdGVybWluYXRpb24uLgogc3RhdGljIFVTdHJpbmcg
c2FuaXRpemVQYXR0ZXJuKGNvbnN0IFVTdHJpbmcgJnApCiB7Ci0gIFVTdHJpbmcgbmV3UGF0dGVy
bjsKKyAgVVN0cmluZyBucDsKIAorICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAgY29uc3QgY2hh
ciogY29uc3QgbmlsID0gIlxceDAwIjsKICAgaWYgKHAuZmluZCgiXFx1IikgPj0gMCB8fCBwLmZp
bmQoS0pTOjpVQ2hhcignXDAnKSkgPj0gMCkgewogICAgIGJvb2wgZXNjYXBlID0gZmFsc2U7Cisg
ICAgY2hhbmdlZCA9IHRydWU7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwLnNpemUoKTsgKytp
KSB7CiAgICAgICBVQ2hhciBjID0gcFtpXTsKICAgICAgIGlmIChlc2NhcGUpIHsKQEAgLTgxLDEz
ICs4NSwxMyBAQCBzdGF0aWMgVVN0cmluZyBzYW5pdGl6ZVBhdHRlcm4oY29uc3QgVVN0cmluZyAm
cCkKIAkgIGlmIChqIDwgNCkgewogCSAgICAvLyBzZXF1ZW5jZSB3YXMgaW5jb21wbGV0ZS4gdHJl
YXQgXHUgYXMgdSB3aGljaCBJRSBhbHdheXMKIAkgICAgLy8gYW5kIEZGIHNvbWV0aW1lcyBkb2Vz
LgotCSAgICAgbmV3UGF0dGVybi5hcHBlbmQoVVN0cmluZygndScpKTsKKwkgICAgIG5wLmFwcGVu
ZChVU3RyaW5nKCd1JykpOwogCSAgfSBlbHNlIHsKICAgICAgICAgICAgIGMgPSBVQ2hhcih1KTsK
ICAgICAgICAgICAgIHN3aXRjaCAodSkgewogICAgICAgICAgICAgY2FzZSAwOgogCSAgICAgIC8v
IE1ha2Ugc3VyZSB0byBlbmNvZGUgMCwgdG8gYXZvaWQgdGVybWluYXRpbmcgdGhlIHN0cmluZwot
CSAgICAgICBuZXdQYXR0ZXJuICs9IFVTdHJpbmcobmlsKTsKKwkgICAgICAgbnAgKz0gVVN0cmlu
ZyhuaWwpOwogCSAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnXic6CiAgICAgICAgICAg
ICBjYXNlICckJzoKQEAgLTEwMSwzNSArMTA1LDg3IEBAIHN0YXRpYyBVU3RyaW5nIHNhbml0aXpl
UGF0dGVybihjb25zdCBVU3RyaW5nICZwKQogICAgICAgICAgICAgY2FzZSAnWyc6IGNhc2UgJ10n
OgogICAgICAgICAgICAgY2FzZSAnfCc6CiAJICAgICAgLy8gZXNjYXBlIHBhdHRlcm4gY2hhcmFj
dGVycyBoYXZlIHRvIHJlbWFpbiBlc2NhcGVkCi0JICAgICAgIG5ld1BhdHRlcm4uYXBwZW5kKFVT
dHJpbmcoJ1xcJykpOworCSAgICAgICBucC5hcHBlbmQoVVN0cmluZygnXFwnKSk7CiAJICAgICAg
Ly8gaW50ZW50aW9uYWwgZmFsbHRocm91Z2gKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0JICAgICAg
bmV3UGF0dGVybiArPSBVU3RyaW5nKCZjLCAxKTsKKwkgICAgICBucCArPSBVU3RyaW5nKCZjLCAx
KTsKIAkgICAgICBicmVhazsKIAkgICAgfQogICAgICAgICAgIH0KICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQotICAgICAgICBuZXdQYXR0ZXJuICs9IFVTdHJpbmcoJ1xcJyk7Ci0gICAg
ICAgIG5ld1BhdHRlcm4gKz0gVVN0cmluZygmYywgMSk7CisgICAgICAgIG5wICs9IFVTdHJpbmco
J1xcJyk7CisgICAgICAgIG5wICs9IFVTdHJpbmcoJmMsIDEpOwogICAgICAgfSBlbHNlIHsKICAg
ICAgICAgaWYgKGMgPT0gJ1xcJykKICAgICAgICAgICBlc2NhcGUgPSB0cnVlOwogICAgICAgICBl
bHNlIGlmIChjID09ICdcMCcpCi0gICAgICAgICAgbmV3UGF0dGVybiArPSBVU3RyaW5nKG5pbCk7
CisgICAgICAgICAgbnAgKz0gVVN0cmluZyhuaWwpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
bmV3UGF0dGVybiArPSBVU3RyaW5nKCZjLCAxKTsKKyAgICAgICAgICBucCArPSBVU3RyaW5nKCZj
LCAxKTsKICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIG5ld1BhdHRlcm47Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuIHA7CiAgIH0KKyAgLy8gUmV3cml0ZSB2ZXJ5IGluZWZmaWNpZW50IFJFIGZv
cm11bGF0aW9uOgorICAvLyAoLnxccykrIGlzIG9mdGVuIHVzZWQgaW5zdGVhZCBvZiB0aGUgbGVz
cyBpbnR1aXRpdmUsIGJ1dCB2YXN0bHkgcHJlZmVyYWJsZSBbXHdcV10rCisgIC8vIFRoZSBmaXJz
dCB3b3JkaW5nIG5lZWRzIHRvIHJlY3Vyc2UgYXQgZWFjaCBjaGFyYWN0ZXIgbWF0Y2hlZCwgbGVh
ZGluZyB0byByYXBpZCBleGhhdXN0aW9uIG9mIGxpYlBDUkUncyBzdGFjayBzcGFjZS4KKyAgaWYg
KHAuZmluZCgiLnxcXHMpIik+PTApIHsKKyAgICAgIGlmIChucC5pc0VtcHR5KCkpCisgICAgICAg
ICAgbnAgPSBwOworICAgICAgYm9vbCBkaWRSZXdyaXRlID0gZmFsc2U7CisgICAgICBXVEY6OlZl
Y3RvcjxpbnQ+IHBhcmVuSWR4OworICAgICAgc2FuaXRpemVQYXR0ZXJuRXh0ZW5zaW9ucyhucCwg
JnBhcmVuSWR4KTsKKyAgICAgIFZlY3RvcjxpbnQ+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwYXJl
bklkeC5lbmQoKTsKKyAgICAgIGludCBwcmV2aWR4ID0gMDsKKyAgICAgIFVTdHJpbmcgdG1wOwor
ICAgICAgYm9vbCBub25DYXB0dXJpbmcgPSBmYWxzZTsKKyAgICAgIGZvciAoVmVjdG9yPGludD46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFyZW5JZHguYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CisgICAgICAgICAgaW50IGlkeCA9ICppdDsKKyAgICAgICAgICBpZiAobnAuc2l6ZSgpIDwgaWR4
KzYpCisgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGlmIChucFtpZHgrMV0gPT0gJz8n
ICYmIG5wW2lkeCsyXSA9PSAnOicpIHsKKyAgICAgICAgICAgICAgbm9uQ2FwdHVyaW5nID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgaWR4ICs9IDM7CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICArK2lkeDsKKyAgICAgICAgICB9CisgICAgICAgICAgaWYgKCEobnBbaWR4XSA9PSAnLicg
JiYgbnBbaWR4KzFdID09ICd8JyAmJiBucFtpZHgrMl0gPT0gJ1xcJyAmJiBucFtpZHgrM10gPT0g
J3MnKSkKKyAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgaWYgKG5wLnNpemUoKSA+
PSBpZHgrNiAmJiAobnBbaWR4KzVdID09ICcrJyB8fCAobnBbaWR4KzVdID09ICcqJykpICYmCisg
ICAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gZG8gYW55dGhpbmcgaWYgdGhlIHBhdHRlcm4gaXMg
bWluaW1hbCBlLmcuICgufFxzKSs/CisgICAgICAgICAgICAgICEobnAuc2l6ZSgpID4gaWR4KzYg
JiYgbnBbaWR4KzZdID09ICc/JykpIHsKKyAgICAgICAgICAgICAgICAgIGRpZFJld3JpdGUgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgaWYgKG5vbkNhcHR1cmluZykgeyAgICAgICAgICAgICAg
IC8vIHRyaXZpYWwgY2FzZTogKD86LnxccykrID0+IFtcd1xXXSsKKyAgICAgICAgICAgICAgICAg
ICAgICB0bXAuYXBwZW5kKG5wLCBwcmV2aWR4LCBpZHgtcHJldmlkeC0zKTsKKyAgICAgICAgICAg
ICAgICAgICAgICB0bXAuYXBwZW5kKCJbXFx3XFxXXSIpOworICAgICAgICAgICAgICAgICAgICAg
IHRtcC5hcHBlbmQobnBbaWR4KzVdKTsKKyAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobnBb
aWR4KzVdID09ICcqJykgeyAgICAvLyBjYXB0dXJlIHplcm8gb2Ygb25lIG9yIG1vcmU6ICgufFxz
KSogPT4gKD86W1x3XFddKihbXHdcV10pfFtcd1xXXT8pCisgICAgICAgICAgICAgICAgICAgICAg
dG1wLmFwcGVuZChucCwgcHJldmlkeCwgaWR4LXByZXZpZHgtMSk7CisgICAgICAgICAgICAgICAg
ICAgICAgdG1wLmFwcGVuZCgiKD86W1xcd1xcV10qKFtcXHdcXFddKXxbXFx3XFxXXT8pIik7Cisg
ICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2Fw
dHVyZSBsYXN0IG9mIG9uZSBvciBtb3JlOiAoLnxccykrID0+IFtcd1xXXSooW1x3XFddKQorICAg
ICAgICAgICAgICAgICAgICAgIGFzc2VydChucFtpZHgrNV0gPT0gJysnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICB0bXAuYXBwZW5kKG5wLCBwcmV2aWR4LCBpZHgtcHJldmlkeC0xKTsKKyAgICAg
ICAgICAgICAgICAgICAgICB0bXAuYXBwZW5kKCJbXFx3XFxXXSooW1xcd1xcV10pIik7CisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgdG1wLmFw
cGVuZChucCwgcHJldmlkeCwgaWR4LXByZXZpZHgrNSk7CisgICAgICAgICAgfQorICAgICAgICAg
IHByZXZpZHggPSBpZHgrNjsKKyAgICAgIH0KKyAgICAgIGlmIChkaWRSZXdyaXRlKSB7CisgICAg
ICAgICAgdG1wLmFwcGVuZChucCwgcHJldmlkeCk7CisgICAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJQYXR0ZXJuOiAlcyAiLCBucC5hc2NpaSgpKTsKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwg
IndhcyByZXdyaXR0ZW4gdG86ICVzXG4iLCB0bXAuYXNjaWkoKSk7CisgICAgICAgICAgbnAgPSB0
bXA7CisgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICB9CisgIH0KKyAgcmV0dXJuIChj
aGFuZ2VkID8gbnAgOiBwKTsKIH0KIAogLy8gRm9yIG5vdywgdGhlIG9ubHkgJ2V4dGVuc2lvbicg
dG8gc3RhbmRhcmQgd2UgYXJlIHdpbGxpbmcgdG8gZGVhbCB3aXRoIGlzCiAvLyBhIG5vbi1lc2Nh
cGVkIGNsb3NpbmcgYnJhY2tldCwgb3V0c2lkZSBvZiBhIGNoYXJhY3RlciBjbGFzcy4gZS5nLiAv
LipdLwotc3RhdGljIGJvb2wgc2FuaXRpemVQYXR0ZXJuRXh0ZW5zaW9ucyhVU3RyaW5nICZwKQor
c3RhdGljIGJvb2wgc2FuaXRpemVQYXR0ZXJuRXh0ZW5zaW9ucyhVU3RyaW5nICZwLCBXVEY6OlZl
Y3RvcjxpbnQ+KiBwYXJlbklkeCkKIHsKICAgVVN0cmluZyBuZXdQYXR0ZXJuOwogCkBAIC0xMzgs
NiArMTk0LDcgQEAgc3RhdGljIGJvb2wgc2FuaXRpemVQYXR0ZXJuRXh0ZW5zaW9ucyhVU3RyaW5n
ICZwKQogICBib29sIGVzY2FwZSA9IGZhbHNlOwogCiAgIGludCBzdGF0ZSA9IFN0YXRlTm9taW5h
bDsKKyAgaW50IGVzY2FwZWRTaW5jZUxhc3RQYXJlbiA9IDA7CiAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcC5zaXplKCk7ICsraSkgewogICAgICAgVUNoYXIgYyA9IHBbaV07CiAgICAgICBpZiAoZXNj
YXBlKSB7CkBAIC0xNTAsMTMgKzIwNywxOSBAQCBzdGF0aWMgYm9vbCBzYW5pdGl6ZVBhdHRlcm5F
eHRlbnNpb25zKFVTdHJpbmcgJnApCiAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZU5vbWlu
YWw7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IFN0YXRlTm9taW5hbCkgewogICAg
ICAgICAgICAgICAgIHYuYXBwZW5kKGkpOworICAgICAgICAgICAgICAgICsrZXNjYXBlZFNpbmNl
TGFzdFBhcmVuOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1snKSB7
CiAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gU3RhdGVPcGVuQnJhY2tldCkgewogICAgICAgICAg
ICAgICAgIHYuYXBwZW5kKGkpOworICAgICAgICAgICAgICAgICsrZXNjYXBlZFNpbmNlTGFzdFBh
cmVuOwogICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PSBTdGF0ZU5vbWluYWwpIHsKICAg
ICAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlT3BlbkJyYWNrZXQ7CiAgICAgICAgICAgICB9Cisg
ICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKCcpIHsKKyAgICAgICAgICAgIGlmIChwYXJlbklkeCAm
JiBzdGF0ZSA9PSBTdGF0ZU5vbWluYWwpCisgICAgICAgICAgICAgICAgcGFyZW5JZHgtPmFwcGVu
ZChpK2VzY2FwZWRTaW5jZUxhc3RQYXJlbik7CisgICAgICAgICAgICBlc2NhcGVkU2luY2VMYXN0
UGFyZW4gPSAwOwogICAgICAgICB9CiAgICAgfQogICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>40409</attachid>
            <date>2010-01-31 10:37:30 +0000</date>
            <delta_ts>2010-01-31 10:37:30 +0000</delta_ts>
            <desc>modified version with some more tests</desc>
            <filename>re.html</filename>
            <type>text/html</type>
            <size>5741</size>
            <attacher name="Germain Garand">germain</attacher>
            
              <data encoding="base64">PHNjcmlwdD4KZnVuY3Rpb24gdGVzdCgpIHsKICAgIHZhciBSMSA9IC8oPCg/Oi58XHMpKj4pKD86
LnxccykrPi87IC8qID09IFIzICovCiAgICB2YXIgUjIgPSAvKDwoLnxccykrPikoLnxccykrPi87
IC8qID09IFI0ICovCiAgICB2YXIgUjMgPSAvKDxbXHdcV10qPilbXHdcV10rPi87CiAgICB2YXIg
UjQgPSAvKDxbXHdcV10qKFtcd1xXXSk+KVtcd1xXXSooW1x3XFddKT4vOwogICAgdmFyIFI1ID0g
Lyg8KC58XHMpKz4pKC58XHMpKj4vOyAvKiA9PSBSNiAqLwogICAgdmFyIFI2ID0gLyg8W1x3XFdd
KihbXHdcV10pPikoPzpbXHdcV10qKFtcd1xXXSl8W1x3XFddPyk+LzsKICAgIHZhciBSVU5TID0g
MzAwOwogICAgdmFyIHR4dCAgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyZWhvc2UtNDYx
OTMzNyIpLmlubmVySFRNTDsKICAgIHZhciBzMSA9IG5ldyBEYXRlKCk7CiAgICB2YXIgbWF0Y2gx
LCBtYXRjaDIsIG1hdGNoMywgbWF0Y2g0LCBtYXRjaDUsIG1hdGNoNjsKICAgIHRyeSB7CiAgICAg
ICAgZm9yICh2YXIgdCA9IDA7IHQgPCBSVU5TOyArK3QpCiAgICAgICAgICAgIG1hdGNoMSA9IFIx
LmV4ZWModHh0KTsKICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBhbGVydCgiRmFpbHVyZSAjMToi
ICsgZSk7CiAgICB9CiAgICB2YXIgczIgPSBuZXcgRGF0ZSgpOwogICAgdHJ5IHsKICAgICAgICBm
b3IgKHZhciB0ID0gMDsgdCA8IFJVTlM7ICsrdCkKICAgICAgICAgICAgbWF0Y2gyID0gUjIuZXhl
Yyh0eHQpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGFsZXJ0KCJGYWlsdXJlICMyOiIgKyBl
KTsKICAgIH0KICAgIHZhciBzMyA9IG5ldyBEYXRlKCk7CiAgICB0cnkgewogICAgICAgIGZvciAo
dmFyIHQgPSAwOyB0IDwgUlVOUzsgKyt0KQogICAgICAgICAgICBtYXRjaDMgPSBSMy5leGVjKHR4
dCk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgYWxlcnQoIkZhaWx1cmUgIzM6IiArIGUpOwog
ICAgfQogICAgdmFyIHM0ID0gbmV3IERhdGUoKTsKICAgIHRyeSB7CiAgICAgICAgZm9yICh2YXIg
dCA9IDA7IHQgPCBSVU5TOyArK3QpCiAgICAgICAgICAgIG1hdGNoNCA9IFI0LmV4ZWModHh0KTsK
ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICBhbGVydCgiRmFpbHVyZSAjNDoiICsgZSk7CiAgICB9
CiAgICB2YXIgczUgPSBuZXcgRGF0ZSgpOwogICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciB0ID0g
MDsgdCA8IFJVTlM7ICsrdCkKICAgICAgICAgICAgbWF0Y2g1ID0gUjUuZXhlYyh0eHQpOwogICAg
fSBjYXRjaCAoZSkgewogICAgICAgIGFsZXJ0KCJGYWlsdXJlICM1OiIgKyBlKTsKICAgIH0KICAg
IHZhciBzNiA9IG5ldyBEYXRlKCk7CiAgICAgICAgdHJ5IHsKICAgICAgICBmb3IgKHZhciB0ID0g
MDsgdCA8IFJVTlM7ICsrdCkKICAgICAgICAgICAgbWF0Y2g2ID0gUjYuZXhlYyh0eHQpOwogICAg
fSBjYXRjaCAoZSkgewogICAgICAgIGFsZXJ0KCJGYWlsdXJlICM2OiIgKyBlKTsKICAgIH0KICAg
IHZhciBzNyA9IG5ldyBEYXRlKCk7CiAgICBkb2N1bWVudC53cml0ZSgiPGRpdj4gTWF0Y2hpbmcg
dGltZSBmb3IgUjE6ICIgKyAoczIgLSBzMSkgKyAibXMgIC0tICIgKyBSMS5zb3VyY2UgKyAiPC9k
aXY+Iik7CiAgICBkb2N1bWVudC53cml0ZSgiPGRpdj4gTWF0Y2hpbmcgdGltZSBmb3IgUjI6ICIg
KyAoczMgLSBzMikgKyAibXMgIC0tICIgKyBSMi5zb3VyY2UgKyAiPC9kaXY+Iik7CiAgICBkb2N1
bWVudC53cml0ZSgiPGRpdj4gTWF0Y2hpbmcgdGltZSBmb3IgUjU6ICIgKyAoczYgLSBzNSkgKyAi
bXMgIC0tICIgKyBSNS5zb3VyY2UgKyAiPC9kaXY+Iik7CiAgICBkb2N1bWVudC53cml0ZSgiPGgz
PiAtLS0tLS0tLS0tIEVxdWl2YWxlbnQgUmVnRXhwczo8L2gzPiIpOwogICAgZG9jdW1lbnQud3Jp
dGUoIjxkaXY+IE1hdGNoaW5nIHRpbWUgZm9yIFIzOiAiICsgKHM0IC0gczMpICsgIm1zICAtLSAi
ICsgUjMuc291cmNlICsgIjwvZGl2PiIpOwogICAgZG9jdW1lbnQud3JpdGUoIjxkaXY+IE1hdGNo
aW5nIHRpbWUgZm9yIFI0OiAiICsgKHM1IC0gczQpICsgIm1zICAtLSAiICsgUjQuc291cmNlICsg
IjwvZGl2PiIpOwogICAgZG9jdW1lbnQud3JpdGUoIjxkaXY+IE1hdGNoaW5nIHRpbWUgZm9yIFI2
OiAiICsgKHM3IC0gczYpICsgIm1zICAtLSAiICsgUjYuc291cmNlICsgIjwvZGl2PiIpOwogICAg
ZG9jdW1lbnQud3JpdGUoIjxicj48ZGl2PiBNYXRjaGVkIHN0cmluZ3MgYXJlIGlkZW50aWNhbDog
IiArIAogICAgICAgICAgICAgICAgICAoKG1hdGNoMVsxXSA9PSBtYXRjaDJbMV0gJiYgbWF0Y2gy
WzFdID09IG1hdGNoM1sxXSAmJiBtYXRjaDNbMV0gPT0gbWF0Y2g0WzFdICYmIG1hdGNoNVsxXSA9
PSBtYXRjaDZbMV0pICYmCiAgICAgICAgICAgICAgICAgICAobWF0Y2gyWzJdID09IG1hdGNoNFsy
XSAmJiBtYXRjaDJbM10gPT0gbWF0Y2g0WzNdICYmIG1hdGNoNVsyXSA9PSBtYXRjaDZbMl0gJiYg
bWF0Y2g1WzNdID09IG1hdGNoNlszXSAmJgogICAgICAgICAgICAgICAgICAgIG1hdGNoNVs0XSA9
PSBtYXRjaDZbNF0pKSArICI8L2Rpdj4iKTsKICAgIHZhciBhbHRUeHQgPSAiPHNwYW4+dGVzdDwv
c3Bhbj4+IjsKICAgIHRyeSB7CiAgICAgICAgbWF0Y2g1ID0gUjUuZXhlYyhhbHRUeHQpCiAgICAg
ICAgbWF0Y2g2ID0gUjYuZXhlYyhhbHRUeHQpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIGFs
ZXJ0KCJGYWlsdXJlICM2LWJpczoiICsgZSk7CiAgICB9CiAgICBkb2N1bWVudC53cml0ZSgiPGJy
PjxkaXY+IE1hdGNoZWQgc3RyaW5ncyAoMikgYXJlIGlkZW50aWNhbDogIiArCiAgICAgICAgICAg
ICAgICAgICgobWF0Y2gxWzFdID09IG1hdGNoMlsxXSAmJiBtYXRjaDJbMV0gPT0gbWF0Y2gzWzFd
ICYmIG1hdGNoM1sxXSA9PSBtYXRjaDRbMV0gJiYgbWF0Y2g1WzFdID09IG1hdGNoNlsxXSkgJiYK
ICAgICAgICAgICAgICAgICAgIChtYXRjaDJbMl0gPT0gbWF0Y2g0WzJdICYmIG1hdGNoMlszXSA9
PSBtYXRjaDRbM10gJiYgbWF0Y2g1WzJdID09IG1hdGNoNlsyXSAmJiBtYXRjaDVbM10gPT0gbWF0
Y2g2WzNdICYmCiAgICAgICAgICAgICAgICAgICAgbWF0Y2g1WzRdID09IG1hdGNoNls0XSkpICsg
IjwvZGl2PiIpOwogICB2YXIgUjcgPSAvKF1bWygufFxzKStdKykvOwogICBhbHRUeHQgPSAiXXxb
IjsKICAgdmFyIG1hdGNoNyA9IFI3LmV4ZWMoIGFsdFR4dCApOwogICBkb2N1bWVudC53cml0ZSgi
PGJyPjxkaXY+Y2hlY2tpbmcgdGhhdCBjaGFyYWN0ZXIgY2xhc3MgWygufFxzKStdICsgdW5tYXRj
aGVkIGJyYWNrZXRzIHN0aWxsIHdvcmtzOiIgKyAobWF0Y2g3WzFdID09IGFsdFR4dCkgKyI8L2Rp
dj4iKTsKfQo8L3NjcmlwdD4KCjxib2R5IG9ubG9hZD0idGVzdCgpIj4KPGRpdiBpZD0iZmlyZWhv
c2UtNDYxOTMzNyIgY2xhc3M9ImZoaXRlbSBmaGl0ZW0tc3RvcnkgYXJ0aWNsZSB1c2VybW9kZSB0
aHVtYnMiIHN0eWxlPSJkaXNwbGF5Om5vbmUiPgo8c3BhbiBjbGFzcz0ic2QtaW5mby1ibG9jayIg
c3R5bGU9ImRpc3BsYXk6IG5vbmUiPgoJPHNwYW4gY2xhc3M9InNkLWtleS1maXJlaG9zZS1pZCI+
NDYxOTMzNzwvc3Bhbj4KCTxzcGFuIGNsYXNzPSJ0eXBlIj5zdG9yeTwvc3Bhbj4KCjwvc3Bhbj4K
CgkJCQkJCQk8ZGl2IGNsYXNzPSJib2R5IiBpZD0iZmhib2R5LTQ2MTkzMzciPgoKCQkJCQkJCQk8
c3BhbiBjbGFzcz0ibWVkaWEgdG9waWMgdG9waWNpY29uIiBpZD0idG9waWMtNDYxOTMzNyI+CgkJ
CQkJCQkJCTxhIGhyZWY9Ii8vc2xhc2hkb3Qub3JnL2luZGV4Mi5wbD9maGZpbHRlcj1zZWN1cml0
eSIgb25jbGljaz0icmV0dXJuIGFkZGZoZmlsdGVyKCdzZWN1cml0eScpOyI+CgoKCgkJCTxkaXYg
Y2xhc3M9InRvcGljc2VjdXJpdHkiIHN0eWxlPSJ3aWR0aDo1OXB4OyBoZWlnaHQ6NzhweDsiPjwv
ZGl2PgoKCTwvYT4KCQkJCQkJCQk8L3NwYW4+CgoKCgkJCQkJCQkJCQk8ZGl2IGlkPSJ0ZXh0LTQ2
MTkzMzciPgoJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3BzeWNoaWNibGFzdC5jb20vIiByZWw9
Im5vZm9sbG93Ij5nYmlja2ZvcmQ8L2E+IHdyaXRlcyA8aT4iQWRlb25hLCB0aGUgZmlyc3Qgb3Bl
biBzb3VyY2Ugc3lzdGVtIGZvciB0cmFja2luZyB0aGUgbG9jYXRpb24gb2YgeW91ciBsb3N0IG9y
IHN0b2xlbiBsYXB0b3AsIHdhcyA8YSBocmVmPSIvL2l0LnNsYXNoZG90Lm9yZy9hcnRpY2xlLnBs
P3NpZD0wOC8wNy8xNC8xMzM5MjE5JmFtcDt0aWQ9MTcyIj5mZWF0dXJlZCBvbiBTbGFzaGRvdDwv
YT4gbGFzdCB5ZWFyLiBJIHdhcyBzdG9rZWQgd2hlbiBJIHJlYWQgYWJvdXQgaG93IGl0IHdvcmtl
ZCBhbmQgSSBpbnN0YWxsZWQgaXQgaW1tZWRpYXRlbHkuIEkganVzdCB3ZW50IHRvIGxvb2sgZm9y
IHVwZGF0ZXMgb24gdGhlIHNpdGUgYW5kIHdhcyBncmVldGVkIHdpdGggYSBnaWFudCB3YXJuaW5n
IG1lc3NhZ2Ugc3RhdGluZywgJ0FkZW9uYSBpcyBjdXJyZW50bHkgbm90IHdvcmtpbmcuJyBJdCBz
ZWVtcyB0aGF0IE9wZW5ESFQsIHRoZSBkaXN0cmlidXRlZCBoYXNoIHRhYmxlIHRoYXQgc3RvcmVz
IHRoZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiBhbmQgcGhvdG9zLCBoYXMgYmVlbiBmYWlybHkgdW5z
dGFibGUgbGF0ZWx5LiBUaGUgZGV2ZWxvcGVycyBjbGFpbSB0aGF0IHRoaXMgaXMgImxhcmdlbHkg
YmVjYXVzZSB0aGUgYmFjay1lbmQgT3BlbkRIVCBzeXN0ZW0gaXMgbm90IGFibGUgdG8gdG9sZXJh
dGUgdGhlIGxvYWQgaW1wb3NlZCBieSBBZGVvbmEuIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmRo
dC5vcmcvIj5PcGVuREhUPC9hPiByZW1vdmVkIHRoZSBuZWVkIGZvciBhIGNlbnRyYWxpemVkIGRh
dGFiYXNlIHdpdGggdHJhY2tpbmcgaW5mb3JtYXRpb24sIHdoaWNoIGluIGVmZmVjdCBwcmV2ZW50
cyBhIDNyZCBwYXJ0eSBmcm9tIHRyYWNraW5nIGEgdXNlcidzIHdoZXJlYWJvdXRzLiBPcGVuREhU
IHdhcyBTZWFuIFJoZWEncyBQaC5ELiBwcm9qZWN0IGJhY2sgaW4gMjAwNSBhbmQgaGUgaGFzIGRl
Y2lkZWQgdG8gb2ZmaWNpYWxseSBib3cgb3V0IG9mIG1haW50YWluaW5nIGl0IGFzIG9mIEp1bHkg
MXN0LCB3aGljaCBoYXMgbGVmdCB0aGUgZGV2ZWxvcGVycyBvZiBBZGVvbmEgbG9va2luZyBmb3Ig
YW5vdGhlciBiYWNrIGVuZCB0byBzdG9yZSBsb2NhdGlvbiBpbmZvcm1hdGlvbiBhbmQgcGhvdG9z
LiBUaGUgPGEgaHJlZj0iaHR0cHM6Ly9lZGdlLmxhdW5jaHBhZC5uZXQvYWRlb25hIj5zb3VyY2Ug
Y29kZSBmb3IgQWRlb25hPC9hPiBpcyBhdmFpbGFibGUgYW5kIHRoZXkgYXJlIGFjdGl2ZWx5IHNl
ZWtpbmcgZGV2ZWxvcGVyIGNvbnRyaWJ1dGlvbnMgb24gPGEgaHJlZj0iaHR0cDovL2dyb3Vwcy5n
b29nbGUuY29tL2dyb3VwL2FkZW9uYS1kZXZlbG9wZXJzL2Jyb3dzZV90aHJlYWQvdGhyZWFkLzgx
YWExODMxZDA5NTE3ZjciPnRoZSBkZXZlbG9wZXIncyBsaXN0PC9hPi4gRG8gYW55IGRldmVsb3Bl
cnMgaGF2ZSBpZGVhcyBvbiB3aGVyZSB0byBwdXQgc2NhZHMgb2YgaW5mb3JtYXRpb24gaW4gYSBm
cmVlLCByZWxpYWJsZSwgYW5vbnltb3VzLCBhbmQgc2VjdXJlIG1hbm5lcj8iPC9pPjwvZGl2PgoK
CgoKCgkJCQkJCQk8c3BhbiBjbGFzcz0idmJhbGxvb24tZmlyZWhvc2VsaXN0IHJkXzUiPgoJCQkJ
CQkJCTxzcGFuPkNvbW1lbnRzOjwvc3Bhbj4KCQkJCQkJCQk8YSBocmVmPSIvL2l0LnNsYXNoZG90
Lm9yZy9jb21tZW50cy5wbD9zaWQ9MTI0MzkyMyIgaWQ9ImNvbW1lbnRjbnQtNDYxOTMzNyI+ODE8
L2E+CgkJCQkJCQk8L3NwYW4+CgoKCgkJCQkJCTxocj4KCgo8L2Rpdj4=
</data>

          </attachment>
      

    </bug>

</bugzilla>