<?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>53696</bug_id>
          
          <creation_ts>2011-02-03 11:03:28 -0800</creation_ts>
          <short_desc>Caret is rendered at an incorrect position at the boundary of Arabic number in a LTR context</short_desc>
          <delta_ts>2011-04-06 10:35:34 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</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>
          
          <blocked>49111</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>adele</cc>
    
    <cc>darin</cc>
    
    <cc>ddavidso</cc>
    
    <cc>hyatt</cc>
    
    <cc>leviw</cc>
    
    <cc>mitz</cc>
    
    <cc>playmobil</cc>
    
    <cc>xji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>344852</commentid>
    <comment_count>0</comment_count>
      <attachid>81089</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 11:03:28 -0800</bug_when>
    <thetext>Created attachment 81089
demo

In the attachment, offset 2 is rendered on the right of Arabic numbers but it should be rendered on the left of Arabic numbers (between Arabic text and Arabic numbers).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345180</commentid>
    <comment_count>1</comment_count>
      <attachid>81148</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 17:06:17 -0800</bug_when>
    <thetext>Created attachment 81148
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345192</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-03 17:14:12 -0800</bug_when>
    <thetext>This bug seems to caused by Position::getInlineBoxAndOffset.  One bug was that in tertiary run cases, we were using the opposite offsets.  When we&apos;re on the right edge and setting to the left edge of that run, we must be setting to the right edge of the previous leaf child.

The other but is in the case of inlineBox-&gt;direction() == primaryDirection.  We weren&apos;t considering next/previous leaf children with a higher bidi-level when previous/leaf leaf children were not present.  But I&apos;m less confident about that fix.

Dan, Xiaomei, could you take a look at my work in progress patch and do the sanity check?

I don&apos;t know how to test all the edges though.  It seems like I must be adding 10-20 pixel tests because there seems to be no way of obtaining the caret position from JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345650</commentid>
    <comment_count>3</comment_count>
      <attachid>81256</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-04 11:40:48 -0800</bug_when>
    <thetext>Created attachment 81256
work in progress 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345902</commentid>
    <comment_count>4</comment_count>
      <attachid>81317</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-04 16:29:32 -0800</bug_when>
    <thetext>Created attachment 81317
fix the bug (hopefully correct)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345909</commentid>
    <comment_count>5</comment_count>
      <attachid>81318</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-04 16:33:01 -0800</bug_when>
    <thetext>Created attachment 81318
fix the bug (removed eol-style changes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345924</commentid>
    <comment_count>6</comment_count>
      <attachid>81318</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-04 16:52:07 -0800</bug_when>
    <thetext>Comment on attachment 81318
fix the bug (removed eol-style changes)

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

&gt; Source/WebCore/dom/Position.cpp:1126
&gt; -            if (!nextBox || nextBox-&gt;bidiLevel() &gt;= level)
&gt; +            if (nextBox &amp;&amp; nextBox-&gt;bidiLevel() &gt;= level)
&gt;                  return;
&gt;  
&gt; +            if (!nextBox) {
&gt; +                InlineBox* prevBox = inlineBox;
&gt; +                do {
&gt; +                    if (prevBox-&gt;bidiLevel() &lt; level) {
&gt; +                        inlineBox = prevBox;
&gt; +                        caretOffset = inlineBox-&gt;caretRightmostOffset();
&gt; +                        break;
&gt; +                    }
&gt; +                    prevBox = prevBox-&gt;prevLeafChild();
&gt; +                } while (prevBox);
&gt; +                return;
&gt; +            }
&gt; +

I&apos;m not confident about this change.  I think it makes sense but I might be missing some cases since I&apos;m not that familiar with this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>355753</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-22 18:46:44 -0800</bug_when>
    <thetext>Hi, could someone review my patch or give me some feedback?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356296</commentid>
    <comment_count>8</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-23 12:11:36 -0800</bug_when>
    <thetext>Going to take a look at this today.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356383</commentid>
    <comment_count>9</comment_count>
      <attachid>81318</attachid>
    <who name="">mitz</who>
    <bug_when>2011-02-23 13:48:38 -0800</bug_when>
    <thetext>Comment on attachment 81318
fix the bug (removed eol-style changes)

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

&gt; Source/WebCore/dom/Position.cpp:1123
&gt; +                InlineBox* prevBox = inlineBox;
&gt; +                do {
&gt; +                    if (prevBox-&gt;bidiLevel() &lt; level) {
&gt; +                        inlineBox = prevBox;
&gt; +                        caretOffset = inlineBox-&gt;caretRightmostOffset();
&gt; +                        break;
&gt; +                    }
&gt; +                    prevBox = prevBox-&gt;prevLeafChild();
&gt; +                } while (prevBox);

Is there a reason not to write this as a for() loop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356392</commentid>
    <comment_count>10</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-23 13:56:19 -0800</bug_when>
    <thetext>The current behavior in attachment 81089 matches the behavior of NSTextView in Mac OS X 10.6. Why do you deem it incorrect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356452</commentid>
    <comment_count>11</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-02-23 15:00:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; The current behavior in attachment 81089 [details] matches the behavior of NSTextView in Mac OS X 10.6. Why do you deem it incorrect?

It is not possible to place cursor between the Arabic letters and Arabic numbers in current behavior. Is it normal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356456</commentid>
    <comment_count>12</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-23 15:05:24 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; The current behavior in attachment 81089 [details] [details] matches the behavior of NSTextView in Mac OS X 10.6. Why do you deem it incorrect?
&gt; 
&gt; It is not possible to place cursor between the Arabic letters and Arabic numbers in current behavior. Is it normal?

I am not sure what exactly “normal” means. Not being able to place the cursor between the letters and the numerals is a difference between WebKit and AppKit’s NSTextView. In NSTextView, the caret renders between the letters and the numerals when it’s at offset 0 (i.e. before the numerals).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356460</commentid>
    <comment_count>13</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-23 15:07:28 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; (In reply to comment #10)
&gt; &gt; &gt; The current behavior in attachment 81089 matches the behavior of NSTextView in Mac OS X 10.6. Why do you deem it incorrect?
&gt; &gt; 
&gt; &gt; It is not possible to place cursor between the Arabic letters and Arabic numbers in current behavior. Is it normal?
&gt; 
&gt; I am not sure what exactly “normal” means. Not being able to place the cursor between the letters and the numerals is a difference between WebKit and AppKit’s NSTextView. In NSTextView, the caret renders between the letters and the numerals when it’s at offset 0 (i.e. before the numerals).

I guess this sounds like a contradiction. I should clarify that comment #10 was about where the cursor is rendered when it’s at offset 2, and not about the entire test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356568</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 17:04:53 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; The current behavior in attachment 81089 [details] matches the behavior of NSTextView in Mac OS X 10.6. Why do you deem it incorrect?

The problem is that both offsets 2 and 4 correspond to the rightmost location visually, and there&apos;s no logical offset that corresponds to the location between Arabic letters and numbers.

Of offsets 2 and 4, offset 4 is the one that needs to be on the rightmost location because we&apos;re in a LTR block and the location is at the end of a RTL run.  Offset 2 must be between the letters and the numbers (i.e. on the left of a LTR run of Arabic numbers) because it&apos;s at the end of a LTR run inside a RTL run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356599</commentid>
    <comment_count>15</comment_count>
      <attachid>83593</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 17:52:07 -0800</bug_when>
    <thetext>Created attachment 83593
Rewrote while loops as for loops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356601</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 17:52:53 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 81318 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81318&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Position.cpp:1123
&gt; &gt; +                InlineBox* prevBox = inlineBox;
&gt; &gt; +                do {
&gt; &gt; +                    if (prevBox-&gt;bidiLevel() &lt; level) {
&gt; &gt; +                        inlineBox = prevBox;
&gt; &gt; +                        caretOffset = inlineBox-&gt;caretRightmostOffset();
&gt; &gt; +                        break;
&gt; &gt; +                    }
&gt; &gt; +                    prevBox = prevBox-&gt;prevLeafChild();
&gt; &gt; +                } while (prevBox);
&gt; 
&gt; Is there a reason not to write this as a for() loop?

Very good point.  Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356603</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 17:55:53 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; It is not possible to place cursor between the Arabic letters and Arabic numbers in current behavior. Is it normal?
&gt; 
&gt; I am not sure what exactly “normal” means. Not being able to place the cursor between the letters and the numerals is a difference between WebKit and AppKit’s NSTextView. In NSTextView, the caret renders between the letters and the numerals when it’s at offset 0 (i.e. before the numerals).

Ah, that&apos;s interesting.  NSTextView seems to follow Firefox/Internet Explorer convention then.  For WebKit, we can&apos;t use offset 0 to mean the location between the letters and the numbers because the offset 0 corresponds and only corresponds to the leftmost boundary of the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356606</commentid>
    <comment_count>18</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-23 17:59:18 -0800</bug_when>
    <thetext>(In reply to comment #17)
 
&gt;  For WebKit, we can&apos;t use offset 0 to mean the location between the letters and the numbers because the offset 0 corresponds and only corresponds to the leftmost boundary of the line.

I don’t understand this explanation (or maybe it’s not an explanation?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>356609</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-23 18:12:16 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; 
&gt; &gt;  For WebKit, we can&apos;t use offset 0 to mean the location between the letters and the numbers because the offset 0 corresponds and only corresponds to the leftmost boundary of the line.
&gt; 
&gt; I don’t understand this explanation (or maybe it’s not an explanation?).

Let me try again.  So in WebKit, we use the convention that the offsets at the boundary of a run follows the direction of the surrounding run.  For example, if we have CBA (RTL text) in a LTR run, then we have offsets as (0)C(2)B(1)A(3) while we have natural (3)C(2)B(1)A(0) if it were to appear in a RTL run.

Now, the text in question is CBAabc.  Since &quot;abc&quot; is inside a RTL run of CBA, offsets at the boundaries follows RTL conventions as in (3)a(1)b(2)c(0).  However, the outer RTL run is in a LTR block, which means offset at the boundary of the RTL run has to follow LTR convention of the outer block hence we have: (0)CBA(3)a(1)b(2)c.  Now because CBA(abc) is a RTL run inside a LTR block, the offsets at its boundary follows LTR convention, resulting in (0)C(5)B(4)A(3)a(1)b(2)c(6).

Does this make sense?  Or am I misunderstanding something?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357071</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-24 09:15:40 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; (In reply to comment #17)
&gt; &gt; 
&gt; &gt; &gt;  For WebKit, we can&apos;t use offset 0 to mean the location between the letters and the numbers because the offset 0 corresponds and only corresponds to the leftmost boundary of the line.
&gt; &gt; 
&gt; &gt; I don’t understand this explanation (or maybe it’s not an explanation?).
&gt; 
&gt; Let me try again.  So in WebKit, we use the convention that the offsets at the boundary of a run follows the direction of the surrounding run.

Perhaps this is the wrong “convention” to use in this case. What the code currently does was arrived at, I think, through trying to match the native text system. If I or someone else got some cases wrong, then that should be fixed. There is no apparent reason to diverge from the native behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357582</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-24 16:59:21 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Perhaps this is the wrong “convention” to use in this case. What the code currently does was arrived at, I think, through trying to match the native text system. If I or someone else got some cases wrong, then that should be fixed. There is no apparent reason to diverge from the native behavior.

Mn... what is the right convention to use in this case then?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357592</commentid>
    <comment_count>22</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-24 17:15:39 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; Perhaps this is the wrong “convention” to use in this case. What the code currently does was arrived at, I think, through trying to match the native text system. If I or someone else got some cases wrong, then that should be fixed. There is no apparent reason to diverge from the native behavior.
&gt; 
&gt; Mn... what is the right convention to use in this case then?

In this case, NSTextView maps offset 0 to the position between the letters and the numerals. I don’t know yet what the general principle is, nor whether this is a bug. I am going to try to find out more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357616</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-24 18:10:40 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #21)
&gt; &gt; Mn... what is the right convention to use in this case then?
&gt; 
&gt; In this case, NSTextView maps offset 0 to the position between the letters and the numerals. I don’t know yet what the general principle is, nor whether this is a bug. I am going to try to find out more.

Ok, thanks!  Is there some application I can use to test NSTextView behavior myself?  In particular, how do I know which offset corresponds to which insertion point location?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357657</commentid>
    <comment_count>24</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-02-24 19:24:24 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (In reply to comment #22)
&gt; &gt; (In reply to comment #21)
&gt; &gt; &gt; Mn... what is the right convention to use in this case then?
&gt; &gt; 
&gt; &gt; In this case, NSTextView maps offset 0 to the position between the letters and the numerals. I don’t know yet what the general principle is, nor whether this is a bug. I am going to try to find out more.
&gt; 
&gt; Ok, thanks!  Is there some application I can use to test NSTextView behavior myself? 

Yes, TextEdit. Make sure to explicitly set the paragraph direction, since the default is “automatic” (natural). Also, it’s less confusing if you disable the split caret in International &amp; Text preferences.

&gt; In particular, how do I know which offset corresponds to which insertion point location?

I usually just press Return to insert a newline to see where I was :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358893</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-02-27 22:05:41 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #23)
&gt; &gt; In particular, how do I know which offset corresponds to which insertion point location?
&gt; 
&gt; I usually just press Return to insert a newline to see where I was :)

Using this method, I found that the caret is at offset 2 if the text direction is explicitly set to RTL but it&apos;s at offset 0 if the text direction is explicitly set to LTR.

Now, if I set the text direction to LTR, and put the caret on the rightmost boundary by clicking on the far right of the text, then the split caret shows up on the upper rightmost corner and the lower leftmost corner.  If I then press left key (assuming selection is on default mode), then the lower caret moves to the boundary between arabic letters and numerals.  And pressing enter here results in inserting \n at offset 2 as well.  And this lower caret is what I was trying to implement.

Now, TextEdit seems to have various insertion point bugs with this particular input.  In particular, putting the insertion point between alphabet and numeral, and then moving to the left results in infinite loop on the single letter ‎ر.  Given that I&apos;m not even sure if we should try to mimic TextEdit or NSTextView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362275</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-03 22:20:10 -0800</bug_when>
    <thetext>Hi Dan,

I tested TextEdit&apos;s behavior by your method and it seems that TextEdit follows Firefox / Internet Explorer&apos;s offset behavior here: (4)B(3)A(0)1(1)2(2).  But even WebKit follows this convention when inserting new line because the enclosing block in this case is LTR.

One potential problem with this research method is the location at which character is inserted/removed depends on the natural direction of the character and the direction of the enclosing block.  For example, if I change the direction of the document to RTL, then the apparent offsets on TextEdit change to (4)B(3)A(2)1(1)2(0).

Anyway, if you think we should align WebKit&apos;s behavior to that of TextEdit, then it seems like we need to reopen and fix https://bugs.webkit.org/show_bug.cgi?id=52176.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363751</commentid>
    <comment_count>27</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-07 18:41:23 -0800</bug_when>
    <thetext>After some discussion with Xiaomei, I&apos;m little more convinced that my current approach (at least offset assignments) is indeed correct.  We considered several possibilites for offsets in CBA123 (arabic numbers followed by arabic letters in a LTR block) here:

First, the following is the offsets assigned by Firefox/IE.
Internet Explorer: (0)(1)(7)C(6)B(5)A(4)1(2)2(3)3
Firefox: (0)(7)C(6)B(5)A(1)(4)1(2)2(3)3

Note that neither assignments seem ideal in this case and both of them have offset 7 even though there are only 6 letters.  Now, let us consider 4 offset assignments:

(0)C(5)B(4)A(1)1(2)2(3)3(6) - The offsets between ABC contradict with those of Firefox/IE.  Also it&apos;s odd that even though (1) corresponds to the position before 2 but it appears between A and 1.

(0)C(6)B(5)A(1)1(2)2(3)3(4) - This is a little better in that offsets between CBA match with those of Firefox/IE.

(6)C(5)B(4)A(0)1(1)2(2)3(3) - This is similar to what TextEdit, Firefox, Internet Explorer does but contradicts with the offset assignments in WebKit when CBA appeared in a LTR block: (0)C(2)B(1)A(3).  Also, the offsets between ABC contradict with those of Firefox/IE.

(0)C(5)B(4)A(3)1(1)2(2)3(6) - This is similar to the above but all offsets except (0) and (6) flows in the same order as those of Firefox and Internet Explorer except (1) and we&apos;re off by 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363757</commentid>
    <comment_count>28</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-03-07 18:58:07 -0800</bug_when>
    <thetext>I think we need the general principal here so that the visible positions are anticipated, if not able to be standardized.

For example, given a LTR box inside a LTR block.

There are 9 basic scenarios considering the box&apos;s surrounding box&apos;s directionality:

xLx (x menas NULL box).
xLL
xLR

LLx
LLL
LLR

RLx
RLL
RLR

In each scenario, how the visible positions should be laid out when surrounding boxes&apos; bidi level is same as/less/greater than the box.

Same for a RTL box in LTR block, LTR/RTL box in RTL block.

Then, can the rule be generalized?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376996</commentid>
    <comment_count>29</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-31 02:05:30 -0700</bug_when>
    <thetext>After long attempts to fix this bug, I figured out that our current behavior matches NSTextView.  So this bug is actually invalid.  We need to implement split caret / hinted-caret on Mac / non-Mac in order to allow carets between letters.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>380576</commentid>
    <comment_count>30</comment_count>
      <attachid>83593</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-04-06 10:35:34 -0700</bug_when>
    <thetext>Comment on attachment 83593
Rewrote while loops as for loops

Cleared review? from attachment 83593 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>81089</attachid>
            <date>2011-02-03 11:03:28 -0800</date>
            <delta_ts>2011-02-03 11:03:28 -0800</delta_ts>
            <desc>demo</desc>
            <filename>rtl-in-ltr.html</filename>
            <type>text/html</type>
            <size>1164</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgo8L2hlYWQ+Cjxib2R5Pgo8
cD5UaGlzIHRlc3RzIGNhcmV0IHJlbmRlcmluZyBmb3IgYXJhYmljIG51bWVyYWwgaW4gYSBMVFIg
YmxvY2suPC9wPgo8ZGl2IGlkPSJ0ZXN0IiBkaXI9Imx0ciIgb25tb3VzZXVwPSJsb2coKSIgb25r
ZXl1cD0ibG9nKCkiIGNvbnRlbnRlZGl0YWJsZT7Zodmh2LHYszwvZGl2Pgo8cHJlIGlkPSJsb2ci
PjwvcHJlPgo8c2NyaXB0PgoKdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dCcpOwp2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwp0ZXN0LmZvY3VzKCk7
CgpmdW5jdGlvbiBtb3ZlQ2FyZXQob2Zmc2V0KSB7CiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5j
cmVhdGVSYW5nZSgpOwogICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwogICAgcmFuZ2Uu
c2V0U3RhcnQodGVzdC5maXJzdENoaWxkLCBvZmZzZXQpOwogICAgcmFuZ2Uuc2V0RW5kKHRlc3Qu
Zmlyc3RDaGlsZCwgb2Zmc2V0KTsKICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7CiAgICBs
b2coKTsKfQoKc2V0VGltZW91dChmdW5jdGlvbigpIHttb3ZlQ2FyZXQoMCk7fSwgMCk7CnNldFRp
bWVvdXQoZnVuY3Rpb24oKSB7bW92ZUNhcmV0KDEpO30sIDEwMDApOwpzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkge21vdmVDYXJldCgyKTt9LCAyMDAwKTsKc2V0VGltZW91dChmdW5jdGlvbigpIHttb3Zl
Q2FyZXQoMyk7fSwgMzAwMCk7CnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7bW92ZUNhcmV0KDQpO30s
IDQwMDApOwoKZnVuY3Rpb24gbG9nKCkgewogICAgaWYgKHNlbGVjdGlvbi5pc0NvbGxhcHNlZCkK
ICAgICAgICByZXN1bHQgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5zdGFydE9mZnNldDsKICAg
IGVsc2UKICAgICAgICByZXN1bHQgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5zdGFydE9mZnNl
dCArICcsICcgKyBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5lbmRPZmZzZXQ7CiAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbG9nJykuaW5uZXJIVE1MICs9IHJlc3VsdCArICdcbic7Cn0KCjwv
c2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81148</attachid>
            <date>2011-02-03 17:06:17 -0800</date>
            <delta_ts>2011-02-04 11:40:45 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-53696-20110203170616.patch</filename>
            <type>text/plain</type>
            <size>3263</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0
aW9uIGF0IHRoZSBib3VuZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldCk6CisK
IDIwMTEtMDItMDMgIEJyaWFuIFNhbG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCShyZXZpc2lvbiA3NzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMDgsOCArMTEwOCwxOCBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJ
bmxpbmVCb3hBbmRPZmZzZXQoRUFmCiAgICAgaWYgKGlubGluZUJveC0+ZGlyZWN0aW9uKCkgPT0g
cHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICBpZiAoY2FyZXRPZmZzZXQgPT0gaW5saW5lQm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKSB7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIG5leHRC
b3ggPSBpbmxpbmVCb3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAgICAgICAgIGlmICghbmV4dEJv
eCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAgICAgIGlmICghbmV4
dEJveCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkgeworICAgICAgICAgICAgICAg
IElubGluZUJveCogcHJldkJveCA9IGlubGluZUJveDsKKyAgICAgICAgICAgICAgICBkbyB7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChwcmV2Qm94LT5iaWRpTGV2ZWwoKSA8IGxldmVsKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBpbmxpbmVCb3ggPSBwcmV2Qm94OworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBwcmV2Qm94ID0gcHJldkJveC0+cHJldkxlYWZDaGlsZCgp
OworICAgICAgICAgICAgICAgIH0gd2hpbGUgKHByZXZCb3gpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV2ZWwgPSBuZXh0Qm94LT5iaWRp
TGV2ZWwoKTsKICAgICAgICAgICAgIElubGluZUJveCogcHJldkJveCA9IGlubGluZUJveDsKQEAg
LTExMjksOCArMTEzOSwxOCBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQo
RUFmCiAgICAgICAgICAgICBjYXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRSaWdodG1vc3RP
ZmZzZXQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIElubGluZUJveCogcHJldkJv
eCA9IGlubGluZUJveC0+cHJldkxlYWZDaGlsZCgpOwotICAgICAgICAgICAgaWYgKCFwcmV2Qm94
IHx8IHByZXZCb3gtPmJpZGlMZXZlbCgpID49IGxldmVsKQorICAgICAgICAgICAgaWYgKCFwcmV2
Qm94IHx8IHByZXZCb3gtPmJpZGlMZXZlbCgpID49IGxldmVsKSB7CisgICAgICAgICAgICAgICAg
SW5saW5lQm94KiBuZXh0Qm94ID0gaW5saW5lQm94OworICAgICAgICAgICAgICAgIGRvIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG5leHRCb3gtPmJpZGlMZXZlbCgpIDwgbGV2ZWwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlubGluZUJveCA9IG5leHRCb3g7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjYXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgp
OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgbmV4dEJveCA9IG5leHRCb3gtPm5leHRMZWFmQ2hpbGQoKTsK
KyAgICAgICAgICAgICAgICB9IHdoaWxlIChuZXh0Qm94KTsKICAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxldmVsID0gcHJldkJveC0+YmlkaUxl
dmVsKCk7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIG5leHRCb3ggPSBpbmxpbmVCb3g7CkBAIC0x
MTY4LDcgKzExODgsNyBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFm
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlubGluZUJveCA9
IHRlcnRpYXJ5Qm94OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBp
bmxpbmVCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKKyAgICAgICAgICAgIGNhcmV0T2Zmc2V0
ID0gaW5saW5lQm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgSW5saW5lQm94KiBuZXh0Qm94ID0gaW5saW5lQm94LT5uZXh0TGVhZkNo
aWxkKCk7CkBAIC0xMTg3LDcgKzEyMDcsNyBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hB
bmRPZmZzZXQoRUFmCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IGlubGluZUJveCA9IHRlcnRpYXJ5Qm94OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2Fy
ZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7CisgICAgICAgICAg
ICBjYXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOwogICAgICAg
ICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81256</attachid>
            <date>2011-02-04 11:40:48 -0800</date>
            <delta_ts>2011-02-04 16:29:29 -0800</delta_ts>
            <desc>work in progress 2</desc>
            <filename>bug-53696-20110204114047.patch</filename>
            <type>text/plain</type>
            <size>4029</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NTY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDItMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0
aW9uIGF0IHRoZSBib3VuZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzLiAoT09QUyEpCisKKyAgICAgICAgKiBkb20vUG9zaXRpb24uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldCk6CisK
IDIwMTEtMDItMDMgIEJyaWFuIFNhbG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L1Bvc2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24u
Y3BwCShyZXZpc2lvbiA3NzUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMDgsOCArMTEwOCwyMSBAQCB2b2lkIFBvc2l0aW9uOjpnZXRJ
bmxpbmVCb3hBbmRPZmZzZXQoRUFmCiAgICAgaWYgKGlubGluZUJveC0+ZGlyZWN0aW9uKCkgPT0g
cHJpbWFyeURpcmVjdGlvbikgewogICAgICAgICBpZiAoY2FyZXRPZmZzZXQgPT0gaW5saW5lQm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpKSB7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIG5leHRC
b3ggPSBpbmxpbmVCb3gtPm5leHRMZWFmQ2hpbGQoKTsKLSAgICAgICAgICAgIGlmICghbmV4dEJv
eCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAgICAgIGlmICghbmV4
dEJveCB8fCBuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkgeworICAgICAgICAgICAgICAg
IGlmIChuZXh0Qm94KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
ICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVCb3g7CisgICAgICAgICAgICAgICAgZG8g
eworICAgICAgICAgICAgICAgICAgICBpZiAocHJldkJveC0+YmlkaUxldmVsKCkgPCBsZXZlbCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQm94ID0gcHJldkJveDsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldFJpZ2h0bW9zdE9m
ZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJldkJveCA9IHByZXZCb3gtPnByZXZMZWFmQ2hp
bGQoKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChwcmV2Qm94KTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGxldmVsID0gbmV4dEJveC0+
YmlkaUxldmVsKCk7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVCb3g7
CkBAIC0xMTI5LDggKzExNDIsMjEgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zm
c2V0KEVBZgogICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRt
b3N0T2Zmc2V0KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIHBy
ZXZCb3ggPSBpbmxpbmVCb3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAgICAgICAgIGlmICghcHJl
dkJveCB8fCBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAgICAgIGlmICgh
cHJldkJveCB8fCBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkgeworICAgICAgICAgICAg
ICAgIGlmIChwcmV2Qm94KQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAgICAgICBJbmxpbmVCb3gqIG5leHRCb3ggPSBpbmxpbmVCb3g7CisgICAgICAgICAgICAgICAg
ZG8geworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEJveC0+YmlkaUxldmVsKCkgPCBsZXZl
bCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQm94ID0gbmV4dEJveDsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldExlZnRtb3N0
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICBuZXh0Qm94ID0gbmV4dEJveC0+bmV4dExlYWZD
aGlsZCgpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKG5leHRCb3gpOwogICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV2ZWwgPSBwcmV2Qm94
LT5iaWRpTGV2ZWwoKTsKICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGlubGluZUJv
eDsKQEAgLTExNjQsMTEgKzExOTAsMTEgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5k
T2Zmc2V0KEVBZgogICAgICAgICB9IGVsc2UgaWYgKHByZXZCb3gtPmJpZGlMZXZlbCgpID4gbGV2
ZWwpIHsKICAgICAgICAgICAgIC8vIFJpZ2h0IGVkZ2Ugb2YgYSAidGVydGlhcnkiIHJ1bi4gU2V0
IHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhhdCBydW4uCiAgICAgICAgICAgICB3aGlsZSAoSW5saW5l
Qm94KiB0ZXJ0aWFyeUJveCA9IGlubGluZUJveC0+cHJldkxlYWZDaGlsZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRlcnRpYXJ5Qm94LT5iaWRpTGV2ZWwoKSA8PSBsZXZlbCkKKyAgICAgICAg
ICAgICAgICBpZiAodGVydGlhcnlCb3gtPmJpZGlMZXZlbCgpIDwgbGV2ZWwpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlubGluZUJveCA9IHRlcnRpYXJ5Qm94
OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNh
cmV0TGVmdG1vc3RPZmZzZXQoKTsKKyAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgSW5saW5lQm94KiBuZXh0Qm94ID0gaW5saW5lQm94LT5uZXh0TGVhZkNoaWxkKCk7CkBAIC0x
MTgzLDExICsxMjA5LDExIEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChF
QWYKICAgICAgICAgfSBlbHNlIGlmIChuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+IGxldmVsKSB7CiAg
ICAgICAgICAgICAvLyBMZWZ0IGVkZ2Ugb2YgYSAidGVydGlhcnkiIHJ1bi4gU2V0IHRvIHRoZSBy
aWdodCBlZGdlIG9mIHRoYXQgcnVuLgogICAgICAgICAgICAgd2hpbGUgKElubGluZUJveCogdGVy
dGlhcnlCb3ggPSBpbmxpbmVCb3gtPm5leHRMZWFmQ2hpbGQoKSkgewotICAgICAgICAgICAgICAg
IGlmICh0ZXJ0aWFyeUJveC0+YmlkaUxldmVsKCkgPD0gbGV2ZWwpCisgICAgICAgICAgICAgICAg
aWYgKHRlcnRpYXJ5Qm94LT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgICBpbmxpbmVCb3ggPSB0ZXJ0aWFyeUJveDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldFJpZ2h0
bW9zdE9mZnNldCgpOworICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0
TGVmdG1vc3RPZmZzZXQoKTsKICAgICAgICAgfQogICAgIH0KIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81317</attachid>
            <date>2011-02-04 16:29:32 -0800</date>
            <delta_ts>2011-02-04 16:32:58 -0800</delta_ts>
            <desc>fix the bug (hopefully correct)</desc>
            <filename>bug-53696-20110204162931.patch</filename>
            <type>text/plain</type>
            <size>17064</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NjkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMDQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0
aW9uIGF0IHRoZSBib3VuZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAg
ICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZz
ZXQncyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IGlubGluZSBib3ggYW5kIG9mZnNldC4KKwor
ICAgICAgICBXaGVuIHRoZSBvZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZSBvZiB0aGUgY3VycmVu
dCBpbmxpbmUgYm94IGFuZCBvbiB0aGUgcmlnaHQgZWRnZSBvZiBhIHRlcnRpYXJ5IHJ1biwKKyAg
ICAgICAgd2UgbXVzdCByZXR1cm4gYW4gaW5saW5lIGJveCB3aXRoIGEgQmlEaSBlbWJlZGRpbmcg
bGV2ZWwgbG93ZXIgdGhhbiB0aGF0IG9mIHRoZSBjdXJyZW50IGVtYmVkZGluZyBsZXZlbCwKKyAg
ICAgICAgYW5kIGtlZXAgbG9va2luZyBmb3IgYW4gaW5saW5lIGJveCB3aGVuIHRoZSBlbWJlZGRp
bmcgbGV2ZWwgaXMgdGhlIHNhbWUuIEFsc28sIHdlIG11c3QgcmV0dXJuIHRoZSByaWdodG1vc3QK
KyAgICAgICAgb2Zmc2V0IG9mIHRoZSBpbmxpbmUgYm94IGluIHN1Y2ggY2FzZS4gV2hlbiB0aGUg
b2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2Ugb2YgYSB0ZXJ0aWFyeSBydW4sIHRoZSBiZWhhdmlv
cgorICAgICAgICBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgV2hlbiB0aGUgY3VycmVudCBpbmxp
bmUgYm94J3MgZGlyZWN0aW9uIG1hdGNoZXMgdGhhdCBvZiB0aGUgcHJpbWFyeSBkaXJlY3Rpb24s
IHRoZSBvZmZzZXQgaXMgb24gdGhlIHJpZ2h0CisgICAgICAgIGVkZ2Ugb2YgdGhlIGN1cnJlbnQg
aW5saW5lIGJveCwgYW5kIHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24gdGhlIHJpZ2h0LCB0aGlz
IG9mZnNldCBtYXkgY29ycmVzcG9uZCB0bworICAgICAgICB3ZSBtaWdodCBiZSBhdCB0aGUgZWRn
ZSBvZiBhIHRlcnRpYXJ5IHJ1biwgaW4gd2hpY2ggY2FzZSB0aGUgcG9zaXRpb24gaXMgb24gdGhl
IGxlZnQgZWRnZSBvZiB0aGUgY3VycmVudCBydW4uCisgICAgICAgIFNvIGxvb2sgZm9yIGFuIGlu
bGluZSB0ZXh0IGJveCB3aXRoIGEgbG93ZXIgQmlEaSBlbWJlZGRpbmcgbGV2ZWwgb24gdGhlIGxl
ZnQgYW5kIGlmIGV4aXN0cywgcmV0dXJuCisgICAgICAgIHRoZSByaWdodG1vc3Qgb2Zmc2V0IG9m
IHRoYXQgaW5saW5lIGJveC4gV2hlbiB0aGUgb2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2UgYW5k
IHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24KKyAgICAgICAgdGhlIGxlZnQsIHRoZSBiZWhhdmlv
ciBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLmh0bWwKKyAgICAgICAgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4t
cnRsLmh0bWwKKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KToKKwogMjAxMS0wMi0wNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDc3NTAzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwOCw5
ICsxMTA4LDIyIEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWYKICAg
ICBpZiAoaW5saW5lQm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAg
ICAgIGlmIChjYXJldE9mZnNldCA9PSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkp
IHsKICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGlubGluZUJveC0+bmV4dExlYWZD
aGlsZCgpOwotICAgICAgICAgICAgaWYgKCFuZXh0Qm94IHx8IG5leHRCb3gtPmJpZGlMZXZlbCgp
ID49IGxldmVsKQorICAgICAgICAgICAgaWYgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVs
KCkgPj0gbGV2ZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBpZiAo
IW5leHRCb3gpIHsKKyAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVC
b3g7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBpZiAocHJldkJv
eC0+YmlkaUxldmVsKCkgPCBsZXZlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5s
aW5lQm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJldkJv
eCA9IHByZXZCb3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChw
cmV2Qm94KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGxldmVsID0gbmV4dEJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAgICBJbmxpbmVC
b3gqIHByZXZCb3ggPSBpbmxpbmVCb3g7CiAgICAgICAgICAgICBkbyB7CkBAIC0xMTI5LDggKzEx
NDIsMjEgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KEVBZgogICAgICAg
ICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVC
b3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAgICAgICAgIGlmICghcHJldkJveCB8fCBwcmV2Qm94
LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAgICAgIGlmIChwcmV2Qm94ICYmIHByZXZC
b3gtPmJpZGlMZXZlbCgpID49IGxldmVsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgaWYgKCFwcmV2Qm94KSB7CisgICAgICAgICAgICAgICAgSW5saW5lQm94KiBuZXh0
Qm94ID0gaW5saW5lQm94OworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5leHRCb3gtPmJpZGlMZXZlbCgpIDwgbGV2ZWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlubGluZUJveCA9IG5leHRCb3g7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXJl
dE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgbmV4dEJveCA9IG5leHRCb3gtPm5leHRMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgICAg
ICB9IHdoaWxlIChuZXh0Qm94KTsKICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGxldmVsID0gcHJldkJveC0+YmlkaUxldmVsKCk7CiAgICAgICAg
ICAgICBJbmxpbmVCb3gqIG5leHRCb3ggPSBpbmxpbmVCb3g7CkBAIC0xMTY0LDExICsxMTkwLDEx
IEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWYKICAgICAgICAgfSBl
bHNlIGlmIChwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+IGxldmVsKSB7CiAgICAgICAgICAgICAvLyBS
aWdodCBlZGdlIG9mIGEgInRlcnRpYXJ5IiBydW4uIFNldCB0byB0aGUgbGVmdCBlZGdlIG9mIHRo
YXQgcnVuLgogICAgICAgICAgICAgd2hpbGUgKElubGluZUJveCogdGVydGlhcnlCb3ggPSBpbmxp
bmVCb3gtPnByZXZMZWFmQ2hpbGQoKSkgewotICAgICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeUJv
eC0+YmlkaUxldmVsKCkgPD0gbGV2ZWwpCisgICAgICAgICAgICAgICAgaWYgKHRlcnRpYXJ5Qm94
LT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBpbmxpbmVCb3ggPSB0ZXJ0aWFyeUJveDsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICBjYXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQo
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9
IGlubGluZUJveC0+bmV4dExlYWZDaGlsZCgpOwpAQCAtMTE4MywxMSArMTIwOSwxMSBAQCB2b2lk
IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFmCiAgICAgICAgIH0gZWxzZSBpZiAo
bmV4dEJveC0+YmlkaUxldmVsKCkgPiBsZXZlbCkgewogICAgICAgICAgICAgLy8gTGVmdCBlZGdl
IG9mIGEgInRlcnRpYXJ5IiBydW4uIFNldCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGF0IHJ1bi4K
ICAgICAgICAgICAgIHdoaWxlIChJbmxpbmVCb3gqIHRlcnRpYXJ5Qm94ID0gaW5saW5lQm94LT5u
ZXh0TGVhZkNoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVydGlhcnlCb3gtPmJpZGlM
ZXZlbCgpIDw9IGxldmVsKQorICAgICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeUJveC0+YmlkaUxl
dmVsKCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgaW5saW5lQm94ID0gdGVydGlhcnlCb3g7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKTsKKyAgICAgICAg
ICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzY5MykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDExLTAyLTA0ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcmV0IGlzIHJlbmRlcmVkIGF0IGFuIGluY29ycmVj
dCBwb3NpdGlvbiBhdCB0aGUgYm91bmRhcnkgb2YgQXJhYmljIG51bWJlciBpbiBhIExUUiBjb250
ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY5
NgorCisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSBXZWJLaXQgcGxhY2VzIGNhcmV0IGF0
IHRoZSByaWdodCBsb2NhdGlvbiBhdCB0aGUgYm91bmRhcnkgb2YgdGVydGlhcnkgcnVucy4KKwor
ICAgICAgICBXaGVuIHRoZSB0ZXN0cyBhcmUgcmFuIG9uIERSVCwgdGhlIG1hcHBpbmcgYmV0d2Vl
biBvZmZzZXRzIGFuZCB2aXN1YWwgcG9zaXRpb25zIGFyZSBhdXRvbWF0aWNhbGx5CisgICAgICAg
IGNoZWNrZWQgdmlhIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlLiBXaGVuIHRlc3RzIGFyZSBy
YW4gbWFudWFsbHksIGNhcmV0cyBhcmUgbW92ZWQgaW4gbG9naWNhbAorICAgICAgICBvcmRlciB3
aXRoIDEgc2Vjb25kIGludGVydmFsIHRvIHNob3cgdGhlIG1hcHBpbmcgdmlzdWFsbHkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLWx0ci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRl
cnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1y
dGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlh
cnktcnRsLWx0ci1pbi1sdHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRl
cnRpYXJ5LXJ0bC1sdHItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jYXJldC10ZXJ0aWFyeS1zaGFyZWQuanM6IEFkZGVkLgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgIChydW5BdXRvbWF0ZWRUZXN0KToKKyAgICAgICAgKGZhaWxJ
Zk11bHRpcGxlT2Zmc2V0c0FyZUF0U2FtZVhDb29yZGluYXRlKToKKyAgICAgICAgKGZhaWxJZk1p
c21hdGNoLmZvcik6CisgICAgICAgIChmYWlsSWZNaXNtYXRjaCk6CisgICAgICAgIChsb2cpOgor
ICAgICAgICAocnVuSW50ZXJhY3RpdmVUZXN0KToKKyAgICAgICAgKG1vdmVDYXJldCk6CisgICAg
ICAgIChsb2dDYXJldE9mZnNldCk6CisKIDIwMTEtMDItMDQgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1s
dHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1y
dGwtaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3RzIGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi4KKworUEFTUworCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0
aWFyeS1sdHItcnRsLWluLWx0ci1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmVv
bC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1sdHIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLWx0ci5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlh
cnktbHRyLXJ0bC1pbi1sdHIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U
eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPC9oZWFkPgorPGJvZHk+
Cis8ZGl2IGlkPSJ0ZXN0IiBkaXI9Imx0ciIgY29udGVudGVkaXRhYmxlPjxzcGFuIHN0eWxlPSJk
aXJlY3Rpb246IHJ0bDsgdW5pY29kZS1iaWRpOiBlbWJlZDsiPtix2LNhYjwvc3Bhbj48L2Rpdj4K
KzxwPlRoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEgdGVydGlhcnkgcnVuLjwvcD4KKzxz
Y3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hhcmVkLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2V4cGVjdGVkVmlzdWFsT3JkZXJPZk9mZnNldHMgPSBbMCwgMywgMiwgMSwg
NF07CitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnkt
bHRyLXJ0bC1pbi1sdHIuaHRtbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsg
TEYKCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1s
dHItcnRsLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1ydGwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVy
dGlhcnktbHRyLXJ0bC1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEgdGVydGlhcnkgcnVuLgorCitQ
QVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9u
L2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFk
ZGVkOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4t
cnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9j
YXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2
PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGRpcj0icnRsIiBjb250ZW50ZWRpdGFibGU+PHNw
YW4gc3R5bGU9ImRpcmVjdGlvbjogbHRyOyB1bmljb2RlLWJpZGk6IGVtYmVkOyI+YWLYsdizPC9z
cGFuPjwvZGl2PgorPHA+VGhpcyB0ZXN0cyBjYXJldCByZW5kZXJpbmcgaW4gYSB0ZXJ0aWFyeSBy
dW4uPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYXJldC10ZXJ0aWFyeS1zaGFyZWQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKworZXhwZWN0ZWRWaXN1YWxPcmRlck9mT2Zmc2V0cyA9IFs0
LCAxLCAyLCAzLCAwXTsKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJl
dC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wt
c3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBjYXJldCByZW5kZXJpbmcgaW4gYSB0ZXJ0aWFy
eSBydW4uCisKK1BBU1MKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1sdHItZXhwZWN0ZWQudHh0Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnkt
cnRsLWx0ci1pbi1sdHIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRh
IGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0
Zi04Ij4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdCIgZGlyPSJsdHIiIGNvbnRlbnRl
ZGl0YWJsZT7Zodmh2LHYszwvZGl2PgorPHA+VGhpcyB0ZXN0cyBjYXJldCByZW5kZXJpbmcgaW4g
YSB0ZXJ0aWFyeSBydW4uPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYXJldC10ZXJ0aWFy
eS1zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZXhwZWN0ZWRWaXN1YWxPcmRlck9m
T2Zmc2V0cyA9IFswLCAzLCAyLCAxLCA0XTsKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Nl
bGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwt
bHRyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBjYXJldCByZW5kZXJpbmcg
aW4gYSB0ZXJ0aWFyeSBydW4uCisKK1BBU1MKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwtZXhw
ZWN0ZWQudHh0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4t
cnRsLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2Fy
ZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1s
OyBjaGFyc2V0PXV0Zi04Ij4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdCIgZGlyPSJy
dGwiIGNvbnRlbnRlZGl0YWJsZT48c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7IHVuaWNvZGUt
YmlkaTogZW1iZWQ7Ij7YsdizYWI8L3NwYW4+PC9kaXY+Cis8cD5UaGlzIHRlc3RzIGNhcmV0IHJl
bmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Nh
cmV0LXRlcnRpYXJ5LXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitleHBlY3RlZFZp
c3VhbE9yZGVyT2ZPZmZzZXRzID0gWzQsIDEsIDIsIDMsIDBdOworcnVuVGVzdCgpOworCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3Rz
L2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpBZGRlZDogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0LXRlcnRpYXJ5LXNoYXJlZC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMvY2FyZXQt
dGVydGlhcnktc2hhcmVkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0LXRlcnRpYXJ5LXNoYXJlZC5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDMgQEAKK2Z1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIHJldHVybiBydW5JbnRlcmFjdGl2ZVRlc3Qo
MTAwMCk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgcmV0
dXJuIHJ1bkF1dG9tYXRlZFRlc3QoKTsKK30KKworZnVuY3Rpb24gcnVuQXV0b21hdGVkVGVzdCgp
IHsKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsK
KworICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PD0gNDsgaSsrKSB7CisgICAgICAgIHZhciBjYXJldFggPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZp
cnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIGkpWzJdOworICAgICAgICBpZiAod2luZG93Lmdl
dENvbXB1dGVkU3R5bGUodGVzdCkuZGlyZWN0aW9uLnRvTG93ZXJDYXNlKCkgPT0gJ3J0bCcpCisg
ICAgICAgICAgICBjYXJldFggPSAxMDAwIC0gY2FyZXRYOworICAgICAgICByZXN1bHRzLnB1c2go
e3g6IGNhcmV0WCwgb2Zmc2V0OiBpfSk7CisgICAgfQorICAgIGNvbnRhaW5lci5pbm5lckhUTUwg
PSAnJzsKKworICAgIGlmIChmYWlsSWZNdWx0aXBsZU9mZnNldHNBcmVBdFNhbWVYQ29vcmRpbmF0
ZShyZXN1bHRzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGZhaWxJZk1pc21h
dGNoKHJlc3VsdHMsIGV4cGVjdGVkVmlzdWFsT3JkZXJPZk9mZnNldHMpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBsb2coJ1BBU1MnKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVu
Y3Rpb24gZmFpbElmTXVsdGlwbGVPZmZzZXRzQXJlQXRTYW1lWENvb3JkaW5hdGUocmVzdWx0cykg
eworICAgIHZhciB4U2V0ID0ge307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxl
bmd0aDsgaSsrKSB7CisgICAgICAgIGlmICh4U2V0W3Jlc3VsdHNbaV0ueF0pCisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgeFNldFtyZXN1bHRzW2ldLnhdID0gdHJ1ZTsKKyAgICB9CisKKyAg
ICBpZiAoaSA9PSByZXN1bHRzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bG9nKCdGQUlMOiBNb3JlIHRoYW4gb25lIG9mZnNldHMgY29ycmVzcG9uZCB0byB0aGUgc2FtZSB2
aXN1YWwgcG9zaXRpb246Jyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0
aDsgaSsrKQorICAgICAgICBsb2coJ29mZnNldCAnICsgcmVzdWx0c1tpXS5vZmZzZXQgKyAnIHdh
cyBhdCAnICsgcmVzdWx0c1tpXS54KTsKKyAgICBsb2coJ2J1dCBleHBlY3RlZCB0byBzZWUgb2Zm
c2V0cyBpbiB0aGUgb3JkZXIgJyArIGV4cGVjdGVkVmlzdWFsT3JkZXJPZk9mZnNldHMpCisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZmFpbElmTWlzbWF0Y2gocmVzdWx0cywgZXhw
ZWN0ZWQpIHsKKyAgICByZXN1bHRzSW5WaXN1YWxPcmRlciA9IHJlc3VsdHMuc29ydChmdW5jdGlv
biAoYSwgYikge3JldHVybiBhLnggLSBiLnh9KTsKKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
cmVzdWx0c0luVmlzdWFsT3JkZXIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKHJlc3VsdHNJ
blZpc3VhbE9yZGVyW2ldLm9mZnNldCAhPSBleHBlY3RlZFtpXSkKKyAgICAgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICAKKyAgICBpZiAoaSA9PSByZXN1bHRzSW5WaXN1YWxPcmRlci5sZW5ndGgp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhciBhY3R1YWwgPSBuZXcgQXJyYXkoKTsK
KyAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlc3VsdHNJblZpc3VhbE9yZGVyLmxlbmd0aDsgaisr
KQorICAgICAgICBhY3R1YWwucHVzaChyZXN1bHRzSW5WaXN1YWxPcmRlcltqXS5vZmZzZXQpOwor
ICAgIGxvZygnRkFJTDogRXhwZWN0ZWQgJyArIGV4cGVjdGVkICsgJyBidXQgZ290ICcgKyBhY3R1
YWwpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7Cisg
ICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykpIHsKKyAgICAgICAgdmFyIHBy
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ByZScpOworICAgICAgICBwcmUuaWQgPSAnbG9n
JzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwcmUpOworICAgIH0KKworICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICdc
bic7Cit9CisKK2Z1bmN0aW9uIHJ1bkludGVyYWN0aXZlVGVzdChpbnRlcnZhbCkgeworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDw9IDQ7IGkrKykKKyAgICAgICAgc2V0VGltZW91dCgibW92ZUNhcmV0
KCIgKyBpICsgIikiLCBpICogaW50ZXJ2YWwpOworfQorCitmdW5jdGlvbiBtb3ZlQ2FyZXQob2Zm
c2V0KSB7CisgICAgdmFyIHRleHROb2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKKyAgICB3aGlsZSAodGV4dE5vZGUuZmlyc3RDaGlsZCkKKyAgICAgICAgdGV4dE5vZGUgPSB0
ZXh0Tm9kZS5maXJzdENoaWxkOworCisgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAg
cmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIG9mZnNldCk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHRO
b2RlLCBvZmZzZXQpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7
CisgICAgbG9nQ2FyZXRPZmZzZXQoKTsKK30KKworZnVuY3Rpb24gbG9nQ2FyZXRPZmZzZXQoKSB7
CisgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAoc2Vs
ZWN0aW9uLmlzQ29sbGFwc2VkKQorICAgICAgICBsb2coc2VsZWN0aW9uLmdldFJhbmdlQXQoMCku
c3RhcnRPZmZzZXQpOworICAgIGVsc2UKKyAgICAgICAgbG9nKHNlbGVjdGlvbi5nZXRSYW5nZUF0
KDApLnN0YXJ0T2Zmc2V0ICsgJywgJyArIHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLmVuZE9mZnNl
dCk7Cit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlv
bi9yZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hhcmVkLmpzCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2
bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81318</attachid>
            <date>2011-02-04 16:33:01 -0800</date>
            <delta_ts>2011-02-23 17:52:02 -0800</delta_ts>
            <desc>fix the bug (removed eol-style changes)</desc>
            <filename>bug-53696-20110204163300.patch</filename>
            <type>text/plain</type>
            <size>15367</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc3NjkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMDQgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0
aW9uIGF0IHRoZSBib3VuZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAg
ICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZz
ZXQncyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IGlubGluZSBib3ggYW5kIG9mZnNldC4KKwor
ICAgICAgICBXaGVuIHRoZSBvZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZSBvZiB0aGUgY3VycmVu
dCBpbmxpbmUgYm94IGFuZCBvbiB0aGUgcmlnaHQgZWRnZSBvZiBhIHRlcnRpYXJ5IHJ1biwKKyAg
ICAgICAgd2UgbXVzdCByZXR1cm4gYW4gaW5saW5lIGJveCB3aXRoIGEgQmlEaSBlbWJlZGRpbmcg
bGV2ZWwgbG93ZXIgdGhhbiB0aGF0IG9mIHRoZSBjdXJyZW50IGVtYmVkZGluZyBsZXZlbCwKKyAg
ICAgICAgYW5kIGtlZXAgbG9va2luZyBmb3IgYW4gaW5saW5lIGJveCB3aGVuIHRoZSBlbWJlZGRp
bmcgbGV2ZWwgaXMgdGhlIHNhbWUuIEFsc28sIHdlIG11c3QgcmV0dXJuIHRoZSByaWdodG1vc3QK
KyAgICAgICAgb2Zmc2V0IG9mIHRoZSBpbmxpbmUgYm94IGluIHN1Y2ggY2FzZS4gV2hlbiB0aGUg
b2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2Ugb2YgYSB0ZXJ0aWFyeSBydW4sIHRoZSBiZWhhdmlv
cgorICAgICAgICBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgV2hlbiB0aGUgY3VycmVudCBpbmxp
bmUgYm94J3MgZGlyZWN0aW9uIG1hdGNoZXMgdGhhdCBvZiB0aGUgcHJpbWFyeSBkaXJlY3Rpb24s
IHRoZSBvZmZzZXQgaXMgb24gdGhlIHJpZ2h0CisgICAgICAgIGVkZ2Ugb2YgdGhlIGN1cnJlbnQg
aW5saW5lIGJveCwgYW5kIHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24gdGhlIHJpZ2h0LCB0aGlz
IG9mZnNldCBtYXkgY29ycmVzcG9uZCB0bworICAgICAgICB3ZSBtaWdodCBiZSBhdCB0aGUgZWRn
ZSBvZiBhIHRlcnRpYXJ5IHJ1biwgaW4gd2hpY2ggY2FzZSB0aGUgcG9zaXRpb24gaXMgb24gdGhl
IGxlZnQgZWRnZSBvZiB0aGUgY3VycmVudCBydW4uCisgICAgICAgIFNvIGxvb2sgZm9yIGFuIGlu
bGluZSB0ZXh0IGJveCB3aXRoIGEgbG93ZXIgQmlEaSBlbWJlZGRpbmcgbGV2ZWwgb24gdGhlIGxl
ZnQgYW5kIGlmIGV4aXN0cywgcmV0dXJuCisgICAgICAgIHRoZSByaWdodG1vc3Qgb2Zmc2V0IG9m
IHRoYXQgaW5saW5lIGJveC4gV2hlbiB0aGUgb2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2UgYW5k
IHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24KKyAgICAgICAgdGhlIGxlZnQsIHRoZSBiZWhhdmlv
ciBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLmh0bWwKKyAgICAgICAgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4t
cnRsLmh0bWwKKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KToKKwogMjAxMS0wMi0wNCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENh
cmxzb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDc3NTAzKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEwOCw5
ICsxMTA4LDIyIEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWYKICAg
ICBpZiAoaW5saW5lQm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9uKSB7CiAgICAg
ICAgIGlmIChjYXJldE9mZnNldCA9PSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCkp
IHsKICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGlubGluZUJveC0+bmV4dExlYWZD
aGlsZCgpOwotICAgICAgICAgICAgaWYgKCFuZXh0Qm94IHx8IG5leHRCb3gtPmJpZGlMZXZlbCgp
ID49IGxldmVsKQorICAgICAgICAgICAgaWYgKG5leHRCb3ggJiYgbmV4dEJveC0+YmlkaUxldmVs
KCkgPj0gbGV2ZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgICAgICBpZiAo
IW5leHRCb3gpIHsKKyAgICAgICAgICAgICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVC
b3g7CisgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICBpZiAocHJldkJv
eC0+YmlkaUxldmVsKCkgPCBsZXZlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5l
Qm94ID0gcHJldkJveDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5s
aW5lQm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcHJldkJv
eCA9IHByZXZCb3gtPnByZXZMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChw
cmV2Qm94KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgIGxldmVsID0gbmV4dEJveC0+YmlkaUxldmVsKCk7CiAgICAgICAgICAgICBJbmxpbmVC
b3gqIHByZXZCb3ggPSBpbmxpbmVCb3g7CiAgICAgICAgICAgICBkbyB7CkBAIC0xMTI5LDggKzEx
NDIsMjEgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KEVBZgogICAgICAg
ICAgICAgY2FyZXRPZmZzZXQgPSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0T2Zmc2V0KCk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBJbmxpbmVCb3gqIHByZXZCb3ggPSBpbmxpbmVC
b3gtPnByZXZMZWFmQ2hpbGQoKTsKLSAgICAgICAgICAgIGlmICghcHJldkJveCB8fCBwcmV2Qm94
LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAgICAgIGlmIChwcmV2Qm94ICYmIHByZXZC
b3gtPmJpZGlMZXZlbCgpID49IGxldmVsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICAgICAgaWYgKCFwcmV2Qm94KSB7CisgICAgICAgICAgICAgICAgSW5saW5lQm94KiBuZXh0
Qm94ID0gaW5saW5lQm94OworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKG5leHRCb3gtPmJpZGlMZXZlbCgpIDwgbGV2ZWwpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlubGluZUJveCA9IG5leHRCb3g7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXJl
dE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRMZWZ0bW9zdE9mZnNldCgpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgbmV4dEJveCA9IG5leHRCb3gtPm5leHRMZWFmQ2hpbGQoKTsKKyAgICAgICAgICAgICAg
ICB9IHdoaWxlIChuZXh0Qm94KTsKICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGxldmVsID0gcHJldkJveC0+YmlkaUxldmVsKCk7CiAgICAgICAg
ICAgICBJbmxpbmVCb3gqIG5leHRCb3ggPSBpbmxpbmVCb3g7CkBAIC0xMTY0LDExICsxMTkwLDEx
IEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNldChFQWYKICAgICAgICAgfSBl
bHNlIGlmIChwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+IGxldmVsKSB7CiAgICAgICAgICAgICAvLyBS
aWdodCBlZGdlIG9mIGEgInRlcnRpYXJ5IiBydW4uIFNldCB0byB0aGUgbGVmdCBlZGdlIG9mIHRo
YXQgcnVuLgogICAgICAgICAgICAgd2hpbGUgKElubGluZUJveCogdGVydGlhcnlCb3ggPSBpbmxp
bmVCb3gtPnByZXZMZWFmQ2hpbGQoKSkgewotICAgICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeUJv
eC0+YmlkaUxldmVsKCkgPD0gbGV2ZWwpCisgICAgICAgICAgICAgICAgaWYgKHRlcnRpYXJ5Qm94
LT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgICAgICBpbmxpbmVCb3ggPSB0ZXJ0aWFyeUJveDsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7Cisg
ICAgICAgICAgICBjYXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQo
KTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9
IGlubGluZUJveC0+bmV4dExlYWZDaGlsZCgpOwpAQCAtMTE4MywxMSArMTIwOSwxMSBAQCB2b2lk
IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZzZXQoRUFmCiAgICAgICAgIH0gZWxzZSBpZiAo
bmV4dEJveC0+YmlkaUxldmVsKCkgPiBsZXZlbCkgewogICAgICAgICAgICAgLy8gTGVmdCBlZGdl
IG9mIGEgInRlcnRpYXJ5IiBydW4uIFNldCB0byB0aGUgcmlnaHQgZWRnZSBvZiB0aGF0IHJ1bi4K
ICAgICAgICAgICAgIHdoaWxlIChJbmxpbmVCb3gqIHRlcnRpYXJ5Qm94ID0gaW5saW5lQm94LT5u
ZXh0TGVhZkNoaWxkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVydGlhcnlCb3gtPmJpZGlM
ZXZlbCgpIDw9IGxldmVsKQorICAgICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeUJveC0+YmlkaUxl
dmVsKCkgPCBsZXZlbCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgaW5saW5lQm94ID0gdGVydGlhcnlCb3g7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YXJldE9mZnNldCA9IGlubGluZUJveC0+Y2FyZXRSaWdodG1vc3RPZmZzZXQoKTsKKyAgICAgICAg
ICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldExlZnRtb3N0T2Zmc2V0KCk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NzY5MykKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBACisyMDExLTAyLTA0ICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENhcmV0IGlzIHJlbmRlcmVkIGF0IGFuIGluY29ycmVj
dCBwb3NpdGlvbiBhdCB0aGUgYm91bmRhcnkgb2YgQXJhYmljIG51bWJlciBpbiBhIExUUiBjb250
ZXh0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzY5
NgorCisgICAgICAgIEFkZGVkIHRlc3RzIHRvIGVuc3VyZSBXZWJLaXQgcGxhY2VzIGNhcmV0IGF0
IHRoZSByaWdodCBsb2NhdGlvbiBhdCB0aGUgYm91bmRhcnkgb2YgdGVydGlhcnkgcnVucy4KKwor
ICAgICAgICBXaGVuIHRoZSB0ZXN0cyBhcmUgcmFuIG9uIERSVCwgdGhlIG1hcHBpbmcgYmV0d2Vl
biBvZmZzZXRzIGFuZCB2aXN1YWwgcG9zaXRpb25zIGFyZSBhdXRvbWF0aWNhbGx5CisgICAgICAg
IGNoZWNrZWQgdmlhIGZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlLiBXaGVuIHRlc3RzIGFyZSBy
YW4gbWFudWFsbHksIGNhcmV0cyBhcmUgbW92ZWQgaW4gbG9naWNhbAorICAgICAgICBvcmRlciB3
aXRoIDEgc2Vjb25kIGludGVydmFsIHRvIHNob3cgdGhlIG1hcHBpbmcgdmlzdWFsbHkuCisKKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLWx0ci1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRl
cnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1y
dGwuaHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlh
cnktcnRsLWx0ci1pbi1sdHItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRl
cnRpYXJ5LXJ0bC1sdHItaW4tcnRsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2Vs
ZWN0aW9uL3Jlc291cmNlcy9jYXJldC10ZXJ0aWFyeS1zaGFyZWQuanM6IEFkZGVkLgorICAgICAg
ICAocnVuVGVzdCk6CisgICAgICAgIChydW5BdXRvbWF0ZWRUZXN0KToKKyAgICAgICAgKGZhaWxJ
Zk11bHRpcGxlT2Zmc2V0c0FyZUF0U2FtZVhDb29yZGluYXRlKToKKyAgICAgICAgKGZhaWxJZk1p
c21hdGNoLmZvcik6CisgICAgICAgIChmYWlsSWZNaXNtYXRjaCk6CisgICAgICAgIChsb2cpOgor
ICAgICAgICAocnVuSW50ZXJhY3RpdmVUZXN0KToKKyAgICAgICAgKG1vdmVDYXJldCk6CisgICAg
ICAgIChsb2dDYXJldE9mZnNldCk6CisKIDIwMTEtMDItMDQgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1s
dHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1y
dGwtaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlz
IHRlc3RzIGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi4KKworUEFTUworCkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWlu
LWx0ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLWx0ci5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgor
PGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGRpcj0i
bHRyIiBjb250ZW50ZWRpdGFibGU+PHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogcnRsOyB1bmljb2Rl
LWJpZGk6IGVtYmVkOyI+2LHYs2FiPC9zcGFuPjwvZGl2PgorPHA+VGhpcyB0ZXN0cyBjYXJldCBy
ZW5kZXJpbmcgaW4gYSB0ZXJ0aWFyeSBydW4uPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
YXJldC10ZXJ0aWFyeS1zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZXhwZWN0ZWRW
aXN1YWxPcmRlck9mT2Zmc2V0cyA9IFswLCAzLCAyLCAxLCA0XTsKK3J1blRlc3QoKTsKKworPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0
bC1pbi1ydGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1ydGwtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK1RoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGlu
IGEgdGVydGlhcnkgcnVuLgorCitQQVNTCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1y
dGwuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9
IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzwvaGVh
ZD4KKzxib2R5PgorPGRpdiBpZD0idGVzdCIgZGlyPSJydGwiIGNvbnRlbnRlZGl0YWJsZT48c3Bh
biBzdHlsZT0iZGlyZWN0aW9uOiBsdHI7IHVuaWNvZGUtYmlkaTogZW1iZWQ7Ij5hYtix2LM8L3Nw
YW4+PC9kaXY+Cis8cD5UaGlzIHRlc3RzIGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1
bi48L3A+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NhcmV0LXRlcnRpYXJ5LXNoYXJlZC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitleHBlY3RlZFZpc3VhbE9yZGVyT2ZPZmZzZXRzID0gWzQs
IDEsIDIsIDMsIDBdOworcnVuVGVzdCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1s
dHItaW4tbHRyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFy
eS1ydGwtbHRyLWluLWx0ci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAorVGhpcyB0ZXN0cyBjYXJldCByZW5kZXJpbmcgaW4gYSB0ZXJ0aWFyeSBydW4uCisKK1BBU1MK
KwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRs
LWx0ci1pbi1sdHIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVj
dGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1s
dHIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0
IiBkaXI9Imx0ciIgY29udGVudGVkaXRhYmxlPtmh2aHYsdizPC9kaXY+Cis8cD5UaGlzIHRlc3Rz
IGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi48L3A+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL2NhcmV0LXRlcnRpYXJ5LXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitl
eHBlY3RlZFZpc3VhbE9yZGVyT2ZPZmZzZXRzID0gWzAsIDMsIDIsIDEsIDRdOworcnVuVGVzdCgp
OworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFy
eS1ydGwtbHRyLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBjYXJldCByZW5k
ZXJpbmcgaW4gYSB0ZXJ0aWFyeSBydW4uCisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwt
bHRyLWluLXJ0bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBkaXI9InJ0bCIgY29udGVudGVkaXRh
YmxlPjxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0cjsgdW5pY29kZS1iaWRpOiBlbWJlZDsiPtix
2LNhYjwvc3Bhbj48L2Rpdj4KKzxwPlRoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEgdGVy
dGlhcnkgcnVuLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hh
cmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2V4cGVjdGVkVmlzdWFsT3JkZXJPZk9mZnNl
dHMgPSBbNCwgMSwgMiwgMywgMF07CitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2Nh
cmV0LXRlcnRpYXJ5LXNoYXJlZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9yZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hhcmVkLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0LXRlcnRp
YXJ5LXNoYXJlZC5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMgQEAKK2Z1bmN0aW9uIHJ1
blRlc3QoKSB7CisgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
IHJldHVybiBydW5JbnRlcmFjdGl2ZVRlc3QoMTAwMCk7CisKKyAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgcmV0dXJuIHJ1bkF1dG9tYXRlZFRlc3QoKTsKK30KKwor
ZnVuY3Rpb24gcnVuQXV0b21hdGVkVGVzdCgpIHsKKyAgICB2YXIgY29udGFpbmVyID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKKworICAgIHZhciByZXN1bHRzID0gbmV3IEFycmF5
KCk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gNDsgaSsrKSB7CisgICAgICAgIHZhciBjYXJl
dFggPSB0ZXh0SW5wdXRDb250cm9sbGVyLmZpcnN0UmVjdEZvckNoYXJhY3RlclJhbmdlKDAsIGkp
WzJdOworICAgICAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUodGVzdCkuZGlyZWN0aW9u
LnRvTG93ZXJDYXNlKCkgPT0gJ3J0bCcpCisgICAgICAgICAgICBjYXJldFggPSAxMDAwIC0gY2Fy
ZXRYOworICAgICAgICByZXN1bHRzLnB1c2goe3g6IGNhcmV0WCwgb2Zmc2V0OiBpfSk7CisgICAg
fQorICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSAnJzsKKworICAgIGlmIChmYWlsSWZNdWx0aXBs
ZU9mZnNldHNBcmVBdFNhbWVYQ29vcmRpbmF0ZShyZXN1bHRzKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgaWYgKGZhaWxJZk1pc21hdGNoKHJlc3VsdHMsIGV4cGVjdGVkVmlzdWFsT3Jk
ZXJPZk9mZnNldHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb2coJ1BBU1MnKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24gZmFpbElmTXVsdGlwbGVPZmZzZXRzQXJl
QXRTYW1lWENvb3JkaW5hdGUocmVzdWx0cykgeworICAgIHZhciB4U2V0ID0ge307CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIGlmICh4U2V0
W3Jlc3VsdHNbaV0ueF0pCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgeFNldFtyZXN1bHRz
W2ldLnhdID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaSA9PSByZXN1bHRzLmxlbmd0aCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbG9nKCdGQUlMOiBNb3JlIHRoYW4gb25lIG9mZnNl
dHMgY29ycmVzcG9uZCB0byB0aGUgc2FtZSB2aXN1YWwgcG9zaXRpb246Jyk7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByZXN1bHRzLmxlbmd0aDsgaSsrKQorICAgICAgICBsb2coJ29mZnNldCAn
ICsgcmVzdWx0c1tpXS5vZmZzZXQgKyAnIHdhcyBhdCAnICsgcmVzdWx0c1tpXS54KTsKKyAgICBs
b2coJ2J1dCBleHBlY3RlZCB0byBzZWUgb2Zmc2V0cyBpbiB0aGUgb3JkZXIgJyArIGV4cGVjdGVk
VmlzdWFsT3JkZXJPZk9mZnNldHMpCisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworZnVuY3Rpb24g
ZmFpbElmTWlzbWF0Y2gocmVzdWx0cywgZXhwZWN0ZWQpIHsKKyAgICByZXN1bHRzSW5WaXN1YWxP
cmRlciA9IHJlc3VsdHMuc29ydChmdW5jdGlvbiAoYSwgYikge3JldHVybiBhLnggLSBiLnh9KTsK
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0c0luVmlzdWFsT3JkZXIubGVuZ3RoOyBp
KyspIHsKKyAgICAgICAgaWYgKHJlc3VsdHNJblZpc3VhbE9yZGVyW2ldLm9mZnNldCAhPSBleHBl
Y3RlZFtpXSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAoaSA9PSBy
ZXN1bHRzSW5WaXN1YWxPcmRlci5sZW5ndGgpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHZhciBhY3R1YWwgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlc3Vs
dHNJblZpc3VhbE9yZGVyLmxlbmd0aDsgaisrKQorICAgICAgICBhY3R1YWwucHVzaChyZXN1bHRz
SW5WaXN1YWxPcmRlcltqXS5vZmZzZXQpOworICAgIGxvZygnRkFJTDogRXhwZWN0ZWQgJyArIGV4
cGVjdGVkICsgJyBidXQgZ290ICcgKyBhY3R1YWwpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisK
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisgICAgaWYgKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbG9nJykpIHsKKyAgICAgICAgdmFyIHByZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3By
ZScpOworICAgICAgICBwcmUuaWQgPSAnbG9nJzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChwcmUpOworICAgIH0KKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cn
KS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICdcbic7Cit9CisKK2Z1bmN0aW9uIHJ1bkludGVyYWN0
aXZlVGVzdChpbnRlcnZhbCkgeworICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDQ7IGkrKykKKyAg
ICAgICAgc2V0VGltZW91dCgibW92ZUNhcmV0KCIgKyBpICsgIikiLCBpICogaW50ZXJ2YWwpOwor
fQorCitmdW5jdGlvbiBtb3ZlQ2FyZXQob2Zmc2V0KSB7CisgICAgdmFyIHRleHROb2RlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKKyAgICB3aGlsZSAodGV4dE5vZGUuZmlyc3RD
aGlsZCkKKyAgICAgICAgdGV4dE5vZGUgPSB0ZXh0Tm9kZS5maXJzdENoaWxkOworCisgICAgdmFy
IHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgcmFuZ2Uuc2V0U3RhcnQodGV4dE5vZGUsIG9mZnNl
dCk7CisgICAgcmFuZ2Uuc2V0RW5kKHRleHROb2RlLCBvZmZzZXQpOworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5hZGRSYW5nZShyYW5nZSk7CisgICAgbG9nQ2FyZXRPZmZzZXQoKTsKK30KKwor
ZnVuY3Rpb24gbG9nQ2FyZXRPZmZzZXQoKSB7CisgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKKyAgICBpZiAoc2VsZWN0aW9uLmlzQ29sbGFwc2VkKQorICAgICAgICBs
b2coc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkuc3RhcnRPZmZzZXQpOworICAgIGVsc2UKKyAgICAg
ICAgbG9nKHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApLnN0YXJ0T2Zmc2V0ICsgJywgJyArIHNlbGVj
dGlvbi5nZXRSYW5nZUF0KDApLmVuZE9mZnNldCk7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83593</attachid>
            <date>2011-02-23 17:52:07 -0800</date>
            <delta_ts>2011-04-06 10:35:34 -0700</delta_ts>
            <desc>Rewrote while loops as for loops</desc>
            <filename>bug-53696-20110224105205.patch</filename>
            <type>text/plain</type>
            <size>16070</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc5NDI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTEtMDItMjMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0
aW9uIGF0IHRoZSBib3VuZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAg
ICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IFBvc2l0aW9uOjpnZXRJbmxpbmVCb3hBbmRPZmZz
ZXQncyBub3QgcmV0dXJuaW5nIHRoZSBjb3JyZWN0IGlubGluZSBib3ggYW5kIG9mZnNldC4KKwor
ICAgICAgICBXaGVuIHRoZSBvZmZzZXQgaXMgb24gdGhlIGxlZnQgZWRnZSBvZiB0aGUgY3VycmVu
dCBpbmxpbmUgYm94IGFuZCBvbiB0aGUgcmlnaHQgZWRnZSBvZiBhIHRlcnRpYXJ5IHJ1biwKKyAg
ICAgICAgd2UgbXVzdCByZXR1cm4gYW4gaW5saW5lIGJveCB3aXRoIGEgQmlEaSBlbWJlZGRpbmcg
bGV2ZWwgbG93ZXIgdGhhbiB0aGF0IG9mIHRoZSBjdXJyZW50IGVtYmVkZGluZyBsZXZlbCwKKyAg
ICAgICAgYW5kIGtlZXAgbG9va2luZyBmb3IgYW4gaW5saW5lIGJveCB3aGVuIHRoZSBlbWJlZGRp
bmcgbGV2ZWwgaXMgdGhlIHNhbWUuIEFsc28sIHdlIG11c3QgcmV0dXJuIHRoZSByaWdodG1vc3QK
KyAgICAgICAgb2Zmc2V0IG9mIHRoZSBpbmxpbmUgYm94IGluIHN1Y2ggY2FzZS4gV2hlbiB0aGUg
b2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2Ugb2YgYSB0ZXJ0aWFyeSBydW4sIHRoZSBiZWhhdmlv
cgorICAgICAgICBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgV2hlbiB0aGUgY3VycmVudCBpbmxp
bmUgYm94J3MgZGlyZWN0aW9uIG1hdGNoZXMgdGhhdCBvZiB0aGUgcHJpbWFyeSBkaXJlY3Rpb24s
IHRoZSBvZmZzZXQgaXMgb24gdGhlIHJpZ2h0CisgICAgICAgIGVkZ2Ugb2YgdGhlIGN1cnJlbnQg
aW5saW5lIGJveCwgYW5kIHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24gdGhlIHJpZ2h0LCB0aGlz
IG9mZnNldCBtYXkgY29ycmVzcG9uZCB0bworICAgICAgICB3ZSBtaWdodCBiZSBhdCB0aGUgZWRn
ZSBvZiBhIHRlcnRpYXJ5IHJ1biwgaW4gd2hpY2ggY2FzZSB0aGUgcG9zaXRpb24gaXMgb24gdGhl
IGxlZnQgZWRnZSBvZiB0aGUgY3VycmVudCBydW4uCisgICAgICAgIFNvIGxvb2sgZm9yIGFuIGlu
bGluZSB0ZXh0IGJveCB3aXRoIGEgbG93ZXIgQmlEaSBlbWJlZGRpbmcgbGV2ZWwgb24gdGhlIGxl
ZnQgYW5kIGlmIGV4aXN0cywgcmV0dXJuCisgICAgICAgIHRoZSByaWdodG1vc3Qgb2Zmc2V0IG9m
IHRoYXQgaW5saW5lIGJveC4gV2hlbiB0aGUgb2Zmc2V0IGlzIG9uIHRoZSBsZWZ0IGVkZ2UgYW5k
IHRoZXJlIGlzIG5vIGlubGluZSBib3ggb24KKyAgICAgICAgdGhlIGxlZnQsIHRoZSBiZWhhdmlv
ciBpcyBzeW1tZXRyaWMuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0
LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvc2Vs
ZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLmh0bWwKKyAgICAgICAgICAgICAg
IGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4t
cnRsLmh0bWwKKworICAgICAgICAqIGRvbS9Qb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbjo6Z2V0SW5saW5lQm94QW5kT2Zmc2V0KToKKwogMjAxMS0wMi0yMyAgRG9taW5p
YyBNYXp6b25pICA8ZG1henpvbmlAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBL
ZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vUG9zaXRpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAJKHJldmlzaW9uIDc5
NDAxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Bvc2l0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTEwOCw5ICsxMTA4LDIwIEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJveEFuZE9mZnNl
dChFQWYKICAgICBpZiAoaW5saW5lQm94LT5kaXJlY3Rpb24oKSA9PSBwcmltYXJ5RGlyZWN0aW9u
KSB7CiAgICAgICAgIGlmIChjYXJldE9mZnNldCA9PSBpbmxpbmVCb3gtPmNhcmV0UmlnaHRtb3N0
T2Zmc2V0KCkpIHsKICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJveCA9IGlubGluZUJveC0+
bmV4dExlYWZDaGlsZCgpOwotICAgICAgICAgICAgaWYgKCFuZXh0Qm94IHx8IG5leHRCb3gtPmJp
ZGlMZXZlbCgpID49IGxldmVsKQorICAgICAgICAgICAgaWYgKG5leHRCb3ggJiYgbmV4dEJveC0+
YmlkaUxldmVsKCkgPj0gbGV2ZWwpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAg
ICAgICBpZiAoIW5leHRCb3gpIHsKKyAgICAgICAgICAgICAgICBmb3IgKElubGluZUJveCogcHJl
dkJveCA9IGlubGluZUJveDsgcHJldkJveDsgcHJldkJveCA9IHByZXZCb3gtPnByZXZMZWFmQ2hp
bGQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJldkJveC0+YmlkaUxldmVsKCkgPCBs
ZXZlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5saW5lQm94ID0gcHJldkJveDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJldFJpZ2h0
bW9zdE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBsZXZlbCA9IG5leHRCb3gtPmJpZGlMZXZlbCgp
OwogICAgICAgICAgICAgSW5saW5lQm94KiBwcmV2Qm94ID0gaW5saW5lQm94OwogICAgICAgICAg
ICAgZG8gewpAQCAtMTEyOSw4ICsxMTQwLDE5IEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJv
eEFuZE9mZnNldChFQWYKICAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94LT5jYXJl
dFJpZ2h0bW9zdE9mZnNldCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW5saW5l
Qm94KiBwcmV2Qm94ID0gaW5saW5lQm94LT5wcmV2TGVhZkNoaWxkKCk7Ci0gICAgICAgICAgICBp
ZiAoIXByZXZCb3ggfHwgcHJldkJveC0+YmlkaUxldmVsKCkgPj0gbGV2ZWwpCisgICAgICAgICAg
ICBpZiAocHJldkJveCAmJiBwcmV2Qm94LT5iaWRpTGV2ZWwoKSA+PSBsZXZlbCkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmICghcHJldkJveCkgeworICAgICAgICAg
ICAgICAgIGZvciAoSW5saW5lQm94KiBuZXh0Qm94ID0gaW5saW5lQm94OyBuZXh0Qm94OyBuZXh0
Qm94ID0gbmV4dEJveC0+bmV4dExlYWZDaGlsZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChuZXh0Qm94LT5iaWRpTGV2ZWwoKSA8IGxldmVsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBpbmxpbmVCb3ggPSBuZXh0Qm94OworICAgICAgICAgICAgICAgICAgICAgICAgY2FyZXRPZmZz
ZXQgPSBpbmxpbmVCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV2
ZWwgPSBwcmV2Qm94LT5iaWRpTGV2ZWwoKTsKICAgICAgICAgICAgIElubGluZUJveCogbmV4dEJv
eCA9IGlubGluZUJveDsKQEAgLTExNjQsMTEgKzExODYsMTEgQEAgdm9pZCBQb3NpdGlvbjo6Z2V0
SW5saW5lQm94QW5kT2Zmc2V0KEVBZgogICAgICAgICB9IGVsc2UgaWYgKHByZXZCb3gtPmJpZGlM
ZXZlbCgpID4gbGV2ZWwpIHsKICAgICAgICAgICAgIC8vIFJpZ2h0IGVkZ2Ugb2YgYSAidGVydGlh
cnkiIHJ1bi4gU2V0IHRvIHRoZSBsZWZ0IGVkZ2Ugb2YgdGhhdCBydW4uCiAgICAgICAgICAgICB3
aGlsZSAoSW5saW5lQm94KiB0ZXJ0aWFyeUJveCA9IGlubGluZUJveC0+cHJldkxlYWZDaGlsZCgp
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRlcnRpYXJ5Qm94LT5iaWRpTGV2ZWwoKSA8PSBsZXZl
bCkKKyAgICAgICAgICAgICAgICBpZiAodGVydGlhcnlCb3gtPmJpZGlMZXZlbCgpIDwgbGV2ZWwp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIGlubGluZUJveCA9
IHRlcnRpYXJ5Qm94OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBp
bmxpbmVCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKKyAgICAgICAgICAgIGNhcmV0T2Zmc2V0
ID0gaW5saW5lQm94LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIHsKICAgICAgICAgSW5saW5lQm94KiBuZXh0Qm94ID0gaW5saW5lQm94LT5uZXh0TGVhZkNo
aWxkKCk7CkBAIC0xMTgzLDExICsxMjA1LDExIEBAIHZvaWQgUG9zaXRpb246OmdldElubGluZUJv
eEFuZE9mZnNldChFQWYKICAgICAgICAgfSBlbHNlIGlmIChuZXh0Qm94LT5iaWRpTGV2ZWwoKSA+
IGxldmVsKSB7CiAgICAgICAgICAgICAvLyBMZWZ0IGVkZ2Ugb2YgYSAidGVydGlhcnkiIHJ1bi4g
U2V0IHRvIHRoZSByaWdodCBlZGdlIG9mIHRoYXQgcnVuLgogICAgICAgICAgICAgd2hpbGUgKElu
bGluZUJveCogdGVydGlhcnlCb3ggPSBpbmxpbmVCb3gtPm5leHRMZWFmQ2hpbGQoKSkgewotICAg
ICAgICAgICAgICAgIGlmICh0ZXJ0aWFyeUJveC0+YmlkaUxldmVsKCkgPD0gbGV2ZWwpCisgICAg
ICAgICAgICAgICAgaWYgKHRlcnRpYXJ5Qm94LT5iaWRpTGV2ZWwoKSA8IGxldmVsKQogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICBpbmxpbmVCb3ggPSB0ZXJ0aWFy
eUJveDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhcmV0T2Zmc2V0ID0gaW5saW5lQm94
LT5jYXJldFJpZ2h0bW9zdE9mZnNldCgpOworICAgICAgICAgICAgY2FyZXRPZmZzZXQgPSBpbmxp
bmVCb3gtPmNhcmV0TGVmdG1vc3RPZmZzZXQoKTsKICAgICAgICAgfQogICAgIH0KIH0KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDc5NTExKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTEtMDItMjMgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2FyZXQgaXMgcmVuZGVyZWQgYXQgYW4gaW5jb3JyZWN0IHBvc2l0aW9uIGF0IHRoZSBib3Vu
ZGFyeSBvZiBBcmFiaWMgbnVtYmVyIGluIGEgTFRSIGNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUzNjk2CisKKyAgICAgICAgQWRkZWQgdGVz
dHMgdG8gZW5zdXJlIFdlYktpdCBwbGFjZXMgY2FyZXQgYXQgdGhlIHJpZ2h0IGxvY2F0aW9uIGF0
IHRoZSBib3VuZGFyeSBvZiB0ZXJ0aWFyeSBydW5zLgorCisgICAgICAgIFdoZW4gdGhlIHRlc3Rz
IGFyZSByYW4gb24gRFJULCB0aGUgbWFwcGluZyBiZXR3ZWVuIG9mZnNldHMgYW5kIHZpc3VhbCBw
b3NpdGlvbnMgYXJlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgY2hlY2tlZCB2aWEgZmlyc3RSZWN0
Rm9yQ2hhcmFjdGVyUmFuZ2UuIFdoZW4gdGVzdHMgYXJlIHJhbiBtYW51YWxseSwgY2FyZXRzIGFy
ZSBtb3ZlZCBpbiBsb2dpY2FsCisgICAgICAgIG9yZGVyIHdpdGggMSBzZWNvbmQgaW50ZXJ2YWwg
dG8gc2hvdyB0aGUgbWFwcGluZyB2aXN1YWxseS4KKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tbHRyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1sdHIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnkt
bHRyLXJ0bC1pbi1ydGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL3Nl
bGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRp
YXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0
aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vcmVzb3VyY2VzL2NhcmV0
LXRlcnRpYXJ5LXNoYXJlZC5qczogQWRkZWQuCisgICAgICAgIChydW5UZXN0KToKKyAgICAgICAg
KHJ1bkF1dG9tYXRlZFRlc3QpOgorICAgICAgICAoZmFpbElmTXVsdGlwbGVPZmZzZXRzQXJlQXRT
YW1lWENvb3JkaW5hdGUpOgorICAgICAgICAoZmFpbElmTWlzbWF0Y2guZm9yKToKKyAgICAgICAg
KGZhaWxJZk1pc21hdGNoKToKKyAgICAgICAgKGxvZyk6CisgICAgICAgIChydW5JbnRlcmFjdGl2
ZVRlc3QpOgorICAgICAgICAobW92ZUNhcmV0KToKKyAgICAgICAgKGxvZ0NhcmV0T2Zmc2V0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5LWJpZGkt
ZXhwZWN0ZWQudHh0OiBSZWJhc2VkIGR1ZSB0byBvbmUgcGl4ZWwgZGlmZmVyZW5jZXMuCisKIDIw
MTEtMDItMjMgIEFuZHJldyBXaWxzb24gIDxhdHdpbHNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlZCBvdXRkYXRlZC9pbmNvcnJlY3QgY2hyb21pdW0gYmFzZWxpbnMuIFVucmV2aWV3
ZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1s
dHItcnRsLWluLWx0ci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1sdHItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVy
dGlhcnktbHRyLXJ0bC1pbi1sdHItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQgQEAKK1RoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEgdGVydGlhcnkgcnVuLgorCitQ
QVNTCisKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5
LWx0ci1ydGwtaW4tbHRyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1sdHIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwt
aW4tbHRyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0i
dGVzdCIgZGlyPSJsdHIiIGNvbnRlbnRlZGl0YWJsZT48c3BhbiBzdHlsZT0iZGlyZWN0aW9uOiBy
dGw7IHVuaWNvZGUtYmlkaTogZW1iZWQ7Ij7YsdizYWI8L3NwYW4+PC9kaXY+Cis8cD5UaGlzIHRl
c3RzIGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi48L3A+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NhcmV0LXRlcnRpYXJ5LXNoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
CitleHBlY3RlZFZpc3VhbE9yZGVyT2ZPZmZzZXRzID0gWzAsIDMsIDIsIDEsIDRdOworcnVuVGVz
dCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LWx0ci1ydGwtaW4tcnRsLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0
aWFyeS1sdHItcnRsLWluLXJ0bC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1sdHItcnRsLWluLXJ0bC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyBjYXJldCBy
ZW5kZXJpbmcgaW4gYSB0ZXJ0aWFyeSBydW4uCisKK1BBU1MKKwpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1ydGwuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1s
dHItcnRsLWluLXJ0bC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9z
ZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktbHRyLXJ0bC1pbi1ydGwuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEg
aHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRm
LTgiPgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJ0ZXN0IiBkaXI9InJ0bCIgY29udGVudGVk
aXRhYmxlPjxzcGFuIHN0eWxlPSJkaXJlY3Rpb246IGx0cjsgdW5pY29kZS1iaWRpOiBlbWJlZDsi
PmFi2LHYszwvc3Bhbj48L2Rpdj4KKzxwPlRoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEg
dGVydGlhcnkgcnVuLjwvcD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY2FyZXQtdGVydGlhcnkt
c2hhcmVkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2V4cGVjdGVkVmlzdWFsT3JkZXJPZk9m
ZnNldHMgPSBbNCwgMSwgMiwgMywgMF07CitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVy
dGlhcnktcnRsLWx0ci1pbi1sdHItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0IEBACitUaGlzIHRlc3RzIGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1
bi4KKworUEFTUworCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10
ZXJ0aWFyeS1ydGwtbHRyLWluLWx0ci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tbHRyLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1y
dGwtbHRyLWluLWx0ci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9InRlc3QiIGRpcj0ibHRyIiBjb250ZW50ZWRpdGFibGU+2aHZodix2LM8L2Rpdj4KKzxw
PlRoaXMgdGVzdHMgY2FyZXQgcmVuZGVyaW5nIGluIGEgdGVydGlhcnkgcnVuLjwvcD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hhcmVkLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CisKK2V4cGVjdGVkVmlzdWFsT3JkZXJPZk9mZnNldHMgPSBbMCwgMywgMiwgMSwgNF07
CitydW5UZXN0KCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vY2FyZXQtdGVydGlhcnktcnRsLWx0ci1pbi1ydGwtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2Nh
cmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4tcnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRlcnRpYXJ5LXJ0bC1sdHItaW4t
cnRsLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitUaGlzIHRlc3Rz
IGNhcmV0IHJlbmRlcmluZyBpbiBhIHRlcnRpYXJ5IHJ1bi4KKworUEFTUworCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL2NhcmV0LXRl
cnRpYXJ5LXJ0bC1sdHItaW4tcnRsLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3NlbGVjdGlvbi9jYXJldC10ZXJ0aWFyeS1ydGwtbHRyLWluLXJ0bC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+
Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGRpcj0icnRsIiBj
b250ZW50ZWRpdGFibGU+PHNwYW4gc3R5bGU9ImRpcmVjdGlvbjogbHRyOyB1bmljb2RlLWJpZGk6
IGVtYmVkOyI+2LHYs2FiPC9zcGFuPjwvZGl2PgorPHA+VGhpcyB0ZXN0cyBjYXJldCByZW5kZXJp
bmcgaW4gYSB0ZXJ0aWFyeSBydW4uPC9wPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9jYXJldC10
ZXJ0aWFyeS1zaGFyZWQuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworZXhwZWN0ZWRWaXN1YWxP
cmRlck9mT2Zmc2V0cyA9IFs0LCAxLCAyLCAzLCAwXTsKK3J1blRlc3QoKTsKKworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9y
ZXNvdXJjZXMvY2FyZXQtdGVydGlhcnktc2hhcmVkLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvc2VsZWN0aW9uL3Jlc291cmNlcy9jYXJldC10ZXJ0aWFyeS1zaGFyZWQuanMJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9yZXNvdXJjZXMv
Y2FyZXQtdGVydGlhcnktc2hhcmVkLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgcmV0dXJuIHJ1bkludGVyYWN0aXZlVGVzdCgxMDAwKTsKKworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICByZXR1cm4gcnVuQXV0b21hdGVkVGVz
dCgpOworfQorCitmdW5jdGlvbiBydW5BdXRvbWF0ZWRUZXN0KCkgeworICAgIHZhciBjb250YWlu
ZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworCisgICAgdmFyIHJlc3VsdHMg
PSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8PSA0OyBpKyspIHsKKyAgICAg
ICAgdmFyIGNhcmV0WCA9IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVy
UmFuZ2UoMCwgaSlbMl07CisgICAgICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0ZXN0
KS5kaXJlY3Rpb24udG9Mb3dlckNhc2UoKSA9PSAncnRsJykKKyAgICAgICAgICAgIGNhcmV0WCA9
IDEwMDAgLSBjYXJldFg7CisgICAgICAgIHJlc3VsdHMucHVzaCh7eDogY2FyZXRYLCBvZmZzZXQ6
IGl9KTsKKyAgICB9CisgICAgY29udGFpbmVyLmlubmVySFRNTCA9ICcnOworCisgICAgaWYgKGZh
aWxJZk11bHRpcGxlT2Zmc2V0c0FyZUF0U2FtZVhDb29yZGluYXRlKHJlc3VsdHMpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoZmFpbElmTWlzbWF0Y2gocmVzdWx0cywgZXhwZWN0
ZWRWaXN1YWxPcmRlck9mT2Zmc2V0cykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGxv
ZygnUEFTUycpOworICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBmYWlsSWZNdWx0aXBs
ZU9mZnNldHNBcmVBdFNhbWVYQ29vcmRpbmF0ZShyZXN1bHRzKSB7CisgICAgdmFyIHhTZXQgPSB7
fTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspIHsKKyAgICAg
ICAgaWYgKHhTZXRbcmVzdWx0c1tpXS54XSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB4
U2V0W3Jlc3VsdHNbaV0ueF0gPSB0cnVlOworICAgIH0KKworICAgIGlmIChpID09IHJlc3VsdHMu
bGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBsb2coJ0ZBSUw6IE1vcmUgdGhh
biBvbmUgb2Zmc2V0cyBjb3JyZXNwb25kIHRvIHRoZSBzYW1lIHZpc3VhbCBwb3NpdGlvbjonKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdHMubGVuZ3RoOyBpKyspCisgICAgICAgIGxv
Zygnb2Zmc2V0ICcgKyByZXN1bHRzW2ldLm9mZnNldCArICcgd2FzIGF0ICcgKyByZXN1bHRzW2ld
LngpOworICAgIGxvZygnYnV0IGV4cGVjdGVkIHRvIHNlZSBvZmZzZXRzIGluIHRoZSBvcmRlciAn
ICsgZXhwZWN0ZWRWaXN1YWxPcmRlck9mT2Zmc2V0cykKKworICAgIHJldHVybiB0cnVlOworfQor
CitmdW5jdGlvbiBmYWlsSWZNaXNtYXRjaChyZXN1bHRzLCBleHBlY3RlZCkgeworICAgIHJlc3Vs
dHNJblZpc3VhbE9yZGVyID0gcmVzdWx0cy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7cmV0dXJuIGEu
eCAtIGIueH0pOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHRzSW5WaXN1YWxPcmRl
ci5sZW5ndGg7IGkrKykgeworICAgICAgICBpZiAocmVzdWx0c0luVmlzdWFsT3JkZXJbaV0ub2Zm
c2V0ICE9IGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAorICAg
IGlmIChpID09IHJlc3VsdHNJblZpc3VhbE9yZGVyLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgdmFyIGFjdHVhbCA9IG5ldyBBcnJheSgpOworICAgIGZvciAodmFyIGogPSAw
OyBqIDwgcmVzdWx0c0luVmlzdWFsT3JkZXIubGVuZ3RoOyBqKyspCisgICAgICAgIGFjdHVhbC5w
dXNoKHJlc3VsdHNJblZpc3VhbE9yZGVyW2pdLm9mZnNldCk7CisgICAgbG9nKCdGQUlMOiBFeHBl
Y3RlZCAnICsgZXhwZWN0ZWQgKyAnIGJ1dCBnb3QgJyArIGFjdHVhbCk7CisKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKyAgICBpZiAoIWRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKSkgeworICAgICAgICB2YXIgcHJlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgncHJlJyk7CisgICAgICAgIHByZS5pZCA9ICdsb2cnOworICAgICAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKHByZSk7CisgICAgfQorCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xvZycpLmlubmVySFRNTCArPSBtZXNzYWdlICsgJ1xuJzsKK30KKworZnVuY3Rpb24g
cnVuSW50ZXJhY3RpdmVUZXN0KGludGVydmFsKSB7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0g
NDsgaSsrKQorICAgICAgICBzZXRUaW1lb3V0KCJtb3ZlQ2FyZXQoIiArIGkgKyAiKSIsIGkgKiBp
bnRlcnZhbCk7Cit9CisKK2Z1bmN0aW9uIG1vdmVDYXJldChvZmZzZXQpIHsKKyAgICB2YXIgdGV4
dE5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOworICAgIHdoaWxlICh0ZXh0
Tm9kZS5maXJzdENoaWxkKQorICAgICAgICB0ZXh0Tm9kZSA9IHRleHROb2RlLmZpcnN0Q2hpbGQ7
CisKKyAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpOworICAgIHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKS5yZW1vdmVBbGxSYW5nZXMoKTsKKyAgICByYW5nZS5zZXRTdGFydCh0ZXh0
Tm9kZSwgb2Zmc2V0KTsKKyAgICByYW5nZS5zZXRFbmQodGV4dE5vZGUsIG9mZnNldCk7CisgICAg
d2luZG93LmdldFNlbGVjdGlvbigpLmFkZFJhbmdlKHJhbmdlKTsKKyAgICBsb2dDYXJldE9mZnNl
dCgpOworfQorCitmdW5jdGlvbiBsb2dDYXJldE9mZnNldCgpIHsKKyAgICB2YXIgc2VsZWN0aW9u
ID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAgIGlmIChzZWxlY3Rpb24uaXNDb2xsYXBzZWQp
CisgICAgICAgIGxvZyhzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKS5zdGFydE9mZnNldCk7CisgICAg
ZWxzZQorICAgICAgICBsb2coc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkuc3RhcnRPZmZzZXQgKyAn
LCAnICsgc2VsZWN0aW9uLmdldFJhbmdlQXQoMCkuZW5kT2Zmc2V0KTsKK30KSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL2lucHV0L2NhcmV0LXByaW1hcnktYmlkaS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
aW5wdXQvY2FyZXQtcHJpbWFyeS1iaWRpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzk0MDEpCisr
KyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9pbnB1dC9jYXJldC1wcmltYXJ5LWJp
ZGktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDcgKzcsNyBAQAogNjogODUsNTY0
LDAsMjgKIDc6IDEwMCw1NjQsMCwyOAogODogMTE1LDU2NCwwLDI4Ci05OiAxMzEsNTY0LDAsMjgK
Kzk6IDEzMCw1NjQsMSwyOAogMTA6IDczLDU2NCwwLDI4CiAxMTogNTYsNTY0LDAsMjgKIDEyOiAx
NjksNTY0LDEsMjgKQEAgLTE3LDcgKzE3LDcgQEAKIDE2OiA4LDUzNiwwLDI4CiAxNzogMTE0LDUz
NiwwLDI4CiAxODogMTAwLDUzNiwwLDI4Ci0xOTogNDQsNTM2LDAsMjgKKzE5OiA0NCw1MzYsMSwy
OAogMjA6IDU5LDUzNiwwLDI4CiAyMTogNzQsNTM2LDAsMjgKIDIyOiA5MCw1MzYsMCwyOAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>