<?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>14550</bug_id>
          <alias>CVE-2011-0114</alias>
          <creation_ts>2007-07-07 06:37:15 -0700</creation_ts>
          <short_desc>Non-layout style change does not update nested first-letter</short_desc>
          <delta_ts>2011-03-03 15:46:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Yuzo Fujishima">yuzo</assigned_to>
          <cc>cevans</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>hyatt</cc>
    
    <cc>inferno</cc>
    
    <cc>jschuh</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>vdanen</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>5298</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2007-07-07 06:37:15 -0700</bug_when>
    <thetext>Updating of first letter style is based on needsLayout(). As a result, style changes that do no require a layout do not update the style of a first letter nested in an inline. See the attached test case. Note that &lt;http://trac.webkit.org/projects/webkit/changeset/21742&gt; fixed the non-nested case).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>5292</commentid>
    <comment_count>1</comment_count>
      <attachid>15430</attachid>
    <who name="">mitz</who>
    <bug_when>2007-07-07 06:37:59 -0700</bug_when>
    <thetext>Created attachment 15430
Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125795</commentid>
    <comment_count>2</comment_count>
      <attachid>31268</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-14 11:54:54 -0700</bug_when>
    <thetext>Created attachment 31268
Possible patch

Possible patch attached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125852</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-06-14 17:30:36 -0700</bug_when>
    <thetext>Notes from irc conversation:

dhyatt: setStyle is top down
5:22pm dhyatt: so you get to the outermost block with first-letter on it
5:22pm dhyatt: and update its style to be green
5:22pm dhyatt: so then the cached first letter style is also green
5:22pm dhyatt: or would be
5:22pm dhyatt: it just inherits
5:22pm dhyatt: but the issue is when you make a pseudo style
5:22pm dhyatt: you pass in a parent
5:23pm dhyatt: and you are passing in the first line style of the &lt;span&gt;
5:23pm dhyatt: and he has not yet been properly updated
5:23pm smfr: ah
5:23pm dhyatt: so his color is black
5:23pm dhyatt: so the first letter style inherits from that
5:23pm dhyatt: later on the &lt;span&gt; is going to update
5:23pm dhyatt: to green
5:23pm dhyatt: but because he;&apos;s a RenderInline
5:23pm dhyatt: first letter isn&apos;t updated
dhyatt suspects you may need some kind of updateFirstLetter that runs in both cases
5:24pm dhyatt: for both RenderInline and RenderBlock
5:24pm dhyatt: if you had that you could probably simplify a lot
5:24pm smfr: so this bug is more involved than I thought
5:24pm dhyatt: since you wouldn&apos;t have to drill if you eventually found the right object
5:24pm dhyatt: it&apos;s very involved yes

dhyatt: smfr: here are the issues as i see them....
5:26pm dhyatt: i.e., my laundry liust of first-letter problems
5:26pm dhyatt: list
5:26pm dhyatt: (1) we do a full-blown Detach when first-letter rules change.  that sucks.
5:26pm dhyatt: but is not the end of the world
5:26pm dhyatt: in fact this basically means that first-letter being updated only needs to happen because of inheritance
5:26pm dhyatt: and not for any other reason
5:27pm dhyatt: and since first-letter objects have to be the child of either a RenderInline or RenderBlock
5:27pm dhyatt: i think you could just rewrite updateFirstLetter
5:27pm dhyatt: to be a common function to both
5:27pm dhyatt: like before/after stuff
5:27pm smfr: yep
5:27pm dhyatt: then finding it for updating would be really simple
5:28pm dhyatt: but really i do hate that we do a detach when first-letter styles change
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>126006</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-15 12:43:20 -0700</bug_when>
    <thetext>See also: bug 15602.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288136</commentid>
    <comment_count>5</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-01 02:53:43 -0700</bug_when>
    <thetext>I&apos;ve uploaded a patch to https://bugs.webkit.org/show_bug.cgi?id=45620 that also fixes this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288592</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-01 17:16:04 -0700</bug_when>
    <thetext>Moving the discussion here from 45620.

I think you could subclass styleDidChange for the RenderTextFragment and that gives you easy access to the first letter container to update its style.  You can just get right to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289507</commentid>
    <comment_count>7</comment_count>
      <attachid>69764</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-05 02:20:49 -0700</bug_when>
    <thetext>Created attachment 69764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289509</commentid>
    <comment_count>8</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-05 02:29:36 -0700</bug_when>
    <thetext>Dan, Dave,

Thank you for your reviews and comments. Can you take another look?

Note:

An alternative approach, &quot;Update first letter after style has been recalculated for descendants&quot;,
properly handles:

   &lt;p id=&quot;target&quot;&gt;&lt;span&gt;first letter stays black&lt;/span&gt;&lt;/p&gt;
   ... document.getelementbyid(&apos;target&apos;).style.color = &apos;green&apos;;

but not:

    &lt;p&gt;&lt;span id=&quot;target&quot;&gt;first letter stays black&lt;/span&gt;&lt;/p&gt; 
   ... document.getelementbyid(&apos;target&apos;).style.color = &apos;green&apos;;
   (Stale cached pseudo style is used in this case.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290700</commentid>
    <comment_count>9</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-06 17:06:03 -0700</bug_when>
    <thetext>Ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291760</commentid>
    <comment_count>10</comment_count>
      <attachid>69764</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-08 10:56:48 -0700</bug_when>
    <thetext>Comment on attachment 69764
Patch

My one concern here is if updateFirstLetter() causes the RenderTextFragment to be destroyed (e.g., if the display type of first-letter changes from inline to block).  I&apos;d like to see a test for that so that we know we won&apos;t crash with this patch in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292289</commentid>
    <comment_count>11</comment_count>
      <attachid>70398</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-10 06:29:50 -0700</bug_when>
    <thetext>Created attachment 70398
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292291</commentid>
    <comment_count>12</comment_count>
      <attachid>70399</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-10 06:54:43 -0700</bug_when>
    <thetext>Created attachment 70399
Added test for first letter removal/addition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292292</commentid>
    <comment_count>13</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-10 07:03:40 -0700</bug_when>
    <thetext>Thank you for the review.

Added a test where RenderTextFragment for the first-letter is removed or added by
display property change ore before pseudo-element change.

My understanding is that in such cases the changes are considered as &quot;Detach&quot; and the
render tree is re-constructed. That is, RenderTextFragment::styleDidChange is not called
where it would destroy the fragment instance if it were called.

(In reply to comment #10)
&gt; (From update of attachment 69764 [details])
&gt; My one concern here is if updateFirstLetter() causes the RenderTextFragment to be destroyed (e.g., if the display type of first-letter changes from inline to block).  I&apos;d like to see a test for that so that we know we won&apos;t crash with this patch in place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293226</commentid>
    <comment_count>14</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-12 17:46:35 -0700</bug_when>
    <thetext>Ping? Sorry to being naggy, but I&apos;d like to fix this issue as soon as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294568</commentid>
    <comment_count>15</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-10-14 21:32:01 -0700</bug_when>
    <thetext>*** Bug 45620 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294569</commentid>
    <comment_count>16</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-10-14 21:33:31 -0700</bug_when>
    <thetext>Yuzo, can you please try reaching Dave on irc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294899</commentid>
    <comment_count>17</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-15 13:39:09 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Thank you for the review.
&gt; 
&gt; Added a test where RenderTextFragment for the first-letter is removed or added by
&gt; display property change ore before pseudo-element change.
&gt; 
&gt; My understanding is that in such cases the changes are considered as &quot;Detach&quot; and the
&gt; render tree is re-constructed. That is, RenderTextFragment::styleDidChange is not called
&gt; where it would destroy the fragment instance if it were called.
&gt; 

We only allow the block display type on floating first letters, so instead of switching between block and inline you need to switch between floating and not floating.

You left in the updateFirstLetter() in RenderBlock::styleDidChange.  That call is now wasteful/redundant in most cases, although it does admittedly catch the display change as a result of the float status change. 

I think you could still trip a display change from RenderTextFragment::styleDidChange though.  If the first-letter style has float:inherit, and you put it inside a span inside a div, and then make the span float (and have the span have its own first-letter style rule also).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294900</commentid>
    <comment_count>18</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-15 13:41:51 -0700</bug_when>
    <thetext>It might not actually crash if the display changes.  That&apos;s what I want to see.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295444</commentid>
    <comment_count>19</comment_count>
      <attachid>71022</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-18 04:57:21 -0700</bug_when>
    <thetext>Created attachment 71022
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295449</commentid>
    <comment_count>20</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-18 05:04:22 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #17)
&gt; (In reply to comment #13)
&gt; &gt; Thank you for the review.
&gt; &gt; 
&gt; &gt; Added a test where RenderTextFragment for the first-letter is removed or added by
&gt; &gt; display property change ore before pseudo-element change.
&gt; &gt; 
&gt; &gt; My understanding is that in such cases the changes are considered as &quot;Detach&quot; and the
&gt; &gt; render tree is re-constructed. That is, RenderTextFragment::styleDidChange is not called
&gt; &gt; where it would destroy the fragment instance if it were called.
&gt; &gt; 
&gt; 
&gt; We only allow the block display type on floating first letters, so instead of switching between block and inline you need to switch between floating and not floating.
&gt; 
&gt; You left in the updateFirstLetter() in RenderBlock::styleDidChange.  That call is now wasteful/redundant in most cases, although it does admittedly catch the display change as a result of the float status change. 
&gt; 
&gt; I think you could still trip a display change from RenderTextFragment::styleDidChange though.  If the first-letter style has float:inherit, and you put it inside a span inside a div, and then make the span float (and have the span have its own first-letter style rule also).

I&apos;ve added tests as suggested. (Please let me know if I misunderstood anything).

As far as I understand, updateFirstLetter can destroy:
- Anonymous RenderInline/RenderBlock generated for first letter
- Original RenderText that is &quot;split&quot; into text fragments to achieve first letter rendering
but not the text fragments created by the &quot;split&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295451</commentid>
    <comment_count>21</comment_count>
      <attachid>71024</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-10-18 05:10:36 -0700</bug_when>
    <thetext>Created attachment 71024
Added tests for float</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298360</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2010-10-23 03:18:37 -0700</bug_when>
    <thetext>Is this one almost ready to land?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301177</commentid>
    <comment_count>23</comment_count>
      <attachid>71024</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-10-28 11:24:27 -0700</bug_when>
    <thetext>Comment on attachment 71024
Added tests for float

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301233</commentid>
    <comment_count>24</comment_count>
    <who name="Abhishek Arya">inferno</who>
    <bug_when>2010-10-28 12:31:09 -0700</bug_when>
    <thetext>Committed r70797: &lt;http://trac.webkit.org/changeset/70797&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>362022</commentid>
    <comment_count>25</comment_count>
    <who name="Vincent Danen">vdanen</who>
    <bug_when>2011-03-03 15:46:24 -0800</bug_when>
    <thetext>This was assigned CVE-2011-0114.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>15430</attachid>
            <date>2007-07-07 06:37:59 -0700</date>
            <delta_ts>2007-07-07 06:37:59 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>14550 test case.html</filename>
            <type>text/html</type>
            <size>288</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgoJPHN0eWxlPgogICAgICAgIHA6Zmlyc3QtbGV0dGVyIHsgZm9udC1zaXpl
OiBsYXJnZXI7IH0KCTwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8YnV0dG9uIG9uY2xpY2s9
ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YXJnZXQnKS5zdHlsZS5jb2xvciA9ICdncmVlbici
PkNoYW5nZSBjb2xvcjwvYnV0dG9uPiAgIAogICAgPHAgaWQ9InRhcmdldCI+CiAgICAgICAgPHNw
YW4+Rmlyc3QgbGV0dGVyIHN0YXlzIGJsYWNrPC9zcGFuPgogICAgPC9wPgo8L2JvZHk+CjwvaHRt
bD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31268</attachid>
            <date>2009-06-14 11:54:54 -0700</date>
            <delta_ts>2010-10-05 02:20:44 -0700</delta_ts>
            <desc>Possible patch</desc>
            <filename>14550_patch.txt</filename>
            <type>text/plain</type>
            <size>2501</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5ODQyNmVkLi40N2I0MTEwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC00NTQzLDcgKzQ1NDMsNyBAQCB2b2lkIFJlbmRlckJs
b2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAKICAgICAvLyBEcmlsbCBpbnRvIGlubGluZXMgbG9v
a2luZyBmb3Igb3VyIGZpcnN0IHRleHQgY2hpbGQuCiAgICAgUmVuZGVyT2JqZWN0KiBjdXJyQ2hp
bGQgPSBmaXJzdExldHRlckJsb2NrLT5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKGN1cnJDaGls
ZCAmJiBjdXJyQ2hpbGQtPm5lZWRzTGF5b3V0KCkgJiYgKCFjdXJyQ2hpbGQtPmlzUmVwbGFjZWQo
KSB8fCBjdXJyQ2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0aW9uZWQoKSkgJiYgIWN1cnJDaGlsZC0+
aXNUZXh0KCkpIHsKKyAgICB3aGlsZSAoY3VyckNoaWxkICYmICghY3VyckNoaWxkLT5pc1JlcGxh
Y2VkKCkgfHwgY3VyckNoaWxkLT5pc0Zsb2F0aW5nT3JQb3NpdGlvbmVkKCkpICYmICFjdXJyQ2hp
bGQtPmlzVGV4dCgpKSB7CiAgICAgICAgIGlmIChjdXJyQ2hpbGQtPmlzRmxvYXRpbmdPclBvc2l0
aW9uZWQoKSkgewogICAgICAgICAgICAgaWYgKGN1cnJDaGlsZC0+c3R5bGUoKS0+c3R5bGVUeXBl
KCkgPT0gRklSU1RfTEVUVEVSKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDU1OSwyMSAr
NDU1OSwyMiBAQCB2b2lkIFJlbmRlckJsb2NrOjp1cGRhdGVGaXJzdExldHRlcigpCiAgICAgaWYg
KCFjdXJyQ2hpbGQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlck9iamVjdCogZmlyc3RM
ZXR0ZXJDb250YWluZXIgPSBjdXJyQ2hpbGQtPnBhcmVudCgpOwotCi0gICAgLy8gSWYgdGhlIGNo
aWxkIGFscmVhZHkgaGFzIHN0eWxlLCB0aGVuIGl0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCwg
c28gd2UganVzdCB3YW50Ci0gICAgLy8gdG8gdXBkYXRlIGl0LgotICAgIGlmIChjdXJyQ2hpbGQt
PnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUikgeworICAgIC8vIElmIHRoZSBj
aGlsZCBhbHJlYWR5IGhhcyBGSVJTVF9MRVRURVIgc3R5bGUsIHRoZW4gaXQgaGFzIGFscmVhZHkg
YmVlbiBjcmVhdGVkLCBzbyB3ZSBqdXN0IHdhbnQgdG8gdXBkYXRlIGl0LgorICAgIGlmIChjdXJy
Q2hpbGQtPmlzVGV4dCgpICYmIGN1cnJDaGlsZC0+cGFyZW50KCktPnN0eWxlKCktPnN0eWxlVHlw
ZSgpID09IEZJUlNUX0xFVFRFUikgeworICAgICAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVy
ID0gY3VyckNoaWxkLT5wYXJlbnQoKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIHBzZXVkbyA9IGZp
cnN0TGV0dGVyQmxvY2stPmdldENhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0TGV0dGVyQ29udGFpbmVyLT5maXJzdExpbmVTdHlsZSgpKTsKLSAgICAgICAg
Y3VyckNoaWxkLT5zZXRTdHlsZShwc2V1ZG8pOwotICAgICAgICBmb3IgKFJlbmRlck9iamVjdCog
Z2VuQ2hpbGQgPSBjdXJyQ2hpbGQtPmZpcnN0Q2hpbGQoKTsgZ2VuQ2hpbGQ7IGdlbkNoaWxkID0g
Z2VuQ2hpbGQtPm5leHRTaWJsaW5nKCkpIHsKLSAgICAgICAgICAgIGlmIChnZW5DaGlsZC0+aXNU
ZXh0KCkpIAotICAgICAgICAgICAgICAgIGdlbkNoaWxkLT5zZXRTdHlsZShwc2V1ZG8pOwotICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmaXJzdExldHRlci0+cGFyZW50KCktPmZpcnN0TGluZVN0eWxl
KCkpOworICAgICAgICBmaXJzdExldHRlci0+c2V0U3R5bGUocHNldWRvKTsKKworICAgICAgICBS
ZWZQdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZSgpOworICAg
ICAgICBuZXdTdHlsZS0+aW5oZXJpdEZyb20ocHNldWRvKTsKKyAgICAgICAgY3VyckNoaWxkLT5z
ZXRTdHlsZShuZXdTdHlsZS5yZWxlYXNlKCkpOworCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBSZW5kZXJPYmplY3QqIGZpcnN0TGV0dGVyQ29udGFpbmVyID0gY3VyckNoaWxkLT5wYXJl
bnQoKTsKKwogICAgIC8vIElmIHRoZSBjaGlsZCBkb2VzIG5vdCBhbHJlYWR5IGhhdmUgc3R5bGUs
IHdlIGNyZWF0ZSBpdCBoZXJlLgogICAgIGlmIChjdXJyQ2hpbGQtPmlzVGV4dCgpICYmICFjdXJy
Q2hpbGQtPmlzQlIoKSAmJiBjdXJyQ2hpbGQtPnBhcmVudCgpLT5zdHlsZSgpLT5zdHlsZVR5cGUo
KSAhPSBGSVJTVF9MRVRURVIpIHsKICAgICAgICAgLy8gT3VyIGxheW91dCBzdGF0ZSBpcyBub3Qg
dmFsaWQgZm9yIHRoZSByZXBhaW50cyB3ZSBhcmUgZ29pbmcgdG8gdHJpZ2dlciBieQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69764</attachid>
            <date>2010-10-05 02:20:49 -0700</date>
            <delta_ts>2010-10-10 06:29:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-14550-20101005022047.patch</filename>
            <type>text/plain</type>
            <size>8969</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxODA0Y2VmYjJkNzI4M2FlMTc2MGRmYjc0YmI5NzBmNzZlZjM2YzQ4Li43YjIyNzgz
MmJlMzlhNzUzNmVhNGRmMjI5MDkyODMzMDM1ZjIxZDU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTAtMTAtMDUgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgQnVnIDE0NTUw
IC0gTm9uLWxheW91dCBzdHlsZSBjaGFuZ2UgZG9lcyBub3QgdXBkYXRlIG5lc3RlZCBmaXJzdC1s
ZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTUwCisKKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sOiBB
ZGRlZC4KKwogMjAxMC0xMC0wMyAgRGltaXRyaSBHbGF6a292ICA8ZGdsYXprb3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNzdjZjU3M2Y2M2I2OTk5YjNjZDg0ZTJmOGFhZjhjM2QxZWE1MzE0YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoZSB0aHJlZSBzcGFucyBiZWxvdyBzaG91
bGQgbG9vayB0aGUgc2FtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTcGFuCisK
K1NwYW4KKworU3BhbgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5f
MScpLm9mZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9m
ZnNldFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9m
ZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdp
ZHRoCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ4NTdkNTQ0ZmFmYmFjOWRlOTJiY2UzY2IxZmEzMjdlNDg1YzhjMGEKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKQEAg
LTAsMCArMSwzOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRl
c3QgZm9yIGZpcnN0LWxldHRlciB0byBuZXN0ZWQgZWxlbWVudDwvdGl0bGU+Cis8c3R5bGU+Cisg
ICAgLnRlc3Q6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IGdyZWVuOyB9CisgICAgLmJveGVkIHtib3Jk
ZXI6IHNvbGlkIDFweDt9Cis8L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQgc3JjPSIuLi9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisKKzxwIGNsYXNzPSJ0ZXN0IiBpZD0idGVzdF9wXzEi
PgorICAgIDxzcGFuIGNsYXNzPSJib3hlZCIgaWQ9InRlc3Rfc3Bhbl8xIj5TcGFuPC9zcGFuPgor
PC9wPgorPHAgY2xhc3M9InRlc3QiPgorICAgIDxzcGFuIGNsYXNzPSJib3hlZCIgaWQ9InRlc3Rf
c3Bhbl8yIiBjbGFzcz0iYm94ZWQiPlNwYW48L3NwYW4+Cis8L3A+Cis8cD4KKyAgICA8c3BhbiBj
bGFzcz0iYm94ZWQiIGlkPSJyZWZfc3BhbiIgc3R5bGU9ImZvbnQtc2l6ZTozMnB4Ij48c3BhbiBz
dHlsZT0iY29sb3I6Z3JlZW4iPlM8L3NwYW4+cGFuPC9zcGFuPgorPC9wPgorCis8ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
X3BfMScpLnN0eWxlLmZvbnRTaXplID0gJzMycHgnOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3Rfc3Bhbl8yJykuc3R5bGUuZm9udFNpemUgPSAnMzJweCc7CisKK2Rlc2NyaXB0aW9uKCJU
aGUgdGhyZWUgc3BhbnMgYmVsb3cgc2hvdWxkIGxvb2sgdGhlIHNhbWUuIik7CitzaG91bGRCZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3Bhbl8xJykub2Zmc2V0V2lkdGgiLCAiZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZl9zcGFuJykub2Zmc2V0V2lkdGgiKTsKK3Nob3VsZEJl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdF9zcGFuXzInKS5vZmZzZXRXaWR0aCIsICJk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmX3NwYW4nKS5vZmZzZXRXaWR0aCIpOworCit2YXIg
c3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAw
NWI5Nzc1Nzc2NDA1ODAwODIyNDJjNDcwMDNkZWFhYmY5OGUxNTcxLi5jNjk0ODY1YjM2ZTAyMzIz
NzBhZTFiM2Y1YjY4Nzc3Yjk4NDlkNzJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZwor
KysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTEwLTA1ICBZdXpv
IEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIEJ1ZyAxNDU1MCAtIE5vbi1sYXlvdXQgc3R5
bGUgY2hhbmdlIGRvZXMgbm90IHVwZGF0ZSBuZXN0ZWQgZmlyc3QtbGV0dGVyCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1MAorCisgICAgICAgIElm
IGEgcmVuZGVyIHRleHQgZnJhZ21lbnQgaXMgYWNjb21wYW5pZWQgYnkgYSBmaXJzdCBsZXR0ZXIs
IHVwZGF0ZSB0aGUKKyAgICAgICAgZmlyc3QgbGV0dGVyJ3Mgc3R5bGUgd2hlbiB0aGUgZnJhZ21l
bnQncyBzdHlsZSBpcyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2ZpcnN0LWxl
dHRlci1uZXN0ZWQuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6IE1h
a2UgdXBkYXRlRmlyc3RMZXR0ZXIgYWNjZXNzYmlsZSBmcm9tCisgICAgICAgIFJlbmRlclRleHRG
cmFnbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6c3R5bGVEaWRDaGFuZ2UpOiBJZiBh
cHByb3ByaWF0ZSwgdXBkYXRlCisgICAgICAgIGZpcnN0IGxldHRlciBhZnRlciByZW1vdmluZyBz
dGFsZSBjYWNoZWQgcHNldWRvIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dEZy
YWdtZW50OjpibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKTogSGVscGVyCisgICAgICAg
IHRvIGdldCB0aGUgYmxvY2sgZm9yIHRoZSBmaXJzdCBsZXR0ZXIuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FjaGVk
UHNldWRvU3R5bGUpOiBSZW1vdmUgdGhlIHNwZWNpZmllZAorICAgICAgICBwc2V1ZG8gc3R5bGUg
ZnJvbSBjYWNoZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKwog
MjAxMC0xMC0wMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEhvbGdlciBGcmV5dGhlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDY0
MzAyMThmMWVjYzU0NDllMjg2ZmE1OGM3ZWE0MGFhNDgwZTc2M2EuLjEzNzEwMDgwYWFlODIwZTJj
MzRhODc0ZWU3YTIwNzJiZGJjMmZkY2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTg2
LDYgKzE4Niw4IEBAIHB1YmxpYzoKICAgICBpbnQgY29sbGFwc2VkTWFyZ2luQmVmb3JlRm9yQ2hp
bGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgaW50IGNvbGxhcHNlZE1hcmdpbkFmdGVy
Rm9yQ2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRmlyc3RMZXR0ZXIoKTsKKwogICAgIGNsYXNzIE1hcmdpblZhbHVlcyB7CiAgICAgcHVibGlj
OgogICAgICAgICBNYXJnaW5WYWx1ZXMoaW50IGJlZm9yZVBvcywgaW50IGJlZm9yZU5lZywgaW50
IGFmdGVyUG9zLCBpbnQgYWZ0ZXJOZWcpCkBAIC0yNzQsOCArMjc2LDYgQEAgcHJvdGVjdGVkOgog
ICAgIHZpcnR1YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3Q7CiAgICAgdmlydHVh
bCBpbnQgbGFzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZpcnN0TGV0dGVyKCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGl0VGVzdFJlc3Vs
dChIaXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQmKTsKIAogICAgIC8vIERlbGF5IHVwZGF0
ZSBzY3JvbGxiYXIgdW50aWwgZmluaXNoRGVsYXlSZXBhaW50KCkgd2lsbCBiZQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggYjE0MzA4ZGQ1NWY1YTQyMmQ5Y2Y0
MzQwZDI3YTNhNzE3ZGIyYTFlNy4uZTc4Y2VkYjRkMjhhY2VmMDc2NWJkMmFmMjBmMTAwYTE0MzEw
MGY3MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNw
cAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdt
ZW50LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTMsNiArNTQsMTYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBSZW5kZXJUZXh0RnJhZ21lbnQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJu
IHJlc3VsdC0+c3Vic3RyaW5nKHN0YXJ0KCksIGVuZCgpKTsKIH0KIAordm9pZCBSZW5kZXJUZXh0
RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCit7CisgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlm
Ziwgb2xkU3R5bGUpOworCisgICAgaWYgKFJlbmRlckJsb2NrKiBibG9jayA9IGJsb2NrRm9yQWNj
b21wYW55aW5nRmlyc3RMZXR0ZXIoKSkgeworICAgICAgICBibG9jay0+c3R5bGUoKS0+cmVtb3Zl
Q2FjaGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKTsKKyAgICAgICAgYmxvY2stPnVwZGF0ZUZp
cnN0TGV0dGVyKCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6ZGVzdHJv
eSgpCiB7CiAgICAgaWYgKG1fZmlyc3RMZXR0ZXIpCkBAIC04OCw0ICs5OSwxNSBAQCBVQ2hhciBS
ZW5kZXJUZXh0RnJhZ21lbnQ6OnByZXZpb3VzQ2hhcmFjdGVyKCkgY29uc3QKICAgICByZXR1cm4g
UmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0ZXIoKTsKIH0KIAorUmVuZGVyQmxvY2sqIFJlbmRl
clRleHRGcmFnbWVudDo6YmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2ZpcnN0TGV0dGVyKQorICAgICAgICByZXR1cm4gMDsKKyAgICBmb3IgKFJl
bmRlck9iamVjdCogYmxvY2sgPSBtX2ZpcnN0TGV0dGVyLT5wYXJlbnQoKTsgYmxvY2s7IGJsb2Nr
ID0gYmxvY2stPnBhcmVudCgpKSB7CisgICAgICAgIGlmIChibG9jay0+c3R5bGUoKS0+aGFzUHNl
dWRvU3R5bGUoRklSU1RfTEVUVEVSKSAmJiBibG9jay0+Y2FuSGF2ZUNoaWxkcmVuKCkgJiYgYmxv
Y2stPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiB0b1JlbmRlckJsb2NrKGJs
b2NrKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKaW5kZXggZTAyMzA0MmI1NDJiMTM5
MWM2YTRhZWM3OWQwMGQxY2VkOTk0MTlhYi4uMDI0OTA2MGI1MjFiY2JkNzYwMDhiOWJjMjhjNWJl
ZTAxNTRkZDk4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdt
ZW50LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKQEAgLTQ5
LDkgKzQ5LDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmdJbXBsKiBjb250ZW50U3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9jb250ZW50U3RyaW5nLmdldCgpOyB9CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsVGV4dCgpIGNvbnN0OwogCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVy
U3R5bGUqIG9sZFN0eWxlKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dElu
dGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1YWwgVUNoYXIgcHJldmlv
dXNDaGFyYWN0ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJCbG9jayogYmxvY2tGb3JBY2NvbXBhbnlp
bmdGaXJzdExldHRlcigpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9zdGFydDsKICAgICB1bnNp
Z25lZCBtX2VuZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBk
MjQzYTdmMmYyNDM0YzNiYTUwZTMxYjIwN2JhMjczNmZiMzMwNTAyLi4zNjBmOGY3YTcwYzdiZDBi
Y2Q1Y2Q0M2I0MzQ5MDE2MjM5NmUwYjFkIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCkBAIC0yNDQsNiArMjQ0LDE5IEBAIFJlbmRlclN0eWxlKiBSZW5kZXJTdHlsZTo6
YWRkQ2FjaGVkUHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gcHNldWRvKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hlZFBzZXVk
b1N0eWxlKFBzZXVkb0lkIHBpZCkKK3sKKyAgICBpZiAoIW1fY2FjaGVkUHNldWRvU3R5bGVzKQor
ICAgICAgICByZXR1cm47CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2NhY2hlZFBzZXVk
b1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHBzZXVkb1N0eWxl
ID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmF0KGkpLmdldCgpOworICAgICAgICBpZiAocHNldWRv
U3R5bGUtPnN0eWxlVHlwZSgpID09IHBpZCkgeworICAgICAgICAgICAgbV9jYWNoZWRQc2V1ZG9T
dHlsZXMtPnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
K30KKwogYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1YWwoY29uc3QgUmVuZGVyU3R5
bGUqIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBpbmhlcml0ZWRfZmxhZ3MgIT0gb3RoZXIt
PmluaGVyaXRlZF9mbGFncyB8fApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5k
ZXggOTVlM2IwODYwZmJhM2JkZGU0NzFmY2JkMmM2MjM4Y2YwZmYxNTEyYy4uZWVjM2Y5ZjM3NmFi
NTNkNzMzMGViNWIwMDU5NmQ2NzcxMWVkMGQzZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC0zMjUsNiArMzI1LDcgQEAgcHVibGljOgogCiAgICAgUmVuZGVyU3R5bGUq
IGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKICAgICBSZW5kZXJTdHlsZSog
YWRkQ2FjaGVkUHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4pOworICAgIHZvaWQg
cmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQpOwogCiAgICAgY29uc3QgUHNldWRvU3R5
bGVDYWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRQc2V1
ZG9TdHlsZXMuZ2V0KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70398</attachid>
            <date>2010-10-10 06:29:50 -0700</date>
            <delta_ts>2010-10-10 06:54:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-14550-20101010222949.patch</filename>
            <type>text/plain</type>
            <size>11542</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGU0MWIzMTA1NWEwMzg0MmVhMDZkYzFjYmU1ZWE3MGMyNjljMGRmLi44ZTljMWY5
YjE4NGQwMTc5NTk3NmMwM2Q2YmFhZGNiNjJlNGE5MTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTAgIFl1em8gRnVqaXNoaW1hICA8eXpmanNtQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIEJ1ZyAxNDU1
MCAtIE5vbi1sYXlvdXQgc3R5bGUgY2hhbmdlIGRvZXMgbm90IHVwZGF0ZSBuZXN0ZWQgZmlyc3Qt
bGV0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDU1MAorCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLXJlbW92ZWQtYWRkZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3Zl
ZC1hZGRlZC5odG1sOiBBZGRlZC4KKwogMjAxMC0xMC0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzdjZjU3M2Y2M2I2OTk5YjNjZDg0ZTJmOGFhZjhjM2QxZWE1MzE0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoZSB0aHJlZSBzcGFucyBiZWxvdyBzaG91bGQg
bG9vayB0aGUgc2FtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTcGFuCisKK1Nw
YW4KKworU3BhbgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScp
Lm9mZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNl
dFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNl
dFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRo
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJhYTE1ZTQwMTExNmZiYzI2YWQ4OWQwMGZmNDBjYjBjMmFhZjNmZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3Qg
Zm9yIGZpcnN0LWxldHRlciBmb3IgbmVzdGVkIGVsZW1lbnRzPC90aXRsZT4KKzxzdHlsZT4KKy50
ZXN0OmZpcnN0LWxldHRlciB7IGNvbG9yOiBncmVlbjsgfQorLmJveGVkIHsgYm9yZGVyOiBzb2xp
ZCAxcHg7IH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKworPHAgY2xhc3M9InRlc3QiIGlkPSJ0ZXN0X3BfMSI+CisgICAg
PHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzEiPlNwYW48L3NwYW4+Cis8L3A+Cis8
cCBjbGFzcz0idGVzdCI+CisgICAgPHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzIi
IGNsYXNzPSJib3hlZCI+U3Bhbjwvc3Bhbj4KKzwvcD4KKzxwPgorICAgIDxzcGFuIGNsYXNzPSJi
b3hlZCIgaWQ9InJlZl9zcGFuIiBzdHlsZT0iZm9udC1zaXplOjMycHgiPjxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+Uzwvc3Bhbj5wYW48L3NwYW4+Cis8L3A+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RfcF8xJyku
c3R5bGUuZm9udFNpemUgPSAnMzJweCc7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdF9z
cGFuXzInKS5zdHlsZS5mb250U2l6ZSA9ICczMnB4JzsKKworZGVzY3JpcHRpb24oIlRoZSB0aHJl
ZSBzcGFucyBiZWxvdyBzaG91bGQgbG9vayB0aGUgc2FtZS4iKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdF9zcGFuXzEnKS5vZmZzZXRXaWR0aCIsICJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVmX3NwYW4nKS5vZmZzZXRXaWR0aCIpOworc2hvdWxkQmUoImRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNldFdpZHRoIiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRoIik7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRl
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBhMzRjMDcxZjk4NjM4OTIyYjgzM2E5ZWEzM2Vl
YjgyYjM4MTBlMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0
LWxldHRlci1yZW1vdmVkLWFkZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE5IEBACitUaGUg
Zm9sbG93aW5nIHBhaXJzIHNob3VsZCBsb29rIHRoZSBzYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1Rlc3QgMToKK0Jsb2NrIHRvIElubGluZQorUmVmZXJlbmNlIDE6CitCbG9j
ayB0byBJbmxpbmUKKworVGVzdCAyOgorSW5saW5lIHRvIEJsb2NrCitSZWZlcmVuY2UgMjoKK0lu
bGluZSB0byBCbG9jaworUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKS5vZmZz
ZXRXaWR0aCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMScpLm9mZnNldFdpZHRoCitQ
QVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MicpLm9mZnNldEhlaWdodCBpcyBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMicpLm9mZnNldEhlaWdodAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVkLWFkZGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJi
ZWY2OTdlMmU0Zjc5ZGRjYWQzNWQ4ZDM0N2Y5YjdiNjI3YjFkYjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC5odG1sCkBA
IC0wLDAgKzEsNDAgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5U
ZXN0IGZvciBmaXJzdC1sZXR0ZXIgdGhhdCBpcyByZW1vdmVkIG9yIGFkZGVkIGJ5IHN0eWxlIGNo
YW5nZTwvdGl0bGU+Cis8c3R5bGU+CisgICAgLnRlc3Q6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IGdy
ZWVuOyBmb250LXNpemU6NjRweDsgfQorICAgIC50ZXN0IHsgYm9yZGVyOiBzb2xpZCAxcHg7IH0K
Kzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9u
Ij48L2Rpdj4KKworVGVzdCAxOjxici8+Cis8ZGl2IGNsYXNzPSJ0ZXN0IiBpZD0idGVzdDEiPkJs
b2NrIHRvIElubGluZTwvZGl2Pjxici8+CitSZWZlcmVuY2UgMTo8YnIvPgorPGRpdiBjbGFzcz0i
dGVzdCIgaWQ9InJlZjEiIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+QmxvY2sgdG8gSW5saW5lPC9k
aXY+PGJyLz4KKzxici8+CisKK1Rlc3QgMjo8YnIvPgorPHNwYW4gY2xhc3M9InRlc3QiIGlkPSJ0
ZXN0MiI+SW5saW5lIHRvIEJsb2NrPC9zcGFuPgorUmVmZXJlbmNlIDI6PGJyLz4KKzxzcGFuIGNs
YXNzPSJ0ZXN0IiBpZD0icmVmMiIgc3R5bGU9ImRpc3BsYXk6YmxvY2siPklubGluZSB0byBCbG9j
azwvc3Bhbj4KKworPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKS5zdHlsZS5kaXNwbGF5ID0gImlubGluZSI7Citkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDIiKS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKKwor
ZGVzY3JpcHRpb24oIlRoZSBmb2xsb3dpbmcgcGFpcnMgc2hvdWxkIGxvb2sgdGhlIHNhbWUuIik7
CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykub2Zmc2V0V2lkdGgi
LCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjEnKS5vZmZzZXRXaWR0aCIpOworc2hvdWxk
QmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0MicpLm9mZnNldEhlaWdodCIsICJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMicpLm9mZnNldEhlaWdodCIpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzMjgwYjcy
M2Y3YjZjODA3YzYwMzg5Mzk2NDE5NDY2ZDcwMWU3MzdiLi4wNDk0ZDczNDNjNWZkZjM5MWY1YTA5
ZTk3ZmJmMTI0ODE5NWFmNWU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEwLTEwLTEwICBZdXpvIEZ1amlz
aGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBGaXggZm9yIEJ1ZyAxNDU1MCAtIE5vbi1sYXlvdXQgc3R5bGUgY2hh
bmdlIGRvZXMgbm90IHVwZGF0ZSBuZXN0ZWQgZmlyc3QtbGV0dGVyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1MAorCisgICAgICAgIElmIGEgcmVu
ZGVyIHRleHQgZnJhZ21lbnQgaXMgYWNjb21wYW5pZWQgYnkgYSBmaXJzdCBsZXR0ZXIsIHVwZGF0
ZSB0aGUKKyAgICAgICAgZmlyc3QgbGV0dGVyJ3Mgc3R5bGUgd2hlbiB0aGUgZnJhZ21lbnQncyBz
dHlsZSBpcyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2ZpcnN0LWxldHRlci1u
ZXN0ZWQuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6IE1ha2UgdXBk
YXRlRmlyc3RMZXR0ZXIgYWNjZXNzYmlsZSBmcm9tCisgICAgICAgIFJlbmRlclRleHRGcmFnbWVu
dC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6c3R5bGVEaWRDaGFuZ2UpOiBJZiBhcHByb3By
aWF0ZSwgdXBkYXRlCisgICAgICAgIGZpcnN0IGxldHRlciBhZnRlciByZW1vdmluZyBzdGFsZSBj
YWNoZWQgcHNldWRvIHN0eWxlLgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dEZyYWdtZW50
OjpibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKTogSGVscGVyCisgICAgICAgIHRvIGdl
dCB0aGUgYmxvY2sgZm9yIHRoZSBmaXJzdCBsZXR0ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclRleHRGcmFnbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZTo6cmVtb3ZlQ2FjaGVkUHNldWRv
U3R5bGUpOiBSZW1vdmUgdGhlIHNwZWNpZmllZAorICAgICAgICBwc2V1ZG8gc3R5bGUgZnJvbSBj
YWNoZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAxMC0x
MC0wOSAgQW5kcmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApp
bmRleCA5ZDUzNDZiY2NhYzg1NGQ0N2Y0NTFiYjA2NTFlY2VjYTM4YjFlOGYzLi5mN2ViMzlhZWY1
Mjk5Y2Q1N2U3MDU3N2Q3OGI5ZGI5ZTczNGU2ZmY4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgK
QEAgLTE4Nyw2ICsxODcsOCBAQCBwdWJsaWM6CiAgICAgaW50IGNvbGxhcHNlZE1hcmdpbkJlZm9y
ZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogICAgIGludCBjb2xsYXBzZWRNYXJn
aW5BZnRlckZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogCisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCk7CisKICAgICBjbGFzcyBNYXJnaW5WYWx1ZXMgewogICAg
IHB1YmxpYzoKICAgICAgICAgTWFyZ2luVmFsdWVzKGludCBiZWZvcmVQb3MsIGludCBiZWZvcmVO
ZWcsIGludCBhZnRlclBvcywgaW50IGFmdGVyTmVnKQpAQCAtMjc1LDggKzI3Nyw2IEBAIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0OwogICAg
IHZpcnR1YWwgaW50IGxhc3RMaW5lQm94QmFzZWxpbmUoKSBjb25zdDsKIAotICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVGaXJzdExldHRlcigpOwotCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUhpdFRl
c3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50Jik7CiAKICAgICAvLyBEZWxh
eSB1cGRhdGUgc2Nyb2xsYmFyIHVudGlsIGZpbmlzaERlbGF5UmVwYWludCgpIHdpbGwgYmUKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmluZGV4IDcwNWMwOTU3NTIwMjEz
ZTg0NGI1YTQyMGY4NzlmZTBkMGZhMTkzZDkuLmVjNjJkODVhNDAwZmJmOTQzMThhMmI2Y2U5ZWU1
N2I5YTNmM2ZiMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFn
bWVudC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcApA
QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbmRlclRl
eHRGcmFnbWVudC5oIgogCisjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJUZXh0
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDYgKzU4LDE2IEBAIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gUmVuZGVyVGV4dEZyYWdtZW50OjpvcmlnaW5hbFRleHQoKSBjb25zdAogICAg
IHJldHVybiByZXN1bHQtPnN1YnN0cmluZyhzdGFydCgpLCBlbmQoKSk7CiB9CiAKK3ZvaWQgUmVu
ZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UgZGlmZiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQoreworICAgIFJlbmRlclRleHQ6OnN0eWxlRGlkQ2hh
bmdlKGRpZmYsIG9sZFN0eWxlKTsKKworICAgIGlmIChSZW5kZXJCbG9jayogYmxvY2sgPSBibG9j
a0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkpIHsKKyAgICAgICAgYmxvY2stPnN0eWxlKCkt
PnJlbW92ZUNhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUik7CisgICAgICAgIGJsb2NrLT51
cGRhdGVGaXJzdExldHRlcigpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJUZXh0RnJhZ21lbnQ6
OmRlc3Ryb3koKQogewogICAgIGlmIChtX2ZpcnN0TGV0dGVyKQpAQCAtOTIsNCArMTAzLDE1IEBA
IFVDaGFyIFJlbmRlclRleHRGcmFnbWVudDo6cHJldmlvdXNDaGFyYWN0ZXIoKSBjb25zdAogICAg
IHJldHVybiBSZW5kZXJUZXh0OjpwcmV2aW91c0NoYXJhY3RlcigpOwogfQogCitSZW5kZXJCbG9j
ayogUmVuZGVyVGV4dEZyYWdtZW50OjpibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkg
Y29uc3QKK3sKKyAgICBpZiAoIW1fZmlyc3RMZXR0ZXIpCisgICAgICAgIHJldHVybiAwOworICAg
IGZvciAoUmVuZGVyT2JqZWN0KiBibG9jayA9IG1fZmlyc3RMZXR0ZXItPnBhcmVudCgpOyBibG9j
azsgYmxvY2sgPSBibG9jay0+cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGJsb2NrLT5zdHlsZSgp
LT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGJsb2NrLT5jYW5IYXZlQ2hpbGRyZW4o
KSAmJiBibG9jay0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIHRvUmVuZGVy
QmxvY2soYmxvY2spOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaAppbmRleCBhYmIzZmE0
NDE4YTI4M2NkNGRiZWY0YmRmMjdkYTM5ODNlZDhlMGI0Li5jMjUxZjgxOTRiYTE3ODYzY2ZiYzNk
ZTJlYmJiNjk5M2NjMGI3Yjg0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQu
aApAQCAtNTAsOSArNTAsMTMgQEAgcHVibGljOgogICAgIFN0cmluZ0ltcGwqIGNvbnRlbnRTdHJp
bmcoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTdHJpbmcuZ2V0KCk7IH0KICAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxUZXh0KCkgY29uc3Q7CiAKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlLCBjb25z
dCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRUZXh0SW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPik7CiAgICAgdmlydHVhbCBVQ2hh
ciBwcmV2aW91c0NoYXJhY3RlcigpIGNvbnN0OworICAgIFJlbmRlckJsb2NrKiBibG9ja0ZvckFj
Y29tcGFueWluZ0ZpcnN0TGV0dGVyKCkgY29uc3Q7CiAKICAgICB1bnNpZ25lZCBtX3N0YXJ0Owog
ICAgIHVuc2lnbmVkIG1fZW5kOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CmluZGV4IGI1NmJiMWU5N2Y5MTgyNGVmODhmZWQ5MDU3YTE1OTMwNDIyMmY4MTIuLmZiOTM0YjJl
OWVkMDQxNTIwMTk3YmViMTFkZWY5M2MyNDZkMjY3NWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTI0NCw2ICsyNDQsMTkgQEAgUmVuZGVyU3R5bGUqIFJlbmRl
clN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBwc2V1
ZG8pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5kZXJTdHlsZTo6cmVtb3ZlQ2Fj
aGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKQoreworICAgIGlmICghbV9jYWNoZWRQc2V1ZG9T
dHlsZXMpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2Fj
aGVkUHNldWRvU3R5bGVzLT5zaXplKCk7ICsraSkgeworICAgICAgICBSZW5kZXJTdHlsZSogcHNl
dWRvU3R5bGUgPSBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXQoaSkuZ2V0KCk7CisgICAgICAgIGlm
IChwc2V1ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gcGlkKSB7CisgICAgICAgICAgICBtX2NhY2hl
ZFBzZXVkb1N0eWxlcy0+cmVtb3ZlKGkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorfQorCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0ZWROb3RFcXVhbChjb25zdCBS
ZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGluaGVyaXRlZF9mbGFncyAh
PSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzIHx8CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaAppbmRleCA5ZjM5ZTBmNTIzYTMyZmUxOGUxODZkNDEyZjE2YzhlYzY1MjdhYjRiLi40MmYz
ZmNjYjhhODIwMGIzMTgyZmM0N2QyZGJjYzU3YTNmMGI4NTJiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlLmgKQEAgLTMyNSw2ICszMjUsNyBAQCBwdWJsaWM6CiAKICAgICBSZW5k
ZXJTdHlsZSogZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQpIGNvbnN0OwogICAgIFJlbmRl
clN0eWxlKiBhZGRDYWNoZWRQc2V1ZG9TdHlsZShQYXNzUmVmUHRyPFJlbmRlclN0eWxlPik7Cisg
ICAgdm9pZCByZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCk7CiAKICAgICBjb25zdCBQ
c2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBjb25zdCB7IHJldHVybiBtX2Nh
Y2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70399</attachid>
            <date>2010-10-10 06:54:43 -0700</date>
            <delta_ts>2010-10-18 04:57:15 -0700</delta_ts>
            <desc>Added test for first letter removal/addition</desc>
            <filename>bug-14550-20101010225441.patch</filename>
            <type>text/plain</type>
            <size>12461</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGU0MWIzMTA1NWEwMzg0MmVhMDZkYzFjYmU1ZWE3MGMyNjljMGRmLi44ZTljMWY5
YjE4NGQwMTc5NTk3NmMwM2Q2YmFhZGNiNjJlNGE5MTY4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTAgIFl1em8gRnVqaXNoaW1hICA8eXpmanNtQGdtYWlsLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIEJ1ZyAxNDU1
MCAtIE5vbi1sYXlvdXQgc3R5bGUgY2hhbmdlIGRvZXMgbm90IHVwZGF0ZSBuZXN0ZWQgZmlyc3Qt
bGV0dGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDU1MAorCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLXJlbW92ZWQtYWRkZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3Zl
ZC1hZGRlZC5odG1sOiBBZGRlZC4KKwogMjAxMC0xMC0wOSAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzdjZjU3M2Y2M2I2OTk5YjNjZDg0ZTJmOGFhZjhjM2QxZWE1MzE0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoZSB0aHJlZSBzcGFucyBiZWxvdyBzaG91bGQg
bG9vayB0aGUgc2FtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTcGFuCisKK1Nw
YW4KKworU3BhbgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScp
Lm9mZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNl
dFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNl
dFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRo
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJhYTE1ZTQwMTExNmZiYzI2YWQ4OWQwMGZmNDBjYjBjMmFhZjNmZjUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKQEAgLTAs
MCArMSwzOSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3Qg
Zm9yIGZpcnN0LWxldHRlciBmb3IgbmVzdGVkIGVsZW1lbnRzPC90aXRsZT4KKzxzdHlsZT4KKy50
ZXN0OmZpcnN0LWxldHRlciB7IGNvbG9yOiBncmVlbjsgfQorLmJveGVkIHsgYm9yZGVyOiBzb2xp
ZCAxcHg7IH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKworPHAgY2xhc3M9InRlc3QiIGlkPSJ0ZXN0X3BfMSI+CisgICAg
PHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzEiPlNwYW48L3NwYW4+Cis8L3A+Cis8
cCBjbGFzcz0idGVzdCI+CisgICAgPHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzIi
IGNsYXNzPSJib3hlZCI+U3Bhbjwvc3Bhbj4KKzwvcD4KKzxwPgorICAgIDxzcGFuIGNsYXNzPSJi
b3hlZCIgaWQ9InJlZl9zcGFuIiBzdHlsZT0iZm9udC1zaXplOjMycHgiPjxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+Uzwvc3Bhbj5wYW48L3NwYW4+Cis8L3A+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3RfcF8xJyku
c3R5bGUuZm9udFNpemUgPSAnMzJweCc7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdF9z
cGFuXzInKS5zdHlsZS5mb250U2l6ZSA9ICczMnB4JzsKKworZGVzY3JpcHRpb24oIlRoZSB0aHJl
ZSBzcGFucyBiZWxvdyBzaG91bGQgbG9vayB0aGUgc2FtZS4iKTsKK3Nob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgndGVzdF9zcGFuXzEnKS5vZmZzZXRXaWR0aCIsICJkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVmX3NwYW4nKS5vZmZzZXRXaWR0aCIpOworc2hvdWxkQmUoImRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNldFdpZHRoIiwgImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRoIik7CisKK3ZhciBzdWNjZXNz
ZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRl
ZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM2YTZjYmI5NDZiMTczY2Y3NjI4ZmM4MmUzMTUz
YmRhZTBlMzI3YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0
LWxldHRlci1yZW1vdmVkLWFkZGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDI1IEBACitUaGUg
Zm9sbG93aW5nIHBhaXJzIHNob3VsZCBsb29rIHRoZSBzYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKK1Rlc3QgMToKK0Jsb2NrIHRvIElubGluZQorUmVmZXJlbmNlIDE6CitCbG9j
ayB0byBJbmxpbmUKKworVGVzdCAyOgorSW5saW5lIHRvIEJsb2NrCitSZWZlcmVuY2UgMjoKK0lu
bGluZSB0byBCbG9jaworcHNldWRvCitwc2V1ZG8KK3BzZXVkbworQmVmb3JlIHBzZXVkbworUEFT
UyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDEnKS5vZmZzZXRXaWR0aCBpcyBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVmMScpLm9mZnNldFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0MicpLm9mZnNldEhlaWdodCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVmMicpLm9mZnNldEhlaWdodAorUEFTUyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dDMnKS5vZmZzZXRXaWR0aCBpcyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMycpLm9mZnNl
dFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcpLm9mZnNldFdpZHRo
IGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY0Jykub2Zmc2V0V2lkdGgKK1BBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLXJlbW92ZWQtYWRkZWQuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4xZjQ1M2JmZWI0Yjg4OWJiNTEyZjc0OTIyZWNlOTkxY2FiNmQ4Y2IzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLXJlbW92ZWQtYWRkZWQu
aHRtbApAQCAtMCwwICsxLDUxIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+VGVzdCBmb3IgZmlyc3QtbGV0dGVyIHRoYXQgaXMgcmVtb3ZlZCBvciBhZGRlZCBieSBz
dHlsZSBjaGFuZ2U8L3RpdGxlPgorPHN0eWxlPgorICAgIC50ZXN0OmZpcnN0LWxldHRlciB7IGNv
bG9yOiBncmVlbjsgZm9udC1zaXplOjY0cHg7IH0KKyAgICAuYm94ZWQgeyBib3JkZXI6IHNvbGlk
IDFweDsgfQorICAgIC5iZWY6YmVmb3JlIHsgY29udGVudDoiQmVmb3JlICI7IH0KKzwvc3R5bGU+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0
eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48L2Rpdj4K
KworVGVzdCAxOjxici8+Cis8ZGl2IGNsYXNzPSJ0ZXN0IGJveGVkIiBpZD0idGVzdDEiPkJsb2Nr
IHRvIElubGluZTwvZGl2Pjxici8+CitSZWZlcmVuY2UgMTo8YnIvPgorPGRpdiBjbGFzcz0idGVz
dCBib3hlZCIgaWQ9InJlZjEiIHN0eWxlPSJkaXNwbGF5OmlubGluZSI+QmxvY2sgdG8gSW5saW5l
PC9kaXY+PGJyLz4KKzxici8+CisKK1Rlc3QgMjo8YnIvPgorPHNwYW4gY2xhc3M9InRlc3QgYm94
ZWQiIGlkPSJ0ZXN0MiI+SW5saW5lIHRvIEJsb2NrPC9zcGFuPgorUmVmZXJlbmNlIDI6PGJyLz4K
KzxzcGFuIGNsYXNzPSJ0ZXN0IGJveGVkIiBpZD0icmVmMiIgc3R5bGU9ImRpc3BsYXk6YmxvY2si
PklubGluZSB0byBCbG9jazwvc3Bhbj4KKworPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4gaWQ9InRl
c3QzIiBjbGFzcz0iYm94ZWQgYmVmIj5wc2V1ZG88L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ0
ZXN0Ij48c3BhbiBpZD0icmVmMyIgY2xhc3M9ImJveGVkIj5wc2V1ZG88L3NwYW4+PC9kaXY+CisK
KzxkaXYgY2xhc3M9InRlc3QiPjxzcGFuIGlkPSJ0ZXN0NCIgY2xhc3M9ImJveGVkIj5wc2V1ZG88
L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3BhbiBpZD0icmVmNCIgY2xhc3M9ImJv
eGVkIj5CZWZvcmUgcHNldWRvPC9zcGFuPjwvZGl2PgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKworPHNjcmlwdD4KK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpLnN0eWxlLmRp
c3BsYXkgPSAiaW5saW5lIjsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MiIpLnN0eWxl
LmRpc3BsYXkgPSAiYmxvY2siOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QzIikuY2xh
c3NOYW1lID0gImJveGVkIjsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NCIpLmNsYXNz
TmFtZSA9ICJib3hlZCBiZWYiOworCitkZXNjcmlwdGlvbigiVGhlIGZvbGxvd2luZyBwYWlycyBz
aG91bGQgbG9vayB0aGUgc2FtZS4iKTsKK3Nob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdDEnKS5vZmZzZXRXaWR0aCIsICJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMScp
Lm9mZnNldFdpZHRoIik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qy
Jykub2Zmc2V0SGVpZ2h0IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWYyJykub2Zmc2V0
SGVpZ2h0Iik7CitzaG91bGRCZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QzJykub2Zm
c2V0V2lkdGgiLCAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjMnKS5vZmZzZXRXaWR0aCIp
Oworc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcpLm9mZnNldFdpZHRo
IiwgImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY0Jykub2Zmc2V0V2lkdGgiKTsKKwordmFy
IHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzI4MGI3MjNmN2I2YzgwN2M2MDM4OTM5NjQxOTQ2NmQ3MDFlNzM3Yi4uMDQ5NGQ3MzQzYzVmZGYz
OTFmNWEwOWU5N2ZiZjEyNDgxOTVhZjVlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0xMC0xMCAgWXV6
byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBCdWcgMTQ1NTAgLSBOb24tbGF5b3V0IHN0
eWxlIGNoYW5nZSBkb2VzIG5vdCB1cGRhdGUgbmVzdGVkIGZpcnN0LWxldHRlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NTAKKworICAgICAgICBJ
ZiBhIHJlbmRlciB0ZXh0IGZyYWdtZW50IGlzIGFjY29tcGFuaWVkIGJ5IGEgZmlyc3QgbGV0dGVy
LCB1cGRhdGUgdGhlCisgICAgICAgIGZpcnN0IGxldHRlcidzIHN0eWxlIHdoZW4gdGhlIGZyYWdt
ZW50J3Mgc3R5bGUgaXMgY2hhbmdlZC4KKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9maXJzdC1s
ZXR0ZXItbmVzdGVkLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOiBN
YWtlIHVwZGF0ZUZpcnN0TGV0dGVyIGFjY2Vzc2JpbGUgZnJvbQorICAgICAgICBSZW5kZXJUZXh0
RnJhZ21lbnQuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlKTogSWYg
YXBwcm9wcmlhdGUsIHVwZGF0ZQorICAgICAgICBmaXJzdCBsZXR0ZXIgYWZ0ZXIgcmVtb3Zpbmcg
c3RhbGUgY2FjaGVkIHBzZXVkbyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRG
cmFnbWVudDo6YmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcik6IEhlbHBlcgorICAgICAg
ICB0byBnZXQgdGhlIGJsb2NrIGZvciB0aGUgZmlyc3QgbGV0dGVyLgorICAgICAgICAqIHJlbmRl
cmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hl
ZFBzZXVkb1N0eWxlKTogUmVtb3ZlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgcHNldWRvIHN0eWxl
IGZyb20gY2FjaGUuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisK
IDIwMTAtMTAtMDkgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmgKaW5kZXggOWQ1MzQ2YmNjYWM4NTRkNDdmNDUxYmIwNjUxZWNlY2EzOGIxZThmMy4uZjdl
YjM5YWVmNTI5OWNkNTdlNzA1NzdkNzhiOWRiOWU3MzRlNmZmOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5oCkBAIC0xODcsNiArMTg3LDggQEAgcHVibGljOgogICAgIGludCBjb2xsYXBzZWRNYXJn
aW5CZWZvcmVGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKICAgICBpbnQgY29sbGFw
c2VkTWFyZ2luQWZ0ZXJGb3JDaGlsZChSZW5kZXJCb3gqIGNoaWxkKSBjb25zdDsKIAorICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOworCiAgICAgY2xhc3MgTWFyZ2luVmFsdWVz
IHsKICAgICBwdWJsaWM6CiAgICAgICAgIE1hcmdpblZhbHVlcyhpbnQgYmVmb3JlUG9zLCBpbnQg
YmVmb3JlTmVnLCBpbnQgYWZ0ZXJQb3MsIGludCBhZnRlck5lZykKQEAgLTI3NSw4ICsyNzcsNiBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBpbnQgZmlyc3RMaW5lQm94QmFzZWxpbmUoKSBjb25z
dDsKICAgICB2aXJ0dWFsIGludCBsYXN0TGluZUJveEJhc2VsaW5lKCkgY29uc3Q7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlRmlyc3RMZXR0ZXIoKTsKLQogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVIaXRUZXN0UmVzdWx0KEhpdFRlc3RSZXN1bHQmLCBjb25zdCBJbnRQb2ludCYpOwogCiAgICAg
Ly8gRGVsYXkgdXBkYXRlIHNjcm9sbGJhciB1bnRpbCBmaW5pc2hEZWxheVJlcGFpbnQoKSB3aWxs
IGJlCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3Bw
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAppbmRleCA3MDVjMDk1
NzUyMDIxM2U4NDRiNWE0MjBmODc5ZmUwZDBmYTE5M2Q5Li5lYzYyZDg1YTQwMGZiZjk0MzE4YTJi
NmNlOWVlNTdiOWEzZjNmYjFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0RnJhZ21lbnQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVu
dC5jcHAKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJS
ZW5kZXJUZXh0RnJhZ21lbnQuaCIKIAorI2luY2x1ZGUgIlJlbmRlckJsb2NrLmgiCiAjaW5jbHVk
ZSAiVGV4dC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01Nyw2ICs1OCwxNiBAQCBQYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IFJlbmRlclRleHRGcmFnbWVudDo6b3JpZ2luYWxUZXh0KCkgY29u
c3QKICAgICByZXR1cm4gcmVzdWx0LT5zdWJzdHJpbmcoc3RhcnQoKSwgZW5kKCkpOwogfQogCit2
b2lkIFJlbmRlclRleHRGcmFnbWVudDo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRp
ZmYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICBSZW5kZXJUZXh0OjpzdHls
ZURpZENoYW5nZShkaWZmLCBvbGRTdHlsZSk7CisKKyAgICBpZiAoUmVuZGVyQmxvY2sqIGJsb2Nr
ID0gYmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcigpKSB7CisgICAgICAgIGJsb2NrLT5z
dHlsZSgpLT5yZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpOworICAgICAgICBi
bG9jay0+dXBkYXRlRmlyc3RMZXR0ZXIoKTsKKyAgICB9Cit9CisKIHZvaWQgUmVuZGVyVGV4dEZy
YWdtZW50OjpkZXN0cm95KCkKIHsKICAgICBpZiAobV9maXJzdExldHRlcikKQEAgLTkyLDQgKzEw
MywxNSBAQCBVQ2hhciBSZW5kZXJUZXh0RnJhZ21lbnQ6OnByZXZpb3VzQ2hhcmFjdGVyKCkgY29u
c3QKICAgICByZXR1cm4gUmVuZGVyVGV4dDo6cHJldmlvdXNDaGFyYWN0ZXIoKTsKIH0KIAorUmVu
ZGVyQmxvY2sqIFJlbmRlclRleHRGcmFnbWVudDo6YmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExl
dHRlcigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZpcnN0TGV0dGVyKQorICAgICAgICByZXR1cm4g
MDsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogYmxvY2sgPSBtX2ZpcnN0TGV0dGVyLT5wYXJlbnQo
KTsgYmxvY2s7IGJsb2NrID0gYmxvY2stPnBhcmVudCgpKSB7CisgICAgICAgIGlmIChibG9jay0+
c3R5bGUoKS0+aGFzUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKSAmJiBibG9jay0+Y2FuSGF2ZUNo
aWxkcmVuKCkgJiYgYmxvY2stPmlzUmVuZGVyQmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiB0
b1JlbmRlckJsb2NrKGJsb2NrKTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5oIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmgKaW5kZXgg
YWJiM2ZhNDQxOGEyODNjZDRkYmVmNGJkZjI3ZGEzOTgzZWQ4ZTBiNC4uYzI1MWY4MTk0YmExNzg2
M2NmYmMzZGUyZWJiYjY5OTNjYzBiN2I4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZy
YWdtZW50LmgKQEAgLTUwLDkgKzUwLDEzIEBAIHB1YmxpYzoKICAgICBTdHJpbmdJbXBsKiBjb250
ZW50U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50U3RyaW5nLmdldCgpOyB9CiAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG9yaWdpbmFsVGV4dCgpIGNvbnN0OwogCitw
cm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIHN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5j
ZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VGV4dEludGVybmFsKFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4pOwogICAgIHZpcnR1
YWwgVUNoYXIgcHJldmlvdXNDaGFyYWN0ZXIoKSBjb25zdDsKKyAgICBSZW5kZXJCbG9jayogYmxv
Y2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcigpIGNvbnN0OwogCiAgICAgdW5zaWduZWQgbV9z
dGFydDsKICAgICB1bnNpZ25lZCBtX2VuZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcAppbmRleCBiNTZiYjFlOTdmOTE4MjRlZjg4ZmVkOTA1N2ExNTkzMDQyMjJmODEyLi5m
YjkzNGIyZTllZDA0MTUyMDE5N2JlYjExZGVmOTNjMjQ2ZDI2NzVlIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCkBAIC0yNDQsNiArMjQ0LDE5IEBAIFJlbmRlclN0eWxl
KiBSZW5kZXJTdHlsZTo6YWRkQ2FjaGVkUHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4gcHNldWRvKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3ZvaWQgUmVuZGVyU3R5bGU6OnJl
bW92ZUNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBpZCkKK3sKKyAgICBpZiAoIW1fY2FjaGVk
UHNldWRvU3R5bGVzKQorICAgICAgICByZXR1cm47CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgUmVuZGVyU3R5
bGUqIHBzZXVkb1N0eWxlID0gbV9jYWNoZWRQc2V1ZG9TdHlsZXMtPmF0KGkpLmdldCgpOworICAg
ICAgICBpZiAocHNldWRvU3R5bGUtPnN0eWxlVHlwZSgpID09IHBpZCkgeworICAgICAgICAgICAg
bV9jYWNoZWRQc2V1ZG9TdHlsZXMtPnJlbW92ZShpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogYm9vbCBSZW5kZXJTdHlsZTo6aW5oZXJpdGVkTm90RXF1YWwo
Y29uc3QgUmVuZGVyU3R5bGUqIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBpbmhlcml0ZWRf
ZmxhZ3MgIT0gb3RoZXItPmluaGVyaXRlZF9mbGFncyB8fApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmgKaW5kZXggOWYzOWUwZjUyM2EzMmZlMThlMTg2ZDQxMmYxNmM4ZWM2NTI3YWI0
Yi4uNDJmM2ZjY2I4YTgyMDBiMzE4MmZjNDdkMmRiY2M1N2EzZjBiODUyYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCkBAIC0zMjUsNiArMzI1LDcgQEAgcHVibGljOgogCiAg
ICAgUmVuZGVyU3R5bGUqIGdldENhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkKSBjb25zdDsKICAg
ICBSZW5kZXJTdHlsZSogYWRkQ2FjaGVkUHNldWRvU3R5bGUoUGFzc1JlZlB0cjxSZW5kZXJTdHls
ZT4pOworICAgIHZvaWQgcmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQpOwogCiAgICAg
Y29uc3QgUHNldWRvU3R5bGVDYWNoZSogY2FjaGVkUHNldWRvU3R5bGVzKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRQc2V1ZG9TdHlsZXMuZ2V0KCk7IH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71022</attachid>
            <date>2010-10-18 04:57:21 -0700</date>
            <delta_ts>2010-10-18 05:10:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-14550-20101018045719.patch</filename>
            <type>text/plain</type>
            <size>15636</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YTU5OTQ0YzIxNzE1MWUyYzk2OWFjNDFjNGNhZjY1MzA0MWRmNDcwLi4yZGFjNDhm
OGMyNGE2ODQwYjVjZjdiYTI4NDQzZTg0NjNiOTkwNjI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTggIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgQnVnIDE0NTUw
IC0gTm9uLWxheW91dCBzdHlsZSBjaGFuZ2UgZG9lcyBub3QgdXBkYXRlIG5lc3RlZCBmaXJzdC1s
ZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTUwCisKKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVk
LWFkZGVkLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEwLTE3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzdjZjU3M2Y2M2I2OTk5YjNjZDg0ZTJmOGFhZjhjM2QxZWE1MzE0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoZSB0aHJlZSBzcGFucyBiZWxvdyBzaG91bGQg
bG9vayB0aGUgc2FtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTcGFuCisKK1Nw
YW4KKworU3BhbgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScp
Lm9mZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNl
dFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNl
dFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRo
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1OGY0ZjBhN2VlNGRmMzhlYWUzYzhkMTA4NzUxMzQ3MDdlZDJhODMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKQEAgLTAs
MCArMSw0MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3Qg
Zm9yIGZpcnN0LWxldHRlciBmb3IgbmVzdGVkIGVsZW1lbnRzPC90aXRsZT4KKzxzdHlsZT4KKy50
ZXN0OmZpcnN0LWxldHRlciB7IGNvbG9yOiBncmVlbjsgfQorLmJveGVkIHsgYm9yZGVyOiBzb2xp
ZCAxcHg7IH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKworPHAgY2xhc3M9InRlc3QiIGlkPSJ0ZXN0X3BfMSI+CisgICAg
PHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzEiPlNwYW48L3NwYW4+Cis8L3A+Cis8
cCBjbGFzcz0idGVzdCI+CisgICAgPHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzIi
IGNsYXNzPSJib3hlZCI+U3Bhbjwvc3Bhbj4KKzwvcD4KKzxwPgorICAgIDxzcGFuIGNsYXNzPSJi
b3hlZCIgaWQ9InJlZl9zcGFuIiBzdHlsZT0iZm9udC1zaXplOjMycHgiPjxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+Uzwvc3Bhbj5wYW48L3NwYW4+Cis8L3A+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3BfMScpLnN0eWxlLmZvbnRTaXplID0gJzMycHgnOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3Bhbl8yJykuc3R5bGUuZm9udFNpemUgPSAnMzJw
eCc7CisKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCitkZXNjcmlwdGlvbigiVGhlIHRocmVl
IHNwYW5zIGJlbG93IHNob3VsZCBsb29rIHRoZSBzYW1lLiIpOworc2hvdWxkQmUoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScpLm9mZnNldFdpZHRoIiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRoIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3Bhbl8yJykub2Zmc2V0V2lkdGgiLCAiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3JlZl9zcGFuJykub2Zmc2V0V2lkdGgiKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVkLWFkZGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVkLWFkZGVk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjg0ZTMyYmFhMzFkMmZmZDRhODc0ZmNjZjlhNjhi
MjgxNjVhOGRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3Qt
bGV0dGVyLXJlbW92ZWQtYWRkZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1RoZSBm
b2xsb3dpbmcgcGFpcnMgc2hvdWxkIGxvb2sgdGhlIHNhbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworVGVzdCAxOgorQmxvY2sgdG8gSW5saW5lCitCbG9jayB0byBJbmxpbmUKK1Rl
c3QgMjoKK0lubGluZSB0byBCbG9jaworSW5saW5lIHRvIEJsb2NrCitUZXN0IDM6Citwc2V1ZG8K
K3BzZXVkbworVGVzdCA0OiAoQ3VycmVudGx5IGZhaWxpbmcpCitwc2V1ZG8KK3BzZXVkbworVGVz
dCA1OgorVG8gRmxvYXQKK1RvIEZsb2F0CisKK1Rlc3QgNjoKK1RvIE5vbiBGbG9hdAorVG8gTm9u
IEZsb2F0CitUZXN0IDc6IChDdXJyZW50bHkgZmFpbGluZykKK1RvIEZsb2F0CitUbyBGbG9hdAor
CitUZXN0IDg6CitUbyBOb24gRmxvYXQKK1RvIE5vbiBGbG9hdAorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdDEnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVmMScpLm9mZnNldFdpZHRoIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3QyJykub2Zmc2V0SGVpZ2h0ID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWYy
Jykub2Zmc2V0SGVpZ2h0IGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QzJykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjMnKS5vZmZz
ZXRXaWR0aCBpcyB0cnVlCitGQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcpLm9m
ZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY0Jykub2Zmc2V0V2lkdGgg
c2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3Q1Jykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjUnKS5v
ZmZzZXRXaWR0aCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Nicp
Lm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY2Jykub2Zmc2V0V2lk
dGggaXMgdHJ1ZQorRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDcnKS5vZmZzZXRX
aWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmNycpLm9mZnNldFdpZHRoIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
OCcpLm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY4Jykub2Zmc2V0
V2lkdGggaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1y
ZW1vdmVkLWFkZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVt
b3ZlZC1hZGRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI5ZDZjOGU0NjY2MjlhNTFjZGY5ZTY5Y2I2N2I2
ZTQxMjJjOWFlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJz
dC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC5odG1sCkBAIC0wLDAgKzEsOTAgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBmaXJzdC1sZXR0ZXIgdGhhdCBp
cyByZW1vdmVkIG9yIGFkZGVkIGJ5IHN0eWxlIGNoYW5nZTwvdGl0bGU+Cis8c3R5bGU+CisgICAg
LnRlc3Q6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IGdyZWVuOyBmb250LXNpemU6NjRweDsgZmxvYXQ6
aW5oZXJpdDsgfQorICAgIC50ZXN0IHsgY2xlYXI6Ym90aDsgfQorICAgIC5ib3hlZCB7IGJvcmRl
cjogc29saWQgMXB4OyB9CisgICAgLmJlZjpiZWZvcmUgeyBjb250ZW50OiJCZWZvcmUgIjsgfQor
ICAgIC50ZXN0X2I6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IGdyZWVuOyBmb250LXNpemU6NjRweDsg
ZmxvYXQ6bGVmdDsgfQorICAgIC5yZWZfYjpmaXJzdC1sZXR0ZXIgeyBjb2xvcjogZ3JlZW47IGZv
bnQtc2l6ZTo2NHB4OyBmbG9hdDpub25lOyB9Cis8L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiLz4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisKK1Rlc3QgMTo8YnIvPgorPGRp
diBjbGFzcz0idGVzdCBib3hlZCIgaWQ9InRlc3QxIj5CbG9jayB0byBJbmxpbmU8L2Rpdj48YnIv
PgorPGRpdiBjbGFzcz0idGVzdCBib3hlZCIgaWQ9InJlZjEiIHN0eWxlPSJkaXNwbGF5OmlubGlu
ZSI+QmxvY2sgdG8gSW5saW5lPC9kaXY+PGJyLz4KKzxoci8+CisKK1Rlc3QgMjo8YnIvPgorPHNw
YW4gY2xhc3M9InRlc3QgYm94ZWQiIGlkPSJ0ZXN0MiI+SW5saW5lIHRvIEJsb2NrPC9zcGFuPgor
PHNwYW4gY2xhc3M9InRlc3QgYm94ZWQiIGlkPSJyZWYyIiBzdHlsZT0iZGlzcGxheTpibG9jayI+
SW5saW5lIHRvIEJsb2NrPC9zcGFuPgorPGhyLz4KKworVGVzdCAzOjxici8+Cis8ZGl2IGNsYXNz
PSJ0ZXN0Ij48c3BhbiBpZD0idGVzdDMiIGNsYXNzPSJib3hlZCBiZWYiPnBzZXVkbzwvc3Bhbj48
L2Rpdj4KKzxkaXYgY2xhc3M9InRlc3QiPjxzcGFuIGlkPSJyZWYzIiBjbGFzcz0iYm94ZWQiPnBz
ZXVkbzwvc3Bhbj48L2Rpdj4KKzxoci8+CisKK1Rlc3QgNDogKEN1cnJlbnRseSBmYWlsaW5nKTxi
ci8+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3BhbiBpZD0idGVzdDQiIGNsYXNzPSJib3hlZCI+cHNl
dWRvPC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4gaWQ9InJlZjQiIGNsYXNz
PSJib3hlZCBiZWYiPnBzZXVkbzwvc3Bhbj48L2Rpdj4KKzxoci8+CisKK1Rlc3QgNTo8YnIvPgor
PGRpdiBjbGFzcz0idGVzdCI+PHNwYW4gaWQ9InRlc3Q1IiBjbGFzcz0iYm94ZWQiIHN0eWxlPSJm
bG9hdDpub25lIj5UbyBGbG9hdDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9InRlc3QiPjxzcGFu
IGlkPSJyZWY1IiBjbGFzcz0iYm94ZWQiIHN0eWxlPSJmbG9hdDpsZWZ0Ij5UbyBGbG9hdDwvc3Bh
bj48L2Rpdj4KKzxici8+Cis8aHIvPgorCitUZXN0IDY6PGJyLz4KKzxkaXYgY2xhc3M9InRlc3Qi
PjxzcGFuIGlkPSJ0ZXN0NiIgY2xhc3M9ImJveGVkIiBzdHlsZT0iZmxvYXQ6bGVmdCI+VG8gTm9u
IEZsb2F0PC9zcGFuPjwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4gaWQ9InJlZjYiIGNs
YXNzPSJib3hlZCIgc3R5bGU9ImZsb2F0Om5vbmUiPlRvIE5vbiBGbG9hdDwvc3Bhbj48L2Rpdj4K
Kzxoci8+CisKK1Rlc3QgNzogKEN1cnJlbnRseSBmYWlsaW5nKTxici8+Cis8ZGl2IGNsYXNzPSJ0
ZXN0Ij48ZGl2IGlkPSJ0ZXN0NyIgY2xhc3M9ImJveGVkIiBzdHlsZT0iZmxvYXQ6bm9uZSI+VG8g
RmxvYXQ8L2Rpdj48L2Rpdj4KKzxkaXYgY2xhc3M9InRlc3QiPjxkaXYgaWQ9InJlZjciIGNsYXNz
PSJib3hlZCIgc3R5bGU9ImZsb2F0OmxlZnQiPlRvIEZsb2F0PC9kaXY+PC9kaXY+Cis8YnIvPgor
PGhyLz4KKworVGVzdCA4Ojxici8+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48ZGl2IGlkPSJ0ZXN0OCIg
Y2xhc3M9ImJveGVkIiBzdHlsZT0iZmxvYXQ6bGVmdCI+VG8gTm9uIEZsb2F0PC9kaXY+PC9kaXY+
Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48ZGl2IGlkPSJyZWY4IiBjbGFzcz0iYm94ZWQiIHN0eWxlPSJm
bG9hdDpub25lIj5UbyBOb24gRmxvYXQ8L2Rpdj48L2Rpdj4KKzxoci8+CisKKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorCis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRoZSBmb2xsb3dpbmcgcGFp
cnMgc2hvdWxkIGxvb2sgdGhlIHNhbWUuIik7CisKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9wOyAv
LyBGb3JjZSBsYXlvdXQKKworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QxIikuc3R5bGUu
ZGlzcGxheSA9ICJpbmxpbmUiOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIikuc3R5
bGUuZGlzcGxheSA9ICJibG9jayI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKS5j
bGFzc05hbWUgPSAiYm94ZWQiOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q0IikuY2xh
c3NOYW1lID0gImJveGVkIGJlZiI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUiKS5z
dHlsZS5mbG9hdCA9ICJsZWZ0IjsKK2RvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NiIpLnN0
eWxlLmZsb2F0ID0gIm5vbmUiOworZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q3Iikuc3R5
bGUuZmxvYXQgPSAibGVmdCI7Citkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDgiKS5zdHls
ZS5mbG9hdCA9ICJub25lIjsKKworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgndGVzdDEnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMScp
Lm9mZnNldFdpZHRoIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0
ZXN0MicpLm9mZnNldEhlaWdodCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMicpLm9m
ZnNldEhlaWdodCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dDMnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmMycpLm9mZnNl
dFdpZHRoIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcp
Lm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY0Jykub2Zmc2V0V2lk
dGgiKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q1Jykub2Zm
c2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjUnKS5vZmZzZXRXaWR0aCIp
Oworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDYnKS5vZmZzZXRX
aWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmNicpLm9mZnNldFdpZHRoIik7Citz
aG91bGRCZVRydWUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NycpLm9mZnNldFdpZHRo
ID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY3Jykub2Zmc2V0V2lkdGgiKTsKK3Nob3Vs
ZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Q4Jykub2Zmc2V0V2lkdGggPT0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjgnKS5vZmZzZXRXaWR0aCIpOworCit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwZDE5
ZTQwNzMxZjhiN2YwMzg5MGQxOWMyNjI3NGQxMmRmMDA3NmM0Li5lMGE0NWE4OTYyMTFmYjcxYTgz
NDYxMTIwMmVkZTM1MTUyNjU5YjFlIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTEwLTE4ICBZdXpvIEZ1
amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggZm9yIEJ1ZyAxNDU1MCAtIE5vbi1sYXlvdXQgc3R5bGUg
Y2hhbmdlIGRvZXMgbm90IHVwZGF0ZSBuZXN0ZWQgZmlyc3QtbGV0dGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU1MAorCisgICAgICAgIElmIGEg
cmVuZGVyIHRleHQgZnJhZ21lbnQgaXMgYWNjb21wYW5pZWQgYnkgYSBmaXJzdCBsZXR0ZXIsIHVw
ZGF0ZSB0aGUKKyAgICAgICAgZmlyc3QgbGV0dGVyJ3Mgc3R5bGUgd2hlbiB0aGUgZnJhZ21lbnQn
cyBzdHlsZSBpcyBjaGFuZ2VkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL2ZpcnN0LWxldHRl
ci1uZXN0ZWQuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpzdHlsZURpZENoYW5nZSk6IFN0b3AgY2FsbGlu
ZyB1cGRhdGVGaXJzdExldHRlcgorICAgICAgICBmcm9tIGhlcmUuCisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmg6IE1ha2UgdXBkYXRlRmlyc3RMZXR0ZXIgYWNjZXNzYmlsZSBmcm9t
CisgICAgICAgIFJlbmRlclRleHRGcmFnbWVudC4KKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6
c3R5bGVEaWRDaGFuZ2UpOiBJZiBhcHByb3ByaWF0ZSwgdXBkYXRlCisgICAgICAgIGZpcnN0IGxl
dHRlciBhZnRlciByZW1vdmluZyBzdGFsZSBjYWNoZWQgcHNldWRvIHN0eWxlLgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0
dGVyKTogSGVscGVyCisgICAgICAgIHRvIGdldCB0aGUgYmxvY2sgZm9yIHRoZSBmaXJzdCBsZXR0
ZXIuCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oOgorICAgICAgICAq
IHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTdHlsZTo6cmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUpOiBSZW1vdmUgdGhlIHNwZWNpZmllZAor
ICAgICAgICBwc2V1ZG8gc3R5bGUgZnJvbSBjYWNoZS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKwogMjAxMC0xMC0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcAppbmRleCAxMDIxOGIyNTAwNGE4M2ViYjc3NzE1MWM2Nzk2M2I3MTdh
ZDZmYzI0Li45MmZlYjI3NGI3NzI2YzZlOWFhZGViMzI1MjEyOTkzNGMzMTUwOGRhIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBAIC0yNTYsNyArMjU2LDYgQEAgdm9pZCBSZW5kZXJCbG9j
azo6c3R5bGVEaWRDaGFuZ2UoU3R5bGVEaWZmZXJlbmNlIGRpZmYsIGNvbnN0IFJlbmRlclN0eWxl
KiBvbGRTdHkKICAgICAgICAgdXBkYXRlQmVmb3JlQWZ0ZXJDb250ZW50KEJFRk9SRSk7CiAgICAg
ICAgIHVwZGF0ZUJlZm9yZUFmdGVyQ29udGVudChBRlRFUik7CiAgICAgfQotICAgIHVwZGF0ZUZp
cnN0TGV0dGVyKCk7CiB9CiAKIHZvaWQgUmVuZGVyQmxvY2s6OnVwZGF0ZUJlZm9yZUFmdGVyQ29u
dGVudChQc2V1ZG9JZCBwc2V1ZG9JZCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCmluZGV4IDk2MWYw
ZmVlYzFlOTRlMGJhYTFiM2FkYmMxZjhmYzk0YmY0N2E5NmMuLjI1ZGE4ZjNmODgzNzZhM2U2MWQw
MTJlYWU1YTA1MTM5M2NhZTg4Y2QgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJsb2NrLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suaApAQCAtMTgxLDYg
KzE4MSw4IEBAIHB1YmxpYzoKICAgICBpbnQgY29sbGFwc2VkTWFyZ2luQmVmb3JlRm9yQ2hpbGQo
UmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAgICAgaW50IGNvbGxhcHNlZE1hcmdpbkFmdGVyRm9y
Q2hpbGQoUmVuZGVyQm94KiBjaGlsZCkgY29uc3Q7CiAKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Rmlyc3RMZXR0ZXIoKTsKKwogICAgIGNsYXNzIE1hcmdpblZhbHVlcyB7CiAgICAgcHVibGljOgog
ICAgICAgICBNYXJnaW5WYWx1ZXMoaW50IGJlZm9yZVBvcywgaW50IGJlZm9yZU5lZywgaW50IGFm
dGVyUG9zLCBpbnQgYWZ0ZXJOZWcpCkBAIC0yNjksOCArMjcxLDYgQEAgcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgaW50IGZpcnN0TGluZUJveEJhc2VsaW5lKCkgY29uc3Q7CiAgICAgdmlydHVhbCBp
bnQgbGFzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0
ZUZpcnN0TGV0dGVyKCk7Ci0KICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSGl0VGVzdFJlc3VsdChI
aXRUZXN0UmVzdWx0JiwgY29uc3QgSW50UG9pbnQmKTsKIAogICAgIC8vIERlbGF5IHVwZGF0ZSBz
Y3JvbGxiYXIgdW50aWwgZmluaXNoRGVsYXlSZXBhaW50KCkgd2lsbCBiZQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKaW5kZXggNzA1YzA5NTc1MjAyMTNlODQ0YjVhNDIw
Zjg3OWZlMGQwZmExOTNkOS4uZWM2MmQ4NWE0MDBmYmY5NDMxOGEyYjZjZTllZTU3YjlhM2YzZmIx
ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCkBAIC0yMyw2ICsy
Myw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dEZyYWdtZW50
LmgiCiAKKyNpbmNsdWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlRleHQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNTcsNiArNTgsMTYgQEAgUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBSZW5kZXJUZXh0RnJhZ21lbnQ6Om9yaWdpbmFsVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIHJl
c3VsdC0+c3Vic3RyaW5nKHN0YXJ0KCksIGVuZCgpKTsKIH0KIAordm9pZCBSZW5kZXJUZXh0RnJh
Z21lbnQ6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVyZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJT
dHlsZSogb2xkU3R5bGUpCit7CisgICAgUmVuZGVyVGV4dDo6c3R5bGVEaWRDaGFuZ2UoZGlmZiwg
b2xkU3R5bGUpOworCisgICAgaWYgKFJlbmRlckJsb2NrKiBibG9jayA9IGJsb2NrRm9yQWNjb21w
YW55aW5nRmlyc3RMZXR0ZXIoKSkgeworICAgICAgICBibG9jay0+c3R5bGUoKS0+cmVtb3ZlQ2Fj
aGVkUHNldWRvU3R5bGUoRklSU1RfTEVUVEVSKTsKKyAgICAgICAgYmxvY2stPnVwZGF0ZUZpcnN0
TGV0dGVyKCk7CisgICAgfQorfQorCiB2b2lkIFJlbmRlclRleHRGcmFnbWVudDo6ZGVzdHJveSgp
CiB7CiAgICAgaWYgKG1fZmlyc3RMZXR0ZXIpCkBAIC05Miw0ICsxMDMsMTUgQEAgVUNoYXIgUmVu
ZGVyVGV4dEZyYWdtZW50OjpwcmV2aW91c0NoYXJhY3RlcigpIGNvbnN0CiAgICAgcmV0dXJuIFJl
bmRlclRleHQ6OnByZXZpb3VzQ2hhcmFjdGVyKCk7CiB9CiAKK1JlbmRlckJsb2NrKiBSZW5kZXJU
ZXh0RnJhZ21lbnQ6OmJsb2NrRm9yQWNjb21wYW55aW5nRmlyc3RMZXR0ZXIoKSBjb25zdAorewor
ICAgIGlmICghbV9maXJzdExldHRlcikKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGJsb2NrID0gbV9maXJzdExldHRlci0+cGFyZW50KCk7IGJsb2NrOyBibG9jayA9
IGJsb2NrLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoYmxvY2stPnN0eWxlKCktPmhhc1BzZXVk
b1N0eWxlKEZJUlNUX0xFVFRFUikgJiYgYmxvY2stPmNhbkhhdmVDaGlsZHJlbigpICYmIGJsb2Nr
LT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgICAgICByZXR1cm4gdG9SZW5kZXJCbG9jayhibG9j
ayk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaCBiL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCmluZGV4IGFiYjNmYTQ0MThhMjgzY2Q0
ZGJlZjRiZGYyN2RhMzk4M2VkOGUwYjQuLmMyNTFmODE5NGJhMTc4NjNjZmJjM2RlMmViYmI2OTkz
Y2MwYjdiODQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVu
dC5oCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5oCkBAIC01MCw5
ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nSW1wbCogY29udGVudFN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFN0cmluZy5nZXQoKTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBvcmlnaW5hbFRleHQoKSBjb25zdDsKIAorcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgdm9pZCBzdHlsZURpZENoYW5nZShTdHlsZURpZmZlcmVuY2UsIGNvbnN0IFJlbmRlclN0
eWxlKiBvbGRTdHlsZSk7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldFRleHRJbnRl
cm5hbChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+KTsKICAgICB2aXJ0dWFsIFVDaGFyIHByZXZpb3Vz
Q2hhcmFjdGVyKCkgY29uc3Q7CisgICAgUmVuZGVyQmxvY2sqIGJsb2NrRm9yQWNjb21wYW55aW5n
Rmlyc3RMZXR0ZXIoKSBjb25zdDsKIAogICAgIHVuc2lnbmVkIG1fc3RhcnQ7CiAgICAgdW5zaWdu
ZWQgbV9lbmQ7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKaW5kZXggYjU2
YmIxZTk3ZjkxODI0ZWY4OGZlZDkwNTdhMTU5MzA0MjIyZjgxMi4uZmI5MzRiMmU5ZWQwNDE1MjAx
OTdiZWIxMWRlZjkzYzI0NmQyNjc1ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtMjQ0LDYgKzI0NCwxOSBAQCBSZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmFk
ZENhY2hlZFBzZXVkb1N0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IHBzZXVkbykKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIFJlbmRlclN0eWxlOjpyZW1vdmVDYWNoZWRQc2V1ZG9T
dHlsZShQc2V1ZG9JZCBwaWQpCit7CisgICAgaWYgKCFtX2NhY2hlZFBzZXVkb1N0eWxlcykKKyAg
ICAgICAgcmV0dXJuOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jYWNoZWRQc2V1ZG9T
dHlsZXMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIFJlbmRlclN0eWxlKiBwc2V1ZG9TdHlsZSA9
IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5hdChpKS5nZXQoKTsKKyAgICAgICAgaWYgKHBzZXVkb1N0
eWxlLT5zdHlsZVR5cGUoKSA9PSBwaWQpIHsKKyAgICAgICAgICAgIG1fY2FjaGVkUHNldWRvU3R5
bGVzLT5yZW1vdmUoaSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKIGJvb2wgUmVuZGVyU3R5bGU6OmluaGVyaXRlZE5vdEVxdWFsKGNvbnN0IFJlbmRlclN0eWxl
KiBvdGhlcikgY29uc3QKIHsKICAgICByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzICE9IG90aGVyLT5p
bmhlcml0ZWRfZmxhZ3MgfHwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1Jl
bmRlclN0eWxlLmggYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCmluZGV4
IDlmMzllMGY1MjNhMzJmZTE4ZTE4NmQ0MTJmMTZjOGVjNjUyN2FiNGIuLjQyZjNmY2NiOGE4MjAw
YjMxODJmYzQ3ZDJkYmNjNTdhM2YwYjg1MmIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuaApAQCAtMzI1LDYgKzMyNSw3IEBAIHB1YmxpYzoKIAogICAgIFJlbmRlclN0eWxlKiBn
ZXRDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9JZCkgY29uc3Q7CiAgICAgUmVuZGVyU3R5bGUqIGFk
ZENhY2hlZFBzZXVkb1N0eWxlKFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+KTsKKyAgICB2b2lkIHJl
bW92ZUNhY2hlZFBzZXVkb1N0eWxlKFBzZXVkb0lkKTsKIAogICAgIGNvbnN0IFBzZXVkb1N0eWxl
Q2FjaGUqIGNhY2hlZFBzZXVkb1N0eWxlcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUHNldWRv
U3R5bGVzLmdldCgpOyB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71024</attachid>
            <date>2010-10-18 05:10:36 -0700</date>
            <delta_ts>2010-10-28 11:24:27 -0700</delta_ts>
            <desc>Added tests for float</desc>
            <filename>bug-14550-20101018051034.patch</filename>
            <type>text/plain</type>
            <size>15493</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YTU5OTQ0YzIxNzE1MWUyYzk2OWFjNDFjNGNhZjY1MzA0MWRmNDcwLi4yZGFjNDhm
OGMyNGE2ODQwYjVjZjdiYTI4NDQzZTg0NjNiOTkwNjI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMTAtMTggIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBmb3IgQnVnIDE0NTUw
IC0gTm9uLWxheW91dCBzdHlsZSBjaGFuZ2UgZG9lcyBub3QgdXBkYXRlIG5lc3RlZCBmaXJzdC1s
ZXR0ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NTUwCisKKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVk
LWFkZGVkLmh0bWw6IEFkZGVkLgorCiAyMDEwLTEwLTE3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzdjZjU3M2Y2M2I2OTk5YjNjZDg0ZTJmOGFhZjhjM2QxZWE1MzE0YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1uZXN0ZWQtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTYgQEAKK1RoZSB0aHJlZSBzcGFucyBiZWxvdyBzaG91bGQg
bG9vayB0aGUgc2FtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCitTcGFuCisKK1Nw
YW4KKworU3BhbgorCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScp
Lm9mZnNldFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNl
dFdpZHRoCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMicpLm9mZnNl
dFdpZHRoIGlzIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRo
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3QtbGV0dGVyLW5lc3RlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmY1OGY0ZjBhN2VlNGRmMzhlYWUzYzhkMTA4NzUxMzQ3MDdlZDJhODMKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKQEAgLTAs
MCArMSw0MyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPlRlc3Qg
Zm9yIGZpcnN0LWxldHRlciBmb3IgbmVzdGVkIGVsZW1lbnRzPC90aXRsZT4KKzxzdHlsZT4KKy50
ZXN0OmZpcnN0LWxldHRlciB7IGNvbG9yOiBncmVlbjsgfQorLmJveGVkIHsgYm9yZGVyOiBzb2xp
ZCAxcHg7IH0KKzwvc3R5bGU+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXN0eWxlLmNzcyIvPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxkaXYgaWQ9ImRl
c2NyaXB0aW9uIj48L2Rpdj4KKworPHAgY2xhc3M9InRlc3QiIGlkPSJ0ZXN0X3BfMSI+CisgICAg
PHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzEiPlNwYW48L3NwYW4+Cis8L3A+Cis8
cCBjbGFzcz0idGVzdCI+CisgICAgPHNwYW4gY2xhc3M9ImJveGVkIiBpZD0idGVzdF9zcGFuXzIi
IGNsYXNzPSJib3hlZCI+U3Bhbjwvc3Bhbj4KKzwvcD4KKzxwPgorICAgIDxzcGFuIGNsYXNzPSJi
b3hlZCIgaWQ9InJlZl9zcGFuIiBzdHlsZT0iZm9udC1zaXplOjMycHgiPjxzcGFuIHN0eWxlPSJj
b2xvcjpncmVlbiI+Uzwvc3Bhbj5wYW48L3NwYW4+Cis8L3A+CisKKzxkaXYgaWQ9ImNvbnNvbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorZG9jdW1lbnQuYm9keS5vZmZzZXRUb3A7CisKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3BfMScpLnN0eWxlLmZvbnRTaXplID0gJzMycHgnOworZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3Bhbl8yJykuc3R5bGUuZm9udFNpemUgPSAnMzJw
eCc7CisKK2RvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworCitkZXNjcmlwdGlvbigiVGhlIHRocmVl
IHNwYW5zIGJlbG93IHNob3VsZCBsb29rIHRoZSBzYW1lLiIpOworc2hvdWxkQmUoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0X3NwYW5fMScpLm9mZnNldFdpZHRoIiwgImRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZWZfc3BhbicpLm9mZnNldFdpZHRoIik7CitzaG91bGRCZSgiZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Rfc3Bhbl8yJykub2Zmc2V0V2lkdGgiLCAiZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3JlZl9zcGFuJykub2Zmc2V0V2lkdGgiKTsKKwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVkLWFkZGVkLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1yZW1vdmVkLWFkZGVk
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZjg0ZTMyYmFhMzFkMmZmZDRhODc0ZmNjZjlhNjhi
MjgxNjVhOGRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvZmlyc3Qt
bGV0dGVyLXJlbW92ZWQtYWRkZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDIgQEAKK1RoZSBm
b2xsb3dpbmcgcGFpcnMgc2hvdWxkIGxvb2sgdGhlIHNhbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KKworVGVzdCAxOgorQmxvY2sgdG8gSW5saW5lCitCbG9jayB0byBJbmxpbmUKK1Rl
c3QgMjoKK0lubGluZSB0byBCbG9jaworSW5saW5lIHRvIEJsb2NrCitUZXN0IDM6Citwc2V1ZG8K
K3BzZXVkbworVGVzdCA0OiAoQ3VycmVudGx5IGZhaWxpbmcpCitwc2V1ZG8KK3BzZXVkbworVGVz
dCA1OgorVG8gRmxvYXQKK1RvIEZsb2F0CisKK1Rlc3QgNjoKK1RvIE5vbiBGbG9hdAorVG8gTm9u
IEZsb2F0CitUZXN0IDc6IChDdXJyZW50bHkgZmFpbGluZykKK1RvIEZsb2F0CitUbyBGbG9hdAor
CitUZXN0IDg6CitUbyBOb24gRmxvYXQKK1RvIE5vbiBGbG9hdAorUEFTUyBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgndGVzdDEnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVmMScpLm9mZnNldFdpZHRoIGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Rlc3QyJykub2Zmc2V0SGVpZ2h0ID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWYy
Jykub2Zmc2V0SGVpZ2h0IGlzIHRydWUKK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rl
c3QzJykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjMnKS5vZmZz
ZXRXaWR0aCBpcyB0cnVlCitGQUlMIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0NCcpLm9m
ZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY0Jykub2Zmc2V0V2lkdGgg
c2hvdWxkIGJlIHRydWUuIFdhcyBmYWxzZS4KK1BBU1MgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3Rlc3Q1Jykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjUnKS5v
ZmZzZXRXaWR0aCBpcyB0cnVlCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Nicp
Lm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY2Jykub2Zmc2V0V2lk
dGggaXMgdHJ1ZQorRkFJTCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDcnKS5vZmZzZXRX
aWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmNycpLm9mZnNldFdpZHRoIHNob3Vs
ZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitQQVNTIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0
OCcpLm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY4Jykub2Zmc2V0
V2lkdGggaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL2ZpcnN0LWxldHRlci1y
ZW1vdmVkLWFkZGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJzdC1sZXR0ZXItcmVt
b3ZlZC1hZGRlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJmMGYyOGQ1OTE0MmI0OGZmNGE0NjRjMzRlMzQw
MmE2ZjEzMDQ5MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9maXJz
dC1sZXR0ZXItcmVtb3ZlZC1hZGRlZC5odG1sCkBAIC0wLDAgKzEsODggQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5UZXN0IGZvciBmaXJzdC1sZXR0ZXIgdGhhdCBp
cyByZW1vdmVkIG9yIGFkZGVkIGJ5IHN0eWxlIGNoYW5nZTwvdGl0bGU+Cis8c3R5bGU+CisgICAg
LnRlc3Q6Zmlyc3QtbGV0dGVyIHsgY29sb3I6IGdyZWVuOyBmb250LXNpemU6NjRweDsgZmxvYXQ6
aW5oZXJpdDsgfQorICAgIC50ZXN0IHsgY2xlYXI6Ym90aDsgfQorICAgIC5ib3hlZCB7IGJvcmRl
cjogc29saWQgMXB4OyB9CisgICAgLmJlZjpiZWZvcmUgeyBjb250ZW50OiJCZWZvcmUgIjsgfQor
PC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIi8+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGVzY3JpcHRpb24i
PjwvZGl2PgorCitUZXN0IDE6PGJyLz4KKzxkaXYgY2xhc3M9InRlc3QgYm94ZWQiIGlkPSJ0ZXN0
MSI+QmxvY2sgdG8gSW5saW5lPC9kaXY+PGJyLz4KKzxkaXYgY2xhc3M9InRlc3QgYm94ZWQiIGlk
PSJyZWYxIiBzdHlsZT0iZGlzcGxheTppbmxpbmUiPkJsb2NrIHRvIElubGluZTwvZGl2Pjxici8+
Cis8aHIvPgorCitUZXN0IDI6PGJyLz4KKzxzcGFuIGNsYXNzPSJ0ZXN0IGJveGVkIiBpZD0idGVz
dDIiPklubGluZSB0byBCbG9jazwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJ0ZXN0IGJveGVkIiBpZD0i
cmVmMiIgc3R5bGU9ImRpc3BsYXk6YmxvY2siPklubGluZSB0byBCbG9jazwvc3Bhbj4KKzxoci8+
CisKK1Rlc3QgMzo8YnIvPgorPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4gaWQ9InRlc3QzIiBjbGFz
cz0iYm94ZWQgYmVmIj5wc2V1ZG88L3NwYW4+PC9kaXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3Bh
biBpZD0icmVmMyIgY2xhc3M9ImJveGVkIj5wc2V1ZG88L3NwYW4+PC9kaXY+Cis8aHIvPgorCitU
ZXN0IDQ6IChDdXJyZW50bHkgZmFpbGluZyk8YnIvPgorPGRpdiBjbGFzcz0idGVzdCI+PHNwYW4g
aWQ9InRlc3Q0IiBjbGFzcz0iYm94ZWQiPnBzZXVkbzwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xhc3M9
InRlc3QiPjxzcGFuIGlkPSJyZWY0IiBjbGFzcz0iYm94ZWQgYmVmIj5wc2V1ZG88L3NwYW4+PC9k
aXY+Cis8aHIvPgorCitUZXN0IDU6PGJyLz4KKzxkaXYgY2xhc3M9InRlc3QiPjxzcGFuIGlkPSJ0
ZXN0NSIgY2xhc3M9ImJveGVkIiBzdHlsZT0iZmxvYXQ6bm9uZSI+VG8gRmxvYXQ8L3NwYW4+PC9k
aXY+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3BhbiBpZD0icmVmNSIgY2xhc3M9ImJveGVkIiBzdHls
ZT0iZmxvYXQ6bGVmdCI+VG8gRmxvYXQ8L3NwYW4+PC9kaXY+Cis8YnIvPgorPGhyLz4KKworVGVz
dCA2Ojxici8+Cis8ZGl2IGNsYXNzPSJ0ZXN0Ij48c3BhbiBpZD0idGVzdDYiIGNsYXNzPSJib3hl
ZCIgc3R5bGU9ImZsb2F0OmxlZnQiPlRvIE5vbiBGbG9hdDwvc3Bhbj48L2Rpdj4KKzxkaXYgY2xh
c3M9InRlc3QiPjxzcGFuIGlkPSJyZWY2IiBjbGFzcz0iYm94ZWQiIHN0eWxlPSJmbG9hdDpub25l
Ij5UbyBOb24gRmxvYXQ8L3NwYW4+PC9kaXY+Cis8aHIvPgorCitUZXN0IDc6IChDdXJyZW50bHkg
ZmFpbGluZyk8YnIvPgorPGRpdiBjbGFzcz0idGVzdCI+PGRpdiBpZD0idGVzdDciIGNsYXNzPSJi
b3hlZCIgc3R5bGU9ImZsb2F0Om5vbmUiPlRvIEZsb2F0PC9kaXY+PC9kaXY+Cis8ZGl2IGNsYXNz
PSJ0ZXN0Ij48ZGl2IGlkPSJyZWY3IiBjbGFzcz0iYm94ZWQiIHN0eWxlPSJmbG9hdDpsZWZ0Ij5U
byBGbG9hdDwvZGl2PjwvZGl2PgorPGJyLz4KKzxoci8+CisKK1Rlc3QgODo8YnIvPgorPGRpdiBj
bGFzcz0idGVzdCI+PGRpdiBpZD0idGVzdDgiIGNsYXNzPSJib3hlZCIgc3R5bGU9ImZsb2F0Omxl
ZnQiPlRvIE5vbiBGbG9hdDwvZGl2PjwvZGl2PgorPGRpdiBjbGFzcz0idGVzdCI+PGRpdiBpZD0i
cmVmOCIgY2xhc3M9ImJveGVkIiBzdHlsZT0iZmxvYXQ6bm9uZSI+VG8gTm9uIEZsb2F0PC9kaXY+
PC9kaXY+Cis8aHIvPgorCis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KK2Rl
c2NyaXB0aW9uKCJUaGUgZm9sbG93aW5nIHBhaXJzIHNob3VsZCBsb29rIHRoZSBzYW1lLiIpOwor
Citkb2N1bWVudC5ib2R5Lm9mZnNldFRvcDsgLy8gRm9yY2UgbGF5b3V0CisKK2RvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0MSIpLnN0eWxlLmRpc3BsYXkgPSAiaW5saW5lIjsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MiIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QzIikuY2xhc3NOYW1lID0gImJveGVkIjsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NCIpLmNsYXNzTmFtZSA9ICJib3hlZCBiZWYiOworZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInRlc3Q1Iikuc3R5bGUuZmxvYXQgPSAibGVmdCI7Citkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDYiKS5zdHlsZS5mbG9hdCA9ICJub25lIjsKK2RvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0NyIpLnN0eWxlLmZsb2F0ID0gImxlZnQiOworZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3Q4Iikuc3R5bGUuZmxvYXQgPSAibm9uZSI7CisKK3Nob3VsZEJl
VHJ1ZSgiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QxJykub2Zmc2V0V2lkdGggPT0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjEnKS5vZmZzZXRXaWR0aCIpOworc2hvdWxkQmVUcnVl
KCJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDInKS5vZmZzZXRIZWlnaHQgPT0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZjInKS5vZmZzZXRIZWlnaHQiKTsKK3Nob3VsZEJlVHJ1ZSgi
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QzJykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3JlZjMnKS5vZmZzZXRXaWR0aCIpOworc2hvdWxkQmVUcnVlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdDQnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVmNCcpLm9mZnNldFdpZHRoIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCd0ZXN0NScpLm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZWY1Jykub2Zmc2V0V2lkdGgiKTsKK3Nob3VsZEJlVHJ1ZSgiZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Rlc3Q2Jykub2Zmc2V0V2lkdGggPT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3JlZjYnKS5vZmZzZXRXaWR0aCIpOworc2hvdWxkQmVUcnVlKCJkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgndGVzdDcnKS5vZmZzZXRXaWR0aCA9PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVmNycpLm9mZnNldFdpZHRoIik7CitzaG91bGRCZVRydWUoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCd0ZXN0OCcpLm9mZnNldFdpZHRoID09IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZWY4
Jykub2Zmc2V0V2lkdGgiKTsKKwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQxOWU0MDczMWY4YjdmMDM4OTBkMTljMjYyNzRkMTJk
ZjAwNzZjNC4uZTBhNDVhODk2MjExZmI3MWE4MzQ2MTEyMDJlZGUzNTE1MjY1OWIxZSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzMSBAQAorMjAxMC0xMC0xOCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGZvciBC
dWcgMTQ1NTAgLSBOb24tbGF5b3V0IHN0eWxlIGNoYW5nZSBkb2VzIG5vdCB1cGRhdGUgbmVzdGVk
IGZpcnN0LWxldHRlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1NTAKKworICAgICAgICBJZiBhIHJlbmRlciB0ZXh0IGZyYWdtZW50IGlzIGFjY29t
cGFuaWVkIGJ5IGEgZmlyc3QgbGV0dGVyLCB1cGRhdGUgdGhlCisgICAgICAgIGZpcnN0IGxldHRl
cidzIHN0eWxlIHdoZW4gdGhlIGZyYWdtZW50J3Mgc3R5bGUgaXMgY2hhbmdlZC4KKworICAgICAg
ICBUZXN0OiBmYXN0L2Nzcy9maXJzdC1sZXR0ZXItbmVzdGVkLmh0bWwKKworICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6
c3R5bGVEaWRDaGFuZ2UpOiBTdG9wIGNhbGxpbmcgdXBkYXRlRmlyc3RMZXR0ZXIKKyAgICAgICAg
ZnJvbSBoZXJlLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5oOiBNYWtlIHVwZGF0
ZUZpcnN0TGV0dGVyIGFjY2Vzc2JpbGUgZnJvbQorICAgICAgICBSZW5kZXJUZXh0RnJhZ21lbnQu
CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0RnJhZ21lbnQ6OnN0eWxlRGlkQ2hhbmdlKTogSWYgYXBwcm9wcmlh
dGUsIHVwZGF0ZQorICAgICAgICBmaXJzdCBsZXR0ZXIgYWZ0ZXIgcmVtb3Zpbmcgc3RhbGUgY2Fj
aGVkIHBzZXVkbyBzdHlsZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRleHRGcmFnbWVudDo6
YmxvY2tGb3JBY2NvbXBhbnlpbmdGaXJzdExldHRlcik6IEhlbHBlcgorICAgICAgICB0byBnZXQg
dGhlIGJsb2NrIGZvciB0aGUgZmlyc3QgbGV0dGVyLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUZXh0RnJhZ21lbnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnJlbW92ZUNhY2hlZFBzZXVkb1N0
eWxlKTogUmVtb3ZlIHRoZSBzcGVjaWZpZWQKKyAgICAgICAgcHNldWRvIHN0eWxlIGZyb20gY2Fj
aGUuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmg6CisKIDIwMTAtMTAt
MTcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJC
bG9jay5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKaW5kZXggMTAyMThi
MjUwMDRhODNlYmI3NzcxNTFjNjc5NjNiNzE3YWQ2ZmMyNC4uOTJmZWIyNzRiNzcyNmM2ZTlhYWRl
YjMyNTIxMjk5MzRjMzE1MDhkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjU2
LDcgKzI1Niw2IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnN0eWxlRGlkQ2hhbmdlKFN0eWxlRGlmZmVy
ZW5jZSBkaWZmLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5CiAgICAgICAgIHVwZGF0ZUJlZm9y
ZUFmdGVyQ29udGVudChCRUZPUkUpOwogICAgICAgICB1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQo
QUZURVIpOwogICAgIH0KLSAgICB1cGRhdGVGaXJzdExldHRlcigpOwogfQogCiB2b2lkIFJlbmRl
ckJsb2NrOjp1cGRhdGVCZWZvcmVBZnRlckNvbnRlbnQoUHNldWRvSWQgcHNldWRvSWQpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suaAppbmRleCA5NjFmMGZlZWMxZTk0ZTBiYWExYjNhZGJjMWY4ZmM5NGJm
NDdhOTZjLi4yNWRhOGYzZjg4Mzc2YTNlNjFkMDEyZWFlNWEwNTEzOTNjYWU4OGNkIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCisrKyBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJsb2NrLmgKQEAgLTE4MSw2ICsxODEsOCBAQCBwdWJsaWM6CiAgICAgaW50IGNv
bGxhcHNlZE1hcmdpbkJlZm9yZUZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0OwogICAg
IGludCBjb2xsYXBzZWRNYXJnaW5BZnRlckZvckNoaWxkKFJlbmRlckJveCogY2hpbGQpIGNvbnN0
OwogCisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZpcnN0TGV0dGVyKCk7CisKICAgICBjbGFzcyBN
YXJnaW5WYWx1ZXMgewogICAgIHB1YmxpYzoKICAgICAgICAgTWFyZ2luVmFsdWVzKGludCBiZWZv
cmVQb3MsIGludCBiZWZvcmVOZWcsIGludCBhZnRlclBvcywgaW50IGFmdGVyTmVnKQpAQCAtMjY5
LDggKzI3MSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGludCBmaXJzdExpbmVCb3hCYXNl
bGluZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgaW50IGxhc3RMaW5lQm94QmFzZWxpbmUoKSBjb25z
dDsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGaXJzdExldHRlcigpOwotCiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUhpdFRlc3RSZXN1bHQoSGl0VGVzdFJlc3VsdCYsIGNvbnN0IEludFBvaW50
Jik7CiAKICAgICAvLyBEZWxheSB1cGRhdGUgc2Nyb2xsYmFyIHVudGlsIGZpbmlzaERlbGF5UmVw
YWludCgpIHdpbGwgYmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRG
cmFnbWVudC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmlu
ZGV4IDcwNWMwOTU3NTIwMjEzZTg0NGI1YTQyMGY4NzlmZTBkMGZhMTkzZDkuLmVjNjJkODVhNDAw
ZmJmOTQzMThhMmI2Y2U5ZWU1N2I5YTNmM2ZiMWUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
VGV4dEZyYWdtZW50LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlbmRlclRleHRGcmFnbWVudC5oIgogCisjaW5jbHVkZSAiUmVuZGVyQmxvY2su
aCIKICNpbmNsdWRlICJUZXh0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU3LDYgKzU4
LDE2IEBAIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gUmVuZGVyVGV4dEZyYWdtZW50OjpvcmlnaW5h
bFRleHQoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQtPnN1YnN0cmluZyhzdGFydCgpLCBlbmQo
KSk7CiB9CiAKK3ZvaWQgUmVuZGVyVGV4dEZyYWdtZW50OjpzdHlsZURpZENoYW5nZShTdHlsZURp
ZmZlcmVuY2UgZGlmZiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQoreworICAgIFJlbmRl
clRleHQ6OnN0eWxlRGlkQ2hhbmdlKGRpZmYsIG9sZFN0eWxlKTsKKworICAgIGlmIChSZW5kZXJC
bG9jayogYmxvY2sgPSBibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkpIHsKKyAgICAg
ICAgYmxvY2stPnN0eWxlKCktPnJlbW92ZUNhY2hlZFBzZXVkb1N0eWxlKEZJUlNUX0xFVFRFUik7
CisgICAgICAgIGJsb2NrLT51cGRhdGVGaXJzdExldHRlcigpOworICAgIH0KK30KKwogdm9pZCBS
ZW5kZXJUZXh0RnJhZ21lbnQ6OmRlc3Ryb3koKQogewogICAgIGlmIChtX2ZpcnN0TGV0dGVyKQpA
QCAtOTIsNCArMTAzLDE1IEBAIFVDaGFyIFJlbmRlclRleHRGcmFnbWVudDo6cHJldmlvdXNDaGFy
YWN0ZXIoKSBjb25zdAogICAgIHJldHVybiBSZW5kZXJUZXh0OjpwcmV2aW91c0NoYXJhY3Rlcigp
OwogfQogCitSZW5kZXJCbG9jayogUmVuZGVyVGV4dEZyYWdtZW50OjpibG9ja0ZvckFjY29tcGFu
eWluZ0ZpcnN0TGV0dGVyKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmlyc3RMZXR0ZXIpCisgICAg
ICAgIHJldHVybiAwOworICAgIGZvciAoUmVuZGVyT2JqZWN0KiBibG9jayA9IG1fZmlyc3RMZXR0
ZXItPnBhcmVudCgpOyBibG9jazsgYmxvY2sgPSBibG9jay0+cGFyZW50KCkpIHsKKyAgICAgICAg
aWYgKGJsb2NrLT5zdHlsZSgpLT5oYXNQc2V1ZG9TdHlsZShGSVJTVF9MRVRURVIpICYmIGJsb2Nr
LT5jYW5IYXZlQ2hpbGRyZW4oKSAmJiBibG9jay0+aXNSZW5kZXJCbG9jaygpKQorICAgICAgICAg
ICAgcmV0dXJuIHRvUmVuZGVyQmxvY2soYmxvY2spOworICAgIH0KKyAgICByZXR1cm4gMDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dEZyYWdtZW50LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21l
bnQuaAppbmRleCBhYmIzZmE0NDE4YTI4M2NkNGRiZWY0YmRmMjdkYTM5ODNlZDhlMGI0Li5jMjUx
ZjgxOTRiYTE3ODYzY2ZiYzNkZTJlYmJiNjk5M2NjMGI3Yjg0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RnJhZ21lbnQuaApAQCAtNTAsOSArNTAsMTMgQEAgcHVibGljOgogICAgIFN0cmlu
Z0ltcGwqIGNvbnRlbnRTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRTdHJpbmcuZ2V0
KCk7IH0KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gb3JpZ2luYWxUZXh0KCkg
Y29uc3Q7CiAKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgc3R5bGVEaWRDaGFuZ2UoU3R5
bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUpOworCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzZXRUZXh0SW50ZXJuYWwoUGFzc1JlZlB0cjxTdHJpbmdJbXBsPik7
CiAgICAgdmlydHVhbCBVQ2hhciBwcmV2aW91c0NoYXJhY3RlcigpIGNvbnN0OworICAgIFJlbmRl
ckJsb2NrKiBibG9ja0ZvckFjY29tcGFueWluZ0ZpcnN0TGV0dGVyKCkgY29uc3Q7CiAKICAgICB1
bnNpZ25lZCBtX3N0YXJ0OwogICAgIHVuc2lnbmVkIG1fZW5kOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IGI1NmJiMWU5N2Y5MTgyNGVmODhmZWQ5MDU3YTE1OTMw
NDIyMmY4MTIuLmZiOTM0YjJlOWVkMDQxNTIwMTk3YmViMTFkZWY5M2MyNDZkMjY3NWUgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTI0NCw2ICsyNDQsMTkgQEAg
UmVuZGVyU3R5bGUqIFJlbmRlclN0eWxlOjphZGRDYWNoZWRQc2V1ZG9TdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPiBwc2V1ZG8pCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBSZW5k
ZXJTdHlsZTo6cmVtb3ZlQ2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQgcGlkKQoreworICAgIGlm
ICghbV9jYWNoZWRQc2V1ZG9TdHlsZXMpCisgICAgICAgIHJldHVybjsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fY2FjaGVkUHNldWRvU3R5bGVzLT5zaXplKCk7ICsraSkgeworICAgICAg
ICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGUgPSBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+YXQoaSku
Z2V0KCk7CisgICAgICAgIGlmIChwc2V1ZG9TdHlsZS0+c3R5bGVUeXBlKCkgPT0gcGlkKSB7Cisg
ICAgICAgICAgICBtX2NhY2hlZFBzZXVkb1N0eWxlcy0+cmVtb3ZlKGkpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiBib29sIFJlbmRlclN0eWxlOjppbmhlcml0
ZWROb3RFcXVhbChjb25zdCBSZW5kZXJTdHlsZSogb3RoZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IGluaGVyaXRlZF9mbGFncyAhPSBvdGhlci0+aW5oZXJpdGVkX2ZsYWdzIHx8CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA5ZjM5ZTBmNTIzYTMyZmUxOGUxODZkNDEyZjE2
YzhlYzY1MjdhYjRiLi40MmYzZmNjYjhhODIwMGIzMTgyZmM0N2QyZGJjYzU3YTNmMGI4NTJiIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTMyNSw2ICszMjUsNyBAQCBw
dWJsaWM6CiAKICAgICBSZW5kZXJTdHlsZSogZ2V0Q2FjaGVkUHNldWRvU3R5bGUoUHNldWRvSWQp
IGNvbnN0OwogICAgIFJlbmRlclN0eWxlKiBhZGRDYWNoZWRQc2V1ZG9TdHlsZShQYXNzUmVmUHRy
PFJlbmRlclN0eWxlPik7CisgICAgdm9pZCByZW1vdmVDYWNoZWRQc2V1ZG9TdHlsZShQc2V1ZG9J
ZCk7CiAKICAgICBjb25zdCBQc2V1ZG9TdHlsZUNhY2hlKiBjYWNoZWRQc2V1ZG9TdHlsZXMoKSBj
b25zdCB7IHJldHVybiBtX2NhY2hlZFBzZXVkb1N0eWxlcy5nZXQoKTsgfQogCg==
</data>
<flag name="review"
          id="60977"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>