<?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>71991</bug_id>
          
          <creation_ts>2011-11-09 19:24:07 -0800</creation_ts>
          <short_desc>Spellcheck should be able to run asynchronously</short_desc>
          <delta_ts>2011-12-13 00:56:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65849</dependson>
    
    <dependson>72849</dependson>
    
    <dependson>72942</dependson>
    
    <dependson>56368</dependson>
    
    <dependson>72655</dependson>
    
    <dependson>72847</dependson>
    
    <dependson>72939</dependson>
    
    <dependson>72940</dependson>
    
    <dependson>73003</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>hbono</cc>
    
    <cc>mifenton</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>shinyak</cc>
    
    <cc>shinyak</cc>
    
    <cc>tkent</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499597</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-09 19:24:07 -0800</bug_when>
    <thetext>Once spellchecking has a unified text checking emulation by Bug 65849, 
we can use SpellChecker::requestCheckingFor() to run all spellchecking async.
This will improve responsiveness of key typing.

See also:
 * http://code.google.com/p/chromium/issues/detail?id=103517</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505894</commentid>
    <comment_count>1</comment_count>
      <attachid>115831</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-11-18 10:36:50 -0800</bug_when>
    <thetext>Created attachment 115831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506493</commentid>
    <comment_count>2</comment_count>
      <attachid>115831</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-19 22:09:13 -0800</bug_when>
    <thetext>Comment on attachment 115831
Patch

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

New failing tests:
editing/pasteboard/paste-table-001.html
css2.1/20110323/abspos-containing-block-initial-004b.htm
editing/spelling/spellcheck-attribute.html
fast/replaced/width100percent-textarea.html
editing/spelling/spelling-unified-emulation.html
editing/spelling/spelling-attribute-change.html
editing/spelling/spelling-hasspellingmarker.html
css2.1/20110323/abspos-containing-block-initial-004d.htm
editing/spelling/spelling-linebreak.html
editing/spelling/spelling-attribute-at-child.html
editing/spelling/spelling.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507349</commentid>
    <comment_count>3</comment_count>
      <attachid>116164</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-11-21 18:23:15 -0800</bug_when>
    <thetext>Created attachment 116164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507397</commentid>
    <comment_count>4</comment_count>
      <attachid>116164</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-11-21 20:42:18 -0800</bug_when>
    <thetext>Comment on attachment 116164
Patch

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

Is it possible to add a test that modify the checking range content during the spellcheck request is in flight?

&gt; Source/WebCore/ChangeLog:7
&gt; +

Could you add some detailed explanation here?
The bug summary  isn&apos;t enough.

&gt; Source/WebCore/editing/Editor.cpp:1882
&gt; +            if (asynchronous)

It looks async check and m_spellChecker invocation can be a part of markAllMisspellingsAndBadGrammarInRanges().

&gt; Source/WebCore/editing/SpellChecker.cpp:134
&gt; +    if (shouldMarkGrammar)

Maybe body of this if() statement should be a part of the if clause above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507513</commentid>
    <comment_count>5</comment_count>
      <attachid>116202</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-11-22 04:31:29 -0800</bug_when>
    <thetext>Created attachment 116202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507519</commentid>
    <comment_count>6</comment_count>
      <attachid>116205</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-11-22 04:40:56 -0800</bug_when>
    <thetext>Created attachment 116205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507608</commentid>
    <comment_count>7</comment_count>
      <attachid>116205</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 07:40:12 -0800</bug_when>
    <thetext>Comment on attachment 116205
Patch

Clearing flags on attachment: 116205

Committed r101002: &lt;http://trac.webkit.org/changeset/101002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507609</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-22 07:40:19 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507948</commentid>
    <comment_count>9</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-11-22 22:54:11 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 116205 [details])
&gt; Clearing flags on attachment: 116205
&gt; 
&gt; Committed r101002: &lt;http://trac.webkit.org/changeset/101002&gt;

The new editing/spelling/spellcheck-async.html fails on the GTK and on the Qt bot. Have you got any idea why?

--- /ramdisk/qt-linux-release/build/layout-test-results/editing/spelling/spellcheck-async-expected.txt 
+++ /ramdisk/qt-linux-release/build/layout-test-results/editing/spelling/spellcheck-async-actual.txt 
@@ -5,14 +5,14 @@
 PASS successfullyParsed is true
 
 TEST COMPLETE
-PASS text : &quot;zz&quot; has markers: [zz]
-PASS text : &quot;apple,zz,orange&quot; has markers: [zz]
-PASS text : &quot;zz,zz&quot; has markers: [zz,zz]
-PASS text : &quot;zz zz zz&quot; has markers: [zz,zz,zz]
-PASS text : &quot; zz zz zz &quot; has markers: [zz,zz,zz]
-PASS text : &quot;zz apple orange&quot; has markers: [zz]
-PASS text : &quot;apple zz orange&quot; has markers: [zz]
-PASS text : &quot;apple orange zz&quot; has markers: [zz]
+FAIL text : &quot;zz&quot; should have markers: [zz]
+FAIL text : &quot;apple,zz,orange&quot; should have markers: [zz]
+FAIL text : &quot;zz,zz&quot; should have markers: [zz,zz]
+FAIL text : &quot;zz zz zz&quot; should have markers: [zz,zz,zz]
+FAIL text : &quot; zz zz zz &quot; should have markers: [zz,zz,zz]
+FAIL text : &quot;zz apple orange&quot; should have markers: [zz]
+FAIL text : &quot;apple zz orange&quot; should have markers: [zz]
+FAIL text : &quot;apple orange zz&quot; should have markers: [zz]
 PASS text : &quot;zzz&quot; has markers: []
 PASS text : &quot;I would like to sleep, zzz&quot; has markers: []
 
--- /var/lib/buildbot/build/gtk-linux-32-release/build/layout-test-results/editing/spelling/spellcheck-async-expected.txt 
+++ /var/lib/buildbot/build/gtk-linux-32-release/build/layout-test-results/editing/spelling/spellcheck-async-actual.txt 
@@ -13,6 +13,6 @@
 PASS text : &quot;zz apple orange&quot; has markers: [zz]
 PASS text : &quot;apple zz orange&quot; has markers: [zz]
 PASS text : &quot;apple orange zz&quot; has markers: [zz]
-PASS text : &quot;zzz&quot; has markers: []
-PASS text : &quot;I would like to sleep, zzz&quot; has markers: []
+FAIL text : &quot;zzz&quot; should have markers: []
+FAIL text : &quot;I would like to sleep, zzz&quot; should have markers: []</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>508563</commentid>
    <comment_count>10</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-11-23 18:48:50 -0800</bug_when>
    <thetext>Hmm...

Though I have to investigate why to say the correct things..., perhaps Qt and GTK have not implemented requestCheckingFor. Or, some functions might not be implemented... Since my previous patch which resolves issues depending on this issue have also failed in Qt and GTK (their tests are skipped on Qt and Gtk now.), resolving them may fix such errors.

And sorry, I should have to add this test on Skipped lists.

(In reply to comment #9)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 116205 [details] [details])
&gt; &gt; Clearing flags on attachment: 116205
&gt; &gt; 
&gt; &gt; Committed r101002: &lt;http://trac.webkit.org/changeset/101002&gt;
&gt; 
&gt; The new editing/spelling/spellcheck-async.html fails on the GTK and on the Qt bot. Have you got any idea why?
&gt; 
&gt; --- /ramdisk/qt-linux-release/build/layout-test-results/editing/spelling/spellcheck-async-expected.txt 
&gt; +++ /ramdisk/qt-linux-release/build/layout-test-results/editing/spelling/spellcheck-async-actual.txt 
&gt; @@ -5,14 +5,14 @@
&gt;  PASS successfullyParsed is true
&gt; 
&gt;  TEST COMPLETE
&gt; -PASS text : &quot;zz&quot; has markers: [zz]
&gt; -PASS text : &quot;apple,zz,orange&quot; has markers: [zz]
&gt; -PASS text : &quot;zz,zz&quot; has markers: [zz,zz]
&gt; -PASS text : &quot;zz zz zz&quot; has markers: [zz,zz,zz]
&gt; -PASS text : &quot; zz zz zz &quot; has markers: [zz,zz,zz]
&gt; -PASS text : &quot;zz apple orange&quot; has markers: [zz]
&gt; -PASS text : &quot;apple zz orange&quot; has markers: [zz]
&gt; -PASS text : &quot;apple orange zz&quot; has markers: [zz]
&gt; +FAIL text : &quot;zz&quot; should have markers: [zz]
&gt; +FAIL text : &quot;apple,zz,orange&quot; should have markers: [zz]
&gt; +FAIL text : &quot;zz,zz&quot; should have markers: [zz,zz]
&gt; +FAIL text : &quot;zz zz zz&quot; should have markers: [zz,zz,zz]
&gt; +FAIL text : &quot; zz zz zz &quot; should have markers: [zz,zz,zz]
&gt; +FAIL text : &quot;zz apple orange&quot; should have markers: [zz]
&gt; +FAIL text : &quot;apple zz orange&quot; should have markers: [zz]
&gt; +FAIL text : &quot;apple orange zz&quot; should have markers: [zz]
&gt;  PASS text : &quot;zzz&quot; has markers: []
&gt;  PASS text : &quot;I would like to sleep, zzz&quot; has markers: []
&gt; 
&gt; --- /var/lib/buildbot/build/gtk-linux-32-release/build/layout-test-results/editing/spelling/spellcheck-async-expected.txt 
&gt; +++ /var/lib/buildbot/build/gtk-linux-32-release/build/layout-test-results/editing/spelling/spellcheck-async-actual.txt 
&gt; @@ -13,6 +13,6 @@
&gt;  PASS text : &quot;zz apple orange&quot; has markers: [zz]
&gt;  PASS text : &quot;apple zz orange&quot; has markers: [zz]
&gt;  PASS text : &quot;apple orange zz&quot; has markers: [zz]
&gt; -PASS text : &quot;zzz&quot; has markers: []
&gt; -PASS text : &quot;I would like to sleep, zzz&quot; has markers: []
&gt; +FAIL text : &quot;zzz&quot; should have markers: []
&gt; +FAIL text : &quot;I would like to sleep, zzz&quot; should have markers: []</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519687</commentid>
    <comment_count>11</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-12-12 16:53:45 -0800</bug_when>
    <thetext>It seems like the test added by this patch has been failing on Mac:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=editing%2Fspelling%2Fspellcheck-async.html&amp;group=%40ToT%20-%20webkit.org</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519826</commentid>
    <comment_count>12</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-12 19:58:19 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; It seems like the test added by this patch has been failing on Mac:
&gt; http://test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=editing%2Fspelling%2Fspellcheck-async.html&amp;group=%40ToT%20-%20webkit.org

I&apos;ll check it soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519933</commentid>
    <comment_count>13</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2011-12-13 00:56:08 -0800</bug_when>
    <thetext>I&apos;ve confirmed the test fails occasionally, sometimes the test passes though.
I&apos;ve filed the bug of this flakiness. I&apos;ll try to fix soon.

https://bugs.webkit.org/show_bug.cgi?id=74388</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115831</attachid>
            <date>2011-11-18 10:36:50 -0800</date>
            <delta_ts>2011-11-21 18:23:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71991-20111119033649.patch</filename>
            <type>text/plain</type>
            <size>19843</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwNjIwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTY2NmY0NTUzMWM2MDE3
MzEzMDE2MzcwMzIyODEwZjMyYjkxNzgyZi4uMjJjOWJhOWJkYTdlZWZkMzU0YTFiYTU3YjdhMDJi
ZDQxMDg2ODM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTExLTE4ICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlbGxjaGVjayBz
aG91bGQgYmUgYWJsZSB0byBydW4gYXN5bmNocm9ub3VzbHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiB0eXBpbmcgdGV4dCwgc3BlbGxjaGVjayBz
aG91bGQgd29yayBpbiBiYWNrZ3JvdW5kLgorICAgICAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdXMg
dG8gdXNlIGFzeW5jaHJvbm91cyBzcGVsbCBjaGVja2luZy4KKworICAgICAgICBUZXN0OiBlZGl0
aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbAorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAgIFVzZXMgYXN5bmNocm9ub3VzIHNwZWxsIGNoZWNraW5nIGlm
IFNldHRpbmdzOjphc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpIGlzIHRydWUuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dv
cmQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFk
R3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHA6Cisg
ICAgICAgICAgUmFuZ2UgaXMgdXNpbmcgaW5zdGVhZCBvZiBOb2RlIHRvIHJlcHJlc2VudCBhIHJh
bmdlIG9mIHNwZWxsIGNoZWNraW5nLgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpp
bml0UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmNsZWFyUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmNhbkNoZWNrQXN5bmNocm9ub3Vz
bHkpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjppc0J1c3kpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxDaGVja2VyOjppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlcjo6aXNDaGVja2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjpy
ZXF1ZXN0Q2hlY2tpbmdGb3IpOgorICAgICAgICAoV2ViQ29yZTo6U3BlbGxDaGVja2VyOjp0cnlU
b1JlcXVlc3RDaGVja2luZ0Zvcik6CisgICAgICAgIChXZWJDb3JlOjpTcGVsbENoZWNrZXI6OmRp
ZENoZWNrKToKKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorCiAyMDExLTExLTE3
ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFRleHRU
cmFja0xpc3Qgbm90IHNvcnRlZCBjb3JyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApp
bmRleCAwMTFiYWZlMDc2Mjk5YWU1NjhjZGE4YjViZDVjZDEzZDA4YWY5ZTI1Li4yZjc3ZGZiYTdm
NmUzZTYzNjYwZTBjY2M5YmViYWJkNGQyNTkyMGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCkBAIC00MTMsOCArNDEzLDggQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rpb25XaXRo
RnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCwKICAgICByZXZl
YWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsKIAogICAgIE5vZGUqIG5vZGVUb0No
ZWNrID0gbV9mcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1lbnQoKTsKLSAgICBp
ZiAobV9zcGVsbENoZWNrZXItPmNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9kZVRvQ2hlY2spKQot
ICAgICAgICBtX3NwZWxsQ2hlY2tlci0+cmVxdWVzdENoZWNraW5nRm9yKHJlc29sdmVUZXh0Q2hl
Y2tpbmdUeXBlTWFzayhUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgfCBUZXh0Q2hlY2tpbmdUeXBl
R3JhbW1hciksIG5vZGVUb0NoZWNrKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlVG9DaGVjayA9
IFJhbmdlOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgZmlyc3RQb3NpdGlvbkluTm9kZShu
b2RlVG9DaGVjayksIGxhc3RQb3NpdGlvbkluTm9kZShub2RlVG9DaGVjaykpOworICAgIG1fc3Bl
bGxDaGVja2VyLT50cnlUb1JlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4dENoZWNraW5nVHlw
ZU1hc2soVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIp
LCByYW5nZVRvQ2hlY2spOwogfQogCiB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFy
dFJlcGxhY2UpCkBAIC0xODc1LDkgKzE4NzUsMTYgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVs
bGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwK
ICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBhZGphY2VudFdvcmRzID0gVmlzaWJsZVNlbGVjdGlv
bihzdGFydE9mV29yZCh3b3JkU3RhcnQsIExlZnRXb3JkSWZPbkJvdW5kYXJ5KSwgZW5kT2ZXb3Jk
KHdvcmRTdGFydCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KSk7CiAgICAgICAgIGlmICh0ZXh0Q2hl
Y2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXIpIHsKICAgICAgICAgICAgIFZp
c2libGVTZWxlY3Rpb24gc2VsZWN0ZWRTZW50ZW5jZSA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRP
ZlNlbnRlbmNlKHdvcmRTdGFydCksIGVuZE9mU2VudGVuY2Uod29yZFN0YXJ0KSk7Ci0gICAgICAg
ICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2lu
Z09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0
ZWRTZW50ZW5jZS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRD
aGVja2luZ09wdGlvbnMsIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
YWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgICAgIGlm
IChtX2ZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQorICAgICAgICAgICAgICAgIG1fc3BlbGxDaGVja2VyLT50cnlUb1JlcXVlc3RDaGVja2luZ0Zv
cihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9ucyksIGFkamFj
ZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05vcm1hbGl6
ZWRSYW5nZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXJrQWxsTWlz
c3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFj
ZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgc2VsZWN0ZWRTZW50ZW5jZS50b05v
cm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlm
IChtX2ZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
KQorICAgICAgICAgICAgICAgIG1fc3BlbGxDaGVja2VyLT50cnlUb1JlcXVlc3RDaGVja2luZ0Zv
cihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9ucyksIGFkamFj
ZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6ZWRS
YW5nZSgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXJrQWxsTWlzc3Bl
bGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKHRleHRDaGVja2luZ09wdGlvbnMsIGFkamFjZW50
V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgYWRqYWNlbnRXb3Jkcy50b05vcm1hbGl6
ZWRSYW5nZSgpLmdldCgpKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0yMDQwLDEzICsyMDQ3LDExIEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5k
QmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ1R5cGVNYXNrIHRleHRDCiAgICAgfQogCiAg
ICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKLSAgICBpZiAoc2hvdWxkTWFy
a0dyYW1tYXIpCi0gICAgICAgIGNoZWNrVGV4dE9mUGFyYWdyYXBoKHRleHRDaGVja2VyKCksIGdy
YW1tYXJQYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgZ3JhbW1hclBhcmFncmFwaC50ZXh0TGVu
Z3RoKCksIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNv
bHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENoZWNraW5nT3B0aW9ucyksIHJlc3VsdHMpOwot
ICAgIGVsc2UKLSAgICAgICAgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgodGV4dENoZWNrZXIoKSwgc3Bl
bGxpbmdQYXJhZ3JhcGgudGV4dENoYXJhY3RlcnMoKSwgc3BlbGxpbmdQYXJhZ3JhcGgudGV4dExl
bmd0aCgpLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsK
LSAgICAgICAgCisKKyAgICBjb25zdCBUZXh0Q2hlY2tpbmdQYXJhZ3JhcGgmIHBhcmFncmFwaFRv
Q2hlY2sgPSBzaG91bGRNYXJrR3JhbW1hciA/IGdyYW1tYXJQYXJhZ3JhcGggOiBzcGVsbGluZ1Bh
cmFncmFwaDsKKyAgICBjaGVja1RleHRPZlBhcmFncmFwaCh0ZXh0Q2hlY2tlcigpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFRvQ2hlY2sudGV4dENoYXJhY3RlcnMoKSwgcGFy
YWdyYXBoVG9DaGVjay50ZXh0TGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCByZXN1bHRzKTsK
IAogICAgIC8vIElmIHRoaXMgY2hlY2tpbmcgaXMgb25seSBmb3Igc2hvd2luZyBjb3JyZWN0aW9u
IHBhbmVsLCB3ZSBzaG91bGRuJ3QgYm90aGVyIHRvIG1hcmsgbWlzc3BlbGxpbmdzLgogICAgIGlm
IChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuY3BwCmluZGV4IGM2Y2E5MjY5MDM2ZDU0Y2Q5MjUxYmVkNTRkNzljZmQ5MDcxMDg2MzIu
LmNjYThhODdjN2MwYTZlZDY3Njc3ZjU2ZGIwZmM4NTljMDY2YThkNTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRDaGVj
a2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nSGVscGVyLmgiCiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIApAQCAtNjIsMTUgKzYz
LDE4IEBAIFRleHRDaGVja2VyQ2xpZW50KiBTcGVsbENoZWNrZXI6OmNsaWVudCgpIGNvbnN0CiAg
ICAgcmV0dXJuIHBhZ2UtPmVkaXRvckNsaWVudCgpLT50ZXh0Q2hlY2tlcigpOwogfQogCi1ib29s
IFNwZWxsQ2hlY2tlcjo6aW5pdFJlcXVlc3QoTm9kZSogbm9kZSkKK2Jvb2wgU3BlbGxDaGVja2Vy
Ojppbml0UmVxdWVzdChQYXNzUmVmUHRyPFJhbmdlPiByYW5nZSkKIHsKLSAgICBBU1NFUlQoY2Fu
Q2hlY2tBc3luY2hyb25vdXNseShub2RlKSk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgQVNTRVJUKGNhbkNoZWNrQXN5bmNocm9ub3VzbHkocmFuZ2UuZ2V0
KCkpKTsKIAotICAgIFN0cmluZyB0ZXh0ID0gbm9kZS0+dGV4dENvbnRlbnQoKTsKKyAgICBTdHJp
bmcgdGV4dCA9IHJhbmdlLT50ZXh0KCk7CiAgICAgaWYgKCF0ZXh0Lmxlbmd0aCgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3JlcXVlc3ROb2RlID0gbm9kZTsKKyAgICBtX3JlcXVl
c3RSYW5nZSA9IHJhbmdlOwogICAgIG1fcmVxdWVzdFRleHQgPSB0ZXh0OwogICAgIG1fcmVxdWVz
dFNlcXVlbmNlKys7CiAKQEAgLTc5LDcgKzgzLDcgQEAgYm9vbCBTcGVsbENoZWNrZXI6OmluaXRS
ZXF1ZXN0KE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlbGxDaGVja2VyOjpjbGVhclJlcXVlc3QoKQog
ewotICAgIG1fcmVxdWVzdE5vZGUuY2xlYXIoKTsKKyAgICBtX3JlcXVlc3RSYW5nZS5jbGVhcigp
OwogICAgIG1fcmVxdWVzdFRleHQgPSBTdHJpbmcoKTsKIH0KIApAQCAtODgsMzUgKzkyLDYxIEBA
IGJvb2wgU3BlbGxDaGVja2VyOjppc0FzeW5jaHJvbm91c0VuYWJsZWQoKSBjb25zdAogICAgIHJl
dHVybiBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiB9CiAKLWJvb2wgU3BlbGxDaGVja2VyOjpjYW5D
aGVja0FzeW5jaHJvbm91c2x5KE5vZGUqIG5vZGUpIGNvbnN0Citib29sIFNwZWxsQ2hlY2tlcjo6
Y2FuQ2hlY2tBc3luY2hyb25vdXNseShSYW5nZSogcmFuZ2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IGNsaWVudCgpICYmIGlzQ2hlY2thYmxlKG5vZGUpICYmIGlzQXN5bmNocm9ub3VzRW5hYmxlZCgp
ICYmICFpc0J1c3koKTsKKyAgICByZXR1cm4gY2xpZW50KCkgJiYgaXNDaGVja2FibGUocmFuZ2Up
ICYmIGlzQXN5bmNocm9ub3VzRW5hYmxlZCgpICYmICFpc0J1c3koKTsKIH0KIAogYm9vbCBTcGVs
bENoZWNrZXI6OmlzQnVzeSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVxdWVzdE5vZGUuZ2V0
KCk7CisgICAgcmV0dXJuIG1fcmVxdWVzdFJhbmdlLmdldCgpOwogfQogCiBib29sIFNwZWxsQ2hl
Y2tlcjo6aXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcmVxdWVz
dE5vZGUuZ2V0KCkgJiYgbV9yZXF1ZXN0VGV4dC5sZW5ndGgoKSAmJiBtX3JlcXVlc3RTZXF1ZW5j
ZSA9PSBzZXF1ZW5jZTsKKyAgICByZXR1cm4gbV9yZXF1ZXN0UmFuZ2UuZ2V0KCkgJiYgbV9yZXF1
ZXN0VGV4dC5sZW5ndGgoKSAmJiBtX3JlcXVlc3RTZXF1ZW5jZSA9PSBzZXF1ZW5jZTsKIH0KIAot
Ym9vbCBTcGVsbENoZWNrZXI6OmlzQ2hlY2thYmxlKE5vZGUqIG5vZGUpIGNvbnN0Citib29sIFNw
ZWxsQ2hlY2tlcjo6aXNDaGVja2FibGUoUmFuZ2UqIHJhbmdlKSBjb25zdAogewotICAgIHJldHVy
biBub2RlICYmIG5vZGUtPnJlbmRlcmVyKCk7CisgICAgLy8gVE9ETzogaXMgaXQgb2s/CisgICAg
cmV0dXJuIHJhbmdlICYmIHJhbmdlLT5maXJzdE5vZGUoKSAmJiByYW5nZS0+Zmlyc3ROb2RlKCkt
PnJlbmRlcmVyKCk7CiB9CiAKLXZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdGb3Io
VGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgTm9kZSogbm9kZSkKK3ZvaWQgU3BlbGxDaGVja2Vy
OjpyZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2sgbWFzaywgUGFzc1JlZlB0
cjxSYW5nZT4gcmFuZ2UpCiB7Ci0gICAgQVNTRVJUKGNhbkNoZWNrQXN5bmNocm9ub3VzbHkobm9k
ZSkpOworICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KHJhbmdlLmdldCgpKSk7CiAK
LSAgICBpZiAoIWluaXRSZXF1ZXN0KG5vZGUpKQorICAgIGlmICghaW5pdFJlcXVlc3QocmFuZ2Up
KQogICAgICAgICByZXR1cm47CisKICAgICBjbGllbnQoKS0+cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcodGhpcywgbV9yZXF1ZXN0U2VxdWVuY2UsIG1hc2ssIG1fcmVxdWVzdFRleHQpOwogfQogCit2
b2lkIFNwZWxsQ2hlY2tlcjo6dHJ5VG9SZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlw
ZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgUGFzc1JlZlB0cjxSYW5nZT4gc3BlbGxpbmdSYW5n
ZSwgUGFzc1JlZlB0cjxSYW5nZT4gZ3JhbW1hclJhbmdlKQoreworICAgIGJvb2wgc2hvdWxkTWFy
a0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENoZWNraW5nVHlwZUdyYW1tYXI7
CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHNwZWxsaW5nUGFyYWdyYXBoKHNwZWxsaW5nUmFu
Z2UpOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBncmFtbWFyUGFyYWdyYXBoKHNob3VsZE1h
cmtHcmFtbWFyID8gZ3JhbW1hclJhbmdlIDogMCk7CisKKyAgICBpZiAoc2hvdWxkTWFya0dyYW1t
YXIpIHsKKyAgICAgICAgaWYgKHNwZWxsaW5nUGFyYWdyYXBoLmlzUmFuZ2VFbXB0eSgpICYmIGdy
YW1tYXJQYXJhZ3JhcGguaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGlmIChzcGVsbGluZ1BhcmFncmFwaC5pc0VtcHR5KCkpCisgICAgICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGNvbnN0IFRleHRDaGVja2luZ1BhcmFncmFwaCYgcGFyYWdy
YXBoVG9DaGVjayA9IHNob3VsZE1hcmtHcmFtbWFyID8gZ3JhbW1hclBhcmFncmFwaCA6IHNwZWxs
aW5nUGFyYWdyYXBoOworCisgICAgdHJ5VG9SZXF1ZXN0Q2hlY2tpbmdGb3IodGV4dENoZWNraW5n
T3B0aW9ucywgcGFyYWdyYXBoVG9DaGVjay5wYXJhZ3JhcGhSYW5nZSgpKTsKK30KKwordm9pZCBT
cGVsbENoZWNrZXI6OnRyeVRvUmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNr
IHRleHRDaGVja2luZ09wdGlvbnMsIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlKQoreworICAgIGlm
IChjYW5DaGVja0FzeW5jaHJvbm91c2x5KHJhbmdlLmdldCgpKSkKKyAgICAgICAgcmVxdWVzdENo
ZWNraW5nRm9yKHRleHRDaGVja2luZ09wdGlvbnMsIHJhbmdlKTsKK30KKwogc3RhdGljIGJvb2wg
Zm9yd2FyZEl0ZXJhdG9yKFBvc2l0aW9uSXRlcmF0b3ImIGl0ZXJhdG9yLCBpbnQgZGlzdGFuY2Up
CiB7CiAgICAgaW50IHJlbWFpbmluZyA9IGRpc3RhbmNlOwpAQCAtMTUzLDEzICsxODMsMTMgQEAg
dm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3UKICAgICBpZiAoIWlzVmFsaWQoc2VxdWVuY2UpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fcmVxdWVzdE5vZGUtPnJlbmRlcmVyKCkpIHsKKyAg
ICBpZiAoIWlzQ2hlY2thYmxlKG1fcmVxdWVzdFJhbmdlLmdldCgpKSkgewogICAgICAgICBjbGVh
clJlcXVlc3QoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGludCBzdGFydE9mZnNl
dCA9IDA7Ci0gICAgUG9zaXRpb25JdGVyYXRvciBzdGFydCA9IGZpcnN0UG9zaXRpb25Jbk9yQmVm
b3JlTm9kZShtX3JlcXVlc3ROb2RlLmdldCgpKTsKKyAgICBQb3NpdGlvbkl0ZXJhdG9yIHN0YXJ0
ID0gbV9yZXF1ZXN0UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKTsKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKHJlc3VsdHNbaV0udHlw
ZSAhPSBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcgJiYgcmVzdWx0c1tpXS50eXBlICE9IFRleHRD
aGVja2luZ1R5cGVHcmFtbWFyKQogICAgICAgICAgICAgY29udGludWU7CkBAIC0xNzcsMTIgKzIw
NywxMiBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBW
ZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdQogICAgICAgICAvLyBzcGVsbGluZ3MgaW4g
dGhlIGJhY2tncm91bmQuIFRvIGF2b2lkIGFkZGluZyBtYXJrZXJzIHRvIHRoZSB3b3JkcyBtb2Rp
ZmllZCBieSB1c2VycyBvcgogICAgICAgICAvLyBKYXZhU2NyaXB0IGFwcGxpY2F0aW9ucywgcmV0
cmlldmUgdGhlIHdvcmRzIGluIHRoZSBzcGVjaWZpZWQgcmVnaW9uIGFuZCBjb21wYXJlIHRoZW0g
d2l0aAogICAgICAgICAvLyB0aGUgb3JpZ2luYWwgb25lcy4KLSAgICAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobV9yZXF1ZXN0Tm9kZS0+ZG9jdW1lbnQoKSwgc3RhcnQs
IGVuZCk7CisgICAgICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG1fcmVx
dWVzdFJhbmdlLT5vd25lckRvY3VtZW50KCksIHN0YXJ0LCBlbmQpOwogICAgICAgICAvLyBGSVhN
RTogVXNlIHRleHRDb250ZW50KCkgY29tcGF0aWJsZSBzdHJpbmcgY29udmVyc2lvbi4KICAgICAg
ICAgU3RyaW5nIGRlc3RpbmF0aW9uID0gcmFuZ2UtPnRleHQoKTsKICAgICAgICAgU3RyaW5nIHNv
dXJjZSA9IG1fcmVxdWVzdFRleHQuc3Vic3RyaW5nKHJlc3VsdHNbaV0ubG9jYXRpb24sIHJlc3Vs
dHNbaV0ubGVuZ3RoKTsKICAgICAgICAgaWYgKGRlc3RpbmF0aW9uID09IHNvdXJjZSkKLSAgICAg
ICAgICAgIG1fcmVxdWVzdE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKHJh
bmdlLmdldCgpLCB0b01hcmtlclR5cGUocmVzdWx0c1tpXS50eXBlKSk7CisgICAgICAgICAgICBt
X3JlcXVlc3RSYW5nZS0+b3duZXJEb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihyYW5n
ZS5nZXQoKSwgdG9NYXJrZXJUeXBlKHJlc3VsdHNbaV0udHlwZSkpOwogCiAgICAgICAgIHN0YXJ0
T2Zmc2V0ID0gcmVzdWx0c1tpXS5sb2NhdGlvbjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9T
cGVsbENoZWNrZXIuaAppbmRleCA1YTIzY2U4ZjU2NzgxOTYxZTNiYjMyZWZmYWRmMDBkMjUxZmQx
ZDc5Li4yMmVlMTY3ODFmN2U5YTFhZDBlZjg3NTU2OWUyYTk3OTY1NzBiYmYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKQEAgLTM4LDYgKzM4LDcgQEAgY2xhc3MgRnJhbWU7
CiBjbGFzcyBOb2RlOwogY2xhc3MgVGV4dENoZWNrZXJDbGllbnQ7CiBzdHJ1Y3QgVGV4dENoZWNr
aW5nUmVzdWx0OworY2xhc3MgUmFuZ2U7CiAKIGNsYXNzIFNwZWxsQ2hlY2tlciB7CiAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoU3BlbGxDaGVja2VyKTsKQEAgLTQ2LDIxICs0NywyMyBAQCBwdWJs
aWM6CiAgICAgflNwZWxsQ2hlY2tlcigpOwogCiAgICAgYm9vbCBpc0FzeW5jaHJvbm91c0VuYWJs
ZWQoKSBjb25zdDsKLSAgICBib29sIGNhbkNoZWNrQXN5bmNocm9ub3VzbHkoTm9kZSopIGNvbnN0
OworICAgIGJvb2wgY2FuQ2hlY2tBc3luY2hyb25vdXNseShSYW5nZSopIGNvbnN0OwogICAgIGJv
b2wgaXNCdXN5KCkgY29uc3Q7CiAgICAgYm9vbCBpc1ZhbGlkKGludCBzZXF1ZW5jZSkgY29uc3Q7
Ci0gICAgYm9vbCBpc0NoZWNrYWJsZShOb2RlKikgY29uc3Q7Ci0gICAgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIE5vZGUqKTsKKyAgICBib29sIGlzQ2hlY2th
YmxlKFJhbmdlKikgY29uc3Q7CisgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNr
aW5nVHlwZU1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+KTsKKyAgICB2b2lkIHRyeVRvUmVxdWVzdENo
ZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBQYXNzUmVmUHRyPFJhbmdlPiBzcGVsbGlu
Z1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBncmFtbWFyUmFuZ2UpOworICAgIHZvaWQgdHJ5VG9S
ZXF1ZXN0Q2hlY2tpbmdGb3IoVGV4dENoZWNraW5nVHlwZU1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+
KTsKICAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVj
a2luZ1Jlc3VsdD4mKTsKIAogcHJpdmF0ZToKLSAgICBib29sIGluaXRSZXF1ZXN0KE5vZGUqKTsK
KyAgICBib29sIGluaXRSZXF1ZXN0KFBhc3NSZWZQdHI8UmFuZ2U+KTsKICAgICB2b2lkIGNsZWFy
UmVxdWVzdCgpOwogICAgIFRleHRDaGVja2VyQ2xpZW50KiBjbGllbnQoKSBjb25zdDsKIAogICAg
IEZyYW1lKiBtX2ZyYW1lOwogCi0gICAgUmVmUHRyPE5vZGU+IG1fcmVxdWVzdE5vZGU7CisgICAg
UmVmUHRyPFJhbmdlPiBtX3JlcXVlc3RSYW5nZTsKICAgICBTdHJpbmcgbV9yZXF1ZXN0VGV4dDsK
ICAgICBpbnQgbV9yZXF1ZXN0U2VxdWVuY2U7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlNjFkYjI3MWY3ZDhmYjEyOGNmMjczY2YwOGEx
ZDhmNDFkMGQ0ZjguLjdmYzhlZWRiNzZiOGM4ZDRiMmIyMmRmMDNjNWZkMTVlZDlhMjI1NzkgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNiBAQAorMjAxMS0xMS0xOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bnb29nbGUuY29t
PgorCisgICAgICAgIFNwZWxsY2hlY2sgc2hvdWxkIGJlIGFibGUgdG8gcnVuIGFzeW5jaHJvbm91
c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTk5
MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4g
dHlwaW5nIHRleHQsIHNwZWxsY2hlY2sgc2hvdWxkIHdvcmsgaW4gYmFja2dyb3VuZC4KKyAgICAg
ICAgVGhpcyBwYXRjaCBlbmFibGVzIHVzIHRvIHVzZSBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tp
bmcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRDaGVjayk6CisKIDIwMTEtMTEt
MTcgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSBzb21l
IGxlYWtzIGluIGZyYW1ld29ya3Mgd2UgbGluayBhZ2FpbnN0IG9uIExpb24KZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCA0ODE2YzM5MGQ2YTgy
OGNhMGZjODVmMmYwYzRjOTBlZjExZDIyYmJjLi42NTUzMTIyZTA0ODQwNTc2NWY3Njk0YjYzZmI1
OGU0ZGUyZTM0MWJmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCkBAIC00NTgsNyArNDU4LDcgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZmluaXNoTGFz
dFRleHRDaGVjaygpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgcmVzdWx0cy5hcHBlbmQo
V2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JTcGVsbGlu
Zywgb2Zmc2V0ICsgbWlzc3BlbGxlZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSk7CiAgICAg
ICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVk
TGVuZ3RoKTsKLSAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlvbjsKKyAgICAgICAg
b2Zmc2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGg7CiAgICAgfQog
CiAgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbi0+ZGlkRmluaXNoQ2hl
Y2tpbmdUZXh0KHJlc3VsdHMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDZmZjkzODJkYWY1NjI0ZmRhNWJkY2M4YjUwYTQ3
MGZhY2QxMDUzZDYuLmUzMDhhYTVmNGVhZWYzZjM3MmRhOTQ2MjM3M2Q2MTYyMzMwYjA3MTAgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0xOCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlh
a0Bnb29nbGUuY29tPgorCisgICAgICAgIFNwZWxsY2hlY2sgc2hvdWxkIGJlIGFibGUgdG8gcnVu
IGFzeW5jaHJvbm91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZHMgYXN5bmNocm9ub3VzIHNwZWxsIGNoZWNraW5nIHRlc3RzLgorCisgICAgICAg
ICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0bWw6IEFkZGVk
LgorCiAyMDExLTExLTE3ICBTdGV2ZSBCbG9jayAgPHN0ZXZlYmxvY2tAZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiBmb250Q2FjaGUoKS0+Z2VuZXJhdGlvbigpID09IG1f
Z2VuZXJhdGlvbiAocnVubmluZyBuZXctcnVuLXdlYmtpdC10ZXN0cykKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI4NGVhOWQ5YzgyN2QyYzllNzA0OWJlZjg0ZmJmMjI2YTU5ODc3MGEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hl
Y2stYXN5bmMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK1Rlc3QgZm9yIFVuaWZpZWQg
U3BlbGwgQ2hlY2tlciAmIEFzeW5jIFNwZWxsIENoZWNrZXIuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCitQQVNTIHRleHQgOiAienoiIGhhcyBtYXJrZXJzOiBbenpdCitQQVNTIHRleHQgOiAiYXBw
bGUsenosb3JhbmdlIiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0ZXh0IDogInp6LHp6IiBoYXMg
bWFya2VyczogW3p6LHp6XQorUEFTUyB0ZXh0IDogInp6IHp6IHp6IiBoYXMgbWFya2VyczogW3p6
LHp6LHp6XQorUEFTUyB0ZXh0IDogIiB6eiB6eiB6eiAiIGhhcyBtYXJrZXJzOiBbenosenosenpd
CitQQVNTIHRleHQgOiAienogYXBwbGUgb3JhbmdlIiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0
ZXh0IDogImFwcGxlIHp6IG9yYW5nZSIgaGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJh
cHBsZSBvcmFuZ2UgenoiIGhhcyBtYXJrZXJzOiBbenpdCitQQVNTIHRleHQgOiAienp6IiBoYXMg
bWFya2VyczogW10KK1BBU1MgdGV4dCA6ICJJIHdvdWxkIGxpa2UgdG8gc2xlZXAsIHp6eiIgaGFz
IG1hcmtlcnM6IFtdCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcv
c3BlbGxjaGVjay1hc3luYy5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVs
bGNoZWNrLWFzeW5jLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGY3MmE2ZTQ4ZmIwNWI0NDgzYTk0ZTczZGYx
N2QyNGFkOWE5ZWJkOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3Bl
bGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisuZWRpdGluZyB7CisgICAgYm9y
ZGVyOiAycHggc29saWQgcmVkOworICAgIHBhZGRpbmc6IDZweDsKKyAgICBmb250LXNpemU6IDE4
cHg7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJkZXNjcmlwdGlvbiI+
PC9wcmU+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KKzxkaXYgaWQ9ImNvbnRhaW5lciI+PC9k
aXY+CisKKzxzY3JpcHQ+CitkZXNjcmlwdGlvbigiVGVzdCBmb3IgVW5pZmllZCBTcGVsbCBDaGVj
a2VyICYgQXN5bmMgU3BlbGwgQ2hlY2tlci4iKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0
cnVlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2lm
ICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXRVbmlmaWVkVGV4dENoZWNraW5n
RW5hYmxlZChkb2N1bWVudCwgdHJ1ZSk7CisKK3ZhciBjb250YWluZXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnY29udGFpbmVyJyk7CitmdW5jdGlvbiByZW1vdmVDaGlsZHJlbihub2RlKSB7
CisgICAgd2hpbGUgKG5vZGUuZmlyc3RDaGlsZCkKKyAgICAgICAgbm9kZS5yZW1vdmVDaGlsZChu
b2RlLmZpcnN0Q2hpbGQpOworfQorCit2YXIgdGVzdERhdGEgPSBbCisgICAgeyB0ZXh0OiAnenon
LCBtYXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ2FwcGxlLHp6LG9yYW5nZScsIG1hcmtl
ZDogWyd6eiddIH0sCisgICAgeyB0ZXh0OiAnenosenonLCBtYXJrZWQ6IFsnenonLCd6eiddIH0s
CisgICAgeyB0ZXh0OiAnenogenogenonLCBtYXJrZWQ6IFsnenonLCAnenonLCAnenonXSB9LAor
ICAgIHsgdGV4dDogJyB6eiB6eiB6eiAnLCBtYXJrZWQ6IFsnenonLCAnenonLCAnenonXSB9LAor
ICAgIHsgdGV4dDogJ3p6IGFwcGxlIG9yYW5nZScsIG1hcmtlZDogWyd6eiddIH0sCisgICAgeyB0
ZXh0OiAnYXBwbGUgenogb3JhbmdlJywgbWFya2VkOiBbJ3p6J10gfSwKKyAgICB7IHRleHQ6ICdh
cHBsZSBvcmFuZ2UgenonLCBtYXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ3p6eicsIG1h
cmtlZDogW10gfSwKKyAgICB7IHRleHQ6ICdJIHdvdWxkIGxpa2UgdG8gc2xlZXAsIHp6eicsIG1h
cmtlZDogW10gfQorXTsKKwordmFyIHRlc3RObyA9IDA7CitmdW5jdGlvbiBkb1Rlc3RJZkFueSgp
IHsKKyAgICB2YXIgbmV4dCA9IHRlc3REYXRhLnNoaWZ0KCk7CisgICAgaWYgKG5leHQpCisgICAg
ICAgIHJldHVybiB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpeyBkb1Rlc3QoKyt0ZXN0Tm8s
IG5leHQudGV4dCwgbmV4dC5tYXJrZWQpOyB9LCAwKTsKKworICAgIC8vIE5vIG1vcmUgdGVzdHMu
CisgICAgcmVtb3ZlQ2hpbGRyZW4oY29udGFpbmVyKTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUVkaXRhYmxlRWxlbWVudChpZCkgeworICAgIHZhciBlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZS5zZXRBdHRyaWJ1dGUoImNvbnRl
bnRFZGl0YWJsZSIsICJ0cnVlIik7CisgICAgZS5jbGFzc05hbWUgPSAnZWRpdGluZyc7CisgICAg
ZS5pZCA9IGlkOworCisgICAgcmV0dXJuIGU7Cit9CisKK2Z1bmN0aW9uIHR5cGVUZXh0KGUsIHRl
eHQpIHsKKyAgICBlLmZvY3VzKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0
aDsgKytpKSB7CisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKHRleHRbaV0pOworICAgIH0K
KyAgICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnLicpOworfQorCitmdW5jdGlvbiBkb1Rlc3QodGVz
dE5vLCB0ZXh0LCBtYXJrZWQpIHsKKyAgICByZW1vdmVDaGlsZHJlbihjb250YWluZXIpOworICAg
IHZhciBpZCA9ICJzcGVsbGluZyIgKyB0ZXN0Tm87CisgICAgdmFyIGUgPSBjcmVhdGVFZGl0YWJs
ZUVsZW1lbnQoaWQpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKKworICAgIHR5cGVU
ZXh0KGUsIHRleHQpOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1
cm47CisKKyAgICB0cnlWZXJpZnkoMTAsIGlkLCB0ZXh0LCBtYXJrZWQsIDEpOworfQorCitmdW5j
dGlvbiB0cnlWZXJpZnkocmVzdFRyeSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVwKSB7CisgICAg
Ly8gTm8gbW9yZSB0cnkuCisgICAgaWYgKHJlc3RUcnkgPD0gMCkgeworICAgICAgICB0ZXN0RmFp
bGVkKCd0ZXh0IDogIicgKyB0ZXh0ICsgJyIgc2hvdWxkIGhhdmUgbWFya2VyczogWycgKyBtYXJr
ZWQgKyAnXScpOworICAgICAgICBzZXRUaW1lb3V0KGRvVGVzdElmQW55LCAwKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICB2YXIgZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgbnVtTWFya2VkID0gaW50ZXJuYWxz
Lm1hcmtlckNvdW50Rm9yTm9kZShlLmZpcnN0Q2hpbGQsICJzcGVsbGluZyIpOworICAgIHZhciBz
dWNjZXNzID0gbnVtTWFya2VkID09IG1hcmtlZC5sZW5ndGg7CisKKyAgICBpZiAoc3VjY2VzcyB8
fCB0cnVlKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTWFya2VkOyArK2kpIHsK
KyAgICAgICAgICAgIHZhciByYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZS5m
aXJzdENoaWxkLCAic3BlbGxpbmciLCBpKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS50b1N0cmlu
ZygpICE9IG1hcmtlZFtpXSkKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCd0
ZXh0IDogIicgKyB0ZXh0ICsgJyIgaGFzIG1hcmtlcnM6IFsnICsgbWFya2VkICsgJ10nKTsKKyAg
ICAgICAgc2V0VGltZW91dChkb1Rlc3RJZkFueSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
Ly8gVHlwZSAnLicgdG8gaW52b2tlIGFzeW5jaHJvbm91c2Ugc3BlbGwgY2hlY2tpbmcgYWdhaW4u
CisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcuJyk7CisgICAgICAgIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKSB7IHRyeVZlcmlmeShyZXN0VHJ5IC0gMSwgaWQsIHRleHQsIG1hcmtlZCwgbnNs
ZWVwICogMik7IH0sIG5zbGVlcCk7CisgICAgfQorfQorCitkb1Rlc3RJZkFueSgpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116164</attachid>
            <date>2011-11-21 18:23:15 -0800</date>
            <delta_ts>2011-11-22 04:31:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71991-20111122112314.patch</filename>
            <type>text/plain</type>
            <size>11515</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNjNGRkZGUyYjcxYWU3
MjRhYWMyODllZDJlN2ExYmEzOTI1ZjgxOS4uOTQ1MGQzYjJiNjE3M2NhMWZiNzZlYjk0YTQ0Zjgy
Yjk4NzA5MTVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDExLTExLTIxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlbGxjaGVjayBz
aG91bGQgYmUgYWJsZSB0byBydW4gYXN5bmNocm9ub3VzbHkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLWFzeW5jLmh0bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAg
ICAgICAgICBVc2VzIGFzeW5jaHJvbm91cyBzcGVsbCBjaGVja2VyIGlmIGFzeW5jaHJvbm91cyBm
bGFnIGlzIE9OLgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6cmVxdWVzdENoZWNraW5nRm9yKTogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKwogMjAxMS0xMS0yMSAgUmFrZXNoIEtOICA8
cmFrZXNoLmtuQG1vdG9yb2xhLmNvbT4KIAogICAgICAgICBOZWVkIHN1cHBvcnQgZm9yIGRpcm5h
bWUgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZDAyNTM4ZDI5NjVl
NjVmZGNiOGNmNDk2ODYxMmNjY2FkZWY2ZTc0Ni4uZGE1MWRjZjQyMjVhMmM3MDk5MjM4NTViNDI0
Yjg2ZWMwZTk5NmIyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTg3NSwxMiAr
MTg3NSwyMCBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3Jk
KGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LAogICAgICAgICBpZiAoaXNHcmFtbWFy
Q2hlY2tpbmdFbmFibGVkKCkpCiAgICAgICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IFRl
eHRDaGVja2luZ1R5cGVHcmFtbWFyOwogCisgICAgICAgIGJvb2wgYXN5bmNocm9ub3VzID0gbV9m
cmFtZSAmJiBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
YWRqYWNlbnRXb3JkcyA9IFZpc2libGVTZWxlY3Rpb24oc3RhcnRPZldvcmQod29yZFN0YXJ0LCBM
ZWZ0V29yZElmT25Cb3VuZGFyeSksIGVuZE9mV29yZCh3b3JkU3RhcnQsIFJpZ2h0V29yZElmT25C
b3VuZGFyeSkpOwogICAgICAgICBpZiAodGV4dENoZWNraW5nT3B0aW9ucyAmIFRleHRDaGVja2lu
Z1R5cGVHcmFtbWFyKSB7CiAgICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGVkU2Vu
dGVuY2UgPSBWaXNpYmxlU2VsZWN0aW9uKHN0YXJ0T2ZTZW50ZW5jZSh3b3JkU3RhcnQpLCBlbmRP
ZlNlbnRlbmNlKHdvcmRTdGFydCkpOwotICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdv
cmRzLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSk7CisgICAgICAgICAgICBpZiAoYXN5bmNocm9ub3VzKQorICAgICAgICAg
ICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVzb2x2ZVRleHRDaGVj
a2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKSk7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIHNlbGVjdGVkU2VudGVuY2UudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYXN5bmNocm9ub3VzKQor
ICAgICAgICAgICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IocmVzb2x2
ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBhZGphY2VudFdvcmRz
LnRvTm9ybWFsaXplZFJhbmdlKCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2UoKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbWFya0FsbE1pc3NwZWxsaW5nc0Fu
ZEJhZEdyYW1tYXJJblJhbmdlcyh0ZXh0Q2hlY2tpbmdPcHRpb25zLCBhZGphY2VudFdvcmRzLnRv
Tm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIGFkamFjZW50V29yZHMudG9Ob3JtYWxpemVkUmFuZ2Uo
KS5nZXQoKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCmluZGV4IDFiYzk3NWFmMTcxNjVjYmExOTQyMGU4
Y2E2MWYxZDBiMjAxZDE2YTUuLmQ5MGYwODUxMTc1MzFhNjNkMWQ0Y2IxOGE4ZTVlYTM3MGVlNzQy
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKQEAgLTExNyw2ICsx
MTcsMjYgQEAgdm9pZCBTcGVsbENoZWNrZXI6OnJlcXVlc3RDaGVja2luZ0ZvcihUZXh0Q2hlY2tp
bmdUeXBlTWFzayBtYXNrLCBQYXNzUmVmUHRyPFJhbmcKICAgICBkb1JlcXVlc3RDaGVja2luZ0Zv
cihtYXNrLCByYW5nZSk7CiB9CiAKK3ZvaWQgU3BlbGxDaGVja2VyOjpyZXF1ZXN0Q2hlY2tpbmdG
b3IoVGV4dENoZWNraW5nVHlwZU1hc2sgdGV4dENoZWNraW5nT3B0aW9ucywgUGFzc1JlZlB0cjxS
YW5nZT4gc3BlbGxpbmdSYW5nZSwgUGFzc1JlZlB0cjxSYW5nZT4gZ3JhbW1hclJhbmdlKQorewor
ICAgIGJvb2wgc2hvdWxkTWFya0dyYW1tYXIgPSB0ZXh0Q2hlY2tpbmdPcHRpb25zICYgVGV4dENo
ZWNraW5nVHlwZUdyYW1tYXI7CisgICAgVGV4dENoZWNraW5nUGFyYWdyYXBoIHNwZWxsaW5nUGFy
YWdyYXBoKHNwZWxsaW5nUmFuZ2UpOworICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBncmFtbWFy
UGFyYWdyYXBoKHNob3VsZE1hcmtHcmFtbWFyID8gZ3JhbW1hclJhbmdlIDogMCk7CisKKyAgICBp
ZiAoc2hvdWxkTWFya0dyYW1tYXIpIHsKKyAgICAgICAgaWYgKHNwZWxsaW5nUGFyYWdyYXBoLmlz
UmFuZ2VFbXB0eSgpICYmIGdyYW1tYXJQYXJhZ3JhcGguaXNFbXB0eSgpKQorICAgICAgICAgICAg
cmV0dXJuOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChzcGVsbGluZ1BhcmFncmFwaC5pc0Vt
cHR5KCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKHNob3VsZE1hcmtH
cmFtbWFyKQorICAgICAgICByZXF1ZXN0Q2hlY2tpbmdGb3IodGV4dENoZWNraW5nT3B0aW9ucywg
Z3JhbW1hclBhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpKTsKKyAgICBlbHNlCisgICAgICAgIHJl
cXVlc3RDaGVja2luZ0Zvcih0ZXh0Q2hlY2tpbmdPcHRpb25zLCBzcGVsbGluZ1BhcmFncmFwaC5w
YXJhZ3JhcGhSYW5nZSgpKTsKK30KKwogdm9pZCBTcGVsbENoZWNrZXI6OmRvUmVxdWVzdENoZWNr
aW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrIG1hc2ssIFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdl
KQogewogICAgIEFTU0VSVChjYW5DaGVja0FzeW5jaHJvbm91c2x5KHJhbmdlLmdldCgpKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAppbmRleCAzYTQxNDg5OTNhYTdhMzkwZDM0
MzQyOTg3YzJhYjA4ODM4N2M4YTkxLi4wMjg0NzVmYWM4ZTU5NTM4ZmI5MDQyMjc1MzcxZmNjNjBj
NWI5MzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKQEAgLTUyLDYgKzUy
LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNWYWxpZChpbnQgc2VxdWVuY2UpIGNvbnN0OwogICAg
IGJvb2wgaXNDaGVja2FibGUoUmFuZ2UqKSBjb25zdDsKICAgICB2b2lkIHJlcXVlc3RDaGVja2lu
Z0ZvcihUZXh0Q2hlY2tpbmdUeXBlTWFzaywgUGFzc1JlZlB0cjxSYW5nZT4pOworICAgIHZvaWQg
cmVxdWVzdENoZWNraW5nRm9yKFRleHRDaGVja2luZ1R5cGVNYXNrLCBQYXNzUmVmUHRyPFJhbmdl
PiBzcGVsbGluZ1JhbmdlLCBQYXNzUmVmUHRyPFJhbmdlPiBncmFtbWFyUmFuZ2UpOwogICAgIHZv
aWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiYpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ5MjczNWRlNzg5ZjZiMmQ2NzdkOGQ0MDYyNGFiODE1
NjdlMzA0NzkuLmEyYjZhNmE5NjQ2NjgzYzVhN2JhMWUyODMwMDdmZWJjZjM3NjcwYjIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMS0yMSAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0Bn
b29nbGUuY29tPgorCisgICAgICAgIFNwZWxsY2hlY2sgc2hvdWxkIGJlIGFibGUgdG8gcnVuIGFz
eW5jaHJvbm91c2x5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03MTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qczog
QWRkZWQgYSB0ZWFyIGRvd24gY29kZS4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxs
aW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMjEgIEFkYW0gS2xl
aW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBMYXlvdXQgVGVz
dCBjb21wb3NpdGluZy9nZW9tZXRyeS9jbGlwcGVkLXZpZGVvLWNvbnRyb2xsZXIuaHRtbCBpcyBm
bGFreSBvbiBXaW4vTGludXgKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBhc3RlLmpzCmluZGV4IDc5N2ZlOWI4
YzRkNDBlZTcwOTUyMmRkMGI3OTU0NjU5YmU2ZjM3ODIuLmMxMzJhMTUwOTZlMjM2YTE2MjljYWUz
MTk5YjdhOWZiYjBjZDk3OGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxp
bmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVjay1wYXN0ZS5qcwpAQCAtMzksNiAr
MzksOCBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBpZiAobmV4dCkKICAgICAgICAgcmV0dXJuIHdp
bmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwogICAgIHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAi
bm9uZSI7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9z
cGVsbGNoZWNrLWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iODRlYTlkOWM4MjdkMmM5
ZTcwNDliZWY4NGZiZjIyNmE1OTg3NzBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE4IEBACitUZXN0IGZvciBVbmlmaWVkIFNwZWxsIENoZWNrZXIgJiBBc3luYyBTcGVsbCBDaGVj
a2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0ZXh0IDogInp6IiBoYXMgbWFya2Vy
czogW3p6XQorUEFTUyB0ZXh0IDogImFwcGxlLHp6LG9yYW5nZSIgaGFzIG1hcmtlcnM6IFt6el0K
K1BBU1MgdGV4dCA6ICJ6eix6eiIgaGFzIG1hcmtlcnM6IFt6eix6el0KK1BBU1MgdGV4dCA6ICJ6
eiB6eiB6eiIgaGFzIG1hcmtlcnM6IFt6eix6eix6el0KK1BBU1MgdGV4dCA6ICIgenogenogenog
IiBoYXMgbWFya2VyczogW3p6LHp6LHp6XQorUEFTUyB0ZXh0IDogInp6IGFwcGxlIG9yYW5nZSIg
aGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJhcHBsZSB6eiBvcmFuZ2UiIGhhcyBtYXJr
ZXJzOiBbenpdCitQQVNTIHRleHQgOiAiYXBwbGUgb3JhbmdlIHp6IiBoYXMgbWFya2VyczogW3p6
XQorUEFTUyB0ZXh0IDogInp6eiIgaGFzIG1hcmtlcnM6IFtdCitQQVNTIHRleHQgOiAiSSB3b3Vs
ZCBsaWtlIHRvIHNsZWVwLCB6enoiIGhhcyBtYXJrZXJzOiBbXQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3luYy5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdk
YmY3ZWI1Zjg1NmY0NzFjMWVjZWFlNGY5YTc2ZjQ3MmZiYzQ4MTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbApAQCAt
MCwwICsxLDEzMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwvc2NyaXB0PgorPHN0
eWxlPgorLmVkaXRpbmcgeworICAgIGJvcmRlcjogMnB4IHNvbGlkIHJlZDsKKyAgICBwYWRkaW5n
OiA2cHg7CisgICAgZm9udC1zaXplOiAxOHB4OworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRl
c3QgZm9yIFVuaWZpZWQgU3BlbGwgQ2hlY2tlciAmIEFzeW5jIFNwZWxsIENoZWNrZXIuIik7CisK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5h
bHMuc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoZG9jdW1lbnQsIHRydWUpOworCit2YXIg
Y29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpOworZnVuY3Rp
b24gcmVtb3ZlQ2hpbGRyZW4obm9kZSkgeworICAgIHdoaWxlIChub2RlLmZpcnN0Q2hpbGQpCisg
ICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENoaWxkKTsKK30KKwordmFyIHRlc3RE
YXRhID0gWworICAgIHsgdGV4dDogJ3p6JywgbWFya2VkOiBbJ3p6J10gfSwKKyAgICB7IHRleHQ6
ICdhcHBsZSx6eixvcmFuZ2UnLCBtYXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ3p6LHp6
JywgbWFya2VkOiBbJ3p6JywnenonXSB9LAorICAgIHsgdGV4dDogJ3p6IHp6IHp6JywgbWFya2Vk
OiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6ICcgenogenogenogJywgbWFya2Vk
OiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6ICd6eiBhcHBsZSBvcmFuZ2UnLCBt
YXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ2FwcGxlIHp6IG9yYW5nZScsIG1hcmtlZDog
Wyd6eiddIH0sCisgICAgeyB0ZXh0OiAnYXBwbGUgb3JhbmdlIHp6JywgbWFya2VkOiBbJ3p6J10g
fSwKKyAgICB7IHRleHQ6ICd6enonLCBtYXJrZWQ6IFtdIH0sCisgICAgeyB0ZXh0OiAnSSB3b3Vs
ZCBsaWtlIHRvIHNsZWVwLCB6enonLCBtYXJrZWQ6IFtdIH0KK107CisKK3ZhciB0ZXN0Tm8gPSAw
OworZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CisgICAgdmFyIG5leHQgPSB0ZXN0RGF0YS5zaGlm
dCgpOworICAgIGlmIChuZXh0KQorICAgICAgICByZXR1cm4gd2luZG93LnNldFRpbWVvdXQoZnVu
Y3Rpb24oKXsgZG9UZXN0KCsrdGVzdE5vLCBuZXh0LnRleHQsIG5leHQubWFya2VkKTsgfSwgMCk7
CisKKyAgICAvLyBObyBtb3JlIHRlc3RzLgorICAgIHJlbW92ZUNoaWxkcmVuKGNvbnRhaW5lcik7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9CisK
K2Z1bmN0aW9uIGNyZWF0ZUVkaXRhYmxlRWxlbWVudChpZCkgeworICAgIHZhciBlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRFZGl0
YWJsZSIsICJ0cnVlIik7CisgICAgZS5jbGFzc05hbWUgPSAnZWRpdGluZyc7CisgICAgZS5pZCA9
IGlkOworCisgICAgcmV0dXJuIGU7Cit9CisKK2Z1bmN0aW9uIHR5cGVUZXh0KGUsIHRleHQpIHsK
KyAgICBlLmZvY3VzKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgKytp
KSB7CisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKHRleHRbaV0pOworICAgIH0KKyAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnLicpOworfQorCitmdW5jdGlvbiBkb1Rlc3QodGVzdE5vLCB0
ZXh0LCBtYXJrZWQpIHsKKyAgICByZW1vdmVDaGlsZHJlbihjb250YWluZXIpOworICAgIHZhciBp
ZCA9ICJzcGVsbGluZyIgKyB0ZXN0Tm87CisgICAgdmFyIGUgPSBjcmVhdGVFZGl0YWJsZUVsZW1l
bnQoaWQpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKKworICAgIHR5cGVUZXh0KGUs
IHRleHQpOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47CisK
KyAgICB0cnlWZXJpZnkoMTAsIGlkLCB0ZXh0LCBtYXJrZWQsIDEpOworfQorCitmdW5jdGlvbiB0
cnlWZXJpZnkocmVzdFRyeSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVwKSB7CisgICAgLy8gTm8g
bW9yZSB0cnkuCisgICAgaWYgKHJlc3RUcnkgPD0gMCkgeworICAgICAgICB0ZXN0RmFpbGVkKCd0
ZXh0IDogIicgKyB0ZXh0ICsgJyIgc2hvdWxkIGhhdmUgbWFya2VyczogWycgKyBtYXJrZWQgKyAn
XScpOworICAgICAgICBzZXRUaW1lb3V0KGRvVGVzdElmQW55LCAwKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICB2YXIgZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgbnVtTWFya2VkID0gaW50ZXJuYWxzLm1hcmtl
ckNvdW50Rm9yTm9kZShlLmZpcnN0Q2hpbGQsICJzcGVsbGluZyIpOworICAgIHZhciBzdWNjZXNz
ID0gbnVtTWFya2VkID09IG1hcmtlZC5sZW5ndGg7CisKKyAgICBpZiAoc3VjY2VzcyB8fCB0cnVl
KSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTWFya2VkOyArK2kpIHsKKyAgICAg
ICAgICAgIHZhciByYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZS5maXJzdENo
aWxkLCAic3BlbGxpbmciLCBpKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS50b1N0cmluZygpICE9
IG1hcmtlZFtpXSkKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCd0ZXh0IDog
IicgKyB0ZXh0ICsgJyIgaGFzIG1hcmtlcnM6IFsnICsgbWFya2VkICsgJ10nKTsKKyAgICAgICAg
c2V0VGltZW91dChkb1Rlc3RJZkFueSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVHlw
ZSAnLicgdG8gaW52b2tlIGFzeW5jaHJvbm91c2Ugc3BlbGwgY2hlY2tpbmcgYWdhaW4uCisgICAg
ICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcuJyk7CisgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHRyeVZlcmlmeShyZXN0VHJ5IC0gMSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVwICog
Mik7IH0sIG5zbGVlcCk7CisgICAgfQorfQorCitkb1Rlc3RJZkFueSgpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116202</attachid>
            <date>2011-11-22 04:31:29 -0800</date>
            <delta_ts>2011-11-22 04:40:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71991-20111122213128.patch</filename>
            <type>text/plain</type>
            <size>9508</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyOGViNjlhMTAwMjk4
NzhiNDE2MDQ5ZTdiMzU0ZTJlY2RiODY3MC4uMzMyZjUzMDE4YzMwYzljNDc4OTRkOTM0MzYwZWQ4
MWMyMjJkYjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTIyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlbGxjaGVjayBz
aG91bGQgYmUgYWJsZSB0byBydW4gYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJ1biBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tl
ciBpZiBib3RoIGFzeW5jaHJvbm91cyBmbGFnIGFuZCB1bmlmaWVkIHRleHQgY2hlY2tlciBmbGFn
IGFyZSBPTi4KKworICAgICAgICBXaGVuIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNr
aW5nIGFyZSByZXF1ZXN0ZWQsIG9ubHkgdGhlIGZpcnN0IHJlcXVlc3Qgd2lsbCBiZSBwcm9jZXNz
ZWQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0
bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAg
ICAgVXNlcyBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tlciBpZiBhc3luY2hyb25vdXMgZmxhZyBp
cyBPTi4KKwogMjAxMS0xMS0yMSAgRGF2aWQgQmFyciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTg1NDIpOiBDaHJvbWl1bTogQ1NTIHRleHQgaXMgcmVu
ZGVyZWQgb24gcGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGQwMjUzOGQyOTY1
ZTY1ZmRjYjhjZjQ5Njg2MTJjY2NhZGVmNmU3NDYuLmQwMGNlMTI3YTc4Nzc3OGM2YTBkZGM0OTJk
ZDY1ZGIxZmQ2N2QyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIwNDIsNiAr
MjA0MiwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgICAgICB9CiAgICAgfQogCisK
KyAgICBib29sIGFzeW5jaHJvbm91cyA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKSAm
JiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
ICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGlmIChhc3luY2hyb25vdXMpIHsK
KyAgICAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQorICAgICAgICAgICAgbV9zcGVsbENoZWNr
ZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENo
ZWNraW5nT3B0aW9ucyksIGdyYW1tYXJQYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3Io
cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBzcGVsbGlu
Z1BhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1h
cmtHcmFtbWFyKQogICAgICAgICBjaGVja1RleHRPZlBhcmFncmFwaCh0ZXh0Q2hlY2tlcigpLCBn
cmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExl
bmd0aCgpLCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5MGMyMTRhYmNlNGZhZTEyZjBjMWEzZDZhNWM4Y2Y2NTUxOWZhYzcz
Li4wNzMwODg0MzRhOTIxOGFjZTM5MTk5N2RlOTIzZDU4MmVlMzNjY2RjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTEtMTEtMjIgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNv
bT4KKworICAgICAgICBTcGVsbGNoZWNrIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhc3luY2hyb25v
dXNseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhc3luY2hyb25vdXNlIHNwZWxsIGNoZWNraW5nIHRlc3RzLgorICAgICAgICBGaXhlZCB0ZXN0
cyB0aGF0IGZhaWxzIHRlYXJpbmcgZG93bi4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6IEZpeGVkIHRlYXJpbmcgZG93bi4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVtdWxh
dGlvbi5odG1sOiBGaXhlZCB0ZWFyaW5nIGRvd24uCisKIDIwMTEtMTEtMjEgIERhdmlkIEJhcnIg
IDxkYXZpZGJhcnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk4NTQyKTog
Q2hyb21pdW06IENTUyB0ZXh0IGlzIHJlbmRlcmVkIG9uIHBhZ2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBh
c3RlLmpzCmluZGV4IDc5N2ZlOWI4YzRkNDBlZTcwOTUyMmRkMGI3OTU0NjU5YmU2ZjM3ODIuLmMx
MzJhMTUwOTZlMjM2YTE2MjljYWUzMTk5YjdhOWZiYjBjZDk3OGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVj
ay1wYXN0ZS5qcwpAQCAtMzksNiArMzksOCBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBpZiAobmV4
dCkKICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwogICAgIHRlc3RS
b290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iODRlYTlkOWM4MjdkMmM5ZTcwNDliZWY4NGZiZjIyNmE1OTg3NzBhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0IGZvciBVbmlmaWVkIFNwZWxsIENoZWNr
ZXIgJiBBc3luYyBTcGVsbCBDaGVja2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0
ZXh0IDogInp6IiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0ZXh0IDogImFwcGxlLHp6LG9yYW5n
ZSIgaGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJ6eix6eiIgaGFzIG1hcmtlcnM6IFt6
eix6el0KK1BBU1MgdGV4dCA6ICJ6eiB6eiB6eiIgaGFzIG1hcmtlcnM6IFt6eix6eix6el0KK1BB
U1MgdGV4dCA6ICIgenogenogenogIiBoYXMgbWFya2VyczogW3p6LHp6LHp6XQorUEFTUyB0ZXh0
IDogInp6IGFwcGxlIG9yYW5nZSIgaGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJhcHBs
ZSB6eiBvcmFuZ2UiIGhhcyBtYXJrZXJzOiBbenpdCitQQVNTIHRleHQgOiAiYXBwbGUgb3Jhbmdl
IHp6IiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0ZXh0IDogInp6eiIgaGFzIG1hcmtlcnM6IFtd
CitQQVNTIHRleHQgOiAiSSB3b3VsZCBsaWtlIHRvIHNsZWVwLCB6enoiIGhhcyBtYXJrZXJzOiBb
XQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2st
YXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3lu
Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmI5ZDY0NTc2YTA2YmMxODQ1NWI2NzNlOTZiMDEzMzAzNDM3N2Uz
OWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRp
bmcuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmVkaXRpbmcgeworICAgIGJvcmRlcjogMnB4IHNv
bGlkIHJlZDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgZm9udC1zaXplOiAxOHB4OworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZm9yIFVuaWZpZWQgU3BlbGwgQ2hlY2tlciAmIEFzeW5j
IFNwZWxsIENoZWNrZXIuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoZG9j
dW1lbnQsIHRydWUpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRhaW5lcicpOworZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4obm9kZSkgeworICAgIHdoaWxl
IChub2RlLmZpcnN0Q2hpbGQpCisgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENo
aWxkKTsKK30KKwordmFyIHRlc3REYXRhID0gWworICAgIHsgdGV4dDogJ3p6JywgbWFya2VkOiBb
J3p6J10gfSwKKyAgICB7IHRleHQ6ICdhcHBsZSx6eixvcmFuZ2UnLCBtYXJrZWQ6IFsnenonXSB9
LAorICAgIHsgdGV4dDogJ3p6LHp6JywgbWFya2VkOiBbJ3p6JywnenonXSB9LAorICAgIHsgdGV4
dDogJ3p6IHp6IHp6JywgbWFya2VkOiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6
ICcgenogenogenogJywgbWFya2VkOiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6
ICd6eiBhcHBsZSBvcmFuZ2UnLCBtYXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ2FwcGxl
IHp6IG9yYW5nZScsIG1hcmtlZDogWyd6eiddIH0sCisgICAgeyB0ZXh0OiAnYXBwbGUgb3Jhbmdl
IHp6JywgbWFya2VkOiBbJ3p6J10gfSwKKyAgICB7IHRleHQ6ICd6enonLCBtYXJrZWQ6IFtdIH0s
CisgICAgeyB0ZXh0OiAnSSB3b3VsZCBsaWtlIHRvIHNsZWVwLCB6enonLCBtYXJrZWQ6IFtdIH0K
K107CisKK3ZhciB0ZXN0Tm8gPSAwOworZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CisgICAgdmFy
IG5leHQgPSB0ZXN0RGF0YS5zaGlmdCgpOworICAgIGlmIChuZXh0KQorICAgICAgICByZXR1cm4g
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZG9UZXN0KCsrdGVzdE5vLCBuZXh0LnRleHQs
IG5leHQubWFya2VkKTsgfSwgMCk7CisKKyAgICAvLyBObyBtb3JlIHRlc3RzLgorICAgIHJlbW92
ZUNoaWxkcmVuKGNvbnRhaW5lcik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IGludGVybmFscy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChkb2N1bWVudCwgZmFsc2Up
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUVkaXRhYmxlRWxlbWVudChpZCkgeworICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRF
ZGl0YWJsZSIsICJ0cnVlIik7CisgICAgZS5jbGFzc05hbWUgPSAnZWRpdGluZyc7CisgICAgZS5p
ZCA9IGlkOworCisgICAgcmV0dXJuIGU7Cit9CisKK2Z1bmN0aW9uIHR5cGVUZXh0KGUsIHRleHQp
IHsKKyAgICBlLmZvY3VzKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKHRleHRbaV0pOworICAgIH0KKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnLicpOworfQorCitmdW5jdGlvbiBkb1Rlc3QodGVzdE5v
LCB0ZXh0LCBtYXJrZWQpIHsKKyAgICByZW1vdmVDaGlsZHJlbihjb250YWluZXIpOworICAgIHZh
ciBpZCA9ICJzcGVsbGluZyIgKyB0ZXN0Tm87CisgICAgdmFyIGUgPSBjcmVhdGVFZGl0YWJsZUVs
ZW1lbnQoaWQpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKKworICAgIHR5cGVUZXh0
KGUsIHRleHQpOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47
CisKKyAgICB0cnlWZXJpZnkoMTAsIGlkLCB0ZXh0LCBtYXJrZWQsIDEpOworfQorCitmdW5jdGlv
biB0cnlWZXJpZnkocmVzdFRyeSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVwKSB7CisgICAgLy8g
Tm8gbW9yZSB0cnkuCisgICAgaWYgKHJlc3RUcnkgPD0gMCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCd0ZXh0IDogIicgKyB0ZXh0ICsgJyIgc2hvdWxkIGhhdmUgbWFya2VyczogWycgKyBtYXJrZWQg
KyAnXScpOworICAgICAgICBzZXRUaW1lb3V0KGRvVGVzdElmQW55LCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICB2YXIgZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgbnVtTWFya2VkID0gaW50ZXJuYWxzLm1h
cmtlckNvdW50Rm9yTm9kZShlLmZpcnN0Q2hpbGQsICJzcGVsbGluZyIpOworICAgIHZhciBzdWNj
ZXNzID0gbnVtTWFya2VkID09IG1hcmtlZC5sZW5ndGg7CisKKyAgICBpZiAoc3VjY2VzcyB8fCB0
cnVlKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtTWFya2VkOyArK2kpIHsKKyAg
ICAgICAgICAgIHZhciByYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUoZS5maXJz
dENoaWxkLCAic3BlbGxpbmciLCBpKTsKKyAgICAgICAgICAgIGlmIChyYW5nZS50b1N0cmluZygp
ICE9IG1hcmtlZFtpXSkKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gZmFsc2U7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBpZiAoc3VjY2VzcykgeworICAgICAgICB0ZXN0UGFzc2VkKCd0ZXh0
IDogIicgKyB0ZXh0ICsgJyIgaGFzIG1hcmtlcnM6IFsnICsgbWFya2VkICsgJ10nKTsKKyAgICAg
ICAgc2V0VGltZW91dChkb1Rlc3RJZkFueSwgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
VHlwZSAnLicgdG8gaW52b2tlIGFzeW5jaHJvbm91c2Ugc3BlbGwgY2hlY2tpbmcgYWdhaW4uCisg
ICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKCcuJyk7CisgICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7IHRyeVZlcmlmeShyZXN0VHJ5IC0gMSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVw
ICogMik7IH0sIG5zbGVlcCk7CisgICAgfQorfQorCitkb1Rlc3RJZkFueSgpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXVu
aWZpZWQtZW11bGF0aW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
aW5nLXVuaWZpZWQtZW11bGF0aW9uLmh0bWwKaW5kZXggNTJmOTk3YjE5MTdhZjdkYmE5OGVhNzkw
YzY2ZmQ1NGI0NzNmNGE3ZS4uMmE5ZWViN2JjMjAwMWFiODgzNGU2OWVmODg5ODRlNjMxNWU2NjA1
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlm
aWVkLWVtdWxhdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3Bl
bGxpbmctdW5pZmllZC1lbXVsYXRpb24uaHRtbApAQCAtODQsNiArODQsOSBAQCBmb3IgKHZhciBp
ID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgKytpKSB7CiAgICAgcGVyZm9ybVRlc3QoJ3Rlc3Qn
LCB0ZXN0RGF0YVtpXSk7CiB9CiAKK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFs
cy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChkb2N1bWVudCwgZmFsc2UpOworCiB2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116205</attachid>
            <date>2011-11-22 04:40:56 -0800</date>
            <delta_ts>2011-11-22 07:40:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71991-20111122214054.patch</filename>
            <type>text/plain</type>
            <size>9500</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwOTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTYyOGViNjlhMTAwMjk4
NzhiNDE2MDQ5ZTdiMzU0ZTJlY2RiODY3MC4uMzMyZjUzMDE4YzMwYzljNDc4OTRkOTM0MzYwZWQ4
MWMyMjJkYjYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTIyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGdvb2dsZS5jb20+CisKKyAgICAgICAgU3BlbGxjaGVjayBz
aG91bGQgYmUgYWJsZSB0byBydW4gYXN5bmNocm9ub3VzbHkuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTk5MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJ1biBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tl
ciBpZiBib3RoIGFzeW5jaHJvbm91cyBmbGFnIGFuZCB1bmlmaWVkIHRleHQgY2hlY2tlciBmbGFn
IGFyZSBPTi4KKworICAgICAgICBXaGVuIG11bHRpcGxlIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNr
aW5nIGFyZSByZXF1ZXN0ZWQsIG9ubHkgdGhlIGZpcnN0IHJlcXVlc3Qgd2lsbCBiZSBwcm9jZXNz
ZWQuCisKKyAgICAgICAgVGVzdDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLmh0
bWwKKworICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAg
ICAgVXNlcyBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tlciBpZiBhc3luY2hyb25vdXMgZmxhZyBp
cyBPTi4KKwogMjAxMS0xMS0yMSAgRGF2aWQgQmFyciAgPGRhdmlkYmFyckBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUkVHUkVTU0lPTihyOTg1NDIpOiBDaHJvbWl1bTogQ1NTIHRleHQgaXMgcmVu
ZGVyZWQgb24gcGFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGQwMjUzOGQyOTY1
ZTY1ZmRjYjhjZjQ5Njg2MTJjY2NhZGVmNmU3NDYuLmQwMGNlMTI3YTc4Nzc3OGM2YTBkZGM0OTJk
ZDY1ZGIxZmQ2N2QyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIwNDIsNiAr
MjA0MiwxNiBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdUeXBlTWFzayB0ZXh0QwogICAgICAgICB9CiAgICAgfQogCisK
KyAgICBib29sIGFzeW5jaHJvbm91cyA9IG1fZnJhbWUgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKSAm
JiBtX2ZyYW1lLT5zZXR0aW5ncygpLT5hc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCgp
ICYmICFzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsOworICAgIGlmIChhc3luY2hyb25vdXMpIHsK
KyAgICAgICAgaWYgKHNob3VsZE1hcmtHcmFtbWFyKQorICAgICAgICAgICAgbV9zcGVsbENoZWNr
ZXItPnJlcXVlc3RDaGVja2luZ0ZvcihyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2sodGV4dENo
ZWNraW5nT3B0aW9ucyksIGdyYW1tYXJQYXJhZ3JhcGgucGFyYWdyYXBoUmFuZ2UoKSk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG1fc3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3Io
cmVzb2x2ZVRleHRDaGVja2luZ1R5cGVNYXNrKHRleHRDaGVja2luZ09wdGlvbnMpLCBzcGVsbGlu
Z1BhcmFncmFwaC5wYXJhZ3JhcGhSYW5nZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwog
ICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CiAgICAgaWYgKHNob3VsZE1h
cmtHcmFtbWFyKQogICAgICAgICBjaGVja1RleHRPZlBhcmFncmFwaCh0ZXh0Q2hlY2tlcigpLCBn
cmFtbWFyUGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIGdyYW1tYXJQYXJhZ3JhcGgudGV4dExl
bmd0aCgpLCAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5MGMyMTRhYmNlNGZhZTEyZjBjMWEzZDZhNWM4Y2Y2NTUxOWZhYzcz
Li4wNzMwODg0MzRhOTIxOGFjZTM5MTk5N2RlOTIzZDU4MmVlMzNjY2RjIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTEtMTEtMjIgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xlLmNv
bT4KKworICAgICAgICBTcGVsbGNoZWNrIHNob3VsZCBiZSBhYmxlIHRvIHJ1biBhc3luY2hyb25v
dXNseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5
OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRl
ZCBhc3luY2hyb25vdXNlIHNwZWxsIGNoZWNraW5nIHRlc3RzLgorICAgICAgICBGaXhlZCB0ZXN0
cyB0aGF0IGZhaWxzIHRlYXJpbmcgZG93bi4KKworICAgICAgICAqIGVkaXRpbmcvc3BlbGxpbmcv
c2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanM6IEZpeGVkIHRlYXJpbmcgZG93bi4KKyAg
ICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVtdWxh
dGlvbi5odG1sOiBGaXhlZCB0ZWFyaW5nIGRvd24uCisKIDIwMTEtMTEtMjEgIERhdmlkIEJhcnIg
IDxkYXZpZGJhcnJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjk4NTQyKTog
Q2hyb21pdW06IENTUyB0ZXh0IGlzIHJlbmRlcmVkIG9uIHBhZ2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NjcmlwdC10ZXN0cy9zcGVsbGNoZWNrLXBh
c3RlLmpzCmluZGV4IDc5N2ZlOWI4YzRkNDBlZTcwOTUyMmRkMGI3OTU0NjU5YmU2ZjM3ODIuLmMx
MzJhMTUwOTZlMjM2YTE2MjljYWUzMTk5YjdhOWZiYjBjZDk3OGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc2NyaXB0LXRlc3RzL3NwZWxsY2hlY2stcGFzdGUuanMK
KysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zY3JpcHQtdGVzdHMvc3BlbGxjaGVj
ay1wYXN0ZS5qcwpAQCAtMzksNiArMzksOCBAQCBmdW5jdGlvbiBkb25lKCkKICAgICBpZiAobmV4
dCkKICAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwogICAgIHRlc3RS
b290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CiAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stYXN5bmMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iODRlYTlkOWM4MjdkMmM5ZTcwNDliZWY4NGZiZjIyNmE1OTg3NzBhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLWFzeW5jLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE4IEBACitUZXN0IGZvciBVbmlmaWVkIFNwZWxsIENoZWNr
ZXIgJiBBc3luYyBTcGVsbCBDaGVja2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
K1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB0
ZXh0IDogInp6IiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0ZXh0IDogImFwcGxlLHp6LG9yYW5n
ZSIgaGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJ6eix6eiIgaGFzIG1hcmtlcnM6IFt6
eix6el0KK1BBU1MgdGV4dCA6ICJ6eiB6eiB6eiIgaGFzIG1hcmtlcnM6IFt6eix6eix6el0KK1BB
U1MgdGV4dCA6ICIgenogenogenogIiBoYXMgbWFya2VyczogW3p6LHp6LHp6XQorUEFTUyB0ZXh0
IDogInp6IGFwcGxlIG9yYW5nZSIgaGFzIG1hcmtlcnM6IFt6el0KK1BBU1MgdGV4dCA6ICJhcHBs
ZSB6eiBvcmFuZ2UiIGhhcyBtYXJrZXJzOiBbenpdCitQQVNTIHRleHQgOiAiYXBwbGUgb3Jhbmdl
IHp6IiBoYXMgbWFya2VyczogW3p6XQorUEFTUyB0ZXh0IDogInp6eiIgaGFzIG1hcmtlcnM6IFtd
CitQQVNTIHRleHQgOiAiSSB3b3VsZCBsaWtlIHRvIHNsZWVwLCB6enoiIGhhcyBtYXJrZXJzOiBb
XQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2st
YXN5bmMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1hc3lu
Yy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjcyNzBhMzM1MDg1MGRiNTViNzllMDQ2ODI1OTNlZDMwNjBkZjBh
ZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxs
Y2hlY2stYXN5bmMuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2VkaXRp
bmcuanMiPjwvc2NyaXB0PgorPHN0eWxlPgorLmVkaXRpbmcgeworICAgIGJvcmRlcjogMnB4IHNv
bGlkIHJlZDsKKyAgICBwYWRkaW5nOiA2cHg7CisgICAgZm9udC1zaXplOiAxOHB4OworfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHByZSBpZD0iZGVzY3JpcHRpb24iPjwvcHJlPgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8ZGl2IGlkPSJjb250YWluZXIiPjwvZGl2PgorCis8c2Ny
aXB0PgorZGVzY3JpcHRpb24oIlRlc3QgZm9yIFVuaWZpZWQgU3BlbGwgQ2hlY2tlciAmIEFzeW5j
IFNwZWxsIENoZWNrZXIuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitpZiAod2luZG93Lmlu
dGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQoZG9j
dW1lbnQsIHRydWUpOworCit2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2NvbnRhaW5lcicpOworZnVuY3Rpb24gcmVtb3ZlQ2hpbGRyZW4obm9kZSkgeworICAgIHdoaWxl
IChub2RlLmZpcnN0Q2hpbGQpCisgICAgICAgIG5vZGUucmVtb3ZlQ2hpbGQobm9kZS5maXJzdENo
aWxkKTsKK30KKwordmFyIHRlc3REYXRhID0gWworICAgIHsgdGV4dDogJ3p6JywgbWFya2VkOiBb
J3p6J10gfSwKKyAgICB7IHRleHQ6ICdhcHBsZSx6eixvcmFuZ2UnLCBtYXJrZWQ6IFsnenonXSB9
LAorICAgIHsgdGV4dDogJ3p6LHp6JywgbWFya2VkOiBbJ3p6JywnenonXSB9LAorICAgIHsgdGV4
dDogJ3p6IHp6IHp6JywgbWFya2VkOiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6
ICcgenogenogenogJywgbWFya2VkOiBbJ3p6JywgJ3p6JywgJ3p6J10gfSwKKyAgICB7IHRleHQ6
ICd6eiBhcHBsZSBvcmFuZ2UnLCBtYXJrZWQ6IFsnenonXSB9LAorICAgIHsgdGV4dDogJ2FwcGxl
IHp6IG9yYW5nZScsIG1hcmtlZDogWyd6eiddIH0sCisgICAgeyB0ZXh0OiAnYXBwbGUgb3Jhbmdl
IHp6JywgbWFya2VkOiBbJ3p6J10gfSwKKyAgICB7IHRleHQ6ICd6enonLCBtYXJrZWQ6IFtdIH0s
CisgICAgeyB0ZXh0OiAnSSB3b3VsZCBsaWtlIHRvIHNsZWVwLCB6enonLCBtYXJrZWQ6IFtdIH0K
K107CisKK3ZhciB0ZXN0Tm8gPSAwOworZnVuY3Rpb24gZG9UZXN0SWZBbnkoKSB7CisgICAgdmFy
IG5leHQgPSB0ZXN0RGF0YS5zaGlmdCgpOworICAgIGlmIChuZXh0KQorICAgICAgICByZXR1cm4g
d2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKXsgZG9UZXN0KCsrdGVzdE5vLCBuZXh0LnRleHQs
IG5leHQubWFya2VkKTsgfSwgMCk7CisKKyAgICAvLyBObyBtb3JlIHRlc3RzLgorICAgIHJlbW92
ZUNoaWxkcmVuKGNvbnRhaW5lcik7CisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAg
IGludGVybmFscy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZChkb2N1bWVudCwgZmFsc2Up
OworCisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxz
ZSk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9
CisKK2Z1bmN0aW9uIGNyZWF0ZUVkaXRhYmxlRWxlbWVudChpZCkgeworICAgIHZhciBlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZS5zZXRBdHRyaWJ1dGUoImNvbnRlbnRF
ZGl0YWJsZSIsICJ0cnVlIik7CisgICAgZS5jbGFzc05hbWUgPSAnZWRpdGluZyc7CisgICAgZS5p
ZCA9IGlkOworCisgICAgcmV0dXJuIGU7Cit9CisKK2Z1bmN0aW9uIHR5cGVUZXh0KGUsIHRleHQp
IHsKKyAgICBlLmZvY3VzKCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHR5cGVDaGFyYWN0ZXJDb21tYW5kKHRleHRbaV0pOworICAgIH0KKyAg
ICB0eXBlQ2hhcmFjdGVyQ29tbWFuZCgnLicpOworfQorCitmdW5jdGlvbiBkb1Rlc3QodGVzdE5v
LCB0ZXh0LCBtYXJrZWQpIHsKKyAgICByZW1vdmVDaGlsZHJlbihjb250YWluZXIpOworICAgIHZh
ciBpZCA9ICJzcGVsbGluZyIgKyB0ZXN0Tm87CisgICAgdmFyIGUgPSBjcmVhdGVFZGl0YWJsZUVs
ZW1lbnQoaWQpOworICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChlKTsKKworICAgIHR5cGVUZXh0
KGUsIHRleHQpOworCisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1cm47
CisKKyAgICB0cnlWZXJpZnkoMTAsIGlkLCB0ZXh0LCBtYXJrZWQsIDEpOworfQorCitmdW5jdGlv
biB0cnlWZXJpZnkocmVzdFRyeSwgaWQsIHRleHQsIG1hcmtlZCwgbnNsZWVwKSB7CisgICAgLy8g
Tm8gbW9yZSB0cnkuCisgICAgaWYgKHJlc3RUcnkgPD0gMCkgeworICAgICAgICB0ZXN0RmFpbGVk
KCd0ZXh0IDogIicgKyB0ZXh0ICsgJyIgc2hvdWxkIGhhdmUgbWFya2VyczogWycgKyBtYXJrZWQg
KyAnXScpOworICAgICAgICBzZXRUaW1lb3V0KGRvVGVzdElmQW55LCAwKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHZhciBzdWNjZXNzID0gdHJ1ZTsKKyAgICB2YXIgZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICB2YXIgbnVtTWFya2VkID0gaW50ZXJuYWxzLm1h
cmtlckNvdW50Rm9yTm9kZShlLmZpcnN0Q2hpbGQsICJzcGVsbGluZyIpOworICAgIHZhciBzdWNj
ZXNzID0gbnVtTWFya2VkID09IG1hcmtlZC5sZW5ndGg7CisKKyAgICBpZiAoc3VjY2Vzcykgewor
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bU1hcmtlZDsgKytpKSB7CisgICAgICAgICAg
ICB2YXIgcmFuZ2UgPSBpbnRlcm5hbHMubWFya2VyUmFuZ2VGb3JOb2RlKGUuZmlyc3RDaGlsZCwg
InNwZWxsaW5nIiwgaSk7CisgICAgICAgICAgICBpZiAocmFuZ2UudG9TdHJpbmcoKSAhPSBtYXJr
ZWRbaV0pCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGZhbHNlOworICAgICAgICB9CisgICAg
fQorCisgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgdGVzdFBhc3NlZCgndGV4dCA6ICInICsg
dGV4dCArICciIGhhcyBtYXJrZXJzOiBbJyArIG1hcmtlZCArICddJyk7CisgICAgICAgIHNldFRp
bWVvdXQoZG9UZXN0SWZBbnksIDApOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFR5cGUgJy4n
IHRvIGludm9rZSBhc3luY2hyb25vdXNlIHNwZWxsIGNoZWNraW5nIGFnYWluLgorICAgICAgICB0
eXBlQ2hhcmFjdGVyQ29tbWFuZCgnLicpOworICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg
eyB0cnlWZXJpZnkocmVzdFRyeSAtIDEsIGlkLCB0ZXh0LCBtYXJrZWQsIG5zbGVlcCAqIDIpOyB9
LCBuc2xlZXApOworICAgIH0KK30KKworZG9UZXN0SWZBbnkoKTsKKwordmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlmaWVkLWVt
dWxhdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9zcGVsbGluZy11bmlm
aWVkLWVtdWxhdGlvbi5odG1sCmluZGV4IDUyZjk5N2IxOTE3YWY3ZGJhOThlYTc5MGM2NmZkNTRi
NDczZjRhN2UuLjJhOWVlYjdiYzIwMDFhYjg4MzRlNjllZjg4OTg0ZTYzMTVlNjYwNWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctdW5pZmllZC1lbXVs
YXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL3NwZWxsaW5nLXVu
aWZpZWQtZW11bGF0aW9uLmh0bWwKQEAgLTg0LDYgKzg0LDkgQEAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0ZXN0RGF0YS5sZW5ndGg7ICsraSkgewogICAgIHBlcmZvcm1UZXN0KCd0ZXN0JywgdGVzdERh
dGFbaV0pOwogfQogCitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0VW5p
ZmllZFRleHRDaGVja2luZ0VuYWJsZWQoZG9jdW1lbnQsIGZhbHNlKTsKKwogdmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>