<?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>58294</bug_id>
          
          <creation_ts>2011-04-11 18:02:23 -0700</creation_ts>
          <short_desc>continue (3rd) experiment with moving caret by word in visual order</short_desc>
          <delta_ts>2011-04-20 15:20:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>58790</dependson>
          <blocked>25298</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Xiaomei Ji">xji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mitz</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>383725</commentid>
    <comment_count>0</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-11 18:02:23 -0700</bug_when>
    <thetext>The last patch that finish all common cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383728</commentid>
    <comment_count>1</comment_count>
      <attachid>89134</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-11 18:07:23 -0700</bug_when>
    <thetext>Created attachment 89134
work in progress

need more test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>383736</commentid>
    <comment_count>2</comment_count>
      <attachid>89134</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-11 18:18:10 -0700</bug_when>
    <thetext>Comment on attachment 89134
work in progress

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

&gt; Source/WebCore/editing/visible_units.cpp:1381
&gt; +static VisiblePosition orderedLastWordBounaryInBox(const InlineBox* box, int offset, TextDirection blockDirection)

What does &quot;ordered last word boundary&quot; mean?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384154</commentid>
    <comment_count>3</comment_count>
      <attachid>89134</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-12 10:56:35 -0700</bug_when>
    <thetext>Comment on attachment 89134
work in progress

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:1381
&gt;&gt; +static VisiblePosition orderedLastWordBounaryInBox(const InlineBox* box, int offset, TextDirection blockDirection)
&gt; 
&gt; What does &quot;ordered last word boundary&quot; mean?

Needs comments here.

Word boundaries are visually ordered. It is ordered from right to left for LTR block, and ordered from left to right for RTL block. (as comments in nextWordBreakInBoxInsideBlockWithDifferentDirectionality and previousWordBreakInBoxInsideBlockWithSameDirectionality). 
this returns the last word boundary in this ordered list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384180</commentid>
    <comment_count>4</comment_count>
      <attachid>89134</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-12 11:26:51 -0700</bug_when>
    <thetext>Comment on attachment 89134
work in progress

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

&gt;&gt;&gt; Source/WebCore/editing/visible_units.cpp:1381
&gt;&gt;&gt; +static VisiblePosition orderedLastWordBounaryInBox(const InlineBox* box, int offset, TextDirection blockDirection)
&gt;&gt; 
&gt;&gt; What does &quot;ordered last word boundary&quot; mean?
&gt; 
&gt; Needs comments here.
&gt; 
&gt; Word boundaries are visually ordered. It is ordered from right to left for LTR block, and ordered from left to right for RTL block. (as comments in nextWordBreakInBoxInsideBlockWithDifferentDirectionality and previousWordBreakInBoxInsideBlockWithSameDirectionality). 
&gt; this returns the last word boundary in this ordered list.

Oh, in that case, I don&apos;t think you need include the word &quot;ordered&quot; at all. Just say lastVisualWordBoundaryInBox or visuallyLastWordBoundaryInBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385436</commentid>
    <comment_count>5</comment_count>
      <attachid>89513</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-13 18:42:41 -0700</bug_when>
    <thetext>Created attachment 89513
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385855</commentid>
    <comment_count>6</comment_count>
      <attachid>89513</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 10:40:36 -0700</bug_when>
    <thetext>Comment on attachment 89513
patch w/ layout test

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

yay! we&apos;re almost there.

&gt; Source/WebCore/ChangeLog:14
&gt; +           and the direction of the movement, looking for visually adjacent word breaks.

Nit: s/looking for/look for/

&gt; Source/WebCore/ChangeLog:15
&gt; +        2.1 If the offset is the lestmost offset of the box,

Do you mean the minimum offset of the box?

&gt; Source/WebCore/ChangeLog:21
&gt; +            based on the directionality of the box. If the word break position is also inside
&gt; +            the box, just return it. Otherwise, collect the word breaks inside the box and

I don&apos;t think this part makes sense. Why would you collect word breaks inside the box when there are no word break inside the box?  I don&apos;t think you meant this.

&gt; Source/WebCore/ChangeLog:36
&gt; +        2. Only boundaries of the right kind (i.e. for LTR block, the boundaries where the word
&gt; +           is to the right and space is to the left, based on Firefox&apos;s behavior) are collected.

I don&apos;t really understand the sentence inside the paragraph.

&gt; Source/WebCore/ChangeLog:39
&gt; +           for LTR box, word boundaries are collected from visually right to visually left;

I think it&apos;s better to say &quot;word boundaries are collected from right to left visually in a LTR box&quot;

&gt; Source/WebCore/ChangeLog:45
&gt; +        3. Same reason as above, to avoid manually check for space character 
&gt; +           (which I do not think we should), some of the codes are inefficient. 

What is same reason as above?

&gt; Source/WebCore/ChangeLog:49
&gt; +           For example, given a LTR box in LTR block, if the movement is right, 
&gt; +           nextWordPosition() returns the boundary of the wrong kind, 
&gt; +           nextWordPosition()&apos;s nextWordPosition()&apos;s previousWordPosition() returns the right 
&gt; +           kind. 

I don&apos;t think calling something &quot;wrong&quot; and &quot;right&quot; is descriptive.

&gt; Source/WebCore/ChangeLog:51
&gt; +        4. When collect word breaks inside a box, it first computes a start position, then

Nit: when s/collect word breaks/collecting word breaks/

&gt; Source/WebCore/ChangeLog:52
&gt; +           collect the right kind of word breaks until reach the end (or beyond) the box.

Nit: s/until reach the end/until it reaches the end of/

&gt; Source/WebCore/ChangeLog:55
&gt; +           have not consider the box&apos;s bidi level, which I think they probably should.

Nit: s/have not consider/does not consider/

I don&apos;t think &quot;which I think they probably should&quot; adds any value here.  If anything, you should file a bug instead.

&gt; Source/WebCore/editing/visible_units.cpp:-1283
&gt; -    
&gt; -    if (wordBreak == previousWordBreak) {
&gt; -        isLastWordBreakInBox = true;
&gt; -        return VisiblePosition();
&gt; -    }
&gt; -
&gt; -

This seems to imply that isLastWordBreakInBox is never true in collectWordBreaksInBoxInsideBlockWithDifferntDirectionality.  We should get rid of the argument altogether. r- because of this.

&gt; Source/WebCore/editing/visible_units.cpp:1367
&gt; +static VisiblePosition nextWordBoundaryInBox(const InlineBox* box, int offset)
&gt; +{

If you make the following two changes, then this function becomes identical to previousWordBoundaryInBox except that this one calls nextWordBreakInBoxInsideBlockWithDifferentDirectionality whereas previousWordBoundaryInBox calls previousWordBreakInBoxInsideBlockWithSameDirectionality. Maybe we should combine these two functions? But naming them properly will be tricky.  Maybe findWordBoundaryInBox?

&gt; Source/WebCore/editing/visible_units.cpp:1374
&gt; +        if (wordBreak.isNotNull() &amp;&amp; (offset == invalidOffset || offsetOfWordBreak != offset))
&gt; +            return wordBreak;

It seems to be that we should break when wordBreak is null.

&gt; Source/WebCore/editing/visible_units.cpp:1376
&gt; +        if (isLastWordBreakInBox)
&gt; +            break;

Ditto; isLastWordBreakInBox is never true.

&gt; Source/WebCore/editing/visible_units.cpp:1381
&gt; +static VisiblePosition visuallyLastWordBoundaryInBox(const InlineBox* box, int offset, TextDirection blockDirection)

I don&apos;t think visually last is a good name.  It gave me a wrong impression that it&apos;s at either edge of a box (i.e. rightmost word boundary in LTR box and leftmost word boundary in RTL box).  I think visuallyPreviousWordBondaryInBox will be more appropriate.

&gt; Source/WebCore/editing/visible_units.cpp:1455
&gt; +            if (!box-&gt;isLeftToRightDirection())

I&apos;d prefer to have if (box-&gt;isLeftToRightDirection()) here and exchange the order of previousWordBoundaryInBox and nextWordBoundaryInBox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385920</commentid>
    <comment_count>7</comment_count>
      <attachid>89513</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-14 11:47:31 -0700</bug_when>
    <thetext>Comment on attachment 89513
patch w/ layout test

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

&gt; Source/WebCore/editing/visible_units.cpp:1277
&gt; +  

it is set as &quot;true&quot; at line 1289. And we need this flag to avoid search word breaks in the box in dead-loop. Please note: last == true does not necessarily mean the last word break returned is null visible position.

&gt; Source/WebCore/editing/visible_units.cpp:1368
&gt; +    int offsetOfWordBreak = 0;

Haha, I split them to make them clear and more consistent with our current function/naming convention. We mostly split such into left/right, previous/next, BoxBlockSameDirectionality/BoxBlockDifferentDirectionality in the current code style.

&gt; Source/WebCore/editing/visible_units.cpp:1377
&gt; +    }        

it will be true when the returned word break is the last in box.

&gt;&gt; Source/WebCore/editing/visible_units.cpp:1381
&gt;&gt; +static VisiblePosition visuallyLastWordBoundaryInBox(const InlineBox* box, int offset, TextDirection blockDirection)
&gt; 
&gt; I don&apos;t think visually last is a good name.  It gave me a wrong impression that it&apos;s at either edge of a box (i.e. rightmost word boundary in LTR box and leftmost word boundary in RTL box).  I think visuallyPreviousWordBondaryInBox will be more appropriate.

it does return visually last word boundary in the box when offset is invalid or the word break&apos;s offset is different from the pass-in offset.
only when the visually last is the same as the pass-in offset, it needs to return the previous one.
Maybe: visuallyLastWordBoundaryInBoxDifferentFromOffset?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385950</commentid>
    <comment_count>8</comment_count>
      <attachid>89513</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 12:20:46 -0700</bug_when>
    <thetext>Comment on attachment 89513
patch w/ layout test

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:1277
&gt;&gt; +  
&gt; 
&gt; it is set as &quot;true&quot; at line 1289. And we need this flag to avoid search word breaks in the box in dead-loop. Please note: last == true does not necessarily mean the last word break returned is null visible position.

Ah, ok.

&gt; Source/WebCore/editing/visible_units.cpp:1386
&gt; +        if (offset == invalidOffset || orderedWordBoundaries[orderedWordBoundaries.size() - 1].offsetInInlineBox != offset)

It seems like it&apos;s redundant to check against invalidOffset since offsetInInlineBox should never be invalidOffset.

&gt; Source/WebCore/editing/visible_units.cpp:1442
&gt; +        } else 
&gt; +            wordBreak = visuallyLastWordBoundaryInBox(adjacentBox, adjacentBox == box ? offset : invalidOffset, blockDirection);            

If visuallyLastWordBoundaryInBox really returns the visually last word boundary in box, then why is this correct?  Why should we be returning the visually last word boundary when the block&apos;s direction is RTL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385951</commentid>
    <comment_count>9</comment_count>
      <attachid>89513</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 12:20:47 -0700</bug_when>
    <thetext>Comment on attachment 89513
patch w/ layout test

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

&gt;&gt; Source/WebCore/editing/visible_units.cpp:1277
&gt;&gt; +  
&gt; 
&gt; it is set as &quot;true&quot; at line 1289. And we need this flag to avoid search word breaks in the box in dead-loop. Please note: last == true does not necessarily mean the last word break returned is null visible position.

Ah, ok.

&gt; Source/WebCore/editing/visible_units.cpp:1386
&gt; +        if (offset == invalidOffset || orderedWordBoundaries[orderedWordBoundaries.size() - 1].offsetInInlineBox != offset)

It seems like it&apos;s redundant to check against invalidOffset since offsetInInlineBox should never be invalidOffset.

&gt; Source/WebCore/editing/visible_units.cpp:1442
&gt; +        } else 
&gt; +            wordBreak = visuallyLastWordBoundaryInBox(adjacentBox, adjacentBox == box ? offset : invalidOffset, blockDirection);            

If visuallyLastWordBoundaryInBox really returns the visually last word boundary in box, then why is this correct?  Why should we be returning the visually last word boundary when the block&apos;s direction is RTL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385961</commentid>
    <comment_count>10</comment_count>
      <attachid>89513</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-14 12:35:17 -0700</bug_when>
    <thetext>Comment on attachment 89513
patch w/ layout test

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

&gt;&gt;&gt; Source/WebCore/editing/visible_units.cpp:1386
&gt;&gt;&gt; +        if (offset == invalidOffset || orderedWordBoundaries[orderedWordBoundaries.size() - 1].offsetInInlineBox != offset)
&gt;&gt; 
&gt;&gt; It seems like it&apos;s redundant to check against invalidOffset since offsetInInlineBox should never be invalidOffset.
&gt; 
&gt; It seems like it&apos;s redundant to check against invalidOffset since offsetInInlineBox should never be invalidOffset.

the check is done only when offset is valid. it returns the last word boundary when offset is invalid (which means the one we returned wont be same as the input caret position) or when the offset is valid but it is not equal to the last word position.

&gt; Source/WebCore/editing/visible_units.cpp:1443
&gt;          if (wordBreak.isNotNull())

When block&apos;s direction is RTL, the word boundary are collected from left to right visually. The function looks for left word boundary of the current word, it actually looks for the right-most word boundary of a previous box (or the right-most word boundary of the current box assuming that it is not the same as the word itself).  visually last word boundary in RTL block is the right-most word boundary we are looking for.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386024</commentid>
    <comment_count>11</comment_count>
      <attachid>89642</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-14 14:13:53 -0700</bug_when>
    <thetext>Created attachment 89642
patch w/ layout test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386095</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 15:15:08 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; When block&apos;s direction is RTL, the word boundary are collected from left to right visually. The function looks for left word boundary of the current word, it actually looks for the right-most word boundary of a previous box (or the right-most word boundary of the current box assuming that it is not the same as the word itself).  visually last word boundary in RTL block is the right-most word boundary we are looking for.

Ah, I finally understand. leftWordBoundary and rightWordBoundary are called only when we&apos;re at the boundary of a box.  We should rename these two functions to signify that fact or add a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386097</commentid>
    <comment_count>13</comment_count>
      <attachid>89642</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 15:16:53 -0700</bug_when>
    <thetext>Comment on attachment 89642
patch w/ layout test

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        2.3 When offset is inside the box (not at boundaries), first find the previousWordPosition or nextWordPosition

I think you need a line break before or after previousWordPosition.

&gt; Source/WebCore/ChangeLog:21
&gt; +            also inside (not at the bounadries) the same box, return it. 

Since you&apos;ve already qualified the previous &quot;inside the box&quot;, I don&apos;t think you need to repeat yourself here; i.e. remove &quot;(not at the boundaries)&quot;

&gt; Source/WebCore/ChangeLog:23
&gt; +            Otherwise (the nextWordPosition/previousWordPosition is not
&gt; +in the same box or is at the box boundary),  collect all the

What happened here??

&gt; Source/WebCore/ChangeLog:33
&gt; +           need to save InlineBox in word boundaries. Instead, the word boundaries are saved
&gt; +           as (VisiblePosition, offset) pair so there is no need to recompute VisiblePosition

I feel like this is too wordy.  Maybe you can rephrase it as &quot;as a pair (VisiblePosition, offset) to avoid recomputing VisiblePosition&quot;

&gt; Source/WebCore/ChangeLog:36
&gt; +           after we calcuated which &quot;offset&quot; is the closest one to the input offset.
&gt; +           (I think recompute VisiblePosition from offset might be the same complexity as
&gt; +            getInlineBoxAndOffset()).

These comments seem to only add noise.

&gt; Source/WebCore/ChangeLog:39
&gt; +        2. Only boundaries of the right kind are collected. By right kind, it means the 
&gt; +           left boundary of a word in LTR block and right boundary of a word in RTL block. 

I think you can put the explanation of right kind in parenthesis following the pattern as in:
We only collect boundaries of the right kind (i.e. left boundary of a word in LTR block and right boundary of a word in RTL block).

&gt; Source/WebCore/ChangeLog:43
&gt; +           So when box directionality is the same as block directionality,
&gt; +           for LTR box, word boundaries are collected from right to left visually;
&gt; +           for RTL box, offsets collected from left to right visually.

As I wrote in my previous review, this sentence doesn&apos;t make sense.  You need to rephrase &quot;for LTR box&quot; and &quot;for RTL box&quot;.  See my suggestion in the previous review.

&gt; Source/WebCore/ChangeLog:53
&gt; +        3. Because for LTR block, only left boundary of a word is collected (and for RTL block,
&gt; +           only right boundary of a word is collected), to avoid manually check for space character 
&gt; +           (which I do not think we should), some of the codes are inefficient. 
&gt; +           For example, given a LTR box in LTR block, if the movement is left to right, 
&gt; +           nextWordPosition() returns the right boundary of a word, which is not what we want,
&gt; +           nextWordPosition()&apos;s nextWordPosition()&apos;s previousWordPosition() returns
&gt; +           the left boundary of a word, and it is what we want. 

This whole paragraph is very confusing. I&apos;d revise it to something along the like of:

To find the right kinds of word boundaries, we must move back and forth between words
in some situations. For example, if we&apos;re moving to the right in a LTR box in LTR block,
we cannot simply return nextWordPosition() because it would return the right boundary
of a word. Instead, we return nextWordPosition()&apos;s nextWordPosition()&apos;s previousWordPosition().

&gt; Source/WebCore/ChangeLog:58
&gt; +           position bases on the directionality of the box and block. Those computation

Nit: s/bases/based/

Nit: These computations do not or This computation does not.

&gt; Source/WebCore/editing/visible_units.cpp:1371
&gt; +    bool isLastWordBreakInBox;
&gt; +    while (true) {

I&apos;d initialize isLastWordBreakInBox to false and do while(!isLastWordBreakInBox).

&gt; Source/WebCore/editing/visible_units.cpp:1376
&gt; +        if (isLastWordBreakInBox)
&gt; +            break;

So that I can get rid of this if statement.

&gt; Source/WebCore/editing/visible_units.cpp:1385
&gt; +    if (orderedWordBoundaries.size()) {

I would do early return instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386127</commentid>
    <comment_count>14</comment_count>
      <attachid>89674</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-14 15:49:23 -0700</bug_when>
    <thetext>Created attachment 89674
patch w/ layout test

updated per comments. Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386244</commentid>
    <comment_count>15</comment_count>
      <attachid>89674</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-14 18:05:14 -0700</bug_when>
    <thetext>Comment on attachment 89674
patch w/ layout test

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

(In reply to comment #12)
&gt; (In reply to comment #10)
&gt; &gt; When block&apos;s direction is RTL, the word boundary are collected from left to right visually. The function looks for left word boundary of the current word, it actually looks for the right-most word boundary of a previous box (or the right-most word boundary of the current box assuming that it is not the same as the word itself).  visually last word boundary in RTL block is the right-most word boundary we are looking for.
&gt; 
&gt; Ah, I finally understand. leftWordBoundary and rightWordBoundary are called only when we&apos;re at the boundary of a box.  We should rename these two functions to signify that fact or add a comment.

Please address this point.

&gt; Source/WebCore/ChangeLog:49
&gt; +           based on the directionality of the box and block. These computations do not consider the 

Nit: should probably say &quot;These computations do not currently consider&quot; to signify the fact they should in the future.

&gt; Source/WebCore/editing/visible_units.cpp:1375
&gt; +    } while (!isLastWordBreakInBox);       

Why do we need to use do-while?  isLastWordBreakInBox is always false in the first iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>386772</commentid>
    <comment_count>16</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-15 11:31:52 -0700</bug_when>
    <thetext>Committed r83996: &lt;http://trac.webkit.org/changeset/83996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387812</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-18 09:49:31 -0700</bug_when>
    <thetext>The patch was rolled out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>387821</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-18 09:58:36 -0700</bug_when>
    <thetext>The test was failing on chromium:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=editing%2Fselection%2Fmove-by-word-visually.html&amp;group=%40ToT%20-%20chromium.org

I can&apos;t really make sense of these outputs those.  They even seem like V8 or DRT bug...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389547</commentid>
    <comment_count>19</comment_count>
      <attachid>90420</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-20 14:54:56 -0700</bug_when>
    <thetext>Created attachment 90420
patch w/ layout test

firstRectForCharacterRange in chromium&apos;s DRT has bug (https://bugs.webkit.org/show_bug.cgi?id=59021).
removed caretCoordinates() from test since it is not really needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389551</commentid>
    <comment_count>20</comment_count>
      <attachid>90420</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-04-20 15:00:08 -0700</bug_when>
    <thetext>Comment on attachment 90420
patch w/ layout test

r=me assuming that removing caretCoordinates was all you did.  As Xiaomei clarified, the values computed by caretCoordinates aren&apos;t used in the test anymore so it&apos;s okay to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389552</commentid>
    <comment_count>21</comment_count>
      <attachid>90421</attachid>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-20 15:01:44 -0700</bug_when>
    <thetext>Created attachment 90421
difference from last patch (attachment 89674 which was committed in r83996) just for reference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389563</commentid>
    <comment_count>22</comment_count>
    <who name="Xiaomei Ji">xji</who>
    <bug_when>2011-04-20 15:20:52 -0700</bug_when>
    <thetext>Committed r84425: &lt;http://trac.webkit.org/changeset/84425&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89134</attachid>
            <date>2011-04-11 18:07:23 -0700</date>
            <delta_ts>2011-04-13 18:42:41 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>58294.v1</filename>
            <type>text/plain</type>
            <size>16750</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNTQ0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDQtMTEgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnRpbnVlICgzcmQpIGV4cGVyaW1lbnQgd2l0aCBtb3ZpbmcgY2Fy
ZXQgYnkgd29yZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODI5NAorCisgICAgICAgICogZWRpdGluZy92aXNpYmxlX3Vu
aXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2Nr
V2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkQm91bmRhcnlJ
bkJveCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZEJvdW5kYXJ5SW5Cb3gpOgorICAgICAg
ICAoV2ViQ29yZTo6b3JkZXJlZExhc3RXb3JkQm91bmFyeUluQm94KToKKyAgICAgICAgKFdlYkNv
cmU6OmxlZnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRXb3JkQm91bmRh
cnkpOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisKIDIwMTEtMDQtMTEgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gODM0ODMp
CisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjc0LDIwICsxMjc0LDE0IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dFdv
cmRCcmVha0luQm8KICAgICBib29sIGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPSBwcmV2aW91
c1dvcmRCcmVhay5pc05vdE51bGwoKTsKICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrID0g
aGFzU2VlbldvcmRCcmVha0luVGhpc0JveCA/IHByZXZpb3VzV29yZEJyZWFrIDogUG9zaXRpb24o
Ym94LT5yZW5kZXJlcigpLT5ub2RlKCksIGJveC0+Y2FyZXRNaW5PZmZzZXQoKSwgUG9zaXRpb246
OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CiAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRQb3Np
dGlvbih3b3JkQnJlYWspOwotICAgIAotICAgIGlmICh3b3JkQnJlYWsgPT0gcHJldmlvdXNXb3Jk
QnJlYWspIHsKLSAgICAgICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSB0cnVlOwotICAgICAgICBy
ZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Ci0gICAgfQotCi0KKyAgCiAgICAgLy8gR2l2ZW4gUlRM
IGJveCAiQUJDIERFRiIgZWl0aGVyIGZvbGxvd3MgYSBMVFIgYm94IG9yIGlzIHRoZSBmaXJzdCB2
aXN1YWwgYm94IGluIGFuIExUUiBibG9jayBhcyBhbiBleGFtcGxlLAogICAgIC8vIHRoZSB2aXN1
YWwgZGlzcGxheSBvZiB0aGUgUlRMIGJveCBpczogIigwKUooMTApSSg5KUgoOCkgKDcpRig2KUUo
NSlEKDQpICgzKUMoMilCKDEpQSgxMSkiLAogICAgIC8vIHdoZXJlIHRoZSBudW1iZXIgaW4gcGFy
ZW50aGVzaXMgcmVwcmVzZW50cyBvZmZzZXQgaW4gdmlzaWJsZVBvc2l0aW9uLiAKICAgICAvLyBT
dGFydCBhdCBvZmZzZXQgMCwgdGhlIGZpcnN0IHdvcmQgYnJlYWsgaXMgYXQgb2Zmc2V0IDMsIHRo
ZSAybmQgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgNywgYW5kIHRoZSAzcmQgd29yZCBicmVhayBz
aG91bGQgYmUgYXQgb2Zmc2V0IDAuCiAgICAgLy8gQnV0IG5leHRXb3JkUG9zaXRpb24oKSBvZiBv
ZmZzZXQgNyBpcyBvZmZzZXQgMTEsIHdoaWNoIHNob3VsZCBiZSBpZ25vcmVkLCAKICAgICAvLyBh
bmQgdGhlIHBvc2l0aW9uIGF0IG9mZnNldCAwIHNob3VsZCBiZSBtYW51YWxseSBhZGRlZCBhcyB0
aGUgbGFzdCB3b3JkIGJyZWFrIHdpdGhpbiB0aGUgYm94LgotICAgIGlmIChwb3NpdGlvbklzVmlz
dWFsbHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KHdvcmRC
cmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykpIHsKKyAgICBpZiAod29yZEJyZWFrICE9IHBy
ZXZpb3VzV29yZEJyZWFrICYmIHBvc2l0aW9uSXNWaXN1YWxseU9yZGVyZWRJbkJveEluQmxvY2tX
aXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkod29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJy
ZWFrKSkgewogICAgICAgICBpc0xhc3RXb3JkQnJlYWtJbkJveCA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm4gd29yZEJyZWFrOwogICAgIH0KQEAgLTEzNDYsMTUgKzEzNDAsMjEgQEAgc3RhdGljIHZv
aWQgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZQogICAgICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQorCitzdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94KGNvbnN0IElubGluZUJv
eCogYm94LCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcywgVGV4dERp
cmVjdGlvbiBibG9ja0RpcmVjdGlvbikKK3sKKyAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBi
bG9ja0RpcmVjdGlvbikKKyAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2Nr
V2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7CisgICAg
ZWxzZQorICAgICAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVy
bnREaXJlY3Rpb25hbGl0eShib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7ICAgICAgICAKK30K
ICAgICAKLXN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkQnJlYWtJbkJveChjb25z
dCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlv
bikKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkQm91bmRhcnlJbkJveChjb25z
dCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCkKIHsKICAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJl
YWsgPSAwOwogICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7CiAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAg
ICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRo
U2FtZURpcmVjdGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7Ci0g
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlICdlbHNlJyBjYXNlIHdoZW4gdGhlIGJveCBk
aXJlY3Rpb24gaXMgbm90IGVxdWFsIHRvIHRoZSBibG9jayBkaXJlY3Rpb24uCisgICAgICAgIHdv
cmRCcmVhayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0
aW9uYWxpdHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKICAgICAgICAgaWYg
KHdvcmRCcmVhay5pc051bGwoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBpZiAob2Zm
c2V0ID09IGludmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zmc2V0KQpAQCAt
MTM2Myw2ICsxMzYzLDM0IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gcHJldmlvdXNXb3JkQnJl
YWsKICAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7CiB9CiAKK3N0YXRpYyBWaXNpYmxlUG9z
aXRpb24gbmV4dFdvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zm
c2V0KQoreworICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7CisgICAgVmlzaWJsZVBvc2l0
aW9uIHdvcmRCcmVhazsKKyAgICBib29sIGlzTGFzdFdvcmRCcmVha0luQm94OworICAgIHdoaWxl
ICh0cnVlKSB7CisgICAgICAgIHdvcmRCcmVhayA9IG5leHRXb3JkQnJlYWtJbkJveEluc2lkZUJs
b2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldv
cmRCcmVhaywgaXNMYXN0V29yZEJyZWFrSW5Cb3gpOworICAgICAgICBpZiAod29yZEJyZWFrLmlz
Tm90TnVsbCgpICYmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvZmZzZXRPZldvcmRCcmVh
ayAhPSBvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKKyAgICAgICAgaWYg
KGlzTGFzdFdvcmRCcmVha0luQm94KQorICAgICAgICAgICAgYnJlYWs7CisgICAgfSAgICAgICAg
CisgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOworfQorICAgIAorc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBvcmRlcmVkTGFzdFdvcmRCb3VuYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gs
IGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCit7CisgICAgV29yZEJv
dW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKKyAgICBjb2xsZWN0V29yZEJyZWFr
c0luQm94KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CisgICAg
aWYgKG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKG9mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0IHx8IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5k
YXJpZXMuc2l6ZSgpIC0gMV0ub2Zmc2V0SW5JbmxpbmVCb3ggIT0gb2Zmc2V0KQorICAgICAgICAg
ICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6
ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOworICAgICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFy
aWVzLnNpemUoKSA+IDEpCisgICAgICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVz
W29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAyXS52aXNpYmxlUG9zaXRpb247CisgICAg
fQorICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKyAgICAgICAgCiBzdGF0aWMgaW50
IGdyZWF0ZXN0VmFsdWVVbmRlcihpbnQgb2Zmc2V0LCBib29sIGJveEFuZEJsb2NrQXJlSW5TYW1l
RGlyZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmll
cykKIHsKICAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpCkBAIC0xNDAwLDE0
ICsxNDI4LDE4IEBAIHN0YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2UKICAg
ICB9CiAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiB9Ci0gCisKIHN0YXRpYyBWaXNpYmxlUG9z
aXRpb24gbGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwg
VGV4dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gd29y
ZEJyZWFrOwogICAgIGZvciAgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFk
amFjZW50Qm94OyBhZGphY2VudEJveCA9IGFkamFjZW50Qm94LT5wcmV2TGVhZkNoaWxkKCkpIHsK
LSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgCi0gICAgICAgICAgICB3b3JkQnJl
YWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAoYmxvY2tEaXJl
Y3Rpb24gPT0gTFRSKSB7CisgICAgICAgICAgICBpZiAoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0
aW9uKCkpIAorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5
SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRP
ZmZzZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5l
eHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zm
c2V0IDogaW52YWxpZE9mZnNldCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdvcmRC
cmVhayA9IG9yZGVyZWRMYXN0V29yZEJvdW5hcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRC
b3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOyAgICAg
ICAgICAgIAogICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKQogICAgICAgICAgICAg
cmV0dXJuIHdvcmRCcmVhazsKICAgICB9CkBAIC0xNDE5LDkgKzE0NTEsMTMgQEAgc3RhdGljIFZp
c2libGVQb3NpdGlvbiByaWdodFdvcmRCb3VuZGFyeQogICAgIAogICAgIFZpc2libGVQb3NpdGlv
biB3b3JkQnJlYWs7CiAgICAgZm9yIChjb25zdCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94
OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBhZGphY2VudEJveC0+bmV4dExlYWZDaGlsZCgp
KSB7Ci0gICAgICAgIGlmIChibG9ja0RpcmVjdGlvbiA9PSBSVEwpCi0gICAgICAgICAgICB3b3Jk
QnJlYWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9
PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAoYmxvY2tE
aXJlY3Rpb24gPT0gUlRMKSB7CisgICAgICAgICAgICBpZiAoIWJveC0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5k
YXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFs
aWRPZmZzZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9
IG5leHRXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8g
b2Zmc2V0IDogaW52YWxpZE9mZnNldCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdv
cmRCcmVhayA9IG9yZGVyZWRMYXN0V29yZEJvdW5hcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNl
bnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOyAg
ICAgICAgICAgIAogICAgICAgICBpZiAoIXdvcmRCcmVhay5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybiB3b3JkQnJlYWs7CiAgICAgfQpAQCAtMTQ4NiwxMCArMTUyMiw3IEBAIFZpc2libGVQ
b3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFYKICAgICAgICAgcmV0dXJuIHdvcmRCcmVh
azsKICAgICAKICAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwot
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xs
ZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKTsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CiAKICAgICBpbnQgaW5kZXggPSBib3gt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGdyZWF0ZXN0VmFsdWVVbmRlcihvZmZzZXQsIGJs
b2NrRGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKSA6CiAgICAgICAgIHNt
YWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRX
b3JkQm91bmRhcmllcyk7CkBAIC0xNTI3LDEwICsxNTYwLDggQEAgVmlzaWJsZVBvc2l0aW9uIHJp
Z2h0V29yZFBvc2l0aW9uKGNvbnN0IAogICAgICAgICByZXR1cm4gd29yZEJyZWFrOwogICAgIAog
ICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgaWYgKGJv
eC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29y
ZEJvdW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveElu
c2lkZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpOworICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMsIGJsb2NrRGlyZWN0aW9uKTsKKyAgICAKICAgICBpbnQgaW5kZXggPSBib3gtPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRhcmllcykgOgogICAgICAgICBncmVhdGVz
dFZhbHVlVW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91
bmRhcmllcyk7CiAgICAgaWYgKGluZGV4ICE9IGludmFsaWRPZmZzZXQpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4MzU0NCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDExLTA0LTExICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250aW51
ZSAoM3JkKSBleHBlcmltZW50IHdpdGggbW92aW5nIGNhcmV0IGJ5IHdvcmQgaW4gdmlzdWFsIG9y
ZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgy
OTQKKworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZp
c3VhbGx5Lmh0bWw6CisKIDIwMTEtMDQtMTEgIEp1c3RpbiBOb3Zvc2FkICA8anVub3ZAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUnVzc2VsbC4KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1i
eS13b3JkLXZpc3VhbGx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODM0ODMpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQ0ICsyLDU0IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQg
PT09PQogVGVzdCAxLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBoaWog
b3BxIHJzdCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAx
MiwgMTYsIDE5LCAxOV0KKyJhYmMgZGVmIGhpaiBvcHEgcnN0Ils0LCA4LCAxMiwgMTYsIDE2XQog
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCiAiYWJjIGRlZiBoaWogb3BxIHJzdCJbMTYsIDEyLCA4LCA0
LCAwLCAwXQogVGVzdCAyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIGhp
aiBvcHEgcnN0IlswLCAxMSwgNywgMywgMywgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFsxNSwgMTEs
IDcsIDMsIDE5LCAxOV0KKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlsxNSwgMTEsIDcsIDMsIDNdCiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBoaWogb3BxIHJzdCJbMTksIDcsIDExLCAx
NSwgMCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzMsIDcsIDExLCAxNSwgMCwgMF0KKyJhYmMgZGVm
IGhpaiBvcHEgcnN0IlszLCA3LCAxMSwgMTUsIDAsIDBdCiBUZXN0IDMsIExUUjoKIE1vdmUgcmln
aHQgYnkgb25lIHdvcmQKLSJaWlogUVFRIEJCQiBDQ0MgWFhYIlswLCAxMSwgNywgMywgMywgMTld
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsxNSwgMTEsIDcsIDMsIDE5LCAxOV0KKyJaWlogUVFRIEJCQiBD
Q0MgWFhYIlsxNSwgMTEsIDcsIDMsIDNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJaWlogUVFR
IEJCQiBDQ0MgWFhYIlsxOSwgNywgMTEsIDE1LCAwLCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbMywg
NywgMTEsIDE1LCAwLCAwXQorIlpaWiBRUVEgQkJCIENDQyBYWFgiWzMsIDcsIDExLCAxNSwgMCwg
MF0KIFRlc3QgNCwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0ND
IFhYWCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMiwg
MTYsIDE5LCAxOV0KKyJaWlogUVFRIEJCQiBDQ0MgWFhYIls0LCA4LCAxMiwgMTYsIDE2XQogTW92
ZSByaWdodCBieSBvbmUgd29yZAogIlpaWiBRUVEgQkJCIENDQyBYWFgiWzE2LCAxMiwgOCwgNCwg
MCwgMF0KIFRlc3QgNSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYgWlFC
IFJJRyB1dncgeHl6IlswLCA0LCA4LCAxMSwgMjAsIDIwLCAyM10gICAgRkFJTCBleHBlY3RlZDog
WzQsIDgsIDExLCAxNiwgMjAsIDIzLCAyM10KKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbNCwg
OCwgMTEsIDE2LCAyMCwgMjBdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIFpRQiBS
SUcgdXZ3IHh5eiJbMjAsIDE2LCA0LCA4LCA0LCAwLCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbMjAs
IDE2LCAxMSwgOCwgNCwgMCwgMF0KKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMjAsIDE2LCAx
MSwgOCwgNCwgMCwgMF0KIFRlc3QgNiwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJj
IGRlZiBaUUIgUklHIHV2dyB4eXoiWzAsIDMsIDEyLCAxMiwgMTYsIDE5LCAyM10gICAgRkFJTCBl
eHBlY3RlZDogWzMsIDgsIDEyLCAxNiwgMTksIDIzLCAyM10KKyJhYmMgZGVmIFpRQiBSSUcgdXZ3
IHh5eiJbMywgOCwgMTIsIDE2LCAxOSwgMTldCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJj
IGRlZiBaUUIgUklHIHV2dyB4eXoiWzEyLCAxNiwgMTIsIDgsIDgsIDAsIDBdICAgIEZBSUwgZXhw
ZWN0ZWQ6IFsxOSwgMTYsIDEyLCA4LCAzLCAwLCAwXQorImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6
IlsxOSwgMTYsIDEyLCA4LCAzLCAwLCAwXQogVGVzdCA3LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iWlFCIGFiYyBSSUciWzAsIDQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbNCwg
OCwgMTEsIDExXQorIlpRQiBhYmMgUklHIls0LCA4LCAxMSwgMTFdCiBNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKLSJaUUIgYWJjIFJJRyJbNCwgNCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzgsIDQs
IDAsIDBdCisiWlFCIGFiYyBSSUciWzgsIDQsIDAsIDBdCiBUZXN0IDgsIFJUTDoKIE1vdmUgbGVm
dCBieSBvbmUgd29yZAotIlpRQiBhYmMgUklHIlswLCA0LCA4LCAxMV0gICAgRkFJTCBleHBlY3Rl
ZDogWzQsIDgsIDExLCAxMV0KKyJaUUIgYWJjIFJJRyJbNCwgOCwgOF0KIE1vdmUgcmlnaHQgYnkg
b25lIHdvcmQKLSJaUUIgYWJjIFJJRyJbOCwgMCwgMCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzgs
IDQsIDAsIDBdCisiWlFCIGFiYyBSSUciWzgsIDQsIDAsIDBdCitUZXN0IDksIExUUjoKK01vdmUg
cmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJb
NCwgOCwgMTIsIDE5LCAxNSwgMjQsIDI4LCAzMiwgMzJdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJbMzIsIDI4LCAyNCwgMTUsIDE5
LCAxMiwgOCwgNCwgMCwgMF0KK1Rlc3QgMTAsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAor
ImFiYyBkZWYgaGlqIEFBQSBCQkIgV1dXIG9wciB1dncgeHl6Ils3LCAzLCAxMiwgMTYsIDIwLCAy
NCwgMzEsIDI3LCAyN10KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBBQUEg
QkJCIFdXVyBvcHIgdXZ3IHh5eiJbMjcsIDMxLCAyNCwgMjAsIDE2LCAxMiwgMywgNywgMCwgMF0K
IAogPT09PT09PT0gTW92ZSBCeSBXb3JkIFNwZWNpZmljIFRlc3QgPT09PQogVGVzdCAxCkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdv
cmQtdmlzdWFsbHkuaHRtbAkocmV2aXNpb24gODM0ODMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
OTIsMTcgKzkyLDEwIEBAIGZ1bmN0aW9uIHZhbGlkYXRlRGF0YShwb3NpdGlvbnMpCiAKIGZ1bmN0
aW9uIGNvbGxlY3RXb3JkQnJlYWtzKHRlc3QsIHNlYXJjaERpcmVjdGlvbikKIHsKLSAgICBpZiAo
c2VhcmNoRGlyZWN0aW9uID09ICJyaWdodCIpIHsKLSAgICAgICAgaWYgKHRlc3QuZ2V0QXR0cmli
dXRlKCJkaXIiKSA9PSAnbHRyJykgCi0gICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRs
ZS5zcGxpdCgifCIpWzBdLnNwbGl0KCIgIik7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAgICB3
b3JkQnJlYWtzID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzFdLnNwbGl0KCIgIik7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgaWYgKHRlc3QuZ2V0QXR0cmlidXRlKCJkaXIiKSA9PSAnbHRyJykgCi0g
ICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzFdLnNwbGl0KCIg
Iik7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRsZS5z
cGxpdCgifCIpWzBdLnNwbGl0KCIgIik7Ci0gICAgfQorICAgIGlmIChzZWFyY2hEaXJlY3Rpb24g
PT0gInJpZ2h0IikgCisgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8Iilb
MF0uc3BsaXQoIiAiKTsKKyAgICBlbHNlCisgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxl
LnNwbGl0KCJ8IilbMV0uc3BsaXQoIiAiKTsKIH0KIAogZnVuY3Rpb24gbW92ZUJ5V29yZChzZWws
IHRlc3QsIHNlYXJjaERpcmVjdGlvbiwgZGlyKQpAQCAtMjE1LDE2ICsyMDgsMzEgQEAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIDwvaGVhZD4KIDxib2R5PgogPGRpdiBpZD0idGVz
dE1vdmVCeVdvcmQiPgotPCEtLSBUaGUgbnVtYmVycyBwdXQgaW4gdGl0bGUgYXJlIHN0YXJ0aW5n
IHdvcmQgYm91bmRhcmllcy4KLVRoZSBudW1iZXJzIHByaW50ZWQgb3V0IGluIHRoZSBvdXRwdXQg
YXJlIGVuZGluZyB3b3JkIGJvdW5kYXJpZXMuIC0tPgotPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEyIDE2IDE5fDE5IDE2IDEyIDggNCAwIiBjb250
ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2PgotPGRpdiBkaXI9cnRsIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzIDE5fDE5IDMgNyAxMSAxNSAw
IiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2PgotPGRpdiBkaXI9bHRy
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzIDE5fDE5IDMgNyAx
MSAxNSAwIiBjb250ZW50ZWRpdGFibGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteSINen16fX
pzwvZGl2PgotPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAg
NCA4IDEyIDE2IDE5fDE5IDE2IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+16nXqdepINeg16DX
oCDXkdeR15Eg15LXkteSINen16fXpzwvZGl2PgotPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21v
dmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExIDE2IDIwIDIzfDIzIDIwIDE2IDExIDggNCAwIiBj
b250ZW50ZWRpdGFibGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2dyB4eXo8L2Rpdj4KLTxkaXYg
ZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDMgOCAxMiAxNiAxOSAy
M3wyMyAxOSAxNiAxMiA4IDMgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh15jX
liB1dncgeHl6PC9kaXY+Cis8IS0tIAorVGhlIG51bWJlcnMgcHV0IGluIHRpdGxlIGFyZSBzdGFy
dGluZyB3b3JkIGJvdW5kYXJpZXMuCitUaGUgbnVtYmVycyBwcmludGVkIG91dCBpbiB0aGUgb3V0
cHV0IGFyZSBlbmRpbmcgd29yZCBib3VuZGFyaWVzLgorCitUaGUgc2VxdWVuY2Ugb24gdGhlIGxl
ZnQgb2YgInwiIGlzIHdvcmQgYm91bmRhcmllcyB3aGVuIG1vdmluZyBjYXJldCB0byByaWdodC4K
KworVGhlIHNlcXVlbmNlIG9uIHRoZSByaWdodCBvZiAifCIgaXMgd29yZCBib3VuZGFyaWVzIHdo
ZW4gbW92aW5nIGNhcmV0IHRvIGxlZnQuCistLT4KKzwhLS0gcHVyZSBFbmdsaXNoIC0tPgorPGRp
diBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEyIDE2fDE5
IDE2IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2Pgor
PGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjE5IDMgNyAxMSAx
NSAwfDAgMTUgMTEgNyAzIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2
PgorCis8IS0tIHB1cmUgSGVicmV3IC0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzfDE5IDMgNyAxMSAxNSAwIiBjb250ZW50ZWRpdGFi
bGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteSINen16fXpzwvZGl2PgorPGRpdiBkaXI9cnRs
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjE5IDE2IDEyIDggNCAwfDAgNCA4IDEy
IDE2IiBjb250ZW50ZWRpdGFibGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteSINen16fXpzwv
ZGl2PgorCis8IS0tIGJpZGkgdGV4dCAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMSAxNiAyMHwyMyAyMCAxNiAxMSA4IDQgMCIgY29udGVu
dGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh15jXliB1dncgeHl6PC9kaXY+Cis8ZGl2IGRpcj1y
dGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMjMgMTkgMTYgMTIgOCAzIDB8MCAz
IDggMTIgMTYgMTkiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmINep16DXkSDXodeY15YgdXZ3IHh5
ejwvZGl2PgorCiA8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0i
MCA0IDggMTF8MTEgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT7Xqdeg15EgYWJjINeh15jXljwvZGl2
PgotPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEx
fDExIDggNCAwIiBjb250ZW50ZWRpdGFibGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KKzxkaXYg
ZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIxMSA4IDQgMHwwIDQgOCIg
Y29udGVudGVkaXRhYmxlPtep16DXkSBhYmMg16HXmNeWPC9kaXY+CisKKzxkaXYgZGlyPWx0ciBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxOSAxNSAyNCAyOCAzMnwz
NSAzMiAyOCAyNCAxNSAxOSAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqINeQ
15DXkCDXkdeR15Eg16bXptemIG9wciB1dncgeHl6PC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMzUgMjcgMzEgMjQgMjAgMTYgMTIgMyA3IDB8MCA3
IDMgMTIgMTYgMjAgMjQgMzEgMjciIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhpaiDXkNeQ15Ag
15HXkdeRINem16bXpiBvcHIgdXZ3IHh5ejwvZGl2PgogCiA8IS0tIFRoZSBjb250ZW50IGluIHRp
dGxlIG1lYW5zICJzdGFydE9mZnNldEluQ3VycmVudE5vZGUgbW92aW5nRGlyZWN0aW9uQnlXb3Jk
IGVuZGluZ05vZGUgZW5kaW5nT2Zmc2V0SW5FbmRpbmdOb2RlIiAtLT4KIDxkaXYgaWQ9ImRpdl8x
IiBjb250ZW50ZWRpdGFibGU+15DXkNeQIDxzcGFuIGlkPSJzcGFuXzEiIGNsYXNzPSJzcGVjaWZp
Y190ZXN0IiB0aXRsZT0iMSBsZWZ0IGRpdl8xIDAiPteR15E8L3NwYW4+PC9kaXY+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89513</attachid>
            <date>2011-04-13 18:42:41 -0700</date>
            <delta_ts>2011-04-14 14:14:06 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>58294.v1</filename>
            <type>text/plain</type>
            <size>38577</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzAgQEAKKzIwMTEtMDQtMTMgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnRpbnVlICgzcmQpIGV4cGVyaW1lbnQgd2l0aCBtb3ZpbmcgY2Fy
ZXQgYnkgd29yZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODI5NAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxvbmcgd2l0
aCByODI1ODggYW5kIHI4MzQ4MyBpbXBsZW1lbnRzIG1vdmluZyBjYXJldCBieQorICAgICAgICB3
b3JkIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgCisgICAgICAgIFRoZSBvdmVyYWxsIGFsZ29y
aXRobSBpczoKKyAgICAgICAgMS4gRmlyc3QgZ2V0IHRoZSBJbmxpbmVCb3ggYW5kIG9mZnNldCBv
ZiB0aGUgcGFzcy1pbiBWaXNpYmxlUG9zaXRpb24uCisgICAgICAgIDIuIEJhc2VkIG9uIHRoZSBw
b3NpdGlvbiAobGVmdCBib3VuZGFyeSwgbWlkZGxlLCByaWdodCBib3VuZGFyeSkgb2YgdGhlIG9m
ZnNldCAKKyAgICAgICAgICAgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdmVtZW50LCBsb29r
aW5nIGZvciB2aXN1YWxseSBhZGphY2VudCB3b3JkIGJyZWFrcy4KKyAgICAgICAgMi4xIElmIHRo
ZSBvZmZzZXQgaXMgdGhlIGxlc3Rtb3N0IG9mZnNldCBvZiB0aGUgYm94LAorICAgICAgICAgICAg
cmV0dXJuIHRoZSByaWdodG1vc3Qgd29yZCBib3VuZGFyeSBpbiBwcmV2aW91cyBib3hlcyBpZiBt
b3ZpbmcgbGVmdC4KKyAgICAgICAgICAgIHJldHVybiB0aGUgbGVmdG1vc3Qgd29yZCBib3VuZGFy
eSBpbiBib3ggYW5kIG5leHQgYm94ZXMgaWYgbW92aW5nIHJpZ2h0LgorICAgICAgICAyLjIgU2lt
aWxhciBmb3IgdGhlIGNhc2Ugd2hlbiBvZmZzZXQgaXMgYXQgdGhlIG1heGltdW0gb2Zmc2V0IG9m
IHRoZSBib3guCisgICAgICAgIDIuMyBXaGVuIG9mZnNldCBpcyBpbnNpZGUgdGhlIGJveCAobm90
IGF0IGJvdW5kYXJpZXMpLCBmaXJzdCBmaW5kIGEgd29yZCBicmVhayBwb3NpdGlvbgorICAgICAg
ICAgICAgYmFzZWQgb24gdGhlIGRpcmVjdGlvbmFsaXR5IG9mIHRoZSBib3guIElmIHRoZSB3b3Jk
IGJyZWFrIHBvc2l0aW9uIGlzIGFsc28gaW5zaWRlCisgICAgICAgICAgICB0aGUgYm94LCBqdXN0
IHJldHVybiBpdC4gT3RoZXJ3aXNlLCBjb2xsZWN0IHRoZSB3b3JkIGJyZWFrcyBpbnNpZGUgdGhl
IGJveCBhbmQKKyAgICAgICAgICAgIHNlYXJjaCBmb3IgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBp
bnB1dCAib2Zmc2V0IiBiYXNlZCBvbiBib3ggZGlyZWN0aW9uYWxpdHksIGJsb2NrCisgICAgICAg
ICAgICBkaXJlY3Rpb25hbGl0eSwgYW5kIG1vdmVtZW50IGRpcmVjdGlvbi4gQ29udGludWUgc2Vh
cmNoIGluIGFkamFjZW50IGJveGVzIGlmIG5lZWRlZC4KKworICAgICAgICBOb3RlczoKKyAgICAg
ICAgMS4gV29yZCBib3VuZGFyaWVzIGFyZSBjb2xsZWN0ZWQgb25lIGJveCBhdCBhIHRpbWUuIE9u
bHkgd2hlbiBhIGJvdW5kYXJ5IHRoYXQgaXMgCisgICAgICAgICAgIGNsb3Nlc3QgdG8gdGhlIGlu
cHV0IHBvc2l0aW9uIChpbiB0aGUgbW92aW5nIGRpcmVjdGlvbikgaXMgbm90IGF2YWlsYWJsZSBp
biAKKyAgICAgICAgICAgY3VycmVudCBib3gsIHdvcmQgYm91bmRhcmllcyBpbiBhZGphY2VudCBi
b3ggd2lsbCBiZSBjb2xsZWN0ZWQuIFNvLCB0aGVyZSBpcyBubworICAgICAgICAgICBuZWVkIHRv
IHNhdmUgSW5saW5lQm94IGluIHdvcmQgYm91bmRhcmllcy4gSW5zdGVhZCwgdGhlIHdvcmQgYm91
bmRhcmllcyBhcmUgc2F2ZWQKKyAgICAgICAgICAgYXMgKFZpc2libGVQb3NpdGlvbiwgb2Zmc2V0
KSBwYWlyIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVjb21wdXRlIFZpc2libGVQb3NpdGlvbgor
ICAgICAgICAgICBhZnRlciB3ZSBjYWxjdWF0ZWQgd2hpY2ggIm9mZnNldCIgaXMgdGhlIGNsb3Nl
c3Qgb25lIHRvIHRoZSBpbnB1dCBvZmZzZXQuCisgICAgICAgICAgIChJIHRoaW5rIHJlY29tcHV0
ZSBWaXNpYmxlUG9zaXRpb24gZnJvbSBvZmZzZXQgbWlnaHQgYmUgdGhlIHNhbWUgY29tcGxleGl0
eSBhcworICAgICAgICAgICAgZ2V0SW5saW5lQm94QW5kT2Zmc2V0KCkpLgorIAorICAgICAgICAy
LiBPbmx5IGJvdW5kYXJpZXMgb2YgdGhlIHJpZ2h0IGtpbmQgKGkuZS4gZm9yIExUUiBibG9jaywg
dGhlIGJvdW5kYXJpZXMgd2hlcmUgdGhlIHdvcmQKKyAgICAgICAgICAgaXMgdG8gdGhlIHJpZ2h0
IGFuZCBzcGFjZSBpcyB0byB0aGUgbGVmdCwgYmFzZWQgb24gRmlyZWZveCdzIGJlaGF2aW9yKSBh
cmUgY29sbGVjdGVkLgorICAgICAgICAgICBBbmQgd29yZCBib3VuZGFyaWVzIGFyZSBjb2xsZWN0
ZWQgdXNpbmcgcHJldmlvdXNXb3JkUG9zaXRpb24oKSBhbmQgbmV4dFdvcmRQb3NpdGlvbigpLgor
ICAgICAgICAgICBTbyB3aGVuIGJveCBkaXJlY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyBibG9j
ayBkaXJlY3Rpb25hbGl0eSwKKyAgICAgICAgICAgZm9yIExUUiBib3gsIHdvcmQgYm91bmRhcmll
cyBhcmUgY29sbGVjdGVkIGZyb20gdmlzdWFsbHkgcmlnaHQgdG8gdmlzdWFsbHkgbGVmdDsKKyAg
ICAgICAgICAgZm9yIFJUTCBib3gsIG9mZnNldHMgY29sbGVjdGVkIGZyb20gdmlzdWFsbHkgbGVm
dCB0byAgdmlzdWFsbHkgcmlnaHQuCisgICAgICAgICAgIEl0IGlzIHRoZSBvdGhlciB3YXkgYXJv
dW5kIHdoZW4gYm94IGRpcmVjdGlvbmFsaXR5IGlzIGRpZmZlcmVudCBmcm9tIGJsb2NrIAorICAg
ICAgICAgICBkaXJlY3Rpb25hbGl0eS4KKworICAgICAgICAzLiBTYW1lIHJlYXNvbiBhcyBhYm92
ZSwgdG8gYXZvaWQgbWFudWFsbHkgY2hlY2sgZm9yIHNwYWNlIGNoYXJhY3RlciAKKyAgICAgICAg
ICAgKHdoaWNoIEkgZG8gbm90IHRoaW5rIHdlIHNob3VsZCksIHNvbWUgb2YgdGhlIGNvZGVzIGFy
ZSBpbmVmZmljaWVudC4gCisgICAgICAgICAgIEZvciBleGFtcGxlLCBnaXZlbiBhIExUUiBib3gg
aW4gTFRSIGJsb2NrLCBpZiB0aGUgbW92ZW1lbnQgaXMgcmlnaHQsIAorICAgICAgICAgICBuZXh0
V29yZFBvc2l0aW9uKCkgcmV0dXJucyB0aGUgYm91bmRhcnkgb2YgdGhlIHdyb25nIGtpbmQsIAor
ICAgICAgICAgICBuZXh0V29yZFBvc2l0aW9uKCkncyBuZXh0V29yZFBvc2l0aW9uKCkncyBwcmV2
aW91c1dvcmRQb3NpdGlvbigpIHJldHVybnMgdGhlIHJpZ2h0IAorICAgICAgICAgICBraW5kLiAK
KworICAgICAgICA0LiBXaGVuIGNvbGxlY3Qgd29yZCBicmVha3MgaW5zaWRlIGEgYm94LCBpdCBm
aXJzdCBjb21wdXRlcyBhIHN0YXJ0IHBvc2l0aW9uLCB0aGVuCisgICAgICAgICAgIGNvbGxlY3Qg
dGhlIHJpZ2h0IGtpbmQgb2Ygd29yZCBicmVha3MgdW50aWwgcmVhY2ggdGhlIGVuZCAob3IgYmV5
b25kKSB0aGUgYm94LgorICAgICAgICAgICBJbiB0aGUgbWVhbndoaWxlLCBpdCBtaWdodCBuZWVk
IHNwZWNpYWwgaGFuZGxpbmcgb24gdGhlIHJpZ2h0bW9zdCBvciBsZWZ0bW9zdAorICAgICAgICAg
ICBwb3NpdGlvbiBiYXNlcyBvbiB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhlIGJveCBhbmQgYmxv
Y2suIFRob3NlIGNvbXB1dGF0aW9uCisgICAgICAgICAgIGhhdmUgbm90IGNvbnNpZGVyIHRoZSBi
b3gncyBiaWRpIGxldmVsLCB3aGljaCBJIHRoaW5rIHRoZXkgcHJvYmFibHkgc2hvdWxkLgorCisg
ICAgICAgICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5l
eHRXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KToK
KyAgICAgICAgKFdlYkNvcmU6OmNvbGxlY3RXb3JkQnJlYWtzSW5Cb3gpOgorICAgICAgICAoV2Vi
Q29yZTo6cHJldmlvdXNXb3JkQm91bmRhcnlJbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0
V29yZEJvdW5kYXJ5SW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsbHlMYXN0V29yZEJv
dW5kYXJ5SW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRCb3VuZGFyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpyaWdodFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0
V29yZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0aW9uKToKKwog
MjAxMS0wNC0xMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy92aXNpYmxlX3VuaXRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L3Zpc2libGVfdW5pdHMuY3BwCShyZXZpc2lvbiA4MzQ4MykKKysrIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzQsMjAgKzEyNzQs
MTQgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJyZWFrSW5CbwogICAgIGJvb2wg
aGFzU2VlbldvcmRCcmVha0luVGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgp
OwogICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlz
Qm94ID8gcHJldmlvdXNXb3JkQnJlYWsgOiBQb3NpdGlvbihib3gtPnJlbmRlcmVyKCktPm5vZGUo
KSwgYm94LT5jYXJldE1pbk9mZnNldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5j
aG9yKTsKICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZFBvc2l0aW9uKHdvcmRCcmVhayk7Ci0gICAg
Ci0gICAgaWYgKHdvcmRCcmVhayA9PSBwcmV2aW91c1dvcmRCcmVhaykgewotICAgICAgICBpc0xh
c3RXb3JkQnJlYWtJbkJveCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24o
KTsKLSAgICB9Ci0KLQorICAKICAgICAvLyBHaXZlbiBSVEwgYm94ICJBQkMgREVGIiBlaXRoZXIg
Zm9sbG93cyBhIExUUiBib3ggb3IgaXMgdGhlIGZpcnN0IHZpc3VhbCBib3ggaW4gYW4gTFRSIGJs
b2NrIGFzIGFuIGV4YW1wbGUsCiAgICAgLy8gdGhlIHZpc3VhbCBkaXNwbGF5IG9mIHRoZSBSVEwg
Ym94IGlzOiAiKDApSigxMClJKDkpSCg4KSAoNylGKDYpRSg1KUQoNCkgKDMpQygyKUIoMSlBKDEx
KSIsCiAgICAgLy8gd2hlcmUgdGhlIG51bWJlciBpbiBwYXJlbnRoZXNpcyByZXByZXNlbnRzIG9m
ZnNldCBpbiB2aXNpYmxlUG9zaXRpb24uIAogICAgIC8vIFN0YXJ0IGF0IG9mZnNldCAwLCB0aGUg
Zmlyc3Qgd29yZCBicmVhayBpcyBhdCBvZmZzZXQgMywgdGhlIDJuZCB3b3JkIGJyZWFrIGlzIGF0
IG9mZnNldCA3LCBhbmQgdGhlIDNyZCB3b3JkIGJyZWFrIHNob3VsZCBiZSBhdCBvZmZzZXQgMC4K
ICAgICAvLyBCdXQgbmV4dFdvcmRQb3NpdGlvbigpIG9mIG9mZnNldCA3IGlzIG9mZnNldCAxMSwg
d2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQsIAogICAgIC8vIGFuZCB0aGUgcG9zaXRpb24gYXQgb2Zm
c2V0IDAgc2hvdWxkIGJlIG1hbnVhbGx5IGFkZGVkIGFzIHRoZSBsYXN0IHdvcmQgYnJlYWsgd2l0
aGluIHRoZSBib3guCi0gICAgaWYgKHBvc2l0aW9uSXNWaXN1YWxseU9yZGVyZWRJbkJveEluQmxv
Y2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkod29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29y
ZEJyZWFrKSkgeworICAgIGlmICh3b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9z
aXRpb25Jc1Zpc3VhbGx5T3JkZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eSh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7CiAgICAgICAgIGlzTGFz
dFdvcmRCcmVha0luQm94ID0gZmFsc2U7CiAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7CiAgICAg
fQpAQCAtMTM0NiwxNSArMTM0MCwyMSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0lu
Qm94SW5zaWRlCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiB9CisKK3N0YXRpYyB2b2lkIGNv
bGxlY3RXb3JkQnJlYWtzSW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZl
Y3RvciYgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9u
KQoreworICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQorICAgICAg
ICBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5
KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKKyAgICBlbHNlCisgICAgICAgIGNvbGxlY3RX
b3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsgICAgICAgIAorfQogICAgIAotc3RhdGljIFZpc2libGVQ
b3NpdGlvbiBwcmV2aW91c1dvcmRCcmVha0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQg
b2Zmc2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQorc3RhdGljIFZpc2libGVQb3Np
dGlvbiBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQg
b2Zmc2V0KQogewogICAgIGludCBvZmZzZXRPZldvcmRCcmVhayA9IDA7CiAgICAgVmlzaWJsZVBv
c2l0aW9uIHdvcmRCcmVhazsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoYm94LT5k
aXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IHBy
ZXZpb3VzV29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94
LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrKTsKLSAgICAgICAgLy8gRklYTUU6IEltcGxl
bWVudCB0aGUgJ2Vsc2UnIGNhc2Ugd2hlbiB0aGUgYm94IGRpcmVjdGlvbiBpcyBub3QgZXF1YWwg
dG8gdGhlIGJsb2NrIGRpcmVjdGlvbi4KKyAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3Jk
QnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIHdvcmRCcmVh
aywgb2Zmc2V0T2ZXb3JkQnJlYWspOwogICAgICAgICBpZiAod29yZEJyZWFrLmlzTnVsbCgpKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8
fCBvZmZzZXRPZldvcmRCcmVhayAhPSBvZmZzZXQpCkBAIC0xMzYzLDYgKzEzNjMsMzQgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRCcmVhawogICAgIHJldHVybiBWaXNpYmxl
UG9zaXRpb24oKTsKIH0KIAorc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJvdW5kYXJ5
SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQpCit7CisgICAgaW50IG9mZnNl
dE9mV29yZEJyZWFrID0gMDsKKyAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOworICAgIGJv
b2wgaXNMYXN0V29yZEJyZWFrSW5Cb3g7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgd29y
ZEJyZWFrID0gbmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0
aW9uYWxpdHkoYm94LCB3b3JkQnJlYWssIG9mZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJl
YWtJbkJveCk7CisgICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9
PSBpbnZhbGlkT2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkpCisgICAgICAg
ICAgICByZXR1cm4gd29yZEJyZWFrOworICAgICAgICBpZiAoaXNMYXN0V29yZEJyZWFrSW5Cb3gp
CisgICAgICAgICAgICBicmVhazsKKyAgICB9ICAgICAgICAKKyAgICByZXR1cm4gVmlzaWJsZVBv
c2l0aW9uKCk7Cit9CisgICAgCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZpc3VhbGx5TGFzdFdv
cmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGly
ZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQoreworICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVk
V29yZEJvdW5kYXJpZXM7CisgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gsIG9yZGVyZWRX
b3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOworICAgIGlmIChvcmRlcmVkV29yZEJvdW5k
YXJpZXMuc2l6ZSgpKSB7CisgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBv
cmRlcmVkV29yZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9m
ZnNldEluSW5saW5lQm94ICE9IG9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBvcmRlcmVkV29y
ZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLnZpc2libGVQb3Np
dGlvbjsKKyAgICAgICAgaWYgKG9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgPiAxKQorICAg
ICAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJp
ZXMuc2l6ZSgpIC0gMl0udmlzaWJsZVBvc2l0aW9uOworICAgIH0KKyAgICByZXR1cm4gVmlzaWJs
ZVBvc2l0aW9uKCk7Cit9CisgICAgICAgIAogc3RhdGljIGludCBncmVhdGVzdFZhbHVlVW5kZXIo
aW50IG9mZnNldCwgYm9vbCBib3hBbmRCbG9ja0FyZUluU2FtZURpcmVjdGlvbiwgY29uc3QgV29y
ZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMpCiB7CiAgICAgaWYgKCFvcmRl
cmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKQpAQCAtMTQwMCwxNCArMTQyOCwxOCBAQCBzdGF0aWMg
aW50IHNtYWxsZXN0T2Zmc2V0QWJvdmUoaW50IG9mZnNlCiAgICAgfQogICAgIHJldHVybiBpbnZh
bGlkT2Zmc2V0OwogfQotIAorCiBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3JkQm91bmRh
cnkoY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tE
aXJlY3Rpb24pCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsKICAgICBmb3IgIChj
b25zdCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRC
b3ggPSBhZGphY2VudEJveC0+cHJldkxlYWZDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChibG9ja0Rp
cmVjdGlvbiA9PSBMVFIpIAotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJl
YWtJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxp
ZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
ZSAiZWxzZSIgY2FzZS4KKyAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgeworICAg
ICAgICAgICAgaWYgKGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKSAKKyAgICAgICAgICAg
ICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBh
ZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3go
YWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQp
OworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3b3JkQnJlYWsgPSB2aXN1YWxseUxhc3RX
b3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0
IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOyAgICAgICAgICAgIAogICAgICAgICBp
ZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsK
ICAgICB9CkBAIC0xNDE5LDkgKzE0NTEsMTMgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiByaWdo
dFdvcmRCb3VuZGFyeQogICAgIAogICAgIFZpc2libGVQb3NpdGlvbiB3b3JkQnJlYWs7CiAgICAg
Zm9yIChjb25zdCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94OyBhZGphY2VudEJveDsgYWRq
YWNlbnRCb3ggPSBhZGphY2VudEJveC0+bmV4dExlYWZDaGlsZCgpKSB7Ci0gICAgICAgIGlmIChi
bG9ja0RpcmVjdGlvbiA9PSBSVEwpCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dv
cmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBp
bnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1l
bnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAoYmxvY2tEaXJlY3Rpb24gPT0gUlRMKSB7
CisgICAgICAgICAgICBpZiAoIWJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlvbigpKQorICAgICAg
ICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRC
b3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRXb3JkQm91bmRhcnlJ
bkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9m
ZnNldCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdvcmRCcmVhayA9IHZpc3VhbGx5
TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBv
ZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7ICAgICAgICAgICAgCiAgICAg
ICAgIGlmICghd29yZEJyZWFrLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVh
azsKICAgICB9CkBAIC0xNDg2LDEwICsxNTIyLDcgQEAgVmlzaWJsZVBvc2l0aW9uIGxlZnRXb3Jk
UG9zaXRpb24oY29uc3QgVgogICAgICAgICByZXR1cm4gd29yZEJyZWFrOwogICAgIAogICAgIFdv
cmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgaWYgKGJveC0+ZGly
ZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5C
b3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJs
b2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMp
OworICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMs
IGJsb2NrRGlyZWN0aW9uKTsKIAogICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpID8gZ3JlYXRlc3RWYWx1ZVVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0g
TFRSLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpIDoKICAgICAgICAgc21hbGxlc3RPZmZzZXRBYm92
ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsK
QEAgLTE1MjcsMTAgKzE1NjAsOCBAQCBWaXNpYmxlUG9zaXRpb24gcmlnaHRXb3JkUG9zaXRpb24o
Y29uc3QgCiAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7CiAgICAgCiAgICAgV29yZEJvdW5kYXJ5
VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKLSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9
PSBibG9ja0RpcmVjdGlvbikKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJs
b2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0g
ICAgZWxzZQotICAgICAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoRGlm
ZmVybnREaXJlY3Rpb25hbGl0eShib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7CisgICAgY29s
bGVjdFdvcmRCcmVha3NJbkJveChib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJl
Y3Rpb24pOworICAgIAogICAgIGludCBpbmRleCA9IGJveC0+aXNMZWZ0VG9SaWdodERpcmVjdGlv
bigpID8gc21hbGxlc3RPZmZzZXRBYm92ZShvZmZzZXQsIGJsb2NrRGlyZWN0aW9uID09IExUUiwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKSA6CiAgICAgICAgIGdyZWF0ZXN0VmFsdWVVbmRlcihvZmZz
ZXQsIGJsb2NrRGlyZWN0aW9uID09IFJUTCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKICAgICBp
ZiAoaW5kZXggIT0gaW52YWxpZE9mZnNldCkKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODAwKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMDQtMTMgIFhpYW9tZWkgSmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvbnRpbnVlICgzcmQpIGV4cGVyaW1l
bnQgd2l0aCBtb3ZpbmcgY2FyZXQgYnkgd29yZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODI5NAorCisgICAgICAgICog
ZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRtbDoKKwog
MjAxMS0wNC0xMyAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcmViYXNlbGluZSA0IHRlc3RzIGFkZGVkIGFzIHI4Mzc4Ny4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODM0ODMpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yLDQ0ICsyLDE4OSBAQAogPT09PT09PT0gTW92ZSBCeSBXb3JkID09
PT0KIFRlc3QgMSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYgaGlqIG9w
cSByc3QiWzAsIDgsIDEyLCAxNiwgMTYsIDE5XSAgICBGQUlMIGV4cGVjdGVkOiBbNCwgOCwgMTIs
IDE2LCAxOSwgMTldCisiYWJjIGRlZiBoaWogb3BxIHJzdCJbMCwgNCwgOCwgMTIsIDE2XQogTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBoaWogb3BxIHJzdCJbMTYsIDEyLCA4LCA0LCAw
LCAwXQotVGVzdCAyLCBSVEw6CisiYWJjIGRlZiBoaWogb3BxIHJzdCJbMTksIDE2LCAxMiwgOCwg
NCwgMF0KK1Rlc3QgMiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlq
IG9wcSByc3QiWzAsIDQsIDgsIDEyLCAxNl0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFiYyBk
ZWYgaGlqIG9wcSByc3QiWzE5LCAxNiwgMTIsIDgsIDQsIDBdCitUZXN0IDMsIFJUTDoKK01vdmUg
bGVmdCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlqIG9wcSByc3QiWzAsIDE1LCAxMSwgNywgM10K
K01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlsxOSwgMywgNywg
MTEsIDE1LCAwXQorVGVzdCA0LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiWlpaIFFR
USBCQkIgQ0NDIFhYWCJbMCwgMTUsIDExLCA3LCAzXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisi
WlpaIFFRUSBCQkIgQ0NDIFhYWCJbMTksIDMsIDcsIDExLCAxNSwgMF0KK1Rlc3QgNSwgUlRMOgor
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMCwgNCwgOCwgMTIs
IDE2XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIlpaWiBRUVEgQkJCIENDQyBYWFgiWzE5LCAx
NiwgMTIsIDgsIDQsIDBdCitUZXN0IDYsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJh
YmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJbMCwgNCwgOCwgMTIsIDE5LCAxNSwg
MjQsIDI4LCAzMl0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlqIEFBQSBCQkIg
V1dXIG9wciB1dncgeHl6IlszNSwgMzIsIDI4LCAyNCwgMTUsIDE5LCAxMiwgOCwgNCwgMF0KK1Rl
c3QgNywgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogQUFBIEJCQiBX
V1cgb3ByIHV2dyB4eXoiWzAsIDcsIDMsIDEyLCAxNiwgMjAsIDI0LCAzMSwgMjddCitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogQUFBIEJCQiBXV1cgb3ByIHV2dyB4eXoiWzM1
LCAyNywgMzEsIDI0LCAyMCwgMTYsIDEyLCAzLCA3LCAwXQorVGVzdCA4LCBMVFI6CitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzAsIDQsIDgsIDExLCAx
NiwgMjBdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJb
MjMsIDIwLCAxNiwgMTEsIDgsIDQsIDBdCitUZXN0IDksIFJUTDoKK01vdmUgbGVmdCBieSBvbmUg
d29yZAorImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlswLCAzLCA4LCAxMiwgMTYsIDE5XQorTW92
ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlsyMywgMTksIDE2
LCAxMiwgOCwgMywgMF0KK1Rlc3QgMTAsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJh
YWEgQUFBIGJiYiJbMCwgNCwgOF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFhYSBBQUEgYmJi
IlsxMSwgOCwgNCwgMF0KK1Rlc3QgMTEsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFh
YSBBQUEgYmJiIlswLCA0LCA4LCAxMV0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYWEgQUFB
IGJiYiJbMTEsIDgsIDQsIDBdCitUZXN0IDEyLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
CisiQUFBIEJCQiBXV1cgYWFhIGJiYiBjY2MgREREIFNTUyBVVVUiWzAsIDcsIDMsIDEyLCAxNiwg
MjAsIDI0LCAzMSwgMjddCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIFdXVyBhYWEg
YmJiIGNjYyBEREQgU1NTIFVVVSJbMzUsIDI3LCAzMSwgMjQsIDIwLCAxNiwgMTIsIDMsIDcsIDBd
CitUZXN0IDEzLCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIFdXVyBhYWEg
YmJiIGNjYyBEREQgU1NTIFVVVSJbMCwgNCwgOCwgMTIsIDE5LCAxNSwgMjQsIDI4LCAzMl0KK01v
dmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIFdXVyBhYWEgYmJiIGNjYyBEREQgU1NTIFVV
VSJbMzUsIDMyLCAyOCwgMjQsIDE1LCAxOSwgMTIsIDgsIDQsIDBdCitUZXN0IDE0LCBMVFI6CitN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUFBIEJCQiBhYWEgYmJiIFdXVyBEREQiWzAsIDMsIDgs
IDEyLCAxNiwgMTldCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIGFhYSBiYmIgV1dX
IERERCJbMjMsIDE5LCAxNiwgMTIsIDgsIDMsIDBdCitUZXN0IDE1LCBSVEw6CitNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKKyJBQUEgQkJCIGFhYSBiYmIgV1dXIERERCJbMCwgNCwgOCwgMTEsIDE2LCAy
MF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIGFhYSBiYmIgV1dXIERERCJbMjMs
IDIwLCAxNiwgMTEsIDgsIDQsIDBdCitUZXN0IDE2LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3
b3JkCisiWlFCIGFiYyBSSUciWzAsIDQsIDgsIDExXQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0i
YWJjIGRlZiBoaWogb3BxIHJzdCJbMCwgMTEsIDcsIDMsIDMsIDE5XSAgICBGQUlMIGV4cGVjdGVk
OiBbMTUsIDExLCA3LCAzLCAxOSwgMTldCisiWlFCIGFiYyBSSUciWzExLCA4LCA0LCAwXQorVGVz
dCAxNywgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiWlFCIGFiYyBSSUciWzAsIDQsIDhd
CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiWlFCIGFiYyBSSUciWzExLCA4LCA0LCAwXQorVGVz
dCAxOCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYgaGlqIG9wcSByc3Qi
WzE5LCA3LCAxMSwgMTUsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFszLCA3LCAxMSwgMTUsIDAs
IDBdCi1UZXN0IDMsIExUUjoKKyJhYmMgZGVmICAgIGhpaiBvcHEiWzAsIDQsIDE1XSAgICBGQUlM
IGV4cGVjdGVkOiBbMCwgNCwgMTEsIDE1XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRl
ZiAgICBoaWogb3BxIlsxOCwgMTUsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsxOCwgMTUsIDEx
LCA0LCAwXQorVGVzdCAxOSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAotIlpaWiBRUVEg
QkJCIENDQyBYWFgiWzAsIDExLCA3LCAzLCAzLCAxOV0gICAgRkFJTCBleHBlY3RlZDogWzE1LCAx
MSwgNywgMywgMTksIDE5XQorIkFBQSAiWzAsIDNdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJa
WlogUVFRIEJCQiBDQ0MgWFhYIlsxOSwgNywgMTEsIDE1LCAwLCAwXSAgICBGQUlMIGV4cGVjdGVk
OiBbMywgNywgMTEsIDE1LCAwLCAwXQotVGVzdCA0LCBSVEw6CisiQkIiWzJdLCAiQUFBICJbMywg
MF0KK1Rlc3QgMjAsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIlpaWiBRUVEgQkJCIEND
QyBYWFgiWzAsIDgsIDEyLCAxNiwgMTYsIDE5XSAgICBGQUlMIGV4cGVjdGVkOiBbNCwgOCwgMTIs
IDE2LCAxOSwgMTldCisiQUFBICJbMCwgNF0KIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJaWlog
UVFRIEJCQiBDQ0MgWFhYIlsxNiwgMTIsIDgsIDQsIDAsIDBdCi1UZXN0IDUsIExUUjoKKyJCQiJb
Ml0sICJBQUEgIls0LCAwXQorVGVzdCAyMSwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29yZAot
ImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlswLCA0LCA4LCAxMSwgMjAsIDIwLCAyM10gICAgRkFJ
TCBleHBlY3RlZDogWzQsIDgsIDExLCAxNiwgMjAsIDIzLCAyM10KKyJhYmMgZGVmICJbMCwgNCwg
OF0sICJoaWogb3BxIls0XSwgIiByc3QgdXZ3IlsxLCA1XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
CisiIHJzdCB1dnciWzgsIDUsIDFdLCAiaGlqIG9wcSJbNF0sICJhYmMgZGVmICJbOCwgNCwgMF0K
K1Rlc3QgMjIsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgWlFCIFJJRyB1
dncgeHl6IlsyMCwgMTYsIDQsIDgsIDQsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsyMCwgMTYs
IDExLCA4LCA0LCAwLCAwXQotVGVzdCA2LCBSVEw6CisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnci
WzRdLCAiaGlqIG9wcSJbM10sICJhYmMgZGVmICJbNywgM10gICAgRkFJTCBleHBlY3RlZDogWyJh
YmMgZGVmICJbIDAsIF0iIHJzdCB1dnciWyA0LCAgMCwgXSJoaWogb3BxIlsgMywgXSJhYmMgZGVm
ICJbIDcsICAzXQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIiByc3QgdXZ3Ils4XSwgImFiYyBk
ZWYgIlszLCA3XSwgImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiIHJzdCB1dnciWyA4LCBdImFiYyBkZWYgIlsgMywgIDcsIF0iaGlq
IG9wcSJbIDMsIF0iIHJzdCB1dnciWyAwLCAgNCwgXSJhYmMgZGVmICJbIDBdCitUZXN0IDIzLCBS
VEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMCwg
MywgMTIsIDEyLCAxNiwgMTksIDIzXSAgICBGQUlMIGV4cGVjdGVkOiBbMywgOCwgMTIsIDE2LCAx
OSwgMjMsIDIzXQorImFiYyBkZWYgIlswXSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAi
YWJjIGRlZiAiWzcsIDNdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiYWJjIGRlZiAiWyAwLCBdIiByc3Qg
dXZ3IlsgNCwgIDAsIF0iaGlqIG9wcSJbIDMsIF0iYWJjIGRlZiAiWyA3LCAgM10KIE1vdmUgcmln
aHQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMTIsIDE2LCAxMiwgOCwg
OCwgMCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzE5LCAxNiwgMTIsIDgsIDMsIDAsIDBdCi1UZXN0
IDcsIExUUjoKKyIgcnN0IHV2dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszXSwg
IiByc3QgdXZ3Ils0XSwgImFiYyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3QgdXZ3
IlsgOCwgXSJhYmMgZGVmICJbIDMsICA3LCBdImhpaiBvcHEiWyAzLCBdIiByc3QgdXZ3IlsgMCwg
IDQsIF0iYWJjIGRlZiAiWyAwXQorVGVzdCAyNCwgTFRSOgogTW92ZSByaWdodCBieSBvbmUgd29y
ZAotIlpRQiBhYmMgUklHIlswLCA0LCA4LCAxMV0gICAgRkFJTCBleHBlY3RlZDogWzQsIDgsIDEx
LCAxMV0KKyJhYmMgZGVmICJbMCwgNCwgOF0sICJoaWogb3BxIls0XSwgIiByc3QgdXZ3IlsxLCA1
XQogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUciWzQsIDQsIDQsIDBdICAgIEZB
SUwgZXhwZWN0ZWQ6IFs4LCA0LCAwLCAwXQotVGVzdCA4LCBSVEw6CisiIHJzdCB1dnciWzgsIDUs
IDFdLCAiaGlqIG9wcSJbNF0sICJhYmMgZGVmICJbOCwgNCwgMF0KK1Rlc3QgMjUsIFJUTDoKIE1v
dmUgbGVmdCBieSBvbmUgd29yZAotIlpRQiBhYmMgUklHIlswLCA0LCA4LCAxMV0gICAgRkFJTCBl
eHBlY3RlZDogWzQsIDgsIDExLCAxMV0KKyJBQkQgRFNVICJbMCwgNCwgOF0sICJFSkggRlVYIls0
XSwgIkZGWiBMSUciWzRdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgNF0s
ICJFSkggRlVYIls0XSwgIkFCRCBEU1UgIls4LCA0LCAwXQorVGVzdCAyNiwgTFRSOgogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotIlpRQiBhYmMgUklHIls4LCAwLCAwLCAwXSAgICBGQUlMIGV4cGVj
dGVkOiBbOCwgNCwgMCwgMF0KKyJBQkQgRFNVICJbMF0sICJGRlogTElHIlszXSwgIkVKSCBGVVgi
WzNdLCAiQUJEIERTVSAiWzcsIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3
XSwgIkFCRCBEU1UgIlszLCA3XSwgIkVKSCBGVVgiWzNdLCAiRkZaIExJRyJbM10sICJBQkQgRFNV
ICJbMF0KK1Rlc3QgMjcsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFCRCBEU1UgIlsw
LCA0LCA4XSwgIkVKSCBGVVgiWzRdLCAiRkZaIExJRyJbNF0KK01vdmUgcmlnaHQgYnkgb25lIHdv
cmQKKyJGRlogTElHIls3LCA0XSwgIkVKSCBGVVgiWzRdLCAiQUJEIERTVSAiWzgsIDQsIDBdCitU
ZXN0IDI4LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzBdLCAiRkZa
IExJRyJbM10sICJFSkggRlVYIlszXSwgIkFCRCBEU1UgIls3LCAzXQorTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCisiRkZaIExJRyJbN10sICJBQkQgRFNVICJbMywgN10sICJFSkggRlVYIlszXSwgIkZG
WiBMSUciWzNdLCAiQUJEIERTVSAiWzBdCitUZXN0IDI5LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKKyJBQkQgRFNVICJbMCwgNCwgOF0sICJhYmMgZGVmIlszXSwgIkZGWiBMSUciWzRdCitN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgNF0sICJhYmMgZGVmIlszXSwgIkFC
RCBEU1UgIls4LCA0LCAwXQorVGVzdCAzMCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAor
IkFCRCBEU1UgIlswXSwgIkZGWiBMSUciWzNdLCAiQUJEIERTVSAiWzhdLCAiYWJjIGRlZiJbNF0s
ICJBQkQgRFNVICJbNywgM10KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiBMSUciWzddLCAi
QUJEIERTVSAiWzMsIDddLCAiYWJjIGRlZiJbNF0sICJBQkQgRFNVICJbOF0sICJGRlogTElHIlsz
XSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiBMSUciWyA3LCBdIkFCRCBEU1UgIlsgMywgIDcsIF0i
YWJjIGRlZiJbIDQsIF0iQUJEIERTVSAiWyA4LCBdIkZGWiBMSUciWyAzLCBdIkFCRCBEU1UgIlsg
MF0KK1Rlc3QgMzEsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFCRCBEU1UgIlswLCA0
LCA4XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzgsIDQsIDBdCitUZXN0
IDMyLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzAsIDMsIDhdLCAi
YWJjIGRlZiJbNF0sICJGRlogTElHIlszXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIExJ
RyJbNywgM10sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls4LCA0LCAwXQorVGVzdCAzMywgUlRM
OgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4XSwgImFiYyBB
QUEgZGVmIls4LCA0LCAzXSwgIkZGWiByc3QgTElHIls0LCA4XSAgICBGQUlMIGV4cGVjdGVkOiBb
IkFCRCBvcHEgRFNVICJbIDAsICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwgIDMsIF0i
RkZaIHJzdCBMSUciWyA0LCAgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogcnN0IExJ
RyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiQUJEIG9wcSBEU1UgIls4LCA0LCAw
XSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJhYmMgQUFB
IGRlZiJbIDMsICA0LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgOCwgIDQsICAwXQorVGVzdCAzNCwg
TFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFCRCBvcHEgRFNVICJbMCwgNF0sICJhYmMg
QUFBIGRlZiJbOCwgNF0sICJBQkQgb3BxIERTVSAiWzEyLCAxMV0sICJGRlogcnN0IExJRyJbNCwg
OCwgMTFdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCBdImFi
YyBBQUEgZGVmIlsgOCwgIDcsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICAxMSwgXSJGRlogcnN0IExJ
RyJbIDQsICA4LCAgMTFdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJGRlogcnN0IExJRyJbMTEs
IDgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMSwgMTJdLCAiYWJjIEFBQSBkZWYiWzcsIDhdLCAiQUJE
IG9wcSBEU1UgIls3LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEs
ICA4LCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMSwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNywgIDgs
IF0iQUJEIG9wcSBEU1UgIlsgOCwgIDQsICAwXQorVGVzdCAzNSwgUlRMOgorTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4XSwgImFiYyBBQUEgZGVmIls0LCA4XSwg
IkZGWiByc3QgTElHIls0LCA4XSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAs
ICA0LCAgOCwgIDEyLCBdImFiYyBBQUEgZGVmIlsgNCwgIDgsIF0iRkZaIHJzdCBMSUciWyA0LCAg
OF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJj
IEFBQSBkZWYiWzgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMSwgOCwgNCwgMF0gICAgRkFJTCBleHBl
Y3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwgIDQsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNCwg
XSJBQkQgb3BxIERTVSAiWyAxMiwgIDgsICA0LCAgMF0KK1Rlc3QgMzYsIExUUjoKK01vdmUgcmln
aHQgYnkgb25lIHdvcmQKKyJBQkQgb3BxIERTVSAiWzAsIDQsIDgsIDEyXSwgImFiYyBBQUEgZGVm
Ils0LCA4XSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0KK01vdmUgbGVmdCBieSBvbmUgd29yZAor
IkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0sICJBQkQgb3BxIERT
VSAiWzEyLCA4LCA0LCAwXQorVGVzdCAzNywgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAor
ImFhYSAiWzAsIDRdLCAiYmJiIEFBQSAiWzQsIDddCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJG
RloiWzNdLCAiYmJiIEFBQSAiWzcsIDRdLCAiYWFhICJbNCwgMF0KIAogPT09PT09PT0gTW92ZSBC
eSBXb3JkIFNwZWNpZmljIFRlc3QgPT09PQogVGVzdCAxCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRtbAko
cmV2aXNpb24gODM0ODMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzIsMzYgKzcyLDEwMCBAQCBm
dW5jdGlvbiBsb2dQb3NpdGlvbnMocG9zaXRpb25zKQogICAgIGxvZygiXSIpOwogfQogCitmdW5j
dGlvbiBub2RlT2ZXb3JkQnJlYWsobm9kZUFuZE9mZnNldCkKK3sKKyAgICB2YXIgbm9kZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKG5vZGVBbmRPZmZzZXRbMF0pLmZpcnN0Q2hpbGQ7CisgICAg
aWYgKG5vZGVBbmRPZmZzZXQubGVuZ3RoID09IDMpIHsKKyAgICAgICAgdmFyIGNoaWxkSW5kZXgg
PSBub2RlQW5kT2Zmc2V0WzJdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkSW5k
ZXggLSAxOyArK2kpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBub2RlOworfQorCiB2YXIgd29yZEJyZWFrczsKIAor
ZnVuY3Rpb24gbG9nV29yZEJyZWFrKGluZGV4KQoreworICAgIHZhciB3b3JkQnJlYWsgPSB3b3Jk
QnJlYWtzW2luZGV4XTsKKyAgICBpZiAod29yZEJyZWFrLnNlYXJjaCgnLCcpID09IC0xKQorICAg
ICAgICBsb2cod29yZEJyZWFrKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5vZGVBbmRPZmZz
ZXQgPSB3b3JkQnJlYWsuc3BsaXQoJywnKTsKKyAgICAgICAgdmFyIG5vZGUgPSBub2RlT2ZXb3Jk
QnJlYWsobm9kZUFuZE9mZnNldCk7CisKKyAgICAgICAgdmFyIGRpZmZlcmVudE5vZGUgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKGluZGV4ICE9IDApIHsKKyAgICAgICAgICAgIGRpZmZlcmVudE5vZGUg
PSBub2RlT2ZXb3JkQnJlYWsobm9kZUFuZE9mZnNldCkgIT0gbm9kZU9mV29yZEJyZWFrKHdvcmRC
cmVha3NbaW5kZXggLSAxXS5zcGxpdCgnLCcpKTsKKyAgICAgICAgCisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGRpZmZlcmVudE5vZGUgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGxvZygiXSIpOworICAg
ICAgICBpZiAoaW5kZXggPT0gMCB8fCBkaWZmZXJlbnROb2RlID09IHRydWUpCisgICAgICAgICAg
ICBsb2coKG5vZGUgaW5zdGFuY2VvZiBUZXh0ID8gJyInICsgZm9sZChub2RlLmRhdGEpICsgJyIn
IDogIjwiICsgbm9kZS50YWdOYW1lICsgIj4iKSArICJbIik7CisgICAgICAgIGxvZyhub2RlQW5k
T2Zmc2V0WzFdKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBvc2l0aW9uRXF1YWxUb1dvcmRCcmVh
ayhwb3NpdGlvbiwgd29yZEJyZWFrKQoreworICAgIGlmICh3b3JkQnJlYWsuc2VhcmNoKCcsJykg
PT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpdGlvbi5vZmZzZXQgPT0gd29yZEJyZWFrOworICAg
IGVsc2UgeworICAgICAgICB2YXIgbm9kZUFuZE9mZnNldCA9IHdvcmRCcmVhay5zcGxpdCgnLCcp
OworICAgICAgICByZXR1cm4gcG9zaXRpb24ubm9kZSA9PSBub2RlT2ZXb3JkQnJlYWsobm9kZUFu
ZE9mZnNldCkgJiYgcG9zaXRpb24ub2Zmc2V0ID09IG5vZGVBbmRPZmZzZXRbMV07CisgICAgfQor
fQorCiBmdW5jdGlvbiB2YWxpZGF0ZURhdGEocG9zaXRpb25zKQogeworICAgIHZhciBlcXVhbCA9
IHRydWU7CisgICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggIT0gd29yZEJyZWFrcy5sZW5ndGgpCisg
ICAgICAgIGVxdWFsID0gZmFsc2U7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JkQnJlYWtz
Lmxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICBpZiAocG9zaXRpb25zW2ldLm9mZnNldCAhPSB3
b3JkQnJlYWtzW2kgKyAxXSkgeworICAgICAgICBpZiAoIXBvc2l0aW9uRXF1YWxUb1dvcmRCcmVh
ayhwb3NpdGlvbnNbaV0sIHdvcmRCcmVha3NbaV0pKSB7CisgICAgICAgICAgICBlcXVhbCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGkgIT0g
d29yZEJyZWFrcy5sZW5ndGggLSAxICYmIHBvc2l0aW9uc1tpXSAhPSB3b3JkQnJlYWtzW2ldKSB7
CisgICAgaWYgKGVxdWFsID09IGZhbHNlKSB7CiAgICAgICAgIGxvZygiICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB3b3JkQnJlYWtzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBsb2cod29yZEJyZWFrc1tpXSArICIsICIpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHdvcmRCcmVha3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IGxvZ1dvcmRCcmVhayhpKTsKKyAgICAgICAgICAgIGlmIChpICE9IHdvcmRCcmVha3MubGVuZ3Ro
IC0gMSkKKyAgICAgICAgICAgICAgICBsb2coIiwgIik7CiAgICAgICAgIH0KLSAgICAgICAgbG9n
KHdvcmRCcmVha3Nbd29yZEJyZWFrcy5sZW5ndGggLSAxXSArICJdIik7CisgICAgICAgIGxvZygi
XSIpOwogICAgIH0KIH0KIAogZnVuY3Rpb24gY29sbGVjdFdvcmRCcmVha3ModGVzdCwgc2VhcmNo
RGlyZWN0aW9uKQogewotICAgIGlmIChzZWFyY2hEaXJlY3Rpb24gPT0gInJpZ2h0IikgewotICAg
ICAgICBpZiAodGVzdC5nZXRBdHRyaWJ1dGUoImRpciIpID09ICdsdHInKSAKLSAgICAgICAgICAg
IHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF0uc3BsaXQoIiAiKTsKLSAgICAg
ICAgZWxzZSAKLSAgICAgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8Iilb
MV0uc3BsaXQoIiAiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodGVzdC5nZXRBdHRyaWJ1
dGUoImRpciIpID09ICdsdHInKSAKLSAgICAgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxl
LnNwbGl0KCJ8IilbMV0uc3BsaXQoIiAiKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHdv
cmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF0uc3BsaXQoIiAiKTsKKyAgICB2YXIg
dGl0bGU7CisgICAgaWYgKHNlYXJjaERpcmVjdGlvbiA9PSAicmlnaHQiKSAKKyAgICAgICAgdGl0
bGUgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF07CisgICAgZWxzZQorICAgICAgICB0aXRsZSA9
IHRlc3QudGl0bGUuc3BsaXQoInwiKVsxXTsKKworICAgIHZhciBwYXR0ZXJuID0gL1xbKC4rPylc
XS9nOworICAgIHZhciByZXN1bHQ7CisgICAgd29yZEJyZWFrcyA9IFtdOworICAgIHdoaWxlICgo
cmVzdWx0ID0gcGF0dGVybi5leGVjKHRpdGxlKSkgIT0gbnVsbCkgeworICAgICAgICB3b3JkQnJl
YWtzLnB1c2gocmVzdWx0WzFdKTsKKyAgICB9CisgICAgaWYgKHdvcmRCcmVha3MubGVuZ3RoID09
IDApIHsKKyAgICAgICAgd29yZEJyZWFrcyA9IHRpdGxlLnNwbGl0KCIgIik7CisgICAgfQorfQor
CitmdW5jdGlvbiBzZXRQb3NpdGlvbihzZWwsIG5vZGUsIHdvcmRCcmVhaykKK3sKKyAgICBpZiAo
d29yZEJyZWFrLnNlYXJjaCgnLCcpID09IC0xKQorICAgICAgICBzZWwuc2V0UG9zaXRpb24obm9k
ZSwgd29yZEJyZWFrKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5vZGVBbmRPZmZzZXQgPSB3
b3JkQnJlYWsuc3BsaXQoJywnKTsKKyAgICAgICAgc2VsLnNldFBvc2l0aW9uKG5vZGVPZldvcmRC
cmVhayhub2RlQW5kT2Zmc2V0KSwgbm9kZUFuZE9mZnNldFsxXSk7CiAgICAgfQogfQogCkBAIC0x
MDksMTggKzE3MywyMCBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkKHNlbCwgdGVzdCwgc2VhcmNoRGly
CiB7CiAgICAgbG9nKCJNb3ZlICIgKyBzZWFyY2hEaXJlY3Rpb24gKyAiIGJ5IG9uZSB3b3JkXG4i
KTsKICAgICB2YXIgcHJldk9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7Ci0gICAgdmFyIG5vZGUg
PSBzZWwuYW5jaG9yTm9kZTsKLSAgICBjb2xsZWN0V29yZEJyZWFrcyh0ZXN0LCBzZWFyY2hEaXJl
Y3Rpb24pOwotICAgIHNlbC5zZXRQb3NpdGlvbihub2RlLCB3b3JkQnJlYWtzWzBdKTsKKyAgICB2
YXIgcHJldk5vZGUgPSBzZWwuYW5jaG9yTm9kZTsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0g
ICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IHdvcmRCcmVha3MubGVuZ3RoOyArK2luZGV4
KSB7CisgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBz
ZWwuYW5jaG9yT2Zmc2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRlcygpIH0pOworCisgICAgd2hp
bGUgKDEpIHsKICAgICAgICAgc2VsLm1vZGlmeSgibW92ZSIsIHNlYXJjaERpcmVjdGlvbiwgIi13
ZWJraXQtdmlzdWFsLXdvcmQiKTsKKyAgICAgICAgaWYgKHByZXZOb2RlID09IHNlbC5hbmNob3JO
b2RlICYmIHByZXZPZmZzZXQgPT0gc2VsLmFuY2hvck9mZnNldCkKKyAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6
IHNlbC5hbmNob3JPZmZzZXQsIHBvaW50OiBjYXJldENvb3JkaW5hdGVzKCkgfSk7Ci0gICAgICAg
IHNlbC5zZXRQb3NpdGlvbihub2RlLCB3b3JkQnJlYWtzW2luZGV4XSk7Ci0gICAgfQotICAgIHNl
bC5tb2RpZnkoIm1vdmUiLCBzZWFyY2hEaXJlY3Rpb24sICItd2Via2l0LXZpc3VhbC13b3JkIik7
Ci0gICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwu
YW5jaG9yT2Zmc2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRlcygpIH0pOworICAgICAgICBwcmV2
Tm9kZSA9IHNlbC5hbmNob3JOb2RlOworICAgICAgICBwcmV2T2Zmc2V0ID0gc2VsLmFuY2hvck9m
ZnNldDsKKyAgICB9OwogICAgIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnMpOworICAgIGNvbGxlY3RX
b3JkQnJlYWtzKHRlc3QsIHNlYXJjaERpcmVjdGlvbik7CiAgICAgdmFsaWRhdGVEYXRhKHBvc2l0
aW9ucyk7CiAgICAgbG9nKCJcbiIpOwogfQpAQCAtMTMzLDYgKzE5OSw4IEBAIGZ1bmN0aW9uIG1v
dmVCeVdvcmRGb3JFdmVyeVBvc2l0aW9uKHNlbCwKICAgICBpZiAoZGlyID09ICJydGwiKQogICAg
ICAgICBkaXJlY3Rpb24gPSAibGVmdCI7ICAgIAogICAgIG1vdmVCeVdvcmQoc2VsLCB0ZXN0LCBk
aXJlY3Rpb24sIGRpcik7ICAgIAorCisgICAgc2VsLm1vZGlmeSgibW92ZSIsICJmb3J3YXJkIiwg
ImxpbmVCb3VuZGFyeSIpOwogICAgIC8vIENoZWNrIGN0cmwtbGVmdC1hcnJvdyB3b3JrcyBmb3Ig
ZXZlcnkgcG9zaXRpb24uCiAgICAgaWYgKGRpciA9PSAibHRyIikKICAgICAgICAgZGlyZWN0aW9u
ID0gImxlZnQiOwpAQCAtMjE1LDE5ICsyODMsMTA0IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9InRlc3RNb3ZlQnlXb3JkIj4KLTwh
LS0gVGhlIG51bWJlcnMgcHV0IGluIHRpdGxlIGFyZSBzdGFydGluZyB3b3JkIGJvdW5kYXJpZXMu
Ci1UaGUgbnVtYmVycyBwcmludGVkIG91dCBpbiB0aGUgb3V0cHV0IGFyZSBlbmRpbmcgd29yZCBi
b3VuZGFyaWVzLiAtLT4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRp
dGxlPSIwIDQgOCAxMiAxNiAxOXwxOSAxNiAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBk
ZWYgaGlqIG9wcSByc3Q8L2Rpdj4KLTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSIwIDE1IDExIDcgMyAxOXwxOSAzIDcgMTEgMTUgMCIgY29udGVudGVkaXRhYmxl
PmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHRpdGxlPSIwIDE1IDExIDcgMyAxOXwxOSAzIDcgMTEgMTUgMCIgY29udGVudGVk
aXRhYmxlPtep16nXqSDXoNeg16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KLTxkaXYgZGly
PXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxNiAxOXwxOSAx
NiAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxlPtep16nXqSDXoNeg16Ag15HXkdeRINeS15LXkiDX
p9en16c8L2Rpdj4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIwIDQgOCAxMSAxNiAyMCAyM3wyMyAyMCAxNiAxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFi
YyBkZWYg16nXoNeRINeh15jXliB1dncgeHl6PC9kaXY+Ci08ZGl2IGRpcj1ydGwgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCAzIDggMTIgMTYgMTkgMjN8MjMgMTkgMTYgMTIgOCAz
IDAiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmINep16DXkSDXodeY15YgdXZ3IHh5ejwvZGl2Pgor
PCEtLSAKK1RpdGxlIHNhdmVzIHRoZSB3b3JkIGJyZWFrcy4KK1RoZSBmb3JtYXQgb2YgdGl0bGUg
aXMgInh4eHx4eHh4Ii4KKworVGhlIHNlcXVlbmNlIG9uIHRoZSBsZWZ0IG9mICJ8IiBpcyB3b3Jk
IGJvdW5kYXJpZXMgd2hlbiBtb3ZpbmcgY2FyZXQgZnJvbSBsZWZ0IHRvIHJpZ2h0LgorVGhlIHNl
cXVlbmNlIG9uIHRoZSByaWdodCBvZiAifCIgaXMgd29yZCBib3VuZGFyaWVzIHdoZW4gbW92aW5n
IGNhcmV0IGZyb20gcmlnaHQgdG8gbGVmdC4KKworSWYgdGhlcmUgaXMgYSBzaW5nbGUgbm9kZSBp
biB0aGUgbGluZSwgdGhlIHNlcXVlbmNlIGFyZSBvZmZzZXRzLgorSWYgdGhlcmUgYXJlIG11bHRp
cGxlIG5vZGVzIGluIHRoZSBsaW5lLCB0aGUgc2VxdWVuY2UgaXMgYXJyYXkgb2YgW2FuY2hvcl9u
b2RlX2lkLCBvZmZzZXQsIGNoaWxkX25vZGVfaW5kZXhdLCAKK3doZXJlIGNoaWxkX25vZGVfaW5k
ZXggaXMgb3B0aW9uYWwsIGRlZmF1bHQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBhbmNob3Ig
bm9kZS4KKy0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9
IjAgNCA4IDEyIDE2fDE5IDE2IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWog
b3BxIHJzdDwvZGl2PgorCis8IS0tIHB1cmUgRW5nbGlzaCAtLT4KKzxkaXYgZGlyPWx0ciBjbGFz
cz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxNnwxOSAxNiAxMiA4IDQgMCIg
Y29udGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIxOSAzIDcgMTEgMTUgMHwwIDE1IDExIDcg
MyIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KKworPCEtLSBwdXJl
IEhlYnJldyAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIwIDE1IDExIDcgM3wxOSAzIDcgMTEgMTUgMCIgY29udGVudGVkaXRhYmxlPtep16nXqSDXoNeg
16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIxOSAxNiAxMiA4IDQgMHwwIDQgOCAxMiAxNiIgY29udGVudGVk
aXRhYmxlPtep16nXqSDXoNeg16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KKworPCEtLSBi
aWRpIHRleHQgLS0+Cis8IS0tIEVuZ2xpc2ggSGVicmV3IEVuZ2xpc2ggLS0+Cis8ZGl2IGRpcj1s
dHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTIgMTkgMTUgMjQgMjgg
MzJ8MzUgMzIgMjggMjQgMTUgMTkgMTIgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhp
aiDXkNeQ15Ag15HXkdeRINem16bXpiBvcHIgdXZ3IHh5ejwvZGl2PgorPGRpdiBkaXI9cnRsIGNs
YXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjM1IDI3IDMxIDI0IDIwIDE2IDEyIDMgNyAw
fDAgNyAzIDEyIDE2IDIwIDI0IDMxIDI3IiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWog15DX
kNeQINeR15HXkSDXptem16Ygb3ByIHV2dyB4eXo8L2Rpdj4KKworPGRpdiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExIDE2IDIwfDIzIDIwIDE2IDExIDgg
NCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2dyB4eXo8L2Rpdj4K
KzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIyMyAxOSAxNiAx
MiA4IDMgMHwwIDMgOCAxMiAxNiAxOSIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh
15jXliB1dncgeHl6PC9kaXY+CisKKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSIwIDQgOHwxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFhYSDXkNeQ15AgYmJi
PC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMTEg
OCA0IDB8MCA0IDggMTEiIGNvbnRlbnRlZGl0YWJsZT5hYWEg15DXkNeQIGJiYjwvZGl2PgorCis8
IS0tIEhlYnJldyBFbmdsaXNoIEhlYnJldyAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDcgMyAxMiAxNiAyMCAyNCAzMSAyN3wzNSAyNyAzMSAyNCAy
MCAxNiAxMiAzIDcgMCIgY29udGVudGVkaXRhYmxlPteQ15DXkCDXkdeR15Eg16bXptemIGFhYSBi
YmIgY2NjINeT15PXkyDXotei16Ig16TXpNekPC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMzUgMzIgMjggMjQgMTUgMTkgMTIgOCA0IDB8MCA0IDgg
MTIgMTkgMTUgMjQgMjggMzIiIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15Ag15HXkdeRINem16bXpiBh
YWEgYmJiIGNjYyDXk9eT15Mg16LXoteiINek16TXpDwvZGl2PgorCis8ZGl2IGRpcj1sdHIgY2xh
c3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCAzIDggMTIgMTYgMTl8MjMgMTkgMTYgMTIg
OCAzIDAiIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15Ag15HXkdeRIGFhYSBiYmIg16bXptemINeT15PX
kzwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjIz
IDIwIDE2IDExIDggNCAwfDAgNCA4IDExIDE2IDIwIiBjb250ZW50ZWRpdGFibGU+15DXkNeQINeR
15HXkSBhYWEgYmJiINem16bXpiDXk9eT15M8L2Rpdj4KKwogPGRpdiBkaXI9bHRyIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExfDExIDggNCAwIiBjb250ZW50ZWRpdGFi
bGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KLTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMXwxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPtep16DX
kSBhYmMg16HXmNeWPC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IiB0aXRsZT0iMTEgOCA0IDB8MCA0IDgiIGNvbnRlbnRlZGl0YWJsZT7Xqdeg15EgYWJjINeh15jX
ljwvZGl2PgorCis8IS0tIG11bHRpcGxlIHNwYWNlcyBiZXR3ZWVuIHdvcmQuIAorICAgICBGQUlM
RUQ6IHdvcmQgYnJlYWsgYmV0d2VlbiAiZGVmIiBhbmQgImhpaiIgaXMgdW5yZWFjaGFibGUuCist
LT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgMTEg
MTV8MTggMTUgMTEgNCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiAgICBoaWogb3BxPC9kaXY+
CisKKzwhLS0gSW5saW5lIGVsZW1lbnQgLS0+Cis8ZGl2IGRpcj1sdHIgaWQ9ImRpdl8xIiBjbGFz
cz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzEsIDBdW2Rpdl8xLCAzXXxbc3Bhbl8x
LCAyXVtkaXZfMSwgM11bZGl2XzEsMF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4gaWQ9
InNwYW5fMSI+15HXkTwvc3Bhbj48L2Rpdj4KKzxkaXYgZGlyPXJ0bCBpZD0iZGl2XzIiIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltzcGFuXzIsIDJdW2Rpdl8yLCA0XVtkaXZfMiwg
MF18W2Rpdl8yLCAwXVtkaXZfMiwgNF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4gaWQ9
InNwYW5fMiI+15HXkTwvc3Bhbj48L2Rpdj4KKworPCEtLSBwdXJlIEVuZ2xpc2ggaW4gaW5saW5l
IGVsZW1lbnQgd2l0aCBzYW1lIG9yIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSBmcm9tIGl0cyBw
YXJlbnQgLS0+Cis8ZGl2IGRpcj1sdHIgaWQ9ImRpdl8zIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSJbZGl2XzMsIDBdW2Rpdl8zLCA0XVtkaXZfMywgOF1bc3Bhbl8zLCA0XVtkaXZf
MywgMSwgM11bZGl2XzMsIDUsIDNdfFtkaXZfMywgOCwgM11bZGl2XzMsIDUsIDNdW2Rpdl8zLCAx
LCAzXVtzcGFuXzMsIDRdW2Rpdl8zLCA4XVtkaXZfMywgNF1bZGl2XzMsIDBdIiBjb250ZW50ZWRp
dGFibGU+YWJjIGRlZiA8c3BhbiBpZD0ic3Bhbl8zIj5oaWogb3BxPC9zcGFuPiByc3QgdXZ3PC9k
aXY+CisKKzwhLS0gRkFJTEVEIC0tPgorPGRpdiBkaXI9cnRsIGlkPSJkaXZfNCIgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl80LCA4LCAzXVtkaXZfNCwgMywgMV1bZGl2XzQs
IDcsIDFdW3NwYW5fNCwgMywgMV1bZGl2XzQsIDAsIDNdW2Rpdl80LCA0LCAzXVtkaXZfNCwgMCwg
MV18W2Rpdl80LCAwLCAxXVtkaXZfNCwgNCwgM11bZGl2XzQsIDAsIDNdW3NwYW5fNCwgMywgMV1b
ZGl2XzQsIDcsIDFdW2Rpdl80LCAzLCAxXSIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgPHNwYW4g
aWQ9InNwYW5fNCI+aGlqIG9wcTwvc3Bhbj4gcnN0IHV2dzwvZGl2PgorCis8IS0tIEZBSUxFRCAt
LT4KKzxkaXYgaWQ9ImRpdl81IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IltkaXZfNSwgOCwgM11bZGl2XzUsIDMsIDFdW2Rpdl81LCA3LCAxXVtzcGFuXzUsIDMsIDFd
W2Rpdl81LCAwLCAzXVtkaXZfNSwgNCwgM11bZGl2XzUsIDAsIDFdfFtkaXZfNSwgMCwgMV1bZGl2
XzUsIDQsIDNdW2Rpdl81LCAwLCAzXVtzcGFuXzUsIDMsIDFdW2Rpdl81LCA3LCAxXVtkaXZfNSwg
MywgMV0iY29udGVudGVkaXRhYmxlPmFiYyBkZWYgPHNwYW4gZGlyPWx0ciBpZD0ic3Bhbl81Ij5o
aWogb3BxPC9zcGFuPiByc3QgdXZ3PC9kaXY+CisKKzxkaXYgaWQ9ImRpdl82IiBkaXI9bHRyIGNs
YXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfNiwgMCwgMV1bZGl2XzYsIDQsIDFd
W2Rpdl82LCA4LCAxXVtzcGFuXzYsIDQsIDFdW2Rpdl82LCAxLCAzXVtkaXZfNiwgNSwgM118W2Rp
dl82LCA4LCAzXVtkaXZfNiwgNSwgM11bZGl2XzYsIDEsIDNdW3NwYW5fNiwgNCwgMV1bZGl2XzYs
IDgsIDFdW2Rpdl82LCA0LCAxXVtkaXZfNiwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVm
IDxzcGFuIGRpcj1ydGwgaWQ9InNwYW5fNiI+aGlqIG9wcTwvc3Bhbj4gcnN0IHV2dzwvZGl2Pgor
Cis8IS0tIHB1cmUgSGVicmV3IGluIGlubGluZSBlbGVtZW50IHdpdGggc2FtZSBvciBkaWZmZXJl
bnQgZGlyZWN0aW9uYWxpdHkgZnJvbSBpdHMgcGFyZW50IC0tPgorCis8ZGl2IGlkPSJkaXZfNyIg
ZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzcsIDcsIDNdW2Rp
dl83LCA0LCAzXVtzcGFuXzcsIDQsIDFdW2Rpdl83LCA4LCAxXVtkaXZfNywgNCwgMV1bZGl2Xzcs
IDAsIDFdfFtkaXZfNywgMCwgMV1bZGl2XzcsIDQsIDFdW2Rpdl83LCA4LCAxXVtzcGFuXzcsIDQs
IDFdW2Rpdl83LCA0LCAzXSIgY29udGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gZGly
PWx0ciBpZD0ic3Bhbl83Ij7XlNeZ15cg15XXpNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4K
KworPGRpdiBpZD0iZGl2XzgiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRs
ZT0iW2Rpdl84LCAwLCAxXVtkaXZfOCwgMywgM11bc3Bhbl84LCAzLCAxXVtkaXZfOCwgNywgMV1b
ZGl2XzgsIDMsIDFdfFtkaXZfOCwgNywgM11bZGl2XzgsIDMsIDFdW2Rpdl84LCA3LCAxXVtzcGFu
XzgsIDMsIDFdW2Rpdl84LCAzLCAzXVtkaXZfOCwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR
15Mg15PXotekIDxzcGFuIGRpcj1ydGwgaWQ9InNwYW5fOCI+15TXmdeXINeV16TXpzwvc3Bhbj7X
ldeV16kg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl85IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfOSwgNywgM11bZGl2XzksIDQsIDNdW3NwYW5fOSwg
NCwgMV1bZGl2XzksIDgsIDFdW2Rpdl85LCA0LCAxXVtkaXZfOSwgMCwgMV18W2Rpdl85LCAwLCAx
XVtkaXZfOSwgNCwgMV1bZGl2XzksIDgsIDFdW3NwYW5fOSwgNCwgMV1bZGl2XzksIDQsIDNdIiBj
b250ZW50ZWRpdGFibGU+15DXkdeTINeT16LXpCA8c3BhbiBpZD0ic3Bhbl85Ij7XlNeZ15cg15XX
pNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2XzEwIiBkaXI9bHRy
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTAsIDAsIDFdW2Rpdl8xMCwg
MywgM11bc3Bhbl8xMCwgMywgMV1bZGl2XzEwLCA3LCAxXVtkaXZfMTAsIDMsIDFdfFtkaXZfMTAs
IDcsIDNdW2Rpdl8xMCwgMywgMV1bZGl2XzEwLCA3LCAxXVtzcGFuXzEwLCAzLCAxXVtkaXZfMTAs
IDMsIDNdW2Rpdl8xMCwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFu
IGlkPSJzcGFuXzEwIj7XlNeZ15cg15XXpNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKwor
PCEtLSBiaWRpIGluIGlubGluZSBlbGVtZW50IHdpdGggc2FtZSBvciBkaWZmZXJlbnQgZGlyZWN0
aW9uYWxpdHkgZnJvbSBpdHMgcGFyZW50IC0tPgorPGRpdiBpZD0iZGl2XzExIiBkaXI9cnRsIGNs
YXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTEsIDcsIDNdW2Rpdl8xMSwgNCwg
M11bc3Bhbl8xMSwgMywgMV1bZGl2XzExLCA4LCAxXVtkaXZfMTEsIDQsIDFdW2Rpdl8xMSwgMCwg
MV18W2Rpdl8xMSwgMCwgMV1bZGl2XzExLCA0LCAxXVtkaXZfMTEsIDgsIDFdW3NwYW5fMTEsIDMs
IDFdW2Rpdl8xMSwgNCwgM10iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGRp
cj1sdHIgaWQ9InNwYW5fMTEiPmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8
IS0tIEZBSUwgLS0+Cis8ZGl2IGlkPSJkaXZfMTIiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9i
eV93b3JkIiB0aXRsZT0iW2Rpdl8xMiwgMCwgMV1bZGl2XzEyLCAzLCAzXVtkaXZfMTIsIDgsIDFd
W3NwYW5fMTIsIDQsIDFdW2Rpdl8xMiwgNywgMV1bZGl2XzEyLCAzLCAxXXxbZGl2XzEyLCA3LCAz
XVtkaXZfMTIsIDMsIDFdW2Rpdl8xMiwgNywgMV1bc3Bhbl8xMiwgNCwgMV1bZGl2XzEyLCA4LCAx
XVtkaXZfMTIsIDMsIDNdW2Rpdl8xMiwgMF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotek
IDxzcGFuIGRpcj1ydGwgaWQ9InNwYW5fMTIiPmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwv
ZGl2PgorCis8ZGl2IGlkPSJkaXZfMTMiIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IiB0aXRsZT0iW2Rpdl8xMywgNywgM11bZGl2XzEzLCA0LCAzXVtzcGFuXzEzLCAzLCAxXVtkaXZf
MTMsIDgsIDFdW2Rpdl8xMywgNCwgMV1bZGl2XzEzLCAwLCAxXXxbZGl2XzEzLCAwLCAxXVtkaXZf
MTMsIDQsIDFdW2Rpdl8xMywgOCwgMV1bc3Bhbl8xMywgMywgMV1bZGl2XzEzLCA0LCAzXSIgY29u
dGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTMiPmFiYyBkZWY8L3Nw
YW4+15XXldepINeb15jXljwvZGl2PgorCis8ZGl2IGlkPSJkaXZfMTQiIGRpcj1sdHIgY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xNCwgMCwgMV1bZGl2XzE0LCAzLCAxXVtk
aXZfMTQsIDgsIDFdW3NwYW5fMTQsIDQsIDFdW2Rpdl8xNCwgMywgM118W2Rpdl8xNCwgNywgM11b
ZGl2XzE0LCAzLCAzXVtzcGFuXzE0LCA0LCAxXVtkaXZfMTQsIDgsIDFdW2Rpdl8xNCwgNCwgMV1b
ZGl2XzE0LCAwLCAxXSIgY29udGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gaWQ9InNw
YW5fMTQiPmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8IS0tIEZBSUxFRCAt
LT4KKzxkaXYgaWQ9ImRpdl8xNSIgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRp
dGxlPSJbZGl2XzE1LCAxMSwgM11bZGl2XzE1LCA4LCAzXVtkaXZfMTUsIDQsIDNdW3NwYW5fMTUs
IDMsIDFdW3NwYW5fMTUsIDQsIDFdW2Rpdl8xNSwgMTIsIDFdW2Rpdl8xNSwgOCwgMV1bZGl2XzE1
LCA0LCAxXVtkaXZfMTUsIDAsIDFdfFtkaXZfMTUsIDAsIDFdW2Rpdl8xNSwgNCwgMV1bZGl2XzE1
LCA4LCAxXVtkaXZfMTUsIDEyLCAxXVtzcGFuXzE1LCA0LCAxXVtzcGFuXzE1LCAzLCAxXVtkaXZf
MTUsIDQsIDNdW2Rpdl8xNSwgOCwgM10iCitjb250ZW50ZWRpdGFibGU+15DXkdeTIG9wcSDXk9ei
16QgPHNwYW4gZGlyPWx0ciBpZD0ic3Bhbl8xNSI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldep
IHJzdCDXm9eY15Y8L2Rpdj4KKworPCEtLSBGQUlMRUQsIGFuZCB3cm9uZyBwcmludGluZyByZXN1
bHQgLS0+Cis8ZGl2IGlkPSJkaXZfMTYiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IiB0aXRsZT0iW2Rpdl8xNiwgMCwgMV1bZGl2XzE2LCA0LCAxXVtkaXZfMTYsIDgsIDFdW3NwYW5f
MTYsIDgsIDFdW3NwYW5fMTYsIDcsIDFdW2Rpdl8xNiwgMTIsIDFdW2Rpdl8xNiwgMTEsIDFdW2Rp
dl8xNiwgNCwgM11bZGl2XzE2LCA4LCAzXVtkaXZfMTYsIDExLCAzXXxbZGl2XzE2LCAxMSwgM11b
ZGl2XzE2LCA4LCAzXVtkaXZfMTYsIDQsIDNdW2Rpdl8xNiwgMTEsIDFdW2Rpdl8xNiwgMTIsIDFd
W3NwYW5fMTYsIDcsIDFdW3NwYW5fMTYsIDgsIDFdW2Rpdl8xNiwgOCwgMV1bZGl2XzE2LCA0LCAx
XVtkaXZfMTYsIDAsIDFdIiBjb250ZW50ZWRpdGFibGU+15DXkdeTIG9wcSDXk9ei16QgPHNwYW4g
ZGlyPXJ0bCBpZD0ic3Bhbl8xNiI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY
15Y8L2Rpdj4KKworPCEtLSBGQUlMRUQgLS0+Cis8ZGl2IGlkPSJkaXZfMTciIGRpcj1ydGwgY2xh
c3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xNywgMTEsIDNdW2Rpdl8xNywgOCwg
M11bZGl2XzE3LCA0LCAzXVtzcGFuXzE3LCA4LCAxXVtzcGFuXzE3LCA0LCAxXVtkaXZfMTcsIDEy
LCAxXVtkaXZfMTcsIDgsIDFdW2Rpdl8xNywgNCwgMV1bZGl2XzE3LCAwLCAxXXxbZGl2XzE3LCAw
LCAxXVtkaXZfMTcsIDQsIDFdW2Rpdl8xNywgOCwgMV1bZGl2XzE3LCAxMiwgMV1bc3Bhbl8xNywg
NCwgMV1bc3Bhbl8xNywgOCwgMV1bZGl2XzE3LCA0LCAzXVtkaXZfMTcsIDgsIDNdIiBjb250ZW50
ZWRpdGFibGU+15DXkdeTIG9wcSDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTciPmFiYyDXkNeQ15Ag
ZGVmPC9zcGFuPteV15XXqSByc3Qg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl8xOCIgZGly
PWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE4LCAwLCAxXVtkaXZf
MTgsIDQsIDFdW2Rpdl8xOCwgOCwgMV1bZGl2XzE4LCAxMiwgMV1bc3Bhbl8xOCwgNCwgMV1bc3Bh
bl8xOCwgOCwgMV1bZGl2XzE4LCA0LCAzXVtkaXZfMTgsIDgsIDNdW2Rpdl8xOCwgMTEsIDNdfFtk
aXZfMTgsIDExLCAzXVtkaXZfMTgsIDgsIDNdW2Rpdl8xOCwgNCwgM11bc3Bhbl8xOCwgOCwgMV1b
c3Bhbl8xOCwgNCwgMV1bZGl2XzE4LCAxMiwgMV1bZGl2XzE4LCA4LCAxXVtkaXZfMTgsIDQsIDFd
W2Rpdl8xOCwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mgb3BxINeT16LXpCA8c3BhbiBp
ZD0ic3Bhbl8xOCI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY15Y8L2Rpdj4K
KworPGRpdiBpZD0iZGl2XzE5IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IltkaXZfMTksIDAsIDFdW2Rpdl8xOSwgNCwgMV1bc3Bhbl8xOSwgNCwgMV1bc3Bhbl8xOSwg
NywgMV18W2Rpdl8xOSwgMywgM11bc3Bhbl8xOSwgNywgMV1bc3Bhbl8xOSwgNCwgMV1bZGl2XzE5
LCA0LCAxXVtkaXZfMTksIDAsIDFdIiBjb250ZW50ZWRpdGFibGU+YWFhIDxzcGFuIGlkPSJzcGFu
XzE5Ij5iYmIg15DXkNeQIDwvc3Bhbj7XldeV16k8L2Rpdj4KIAogPCEtLSBUaGUgY29udGVudCBp
biB0aXRsZSBtZWFucyAic3RhcnRPZmZzZXRJbkN1cnJlbnROb2RlIG1vdmluZ0RpcmVjdGlvbkJ5
V29yZCBlbmRpbmdOb2RlIGVuZGluZ09mZnNldEluRW5kaW5nTm9kZSIgLS0+Ci08ZGl2IGlkPSJk
aXZfMSIgY29udGVudGVkaXRhYmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8xIiBjbGFzcz0ic3Bl
Y2lmaWNfdGVzdCIgdGl0bGU9IjEgbGVmdCBkaXZfMSAwIj7XkdeRPC9zcGFuPjwvZGl2PgorPGRp
diBpZD0iZGl2XzEwMCIgY29udGVudGVkaXRhYmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8xMDAi
IGNsYXNzPSJzcGVjaWZpY190ZXN0IiB0aXRsZT0iMSBsZWZ0IGRpdl8xMDAgMCI+15HXkTwvc3Bh
bj48L2Rpdj4KIDwvZGl2PgogCiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4K
</data>
<flag name="review"
          id="82200"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89642</attachid>
            <date>2011-04-14 14:13:53 -0700</date>
            <delta_ts>2011-04-14 15:49:23 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>58294.v2</filename>
            <type>text/plain</type>
            <size>38875</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNzQgQEAKKzIwMTEtMDQtMTMgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnRpbnVlICgzcmQpIGV4cGVyaW1lbnQgd2l0aCBtb3ZpbmcgY2Fy
ZXQgYnkgd29yZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODI5NAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxvbmcgd2l0
aCByODI1ODggYW5kIHI4MzQ4MyBpbXBsZW1lbnRzIG1vdmluZyBjYXJldCBieQorICAgICAgICB3
b3JkIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgCisgICAgICAgIFRoZSBvdmVyYWxsIGFsZ29y
aXRobSBpczoKKyAgICAgICAgMS4gRmlyc3QgZ2V0IHRoZSBJbmxpbmVCb3ggYW5kIG9mZnNldCBv
ZiB0aGUgcGFzcy1pbiBWaXNpYmxlUG9zaXRpb24uCisgICAgICAgIDIuIEJhc2VkIG9uIHRoZSBw
b3NpdGlvbiAobGVmdCBib3VuZGFyeSwgbWlkZGxlLCByaWdodCBib3VuZGFyeSkgb2YgdGhlIG9m
ZnNldCAKKyAgICAgICAgICAgYW5kIHRoZSBkaXJlY3Rpb24gb2YgdGhlIG1vdmVtZW50LCBsb29r
IGZvciB2aXN1YWxseSBhZGphY2VudCB3b3JkIGJyZWFrcy4KKyAgICAgICAgMi4xIElmIHRoZSBv
ZmZzZXQgaXMgdGhlIG1pbmltdW0gb2Zmc2V0IG9mIHRoZSBib3gsCisgICAgICAgICAgICByZXR1
cm4gdGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IGluIHByZXZpb3VzIGJveGVzIGlmIG1vdmlu
ZyBsZWZ0LgorICAgICAgICAgICAgcmV0dXJuIHRoZSBsZWZ0bW9zdCB3b3JkIGJvdW5kYXJ5IGlu
IGJveCBhbmQgbmV4dCBib3hlcyBpZiBtb3ZpbmcgcmlnaHQuCisgICAgICAgIDIuMiBTaW1pbGFy
IGZvciB0aGUgY2FzZSB3aGVuIG9mZnNldCBpcyBhdCB0aGUgbWF4aW11bSBvZmZzZXQgb2YgdGhl
IGJveC4KKyAgICAgICAgMi4zIFdoZW4gb2Zmc2V0IGlzIGluc2lkZSB0aGUgYm94IChub3QgYXQg
Ym91bmRhcmllcyksIGZpcnN0IGZpbmQgdGhlIHByZXZpb3VzV29yZFBvc2l0aW9uIG9yIG5leHRX
b3JkUG9zaXRpb24KKyAgICAgICAgICAgIGJhc2VkIG9uIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0
aGUgYm94LiBJZiB0aGlzIHdvcmQgYnJlYWsgcG9zaXRpb24gaXMKKyAgICAgICAgICAgIGFsc28g
aW5zaWRlIChub3QgYXQgdGhlIGJvdW5hZHJpZXMpIHRoZSBzYW1lIGJveCwgcmV0dXJuIGl0LiAK
KyAgICAgICAgICAgIE90aGVyd2lzZSAodGhlIG5leHRXb3JkUG9zaXRpb24vcHJldmlvdXNXb3Jk
UG9zaXRpb24gaXMgbm90CitpbiB0aGUgc2FtZSBib3ggb3IgaXMgYXQgdGhlIGJveCBib3VuZGFy
eSksICBjb2xsZWN0IGFsbCB0aGUKKyAgICAgICAgICAgIHdvcmQgYnJlYWtzIGluIHRoZSBib3gg
YW5kIHNlYXJjaCBmb3IgdGhlIG9uZSBjbG9zZXN0IHRvIHRoZSBpbnB1dCAib2Zmc2V0IgorICAg
ICAgICAgICAgYmFzZWQgb24gYm94IGRpcmVjdGlvbmFsaXR5LCBibG9jayBkaXJlY3Rpb25hbGl0
eSwgYW5kIG1vdmVtZW50IGRpcmVjdGlvbi4gCisgICAgICAgICAgICBDb250aW51ZSBzZWFyY2gg
aW4gYWRqYWNlbnQgYm94ZXMgaWYgbmVlZGVkLgorCisgICAgICAgIE5vdGVzOgorICAgICAgICAx
LiBXb3JkIGJvdW5kYXJpZXMgYXJlIGNvbGxlY3RlZCBvbmUgYm94IGF0IGEgdGltZS4gT25seSB3
aGVuIGEgYm91bmRhcnkgdGhhdCBpcyAKKyAgICAgICAgICAgY2xvc2VzdCB0byB0aGUgaW5wdXQg
cG9zaXRpb24gKGluIHRoZSBtb3ZpbmcgZGlyZWN0aW9uKSBpcyBub3QgYXZhaWxhYmxlIGluIAor
ICAgICAgICAgICBjdXJyZW50IGJveCwgd29yZCBib3VuZGFyaWVzIGluIGFkamFjZW50IGJveCB3
aWxsIGJlIGNvbGxlY3RlZC4gU28sIHRoZXJlIGlzIG5vCisgICAgICAgICAgIG5lZWQgdG8gc2F2
ZSBJbmxpbmVCb3ggaW4gd29yZCBib3VuZGFyaWVzLiBJbnN0ZWFkLCB0aGUgd29yZCBib3VuZGFy
aWVzIGFyZSBzYXZlZAorICAgICAgICAgICBhcyAoVmlzaWJsZVBvc2l0aW9uLCBvZmZzZXQpIHBh
aXIgc28gdGhlcmUgaXMgbm8gbmVlZCB0byByZWNvbXB1dGUgVmlzaWJsZVBvc2l0aW9uCisgICAg
ICAgICAgIGFmdGVyIHdlIGNhbGN1YXRlZCB3aGljaCAib2Zmc2V0IiBpcyB0aGUgY2xvc2VzdCBv
bmUgdG8gdGhlIGlucHV0IG9mZnNldC4KKyAgICAgICAgICAgKEkgdGhpbmsgcmVjb21wdXRlIFZp
c2libGVQb3NpdGlvbiBmcm9tIG9mZnNldCBtaWdodCBiZSB0aGUgc2FtZSBjb21wbGV4aXR5IGFz
CisgICAgICAgICAgICBnZXRJbmxpbmVCb3hBbmRPZmZzZXQoKSkuCisgCisgICAgICAgIDIuIE9u
bHkgYm91bmRhcmllcyBvZiB0aGUgcmlnaHQga2luZCBhcmUgY29sbGVjdGVkLiBCeSByaWdodCBr
aW5kLCBpdCBtZWFucyB0aGUgCisgICAgICAgICAgIGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkIGlu
IExUUiBibG9jayBhbmQgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkIGluIFJUTCBibG9jay4gCisg
ICAgICAgICAgIEFuZCB3b3JkIGJvdW5kYXJpZXMgYXJlIGNvbGxlY3RlZCB1c2luZyBwcmV2aW91
c1dvcmRQb3NpdGlvbigpIGFuZCBuZXh0V29yZFBvc2l0aW9uKCkuCisgICAgICAgICAgIFNvIHdo
ZW4gYm94IGRpcmVjdGlvbmFsaXR5IGlzIHRoZSBzYW1lIGFzIGJsb2NrIGRpcmVjdGlvbmFsaXR5
LAorICAgICAgICAgICBmb3IgTFRSIGJveCwgd29yZCBib3VuZGFyaWVzIGFyZSBjb2xsZWN0ZWQg
ZnJvbSByaWdodCB0byBsZWZ0IHZpc3VhbGx5OworICAgICAgICAgICBmb3IgUlRMIGJveCwgb2Zm
c2V0cyBjb2xsZWN0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHZpc3VhbGx5LgorICAgICAgICAgICBJ
dCBpcyB0aGUgb3RoZXIgd2F5IGFyb3VuZCB3aGVuIGJveCBkaXJlY3Rpb25hbGl0eSBpcyBkaWZm
ZXJlbnQgZnJvbSBibG9jayAKKyAgICAgICAgICAgZGlyZWN0aW9uYWxpdHkuCisKKyAgICAgICAg
My4gQmVjYXVzZSBmb3IgTFRSIGJsb2NrLCBvbmx5IGxlZnQgYm91bmRhcnkgb2YgYSB3b3JkIGlz
IGNvbGxlY3RlZCAoYW5kIGZvciBSVEwgYmxvY2ssCisgICAgICAgICAgIG9ubHkgcmlnaHQgYm91
bmRhcnkgb2YgYSB3b3JkIGlzIGNvbGxlY3RlZCksIHRvIGF2b2lkIG1hbnVhbGx5IGNoZWNrIGZv
ciBzcGFjZSBjaGFyYWN0ZXIgCisgICAgICAgICAgICh3aGljaCBJIGRvIG5vdCB0aGluayB3ZSBz
aG91bGQpLCBzb21lIG9mIHRoZSBjb2RlcyBhcmUgaW5lZmZpY2llbnQuIAorICAgICAgICAgICBG
b3IgZXhhbXBsZSwgZ2l2ZW4gYSBMVFIgYm94IGluIExUUiBibG9jaywgaWYgdGhlIG1vdmVtZW50
IGlzIGxlZnQgdG8gcmlnaHQsIAorICAgICAgICAgICBuZXh0V29yZFBvc2l0aW9uKCkgcmV0dXJu
cyB0aGUgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkLCB3aGljaCBpcyBub3Qgd2hhdCB3ZSB3YW50
LAorICAgICAgICAgICBuZXh0V29yZFBvc2l0aW9uKCkncyBuZXh0V29yZFBvc2l0aW9uKCkncyBw
cmV2aW91c1dvcmRQb3NpdGlvbigpIHJldHVybnMKKyAgICAgICAgICAgdGhlIGxlZnQgYm91bmRh
cnkgb2YgYSB3b3JkLCBhbmQgaXQgaXMgd2hhdCB3ZSB3YW50LiAKKworICAgICAgICA0LiBXaGVu
IGNvbGxlY3Rpbmcgd29yZCBicmVha3MgaW5zaWRlIGEgYm94LCBpdCBmaXJzdCBjb21wdXRlcyBh
IHN0YXJ0IHBvc2l0aW9uLCB0aGVuCisgICAgICAgICAgIGNvbGxlY3QgdGhlIHJpZ2h0IGtpbmQg
b2Ygd29yZCBicmVha3MgdW50aWwgaXQgcmVhY2hlcyB0aGUgZW5kIG9mIChvciBiZXlvbmQpIHRo
ZSBib3guCisgICAgICAgICAgIEluIHRoZSBtZWFud2hpbGUsIGl0IG1pZ2h0IG5lZWQgc3BlY2lh
bCBoYW5kbGluZyBvbiB0aGUgcmlnaHRtb3N0IG9yIGxlZnRtb3N0CisgICAgICAgICAgIHBvc2l0
aW9uIGJhc2VzIG9uIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0aGUgYm94IGFuZCBibG9jay4gVGhv
c2UgY29tcHV0YXRpb24KKyAgICAgICAgICAgZG9lcyBub3QgY29uc2lkZXIgdGhlIGJveCdzIGJp
ZGkgbGV2ZWwuCisKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bmV4dFdvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGly
ZWN0aW9uYWxpdHkpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFdvcmRCcmVha3NJbkJveCk6
CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KToKKyAgICAgICAg
KFdlYkNvcmU6Om5leHRXb3JkQm91bmRhcnlJbkJveCk6CisgICAgICAgIChXZWJDb3JlOjp2aXN1
YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0V29yZEJv
dW5kYXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZEJvdW5kYXJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OmxlZnRXb3JkUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRXb3Jk
UG9zaXRpb24pOgorCiAyMDExLTA0LTEzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgzNDgzKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI3NCwyMCArMTI3NCwxNCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQnJlYWtJ
bkJvCiAgICAgYm9vbCBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID0gcHJldmlvdXNXb3JkQnJl
YWsuaXNOb3ROdWxsKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhayA9IGhhc1NlZW5X
b3JkQnJlYWtJblRoaXNCb3ggPyBwcmV2aW91c1dvcmRCcmVhayA6IFBvc2l0aW9uKGJveC0+cmVu
ZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCksIFBvc2l0aW9uOjpQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3IpOwogICAgIHdvcmRCcmVhayA9IG5leHRXb3JkUG9zaXRpb24od29y
ZEJyZWFrKTsKLSAgICAKLSAgICBpZiAod29yZEJyZWFrID09IHByZXZpb3VzV29yZEJyZWFrKSB7
Ci0gICAgICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIFZp
c2libGVQb3NpdGlvbigpOwotICAgIH0KLQotCisgIAogICAgIC8vIEdpdmVuIFJUTCBib3ggIkFC
QyBERUYiIGVpdGhlciBmb2xsb3dzIGEgTFRSIGJveCBvciBpcyB0aGUgZmlyc3QgdmlzdWFsIGJv
eCBpbiBhbiBMVFIgYmxvY2sgYXMgYW4gZXhhbXBsZSwKICAgICAvLyB0aGUgdmlzdWFsIGRpc3Bs
YXkgb2YgdGhlIFJUTCBib3ggaXM6ICIoMClKKDEwKUkoOSlIKDgpICg3KUYoNilFKDUpRCg0KSAo
MylDKDIpQigxKUEoMTEpIiwKICAgICAvLyB3aGVyZSB0aGUgbnVtYmVyIGluIHBhcmVudGhlc2lz
IHJlcHJlc2VudHMgb2Zmc2V0IGluIHZpc2libGVQb3NpdGlvbi4gCiAgICAgLy8gU3RhcnQgYXQg
b2Zmc2V0IDAsIHRoZSBmaXJzdCB3b3JkIGJyZWFrIGlzIGF0IG9mZnNldCAzLCB0aGUgMm5kIHdv
cmQgYnJlYWsgaXMgYXQgb2Zmc2V0IDcsIGFuZCB0aGUgM3JkIHdvcmQgYnJlYWsgc2hvdWxkIGJl
IGF0IG9mZnNldCAwLgogICAgIC8vIEJ1dCBuZXh0V29yZFBvc2l0aW9uKCkgb2Ygb2Zmc2V0IDcg
aXMgb2Zmc2V0IDExLCB3aGljaCBzaG91bGQgYmUgaWdub3JlZCwgCiAgICAgLy8gYW5kIHRoZSBw
b3NpdGlvbiBhdCBvZmZzZXQgMCBzaG91bGQgYmUgbWFudWFsbHkgYWRkZWQgYXMgdGhlIGxhc3Qg
d29yZCBicmVhayB3aXRoaW4gdGhlIGJveC4KLSAgICBpZiAocG9zaXRpb25Jc1Zpc3VhbGx5T3Jk
ZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3b3JkQnJlYWssIGJv
eCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7CisgICAgaWYgKHdvcmRCcmVhayAhPSBwcmV2aW91c1dv
cmRCcmVhayAmJiBwb3NpdGlvbklzVmlzdWFsbHlPcmRlcmVkSW5Cb3hJbkJsb2NrV2l0aERpZmZl
cmVudERpcmVjdGlvbmFsaXR5KHdvcmRCcmVhaywgYm94LCBvZmZzZXRPZldvcmRCcmVhaykpIHsK
ICAgICAgICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsKICAgICAgICAgcmV0dXJuIHdv
cmRCcmVhazsKICAgICB9CkBAIC0xMzQ2LDE1ICsxMzQwLDIxIEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGUKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KKwor
c3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwg
V29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJpZXMsIFRleHREaXJlY3Rpb24g
YmxvY2tEaXJlY3Rpb24pCit7CisgICAgaWYgKGJveC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJl
Y3Rpb24pCisgICAgICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1l
RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOworICAgIGVsc2UKKyAg
ICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0
aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOyAgICAgICAgCit9CiAgICAgCi1z
dGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJyZWFrSW5Cb3goY29uc3QgSW5saW5l
Qm94KiBib3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCitzdGF0
aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5l
Qm94KiBib3gsIGludCBvZmZzZXQpCiB7CiAgICAgaW50IG9mZnNldE9mV29yZEJyZWFrID0gMDsK
ICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAg
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICAgICAg
d29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJl
Y3Rpb25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWspOwotICAgICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoZSAnZWxzZScgY2FzZSB3aGVuIHRoZSBib3ggZGlyZWN0aW9u
IGlzIG5vdCBlcXVhbCB0byB0aGUgYmxvY2sgZGlyZWN0aW9uLgorICAgICAgICB3b3JkQnJlYWsg
PSBwcmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5
KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7CiAgICAgICAgIGlmICh3b3JkQnJl
YWsuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKG9mZnNldCA9PSBp
bnZhbGlkT2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9mZnNldCkKQEAgLTEzNjMsNiAr
MTM2MywzNCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJyZWFrCiAgICAg
cmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogfQogCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5l
eHRXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCkKK3sK
KyAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSAwOworICAgIFZpc2libGVQb3NpdGlvbiB3b3Jk
QnJlYWs7CisgICAgYm9vbCBpc0xhc3RXb3JkQnJlYWtJbkJveDsKKyAgICB3aGlsZSAodHJ1ZSkg
eworICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJyZWFrSW5Cb3hJbnNpZGVCbG9ja1dpdGhE
aWZmZXJlbnREaXJlY3Rpb25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJlYWss
IGlzTGFzdFdvcmRCcmVha0luQm94KTsKKyAgICAgICAgaWYgKHdvcmRCcmVhay5pc05vdE51bGwo
KSAmJiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwgb2Zmc2V0T2ZXb3JkQnJlYWsgIT0gb2Zm
c2V0KSkKKyAgICAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7CisgICAgICAgIGlmIChpc0xhc3RX
b3JkQnJlYWtJbkJveCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0gICAgICAgIAorICAgIHJl
dHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKyAgICAKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24g
dmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBv
ZmZzZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCit7CisgICAgV29yZEJvdW5kYXJ5
VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRhcmllczsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94
KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CisgICAgaWYgKG9y
ZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpIHsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBpbnZh
bGlkT2Zmc2V0IHx8IG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMu
c2l6ZSgpIC0gMV0ub2Zmc2V0SW5JbmxpbmVCb3ggIT0gb2Zmc2V0KQorICAgICAgICAgICAgcmV0
dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0g
MV0udmlzaWJsZVBvc2l0aW9uOworICAgICAgICBpZiAob3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNp
emUoKSA+IDEpCisgICAgICAgICAgICByZXR1cm4gb3JkZXJlZFdvcmRCb3VuZGFyaWVzW29yZGVy
ZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAyXS52aXNpYmxlUG9zaXRpb247CisgICAgfQorICAg
IHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKyAgICAgICAgCiBzdGF0aWMgaW50IGdyZWF0
ZXN0VmFsdWVVbmRlcihpbnQgb2Zmc2V0LCBib29sIGJveEFuZEJsb2NrQXJlSW5TYW1lRGlyZWN0
aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykKIHsK
ICAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpCkBAIC0xNDAwLDE0ICsxNDI4
LDE4IEBAIHN0YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2UKICAgICB9CiAg
ICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiB9Ci0gCisKIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24g
bGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwgVGV4dERp
cmVjdGlvbiBibG9ja0RpcmVjdGlvbikKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFr
OwogICAgIGZvciAgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFkamFjZW50
Qm94OyBhZGphY2VudEJveCA9IGFkamFjZW50Qm94LT5wcmV2TGVhZkNoaWxkKCkpIHsKLSAgICAg
ICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgCi0gICAgICAgICAgICB3b3JkQnJlYWsgPSBw
cmV2aW91c1dvcmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBv
ZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAoYmxvY2tEaXJlY3Rpb24g
PT0gTFRSKSB7CisgICAgICAgICAgICBpZiAoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkp
IAorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5SW5Cb3go
YWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRXb3Jk
Qm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDog
aW52YWxpZE9mZnNldCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdvcmRCcmVhayA9
IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9
PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7ICAgICAgICAg
ICAgCiAgICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICByZXR1
cm4gd29yZEJyZWFrOwogICAgIH0KQEAgLTE0MTksOSArMTQ1MSwxMyBAQCBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIHJpZ2h0V29yZEJvdW5kYXJ5CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9uIHdv
cmRCcmVhazsKICAgICBmb3IgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFk
amFjZW50Qm94OyBhZGphY2VudEJveCA9IGFkamFjZW50Qm94LT5uZXh0TGVhZkNoaWxkKCkpIHsK
LSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFJUTCkKLSAgICAgICAgICAgIHdvcmRCcmVh
ayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJv
eCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICAgICAgLy8g
RklYTUU6IEltcGxlbWVudCB0aGUgImVsc2UiIGNhc2UuCisgICAgICAgIGlmIChibG9ja0RpcmVj
dGlvbiA9PSBSVEwpIHsKKyAgICAgICAgICAgIGlmIChib3gtPmlzTGVmdFRvUmlnaHREaXJlY3Rp
b24oKSkKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3go
YWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3Vz
V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNl
dCA6IGludmFsaWRPZmZzZXQpOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3b3JkQnJl
YWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRC
b3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOyAgICAg
ICAgICAgIAogICAgICAgICBpZiAoIXdvcmRCcmVhay5pc051bGwoKSkKICAgICAgICAgICAgIHJl
dHVybiB3b3JkQnJlYWs7CiAgICAgfQpAQCAtMTQ4NiwxMCArMTUyMiw3IEBAIFZpc2libGVQb3Np
dGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFYKICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsK
ICAgICAKICAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAg
IGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xsZWN0
V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtz
SW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzKTsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CiAKICAgICBpbnQgaW5kZXggPSBib3gtPmlz
TGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGdyZWF0ZXN0VmFsdWVVbmRlcihvZmZzZXQsIGJsb2Nr
RGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKSA6CiAgICAgICAgIHNtYWxs
ZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3Jk
Qm91bmRhcmllcyk7CkBAIC0xNTI3LDEwICsxNTYwLDggQEAgVmlzaWJsZVBvc2l0aW9uIHJpZ2h0
V29yZFBvc2l0aW9uKGNvbnN0IAogICAgICAgICByZXR1cm4gd29yZEJyZWFrOwogICAgIAogICAg
IFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgaWYgKGJveC0+
ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtz
SW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJv
dW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lk
ZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMpOworICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMsIGJsb2NrRGlyZWN0aW9uKTsKKyAgICAKICAgICBpbnQgaW5kZXggPSBib3gtPmlzTGVmdFRv
UmlnaHREaXJlY3Rpb24oKSA/IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0RpcmVj
dGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRhcmllcykgOgogICAgICAgICBncmVhdGVzdFZh
bHVlVW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91bmRh
cmllcyk7CiAgICAgaWYgKGluZGV4ICE9IGludmFsaWRPZmZzZXQpCkluZGV4OiBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lv
biA4MzgwMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDExLTA0LTEzICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb250aW51ZSAo
M3JkKSBleHBlcmltZW50IHdpdGggbW92aW5nIGNhcmV0IGJ5IHdvcmQgaW4gdmlzdWFsIG9yZGVy
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgyOTQK
KworICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3Vh
bGx5Lmh0bWw6CisKIDIwMTEtMDQtMTMgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFzZWxpbmUgNCB0ZXN0cyBhZGRlZCBhcyByODM3ODcu
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFs
bHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0
aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDgzNDgzKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0NCArMiwxODkgQEAKID09PT09PT09IE1v
dmUgQnkgV29yZCA9PT09CiBUZXN0IDEsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJh
YmMgZGVmIGhpaiBvcHEgcnN0IlswLCA4LCAxMiwgMTYsIDE2LCAxOV0gICAgRkFJTCBleHBlY3Rl
ZDogWzQsIDgsIDEyLCAxNiwgMTksIDE5XQorImFiYyBkZWYgaGlqIG9wcSByc3QiWzAsIDQsIDgs
IDEyLCAxNl0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgaGlqIG9wcSByc3QiWzE2
LCAxMiwgOCwgNCwgMCwgMF0KLVRlc3QgMiwgUlRMOgorImFiYyBkZWYgaGlqIG9wcSByc3QiWzE5
LCAxNiwgMTIsIDgsIDQsIDBdCitUZXN0IDIsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGhpaiBvcHEgcnN0IlswLCA0LCA4LCAxMiwgMTZdCitNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlsxOSwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAz
LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlswLCAx
NSwgMTEsIDcsIDNdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3BxIHJz
dCJbMTksIDMsIDcsIDExLCAxNSwgMF0KK1Rlc3QgNCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUg
d29yZAorIlpaWiBRUVEgQkJCIENDQyBYWFgiWzAsIDE1LCAxMSwgNywgM10KK01vdmUgbGVmdCBi
eSBvbmUgd29yZAorIlpaWiBRUVEgQkJCIENDQyBYWFgiWzE5LCAzLCA3LCAxMSwgMTUsIDBdCitU
ZXN0IDUsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIlpaWiBRUVEgQkJCIENDQyBYWFgi
WzAsIDQsIDgsIDEyLCAxNl0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJCQiBD
Q0MgWFhYIlsxOSwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCA2LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogQUFBIEJCQiBXV1cgb3ByIHV2dyB4eXoiWzAsIDQsIDgs
IDEyLCAxOSwgMTUsIDI0LCAyOCwgMzJdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVm
IGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJbMzUsIDMyLCAyOCwgMjQsIDE1LCAxOSwgMTIs
IDgsIDQsIDBdCitUZXN0IDcsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFiYyBkZWYg
aGlqIEFBQSBCQkIgV1dXIG9wciB1dncgeHl6IlswLCA3LCAzLCAxMiwgMTYsIDIwLCAyNCwgMzEs
IDI3XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlqIEFBQSBCQkIgV1dXIG9w
ciB1dncgeHl6IlszNSwgMjcsIDMxLCAyNCwgMjAsIDE2LCAxMiwgMywgNywgMF0KK1Rlc3QgOCwg
TFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6Ilsw
LCA0LCA4LCAxMSwgMTYsIDIwXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBaUUIg
UklHIHV2dyB4eXoiWzIzLCAyMCwgMTYsIDExLCA4LCA0LCAwXQorVGVzdCA5LCBSVEw6CitNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMCwgMywgOCwgMTIs
IDE2LCAxOV0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5
eiJbMjMsIDE5LCAxNiwgMTIsIDgsIDMsIDBdCitUZXN0IDEwLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCisiYWFhIEFBQSBiYmIiWzAsIDQsIDhdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYWEgQUFBIGJiYiJbMTEsIDgsIDQsIDBdCitUZXN0IDExLCBSVEw6CitNb3ZlIGxlZnQgYnkg
b25lIHdvcmQKKyJhYWEgQUFBIGJiYiJbMCwgNCwgOCwgMTFdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3
b3JkCisiYWFhIEFBQSBiYmIiWzExLCA4LCA0LCAwXQorVGVzdCAxMiwgTFRSOgorTW92ZSByaWdo
dCBieSBvbmUgd29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIgY2NjIERERCBTU1MgVVVVIlswLCA3
LCAzLCAxMiwgMTYsIDIwLCAyNCwgMzEsIDI3XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUFB
IEJCQiBXV1cgYWFhIGJiYiBjY2MgREREIFNTUyBVVVUiWzM1LCAyNywgMzEsIDI0LCAyMCwgMTYs
IDEyLCAzLCA3LCAwXQorVGVzdCAxMywgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUFB
IEJCQiBXV1cgYWFhIGJiYiBjY2MgREREIFNTUyBVVVUiWzAsIDQsIDgsIDEyLCAxOSwgMTUsIDI0
LCAyOCwgMzJdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUFBIEJCQiBXV1cgYWFhIGJiYiBj
Y2MgREREIFNTUyBVVVUiWzM1LCAzMiwgMjgsIDI0LCAxNSwgMTksIDEyLCA4LCA0LCAwXQorVGVz
dCAxNCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cg
REREIlswLCAzLCA4LCAxMiwgMTYsIDE5XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUFBIEJC
QiBhYWEgYmJiIFdXVyBEREQiWzIzLCAxOSwgMTYsIDEyLCA4LCAzLCAwXQorVGVzdCAxNSwgUlRM
OgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUFBIEJCQiBhYWEgYmJiIFdXVyBEREQiWzAsIDQs
IDgsIDExLCAxNiwgMjBdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUFBIEJCQiBhYWEgYmJi
IFdXVyBEREQiWzIzLCAyMCwgMTYsIDExLCA4LCA0LCAwXQorVGVzdCAxNiwgTFRSOgorTW92ZSBy
aWdodCBieSBvbmUgd29yZAorIlpRQiBhYmMgUklHIlswLCA0LCA4LCAxMV0KIE1vdmUgbGVmdCBi
eSBvbmUgd29yZAotImFiYyBkZWYgaGlqIG9wcSByc3QiWzAsIDExLCA3LCAzLCAzLCAxOV0gICAg
RkFJTCBleHBlY3RlZDogWzE1LCAxMSwgNywgMywgMTksIDE5XQorIlpRQiBhYmMgUklHIlsxMSwg
OCwgNCwgMF0KK1Rlc3QgMTcsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIlpRQiBhYmMg
UklHIlswLCA0LCA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIlpRQiBhYmMgUklHIlsxMSwg
OCwgNCwgMF0KK1Rlc3QgMTgsIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJhYmMgZGVm
IGhpaiBvcHEgcnN0IlsxOSwgNywgMTEsIDE1LCAwLCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbMywg
NywgMTEsIDE1LCAwLCAwXQotVGVzdCAzLCBMVFI6CisiYWJjIGRlZiAgICBoaWogb3BxIlswLCA0
LCAxNV0gICAgRkFJTCBleHBlY3RlZDogWzAsIDQsIDExLCAxNV0KK01vdmUgbGVmdCBieSBvbmUg
d29yZAorImFiYyBkZWYgICAgaGlqIG9wcSJbMTgsIDE1LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVk
OiBbMTgsIDE1LCAxMSwgNCwgMF0KK1Rlc3QgMTksIExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdv
cmQKLSJaWlogUVFRIEJCQiBDQ0MgWFhYIlswLCAxMSwgNywgMywgMywgMTldICAgIEZBSUwgZXhw
ZWN0ZWQ6IFsxNSwgMTEsIDcsIDMsIDE5LCAxOV0KKyJBQUEgIlswLCAzXQogTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMTksIDcsIDExLCAxNSwgMCwgMF0gICAg
RkFJTCBleHBlY3RlZDogWzMsIDcsIDExLCAxNSwgMCwgMF0KLVRlc3QgNCwgUlRMOgorIkJCIlsy
XSwgIkFBQSAiWzMsIDBdCitUZXN0IDIwLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJa
WlogUVFRIEJCQiBDQ0MgWFhYIlswLCA4LCAxMiwgMTYsIDE2LCAxOV0gICAgRkFJTCBleHBlY3Rl
ZDogWzQsIDgsIDEyLCAxNiwgMTksIDE5XQorIkFBQSAiWzAsIDRdCiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMTYsIDEyLCA4LCA0LCAwLCAwXQotVGVzdCA1
LCBMVFI6CisiQkIiWzJdLCAiQUFBICJbNCwgMF0KK1Rlc3QgMjEsIExUUjoKIE1vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKLSJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMCwgNCwgOCwgMTEsIDIwLCAy
MCwgMjNdICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMSwgMTYsIDIwLCAyMywgMjNdCisiYWJj
IGRlZiAiWzAsIDQsIDhdLCAiaGlqIG9wcSJbNF0sICIgcnN0IHV2dyJbMSwgNV0KK01vdmUgbGVm
dCBieSBvbmUgd29yZAorIiByc3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBvcHEiWzRdLCAiYWJjIGRl
ZiAiWzgsIDQsIDBdCitUZXN0IDIyLCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMg
ZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMjAsIDE2LCA0LCA4LCA0LCAwLCAwXSAgICBGQUlMIGV4cGVj
dGVkOiBbMjAsIDE2LCAxMSwgOCwgNCwgMCwgMF0KLVRlc3QgNiwgUlRMOgorImFiYyBkZWYgIlsw
XSwgIiByc3QgdXZ3Ils0XSwgImhpaiBvcHEiWzNdLCAiYWJjIGRlZiAiWzcsIDNdICAgIEZBSUwg
ZXhwZWN0ZWQ6IFsiYWJjIGRlZiAiWyAwLCBdIiByc3QgdXZ3IlsgNCwgIDAsIF0iaGlqIG9wcSJb
IDMsIF0iYWJjIGRlZiAiWyA3LCAgM10KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyIgcnN0IHV2
dyJbOF0sICJhYmMgZGVmICJbMywgN10sICJoaWogb3BxIlszXSwgIiByc3QgdXZ3Ils0XSwgImFi
YyBkZWYgIlswXSAgICBGQUlMIGV4cGVjdGVkOiBbIiByc3QgdXZ3IlsgOCwgXSJhYmMgZGVmICJb
IDMsICA3LCBdImhpaiBvcHEiWyAzLCBdIiByc3QgdXZ3IlsgMCwgIDQsIF0iYWJjIGRlZiAiWyAw
XQorVGVzdCAyMywgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBaUUIgUklH
IHV2dyB4eXoiWzAsIDMsIDEyLCAxMiwgMTYsIDE5LCAyM10gICAgRkFJTCBleHBlY3RlZDogWzMs
IDgsIDEyLCAxNiwgMTksIDIzLCAyM10KKyJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJo
aWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYg
IlsgMCwgXSIgcnN0IHV2dyJbIDQsICAwLCBdImhpaiBvcHEiWyAzLCBdImFiYyBkZWYgIlsgNywg
IDNdCiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzEy
LCAxNiwgMTIsIDgsIDgsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsxOSwgMTYsIDEyLCA4LCAz
LCAwLCAwXQotVGVzdCA3LCBMVFI6CisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAi
aGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBleHBlY3Rl
ZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsgMywgXSIg
cnN0IHV2dyJbIDAsICA0LCBdImFiYyBkZWYgIlsgMF0KK1Rlc3QgMjQsIExUUjoKIE1vdmUgcmln
aHQgYnkgb25lIHdvcmQKLSJaUUIgYWJjIFJJRyJbMCwgNCwgOCwgMTFdICAgIEZBSUwgZXhwZWN0
ZWQ6IFs0LCA4LCAxMSwgMTFdCisiYWJjIGRlZiAiWzAsIDQsIDhdLCAiaGlqIG9wcSJbNF0sICIg
cnN0IHV2dyJbMSwgNV0KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIlpRQiBhYmMgUklHIls0LCA0
LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbOCwgNCwgMCwgMF0KLVRlc3QgOCwgUlRMOgorIiBy
c3QgdXZ3Ils4LCA1LCAxXSwgImhpaiBvcHEiWzRdLCAiYWJjIGRlZiAiWzgsIDQsIDBdCitUZXN0
IDI1LCBSVEw6CiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJaUUIgYWJjIFJJRyJbMCwgNCwgOCwg
MTFdICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMSwgMTFdCisiQUJEIERTVSAiWzAsIDQsIDhd
LCAiRUpIIEZVWCJbNF0sICJGRlogTElHIls0XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZG
WiBMSUciWzcsIDRdLCAiRUpIIEZVWCJbNF0sICJBQkQgRFNVICJbOCwgNCwgMF0KK1Rlc3QgMjYs
IExUUjoKIE1vdmUgcmlnaHQgYnkgb25lIHdvcmQKLSJaUUIgYWJjIFJJRyJbOCwgMCwgMCwgMF0g
ICAgRkFJTCBleHBlY3RlZDogWzgsIDQsIDAsIDBdCisiQUJEIERTVSAiWzBdLCAiRkZaIExJRyJb
M10sICJFSkggRlVYIlszXSwgIkFCRCBEU1UgIls3LCAzXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
CisiRkZaIExJRyJbN10sICJBQkQgRFNVICJbMywgN10sICJFSkggRlVYIlszXSwgIkZGWiBMSUci
WzNdLCAiQUJEIERTVSAiWzBdCitUZXN0IDI3LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJBQkQgRFNVICJbMCwgNCwgOF0sICJFSkggRlVYIls0XSwgIkZGWiBMSUciWzRdCitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgNF0sICJFSkggRlVYIls0XSwgIkFCRCBEU1Ug
Ils4LCA0LCAwXQorVGVzdCAyOCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFCRCBE
U1UgIlswXSwgIkZGWiBMSUciWzNdLCAiRUpIIEZVWCJbM10sICJBQkQgRFNVICJbNywgM10KK01v
dmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiBMSUciWzddLCAiQUJEIERTVSAiWzMsIDddLCAiRUpI
IEZVWCJbM10sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIlswXQorVGVzdCAyOSwgUlRMOgorTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzAsIDQsIDhdLCAiYWJjIGRlZiJbM10sICJG
RlogTElHIls0XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBMSUciWzcsIDRdLCAiYWJj
IGRlZiJbM10sICJBQkQgRFNVICJbOCwgNCwgMF0KK1Rlc3QgMzAsIExUUjoKK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJBQkQgRFNVICJbMF0sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIls4XSwg
ImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzcsIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJG
RlogTElHIls3XSwgIkFCRCBEU1UgIlszLCA3XSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzhd
LCAiRkZaIExJRyJbM10gICAgRkFJTCBleHBlY3RlZDogWyJGRlogTElHIlsgNywgXSJBQkQgRFNV
ICJbIDMsICA3LCBdImFiYyBkZWYiWyA0LCBdIkFCRCBEU1UgIlsgOCwgXSJGRlogTElHIlsgMywg
XSJBQkQgRFNVICJbIDBdCitUZXN0IDMxLCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJB
QkQgRFNVICJbMCwgNCwgOF0sICJhYmMgZGVmIlszXSwgIkZGWiBMSUciWzRdCitNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbNywgNF0sICJhYmMgZGVmIlszXSwgIkFCRCBEU1UgIls4
LCA0LCAwXQorVGVzdCAzMiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFCRCBEU1Ug
IlswLCAzLCA4XSwgImFiYyBkZWYiWzRdLCAiRkZaIExJRyJbM10KK01vdmUgbGVmdCBieSBvbmUg
d29yZAorIkZGWiBMSUciWzcsIDNdLCAiYWJjIGRlZiJbNF0sICJBQkQgRFNVICJbOCwgNCwgMF0K
K1Rlc3QgMzMsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFCRCBvcHEgRFNVICJbMCwg
NCwgOF0sICJhYmMgQUFBIGRlZiJbOCwgNCwgM10sICJGRlogcnN0IExJRyJbNCwgOF0gICAgRkFJ
TCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRl
ZiJbIDQsICAzLCBdIkZGWiByc3QgTElHIlsgNCwgIDhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
CisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls0LCA4XSwgIkFCRCBvcHEg
RFNVICJbOCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlogcnN0IExJRyJbIDExLCAgOCwg
IDQsIF0iYWJjIEFBQSBkZWYiWyAzLCAgNCwgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDgsICA0LCAg
MF0KK1Rlc3QgMzQsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQkQgb3BxIERTVSAi
WzAsIDRdLCAiYWJjIEFBQSBkZWYiWzgsIDRdLCAiQUJEIG9wcSBEU1UgIlsxMiwgMTFdLCAiRkZa
IHJzdCBMSUciWzQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbIkFCRCBvcHEgRFNVICJbIDAs
ICA0LCAgOCwgXSJhYmMgQUFBIGRlZiJbIDgsICA3LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgMTEs
IF0iRkZaIHJzdCBMSUciWyA0LCAgOCwgIDExXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZa
IHJzdCBMSUciWzExLCA4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDEyXSwgImFiYyBBQUEgZGVm
Ils3LCA4XSwgIkFCRCBvcHEgRFNVICJbNywgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWyJGRlog
cnN0IExJRyJbIDExLCAgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTEsICAxMiwgXSJhYmMgQUFB
IGRlZiJbIDcsICA4LCBdIkFCRCBvcHEgRFNVICJbIDgsICA0LCAgMF0KK1Rlc3QgMzUsIFJUTDoK
K01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFCRCBvcHEgRFNVICJbMCwgNCwgOF0sICJhYmMgQUFB
IGRlZiJbNCwgOF0sICJGRlogcnN0IExJRyJbNCwgOF0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQg
b3BxIERTVSAiWyAwLCAgNCwgIDgsICAxMiwgXSJhYmMgQUFBIGRlZiJbIDQsICA4LCBdIkZGWiBy
c3QgTElHIlsgNCwgIDhdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiRkZaIHJzdCBMSUciWzEx
LCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTEsIDgsIDQsIDBd
ICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdImFiYyBBQUEg
ZGVmIlsgOCwgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICA4LCAgNCwgIDBdCitUZXN0IDM2LCBM
VFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJEIG9wcSBEU1UgIlswLCA0LCA4LCAxMl0s
ICJhYmMgQUFBIGRlZiJbNCwgOF0sICJGRlogcnN0IExJRyJbNCwgOCwgMTFdCitNb3ZlIGxlZnQg
Ynkgb25lIHdvcmQKKyJGRlogcnN0IExJRyJbMTEsIDgsIDRdLCAiYWJjIEFBQSBkZWYiWzgsIDRd
LCAiQUJEIG9wcSBEU1UgIlsxMiwgOCwgNCwgMF0KK1Rlc3QgMzcsIExUUjoKK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJhYWEgIlswLCA0XSwgImJiYiBBQUEgIls0LCA3XQorTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCisiRkZaIlszXSwgImJiYiBBQUEgIls3LCA0XSwgImFhYSAiWzQsIDBdCiAKID09
PT09PT09IE1vdmUgQnkgV29yZCBTcGVjaWZpYyBUZXN0ID09PT0KIFRlc3QgMQpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZp
c3VhbGx5Lmh0bWwJKHJldmlzaW9uIDgzNDgzKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxl
Y3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTcyLDM2
ICs3MiwxMDAgQEAgZnVuY3Rpb24gbG9nUG9zaXRpb25zKHBvc2l0aW9ucykKICAgICBsb2coIl0i
KTsKIH0KIAorZnVuY3Rpb24gbm9kZU9mV29yZEJyZWFrKG5vZGVBbmRPZmZzZXQpCit7CisgICAg
dmFyIG5vZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChub2RlQW5kT2Zmc2V0WzBdKS5maXJz
dENoaWxkOworICAgIGlmIChub2RlQW5kT2Zmc2V0Lmxlbmd0aCA9PSAzKSB7CisgICAgICAgIHZh
ciBjaGlsZEluZGV4ID0gbm9kZUFuZE9mZnNldFsyXTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZEluZGV4IC0gMTsgKytpKSB7CisgICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0
U2libGluZzsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gbm9kZTsKK30KKwogdmFyIHdv
cmRCcmVha3M7CiAKK2Z1bmN0aW9uIGxvZ1dvcmRCcmVhayhpbmRleCkKK3sKKyAgICB2YXIgd29y
ZEJyZWFrID0gd29yZEJyZWFrc1tpbmRleF07CisgICAgaWYgKHdvcmRCcmVhay5zZWFyY2goJywn
KSA9PSAtMSkKKyAgICAgICAgbG9nKHdvcmRCcmVhayk7CisgICAgZWxzZSB7CisgICAgICAgIHZh
ciBub2RlQW5kT2Zmc2V0ID0gd29yZEJyZWFrLnNwbGl0KCcsJyk7CisgICAgICAgIHZhciBub2Rl
ID0gbm9kZU9mV29yZEJyZWFrKG5vZGVBbmRPZmZzZXQpOworCisgICAgICAgIHZhciBkaWZmZXJl
bnROb2RlID0gZmFsc2U7CisgICAgICAgIGlmIChpbmRleCAhPSAwKSB7CisgICAgICAgICAgICBk
aWZmZXJlbnROb2RlID0gbm9kZU9mV29yZEJyZWFrKG5vZGVBbmRPZmZzZXQpICE9IG5vZGVPZldv
cmRCcmVhayh3b3JkQnJlYWtzW2luZGV4IC0gMV0uc3BsaXQoJywnKSk7CisgICAgICAgIAorICAg
ICAgICB9CisgICAgICAgIGlmIChkaWZmZXJlbnROb2RlID09IHRydWUpCisgICAgICAgICAgICBs
b2coIl0iKTsKKyAgICAgICAgaWYgKGluZGV4ID09IDAgfHwgZGlmZmVyZW50Tm9kZSA9PSB0cnVl
KQorICAgICAgICAgICAgbG9nKChub2RlIGluc3RhbmNlb2YgVGV4dCA/ICciJyArIGZvbGQobm9k
ZS5kYXRhKSArICciJyA6ICI8IiArIG5vZGUudGFnTmFtZSArICI+IikgKyAiWyIpOworICAgICAg
ICBsb2cobm9kZUFuZE9mZnNldFsxXSk7CisgICAgfQorfQorCitmdW5jdGlvbiBwb3NpdGlvbkVx
dWFsVG9Xb3JkQnJlYWsocG9zaXRpb24sIHdvcmRCcmVhaykKK3sKKyAgICBpZiAod29yZEJyZWFr
LnNlYXJjaCgnLCcpID09IC0xKQorICAgICAgICByZXR1cm4gcG9zaXRpb24ub2Zmc2V0ID09IHdv
cmRCcmVhazsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5vZGVBbmRPZmZzZXQgPSB3b3JkQnJl
YWsuc3BsaXQoJywnKTsKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uLm5vZGUgPT0gbm9kZU9mV29y
ZEJyZWFrKG5vZGVBbmRPZmZzZXQpICYmIHBvc2l0aW9uLm9mZnNldCA9PSBub2RlQW5kT2Zmc2V0
WzFdOworICAgIH0KK30KKwogZnVuY3Rpb24gdmFsaWRhdGVEYXRhKHBvc2l0aW9ucykKIHsKKyAg
ICB2YXIgZXF1YWwgPSB0cnVlOworICAgIGlmIChwb3NpdGlvbnMubGVuZ3RoICE9IHdvcmRCcmVh
a3MubGVuZ3RoKQorICAgICAgICBlcXVhbCA9IGZhbHNlOwogICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgd29yZEJyZWFrcy5sZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgaWYgKHBvc2l0aW9uc1tp
XS5vZmZzZXQgIT0gd29yZEJyZWFrc1tpICsgMV0pIHsKKyAgICAgICAgaWYgKCFwb3NpdGlvbkVx
dWFsVG9Xb3JkQnJlYWsocG9zaXRpb25zW2ldLCB3b3JkQnJlYWtzW2ldKSkgeworICAgICAgICAg
ICAgZXF1YWwgPSBmYWxzZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQot
ICAgIGlmIChpICE9IHdvcmRCcmVha3MubGVuZ3RoIC0gMSAmJiBwb3NpdGlvbnNbaV0gIT0gd29y
ZEJyZWFrc1tpXSkgeworICAgIGlmIChlcXVhbCA9PSBmYWxzZSkgewogICAgICAgICBsb2coIiAg
ICBGQUlMIGV4cGVjdGVkOiBbIik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgd29yZEJy
ZWFrcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgbG9nKHdvcmRCcmVha3NbaV0gKyAiLCAi
KTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JkQnJlYWtzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICBsb2dXb3JkQnJlYWsoaSk7CisgICAgICAgICAgICBpZiAoaSAhPSB3b3Jk
QnJlYWtzLmxlbmd0aCAtIDEpCisgICAgICAgICAgICAgICAgbG9nKCIsICIpOwogICAgICAgICB9
Ci0gICAgICAgIGxvZyh3b3JkQnJlYWtzW3dvcmRCcmVha3MubGVuZ3RoIC0gMV0gKyAiXSIpOwor
ICAgICAgICBsb2coIl0iKTsKICAgICB9CiB9CiAKIGZ1bmN0aW9uIGNvbGxlY3RXb3JkQnJlYWtz
KHRlc3QsIHNlYXJjaERpcmVjdGlvbikKIHsKLSAgICBpZiAoc2VhcmNoRGlyZWN0aW9uID09ICJy
aWdodCIpIHsKLSAgICAgICAgaWYgKHRlc3QuZ2V0QXR0cmlidXRlKCJkaXIiKSA9PSAnbHRyJykg
Ci0gICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzBdLnNwbGl0
KCIgIik7Ci0gICAgICAgIGVsc2UgCi0gICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRs
ZS5zcGxpdCgifCIpWzFdLnNwbGl0KCIgIik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHRl
c3QuZ2V0QXR0cmlidXRlKCJkaXIiKSA9PSAnbHRyJykgCi0gICAgICAgICAgICB3b3JkQnJlYWtz
ID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzFdLnNwbGl0KCIgIik7Ci0gICAgICAgIGVsc2UgCi0g
ICAgICAgICAgICB3b3JkQnJlYWtzID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzBdLnNwbGl0KCIg
Iik7CisgICAgdmFyIHRpdGxlOworICAgIGlmIChzZWFyY2hEaXJlY3Rpb24gPT0gInJpZ2h0Iikg
CisgICAgICAgIHRpdGxlID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzBdOworICAgIGVsc2UKKyAg
ICAgICAgdGl0bGUgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMV07CisKKyAgICB2YXIgcGF0dGVy
biA9IC9cWyguKz8pXF0vZzsKKyAgICB2YXIgcmVzdWx0OworICAgIHdvcmRCcmVha3MgPSBbXTsK
KyAgICB3aGlsZSAoKHJlc3VsdCA9IHBhdHRlcm4uZXhlYyh0aXRsZSkpICE9IG51bGwpIHsKKyAg
ICAgICAgd29yZEJyZWFrcy5wdXNoKHJlc3VsdFsxXSk7CisgICAgfQorICAgIGlmICh3b3JkQnJl
YWtzLmxlbmd0aCA9PSAwKSB7CisgICAgICAgIHdvcmRCcmVha3MgPSB0aXRsZS5zcGxpdCgiICIp
OworICAgIH0KK30KKworZnVuY3Rpb24gc2V0UG9zaXRpb24oc2VsLCBub2RlLCB3b3JkQnJlYWsp
Cit7CisgICAgaWYgKHdvcmRCcmVhay5zZWFyY2goJywnKSA9PSAtMSkKKyAgICAgICAgc2VsLnNl
dFBvc2l0aW9uKG5vZGUsIHdvcmRCcmVhayk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBub2Rl
QW5kT2Zmc2V0ID0gd29yZEJyZWFrLnNwbGl0KCcsJyk7CisgICAgICAgIHNlbC5zZXRQb3NpdGlv
bihub2RlT2ZXb3JkQnJlYWsobm9kZUFuZE9mZnNldCksIG5vZGVBbmRPZmZzZXRbMV0pOwogICAg
IH0KIH0KIApAQCAtMTA5LDE4ICsxNzMsMjAgQEAgZnVuY3Rpb24gbW92ZUJ5V29yZChzZWwsIHRl
c3QsIHNlYXJjaERpcgogewogICAgIGxvZygiTW92ZSAiICsgc2VhcmNoRGlyZWN0aW9uICsgIiBi
eSBvbmUgd29yZFxuIik7CiAgICAgdmFyIHByZXZPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0Owot
ICAgIHZhciBub2RlID0gc2VsLmFuY2hvck5vZGU7Ci0gICAgY29sbGVjdFdvcmRCcmVha3ModGVz
dCwgc2VhcmNoRGlyZWN0aW9uKTsKLSAgICBzZWwuc2V0UG9zaXRpb24obm9kZSwgd29yZEJyZWFr
c1swXSk7CisgICAgdmFyIHByZXZOb2RlID0gc2VsLmFuY2hvck5vZGU7CiAgICAgdmFyIHBvc2l0
aW9ucyA9IFtdOwotICAgIGZvciAodmFyIGluZGV4ID0gMTsgaW5kZXggPCB3b3JkQnJlYWtzLmxl
bmd0aDsgKytpbmRleCkgeworICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmFuY2hvck5v
ZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCwgcG9pbnQ6IGNhcmV0Q29vcmRpbmF0ZXMoKSB9
KTsKKworICAgIHdoaWxlICgxKSB7CiAgICAgICAgIHNlbC5tb2RpZnkoIm1vdmUiLCBzZWFyY2hE
aXJlY3Rpb24sICItd2Via2l0LXZpc3VhbC13b3JkIik7CisgICAgICAgIGlmIChwcmV2Tm9kZSA9
PSBzZWwuYW5jaG9yTm9kZSAmJiBwcmV2T2Zmc2V0ID09IHNlbC5hbmNob3JPZmZzZXQpCisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9y
Tm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRlcygp
IH0pOwotICAgICAgICBzZWwuc2V0UG9zaXRpb24obm9kZSwgd29yZEJyZWFrc1tpbmRleF0pOwot
ICAgIH0KLSAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgc2VhcmNoRGlyZWN0aW9uLCAiLXdlYmtpdC12
aXN1YWwtd29yZCIpOwotICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmFuY2hvck5vZGUs
IG9mZnNldDogc2VsLmFuY2hvck9mZnNldCwgcG9pbnQ6IGNhcmV0Q29vcmRpbmF0ZXMoKSB9KTsK
KyAgICAgICAgcHJldk5vZGUgPSBzZWwuYW5jaG9yTm9kZTsKKyAgICAgICAgcHJldk9mZnNldCA9
IHNlbC5hbmNob3JPZmZzZXQ7CisgICAgfTsKICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zKTsK
KyAgICBjb2xsZWN0V29yZEJyZWFrcyh0ZXN0LCBzZWFyY2hEaXJlY3Rpb24pOwogICAgIHZhbGlk
YXRlRGF0YShwb3NpdGlvbnMpOwogICAgIGxvZygiXG4iKTsKIH0KQEAgLTEzMyw2ICsxOTksOCBA
QCBmdW5jdGlvbiBtb3ZlQnlXb3JkRm9yRXZlcnlQb3NpdGlvbihzZWwsCiAgICAgaWYgKGRpciA9
PSAicnRsIikKICAgICAgICAgZGlyZWN0aW9uID0gImxlZnQiOyAgICAKICAgICBtb3ZlQnlXb3Jk
KHNlbCwgdGVzdCwgZGlyZWN0aW9uLCBkaXIpOyAgICAKKworICAgIHNlbC5tb2RpZnkoIm1vdmUi
LCAiZm9yd2FyZCIsICJsaW5lQm91bmRhcnkiKTsKICAgICAvLyBDaGVjayBjdHJsLWxlZnQtYXJy
b3cgd29ya3MgZm9yIGV2ZXJ5IHBvc2l0aW9uLgogICAgIGlmIChkaXIgPT0gImx0ciIpCiAgICAg
ICAgIGRpcmVjdGlvbiA9ICJsZWZ0IjsKQEAgLTIxNSwxOSArMjgzLDEwNCBAQCBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQogPC9oZWFkPgogPGJvZHk+CiA8ZGl2IGlkPSJ0ZXN0TW92
ZUJ5V29yZCI+Ci08IS0tIFRoZSBudW1iZXJzIHB1dCBpbiB0aXRsZSBhcmUgc3RhcnRpbmcgd29y
ZCBib3VuZGFyaWVzLgotVGhlIG51bWJlcnMgcHJpbnRlZCBvdXQgaW4gdGhlIG91dHB1dCBhcmUg
ZW5kaW5nIHdvcmQgYm91bmRhcmllcy4gLS0+Ci08ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTIgMTYgMTl8MTkgMTYgMTIgOCA0IDAiIGNvbnRlbnRl
ZGl0YWJsZT5hYmMgZGVmIGhpaiBvcHEgcnN0PC9kaXY+Ci08ZGl2IGRpcj1ydGwgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCAxNSAxMSA3IDMgMTl8MTkgMyA3IDExIDE1IDAiIGNv
bnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhpaiBvcHEgcnN0PC9kaXY+Ci08ZGl2IGRpcj1sdHIgY2xh
c3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCAxNSAxMSA3IDMgMTl8MTkgMyA3IDExIDE1
IDAiIGNvbnRlbnRlZGl0YWJsZT7Xqdep16kg16DXoNegINeR15HXkSDXkteS15Ig16fXp9enPC9k
aXY+Ci08ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDgg
MTIgMTYgMTl8MTkgMTYgMTIgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT7Xqdep16kg16DXoNegINeR
15HXkSDXkteS15Ig16fXp9enPC9kaXY+Ci08ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9i
eV93b3JkIiB0aXRsZT0iMCA0IDggMTEgMTYgMjAgMjN8MjMgMjAgMTYgMTEgOCA0IDAiIGNvbnRl
bnRlZGl0YWJsZT5hYmMgZGVmINep16DXkSDXodeY15YgdXZ3IHh5ejwvZGl2PgotPGRpdiBkaXI9
cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMyA4IDEyIDE2IDE5IDIzfDIz
IDE5IDE2IDEyIDggMyAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2
dyB4eXo8L2Rpdj4KKzwhLS0gCitUaXRsZSBzYXZlcyB0aGUgd29yZCBicmVha3MuCitUaGUgZm9y
bWF0IG9mIHRpdGxlIGlzICJ4eHh8eHh4eCIuCisKK1RoZSBzZXF1ZW5jZSBvbiB0aGUgbGVmdCBv
ZiAifCIgaXMgd29yZCBib3VuZGFyaWVzIHdoZW4gbW92aW5nIGNhcmV0IGZyb20gbGVmdCB0byBy
aWdodC4KK1RoZSBzZXF1ZW5jZSBvbiB0aGUgcmlnaHQgb2YgInwiIGlzIHdvcmQgYm91bmRhcmll
cyB3aGVuIG1vdmluZyBjYXJldCBmcm9tIHJpZ2h0IHRvIGxlZnQuCisKK0lmIHRoZXJlIGlzIGEg
c2luZ2xlIG5vZGUgaW4gdGhlIGxpbmUsIHRoZSBzZXF1ZW5jZSBhcmUgb2Zmc2V0cy4KK0lmIHRo
ZXJlIGFyZSBtdWx0aXBsZSBub2RlcyBpbiB0aGUgbGluZSwgdGhlIHNlcXVlbmNlIGlzIGFycmF5
IG9mIFthbmNob3Jfbm9kZV9pZCwgb2Zmc2V0LCBjaGlsZF9ub2RlX2luZGV4XSwgCit3aGVyZSBj
aGlsZF9ub2RlX2luZGV4IGlzIG9wdGlvbmFsLCBkZWZhdWx0IGlzIHRoZSBmaXJzdCBjaGlsZCBv
ZiB0aGUgYW5jaG9yIG5vZGUuCistLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5
X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxNnwxOSAxNiAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxl
PmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KKworPCEtLSBwdXJlIEVuZ2xpc2ggLS0+Cis8ZGl2
IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTIgMTZ8MTkg
MTYgMTIgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhpaiBvcHEgcnN0PC9kaXY+Cis8
ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMTkgMyA3IDExIDE1
IDB8MCAxNSAxMSA3IDMiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhpaiBvcHEgcnN0PC9kaXY+
CisKKzwhLS0gcHVyZSBIZWJyZXcgLS0+Cis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9i
eV93b3JkIiB0aXRsZT0iMCAxNSAxMSA3IDN8MTkgMyA3IDExIDE1IDAiIGNvbnRlbnRlZGl0YWJs
ZT7Xqdep16kg16DXoNegINeR15HXkSDXkteS15Ig16fXp9enPC9kaXY+Cis8ZGl2IGRpcj1ydGwg
Y2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMTkgMTYgMTIgOCA0IDB8MCA0IDggMTIg
MTYiIGNvbnRlbnRlZGl0YWJsZT7Xqdep16kg16DXoNegINeR15HXkSDXkteS15Ig16fXp9enPC9k
aXY+CisKKzwhLS0gYmlkaSB0ZXh0IC0tPgorPCEtLSBFbmdsaXNoIEhlYnJldyBFbmdsaXNoIC0t
PgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEy
IDE5IDE1IDI0IDI4IDMyfDM1IDMyIDI4IDI0IDE1IDE5IDEyIDggNCAwIiBjb250ZW50ZWRpdGFi
bGU+YWJjIGRlZiBoaWog15DXkNeQINeR15HXkSDXptem16Ygb3ByIHV2dyB4eXo8L2Rpdj4KKzxk
aXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIzNSAyNyAzMSAyNCAy
MCAxNiAxMiAzIDcgMHwwIDcgMyAxMiAxNiAyMCAyNCAzMSAyNyIgY29udGVudGVkaXRhYmxlPmFi
YyBkZWYgaGlqINeQ15DXkCDXkdeR15Eg16bXptemIG9wciB1dncgeHl6PC9kaXY+CisKKzxkaXYg
ZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMSAxNiAyMHwy
MyAyMCAxNiAxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh15jXliB1
dncgeHl6PC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRs
ZT0iMjMgMTkgMTYgMTIgOCAzIDB8MCAzIDggMTIgMTYgMTkiIGNvbnRlbnRlZGl0YWJsZT5hYmMg
ZGVmINep16DXkSDXodeY15YgdXZ3IHh5ejwvZGl2PgorCis8ZGl2IGRpcj1sdHIgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDh8MTEgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT5h
YWEg15DXkNeQIGJiYjwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCIgdGl0bGU9IjExIDggNCAwfDAgNCA4IDExIiBjb250ZW50ZWRpdGFibGU+YWFhINeQ15DXkCBi
YmI8L2Rpdj4KKworPCEtLSBIZWJyZXcgRW5nbGlzaCBIZWJyZXcgLS0+Cis8ZGl2IGRpcj1sdHIg
Y2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA3IDMgMTIgMTYgMjAgMjQgMzEgMjd8
MzUgMjcgMzEgMjQgMjAgMTYgMTIgMyA3IDAiIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15Ag15HXkdeR
INem16bXpiBhYWEgYmJiIGNjYyDXk9eT15Mg16LXoteiINek16TXpDwvZGl2PgorPGRpdiBkaXI9
cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjM1IDMyIDI4IDI0IDE1IDE5IDEy
IDggNCAwfDAgNCA4IDEyIDE5IDE1IDI0IDI4IDMyIiBjb250ZW50ZWRpdGFibGU+15DXkNeQINeR
15HXkSDXptem16YgYWFhIGJiYiBjY2Mg15PXk9eTINei16LXoiDXpNek16Q8L2Rpdj4KKworPGRp
diBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMyA4IDEyIDE2IDE5
fDIzIDE5IDE2IDEyIDggMyAwIiBjb250ZW50ZWRpdGFibGU+15DXkNeQINeR15HXkSBhYWEgYmJi
INem16bXpiDXk9eT15M8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSIyMyAyMCAxNiAxMSA4IDQgMHwwIDQgOCAxMSAxNiAyMCIgY29udGVudGVkaXRh
YmxlPteQ15DXkCDXkdeR15EgYWFhIGJiYiDXptem16Yg15PXk9eTPC9kaXY+CisKIDxkaXYgZGly
PWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMXwxMSA4IDQgMCIg
Y29udGVudGVkaXRhYmxlPtep16DXkSBhYmMg16HXmNeWPC9kaXY+Ci08ZGl2IGRpcj1ydGwgY2xh
c3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTF8MTEgOCA0IDAiIGNvbnRlbnRl
ZGl0YWJsZT7Xqdeg15EgYWJjINeh15jXljwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCIgdGl0bGU9IjExIDggNCAwfDAgNCA4IiBjb250ZW50ZWRpdGFibGU+16nX
oNeRIGFiYyDXodeY15Y8L2Rpdj4KKworPCEtLSBtdWx0aXBsZSBzcGFjZXMgYmV0d2VlbiB3b3Jk
LiAKKyAgICAgRkFJTEVEOiB3b3JkIGJyZWFrIGJldHdlZW4gImRlZiIgYW5kICJoaWoiIGlzIHVu
cmVhY2hhYmxlLgorLS0+Cis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0
aXRsZT0iMCA0IDExIDE1fDE4IDE1IDExIDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgICAg
aGlqIG9wcTwvZGl2PgorCis8IS0tIElubGluZSBlbGVtZW50IC0tPgorPGRpdiBkaXI9bHRyIGlk
PSJkaXZfMSIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xLCAwXVtkaXZf
MSwgM118W3NwYW5fMSwgMl1bZGl2XzEsIDNdW2Rpdl8xLDBdIiBjb250ZW50ZWRpdGFibGU+15DX
kNeQIDxzcGFuIGlkPSJzcGFuXzEiPteR15E8L3NwYW4+PC9kaXY+Cis8ZGl2IGRpcj1ydGwgaWQ9
ImRpdl8yIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbc3Bhbl8yLCAyXVtkaXZf
MiwgNF1bZGl2XzIsIDBdfFtkaXZfMiwgMF1bZGl2XzIsIDRdIiBjb250ZW50ZWRpdGFibGU+15DX
kNeQIDxzcGFuIGlkPSJzcGFuXzIiPteR15E8L3NwYW4+PC9kaXY+CisKKzwhLS0gcHVyZSBFbmds
aXNoIGluIGlubGluZSBlbGVtZW50IHdpdGggc2FtZSBvciBkaWZmZXJlbnQgZGlyZWN0aW9uYWxp
dHkgZnJvbSBpdHMgcGFyZW50IC0tPgorPGRpdiBkaXI9bHRyIGlkPSJkaXZfMyIgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8zLCAwXVtkaXZfMywgNF1bZGl2XzMsIDhdW3Nw
YW5fMywgNF1bZGl2XzMsIDEsIDNdW2Rpdl8zLCA1LCAzXXxbZGl2XzMsIDgsIDNdW2Rpdl8zLCA1
LCAzXVtkaXZfMywgMSwgM11bc3Bhbl8zLCA0XVtkaXZfMywgOF1bZGl2XzMsIDRdW2Rpdl8zLCAw
XSIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgPHNwYW4gaWQ9InNwYW5fMyI+aGlqIG9wcTwvc3Bh
bj4gcnN0IHV2dzwvZGl2PgorCis8IS0tIEZBSUxFRCAtLT4KKzxkaXYgZGlyPXJ0bCBpZD0iZGl2
XzQiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfNCwgOCwgM11bZGl2XzQs
IDMsIDFdW2Rpdl80LCA3LCAxXVtzcGFuXzQsIDMsIDFdW2Rpdl80LCAwLCAzXVtkaXZfNCwgNCwg
M11bZGl2XzQsIDAsIDFdfFtkaXZfNCwgMCwgMV1bZGl2XzQsIDQsIDNdW2Rpdl80LCAwLCAzXVtz
cGFuXzQsIDMsIDFdW2Rpdl80LCA3LCAxXVtkaXZfNCwgMywgMV0iIGNvbnRlbnRlZGl0YWJsZT5h
YmMgZGVmIDxzcGFuIGlkPSJzcGFuXzQiPmhpaiBvcHE8L3NwYW4+IHJzdCB1dnc8L2Rpdj4KKwor
PCEtLSBGQUlMRUQgLS0+Cis8ZGl2IGlkPSJkaXZfNSIgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHRpdGxlPSJbZGl2XzUsIDgsIDNdW2Rpdl81LCAzLCAxXVtkaXZfNSwgNywgMV1b
c3Bhbl81LCAzLCAxXVtkaXZfNSwgMCwgM11bZGl2XzUsIDQsIDNdW2Rpdl81LCAwLCAxXXxbZGl2
XzUsIDAsIDFdW2Rpdl81LCA0LCAzXVtkaXZfNSwgMCwgM11bc3Bhbl81LCAzLCAxXVtkaXZfNSwg
NywgMV1bZGl2XzUsIDMsIDFdImNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIDxzcGFuIGRpcj1sdHIg
aWQ9InNwYW5fNSI+aGlqIG9wcTwvc3Bhbj4gcnN0IHV2dzwvZGl2PgorCis8ZGl2IGlkPSJkaXZf
NiIgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzYsIDAsIDFd
W2Rpdl82LCA0LCAxXVtkaXZfNiwgOCwgMV1bc3Bhbl82LCA0LCAxXVtkaXZfNiwgMSwgM11bZGl2
XzYsIDUsIDNdfFtkaXZfNiwgOCwgM11bZGl2XzYsIDUsIDNdW2Rpdl82LCAxLCAzXVtzcGFuXzYs
IDQsIDFdW2Rpdl82LCA4LCAxXVtkaXZfNiwgNCwgMV1bZGl2XzYsIDAsIDFdIiBjb250ZW50ZWRp
dGFibGU+YWJjIGRlZiA8c3BhbiBkaXI9cnRsIGlkPSJzcGFuXzYiPmhpaiBvcHE8L3NwYW4+IHJz
dCB1dnc8L2Rpdj4KKworPCEtLSBwdXJlIEhlYnJldyBpbiBpbmxpbmUgZWxlbWVudCB3aXRoIHNh
bWUgb3IgZGlmZmVyZW50IGRpcmVjdGlvbmFsaXR5IGZyb20gaXRzIHBhcmVudCAtLT4KKworPGRp
diBpZD0iZGl2XzciIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rp
dl83LCA3LCAzXVtkaXZfNywgNCwgM11bc3Bhbl83LCA0LCAxXVtkaXZfNywgOCwgMV1bZGl2Xzcs
IDQsIDFdW2Rpdl83LCAwLCAxXXxbZGl2XzcsIDAsIDFdW2Rpdl83LCA0LCAxXVtkaXZfNywgOCwg
MV1bc3Bhbl83LCA0LCAxXVtkaXZfNywgNCwgM10iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PX
otekIDxzcGFuIGRpcj1sdHIgaWQ9InNwYW5fNyI+15TXmdeXINeV16TXpzwvc3Bhbj7XldeV16kg
15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl84IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCIgdGl0bGU9IltkaXZfOCwgMCwgMV1bZGl2XzgsIDMsIDNdW3NwYW5fOCwgMywgMV1b
ZGl2XzgsIDcsIDFdW2Rpdl84LCAzLCAxXXxbZGl2XzgsIDcsIDNdW2Rpdl84LCAzLCAxXVtkaXZf
OCwgNywgMV1bc3Bhbl84LCAzLCAxXVtkaXZfOCwgMywgM11bZGl2XzgsIDAsIDFdIiBjb250ZW50
ZWRpdGFibGU+15DXkdeTINeT16LXpCA8c3BhbiBkaXI9cnRsIGlkPSJzcGFuXzgiPteU15nXlyDX
ldek16c8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8ZGl2IGlkPSJkaXZfOSIgZGlyPXJ0
bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzksIDcsIDNdW2Rpdl85LCA0
LCAzXVtzcGFuXzksIDQsIDFdW2Rpdl85LCA4LCAxXVtkaXZfOSwgNCwgMV1bZGl2XzksIDAsIDFd
fFtkaXZfOSwgMCwgMV1bZGl2XzksIDQsIDFdW2Rpdl85LCA4LCAxXVtzcGFuXzksIDQsIDFdW2Rp
dl85LCA0LCAzXSIgY29udGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gaWQ9InNwYW5f
OSI+15TXmdeXINeV16TXpzwvc3Bhbj7XldeV16kg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRp
dl8xMCIgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzEwLCAw
LCAxXVtkaXZfMTAsIDMsIDNdW3NwYW5fMTAsIDMsIDFdW2Rpdl8xMCwgNywgMV1bZGl2XzEwLCAz
LCAxXXxbZGl2XzEwLCA3LCAzXVtkaXZfMTAsIDMsIDFdW2Rpdl8xMCwgNywgMV1bc3Bhbl8xMCwg
MywgMV1bZGl2XzEwLCAzLCAzXVtkaXZfMTAsIDAsIDFdIiBjb250ZW50ZWRpdGFibGU+15DXkdeT
INeT16LXpCA8c3BhbiBpZD0ic3Bhbl8xMCI+15TXmdeXINeV16TXpzwvc3Bhbj7XldeV16kg15vX
mNeWPC9kaXY+CisKKzwhLS0gYmlkaSBpbiBpbmxpbmUgZWxlbWVudCB3aXRoIHNhbWUgb3IgZGlm
ZmVyZW50IGRpcmVjdGlvbmFsaXR5IGZyb20gaXRzIHBhcmVudCAtLT4KKzxkaXYgaWQ9ImRpdl8x
MSIgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzExLCA3LCAz
XVtkaXZfMTEsIDQsIDNdW3NwYW5fMTEsIDMsIDFdW2Rpdl8xMSwgOCwgMV1bZGl2XzExLCA0LCAx
XVtkaXZfMTEsIDAsIDFdfFtkaXZfMTEsIDAsIDFdW2Rpdl8xMSwgNCwgMV1bZGl2XzExLCA4LCAx
XVtzcGFuXzExLCAzLCAxXVtkaXZfMTEsIDQsIDNdIiBjb250ZW50ZWRpdGFibGU+15DXkdeTINeT
16LXpCA8c3BhbiBkaXI9bHRyIGlkPSJzcGFuXzExIj5hYmMgZGVmPC9zcGFuPteV15XXqSDXm9eY
15Y8L2Rpdj4KKworPCEtLSBGQUlMIC0tPgorPGRpdiBpZD0iZGl2XzEyIiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTIsIDAsIDFdW2Rpdl8xMiwgMywgM11b
ZGl2XzEyLCA4LCAxXVtzcGFuXzEyLCA0LCAxXVtkaXZfMTIsIDcsIDFdW2Rpdl8xMiwgMywgMV18
W2Rpdl8xMiwgNywgM11bZGl2XzEyLCAzLCAxXVtkaXZfMTIsIDcsIDFdW3NwYW5fMTIsIDQsIDFd
W2Rpdl8xMiwgOCwgMV1bZGl2XzEyLCAzLCAzXVtkaXZfMTIsIDBdIiBjb250ZW50ZWRpdGFibGU+
15DXkdeTINeT16LXpCA8c3BhbiBkaXI9cnRsIGlkPSJzcGFuXzEyIj5hYmMgZGVmPC9zcGFuPteV
15XXqSDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2XzEzIiBkaXI9cnRsIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTMsIDcsIDNdW2Rpdl8xMywgNCwgM11bc3Bhbl8x
MywgMywgMV1bZGl2XzEzLCA4LCAxXVtkaXZfMTMsIDQsIDFdW2Rpdl8xMywgMCwgMV18W2Rpdl8x
MywgMCwgMV1bZGl2XzEzLCA0LCAxXVtkaXZfMTMsIDgsIDFdW3NwYW5fMTMsIDMsIDFdW2Rpdl8x
MywgNCwgM10iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGlkPSJzcGFuXzEz
Ij5hYmMgZGVmPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2XzE0IiBk
aXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTQsIDAsIDFdW2Rp
dl8xNCwgMywgMV1bZGl2XzE0LCA4LCAxXVtzcGFuXzE0LCA0LCAxXVtkaXZfMTQsIDMsIDNdfFtk
aXZfMTQsIDcsIDNdW2Rpdl8xNCwgMywgM11bc3Bhbl8xNCwgNCwgMV1bZGl2XzE0LCA4LCAxXVtk
aXZfMTQsIDQsIDFdW2Rpdl8xNCwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotek
IDxzcGFuIGlkPSJzcGFuXzE0Ij5hYmMgZGVmPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKwor
PCEtLSBGQUlMRUQgLS0+Cis8ZGl2IGlkPSJkaXZfMTUiIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xNSwgMTEsIDNdW2Rpdl8xNSwgOCwgM11bZGl2XzE1LCA0
LCAzXVtzcGFuXzE1LCAzLCAxXVtzcGFuXzE1LCA0LCAxXVtkaXZfMTUsIDEyLCAxXVtkaXZfMTUs
IDgsIDFdW2Rpdl8xNSwgNCwgMV1bZGl2XzE1LCAwLCAxXXxbZGl2XzE1LCAwLCAxXVtkaXZfMTUs
IDQsIDFdW2Rpdl8xNSwgOCwgMV1bZGl2XzE1LCAxMiwgMV1bc3Bhbl8xNSwgNCwgMV1bc3Bhbl8x
NSwgMywgMV1bZGl2XzE1LCA0LCAzXVtkaXZfMTUsIDgsIDNdIgorY29udGVudGVkaXRhYmxlPteQ
15HXkyBvcHEg15PXotekIDxzcGFuIGRpcj1sdHIgaWQ9InNwYW5fMTUiPmFiYyDXkNeQ15AgZGVm
PC9zcGFuPteV15XXqSByc3Qg15vXmNeWPC9kaXY+CisKKzwhLS0gRkFJTEVELCBhbmQgd3Jvbmcg
cHJpbnRpbmcgcmVzdWx0IC0tPgorPGRpdiBpZD0iZGl2XzE2IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0
X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTYsIDAsIDFdW2Rpdl8xNiwgNCwgMV1bZGl2XzE2
LCA4LCAxXVtzcGFuXzE2LCA4LCAxXVtzcGFuXzE2LCA3LCAxXVtkaXZfMTYsIDEyLCAxXVtkaXZf
MTYsIDExLCAxXVtkaXZfMTYsIDQsIDNdW2Rpdl8xNiwgOCwgM11bZGl2XzE2LCAxMSwgM118W2Rp
dl8xNiwgMTEsIDNdW2Rpdl8xNiwgOCwgM11bZGl2XzE2LCA0LCAzXVtkaXZfMTYsIDExLCAxXVtk
aXZfMTYsIDEyLCAxXVtzcGFuXzE2LCA3LCAxXVtzcGFuXzE2LCA4LCAxXVtkaXZfMTYsIDgsIDFd
W2Rpdl8xNiwgNCwgMV1bZGl2XzE2LCAwLCAxXSIgY29udGVudGVkaXRhYmxlPteQ15HXkyBvcHEg
15PXotekIDxzcGFuIGRpcj1ydGwgaWQ9InNwYW5fMTYiPmFiYyDXkNeQ15AgZGVmPC9zcGFuPteV
15XXqSByc3Qg15vXmNeWPC9kaXY+CisKKzwhLS0gRkFJTEVEIC0tPgorPGRpdiBpZD0iZGl2XzE3
IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTcsIDExLCAz
XVtkaXZfMTcsIDgsIDNdW2Rpdl8xNywgNCwgM11bc3Bhbl8xNywgOCwgMV1bc3Bhbl8xNywgNCwg
MV1bZGl2XzE3LCAxMiwgMV1bZGl2XzE3LCA4LCAxXVtkaXZfMTcsIDQsIDFdW2Rpdl8xNywgMCwg
MV18W2Rpdl8xNywgMCwgMV1bZGl2XzE3LCA0LCAxXVtkaXZfMTcsIDgsIDFdW2Rpdl8xNywgMTIs
IDFdW3NwYW5fMTcsIDQsIDFdW3NwYW5fMTcsIDgsIDFdW2Rpdl8xNywgNCwgM11bZGl2XzE3LCA4
LCAzXSIgY29udGVudGVkaXRhYmxlPteQ15HXkyBvcHEg15PXotekIDxzcGFuIGlkPSJzcGFuXzE3
Ij5hYmMg15DXkNeQIGRlZjwvc3Bhbj7XldeV16kgcnN0INeb15jXljwvZGl2PgorCis8ZGl2IGlk
PSJkaXZfMTgiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8x
OCwgMCwgMV1bZGl2XzE4LCA0LCAxXVtkaXZfMTgsIDgsIDFdW2Rpdl8xOCwgMTIsIDFdW3NwYW5f
MTgsIDQsIDFdW3NwYW5fMTgsIDgsIDFdW2Rpdl8xOCwgNCwgM11bZGl2XzE4LCA4LCAzXVtkaXZf
MTgsIDExLCAzXXxbZGl2XzE4LCAxMSwgM11bZGl2XzE4LCA4LCAzXVtkaXZfMTgsIDQsIDNdW3Nw
YW5fMTgsIDgsIDFdW3NwYW5fMTgsIDQsIDFdW2Rpdl8xOCwgMTIsIDFdW2Rpdl8xOCwgOCwgMV1b
ZGl2XzE4LCA0LCAxXVtkaXZfMTgsIDAsIDFdIiBjb250ZW50ZWRpdGFibGU+15DXkdeTIG9wcSDX
k9ei16QgPHNwYW4gaWQ9InNwYW5fMTgiPmFiYyDXkNeQ15AgZGVmPC9zcGFuPteV15XXqSByc3Qg
15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl8xOSIgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3Zl
X2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE5LCAwLCAxXVtkaXZfMTksIDQsIDFdW3NwYW5fMTksIDQs
IDFdW3NwYW5fMTksIDcsIDFdfFtkaXZfMTksIDMsIDNdW3NwYW5fMTksIDcsIDFdW3NwYW5fMTks
IDQsIDFdW2Rpdl8xOSwgNCwgMV1bZGl2XzE5LCAwLCAxXSIgY29udGVudGVkaXRhYmxlPmFhYSA8
c3BhbiBpZD0ic3Bhbl8xOSI+YmJiINeQ15DXkCA8L3NwYW4+15XXldepPC9kaXY+CiAKIDwhLS0g
VGhlIGNvbnRlbnQgaW4gdGl0bGUgbWVhbnMgInN0YXJ0T2Zmc2V0SW5DdXJyZW50Tm9kZSBtb3Zp
bmdEaXJlY3Rpb25CeVdvcmQgZW5kaW5nTm9kZSBlbmRpbmdPZmZzZXRJbkVuZGluZ05vZGUiIC0t
PgotPGRpdiBpZD0iZGl2XzEiIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4gaWQ9InNwYW5f
MSIgY2xhc3M9InNwZWNpZmljX3Rlc3QiIHRpdGxlPSIxIGxlZnQgZGl2XzEgMCI+15HXkTwvc3Bh
bj48L2Rpdj4KKzxkaXYgaWQ9ImRpdl8xMDAiIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4g
aWQ9InNwYW5fMTAwIiBjbGFzcz0ic3BlY2lmaWNfdGVzdCIgdGl0bGU9IjEgbGVmdCBkaXZfMTAw
IDAiPteR15E8L3NwYW4+PC9kaXY+CiA8L2Rpdj4KIAogPHByZSBpZD0iY29uc29sZSI+PC9wcmU+
Cg==
</data>
<flag name="review"
          id="82352"
          type_id="1"
          status="-"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89674</attachid>
            <date>2011-04-14 15:49:23 -0700</date>
            <delta_ts>2011-04-20 14:54:56 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>58294.v3</filename>
            <type>text/plain</type>
            <size>38372</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzODAwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDQtMTMgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENvbnRpbnVlICgzcmQpIGV4cGVyaW1lbnQgd2l0aCBtb3ZpbmcgY2Fy
ZXQgYnkgd29yZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01ODI5NAorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxvbmcgd2l0
aCByODI1ODggYW5kIHI4MzQ4MyBpbXBsZW1lbnRzIG1vdmluZyBjYXJldCBieQorICAgICAgICB3
b3JkIGluIHZpc3VhbCBvcmRlci4KKyAgICAgICAgCisgICAgICAgIFRoZSBvdmVyYWxsIGFsZ29y
aXRobSBpczoKKyAgICAgICAgMS4gRmlyc3QgZ2V0IHRoZSBJbmxpbmVCb3ggYW5kIG9mZnNldCBv
ZiB0aGUgcGFzcy1pbiBWaXNpYmxlUG9zaXRpb24uCisgICAgICAgIDIuIEJhc2VkIG9uIHRoZSBw
b3NpdGlvbiAobGVmdCBib3VuZGFyeSwgbWlkZGxlLCByaWdodCBib3VuZGFyeSkgb2YgdGhlIG9m
ZnNldCBhbmQgdGhlCisgICAgICAgICAgIGRpcmVjdGlvbiBvZiB0aGUgbW92ZW1lbnQsIGxvb2sg
Zm9yIHZpc3VhbGx5IGFkamFjZW50IHdvcmQgYnJlYWtzLgorICAgICAgICAyLjEgSWYgdGhlIG9m
ZnNldCBpcyB0aGUgbWluaW11bSBvZmZzZXQgb2YgdGhlIGJveCwKKyAgICAgICAgICAgIHJldHVy
biB0aGUgcmlnaHRtb3N0IHdvcmQgYm91bmRhcnkgaW4gcHJldmlvdXMgYm94ZXMgaWYgbW92aW5n
IGxlZnQuCisgICAgICAgICAgICByZXR1cm4gdGhlIGxlZnRtb3N0IHdvcmQgYm91bmRhcnkgaW4g
Ym94IGFuZCBuZXh0IGJveGVzIGlmIG1vdmluZyByaWdodC4KKyAgICAgICAgMi4yIFNpbWlsYXIg
Zm9yIHRoZSBjYXNlIHdoZW4gb2Zmc2V0IGlzIGF0IHRoZSBtYXhpbXVtIG9mZnNldCBvZiB0aGUg
Ym94LgorICAgICAgICAyLjMgV2hlbiBvZmZzZXQgaXMgaW5zaWRlIHRoZSBib3ggKG5vdCBhdCBi
b3VuZGFyaWVzKSwgZmlyc3QgZmluZCB0aGUgcHJldmlvdXNXb3JkUG9zaXRpb24gCisgICAgICAg
ICAgICBvciBuZXh0V29yZFBvc2l0aW9uIGJhc2VkIG9uIHRoZSBkaXJlY3Rpb25hbGl0eSBvZiB0
aGUgYm94LiBJZiB0aGlzIHdvcmQgYnJlYWsgcG9zaXRpb24gCisgICAgICAgICAgICBpcyBhbHNv
IGluc2lkZSB0aGUgc2FtZSBib3gsIHJldHVybiBpdC4gT3RoZXJ3aXNlICh0aGUgbmV4dFdvcmRQ
b3NpdGlvbiBvciAKKyAgICAgICAgICAgIHByZXZpb3VzV29yZFBvc2l0aW9uIGlzIG5vdCBpbiB0
aGUgc2FtZSBib3ggb3IgaXMgYXQgdGhlIGJveCBib3VuZGFyeSksIGNvbGxlY3QgYWxsIHRoZSAK
KyAgICAgICAgICAgIHdvcmQgYnJlYWtzIGluIHRoZSBib3ggYW5kIHNlYXJjaCBmb3IgdGhlIG9u
ZSBjbG9zZXN0IHRvIHRoZSBpbnB1dCAib2Zmc2V0IiBiYXNlZCBvbiAKKyAgICAgICAgICAgIGJv
eCBkaXJlY3Rpb25hbGl0eSwgYmxvY2sgZGlyZWN0aW9uYWxpdHksIGFuZCBtb3ZlbWVudCBkaXJl
Y3Rpb24uIENvbnRpbnVlIHNlYXJjaCBpbiAKKyAgICAgICAgICAgIGFkamFjZW50IGJveGVzIGlm
IG5lZWRlZC4KKworICAgICAgICBOb3RlczoKKyAgICAgICAgMS4gV29yZCBib3VuZGFyaWVzIGFy
ZSBjb2xsZWN0ZWQgb25lIGJveCBhdCBhIHRpbWUuIE9ubHkgd2hlbiBhIGJvdW5kYXJ5IHRoYXQg
aXMgY2xvc2VzdCB0byAKKyAgICAgICAgICAgdGhlIGlucHV0IHBvc2l0aW9uIChpbiB0aGUgbW92
aW5nIGRpcmVjdGlvbikgaXMgbm90IGF2YWlsYWJsZSBpbiBjdXJyZW50IGJveCwgd29yZCAKKyAg
ICAgICAgICAgYm91bmRhcmllcyBpbiBhZGphY2VudCBib3ggd2lsbCBiZSBjb2xsZWN0ZWQuIFNv
LCB0aGVyZSBpcyBubyBuZWVkIHRvIHNhdmUgSW5saW5lQm94IGluIAorICAgICAgICAgICB3b3Jk
IGJvdW5kYXJpZXMuIEluc3RlYWQsIHRoZSB3b3JkIGJvdW5kYXJpZXMgYXJlIHNhdmVkIGFzIGEg
cGFpciAKKyAgICAgICAgICAgKFZpc2libGVQb3NpdGlvbiwgb2Zmc2V0KSB0byBhdm9pZCByZWNv
bXB1dGluZyBWaXNpYmxlUG9zaXRpb24uCisgCisgICAgICAgIDIuIFdlIG9ubHkgY29sbGVjdCBi
b3VuZGFyaWVzIG9mIHRoZSByaWdodCBraW5kIChpLmUuIGxlZnQgYm91bmRhcnkgb2YgYSB3b3Jk
IGluIExUUiBibG9jaworICAgICAgICAgICBhbmQgcmlnaHQgYm91bmRhcnkgb2YgYSB3b3JkIGlu
IFJUTCBibG9jaykuIEFuZCB3b3JkIGJvdW5kYXJpZXMgYXJlIGNvbGxlY3RlZCB1c2luZyAKKyAg
ICAgICAgICAgcHJldmlvdXNXb3JkUG9zaXRpb24oKSBhbmQgbmV4dFdvcmRQb3NpdGlvbigpLiBT
byB3aGVuIGJveCBkaXJlY3Rpb25hbGl0eSBpcyB0aGUgc2FtZSBhcyAKKyAgICAgICAgICAgYmxv
Y2sgZGlyZWN0aW9uYWxpdHksIHdvcmQgYm91bmRhcmllcyBhcmUgY29sbGVjdGVkIGZyb20gcmln
aHQgdG8gbGVmdCB2aXN1YWxseSBpbiBhIExUUiAKKyAgICAgICAgICAgYm94LCBhbmQgd29yZCBi
b3VuZGFyaWVzIGFyZSBjb2xsZWN0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHZpc3VhbGx5IGluIGEg
UlRMIGJveC4gSXQgaXMKKyAgICAgICAgICAgdGhlIG90aGVyIHdheSBhcm91bmQgd2hlbiBib3gg
ZGlyZWN0aW9uYWxpdHkgaXMgZGlmZmVyZW50IGZyb20gYmxvY2sgZGlyZWN0aW9uYWxpdHkuCisK
KyAgICAgICAgMy4gVG8gZmluZCB0aGUgcmlnaHQga2luZHMgb2Ygd29yZCBib3VuZGFyaWVzLCB3
ZSBtdXN0IG1vdmUgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB3b3JkcworICAgICAgICAgICBpbiBz
b21lIHNpdHVhdGlvbnMuIEZvciBleGFtcGxlLCBpZiB3ZSdyZSBtb3ZpbmcgdG8gdGhlIHJpZ2h0
IGluIGEgTFRSIGJveCBpbiBMVFIgYmxvY2ssCisgICAgICAgICAgIHdlIGNhbm5vdCBzaW1wbHkg
cmV0dXJuIG5leHRXb3JkUG9zaXRpb24oKSBiZWNhdXNlIGl0IHdvdWxkIHJldHVybiB0aGUgcmln
aHQgYm91bmRhcnkKKyAgICAgICAgICAgb2YgYSB3b3JkLiBJbnN0ZWFkLCB3ZSByZXR1cm4gbmV4
dFdvcmRQb3NpdGlvbigpJ3MgbmV4dFdvcmRQb3NpdGlvbigpJ3MgcHJldmlvdXNXb3JkUG9zaXRp
b24oKS4KKworICAgICAgICA0LiBXaGVuIGNvbGxlY3Rpbmcgd29yZCBicmVha3MgaW5zaWRlIGEg
Ym94LCBpdCBmaXJzdCBjb21wdXRlcyBhIHN0YXJ0IHBvc2l0aW9uLCB0aGVuCisgICAgICAgICAg
IGNvbGxlY3QgdGhlIHJpZ2h0IGtpbmQgb2Ygd29yZCBicmVha3MgdW50aWwgaXQgcmVhY2hlcyB0
aGUgZW5kIG9mIChvciBiZXlvbmQpIHRoZSBib3guCisgICAgICAgICAgIEluIHRoZSBtZWFud2hp
bGUsIGl0IG1pZ2h0IG5lZWQgc3BlY2lhbCBoYW5kbGluZyBvbiB0aGUgcmlnaHRtb3N0IG9yIGxl
ZnRtb3N0IHBvc2l0aW9uIAorICAgICAgICAgICBiYXNlZCBvbiB0aGUgZGlyZWN0aW9uYWxpdHkg
b2YgdGhlIGJveCBhbmQgYmxvY2suIFRoZXNlIGNvbXB1dGF0aW9ucyBkbyBub3QgY29uc2lkZXIg
dGhlIAorICAgICAgICAgICBib3gncyBiaWRpIGxldmVsLgorCisgICAgICAgICogZWRpdGluZy92
aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRXb3JkQnJlYWtJbkJveElu
c2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbGxlY3RXb3JkQnJlYWtzSW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3Jk
Qm91bmRhcnlJbkJveCk6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZEJvdW5kYXJ5SW5Cb3gp
OgorICAgICAgICAoV2ViQ29yZTo6dmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3gpOgorICAg
ICAgICAoV2ViQ29yZTo6bGVmdFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpyaWdo
dFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpsZWZ0V29yZFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJpZ2h0V29yZFBvc2l0aW9uKToKKwogMjAxMS0wNC0xMyAgS2VudCBU
YW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRy
aSBHbGF6a292LgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3Bw
CShyZXZpc2lvbiA4MzQ4MykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzQsMjAgKzEyNzQsMTQgQEAgc3RhdGljIFZpc2li
bGVQb3NpdGlvbiBuZXh0V29yZEJyZWFrSW5CbwogICAgIGJvb2wgaGFzU2VlbldvcmRCcmVha0lu
VGhpc0JveCA9IHByZXZpb3VzV29yZEJyZWFrLmlzTm90TnVsbCgpOwogICAgIFZpc2libGVQb3Np
dGlvbiB3b3JkQnJlYWsgPSBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94ID8gcHJldmlvdXNXb3Jk
QnJlYWsgOiBQb3NpdGlvbihib3gtPnJlbmRlcmVyKCktPm5vZGUoKSwgYm94LT5jYXJldE1pbk9m
ZnNldCgpLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKICAgICB3b3JkQnJl
YWsgPSBuZXh0V29yZFBvc2l0aW9uKHdvcmRCcmVhayk7Ci0gICAgCi0gICAgaWYgKHdvcmRCcmVh
ayA9PSBwcmV2aW91c1dvcmRCcmVhaykgewotICAgICAgICBpc0xhc3RXb3JkQnJlYWtJbkJveCA9
IHRydWU7Ci0gICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKLSAgICB9Ci0KLQorICAK
ICAgICAvLyBHaXZlbiBSVEwgYm94ICJBQkMgREVGIiBlaXRoZXIgZm9sbG93cyBhIExUUiBib3gg
b3IgaXMgdGhlIGZpcnN0IHZpc3VhbCBib3ggaW4gYW4gTFRSIGJsb2NrIGFzIGFuIGV4YW1wbGUs
CiAgICAgLy8gdGhlIHZpc3VhbCBkaXNwbGF5IG9mIHRoZSBSVEwgYm94IGlzOiAiKDApSigxMClJ
KDkpSCg4KSAoNylGKDYpRSg1KUQoNCkgKDMpQygyKUIoMSlBKDExKSIsCiAgICAgLy8gd2hlcmUg
dGhlIG51bWJlciBpbiBwYXJlbnRoZXNpcyByZXByZXNlbnRzIG9mZnNldCBpbiB2aXNpYmxlUG9z
aXRpb24uIAogICAgIC8vIFN0YXJ0IGF0IG9mZnNldCAwLCB0aGUgZmlyc3Qgd29yZCBicmVhayBp
cyBhdCBvZmZzZXQgMywgdGhlIDJuZCB3b3JkIGJyZWFrIGlzIGF0IG9mZnNldCA3LCBhbmQgdGhl
IDNyZCB3b3JkIGJyZWFrIHNob3VsZCBiZSBhdCBvZmZzZXQgMC4KICAgICAvLyBCdXQgbmV4dFdv
cmRQb3NpdGlvbigpIG9mIG9mZnNldCA3IGlzIG9mZnNldCAxMSwgd2hpY2ggc2hvdWxkIGJlIGln
bm9yZWQsIAogICAgIC8vIGFuZCB0aGUgcG9zaXRpb24gYXQgb2Zmc2V0IDAgc2hvdWxkIGJlIG1h
bnVhbGx5IGFkZGVkIGFzIHRoZSBsYXN0IHdvcmQgYnJlYWsgd2l0aGluIHRoZSBib3guCi0gICAg
aWYgKHBvc2l0aW9uSXNWaXN1YWxseU9yZGVyZWRJbkJveEluQmxvY2tXaXRoRGlmZmVyZW50RGly
ZWN0aW9uYWxpdHkod29yZEJyZWFrLCBib3gsIG9mZnNldE9mV29yZEJyZWFrKSkgeworICAgIGlm
ICh3b3JkQnJlYWsgIT0gcHJldmlvdXNXb3JkQnJlYWsgJiYgcG9zaXRpb25Jc1Zpc3VhbGx5T3Jk
ZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSh3b3JkQnJlYWssIGJv
eCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7CiAgICAgICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0g
ZmFsc2U7CiAgICAgICAgIHJldHVybiB3b3JkQnJlYWs7CiAgICAgfQpAQCAtMTM0NiwxNSArMTM0
MCwyMSBAQCBzdGF0aWMgdm9pZCBjb2xsZWN0V29yZEJyZWFrc0luQm94SW5zaWRlCiAgICAgICAg
ICAgICBicmVhazsKICAgICB9CiB9CisKK3N0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5C
b3goY29uc3QgSW5saW5lQm94KiBib3gsIFdvcmRCb3VuZGFyeVZlY3RvciYgb3JkZXJlZFdvcmRC
b3VuZGFyaWVzLCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQoreworICAgIGlmIChib3gt
PmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQorICAgICAgICBjb2xsZWN0V29yZEJyZWFr
c0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdvcmRC
b3VuZGFyaWVzKTsKKyAgICBlbHNlCisgICAgICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNp
ZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdvcmRCb3VuZGFy
aWVzKTsgICAgICAgIAorfQogICAgIAotc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dv
cmRCcmVha0luQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0LCBUZXh0RGlyZWN0
aW9uIGJsb2NrRGlyZWN0aW9uKQorc3RhdGljIFZpc2libGVQb3NpdGlvbiBwcmV2aW91c1dvcmRC
b3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zmc2V0KQogewogICAgIGlu
dCBvZmZzZXRPZldvcmRCcmVhayA9IDA7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHdvcmRCcmVhazsK
ICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBibG9j
a0RpcmVjdGlvbikKLSAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJyZWFrSW5C
b3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCB3b3JkQnJlYWssIG9mZnNl
dE9mV29yZEJyZWFrKTsKLSAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGUgJ2Vsc2UnIGNh
c2Ugd2hlbiB0aGUgYm94IGRpcmVjdGlvbiBpcyBub3QgZXF1YWwgdG8gdGhlIGJsb2NrIGRpcmVj
dGlvbi4KKyAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lkZUJs
b2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3JkQnJl
YWspOwogICAgICAgICBpZiAod29yZEJyZWFrLmlzTnVsbCgpKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvZmZzZXRPZldvcmRCcmVh
ayAhPSBvZmZzZXQpCkBAIC0xMzYzLDYgKzEzNjMsMzIgQEAgc3RhdGljIFZpc2libGVQb3NpdGlv
biBwcmV2aW91c1dvcmRCcmVhawogICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKIH0KIAor
c3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5l
Qm94KiBib3gsIGludCBvZmZzZXQpCit7CisgICAgaW50IG9mZnNldE9mV29yZEJyZWFrID0gMDsK
KyAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOworICAgIGJvb2wgaXNMYXN0V29yZEJyZWFr
SW5Cb3ggPSBmYWxzZTsKKyAgICBkbyB7CisgICAgICAgIHdvcmRCcmVhayA9IG5leHRXb3JkQnJl
YWtJbkJveEluc2lkZUJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KGJveCwgd29yZEJy
ZWFrLCBvZmZzZXRPZldvcmRCcmVhaywgaXNMYXN0V29yZEJyZWFrSW5Cb3gpOworICAgICAgICBp
ZiAod29yZEJyZWFrLmlzTm90TnVsbCgpICYmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBv
ZmZzZXRPZldvcmRCcmVhayAhPSBvZmZzZXQpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmRCcmVh
azsKKyAgICB9IHdoaWxlICghaXNMYXN0V29yZEJyZWFrSW5Cb3gpOyAgICAgICAKKyAgICByZXR1
cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisgICAgCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHZp
c3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGNvbnN0IElubGluZUJveCogYm94LCBpbnQgb2Zm
c2V0LCBUZXh0RGlyZWN0aW9uIGJsb2NrRGlyZWN0aW9uKQoreworICAgIFdvcmRCb3VuZGFyeVZl
Y3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7CisgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChi
b3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOworICAgIGlmICghb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSkgCisgICAgICAgIHJldHVybiBWaXNpYmxlUG9zaXRp
b24oKTsKKyAgICBpZiAob2Zmc2V0ID09IGludmFsaWRPZmZzZXQgfHwgb3JkZXJlZFdvcmRCb3Vu
ZGFyaWVzW29yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkgLSAxXS5vZmZzZXRJbklubGluZUJv
eCAhPSBvZmZzZXQpCisgICAgICAgIHJldHVybiBvcmRlcmVkV29yZEJvdW5kYXJpZXNbb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLnZpc2libGVQb3NpdGlvbjsKKyAgICBpZiAob3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSA+IDEpCisgICAgICAgIHJldHVybiBvcmRlcmVkV29y
ZEJvdW5kYXJpZXNbb3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDJdLnZpc2libGVQb3Np
dGlvbjsKKyAgICByZXR1cm4gVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisgICAgICAgIAogc3RhdGlj
IGludCBncmVhdGVzdFZhbHVlVW5kZXIoaW50IG9mZnNldCwgYm9vbCBib3hBbmRCbG9ja0FyZUlu
U2FtZURpcmVjdGlvbiwgY29uc3QgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpCiB7CiAgICAgaWYgKCFvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpKQpAQCAtMTQw
MCwxNCArMTQyNiwxOCBAQCBzdGF0aWMgaW50IHNtYWxsZXN0T2Zmc2V0QWJvdmUoaW50IG9mZnNl
CiAgICAgfQogICAgIHJldHVybiBpbnZhbGlkT2Zmc2V0OwogfQotIAorCiBzdGF0aWMgVmlzaWJs
ZVBvc2l0aW9uIGxlZnRXb3JkQm91bmRhcnkoY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZz
ZXQsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCiB7CiAgICAgVmlzaWJsZVBvc2l0aW9u
IHdvcmRCcmVhazsKICAgICBmb3IgIChjb25zdCBJbmxpbmVCb3gqIGFkamFjZW50Qm94ID0gYm94
OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBhZGphY2VudEJveC0+cHJldkxlYWZDaGlsZCgp
KSB7Ci0gICAgICAgIGlmIChibG9ja0RpcmVjdGlvbiA9PSBMVFIpIAotICAgICAgICAgICAgd29y
ZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3gg
PT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOwotICAgICAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSAiZWxzZSIgY2FzZS4KKyAgICAgICAgaWYgKGJsb2Nr
RGlyZWN0aW9uID09IExUUikgeworICAgICAgICAgICAgaWYgKGJveC0+aXNMZWZ0VG9SaWdodERp
cmVjdGlvbigpKSAKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCb3Vu
ZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBuZXh0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/
IG9mZnNldCA6IGludmFsaWRPZmZzZXQpOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3
b3JkQnJlYWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRq
YWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24p
OyAgICAgICAgICAgIAogICAgICAgICBpZiAod29yZEJyZWFrLmlzTm90TnVsbCgpKQogICAgICAg
ICAgICAgcmV0dXJuIHdvcmRCcmVhazsKICAgICB9CkBAIC0xNDE5LDkgKzE0NDksMTMgQEAgc3Rh
dGljIFZpc2libGVQb3NpdGlvbiByaWdodFdvcmRCb3VuZGFyeQogICAgIAogICAgIFZpc2libGVQ
b3NpdGlvbiB3b3JkQnJlYWs7CiAgICAgZm9yIChjb25zdCBJbmxpbmVCb3gqIGFkamFjZW50Qm94
ID0gYm94OyBhZGphY2VudEJveDsgYWRqYWNlbnRCb3ggPSBhZGphY2VudEJveC0+bmV4dExlYWZD
aGlsZCgpKSB7Ci0gICAgICAgIGlmIChibG9ja0RpcmVjdGlvbiA9PSBSVEwpCi0gICAgICAgICAg
ICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2Vu
dEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0g
ICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAo
YmxvY2tEaXJlY3Rpb24gPT0gUlRMKSB7CisgICAgICAgICAgICBpZiAoYm94LT5pc0xlZnRUb1Jp
Z2h0RGlyZWN0aW9uKCkpCisgICAgICAgICAgICAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRCb3Vu
ZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3ggPyBvZmZzZXQgOiBpbnZh
bGlkT2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsg
PSBwcmV2aW91c1dvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBi
b3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0KTsKKyAgICAgICAgfSBlbHNlIAorICAgICAgICAg
ICAgd29yZEJyZWFrID0gdmlzdWFsbHlMYXN0V29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gs
IGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0
aW9uKTsgICAgICAgICAgICAKICAgICAgICAgaWYgKCF3b3JkQnJlYWsuaXNOdWxsKCkpCiAgICAg
ICAgICAgICByZXR1cm4gd29yZEJyZWFrOwogICAgIH0KQEAgLTE0ODYsMTAgKzE1MjAsNyBAQCBW
aXNpYmxlUG9zaXRpb24gbGVmdFdvcmRQb3NpdGlvbihjb25zdCBWCiAgICAgICAgIHJldHVybiB3
b3JkQnJlYWs7CiAgICAgCiAgICAgV29yZEJvdW5kYXJ5VmVjdG9yIG9yZGVyZWRXb3JkQm91bmRh
cmllczsKLSAgICBpZiAoYm94LT5kaXJlY3Rpb24oKSA9PSBibG9ja0RpcmVjdGlvbikKLSAgICAg
ICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0
eShib3gsIG9yZGVyZWRXb3JkQm91bmRhcmllcyk7Ci0gICAgZWxzZQotICAgICAgICBjb2xsZWN0
V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoRGlmZmVybnREaXJlY3Rpb25hbGl0eShib3gs
IG9yZGVyZWRXb3JkQm91bmRhcmllcyk7CisgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveChib3gs
IG9yZGVyZWRXb3JkQm91bmRhcmllcywgYmxvY2tEaXJlY3Rpb24pOwogCiAgICAgaW50IGluZGV4
ID0gYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBncmVhdGVzdFZhbHVlVW5kZXIob2Zm
c2V0LCBibG9ja0RpcmVjdGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRhcmllcykgOgogICAg
ICAgICBzbWFsbGVzdE9mZnNldEFib3ZlKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gUlRMLCBv
cmRlcmVkV29yZEJvdW5kYXJpZXMpOwpAQCAtMTUyNywxMCArMTU1OCw4IEBAIFZpc2libGVQb3Np
dGlvbiByaWdodFdvcmRQb3NpdGlvbihjb25zdCAKICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsK
ICAgICAKICAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwotICAg
IGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xsZWN0
V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJlYWtz
SW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzKTsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJlZFdv
cmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CisgICAgCiAgICAgaW50IGluZGV4ID0gYm94
LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9uKCkgPyBzbWFsbGVzdE9mZnNldEFib3ZlKG9mZnNldCwg
YmxvY2tEaXJlY3Rpb24gPT0gTFRSLCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpIDoKICAgICAgICAg
Z3JlYXRlc3RWYWx1ZVVuZGVyKG9mZnNldCwgYmxvY2tEaXJlY3Rpb24gPT0gUlRMLCBvcmRlcmVk
V29yZEJvdW5kYXJpZXMpOwogICAgIGlmIChpbmRleCAhPSBpbnZhbGlkT2Zmc2V0KQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gODM4MDApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wNC0xMyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q29udGludWUgKDNyZCkgZXhwZXJpbWVudCB3aXRoIG1vdmluZyBjYXJldCBieSB3b3JkIGluIHZp
c3VhbCBvcmRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4Mjk0CisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlz
dWFsbHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnkt
d29yZC12aXN1YWxseS5odG1sOgorCiAyMDExLTA0LTEzICBKaWFuIExpICA8amlhbmxpQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZWJhc2VsaW5lIDQgdGVzdHMgYWRkZWQg
YXMgcjgzNzg3LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13
b3JkLXZpc3VhbGx5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA4MzQ4MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12
aXN1YWxseS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNDQgKzIsMTg5IEBACiA9
PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQogVGVzdCAxLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9u
ZSB3b3JkCi0iYWJjIGRlZiBoaWogb3BxIHJzdCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZB
SUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMiwgMTYsIDE5LCAxOV0KKyJhYmMgZGVmIGhpaiBvcHEgcnN0
IlswLCA0LCA4LCAxMiwgMTZdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIGhpaiBv
cHEgcnN0IlsxNiwgMTIsIDgsIDQsIDAsIDBdCi1UZXN0IDIsIFJUTDoKKyJhYmMgZGVmIGhpaiBv
cHEgcnN0IlsxOSwgMTYsIDEyLCA4LCA0LCAwXQorVGVzdCAyLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5
IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3BxIHJzdCJbMCwgNCwgOCwgMTIsIDE2XQorTW92ZSBs
ZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3BxIHJzdCJbMTksIDE2LCAxMiwgOCwgNCwg
MF0KK1Rlc3QgMywgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3Bx
IHJzdCJbMCwgMTUsIDExLCA3LCAzXQorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYg
aGlqIG9wcSByc3QiWzE5LCAzLCA3LCAxMSwgMTUsIDBdCitUZXN0IDQsIExUUjoKK01vdmUgcmln
aHQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJCQiBDQ0MgWFhYIlswLCAxNSwgMTEsIDcsIDNdCitN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJCQiBDQ0MgWFhYIlsxOSwgMywgNywgMTEs
IDE1LCAwXQorVGVzdCA1LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJC
QiBDQ0MgWFhYIlswLCA0LCA4LCAxMiwgMTZdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiWlpa
IFFRUSBCQkIgQ0NDIFhYWCJbMTksIDE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgNiwgTFRSOgorTW92
ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlqIEFBQSBCQkIgV1dXIG9wciB1dncgeHl6
IlswLCA0LCA4LCAxMiwgMTksIDE1LCAyNCwgMjgsIDMyXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
CisiYWJjIGRlZiBoaWogQUFBIEJCQiBXV1cgb3ByIHV2dyB4eXoiWzM1LCAzMiwgMjgsIDI0LCAx
NSwgMTksIDEyLCA4LCA0LCAwXQorVGVzdCA3LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJhYmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJbMCwgNywgMywgMTIsIDE2LCAy
MCwgMjQsIDMxLCAyN10KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBBQUEg
QkJCIFdXVyBvcHIgdXZ3IHh5eiJbMzUsIDI3LCAzMSwgMjQsIDIwLCAxNiwgMTIsIDMsIDcsIDBd
CitUZXN0IDgsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIFpRQiBSSUcg
dXZ3IHh5eiJbMCwgNCwgOCwgMTEsIDE2LCAyMF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFi
YyBkZWYgWlFCIFJJRyB1dncgeHl6IlsyMywgMjAsIDE2LCAxMSwgOCwgNCwgMF0KK1Rlc3QgOSwg
UlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzAs
IDMsIDgsIDEyLCAxNiwgMTldCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBaUUIg
UklHIHV2dyB4eXoiWzIzLCAxOSwgMTYsIDEyLCA4LCAzLCAwXQorVGVzdCAxMCwgTFRSOgorTW92
ZSByaWdodCBieSBvbmUgd29yZAorImFhYSBBQUEgYmJiIlswLCA0LCA4XQorTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCisiYWFhIEFBQSBiYmIiWzExLCA4LCA0LCAwXQorVGVzdCAxMSwgUlRMOgorTW92
ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWFhIEFBQSBiYmIiWzAsIDQsIDgsIDExXQorTW92ZSByaWdo
dCBieSBvbmUgd29yZAorImFhYSBBQUEgYmJiIlsxMSwgOCwgNCwgMF0KK1Rlc3QgMTIsIExUUjoK
K01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIFdXVyBhYWEgYmJiIGNjYyBEREQgU1NT
IFVVVSJbMCwgNywgMywgMTIsIDE2LCAyMCwgMjQsIDMxLCAyN10KK01vdmUgbGVmdCBieSBvbmUg
d29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIgY2NjIERERCBTU1MgVVVVIlszNSwgMjcsIDMxLCAy
NCwgMjAsIDE2LCAxMiwgMywgNywgMF0KK1Rlc3QgMTMsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUg
d29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIgY2NjIERERCBTU1MgVVVVIlswLCA0LCA4LCAxMiwg
MTksIDE1LCAyNCwgMjgsIDMyXQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFBQSBCQkIgV1dX
IGFhYSBiYmIgY2NjIERERCBTU1MgVVVVIlszNSwgMzIsIDI4LCAyNCwgMTUsIDE5LCAxMiwgOCwg
NCwgMF0KK1Rlc3QgMTQsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIGFh
YSBiYmIgV1dXIERERCJbMCwgMywgOCwgMTIsIDE2LCAxOV0KK01vdmUgbGVmdCBieSBvbmUgd29y
ZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cgREREIlsyMywgMTksIDE2LCAxMiwgOCwgMywgMF0KK1Rl
c3QgMTUsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cg
REREIlswLCA0LCA4LCAxMSwgMTYsIDIwXQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFBQSBC
QkIgYWFhIGJiYiBXV1cgREREIlsyMywgMjAsIDE2LCAxMSwgOCwgNCwgMF0KK1Rlc3QgMTYsIExU
UjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJaUUIgYWJjIFJJRyJbMCwgNCwgOCwgMTFdCiBN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIGhpaiBvcHEgcnN0IlswLCAxMSwgNywgMywg
MywgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFsxNSwgMTEsIDcsIDMsIDE5LCAxOV0KKyJaUUIgYWJj
IFJJRyJbMTEsIDgsIDQsIDBdCitUZXN0IDE3LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQK
KyJaUUIgYWJjIFJJRyJbMCwgNCwgOF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJaUUIgYWJj
IFJJRyJbMTEsIDgsIDQsIDBdCitUZXN0IDE4LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
Ci0iYWJjIGRlZiBoaWogb3BxIHJzdCJbMTksIDcsIDExLCAxNSwgMCwgMF0gICAgRkFJTCBleHBl
Y3RlZDogWzMsIDcsIDExLCAxNSwgMCwgMF0KLVRlc3QgMywgTFRSOgorImFiYyBkZWYgICAgaGlq
IG9wcSJbMCwgNCwgMTVdICAgIEZBSUwgZXhwZWN0ZWQ6IFswLCA0LCAxMSwgMTVdCitNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmICAgIGhpaiBvcHEiWzE4LCAxNSwgNCwgMF0gICAgRkFJ
TCBleHBlY3RlZDogWzE4LCAxNSwgMTEsIDQsIDBdCitUZXN0IDE5LCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMCwgMTEsIDcsIDMsIDMsIDE5XSAg
ICBGQUlMIGV4cGVjdGVkOiBbMTUsIDExLCA3LCAzLCAxOSwgMTldCisiQUFBICJbMCwgM10KIE1v
dmUgbGVmdCBieSBvbmUgd29yZAotIlpaWiBRUVEgQkJCIENDQyBYWFgiWzE5LCA3LCAxMSwgMTUs
IDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFszLCA3LCAxMSwgMTUsIDAsIDBdCi1UZXN0IDQsIFJU
TDoKKyJCQiJbMl0sICJBQUEgIlszLCAwXQorVGVzdCAyMCwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZB
SUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMiwgMTYsIDE5LCAxOV0KKyJBQUEgIlswLCA0XQogTW92ZSBy
aWdodCBieSBvbmUgd29yZAotIlpaWiBRUVEgQkJCIENDQyBYWFgiWzE2LCAxMiwgOCwgNCwgMCwg
MF0KLVRlc3QgNSwgTFRSOgorIkJCIlsyXSwgIkFBQSAiWzQsIDBdCitUZXN0IDIxLCBMVFI6CiBN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzAsIDQsIDgs
IDExLCAyMCwgMjAsIDIzXSAgICBGQUlMIGV4cGVjdGVkOiBbNCwgOCwgMTEsIDE2LCAyMCwgMjMs
IDIzXQorImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDVd
CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyIgcnN0IHV2dyJbOCwgNSwgMV0sICJoaWogb3BxIls0
XSwgImFiYyBkZWYgIls4LCA0LCAwXQorVGVzdCAyMiwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3
b3JkCi0iYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzIwLCAxNiwgNCwgOCwgNCwgMCwgMF0gICAg
RkFJTCBleHBlY3RlZDogWzIwLCAxNiwgMTEsIDgsIDQsIDAsIDBdCi1UZXN0IDYsIFJUTDoKKyJh
YmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0sICJoaWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAz
XSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBkZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsICAwLCBd
ImhpaiBvcHEiWyAzLCBdImFiYyBkZWYgIlsgNywgIDNdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3Jk
CisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAiWzMsIDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2
dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJTCBleHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0i
YWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3BxIlsgMywgXSIgcnN0IHV2dyJbIDAsICA0LCBdImFi
YyBkZWYgIlsgMF0KK1Rlc3QgMjMsIFJUTDoKIE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBk
ZWYgWlFCIFJJRyB1dncgeHl6IlswLCAzLCAxMiwgMTIsIDE2LCAxOSwgMjNdICAgIEZBSUwgZXhw
ZWN0ZWQ6IFszLCA4LCAxMiwgMTYsIDE5LCAyMywgMjNdCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1
dnciWzRdLCAiaGlqIG9wcSJbM10sICJhYmMgZGVmICJbNywgM10gICAgRkFJTCBleHBlY3RlZDog
WyJhYmMgZGVmICJbIDAsIF0iIHJzdCB1dnciWyA0LCAgMCwgXSJoaWogb3BxIlsgMywgXSJhYmMg
ZGVmICJbIDcsICAzXQogTW92ZSByaWdodCBieSBvbmUgd29yZAotImFiYyBkZWYgWlFCIFJJRyB1
dncgeHl6IlsxMiwgMTYsIDEyLCA4LCA4LCAwLCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbMTksIDE2
LCAxMiwgOCwgMywgMCwgMF0KLVRlc3QgNywgTFRSOgorIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYg
IlszLCA3XSwgImhpaiBvcHEiWzNdLCAiIHJzdCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdICAgIEZB
SUwgZXhwZWN0ZWQ6IFsiIHJzdCB1dnciWyA4LCBdImFiYyBkZWYgIlsgMywgIDcsIF0iaGlqIG9w
cSJbIDMsIF0iIHJzdCB1dnciWyAwLCAgNCwgXSJhYmMgZGVmICJbIDBdCitUZXN0IDI0LCBMVFI6
CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUciWzAsIDQsIDgsIDExXSAgICBG
QUlMIGV4cGVjdGVkOiBbNCwgOCwgMTEsIDExXQorImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBv
cHEiWzRdLCAiIHJzdCB1dnciWzEsIDVdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJaUUIgYWJj
IFJJRyJbNCwgNCwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzgsIDQsIDAsIDBdCi1UZXN0IDgs
IFJUTDoKKyIgcnN0IHV2dyJbOCwgNSwgMV0sICJoaWogb3BxIls0XSwgImFiYyBkZWYgIls4LCA0
LCAwXQorVGVzdCAyNSwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUci
WzAsIDQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbNCwgOCwgMTEsIDExXQorIkFCRCBEU1Ug
IlswLCA0LCA4XSwgIkVKSCBGVVgiWzRdLCAiRkZaIExJRyJbNF0KK01vdmUgcmlnaHQgYnkgb25l
IHdvcmQKKyJGRlogTElHIls3LCA0XSwgIkVKSCBGVVgiWzRdLCAiQUJEIERTVSAiWzgsIDQsIDBd
CitUZXN0IDI2LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUciWzgs
IDAsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFs4LCA0LCAwLCAwXQorIkFCRCBEU1UgIlswXSwg
IkZGWiBMSUciWzNdLCAiRUpIIEZVWCJbM10sICJBQkQgRFNVICJbNywgM10KK01vdmUgbGVmdCBi
eSBvbmUgd29yZAorIkZGWiBMSUciWzddLCAiQUJEIERTVSAiWzMsIDddLCAiRUpIIEZVWCJbM10s
ICJGRlogTElHIlszXSwgIkFCRCBEU1UgIlswXQorVGVzdCAyNywgUlRMOgorTW92ZSBsZWZ0IGJ5
IG9uZSB3b3JkCisiQUJEIERTVSAiWzAsIDQsIDhdLCAiRUpIIEZVWCJbNF0sICJGRlogTElHIls0
XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBMSUciWzcsIDRdLCAiRUpIIEZVWCJbNF0s
ICJBQkQgRFNVICJbOCwgNCwgMF0KK1Rlc3QgMjgsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdv
cmQKKyJBQkQgRFNVICJbMF0sICJGRlogTElHIlszXSwgIkVKSCBGVVgiWzNdLCAiQUJEIERTVSAi
WzcsIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3XSwgIkFCRCBEU1UgIlsz
LCA3XSwgIkVKSCBGVVgiWzNdLCAiRkZaIExJRyJbM10sICJBQkQgRFNVICJbMF0KK1Rlc3QgMjks
IFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFCRCBEU1UgIlswLCA0LCA4XSwgImFiYyBk
ZWYiWzNdLCAiRkZaIExJRyJbNF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3
LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERTVSAiWzgsIDQsIDBdCitUZXN0IDMwLCBMVFI6CitN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzBdLCAiRkZaIExJRyJbM10sICJBQkQg
RFNVICJbOF0sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls3LCAzXQorTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCisiRkZaIExJRyJbN10sICJBQkQgRFNVICJbMywgN10sICJhYmMgZGVmIls0XSwgIkFC
RCBEU1UgIls4XSwgIkZGWiBMSUciWzNdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcs
IF0iQUJEIERTVSAiWyAzLCAgNywgXSJhYmMgZGVmIlsgNCwgXSJBQkQgRFNVICJbIDgsIF0iRkZa
IExJRyJbIDMsIF0iQUJEIERTVSAiWyAwXQorVGVzdCAzMSwgUlRMOgorTW92ZSBsZWZ0IGJ5IG9u
ZSB3b3JkCisiQUJEIERTVSAiWzAsIDQsIDhdLCAiYWJjIGRlZiJbM10sICJGRlogTElHIls0XQor
TW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBMSUciWzcsIDRdLCAiYWJjIGRlZiJbM10sICJB
QkQgRFNVICJbOCwgNCwgMF0KK1Rlc3QgMzIsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyJBQkQgRFNVICJbMCwgMywgOF0sICJhYmMgZGVmIls0XSwgIkZGWiBMSUciWzNdCitNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3LCAzXSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAi
WzgsIDQsIDBdCitUZXN0IDMzLCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQkQgb3Bx
IERTVSAiWzAsIDQsIDhdLCAiYWJjIEFBQSBkZWYiWzgsIDQsIDNdLCAiRkZaIHJzdCBMSUciWzQs
IDhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0i
YWJjIEFBQSBkZWYiWyA0LCAgMywgXSJGRlogcnN0IExJRyJbIDQsICA4XQorTW92ZSByaWdodCBi
eSBvbmUgd29yZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbNCwgOF0s
ICJBQkQgb3BxIERTVSAiWzgsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUci
WyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVmIlsgMywgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIs
ICA4LCAgNCwgIDBdCitUZXN0IDM0LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJE
IG9wcSBEU1UgIlswLCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIs
IDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAxMV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3Bx
IERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIEFBQSBkZWYiWyA4LCAgNywgXSJBQkQgb3BxIERTVSAi
WyAxMiwgIDExLCBdIkZGWiByc3QgTElHIlsgNCwgIDgsICAxMV0KK01vdmUgbGVmdCBieSBvbmUg
d29yZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJh
YmMgQUFBIGRlZiJbNywgOF0sICJBQkQgb3BxIERTVSAiWzcsIDQsIDBdICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdIkFCRCBvcHEgRFNVICJbIDExLCAgMTIs
IF0iYWJjIEFBQSBkZWYiWyA3LCAgOCwgXSJBQkQgb3BxIERTVSAiWyA4LCAgNCwgIDBdCitUZXN0
IDM1LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhd
LCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUciWzQsIDhdICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAg
OCwgXSJGRlogcnN0IExJRyJbIDQsICA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiBy
c3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbOCwgNF0sICJBQkQgb3BxIERTVSAiWzEx
LCA4LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwg
XSJhYmMgQUFBIGRlZiJbIDgsICA0LCBdIkFCRCBvcHEgRFNVICJbIDEyLCAgOCwgIDQsICAwXQor
VGVzdCAzNiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkFCRCBvcHEgRFNVICJbMCwg
NCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQor
TW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEg
ZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIsIDgsIDQsIDBdCitUZXN0IDM3LCBMVFI6CitN
b3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWFhICJbMCwgNF0sICJiYmIgQUFBICJbNCwgN10KK01v
dmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiJbM10sICJiYmIgQUFBICJbNywgNF0sICJhYWEgIls0
LCAwXQogCiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgU3BlY2lmaWMgVGVzdCA9PT09CiBUZXN0IDEK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxs
eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUt
Ynktd29yZC12aXN1YWxseS5odG1sCShyZXZpc2lvbiA4MzQ4MykKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC03MiwzNiArNzIsMTAwIEBAIGZ1bmN0aW9uIGxvZ1Bvc2l0aW9ucyhwb3NpdGlvbnMpCiAg
ICAgbG9nKCJdIik7CiB9CiAKK2Z1bmN0aW9uIG5vZGVPZldvcmRCcmVhayhub2RlQW5kT2Zmc2V0
KQoreworICAgIHZhciBub2RlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQobm9kZUFuZE9mZnNl
dFswXSkuZmlyc3RDaGlsZDsKKyAgICBpZiAobm9kZUFuZE9mZnNldC5sZW5ndGggPT0gMykgewor
ICAgICAgICB2YXIgY2hpbGRJbmRleCA9IG5vZGVBbmRPZmZzZXRbMl07CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgY2hpbGRJbmRleCAtIDE7ICsraSkgeworICAgICAgICAgICAgbm9kZSA9
IG5vZGUubmV4dFNpYmxpbmc7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5vZGU7Cit9
CisKIHZhciB3b3JkQnJlYWtzOwogCitmdW5jdGlvbiBsb2dXb3JkQnJlYWsoaW5kZXgpCit7Cisg
ICAgdmFyIHdvcmRCcmVhayA9IHdvcmRCcmVha3NbaW5kZXhdOworICAgIGlmICh3b3JkQnJlYWsu
c2VhcmNoKCcsJykgPT0gLTEpCisgICAgICAgIGxvZyh3b3JkQnJlYWspOworICAgIGVsc2Ugewor
ICAgICAgICB2YXIgbm9kZUFuZE9mZnNldCA9IHdvcmRCcmVhay5zcGxpdCgnLCcpOworICAgICAg
ICB2YXIgbm9kZSA9IG5vZGVPZldvcmRCcmVhayhub2RlQW5kT2Zmc2V0KTsKKworICAgICAgICB2
YXIgZGlmZmVyZW50Tm9kZSA9IGZhbHNlOworICAgICAgICBpZiAoaW5kZXggIT0gMCkgeworICAg
ICAgICAgICAgZGlmZmVyZW50Tm9kZSA9IG5vZGVPZldvcmRCcmVhayhub2RlQW5kT2Zmc2V0KSAh
PSBub2RlT2ZXb3JkQnJlYWsod29yZEJyZWFrc1tpbmRleCAtIDFdLnNwbGl0KCcsJykpOworICAg
ICAgICAKKyAgICAgICAgfQorICAgICAgICBpZiAoZGlmZmVyZW50Tm9kZSA9PSB0cnVlKQorICAg
ICAgICAgICAgbG9nKCJdIik7CisgICAgICAgIGlmIChpbmRleCA9PSAwIHx8IGRpZmZlcmVudE5v
ZGUgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGxvZygobm9kZSBpbnN0YW5jZW9mIFRleHQgPyAnIicg
KyBmb2xkKG5vZGUuZGF0YSkgKyAnIicgOiAiPCIgKyBub2RlLnRhZ05hbWUgKyAiPiIpICsgIlsi
KTsKKyAgICAgICAgbG9nKG5vZGVBbmRPZmZzZXRbMV0pOworICAgIH0KK30KKworZnVuY3Rpb24g
cG9zaXRpb25FcXVhbFRvV29yZEJyZWFrKHBvc2l0aW9uLCB3b3JkQnJlYWspCit7CisgICAgaWYg
KHdvcmRCcmVhay5zZWFyY2goJywnKSA9PSAtMSkKKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uLm9m
ZnNldCA9PSB3b3JkQnJlYWs7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBub2RlQW5kT2Zmc2V0
ID0gd29yZEJyZWFrLnNwbGl0KCcsJyk7CisgICAgICAgIHJldHVybiBwb3NpdGlvbi5ub2RlID09
IG5vZGVPZldvcmRCcmVhayhub2RlQW5kT2Zmc2V0KSAmJiBwb3NpdGlvbi5vZmZzZXQgPT0gbm9k
ZUFuZE9mZnNldFsxXTsKKyAgICB9Cit9CisKIGZ1bmN0aW9uIHZhbGlkYXRlRGF0YShwb3NpdGlv
bnMpCiB7CisgICAgdmFyIGVxdWFsID0gdHJ1ZTsKKyAgICBpZiAocG9zaXRpb25zLmxlbmd0aCAh
PSB3b3JkQnJlYWtzLmxlbmd0aCkKKyAgICAgICAgZXF1YWwgPSBmYWxzZTsKICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHdvcmRCcmVha3MubGVuZ3RoIC0gMTsgKytpKSB7Ci0gICAgICAgIGlmIChw
b3NpdGlvbnNbaV0ub2Zmc2V0ICE9IHdvcmRCcmVha3NbaSArIDFdKSB7CisgICAgICAgIGlmICgh
cG9zaXRpb25FcXVhbFRvV29yZEJyZWFrKHBvc2l0aW9uc1tpXSwgd29yZEJyZWFrc1tpXSkpIHsK
KyAgICAgICAgICAgIGVxdWFsID0gZmFsc2U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KLSAgICBpZiAoaSAhPSB3b3JkQnJlYWtzLmxlbmd0aCAtIDEgJiYgcG9zaXRpb25z
W2ldICE9IHdvcmRCcmVha3NbaV0pIHsKKyAgICBpZiAoZXF1YWwgPT0gZmFsc2UpIHsKICAgICAg
ICAgbG9nKCIgICAgRkFJTCBleHBlY3RlZDogWyIpOwotICAgICAgICBmb3IgKHZhciBpID0gMTsg
aSA8IHdvcmRCcmVha3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGxvZyh3b3JkQnJlYWtz
W2ldICsgIiwgIik7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgd29yZEJyZWFrcy5sZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgbG9nV29yZEJyZWFrKGkpOworICAgICAgICAgICAgaWYg
KGkgIT0gd29yZEJyZWFrcy5sZW5ndGggLSAxKQorICAgICAgICAgICAgICAgIGxvZygiLCAiKTsK
ICAgICAgICAgfQotICAgICAgICBsb2cod29yZEJyZWFrc1t3b3JkQnJlYWtzLmxlbmd0aCAtIDFd
ICsgIl0iKTsKKyAgICAgICAgbG9nKCJdIik7CiAgICAgfQogfQogCiBmdW5jdGlvbiBjb2xsZWN0
V29yZEJyZWFrcyh0ZXN0LCBzZWFyY2hEaXJlY3Rpb24pCiB7Ci0gICAgaWYgKHNlYXJjaERpcmVj
dGlvbiA9PSAicmlnaHQiKSB7Ci0gICAgICAgIGlmICh0ZXN0LmdldEF0dHJpYnV0ZSgiZGlyIikg
PT0gJ2x0cicpIAotICAgICAgICAgICAgd29yZEJyZWFrcyA9IHRlc3QudGl0bGUuc3BsaXQoInwi
KVswXS5zcGxpdCgiICIpOwotICAgICAgICBlbHNlIAotICAgICAgICAgICAgd29yZEJyZWFrcyA9
IHRlc3QudGl0bGUuc3BsaXQoInwiKVsxXS5zcGxpdCgiICIpOwotICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGlmICh0ZXN0LmdldEF0dHJpYnV0ZSgiZGlyIikgPT0gJ2x0cicpIAotICAgICAgICAgICAg
d29yZEJyZWFrcyA9IHRlc3QudGl0bGUuc3BsaXQoInwiKVsxXS5zcGxpdCgiICIpOwotICAgICAg
ICBlbHNlIAotICAgICAgICAgICAgd29yZEJyZWFrcyA9IHRlc3QudGl0bGUuc3BsaXQoInwiKVsw
XS5zcGxpdCgiICIpOworICAgIHZhciB0aXRsZTsKKyAgICBpZiAoc2VhcmNoRGlyZWN0aW9uID09
ICJyaWdodCIpIAorICAgICAgICB0aXRsZSA9IHRlc3QudGl0bGUuc3BsaXQoInwiKVswXTsKKyAg
ICBlbHNlCisgICAgICAgIHRpdGxlID0gdGVzdC50aXRsZS5zcGxpdCgifCIpWzFdOworCisgICAg
dmFyIHBhdHRlcm4gPSAvXFsoLis/KVxdL2c7CisgICAgdmFyIHJlc3VsdDsKKyAgICB3b3JkQnJl
YWtzID0gW107CisgICAgd2hpbGUgKChyZXN1bHQgPSBwYXR0ZXJuLmV4ZWModGl0bGUpKSAhPSBu
dWxsKSB7CisgICAgICAgIHdvcmRCcmVha3MucHVzaChyZXN1bHRbMV0pOworICAgIH0KKyAgICBp
ZiAod29yZEJyZWFrcy5sZW5ndGggPT0gMCkgeworICAgICAgICB3b3JkQnJlYWtzID0gdGl0bGUu
c3BsaXQoIiAiKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHNldFBvc2l0aW9uKHNlbCwgbm9kZSwg
d29yZEJyZWFrKQoreworICAgIGlmICh3b3JkQnJlYWsuc2VhcmNoKCcsJykgPT0gLTEpCisgICAg
ICAgIHNlbC5zZXRQb3NpdGlvbihub2RlLCB3b3JkQnJlYWspOworICAgIGVsc2UgeworICAgICAg
ICB2YXIgbm9kZUFuZE9mZnNldCA9IHdvcmRCcmVhay5zcGxpdCgnLCcpOworICAgICAgICBzZWwu
c2V0UG9zaXRpb24obm9kZU9mV29yZEJyZWFrKG5vZGVBbmRPZmZzZXQpLCBub2RlQW5kT2Zmc2V0
WzFdKTsKICAgICB9CiB9CiAKQEAgLTEwOSwxOCArMTczLDIwIEBAIGZ1bmN0aW9uIG1vdmVCeVdv
cmQoc2VsLCB0ZXN0LCBzZWFyY2hEaXIKIHsKICAgICBsb2coIk1vdmUgIiArIHNlYXJjaERpcmVj
dGlvbiArICIgYnkgb25lIHdvcmRcbiIpOwogICAgIHZhciBwcmV2T2Zmc2V0ID0gc2VsLmFuY2hv
ck9mZnNldDsKLSAgICB2YXIgbm9kZSA9IHNlbC5hbmNob3JOb2RlOwotICAgIGNvbGxlY3RXb3Jk
QnJlYWtzKHRlc3QsIHNlYXJjaERpcmVjdGlvbik7Ci0gICAgc2VsLnNldFBvc2l0aW9uKG5vZGUs
IHdvcmRCcmVha3NbMF0pOworICAgIHZhciBwcmV2Tm9kZSA9IHNlbC5hbmNob3JOb2RlOwogICAg
IHZhciBwb3NpdGlvbnMgPSBbXTsKLSAgICBmb3IgKHZhciBpbmRleCA9IDE7IGluZGV4IDwgd29y
ZEJyZWFrcy5sZW5ndGg7ICsraW5kZXgpIHsKKyAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNl
bC5hbmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQsIHBvaW50OiBjYXJldENvb3Jk
aW5hdGVzKCkgfSk7CisKKyAgICB3aGlsZSAoMSkgewogICAgICAgICBzZWwubW9kaWZ5KCJtb3Zl
Iiwgc2VhcmNoRGlyZWN0aW9uLCAiLXdlYmtpdC12aXN1YWwtd29yZCIpOworICAgICAgICBpZiAo
cHJldk5vZGUgPT0gc2VsLmFuY2hvck5vZGUgJiYgcHJldk9mZnNldCA9PSBzZWwuYW5jaG9yT2Zm
c2V0KQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTog
c2VsLmFuY2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCwgcG9pbnQ6IGNhcmV0Q29v
cmRpbmF0ZXMoKSB9KTsKLSAgICAgICAgc2VsLnNldFBvc2l0aW9uKG5vZGUsIHdvcmRCcmVha3Nb
aW5kZXhdKTsKLSAgICB9Ci0gICAgc2VsLm1vZGlmeSgibW92ZSIsIHNlYXJjaERpcmVjdGlvbiwg
Ii13ZWJraXQtdmlzdWFsLXdvcmQiKTsKLSAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5h
bmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQsIHBvaW50OiBjYXJldENvb3JkaW5h
dGVzKCkgfSk7CisgICAgICAgIHByZXZOb2RlID0gc2VsLmFuY2hvck5vZGU7CisgICAgICAgIHBy
ZXZPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0OworICAgIH07CiAgICAgbG9nUG9zaXRpb25zKHBv
c2l0aW9ucyk7CisgICAgY29sbGVjdFdvcmRCcmVha3ModGVzdCwgc2VhcmNoRGlyZWN0aW9uKTsK
ICAgICB2YWxpZGF0ZURhdGEocG9zaXRpb25zKTsKICAgICBsb2coIlxuIik7CiB9CkBAIC0xMzMs
NiArMTk5LDggQEAgZnVuY3Rpb24gbW92ZUJ5V29yZEZvckV2ZXJ5UG9zaXRpb24oc2VsLAogICAg
IGlmIChkaXIgPT0gInJ0bCIpCiAgICAgICAgIGRpcmVjdGlvbiA9ICJsZWZ0IjsgICAgCiAgICAg
bW92ZUJ5V29yZChzZWwsIHRlc3QsIGRpcmVjdGlvbiwgZGlyKTsgICAgCisKKyAgICBzZWwubW9k
aWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAibGluZUJvdW5kYXJ5Iik7CiAgICAgLy8gQ2hlY2sgY3Ry
bC1sZWZ0LWFycm93IHdvcmtzIGZvciBldmVyeSBwb3NpdGlvbi4KICAgICBpZiAoZGlyID09ICJs
dHIiKQogICAgICAgICBkaXJlY3Rpb24gPSAibGVmdCI7CkBAIC0yMTUsMTkgKzI4MywxMDQgQEAg
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKIDwvaGVhZD4KIDxib2R5PgogPGRpdiBp
ZD0idGVzdE1vdmVCeVdvcmQiPgotPCEtLSBUaGUgbnVtYmVycyBwdXQgaW4gdGl0bGUgYXJlIHN0
YXJ0aW5nIHdvcmQgYm91bmRhcmllcy4KLVRoZSBudW1iZXJzIHByaW50ZWQgb3V0IGluIHRoZSBv
dXRwdXQgYXJlIGVuZGluZyB3b3JkIGJvdW5kYXJpZXMuIC0tPgotPGRpdiBkaXI9bHRyIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEyIDE2IDE5fDE5IDE2IDEyIDggNCAw
IiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2PgotPGRpdiBkaXI9cnRs
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzIDE5fDE5IDMgNyAx
MSAxNSAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2PgotPGRpdiBk
aXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzIDE5fDE5
IDMgNyAxMSAxNSAwIiBjb250ZW50ZWRpdGFibGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteS
INen16fXpzwvZGl2PgotPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IjAgNCA4IDEyIDE2IDE5fDE5IDE2IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+16nXqdep
INeg16DXoCDXkdeR15Eg15LXkteSINen16fXpzwvZGl2PgotPGRpdiBkaXI9bHRyIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExIDE2IDIwIDIzfDIzIDIwIDE2IDExIDgg
NCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2dyB4eXo8L2Rpdj4K
LTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDMgOCAxMiAx
NiAxOSAyM3wyMyAxOSAxNiAxMiA4IDMgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeR
INeh15jXliB1dncgeHl6PC9kaXY+Cis8IS0tIAorVGl0bGUgc2F2ZXMgdGhlIHdvcmQgYnJlYWtz
LgorVGhlIGZvcm1hdCBvZiB0aXRsZSBpcyAieHh4fHh4eHgiLgorCitUaGUgc2VxdWVuY2Ugb24g
dGhlIGxlZnQgb2YgInwiIGlzIHdvcmQgYm91bmRhcmllcyB3aGVuIG1vdmluZyBjYXJldCBmcm9t
IGxlZnQgdG8gcmlnaHQuCitUaGUgc2VxdWVuY2Ugb24gdGhlIHJpZ2h0IG9mICJ8IiBpcyB3b3Jk
IGJvdW5kYXJpZXMgd2hlbiBtb3ZpbmcgY2FyZXQgZnJvbSByaWdodCB0byBsZWZ0LgorCitJZiB0
aGVyZSBpcyBhIHNpbmdsZSBub2RlIGluIHRoZSBsaW5lLCB0aGUgc2VxdWVuY2UgYXJlIG9mZnNl
dHMuCitJZiB0aGVyZSBhcmUgbXVsdGlwbGUgbm9kZXMgaW4gdGhlIGxpbmUsIHRoZSBzZXF1ZW5j
ZSBpcyBhcnJheSBvZiBbYW5jaG9yX25vZGVfaWQsIG9mZnNldCwgY2hpbGRfbm9kZV9pbmRleF0s
IAord2hlcmUgY2hpbGRfbm9kZV9pbmRleCBpcyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0aGUgZmly
c3QgY2hpbGQgb2YgdGhlIGFuY2hvciBub2RlLgorLS0+Cis8ZGl2IGRpcj1sdHIgY2xhc3M9InRl
c3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTIgMTZ8MTkgMTYgMTIgOCA0IDAiIGNvbnRl
bnRlZGl0YWJsZT5hYmMgZGVmIGhpaiBvcHEgcnN0PC9kaXY+CisKKzwhLS0gcHVyZSBFbmdsaXNo
IC0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4
IDEyIDE2fDE5IDE2IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJz
dDwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjE5
IDMgNyAxMSAxNSAwfDAgMTUgMTEgNyAzIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3Bx
IHJzdDwvZGl2PgorCis8IS0tIHB1cmUgSGVicmV3IC0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0
ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgMTUgMTEgNyAzfDE5IDMgNyAxMSAxNSAwIiBjb250
ZW50ZWRpdGFibGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteSINen16fXpzwvZGl2PgorPGRp
diBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjE5IDE2IDEyIDggNCAw
fDAgNCA4IDEyIDE2IiBjb250ZW50ZWRpdGFibGU+16nXqdepINeg16DXoCDXkdeR15Eg15LXkteS
INen16fXpzwvZGl2PgorCis8IS0tIGJpZGkgdGV4dCAtLT4KKzwhLS0gRW5nbGlzaCBIZWJyZXcg
RW5nbGlzaCAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIwIDQgOCAxMiAxOSAxNSAyNCAyOCAzMnwzNSAzMiAyOCAyNCAxNSAxOSAxMiA4IDQgMCIgY29u
dGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqINeQ15DXkCDXkdeR15Eg16bXptemIG9wciB1dncgeHl6
PC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMzUg
MjcgMzEgMjQgMjAgMTYgMTIgMyA3IDB8MCA3IDMgMTIgMTYgMjAgMjQgMzEgMjciIGNvbnRlbnRl
ZGl0YWJsZT5hYmMgZGVmIGhpaiDXkNeQ15Ag15HXkdeRINem16bXpiBvcHIgdXZ3IHh5ejwvZGl2
PgorCis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDgg
MTEgMTYgMjB8MjMgMjAgMTYgMTEgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmINep16DX
kSDXodeY15YgdXZ3IHh5ejwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCIgdGl0bGU9IjIzIDE5IDE2IDEyIDggMyAwfDAgMyA4IDEyIDE2IDE5IiBjb250ZW50ZWRp
dGFibGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2dyB4eXo8L2Rpdj4KKworPGRpdiBkaXI9bHRy
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4fDExIDggNCAwIiBjb250ZW50
ZWRpdGFibGU+YWFhINeQ15DXkCBiYmI8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIxMSA4IDQgMHwwIDQgOCAxMSIgY29udGVudGVkaXRhYmxlPmFh
YSDXkNeQ15AgYmJiPC9kaXY+CisKKzwhLS0gSGVicmV3IEVuZ2xpc2ggSGVicmV3IC0tPgorPGRp
diBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNyAzIDEyIDE2IDIw
IDI0IDMxIDI3fDM1IDI3IDMxIDI0IDIwIDE2IDEyIDMgNyAwIiBjb250ZW50ZWRpdGFibGU+15DX
kNeQINeR15HXkSDXptem16YgYWFhIGJiYiBjY2Mg15PXk9eTINei16LXoiDXpNek16Q8L2Rpdj4K
KzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIzNSAzMiAyOCAy
NCAxNSAxOSAxMiA4IDQgMHwwIDQgOCAxMiAxOSAxNSAyNCAyOCAzMiIgY29udGVudGVkaXRhYmxl
PteQ15DXkCDXkdeR15Eg16bXptemIGFhYSBiYmIgY2NjINeT15PXkyDXotei16Ig16TXpNekPC9k
aXY+CisKKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDMg
OCAxMiAxNiAxOXwyMyAxOSAxNiAxMiA4IDMgMCIgY29udGVudGVkaXRhYmxlPteQ15DXkCDXkdeR
15EgYWFhIGJiYiDXptem16Yg15PXk9eTPC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3Rf
bW92ZV9ieV93b3JkIiB0aXRsZT0iMjMgMjAgMTYgMTEgOCA0IDB8MCA0IDggMTEgMTYgMjAiIGNv
bnRlbnRlZGl0YWJsZT7XkNeQ15Ag15HXkdeRIGFhYSBiYmIg16bXptemINeT15PXkzwvZGl2Pgor
CiA8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTF8
MTEgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT7Xqdeg15EgYWJjINeh15jXljwvZGl2PgotPGRpdiBk
aXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDExfDExIDggNCAw
IiBjb250ZW50ZWRpdGFibGU+16nXoNeRIGFiYyDXodeY15Y8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIxMSA4IDQgMHwwIDQgOCIgY29udGVudGVk
aXRhYmxlPtep16DXkSBhYmMg16HXmNeWPC9kaXY+CisKKzwhLS0gbXVsdGlwbGUgc3BhY2VzIGJl
dHdlZW4gd29yZC4gCisgICAgIEZBSUxFRDogd29yZCBicmVhayBiZXR3ZWVuICJkZWYiIGFuZCAi
aGlqIiBpcyB1bnJlYWNoYWJsZS4KKy0tPgorPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCIgdGl0bGU9IjAgNCAxMSAxNXwxOCAxNSAxMSA0IDAiIGNvbnRlbnRlZGl0YWJsZT5h
YmMgZGVmICAgIGhpaiBvcHE8L2Rpdj4KKworPCEtLSBJbmxpbmUgZWxlbWVudCAtLT4KKzxkaXYg
ZGlyPWx0ciBpZD0iZGl2XzEiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZf
MSwgMF1bZGl2XzEsIDNdfFtzcGFuXzEsIDJdW2Rpdl8xLCAzXVtkaXZfMSwwXSIgY29udGVudGVk
aXRhYmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8xIj7XkdeRPC9zcGFuPjwvZGl2PgorPGRpdiBk
aXI9cnRsIGlkPSJkaXZfMiIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW3NwYW5f
MiwgMl1bZGl2XzIsIDRdW2Rpdl8yLCAwXXxbZGl2XzIsIDBdW2Rpdl8yLCA0XSIgY29udGVudGVk
aXRhYmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8yIj7XkdeRPC9zcGFuPjwvZGl2PgorCis8IS0t
IHB1cmUgRW5nbGlzaCBpbiBpbmxpbmUgZWxlbWVudCB3aXRoIHNhbWUgb3IgZGlmZmVyZW50IGRp
cmVjdGlvbmFsaXR5IGZyb20gaXRzIHBhcmVudCAtLT4KKzxkaXYgZGlyPWx0ciBpZD0iZGl2XzMi
IGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMywgMF1bZGl2XzMsIDRdW2Rp
dl8zLCA4XVtzcGFuXzMsIDRdW2Rpdl8zLCAxLCAzXVtkaXZfMywgNSwgM118W2Rpdl8zLCA4LCAz
XVtkaXZfMywgNSwgM11bZGl2XzMsIDEsIDNdW3NwYW5fMywgNF1bZGl2XzMsIDhdW2Rpdl8zLCA0
XVtkaXZfMywgMF0iIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIDxzcGFuIGlkPSJzcGFuXzMiPmhp
aiBvcHE8L3NwYW4+IHJzdCB1dnc8L2Rpdj4KKworPCEtLSBGQUlMRUQgLS0+Cis8ZGl2IGRpcj1y
dGwgaWQ9ImRpdl80IiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzQsIDgs
IDNdW2Rpdl80LCAzLCAxXVtkaXZfNCwgNywgMV1bc3Bhbl80LCAzLCAxXVtkaXZfNCwgMCwgM11b
ZGl2XzQsIDQsIDNdW2Rpdl80LCAwLCAxXXxbZGl2XzQsIDAsIDFdW2Rpdl80LCA0LCAzXVtkaXZf
NCwgMCwgM11bc3Bhbl80LCAzLCAxXVtkaXZfNCwgNywgMV1bZGl2XzQsIDMsIDFdIiBjb250ZW50
ZWRpdGFibGU+YWJjIGRlZiA8c3BhbiBpZD0ic3Bhbl80Ij5oaWogb3BxPC9zcGFuPiByc3QgdXZ3
PC9kaXY+CisKKzwhLS0gRkFJTEVEIC0tPgorPGRpdiBpZD0iZGl2XzUiIGRpcj1ydGwgY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl81LCA4LCAzXVtkaXZfNSwgMywgMV1bZGl2
XzUsIDcsIDFdW3NwYW5fNSwgMywgMV1bZGl2XzUsIDAsIDNdW2Rpdl81LCA0LCAzXVtkaXZfNSwg
MCwgMV18W2Rpdl81LCAwLCAxXVtkaXZfNSwgNCwgM11bZGl2XzUsIDAsIDNdW3NwYW5fNSwgMywg
MV1bZGl2XzUsIDcsIDFdW2Rpdl81LCAzLCAxXSJjb250ZW50ZWRpdGFibGU+YWJjIGRlZiA8c3Bh
biBkaXI9bHRyIGlkPSJzcGFuXzUiPmhpaiBvcHE8L3NwYW4+IHJzdCB1dnc8L2Rpdj4KKworPGRp
diBpZD0iZGl2XzYiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rp
dl82LCAwLCAxXVtkaXZfNiwgNCwgMV1bZGl2XzYsIDgsIDFdW3NwYW5fNiwgNCwgMV1bZGl2XzYs
IDEsIDNdW2Rpdl82LCA1LCAzXXxbZGl2XzYsIDgsIDNdW2Rpdl82LCA1LCAzXVtkaXZfNiwgMSwg
M11bc3Bhbl82LCA0LCAxXVtkaXZfNiwgOCwgMV1bZGl2XzYsIDQsIDFdW2Rpdl82LCAwLCAxXSIg
Y29udGVudGVkaXRhYmxlPmFiYyBkZWYgPHNwYW4gZGlyPXJ0bCBpZD0ic3Bhbl82Ij5oaWogb3Bx
PC9zcGFuPiByc3QgdXZ3PC9kaXY+CisKKzwhLS0gcHVyZSBIZWJyZXcgaW4gaW5saW5lIGVsZW1l
bnQgd2l0aCBzYW1lIG9yIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSBmcm9tIGl0cyBwYXJlbnQg
LS0+CisKKzxkaXYgaWQ9ImRpdl83IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIg
dGl0bGU9IltkaXZfNywgNywgM11bZGl2XzcsIDQsIDNdW3NwYW5fNywgNCwgMV1bZGl2XzcsIDgs
IDFdW2Rpdl83LCA0LCAxXVtkaXZfNywgMCwgMV18W2Rpdl83LCAwLCAxXVtkaXZfNywgNCwgMV1b
ZGl2XzcsIDgsIDFdW3NwYW5fNywgNCwgMV1bZGl2XzcsIDQsIDNdIiBjb250ZW50ZWRpdGFibGU+
15DXkdeTINeT16LXpCA8c3BhbiBkaXI9bHRyIGlkPSJzcGFuXzciPteU15nXlyDXldek16c8L3Nw
YW4+15XXldepINeb15jXljwvZGl2PgorCis8ZGl2IGlkPSJkaXZfOCIgZGlyPWx0ciBjbGFzcz0i
dGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzgsIDAsIDFdW2Rpdl84LCAzLCAzXVtzcGFu
XzgsIDMsIDFdW2Rpdl84LCA3LCAxXVtkaXZfOCwgMywgMV18W2Rpdl84LCA3LCAzXVtkaXZfOCwg
MywgMV1bZGl2XzgsIDcsIDFdW3NwYW5fOCwgMywgMV1bZGl2XzgsIDMsIDNdW2Rpdl84LCAwLCAx
XSIgY29udGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gZGlyPXJ0bCBpZD0ic3Bhbl84
Ij7XlNeZ15cg15XXpNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2
XzkiIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl85LCA3LCAz
XVtkaXZfOSwgNCwgM11bc3Bhbl85LCA0LCAxXVtkaXZfOSwgOCwgMV1bZGl2XzksIDQsIDFdW2Rp
dl85LCAwLCAxXXxbZGl2XzksIDAsIDFdW2Rpdl85LCA0LCAxXVtkaXZfOSwgOCwgMV1bc3Bhbl85
LCA0LCAxXVtkaXZfOSwgNCwgM10iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFu
IGlkPSJzcGFuXzkiPteU15nXlyDXldek16c8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8
ZGl2IGlkPSJkaXZfMTAiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0i
W2Rpdl8xMCwgMCwgMV1bZGl2XzEwLCAzLCAzXVtzcGFuXzEwLCAzLCAxXVtkaXZfMTAsIDcsIDFd
W2Rpdl8xMCwgMywgMV18W2Rpdl8xMCwgNywgM11bZGl2XzEwLCAzLCAxXVtkaXZfMTAsIDcsIDFd
W3NwYW5fMTAsIDMsIDFdW2Rpdl8xMCwgMywgM11bZGl2XzEwLCAwLCAxXSIgY29udGVudGVkaXRh
YmxlPteQ15HXkyDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTAiPteU15nXlyDXldek16c8L3NwYW4+
15XXldepINeb15jXljwvZGl2PgorCis8IS0tIGJpZGkgaW4gaW5saW5lIGVsZW1lbnQgd2l0aCBz
YW1lIG9yIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSBmcm9tIGl0cyBwYXJlbnQgLS0+Cis8ZGl2
IGlkPSJkaXZfMTEiIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rp
dl8xMSwgNywgM11bZGl2XzExLCA0LCAzXVtzcGFuXzExLCAzLCAxXVtkaXZfMTEsIDgsIDFdW2Rp
dl8xMSwgNCwgMV1bZGl2XzExLCAwLCAxXXxbZGl2XzExLCAwLCAxXVtkaXZfMTEsIDQsIDFdW2Rp
dl8xMSwgOCwgMV1bc3Bhbl8xMSwgMywgMV1bZGl2XzExLCA0LCAzXSIgY29udGVudGVkaXRhYmxl
PteQ15HXkyDXk9ei16QgPHNwYW4gZGlyPWx0ciBpZD0ic3Bhbl8xMSI+YWJjIGRlZjwvc3Bhbj7X
ldeV16kg15vXmNeWPC9kaXY+CisKKzwhLS0gRkFJTCAtLT4KKzxkaXYgaWQ9ImRpdl8xMiIgZGly
PWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzEyLCAwLCAxXVtkaXZf
MTIsIDMsIDNdW2Rpdl8xMiwgOCwgMV1bc3Bhbl8xMiwgNCwgMV1bZGl2XzEyLCA3LCAxXVtkaXZf
MTIsIDMsIDFdfFtkaXZfMTIsIDcsIDNdW2Rpdl8xMiwgMywgMV1bZGl2XzEyLCA3LCAxXVtzcGFu
XzEyLCA0LCAxXVtkaXZfMTIsIDgsIDFdW2Rpdl8xMiwgMywgM11bZGl2XzEyLCAwXSIgY29udGVu
dGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gZGlyPXJ0bCBpZD0ic3Bhbl8xMiI+YWJjIGRl
Zjwvc3Bhbj7XldeV16kg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl8xMyIgZGlyPXJ0bCBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzEzLCA3LCAzXVtkaXZfMTMsIDQs
IDNdW3NwYW5fMTMsIDMsIDFdW2Rpdl8xMywgOCwgMV1bZGl2XzEzLCA0LCAxXVtkaXZfMTMsIDAs
IDFdfFtkaXZfMTMsIDAsIDFdW2Rpdl8xMywgNCwgMV1bZGl2XzEzLCA4LCAxXVtzcGFuXzEzLCAz
LCAxXVtkaXZfMTMsIDQsIDNdIiBjb250ZW50ZWRpdGFibGU+15DXkdeTINeT16LXpCA8c3BhbiBp
ZD0ic3Bhbl8xMyI+YWJjIGRlZjwvc3Bhbj7XldeV16kg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9
ImRpdl8xNCIgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE0
LCAwLCAxXVtkaXZfMTQsIDMsIDFdW2Rpdl8xNCwgOCwgMV1bc3Bhbl8xNCwgNCwgMV1bZGl2XzE0
LCAzLCAzXXxbZGl2XzE0LCA3LCAzXVtkaXZfMTQsIDMsIDNdW3NwYW5fMTQsIDQsIDFdW2Rpdl8x
NCwgOCwgMV1bZGl2XzE0LCA0LCAxXVtkaXZfMTQsIDAsIDFdIiBjb250ZW50ZWRpdGFibGU+15DX
kdeTINeT16LXpCA8c3BhbiBpZD0ic3Bhbl8xNCI+YWJjIGRlZjwvc3Bhbj7XldeV16kg15vXmNeW
PC9kaXY+CisKKzwhLS0gRkFJTEVEIC0tPgorPGRpdiBpZD0iZGl2XzE1IiBkaXI9cnRsIGNsYXNz
PSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTUsIDExLCAzXVtkaXZfMTUsIDgsIDNd
W2Rpdl8xNSwgNCwgM11bc3Bhbl8xNSwgMywgMV1bc3Bhbl8xNSwgNCwgMV1bZGl2XzE1LCAxMiwg
MV1bZGl2XzE1LCA4LCAxXVtkaXZfMTUsIDQsIDFdW2Rpdl8xNSwgMCwgMV18W2Rpdl8xNSwgMCwg
MV1bZGl2XzE1LCA0LCAxXVtkaXZfMTUsIDgsIDFdW2Rpdl8xNSwgMTIsIDFdW3NwYW5fMTUsIDQs
IDFdW3NwYW5fMTUsIDMsIDFdW2Rpdl8xNSwgNCwgM11bZGl2XzE1LCA4LCAzXSIKK2NvbnRlbnRl
ZGl0YWJsZT7XkNeR15Mgb3BxINeT16LXpCA8c3BhbiBkaXI9bHRyIGlkPSJzcGFuXzE1Ij5hYmMg
15DXkNeQIGRlZjwvc3Bhbj7XldeV16kgcnN0INeb15jXljwvZGl2PgorCis8IS0tIEZBSUxFRCwg
YW5kIHdyb25nIHByaW50aW5nIHJlc3VsdCAtLT4KKzxkaXYgaWQ9ImRpdl8xNiIgZGlyPWx0ciBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE2LCAwLCAxXVtkaXZfMTYsIDQs
IDFdW2Rpdl8xNiwgOCwgMV1bc3Bhbl8xNiwgOCwgMV1bc3Bhbl8xNiwgNywgMV1bZGl2XzE2LCAx
MiwgMV1bZGl2XzE2LCAxMSwgMV1bZGl2XzE2LCA0LCAzXVtkaXZfMTYsIDgsIDNdW2Rpdl8xNiwg
MTEsIDNdfFtkaXZfMTYsIDExLCAzXVtkaXZfMTYsIDgsIDNdW2Rpdl8xNiwgNCwgM11bZGl2XzE2
LCAxMSwgMV1bZGl2XzE2LCAxMiwgMV1bc3Bhbl8xNiwgNywgMV1bc3Bhbl8xNiwgOCwgMV1bZGl2
XzE2LCA4LCAxXVtkaXZfMTYsIDQsIDFdW2Rpdl8xNiwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7X
kNeR15Mgb3BxINeT16LXpCA8c3BhbiBkaXI9cnRsIGlkPSJzcGFuXzE2Ij5hYmMg15DXkNeQIGRl
Zjwvc3Bhbj7XldeV16kgcnN0INeb15jXljwvZGl2PgorCis8IS0tIEZBSUxFRCAtLT4KKzxkaXYg
aWQ9ImRpdl8xNyIgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2
XzE3LCAxMSwgM11bZGl2XzE3LCA4LCAzXVtkaXZfMTcsIDQsIDNdW3NwYW5fMTcsIDgsIDFdW3Nw
YW5fMTcsIDQsIDFdW2Rpdl8xNywgMTIsIDFdW2Rpdl8xNywgOCwgMV1bZGl2XzE3LCA0LCAxXVtk
aXZfMTcsIDAsIDFdfFtkaXZfMTcsIDAsIDFdW2Rpdl8xNywgNCwgMV1bZGl2XzE3LCA4LCAxXVtk
aXZfMTcsIDEyLCAxXVtzcGFuXzE3LCA0LCAxXVtzcGFuXzE3LCA4LCAxXVtkaXZfMTcsIDQsIDNd
W2Rpdl8xNywgOCwgM10iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mgb3BxINeT16LXpCA8c3BhbiBp
ZD0ic3Bhbl8xNyI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY15Y8L2Rpdj4K
KworPGRpdiBpZD0iZGl2XzE4IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IltkaXZfMTgsIDAsIDFdW2Rpdl8xOCwgNCwgMV1bZGl2XzE4LCA4LCAxXVtkaXZfMTgsIDEy
LCAxXVtzcGFuXzE4LCA0LCAxXVtzcGFuXzE4LCA4LCAxXVtkaXZfMTgsIDQsIDNdW2Rpdl8xOCwg
OCwgM11bZGl2XzE4LCAxMSwgM118W2Rpdl8xOCwgMTEsIDNdW2Rpdl8xOCwgOCwgM11bZGl2XzE4
LCA0LCAzXVtzcGFuXzE4LCA4LCAxXVtzcGFuXzE4LCA0LCAxXVtkaXZfMTgsIDEyLCAxXVtkaXZf
MTgsIDgsIDFdW2Rpdl8xOCwgNCwgMV1bZGl2XzE4LCAwLCAxXSIgY29udGVudGVkaXRhYmxlPteQ
15HXkyBvcHEg15PXotekIDxzcGFuIGlkPSJzcGFuXzE4Ij5hYmMg15DXkNeQIGRlZjwvc3Bhbj7X
ldeV16kgcnN0INeb15jXljwvZGl2PgorCis8ZGl2IGlkPSJkaXZfMTkiIGRpcj1sdHIgY2xhc3M9
InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xOSwgMCwgMV1bZGl2XzE5LCA0LCAxXVtz
cGFuXzE5LCA0LCAxXVtzcGFuXzE5LCA3LCAxXXxbZGl2XzE5LCAzLCAzXVtzcGFuXzE5LCA3LCAx
XVtzcGFuXzE5LCA0LCAxXVtkaXZfMTksIDQsIDFdW2Rpdl8xOSwgMCwgMV0iIGNvbnRlbnRlZGl0
YWJsZT5hYWEgPHNwYW4gaWQ9InNwYW5fMTkiPmJiYiDXkNeQ15AgPC9zcGFuPteV15XXqTwvZGl2
PgogCiA8IS0tIFRoZSBjb250ZW50IGluIHRpdGxlIG1lYW5zICJzdGFydE9mZnNldEluQ3VycmVu
dE5vZGUgbW92aW5nRGlyZWN0aW9uQnlXb3JkIGVuZGluZ05vZGUgZW5kaW5nT2Zmc2V0SW5FbmRp
bmdOb2RlIiAtLT4KLTxkaXYgaWQ9ImRpdl8xIiBjb250ZW50ZWRpdGFibGU+15DXkNeQIDxzcGFu
IGlkPSJzcGFuXzEiIGNsYXNzPSJzcGVjaWZpY190ZXN0IiB0aXRsZT0iMSBsZWZ0IGRpdl8xIDAi
PteR15E8L3NwYW4+PC9kaXY+Cis8ZGl2IGlkPSJkaXZfMTAwIiBjb250ZW50ZWRpdGFibGU+15DX
kNeQIDxzcGFuIGlkPSJzcGFuXzEwMCIgY2xhc3M9InNwZWNpZmljX3Rlc3QiIHRpdGxlPSIxIGxl
ZnQgZGl2XzEwMCAwIj7XkdeRPC9zcGFuPjwvZGl2PgogPC9kaXY+CiAKIDxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgo=
</data>
<flag name="review"
          id="82400"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90420</attachid>
            <date>2011-04-20 14:54:56 -0700</date>
            <delta_ts>2011-04-20 15:00:08 -0700</delta_ts>
            <desc>patch w/ layout test</desc>
            <filename>58294.v4</filename>
            <type>text/plain</type>
            <size>39471</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NDExKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjUgQEAKKzIwMTEtMDQtMjAgIFhpYW9tZWkg
SmkgIDx4amlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KKworICAgICAgICBDb250aW51ZSAoM3JkKSBleHBlcmltZW50IHdpdGggbW92aW5nIGNhcmV0
IGJ5IHdvcmQgaW4gdmlzdWFsIG9yZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTgyOTQKKworICAgICAgICBUaGlzIHBhdGNoIGFsb25nIHdpdGgg
cjgyNTg4IGFuZCByODM0ODMgaW1wbGVtZW50cyBtb3ZpbmcgY2FyZXQgYnkKKyAgICAgICAgd29y
ZCBpbiB2aXN1YWwgb3JkZXIuCisgICAgICAgIAorICAgICAgICBUaGUgb3ZlcmFsbCBhbGdvcml0
aG0gaXM6CisgICAgICAgIDEuIEZpcnN0IGdldCB0aGUgSW5saW5lQm94IGFuZCBvZmZzZXQgb2Yg
dGhlIHBhc3MtaW4gVmlzaWJsZVBvc2l0aW9uLgorICAgICAgICAyLiBCYXNlZCBvbiB0aGUgcG9z
aXRpb24gKGxlZnQgYm91bmRhcnksIG1pZGRsZSwgcmlnaHQgYm91bmRhcnkpIG9mIHRoZSBvZmZz
ZXQgYW5kIHRoZQorICAgICAgICAgICBkaXJlY3Rpb24gb2YgdGhlIG1vdmVtZW50LCBsb29rIGZv
ciB2aXN1YWxseSBhZGphY2VudCB3b3JkIGJyZWFrcy4KKyAgICAgICAgMi4xIElmIHRoZSBvZmZz
ZXQgaXMgdGhlIG1pbmltdW0gb2Zmc2V0IG9mIHRoZSBib3gsCisgICAgICAgICAgICByZXR1cm4g
dGhlIHJpZ2h0bW9zdCB3b3JkIGJvdW5kYXJ5IGluIHByZXZpb3VzIGJveGVzIGlmIG1vdmluZyBs
ZWZ0LgorICAgICAgICAgICAgcmV0dXJuIHRoZSBsZWZ0bW9zdCB3b3JkIGJvdW5kYXJ5IGluIGJv
eCBhbmQgbmV4dCBib3hlcyBpZiBtb3ZpbmcgcmlnaHQuCisgICAgICAgIDIuMiBTaW1pbGFyIGZv
ciB0aGUgY2FzZSB3aGVuIG9mZnNldCBpcyBhdCB0aGUgbWF4aW11bSBvZmZzZXQgb2YgdGhlIGJv
eC4KKyAgICAgICAgMi4zIFdoZW4gb2Zmc2V0IGlzIGluc2lkZSB0aGUgYm94IChub3QgYXQgYm91
bmRhcmllcyksIGZpcnN0IGZpbmQgdGhlIHByZXZpb3VzV29yZFBvc2l0aW9uIAorICAgICAgICAg
ICAgb3IgbmV4dFdvcmRQb3NpdGlvbiBiYXNlZCBvbiB0aGUgZGlyZWN0aW9uYWxpdHkgb2YgdGhl
IGJveC4gSWYgdGhpcyB3b3JkIGJyZWFrIHBvc2l0aW9uIAorICAgICAgICAgICAgaXMgYWxzbyBp
bnNpZGUgdGhlIHNhbWUgYm94LCByZXR1cm4gaXQuIE90aGVyd2lzZSAodGhlIG5leHRXb3JkUG9z
aXRpb24gb3IgCisgICAgICAgICAgICBwcmV2aW91c1dvcmRQb3NpdGlvbiBpcyBub3QgaW4gdGhl
IHNhbWUgYm94IG9yIGlzIGF0IHRoZSBib3ggYm91bmRhcnkpLCBjb2xsZWN0IGFsbCB0aGUgCisg
ICAgICAgICAgICB3b3JkIGJyZWFrcyBpbiB0aGUgYm94IGFuZCBzZWFyY2ggZm9yIHRoZSBvbmUg
Y2xvc2VzdCB0byB0aGUgaW5wdXQgIm9mZnNldCIgYmFzZWQgb24gCisgICAgICAgICAgICBib3gg
ZGlyZWN0aW9uYWxpdHksIGJsb2NrIGRpcmVjdGlvbmFsaXR5LCBhbmQgbW92ZW1lbnQgZGlyZWN0
aW9uLiBDb250aW51ZSBzZWFyY2ggaW4gCisgICAgICAgICAgICBhZGphY2VudCBib3hlcyBpZiBu
ZWVkZWQuCisKKyAgICAgICAgTm90ZXM6CisgICAgICAgIDEuIFdvcmQgYm91bmRhcmllcyBhcmUg
Y29sbGVjdGVkIG9uZSBib3ggYXQgYSB0aW1lLiBPbmx5IHdoZW4gYSBib3VuZGFyeSB0aGF0IGlz
IGNsb3Nlc3QgdG8gCisgICAgICAgICAgIHRoZSBpbnB1dCBwb3NpdGlvbiAoaW4gdGhlIG1vdmlu
ZyBkaXJlY3Rpb24pIGlzIG5vdCBhdmFpbGFibGUgaW4gY3VycmVudCBib3gsIHdvcmQgCisgICAg
ICAgICAgIGJvdW5kYXJpZXMgaW4gYWRqYWNlbnQgYm94IHdpbGwgYmUgY29sbGVjdGVkLiBTbywg
dGhlcmUgaXMgbm8gbmVlZCB0byBzYXZlIElubGluZUJveCBpbiAKKyAgICAgICAgICAgd29yZCBi
b3VuZGFyaWVzLiBJbnN0ZWFkLCB0aGUgd29yZCBib3VuZGFyaWVzIGFyZSBzYXZlZCBhcyBhIHBh
aXIgCisgICAgICAgICAgIChWaXNpYmxlUG9zaXRpb24sIG9mZnNldCkgdG8gYXZvaWQgcmVjb21w
dXRpbmcgVmlzaWJsZVBvc2l0aW9uLgorIAorICAgICAgICAyLiBXZSBvbmx5IGNvbGxlY3QgYm91
bmRhcmllcyBvZiB0aGUgcmlnaHQga2luZCAoaS5lLiBsZWZ0IGJvdW5kYXJ5IG9mIGEgd29yZCBp
biBMVFIgYmxvY2sKKyAgICAgICAgICAgYW5kIHJpZ2h0IGJvdW5kYXJ5IG9mIGEgd29yZCBpbiBS
VEwgYmxvY2spLiBBbmQgd29yZCBib3VuZGFyaWVzIGFyZSBjb2xsZWN0ZWQgdXNpbmcgCisgICAg
ICAgICAgIHByZXZpb3VzV29yZFBvc2l0aW9uKCkgYW5kIG5leHRXb3JkUG9zaXRpb24oKS4gU28g
d2hlbiBib3ggZGlyZWN0aW9uYWxpdHkgaXMgdGhlIHNhbWUgYXMgCisgICAgICAgICAgIGJsb2Nr
IGRpcmVjdGlvbmFsaXR5LCB3b3JkIGJvdW5kYXJpZXMgYXJlIGNvbGxlY3RlZCBmcm9tIHJpZ2h0
IHRvIGxlZnQgdmlzdWFsbHkgaW4gYSBMVFIgCisgICAgICAgICAgIGJveCwgYW5kIHdvcmQgYm91
bmRhcmllcyBhcmUgY29sbGVjdGVkIGZyb20gbGVmdCB0byByaWdodCB2aXN1YWxseSBpbiBhIFJU
TCBib3guIEl0IGlzCisgICAgICAgICAgIHRoZSBvdGhlciB3YXkgYXJvdW5kIHdoZW4gYm94IGRp
cmVjdGlvbmFsaXR5IGlzIGRpZmZlcmVudCBmcm9tIGJsb2NrIGRpcmVjdGlvbmFsaXR5LgorCisg
ICAgICAgIDMuIFRvIGZpbmQgdGhlIHJpZ2h0IGtpbmRzIG9mIHdvcmQgYm91bmRhcmllcywgd2Ug
bXVzdCBtb3ZlIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4gd29yZHMKKyAgICAgICAgICAgaW4gc29t
ZSBzaXR1YXRpb25zLiBGb3IgZXhhbXBsZSwgaWYgd2UncmUgbW92aW5nIHRvIHRoZSByaWdodCBp
biBhIExUUiBib3ggaW4gTFRSIGJsb2NrLAorICAgICAgICAgICB3ZSBjYW5ub3Qgc2ltcGx5IHJl
dHVybiBuZXh0V29yZFBvc2l0aW9uKCkgYmVjYXVzZSBpdCB3b3VsZCByZXR1cm4gdGhlIHJpZ2h0
IGJvdW5kYXJ5CisgICAgICAgICAgIG9mIGEgd29yZC4gSW5zdGVhZCwgd2UgcmV0dXJuIG5leHRX
b3JkUG9zaXRpb24oKSdzIG5leHRXb3JkUG9zaXRpb24oKSdzIHByZXZpb3VzV29yZFBvc2l0aW9u
KCkuCisKKyAgICAgICAgNC4gV2hlbiBjb2xsZWN0aW5nIHdvcmQgYnJlYWtzIGluc2lkZSBhIGJv
eCwgaXQgZmlyc3QgY29tcHV0ZXMgYSBzdGFydCBwb3NpdGlvbiwgdGhlbgorICAgICAgICAgICBj
b2xsZWN0IHRoZSByaWdodCBraW5kIG9mIHdvcmQgYnJlYWtzIHVudGlsIGl0IHJlYWNoZXMgdGhl
IGVuZCBvZiAob3IgYmV5b25kKSB0aGUgYm94LgorICAgICAgICAgICBJbiB0aGUgbWVhbndoaWxl
LCBpdCBtaWdodCBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgb24gdGhlIHJpZ2h0bW9zdCBvciBsZWZ0
bW9zdCBwb3NpdGlvbiAKKyAgICAgICAgICAgYmFzZWQgb24gdGhlIGRpcmVjdGlvbmFsaXR5IG9m
IHRoZSBib3ggYW5kIGJsb2NrLiBUaGVzZSBjb21wdXRhdGlvbnMgZG8gbm90IGNvbnNpZGVyIHRo
ZSAKKyAgICAgICAgICAgYm94J3MgYmlkaSBsZXZlbC4KKworICAgICAgICAqIGVkaXRpbmcvdmlz
aWJsZV91bml0cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXh0V29yZEJyZWFrSW5Cb3hJbnNp
ZGVCbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25hbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpj
b2xsZWN0V29yZEJyZWFrc0luQm94KToKKyAgICAgICAgKFdlYkNvcmU6OnByZXZpb3VzV29yZEJv
dW5kYXJ5SW5Cb3gpOgorICAgICAgICAoV2ViQ29yZTo6bmV4dFdvcmRCb3VuZGFyeUluQm94KToK
KyAgICAgICAgKFdlYkNvcmU6OnZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KToKKyAgICAg
ICAgKFdlYkNvcmU6OmxlZnRXb3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRX
b3JkQm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6bGVmdFdvcmRQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpyaWdodFdvcmRQb3NpdGlvbik6CisKIDIwMTEtMDQtMjAgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFz
ZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlz
aW9uIDg0NDExKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI3NCwyMCArMTI3NCwxNCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0
aW9uIG5leHRXb3JkQnJlYWtJbkJvCiAgICAgYm9vbCBoYXNTZWVuV29yZEJyZWFrSW5UaGlzQm94
ID0gcHJldmlvdXNXb3JkQnJlYWsuaXNOb3ROdWxsKCk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHdv
cmRCcmVhayA9IGhhc1NlZW5Xb3JkQnJlYWtJblRoaXNCb3ggPyBwcmV2aW91c1dvcmRCcmVhayA6
IFBvc2l0aW9uKGJveC0+cmVuZGVyZXIoKS0+bm9kZSgpLCBib3gtPmNhcmV0TWluT2Zmc2V0KCks
IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAgIHdvcmRCcmVhayA9IG5l
eHRXb3JkUG9zaXRpb24od29yZEJyZWFrKTsKLSAgICAKLSAgICBpZiAod29yZEJyZWFrID09IHBy
ZXZpb3VzV29yZEJyZWFrKSB7Ci0gICAgICAgIGlzTGFzdFdvcmRCcmVha0luQm94ID0gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwotICAgIH0KLQotCisgIAogICAgIC8v
IEdpdmVuIFJUTCBib3ggIkFCQyBERUYiIGVpdGhlciBmb2xsb3dzIGEgTFRSIGJveCBvciBpcyB0
aGUgZmlyc3QgdmlzdWFsIGJveCBpbiBhbiBMVFIgYmxvY2sgYXMgYW4gZXhhbXBsZSwKICAgICAv
LyB0aGUgdmlzdWFsIGRpc3BsYXkgb2YgdGhlIFJUTCBib3ggaXM6ICIoMClKKDEwKUkoOSlIKDgp
ICg3KUYoNilFKDUpRCg0KSAoMylDKDIpQigxKUEoMTEpIiwKICAgICAvLyB3aGVyZSB0aGUgbnVt
YmVyIGluIHBhcmVudGhlc2lzIHJlcHJlc2VudHMgb2Zmc2V0IGluIHZpc2libGVQb3NpdGlvbi4g
CiAgICAgLy8gU3RhcnQgYXQgb2Zmc2V0IDAsIHRoZSBmaXJzdCB3b3JkIGJyZWFrIGlzIGF0IG9m
ZnNldCAzLCB0aGUgMm5kIHdvcmQgYnJlYWsgaXMgYXQgb2Zmc2V0IDcsIGFuZCB0aGUgM3JkIHdv
cmQgYnJlYWsgc2hvdWxkIGJlIGF0IG9mZnNldCAwLgogICAgIC8vIEJ1dCBuZXh0V29yZFBvc2l0
aW9uKCkgb2Ygb2Zmc2V0IDcgaXMgb2Zmc2V0IDExLCB3aGljaCBzaG91bGQgYmUgaWdub3JlZCwg
CiAgICAgLy8gYW5kIHRoZSBwb3NpdGlvbiBhdCBvZmZzZXQgMCBzaG91bGQgYmUgbWFudWFsbHkg
YWRkZWQgYXMgdGhlIGxhc3Qgd29yZCBicmVhayB3aXRoaW4gdGhlIGJveC4KLSAgICBpZiAocG9z
aXRpb25Jc1Zpc3VhbGx5T3JkZXJlZEluQm94SW5CbG9ja1dpdGhEaWZmZXJlbnREaXJlY3Rpb25h
bGl0eSh3b3JkQnJlYWssIGJveCwgb2Zmc2V0T2ZXb3JkQnJlYWspKSB7CisgICAgaWYgKHdvcmRC
cmVhayAhPSBwcmV2aW91c1dvcmRCcmVhayAmJiBwb3NpdGlvbklzVmlzdWFsbHlPcmRlcmVkSW5C
b3hJbkJsb2NrV2l0aERpZmZlcmVudERpcmVjdGlvbmFsaXR5KHdvcmRCcmVhaywgYm94LCBvZmZz
ZXRPZldvcmRCcmVhaykpIHsKICAgICAgICAgaXNMYXN0V29yZEJyZWFrSW5Cb3ggPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIHdvcmRCcmVhazsKICAgICB9CkBAIC0xMzQ2LDE1ICsxMzQwLDIxIEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJbnNpZGUKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KKworc3RhdGljIHZvaWQgY29sbGVjdFdvcmRCcmVha3NJbkJveChjb25z
dCBJbmxpbmVCb3gqIGJveCwgV29yZEJvdW5kYXJ5VmVjdG9yJiBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMsIFRleHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCit7CisgICAgaWYgKGJveC0+ZGlyZWN0
aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCisgICAgICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3hJ
bnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJp
ZXMpOworICAgIGVsc2UKKyAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveEluc2lkZUJsb2Nr
V2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5kYXJpZXMpOyAg
ICAgICAgCit9CiAgICAgCi1zdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJyZWFr
SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFRleHREaXJlY3Rpb24gYmxv
Y2tEaXJlY3Rpb24pCitzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZpb3VzV29yZEJvdW5kYXJ5
SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQpCiB7CiAgICAgaW50IG9mZnNl
dE9mV29yZEJyZWFrID0gMDsKICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJyZWFrOwogICAgIHdo
aWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0
aW9uKQotICAgICAgICAgICAgd29yZEJyZWFrID0gcHJldmlvdXNXb3JkQnJlYWtJbkJveEluc2lk
ZUJsb2NrV2l0aFNhbWVEaXJlY3Rpb25hbGl0eShib3gsIHdvcmRCcmVhaywgb2Zmc2V0T2ZXb3Jk
QnJlYWspOwotICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoZSAnZWxzZScgY2FzZSB3aGVu
IHRoZSBib3ggZGlyZWN0aW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgYmxvY2sgZGlyZWN0aW9uLgor
ICAgICAgICB3b3JkQnJlYWsgPSBwcmV2aW91c1dvcmRCcmVha0luQm94SW5zaWRlQmxvY2tXaXRo
U2FtZURpcmVjdGlvbmFsaXR5KGJveCwgd29yZEJyZWFrLCBvZmZzZXRPZldvcmRCcmVhayk7CiAg
ICAgICAgIGlmICh3b3JkQnJlYWsuaXNOdWxsKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgaWYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IG9mZnNldE9mV29yZEJyZWFrICE9IG9m
ZnNldCkKQEAgLTEzNjMsNiArMTM2MywzMiBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIHByZXZp
b3VzV29yZEJyZWFrCiAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwogfQogCitzdGF0aWMg
VmlzaWJsZVBvc2l0aW9uIG5leHRXb3JkQm91bmRhcnlJbkJveChjb25zdCBJbmxpbmVCb3gqIGJv
eCwgaW50IG9mZnNldCkKK3sKKyAgICBpbnQgb2Zmc2V0T2ZXb3JkQnJlYWsgPSAwOworICAgIFZp
c2libGVQb3NpdGlvbiB3b3JkQnJlYWs7CisgICAgYm9vbCBpc0xhc3RXb3JkQnJlYWtJbkJveCA9
IGZhbHNlOworICAgIGRvIHsKKyAgICAgICAgd29yZEJyZWFrID0gbmV4dFdvcmRCcmVha0luQm94
SW5zaWRlQmxvY2tXaXRoRGlmZmVyZW50RGlyZWN0aW9uYWxpdHkoYm94LCB3b3JkQnJlYWssIG9m
ZnNldE9mV29yZEJyZWFrLCBpc0xhc3RXb3JkQnJlYWtJbkJveCk7CisgICAgICAgIGlmICh3b3Jk
QnJlYWsuaXNOb3ROdWxsKCkgJiYgKG9mZnNldCA9PSBpbnZhbGlkT2Zmc2V0IHx8IG9mZnNldE9m
V29yZEJyZWFrICE9IG9mZnNldCkpCisgICAgICAgICAgICByZXR1cm4gd29yZEJyZWFrOworICAg
IH0gd2hpbGUgKCFpc0xhc3RXb3JkQnJlYWtJbkJveCk7ICAgICAgIAorICAgIHJldHVybiBWaXNp
YmxlUG9zaXRpb24oKTsKK30KKyAgICAKK3N0YXRpYyBWaXNpYmxlUG9zaXRpb24gdmlzdWFsbHlM
YXN0V29yZEJvdW5kYXJ5SW5Cb3goY29uc3QgSW5saW5lQm94KiBib3gsIGludCBvZmZzZXQsIFRl
eHREaXJlY3Rpb24gYmxvY2tEaXJlY3Rpb24pCit7CisgICAgV29yZEJvdW5kYXJ5VmVjdG9yIG9y
ZGVyZWRXb3JkQm91bmRhcmllczsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3Jk
ZXJlZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CisgICAgaWYgKCFvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuc2l6ZSgpKSAKKyAgICAgICAgcmV0dXJuIFZpc2libGVQb3NpdGlvbigpOwor
ICAgIGlmIChvZmZzZXQgPT0gaW52YWxpZE9mZnNldCB8fCBvcmRlcmVkV29yZEJvdW5kYXJpZXNb
b3JkZXJlZFdvcmRCb3VuZGFyaWVzLnNpemUoKSAtIDFdLm9mZnNldEluSW5saW5lQm94ICE9IG9m
ZnNldCkKKyAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRhcmllc1tvcmRlcmVkV29yZEJv
dW5kYXJpZXMuc2l6ZSgpIC0gMV0udmlzaWJsZVBvc2l0aW9uOworICAgIGlmIChvcmRlcmVkV29y
ZEJvdW5kYXJpZXMuc2l6ZSgpID4gMSkKKyAgICAgICAgcmV0dXJuIG9yZGVyZWRXb3JkQm91bmRh
cmllc1tvcmRlcmVkV29yZEJvdW5kYXJpZXMuc2l6ZSgpIC0gMl0udmlzaWJsZVBvc2l0aW9uOwor
ICAgIHJldHVybiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKyAgICAgICAgCiBzdGF0aWMgaW50IGdy
ZWF0ZXN0VmFsdWVVbmRlcihpbnQgb2Zmc2V0LCBib29sIGJveEFuZEJsb2NrQXJlSW5TYW1lRGly
ZWN0aW9uLCBjb25zdCBXb3JkQm91bmRhcnlWZWN0b3ImIG9yZGVyZWRXb3JkQm91bmRhcmllcykK
IHsKICAgICBpZiAoIW9yZGVyZWRXb3JkQm91bmRhcmllcy5zaXplKCkpCkBAIC0xNDAwLDE0ICsx
NDI2LDE4IEBAIHN0YXRpYyBpbnQgc21hbGxlc3RPZmZzZXRBYm92ZShpbnQgb2Zmc2UKICAgICB9
CiAgICAgcmV0dXJuIGludmFsaWRPZmZzZXQ7CiB9Ci0gCisKIHN0YXRpYyBWaXNpYmxlUG9zaXRp
b24gbGVmdFdvcmRCb3VuZGFyeShjb25zdCBJbmxpbmVCb3gqIGJveCwgaW50IG9mZnNldCwgVGV4
dERpcmVjdGlvbiBibG9ja0RpcmVjdGlvbikKIHsKICAgICBWaXNpYmxlUG9zaXRpb24gd29yZEJy
ZWFrOwogICAgIGZvciAgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7IGFkamFj
ZW50Qm94OyBhZGphY2VudEJveCA9IGFkamFjZW50Qm94LT5wcmV2TGVhZkNoaWxkKCkpIHsKLSAg
ICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IExUUikgCi0gICAgICAgICAgICB3b3JkQnJlYWsg
PSBwcmV2aW91c1dvcmRCcmVha0luQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJveCA9PSBib3gg
PyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7Ci0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhlICJlbHNlIiBjYXNlLgorICAgICAgICBpZiAoYmxvY2tEaXJlY3Rp
b24gPT0gTFRSKSB7CisgICAgICAgICAgICBpZiAoYm94LT5pc0xlZnRUb1JpZ2h0RGlyZWN0aW9u
KCkpIAorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZpb3VzV29yZEJvdW5kYXJ5SW5C
b3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZz
ZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IG5leHRX
b3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNlbnRCb3ggPT0gYm94ID8gb2Zmc2V0
IDogaW52YWxpZE9mZnNldCk7CisgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgIHdvcmRCcmVh
ayA9IHZpc3VhbGx5TGFzdFdvcmRCb3VuZGFyeUluQm94KGFkamFjZW50Qm94LCBhZGphY2VudEJv
eCA9PSBib3ggPyBvZmZzZXQgOiBpbnZhbGlkT2Zmc2V0LCBibG9ja0RpcmVjdGlvbik7ICAgICAg
ICAgICAgCiAgICAgICAgIGlmICh3b3JkQnJlYWsuaXNOb3ROdWxsKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gd29yZEJyZWFrOwogICAgIH0KQEAgLTE0MTksOSArMTQ0OSwxMyBAQCBzdGF0aWMgVmlz
aWJsZVBvc2l0aW9uIHJpZ2h0V29yZEJvdW5kYXJ5CiAgICAgCiAgICAgVmlzaWJsZVBvc2l0aW9u
IHdvcmRCcmVhazsKICAgICBmb3IgKGNvbnN0IElubGluZUJveCogYWRqYWNlbnRCb3ggPSBib3g7
IGFkamFjZW50Qm94OyBhZGphY2VudEJveCA9IGFkamFjZW50Qm94LT5uZXh0TGVhZkNoaWxkKCkp
IHsKLSAgICAgICAgaWYgKGJsb2NrRGlyZWN0aW9uID09IFJUTCkKLSAgICAgICAgICAgIHdvcmRC
cmVhayA9IHByZXZpb3VzV29yZEJyZWFrSW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09
IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZzZXQsIGJsb2NrRGlyZWN0aW9uKTsKLSAgICAgICAg
Ly8gRklYTUU6IEltcGxlbWVudCB0aGUgImVsc2UiIGNhc2UuCisgICAgICAgIGlmIChibG9ja0Rp
cmVjdGlvbiA9PSBSVEwpIHsKKyAgICAgICAgICAgIGlmIChib3gtPmlzTGVmdFRvUmlnaHREaXJl
Y3Rpb24oKSkKKyAgICAgICAgICAgICAgICB3b3JkQnJlYWsgPSBuZXh0V29yZEJvdW5kYXJ5SW5C
b3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9mZnNldCA6IGludmFsaWRPZmZz
ZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHdvcmRCcmVhayA9IHByZXZp
b3VzV29yZEJvdW5kYXJ5SW5Cb3goYWRqYWNlbnRCb3gsIGFkamFjZW50Qm94ID09IGJveCA/IG9m
ZnNldCA6IGludmFsaWRPZmZzZXQpOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICB3b3Jk
QnJlYWsgPSB2aXN1YWxseUxhc3RXb3JkQm91bmRhcnlJbkJveChhZGphY2VudEJveCwgYWRqYWNl
bnRCb3ggPT0gYm94ID8gb2Zmc2V0IDogaW52YWxpZE9mZnNldCwgYmxvY2tEaXJlY3Rpb24pOyAg
ICAgICAgICAgIAogICAgICAgICBpZiAoIXdvcmRCcmVhay5pc051bGwoKSkKICAgICAgICAgICAg
IHJldHVybiB3b3JkQnJlYWs7CiAgICAgfQpAQCAtMTQ4NiwxMCArMTUyMCw3IEBAIFZpc2libGVQ
b3NpdGlvbiBsZWZ0V29yZFBvc2l0aW9uKGNvbnN0IFYKICAgICAgICAgcmV0dXJuIHdvcmRCcmVh
azsKICAgICAKICAgICBXb3JkQm91bmRhcnlWZWN0b3Igb3JkZXJlZFdvcmRCb3VuZGFyaWVzOwot
ICAgIGlmIChib3gtPmRpcmVjdGlvbigpID09IGJsb2NrRGlyZWN0aW9uKQotICAgICAgICBjb2xs
ZWN0V29yZEJyZWFrc0luQm94SW5zaWRlQmxvY2tXaXRoU2FtZURpcmVjdGlvbmFsaXR5KGJveCwg
b3JkZXJlZFdvcmRCb3VuZGFyaWVzKTsKLSAgICBlbHNlCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhEaWZmZXJudERpcmVjdGlvbmFsaXR5KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzKTsKKyAgICBjb2xsZWN0V29yZEJyZWFrc0luQm94KGJveCwgb3JkZXJl
ZFdvcmRCb3VuZGFyaWVzLCBibG9ja0RpcmVjdGlvbik7CiAKICAgICBpbnQgaW5kZXggPSBib3gt
PmlzTGVmdFRvUmlnaHREaXJlY3Rpb24oKSA/IGdyZWF0ZXN0VmFsdWVVbmRlcihvZmZzZXQsIGJs
b2NrRGlyZWN0aW9uID09IExUUiwgb3JkZXJlZFdvcmRCb3VuZGFyaWVzKSA6CiAgICAgICAgIHNt
YWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRX
b3JkQm91bmRhcmllcyk7CkBAIC0xNTI3LDEwICsxNTU4LDggQEAgVmlzaWJsZVBvc2l0aW9uIHJp
Z2h0V29yZFBvc2l0aW9uKGNvbnN0IAogICAgICAgICByZXR1cm4gd29yZEJyZWFrOwogICAgIAog
ICAgIFdvcmRCb3VuZGFyeVZlY3RvciBvcmRlcmVkV29yZEJvdW5kYXJpZXM7Ci0gICAgaWYgKGJv
eC0+ZGlyZWN0aW9uKCkgPT0gYmxvY2tEaXJlY3Rpb24pCi0gICAgICAgIGNvbGxlY3RXb3JkQnJl
YWtzSW5Cb3hJbnNpZGVCbG9ja1dpdGhTYW1lRGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29y
ZEJvdW5kYXJpZXMpOwotICAgIGVsc2UKLSAgICAgICAgY29sbGVjdFdvcmRCcmVha3NJbkJveElu
c2lkZUJsb2NrV2l0aERpZmZlcm50RGlyZWN0aW9uYWxpdHkoYm94LCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMpOworICAgIGNvbGxlY3RXb3JkQnJlYWtzSW5Cb3goYm94LCBvcmRlcmVkV29yZEJvdW5k
YXJpZXMsIGJsb2NrRGlyZWN0aW9uKTsKKyAgICAKICAgICBpbnQgaW5kZXggPSBib3gtPmlzTGVm
dFRvUmlnaHREaXJlY3Rpb24oKSA/IHNtYWxsZXN0T2Zmc2V0QWJvdmUob2Zmc2V0LCBibG9ja0Rp
cmVjdGlvbiA9PSBMVFIsIG9yZGVyZWRXb3JkQm91bmRhcmllcykgOgogICAgICAgICBncmVhdGVz
dFZhbHVlVW5kZXIob2Zmc2V0LCBibG9ja0RpcmVjdGlvbiA9PSBSVEwsIG9yZGVyZWRXb3JkQm91
bmRhcmllcyk7CiAgICAgaWYgKGluZGV4ICE9IGludmFsaWRPZmZzZXQpCkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA4NDQxMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDEzIEBACisyMDExLTA0LTIwICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQ29udGludWUg
KDNyZCkgZXhwZXJpbWVudCB3aXRoIG1vdmluZyBjYXJldCBieSB3b3JkIGluIHZpc3VhbCBvcmRl
ci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mjk0
CisKKyAgICAgICAgKiBlZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1
YWxseS5odG1sOgorCiAyMDExLTA0LTIwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbnRvbmlvIEdvbWVzLgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQt
dmlzdWFsbHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NDQxMSkKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTIsNDQgKzIsMTg5IEBACiA9PT09PT09PSBNb3ZlIEJ5IFdvcmQgPT09PQog
VGVzdCAxLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBoaWogb3BxIHJz
dCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMiwgMTYs
IDE5LCAxOV0KKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlswLCA0LCA4LCAxMiwgMTZdCiBNb3ZlIGxl
ZnQgYnkgb25lIHdvcmQKLSJhYmMgZGVmIGhpaiBvcHEgcnN0IlsxNiwgMTIsIDgsIDQsIDAsIDBd
Ci1UZXN0IDIsIFJUTDoKKyJhYmMgZGVmIGhpaiBvcHEgcnN0IlsxOSwgMTYsIDEyLCA4LCA0LCAw
XQorVGVzdCAyLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3Bx
IHJzdCJbMCwgNCwgOCwgMTIsIDE2XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBo
aWogb3BxIHJzdCJbMTksIDE2LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMywgUlRMOgorTW92ZSBsZWZ0
IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogb3BxIHJzdCJbMCwgMTUsIDExLCA3LCAzXQorTW92
ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBkZWYgaGlqIG9wcSByc3QiWzE5LCAzLCA3LCAxMSwg
MTUsIDBdCitUZXN0IDQsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJC
QiBDQ0MgWFhYIlswLCAxNSwgMTEsIDcsIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJaWlog
UVFRIEJCQiBDQ0MgWFhYIlsxOSwgMywgNywgMTEsIDE1LCAwXQorVGVzdCA1LCBSVEw6CitNb3Zl
IGxlZnQgYnkgb25lIHdvcmQKKyJaWlogUVFRIEJCQiBDQ0MgWFhYIlswLCA0LCA4LCAxMiwgMTZd
CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiWlpaIFFRUSBCQkIgQ0NDIFhYWCJbMTksIDE2LCAx
MiwgOCwgNCwgMF0KK1Rlc3QgNiwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFiYyBk
ZWYgaGlqIEFBQSBCQkIgV1dXIG9wciB1dncgeHl6IlswLCA0LCA4LCAxMiwgMTksIDE1LCAyNCwg
MjgsIDMyXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBoaWogQUFBIEJCQiBXV1cg
b3ByIHV2dyB4eXoiWzM1LCAzMiwgMjgsIDI0LCAxNSwgMTksIDEyLCA4LCA0LCAwXQorVGVzdCA3
LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBv
cHIgdXZ3IHh5eiJbMCwgNywgMywgMTIsIDE2LCAyMCwgMjQsIDMxLCAyN10KK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJhYmMgZGVmIGhpaiBBQUEgQkJCIFdXVyBvcHIgdXZ3IHh5eiJbMzUsIDI3
LCAzMSwgMjQsIDIwLCAxNiwgMTIsIDMsIDcsIDBdCitUZXN0IDgsIExUUjoKK01vdmUgcmlnaHQg
Ynkgb25lIHdvcmQKKyJhYmMgZGVmIFpRQiBSSUcgdXZ3IHh5eiJbMCwgNCwgOCwgMTEsIDE2LCAy
MF0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlsyMywg
MjAsIDE2LCAxMSwgOCwgNCwgMF0KK1Rlc3QgOSwgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3Jk
CisiYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzAsIDMsIDgsIDEyLCAxNiwgMTldCitNb3ZlIHJp
Z2h0IGJ5IG9uZSB3b3JkCisiYWJjIGRlZiBaUUIgUklHIHV2dyB4eXoiWzIzLCAxOSwgMTYsIDEy
LCA4LCAzLCAwXQorVGVzdCAxMCwgTFRSOgorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFhYSBB
QUEgYmJiIlswLCA0LCA4XQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWFhIEFBQSBiYmIiWzEx
LCA4LCA0LCAwXQorVGVzdCAxMSwgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiYWFhIEFB
QSBiYmIiWzAsIDQsIDgsIDExXQorTW92ZSByaWdodCBieSBvbmUgd29yZAorImFhYSBBQUEgYmJi
IlsxMSwgOCwgNCwgMF0KK1Rlc3QgMTIsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJB
QUEgQkJCIFdXVyBhYWEgYmJiIGNjYyBEREQgU1NTIFVVVSJbMCwgNywgMywgMTIsIDE2LCAyMCwg
MjQsIDMxLCAyN10KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIg
Y2NjIERERCBTU1MgVVVVIlszNSwgMjcsIDMxLCAyNCwgMjAsIDE2LCAxMiwgMywgNywgMF0KK1Rl
c3QgMTMsIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIg
Y2NjIERERCBTU1MgVVVVIlswLCA0LCA4LCAxMiwgMTksIDE1LCAyNCwgMjgsIDMyXQorTW92ZSBy
aWdodCBieSBvbmUgd29yZAorIkFBQSBCQkIgV1dXIGFhYSBiYmIgY2NjIERERCBTU1MgVVVVIlsz
NSwgMzIsIDI4LCAyNCwgMTUsIDE5LCAxMiwgOCwgNCwgMF0KK1Rlc3QgMTQsIExUUjoKK01vdmUg
cmlnaHQgYnkgb25lIHdvcmQKKyJBQUEgQkJCIGFhYSBiYmIgV1dXIERERCJbMCwgMywgOCwgMTIs
IDE2LCAxOV0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cgRERE
IlsyMywgMTksIDE2LCAxMiwgOCwgMywgMF0KK1Rlc3QgMTUsIFJUTDoKK01vdmUgbGVmdCBieSBv
bmUgd29yZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cgREREIlswLCA0LCA4LCAxMSwgMTYsIDIwXQor
TW92ZSByaWdodCBieSBvbmUgd29yZAorIkFBQSBCQkIgYWFhIGJiYiBXV1cgREREIlsyMywgMjAs
IDE2LCAxMSwgOCwgNCwgMF0KK1Rlc3QgMTYsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQK
KyJaUUIgYWJjIFJJRyJbMCwgNCwgOCwgMTFdCiBNb3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJhYmMg
ZGVmIGhpaiBvcHEgcnN0IlswLCAxMSwgNywgMywgMywgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFsx
NSwgMTEsIDcsIDMsIDE5LCAxOV0KKyJaUUIgYWJjIFJJRyJbMTEsIDgsIDQsIDBdCitUZXN0IDE3
LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJaUUIgYWJjIFJJRyJbMCwgNCwgOF0KK01v
dmUgcmlnaHQgYnkgb25lIHdvcmQKKyJaUUIgYWJjIFJJRyJbMTEsIDgsIDQsIDBdCitUZXN0IDE4
LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBoaWogb3BxIHJzdCJbMTks
IDcsIDExLCAxNSwgMCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzMsIDcsIDExLCAxNSwgMCwgMF0K
LVRlc3QgMywgTFRSOgorImFiYyBkZWYgICAgaGlqIG9wcSJbMCwgNCwgMTVdICAgIEZBSUwgZXhw
ZWN0ZWQ6IFswLCA0LCAxMSwgMTVdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJhYmMgZGVmICAg
IGhpaiBvcHEiWzE4LCAxNSwgNCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzE4LCAxNSwgMTEsIDQs
IDBdCitUZXN0IDE5LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iWlpaIFFRUSBCQkIg
Q0NDIFhYWCJbMCwgMTEsIDcsIDMsIDMsIDE5XSAgICBGQUlMIGV4cGVjdGVkOiBbMTUsIDExLCA3
LCAzLCAxOSwgMTldCisiQUFBICJbMCwgM10KIE1vdmUgbGVmdCBieSBvbmUgd29yZAotIlpaWiBR
UVEgQkJCIENDQyBYWFgiWzE5LCA3LCAxMSwgMTUsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsz
LCA3LCAxMSwgMTUsIDAsIDBdCi1UZXN0IDQsIFJUTDoKKyJCQiJbMl0sICJBQUEgIlszLCAwXQor
VGVzdCAyMCwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iWlpaIFFRUSBCQkIgQ0NDIFhY
WCJbMCwgOCwgMTIsIDE2LCAxNiwgMTldICAgIEZBSUwgZXhwZWN0ZWQ6IFs0LCA4LCAxMiwgMTYs
IDE5LCAxOV0KKyJBQUEgIlswLCA0XQogTW92ZSByaWdodCBieSBvbmUgd29yZAotIlpaWiBRUVEg
QkJCIENDQyBYWFgiWzE2LCAxMiwgOCwgNCwgMCwgMF0KLVRlc3QgNSwgTFRSOgorIkJCIlsyXSwg
IkFBQSAiWzQsIDBdCitUZXN0IDIxLCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0iYWJj
IGRlZiBaUUIgUklHIHV2dyB4eXoiWzAsIDQsIDgsIDExLCAyMCwgMjAsIDIzXSAgICBGQUlMIGV4
cGVjdGVkOiBbNCwgOCwgMTEsIDE2LCAyMCwgMjMsIDIzXQorImFiYyBkZWYgIlswLCA0LCA4XSwg
ImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDVdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyIg
cnN0IHV2dyJbOCwgNSwgMV0sICJoaWogb3BxIls0XSwgImFiYyBkZWYgIls4LCA0LCAwXQorVGVz
dCAyMiwgUlRMOgogTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCi0iYWJjIGRlZiBaUUIgUklHIHV2dyB4
eXoiWzIwLCAxNiwgNCwgOCwgNCwgMCwgMF0gICAgRkFJTCBleHBlY3RlZDogWzIwLCAxNiwgMTEs
IDgsIDQsIDAsIDBdCi1UZXN0IDYsIFJUTDoKKyJhYmMgZGVmICJbMF0sICIgcnN0IHV2dyJbNF0s
ICJoaWogb3BxIlszXSwgImFiYyBkZWYgIls3LCAzXSAgICBGQUlMIGV4cGVjdGVkOiBbImFiYyBk
ZWYgIlsgMCwgXSIgcnN0IHV2dyJbIDQsICAwLCBdImhpaiBvcHEiWyAzLCBdImFiYyBkZWYgIlsg
NywgIDNdCitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiIHJzdCB1dnciWzhdLCAiYWJjIGRlZiAi
WzMsIDddLCAiaGlqIG9wcSJbM10sICIgcnN0IHV2dyJbNF0sICJhYmMgZGVmICJbMF0gICAgRkFJ
TCBleHBlY3RlZDogWyIgcnN0IHV2dyJbIDgsIF0iYWJjIGRlZiAiWyAzLCAgNywgXSJoaWogb3Bx
IlsgMywgXSIgcnN0IHV2dyJbIDAsICA0LCBdImFiYyBkZWYgIlsgMF0KK1Rlc3QgMjMsIFJUTDoK
IE1vdmUgbGVmdCBieSBvbmUgd29yZAotImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlswLCAzLCAx
MiwgMTIsIDE2LCAxOSwgMjNdICAgIEZBSUwgZXhwZWN0ZWQ6IFszLCA4LCAxMiwgMTYsIDE5LCAy
MywgMjNdCisiYWJjIGRlZiAiWzBdLCAiIHJzdCB1dnciWzRdLCAiaGlqIG9wcSJbM10sICJhYmMg
ZGVmICJbNywgM10gICAgRkFJTCBleHBlY3RlZDogWyJhYmMgZGVmICJbIDAsIF0iIHJzdCB1dnci
WyA0LCAgMCwgXSJoaWogb3BxIlsgMywgXSJhYmMgZGVmICJbIDcsICAzXQogTW92ZSByaWdodCBi
eSBvbmUgd29yZAotImFiYyBkZWYgWlFCIFJJRyB1dncgeHl6IlsxMiwgMTYsIDEyLCA4LCA4LCAw
LCAwXSAgICBGQUlMIGV4cGVjdGVkOiBbMTksIDE2LCAxMiwgOCwgMywgMCwgMF0KLVRlc3QgNywg
TFRSOgorIiByc3QgdXZ3Ils4XSwgImFiYyBkZWYgIlszLCA3XSwgImhpaiBvcHEiWzNdLCAiIHJz
dCB1dnciWzRdLCAiYWJjIGRlZiAiWzBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiIHJzdCB1dnciWyA4
LCBdImFiYyBkZWYgIlsgMywgIDcsIF0iaGlqIG9wcSJbIDMsIF0iIHJzdCB1dnciWyAwLCAgNCwg
XSJhYmMgZGVmICJbIDBdCitUZXN0IDI0LCBMVFI6CiBNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCi0i
WlFCIGFiYyBSSUciWzAsIDQsIDgsIDExXSAgICBGQUlMIGV4cGVjdGVkOiBbNCwgOCwgMTEsIDEx
XQorImFiYyBkZWYgIlswLCA0LCA4XSwgImhpaiBvcHEiWzRdLCAiIHJzdCB1dnciWzEsIDVdCiBN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKLSJaUUIgYWJjIFJJRyJbNCwgNCwgNCwgMF0gICAgRkFJTCBl
eHBlY3RlZDogWzgsIDQsIDAsIDBdCi1UZXN0IDgsIFJUTDoKKyIgcnN0IHV2dyJbOCwgNSwgMV0s
ICJoaWogb3BxIls0XSwgImFiYyBkZWYgIls4LCA0LCAwXQorVGVzdCAyNSwgUlRMOgogTW92ZSBs
ZWZ0IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUciWzAsIDQsIDgsIDExXSAgICBGQUlMIGV4cGVj
dGVkOiBbNCwgOCwgMTEsIDExXQorIkFCRCBEU1UgIlswLCA0LCA4XSwgIkVKSCBGVVgiWzRdLCAi
RkZaIExJRyJbNF0KK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3LCA0XSwgIkVK
SCBGVVgiWzRdLCAiQUJEIERTVSAiWzgsIDQsIDBdCitUZXN0IDI2LCBMVFI6CiBNb3ZlIHJpZ2h0
IGJ5IG9uZSB3b3JkCi0iWlFCIGFiYyBSSUciWzgsIDAsIDAsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6
IFs4LCA0LCAwLCAwXQorIkFCRCBEU1UgIlswXSwgIkZGWiBMSUciWzNdLCAiRUpIIEZVWCJbM10s
ICJBQkQgRFNVICJbNywgM10KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiBMSUciWzddLCAi
QUJEIERTVSAiWzMsIDddLCAiRUpIIEZVWCJbM10sICJGRlogTElHIlszXSwgIkFCRCBEU1UgIlsw
XQorVGVzdCAyNywgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzAsIDQs
IDhdLCAiRUpIIEZVWCJbNF0sICJGRlogTElHIls0XQorTW92ZSByaWdodCBieSBvbmUgd29yZAor
IkZGWiBMSUciWzcsIDRdLCAiRUpIIEZVWCJbNF0sICJBQkQgRFNVICJbOCwgNCwgMF0KK1Rlc3Qg
MjgsIExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQkQgRFNVICJbMF0sICJGRlogTElH
IlszXSwgIkVKSCBGVVgiWzNdLCAiQUJEIERTVSAiWzcsIDNdCitNb3ZlIGxlZnQgYnkgb25lIHdv
cmQKKyJGRlogTElHIls3XSwgIkFCRCBEU1UgIlszLCA3XSwgIkVKSCBGVVgiWzNdLCAiRkZaIExJ
RyJbM10sICJBQkQgRFNVICJbMF0KK1Rlc3QgMjksIFJUTDoKK01vdmUgbGVmdCBieSBvbmUgd29y
ZAorIkFCRCBEU1UgIlswLCA0LCA4XSwgImFiYyBkZWYiWzNdLCAiRkZaIExJRyJbNF0KK01vdmUg
cmlnaHQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3LCA0XSwgImFiYyBkZWYiWzNdLCAiQUJEIERT
VSAiWzgsIDQsIDBdCitUZXN0IDMwLCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJE
IERTVSAiWzBdLCAiRkZaIExJRyJbM10sICJBQkQgRFNVICJbOF0sICJhYmMgZGVmIls0XSwgIkFC
RCBEU1UgIls3LCAzXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZaIExJRyJbN10sICJBQkQg
RFNVICJbMywgN10sICJhYmMgZGVmIls0XSwgIkFCRCBEU1UgIls4XSwgIkZGWiBMSUciWzNdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIExJRyJbIDcsIF0iQUJEIERTVSAiWyAzLCAgNywgXSJhYmMg
ZGVmIlsgNCwgXSJBQkQgRFNVICJbIDgsIF0iRkZaIExJRyJbIDMsIF0iQUJEIERTVSAiWyAwXQor
VGVzdCAzMSwgUlRMOgorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiQUJEIERTVSAiWzAsIDQsIDhd
LCAiYWJjIGRlZiJbM10sICJGRlogTElHIls0XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZG
WiBMSUciWzcsIDRdLCAiYWJjIGRlZiJbM10sICJBQkQgRFNVICJbOCwgNCwgMF0KK1Rlc3QgMzIs
IExUUjoKK01vdmUgcmlnaHQgYnkgb25lIHdvcmQKKyJBQkQgRFNVICJbMCwgMywgOF0sICJhYmMg
ZGVmIls0XSwgIkZGWiBMSUciWzNdCitNb3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJGRlogTElHIls3
LCAzXSwgImFiYyBkZWYiWzRdLCAiQUJEIERTVSAiWzgsIDQsIDBdCitUZXN0IDMzLCBSVEw6CitN
b3ZlIGxlZnQgYnkgb25lIHdvcmQKKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhdLCAiYWJjIEFBQSBk
ZWYiWzgsIDQsIDNdLCAiRkZaIHJzdCBMSUciWzQsIDhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJE
IG9wcSBEU1UgIlsgMCwgIDQsICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAgMywgXSJGRlog
cnN0IExJRyJbIDQsICA4XQorTW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiByc3QgTElHIlsx
MSwgOCwgNF0sICJhYmMgQUFBIGRlZiJbNCwgOF0sICJBQkQgb3BxIERTVSAiWzgsIDQsIDBdICAg
IEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgsICA0LCBdImFiYyBBQUEgZGVm
IlsgMywgIDQsIF0iQUJEIG9wcSBEU1UgIlsgMTIsICA4LCAgNCwgIDBdCitUZXN0IDM0LCBMVFI6
CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiQUJEIG9wcSBEU1UgIlswLCA0XSwgImFiYyBBQUEg
ZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJbMTIsIDExXSwgIkZGWiByc3QgTElHIls0LCA4LCAx
MV0gICAgRkFJTCBleHBlY3RlZDogWyJBQkQgb3BxIERTVSAiWyAwLCAgNCwgIDgsIF0iYWJjIEFB
QSBkZWYiWyA4LCAgNywgXSJBQkQgb3BxIERTVSAiWyAxMiwgIDExLCBdIkZGWiByc3QgTElHIlsg
NCwgIDgsICAxMV0KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiByc3QgTElHIlsxMSwgOCwg
NF0sICJBQkQgb3BxIERTVSAiWzExLCAxMl0sICJhYmMgQUFBIGRlZiJbNywgOF0sICJBQkQgb3Bx
IERTVSAiWzcsIDQsIDBdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiRkZaIHJzdCBMSUciWyAxMSwgIDgs
ICA0LCBdIkFCRCBvcHEgRFNVICJbIDExLCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA3LCAgOCwgXSJB
QkQgb3BxIERTVSAiWyA4LCAgNCwgIDBdCitUZXN0IDM1LCBSVEw6CitNb3ZlIGxlZnQgYnkgb25l
IHdvcmQKKyJBQkQgb3BxIERTVSAiWzAsIDQsIDhdLCAiYWJjIEFBQSBkZWYiWzQsIDhdLCAiRkZa
IHJzdCBMSUciWzQsIDhdICAgIEZBSUwgZXhwZWN0ZWQ6IFsiQUJEIG9wcSBEU1UgIlsgMCwgIDQs
ICA4LCAgMTIsIF0iYWJjIEFBQSBkZWYiWyA0LCAgOCwgXSJGRlogcnN0IExJRyJbIDQsICA4XQor
TW92ZSByaWdodCBieSBvbmUgd29yZAorIkZGWiByc3QgTElHIlsxMSwgOCwgNF0sICJhYmMgQUFB
IGRlZiJbOCwgNF0sICJBQkQgb3BxIERTVSAiWzExLCA4LCA0LCAwXSAgICBGQUlMIGV4cGVjdGVk
OiBbIkZGWiByc3QgTElHIlsgMTEsICA4LCAgNCwgXSJhYmMgQUFBIGRlZiJbIDgsICA0LCBdIkFC
RCBvcHEgRFNVICJbIDEyLCAgOCwgIDQsICAwXQorVGVzdCAzNiwgTFRSOgorTW92ZSByaWdodCBi
eSBvbmUgd29yZAorIkFCRCBvcHEgRFNVICJbMCwgNCwgOCwgMTJdLCAiYWJjIEFBQSBkZWYiWzQs
IDhdLCAiRkZaIHJzdCBMSUciWzQsIDgsIDExXQorTW92ZSBsZWZ0IGJ5IG9uZSB3b3JkCisiRkZa
IHJzdCBMSUciWzExLCA4LCA0XSwgImFiYyBBQUEgZGVmIls4LCA0XSwgIkFCRCBvcHEgRFNVICJb
MTIsIDgsIDQsIDBdCitUZXN0IDM3LCBMVFI6CitNb3ZlIHJpZ2h0IGJ5IG9uZSB3b3JkCisiYWFh
ICJbMCwgNF0sICJiYmIgQUFBICJbNCwgN10KK01vdmUgbGVmdCBieSBvbmUgd29yZAorIkZGWiJb
M10sICJiYmIgQUFBICJbNywgNF0sICJhYWEgIls0LCAwXQogCiA9PT09PT09PSBNb3ZlIEJ5IFdv
cmQgU3BlY2lmaWMgVGVzdCA9PT09CiBUZXN0IDEKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
c2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29yZC12aXN1YWxseS5odG1sCShyZXZp
c2lvbiA4NDQxMSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvc2VsZWN0aW9uL21vdmUtYnktd29y
ZC12aXN1YWxseS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNSArMzIsNiBAQCBmdW5jdGlv
biBmbHVzaExvZygpCiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlcy5qb2luKCIiKSkpOwogfQog
Ci1mdW5jdGlvbiBjYXJldENvb3JkaW5hdGVzKCkKLXsKLSAgICBpZiAoIXdpbmRvdy50ZXh0SW5w
dXRDb250cm9sbGVyKQotICAgICAgICByZXR1cm4geyB4OiAwLCB5IDowIH07Ci0gICAgdmFyIGNh
cmV0UmVjdCA9IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFjdGVyUmFuZ2Uo
dGV4dElucHV0Q29udHJvbGxlci5zZWxlY3RlZFJhbmdlKClbMF0sIDApOwotICAgIHJldHVybiB7
IHg6IGNhcmV0UmVjdFswXSwgeTogY2FyZXRSZWN0WzFdIH07Ci19Ci0KLQogZnVuY3Rpb24gZm9s
ZChzdHJpbmcpCiB7CiAgICAgdmFyIHJlc3VsdCA9ICIiOwpAQCAtNzIsMzYgKzYzLDEwMCBAQCBm
dW5jdGlvbiBsb2dQb3NpdGlvbnMocG9zaXRpb25zKQogICAgIGxvZygiXSIpOwogfQogCitmdW5j
dGlvbiBub2RlT2ZXb3JkQnJlYWsobm9kZUFuZE9mZnNldCkKK3sKKyAgICB2YXIgbm9kZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKG5vZGVBbmRPZmZzZXRbMF0pLmZpcnN0Q2hpbGQ7CisgICAg
aWYgKG5vZGVBbmRPZmZzZXQubGVuZ3RoID09IDMpIHsKKyAgICAgICAgdmFyIGNoaWxkSW5kZXgg
PSBub2RlQW5kT2Zmc2V0WzJdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkSW5k
ZXggLSAxOyArK2kpIHsKKyAgICAgICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nOworICAg
ICAgICB9CisgICAgfQorICAgIHJldHVybiBub2RlOworfQorCiB2YXIgd29yZEJyZWFrczsKIAor
ZnVuY3Rpb24gbG9nV29yZEJyZWFrKGluZGV4KQoreworICAgIHZhciB3b3JkQnJlYWsgPSB3b3Jk
QnJlYWtzW2luZGV4XTsKKyAgICBpZiAod29yZEJyZWFrLnNlYXJjaCgnLCcpID09IC0xKQorICAg
ICAgICBsb2cod29yZEJyZWFrKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5vZGVBbmRPZmZz
ZXQgPSB3b3JkQnJlYWsuc3BsaXQoJywnKTsKKyAgICAgICAgdmFyIG5vZGUgPSBub2RlT2ZXb3Jk
QnJlYWsobm9kZUFuZE9mZnNldCk7CisKKyAgICAgICAgdmFyIGRpZmZlcmVudE5vZGUgPSBmYWxz
ZTsKKyAgICAgICAgaWYgKGluZGV4ICE9IDApIHsKKyAgICAgICAgICAgIGRpZmZlcmVudE5vZGUg
PSBub2RlT2ZXb3JkQnJlYWsobm9kZUFuZE9mZnNldCkgIT0gbm9kZU9mV29yZEJyZWFrKHdvcmRC
cmVha3NbaW5kZXggLSAxXS5zcGxpdCgnLCcpKTsKKyAgICAgICAgCisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGRpZmZlcmVudE5vZGUgPT0gdHJ1ZSkKKyAgICAgICAgICAgIGxvZygiXSIpOworICAg
ICAgICBpZiAoaW5kZXggPT0gMCB8fCBkaWZmZXJlbnROb2RlID09IHRydWUpCisgICAgICAgICAg
ICBsb2coKG5vZGUgaW5zdGFuY2VvZiBUZXh0ID8gJyInICsgZm9sZChub2RlLmRhdGEpICsgJyIn
IDogIjwiICsgbm9kZS50YWdOYW1lICsgIj4iKSArICJbIik7CisgICAgICAgIGxvZyhub2RlQW5k
T2Zmc2V0WzFdKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHBvc2l0aW9uRXF1YWxUb1dvcmRCcmVh
ayhwb3NpdGlvbiwgd29yZEJyZWFrKQoreworICAgIGlmICh3b3JkQnJlYWsuc2VhcmNoKCcsJykg
PT0gLTEpCisgICAgICAgIHJldHVybiBwb3NpdGlvbi5vZmZzZXQgPT0gd29yZEJyZWFrOworICAg
IGVsc2UgeworICAgICAgICB2YXIgbm9kZUFuZE9mZnNldCA9IHdvcmRCcmVhay5zcGxpdCgnLCcp
OworICAgICAgICByZXR1cm4gcG9zaXRpb24ubm9kZSA9PSBub2RlT2ZXb3JkQnJlYWsobm9kZUFu
ZE9mZnNldCkgJiYgcG9zaXRpb24ub2Zmc2V0ID09IG5vZGVBbmRPZmZzZXRbMV07CisgICAgfQor
fQorCiBmdW5jdGlvbiB2YWxpZGF0ZURhdGEocG9zaXRpb25zKQogeworICAgIHZhciBlcXVhbCA9
IHRydWU7CisgICAgaWYgKHBvc2l0aW9ucy5sZW5ndGggIT0gd29yZEJyZWFrcy5sZW5ndGgpCisg
ICAgICAgIGVxdWFsID0gZmFsc2U7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JkQnJlYWtz
Lmxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICBpZiAocG9zaXRpb25zW2ldLm9mZnNldCAhPSB3
b3JkQnJlYWtzW2kgKyAxXSkgeworICAgICAgICBpZiAoIXBvc2l0aW9uRXF1YWxUb1dvcmRCcmVh
ayhwb3NpdGlvbnNbaV0sIHdvcmRCcmVha3NbaV0pKSB7CisgICAgICAgICAgICBlcXVhbCA9IGZh
bHNlOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGkgIT0g
d29yZEJyZWFrcy5sZW5ndGggLSAxICYmIHBvc2l0aW9uc1tpXSAhPSB3b3JkQnJlYWtzW2ldKSB7
CisgICAgaWYgKGVxdWFsID09IGZhbHNlKSB7CiAgICAgICAgIGxvZygiICAgIEZBSUwgZXhwZWN0
ZWQ6IFsiKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCB3b3JkQnJlYWtzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICBsb2cod29yZEJyZWFrc1tpXSArICIsICIpOworICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHdvcmRCcmVha3MubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IGxvZ1dvcmRCcmVhayhpKTsKKyAgICAgICAgICAgIGlmIChpICE9IHdvcmRCcmVha3MubGVuZ3Ro
IC0gMSkKKyAgICAgICAgICAgICAgICBsb2coIiwgIik7CiAgICAgICAgIH0KLSAgICAgICAgbG9n
KHdvcmRCcmVha3Nbd29yZEJyZWFrcy5sZW5ndGggLSAxXSArICJdIik7CisgICAgICAgIGxvZygi
XSIpOwogICAgIH0KIH0KIAogZnVuY3Rpb24gY29sbGVjdFdvcmRCcmVha3ModGVzdCwgc2VhcmNo
RGlyZWN0aW9uKQogewotICAgIGlmIChzZWFyY2hEaXJlY3Rpb24gPT0gInJpZ2h0IikgewotICAg
ICAgICBpZiAodGVzdC5nZXRBdHRyaWJ1dGUoImRpciIpID09ICdsdHInKSAKLSAgICAgICAgICAg
IHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF0uc3BsaXQoIiAiKTsKLSAgICAg
ICAgZWxzZSAKLSAgICAgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8Iilb
MV0uc3BsaXQoIiAiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpZiAodGVzdC5nZXRBdHRyaWJ1
dGUoImRpciIpID09ICdsdHInKSAKLSAgICAgICAgICAgIHdvcmRCcmVha3MgPSB0ZXN0LnRpdGxl
LnNwbGl0KCJ8IilbMV0uc3BsaXQoIiAiKTsKLSAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHdv
cmRCcmVha3MgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF0uc3BsaXQoIiAiKTsKKyAgICB2YXIg
dGl0bGU7CisgICAgaWYgKHNlYXJjaERpcmVjdGlvbiA9PSAicmlnaHQiKSAKKyAgICAgICAgdGl0
bGUgPSB0ZXN0LnRpdGxlLnNwbGl0KCJ8IilbMF07CisgICAgZWxzZQorICAgICAgICB0aXRsZSA9
IHRlc3QudGl0bGUuc3BsaXQoInwiKVsxXTsKKworICAgIHZhciBwYXR0ZXJuID0gL1xbKC4rPylc
XS9nOworICAgIHZhciByZXN1bHQ7CisgICAgd29yZEJyZWFrcyA9IFtdOworICAgIHdoaWxlICgo
cmVzdWx0ID0gcGF0dGVybi5leGVjKHRpdGxlKSkgIT0gbnVsbCkgeworICAgICAgICB3b3JkQnJl
YWtzLnB1c2gocmVzdWx0WzFdKTsKKyAgICB9CisgICAgaWYgKHdvcmRCcmVha3MubGVuZ3RoID09
IDApIHsKKyAgICAgICAgd29yZEJyZWFrcyA9IHRpdGxlLnNwbGl0KCIgIik7CisgICAgfQorfQor
CitmdW5jdGlvbiBzZXRQb3NpdGlvbihzZWwsIG5vZGUsIHdvcmRCcmVhaykKK3sKKyAgICBpZiAo
d29yZEJyZWFrLnNlYXJjaCgnLCcpID09IC0xKQorICAgICAgICBzZWwuc2V0UG9zaXRpb24obm9k
ZSwgd29yZEJyZWFrKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIG5vZGVBbmRPZmZzZXQgPSB3
b3JkQnJlYWsuc3BsaXQoJywnKTsKKyAgICAgICAgc2VsLnNldFBvc2l0aW9uKG5vZGVPZldvcmRC
cmVhayhub2RlQW5kT2Zmc2V0KSwgbm9kZUFuZE9mZnNldFsxXSk7CiAgICAgfQogfQogCkBAIC0x
MDksMTggKzE2NCwyMCBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkKHNlbCwgdGVzdCwgc2VhcmNoRGly
CiB7CiAgICAgbG9nKCJNb3ZlICIgKyBzZWFyY2hEaXJlY3Rpb24gKyAiIGJ5IG9uZSB3b3JkXG4i
KTsKICAgICB2YXIgcHJldk9mZnNldCA9IHNlbC5hbmNob3JPZmZzZXQ7Ci0gICAgdmFyIG5vZGUg
PSBzZWwuYW5jaG9yTm9kZTsKLSAgICBjb2xsZWN0V29yZEJyZWFrcyh0ZXN0LCBzZWFyY2hEaXJl
Y3Rpb24pOwotICAgIHNlbC5zZXRQb3NpdGlvbihub2RlLCB3b3JkQnJlYWtzWzBdKTsKKyAgICB2
YXIgcHJldk5vZGUgPSBzZWwuYW5jaG9yTm9kZTsKICAgICB2YXIgcG9zaXRpb25zID0gW107Ci0g
ICAgZm9yICh2YXIgaW5kZXggPSAxOyBpbmRleCA8IHdvcmRCcmVha3MubGVuZ3RoOyArK2luZGV4
KSB7CisgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBz
ZWwuYW5jaG9yT2Zmc2V0IH0pOworCisgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc2VsLm1vZGlm
eSgibW92ZSIsIHNlYXJjaERpcmVjdGlvbiwgIi13ZWJraXQtdmlzdWFsLXdvcmQiKTsKLSAgICAg
ICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5j
aG9yT2Zmc2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRlcygpIH0pOwotICAgICAgICBzZWwuc2V0
UG9zaXRpb24obm9kZSwgd29yZEJyZWFrc1tpbmRleF0pOwotICAgIH0KLSAgICBzZWwubW9kaWZ5
KCJtb3ZlIiwgc2VhcmNoRGlyZWN0aW9uLCAiLXdlYmtpdC12aXN1YWwtd29yZCIpOwotICAgIHBv
c2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmFuY2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9m
ZnNldCwgcG9pbnQ6IGNhcmV0Q29vcmRpbmF0ZXMoKSB9KTsKKyAgICAgICAgaWYgKHByZXZOb2Rl
ID09IHNlbC5hbmNob3JOb2RlICYmIHByZXZPZmZzZXQgPT0gc2VsLmFuY2hvck9mZnNldCkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5hbmNo
b3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQgfSk7CisgICAgICAgIHByZXZOb2RlID0g
c2VsLmFuY2hvck5vZGU7CisgICAgICAgIHByZXZPZmZzZXQgPSBzZWwuYW5jaG9yT2Zmc2V0Owor
ICAgIH07CiAgICAgbG9nUG9zaXRpb25zKHBvc2l0aW9ucyk7CisgICAgY29sbGVjdFdvcmRCcmVh
a3ModGVzdCwgc2VhcmNoRGlyZWN0aW9uKTsKICAgICB2YWxpZGF0ZURhdGEocG9zaXRpb25zKTsK
ICAgICBsb2coIlxuIik7CiB9CkBAIC0xMzMsNiArMTkwLDggQEAgZnVuY3Rpb24gbW92ZUJ5V29y
ZEZvckV2ZXJ5UG9zaXRpb24oc2VsLAogICAgIGlmIChkaXIgPT0gInJ0bCIpCiAgICAgICAgIGRp
cmVjdGlvbiA9ICJsZWZ0IjsgICAgCiAgICAgbW92ZUJ5V29yZChzZWwsIHRlc3QsIGRpcmVjdGlv
biwgZGlyKTsgICAgCisKKyAgICBzZWwubW9kaWZ5KCJtb3ZlIiwgImZvcndhcmQiLCAibGluZUJv
dW5kYXJ5Iik7CiAgICAgLy8gQ2hlY2sgY3RybC1sZWZ0LWFycm93IHdvcmtzIGZvciBldmVyeSBw
b3NpdGlvbi4KICAgICBpZiAoZGlyID09ICJsdHIiKQogICAgICAgICBkaXJlY3Rpb24gPSAibGVm
dCI7CkBAIC0xNzYsMTAgKzIzNSwxMCBAQCBmdW5jdGlvbiBydW5TcGVjaWZpY1Rlc3QodGVzdHMp
CiAKICAgICAgICAgdmFyIHBvc2l0aW9ucyA9IFtdOwogICAgICAgICBzZWwuc2V0UG9zaXRpb24o
dGVzdHNbaV0uZmlyc3RDaGlsZCwgc3RhcnRPZmZzZXQpOwotICAgICAgICBwb3NpdGlvbnMucHVz
aCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQsIHBvaW50
OiBjYXJldENvb3JkaW5hdGVzKCkgfSk7CisgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTog
c2VsLmFuY2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCB9KTsKIAogICAgICAgICBz
ZWwubW9kaWZ5KCJtb3ZlIiwgbW92aW5nRGlyZWN0aW9uLCAiLXdlYmtpdC12aXN1YWwtd29yZCIp
OwotICAgICAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6
IHNlbC5hbmNob3JPZmZzZXQsIHBvaW50OiBjYXJldENvb3JkaW5hdGVzKCkgfSk7CisgICAgICAg
IHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmFuY2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hv
ck9mZnNldCB9KTsKIAogICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zKTsKIApAQCAtMjE1
LDE5ICsyNzQsMTA0IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCiA8L2hlYWQ+
CiA8Ym9keT4KIDxkaXYgaWQ9InRlc3RNb3ZlQnlXb3JkIj4KLTwhLS0gVGhlIG51bWJlcnMgcHV0
IGluIHRpdGxlIGFyZSBzdGFydGluZyB3b3JkIGJvdW5kYXJpZXMuCi1UaGUgbnVtYmVycyBwcmlu
dGVkIG91dCBpbiB0aGUgb3V0cHV0IGFyZSBlbmRpbmcgd29yZCBib3VuZGFyaWVzLiAtLT4KLTxk
aXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxNiAx
OXwxOSAxNiAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rp
dj4KLTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDE1IDEx
IDcgMyAxOXwxOSAzIDcgMTEgMTUgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgaGlqIG9wcSBy
c3Q8L2Rpdj4KLTxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIw
IDE1IDExIDcgMyAxOXwxOSAzIDcgMTEgMTUgMCIgY29udGVudGVkaXRhYmxlPtep16nXqSDXoNeg
16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KLTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMiAxNiAxOXwxOSAxNiAxMiA4IDQgMCIgY29udGVu
dGVkaXRhYmxlPtep16nXqSDXoNeg16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KLTxkaXYg
ZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOCAxMSAxNiAyMCAy
M3wyMyAyMCAxNiAxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh15jX
liB1dncgeHl6PC9kaXY+Ci08ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0
aXRsZT0iMCAzIDggMTIgMTYgMTkgMjN8MjMgMTkgMTYgMTIgOCAzIDAiIGNvbnRlbnRlZGl0YWJs
ZT5hYmMgZGVmINep16DXkSDXodeY15YgdXZ3IHh5ejwvZGl2PgorPCEtLSAKK1RpdGxlIHNhdmVz
IHRoZSB3b3JkIGJyZWFrcy4KK1RoZSBmb3JtYXQgb2YgdGl0bGUgaXMgInh4eHx4eHh4Ii4KKwor
VGhlIHNlcXVlbmNlIG9uIHRoZSBsZWZ0IG9mICJ8IiBpcyB3b3JkIGJvdW5kYXJpZXMgd2hlbiBt
b3ZpbmcgY2FyZXQgZnJvbSBsZWZ0IHRvIHJpZ2h0LgorVGhlIHNlcXVlbmNlIG9uIHRoZSByaWdo
dCBvZiAifCIgaXMgd29yZCBib3VuZGFyaWVzIHdoZW4gbW92aW5nIGNhcmV0IGZyb20gcmlnaHQg
dG8gbGVmdC4KKworSWYgdGhlcmUgaXMgYSBzaW5nbGUgbm9kZSBpbiB0aGUgbGluZSwgdGhlIHNl
cXVlbmNlIGFyZSBvZmZzZXRzLgorSWYgdGhlcmUgYXJlIG11bHRpcGxlIG5vZGVzIGluIHRoZSBs
aW5lLCB0aGUgc2VxdWVuY2UgaXMgYXJyYXkgb2YgW2FuY2hvcl9ub2RlX2lkLCBvZmZzZXQsIGNo
aWxkX25vZGVfaW5kZXhdLCAKK3doZXJlIGNoaWxkX25vZGVfaW5kZXggaXMgb3B0aW9uYWwsIGRl
ZmF1bHQgaXMgdGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBhbmNob3Igbm9kZS4KKy0tPgorPGRpdiBk
aXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjAgNCA4IDEyIDE2fDE5IDE2
IDEyIDggNCAwIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWogb3BxIHJzdDwvZGl2PgorCis8
IS0tIHB1cmUgRW5nbGlzaCAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSIwIDQgOCAxMiAxNnwxOSAxNiAxMiA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFi
YyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5
X3dvcmQiIHRpdGxlPSIxOSAzIDcgMTEgMTUgMHwwIDE1IDExIDcgMyIgY29udGVudGVkaXRhYmxl
PmFiYyBkZWYgaGlqIG9wcSByc3Q8L2Rpdj4KKworPCEtLSBwdXJlIEhlYnJldyAtLT4KKzxkaXYg
ZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDE1IDExIDcgM3wxOSAz
IDcgMTEgMTUgMCIgY29udGVudGVkaXRhYmxlPtep16nXqSDXoNeg16Ag15HXkdeRINeS15LXkiDX
p9en16c8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIxOSAxNiAxMiA4IDQgMHwwIDQgOCAxMiAxNiIgY29udGVudGVkaXRhYmxlPtep16nXqSDXoNeg
16Ag15HXkdeRINeS15LXkiDXp9en16c8L2Rpdj4KKworPCEtLSBiaWRpIHRleHQgLS0+Cis8IS0t
IEVuZ2xpc2ggSGVicmV3IEVuZ2xpc2ggLS0+Cis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92
ZV9ieV93b3JkIiB0aXRsZT0iMCA0IDggMTIgMTkgMTUgMjQgMjggMzJ8MzUgMzIgMjggMjQgMTUg
MTkgMTIgOCA0IDAiIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIGhpaiDXkNeQ15Ag15HXkdeRINem
16bXpiBvcHIgdXZ3IHh5ejwvZGl2PgorPGRpdiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCIgdGl0bGU9IjM1IDI3IDMxIDI0IDIwIDE2IDEyIDMgNyAwfDAgNyAzIDEyIDE2IDIwIDI0
IDMxIDI3IiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiBoaWog15DXkNeQINeR15HXkSDXptem16Yg
b3ByIHV2dyB4eXo8L2Rpdj4KKworPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCIgdGl0bGU9IjAgNCA4IDExIDE2IDIwfDIzIDIwIDE2IDExIDggNCAwIiBjb250ZW50ZWRpdGFi
bGU+YWJjIGRlZiDXqdeg15Eg16HXmNeWIHV2dyB4eXo8L2Rpdj4KKzxkaXYgZGlyPXJ0bCBjbGFz
cz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIyMyAxOSAxNiAxMiA4IDMgMHwwIDMgOCAxMiAx
NiAxOSIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYg16nXoNeRINeh15jXliB1dncgeHl6PC9kaXY+
CisKKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgOHwx
MSA4IDQgMCIgY29udGVudGVkaXRhYmxlPmFhYSDXkNeQ15AgYmJiPC9kaXY+Cis8ZGl2IGRpcj1y
dGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMTEgOCA0IDB8MCA0IDggMTEiIGNv
bnRlbnRlZGl0YWJsZT5hYWEg15DXkNeQIGJiYjwvZGl2PgorCis8IS0tIEhlYnJldyBFbmdsaXNo
IEhlYnJldyAtLT4KKzxkaXYgZGlyPWx0ciBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxl
PSIwIDcgMyAxMiAxNiAyMCAyNCAzMSAyN3wzNSAyNyAzMSAyNCAyMCAxNiAxMiAzIDcgMCIgY29u
dGVudGVkaXRhYmxlPteQ15DXkCDXkdeR15Eg16bXptemIGFhYSBiYmIgY2NjINeT15PXkyDXotei
16Ig16TXpNekPC9kaXY+Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0
aXRsZT0iMzUgMzIgMjggMjQgMTUgMTkgMTIgOCA0IDB8MCA0IDggMTIgMTkgMTUgMjQgMjggMzIi
IGNvbnRlbnRlZGl0YWJsZT7XkNeQ15Ag15HXkdeRINem16bXpiBhYWEgYmJiIGNjYyDXk9eT15Mg
16LXoteiINek16TXpDwvZGl2PgorCis8ZGl2IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93
b3JkIiB0aXRsZT0iMCAzIDggMTIgMTYgMTl8MjMgMTkgMTYgMTIgOCAzIDAiIGNvbnRlbnRlZGl0
YWJsZT7XkNeQ15Ag15HXkdeRIGFhYSBiYmIg16bXptemINeT15PXkzwvZGl2PgorPGRpdiBkaXI9
cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IjIzIDIwIDE2IDExIDggNCAwfDAg
NCA4IDExIDE2IDIwIiBjb250ZW50ZWRpdGFibGU+15DXkNeQINeR15HXkSBhYWEgYmJiINem16bX
piDXk9eT15M8L2Rpdj4KKwogPGRpdiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIg
dGl0bGU9IjAgNCA4IDExfDExIDggNCAwIiBjb250ZW50ZWRpdGFibGU+16nXoNeRIGFiYyDXodeY
15Y8L2Rpdj4KLTxkaXYgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIw
IDQgOCAxMXwxMSA4IDQgMCIgY29udGVudGVkaXRhYmxlPtep16DXkSBhYmMg16HXmNeWPC9kaXY+
Cis8ZGl2IGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iMTEgOCA0IDB8
MCA0IDgiIGNvbnRlbnRlZGl0YWJsZT7Xqdeg15EgYWJjINeh15jXljwvZGl2PgorCis8IS0tIG11
bHRpcGxlIHNwYWNlcyBiZXR3ZWVuIHdvcmQuIAorICAgICBGQUlMRUQ6IHdvcmQgYnJlYWsgYmV0
d2VlbiAiZGVmIiBhbmQgImhpaiIgaXMgdW5yZWFjaGFibGUuCistLT4KKzxkaXYgZGlyPWx0ciBj
bGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSIwIDQgMTEgMTV8MTggMTUgMTEgNCAwIiBj
b250ZW50ZWRpdGFibGU+YWJjIGRlZiAgICBoaWogb3BxPC9kaXY+CisKKzwhLS0gSW5saW5lIGVs
ZW1lbnQgLS0+Cis8ZGl2IGRpcj1sdHIgaWQ9ImRpdl8xIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dv
cmQiIHRpdGxlPSJbZGl2XzEsIDBdW2Rpdl8xLCAzXXxbc3Bhbl8xLCAyXVtkaXZfMSwgM11bZGl2
XzEsMF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4gaWQ9InNwYW5fMSI+15HXkTwvc3Bh
bj48L2Rpdj4KKzxkaXYgZGlyPXJ0bCBpZD0iZGl2XzIiIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29y
ZCIgdGl0bGU9IltzcGFuXzIsIDJdW2Rpdl8yLCA0XVtkaXZfMiwgMF18W2Rpdl8yLCAwXVtkaXZf
MiwgNF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeQ15AgPHNwYW4gaWQ9InNwYW5fMiI+15HXkTwvc3Bh
bj48L2Rpdj4KKworPCEtLSBwdXJlIEVuZ2xpc2ggaW4gaW5saW5lIGVsZW1lbnQgd2l0aCBzYW1l
IG9yIGRpZmZlcmVudCBkaXJlY3Rpb25hbGl0eSBmcm9tIGl0cyBwYXJlbnQgLS0+Cis8ZGl2IGRp
cj1sdHIgaWQ9ImRpdl8zIiBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzMs
IDBdW2Rpdl8zLCA0XVtkaXZfMywgOF1bc3Bhbl8zLCA0XVtkaXZfMywgMSwgM11bZGl2XzMsIDUs
IDNdfFtkaXZfMywgOCwgM11bZGl2XzMsIDUsIDNdW2Rpdl8zLCAxLCAzXVtzcGFuXzMsIDRdW2Rp
dl8zLCA4XVtkaXZfMywgNF1bZGl2XzMsIDBdIiBjb250ZW50ZWRpdGFibGU+YWJjIGRlZiA8c3Bh
biBpZD0ic3Bhbl8zIj5oaWogb3BxPC9zcGFuPiByc3QgdXZ3PC9kaXY+CisKKzwhLS0gRkFJTEVE
IC0tPgorPGRpdiBkaXI9cnRsIGlkPSJkaXZfNCIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0
aXRsZT0iW2Rpdl80LCA4LCAzXVtkaXZfNCwgMywgMV1bZGl2XzQsIDcsIDFdW3NwYW5fNCwgMywg
MV1bZGl2XzQsIDAsIDNdW2Rpdl80LCA0LCAzXVtkaXZfNCwgMCwgMV18W2Rpdl80LCAwLCAxXVtk
aXZfNCwgNCwgM11bZGl2XzQsIDAsIDNdW3NwYW5fNCwgMywgMV1bZGl2XzQsIDcsIDFdW2Rpdl80
LCAzLCAxXSIgY29udGVudGVkaXRhYmxlPmFiYyBkZWYgPHNwYW4gaWQ9InNwYW5fNCI+aGlqIG9w
cTwvc3Bhbj4gcnN0IHV2dzwvZGl2PgorCis8IS0tIEZBSUxFRCAtLT4KKzxkaXYgaWQ9ImRpdl81
IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfNSwgOCwgM11b
ZGl2XzUsIDMsIDFdW2Rpdl81LCA3LCAxXVtzcGFuXzUsIDMsIDFdW2Rpdl81LCAwLCAzXVtkaXZf
NSwgNCwgM11bZGl2XzUsIDAsIDFdfFtkaXZfNSwgMCwgMV1bZGl2XzUsIDQsIDNdW2Rpdl81LCAw
LCAzXVtzcGFuXzUsIDMsIDFdW2Rpdl81LCA3LCAxXVtkaXZfNSwgMywgMV0iY29udGVudGVkaXRh
YmxlPmFiYyBkZWYgPHNwYW4gZGlyPWx0ciBpZD0ic3Bhbl81Ij5oaWogb3BxPC9zcGFuPiByc3Qg
dXZ3PC9kaXY+CisKKzxkaXYgaWQ9ImRpdl82IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCIgdGl0bGU9IltkaXZfNiwgMCwgMV1bZGl2XzYsIDQsIDFdW2Rpdl82LCA4LCAxXVtzcGFu
XzYsIDQsIDFdW2Rpdl82LCAxLCAzXVtkaXZfNiwgNSwgM118W2Rpdl82LCA4LCAzXVtkaXZfNiwg
NSwgM11bZGl2XzYsIDEsIDNdW3NwYW5fNiwgNCwgMV1bZGl2XzYsIDgsIDFdW2Rpdl82LCA0LCAx
XVtkaXZfNiwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT5hYmMgZGVmIDxzcGFuIGRpcj1ydGwgaWQ9
InNwYW5fNiI+aGlqIG9wcTwvc3Bhbj4gcnN0IHV2dzwvZGl2PgorCis8IS0tIHB1cmUgSGVicmV3
IGluIGlubGluZSBlbGVtZW50IHdpdGggc2FtZSBvciBkaWZmZXJlbnQgZGlyZWN0aW9uYWxpdHkg
ZnJvbSBpdHMgcGFyZW50IC0tPgorCis8ZGl2IGlkPSJkaXZfNyIgZGlyPXJ0bCBjbGFzcz0idGVz
dF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzcsIDcsIDNdW2Rpdl83LCA0LCAzXVtzcGFuXzcs
IDQsIDFdW2Rpdl83LCA4LCAxXVtkaXZfNywgNCwgMV1bZGl2XzcsIDAsIDFdfFtkaXZfNywgMCwg
MV1bZGl2XzcsIDQsIDFdW2Rpdl83LCA4LCAxXVtzcGFuXzcsIDQsIDFdW2Rpdl83LCA0LCAzXSIg
Y29udGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gZGlyPWx0ciBpZD0ic3Bhbl83Ij7X
lNeZ15cg15XXpNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2Xzgi
IGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl84LCAwLCAxXVtk
aXZfOCwgMywgM11bc3Bhbl84LCAzLCAxXVtkaXZfOCwgNywgMV1bZGl2XzgsIDMsIDFdfFtkaXZf
OCwgNywgM11bZGl2XzgsIDMsIDFdW2Rpdl84LCA3LCAxXVtzcGFuXzgsIDMsIDFdW2Rpdl84LCAz
LCAzXVtkaXZfOCwgMCwgMV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGRp
cj1ydGwgaWQ9InNwYW5fOCI+15TXmdeXINeV16TXpzwvc3Bhbj7XldeV16kg15vXmNeWPC9kaXY+
CisKKzxkaXYgaWQ9ImRpdl85IiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0
bGU9IltkaXZfOSwgNywgM11bZGl2XzksIDQsIDNdW3NwYW5fOSwgNCwgMV1bZGl2XzksIDgsIDFd
W2Rpdl85LCA0LCAxXVtkaXZfOSwgMCwgMV18W2Rpdl85LCAwLCAxXVtkaXZfOSwgNCwgMV1bZGl2
XzksIDgsIDFdW3NwYW5fOSwgNCwgMV1bZGl2XzksIDQsIDNdIiBjb250ZW50ZWRpdGFibGU+15DX
kdeTINeT16LXpCA8c3BhbiBpZD0ic3Bhbl85Ij7XlNeZ15cg15XXpNenPC9zcGFuPteV15XXqSDX
m9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2XzEwIiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVf
Ynlfd29yZCIgdGl0bGU9IltkaXZfMTAsIDAsIDFdW2Rpdl8xMCwgMywgM11bc3Bhbl8xMCwgMywg
MV1bZGl2XzEwLCA3LCAxXVtkaXZfMTAsIDMsIDFdfFtkaXZfMTAsIDcsIDNdW2Rpdl8xMCwgMywg
MV1bZGl2XzEwLCA3LCAxXVtzcGFuXzEwLCAzLCAxXVtkaXZfMTAsIDMsIDNdW2Rpdl8xMCwgMCwg
MV0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGlkPSJzcGFuXzEwIj7XlNeZ
15cg15XXpNenPC9zcGFuPteV15XXqSDXm9eY15Y8L2Rpdj4KKworPCEtLSBiaWRpIGluIGlubGlu
ZSBlbGVtZW50IHdpdGggc2FtZSBvciBkaWZmZXJlbnQgZGlyZWN0aW9uYWxpdHkgZnJvbSBpdHMg
cGFyZW50IC0tPgorPGRpdiBpZD0iZGl2XzExIiBkaXI9cnRsIGNsYXNzPSJ0ZXN0X21vdmVfYnlf
d29yZCIgdGl0bGU9IltkaXZfMTEsIDcsIDNdW2Rpdl8xMSwgNCwgM11bc3Bhbl8xMSwgMywgMV1b
ZGl2XzExLCA4LCAxXVtkaXZfMTEsIDQsIDFdW2Rpdl8xMSwgMCwgMV18W2Rpdl8xMSwgMCwgMV1b
ZGl2XzExLCA0LCAxXVtkaXZfMTEsIDgsIDFdW3NwYW5fMTEsIDMsIDFdW2Rpdl8xMSwgNCwgM10i
IGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGRpcj1sdHIgaWQ9InNwYW5fMTEi
PmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8IS0tIEZBSUwgLS0+Cis8ZGl2
IGlkPSJkaXZfMTIiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rp
dl8xMiwgMCwgMV1bZGl2XzEyLCAzLCAzXVtkaXZfMTIsIDgsIDFdW3NwYW5fMTIsIDQsIDFdW2Rp
dl8xMiwgNywgMV1bZGl2XzEyLCAzLCAxXXxbZGl2XzEyLCA3LCAzXVtkaXZfMTIsIDMsIDFdW2Rp
dl8xMiwgNywgMV1bc3Bhbl8xMiwgNCwgMV1bZGl2XzEyLCA4LCAxXVtkaXZfMTIsIDMsIDNdW2Rp
dl8xMiwgMF0iIGNvbnRlbnRlZGl0YWJsZT7XkNeR15Mg15PXotekIDxzcGFuIGRpcj1ydGwgaWQ9
InNwYW5fMTIiPmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwvZGl2PgorCis8ZGl2IGlkPSJk
aXZfMTMiIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xMywg
NywgM11bZGl2XzEzLCA0LCAzXVtzcGFuXzEzLCAzLCAxXVtkaXZfMTMsIDgsIDFdW2Rpdl8xMywg
NCwgMV1bZGl2XzEzLCAwLCAxXXxbZGl2XzEzLCAwLCAxXVtkaXZfMTMsIDQsIDFdW2Rpdl8xMywg
OCwgMV1bc3Bhbl8xMywgMywgMV1bZGl2XzEzLCA0LCAzXSIgY29udGVudGVkaXRhYmxlPteQ15HX
kyDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTMiPmFiYyBkZWY8L3NwYW4+15XXldepINeb15jXljwv
ZGl2PgorCis8ZGl2IGlkPSJkaXZfMTQiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3Jk
IiB0aXRsZT0iW2Rpdl8xNCwgMCwgMV1bZGl2XzE0LCAzLCAxXVtkaXZfMTQsIDgsIDFdW3NwYW5f
MTQsIDQsIDFdW2Rpdl8xNCwgMywgM118W2Rpdl8xNCwgNywgM11bZGl2XzE0LCAzLCAzXVtzcGFu
XzE0LCA0LCAxXVtkaXZfMTQsIDgsIDFdW2Rpdl8xNCwgNCwgMV1bZGl2XzE0LCAwLCAxXSIgY29u
dGVudGVkaXRhYmxlPteQ15HXkyDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTQiPmFiYyBkZWY8L3Nw
YW4+15XXldepINeb15jXljwvZGl2PgorCis8IS0tIEZBSUxFRCAtLT4KKzxkaXYgaWQ9ImRpdl8x
NSIgZGlyPXJ0bCBjbGFzcz0idGVzdF9tb3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE1LCAxMSwg
M11bZGl2XzE1LCA4LCAzXVtkaXZfMTUsIDQsIDNdW3NwYW5fMTUsIDMsIDFdW3NwYW5fMTUsIDQs
IDFdW2Rpdl8xNSwgMTIsIDFdW2Rpdl8xNSwgOCwgMV1bZGl2XzE1LCA0LCAxXVtkaXZfMTUsIDAs
IDFdfFtkaXZfMTUsIDAsIDFdW2Rpdl8xNSwgNCwgMV1bZGl2XzE1LCA4LCAxXVtkaXZfMTUsIDEy
LCAxXVtzcGFuXzE1LCA0LCAxXVtzcGFuXzE1LCAzLCAxXVtkaXZfMTUsIDQsIDNdW2Rpdl8xNSwg
OCwgM10iCitjb250ZW50ZWRpdGFibGU+15DXkdeTIG9wcSDXk9ei16QgPHNwYW4gZGlyPWx0ciBp
ZD0ic3Bhbl8xNSI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY15Y8L2Rpdj4K
KworPCEtLSBGQUlMRUQsIGFuZCB3cm9uZyBwcmludGluZyByZXN1bHQgLS0+Cis8ZGl2IGlkPSJk
aXZfMTYiIGRpcj1sdHIgY2xhc3M9InRlc3RfbW92ZV9ieV93b3JkIiB0aXRsZT0iW2Rpdl8xNiwg
MCwgMV1bZGl2XzE2LCA0LCAxXVtkaXZfMTYsIDgsIDFdW3NwYW5fMTYsIDgsIDFdW3NwYW5fMTYs
IDcsIDFdW2Rpdl8xNiwgMTIsIDFdW2Rpdl8xNiwgMTEsIDFdW2Rpdl8xNiwgNCwgM11bZGl2XzE2
LCA4LCAzXVtkaXZfMTYsIDExLCAzXXxbZGl2XzE2LCAxMSwgM11bZGl2XzE2LCA4LCAzXVtkaXZf
MTYsIDQsIDNdW2Rpdl8xNiwgMTEsIDFdW2Rpdl8xNiwgMTIsIDFdW3NwYW5fMTYsIDcsIDFdW3Nw
YW5fMTYsIDgsIDFdW2Rpdl8xNiwgOCwgMV1bZGl2XzE2LCA0LCAxXVtkaXZfMTYsIDAsIDFdIiBj
b250ZW50ZWRpdGFibGU+15DXkdeTIG9wcSDXk9ei16QgPHNwYW4gZGlyPXJ0bCBpZD0ic3Bhbl8x
NiI+YWJjINeQ15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY15Y8L2Rpdj4KKworPCEtLSBG
QUlMRUQgLS0+Cis8ZGl2IGlkPSJkaXZfMTciIGRpcj1ydGwgY2xhc3M9InRlc3RfbW92ZV9ieV93
b3JkIiB0aXRsZT0iW2Rpdl8xNywgMTEsIDNdW2Rpdl8xNywgOCwgM11bZGl2XzE3LCA0LCAzXVtz
cGFuXzE3LCA4LCAxXVtzcGFuXzE3LCA0LCAxXVtkaXZfMTcsIDEyLCAxXVtkaXZfMTcsIDgsIDFd
W2Rpdl8xNywgNCwgMV1bZGl2XzE3LCAwLCAxXXxbZGl2XzE3LCAwLCAxXVtkaXZfMTcsIDQsIDFd
W2Rpdl8xNywgOCwgMV1bZGl2XzE3LCAxMiwgMV1bc3Bhbl8xNywgNCwgMV1bc3Bhbl8xNywgOCwg
MV1bZGl2XzE3LCA0LCAzXVtkaXZfMTcsIDgsIDNdIiBjb250ZW50ZWRpdGFibGU+15DXkdeTIG9w
cSDXk9ei16QgPHNwYW4gaWQ9InNwYW5fMTciPmFiYyDXkNeQ15AgZGVmPC9zcGFuPteV15XXqSBy
c3Qg15vXmNeWPC9kaXY+CisKKzxkaXYgaWQ9ImRpdl8xOCIgZGlyPWx0ciBjbGFzcz0idGVzdF9t
b3ZlX2J5X3dvcmQiIHRpdGxlPSJbZGl2XzE4LCAwLCAxXVtkaXZfMTgsIDQsIDFdW2Rpdl8xOCwg
OCwgMV1bZGl2XzE4LCAxMiwgMV1bc3Bhbl8xOCwgNCwgMV1bc3Bhbl8xOCwgOCwgMV1bZGl2XzE4
LCA0LCAzXVtkaXZfMTgsIDgsIDNdW2Rpdl8xOCwgMTEsIDNdfFtkaXZfMTgsIDExLCAzXVtkaXZf
MTgsIDgsIDNdW2Rpdl8xOCwgNCwgM11bc3Bhbl8xOCwgOCwgMV1bc3Bhbl8xOCwgNCwgMV1bZGl2
XzE4LCAxMiwgMV1bZGl2XzE4LCA4LCAxXVtkaXZfMTgsIDQsIDFdW2Rpdl8xOCwgMCwgMV0iIGNv
bnRlbnRlZGl0YWJsZT7XkNeR15Mgb3BxINeT16LXpCA8c3BhbiBpZD0ic3Bhbl8xOCI+YWJjINeQ
15DXkCBkZWY8L3NwYW4+15XXldepIHJzdCDXm9eY15Y8L2Rpdj4KKworPGRpdiBpZD0iZGl2XzE5
IiBkaXI9bHRyIGNsYXNzPSJ0ZXN0X21vdmVfYnlfd29yZCIgdGl0bGU9IltkaXZfMTksIDAsIDFd
W2Rpdl8xOSwgNCwgMV1bc3Bhbl8xOSwgNCwgMV1bc3Bhbl8xOSwgNywgMV18W2Rpdl8xOSwgMywg
M11bc3Bhbl8xOSwgNywgMV1bc3Bhbl8xOSwgNCwgMV1bZGl2XzE5LCA0LCAxXVtkaXZfMTksIDAs
IDFdIiBjb250ZW50ZWRpdGFibGU+YWFhIDxzcGFuIGlkPSJzcGFuXzE5Ij5iYmIg15DXkNeQIDwv
c3Bhbj7XldeV16k8L2Rpdj4KIAogPCEtLSBUaGUgY29udGVudCBpbiB0aXRsZSBtZWFucyAic3Rh
cnRPZmZzZXRJbkN1cnJlbnROb2RlIG1vdmluZ0RpcmVjdGlvbkJ5V29yZCBlbmRpbmdOb2RlIGVu
ZGluZ09mZnNldEluRW5kaW5nTm9kZSIgLS0+Ci08ZGl2IGlkPSJkaXZfMSIgY29udGVudGVkaXRh
YmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8xIiBjbGFzcz0ic3BlY2lmaWNfdGVzdCIgdGl0bGU9
IjEgbGVmdCBkaXZfMSAwIj7XkdeRPC9zcGFuPjwvZGl2PgorPGRpdiBpZD0iZGl2XzEwMCIgY29u
dGVudGVkaXRhYmxlPteQ15DXkCA8c3BhbiBpZD0ic3Bhbl8xMDAiIGNsYXNzPSJzcGVjaWZpY190
ZXN0IiB0aXRsZT0iMSBsZWZ0IGRpdl8xMDAgMCI+15HXkTwvc3Bhbj48L2Rpdj4KIDwvZGl2Pgog
CiA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4K
</data>
<flag name="review"
          id="83172"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>90421</attachid>
            <date>2011-04-20 15:01:44 -0700</date>
            <delta_ts>2011-04-20 15:39:29 -0700</delta_ts>
            <desc>difference from last patch (attachment 89674 which was committed in r83996) just for reference.</desc>
            <filename>diff</filename>
            <type>text/plain</type>
            <size>3869</size>
            <attacher name="Xiaomei Ji">xji</attacher>
            
              <data encoding="base64">M2MzCjwgLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODM4MDApCi0tLQo+
IC0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg0NDExKQo2YzYKPCArMjAx
MS0wNC0xMyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+Ci0tLQo+ICsyMDExLTA0LTIw
ICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KOGM4CjwgKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCi0tLQo+ICsgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3
YS4KNjhjNjgKPCAgMjAxMS0wNC0xMyAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+
Ci0tLQo+ICAyMDExLTA0LTIwICBEaXJrIFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CjcwYzcw
CjwgICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgotLS0KPiAgICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCjczYzczCjwgLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvdmlzaWJsZV91bml0cy5jcHAJKHJldmlzaW9uIDgzNDgzKQotLS0KPiAtLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAkocmV2aXNpb24gODQ0MTEpCjIyNGMyMjQK
PCAtLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MzgwMCkKLS0tCj4gLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODQ0MTEpCjIyN2MyMjcKPCArMjAxMS0wNC0x
MyAgWGlhb21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+Ci0tLQo+ICsyMDExLTA0LTIwICBYaWFv
bWVpIEppICA8eGppQGNocm9taXVtLm9yZz4KMjI5YzIyOQo8ICsgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgotLS0KPiArICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2Eu
CjIzN2MyMzcKPCAgMjAxMS0wNC0xMyAgSmlhbiBMaSAgPGppYW5saUBjaHJvbWl1bS5vcmc+Ci0t
LQo+ICAyMDExLTA0LTIwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KMjM5YzIz
OQo8ICAgICAgICAgIFVucmV2aWV3ZWQsIHJlYmFzZWxpbmUgNCB0ZXN0cyBhZGRlZCBhcyByODM3
ODcuCi0tLQo+ICAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCjI0MmMyNDIKPCAt
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9zZWxlY3Rpb24vbW92ZS1ieS13b3JkLXZpc3VhbGx5LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gODM0ODMpCi0tLQo+IC0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
NDQxMSkKNDU5YzQ1OQo8IC0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5
LXdvcmQtdmlzdWFsbHkuaHRtbAkocmV2aXNpb24gODM0ODMpCi0tLQo+IC0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3NlbGVjdGlvbi9tb3ZlLWJ5LXdvcmQtdmlzdWFsbHkuaHRtbAkocmV2aXNpb24g
ODQ0MTEpCjQ2MWM0NjEsNDc3CjwgQEAgLTcyLDM2ICs3MiwxMDAgQEAgZnVuY3Rpb24gbG9nUG9z
aXRpb25zKHBvc2l0aW9ucykKLS0tCj4gQEAgLTMyLDE1ICszMiw2IEBAIGZ1bmN0aW9uIGZsdXNo
TG9nKCkKPiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZXMuam9pbigiIikpKTsKPiAgfQo+ICAK
PiAtZnVuY3Rpb24gY2FyZXRDb29yZGluYXRlcygpCj4gLXsKPiAtICAgIGlmICghd2luZG93LnRl
eHRJbnB1dENvbnRyb2xsZXIpCj4gLSAgICAgICAgcmV0dXJuIHsgeDogMCwgeSA6MCB9Owo+IC0g
ICAgdmFyIGNhcmV0UmVjdCA9IHRleHRJbnB1dENvbnRyb2xsZXIuZmlyc3RSZWN0Rm9yQ2hhcmFj
dGVyUmFuZ2UodGV4dElucHV0Q29udHJvbGxlci5zZWxlY3RlZFJhbmdlKClbMF0sIDApOwo+IC0g
ICAgcmV0dXJuIHsgeDogY2FyZXRSZWN0WzBdLCB5OiBjYXJldFJlY3RbMV0gfTsKPiAtfQo+IC0K
PiAtCj4gIGZ1bmN0aW9uIGZvbGQoc3RyaW5nKQo+ICB7Cj4gICAgICB2YXIgcmVzdWx0ID0gIiI7
Cj4gQEAgLTcyLDM2ICs2MywxMDAgQEAgZnVuY3Rpb24gbG9nUG9zaXRpb25zKHBvc2l0aW9ucykK
NTc3YzU5Mwo8IEBAIC0xMDksMTggKzE3MywyMCBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkKHNlbCwg
dGVzdCwgc2VhcmNoRGlyCi0tLQo+IEBAIC0xMDksMTggKzE2NCwyMCBAQCBmdW5jdGlvbiBtb3Zl
QnlXb3JkKHNlbCwgdGVzdCwgc2VhcmNoRGlyCjU4N2M2MDMKPCArICAgIHBvc2l0aW9ucy5wdXNo
KHsgbm9kZTogc2VsLmFuY2hvck5vZGUsIG9mZnNldDogc2VsLmFuY2hvck9mZnNldCwgcG9pbnQ6
IGNhcmV0Q29vcmRpbmF0ZXMoKSB9KTsKLS0tCj4gKyAgICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6
IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQgfSk7CjU5MSw1OTNjNjA3
CjwgKyAgICAgICAgaWYgKHByZXZOb2RlID09IHNlbC5hbmNob3JOb2RlICYmIHByZXZPZmZzZXQg
PT0gc2VsLmFuY2hvck9mZnNldCkKPCArICAgICAgICAgICAgYnJlYWs7CjwgICAgICAgICAgcG9z
aXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zm
c2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRlcygpIH0pOwotLS0KPiAtICAgICAgICBwb3NpdGlv
bnMucHVzaCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNob3JPZmZzZXQs
IHBvaW50OiBjYXJldENvb3JkaW5hdGVzKCkgfSk7CjU5N2E2MTIsNjE0Cj4gKyAgICAgICAgaWYg
KHByZXZOb2RlID09IHNlbC5hbmNob3JOb2RlICYmIHByZXZPZmZzZXQgPT0gc2VsLmFuY2hvck9m
ZnNldCkKPiArICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgcG9zaXRpb25zLnB1c2goeyBu
b2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0IH0pOwo2MDZjNjIz
CjwgQEAgLTEzMyw2ICsxOTksOCBAQCBmdW5jdGlvbiBtb3ZlQnlXb3JkRm9yRXZlcnlQb3NpdGlv
bihzZWwsCi0tLQo+IEBAIC0xMzMsNiArMTkwLDggQEAgZnVuY3Rpb24gbW92ZUJ5V29yZEZvckV2
ZXJ5UG9zaXRpb24oc2VsLAo2MTVjNjMyLDY0NQo8IEBAIC0yMTUsMTkgKzI4MywxMDQgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLS0tCj4gQEAgLTE3NiwxMCArMjM1LDEwIEBA
IGZ1bmN0aW9uIHJ1blNwZWNpZmljVGVzdCh0ZXN0cykKPiAgCj4gICAgICAgICAgdmFyIHBvc2l0
aW9ucyA9IFtdOwo+ICAgICAgICAgIHNlbC5zZXRQb3NpdGlvbih0ZXN0c1tpXS5maXJzdENoaWxk
LCBzdGFydE9mZnNldCk7Cj4gLSAgICAgICAgcG9zaXRpb25zLnB1c2goeyBub2RlOiBzZWwuYW5j
aG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0LCBwb2ludDogY2FyZXRDb29yZGluYXRl
cygpIH0pOwo+ICsgICAgICAgIHBvc2l0aW9ucy5wdXNoKHsgbm9kZTogc2VsLmFuY2hvck5vZGUs
IG9mZnNldDogc2VsLmFuY2hvck9mZnNldCB9KTsKPiAgCj4gICAgICAgICAgc2VsLm1vZGlmeSgi
bW92ZSIsIG1vdmluZ0RpcmVjdGlvbiwgIi13ZWJraXQtdmlzdWFsLXdvcmQiKTsKPiAtICAgICAg
ICBwb3NpdGlvbnMucHVzaCh7IG5vZGU6IHNlbC5hbmNob3JOb2RlLCBvZmZzZXQ6IHNlbC5hbmNo
b3JPZmZzZXQsIHBvaW50OiBjYXJldENvb3JkaW5hdGVzKCkgfSk7Cj4gKyAgICAgICAgcG9zaXRp
b25zLnB1c2goeyBub2RlOiBzZWwuYW5jaG9yTm9kZSwgb2Zmc2V0OiBzZWwuYW5jaG9yT2Zmc2V0
IH0pOwo+ICAKPiAgICAgICAgICBsb2dQb3NpdGlvbnMocG9zaXRpb25zKTsKPiAgCj4gQEAgLTIx
NSwxOSArMjc0LDEwNCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>