<?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>35920</bug_id>
          
          <creation_ts>2010-03-09 07:13:30 -0800</creation_ts>
          <short_desc>Test for referer information being stripped when the header is removed in willSendRequest</short_desc>
          <delta_ts>2010-03-12 06:06:44 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jochen</cc>
    
    <cc>jorlow</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>197560</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:13:30 -0800</bug_when>
    <thetext>Test for referer information being stripped when the header is removed in willSendRequest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197562</commentid>
    <comment_count>1</comment_count>
      <attachid>50302</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:15:28 -0800</bug_when>
    <thetext>Created attachment 50302
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197563</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-09 07:16:51 -0800</bug_when>
    <thetext>Attachment 50302 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/LayoutTestController.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197565</commentid>
    <comment_count>3</comment_count>
      <attachid>50303</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:22:12 -0800</bug_when>
    <thetext>Created attachment 50303
https://bugs.webkit.org/show_bug.cgi?id=35920</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197566</commentid>
    <comment_count>4</comment_count>
      <attachid>50303</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:23:44 -0800</bug_when>
    <thetext>Comment on attachment 50303
https://bugs.webkit.org/show_bug.cgi?id=35920

Please look esp. at the DumpRenderTree/win part - I failed to setup a build environment for windows, so I couldn&apos;t test :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197568</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-09 07:27:36 -0800</bug_when>
    <thetext>Attachment 50303 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/LayoutTestController.h:35:  Alphabetical sorting problem.  [build/include_order] [4]
WebKitTools/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197571</commentid>
    <comment_count>6</comment_count>
      <attachid>50305</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:36:41 -0800</bug_when>
    <thetext>Created attachment 50305
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197573</commentid>
    <comment_count>7</comment_count>
      <attachid>50305</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 07:38:25 -0800</bug_when>
    <thetext>Comment on attachment 50305
patch

I don&apos;t read objective-C, but this looks good to me.  I&apos;m going to leave this here for a bit so someone who actually understands objective-C can look at it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197574</commentid>
    <comment_count>8</comment_count>
      <attachid>50303</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-09 07:38:32 -0800</bug_when>
    <thetext>Comment on attachment 50303
https://bugs.webkit.org/show_bug.cgi?id=35920

&gt; diff --git a/LayoutTests/http/tests/security/no-referer.html b/LayoutTests/http/tests/security/no-referer.html
&gt; new file mode 100644
&gt; index 0000000..31e1625
&gt; --- /dev/null
&gt; +++ b/LayoutTests/http/tests/security/no-referer.html
&gt; @@ -0,0 +1,9 @@
&gt; +&lt;script&gt;
&gt; +if (window.layoutTestController) {
&gt; +    layoutTestController.waitUntilDone();
&gt; +    layoutTestController.dumpAsText();
&gt; +    layoutTestController.setWillSendRequestClearHeader(&quot;Referer&quot;);
&gt; +}
&gt; +&lt;/script&gt;
&gt; +&lt;div id=log&gt;&lt;/div&gt;
&gt; +&lt;iframe src=&quot;http://127.0.0.1:8000/security/resources/no-referer-frame.php&quot;&gt;&lt;/iframe&gt;
&gt; diff --git a/LayoutTests/http/tests/security/resources/no-referer-frame.php b/LayoutTests/http/tests/security/resources/no-referer-frame.php

Does this have to be done with an iframe?  Is it the normal way to do it?

&gt; new file mode 100644
&gt; index 0000000..f00b9bb
&gt; --- /dev/null
&gt; +++ b/LayoutTests/http/tests/security/resources/no-referer-frame.php
&gt; @@ -0,0 +1,39 @@
&gt; +&lt;script&gt;
&gt; +function log(message)
&gt; +{
&gt; +    parent.document.getElementById(&quot;log&quot;).innerHTML += message + &quot;&lt;br&gt;&quot;;
&gt; +}
&gt; +
&gt; +if (document.referrer.toString() != &quot;&quot;) {
&gt; +  log(&quot;JavaScript: FAIL&quot;);
&gt; +} else {
&gt; +  log(&quot;JavaScript: PASS&quot;);
&gt; +}

No {}&apos;s



I don&apos;t know enough about DRT to r+ this, but it looks pretty solid to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197576</commentid>
    <comment_count>9</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-09 07:39:26 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 50303 [details])
&gt; &gt; diff --git a/LayoutTests/http/tests/security/no-referer.html b/LayoutTests/http/tests/security/no-referer.html
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..31e1625
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/LayoutTests/http/tests/security/no-referer.html
&gt; &gt; @@ -0,0 +1,9 @@
&gt; &gt; +&lt;script&gt;
&gt; &gt; +if (window.layoutTestController) {
&gt; &gt; +    layoutTestController.waitUntilDone();
&gt; &gt; +    layoutTestController.dumpAsText();
&gt; &gt; +    layoutTestController.setWillSendRequestClearHeader(&quot;Referer&quot;);
&gt; &gt; +}
&gt; &gt; +&lt;/script&gt;
&gt; &gt; +&lt;div id=log&gt;&lt;/div&gt;
&gt; &gt; +&lt;iframe src=&quot;http://127.0.0.1:8000/security/resources/no-referer-frame.php&quot;&gt;&lt;/iframe&gt;
&gt; &gt; diff --git a/LayoutTests/http/tests/security/resources/no-referer-frame.php b/LayoutTests/http/tests/security/resources/no-referer-frame.php
&gt; 
&gt; Does this have to be done with an iframe?  Is it the normal way to do it?
&gt; 
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..f00b9bb
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/LayoutTests/http/tests/security/resources/no-referer-frame.php
&gt; &gt; @@ -0,0 +1,39 @@
&gt; &gt; +&lt;script&gt;
&gt; &gt; +function log(message)
&gt; &gt; +{
&gt; &gt; +    parent.document.getElementById(&quot;log&quot;).innerHTML += message + &quot;&lt;br&gt;&quot;;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +if (document.referrer.toString() != &quot;&quot;) {
&gt; &gt; +  log(&quot;JavaScript: FAIL&quot;);
&gt; &gt; +} else {
&gt; &gt; +  log(&quot;JavaScript: PASS&quot;);
&gt; &gt; +}
&gt; 
&gt; No {}&apos;s
&gt; 
&gt; 
&gt; 
&gt; I don&apos;t know enough about DRT to r+ this, but it looks pretty solid to me.

(Or obj C)  So we still need an obj C reviewer to take a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197577</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 07:42:31 -0800</bug_when>
    <thetext>&gt; Does this have to be done with an iframe?  Is it the normal way to do it?

Our loading code is sufficiently complicated that it makes sense to test as many of our load paths as we can.

In this case, he wants to check the document.referrer property, which needs a document (and hence a frame).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197579</commentid>
    <comment_count>11</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:44:01 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 50303 [details])
&gt; &gt; diff --git a/LayoutTests/http/tests/security/no-referer.html b/LayoutTests/http/tests/security/no-referer.html
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..31e1625
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/LayoutTests/http/tests/security/no-referer.html
&gt; &gt; @@ -0,0 +1,9 @@
&gt; &gt; +&lt;script&gt;
&gt; &gt; +if (window.layoutTestController) {
&gt; &gt; +    layoutTestController.waitUntilDone();
&gt; &gt; +    layoutTestController.dumpAsText();
&gt; &gt; +    layoutTestController.setWillSendRequestClearHeader(&quot;Referer&quot;);
&gt; &gt; +}
&gt; &gt; +&lt;/script&gt;
&gt; &gt; +&lt;div id=log&gt;&lt;/div&gt;
&gt; &gt; +&lt;iframe src=&quot;http://127.0.0.1:8000/security/resources/no-referer-frame.php&quot;&gt;&lt;/iframe&gt;
&gt; &gt; diff --git a/LayoutTests/http/tests/security/resources/no-referer-frame.php b/LayoutTests/http/tests/security/resources/no-referer-frame.php
&gt; 
&gt; Does this have to be done with an iframe?  Is it the normal way to do it?

It&apos;s mostly copied from http/tests/security/credentials-in-referer.html

&gt; 
&gt; &gt; new file mode 100644
&gt; &gt; index 0000000..f00b9bb
&gt; &gt; --- /dev/null
&gt; &gt; +++ b/LayoutTests/http/tests/security/resources/no-referer-frame.php
&gt; &gt; @@ -0,0 +1,39 @@
&gt; &gt; +&lt;script&gt;
&gt; &gt; +function log(message)
&gt; &gt; +{
&gt; &gt; +    parent.document.getElementById(&quot;log&quot;).innerHTML += message + &quot;&lt;br&gt;&quot;;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +if (document.referrer.toString() != &quot;&quot;) {
&gt; &gt; +  log(&quot;JavaScript: FAIL&quot;);
&gt; &gt; +} else {
&gt; &gt; +  log(&quot;JavaScript: PASS&quot;);
&gt; &gt; +}
&gt; 
&gt; No {}&apos;s
&gt; 
&gt; 
&gt; 
&gt; I don&apos;t know enough about DRT to r+ this, but it looks pretty solid to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197585</commentid>
    <comment_count>12</comment_count>
      <attachid>50308</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 07:53:13 -0800</bug_when>
    <thetext>Created attachment 50308
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197600</commentid>
    <comment_count>13</comment_count>
      <attachid>50308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-03-09 08:51:03 -0800</bug_when>
    <thetext>Comment on attachment 50308
patch

Normally we use the misspelling &quot;referer&quot; only in the actual header name on the wire and use the normal English word &quot;referrer&quot; everywhere else.

&gt;  #include &lt;JavaScriptCore/JSObjectRef.h&gt;
&gt;  #include &lt;JavaScriptCore/JSRetainPtr.h&gt;
&gt; -#include &lt;wtf/RefCounted.h&gt;
&gt; +
&gt; +#include &lt;set&gt;
&gt;  #include &lt;string&gt;
&gt;  #include &lt;vector&gt;
&gt;  
&gt; +#include &lt;wtf/RefCounted.h&gt;

Normally our includes are in a single paragraph sorted as if by the sort tool, not separate logical paragraphs.

&gt; +    const std::set&lt;std::string&gt;&amp; clearHeaders = gLayoutTestController-&gt;willSendRequestClearHeaders();

Normally we do &quot;using namespace std&quot; in our implementation files rather than using the &quot;std::&quot; prefix that is required in headers. Unless there&apos;s a name conflict of some sort.

No downside in adding a test, unless it has intermittent failures, so we should land this. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197608</commentid>
    <comment_count>14</comment_count>
      <attachid>50313</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-09 09:09:08 -0800</bug_when>
    <thetext>Created attachment 50313
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197612</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-09 09:12:59 -0800</bug_when>
    <thetext>Attachment 50313 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp:41:  Use &apos;using namespace std;&apos; instead of &apos;using std::set;&apos;.  [build/using_std] [4]
WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp:42:  Use &apos;using namespace std;&apos; instead of &apos;using std::string;&apos;.  [build/using_std] [4]
Total errors found: 2 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197614</commentid>
    <comment_count>16</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-03-09 09:13:47 -0800</bug_when>
    <thetext>I also added a missing ; in ResourceLoaderDelegate.mm:

[nsHeader release]; &lt;-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197615</commentid>
    <comment_count>17</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-03-09 09:14:34 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Attachment 50313 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp:41:  Use &apos;using
&gt; namespace std;&apos; instead of &apos;using std::set;&apos;.  [build/using_std] [4]
&gt; WebKitTools/DumpRenderTree/win/ResourceLoadDelegate.cpp:42:  Use &apos;using
&gt; namespace std;&apos; instead of &apos;using std::string;&apos;.  [build/using_std] [4]
&gt; Total errors found: 2 in 10 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

the original file already has use std::wstring; 

I assume there&apos;s a reason it doesn&apos;t use &quot;using namespace std;&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197617</commentid>
    <comment_count>18</comment_count>
      <attachid>50313</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 09:15:29 -0800</bug_when>
    <thetext>Comment on attachment 50313
patch

Please address style nits.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197618</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-03-09 09:16:16 -0800</bug_when>
    <thetext>&gt; the original file already has use std::wstring; 
&gt; 
&gt; I assume there&apos;s a reason it doesn&apos;t use &quot;using namespace std;&quot;?

I suspect the original file is wrong.  We haven&apos;t had the style bot for that long.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>197791</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-03-09 14:54:08 -0800</bug_when>
    <thetext>Shouldn&apos;t the test be added to Skipped list for platforms that don&apos;t implement the new call?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198614</commentid>
    <comment_count>21</comment_count>
      <attachid>50500</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-11 07:30:29 -0800</bug_when>
    <thetext>Created attachment 50500
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198615</commentid>
    <comment_count>22</comment_count>
      <attachid>50501</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-11 07:33:19 -0800</bug_when>
    <thetext>Created attachment 50501
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198618</commentid>
    <comment_count>23</comment_count>
      <attachid>50503</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-11 07:34:26 -0800</bug_when>
    <thetext>Created attachment 50503
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198619</commentid>
    <comment_count>24</comment_count>
    <who name="">jochen</who>
    <bug_when>2010-03-11 07:36:44 -0800</bug_when>
    <thetext>Hopefully I got the changelog right now..

updates:
- fixed the nits
- actually managed to compile the code on windows and verified it&apos;s working there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198634</commentid>
    <comment_count>25</comment_count>
      <attachid>50503</attachid>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-03-11 08:10:48 -0800</bug_when>
    <thetext>Comment on attachment 50503
patch

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 70369a7..bd4c368 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,17 @@
&gt; +2010-03-09  Jochen Eisinger  &lt;jochen@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Test for referrer information being stripped when the header is removed in willSendRequest
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=35920
&gt; +
&gt; +        * http/tests/security/no-referrer-expected.txt: Added.
&gt; +        * http/tests/security/no-referrer.html: Added.
&gt; +        * http/tests/security/resources/no-referrer-frame.php: Added.
&gt; +        * http/tests/security/resources/no-referrer.php: Added.
&gt; +	* platform/gtk/Skipped:
&gt; +	* platform/qt/Skipped:

Use spaces, not tabs.

r=me (+ Darin on ObjC bits)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198640</commentid>
    <comment_count>26</comment_count>
      <attachid>50507</attachid>
    <who name="">jochen</who>
    <bug_when>2010-03-11 08:27:08 -0800</bug_when>
    <thetext>Created attachment 50507
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198999</commentid>
    <comment_count>27</comment_count>
      <attachid>50507</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-12 06:06:37 -0800</bug_when>
    <thetext>Comment on attachment 50507
patch

Clearing flags on attachment: 50507

Committed r55893: &lt;http://trac.webkit.org/changeset/55893&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>199000</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-03-12 06:06:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50302</attachid>
            <date>2010-03-09 07:15:28 -0800</date>
            <delta_ts>2010-03-09 07:22:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-35920-20100309161526.patch</filename>
            <type>text/plain</type>
            <size>11998</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5kNTA3NTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJlciBpbmZv
cm1hdGlvbiBiZWluZyBzdHJpcHBlZCB3aGVuIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBpbiB3aWxs
U2VuZFJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTIwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVy
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bm8tcmVmZXJlci1mcmFtZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwOiBBZGRlZC4KKwogMjAxMC0wMy0wOCAgSm9hbm1h
cmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L25vLXJlZmVyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ODUxNTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0phdmFT
Y3JpcHQ6IFBBU1MKK0hUVFAgUmVmZXJlcjogUEFTUworRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJl
ZmVyZXIpOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEphdmFTY3JpcHQpOiBQQVNTCitTeW5jIFhI
UjogUEFTUworQVN5bmMgWEhSOiBQQVNTCitET05FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMxZTE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigi
UmVmZXJlciIpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJh
bWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJlci1mcmFtZS5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYjliYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhw
CkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAi
IikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7CisgIGxvZygiSmF2YVNj
cmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVGRVJF
UiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnSFRUUCBS
ZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdIVFRQIFJlZmVyZXI6IFBB
U1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICJuby1yZWZlcmVyLnBo
cCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBsb2coIlN5bmMgWEhSOiAiICsg
KHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6ICJQQVNTIikp
OworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJlci5waHAiLCB0cnVlKTsKKyAgICB4aHIu
c2VuZChudWxsKTsKKyAgICB4aHIub25sb2FkID0gb25YSFJMb2FkOworfQorCitmdW5jdGlvbiBv
blhIUkxvYWQoZXZ0KQoreworICAgIGxvZygiQVN5bmMgWEhSOiAiICsgKGV2dC50YXJnZXQucmVz
cG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAiRkFJTCIgOiAiUEFTUyIpKTsKKyAgICBs
b2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJuby1yZWZlcmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYzlhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocApA
QCAtMCwwICsxLDE0IEBACis8P3BocAoraGVhZGVyKCJDYWNoZTogbm8tY2FjaGUsIG5vLXN0b3Jl
Iik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsKK2lmICgkcmVmZXIgJiYg
JHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVybmFsIHNjcmlwdCAoSFRUUCBSZWZl
cmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQoImxvZygnRXh0ZXJuYWwgc2NyaXB0
IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+CitpZiAoZG9jdW1lbnQucmVmZXJyZXIu
dG9TdHJpbmcoKSAhPSAiIikgeworICAgIGxvZygnRXh0ZXJuYWwgc2NyaXB0IChKYXZhU2NyaXB0
KTogRkFJTCcpOworfSBlbHNlIHsKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlw
dCk6IFBBU1MnKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWZiZDcyLi45NTA5Y2Y3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbnRyb2R1Y2Ugc2V0
V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIgdG8gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gc2Vs
ZWN0aXZlbHkgcmVtb3ZlIGhlYWRlcnMgaW4gd2lsbFNlbmRSZXF1ZXN0LiBVc2VkIGluIGh0dHAv
dGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTkyMAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVycyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNlbmRSZXF1
ZXN0Q2xlYXJIZWFkZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpy
ZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpd
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3Bw
OgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisKIDIw
MTAtMDMtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoYnV0IHN1Z2dlc3RlZCBieSBTdGV2ZSBGYWxrZW5idXJnIGFuZCBm
aXhpbmcgYSBib25laGVhZGVkIG1pc3Rha2Ugb24gbXkgcGFydCBsYXN0IHdlZWspCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDNhN2E3My4uYTllYmU4MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTAyMyw2ICsxMDIzLDI1IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRl
ckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgbWFj
ICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGhlYWRlcihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7
CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGhlYWRlci5nZXQoKSk7CisgICAgY2hhciogaGVhZGVyQnVmZmVyID0gbmV3IGNoYXJbbWF4
TGVuZ3RoICsgMV07CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhl
YWRlckJ1ZmZlciwgbWF4TGVuZ3RoICsgMSk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRXaWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcihoZWFkZXJCdWZmZXIpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICAvLyBIYXMgY3Jvc3MtcGxhdGZvcm0gaW1wbGVtZW50YXRpb24KQEAgLTE0NjMsNiArMTQ4Miw3
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsIHNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwi
LCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsIHNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFdpbmRvd0lzS2V5Iiwgc2V0V2luZG93SXNLZXlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXgg
MTlhMDNhMy4uMjNlOWI2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8c2V0PgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTE4Niw2ICsxODcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFRvRHVtcCk7CiAgICAgdm9p
ZCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKKyAgICBjb25zdCBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4mIHdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOyB9CisgICAgdm9pZCBzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlcihzdGQ6OnN0cmluZyBoZWFkZXIpIHsgbV93aWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcnMuaW5zZXJ0KGhlYWRlcik7IH0KKwogICAgIGJvb2wgd2lsbFNlbmRSZXF1ZXN0
UmV0dXJuc051bGwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
OyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChib29sIHJldHVybnNO
dWxsKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSByZXR1cm5zTnVsbDsgfQogCkBA
IC0yODQsNiArMjg4LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0
aW9uUGFzc3dvcmQ7IAogICAgIHN0ZDo6c3RyaW5nIG1fdGVzdFBhdGhPclVSTDsKICAgICBzdGQ6
OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOyAgICAvLyBlbXB0eSBzdHJpbmcgaWYgbm8gaGFz
aAorCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFk
ZXJzOwogICAgIAogICAgIC8vIG9yaWdpbnMgd2hpY2ggaGF2ZSBiZWVuIGdyYW50ZWQgZGVza3Rv
cCBub3RpZmljYXRpb24gYWNjZXNzCiAgICAgc3RkOjp2ZWN0b3I8SlNTdHJpbmdSZWY+IG1fZGVz
a3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZmODJlMDEu
LmYxYWE1ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTEyMSwxMCArMTIxLDEwIEBACiAgICAgcmV0dXJu
IEAiPHVua25vd24+IjsKIH0KIAotLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAq
KXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlNVUkxSZXF1ZXN0ICop
bmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNw
b25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKKy0oTlNVUkxS
ZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxT
ZW5kUmVxdWVzdDogKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3Vy
Y2UgKilkYXRhU291cmNlCiB7CiAgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFNlbmRSZXF1ZXN0ICVA
IHJlZGlyZWN0UmVzcG9uc2UgJUAiLCBpZGVudGlmaWVyLCBbbmV3UmVxdWVzdCBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVk
aXJlY3RSZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtyZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLAogICAgICAgICAgICAgW3JlZGlyZWN0UmVzcG9uc2UgX2Ry
dF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYoIiVz
XG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBOU1VSTCAqdXJsID0gW25ld1JlcXVlc3Qg
VVJMXTsKKyAgICBOU1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKICAgICBOU1N0cmluZyAqaG9z
dCA9IFt1cmwgaG9zdF07CiAgICAgaWYgKGhvc3QKICAgICAgICAgJiYgKE5TT3JkZXJlZFNhbWUg
PT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdIHx8IE5TT3Jk
ZXJlZFNhbWUgPT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cHMi
XSkKQEAgLTE1MSw3ICsxNTEsMTUgQEAKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRD
b250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLCB1cmwpKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgcmV0dXJuIG5ld1JlcXVlc3Q7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbmV3UmVx
dWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsKKyAgICBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4mIGNsZWFySGVhZGVycyA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1
ZXN0Q2xlYXJIZWFkZXJzKCk7CisgICAgZm9yIChzdGQ6OnNldDxzdGQ6OnN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJI
ZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgeworICAgICAgICBOU1N0cmluZyAqbnNIZWFkZXIgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXTsKKyAg
ICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRl
cl07CisgICAgICAgIFtuc0hlYWRlciByZWxlYXNlXQorICAgIH0KKworICAgIHJldHVybiBbbmV3
UmVxdWVzdCBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2
IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJj
ZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCmluZGV4IDE5YmY4NGEu
LmRmMGM1NDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcApAQCAtMjU0LDYgKzI1NCwxMCBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoCiAg
ICAgICAgIHJldHVybiBTX09LOwogICAgIH0KIAorICAgIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiYgY2xlYXJIZWFkZXJzID0gZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcnMoKTsKKyAgICBmb3IgKHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhl
YWRlcnMuZW5kKCk7ICsraGVhZGVyKQorICAgICAgcmVxdWVzdC0+Y2xlYXJIVFRQSGVhZGVyRmll
bGQoKmhlYWRlcik7CisKICAgICByZXF1ZXN0LT5BZGRSZWYoKTsKICAgICAqbmV3UmVxdWVzdCA9
IHJlcXVlc3Q7CiAgICAgcmV0dXJuIFNfT0s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50303</attachid>
            <date>2010-03-09 07:22:12 -0800</date>
            <delta_ts>2010-03-09 07:53:01 -0800</delta_ts>
            <desc>https://bugs.webkit.org/show_bug.cgi?id=35920</desc>
            <filename>bug-35920-20100309162210.patch</filename>
            <type>text/plain</type>
            <size>11998</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5kNTA3NTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJlciBpbmZv
cm1hdGlvbiBiZWluZyBzdHJpcHBlZCB3aGVuIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBpbiB3aWxs
U2VuZFJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTIwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVy
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bm8tcmVmZXJlci1mcmFtZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwOiBBZGRlZC4KKwogMjAxMC0wMy0wOCAgSm9hbm1h
cmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L25vLXJlZmVyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ODUxNTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0phdmFT
Y3JpcHQ6IFBBU1MKK0hUVFAgUmVmZXJlcjogUEFTUworRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJl
ZmVyZXIpOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEphdmFTY3JpcHQpOiBQQVNTCitTeW5jIFhI
UjogUEFTUworQVN5bmMgWEhSOiBQQVNTCitET05FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMxZTE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigi
UmVmZXJlciIpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJh
bWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJlci1mcmFtZS5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYjliYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhw
CkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAi
IikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7CisgIGxvZygiSmF2YVNj
cmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVGRVJF
UiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnSFRUUCBS
ZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdIVFRQIFJlZmVyZXI6IFBB
U1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICJuby1yZWZlcmVyLnBo
cCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBsb2coIlN5bmMgWEhSOiAiICsg
KHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6ICJQQVNTIikp
OworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJlci5waHAiLCB0cnVlKTsKKyAgICB4aHIu
c2VuZChudWxsKTsKKyAgICB4aHIub25sb2FkID0gb25YSFJMb2FkOworfQorCitmdW5jdGlvbiBv
blhIUkxvYWQoZXZ0KQoreworICAgIGxvZygiQVN5bmMgWEhSOiAiICsgKGV2dC50YXJnZXQucmVz
cG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAiRkFJTCIgOiAiUEFTUyIpKTsKKyAgICBs
b2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJuby1yZWZlcmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYzlhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocApA
QCAtMCwwICsxLDE0IEBACis8P3BocAoraGVhZGVyKCJDYWNoZTogbm8tY2FjaGUsIG5vLXN0b3Jl
Iik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsKK2lmICgkcmVmZXIgJiYg
JHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVybmFsIHNjcmlwdCAoSFRUUCBSZWZl
cmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQoImxvZygnRXh0ZXJuYWwgc2NyaXB0
IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+CitpZiAoZG9jdW1lbnQucmVmZXJyZXIu
dG9TdHJpbmcoKSAhPSAiIikgeworICAgIGxvZygnRXh0ZXJuYWwgc2NyaXB0IChKYXZhU2NyaXB0
KTogRkFJTCcpOworfSBlbHNlIHsKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlw
dCk6IFBBU1MnKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWZiZDcyLi45NTA5Y2Y3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwlJbnRyb2R1Y2Ugc2V0
V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIgdG8gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gc2Vs
ZWN0aXZlbHkgcmVtb3ZlIGhlYWRlcnMgaW4gd2lsbFNlbmRSZXF1ZXN0LiBVc2VkIGluIGh0dHAv
dGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNTkyMAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXJDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OndpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVycyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0V2lsbFNlbmRSZXF1
ZXN0Q2xlYXJIZWFkZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxv
YWREZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bUmVzb3VyY2VMb2FkRGVsZWdhdGUgd2ViVmlldzpy
ZXNvdXJjZTp3aWxsU2VuZFJlcXVlc3Q6cmVkaXJlY3RSZXNwb25zZTpmcm9tRGF0YVNvdXJjZTpd
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3Bw
OgorICAgICAgICAoUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCk6CisKIDIw
MTAtMDMtMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoYnV0IHN1Z2dlc3RlZCBieSBTdGV2ZSBGYWxrZW5idXJnIGFuZCBm
aXhpbmcgYSBib25laGVhZGVkIG1pc3Rha2Ugb24gbXkgcGFydCBsYXN0IHdlZWspCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5k
ZXggNDNhN2E3My4uYTllYmU4MSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMTAyMyw2ICsxMDIzLDI1IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRl
ckNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICAvLyBIYXMgbWFj
ICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgorICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgSlNSZXRh
aW5QdHI8SlNTdHJpbmdSZWY+IGhlYWRlcihBZG9wdCwgSlNWYWx1ZVRvU3RyaW5nQ29weShjb250
ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbikpOworICAgIEFTU0VSVCghKmV4Y2VwdGlvbik7
CisKKyAgICBzaXplX3QgbWF4TGVuZ3RoID0gSlNTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdT
aXplKGhlYWRlci5nZXQoKSk7CisgICAgY2hhciogaGVhZGVyQnVmZmVyID0gbmV3IGNoYXJbbWF4
TGVuZ3RoICsgMV07CisgICAgSlNTdHJpbmdHZXRVVEY4Q1N0cmluZyhoZWFkZXIuZ2V0KCksIGhl
YWRlckJ1ZmZlciwgbWF4TGVuZ3RoICsgMSk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRXaWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcihoZWFkZXJCdWZmZXIpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRXaWxsU2VuZFJlcXVl
c3RSZXR1cm5zTnVsbENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAg
ICAvLyBIYXMgY3Jvc3MtcGxhdGZvcm0gaW1wbGVtZW50YXRpb24KQEAgLTE0NjMsNiArMTQ4Miw3
IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlv
bnMoKQogICAgICAgICB7ICJzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZSIsIHNldFVz
ZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkIiwgc2V0VXNlclN0eWxlU2hlZXRFbmFibGVkQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbiIsIHNldFVz
ZXJTdHlsZVNoZWV0TG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlciIsIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwi
LCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdCIsIHNldFdpbGxTZW5k
UmVxdWVzdFJldHVybnNOdWxsT25SZWRpcmVjdENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFdpbmRvd0lzS2V5Iiwgc2V0V2luZG93SXNLZXlDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXgg
MTlhMDNhMy4uMjNlOWI2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFp
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8c2V0PgogI2lu
Y2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTE4Niw2ICsxODcsOSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFRvRHVtcCk7CiAgICAgdm9p
ZCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKKyAgICBjb25zdCBzdGQ6OnNldDxz
dGQ6OnN0cmluZz4mIHdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpIGNvbnN0IHsgcmV0dXJu
IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOyB9CisgICAgdm9pZCBzZXRXaWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlcihzdGQ6OnN0cmluZyBoZWFkZXIpIHsgbV93aWxsU2VuZFJlcXVlc3RD
bGVhckhlYWRlcnMuaW5zZXJ0KGhlYWRlcik7IH0KKwogICAgIGJvb2wgd2lsbFNlbmRSZXF1ZXN0
UmV0dXJuc051bGwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
OyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChib29sIHJldHVybnNO
dWxsKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSByZXR1cm5zTnVsbDsgfQogCkBA
IC0yODQsNiArMjg4LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0
aW9uUGFzc3dvcmQ7IAogICAgIHN0ZDo6c3RyaW5nIG1fdGVzdFBhdGhPclVSTDsKICAgICBzdGQ6
OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOyAgICAvLyBlbXB0eSBzdHJpbmcgaWYgbm8gaGFz
aAorCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFk
ZXJzOwogICAgIAogICAgIC8vIG9yaWdpbnMgd2hpY2ggaGF2ZSBiZWVuIGdyYW50ZWQgZGVza3Rv
cCBub3RpZmljYXRpb24gYWNjZXNzCiAgICAgc3RkOjp2ZWN0b3I8SlNTdHJpbmdSZWY+IG1fZGVz
a3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4IDZmODJlMDEu
LmYxYWE1ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTEyMSwxMCArMTIxLDEwIEBACiAgICAgcmV0dXJu
IEAiPHVua25vd24+IjsKIH0KIAotLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAoV2ViVmlldyAq
KXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlNVUkxSZXF1ZXN0ICop
bmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVkaXJlY3RSZXNw
b25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKKy0oTlNVUkxS
ZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxT
ZW5kUmVxdWVzdDogKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNV
UkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3Vy
Y2UgKilkYXRhU291cmNlCiB7CiAgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIE5TU3RyaW5nICpzdHJp
bmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFNlbmRSZXF1ZXN0ICVA
IHJlZGlyZWN0UmVzcG9uc2UgJUAiLCBpZGVudGlmaWVyLCBbbmV3UmVxdWVzdCBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwKKyAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVk
aXJlY3RSZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtyZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLAogICAgICAgICAgICAgW3JlZGlyZWN0UmVzcG9uc2UgX2Ry
dF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBwcmludGYoIiVz
XG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0xMzcsNyArMTM3LDcgQEAKICAg
ICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBOU1VSTCAqdXJsID0gW25ld1JlcXVlc3Qg
VVJMXTsKKyAgICBOU1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKICAgICBOU1N0cmluZyAqaG9z
dCA9IFt1cmwgaG9zdF07CiAgICAgaWYgKGhvc3QKICAgICAgICAgJiYgKE5TT3JkZXJlZFNhbWUg
PT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJdIHx8IE5TT3Jk
ZXJlZFNhbWUgPT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cHMi
XSkKQEAgLTE1MSw3ICsxNTEsMTUgQEAKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMgJiYgQ0ZTZXRD
b250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLCB1cmwpKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgcmV0dXJuIG5ld1JlcXVlc3Q7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVzdCAqbmV3UmVx
dWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsKKyAgICBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0
cmluZz4mIGNsZWFySGVhZGVycyA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1
ZXN0Q2xlYXJIZWFkZXJzKCk7CisgICAgZm9yIChzdGQ6OnNldDxzdGQ6OnN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJI
ZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgeworICAgICAgICBOU1N0cmluZyAqbnNIZWFkZXIgPSBb
W05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXTsKKyAg
ICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRl
cl07CisgICAgICAgIFtuc0hlYWRlciByZWxlYXNlXQorICAgIH0KKworICAgIHJldHVybiBbbmV3
UmVxdWVzdCBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2
IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJj
ZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCmluZGV4IDE5YmY4NGEu
LmRmMGM1NDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcApAQCAtMjU0LDYgKzI1NCwxMCBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoCiAg
ICAgICAgIHJldHVybiBTX09LOwogICAgIH0KIAorICAgIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3Ry
aW5nPiYgY2xlYXJIZWFkZXJzID0gZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcnMoKTsKKyAgICBmb3IgKHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6Y29uc3Rf
aXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhl
YWRlcnMuZW5kKCk7ICsraGVhZGVyKQorICAgICAgcmVxdWVzdC0+Y2xlYXJIVFRQSGVhZGVyRmll
bGQoKmhlYWRlcik7CisKICAgICByZXF1ZXN0LT5BZGRSZWYoKTsKICAgICAqbmV3UmVxdWVzdCA9
IHJlcXVlc3Q7CiAgICAgcmV0dXJuIFNfT0s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50305</attachid>
            <date>2010-03-09 07:36:41 -0800</date>
            <delta_ts>2010-03-09 07:53:07 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100309163639.patch</filename>
            <type>text/plain</type>
            <size>12007</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5kNTA3NTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJlciBpbmZv
cm1hdGlvbiBiZWluZyBzdHJpcHBlZCB3aGVuIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBpbiB3aWxs
U2VuZFJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTIwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVy
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bm8tcmVmZXJlci1mcmFtZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwOiBBZGRlZC4KKwogMjAxMC0wMy0wOCAgSm9hbm1h
cmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L25vLXJlZmVyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ODUxNTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0phdmFT
Y3JpcHQ6IFBBU1MKK0hUVFAgUmVmZXJlcjogUEFTUworRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJl
ZmVyZXIpOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEphdmFTY3JpcHQpOiBQQVNTCitTeW5jIFhI
UjogUEFTUworQVN5bmMgWEhSOiBQQVNTCitET05FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMxZTE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigi
UmVmZXJlciIpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJh
bWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJlci1mcmFtZS5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYjliYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhw
CkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAi
IikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7CisgIGxvZygiSmF2YVNj
cmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVGRVJF
UiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnSFRUUCBS
ZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdIVFRQIFJlZmVyZXI6IFBB
U1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICJuby1yZWZlcmVyLnBo
cCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBsb2coIlN5bmMgWEhSOiAiICsg
KHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6ICJQQVNTIikp
OworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJlci5waHAiLCB0cnVlKTsKKyAgICB4aHIu
c2VuZChudWxsKTsKKyAgICB4aHIub25sb2FkID0gb25YSFJMb2FkOworfQorCitmdW5jdGlvbiBv
blhIUkxvYWQoZXZ0KQoreworICAgIGxvZygiQVN5bmMgWEhSOiAiICsgKGV2dC50YXJnZXQucmVz
cG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAiRkFJTCIgOiAiUEFTUyIpKTsKKyAgICBs
b2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJuby1yZWZlcmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxYzlhMTMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocApA
QCAtMCwwICsxLDE0IEBACis8P3BocAoraGVhZGVyKCJDYWNoZTogbm8tY2FjaGUsIG5vLXN0b3Jl
Iik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsKK2lmICgkcmVmZXIgJiYg
JHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVybmFsIHNjcmlwdCAoSFRUUCBSZWZl
cmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQoImxvZygnRXh0ZXJuYWwgc2NyaXB0
IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+CitpZiAoZG9jdW1lbnQucmVmZXJyZXIu
dG9TdHJpbmcoKSAhPSAiIikgeworICAgIGxvZygnRXh0ZXJuYWwgc2NyaXB0IChKYXZhU2NyaXB0
KTogRkFJTCcpOworfSBlbHNlIHsKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlw
dCk6IFBBU1MnKTsKK30KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWZiZDcyLi5kMGViYmM0IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9k
dWNlIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIHRvIExheW91dFRlc3RDb250cm9sbGVy
IHRvIHNlbGVjdGl2ZWx5IHJlbW92ZSBoZWFkZXJzIGluIHdpbGxTZW5kUmVxdWVzdC4gVXNlZCBp
biBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5MjAKKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFdpbGxTZW5kUmVx
dWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENv
bnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVl
c3RDbGVhckhlYWRlcnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdpbGxT
ZW5kUmVxdWVzdENsZWFySGVhZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVz
b3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdl
YlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFT
b3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVn
YXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3Qp
OgorCiAyMDEwLTAzLTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1dCBzdWdnZXN0ZWQgYnkgU3RldmUgRmFsa2VuYnVy
ZyBhbmQgZml4aW5nIGEgYm9uZWhlYWRlZCBtaXN0YWtlIG9uIG15IHBhcnQgbGFzdCB3ZWVrKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
Y3BwCmluZGV4IDQzYTdhNzMuLmE5ZWJlODEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwMjMsNiArMTAyMywyNSBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xl
YXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8g
SGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8
IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAg
IEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWFkZXIoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0Nv
cHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNl
cHRpb24pOworCisgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhD
U3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOworICAgIGNoYXIqIGhlYWRlckJ1ZmZlciA9IG5ldyBj
aGFyW21heExlbmd0aCArIDFdOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdl
dCgpLCBoZWFkZXJCdWZmZXIsIG1heExlbmd0aCArIDEpOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIoaGVhZGVyQnVmZmVyKTsKKworICAgIHJldHVybiBKU1ZhbHVl
TWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgLy8gSGFzIGNyb3NzLXBsYXRmb3JtIGltcGxlbWVudGF0aW9uCkBAIC0xNDYzLDYg
KzE0ODIsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUi
LCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxl
ZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24i
LCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAi
c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdFJldHVy
bnNOdWxsIiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCBzZXRX
aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7ICJzZXRXaW5kb3dJc0tleSIsIHNldFdpbmRvd0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CmluZGV4IDE5YTAzYTMuLjI3Mzc3MzEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzIsNiArMzIsOCBAQAogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCisjaW5jbHVkZSA8
c2V0PgogI2luY2x1ZGUgPHN0cmluZz4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKQEAgLTE4Niw2ICsx
ODgsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYWl0VG9EdW1wKGJvb2wgd2FpdFRvRHVtcCk7
CiAgICAgdm9pZCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7CiAKKyAgICBjb25zdCBz
dGQ6OnNldDxzdGQ6OnN0cmluZz4mIHdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOyB9CisgICAgdm9pZCBzZXRX
aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihzdGQ6OnN0cmluZyBoZWFkZXIpIHsgbV93aWxsU2Vu
ZFJlcXVlc3RDbGVhckhlYWRlcnMuaW5zZXJ0KGhlYWRlcik7IH0KKwogICAgIGJvb2wgd2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdFJl
dHVybnNOdWxsOyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbChib29s
IHJldHVybnNOdWxsKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwgPSByZXR1cm5zTnVs
bDsgfQogCkBAIC0yODQsNiArMjg5LDggQEAgcHJpdmF0ZToKICAgICBzdGQ6OnN0cmluZyBtX2F1
dGhlbnRpY2F0aW9uUGFzc3dvcmQ7IAogICAgIHN0ZDo6c3RyaW5nIG1fdGVzdFBhdGhPclVSTDsK
ICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOyAgICAvLyBlbXB0eSBzdHJpbmcg
aWYgbm8gaGFzaAorCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1fd2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXJzOwogICAgIAogICAgIC8vIG9yaWdpbnMgd2hpY2ggaGF2ZSBiZWVuIGdyYW50
ZWQgZGVza3RvcCBub3RpZmljYXRpb24gYWNjZXNzCiAgICAgc3RkOjp2ZWN0b3I8SlNTdHJpbmdS
ZWY+IG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCmluZGV4
IDZmODJlMDEuLmYxYWE1ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTEyMSwxMCArMTIxLDEwIEBACiAg
ICAgcmV0dXJuIEAiPHVua25vd24+IjsKIH0KIAotLShOU1VSTFJlcXVlc3QgKil3ZWJWaWV3OiAo
V2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAoTlNVUkxS
ZXF1ZXN0ICopbmV3UmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICopcmVk
aXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UK
Ky0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diByZXNvdXJjZTppZGVudGlm
aWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QgcmVkaXJlY3RSZXNw
b25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2UgZnJvbURhdGFTb3VyY2U6KFdl
YkRhdGFTb3VyY2UgKilkYXRhU291cmNlCiB7CiAgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0
Q29udHJvbGxlci0+ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpKSB7Ci0gICAgICAgIE5TU3Ry
aW5nICpzdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFNlbmRS
ZXF1ZXN0ICVAIHJlZGlyZWN0UmVzcG9uc2UgJUAiLCBpZGVudGlmaWVyLCBbbmV3UmVxdWVzdCBf
ZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XSwKKyAgICAgICAgTlNTdHJpbmcg
KnN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVl
c3QgJUAgcmVkaXJlY3RSZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtyZXF1ZXN0IF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdLAogICAgICAgICAgICAgW3JlZGlyZWN0UmVz
cG9uc2UgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF1dOwogICAgICAgICBw
cmludGYoIiVzXG4iLCBbc3RyaW5nIFVURjhTdHJpbmddKTsKICAgICB9CkBAIC0xMzcsNyArMTM3
LDcgQEAKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICB9CiAKLSAgICBOU1VSTCAqdXJsID0gW25l
d1JlcXVlc3QgVVJMXTsKKyAgICBOU1VSTCAqdXJsID0gW3JlcXVlc3QgVVJMXTsKICAgICBOU1N0
cmluZyAqaG9zdCA9IFt1cmwgaG9zdF07CiAgICAgaWYgKGhvc3QKICAgICAgICAgJiYgKE5TT3Jk
ZXJlZFNhbWUgPT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJlOkAiaHR0cCJd
IHx8IE5TT3JkZXJlZFNhbWUgPT0gW1t1cmwgc2NoZW1lXSBjYXNlSW5zZW5zaXRpdmVDb21wYXJl
OkAiaHR0cHMiXSkKQEAgLTE1MSw3ICsxNTEsMTUgQEAKICAgICBpZiAoZGlzYWxsb3dlZFVSTHMg
JiYgQ0ZTZXRDb250YWluc1ZhbHVlKGRpc2FsbG93ZWRVUkxzLCB1cmwpKQogICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgcmV0dXJuIG5ld1JlcXVlc3Q7CisgICAgTlNNdXRhYmxlVVJMUmVxdWVz
dCAqbmV3UmVxdWVzdCA9IFtyZXF1ZXN0IG11dGFibGVDb3B5XTsKKyAgICBjb25zdCBzdGQ6OnNl
dDxzdGQ6OnN0cmluZz4mIGNsZWFySGVhZGVycyA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2ls
bFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCk7CisgICAgZm9yIChzdGQ6OnNldDxzdGQ6OnN0cmlu
Zz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVycy5iZWdpbigpOyBoZWFkZXIg
IT0gY2xlYXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgeworICAgICAgICBOU1N0cmluZyAqbnNI
ZWFkZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhTdHJpbmc6aGVhZGVyLT5jX3N0
cigpXTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmlsIGZvckhUVFBIZWFkZXJGaWVs
ZDpuc0hlYWRlcl07CisgICAgICAgIFtuc0hlYWRlciByZWxlYXNlXQorICAgIH0KKworICAgIHJl
dHVybiBbbmV3UmVxdWVzdCBhdXRvcmVsZWFzZV07CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9t
RGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCmluZGV4
IDE5YmY4NGEuLmRmMGM1NDEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcApAQCAtMjU0LDYgKzI1NCwxMCBAQCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJl
cXVlc3QoCiAgICAgICAgIHJldHVybiBTX09LOwogICAgIH0KIAorICAgIGNvbnN0IHN0ZDo6c2V0
PHN0ZDo6c3RyaW5nPiYgY2xlYXJIZWFkZXJzID0gZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoKTsKKyAgICBmb3IgKHN0ZDo6c2V0PHN0ZDo6c3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAh
PSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKQorICAgICAgcmVxdWVzdC0+Y2xlYXJIVFRQ
SGVhZGVyRmllbGQoKmhlYWRlcik7CisKICAgICByZXF1ZXN0LT5BZGRSZWYoKTsKICAgICAqbmV3
UmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgcmV0dXJuIFNfT0s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50308</attachid>
            <date>2010-03-09 07:53:13 -0800</date>
            <delta_ts>2010-03-09 09:09:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100309165311.patch</filename>
            <type>text/plain</type>
            <size>12213</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5kNTA3NTYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJlciBpbmZv
cm1hdGlvbiBiZWluZyBzdHJpcHBlZCB3aGVuIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBpbiB3aWxs
U2VuZFJlcXVlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM1OTIwCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVy
ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bm8tcmVmZXJlci1mcmFtZS5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwOiBBZGRlZC4KKwogMjAxMC0wMy0wOCAgSm9hbm1h
cmllIERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L25vLXJlZmVyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43ODUxNTQwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK0phdmFT
Y3JpcHQ6IFBBU1MKK0hUVFAgUmVmZXJlcjogUEFTUworRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJl
ZmVyZXIpOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEphdmFTY3JpcHQpOiBQQVNTCitTeW5jIFhI
UjogUEFTUworQVN5bmMgWEhSOiBQQVNTCitET05FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbm8tcmVmZXJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjMxZTE2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbApAQCAtMCwwICsxLDkgQEAKKzxzY3JpcHQ+CitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
d2FpdFVudGlsRG9uZSgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigi
UmVmZXJlciIpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPWxvZz48L2Rpdj4KKzxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJh
bWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJlci1mcmFtZS5waHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYjliYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXItZnJhbWUucGhw
CkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkKK3sKKyAg
ICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCArPSBtZXNz
YWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAi
IikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7CisgIGxvZygiSmF2YVNj
cmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVGRVJF
UiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnSFRUUCBS
ZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdIVFRQIFJlZmVyZXI6IFBB
U1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB4aHIg
PSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICJuby1yZWZlcmVyLnBo
cCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBsb2coIlN5bmMgWEhSOiAiICsg
KHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6ICJQQVNTIikp
OworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJlci5waHAiLCB0cnVlKTsKKyAgICB4aHIu
c2VuZChudWxsKTsKKyAgICB4aHIub25sb2FkID0gb25YSFJMb2FkOworfQorCitmdW5jdGlvbiBv
blhIUkxvYWQoZXZ0KQoreworICAgIGxvZygiQVN5bmMgWEhSOiAiICsgKGV2dC50YXJnZXQucmVz
cG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAiRkFJTCIgOiAiUEFTUyIpKTsKKyAgICBs
b2coIkRPTkUiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJuby1yZWZlcmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVyZXIucGhwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZmQ4Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcmVyLnBocApA
QCAtMCwwICsxLDEzIEBACis8P3BocAoraGVhZGVyKCJDYWNoZTogbm8tY2FjaGUsIG5vLXN0b3Jl
Iik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsKK2lmICgkcmVmZXIgJiYg
JHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVybmFsIHNjcmlwdCAoSFRUUCBSZWZl
cmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQoImxvZygnRXh0ZXJuYWwgc2NyaXB0
IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+CitpZiAoZG9jdW1lbnQucmVmZXJyZXIu
dG9TdHJpbmcoKSAhPSAiIikKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6
IEZBSUwnKTsKK2Vsc2UKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6IFBB
U1MnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0No
YW5nZUxvZwppbmRleCA2ZWZiZDcyLi5kMGViYmM0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50cm9kdWNlIHNldFdp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIHRvIExheW91dFRlc3RDb250cm9sbGVyIHRvIHNlbGVj
dGl2ZWx5IHJlbW92ZSBoZWFkZXJzIGluIHdpbGxTZW5kUmVxdWVzdC4gVXNlZCBpbiBodHRwL3Rl
c3RzL3NlY3VyaXR5L25vLXJlZmVyZXIuaHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5MjAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1
bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlcnMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2Fk
RGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVz
b3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoK
KyAgICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorCiAyMDEw
LTAzLTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKGJ1dCBzdWdnZXN0ZWQgYnkgU3RldmUgRmFsa2VuYnVyZyBhbmQgZml4
aW5nIGEgYm9uZWhlYWRlZCBtaXN0YWtlIG9uIG15IHBhcnQgbGFzdCB3ZWVrKQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDQzYTdhNzMuLmE5ZWJlODEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTEwMjMsNiArMTAyMywyNSBAQCBzdGF0aWMg
SlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAm
IHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWlu
UHRyPEpTU3RyaW5nUmVmPiBoZWFkZXIoQWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4
dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOwor
CisgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6
ZShoZWFkZXIuZ2V0KCkpOworICAgIGNoYXIqIGhlYWRlckJ1ZmZlciA9IG5ldyBjaGFyW21heExl
bmd0aCArIDFdOworICAgIEpTU3RyaW5nR2V0VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFk
ZXJCdWZmZXIsIG1heExlbmd0aCArIDEpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXIoaGVhZGVyQnVmZmVyKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0
UmV0dXJuc051bGxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
Ly8gSGFzIGNyb3NzLXBsYXRmb3JtIGltcGxlbWVudGF0aW9uCkBAIC0xNDYzLDYgKzE0ODIsNyBA
QCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KCkKICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VE
YXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2Vy
U3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwg
c2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1
dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7
ICJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3QiLCBzZXRXaWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJz
ZXRXaW5kb3dJc0tleSIsIHNldFdpbmRvd0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDE5
YTAzYTMuLjhjMjhhMTcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzEsMTAgKzMxLDEzIEBACiAKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0
YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworI2luY2x1ZGUgPHNldD4K
ICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVjdG9yPgogCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKwogY2xhc3MgTGF5b3V0VGVzdENvbnRyb2xsZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxMYXlvdXRUZXN0Q29udHJvbGxlcj4gewogcHVibGljOgogICAgIExheW91dFRlc3RDb250
cm9sbGVyKGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0UGF0aE9yVVJMLCBjb25zdCBzdGQ6OnN0cmlu
ZyYgZXhwZWN0ZWRQaXhlbEhhc2gpOwpAQCAtMTg2LDYgKzE4OSw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldFdhaXRUb0R1bXAoYm9vbCB3YWl0VG9EdW1wKTsKICAgICB2b2lkIHdhaXRUb0R1bXBX
YXRjaGRvZ1RpbWVyRmlyZWQoKTsKIAorICAgIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiYg
d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCkgY29uc3QgeyByZXR1cm4gbV93aWxsU2VuZFJl
cXVlc3RDbGVhckhlYWRlcnM7IH0KKyAgICB2b2lkIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVh
ZGVyKHN0ZDo6c3RyaW5nIGhlYWRlcikgeyBtX3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycy5p
bnNlcnQoaGVhZGVyKTsgfQorCiAgICAgYm9vbCB3aWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGw7IH0KICAgICB2b2lk
IHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKGJvb2wgcmV0dXJuc051bGwpIHsgbV93aWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbCA9IHJldHVybnNOdWxsOyB9CiAKQEAgLTI4NCw2ICsyOTAs
OCBAQCBwcml2YXRlOgogICAgIHN0ZDo6c3RyaW5nIG1fYXV0aGVudGljYXRpb25QYXNzd29yZDsg
CiAgICAgc3RkOjpzdHJpbmcgbV90ZXN0UGF0aE9yVVJMOwogICAgIHN0ZDo6c3RyaW5nIG1fZXhw
ZWN0ZWRQaXhlbEhhc2g7ICAgIC8vIGVtcHR5IHN0cmluZyBpZiBubyBoYXNoCisKKyAgICBzdGQ6
OnNldDxzdGQ6OnN0cmluZz4gbV93aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnM7CiAgICAgCiAg
ICAgLy8gb3JpZ2lucyB3aGljaCBoYXZlIGJlZW4gZ3JhbnRlZCBkZXNrdG9wIG5vdGlmaWNhdGlv
biBhY2Nlc3MKICAgICBzdGQ6OnZlY3RvcjxKU1N0cmluZ1JlZj4gbV9kZXNrdG9wTm90aWZpY2F0
aW9uQWxsb3dlZE9yaWdpbnM7CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KaW5kZXggNmY4MmUwMS4uZjFhYTVkNiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVn
YXRlLm1tCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWRE
ZWxlZ2F0ZS5tbQpAQCAtMTIxLDEwICsxMjEsMTAgQEAKICAgICByZXR1cm4gQCI8dW5rbm93bj4i
OwogfQogCi0tKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6
aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0IHJl
ZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZyb21EYXRh
U291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQorLShOU1VSTFJlcXVlc3QgKil3ZWJW
aWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0OiAo
TlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNlICop
cmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFTb3Vy
Y2UKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVkaXJlY3RSZXNw
b25zZSAlQCIsIGlkZW50aWZpZXIsIFtuZXdSZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHRdLAorICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAlQCByZWRpcmVjdFJlc3BvbnNl
ICVAIiwgaWRlbnRpZmllciwgW3JlcXVlc3QgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVz
dFJlc3VsdF0sCiAgICAgICAgICAgICBbcmVkaXJlY3RSZXNwb25zZSBfZHJ0X2Rlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJpbmcg
VVRGOFN0cmluZ10pOwogICAgIH0KQEAgLTEzNyw3ICsxMzcsNyBAQAogICAgICAgICByZXR1cm4g
bmlsOwogICAgIH0KIAotICAgIE5TVVJMICp1cmwgPSBbbmV3UmVxdWVzdCBVUkxdOworICAgIE5T
VVJMICp1cmwgPSBbcmVxdWVzdCBVUkxdOwogICAgIE5TU3RyaW5nICpob3N0ID0gW3VybCBob3N0
XTsKICAgICBpZiAoaG9zdAogICAgICAgICAmJiAoTlNPcmRlcmVkU2FtZSA9PSBbW3VybCBzY2hl
bWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwIl0gfHwgTlNPcmRlcmVkU2FtZSA9PSBb
W3VybCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwcyJdKQpAQCAtMTUxLDcg
KzE1MSwxNSBAQAogICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFsdWUo
ZGlzYWxsb3dlZFVSTHMsIHVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1cm4g
bmV3UmVxdWVzdDsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW3JlcXVl
c3QgbXV0YWJsZUNvcHldOworICAgIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiYgY2xlYXJI
ZWFkZXJzID0gZ0xheW91dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRl
cnMoKTsKKyAgICBmb3IgKHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVh
ZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7
ICsraGVhZGVyKSB7CisgICAgICAgIE5TU3RyaW5nICpuc0hlYWRlciA9IFtbTlNTdHJpbmcgYWxs
b2NdIGluaXRXaXRoVVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCldOworICAgICAgICBbbmV3UmVx
dWVzdCBzZXRWYWx1ZTpuaWwgZm9ySFRUUEhlYWRlckZpZWxkOm5zSGVhZGVyXTsKKyAgICAgICAg
W25zSGVhZGVyIHJlbGVhc2VdCisgICAgfQorCisgICAgcmV0dXJuIFtuZXdSZXF1ZXN0IGF1dG9y
ZWxlYXNlXTsKIH0KIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd3YgcmVzb3VyY2U6KGlk
KWlkZW50aWZpZXIgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKaW5kZXggMTliZjg0YS4uZGYwYzU0MSAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVn
YXRlLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuY3BwCkBAIC0yNTQsNiArMjU0LDEwIEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxTZW5kUmVxdWVzdCgKICAgICAgICAgcmV0dXJu
IFNfT0s7CiAgICAgfQogCisgICAgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiBjbGVhckhl
YWRlcnMgPSBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVy
cygpOworICAgIGZvciAoc3RkOjpzZXQ8c3RkOjpzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFk
ZXIgPSBjbGVhckhlYWRlcnMuYmVnaW4oKTsgaGVhZGVyICE9IGNsZWFySGVhZGVycy5lbmQoKTsg
KytoZWFkZXIpCisgICAgICByZXF1ZXN0LT5jbGVhckhUVFBIZWFkZXJGaWVsZCgqaGVhZGVyKTsK
KwogICAgIHJlcXVlc3QtPkFkZFJlZigpOwogICAgICpuZXdSZXF1ZXN0ID0gcmVxdWVzdDsKICAg
ICByZXR1cm4gU19PSzsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50313</attachid>
            <date>2010-03-09 09:09:08 -0800</date>
            <delta_ts>2010-03-11 07:30:23 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100309180906.patch</filename>
            <type>text/plain</type>
            <size>12416</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li41ZTdmN2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJyZXIgaW5m
b3JtYXRpb24gYmVpbmcgc3RyaXBwZWQgd2hlbiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgaW4gd2ls
bFNlbmRSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTkyMAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5waHA6IEFkZGVkLgorCiAyMDEwLTAzLTA4ICBK
b2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcnJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNzg1MTU0MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBA
QAorSmF2YVNjcmlwdDogUEFTUworSFRUUCBSZWZlcmVyOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQg
KEhUVFAgUmVmZXJlcik6IFBBU1MKK0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6IFBBU1MK
K1N5bmMgWEhSOiBQQVNTCitBU3luYyBYSFI6IFBBU1MKK0RPTkUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5jNWY2M2ZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdENs
ZWFySGVhZGVyKCJSZWZlcmVyIik7Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2Pgor
PGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvbm8t
cmVmZXJyZXItZnJhbWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVycmVyLWZyYW1lLnBocCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVycmVyLWZyYW1lLnBo
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTVjMjM0Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVm
ZXJyZXItZnJhbWUucGhwCkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
bWVzc2FnZSkKK3sKKyAgICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlu
bmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIu
dG9TdHJpbmcoKSAhPSAiIikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7
CisgIGxvZygiSmF2YVNjcmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJW
RVJbJ0hUVFBfUkVGRVJFUiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJp
bnQoImxvZygnSFRUUCBSZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdI
VFRQIFJlZmVyZXI6IFBBU1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIs
ICJuby1yZWZlcnJlci5waHAiLCBmYWxzZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgbG9n
KCJTeW5jIFhIUjogIiArICh4aHIucmVzcG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAi
RkFJTCIgOiAiUEFTUyIpKTsKKyAgICB4aHIub3BlbigiR0VUIiwgIm5vLXJlZmVycmVyLnBocCIs
IHRydWUpOworICAgIHhoci5zZW5kKG51bGwpOworICAgIHhoci5vbmxvYWQgPSBvblhIUkxvYWQ7
Cit9CisKK2Z1bmN0aW9uIG9uWEhSTG9hZChldnQpCit7CisgICAgbG9nKCJBU3luYyBYSFI6ICIg
KyAoZXZ0LnRhcmdldC5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6
ICJQQVNTIikpOworICAgIGxvZygiRE9ORSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Im5vLXJlZmVycmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZl
cnJlci5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1y
ZWZlcnJlci5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmZDhjYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL25vLXJlZmVycmVyLnBocApAQCAtMCwwICsxLDEzIEBACis8P3BocAoraGVhZGVyKCJDYWNo
ZTogbm8tY2FjaGUsIG5vLXN0b3JlIik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVS
RVInXTsKK2lmICgkcmVmZXIgJiYgJHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVy
bmFsIHNjcmlwdCAoSFRUUCBSZWZlcmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQo
ImxvZygnRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+Citp
ZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAiIikKKyAgICBsb2coJ0V4dGVybmFs
IHNjcmlwdCAoSmF2YVNjcmlwdCk6IEZBSUwnKTsKK2Vsc2UKKyAgICBsb2coJ0V4dGVybmFsIHNj
cmlwdCAoSmF2YVNjcmlwdCk6IFBBU1MnKTsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWZiZDcyLi43NzA4MWI0IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW50cm9kdWNlIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIHRvIExheW91dFRl
c3RDb250cm9sbGVyIHRvIHNlbGVjdGl2ZWx5IHJlbW92ZSBoZWFkZXJzIGluIHdpbGxTZW5kUmVx
dWVzdC4gVXNlZCBpbiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTIwCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChz
ZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcik6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtSZXNvdXJjZUxv
YWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJlc3Bv
bnNlOmZyb21EYXRhU291cmNlOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9SZXNv
dXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KToKKwogMjAxMC0wMy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChidXQgc3VnZ2VzdGVkIGJ5IFN0
ZXZlIEZhbGtlbmJ1cmcgYW5kIGZpeGluZyBhIGJvbmVoZWFkZWQgbWlzdGFrZSBvbiBteSBwYXJ0
IGxhc3Qgd2VlaykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcAppbmRleCA0M2E3YTczLi5hOWViZTgxIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xMDIz
LDYgKzEwMjMsMjUgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFdpbGxT
ZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRD
b3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9u
KQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYgKGFy
Z3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVhZGVyKEFkb3B0LCBKU1Zh
bHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7CisgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmluZ0dl
dE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKKyAgICBjaGFyKiBoZWFkZXJC
dWZmZXIgPSBuZXcgY2hhclttYXhMZW5ndGggKyAxXTsKKyAgICBKU1N0cmluZ0dldFVURjhDU3Ry
aW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLCBtYXhMZW5ndGggKyAxKTsKKworICAgIExh
eW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENv
bnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xs
ZXItPnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGhlYWRlckJ1ZmZlcik7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBjcm9zcy1wbGF0Zm9ybSBpbXBsZW1lbnRhdGlv
bgpAQCAtMTQ2Myw2ICsxNDgyLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENvbXBh
dGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2VyU3R5
bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwgc2V0V2lsbFNlbmRS
ZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2Vu
ZFJlcXVlc3RSZXR1cm5zTnVsbCIsIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJl
ZGlyZWN0Iiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuaAppbmRleCAxOWEwM2EzLi43MmUxMGQyIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMxLDkgKzMxLDEw
IEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rvcj4K
KyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJvbGxl
ciA6IHB1YmxpYyBSZWZDb3VudGVkPExheW91dFRlc3RDb250cm9sbGVyPiB7CiBwdWJsaWM6CkBA
IC0xODYsNiArMTg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2FpdFRvRHVtcChib29sIHdh
aXRUb0R1bXApOwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwogCisg
ICAgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiB3aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRl
cnMoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsgfQorICAg
IHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoc3RkOjpzdHJpbmcgaGVhZGVyKSB7
IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzLmluc2VydChoZWFkZXIpOyB9CisKICAgICBi
b29sIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV93aWxsU2Vu
ZFJlcXVlc3RSZXR1cm5zTnVsbDsgfQogICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGwoYm9vbCByZXR1cm5zTnVsbCkgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsID0g
cmV0dXJuc051bGw7IH0KIApAQCAtMjg0LDYgKzI4OCw4IEBAIHByaXZhdGU6CiAgICAgc3RkOjpz
dHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAgICBzdGQ6OnN0cmluZyBtX3Rlc3RQ
YXRoT3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8gZW1w
dHkgc3RyaW5nIGlmIG5vIGhhc2gKKworICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX3dpbGxT
ZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICAKICAgICAvLyBvcmlnaW5zIHdoaWNoIGhhdmUg
YmVlbiBncmFudGVkIGRlc2t0b3Agbm90aWZpY2F0aW9uIGFjY2VzcwogICAgIHN0ZDo6dmVjdG9y
PEpTU3RyaW5nUmVmPiBtX2Rlc2t0b3BOb3RpZmljYXRpb25BbGxvd2VkT3JpZ2luczsKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0
ZS5tbQppbmRleCA2ZjgyZTAxLi45MjQ0MTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0zNSw2ICszNSw4
IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgogI2ltcG9ydCA8d3RmL0Fz
c2VydGlvbnMuaD4KIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogQGludGVyZmFjZSBOU1VSTCAo
RFJURXh0cmFzKQogLSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0
UmVzdWx0OwogQGVuZApAQCAtMTIxLDEwICsxMjMsMTAgQEAKICAgICByZXR1cm4gQCI8dW5rbm93
bj4iOwogfQogCi0tKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3Vy
Y2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOU1VSTFJlcXVlc3QgKiluZXdSZXF1ZXN0
IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZyb21E
YXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQorLShOU1VSTFJlcXVlc3QgKil3
ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1ZXN0
OiAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3BvbnNl
ICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFT
b3VyY2UKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVkaXJlY3RS
ZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtuZXdSZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHRdLAorICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3RyaW5n
IHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAlQCByZWRpcmVjdFJlc3Bv
bnNlICVAIiwgaWRlbnRpZmllciwgW3JlcXVlc3QgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdF0sCiAgICAgICAgICAgICBbcmVkaXJlY3RSZXNwb25zZSBfZHJ0X2Rlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtzdHJp
bmcgVVRGOFN0cmluZ10pOwogICAgIH0KQEAgLTEzNyw3ICsxMzksNyBAQAogICAgICAgICByZXR1
cm4gbmlsOwogICAgIH0KIAotICAgIE5TVVJMICp1cmwgPSBbbmV3UmVxdWVzdCBVUkxdOworICAg
IE5TVVJMICp1cmwgPSBbcmVxdWVzdCBVUkxdOwogICAgIE5TU3RyaW5nICpob3N0ID0gW3VybCBo
b3N0XTsKICAgICBpZiAoaG9zdAogICAgICAgICAmJiAoTlNPcmRlcmVkU2FtZSA9PSBbW3VybCBz
Y2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwIl0gfHwgTlNPcmRlcmVkU2FtZSA9
PSBbW3VybCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwcyJdKQpAQCAtMTUx
LDcgKzE1MywxNSBAQAogICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5zVmFs
dWUoZGlzYWxsb3dlZFVSTHMsIHVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICByZXR1
cm4gbmV3UmVxdWVzdDsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0gW3Jl
cXVlc3QgbXV0YWJsZUNvcHldOworICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRlcnMg
PSBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpOwor
ICAgIGZvciAoc2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVy
cy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgeworICAg
ICAgICBOU1N0cmluZyAqbnNIZWFkZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVURjhT
dHJpbmc6aGVhZGVyLT5jX3N0cigpXTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6bmls
IGZvckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRlcl07CisgICAgICAgIFtuc0hlYWRlciByZWxlYXNl
XTsKKyAgICB9CisKKyAgICByZXR1cm4gW25ld1JlcXVlc3QgYXV0b3JlbGVhc2VdOwogfQogCiAt
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNl
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9h
ZERlbGVnYXRlLmNwcAppbmRleCAxOWJmODRhLi43N2JlNjZiIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKQEAg
LTM4LDYgKzM4LDggQEAKICNpbmNsdWRlIDxzc3RyZWFtPgogCiAKK3VzaW5nIHN0ZDo6c2V0Owor
dXNpbmcgc3RkOjpzdHJpbmc7CiB1c2luZyBzdGQ6OndzdHJpbmc7CiB1c2luZyBzdGQ6Ondpb3N0
cmVhbTsKIApAQCAtMjU0LDYgKzI1NiwxMCBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFJl
c291cmNlTG9hZERlbGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QoCiAgICAgICAgIHJldHVybiBTX09L
OwogICAgIH0KIAorICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRlcnMgPSBnTGF5b3V0
VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygpOworICAgIGZvciAo
c2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVhZGVycy5iZWdpbigp
OyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikKKyAgICAgIHJlcXVlc3Qt
PmNsZWFySFRUUEhlYWRlckZpZWxkKCpoZWFkZXIpOworCiAgICAgcmVxdWVzdC0+QWRkUmVmKCk7
CiAgICAgKm5ld1JlcXVlc3QgPSByZXF1ZXN0OwogICAgIHJldHVybiBTX09LOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50500</attachid>
            <date>2010-03-11 07:30:29 -0800</date>
            <delta_ts>2010-03-11 07:33:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100311163027.patch</filename>
            <type>text/plain</type>
            <size>14722</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li41ZTdmN2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJyZXIgaW5m
b3JtYXRpb24gYmVpbmcgc3RyaXBwZWQgd2hlbiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgaW4gd2ls
bFNlbmRSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTkyMAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5waHA6IEFkZGVkLgorCiAyMDEwLTAzLTA4ICBK
b2FubWFyaWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcnJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNmFiMDFkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorSmF2YVNjcmlwdDogUEFTUworSFRUUCBSZWZlcmVyOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQg
KEhUVFAgUmVmZXJlcik6IFBBU1MKK0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6IFBBU1MK
K1N5bmMgWEhSOiBQQVNTCitBU3luYyBYSFI6IFBBU1MKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM1ZjYzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKQEAgLTAsMCArMSw5IEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXIoIlJlZmVyZXIiKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+
Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9u
by1yZWZlcnJlci1mcmFtZS5waHAiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUu
cGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWMyMzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1y
ZWZlcnJlci1mcmFtZS5waHAKQEAgLTAsMCArMSwzOSBAQAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmIChkb2N1bWVudC5yZWZlcnJl
ci50b1N0cmluZygpICE9ICIiKSB7CisgIGxvZygiSmF2YVNjcmlwdDogRkFJTCIpOworfSBlbHNl
IHsKKyAgbG9nKCJKYXZhU2NyaXB0OiBQQVNTIik7Cit9CisKKzw/cGhwCiskcmVmZXIgPSAkX1NF
UlZFUlsnSFRUUF9SRUZFUkVSJ107CitpZiAoJHJlZmVyICYmICRyZWZlciAhPSAiIikKKyAgICBw
cmludCgibG9nKCdIVFRQIFJlZmVyZXI6IEZBSUwnKSIpOworZWxzZQorICAgIHByaW50KCJsb2co
J0hUVFAgUmVmZXJlcjogUEFTUycpIik7Cis/PgorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICB4aHIub3BlbigiR0VU
IiwgIm5vLXJlZmVycmVyLnBocCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBs
b2coIlN5bmMgWEhSOiAiICsgKHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/
ICJGQUlMIiA6ICJQQVNTIikpOworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJyZXIucGhw
IiwgdHJ1ZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgeGhyLm9ubG9hZCA9IG9uWEhSTG9h
ZDsKK30KKworZnVuY3Rpb24gb25YSFJMb2FkKGV2dCkKK3sKKyAgICBsb2coIkFTeW5jIFhIUjog
IiArIChldnQudGFyZ2V0LnJlc3BvbnNlVGV4dC5tYXRjaCgvSFRUUC4qRkFJTC8pID8gIkZBSUwi
IDogIlBBU1MiKSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibm8tcmVmZXJyZXIucGhwIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJl
ZmVycmVyLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25v
LXJlZmVycmVyLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGZkOGNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvbm8tcmVmZXJyZXIucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCitoZWFkZXIoIkNh
Y2hlOiBuby1jYWNoZSwgbm8tc3RvcmUiKTsKKworJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVG
RVJFUiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnRXh0
ZXJuYWwgc2NyaXB0IChIVFRQIFJlZmVyZXIpOiBGQUlMJyk7XG4iKTsKK2Vsc2UKKyAgICBwcmlu
dCgibG9nKCdFeHRlcm5hbCBzY3JpcHQgKEhUVFAgUmVmZXJlcik6IFBBU1MnKTtcbiIpOworPz4K
K2lmIChkb2N1bWVudC5yZWZlcnJlci50b1N0cmluZygpICE9ICIiKQorICAgIGxvZygnRXh0ZXJu
YWwgc2NyaXB0IChKYXZhU2NyaXB0KTogRkFJTCcpOworZWxzZQorICAgIGxvZygnRXh0ZXJuYWwg
c2NyaXB0IChKYXZhU2NyaXB0KTogUEFTUycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRl
eCBlYmU3YjlkLi5kM2Y3MjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTY3NSw2
ICs1Njc1LDkgQEAgZmFzdC9jc3Mvbm9uLXN0YW5kYXJkLWNoZWNrYm94LXNpemUuaHRtbAogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM2NzEKIG1lZGlhL3ZpZGVv
LWxvb3AuaHRtbAogCisjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlci4KK2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbAorCiAjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbC4KIGZhc3QvbG9hZGVyL29ubG9hZC13aWxsU2Vu
ZFJlcXVlc3QtbnVsbC1mb3Itc2NyaXB0Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5k
ZXggMjdlNzA2OS4uNTE0ODk3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yMDEsNiAr
MjAxLDkgQEAgaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQtdHdpY2UuaHRt
bAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZlZWQtdXJscy1mcm9tLXJlbW90ZS5odG1sCiAKKyMgTWlzc2luZyBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigpCitodHRwL3Rl
c3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKKwogIyBNaXNzaW5nIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkKIGZhc3QvbG9hZGVyL29ubG9h
ZC13aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItZnJhbWUuaHRtbAogZmFzdC9sb2FkZXIvb25sb2Fk
LXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1zY3JpcHQuaHRtbApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlZmJkNzIuLjc3
MDgxYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0wOSAgSm9jaGVuIEVpc2luZ2Vy
ICA8am9jaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRyb2R1Y2Ugc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIg
dG8gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gc2VsZWN0aXZlbHkgcmVtb3ZlIGhlYWRlcnMgaW4g
d2lsbFNlbmRSZXF1ZXN0LiBVc2VkIGluIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5
MjAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgt
W1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERl
bGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorCiAyMDEwLTAzLTA4ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1dCBzdWdn
ZXN0ZWQgYnkgU3RldmUgRmFsa2VuYnVyZyBhbmQgZml4aW5nIGEgYm9uZWhlYWRlZCBtaXN0YWtl
IG9uIG15IHBhcnQgbGFzdCB3ZWVrKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQzYTdhNzMuLmE5ZWJlODEgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKQEAgLTEwMjMsNiArMTAyMywyNSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVT
aGVldExvY2F0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVS
ZWYgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24K
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWFkZXIo
QWRvcHQsIEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRp
b24pKTsKKyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgc2l6ZV90IG1heExlbmd0aCA9
IEpTU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOworICAgIGNo
YXIqIGhlYWRlckJ1ZmZlciA9IG5ldyBjaGFyW21heExlbmd0aCArIDFdOworICAgIEpTU3RyaW5n
R2V0VVRGOENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIsIG1heExlbmd0aCArIDEp
OworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxM
YXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7Cisg
ICAgY29udHJvbGxlci0+c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoaGVhZGVyQnVmZmVy
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIGNyb3NzLXBsYXRmb3JtIGlt
cGxlbWVudGF0aW9uCkBAIC0xNDYzLDYgKzE0ODIsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0VXNlRGFz
aGJvYXJkQ29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9k
ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIs
IHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dFVzZXJTdHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCBz
ZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJu
c051bGxDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1
cm5zTnVsbE9uUmVkaXJlY3QiLCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJl
Y3RDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaW5kb3dJc0tleSIsIHNldFdpbmRv
d0lzS2V5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDE5YTAzYTMuLjcyZTEwZDIgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAt
MzEsOSArMzEsMTAgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVk
ZSA8dmVjdG9yPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIGNsYXNzIExheW91dFRl
c3RDb250cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5b3V0VGVzdENvbnRyb2xsZXI+IHsK
IHB1YmxpYzoKQEAgLTE4Niw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYWl0VG9E
dW1wKGJvb2wgd2FpdFRvRHVtcCk7CiAgICAgdm9pZCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZp
cmVkKCk7CiAKKyAgICBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4mIHdpbGxTZW5kUmVxdWVz
dENsZWFySGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFk
ZXJzOyB9CisgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihzdGQ6OnN0cmlu
ZyBoZWFkZXIpIHsgbV93aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMuaW5zZXJ0KGhlYWRlcik7
IH0KKwogICAgIGJvb2wgd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSBjb25zdCB7IHJldHVy
biBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsOyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJl
cXVlc3RSZXR1cm5zTnVsbChib29sIHJldHVybnNOdWxsKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGwgPSByZXR1cm5zTnVsbDsgfQogCkBAIC0yODQsNiArMjg4LDggQEAgcHJpdmF0ZToK
ICAgICBzdGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQ7IAogICAgIHN0ZDo6c3Ry
aW5nIG1fdGVzdFBhdGhPclVSTDsKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNo
OyAgICAvLyBlbXB0eSBzdHJpbmcgaWYgbm8gaGFzaAorCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJp
bmc+IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOwogICAgIAogICAgIC8vIG9yaWdpbnMg
d2hpY2ggaGF2ZSBiZWVuIGdyYW50ZWQgZGVza3RvcCBub3RpZmljYXRpb24gYWNjZXNzCiAgICAg
c3RkOjp2ZWN0b3I8SlNTdHJpbmdSZWY+IG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmln
aW5zOwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNl
TG9hZERlbGVnYXRlLm1tCmluZGV4IDZmODJlMDEuLjkyNDQxMTAgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAg
LTM1LDYgKzM1LDggQEAKICNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+CiAjaW1w
b3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBAaW50ZXJm
YWNlIE5TVVJMIChEUlRFeHRyYXMpCiAtIChOU1N0cmluZyAqKV9kcnRfZGVzY3JpcHRpb25TdWl0
YWJsZUZvclRlc3RSZXN1bHQ7CiBAZW5kCkBAIC0xMjEsMTAgKzEyMywxMCBAQAogICAgIHJldHVy
biBAIjx1bmtub3duPiI7CiB9CiAKLS0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcg
Kil3diByZXNvdXJjZTppZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TVVJMUmVxdWVzdCAq
KW5ld1JlcXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVz
cG9uc2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCistKE5TVVJM
UmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3aWxs
U2VuZFJlcXVlc3Q6IChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5T
VVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291
cmNlICopZGF0YVNvdXJjZQogewogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xs
ZXItPmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBOU1N0cmluZyAqc3Ry
aW5nID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAl
QCByZWRpcmVjdFJlc3BvbnNlICVAIiwgaWRlbnRpZmllciwgW25ld1JlcXVlc3QgX2RydF9kZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sCisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcg
PSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFNlbmRSZXF1ZXN0ICVAIHJl
ZGlyZWN0UmVzcG9uc2UgJUAiLCBpZGVudGlmaWVyLCBbcmVxdWVzdCBfZHJ0X2Rlc2NyaXB0aW9u
U3VpdGFibGVGb3JUZXN0UmVzdWx0XSwKICAgICAgICAgICAgIFtyZWRpcmVjdFJlc3BvbnNlIF9k
cnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmKCIl
c1xuIiwgW3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpAQCAtMTM3LDcgKzEzOSw3IEBACiAg
ICAgICAgIHJldHVybiBuaWw7CiAgICAgfQogCi0gICAgTlNVUkwgKnVybCA9IFtuZXdSZXF1ZXN0
IFVSTF07CisgICAgTlNVUkwgKnVybCA9IFtyZXF1ZXN0IFVSTF07CiAgICAgTlNTdHJpbmcgKmhv
c3QgPSBbdXJsIGhvc3RdOwogICAgIGlmIChob3N0CiAgICAgICAgICYmIChOU09yZGVyZWRTYW1l
ID09IFtbdXJsIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImh0dHAiXSB8fCBOU09y
ZGVyZWRTYW1lID09IFtbdXJsIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImh0dHBz
Il0pCkBAIC0xNTEsNyArMTUzLDE1IEBACiAgICAgaWYgKGRpc2FsbG93ZWRVUkxzICYmIENGU2V0
Q29udGFpbnNWYWx1ZShkaXNhbGxvd2VkVVJMcywgdXJsKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgIHJldHVybiBuZXdSZXF1ZXN0OworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1Jl
cXVlc3QgPSBbcmVxdWVzdCBtdXRhYmxlQ29weV07CisgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNs
ZWFySGVhZGVycyA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXJzKCk7CisgICAgZm9yIChzZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0g
Y2xlYXJIZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVh
ZGVyKSB7CisgICAgICAgIE5TU3RyaW5nICpuc0hlYWRlciA9IFtbTlNTdHJpbmcgYWxsb2NdIGlu
aXRXaXRoVVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCldOworICAgICAgICBbbmV3UmVxdWVzdCBz
ZXRWYWx1ZTpuaWwgZm9ySFRUUEhlYWRlckZpZWxkOm5zSGVhZGVyXTsKKyAgICAgICAgW25zSGVh
ZGVyIHJlbGVhc2VdOworICAgIH0KKworICAgIHJldHVybiBbbmV3UmVxdWVzdCBhdXRvcmVsZWFz
ZV07CiB9CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVu
dGlmaWVyIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAq
KWRhdGFTb3VyY2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
UmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCmluZGV4IDE5YmY4NGEuLjJlMDMxZGEgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5j
cHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVn
YXRlLmNwcApAQCAtMzEsMjggKzMxLDM1IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5o
IgogI2luY2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCi0jaW5jbHVkZSA8Y29tdXRpbC5o
PgogI2luY2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4KKyNpbmNsdWRlIDxjb211dGlsLmg+
CisjaW5jbHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0K
IAotdXNpbmcgc3RkOjp3c3RyaW5nOwotdXNpbmcgc3RkOjp3aW9zdHJlYW07Cit1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBzdGF0aWMgaW5saW5lIHdzdHJpbmcgd3N0cmluZ0Zyb21CU1RSKEJTVFIg
c3RyKQogewogICAgIHJldHVybiB3c3RyaW5nKHN0ciwgOjpTeXNTdHJpbmdMZW4oc3RyKSk7CiB9
CiAKLXdzdHJpbmcgd3N0cmluZ0Zyb21JbnQoaW50IGkpCitzdGF0aWMgaW5saW5lIHdzdHJpbmcg
d3N0cmluZ0Zyb21JbnQoaW50IGkpCiB7Ci0gICAgc3RkOjp3b3N0cmluZ3N0cmVhbSBzczsKKyAg
ICB3b3N0cmluZ3N0cmVhbSBzczsKICAgICBzcyA8PCBpOwogICAgIHJldHVybiBzcy5zdHIoKTsK
IH0KIAorc3RhdGljIGlubGluZSBCU1RSIEJTVFJGcm9tU3RyaW5nKGNvbnN0IHN0cmluZyYgc3Ry
KQoreworICAgIGludCBsZW5ndGggPSA6Ok11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwg
c3RyLmNfc3RyKCksIHN0ci5sZW5ndGgoKSwgMCwgMCk7CisgICAgQlNUUiByZXN1bHQgPSA6OlN5
c0FsbG9jU3RyaW5nTGVuKDAsIGxlbmd0aCk7CisgICAgOjpNdWx0aUJ5dGVUb1dpZGVDaGFyKENQ
X1VURjgsIDAsIHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCksIHJlc3VsdCwgbGVuZ3RoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgd3N0
cmluZz4gSWRlbnRpZmllck1hcDsKIAogSWRlbnRpZmllck1hcCYgdXJsTWFwKCkKQEAgLTI1NCw4
ICsyNjEsMTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZWxlZ2F0
ZTo6d2lsbFNlbmRSZXF1ZXN0KAogICAgICAgICByZXR1cm4gU19PSzsKICAgICB9CiAKLSAgICBy
ZXF1ZXN0LT5BZGRSZWYoKTsKLSAgICAqbmV3UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgSVdlYk11
dGFibGVVUkxSZXF1ZXN0KiByZXF1ZXN0Q29weSA9IDA7CisgICAgcmVxdWVzdC0+bXV0YWJsZUNv
cHkoJnJlcXVlc3RDb3B5KTsKKyAgICBjb25zdCBzZXQ8c3RyaW5nPiYgY2xlYXJIZWFkZXJzID0g
Z0xheW91dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoKTsKKyAg
ICBmb3IgKHNldDxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBjbGVhckhlYWRlcnMu
YmVnaW4oKTsgaGVhZGVyICE9IGNsZWFySGVhZGVycy5lbmQoKTsgKytoZWFkZXIpIHsKKyAgICAg
IEJTVFIgYnN0ckhlYWRlciA9IEJTVFJGcm9tU3RyaW5nKCpoZWFkZXIpOworICAgICAgcmVxdWVz
dENvcHktPnNldFZhbHVlKDAsIGJzdHJIZWFkZXIpOworICAgICAgU3lzRnJlZVN0cmluZyhic3Ry
SGVhZGVyKTsKKyAgICB9CisKKyAgICAqbmV3UmVxdWVzdCA9IHJlcXVlc3RDb3B5OwogICAgIHJl
dHVybiBTX09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50501</attachid>
            <date>2010-03-11 07:33:19 -0800</date>
            <delta_ts>2010-03-11 07:34:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100311163317.patch</filename>
            <type>text/plain</type>
            <size>14771</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5lYWY1ZTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJyZXIgaW5m
b3JtYXRpb24gYmVpbmcgc3RyaXBwZWQgd2hlbiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgaW4gd2ls
bFNlbmRSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTkyMAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5waHA6IEFkZGVkLgorCSogcGxhdGZvcm0vZ3Rr
L1NraXBwZWQKKwkqIHBsYXRmb3JtL3F0L1NraXBwZWQKKwogMjAxMC0wMy0wOCAgSm9hbm1hcmll
IERpZ2dzICA8am9hbm1hcmllLmRpZ2dzQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBYYW4gTG9wZXouCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L25vLXJlZmVycmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjZhYjAxZGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L25vLXJlZmVycmVyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK0phdmFT
Y3JpcHQ6IFBBU1MKK0hUVFAgUmVmZXJlcjogUEFTUworRXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJl
ZmVyZXIpOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEphdmFTY3JpcHQpOiBQQVNTCitTeW5jIFhI
UjogUEFTUworQVN5bmMgWEhSOiBQQVNTCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5jNWY2M2ZiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCkBAIC0wLDAgKzEsOSBAQAorPHNjcmlwdD4K
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVh
ZGVyKCJSZWZlcmVyIik7Cit9Cis8L3NjcmlwdD4KKzxkaXYgaWQ9bG9nPjwvZGl2PgorPGlmcmFt
ZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJy
ZXItZnJhbWUucGhwIj48L2lmcmFtZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVycmVyLWZyYW1lLnBocCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVycmVyLWZyYW1lLnBocApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTVjMjM0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXIt
ZnJhbWUucGhwCkBAIC0wLDAgKzEsMzkgQEAKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKK3sKKyAgICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAoZG9jdW1lbnQucmVmZXJyZXIudG9TdHJp
bmcoKSAhPSAiIikgeworICBsb2coIkphdmFTY3JpcHQ6IEZBSUwiKTsKK30gZWxzZSB7CisgIGxv
ZygiSmF2YVNjcmlwdDogUEFTUyIpOworfQorCis8P3BocAorJHJlZmVyID0gJF9TRVJWRVJbJ0hU
VFBfUkVGRVJFUiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxv
ZygnSFRUUCBSZWZlcmVyOiBGQUlMJykiKTsKK2Vsc2UKKyAgICBwcmludCgibG9nKCdIVFRQIFJl
ZmVyZXI6IFBBU1MnKSIpOworPz4KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3Q7CisgICAgeGhyLm9wZW4oIkdFVCIsICJuby1y
ZWZlcnJlci5waHAiLCBmYWxzZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgbG9nKCJTeW5j
IFhIUjogIiArICh4aHIucmVzcG9uc2VUZXh0Lm1hdGNoKC9IVFRQLipGQUlMLykgPyAiRkFJTCIg
OiAiUEFTUyIpKTsKKyAgICB4aHIub3BlbigiR0VUIiwgIm5vLXJlZmVycmVyLnBocCIsIHRydWUp
OworICAgIHhoci5zZW5kKG51bGwpOworICAgIHhoci5vbmxvYWQgPSBvblhIUkxvYWQ7Cit9CisK
K2Z1bmN0aW9uIG9uWEhSTG9hZChldnQpCit7CisgICAgbG9nKCJBU3luYyBYSFI6ICIgKyAoZXZ0
LnRhcmdldC5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlMIiA6ICJQQVNT
IikpOworICAgIGxvZygiRE9ORSIpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Im5vLXJlZmVycmVyLnBocCI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5w
aHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJl
ci5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmZDhjYQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25v
LXJlZmVycmVyLnBocApAQCAtMCwwICsxLDEzIEBACis8P3BocAoraGVhZGVyKCJDYWNoZTogbm8t
Y2FjaGUsIG5vLXN0b3JlIik7CisKKyRyZWZlciA9ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsK
K2lmICgkcmVmZXIgJiYgJHJlZmVyICE9ICIiKQorICAgIHByaW50KCJsb2coJ0V4dGVybmFsIHNj
cmlwdCAoSFRUUCBSZWZlcmVyKTogRkFJTCcpO1xuIik7CitlbHNlCisgICAgcHJpbnQoImxvZygn
RXh0ZXJuYWwgc2NyaXB0IChIVFRQIFJlZmVyZXIpOiBQQVNTJyk7XG4iKTsKKz8+CitpZiAoZG9j
dW1lbnQucmVmZXJyZXIudG9TdHJpbmcoKSAhPSAiIikKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlw
dCAoSmF2YVNjcmlwdCk6IEZBSUwnKTsKK2Vsc2UKKyAgICBsb2coJ0V4dGVybmFsIHNjcmlwdCAo
SmF2YVNjcmlwdCk6IFBBU1MnKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggZWJlN2I5
ZC4uZDNmNzIxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTU2NzUsNiArNTY3NSw5
IEBAIGZhc3QvY3NzL25vbi1zdGFuZGFyZC1jaGVja2JveC1zaXplLmh0bWwKICMgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzNjcxCiBtZWRpYS92aWRlby1sb29wLmh0
bWwKIAorIyBHVEsrIGRvZXMgbm90IGhhdmUgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXIuCitodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0
bWwKKwogIyBHVEsrIGRvZXMgbm90IGhhdmUgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNl
bmRSZXF1ZXN0UmV0dXJuc051bGwuCiBmYXN0L2xvYWRlci9vbmxvYWQtd2lsbFNlbmRSZXF1ZXN0
LW51bGwtZm9yLXNjcmlwdC5odG1sCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDI3ZTcw
NjkuLjUxNDg5NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZApAQCAtMjAxLDYgKzIwMSw5IEBA
IGh0dHAvdGVzdHMvbWlzYy9wb2xpY3ktZGVsZWdhdGUtY2FsbGVkLXR3aWNlLmh0bWwKIGh0dHAv
dGVzdHMvbWlzYy9yZWRpcmVjdC10by1leHRlcm5hbC11cmwuaHRtbAogaHR0cC90ZXN0cy9zZWN1
cml0eS9mZWVkLXVybHMtZnJvbS1yZW1vdGUuaHRtbAogCisjIE1pc3NpbmcgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoKQoraHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcnJlci5odG1sCisKICMgTWlzc2luZyBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbCgpCiBmYXN0L2xvYWRlci9vbmxvYWQtd2lsbFNl
bmRSZXF1ZXN0LW51bGwtZm9yLWZyYW1lLmh0bWwKIGZhc3QvbG9hZGVyL29ubG9hZC13aWxsU2Vu
ZFJlcXVlc3QtbnVsbC1mb3Itc2NyaXB0Lmh0bWwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0No
YW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCA2ZWZiZDcyLi43NzA4MWI0IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hl
bkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgSW50cm9kdWNlIHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIHRvIExheW91
dFRlc3RDb250cm9sbGVyIHRvIHNlbGVjdGl2ZWx5IHJlbW92ZSBoZWFkZXJzIGluIHdpbGxTZW5k
UmVxdWVzdC4gVXNlZCBpbiBodHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM1OTIwCisKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAg
IChzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrKToKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKToKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcik6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtSZXNvdXJj
ZUxvYWREZWxlZ2F0ZSB3ZWJWaWV3OnJlc291cmNlOndpbGxTZW5kUmVxdWVzdDpyZWRpcmVjdFJl
c3BvbnNlOmZyb21EYXRhU291cmNlOl0pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9S
ZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6
d2lsbFNlbmRSZXF1ZXN0KToKKwogMjAxMC0wMy0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChidXQgc3VnZ2VzdGVkIGJ5
IFN0ZXZlIEZhbGtlbmJ1cmcgYW5kIGZpeGluZyBhIGJvbmVoZWFkZWQgbWlzdGFrZSBvbiBteSBw
YXJ0IGxhc3Qgd2VlaykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA0M2E3YTczLi5hOWViZTgxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
MDIzLDYgKzEwMjMsMjUgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFdp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVhZGVyKEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKKyAgICBjaGFyKiBoZWFk
ZXJCdWZmZXIgPSBuZXcgY2hhclttYXhMZW5ndGggKyAxXTsKKyAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLCBtYXhMZW5ndGggKyAxKTsKKworICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVz
dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRy
b2xsZXItPnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGhlYWRlckJ1ZmZlcik7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBjcm9zcy1wbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbgpAQCAtMTQ2Myw2ICsxNDgyLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENv
bXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwgc2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxP
blJlZGlyZWN0Iiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAppbmRleCAxOWEwM2EzLi43MmUxMGQyIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMxLDkgKzMx
LDEwIEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rv
cj4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJv
bGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPExheW91dFRlc3RDb250cm9sbGVyPiB7CiBwdWJsaWM6
CkBAIC0xODYsNiArMTg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2FpdFRvRHVtcChib29s
IHdhaXRUb0R1bXApOwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwog
CisgICAgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiB3aWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsgfQor
ICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoc3RkOjpzdHJpbmcgaGVhZGVy
KSB7IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzLmluc2VydChoZWFkZXIpOyB9CisKICAg
ICBib29sIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV93aWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsgfQogICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGwoYm9vbCByZXR1cm5zTnVsbCkgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
ID0gcmV0dXJuc051bGw7IH0KIApAQCAtMjg0LDYgKzI4OCw4IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAgICBzdGQ6OnN0cmluZyBtX3Rl
c3RQYXRoT3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8g
ZW1wdHkgc3RyaW5nIGlmIG5vIGhhc2gKKworICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX3dp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICAKICAgICAvLyBvcmlnaW5zIHdoaWNoIGhh
dmUgYmVlbiBncmFudGVkIGRlc2t0b3Agbm90aWZpY2F0aW9uIGFjY2VzcwogICAgIHN0ZDo6dmVj
dG9yPEpTU3RyaW5nUmVmPiBtX2Rlc2t0b3BOb3RpZmljYXRpb25BbGxvd2VkT3JpZ2luczsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQppbmRleCA2ZjgyZTAxLi45MjQ0MTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0zNSw2ICsz
NSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogQGludGVyZmFjZSBOU1VS
TCAoRFJURXh0cmFzKQogLSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0OwogQGVuZApAQCAtMTIxLDEwICsxMjMsMTAgQEAKICAgICByZXR1cm4gQCI8dW5r
bm93bj4iOwogfQogCi0tKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVz
b3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOU1VSTFJlcXVlc3QgKiluZXdSZXF1
ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZy
b21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQorLShOU1VSTFJlcXVlc3Qg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1
ZXN0OiAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRh
dGFTb3VyY2UKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVkaXJl
Y3RSZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtuZXdSZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLAorICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAlQCByZWRpcmVjdFJl
c3BvbnNlICVAIiwgaWRlbnRpZmllciwgW3JlcXVlc3QgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdF0sCiAgICAgICAgICAgICBbcmVkaXJlY3RSZXNwb25zZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtz
dHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KQEAgLTEzNyw3ICsxMzksNyBAQAogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KIAotICAgIE5TVVJMICp1cmwgPSBbbmV3UmVxdWVzdCBVUkxdOwor
ICAgIE5TVVJMICp1cmwgPSBbcmVxdWVzdCBVUkxdOwogICAgIE5TU3RyaW5nICpob3N0ID0gW3Vy
bCBob3N0XTsKICAgICBpZiAoaG9zdAogICAgICAgICAmJiAoTlNPcmRlcmVkU2FtZSA9PSBbW3Vy
bCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwIl0gfHwgTlNPcmRlcmVkU2Ft
ZSA9PSBbW3VybCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwcyJdKQpAQCAt
MTUxLDcgKzE1MywxNSBAQAogICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5z
VmFsdWUoZGlzYWxsb3dlZFVSTHMsIHVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gbmV3UmVxdWVzdDsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0g
W3JlcXVlc3QgbXV0YWJsZUNvcHldOworICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRl
cnMgPSBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygp
OworICAgIGZvciAoc2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVh
ZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgewor
ICAgICAgICBOU1N0cmluZyAqbnNIZWFkZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVU
RjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6
bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRlcl07CisgICAgICAgIFtuc0hlYWRlciByZWxl
YXNlXTsKKyAgICB9CisKKyAgICByZXR1cm4gW25ld1JlcXVlc3QgYXV0b3JlbGVhc2VdOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291
cmNlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VM
b2FkRGVsZWdhdGUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNl
TG9hZERlbGVnYXRlLmNwcAppbmRleCAxOWJmODRhLi4yZTAzMWRhIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAK
QEAgLTMxLDI4ICszMSwzNSBAQAogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNs
dWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CisjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1
ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCiAKLXVzaW5n
IHN0ZDo6d3N0cmluZzsKLXVzaW5nIHN0ZDo6d2lvc3RyZWFtOwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogc3RhdGljIGlubGluZSB3c3RyaW5nIHdzdHJpbmdGcm9tQlNUUihCU1RSIHN0cikKIHsK
ICAgICByZXR1cm4gd3N0cmluZyhzdHIsIDo6U3lzU3RyaW5nTGVuKHN0cikpOwogfQogCi13c3Ry
aW5nIHdzdHJpbmdGcm9tSW50KGludCBpKQorc3RhdGljIGlubGluZSB3c3RyaW5nIHdzdHJpbmdG
cm9tSW50KGludCBpKQogewotICAgIHN0ZDo6d29zdHJpbmdzdHJlYW0gc3M7CisgICAgd29zdHJp
bmdzdHJlYW0gc3M7CiAgICAgc3MgPDwgaTsKICAgICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgQlNUUiBCU1RSRnJvbVN0cmluZyhjb25zdCBzdHJpbmcmIHN0cikKK3sKKyAg
ICBpbnQgbGVuZ3RoID0gOjpNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHN0ci5jX3N0
cigpLCBzdHIubGVuZ3RoKCksIDAsIDApOworICAgIEJTVFIgcmVzdWx0ID0gOjpTeXNBbGxvY1N0
cmluZ0xlbigwLCBsZW5ndGgpOworICAgIDo6TXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAw
LCBzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpLCByZXN1bHQsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHdzdHJpbmc+IElk
ZW50aWZpZXJNYXA7CiAKIElkZW50aWZpZXJNYXAmIHVybE1hcCgpCkBAIC0yNTQsOCArMjYxLDE2
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxT
ZW5kUmVxdWVzdCgKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCi0gICAgcmVxdWVzdC0+
QWRkUmVmKCk7Ci0gICAgKm5ld1JlcXVlc3QgPSByZXF1ZXN0OworICAgIElXZWJNdXRhYmxlVVJM
UmVxdWVzdCogcmVxdWVzdENvcHkgPSAwOworICAgIHJlcXVlc3QtPm11dGFibGVDb3B5KCZyZXF1
ZXN0Q29weSk7CisgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNsZWFySGVhZGVycyA9IGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCk7CisgICAgZm9yIChz
ZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7
IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7CisgICAgICBCU1RSIGJz
dHJIZWFkZXIgPSBCU1RSRnJvbVN0cmluZygqaGVhZGVyKTsKKyAgICAgIHJlcXVlc3RDb3B5LT5z
ZXRWYWx1ZSgwLCBic3RySGVhZGVyKTsKKyAgICAgIFN5c0ZyZWVTdHJpbmcoYnN0ckhlYWRlcik7
CisgICAgfQorCisgICAgKm5ld1JlcXVlc3QgPSByZXF1ZXN0Q29weTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50503</attachid>
            <date>2010-03-11 07:34:26 -0800</date>
            <delta_ts>2010-03-11 08:27:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100311163424.patch</filename>
            <type>text/plain</type>
            <size>14773</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MDM2OWE3Li5iZDRjMzY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJyZXIgaW5m
b3JtYXRpb24gYmVpbmcgc3RyaXBwZWQgd2hlbiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgaW4gd2ls
bFNlbmRSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTkyMAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5waHA6IEFkZGVkLgorCSogcGxhdGZvcm0vZ3Rr
L1NraXBwZWQ6CisJKiBwbGF0Zm9ybS9xdC9Ta2lwcGVkOgorCiAyMDEwLTAzLTA4ICBKb2FubWFy
aWUgRGlnZ3MgIDxqb2FubWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9uby1yZWZlcnJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNmFiMDFkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorSmF2
YVNjcmlwdDogUEFTUworSFRUUCBSZWZlcmVyOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQgKEhUVFAg
UmVmZXJlcik6IFBBU1MKK0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6IFBBU1MKK1N5bmMg
WEhSOiBQQVNTCitBU3luYyBYSFI6IFBBU1MKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmM1ZjYzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKQEAgLTAsMCArMSw5IEBACis8c2NyaXB0
PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJI
ZWFkZXIoIlJlZmVyZXIiKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZl
cnJlci1mcmFtZS5waHAiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWMyMzQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJl
ci1mcmFtZS5waHAKQEAgLTAsMCArMSwzOSBAQAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNz
YWdlKQoreworICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIikuaW5uZXJI
VE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmIChkb2N1bWVudC5yZWZlcnJlci50b1N0
cmluZygpICE9ICIiKSB7CisgIGxvZygiSmF2YVNjcmlwdDogRkFJTCIpOworfSBlbHNlIHsKKyAg
bG9nKCJKYXZhU2NyaXB0OiBQQVNTIik7Cit9CisKKzw/cGhwCiskcmVmZXIgPSAkX1NFUlZFUlsn
SFRUUF9SRUZFUkVSJ107CitpZiAoJHJlZmVyICYmICRyZWZlciAhPSAiIikKKyAgICBwcmludCgi
bG9nKCdIVFRQIFJlZmVyZXI6IEZBSUwnKSIpOworZWxzZQorICAgIHByaW50KCJsb2coJ0hUVFAg
UmVmZXJlcjogUEFTUycpIik7Cis/PgorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7Cisg
ICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICB4aHIub3BlbigiR0VUIiwgIm5v
LXJlZmVycmVyLnBocCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBsb2coIlN5
bmMgWEhSOiAiICsgKHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/ICJGQUlM
IiA6ICJQQVNTIikpOworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJyZXIucGhwIiwgdHJ1
ZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgeGhyLm9ubG9hZCA9IG9uWEhSTG9hZDsKK30K
KworZnVuY3Rpb24gb25YSFJMb2FkKGV2dCkKK3sKKyAgICBsb2coIkFTeW5jIFhIUjogIiArIChl
dnQudGFyZ2V0LnJlc3BvbnNlVGV4dC5tYXRjaCgvSFRUUC4qRkFJTC8pID8gIkZBSUwiIDogIlBB
U1MiKSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0ibm8tcmVmZXJyZXIucGhwIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVycmVy
LnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJlZmVy
cmVyLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGZkOGNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
bm8tcmVmZXJyZXIucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCitoZWFkZXIoIkNhY2hlOiBu
by1jYWNoZSwgbm8tc3RvcmUiKTsKKworJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUidd
OworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnRXh0ZXJuYWwg
c2NyaXB0IChIVFRQIFJlZmVyZXIpOiBGQUlMJyk7XG4iKTsKK2Vsc2UKKyAgICBwcmludCgibG9n
KCdFeHRlcm5hbCBzY3JpcHQgKEhUVFAgUmVmZXJlcik6IFBBU1MnKTtcbiIpOworPz4KK2lmIChk
b2N1bWVudC5yZWZlcnJlci50b1N0cmluZygpICE9ICIiKQorICAgIGxvZygnRXh0ZXJuYWwgc2Ny
aXB0IChKYXZhU2NyaXB0KTogRkFJTCcpOworZWxzZQorICAgIGxvZygnRXh0ZXJuYWwgc2NyaXB0
IChKYXZhU2NyaXB0KTogUEFTUycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCBlYmU3
YjlkLi5kM2Y3MjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTY3NSw2ICs1Njc1
LDkgQEAgZmFzdC9jc3Mvbm9uLXN0YW5kYXJkLWNoZWNrYm94LXNpemUuaHRtbAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM2NzEKIG1lZGlhL3ZpZGVvLWxvb3Au
aHRtbAogCisjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlci4KK2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIu
aHRtbAorCiAjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRXaWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbC4KIGZhc3QvbG9hZGVyL29ubG9hZC13aWxsU2VuZFJlcXVl
c3QtbnVsbC1mb3Itc2NyaXB0Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMjdl
NzA2OS4uNTE0ODk3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBl
ZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yMDEsNiArMjAxLDkg
QEAgaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQtdHdpY2UuaHRtbAogaHR0
cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2ZlZWQtdXJscy1mcm9tLXJlbW90ZS5odG1sCiAKKyMgTWlzc2luZyBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigpCitodHRwL3Rlc3RzL3Nl
Y3VyaXR5L25vLXJlZmVycmVyLmh0bWwKKwogIyBNaXNzaW5nIGxheW91dFRlc3RDb250cm9sbGVy
LnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkKIGZhc3QvbG9hZGVyL29ubG9hZC13aWxs
U2VuZFJlcXVlc3QtbnVsbC1mb3ItZnJhbWUuaHRtbAogZmFzdC9sb2FkZXIvb25sb2FkLXdpbGxT
ZW5kUmVxdWVzdC1udWxsLWZvci1zY3JpcHQuaHRtbApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDZlZmJkNzIuLjc3MDgxYjQg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0wOSAgSm9jaGVuIEVpc2luZ2VyICA8am9j
aGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBJbnRyb2R1Y2Ugc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIgdG8gTGF5
b3V0VGVzdENvbnRyb2xsZXIgdG8gc2VsZWN0aXZlbHkgcmVtb3ZlIGhlYWRlcnMgaW4gd2lsbFNl
bmRSZXF1ZXN0LiBVc2VkIGluIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIuaHRtbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5MjAKKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAgICAoTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjp3aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgtW1Jlc291
cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJlZGlyZWN0
UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2lu
L1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERlbGVnYXRl
Ojp3aWxsU2VuZFJlcXVlc3QpOgorCiAyMDEwLTAzLTA4ICBCcmFkeSBFaWRzb24gIDxiZWlkc29u
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKGJ1dCBzdWdnZXN0ZWQg
YnkgU3RldmUgRmFsa2VuYnVyZyBhbmQgZml4aW5nIGEgYm9uZWhlYWRlZCBtaXN0YWtlIG9uIG15
IHBhcnQgbGFzdCB3ZWVrKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDQzYTdhNzMuLmE5ZWJlODEgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysg
Yi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAg
LTEwMjMsNiArMTAyMywyNSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRVc2VyU3R5bGVTaGVldExv
Y2F0aW9uQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0
V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1
bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCit7CisgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KKyAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKKworICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBoZWFkZXIoQWRvcHQs
IEpTVmFsdWVUb1N0cmluZ0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pKTsK
KyAgICBBU1NFUlQoISpleGNlcHRpb24pOworCisgICAgc2l6ZV90IG1heExlbmd0aCA9IEpTU3Ry
aW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShoZWFkZXIuZ2V0KCkpOworICAgIGNoYXIqIGhl
YWRlckJ1ZmZlciA9IG5ldyBjaGFyW21heExlbmd0aCArIDFdOworICAgIEpTU3RyaW5nR2V0VVRG
OENTdHJpbmcoaGVhZGVyLmdldCgpLCBoZWFkZXJCdWZmZXIsIG1heExlbmd0aCArIDEpOworCisg
ICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRU
ZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29u
dHJvbGxlci0+c2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoaGVhZGVyQnVmZmVyKTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpT
VmFsdWVSZWYgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxDYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3Qs
IHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIGNyb3NzLXBsYXRmb3JtIGltcGxlbWVu
dGF0aW9uCkBAIC0xNDYzLDYgKzE0ODIsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkKICAgICAgICAgeyAic2V0VXNlRGFzaGJvYXJk
Q29tcGF0aWJpbGl0eU1vZGUiLCBzZXRVc2VEYXNoYm9hcmRDb21wYXRpYmlsaXR5TW9kZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZCIsIHNldFVz
ZXJTdHlsZVNoZWV0RW5hYmxlZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFVzZXJT
dHlsZVNoZWV0TG9jYXRpb24iLCBzZXRVc2VyU3R5bGVTaGVldExvY2F0aW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIiLCBzZXRXaWxs
U2VuZFJlcXVlc3RDbGVhckhlYWRlckNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldFdp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsIiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVs
bE9uUmVkaXJlY3QiLCBzZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbE9uUmVkaXJlY3RDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaW5kb3dJc0tleSIsIHNldFdpbmRvd0lzS2V5
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L0xheW91dFRlc3RDb250cm9sbGVyLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDE5YTAzYTMuLjcyZTEwZDIgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKKysrIGIvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMzEsOSAr
MzEsMTAgQEAKIAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvSlNSZXRhaW5QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHNldD4KICNpbmNsdWRlIDxzdHJpbmc+CiAjaW5jbHVkZSA8dmVj
dG9yPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIGNsYXNzIExheW91dFRlc3RDb250
cm9sbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5b3V0VGVzdENvbnRyb2xsZXI+IHsKIHB1Ymxp
YzoKQEAgLTE4Niw2ICsxODcsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRXYWl0VG9EdW1wKGJv
b2wgd2FpdFRvRHVtcCk7CiAgICAgdm9pZCB3YWl0VG9EdW1wV2F0Y2hkb2dUaW1lckZpcmVkKCk7
CiAKKyAgICBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4mIHdpbGxTZW5kUmVxdWVzdENsZWFy
SGVhZGVycygpIGNvbnN0IHsgcmV0dXJuIG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOyB9
CisgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcihzdGQ6OnN0cmluZyBoZWFk
ZXIpIHsgbV93aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMuaW5zZXJ0KGhlYWRlcik7IH0KKwog
ICAgIGJvb2wgd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGwoKSBjb25zdCB7IHJldHVybiBtX3dp
bGxTZW5kUmVxdWVzdFJldHVybnNOdWxsOyB9CiAgICAgdm9pZCBzZXRXaWxsU2VuZFJlcXVlc3RS
ZXR1cm5zTnVsbChib29sIHJldHVybnNOdWxsKSB7IG1fd2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051
bGwgPSByZXR1cm5zTnVsbDsgfQogCkBAIC0yODQsNiArMjg4LDggQEAgcHJpdmF0ZToKICAgICBz
dGQ6OnN0cmluZyBtX2F1dGhlbnRpY2F0aW9uUGFzc3dvcmQ7IAogICAgIHN0ZDo6c3RyaW5nIG1f
dGVzdFBhdGhPclVSTDsKICAgICBzdGQ6OnN0cmluZyBtX2V4cGVjdGVkUGl4ZWxIYXNoOyAgICAv
LyBlbXB0eSBzdHJpbmcgaWYgbm8gaGFzaAorCisgICAgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+IG1f
d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzOwogICAgIAogICAgIC8vIG9yaWdpbnMgd2hpY2gg
aGF2ZSBiZWVuIGdyYW50ZWQgZGVza3RvcCBub3RpZmljYXRpb24gYWNjZXNzCiAgICAgc3RkOjp2
ZWN0b3I8SlNTdHJpbmdSZWY+IG1fZGVza3RvcE5vdGlmaWNhdGlvbkFsbG93ZWRPcmlnaW5zOwpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERl
bGVnYXRlLm1tCmluZGV4IDZmODJlMDEuLjkyNDQxMTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbQorKysgYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KQEAgLTM1LDYg
KzM1LDggQEAKICNpbXBvcnQgPFdlYktpdC9XZWJUeXBlc0ludGVybmFsLmg+CiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogCit1c2luZyBuYW1lc3BhY2Ugc3RkOworCiBAaW50ZXJmYWNlIE5T
VVJMIChEUlRFeHRyYXMpCiAtIChOU1N0cmluZyAqKV9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQ7CiBAZW5kCkBAIC0xMjEsMTAgKzEyMywxMCBAQAogICAgIHJldHVybiBAIjx1
bmtub3duPiI7CiB9CiAKLS0oTlNVUkxSZXF1ZXN0ICopd2ViVmlldzogKFdlYlZpZXcgKil3diBy
ZXNvdXJjZTppZGVudGlmaWVyIHdpbGxTZW5kUmVxdWVzdDogKE5TVVJMUmVxdWVzdCAqKW5ld1Jl
cXVlc3QgcmVkaXJlY3RSZXNwb25zZTooTlNVUkxSZXNwb25zZSAqKXJlZGlyZWN0UmVzcG9uc2Ug
ZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291cmNlCistKE5TVVJMUmVxdWVz
dCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVzb3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJl
cXVlc3Q6IChOU1VSTFJlcXVlc3QgKilyZXF1ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVz
cG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZyb21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICop
ZGF0YVNvdXJjZQogewogICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1
bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSkgewotICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAlQCByZWRp
cmVjdFJlc3BvbnNlICVAIiwgaWRlbnRpZmllciwgW25ld1JlcXVlc3QgX2RydF9kZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdF0sCisgICAgICAgIE5TU3RyaW5nICpzdHJpbmcgPSBbTlNT
dHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIiVAIC0gd2lsbFNlbmRSZXF1ZXN0ICVAIHJlZGlyZWN0
UmVzcG9uc2UgJUAiLCBpZGVudGlmaWVyLCBbcmVxdWVzdCBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0XSwKICAgICAgICAgICAgIFtyZWRpcmVjdFJlc3BvbnNlIF9kcnRfZGVz
Y3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdXTsKICAgICAgICAgcHJpbnRmKCIlc1xuIiwg
W3N0cmluZyBVVEY4U3RyaW5nXSk7CiAgICAgfQpAQCAtMTM3LDcgKzEzOSw3IEBACiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgfQogCi0gICAgTlNVUkwgKnVybCA9IFtuZXdSZXF1ZXN0IFVSTF07
CisgICAgTlNVUkwgKnVybCA9IFtyZXF1ZXN0IFVSTF07CiAgICAgTlNTdHJpbmcgKmhvc3QgPSBb
dXJsIGhvc3RdOwogICAgIGlmIChob3N0CiAgICAgICAgICYmIChOU09yZGVyZWRTYW1lID09IFtb
dXJsIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImh0dHAiXSB8fCBOU09yZGVyZWRT
YW1lID09IFtbdXJsIHNjaGVtZV0gY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImh0dHBzIl0pCkBA
IC0xNTEsNyArMTUzLDE1IEBACiAgICAgaWYgKGRpc2FsbG93ZWRVUkxzICYmIENGU2V0Q29udGFp
bnNWYWx1ZShkaXNhbGxvd2VkVVJMcywgdXJsKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IHJldHVybiBuZXdSZXF1ZXN0OworICAgIE5TTXV0YWJsZVVSTFJlcXVlc3QgKm5ld1JlcXVlc3Qg
PSBbcmVxdWVzdCBtdXRhYmxlQ29weV07CisgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNsZWFySGVh
ZGVycyA9IGdMYXlvdXRUZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJz
KCk7CisgICAgZm9yIChzZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJI
ZWFkZXJzLmJlZ2luKCk7IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7
CisgICAgICAgIE5TU3RyaW5nICpuc0hlYWRlciA9IFtbTlNTdHJpbmcgYWxsb2NdIGluaXRXaXRo
VVRGOFN0cmluZzpoZWFkZXItPmNfc3RyKCldOworICAgICAgICBbbmV3UmVxdWVzdCBzZXRWYWx1
ZTpuaWwgZm9ySFRUUEhlYWRlckZpZWxkOm5zSGVhZGVyXTsKKyAgICAgICAgW25zSGVhZGVyIHJl
bGVhc2VdOworICAgIH0KKworICAgIHJldHVybiBbbmV3UmVxdWVzdCBhdXRvcmVsZWFzZV07CiB9
CiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2IHJlc291cmNlOihpZClpZGVudGlmaWVy
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqKWNoYWxsZW5nZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRhdGFT
b3VyY2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJj
ZUxvYWREZWxlZ2F0ZS5jcHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3Vy
Y2VMb2FkRGVsZWdhdGUuY3BwCmluZGV4IDE5YmY4NGEuLjJlMDMxZGEgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAKKysr
IGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNw
cApAQCAtMzEsMjggKzMxLDM1IEBACiAKICNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZS5oIgogI2lu
Y2x1ZGUgIkxheW91dFRlc3RDb250cm9sbGVyLmgiCi0jaW5jbHVkZSA8Y29tdXRpbC5oPgogI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXRDT01BUEkuaD4KKyNpbmNsdWRlIDxjb211dGlsLmg+CisjaW5j
bHVkZSA8c3N0cmVhbT4KKyNpbmNsdWRlIDx0Y2hhci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHNzdHJlYW0+Ci0KIAotdXNp
bmcgc3RkOjp3c3RyaW5nOwotdXNpbmcgc3RkOjp3aW9zdHJlYW07Cit1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCiBzdGF0aWMgaW5saW5lIHdzdHJpbmcgd3N0cmluZ0Zyb21CU1RSKEJTVFIgc3RyKQog
ewogICAgIHJldHVybiB3c3RyaW5nKHN0ciwgOjpTeXNTdHJpbmdMZW4oc3RyKSk7CiB9CiAKLXdz
dHJpbmcgd3N0cmluZ0Zyb21JbnQoaW50IGkpCitzdGF0aWMgaW5saW5lIHdzdHJpbmcgd3N0cmlu
Z0Zyb21JbnQoaW50IGkpCiB7Ci0gICAgc3RkOjp3b3N0cmluZ3N0cmVhbSBzczsKKyAgICB3b3N0
cmluZ3N0cmVhbSBzczsKICAgICBzcyA8PCBpOwogICAgIHJldHVybiBzcy5zdHIoKTsKIH0KIAor
c3RhdGljIGlubGluZSBCU1RSIEJTVFJGcm9tU3RyaW5nKGNvbnN0IHN0cmluZyYgc3RyKQorewor
ICAgIGludCBsZW5ndGggPSA6Ok11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgc3RyLmNf
c3RyKCksIHN0ci5sZW5ndGgoKSwgMCwgMCk7CisgICAgQlNUUiByZXN1bHQgPSA6OlN5c0FsbG9j
U3RyaW5nTGVuKDAsIGxlbmd0aCk7CisgICAgOjpNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgs
IDAsIHN0ci5jX3N0cigpLCBzdHIubGVuZ3RoKCksIHJlc3VsdCwgbGVuZ3RoKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgbG9uZywgd3N0cmluZz4g
SWRlbnRpZmllck1hcDsKIAogSWRlbnRpZmllck1hcCYgdXJsTWFwKCkKQEAgLTI1NCw4ICsyNjEs
MTYgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBSZXNvdXJjZUxvYWREZWxlZ2F0ZTo6d2ls
bFNlbmRSZXF1ZXN0KAogICAgICAgICByZXR1cm4gU19PSzsKICAgICB9CiAKLSAgICByZXF1ZXN0
LT5BZGRSZWYoKTsKLSAgICAqbmV3UmVxdWVzdCA9IHJlcXVlc3Q7CisgICAgSVdlYk11dGFibGVV
UkxSZXF1ZXN0KiByZXF1ZXN0Q29weSA9IDA7CisgICAgcmVxdWVzdC0+bXV0YWJsZUNvcHkoJnJl
cXVlc3RDb3B5KTsKKyAgICBjb25zdCBzZXQ8c3RyaW5nPiYgY2xlYXJIZWFkZXJzID0gZ0xheW91
dFRlc3RDb250cm9sbGVyLT53aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMoKTsKKyAgICBmb3Ig
KHNldDxzdHJpbmc+Ojpjb25zdF9pdGVyYXRvciBoZWFkZXIgPSBjbGVhckhlYWRlcnMuYmVnaW4o
KTsgaGVhZGVyICE9IGNsZWFySGVhZGVycy5lbmQoKTsgKytoZWFkZXIpIHsKKyAgICAgIEJTVFIg
YnN0ckhlYWRlciA9IEJTVFJGcm9tU3RyaW5nKCpoZWFkZXIpOworICAgICAgcmVxdWVzdENvcHkt
PnNldFZhbHVlKDAsIGJzdHJIZWFkZXIpOworICAgICAgU3lzRnJlZVN0cmluZyhic3RySGVhZGVy
KTsKKyAgICB9CisKKyAgICAqbmV3UmVxdWVzdCA9IHJlcXVlc3RDb3B5OwogICAgIHJldHVybiBT
X09LOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50507</attachid>
            <date>2010-03-11 08:27:08 -0800</date>
            <delta_ts>2010-03-12 06:06:37 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug-35920-20100311172706.patch</filename>
            <type>text/plain</type>
            <size>14714</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NjNiZjA5Li5kZDgxNWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDMt
MDkgIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBmb3IgcmVmZXJyZXIgaW5m
b3JtYXRpb24gYmVpbmcgc3RyaXBwZWQgd2hlbiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgaW4gd2ls
bFNlbmRSZXF1ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNTkyMAorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3Jlc291cmNlcy9uby1yZWZlcnJlci5waHA6IEFkZGVkLgorICAgICAgICAqIHBsYXRm
b3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisKIDIwMTAt
MDMtMTAgIEp1c3RpbiBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9uby1yZWZlcnJlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNmFiMDFkYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBA
QAorSmF2YVNjcmlwdDogUEFTUworSFRUUCBSZWZlcmVyOiBQQVNTCitFeHRlcm5hbCBzY3JpcHQg
KEhUVFAgUmVmZXJlcik6IFBBU1MKK0V4dGVybmFsIHNjcmlwdCAoSmF2YVNjcmlwdCk6IFBBU1MK
K1N5bmMgWEhSOiBQQVNTCitBU3luYyBYSFI6IFBBU1MKK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9uby1yZWZlcnJlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmM1ZjYzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKQEAgLTAsMCArMSw5IEBACis8
c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0V2lsbFNlbmRSZXF1ZXN0
Q2xlYXJIZWFkZXIoIlJlZmVyZXIiKTsKK30KKzwvc2NyaXB0PgorPGRpdiBpZD1sb2c+PC9kaXY+
Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9u
by1yZWZlcnJlci1mcmFtZS5waHAiPjwvaWZyYW1lPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUucGhwIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvbm8tcmVmZXJyZXItZnJhbWUu
cGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNWMyMzQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9uby1y
ZWZlcnJlci1mcmFtZS5waHAKQEAgLTAsMCArMSwzOSBAQAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKQoreworICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9nIiku
aW5uZXJIVE1MICs9IG1lc3NhZ2UgKyAiPGJyPiI7Cit9CisKK2lmIChkb2N1bWVudC5yZWZlcnJl
ci50b1N0cmluZygpICE9ICIiKSB7CisgIGxvZygiSmF2YVNjcmlwdDogRkFJTCIpOworfSBlbHNl
IHsKKyAgbG9nKCJKYXZhU2NyaXB0OiBQQVNTIik7Cit9CisKKzw/cGhwCiskcmVmZXIgPSAkX1NF
UlZFUlsnSFRUUF9SRUZFUkVSJ107CitpZiAoJHJlZmVyICYmICRyZWZlciAhPSAiIikKKyAgICBw
cmludCgibG9nKCdIVFRQIFJlZmVyZXI6IEZBSUwnKSIpOworZWxzZQorICAgIHByaW50KCJsb2co
J0hUVFAgUmVmZXJlcjogUEFTUycpIik7Cis/PgorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KSB7CisgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICB4aHIub3BlbigiR0VU
IiwgIm5vLXJlZmVycmVyLnBocCIsIGZhbHNlKTsKKyAgICB4aHIuc2VuZChudWxsKTsKKyAgICBs
b2coIlN5bmMgWEhSOiAiICsgKHhoci5yZXNwb25zZVRleHQubWF0Y2goL0hUVFAuKkZBSUwvKSA/
ICJGQUlMIiA6ICJQQVNTIikpOworICAgIHhoci5vcGVuKCJHRVQiLCAibm8tcmVmZXJyZXIucGhw
IiwgdHJ1ZSk7CisgICAgeGhyLnNlbmQobnVsbCk7CisgICAgeGhyLm9ubG9hZCA9IG9uWEhSTG9h
ZDsKK30KKworZnVuY3Rpb24gb25YSFJMb2FkKGV2dCkKK3sKKyAgICBsb2coIkFTeW5jIFhIUjog
IiArIChldnQudGFyZ2V0LnJlc3BvbnNlVGV4dC5tYXRjaCgvSFRUUC4qRkFJTC8pID8gIkZBSUwi
IDogIlBBU1MiKSk7CisgICAgbG9nKCJET05FIik7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ibm8tcmVmZXJyZXIucGhwIj48L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25vLXJl
ZmVycmVyLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL25v
LXJlZmVycmVyLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGZkOGNh
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvbm8tcmVmZXJyZXIucGhwCkBAIC0wLDAgKzEsMTMgQEAKKzw/cGhwCitoZWFkZXIoIkNh
Y2hlOiBuby1jYWNoZSwgbm8tc3RvcmUiKTsKKworJHJlZmVyID0gJF9TRVJWRVJbJ0hUVFBfUkVG
RVJFUiddOworaWYgKCRyZWZlciAmJiAkcmVmZXIgIT0gIiIpCisgICAgcHJpbnQoImxvZygnRXh0
ZXJuYWwgc2NyaXB0IChIVFRQIFJlZmVyZXIpOiBGQUlMJyk7XG4iKTsKK2Vsc2UKKyAgICBwcmlu
dCgibG9nKCdFeHRlcm5hbCBzY3JpcHQgKEhUVFAgUmVmZXJlcik6IFBBU1MnKTtcbiIpOworPz4K
K2lmIChkb2N1bWVudC5yZWZlcnJlci50b1N0cmluZygpICE9ICIiKQorICAgIGxvZygnRXh0ZXJu
YWwgc2NyaXB0IChKYXZhU2NyaXB0KTogRkFJTCcpOworZWxzZQorICAgIGxvZygnRXh0ZXJuYWwg
c2NyaXB0IChKYXZhU2NyaXB0KTogUEFTUycpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRl
eCA5ZDMxNzRiLi5mMmFmNTljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtNTY3Nyw2
ICs1Njc3LDkgQEAgZmFzdC9jc3Mvbm9uLXN0YW5kYXJkLWNoZWNrYm94LXNpemUuaHRtbAogIyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM2NzEKIG1lZGlhL3ZpZGVv
LWxvb3AuaHRtbAogCisjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlci4KK2h0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVm
ZXJyZXIuaHRtbAorCiAjIEdUSysgZG9lcyBub3QgaGF2ZSBsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRXaWxsU2VuZFJlcXVlc3RSZXR1cm5zTnVsbC4KIGZhc3QvbG9hZGVyL29ubG9hZC13aWxsU2Vu
ZFJlcXVlc3QtbnVsbC1mb3Itc2NyaXB0Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5k
ZXggZjUwM2MyYi4uNTVkZGI2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC0yMDAsNiAr
MjAwLDkgQEAgaHR0cC90ZXN0cy9taXNjL3BvbGljeS1kZWxlZ2F0ZS1jYWxsZWQtdHdpY2UuaHRt
bAogaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXRvLWV4dGVybmFsLXVybC5odG1sCiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2ZlZWQtdXJscy1mcm9tLXJlbW90ZS5odG1sCiAKKyMgTWlzc2luZyBsYXlv
dXRUZXN0Q29udHJvbGxlci5zZXRXaWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcigpCitodHRwL3Rl
c3RzL3NlY3VyaXR5L25vLXJlZmVycmVyLmh0bWwKKwogIyBNaXNzaW5nIGxheW91dFRlc3RDb250
cm9sbGVyLnNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkKIGZhc3QvbG9hZGVyL29ubG9h
ZC13aWxsU2VuZFJlcXVlc3QtbnVsbC1mb3ItZnJhbWUuaHRtbAogZmFzdC9sb2FkZXIvb25sb2Fk
LXdpbGxTZW5kUmVxdWVzdC1udWxsLWZvci1zY3JpcHQuaHRtbApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDYxNTk0N2YuLjU5
YTg0MjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMy0wOSAgSm9jaGVuIEVpc2luZ2Vy
ICA8am9jaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBJbnRyb2R1Y2Ugc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIg
dG8gTGF5b3V0VGVzdENvbnRyb2xsZXIgdG8gc2VsZWN0aXZlbHkgcmVtb3ZlIGhlYWRlcnMgaW4g
d2lsbFNlbmRSZXF1ZXN0LiBVc2VkIGluIGh0dHAvdGVzdHMvc2VjdXJpdHkvbm8tcmVmZXJyZXIu
aHRtbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzU5
MjAKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKHNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2spOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RD
b250cm9sbGVyOjp3aWxsU2VuZFJlcXVlc3RDbGVhckhlYWRlcnMpOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW06CisgICAgICAgICgt
W1Jlc291cmNlTG9hZERlbGVnYXRlIHdlYlZpZXc6cmVzb3VyY2U6d2lsbFNlbmRSZXF1ZXN0OnJl
ZGlyZWN0UmVzcG9uc2U6ZnJvbURhdGFTb3VyY2U6XSk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL1Jlc291cmNlTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKFJlc291cmNlTG9hZERl
bGVnYXRlOjp3aWxsU2VuZFJlcXVlc3QpOgorCiAyMDEwLTAzLTEwICBBZGFtIFJvYmVuICA8YXJv
YmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBSb2xsIG91dCB0aGUgcHJlcGFyZS1DaGFuZ2VMb2cg
cGFydCBvZiByNTU4NzAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA0M2E3YTczLi5hOWViZTgxIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0x
MDIzLDYgKzEwMjMsMjUgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0VXNlclN0eWxlU2hlZXRMb2Nh
dGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamUKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldFdp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCisgICAgaWYg
KGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4gaGVhZGVyKEFkb3B0LCBK
U1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9uKSk7Cisg
ICAgQVNTRVJUKCEqZXhjZXB0aW9uKTsKKworICAgIHNpemVfdCBtYXhMZW5ndGggPSBKU1N0cmlu
Z0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoaGVhZGVyLmdldCgpKTsKKyAgICBjaGFyKiBoZWFk
ZXJCdWZmZXIgPSBuZXcgY2hhclttYXhMZW5ndGggKyAxXTsKKyAgICBKU1N0cmluZ0dldFVURjhD
U3RyaW5nKGhlYWRlci5nZXQoKSwgaGVhZGVyQnVmZmVyLCBtYXhMZW5ndGggKyAxKTsKKworICAg
IExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVz
dENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRy
b2xsZXItPnNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyKGhlYWRlckJ1ZmZlcik7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1Zh
bHVlUmVmIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBz
aXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBjcm9zcy1wbGF0Zm9ybSBpbXBsZW1lbnRh
dGlvbgpAQCAtMTQ2Myw2ICsxNDgyLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucygpCiAgICAgICAgIHsgInNldFVzZURhc2hib2FyZENv
bXBhdGliaWxpdHlNb2RlIiwgc2V0VXNlRGFzaGJvYXJkQ29tcGF0aWJpbGl0eU1vZGVDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5bGVTaGVldEVuYWJsZWQiLCBzZXRVc2Vy
U3R5bGVTaGVldEVuYWJsZWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRVc2VyU3R5
bGVTaGVldExvY2F0aW9uIiwgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbkNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCisgICAgICAgIHsgInNldFdpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyIiwgc2V0V2lsbFNl
bmRSZXF1ZXN0Q2xlYXJIZWFkZXJDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRXaWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbCIsIHNldFdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsQ2Fs
bGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxP
blJlZGlyZWN0Iiwgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0dXJuc051bGxPblJlZGlyZWN0Q2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAic2V0V2luZG93SXNLZXkiLCBzZXRXaW5kb3dJc0tleUNh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAppbmRleCAxOWEwM2EzLi43MmUxMGQyIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTMxLDkgKzMx
LDEwIEBACiAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDxzZXQ+CiAjaW5jbHVkZSA8c3RyaW5nPgogI2luY2x1ZGUgPHZlY3Rv
cj4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBjbGFzcyBMYXlvdXRUZXN0Q29udHJv
bGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPExheW91dFRlc3RDb250cm9sbGVyPiB7CiBwdWJsaWM6
CkBAIC0xODYsNiArMTg3LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2FpdFRvRHVtcChib29s
IHdhaXRUb0R1bXApOwogICAgIHZvaWQgd2FpdFRvRHVtcFdhdGNoZG9nVGltZXJGaXJlZCgpOwog
CisgICAgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+JiB3aWxsU2VuZFJlcXVlc3RDbGVhckhl
YWRlcnMoKSBjb25zdCB7IHJldHVybiBtX3dpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsgfQor
ICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXIoc3RkOjpzdHJpbmcgaGVhZGVy
KSB7IG1fd2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzLmluc2VydChoZWFkZXIpOyB9CisKICAg
ICBib29sIHdpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxsKCkgY29uc3QgeyByZXR1cm4gbV93aWxs
U2VuZFJlcXVlc3RSZXR1cm5zTnVsbDsgfQogICAgIHZvaWQgc2V0V2lsbFNlbmRSZXF1ZXN0UmV0
dXJuc051bGwoYm9vbCByZXR1cm5zTnVsbCkgeyBtX3dpbGxTZW5kUmVxdWVzdFJldHVybnNOdWxs
ID0gcmV0dXJuc051bGw7IH0KIApAQCAtMjg0LDYgKzI4OCw4IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpzdHJpbmcgbV9hdXRoZW50aWNhdGlvblBhc3N3b3JkOyAKICAgICBzdGQ6OnN0cmluZyBtX3Rl
c3RQYXRoT3JVUkw7CiAgICAgc3RkOjpzdHJpbmcgbV9leHBlY3RlZFBpeGVsSGFzaDsgICAgLy8g
ZW1wdHkgc3RyaW5nIGlmIG5vIGhhc2gKKworICAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiBtX3dp
bGxTZW5kUmVxdWVzdENsZWFySGVhZGVyczsKICAgICAKICAgICAvLyBvcmlnaW5zIHdoaWNoIGhh
dmUgYmVlbiBncmFudGVkIGRlc2t0b3Agbm90aWZpY2F0aW9uIGFjY2VzcwogICAgIHN0ZDo6dmVj
dG9yPEpTU3RyaW5nUmVmPiBtX2Rlc2t0b3BOb3RpZmljYXRpb25BbGxvd2VkT3JpZ2luczsKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbSBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9SZXNvdXJjZUxvYWREZWxl
Z2F0ZS5tbQppbmRleCA2ZjgyZTAxLi45MjQ0MTEwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0KKysrIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL1Jlc291cmNlTG9hZERlbGVnYXRlLm1tCkBAIC0zNSw2ICsz
NSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViVHlwZXNJbnRlcm5hbC5oPgogI2ltcG9ydCA8d3Rm
L0Fzc2VydGlvbnMuaD4KIAordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKwogQGludGVyZmFjZSBOU1VS
TCAoRFJURXh0cmFzKQogLSAoTlNTdHJpbmcgKilfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0OwogQGVuZApAQCAtMTIxLDEwICsxMjMsMTAgQEAKICAgICByZXR1cm4gQCI8dW5r
bm93bj4iOwogfQogCi0tKE5TVVJMUmVxdWVzdCAqKXdlYlZpZXc6IChXZWJWaWV3ICopd3YgcmVz
b3VyY2U6aWRlbnRpZmllciB3aWxsU2VuZFJlcXVlc3Q6IChOU1VSTFJlcXVlc3QgKiluZXdSZXF1
ZXN0IHJlZGlyZWN0UmVzcG9uc2U6KE5TVVJMUmVzcG9uc2UgKilyZWRpcmVjdFJlc3BvbnNlIGZy
b21EYXRhU291cmNlOihXZWJEYXRhU291cmNlICopZGF0YVNvdXJjZQorLShOU1VSTFJlcXVlc3Qg
Kil3ZWJWaWV3OiAoV2ViVmlldyAqKXd2IHJlc291cmNlOmlkZW50aWZpZXIgd2lsbFNlbmRSZXF1
ZXN0OiAoTlNVUkxSZXF1ZXN0ICopcmVxdWVzdCByZWRpcmVjdFJlc3BvbnNlOihOU1VSTFJlc3Bv
bnNlICopcmVkaXJlY3RSZXNwb25zZSBmcm9tRGF0YVNvdXJjZTooV2ViRGF0YVNvdXJjZSAqKWRh
dGFTb3VyY2UKIHsKICAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
UmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkpIHsKLSAgICAgICAgTlNTdHJpbmcgKnN0cmluZyA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJUAgLSB3aWxsU2VuZFJlcXVlc3QgJUAgcmVkaXJl
Y3RSZXNwb25zZSAlQCIsIGlkZW50aWZpZXIsIFtuZXdSZXF1ZXN0IF9kcnRfZGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHRdLAorICAgICAgICBOU1N0cmluZyAqc3RyaW5nID0gW05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCIlQCAtIHdpbGxTZW5kUmVxdWVzdCAlQCByZWRpcmVjdFJl
c3BvbnNlICVAIiwgaWRlbnRpZmllciwgW3JlcXVlc3QgX2RydF9kZXNjcmlwdGlvblN1aXRhYmxl
Rm9yVGVzdFJlc3VsdF0sCiAgICAgICAgICAgICBbcmVkaXJlY3RSZXNwb25zZSBfZHJ0X2Rlc2Ny
aXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XV07CiAgICAgICAgIHByaW50ZigiJXNcbiIsIFtz
dHJpbmcgVVRGOFN0cmluZ10pOwogICAgIH0KQEAgLTEzNyw3ICsxMzksNyBAQAogICAgICAgICBy
ZXR1cm4gbmlsOwogICAgIH0KIAotICAgIE5TVVJMICp1cmwgPSBbbmV3UmVxdWVzdCBVUkxdOwor
ICAgIE5TVVJMICp1cmwgPSBbcmVxdWVzdCBVUkxdOwogICAgIE5TU3RyaW5nICpob3N0ID0gW3Vy
bCBob3N0XTsKICAgICBpZiAoaG9zdAogICAgICAgICAmJiAoTlNPcmRlcmVkU2FtZSA9PSBbW3Vy
bCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwIl0gfHwgTlNPcmRlcmVkU2Ft
ZSA9PSBbW3VybCBzY2hlbWVdIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJodHRwcyJdKQpAQCAt
MTUxLDcgKzE1MywxNSBAQAogICAgIGlmIChkaXNhbGxvd2VkVVJMcyAmJiBDRlNldENvbnRhaW5z
VmFsdWUoZGlzYWxsb3dlZFVSTHMsIHVybCkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBy
ZXR1cm4gbmV3UmVxdWVzdDsKKyAgICBOU011dGFibGVVUkxSZXF1ZXN0ICpuZXdSZXF1ZXN0ID0g
W3JlcXVlc3QgbXV0YWJsZUNvcHldOworICAgIGNvbnN0IHNldDxzdHJpbmc+JiBjbGVhckhlYWRl
cnMgPSBnTGF5b3V0VGVzdENvbnRyb2xsZXItPndpbGxTZW5kUmVxdWVzdENsZWFySGVhZGVycygp
OworICAgIGZvciAoc2V0PHN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGhlYWRlciA9IGNsZWFySGVh
ZGVycy5iZWdpbigpOyBoZWFkZXIgIT0gY2xlYXJIZWFkZXJzLmVuZCgpOyArK2hlYWRlcikgewor
ICAgICAgICBOU1N0cmluZyAqbnNIZWFkZXIgPSBbW05TU3RyaW5nIGFsbG9jXSBpbml0V2l0aFVU
RjhTdHJpbmc6aGVhZGVyLT5jX3N0cigpXTsKKyAgICAgICAgW25ld1JlcXVlc3Qgc2V0VmFsdWU6
bmlsIGZvckhUVFBIZWFkZXJGaWVsZDpuc0hlYWRlcl07CisgICAgICAgIFtuc0hlYWRlciByZWxl
YXNlXTsKKyAgICB9CisKKyAgICByZXR1cm4gW25ld1JlcXVlc3QgYXV0b3JlbGVhc2VdOwogfQog
CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3diByZXNvdXJjZTooaWQpaWRlbnRpZmllciBk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UgKiljaGFsbGVuZ2UgZnJvbURhdGFTb3VyY2U6KFdlYkRhdGFTb3VyY2UgKilkYXRhU291
cmNlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VM
b2FkRGVsZWdhdGUuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL1Jlc291cmNl
TG9hZERlbGVnYXRlLmNwcAppbmRleCAxOWJmODRhLi4yZTAzMWRhIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vUmVzb3VyY2VMb2FkRGVsZWdhdGUuY3BwCisrKyBi
L1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9SZXNvdXJjZUxvYWREZWxlZ2F0ZS5jcHAK
QEAgLTMxLDI4ICszMSwzNSBAQAogCiAjaW5jbHVkZSAiRHVtcFJlbmRlclRyZWUuaCIKICNpbmNs
dWRlICJMYXlvdXRUZXN0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgPGNvbXV0aWwuaD4KICNpbmNs
dWRlIDxXZWJLaXQvV2ViS2l0Q09NQVBJLmg+CisjaW5jbHVkZSA8Y29tdXRpbC5oPgorI2luY2x1
ZGUgPHNzdHJlYW0+CisjaW5jbHVkZSA8dGNoYXIuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDxzc3RyZWFtPgotCiAKLXVzaW5n
IHN0ZDo6d3N0cmluZzsKLXVzaW5nIHN0ZDo6d2lvc3RyZWFtOwordXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIAogc3RhdGljIGlubGluZSB3c3RyaW5nIHdzdHJpbmdGcm9tQlNUUihCU1RSIHN0cikKIHsK
ICAgICByZXR1cm4gd3N0cmluZyhzdHIsIDo6U3lzU3RyaW5nTGVuKHN0cikpOwogfQogCi13c3Ry
aW5nIHdzdHJpbmdGcm9tSW50KGludCBpKQorc3RhdGljIGlubGluZSB3c3RyaW5nIHdzdHJpbmdG
cm9tSW50KGludCBpKQogewotICAgIHN0ZDo6d29zdHJpbmdzdHJlYW0gc3M7CisgICAgd29zdHJp
bmdzdHJlYW0gc3M7CiAgICAgc3MgPDwgaTsKICAgICByZXR1cm4gc3Muc3RyKCk7CiB9CiAKK3N0
YXRpYyBpbmxpbmUgQlNUUiBCU1RSRnJvbVN0cmluZyhjb25zdCBzdHJpbmcmIHN0cikKK3sKKyAg
ICBpbnQgbGVuZ3RoID0gOjpNdWx0aUJ5dGVUb1dpZGVDaGFyKENQX1VURjgsIDAsIHN0ci5jX3N0
cigpLCBzdHIubGVuZ3RoKCksIDAsIDApOworICAgIEJTVFIgcmVzdWx0ID0gOjpTeXNBbGxvY1N0
cmluZ0xlbigwLCBsZW5ndGgpOworICAgIDo6TXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAw
LCBzdHIuY19zdHIoKSwgc3RyLmxlbmd0aCgpLCByZXN1bHQsIGxlbmd0aCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkIGxvbmcsIHdzdHJpbmc+IElk
ZW50aWZpZXJNYXA7CiAKIElkZW50aWZpZXJNYXAmIHVybE1hcCgpCkBAIC0yNTQsOCArMjYxLDE2
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgUmVzb3VyY2VMb2FkRGVsZWdhdGU6OndpbGxT
ZW5kUmVxdWVzdCgKICAgICAgICAgcmV0dXJuIFNfT0s7CiAgICAgfQogCi0gICAgcmVxdWVzdC0+
QWRkUmVmKCk7Ci0gICAgKm5ld1JlcXVlc3QgPSByZXF1ZXN0OworICAgIElXZWJNdXRhYmxlVVJM
UmVxdWVzdCogcmVxdWVzdENvcHkgPSAwOworICAgIHJlcXVlc3QtPm11dGFibGVDb3B5KCZyZXF1
ZXN0Q29weSk7CisgICAgY29uc3Qgc2V0PHN0cmluZz4mIGNsZWFySGVhZGVycyA9IGdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+d2lsbFNlbmRSZXF1ZXN0Q2xlYXJIZWFkZXJzKCk7CisgICAgZm9yIChz
ZXQ8c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaGVhZGVyID0gY2xlYXJIZWFkZXJzLmJlZ2luKCk7
IGhlYWRlciAhPSBjbGVhckhlYWRlcnMuZW5kKCk7ICsraGVhZGVyKSB7CisgICAgICBCU1RSIGJz
dHJIZWFkZXIgPSBCU1RSRnJvbVN0cmluZygqaGVhZGVyKTsKKyAgICAgIHJlcXVlc3RDb3B5LT5z
ZXRWYWx1ZSgwLCBic3RySGVhZGVyKTsKKyAgICAgIFN5c0ZyZWVTdHJpbmcoYnN0ckhlYWRlcik7
CisgICAgfQorCisgICAgKm5ld1JlcXVlc3QgPSByZXF1ZXN0Q29weTsKICAgICByZXR1cm4gU19P
SzsKIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>