<?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>83748</bug_id>
          
          <creation_ts>2012-04-11 23:28:32 -0700</creation_ts>
          <short_desc>[Chromium] Remove existing markers when updating markers.</short_desc>
          <delta_ts>2012-04-18 20:52:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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 name="Hironori Bono">hbono</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>jiapu.mail</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>600927</commentid>
    <comment_count>0</comment_count>
      <attachid>136833</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-11 23:28:32 -0700</bug_when>
    <thetext>Created attachment 136833
A layout test

Greetings,

Unfortunately, my r113405 &lt;http://trac.webkit.org/changeset/113405&gt; unveiled another side-effect that SpellChecker::didCheck() does not delete existing markers when adding markers. (The attached layout test is a reduced test case.) Even though this issue happens only on Chrome Canary, I would like to add an argument to this function so Chrome can remove existing markers. (I will upload my change with my next comment.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600940</commentid>
    <comment_count>1</comment_count>
      <attachid>136835</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-11 23:50:19 -0700</bug_when>
    <thetext>Created attachment 136835
A patch v0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600942</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-11 23:53:29 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600943</commentid>
    <comment_count>3</comment_count>
      <attachid>136835</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-11 23:59:35 -0700</bug_when>
    <thetext>Comment on attachment 136835
A patch v0

How are other ports dealing with this problem? Or is this Chromium specific feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600949</commentid>
    <comment_count>4</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-12 00:28:02 -0700</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your quick response. Even though this issue technically happens on all platforms that uses TextCheckingClient::requestCheckingOfString(), it practically happens only on Chromium because this function is used only by Chromium now. (Even though Morita-san once implemented this function for Safari WebKit, Safari now uses WebKit2 and we cannot reproduce this problem on Safari now.)

Regards,

Hironori Bono

(In reply to comment #3)
&gt; (From update of attachment 136835 [details])
&gt; How are other ports dealing with this problem? Or is this Chromium specific feature?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600953</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-12 00:40:40 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Thanks for your quick response. Even though this issue technically happens on all platforms that uses TextCheckingClient::requestCheckingOfString(), it practically happens only on Chromium because this function is used only by Chromium now. (Even though Morita-san once implemented this function for Safari WebKit, Safari now uses WebKit2 and we cannot reproduce this problem on Safari now.)

Can we tie this fix to the usage of TextCheckingClient::requestCheckingOfString instead of adding new flag?  It&apos;s non-obvious that we should be calling this function with a flag when some other port start using this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>600977</commentid>
    <comment_count>6</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-12 01:10:13 -0700</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your response.
Even though this is just a random thought, one option is splitting didCheck into two functions: didCheckSucceeded() and didCheckFailed(). In the current usage of Chrome, Chrome calls this function for a couple of purposes: notifying Chrome finishes the given text-check request successfully and notifying Chrome has an error while processing the request. Chrome needs to erase existing markers only when it finishes checking text successfully. On the other hand, Chrome should not erase existing markers when it fails checking the text. Would it be possible to give me your thoughts about this idea?

Regards,

Hironori Bono

(In reply to comment #5)
&gt; Can we tie this fix to the usage of TextCheckingClient::requestCheckingOfString instead of adding new flag?  It&apos;s non-obvious that we should be calling this function with a flag when some other port start using this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601007</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-12 01:42:06 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Even though this is just a random thought, one option is splitting didCheck into two functions: didCheckSucceeded() and didCheckFailed(). In the current usage of Chrome, Chrome calls this function for a couple of purposes: notifying Chrome finishes the given text-check request successfully and notifying Chrome has an error while processing the request. Chrome needs to erase existing markers only when it finishes checking text successfully. On the other hand, Chrome should not erase existing markers when it fails checking the text. Would it be possible to give me your thoughts about this idea?

That makes sense to me at least. Maybe jpu and morrita have some opinions here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601033</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-04-12 02:28:49 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Even though this is just a random thought, one option is splitting didCheck into two functions: didCheckSucceeded() and didCheckFailed(). In the current usage of Chrome, Chrome calls this function for a couple of purposes: notifying Chrome finishes the given text-check request successfully and notifying Chrome has an error while processing the request. Chrome needs to erase existing markers only when it finishes checking text successfully. On the other hand, Chrome should not erase existing markers when it fails checking the text. Would it be possible to give me your thoughts about this idea?
&gt; 
&gt; That makes sense to me at least. Maybe jpu and morrita have some opinions here?
Sounds making sense to me either.
If didCheckFailed() implies leaving the marker, something like didCheckCancel could be a better name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601837</commentid>
    <comment_count>9</comment_count>
      <attachid>137041</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-12 22:48:36 -0700</bug_when>
    <thetext>Created attachment 137041
A patch v1

Greetings Niwa-san and Morita-san,

Thanks for your comments.
I have added didCheckSucceeded and didCheckCanceled to the SpellChecker class as suggested by Morita-san. (These functions calls SpellChecker::didCheck() to share its code.)

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601852</commentid>
    <comment_count>10</comment_count>
      <attachid>137041</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-12 23:27:22 -0700</bug_when>
    <thetext>Comment on attachment 137041
A patch v1

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

&gt; Source/WebCore/editing/SpellChecker.cpp:188
&gt; +    if (eraseMarkers) {
&gt; +        unsigned markers = 0;
&gt; +        if (m_processingRequest-&gt;mask() &amp; TextCheckingTypeSpelling)
&gt; +            markers |= DocumentMarker::Spelling;
&gt; +        if (m_processingRequest-&gt;mask() &amp; TextCheckingTypeGrammar)
&gt; +            markers |= DocumentMarker::Grammar;
&gt; +        if (markers)
&gt; +            m_frame-&gt;document()-&gt;markers()-&gt;removeMarkers(m_processingRequest-&gt;checkingRange().get(), markers);
&gt; +    }

Can&apos;t we add this code in didCheckSucceeded instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601886</commentid>
    <comment_count>11</comment_count>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-13 00:49:51 -0700</bug_when>
    <thetext>Greetings Niwa-san,

Thanks for your comment. To move this code to didCheckSucceeded, we need to copy a sequence check &apos;if (m_processingRequest-&gt;sequence() != sequence)...&apos; in SpellChecker::didCheck() to prevent removing existing markers by mistakes. Is it OK to copy it?

Regards,

Hironori Bono

(In reply to comment #10)
&gt; (From update of attachment 137041 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=137041&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/SpellChecker.cpp:188
&gt; &gt; +    if (eraseMarkers) {
&gt; &gt; +        unsigned markers = 0;
&gt; &gt; +        if (m_processingRequest-&gt;mask() &amp; TextCheckingTypeSpelling)
&gt; &gt; +            markers |= DocumentMarker::Spelling;
&gt; &gt; +        if (m_processingRequest-&gt;mask() &amp; TextCheckingTypeGrammar)
&gt; &gt; +            markers |= DocumentMarker::Grammar;
&gt; &gt; +        if (markers)
&gt; &gt; +            m_frame-&gt;document()-&gt;markers()-&gt;removeMarkers(m_processingRequest-&gt;checkingRange().get(), markers);
&gt; &gt; +    }
&gt; 
&gt; Can&apos;t we add this code in didCheckSucceeded instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601894</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 00:57:42 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Greetings Niwa-san,
&gt; 
&gt; Thanks for your comment. To move this code to didCheckSucceeded, we need to copy a sequence check &apos;if (m_processingRequest-&gt;sequence() != sequence)...&apos; in SpellChecker::didCheck() to prevent removing existing markers by mistakes. Is it OK to copy it?

But there&apos;s also an assertion that ASSERT(m_processingRequest-&gt;sequence() == sequence); It&apos;s very odd that we assert and then bail out if that were not the case. Anyway, I don&apos;t think duplicating that code is that big of a deal. It&apos;s probably better than adding an anxious boolean flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601896</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 00:59:12 -0700</bug_when>
    <thetext>s/anxious/obnoxious/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601948</commentid>
    <comment_count>14</comment_count>
      <attachid>137069</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-13 03:16:44 -0700</bug_when>
    <thetext>Created attachment 137069
Patch v2 (applied a comment)

Greetings Niwa-san,

Thanks for your comment.
I have removed the &apos;eraseMarkers&apos; parameter from my change.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>601993</commentid>
    <comment_count>15</comment_count>
      <attachid>137069</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-13 05:41:37 -0700</bug_when>
    <thetext>Comment on attachment 137069
Patch v2 (applied a comment)

Attachment 137069 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12392895</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>602158</commentid>
    <comment_count>16</comment_count>
      <attachid>137069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-13 09:47:50 -0700</bug_when>
    <thetext>Comment on attachment 137069
Patch v2 (applied a comment)

Please make sure it builds &amp; tests pass on cr-linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>603833</commentid>
    <comment_count>17</comment_count>
      <attachid>137485</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-16 23:55:17 -0700</bug_when>
    <thetext>Created attachment 137485
Patch v3

Greetings Niwa-san,

Thanks for your review.
As far as I have tested on my Linux PC, I can compile it without errors. I would like to upload my change again to test it on the bot.

Regards,

Hironori Bono

(In reply to comment #16)
&gt; (From update of attachment 137069 [details])
&gt; Please make sure it builds &amp; tests pass on cr-linux.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604818</commentid>
    <comment_count>18</comment_count>
      <attachid>137485</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-04-18 09:33:53 -0700</bug_when>
    <thetext>Comment on attachment 137485
Patch v3

LGTM for WebKit API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>604835</commentid>
    <comment_count>19</comment_count>
      <attachid>137485</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-18 09:47:30 -0700</bug_when>
    <thetext>Comment on attachment 137485
Patch v3

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

&gt; Source/WebCore/ChangeLog:5
&gt; +        Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and
&gt; +        SpellChecker::didCheckCanceled()
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83748

I don&apos;t think we normally wrap the bug summary like this.

&gt; Source/WebKit/chromium/ChangeLog:5
&gt; +        Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and
&gt; +        SpellChecker::didCheckCanceled()
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83748

Ditto about the wrapping.

&gt; Source/WebKit/mac/ChangeLog:5
&gt; +        Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and
&gt; +        SpellChecker::didCheckCanceled()
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83748

Ditto.

&gt; Tools/ChangeLog:5
&gt; +        Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and
&gt; +        SpellChecker::didCheckCanceled()
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83748

Ditto.

&gt; LayoutTests/ChangeLog:5
&gt; +        Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and
&gt; +        SpellChecker::didCheckCanceled()
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=83748

Ditto.

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:1
&gt; +&lt;html&gt;

No DOCTYPE?

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:16
&gt; +// Insert a misspelled word to initialize a spellchecker. We disable asynchronous
&gt; +// spellchecking now to wait until the spellchecker is initialized.

I don&apos;t think this comment is useful.

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:21
&gt; +document.execCommand(&quot;InsertText&quot;, false, &apos;z&apos;);
&gt; +document.execCommand(&quot;InsertText&quot;, false, &apos;z&apos;);
&gt; +document.execCommand(&quot;InsertText&quot;, false, &apos; &apos;);

It would have been better if these text insertions were wrapped in some function, insertText(&apos;z&apos;); etc...
and then included inside shouldBeTrue as in:
shouldBeTrue(&apos;insertText(&apos;z&apos;);insertText(&apos;z&apos;);insertText(&apos; &apos;);internals.hasSpellingMarker(document, 0, 2)&apos;);
so that we can see this in the expected result.

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:31
&gt; +layoutTestController.setAsynchronousSpellCheckingEnabled(true);
&gt; +internals.settings.setUnifiedTextCheckingEnabled(true);
&gt; +
&gt; +layoutTestController.execCommand(&quot;DeleteBackward&quot;);
&gt; +layoutTestController.execCommand(&quot;DeleteBackward&quot;);
&gt; +document.execCommand(&quot;InsertText&quot;, false, &apos; &apos;);

Similarly, we can use debug() function to output some information about what happens here.
e.g. debug(&apos;Enable asynchronous spellchecking, delete two characters, and insert a space&apos;);

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:38
&gt; +        sleepPeriod *= 2;

Exponential back off? I guess it&apos;s not bad to wait 1s in the worst case senario.
Hopefully, this test won&apos;t be flaky.

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:45
&gt; +    if (hasMarker)
&gt; +        testFailed(&apos;internals.hasSpellingMarker(document, 0, 1) should be false. Was true.&apos;);
&gt; +    else
&gt; +        testPassed(&apos;internals.hasSpellingMarker(document, 0, 1) is false&apos;);

Can&apos;t we just use shouldBeTrue here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605295</commentid>
    <comment_count>20</comment_count>
      <attachid>137816</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-18 19:16:45 -0700</bug_when>
    <thetext>Created attachment 137816
Patch v4 (applied comments)

Greetings Niwa-san and Tamura-san,

Thanks for your review and comments. I have quickly updated my change to apply your comments. Would it be possible to take another look?

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605312</commentid>
    <comment_count>21</comment_count>
      <attachid>137816</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-04-18 19:42:55 -0700</bug_when>
    <thetext>Comment on attachment 137816
Patch v4 (applied comments)

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

&gt; LayoutTests/platform/chromium/editing/spelling/delete-misspelled-word.html:1
&gt; +&lt;html&gt;

No DOCTYPE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605323</commentid>
    <comment_count>22</comment_count>
      <attachid>137826</attachid>
    <who name="Hironori Bono">hbono</who>
    <bug_when>2012-04-18 20:07:11 -0700</bug_when>
    <thetext>Created attachment 137826
A patch v5 (added DOCTYPE)

Greetings Niwa-san,

Thanks for your quick response. I totally forgot adding a DOCTYPE element.

Regards,

Hironori Bono</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605343</commentid>
    <comment_count>23</comment_count>
      <attachid>137826</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 20:52:14 -0700</bug_when>
    <thetext>Comment on attachment 137826
A patch v5 (added DOCTYPE)

Clearing flags on attachment: 137826

Committed r114605: &lt;http://trac.webkit.org/changeset/114605&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>605344</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-18 20:52:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>136833</attachid>
            <date>2012-04-11 23:28:32 -0700</date>
            <delta_ts>2012-04-11 23:28:32 -0700</delta_ts>
            <desc>A layout test</desc>
            <filename>delete-misspelled-word.html</filename>
            <type>text/html</type>
            <size>2096</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IHNyYz0uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij48L3NjcmlwdD4KPHRpdGxlPlRlc3RpbmcgbW92aW5nIGN1cnNvciB0byBhIG1pc3NwZWxsZWQg
d29yZDwvdGl0bGU+IAo8L2hlYWQ+IAo8Ym9keT4KPGRpdiBpZD0ic3JjIiBjb250ZW50ZWRpdGFi
bGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiPjwvZGl2Pjxici8+CjxzY3JpcHQgbGFuZ3VhZ2U9
ImphdmFzY3JpcHQiPgpkZXNjcmlwdGlvbignVGVzdCBpZiBDaHJvbWUgc3BlbGxjaGVja3MgYSB3
b3JkIGFnYWluIHdoZW4gY2hhbmdpbmcgYSBtaXNzcGVsbGVkIHdvcmQuJyArCiAgICAgICAgICAg
ICdUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEgbWlzc3BlbGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBl
IGEgYmFja3NwYWNlIGtleSB0d2ljZS4nICsKICAgICAgICAgICAgJ1RoaXMgdGVzdCBzdWNjZWVk
cyB3aGVuICJ6IiBpcyBub3QgbWFya2VkIGFzIG1pc3NwZWxsZWQuJyk7Cgpqc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKCi8vIEluc2VydCBhIG1pc3NwZWxsZWQgd29yZCB0byBpbml0aWFsaXplIGEgc3Bl
bGxjaGVja2VyLiBXZSBkaXNhYmxlIGFzeW5jaHJvbm91cwovLyBzcGVsbGNoZWNraW5nIG5vdyB0
byB3YWl0IHVudGlsIHRoZSBzcGVsbGNoZWNrZXIgaXMgaW5pdGlhbGl6ZWQuCnZhciBub2RlID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NyYycpOwpub2RlLmZvY3VzKCk7CmRvY3VtZW50LmV4
ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CmRvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7CmRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRU
ZXh0IiwgZmFsc2UsICcgJyk7CnNob3VsZEJlVHJ1ZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAwLCAyKScpOwoKLy8gRW5hYmxlIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNr
aW5nIGFuZCBjb3JyZWN0IHRoZSBtaXNzcGVsbGVkIHdvcmQuIEFmdGVyCi8vIGNvcnJlY3Rpbmcg
dGhlIHdvcmQsIHRoaXMgdGVzdCB3YWl0cyB1bnRpbCB0aGUgYWJvdmUgbWFya2VyIGlzIGRlbGV0
ZWQuCmxheW91dFRlc3RDb250cm9sbGVyLnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKHRydWUpOwppbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJs
ZWQodHJ1ZSk7CgpsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiRGVsZXRlQmFja3dh
cmQiKTsKbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7
CmRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7Cgp2YXIgcmV0
cnlDb3VudCA9IDEwOwp2YXIgc2xlZXBQZXJpb2QgPSAxOwpmdW5jdGlvbiB2ZXJpZnlNYXJrZXIo
KSB7CiAgdmFyIGhhc01hcmtlciA9IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgMCwgMSk7CiAgaWYgKCFoYXNNYXJrZXIgJiYgLS1yZXRyeUNvdW50ID4gMCkgewogICAgc2xl
ZXBQZXJpb2QgKj0gMjsKICAgIHdpbmRvdy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQ
ZXJpb2QpOwogICAgcmV0dXJuOwogIH0KICBpZiAoaGFzTWFya2VyKQogICAgICB0ZXN0RmFpbGVk
KCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpIHNob3VsZCBiZSBm
YWxzZS4gV2FzIHRydWUuJyk7CiAgZWxzZQogICAgICB0ZXN0UGFzc2VkKCdpbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpIGlzIGZhbHNlJyk7CiAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOwogIGZp
bmlzaEpTVGVzdCgpOwp9CndpbmRvdy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQZXJp
b2QpOwo8L3NjcmlwdD4KPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136835</attachid>
            <date>2012-04-11 23:50:19 -0700</date>
            <delta_ts>2012-04-12 22:48:36 -0700</delta_ts>
            <desc>A patch v0</desc>
            <filename>issue83748-patch0.txt</filename>
            <type>text/plain</type>
            <size>12735</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzk0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA0LTExICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBhbiAnZXJhc2VNYXJr
ZXJzJyBwYXJhbWV0ZXIgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBTcGVsbENo
ZWNrZXIgY2xhc3MgZG9lcyBub3QgZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMgd2hlbiBkaWRDaGVj
aygpCisgICAgICAgIGFkZHMgbWFya2Vycy4gVGhpcyBjYXVzZXMgYSBwcm9ibGVtIHRoYXQgaXQg
bGVhdmVzIGEgbWlzc3BlbGxlZCBtYXJrZXIgd2hlbiB3ZQorICAgICAgICBkZWxldGUgYSBwYXJ0
IG9mIGEgbWlzcGVsbGVkIHdvcmQgdG8gbWFudWFsbHkgZml4IGl0LiBUaGlzIGNoYW5nZSBhZGRz
IGFuIG9wdGlvbmFsCisgICAgICAgIHBhcmFtZXRlciAnZXJhc2VNYXJrZXJzJyB0byB0aGlzIGZ1
bmN0aW9uIHNvIHdlIGNhbiBjaG9vc2Ugd2hldGhlciB0aGlzIGZ1bmN0aW9uCisgICAgICAgIGVy
YXNlcyBleGlzdGluZyBtYXJrZXJzLgorCisgICAgICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVt
L2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjogQ2hhbmdlZCB0aGUgc3ltYm9sIGZvciBTcGVsbENoZWNrOjpkaWRD
aGVjaygpLgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2spOiBBZGRlZCBjb2RlIHRoYXQgZGVsZXRlZCBl
eGlzdGluZyBtYXJrZXJzIHdoZW4KKyAgICAgICAgdGhlIGVyYXNlTWFya2VycyBwYXJhbWV0ZXIg
aXMgdHJ1ZS4KKyAgICAgICAgKiBlZGl0aW5nL1NwZWxsQ2hlY2tlci5oOgorICAgICAgICAoU3Bl
bGxDaGVja2VyKTogQWRkZWQgYW4gJ2VyYXNlTWFya2VycycgcGFyYW1ldGVyIHRvIFNwZWxsQ2hl
Y2s6OmRpZENoZWNrKCkuCisKIDIwMTItMDQtMTEgIFJheW1vbmQgTGl1ICA8cmF5bW9uZC5saXVA
aW50ZWwuY29tPgogCiAgICAgICAgIEF1ZGlvQ29udGV4dCBjcmVhdGVDaGFubmVsU3BsaXR0ZXIo
KSBtZXRob2Qgc2hvdWxkIGhhdmUgb3B0aW9uYWwgYXJndW1lbnQgZm9yIG51bWJlciBvZiBvdXRw
dXRzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTEzOTQxKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3OCw3ICsyNzgsNyBA
QCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLY2kKIF9fWk43V2ViQ29yZTEyU2hhcmVk
QnVmZmVyQzFFUEtoaQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNv
cmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNr
RWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBFRUUKK19fWk43V2Vi
Q29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVj
a2luZ1Jlc3VsdEVMbTBFRUViCiBfX1pON1dlYkNvcmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2
U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJh
bmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aEVQTlNfN0VsZW1lbnRFaWliCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENo
ZWNrZXIuY3BwCShyZXZpc2lvbiAxMTM5NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIFNw
ZWxsQ2hlY2tlcjo6ZW5xdWV1ZVJlcXVlc3QoUGFzc1JlCiAgICAgbV9yZXF1ZXN0UXVldWUuYXBw
ZW5kKHJlcXVlc3QpOwogfQogCi12b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soaW50IHNlcXVl
bmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3ZvaWQgU3Bl
bGxDaGVja2VyOjpkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzLCBib29sIGVyYXNlTWFya2VycykKIHsKICAgICBBU1NFUlQobV9w
cm9jZXNzaW5nUmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnNlcXVl
bmNlKCkgPT0gc2VxdWVuY2UpOwpAQCAtMTc3LDcgKzE3NywxNSBAQCB2b2lkIFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlCiAgICAgICAgIG1fcmVxdWVzdFF1ZXVlLmNsZWFyKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KKyAgICBpZiAoZXJhc2VNYXJrZXJzKSB7CisgICAg
ICAgIHVuc2lnbmVkIG1hcmtlcnMgPSAwOworICAgICAgICBpZiAobV9wcm9jZXNzaW5nUmVxdWVz
dC0+bWFzaygpICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgICAgICAgICAgbWFya2Vy
cyB8PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdS
ZXF1ZXN0LT5tYXNrKCkgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgICAgIG1h
cmtlcnMgfD0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgIGlmIChtYXJrZXJzKQor
ICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJz
KG1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKS5nZXQoKSwgbWFya2Vycyk7Cisg
ICAgfQogICAgIG1fZnJhbWUtPmVkaXRvcigpLT5tYXJrQW5kUmVwbGFjZUZvcihtX3Byb2Nlc3Np
bmdSZXF1ZXN0LCByZXN1bHRzKTsKIAogICAgIGlmIChtX2xhc3RQcm9jZXNzZWRTZXF1ZW5jZSA8
IHNlcXVlbmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCShyZXZp
c2lvbiAxMTM5NDEpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzQ2hlY2th
YmxlKFJhbmdlKikgY29uc3Q7CiAKICAgICB2b2lkIHJlcXVlc3RDaGVja2luZ0ZvcihQYXNzUmVm
UHRyPFNwZWxsQ2hlY2tSZXF1ZXN0Pik7Ci0gICAgdm9pZCBkaWRDaGVjayhpbnQgc2VxdWVuY2Us
IGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9pZCBkaWRDaGVjayhp
bnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiwgYm9vbCBlcmFz
ZU1hcmtlcnMgPSBmYWxzZSk7CiAKICAgICBpbnQgbGFzdFJlcXVlc3RTZXF1ZW5jZSgpIGNvbnN0
CiAgICAgewpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExMzk0NCkK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMTItMDQtMTEgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgQWRkIGFuICdlcmFzZU1hcmtlcnMnIHBhcmFtZXRlciB0byBTcGVsbENo
ZWNrZXI6OmRpZENoZWNrKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgdGhlICdlcmFzZU1hcmtlcnMnIHBhcmFtZXRlciB0
byB0aGUgV2ViVGV4dENvbXBsZXRpb24gY2xhc3MgYW5kCisgICAgICAgIHRoZSBXZWJUZXh0Q29t
cGxldGlvbkltcGwgY2xhc3Mgc28gQ2hyb21lIGNhbiBkZWxldGUgZXhpc3RpbmcgbWFya2VycyB3
aGVuIGl0IGNhbGxzCisgICAgICAgIFdlYlRleHRDb21wbGV0aW9uOjpkaWRGaW5pc2hDaGVja2lu
Z1RleHQoKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmg6
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZEZpbmlzaENo
ZWNraW5nVGV4dCk6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGw6OmRp
ZEZpbmlzaENoZWNraW5nVGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIHNyYy9X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oOgorICAgICAgICAoV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbkltcGwpOgorCiAyMDEyLTA0LTExICBBbGVjIEZsZXR0ICA8YWxlY2ZsZXR0QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFN0dWIgb3V0IFdlYktpdCBpbnRlcmZh
Y2UgZm9yIGdldChJbmRleGVkS2V5UmFuZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCShyZXZp
c2lvbiAxMTM5NDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIFQ+IGNsYXNzIFdlYlZlY3RvcjsKIGNsYXNzIFdlYlRleHRDaGVja2luZ0Nv
bXBsZXRpb24gewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1Rl
eHQoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mKSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiYsIGJvb2wpIHsgfTsKIHByb3RlY3RlZDoKICAgICB+V2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbigpIHsgfQogfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAJKHJl
dmlzaW9uIDExMzk0MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb25JbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsNCArNTUsMTAgQEAg
dm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkRgogICAgIGRlbGV0ZSB0aGlz
OwogfQogCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRGaW5pc2hDaGVj
a2luZ1RleHQoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMs
IGJvb2wgZXJhc2VNYXJrZXJzKQoreworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVjayhtX2lk
ZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0cyksIGVyYXNlTWFya2Vycyk7CisgICAgZGVs
ZXRlIHRoaXM7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5oCShyZXZpc2lvbiAxMTM5NDEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoQ2hlY2tp
bmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiYsIGJvb2wpOwogCiBwcml2YXRlOgogICAgIHZpcnR1YWwgfldlYlRleHRD
aGVja2luZ0NvbXBsZXRpb25JbXBsKCkgeyB9CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTM5NDQpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wNC0xMSAgSGlyb25v
cmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgYW4gJ2VyYXNlTWFy
a2VycycgcGFyYW1ldGVyIHRvIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soKS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugc2V0cyB0aGUg
J2VyYXNlTWFya2VycycgcGFyYW1ldGVyIHNvIER1bXBSZW5kZXJUcmVlIGNhbgorICAgICAgICBk
ZWxldGUgZXhpc3RpbmcgbWFya2VycyB3aGVuIGl0IGNhbGxzIFNwZWxsQ2hlY2s6OmRpZENoZWNr
KCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6
CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRDaGVjayk6CisKIDIwMTItMDQt
MTEgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IHJl
Z3Jlc3Npb24gaW50cm9kdWNlZCBpbiByMTEzOTI3LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gMTEzOTQxKQorKysgVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRDaGVj
aygpCiAgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVu
Z3RoOwogICAgIH0KIAotICAgIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja2luZ0NvbXBsZXRpb24t
PmRpZEZpbmlzaENoZWNraW5nVGV4dChyZXN1bHRzKTsKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQocmVzdWx0cywgdHJ1ZSk7
CiAgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbiA9IDA7CiB9CiAKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDExMzk0NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA0LTExICBIaXJvbm9yaSBCb25vICA8aGJv
bm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBhbiAnZXJhc2VNYXJrZXJzJyBwYXJhbWV0
ZXIgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHksIHRoZSBTcGVsbENoZWNrZXIgY2xhc3Mg
ZG9lcyBub3QgZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMgd2hlbiBkaWRDaGVjaygpCisgICAgICAg
IGFkZHMgbWFya2Vycy4gVGhpcyBjYXVzZXMgYSBwcm9ibGVtIHRoYXQgaXQgbGVhdmVzIGEgbWlz
c3BlbGxlZCBtYXJrZXIgd2hlbiB3ZQorICAgICAgICBkZWxldGUgYSBwYXJ0IG9mIGEgbWlzcGVs
bGVkIHdvcmQgdG8gbWFudWFsbHkgZml4IGl0LiBUaGlzIGNoYW5nZSBhZGRzIGFuIG9wdGlvbmFs
CisgICAgICAgIHBhcmFtZXRlciAnZXJhc2VNYXJrZXJzJyB0byB0aGlzIGZ1bmN0aW9uIHNvIHdl
IGNhbiBjaG9vc2Ugd2hldGhlciB0aGlzIGZ1bmN0aW9uCisgICAgICAgIGVyYXNlcyBleGlzdGlu
ZyBtYXJrZXJzLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3Jk
Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTA0LTExICBBbnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCByZWJhc2VsaW5lLgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3Jk
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorVGVzdCBpZiBDaHJvbWUgc3BlbGxjaGVja3MgYSB3b3JkIGFnYWluIHdo
ZW4gY2hhbmdpbmcgYSBtaXNzcGVsbGVkIHdvcmQuVG8gdGVzdCBtYW51YWxseSwgdHlwZSBhIG1p
c3NwZWxsZWQgd29yZCAienogIiBhbmQgdHlwZSBhIGJhY2tzcGFjZSBrZXkgdHdpY2UuVGhpcyB0
ZXN0IHN1Y2NlZWRzIHdoZW4gInoiIGlzIG5vdCBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFy
a2VyKGRvY3VtZW50LCAwLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01h
cmtlcihkb2N1bWVudCwgMCwgMSkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQoresKgCisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVs
bGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVk
LXdvcmQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
IGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgor
PHRpdGxlPlRlc3RpbmcgbW92aW5nIGN1cnNvciB0byBhIG1pc3NwZWxsZWQgd29yZDwvdGl0bGU+
IAorPC9oZWFkPiAKKzxib2R5PgorPGRpdiBpZD0ic3JjIiBjb250ZW50ZWRpdGFibGU9InRydWUi
IHNwZWxsY2hlY2s9InRydWUiPjwvZGl2Pjxici8+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2Ny
aXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0IGlmIENocm9tZSBzcGVsbGNoZWNrcyBhIHdvcmQgYWdh
aW4gd2hlbiBjaGFuZ2luZyBhIG1pc3NwZWxsZWQgd29yZC4nICsKKyAgICAgICAgICAgICdUbyB0
ZXN0IG1hbnVhbGx5LCB0eXBlIGEgbWlzc3BlbGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBlIGEgYmFj
a3NwYWNlIGtleSB0d2ljZS4nICsKKyAgICAgICAgICAgICdUaGlzIHRlc3Qgc3VjY2VlZHMgd2hl
biAieiIgaXMgbm90IG1hcmtlZCBhcyBtaXNzcGVsbGVkLicpOworCitqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKKworLy8gSW5zZXJ0IGEgbWlzc3BlbGxlZCB3b3JkIHRvIGluaXRpYWxpemUgYSBzcGVs
bGNoZWNrZXIuIFdlIGRpc2FibGUgYXN5bmNocm9ub3VzCisvLyBzcGVsbGNoZWNraW5nIG5vdyB0
byB3YWl0IHVudGlsIHRoZSBzcGVsbGNoZWNrZXIgaXMgaW5pdGlhbGl6ZWQuCit2YXIgbm9kZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcmMnKTsKK25vZGUuZm9jdXMoKTsKK2RvY3VtZW50
LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7Citkb2N1bWVudC5leGVjQ29t
bWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydFRleHQiLCBmYWxzZSwgJyAnKTsKK3Nob3VsZEJlVHJ1ZSgnaW50ZXJuYWxzLmhhc1NwZWxs
aW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOworCisvLyBFbmFibGUgYXN5bmNocm9ub3VzIHNw
ZWxsY2hlY2tpbmcgYW5kIGNvcnJlY3QgdGhlIG1pc3NwZWxsZWQgd29yZC4gQWZ0ZXIKKy8vIGNv
cnJlY3RpbmcgdGhlIHdvcmQsIHRoaXMgdGVzdCB3YWl0cyB1bnRpbCB0aGUgYWJvdmUgbWFya2Vy
IGlzIGRlbGV0ZWQuCitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENo
ZWNraW5nRW5hYmxlZCh0cnVlKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQo
IkRlbGV0ZUJhY2t3YXJkIik7CitsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiRGVs
ZXRlQmFja3dhcmQiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2Us
ICcgJyk7CisKK3ZhciByZXRyeUNvdW50ID0gMTA7Cit2YXIgc2xlZXBQZXJpb2QgPSAxOworZnVu
Y3Rpb24gdmVyaWZ5TWFya2VyKCkgeworICB2YXIgaGFzTWFya2VyID0gaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAxKTsKKyAgaWYgKCFoYXNNYXJrZXIgJiYgLS1yZXRy
eUNvdW50ID4gMCkgeworICAgIHNsZWVwUGVyaW9kICo9IDI7CisgICAgd2luZG93LnNldFRpbWVv
dXQodmVyaWZ5TWFya2VyLCBzbGVlcFBlcmlvZCk7CisgICAgcmV0dXJuOworICB9CisgIGlmICho
YXNNYXJrZXIpCisgICAgICB0ZXN0RmFpbGVkKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDAsIDEpIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUuJyk7CisgIGVsc2UKKyAg
ICAgIHRlc3RQYXNzZWQoJ2ludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwg
MSkgaXMgZmFsc2UnKTsKKyAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0QXN5bmNocm9ub3VzU3Bl
bGxDaGVja2luZ0VuYWJsZWQoZmFsc2UpOworICBmaW5pc2hKU1Rlc3QoKTsKK30KK3dpbmRvdy5z
ZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQZXJpb2QpOworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137041</attachid>
            <date>2012-04-12 22:48:36 -0700</date>
            <delta_ts>2012-04-13 03:16:44 -0700</delta_ts>
            <desc>A patch v1</desc>
            <filename>issue83748-patch1.txt</filename>
            <type>text/plain</type>
            <size>15760</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDA4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA0LTEyICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kCisg
ICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soKSBkb2VzIG5vdCBkZWxldGUgZXhpc3RpbmcgbWFya2Vycy4gSXQgY2F1c2VzCisg
ICAgICAgIGEgcHJvYmxlbSB0aGF0IGl0IGxlYXZlcyBtaXNzcGVsbGVkIG1hcmtlcnMgd2hlbiBh
IHNwZWxsY2hlY2tlciBjbGllbnQgZmluaXNoZXMKKyAgICAgICAgY2hlY2tpbmcgdGV4dCBzdWNj
ZXNzZnVsbHkuIFRoaXMgY2hhbmdlIHNwbGl0cyB0aGlzIGZ1bmN0aW9uIHRvIGRpZENoZWNrU3Vj
Y2VlZGVkKCkKKyAgICAgICAgYW5kICBkaWRDaGVja0NhbmNlbGVkKCkgc28gdGhlIFNwZWxsQ2hl
Y2tlciBjbGFzcyBjYW4gZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMKKyAgICAgICAgd2hlbiBpdHMg
Y2xpZW50IGZpbmlzaGVzIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiAoV2UgZG8gbm90IGhh
dmUgdG8gZXJhc2UKKyAgICAgICAgZXhpc3RpbmcgbWFya2VycyB3aGVuIHRoZSBjbGllbnQgbmVl
ZHMgdG8gY2FuY2VsIGEgdGV4dC1jaGVjayByZXF1ZXN0LikKKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFJlcGxhY2VkIFNwZWxsQ2hlY2tlcjo6ZGlk
Q2hlY2sgd2l0aCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkLgorICAgICAgICAqIGVk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2spOiBBZGRlZCBhbiAnZXJhc2VNYXJrZXJzJyBwYXJhbWV0ZXIuCisgICAgICAgIChX
ZWJDb3JlOjpTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKTogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5j
ZWxlZCk6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxDaGVja2VyLmg6CisgICAgICAg
IChTcGVsbENoZWNrZXIpOiBBZGRlZCBkaWRDaGVja1N1Y2NlZWRlZCBhbmQgZGlkQ2hlY2tDYW5j
ZWxlZC4gQWxzbyBjaGFuZ2VkIGRpZENoZWNrIHRvIGEgcHJpdmF0ZSBmdW5jdGlvbi4KKwogMjAx
Mi0wNC0xMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92
ZSBWOERPTVdpbmRvd1NoZWxsOjpzZXRMb2NhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4J
KHJldmlzaW9uIDExNDA3MCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNzksNyArMjc5LDcgQEAgX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJD
MUVQS2NpCiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLaGkKIF9fWk43V2ViQ29yZTEy
U2hhcmVkQnVmZmVyQzFFdgogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJEMUV2Ci1fX1pON1dl
YkNvcmUxMlNwZWxsQ2hlY2tlcjhkaWRDaGVja0VpUktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hl
Y2tpbmdSZXN1bHRFTG0wRUVFCitfX1pON1dlYkNvcmUxMlNwZWxsQ2hlY2tlcjE3ZGlkQ2hlY2tT
dWNjZWVkZWRFaVJLTjNXVEY2VmVjdG9ySU5TXzE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFRQog
X19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMTFyYW5nZUxlbmd0aEVQS05TXzVSYW5nZUViCiBfX1pON1dlYkNvcmUx
MlRleHRJdGVyYXRvcjI2cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGhFUE5TXzdFbGVtZW50RWlp
YgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAkocmV2aXNpb24g
MTE0MDcwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmVucXVldWVS
ZXF1ZXN0KFBhc3NSZQogICAgIG1fcmVxdWVzdFF1ZXVlLmFwcGVuZChyZXF1ZXN0KTsKIH0KIAot
dm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
aW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cywg
Ym9vbCBlcmFzZU1hcmtlcnMpCiB7CiAgICAgQVNTRVJUKG1fcHJvY2Vzc2luZ1JlcXVlc3QpOwog
ICAgIEFTU0VSVChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKTsK
QEAgLTE3Nyw3ICsxNzcsMTUgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1
ZW5jZQogICAgICAgICBtX3JlcXVlc3RRdWV1ZS5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotCisgICAgaWYgKGVyYXNlTWFya2VycykgeworICAgICAgICB1bnNpZ25lZCBtYXJrZXJz
ID0gMDsKKyAgICAgICAgaWYgKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPm1hc2soKSAmIFRleHRDaGVj
a2luZ1R5cGVTcGVsbGluZykKKyAgICAgICAgICAgIG1hcmtlcnMgfD0gRG9jdW1lbnRNYXJrZXI6
OlNwZWxsaW5nOworICAgICAgICBpZiAobV9wcm9jZXNzaW5nUmVxdWVzdC0+bWFzaygpICYgVGV4
dENoZWNraW5nVHlwZUdyYW1tYXIpCisgICAgICAgICAgICBtYXJrZXJzIHw9IERvY3VtZW50TWFy
a2VyOjpHcmFtbWFyOworICAgICAgICBpZiAobWFya2VycykKKyAgICAgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPm1hcmtlcnMoKS0+cmVtb3ZlTWFya2VycyhtX3Byb2Nlc3NpbmdSZXF1ZXN0
LT5jaGVja2luZ1JhbmdlKCkuZ2V0KCksIG1hcmtlcnMpOworICAgIH0KICAgICBtX2ZyYW1lLT5l
ZGl0b3IoKS0+bWFya0FuZFJlcGxhY2VGb3IobV9wcm9jZXNzaW5nUmVxdWVzdCwgcmVzdWx0cyk7
CiAKICAgICBpZiAobV9sYXN0UHJvY2Vzc2VkU2VxdWVuY2UgPCBzZXF1ZW5jZSkKQEAgLTE4OCw1
ICsxOTYsMTUgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZQogICAg
ICAgICBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5zdGFydE9uZVNob3QoMCk7CiB9CiAK
K3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZChpbnQgc2VxdWVuY2UsIGNvbnN0
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIGRpZENoZWNrKHNl
cXVlbmNlLCByZXN1bHRzLCB0cnVlKTsKK30KKwordm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNr
Q2FuY2VsZWQoaW50IHNlcXVlbmNlKQoreworICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
IHJlc3VsdHM7CisgICAgZGlkQ2hlY2soc2VxdWVuY2UsIHJlc3VsdHMsIGZhbHNlKTsKK30KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVs
bENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hl
Y2tlci5oCShyZXZpc2lvbiAxMTQwNzApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4MSw4IEBAIHB1YmxpYzoKICAgICBi
b29sIGlzQ2hlY2thYmxlKFJhbmdlKikgY29uc3Q7CiAKICAgICB2b2lkIHJlcXVlc3RDaGVja2lu
Z0ZvcihQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0Pik7Ci0gICAgdm9pZCBkaWRDaGVjayhp
bnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+Jik7CisgICAgdm9p
ZCBkaWRDaGVja1N1Y2NlZWRlZChpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tp
bmdSZXN1bHQ+Jik7CisgICAgdm9pZCBkaWRDaGVja0NhbmNlbGVkKGludCBzZXF1ZW5jZSk7CiAK
ICAgICBpbnQgbGFzdFJlcXVlc3RTZXF1ZW5jZSgpIGNvbnN0CiAgICAgewpAQCAtMTAxLDYgKzEw
Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB0aW1lckZpcmVkVG9Qcm9jZXNzUXVldWVkUmVxdWVz
dChUaW1lcjxTcGVsbENoZWNrZXI+Kik7CiAgICAgdm9pZCBpbnZva2VSZXF1ZXN0KFBhc3NSZWZQ
dHI8U3BlbGxDaGVja1JlcXVlc3Q+KTsKICAgICB2b2lkIGVucXVldWVSZXF1ZXN0KFBhc3NSZWZQ
dHI8U3BlbGxDaGVja1JlcXVlc3Q+KTsKKyAgICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwg
Y29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mLCBib29sKTsKIAogICAgIEZyYW1lKiBt
X2ZyYW1lOwogICAgIGludCBtX2xhc3RSZXF1ZXN0U2VxdWVuY2U7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MDgwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMi0wNC0xMiAg
SGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBTcGVs
bENoZWNrZXI6OmRpZENoZWNrKCkgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgp
IGFuZAorICAgICAgICBTcGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoKQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEg
bmV3IEFQSSBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uOjpkaWRDYW5jZWxDaGVja2luZ1RleHQo
KSwKKyAgICAgICAgd2hpY2ggZW5jYXBzdWxhdGVzIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5j
ZWxlZCgpIGFuZCBpbXBsZW1lbnRzIGl0LgorCisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbjo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdD
b21wbGV0aW9uSW1wbDo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRDYW5j
ZWxDaGVja2luZ1RleHQpOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5oOgorICAgICAgICAoV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwpOgorCiAyMDEy
LTA0LTEyICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTE0MDc1LgpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBsZXRp
b24uaAkocmV2aXNpb24gMTE0MDcwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiBjbGFzcyBXZWJUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
Q2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKSB7IH07CiBwcm90ZWN0
ZWQ6CiAgICAgfldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24oKSB7IH0KIH07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbkltcGwuY3BwCShyZXZpc2lvbiAxMTQwNzApCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDEzIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiB0
b0NvcmUKIAogdm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkRmluaXNoQ2hl
Y2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KQogewotICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVjayhtX2lkZW50aWZpZXIsIHRvQ29yZVJl
c3VsdHMocmVzdWx0cykpOworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja1N1Y2NlZWRlZCht
X2lkZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0cykpOworICAgIGRlbGV0ZSB0aGlzOwor
fQorCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRDYW5jZWxDaGVja2lu
Z1RleHQoKQoreworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja0NhbmNlbGVkKG1faWRlbnRp
Zmllcik7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaAko
cmV2aXNpb24gMTE0MDcwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBw
dWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dChj
b25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5XZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCgpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE0MDgwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTIgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRv
IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQKKyAgICAgICAgU3BlbGxDaGVj
a2VyOjpkaWRDaGVja0NhbmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgYSBjYWxsIGZvciBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKCkgd2l0aCBvbmUgZm9yCisgICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hl
Y2tTdWNjZWVkZWQoKSBiZWNhdXNlIGRpZENoZWNrIGhhcyBiZWVuIHNwbGl0IGludG8KKyAgICAg
ICAgZGlkQ2hlY2tTdWNjZWVkZWQoMCBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJFZGl0
b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKTogUmVwbGFjZWQgZGlkQ2hlY2sgd2l0aCBk
aWRDaGVja1N1Y2NlZWRlZC4KKwogMjAxMi0wNC0xMiAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEwMjI2Mik6IGlBZCBQcm9kdWNlciByZWxp
ZXMgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFp
bXBvcnRhbnQnCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0
b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAxMTQwNzApCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAg
LTk0MSw3ICs5NDEsNyBAQCAtIChpZClpbml0V2l0aFNlbmRlcjooV2ViQ29yZTo6U3BlbGxDaGVj
CiAKIC0gKHZvaWQpcGVyZm9ybQogewotICAgIF9zZW5kZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwg
Y29yZShfcmVzdWx0cy5nZXQoKSwgX3R5cGVzKSk7CisgICAgX3NlbmRlci0+ZGlkQ2hlY2tTdWNj
ZWVkZWQoX3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdldCgpLCBfdHlwZXMpKTsKIH0KIAogQGVu
ZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE0MDgwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMDQtMTIgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hl
Y2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRD
aGVja0NhbmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgYSBjYWxsIGZvciBTcGVsbENoZWNrZXI6OmRpZENo
ZWNrKCkgd2l0aCBvbmUgZm9yCisgICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVk
ZWQoKSBiZWNhdXNlIGRpZENoZWNrKCkgaGFzIGJlZW4gc3BsaXQgaW50bworICAgICAgICBkaWRD
aGVja1N1Y2NlZWRlZCgpIGFuZCBkaWRDaGVja0NhbmNlbGVkKCkuCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9z
dDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KTogUmVwbGFjZWQgZGlkQ2hlY2sgd2l0aCBkaWRDaGVj
a0NhbmNlbGVkLgorCiAyMDEyLTA0LTEyICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3Jn
PgogCiAgICAgICAgIEV4dHJhY3QgUGVyZlRlc3QgY2xhc3MgZnJvbSBQZXJmVGVzdFJ1bm5lcgpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAko
cmV2aXNpb24gMTE0MDcwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNyArNDU1LDcgQEAgdm9pZCBXZWJWaWV3
SG9zdDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KAogewogICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkg
ewogICAgICAgICBpZiAoY29tcGxldGlvbikKLSAgICAgICAgICAgIGNvbXBsZXRpb24tPmRpZEZp
bmlzaENoZWNraW5nVGV4dChWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PigpKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb24tPmRpZENhbmNlbENoZWNraW5nVGV4dCgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQwODApCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wNC0xMiAgSGly
b25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBTcGVsbENo
ZWNrZXI6OmRpZENoZWNrKCkgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFu
ZAorICAgICAgICBTcGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoKQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgY3VycmVudCBTcGVsbENoZWNr
ZXI6OmRpZENoZWNrKCkgZG9lcyBub3QgZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMuIEl0IGNhdXNl
cworICAgICAgICBhIHByb2JsZW0gdGhhdCBpdCBsZWF2ZXMgbWlzc3BlbGxlZCBtYXJrZXJzIHdo
ZW4gYSBzcGVsbGNoZWNrZXIgY2xpZW50IGZpbmlzaGVzCisgICAgICAgIGNoZWNraW5nIHRleHQg
c3VjY2Vzc2Z1bGx5LiBUaGlzIGNoYW5nZSBzcGxpdHMgdGhpcyBmdW5jdGlvbiB0byBkaWRDaGVj
a1N1Y2NlZWRlZCgpCisgICAgICAgIGFuZCAgZGlkQ2hlY2tDYW5jZWxlZCgpIHNvIHRoZSBTcGVs
bENoZWNrZXIgY2xhc3MgY2FuIGRlbGV0ZSBleGlzdGluZyBtYXJrZXJzCisgICAgICAgIHdoZW4g
aXRzIGNsaWVudCBmaW5pc2hlcyBjaGVja2luZyB0ZXh0IHN1Y2Nlc3NmdWxseS4gKFdlIGRvIG5v
dCBoYXZlIHRvIGVyYXNlCisgICAgICAgIGV4aXN0aW5nIG1hcmtlcnMgd2hlbiB0aGUgY2xpZW50
IG5lZWRzIHRvIGNhbmNlbCBhIHRleHQtY2hlY2sgcmVxdWVzdC4pCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbDogQWRkZWQuCisKIDIwMTItMDQtMTIg
IEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TiAocjExMzkwMCk6IFRleHQgdGVzdHMgc3RhcnRlZCBmYWlsaW5nCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdv
cmQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxsZWQtd29yZC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzIEBACitUZXN0IGlmIENocm9tZSBzcGVsbGNoZWNrcyBhIHdvcmQgYWdhaW4g
d2hlbiBjaGFuZ2luZyBhIG1pc3NwZWxsZWQgd29yZC5UbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEg
bWlzc3BlbGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBlIGEgYmFja3NwYWNlIGtleSB0d2ljZS5UaGlz
IHRlc3Qgc3VjY2VlZHMgd2hlbiAieiIgaXMgbm90IG1hcmtlZCBhcyBtaXNzcGVsbGVkLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBpbnRlcm5hbHMuaGFzU3BlbGxpbmdN
YXJrZXIoZG9jdW1lbnQsIDAsIDIpIGlzIHRydWUKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5n
TWFya2VyKGRvY3VtZW50LCAwLCAxKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCit6wqAKKworCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2VkaXRpbmcvc3BlbGxpbmcvZGVsZXRlLW1pc3NwZWxs
ZWQtd29yZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU0IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdCBzcmM9Li4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+
Cis8dGl0bGU+VGVzdGluZyBtb3ZpbmcgY3Vyc29yIHRvIGEgbWlzc3BlbGxlZCB3b3JkPC90aXRs
ZT4gCis8L2hlYWQ+IAorPGJvZHk+Cis8ZGl2IGlkPSJzcmMiIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIgc3BlbGxjaGVjaz0idHJ1ZSI+PC9kaXY+PGJyLz4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFz
Y3JpcHQiPgorZGVzY3JpcHRpb24oJ1Rlc3QgaWYgQ2hyb21lIHNwZWxsY2hlY2tzIGEgd29yZCBh
Z2FpbiB3aGVuIGNoYW5naW5nIGEgbWlzc3BlbGxlZCB3b3JkLicgKworICAgICAgICAgICAgJ1Rv
IHRlc3QgbWFudWFsbHksIHR5cGUgYSBtaXNzcGVsbGVkIHdvcmQgInp6ICIgYW5kIHR5cGUgYSBi
YWNrc3BhY2Uga2V5IHR3aWNlLicgKworICAgICAgICAgICAgJ1RoaXMgdGVzdCBzdWNjZWVkcyB3
aGVuICJ6IiBpcyBub3QgbWFya2VkIGFzIG1pc3NwZWxsZWQuJyk7CisKK2pzVGVzdElzQXN5bmMg
PSB0cnVlOworCisvLyBJbnNlcnQgYSBtaXNzcGVsbGVkIHdvcmQgdG8gaW5pdGlhbGl6ZSBhIHNw
ZWxsY2hlY2tlci4gV2UgZGlzYWJsZSBhc3luY2hyb25vdXMKKy8vIHNwZWxsY2hlY2tpbmcgbm93
IHRvIHdhaXQgdW50aWwgdGhlIHNwZWxsY2hlY2tlciBpcyBpbml0aWFsaXplZC4KK3ZhciBub2Rl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NyYycpOworbm9kZS5mb2N1cygpOworZG9jdW1l
bnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJ3onKTsKK2RvY3VtZW50LmV4ZWND
b21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgi
SW5zZXJ0VGV4dCIsIGZhbHNlLCAnICcpOworc2hvdWxkQmVUcnVlKCdpbnRlcm5hbHMuaGFzU3Bl
bGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7CisKKy8vIEVuYWJsZSBhc3luY2hyb25vdXMg
c3BlbGxjaGVja2luZyBhbmQgY29ycmVjdCB0aGUgbWlzc3BlbGxlZCB3b3JkLiBBZnRlcgorLy8g
Y29ycmVjdGluZyB0aGUgd29yZCwgdGhpcyB0ZXN0IHdhaXRzIHVudGlsIHRoZSBhYm92ZSBtYXJr
ZXIgaXMgZGVsZXRlZC4KK2xheW91dFRlc3RDb250cm9sbGVyLnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKHRydWUpOworaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0
Q2hlY2tpbmdFbmFibGVkKHRydWUpOworCitsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFu
ZCgiRGVsZXRlQmFja3dhcmQiKTsKK2xheW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJE
ZWxldGVCYWNrd2FyZCIpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxz
ZSwgJyAnKTsKKwordmFyIHJldHJ5Q291bnQgPSAxMDsKK3ZhciBzbGVlcFBlcmlvZCA9IDE7Citm
dW5jdGlvbiB2ZXJpZnlNYXJrZXIoKSB7CisgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFz
U3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpOworICBpZiAoaGFzTWFya2VyICYmIC0tcmV0
cnlDb3VudCA+IDApIHsKKyAgICBzbGVlcFBlcmlvZCAqPSAyOworICAgIHdpbmRvdy5zZXRUaW1l
b3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQZXJpb2QpOworICAgIHJldHVybjsKKyAgfQorICBpZiAo
aGFzTWFya2VyKQorICAgICAgdGVzdEZhaWxlZCgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2Vy
KGRvY3VtZW50LCAwLCAxKSBzaG91bGQgYmUgZmFsc2UuIFdhcyB0cnVlLicpOworICBlbHNlCisg
ICAgICB0ZXN0UGFzc2VkKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAs
IDEpIGlzIGZhbHNlJyk7CisgIGludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNr
aW5nRW5hYmxlZChmYWxzZSk7CisgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgZmluaXNoSlNUZXN0KCk7Cit9Cit3aW5k
b3cuc2V0VGltZW91dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137069</attachid>
            <date>2012-04-13 03:16:44 -0700</date>
            <delta_ts>2012-04-16 23:55:17 -0700</delta_ts>
            <desc>Patch v2 (applied a comment)</desc>
            <filename>issue83748-patch2.txt</filename>
            <type>text/plain</type>
            <size>15127</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDEwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA0LTEzICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kCisg
ICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soKSBkb2VzIG5vdCBkZWxldGUgZXhpc3RpbmcgbWFya2Vycy4gSXQgY2F1c2VzCisg
ICAgICAgIGEgcHJvYmxlbSB0aGF0IGl0IGxlYXZlcyBtaXNzcGVsbGVkIG1hcmtlcnMgd2hlbiBh
IHNwZWxsY2hlY2tlciBjbGllbnQgZmluaXNoZXMKKyAgICAgICAgY2hlY2tpbmcgdGV4dCBzdWNj
ZXNzZnVsbHkuIFRoaXMgY2hhbmdlIHNwbGl0cyB0aGlzIGZ1bmN0aW9uIHRvIGRpZENoZWNrU3Vj
Y2VlZGVkKCkKKyAgICAgICAgYW5kICBkaWRDaGVja0NhbmNlbGVkKCkgc28gdGhlIFNwZWxsQ2hl
Y2tlciBjbGFzcyBjYW4gZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMKKyAgICAgICAgd2hlbiBpdHMg
Y2xpZW50IGZpbmlzaGVzIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiAoV2UgZG8gbm90IGhh
dmUgdG8gZXJhc2UKKyAgICAgICAgZXhpc3RpbmcgbWFya2VycyB3aGVuIHRoZSBjbGllbnQgbmVl
ZHMgdG8gY2FuY2VsIGEgdGV4dC1jaGVjayByZXF1ZXN0LikKKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFJlcGxhY2VkIFNwZWxsQ2hlY2tlcjo6ZGlk
Q2hlY2sgd2l0aCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkLgorICAgICAgICAqIGVk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2tTdWNjZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKTogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFNwZWxsQ2hlY2tlcik6IEFkZGVk
IGRpZENoZWNrU3VjY2VlZGVkIGFuZCBkaWRDaGVja0NhbmNlbGVkLiBBbHNvIGNoYW5nZWQgZGlk
Q2hlY2sgdG8gYSBwcml2YXRlIGZ1bmN0aW9uLgorCiAyMDEyLTA0LTEzICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBydW50aW1lIGZsYWcgZm9yIDxp
bnB1dCB0eXBlPWRhdGU+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTE0MDcw
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTI3
OSw3ICsyNzksNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRVBLY2kKIF9fWk43V2Vi
Q29yZTEyU2hhcmVkQnVmZmVyQzFFUEtoaQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJDMUV2
CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43V2ViQ29yZTEyU3BlbGxDaGVj
a2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3VsdEVMbTBF
RUUKK19fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyMTdkaWRDaGVja1N1Y2NlZWRlZEVpUktOM1dU
RjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVFCiBfX1pON1dlYkNvcmUxMlRl
eHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3Ix
MXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZy
YW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCShyZXZpc2lvbiAxMTQwNzApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
OCw1ICsxODgsMjQgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKGludCBzZXF1ZW5jZQog
ICAgICAgICBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5zdGFydE9uZVNob3QoMCk7CiB9
CiAKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZChpbnQgc2VxdWVuY2UsIGNv
bnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIGlmIChtX3By
b2Nlc3NpbmdSZXF1ZXN0LT5zZXF1ZW5jZSgpID09IHNlcXVlbmNlKSB7CisgICAgICAgIHVuc2ln
bmVkIG1hcmtlcnMgPSAwOworICAgICAgICBpZiAobV9wcm9jZXNzaW5nUmVxdWVzdC0+bWFzaygp
ICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgICAgICAgICAgbWFya2VycyB8PSBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgICAgIGlmIChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5t
YXNrKCkgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAgICAgICAgIG1hcmtlcnMgfD0g
RG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgIGlmIChtYXJrZXJzKQorICAgICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1vdmVNYXJrZXJzKG1fcHJvY2Vz
c2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKS5nZXQoKSwgbWFya2Vycyk7CisgICAgfQorICAg
IGRpZENoZWNrKHNlcXVlbmNlLCByZXN1bHRzKTsKK30KKwordm9pZCBTcGVsbENoZWNrZXI6OmRp
ZENoZWNrQ2FuY2VsZWQoaW50IHNlcXVlbmNlKQoreworICAgIFZlY3RvcjxUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IHJlc3VsdHM7CisgICAgZGlkQ2hlY2soc2VxdWVuY2UsIHJlc3VsdHMpOworfQogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxs
Q2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVj
a2VyLmgJKHJldmlzaW9uIDExNDA3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxD
aGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDggQEAgcHVibGljOgogICAgIGJv
b2wgaXNDaGVja2FibGUoUmFuZ2UqKSBjb25zdDsKIAogICAgIHZvaWQgcmVxdWVzdENoZWNraW5n
Rm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+KTsKLSAgICB2b2lkIGRpZENoZWNrKGlu
dCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2b2lk
IGRpZENoZWNrU3VjY2VlZGVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2lu
Z1Jlc3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrQ2FuY2VsZWQoaW50IHNlcXVlbmNlKTsKIAog
ICAgIGludCBsYXN0UmVxdWVzdFNlcXVlbmNlKCkgY29uc3QKICAgICB7CkBAIC0xMDEsNiArMTAy
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWRUb1Byb2Nlc3NRdWV1ZWRSZXF1ZXN0
KFRpbWVyPFNwZWxsQ2hlY2tlcj4qKTsKICAgICB2b2lkIGludm9rZVJlcXVlc3QoUGFzc1JlZlB0
cjxTcGVsbENoZWNrUmVxdWVzdD4pOwogICAgIHZvaWQgZW5xdWV1ZVJlcXVlc3QoUGFzc1JlZlB0
cjxTcGVsbENoZWNrUmVxdWVzdD4pOworICAgIHZvaWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBj
b25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAgICAgRnJhbWUqIG1fZnJhbWU7
CiAgICAgaW50IG1fbGFzdFJlcXVlc3RTZXF1ZW5jZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMTQxMDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA0LTEzICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kCisg
ICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMgYSBuZXcgQVBJ
IFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5nVGV4dCgpLAorICAg
ICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKCkg
YW5kIGltcGxlbWVudHMgaXQgc28KKyAgICAgICAgQ2hyb21pdW0gY2FuIHVzZSBpdC4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmg6CisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5nVGV4dCk6Cisg
ICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGw6OmRpZEZpbmlzaENoZWNraW5n
VGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tp
bmdDb21wbGV0aW9uSW1wbDo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBzcmMv
V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaDoKKyAgICAgICAgKFdlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wNC0xMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgcnVudGltZSBmbGFnIGZvciA8aW5wdXQgdHlwZT1k
YXRlPgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaAkocmV2aXNpb24gMTE0MDcwKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBX
ZWJWZWN0b3I7CiBjbGFzcyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ+JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDaGVj
a2luZ1RleHQoKSB7IH07CiBwcm90ZWN0ZWQ6CiAgICAgfldlYlRleHRDaGVja2luZ0NvbXBsZXRp
b24oKSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCShyZXZpc2lvbiAxMTQw
NzApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDEzIEBAIHN0YXRpYyBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiB0b0NvcmUKIAogdm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21w
bGV0aW9uSW1wbDo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQogewotICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVj
ayhtX2lkZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0cykpOworICAgIG1fc3BlbGxDaGVj
a2VyLT5kaWRDaGVja1N1Y2NlZWRlZChtX2lkZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0
cykpOworICAgIGRlbGV0ZSB0aGlzOworfQorCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRp
b25JbXBsOjpkaWRDYW5jZWxDaGVja2luZ1RleHQoKQoreworICAgIG1fc3BlbGxDaGVja2VyLT5k
aWRDaGVja0NhbmNlbGVkKG1faWRlbnRpZmllcik7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25J
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuaAkocmV2aXNpb24gMTE0MDcwKQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRpZEZpbmlzaENoZWNraW5nVGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVz
dWx0PiYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKTsKIAogcHJp
dmF0ZToKICAgICB2aXJ0dWFsIH5XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCgpIHsgfQpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MTAyKQorKysgU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTMg
IEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU3Bl
bGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQo
KSBhbmQKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFj
ZXMgYSBjYWxsIGZvciBTcGVsbENoZWNrZXI6OmRpZENoZWNrKCkgd2l0aCBvbmUgZm9yCisgICAg
ICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBiZWNhdXNlIGRpZENoZWNrIGhh
cyBiZWVuIHNwbGl0IGludG8KKyAgICAgICAgZGlkQ2hlY2tTdWNjZWVkZWQoMCBhbmQgZGlkQ2hl
Y2tDYW5jZWxlZCgpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50
Lm1tOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVsbENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKTog
UmVwbGFjZWQgZGlkQ2hlY2sgd2l0aCBkaWRDaGVja1N1Y2NlZWRlZC4KKwogMjAxMi0wNC0xMiAg
QW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEw
MjI2Mik6IGlBZCBQcm9kdWNlciByZWxpZXMgb24gQ1NTU3R5bGVEZWNsYXJhdGlvbiBwcm9wZXJ0
eSBzZXR0ZXJzIHJlc3BlY3RpbmcgJyFpbXBvcnRhbnQnCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCShyZXZpc2lvbiAx
MTQwNzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTk0MSw3ICs5NDEsNyBAQCAtIChpZClpbml0V2l0aFNl
bmRlcjooV2ViQ29yZTo6U3BlbGxDaGVjCiAKIC0gKHZvaWQpcGVyZm9ybQogewotICAgIF9zZW5k
ZXItPmRpZENoZWNrKF9zZXF1ZW5jZSwgY29yZShfcmVzdWx0cy5nZXQoKSwgX3R5cGVzKSk7Cisg
ICAgX3NlbmRlci0+ZGlkQ2hlY2tTdWNjZWVkZWQoX3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdl
dCgpLCBfdHlwZXMpKTsKIH0KIAogQGVuZApJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0MTAyKQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDQtMTMgIEhpcm9ub3Jp
IEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2Vy
OjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQKKyAg
ICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgYSBjYWxs
IGZvciBTcGVsbENoZWNrZXI6OmRpZENoZWNrKCkgd2l0aCBvbmUgZm9yCisgICAgICAgIFNwZWxs
Q2hlY2tlcjo6ZGlkQ2hlY2tDZW5jZWxlZCgpIGJlY2F1c2UgZGlkQ2hlY2soKSBoYXMgYmVlbiBz
cGxpdCBpbnRvCisgICAgICAgIGRpZENoZWNrU3VjY2VlZGVkKCkgYW5kIGRpZENoZWNrQ2FuY2Vs
ZWQoKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0Q2hlY2tpbmdPZlRleHQpOlJlcGxhY2Vk
IGRpZENoZWNrIHdpdGggZGlkQ2hlY2tDYW5jZWxlZC4KKwogMjAxMi0wNC0xMiAgUnlvc3VrZSBO
aXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBFeHRyYWN0IFBlcmZUZXN0IGNsYXNz
IGZyb20gUGVyZlRlc3RSdW5uZXIKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDExNDA3MCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1LDcg
KzQ1NSw3IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCgKIHsKICAg
ICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb24pCi0gICAgICAg
ICAgICBjb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQoVmVjdG9yPFdlYlRleHRDaGVj
a2luZ1Jlc3VsdD4oKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uLT5kaWRDYW5jZWxDaGVja2lu
Z1RleHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTE0
MTAyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTItMDQtMTMgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nh
bmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIGN1cnJlbnQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIGRvZXMgbm90IGRlbGV0ZSBleGlz
dGluZyBtYXJrZXJzLiBJdCBjYXVzZXMKKyAgICAgICAgYSBwcm9ibGVtIHRoYXQgaXQgbGVhdmVz
IG1pc3NwZWxsZWQgbWFya2VycyB3aGVuIGEgc3BlbGxjaGVja2VyIGNsaWVudCBmaW5pc2hlcwor
ICAgICAgICBjaGVja2luZyB0ZXh0IHN1Y2Nlc3NmdWxseS4gVGhpcyBjaGFuZ2Ugc3BsaXRzIHRo
aXMgZnVuY3Rpb24gdG8gZGlkQ2hlY2tTdWNjZWVkZWQoKQorICAgICAgICBhbmQgIGRpZENoZWNr
Q2FuY2VsZWQoKSBzbyB0aGUgU3BlbGxDaGVja2VyIGNsYXNzIGNhbiBkZWxldGUgZXhpc3Rpbmcg
bWFya2VycworICAgICAgICB3aGVuIGl0cyBjbGllbnQgZmluaXNoZXMgY2hlY2tpbmcgdGV4dCBz
dWNjZXNzZnVsbHkuIChXZSBkbyBub3QgaGF2ZSB0byBlcmFzZQorICAgICAgICBleGlzdGluZyBt
YXJrZXJzIHdoZW4gdGhlIGNsaWVudCBuZWVkcyB0byBjYW5jZWwgYSB0ZXh0LWNoZWNrIHJlcXVl
c3QuKQorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxl
dGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA0LTEzICBBbnRvbiBNdWhpbiAgPGFudG9ubUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm93IHRlc3Qgc29tZXRpbWVzIGNyYXNoZXMgaW4gRGVidWcgb24gWFAgdG9v
LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9k
ZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVk
LXdvcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorVGVzdCBpZiBDaHJvbWUgc3BlbGxj
aGVja3MgYSB3b3JkIGFnYWluIHdoZW4gY2hhbmdpbmcgYSBtaXNzcGVsbGVkIHdvcmQuVG8gdGVz
dCBtYW51YWxseSwgdHlwZSBhIG1pc3NwZWxsZWQgd29yZCAienogIiBhbmQgdHlwZSBhIGJhY2tz
cGFjZSBrZXkgdHdpY2UuVGhpcyB0ZXN0IHN1Y2NlZWRzIHdoZW4gInoiIGlzIG5vdCBtYXJrZWQg
YXMgbWlzc3BlbGxlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW50
ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKSBpcyB0cnVlCitQQVNTIGlu
dGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMSkgaXMgZmFsc2UKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoresKgCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
bWlzc3BlbGxlZC13b3JkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxs
aW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2ph
dmFzY3JpcHQiPjwvc2NyaXB0PgorPHRpdGxlPlRlc3RpbmcgbW92aW5nIGN1cnNvciB0byBhIG1p
c3NwZWxsZWQgd29yZDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorPGRpdiBpZD0ic3JjIiBj
b250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiPjwvZGl2Pjxici8+Cis8c2Ny
aXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0IGlmIENocm9tZSBz
cGVsbGNoZWNrcyBhIHdvcmQgYWdhaW4gd2hlbiBjaGFuZ2luZyBhIG1pc3NwZWxsZWQgd29yZC4n
ICsKKyAgICAgICAgICAgICdUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEgbWlzc3BlbGxlZCB3b3Jk
ICJ6eiAiIGFuZCB0eXBlIGEgYmFja3NwYWNlIGtleSB0d2ljZS4nICsKKyAgICAgICAgICAgICdU
aGlzIHRlc3Qgc3VjY2VlZHMgd2hlbiAieiIgaXMgbm90IG1hcmtlZCBhcyBtaXNzcGVsbGVkLicp
OworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworLy8gSW5zZXJ0IGEgbWlzc3BlbGxlZCB3b3Jk
IHRvIGluaXRpYWxpemUgYSBzcGVsbGNoZWNrZXIuIFdlIGRpc2FibGUgYXN5bmNocm9ub3VzCisv
LyBzcGVsbGNoZWNraW5nIG5vdyB0byB3YWl0IHVudGlsIHRoZSBzcGVsbGNoZWNrZXIgaXMgaW5p
dGlhbGl6ZWQuCit2YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcmMnKTsKK25v
ZGUuZm9jdXMoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6
Jyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAneicpOworZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBmYWxzZSwgJyAnKTsKK3Nob3VsZEJlVHJ1
ZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKScpOworCisvLyBF
bmFibGUgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcgYW5kIGNvcnJlY3QgdGhlIG1pc3NwZWxs
ZWQgd29yZC4gQWZ0ZXIKKy8vIGNvcnJlY3RpbmcgdGhlIHdvcmQsIHRoaXMgdGVzdCB3YWl0cyB1
bnRpbCB0aGUgYWJvdmUgbWFya2VyIGlzIGRlbGV0ZWQuCitsYXlvdXRUZXN0Q29udHJvbGxlci5z
ZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0
aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxlZCh0cnVlKTsKKworbGF5b3V0VGVzdENv
bnRyb2xsZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7CitsYXlvdXRUZXN0Q29udHJv
bGxlci5leGVjQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7CisKK3ZhciByZXRyeUNvdW50ID0gMTA7Cit2YXIg
c2xlZXBQZXJpb2QgPSAxOworZnVuY3Rpb24gdmVyaWZ5TWFya2VyKCkgeworICAgIHZhciBoYXNN
YXJrZXIgPSBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpOworICAg
IGlmIChoYXNNYXJrZXIgJiYgLS1yZXRyeUNvdW50ID4gMCkgeworICAgICAgICBzbGVlcFBlcmlv
ZCAqPSAyOworICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVy
aW9kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoaGFzTWFya2VyKQorICAgICAg
ICB0ZXN0RmFpbGVkKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEp
IHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUuJyk7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFz
c2VkKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpIGlzIGZhbHNl
Jyk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVk
KGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cit3aW5kb3cuc2V0
VGltZW91dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKKzwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="142043"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="142044"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137485</attachid>
            <date>2012-04-16 23:55:17 -0700</date>
            <delta_ts>2012-04-18 19:16:45 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>issue83748-patch3.txt</filename>
            <type>text/plain</type>
            <size>15151</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDM1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDEyLTA0LTE2ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kCisg
ICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soKSBkb2VzIG5vdCBkZWxldGUgZXhpc3RpbmcgbWFya2Vycy4gSXQgY2F1c2VzCisg
ICAgICAgIGEgcHJvYmxlbSB0aGF0IGl0IGxlYXZlcyBtaXNzcGVsbGVkIG1hcmtlcnMgd2hlbiBh
IHNwZWxsY2hlY2tlciBjbGllbnQgZmluaXNoZXMKKyAgICAgICAgY2hlY2tpbmcgdGV4dCBzdWNj
ZXNzZnVsbHkuIFRoaXMgY2hhbmdlIHNwbGl0cyB0aGlzIGZ1bmN0aW9uIHRvIGRpZENoZWNrU3Vj
Y2VlZGVkKCkKKyAgICAgICAgYW5kICBkaWRDaGVja0NhbmNlbGVkKCkgc28gdGhlIFNwZWxsQ2hl
Y2tlciBjbGFzcyBjYW4gZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMKKyAgICAgICAgd2hlbiBpdHMg
Y2xpZW50IGZpbmlzaGVzIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiAoV2UgZG8gbm90IGhh
dmUgdG8gZXJhc2UKKyAgICAgICAgZXhpc3RpbmcgbWFya2VycyB3aGVuIHRoZSBjbGllbnQgbmVl
ZHMgdG8gY2FuY2VsIGEgdGV4dC1jaGVjayByZXF1ZXN0LikKKworICAgICAgICBUZXN0OiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bAorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46IFJlcGxhY2VkIFNwZWxsQ2hlY2tlcjo6ZGlk
Q2hlY2sgd2l0aCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkLgorICAgICAgICAqIGVk
aXRpbmcvU3BlbGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2tTdWNjZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6U3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKTogQWRkZWQuCisgICAgICAg
ICogZWRpdGluZy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFNwZWxsQ2hlY2tlcik6IEFkZGVk
IGRpZENoZWNrU3VjY2VlZGVkIGFuZCBkaWRDaGVja0NhbmNlbGVkLiBBbHNvIGNoYW5nZWQgZGlk
Q2hlY2sgdG8gYSBwcml2YXRlIGZ1bmN0aW9uLgorCiAyMDEyLTA0LTE2ICBIYWppbWUgTW9ycml0
YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIGluc2VydGVkSW50b0RvY3VtZW50
IGFuZCBpbnNlcnRlZEludG9UcmVlIHNob3VsZCBiZSB1bml0aWZlZC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCShyZXZpc2lvbiAxMTQzMzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMjc5LDcgKzI3OSw3IEBAIF9fWk43V2ViQ29yZTEyU2hh
cmVkQnVmZmVyQzFFUEtjaQogX19aTjdXZWJDb3JlMTJTaGFyZWRCdWZmZXJDMUVQS2hpCiBfX1pO
N1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckMxRXYKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyRDFF
dgotX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXI4ZGlkQ2hlY2tFaVJLTjNXVEY2VmVjdG9ySU5T
XzE4VGV4dENoZWNraW5nUmVzdWx0RUxtMEVFRQorX19aTjdXZWJDb3JlMTJTcGVsbENoZWNrZXIx
N2RpZENoZWNrU3VjY2VlZGVkRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRDaGVja2luZ1Jlc3Vs
dEVMbTBFRUUKIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5nQzFFUktOM1dURjZTdHJpbmdFCiBf
X1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgogX19a
TjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBOU183
RWxlbWVudEVpaWIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJ
KHJldmlzaW9uIDExNDMzNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4LDUgKzE4OCwyNCBAQCB2b2lkIFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soaW50IHNlcXVlbmNlCiAgICAgICAgIG1fdGltZXJUb1Byb2Nlc3NRdWV1ZWRS
ZXF1ZXN0LnN0YXJ0T25lU2hvdCgwKTsKIH0KIAordm9pZCBTcGVsbENoZWNrZXI6OmRpZENoZWNr
U3VjY2VlZGVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCit7CisgICAgaWYgKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPnNlcXVlbmNlKCkgPT0g
c2VxdWVuY2UpIHsKKyAgICAgICAgdW5zaWduZWQgbWFya2VycyA9IDA7CisgICAgICAgIGlmICht
X3Byb2Nlc3NpbmdSZXF1ZXN0LT5tYXNrKCkgJiBUZXh0Q2hlY2tpbmdUeXBlU3BlbGxpbmcpCisg
ICAgICAgICAgICBtYXJrZXJzIHw9IERvY3VtZW50TWFya2VyOjpTcGVsbGluZzsKKyAgICAgICAg
aWYgKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPm1hc2soKSAmIFRleHRDaGVja2luZ1R5cGVHcmFtbWFy
KQorICAgICAgICAgICAgbWFya2VycyB8PSBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcjsKKyAgICAg
ICAgaWYgKG1hcmtlcnMpCisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJz
KCktPnJlbW92ZU1hcmtlcnMobV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLmdl
dCgpLCBtYXJrZXJzKTsKKyAgICB9CisgICAgZGlkQ2hlY2soc2VxdWVuY2UsIHJlc3VsdHMpOwor
fQorCit2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZChpbnQgc2VxdWVuY2UpCit7
CisgICAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICBkaWRDaGVjayhz
ZXF1ZW5jZSwgcmVzdWx0cyk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAkocmV2aXNpb24gMTE0MzM2KQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtODEs
NyArODEsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NoZWNrYWJsZShSYW5nZSopIGNvbnN0Owog
CiAgICAgdm9pZCByZXF1ZXN0Q2hlY2tpbmdGb3IoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVz
dD4pOwotICAgIHZvaWQgZGlkQ2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENo
ZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQgZGlkQ2hlY2tTdWNjZWVkZWQoaW50IHNlcXVlbmNl
LCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOworICAgIHZvaWQgZGlkQ2hlY2tD
YW5jZWxlZChpbnQgc2VxdWVuY2UpOwogCiAgICAgaW50IGxhc3RSZXF1ZXN0U2VxdWVuY2UoKSBj
b25zdAogICAgIHsKQEAgLTEwMSw2ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdGltZXJG
aXJlZFRvUHJvY2Vzc1F1ZXVlZFJlcXVlc3QoVGltZXI8U3BlbGxDaGVja2VyPiopOwogICAgIHZv
aWQgaW52b2tlUmVxdWVzdChQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0Pik7CiAgICAgdm9p
ZCBlbnF1ZXVlUmVxdWVzdChQYXNzUmVmUHRyPFNwZWxsQ2hlY2tSZXF1ZXN0Pik7CisgICAgdm9p
ZCBkaWRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+
Jik7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKICAgICBpbnQgbV9sYXN0UmVxdWVzdFNlcXVlbmNl
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDM1MSkKKysrIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMTItMDQtMTYgIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nh
bmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhpcyBjaGFuZ2UgYWRkcyBhIG5ldyBBUEkgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjo6ZGlk
Q2FuY2VsQ2hlY2tpbmdUZXh0KCksCisgICAgICAgIHdoaWNoIGVuY2Fwc3VsYXRlcyBTcGVsbENo
ZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoKSBhbmQgaW1wbGVtZW50cyBpdCBzbworICAgICAgICBD
aHJvbWl1bSBjYW4gdXNlIGl0LgorCisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ0Nv
bXBsZXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjo6
ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbkltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0
aW9uSW1wbDo6ZGlkRmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRDYW5jZWxDaGVj
a2luZ1RleHQpOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5o
OgorICAgICAgICAoV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwpOgorCiAyMDEyLTA0LTE2
ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgTG9j
YWxpemVkTnVtYmVySUNVLmggdG8gSUNVTG9jYWxlLmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgJ
KHJldmlzaW9uIDExNDMzNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRl
eHRDaGVja2luZ0NvbXBsZXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2ViVmVjdG9yOwogY2xhc3MgV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaENoZWNr
aW5nVGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KCkgeyB9OwogcHJvdGVjdGVkOgog
ICAgIH5XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKCkgeyB9CiB9OwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsLmNwcAkocmV2aXNpb24gMTE0MzM2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSwxMyBAQCBzdGF0aWMgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gdG9Db3Jl
CiAKIHZvaWQgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGw6OmRpZEZpbmlzaENoZWNraW5n
VGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKIHsK
LSAgICBtX3NwZWxsQ2hlY2tlci0+ZGlkQ2hlY2sobV9pZGVudGlmaWVyLCB0b0NvcmVSZXN1bHRz
KHJlc3VsdHMpKTsKKyAgICBtX3NwZWxsQ2hlY2tlci0+ZGlkQ2hlY2tTdWNjZWVkZWQobV9pZGVu
dGlmaWVyLCB0b0NvcmVSZXN1bHRzKHJlc3VsdHMpKTsKKyAgICBkZWxldGUgdGhpczsKK30KKwor
dm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0
KCkKK3sKKyAgICBtX3NwZWxsQ2hlY2tlci0+ZGlkQ2hlY2tDYW5jZWxlZChtX2lkZW50aWZpZXIp
OwogICAgIGRlbGV0ZSB0aGlzOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgJKHJldmlz
aW9uIDExNDMzNikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgcHVibGlj
OgogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQoY29uc3Qg
V2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2FuY2VsQ2hlY2tpbmdUZXh0KCk7CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+V2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDExNDM1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDEyLTA0LTE2ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soKSB0byBTcGVs
bENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kCisgICAgICAgIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgY2hhbmdlIHJlcGxhY2VzIGEgY2FsbCBmb3IgU3BlbGxDaGVja2VyOjpk
aWRDaGVjaygpIHdpdGggb25lIGZvcgorICAgICAgICBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3Vj
Y2VlZGVkKCkgYmVjYXVzZSBkaWRDaGVjayBoYXMgYmVlbiBzcGxpdCBpbnRvCisgICAgICAgIGRp
ZENoZWNrU3VjY2VlZGVkKDAgYW5kIGRpZENoZWNrQ2FuY2VsZWQoKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKC1bV2ViRWRpdG9yU3Bl
bGxDaGVja1Jlc3BvbmRlciBwZXJmb3JtXSk6IFJlcGxhY2VkIGRpZENoZWNrIHdpdGggZGlkQ2hl
Y2tTdWNjZWVkZWQuCisKIDIwMTItMDQtMTYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBNSUcgY2FsbCB3aGVuIGNyZWF0aW5nIGEgcGx1Zy1p
biBwcm9wZXJ0eSBsaXN0IGZpbGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDExNDMzNikKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtOTQxLDcgKzk0MSw3IEBAIC0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJDb3Jl
OjpTcGVsbENoZWMKIAogLSAodm9pZClwZXJmb3JtCiB7Ci0gICAgX3NlbmRlci0+ZGlkQ2hlY2so
X3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdldCgpLCBfdHlwZXMpKTsKKyAgICBfc2VuZGVyLT5k
aWRDaGVja1N1Y2NlZWRlZChfc2VxdWVuY2UsIGNvcmUoX3Jlc3VsdHMuZ2V0KCksIF90eXBlcykp
OwogfQogCiBAZW5kCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxMTQzNTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNC0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25v
QGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKCkg
dG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFuZAorICAgICAgICBTcGVsbENo
ZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIGNoYW5nZSByZXBsYWNlcyBhIGNhbGwgZm9yIFNwZWxsQ2hl
Y2tlcjo6ZGlkQ2hlY2soKSB3aXRoIG9uZSBmb3IKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRD
aGVja0NlbmNlbGVkKCkgYmVjYXVzZSBkaWRDaGVjaygpIGhhcyBiZWVuIHNwbGl0IGludG8KKyAg
ICAgICAgZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAo
V2ViVmlld0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCk6IFJlcGxhY2VkIGRpZENoZWNrIHdp
dGggZGlkQ2hlY2tDYW5jZWxlZC4KKwogMjAxMi0wNC0xNiAgR3VzdGF2byBOb3JvbmhhIFNpbHZh
ICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBbR1RLXSBVc2UgY29uZmlndXJlIGluc3RlYWQg
b2YgYXV0b2dlbi5zaCBmb3IgZ3RrKwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gMTE0MzM2KQorKysgVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NTUs
NyArNDU1LDcgQEAgdm9pZCBXZWJWaWV3SG9zdDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KAogewog
ICAgIGlmICh0ZXh0LmlzRW1wdHkoKSkgewogICAgICAgICBpZiAoY29tcGxldGlvbikKLSAgICAg
ICAgICAgIGNvbXBsZXRpb24tPmRpZEZpbmlzaENoZWNraW5nVGV4dChWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PigpKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb24tPmRpZENhbmNlbENoZWNr
aW5nVGV4dCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MTQzNTEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAxMi0wNC0xNiAgSGlyb25vcmkgQm9ubyAgPGhib25vQGNocm9taXVtLm9yZz4K
KworICAgICAgICBTcGxpdCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKCkgdG8gU3BlbGxDaGVja2Vy
OjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFuZAorICAgICAgICBTcGVsbENoZWNrZXI6OmRpZENoZWNr
Q2FuY2VsZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODM3NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGUgY3VycmVudCBTcGVsbENoZWNrZXI6OmRpZENoZWNrKCkgZG9lcyBub3QgZGVsZXRlIGV4
aXN0aW5nIG1hcmtlcnMuIEl0IGNhdXNlcworICAgICAgICBhIHByb2JsZW0gdGhhdCBpdCBsZWF2
ZXMgbWlzc3BlbGxlZCBtYXJrZXJzIHdoZW4gYSBzcGVsbGNoZWNrZXIgY2xpZW50IGZpbmlzaGVz
CisgICAgICAgIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiBUaGlzIGNoYW5nZSBzcGxpdHMg
dGhpcyBmdW5jdGlvbiB0byBkaWRDaGVja1N1Y2NlZWRlZCgpCisgICAgICAgIGFuZCAgZGlkQ2hl
Y2tDYW5jZWxlZCgpIHNvIHRoZSBTcGVsbENoZWNrZXIgY2xhc3MgY2FuIGRlbGV0ZSBleGlzdGlu
ZyBtYXJrZXJzCisgICAgICAgIHdoZW4gaXRzIGNsaWVudCBmaW5pc2hlcyBjaGVja2luZyB0ZXh0
IHN1Y2Nlc3NmdWxseS4gKFdlIGRvIG5vdCBoYXZlIHRvIGVyYXNlCisgICAgICAgIGV4aXN0aW5n
IG1hcmtlcnMgd2hlbiB0aGUgY2xpZW50IG5lZWRzIHRvIGNhbmNlbCBhIHRleHQtY2hlY2sgcmVx
dWVzdC4pCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2Rl
bGV0ZS1taXNzcGVsbGVkLXdvcmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRt
bDogQWRkZWQuCisKIDIwMTItMDQtMTYgIERhdmlkIEJhcnIgIDxkYXZpZGJhcnJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFN0YWNrIG92ZXJmbG93IGluIENTUyBwYXJzZXIgY2F1c2VkIGJ5IHJl
Y3Vyc2l2ZSBzdHlsZXNoZWV0IGltcG9ydApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3Nw
ZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
bWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBA
QAorVGVzdCBpZiBDaHJvbWUgc3BlbGxjaGVja3MgYSB3b3JkIGFnYWluIHdoZW4gY2hhbmdpbmcg
YSBtaXNzcGVsbGVkIHdvcmQuVG8gdGVzdCBtYW51YWxseSwgdHlwZSBhIG1pc3NwZWxsZWQgd29y
ZCAienogIiBhbmQgdHlwZSBhIGJhY2tzcGFjZSBrZXkgdHdpY2UuVGhpcyB0ZXN0IHN1Y2NlZWRz
IHdoZW4gInoiIGlzIG5vdCBtYXJrZWQgYXMgbWlzc3BlbGxlZC4KKworT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgorCisKK1BBU1MgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50
LCAwLCAyKSBpcyB0cnVlCitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVu
dCwgMCwgMSkgaXMgZmFsc2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQoresKgCisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
bWlzc3BlbGxlZC13b3JkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PS4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGxhbmd1YWdlPSJq
YXZhc2NyaXB0IiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHRpdGxlPlRlc3Rp
bmcgbW92aW5nIGN1cnNvciB0byBhIG1pc3NwZWxsZWQgd29yZDwvdGl0bGU+IAorPC9oZWFkPiAK
Kzxib2R5PgorPGRpdiBpZD0ic3JjIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9
InRydWUiPjwvZGl2Pjxici8+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KK2Rlc2Ny
aXB0aW9uKCdUZXN0IGlmIENocm9tZSBzcGVsbGNoZWNrcyBhIHdvcmQgYWdhaW4gd2hlbiBjaGFu
Z2luZyBhIG1pc3NwZWxsZWQgd29yZC4nICsKKyAgICAgICAgICAgICdUbyB0ZXN0IG1hbnVhbGx5
LCB0eXBlIGEgbWlzc3BlbGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBlIGEgYmFja3NwYWNlIGtleSB0
d2ljZS4nICsKKyAgICAgICAgICAgICdUaGlzIHRlc3Qgc3VjY2VlZHMgd2hlbiAieiIgaXMgbm90
IG1hcmtlZCBhcyBtaXNzcGVsbGVkLicpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworLy8g
SW5zZXJ0IGEgbWlzc3BlbGxlZCB3b3JkIHRvIGluaXRpYWxpemUgYSBzcGVsbGNoZWNrZXIuIFdl
IGRpc2FibGUgYXN5bmNocm9ub3VzCisvLyBzcGVsbGNoZWNraW5nIG5vdyB0byB3YWl0IHVudGls
IHRoZSBzcGVsbGNoZWNrZXIgaXMgaW5pdGlhbGl6ZWQuCit2YXIgbm9kZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzcmMnKTsKK25vZGUuZm9jdXMoKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCJJbnNlcnRUZXh0IiwgZmFsc2UsICd6Jyk7Citkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0
VGV4dCIsIGZhbHNlLCAneicpOworZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydFRleHQiLCBm
YWxzZSwgJyAnKTsKK3Nob3VsZEJlVHJ1ZSgnaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRv
Y3VtZW50LCAwLCAyKScpOworCisvLyBFbmFibGUgYXN5bmNocm9ub3VzIHNwZWxsY2hlY2tpbmcg
YW5kIGNvcnJlY3QgdGhlIG1pc3NwZWxsZWQgd29yZC4gQWZ0ZXIKKy8vIGNvcnJlY3RpbmcgdGhl
IHdvcmQsIHRoaXMgdGVzdCB3YWl0cyB1bnRpbCB0aGUgYWJvdmUgbWFya2VyIGlzIGRlbGV0ZWQu
CitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5hYmxl
ZCh0cnVlKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3
YXJkIik7CitsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiRGVsZXRlQmFja3dhcmQi
KTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7CisKK3Zh
ciByZXRyeUNvdW50ID0gMTA7Cit2YXIgc2xlZXBQZXJpb2QgPSAxOworZnVuY3Rpb24gdmVyaWZ5
TWFya2VyKCkgeworICAgIHZhciBoYXNNYXJrZXIgPSBpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJr
ZXIoZG9jdW1lbnQsIDAsIDEpOworICAgIGlmIChoYXNNYXJrZXIgJiYgLS1yZXRyeUNvdW50ID4g
MCkgeworICAgICAgICBzbGVlcFBlcmlvZCAqPSAyOworICAgICAgICB3aW5kb3cuc2V0VGltZW91
dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBpZiAoaGFzTWFya2VyKQorICAgICAgICB0ZXN0RmFpbGVkKCdpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpIHNob3VsZCBiZSBmYWxzZS4gV2FzIHRydWUuJyk7Cisg
ICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIo
ZG9jdW1lbnQsIDAsIDEpIGlzIGZhbHNlJyk7CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVu
aWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNo
SlNUZXN0KCk7Cit9Cit3aW5kb3cuc2V0VGltZW91dCh2ZXJpZnlNYXJrZXIsIHNsZWVwUGVyaW9k
KTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137816</attachid>
            <date>2012-04-18 19:16:45 -0700</date>
            <delta_ts>2012-04-18 20:07:11 -0700</delta_ts>
            <desc>Patch v4 (applied comments)</desc>
            <filename>issue83748-patch4.txt</filename>
            <type>text/plain</type>
            <size>14943</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTE4ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
KSBkb2VzIG5vdCBkZWxldGUgZXhpc3RpbmcgbWFya2Vycy4gSXQgY2F1c2VzCisgICAgICAgIGEg
cHJvYmxlbSB0aGF0IGl0IGxlYXZlcyBtaXNzcGVsbGVkIG1hcmtlcnMgd2hlbiBhIHNwZWxsY2hl
Y2tlciBjbGllbnQgZmluaXNoZXMKKyAgICAgICAgY2hlY2tpbmcgdGV4dCBzdWNjZXNzZnVsbHku
IFRoaXMgY2hhbmdlIHNwbGl0cyB0aGlzIGZ1bmN0aW9uIHRvIGRpZENoZWNrU3VjY2VlZGVkKCkK
KyAgICAgICAgYW5kICBkaWRDaGVja0NhbmNlbGVkKCkgc28gdGhlIFNwZWxsQ2hlY2tlciBjbGFz
cyBjYW4gZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMKKyAgICAgICAgd2hlbiBpdHMgY2xpZW50IGZp
bmlzaGVzIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiAoV2UgZG8gbm90IGhhdmUgdG8gZXJh
c2UKKyAgICAgICAgZXhpc3RpbmcgbWFya2VycyB3aGVuIHRoZSBjbGllbnQgbmVlZHMgdG8gY2Fu
Y2VsIGEgdGV4dC1jaGVjayByZXF1ZXN0LikKKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5leHAuaW46IFJlcGxhY2VkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2sgd2l0
aCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkLgorICAgICAgICAqIGVkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tT
dWNjZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKTogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFNwZWxsQ2hlY2tlcik6IEFkZGVkIGRpZENoZWNr
U3VjY2VlZGVkIGFuZCBkaWRDaGVja0NhbmNlbGVkLiBBbHNvIGNoYW5nZWQgZGlkQ2hlY2sgdG8g
YSBwcml2YXRlIGZ1bmN0aW9uLgorCiAyMDEyLTA0LTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgY2FuQmVnaW5GcmFtZSBz
dGF0ZSB0byBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSB0byBzdXBwcmVzcyBpbml0aWFsaXphdGlv
biBiZWZvcmUgb3VyIHN1cmZhY2UgaXMgYXZhaWxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTE0NTkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
ckMxRVBLY2kKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtoaQogX19aTjdXZWJDb3Jl
MTJTaGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43
V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRD
aGVja2luZ1Jlc3VsdEVMbTBFRUUKK19fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyMTdkaWRDaGVj
a1N1Y2NlZWRlZEVpUktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVF
CiBfX1pON1dlYkNvcmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTJUZXh0SXRlcmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRF
aWliCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCShyZXZpc2lv
biAxMTQ1OTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4OCw1ICsxODgsMjQgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENo
ZWNrKGludCBzZXF1ZW5jZQogICAgICAgICBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5z
dGFydE9uZVNob3QoMCk7CiB9CiAKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRl
ZChpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KQoreworICAgIGlmIChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5zZXF1ZW5jZSgpID09IHNlcXVlbmNl
KSB7CisgICAgICAgIHVuc2lnbmVkIG1hcmtlcnMgPSAwOworICAgICAgICBpZiAobV9wcm9jZXNz
aW5nUmVxdWVzdC0+bWFzaygpICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgICAgICAg
ICAgbWFya2VycyB8PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgICAgIGlmIChtX3By
b2Nlc3NpbmdSZXF1ZXN0LT5tYXNrKCkgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAg
ICAgICAgIG1hcmtlcnMgfD0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgIGlmICht
YXJrZXJzKQorICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1v
dmVNYXJrZXJzKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKS5nZXQoKSwgbWFy
a2Vycyk7CisgICAgfQorICAgIGRpZENoZWNrKHNlcXVlbmNlLCByZXN1bHRzKTsKK30KKwordm9p
ZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoaW50IHNlcXVlbmNlKQoreworICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgZGlkQ2hlY2soc2VxdWVuY2Us
IHJlc3VsdHMpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxDaGVja2VyLmgJKHJldmlzaW9uIDExNDU5MCkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDaGVja2FibGUoUmFuZ2UqKSBjb25zdDsKIAogICAgIHZv
aWQgcmVxdWVzdENoZWNraW5nRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+KTsKLSAg
ICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrU3VjY2VlZGVkKGludCBzZXF1ZW5jZSwgY29uc3Qg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrQ2FuY2VsZWQo
aW50IHNlcXVlbmNlKTsKIAogICAgIGludCBsYXN0UmVxdWVzdFNlcXVlbmNlKCkgY29uc3QKICAg
ICB7CkBAIC0xMDEsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWRUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0KFRpbWVyPFNwZWxsQ2hlY2tlcj4qKTsKICAgICB2b2lkIGludm9r
ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOwogICAgIHZvaWQgZW5xdWV1
ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOworICAgIHZvaWQgZGlkQ2hl
Y2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50IG1fbGFzdFJlcXVlc3RTZXF1ZW5jZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2MDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA0LTE4ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNwbGl0IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNr
U3VjY2VlZGVkKCkgYW5kIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMg
YSBuZXcgQVBJIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5nVGV4
dCgpLAorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nh
bmNlbGVkKCkgYW5kIGltcGxlbWVudHMgaXQgc28KKyAgICAgICAgQ2hyb21pdW0gY2FuIHVzZSBp
dC4KKworICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5n
VGV4dCk6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGw6OmRpZEZpbmlz
aENoZWNraW5nVGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KToKKyAgICAg
ICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaDoKKyAgICAgICAgKFdlYlRl
eHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wNC0xOCAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGNhbkJlZ2lu
RnJhbWUgc3RhdGUgdG8gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgdG8gc3VwcHJlc3MgaW5pdGlh
bGl6YXRpb24gYmVmb3JlIG91ciBzdXJmYWNlIGlzIGF2YWlsYWJsZQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb24uaAkocmV2aXNpb24gMTE0NTkwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiBjbGFzcyBXZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoQ2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKSB7IH07CiBwcm90
ZWN0ZWQ6CiAgICAgfldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24oKSB7IH0KIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuY3BwCShyZXZpc2lvbiAxMTQ1OTApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDEzIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiB0b0NvcmUKIAogdm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkRmluaXNo
Q2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQogewotICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVjayhtX2lkZW50aWZpZXIsIHRvQ29y
ZVJlc3VsdHMocmVzdWx0cykpOworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja1N1Y2NlZWRl
ZChtX2lkZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0cykpOworICAgIGRlbGV0ZSB0aGlz
OworfQorCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRDYW5jZWxDaGVj
a2luZ1RleHQoKQoreworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja0NhbmNlbGVkKG1faWRl
bnRpZmllcik7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwu
aAkocmV2aXNpb24gMTE0NTkwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4
dENoZWNraW5nQ29tcGxldGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4
dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCgpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE0NjAwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMTggIEhpcm9ub3JpIEJvbm8gIDxoYm9u
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygp
IHRvIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgU3BlbGxDaGVja2VyOjpk
aWRDaGVja0NhbmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgYSBjYWxsIGZvciBTcGVsbENoZWNrZXI6OmRp
ZENoZWNrKCkgd2l0aCBvbmUgZm9yCisgICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkZWQoKSBiZWNhdXNlIGRpZENoZWNrIGhhcyBiZWVuIHNwbGl0IGludG8KKyAgICAgICAgZGlk
Q2hlY2tTdWNjZWVkZWQoMCBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKTogUmVwbGFjZWQgZGlkQ2hlY2sgd2l0aCBkaWRDaGVj
a1N1Y2NlZWRlZC4KKwogMjAxMi0wNC0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2RlIGRvZXMgbm90IHByZXNlcnZlIENBTGF5ZXIg
b3JkZXJpbmcgYWZ0ZXIgZXhpdGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDExNDU5MCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTQxLDcgKzk0MSw3IEBAIC0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJD
b3JlOjpTcGVsbENoZWMKIAogLSAodm9pZClwZXJmb3JtCiB7Ci0gICAgX3NlbmRlci0+ZGlkQ2hl
Y2soX3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdldCgpLCBfdHlwZXMpKTsKKyAgICBfc2VuZGVy
LT5kaWRDaGVja1N1Y2NlZWRlZChfc2VxdWVuY2UsIGNvcmUoX3Jlc3VsdHMuZ2V0KCksIF90eXBl
cykpOwogfQogCiBAZW5kCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xOCAgSGlyb25vcmkgQm9ubyAgPGhi
b25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBTcGVsbENoZWNrZXI6OmRpZENoZWNr
KCkgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFuZCBTcGVsbENoZWNrZXI6
OmRpZENoZWNrQ2FuY2VsZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZXBsYWNlcyBhIGNhbGwgZm9yIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soKSB3aXRoIG9uZSBmb3IKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nl
bmNlbGVkKCkgYmVjYXVzZSBkaWRDaGVjaygpIGhhcyBiZWVuIHNwbGl0IGludG8KKyAgICAgICAg
ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmll
d0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCk6IFJlcGxhY2VkIGRpZENoZWNrIHdpdGggZGlk
Q2hlY2tDYW5jZWxlZC4KKwogMjAxMi0wNC0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEpTQyB0ZXN0aW5nIHNob3VsZCBoYXZlIGNvbXBsZXRlIGNvdmVyYWdl
IG92ZXIgdHlwZWQgYXJyYXkgdHlwZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDExNDU5MCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1
LDcgKzQ1NSw3IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCgKIHsK
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb24pCi0gICAg
ICAgICAgICBjb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQoVmVjdG9yPFdlYlRleHRD
aGVja2luZ1Jlc3VsdD4oKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uLT5kaWRDYW5jZWxDaGVj
a2luZ1RleHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE0NjAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDQtMTggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVk
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1
cnJlbnQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIGRvZXMgbm90IGRlbGV0ZSBleGlzdGluZyBt
YXJrZXJzLiBJdCBjYXVzZXMKKyAgICAgICAgYSBwcm9ibGVtIHRoYXQgaXQgbGVhdmVzIG1pc3Nw
ZWxsZWQgbWFya2VycyB3aGVuIGEgc3BlbGxjaGVja2VyIGNsaWVudCBmaW5pc2hlcworICAgICAg
ICBjaGVja2luZyB0ZXh0IHN1Y2Nlc3NmdWxseS4gVGhpcyBjaGFuZ2Ugc3BsaXRzIHRoaXMgZnVu
Y3Rpb24gdG8gZGlkQ2hlY2tTdWNjZWVkZWQoKQorICAgICAgICBhbmQgIGRpZENoZWNrQ2FuY2Vs
ZWQoKSBzbyB0aGUgU3BlbGxDaGVja2VyIGNsYXNzIGNhbiBkZWxldGUgZXhpc3RpbmcgbWFya2Vy
cworICAgICAgICB3aGVuIGl0cyBjbGllbnQgZmluaXNoZXMgY2hlY2tpbmcgdGV4dCBzdWNjZXNz
ZnVsbHkuIChXZSBkbyBub3QgaGF2ZSB0byBlcmFzZQorICAgICAgICBleGlzdGluZyBtYXJrZXJz
IHdoZW4gdGhlIGNsaWVudCBuZWVkcyB0byBjYW5jZWwgYSB0ZXh0LWNoZWNrIHJlcXVlc3QuKQor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlz
c3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA0LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBHVEsgdGVzdF9leHBlY3RhdGlvbnMgdXBkYXRlLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
bWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBpZiBDaHJvbWUgc3BlbGxjaGVja3Mg
YSB3b3JkIGFnYWluIHdoZW4gY2hhbmdpbmcgYSBtaXNzcGVsbGVkIHdvcmQuVG8gdGVzdCBtYW51
YWxseSwgdHlwZSBhIG1pc3NwZWxsZWQgd29yZCAienogIiBhbmQgdHlwZSBhIGJhY2tzcGFjZSBr
ZXkgdHdpY2UuVGhpcyB0ZXN0IHN1Y2NlZWRzIHdoZW4gInoiIGlzIG5vdCBtYXJrZWQgYXMgbWlz
c3BlbGxlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5zZXJ0VGV4
dCgieiIpOyBpbnNlcnRUZXh0KCJ6Iik7IGluc2VydFRleHQoIiAiKTsgaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKSBpcyB0cnVlCitFbmFibGUgYXN5bmNocm9ub3Vz
IHNwZWxsY2hlY2tpbmcsIGRlbGV0ZSB0d28gY2hhcmFjdGVycywgYW5kIGluc2VydCBhIHNwYWNl
CitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMSkgaXMgZmFs
c2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoresKg
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3Jk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPS4uLy4uLy4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGxhbmd1YWdlPSJqYXZhc2NyaXB0IiB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHRpdGxlPlRlc3RpbmcgbW92aW5nIGN1cnNv
ciB0byBhIG1pc3NwZWxsZWQgd29yZDwvdGl0bGU+IAorPC9oZWFkPiAKKzxib2R5PgorPGRpdiBp
ZD0ic3JjIiBjb250ZW50ZWRpdGFibGU9InRydWUiIHNwZWxsY2hlY2s9InRydWUiPjwvZGl2Pjxi
ci8+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KK2Rlc2NyaXB0aW9uKCdUZXN0IGlm
IENocm9tZSBzcGVsbGNoZWNrcyBhIHdvcmQgYWdhaW4gd2hlbiBjaGFuZ2luZyBhIG1pc3NwZWxs
ZWQgd29yZC4nICsKKyAgICAgICAgICAgICdUbyB0ZXN0IG1hbnVhbGx5LCB0eXBlIGEgbWlzc3Bl
bGxlZCB3b3JkICJ6eiAiIGFuZCB0eXBlIGEgYmFja3NwYWNlIGtleSB0d2ljZS4nICsKKyAgICAg
ICAgICAgICdUaGlzIHRlc3Qgc3VjY2VlZHMgd2hlbiAieiIgaXMgbm90IG1hcmtlZCBhcyBtaXNz
cGVsbGVkLicpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKwordmFyIG5vZGUgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3JjJyk7Citub2RlLmZvY3VzKCk7CitmdW5jdGlvbiBpbnNlcnRU
ZXh0KHRleHQpIHsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNl
LCB0ZXh0KTsKK30KK3Nob3VsZEJlVHJ1ZSgnaW5zZXJ0VGV4dCgieiIpOyBpbnNlcnRUZXh0KCJ6
Iik7IGluc2VydFRleHQoIiAiKTsgaW50ZXJuYWxzLmhhc1NwZWxsaW5nTWFya2VyKGRvY3VtZW50
LCAwLCAyKScpOworCitkZWJ1ZygnRW5hYmxlIGFzeW5jaHJvbm91cyBzcGVsbGNoZWNraW5nLCBk
ZWxldGUgdHdvIGNoYXJhY3RlcnMsIGFuZCBpbnNlcnQgYSBzcGFjZScpOworbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CitpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRDaGVja2luZ0VuYWJsZWQodHJ1ZSk7CisKK2xh
eW91dFRlc3RDb250cm9sbGVyLmV4ZWNDb21tYW5kKCJEZWxldGVCYWNrd2FyZCIpOworbGF5b3V0
VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJhY2t3YXJkIik7Citkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0VGV4dCIsIGZhbHNlLCAnICcpOworCit2YXIgcmV0cnlDb3VudCA9
IDEwOworZnVuY3Rpb24gdmVyaWZ5TWFya2VyKCkgeworICAgIHZhciBoYXNNYXJrZXIgPSBpbnRl
cm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpOworICAgIGlmIChoYXNNYXJr
ZXIgJiYgLS1yZXRyeUNvdW50ID4gMCkgeworICAgICAgICB3aW5kb3cuc2V0VGltZW91dCh2ZXJp
ZnlNYXJrZXIsIHNsZWVwUGVyaW9kKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzaG91
bGRCZUZhbHNlKCdpbnRlcm5hbHMuaGFzU3BlbGxpbmdNYXJrZXIoZG9jdW1lbnQsIDAsIDEpJyk7
CisgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldFVuaWZpZWRUZXh0Q2hlY2tpbmdFbmFibGVkKGZh
bHNlKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChmYWxzZSk7CisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cit3aW5kb3cuc2V0VGlt
ZW91dCh2ZXJpZnlNYXJrZXIsIDEpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4v
Li4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>
<flag name="review"
          id="142989"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>137826</attachid>
            <date>2012-04-18 20:07:11 -0700</date>
            <delta_ts>2012-04-18 20:52:14 -0700</delta_ts>
            <desc>A patch v5 (added DOCTYPE)</desc>
            <filename>issue83748-patch5.txt</filename>
            <type>text/plain</type>
            <size>14960</size>
            <attacher name="Hironori Bono">hbono</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExNDYwMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTE4ICBIaXJvbm9y
aSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFNwbGl0IFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkKCkgYW5kIFNw
ZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjdXJyZW50IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2so
KSBkb2VzIG5vdCBkZWxldGUgZXhpc3RpbmcgbWFya2Vycy4gSXQgY2F1c2VzCisgICAgICAgIGEg
cHJvYmxlbSB0aGF0IGl0IGxlYXZlcyBtaXNzcGVsbGVkIG1hcmtlcnMgd2hlbiBhIHNwZWxsY2hl
Y2tlciBjbGllbnQgZmluaXNoZXMKKyAgICAgICAgY2hlY2tpbmcgdGV4dCBzdWNjZXNzZnVsbHku
IFRoaXMgY2hhbmdlIHNwbGl0cyB0aGlzIGZ1bmN0aW9uIHRvIGRpZENoZWNrU3VjY2VlZGVkKCkK
KyAgICAgICAgYW5kICBkaWRDaGVja0NhbmNlbGVkKCkgc28gdGhlIFNwZWxsQ2hlY2tlciBjbGFz
cyBjYW4gZGVsZXRlIGV4aXN0aW5nIG1hcmtlcnMKKyAgICAgICAgd2hlbiBpdHMgY2xpZW50IGZp
bmlzaGVzIGNoZWNraW5nIHRleHQgc3VjY2Vzc2Z1bGx5LiAoV2UgZG8gbm90IGhhdmUgdG8gZXJh
c2UKKyAgICAgICAgZXhpc3RpbmcgbWFya2VycyB3aGVuIHRoZSBjbGllbnQgbmVlZHMgdG8gY2Fu
Y2VsIGEgdGV4dC1jaGVjayByZXF1ZXN0LikKKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9jaHJv
bWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAorCisgICAg
ICAgICogV2ViQ29yZS5leHAuaW46IFJlcGxhY2VkIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2sgd2l0
aCBTcGVsbENoZWNrZXI6OmRpZENoZWNrU3VjY2VlZGVkLgorICAgICAgICAqIGVkaXRpbmcvU3Bl
bGxDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tT
dWNjZWVkZWQpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
U3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVkKTogQWRkZWQuCisgICAgICAgICogZWRpdGlu
Zy9TcGVsbENoZWNrZXIuaDoKKyAgICAgICAgKFNwZWxsQ2hlY2tlcik6IEFkZGVkIGRpZENoZWNr
U3VjY2VlZGVkIGFuZCBkaWRDaGVja0NhbmNlbGVkLiBBbHNvIGNoYW5nZWQgZGlkQ2hlY2sgdG8g
YSBwcml2YXRlIGZ1bmN0aW9uLgorCiAyMDEyLTA0LTE4ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgY2FuQmVnaW5GcmFtZSBz
dGF0ZSB0byBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZSB0byBzdXBwcmVzcyBpbml0aWFsaXphdGlv
biBiZWZvcmUgb3VyIHN1cmZhY2UgaXMgYXZhaWxhYmxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTE0NjAwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTI3OSw3ICsyNzksNyBAQCBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZl
ckMxRVBLY2kKIF9fWk43V2ViQ29yZTEyU2hhcmVkQnVmZmVyQzFFUEtoaQogX19aTjdXZWJDb3Jl
MTJTaGFyZWRCdWZmZXJDMUV2CiBfX1pON1dlYkNvcmUxMlNoYXJlZEJ1ZmZlckQxRXYKLV9fWk43
V2ViQ29yZTEyU3BlbGxDaGVja2VyOGRpZENoZWNrRWlSS04zV1RGNlZlY3RvcklOU18xOFRleHRD
aGVja2luZ1Jlc3VsdEVMbTBFRUUKK19fWk43V2ViQ29yZTEyU3BlbGxDaGVja2VyMTdkaWRDaGVj
a1N1Y2NlZWRlZEVpUktOM1dURjZWZWN0b3JJTlNfMThUZXh0Q2hlY2tpbmdSZXN1bHRFTG0wRUVF
CiBfX1pON1dlYkNvcmUxMlRleHRFbmNvZGluZ0MxRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJD
b3JlMTJUZXh0SXRlcmF0b3IxMXJhbmdlTGVuZ3RoRVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29y
ZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRF
aWliCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNrZXIuY3BwCShyZXZpc2lv
biAxMTQ2MDApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE4OCw1ICsxODgsMjQgQEAgdm9pZCBTcGVsbENoZWNrZXI6OmRpZENo
ZWNrKGludCBzZXF1ZW5jZQogICAgICAgICBtX3RpbWVyVG9Qcm9jZXNzUXVldWVkUmVxdWVzdC5z
dGFydE9uZVNob3QoMCk7CiB9CiAKK3ZvaWQgU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRl
ZChpbnQgc2VxdWVuY2UsIGNvbnN0IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KQoreworICAgIGlmIChtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5zZXF1ZW5jZSgpID09IHNlcXVlbmNl
KSB7CisgICAgICAgIHVuc2lnbmVkIG1hcmtlcnMgPSAwOworICAgICAgICBpZiAobV9wcm9jZXNz
aW5nUmVxdWVzdC0+bWFzaygpICYgVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nKQorICAgICAgICAg
ICAgbWFya2VycyB8PSBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmc7CisgICAgICAgIGlmIChtX3By
b2Nlc3NpbmdSZXF1ZXN0LT5tYXNrKCkgJiBUZXh0Q2hlY2tpbmdUeXBlR3JhbW1hcikKKyAgICAg
ICAgICAgIG1hcmtlcnMgfD0gRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXI7CisgICAgICAgIGlmICht
YXJrZXJzKQorICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5yZW1v
dmVNYXJrZXJzKG1fcHJvY2Vzc2luZ1JlcXVlc3QtPmNoZWNraW5nUmFuZ2UoKS5nZXQoKSwgbWFy
a2Vycyk7CisgICAgfQorICAgIGRpZENoZWNrKHNlcXVlbmNlLCByZXN1bHRzKTsKK30KKwordm9p
ZCBTcGVsbENoZWNrZXI6OmRpZENoZWNrQ2FuY2VsZWQoaW50IHNlcXVlbmNlKQoreworICAgIFZl
Y3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgZGlkQ2hlY2soc2VxdWVuY2Us
IHJlc3VsdHMpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1NwZWxsQ2hlY2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxDaGVja2VyLmgJKHJldmlzaW9uIDExNDYwMCkKKysrIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvU3BlbGxDaGVja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDgg
QEAgcHVibGljOgogICAgIGJvb2wgaXNDaGVja2FibGUoUmFuZ2UqKSBjb25zdDsKIAogICAgIHZv
aWQgcmVxdWVzdENoZWNraW5nRm9yKFBhc3NSZWZQdHI8U3BlbGxDaGVja1JlcXVlc3Q+KTsKLSAg
ICB2b2lkIGRpZENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jl
c3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrU3VjY2VlZGVkKGludCBzZXF1ZW5jZSwgY29uc3Qg
VmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKyAgICB2b2lkIGRpZENoZWNrQ2FuY2VsZWQo
aW50IHNlcXVlbmNlKTsKIAogICAgIGludCBsYXN0UmVxdWVzdFNlcXVlbmNlKCkgY29uc3QKICAg
ICB7CkBAIC0xMDEsNiArMTAyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWRUb1By
b2Nlc3NRdWV1ZWRSZXF1ZXN0KFRpbWVyPFNwZWxsQ2hlY2tlcj4qKTsKICAgICB2b2lkIGludm9r
ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOwogICAgIHZvaWQgZW5xdWV1
ZVJlcXVlc3QoUGFzc1JlZlB0cjxTcGVsbENoZWNrUmVxdWVzdD4pOworICAgIHZvaWQgZGlkQ2hl
Y2soaW50IHNlcXVlbmNlLCBjb25zdCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpOwogCiAg
ICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgaW50IG1fbGFzdFJlcXVlc3RTZXF1ZW5jZTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2MDApCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDEyLTA0LTE4ICBIaXJvbm9yaSBCb25vICA8aGJvbm9AY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFNwbGl0IFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2soKSB0byBTcGVsbENoZWNrZXI6OmRpZENoZWNr
U3VjY2VlZGVkKCkgYW5kIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tDYW5jZWxlZCgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Mzc0OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFkZHMg
YSBuZXcgQVBJIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5nVGV4
dCgpLAorICAgICAgICB3aGljaCBlbmNhcHN1bGF0ZXMgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nh
bmNlbGVkKCkgYW5kIGltcGxlbWVudHMgaXQgc28KKyAgICAgICAgQ2hyb21pdW0gY2FuIHVzZSBp
dC4KKworICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb246OmRpZENhbmNlbENoZWNraW5n
VGV4dCk6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGw6OmRpZEZpbmlz
aENoZWNraW5nVGV4dCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkQ2FuY2VsQ2hlY2tpbmdUZXh0KToKKyAgICAg
ICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaDoKKyAgICAgICAgKFdlYlRl
eHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKToKKwogMjAxMi0wNC0xOCAgSmFtZXMgUm9iaW5zb24g
IDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQWRkIGNhbkJlZ2lu
RnJhbWUgc3RhdGUgdG8gQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUgdG8gc3VwcHJlc3MgaW5pdGlh
bGl6YXRpb24gYmVmb3JlIG91ciBzdXJmYWNlIGlzIGF2YWlsYWJsZQpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb24uaAkocmV2aXNpb24gMTE0NjAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBXZWJWZWN0b3I7CiBjbGFzcyBXZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoQ2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+Jikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKSB7IH07CiBwcm90
ZWN0ZWQ6CiAgICAgfldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24oKSB7IH0KIH07CkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbkltcGwuY3BwCShyZXZpc2lvbiAxMTQ2MDApCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDEzIEBAIHN0YXRpYyBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0
PiB0b0NvcmUKIAogdm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkRmluaXNo
Q2hlY2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQogewotICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVjayhtX2lkZW50aWZpZXIsIHRvQ29y
ZVJlc3VsdHMocmVzdWx0cykpOworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja1N1Y2NlZWRl
ZChtX2lkZW50aWZpZXIsIHRvQ29yZVJlc3VsdHMocmVzdWx0cykpOworICAgIGRlbGV0ZSB0aGlz
OworfQorCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsOjpkaWRDYW5jZWxDaGVj
a2luZ1RleHQoKQoreworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVja0NhbmNlbGVkKG1faWRl
bnRpZmllcik7CiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwu
aAkocmV2aXNpb24gMTE0NjAwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4
dENoZWNraW5nQ29tcGxldGlvbkltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBA
QCBwdWJsaWM6CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4
dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDYW5jZWxDaGVja2luZ1RleHQoKTsKIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5X
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCgpIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
cmV2aXNpb24gMTE0NjAwKQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDQtMTggIEhpcm9ub3JpIEJvbm8gIDxoYm9u
b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygp
IHRvIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgU3BlbGxDaGVja2VyOjpk
aWRDaGVja0NhbmNlbGVkKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTgzNzQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBjaGFuZ2UgcmVwbGFjZXMgYSBjYWxsIGZvciBTcGVsbENoZWNrZXI6OmRp
ZENoZWNrKCkgd2l0aCBvbmUgZm9yCisgICAgICAgIFNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkZWQoKSBiZWNhdXNlIGRpZENoZWNrIGhhcyBiZWVuIHNwbGl0IGludG8KKyAgICAgICAgZGlk
Q2hlY2tTdWNjZWVkZWQoMCBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJFZGl0b3JTcGVs
bENoZWNrUmVzcG9uZGVyIHBlcmZvcm1dKTogUmVwbGFjZWQgZGlkQ2hlY2sgd2l0aCBkaWRDaGVj
a1N1Y2NlZWRlZC4KKwogMjAxMi0wNC0xOCAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNv
bT4KIAogICAgICAgICBGdWxsIFNjcmVlbiBtb2RlIGRvZXMgbm90IHByZXNlcnZlIENBTGF5ZXIg
b3JkZXJpbmcgYWZ0ZXIgZXhpdGluZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0JKHJldmlzaW9uIDExNDYwMCkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTQxLDcgKzk0MSw3IEBAIC0gKGlkKWluaXRXaXRoU2VuZGVyOihXZWJD
b3JlOjpTcGVsbENoZWMKIAogLSAodm9pZClwZXJmb3JtCiB7Ci0gICAgX3NlbmRlci0+ZGlkQ2hl
Y2soX3NlcXVlbmNlLCBjb3JlKF9yZXN1bHRzLmdldCgpLCBfdHlwZXMpKTsKKyAgICBfc2VuZGVy
LT5kaWRDaGVja1N1Y2NlZWRlZChfc2VxdWVuY2UsIGNvcmUoX3Jlc3VsdHMuZ2V0KCksIF90eXBl
cykpOwogfQogCiBAZW5kCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTQ2MDApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wNC0xOCAgSGlyb25vcmkgQm9ubyAgPGhi
b25vQGNocm9taXVtLm9yZz4KKworICAgICAgICBTcGxpdCBTcGVsbENoZWNrZXI6OmRpZENoZWNr
KCkgdG8gU3BlbGxDaGVja2VyOjpkaWRDaGVja1N1Y2NlZWRlZCgpIGFuZCBTcGVsbENoZWNrZXI6
OmRpZENoZWNrQ2FuY2VsZWQoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODM3NDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZXBsYWNlcyBhIGNhbGwgZm9yIFNwZWxsQ2hlY2tlcjo6
ZGlkQ2hlY2soKSB3aXRoIG9uZSBmb3IKKyAgICAgICAgU3BlbGxDaGVja2VyOjpkaWRDaGVja0Nl
bmNlbGVkKCkgYmVjYXVzZSBkaWRDaGVjaygpIGhhcyBiZWVuIHNwbGl0IGludG8KKyAgICAgICAg
ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgZGlkQ2hlY2tDYW5jZWxlZCgpLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmll
d0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCk6IFJlcGxhY2VkIGRpZENoZWNrIHdpdGggZGlk
Q2hlY2tDYW5jZWxlZC4KKwogMjAxMi0wNC0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEpTQyB0ZXN0aW5nIHNob3VsZCBoYXZlIGNvbXBsZXRlIGNvdmVyYWdl
IG92ZXIgdHlwZWQgYXJyYXkgdHlwZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDExNDYwMCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU1
LDcgKzQ1NSw3IEBAIHZvaWQgV2ViVmlld0hvc3Q6OnJlcXVlc3RDaGVja2luZ09mVGV4dCgKIHsK
ICAgICBpZiAodGV4dC5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGNvbXBsZXRpb24pCi0gICAg
ICAgICAgICBjb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQoVmVjdG9yPFdlYlRleHRD
aGVja2luZ1Jlc3VsdD4oKSk7CisgICAgICAgICAgICBjb21wbGV0aW9uLT5kaWRDYW5jZWxDaGVj
a2luZ1RleHQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTE0NjAwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDQtMTggIEhpcm9ub3JpIEJvbm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgU3BsaXQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIHRvIFNwZWxsQ2hlY2tl
cjo6ZGlkQ2hlY2tTdWNjZWVkZWQoKSBhbmQgU3BlbGxDaGVja2VyOjpkaWRDaGVja0NhbmNlbGVk
KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzNzQ4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIGN1
cnJlbnQgU3BlbGxDaGVja2VyOjpkaWRDaGVjaygpIGRvZXMgbm90IGRlbGV0ZSBleGlzdGluZyBt
YXJrZXJzLiBJdCBjYXVzZXMKKyAgICAgICAgYSBwcm9ibGVtIHRoYXQgaXQgbGVhdmVzIG1pc3Nw
ZWxsZWQgbWFya2VycyB3aGVuIGEgc3BlbGxjaGVja2VyIGNsaWVudCBmaW5pc2hlcworICAgICAg
ICBjaGVja2luZyB0ZXh0IHN1Y2Nlc3NmdWxseS4gVGhpcyBjaGFuZ2Ugc3BsaXRzIHRoaXMgZnVu
Y3Rpb24gdG8gZGlkQ2hlY2tTdWNjZWVkZWQoKQorICAgICAgICBhbmQgIGRpZENoZWNrQ2FuY2Vs
ZWQoKSBzbyB0aGUgU3BlbGxDaGVja2VyIGNsYXNzIGNhbiBkZWxldGUgZXhpc3RpbmcgbWFya2Vy
cworICAgICAgICB3aGVuIGl0cyBjbGllbnQgZmluaXNoZXMgY2hlY2tpbmcgdGV4dCBzdWNjZXNz
ZnVsbHkuIChXZSBkbyBub3QgaGF2ZSB0byBlcmFzZQorICAgICAgICBleGlzdGluZyBtYXJrZXJz
IHdoZW4gdGhlIGNsaWVudCBuZWVkcyB0byBjYW5jZWwgYSB0ZXh0LWNoZWNrIHJlcXVlc3QuKQor
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlz
c3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWw6IEFkZGVk
LgorCiAyMDEyLTA0LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLCBHVEsgdGVzdF9leHBlY3RhdGlvbnMgdXBkYXRlLgpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUt
bWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9lZGl0aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorVGVzdCBpZiBDaHJvbWUgc3BlbGxjaGVja3Mg
YSB3b3JkIGFnYWluIHdoZW4gY2hhbmdpbmcgYSBtaXNzcGVsbGVkIHdvcmQuVG8gdGVzdCBtYW51
YWxseSwgdHlwZSBhIG1pc3NwZWxsZWQgd29yZCAienogIiBhbmQgdHlwZSBhIGJhY2tzcGFjZSBr
ZXkgdHdpY2UuVGhpcyB0ZXN0IHN1Y2NlZWRzIHdoZW4gInoiIGlzIG5vdCBtYXJrZWQgYXMgbWlz
c3BlbGxlZC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5zZXJ0VGV4
dCgieiIpOyBpbnNlcnRUZXh0KCJ6Iik7IGluc2VydFRleHQoIiAiKTsgaW50ZXJuYWxzLmhhc1Nw
ZWxsaW5nTWFya2VyKGRvY3VtZW50LCAwLCAyKSBpcyB0cnVlCitFbmFibGUgYXN5bmNocm9ub3Vz
IHNwZWxsY2hlY2tpbmcsIGRlbGV0ZSB0d28gY2hhcmFjdGVycywgYW5kIGluc2VydCBhIHNwYWNl
CitQQVNTIGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMSkgaXMgZmFs
c2UKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQoresKg
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGlu
Zy9kZWxldGUtbWlzc3BlbGxlZC13b3JkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vZWRpdGluZy9zcGVsbGluZy9kZWxldGUtbWlzc3BlbGxlZC13b3Jk
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9lZGl0
aW5nL3NwZWxsaW5nL2RlbGV0ZS1taXNzcGVsbGVkLXdvcmQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Li4vLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMgbGFuZ3VhZ2U9
ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8dGl0bGU+VGVz
dGluZyBtb3ZpbmcgY3Vyc29yIHRvIGEgbWlzc3BlbGxlZCB3b3JkPC90aXRsZT4gCis8L2hlYWQ+
IAorPGJvZHk+Cis8ZGl2IGlkPSJzcmMiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIgc3BlbGxjaGVj
az0idHJ1ZSI+PC9kaXY+PGJyLz4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZGVz
Y3JpcHRpb24oJ1Rlc3QgaWYgQ2hyb21lIHNwZWxsY2hlY2tzIGEgd29yZCBhZ2FpbiB3aGVuIGNo
YW5naW5nIGEgbWlzc3BlbGxlZCB3b3JkLicgKworICAgICAgICAgICAgJ1RvIHRlc3QgbWFudWFs
bHksIHR5cGUgYSBtaXNzcGVsbGVkIHdvcmQgInp6ICIgYW5kIHR5cGUgYSBiYWNrc3BhY2Uga2V5
IHR3aWNlLicgKworICAgICAgICAgICAgJ1RoaXMgdGVzdCBzdWNjZWVkcyB3aGVuICJ6IiBpcyBu
b3QgbWFya2VkIGFzIG1pc3NwZWxsZWQuJyk7CisKK2pzVGVzdElzQXN5bmMgPSB0cnVlOworCit2
YXIgbm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzcmMnKTsKK25vZGUuZm9jdXMoKTsK
K2Z1bmN0aW9uIGluc2VydFRleHQodGV4dCkgeworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRUZXh0IiwgZmFsc2UsIHRleHQpOworfQorc2hvdWxkQmVUcnVlKCdpbnNlcnRUZXh0KCJ6
Iik7IGluc2VydFRleHQoInoiKTsgaW5zZXJ0VGV4dCgiICIpOyBpbnRlcm5hbHMuaGFzU3BlbGxp
bmdNYXJrZXIoZG9jdW1lbnQsIDAsIDIpJyk7CisKK2RlYnVnKCdFbmFibGUgYXN5bmNocm9ub3Vz
IHNwZWxsY2hlY2tpbmcsIGRlbGV0ZSB0d28gY2hhcmFjdGVycywgYW5kIGluc2VydCBhIHNwYWNl
Jyk7CitsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKK2ludGVybmFscy5zZXR0aW5ncy5zZXRVbmlmaWVkVGV4dENoZWNraW5nRW5h
YmxlZCh0cnVlKTsKKworbGF5b3V0VGVzdENvbnRyb2xsZXIuZXhlY0NvbW1hbmQoIkRlbGV0ZUJh
Y2t3YXJkIik7CitsYXlvdXRUZXN0Q29udHJvbGxlci5leGVjQ29tbWFuZCgiRGVsZXRlQmFja3dh
cmQiKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRUZXh0IiwgZmFsc2UsICcgJyk7CisK
K3ZhciByZXRyeUNvdW50ID0gMTA7CitmdW5jdGlvbiB2ZXJpZnlNYXJrZXIoKSB7CisgICAgdmFy
IGhhc01hcmtlciA9IGludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihkb2N1bWVudCwgMCwgMSk7
CisgICAgaWYgKGhhc01hcmtlciAmJiAtLXJldHJ5Q291bnQgPiAwKSB7CisgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgc2xlZXBQZXJpb2QpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHNob3VsZEJlRmFsc2UoJ2ludGVybmFscy5oYXNTcGVsbGluZ01hcmtlcihk
b2N1bWVudCwgMCwgMSknKTsKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0VW5pZmllZFRleHRD
aGVja2luZ0VuYWJsZWQoZmFsc2UpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGZhbHNlKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KK3dpbmRvdy5zZXRUaW1lb3V0KHZlcmlmeU1hcmtlciwgMSk7Cis8L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>