<?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>65899</bug_id>
          
          <creation_ts>2011-08-08 22:31:49 -0700</creation_ts>
          <short_desc>A mouseover/mouseout event is not dispatched when a mouse moves from a direct child node of shadow root into a sibling node</short_desc>
          <delta_ts>2011-08-14 18:49:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>59805</blocked>
    
    <blocked>64249</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hayato Ito">hayato</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>morrita</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>scottfr</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>448436</commentid>
    <comment_count>0</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-08 22:31:49 -0700</bug_when>
    <thetext>Suppose the following Dom tree:

  &lt;document&gt;
    - &lt;shadowhost&gt; 
        .. shadowroot
             - &lt;input&gt; input1
             - &lt;input&gt; input2

When a mouse moves from input1 element into input2 element, mouseover/mouseout event should be dispatched at input2/input1 elements. But it doesn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448437</commentid>
    <comment_count>1</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-08 22:33:17 -0700</bug_when>
    <thetext>Related issue is:
  https://bugs.webkit.org/show_bug.cgi?id=61979

I&apos;ve found the root cause. I&apos;ll update the patch soon with a layout test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448948</commentid>
    <comment_count>2</comment_count>
      <attachid>103432</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-09 19:42:55 -0700</bug_when>
    <thetext>Created attachment 103432
WIP - add some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448949</commentid>
    <comment_count>3</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-09 19:48:02 -0700</bug_when>
    <thetext>I&apos;ve added a layout test. I&apos;ll add more tests later.

I&apos;ve found yet another case where the current event handling implementation cannot handle nicely. I guess there are more corner cases that we should check.  I am sure I should rewrite most part of EventDispatcher::adjustRelatedTarget, EventDispatcher::adjustToShadowBoundaries and so on to handle these corner cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449185</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-10 09:03:18 -0700</bug_when>
    <thetext>Can you explain a bit more about what&apos;s happening? Is the mouseover/out dispatch not following the algorithm described in http://dglazkov.github.com/component-model/events.html?


The test you submitted is hard to understand by inspection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449713</commentid>
    <comment_count>5</comment_count>
      <attachid>103607</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-11 06:01:24 -0700</bug_when>
    <thetext>Created attachment 103607
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449716</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-11 06:10:00 -0700</bug_when>
    <thetext>Hi Dimitry,
Thank you for the comment.

(In reply to comment #4)
&gt; Can you explain a bit more about what&apos;s happening? Is the mouseover/out dispatch not following the algorithm described in http://dglazkov.github.com/component-model/events.html?
&gt;
 
Let me update the current status.
I&apos;ve uploaded a patch working in progress. But I think that&apos;s worth for reviewing. That fixes some corner cases. Please see a ChangeLog to see what this patch try to fix.

&gt; The test you submitted is hard to understand by inspection.

Yeah, sorry for the inconvenience. It&apos;s difficult to write a readable test for these type of issues.
I&apos;ve added more tests and slightly updated tests so that it can be more understandable. Let me share tests now as is. I&apos;ll update the tests later.

Actually I&apos;ve tried to reuse fast/events/shadow-boundary-crossing.html, but I&apos;d like to create new LayoutTests in order to adding more complex tests easily.

I appreciate if you could review. I am not 100% sure my understanding of how to handle events crossing shadow boundaries is correct...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449799</commentid>
    <comment_count>7</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-11 08:42:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hi Dimitry,
&gt; Thank you for the comment.
&gt; 
&gt; (In reply to comment #4)
&gt; &gt; Can you explain a bit more about what&apos;s happening? Is the mouseover/out dispatch not following the algorithm described in http://dglazkov.github.com/component-model/events.html?
&gt; &gt;
&gt; 
&gt; Let me update the current status.
&gt; I&apos;ve uploaded a patch working in progress. But I think that&apos;s worth for reviewing. That fixes some corner cases. Please see a ChangeLog to see what this patch try to fix.

Ok.

&gt; 
&gt; &gt; The test you submitted is hard to understand by inspection.
&gt; 
&gt; Yeah, sorry for the inconvenience. It&apos;s difficult to write a readable test for these type of issues.
&gt; I&apos;ve added more tests and slightly updated tests so that it can be more understandable. Let me share tests now as is. I&apos;ll update the tests later.
&gt; 
&gt; Actually I&apos;ve tried to reuse fast/events/shadow-boundary-crossing.html, but I&apos;d like to create new LayoutTests in order to adding more complex tests easily.

Sounds good. Can you move fast/events/shadow-boundary-crossing.html to fast/dom/shadow? It would be nice to keep all shadow DOM-related tests in one place.

&gt; 
&gt; I appreciate if you could review. I am not 100% sure my understanding of how to handle events crossing shadow boundaries is correct...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449802</commentid>
    <comment_count>8</comment_count>
      <attachid>103607</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-11 08:49:57 -0700</bug_when>
    <thetext>Comment on attachment 103607
WIP

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

&gt; LayoutTests/fast/dom/shadow/shadow-boundary-events.html:51
&gt; +    //   eventRecores[eventType] = [&apos;target.id(@currentTarget.id)(&lt;-relatedTarget.id)&apos;, &apos;target.id(@currentTarget.id)(&lt;-relatedTarget.id)&apos;, ...]

eventRecores -&gt; eventRecords

&gt; LayoutTests/fast/dom/shadow/shadow-boundary-events.html:118
&gt; +              &apos;Move mouse from a node to its sibling node. Every nodes are outside of shadow boundary.&apos;);
&gt; +    shouldBe(&apos;dispatchedEvent(&quot;mouseover&quot;)&apos;, &apos;[&quot;div2(@div2)(&lt;-div1)&quot;, &quot;div2(@divA)(&lt;-div1)&quot;]&apos;);
&gt; +    shouldBe(&apos;dispatchedEvent(&quot;mouseout&quot;)&apos;, &apos;[&quot;div1(@div1)(&lt;-div2)&quot;, &quot;div1(@divA)(&lt;-div2)&quot;]&apos;);

I like this format! It&apos;s much easier to understand.

&gt; LayoutTests/fast/dom/shadow/shadow-boundary-events.html:121
&gt; +              &apos;Target is an ancestor of realtedTarget. Every nodes are outside of shadow boundary.&apos;);

realtedTarget -&gt; relatedTarget, Every -&gt; All (here and elsewhere)

&gt; LayoutTests/fast/dom/shadow/shadow-boundary-events.html:131
&gt; +              &apos;Both target and relatedTarget are direct child of the same shadow root.&apos;);

direct-&gt;immediate, child-&gt;children

&gt; LayoutTests/fast/dom/shadow/shadow-boundary-events.html:166
&gt; +              &apos;Target and relatedTarget exist in separated subtree, crossing shadow boundaries. Making sure that event is not dispatched beyond the lowest command bandary.&apos;);

command bandary-&gt;common boundary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450282</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-11 21:42:22 -0700</bug_when>
    <thetext>Hi Dimitri, thank you for the review.

I&apos;ll land this patch after addressing your comments.

(In reply to comment #7)
&gt; 
&gt; Sounds good. Can you move fast/events/shadow-boundary-crossing.html to fast/dom/shadow? It would be nice to keep all shadow DOM-related tests in one place.

Sure. I&apos;ll move it and include that move in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450290</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-11 22:18:54 -0700</bug_when>
    <thetext>Committed r92922: &lt;http://trac.webkit.org/changeset/92922&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450750</commentid>
    <comment_count>11</comment_count>
    <who name="Scott Franklin">scottfr</who>
    <bug_when>2011-08-12 16:24:16 -0700</bug_when>
    <thetext>Not sure if it&apos;s an issue with this patch or Chrome but,

Chromium 15.0.851.0
&lt;details&gt;&lt;summary&gt;abc&lt;canvas&gt;&lt;/canvas&gt;def&lt;/summary&gt;&lt;/details&gt;
and mouseover the canvas.

Observed behavior: sad tab
ASSERTION FAILED: targetAncestor - 1 &gt;= m_ancestors.begin()
third_party/WebKit/Source/WebCore/dom/EventDispatcher.cpp(168) : WTF::PassRefPtr&lt;WebCore::EventTarget&gt; WebCore::EventDispatcher::adjustToShadowBoundaries(WTF::PassRefPtr&lt;WebCore::Node&gt;, WTF::Vector&lt;WebCore::Node*, 0ul&gt;)

Expected behavior: no sad tab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450956</commentid>
    <comment_count>12</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-14 16:14:13 -0700</bug_when>
    <thetext>Thank you for the report. Let me take a look later.

(In reply to comment #11)
&gt; Not sure if it&apos;s an issue with this patch or Chrome but,
&gt; 
&gt; Chromium 15.0.851.0
&gt; &lt;details&gt;&lt;summary&gt;abc&lt;canvas&gt;&lt;/canvas&gt;def&lt;/summary&gt;&lt;/details&gt;
&gt; and mouseover the canvas.
&gt; 
&gt; Observed behavior: sad tab
&gt; ASSERTION FAILED: targetAncestor - 1 &gt;= m_ancestors.begin()
&gt; third_party/WebKit/Source/WebCore/dom/EventDispatcher.cpp(168) : WTF::PassRefPtr&lt;WebCore::EventTarget&gt; WebCore::EventDispatcher::adjustToShadowBoundaries(WTF::PassRefPtr&lt;WebCore::Node&gt;, WTF::Vector&lt;WebCore::Node*, 0ul&gt;)
&gt; 
&gt; Expected behavior: no sad tab</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>450971</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2011-08-14 18:49:55 -0700</bug_when>
    <thetext>Files as https://bugs.webkit.org/show_bug.cgi?id=66210
Let me continue to investigate that.

(In reply to comment #12)
&gt; Thank you for the report. Let me take a look later.
&gt; 
&gt; (In reply to comment #11)
&gt; &gt; Not sure if it&apos;s an issue with this patch or Chrome but,
&gt; &gt; 
&gt; &gt; Chromium 15.0.851.0
&gt; &gt; &lt;details&gt;&lt;summary&gt;abc&lt;canvas&gt;&lt;/canvas&gt;def&lt;/summary&gt;&lt;/details&gt;
&gt; &gt; and mouseover the canvas.
&gt; &gt; 
&gt; &gt; Observed behavior: sad tab
&gt; &gt; ASSERTION FAILED: targetAncestor - 1 &gt;= m_ancestors.begin()
&gt; &gt; third_party/WebKit/Source/WebCore/dom/EventDispatcher.cpp(168) : WTF::PassRefPtr&lt;WebCore::EventTarget&gt; WebCore::EventDispatcher::adjustToShadowBoundaries(WTF::PassRefPtr&lt;WebCore::Node&gt;, WTF::Vector&lt;WebCore::Node*, 0ul&gt;)
&gt; &gt; 
&gt; &gt; Expected behavior: no sad tab</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103432</attachid>
            <date>2011-08-09 19:42:55 -0700</date>
            <delta_ts>2011-08-11 06:01:18 -0700</delta_ts>
            <desc>WIP - add some tests.</desc>
            <filename>bug-65899-20110810114253.patch</filename>
            <type>text/plain</type>
            <size>9002</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2OTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYjFiMGZhYWYyOWQxMWMyOTljY2Fl
ZTQ2YmM5NGNmNWY5NTZhNThhLi40MTgwZDI0MDE1MjkzMmI3ODc1N2YwMjk4ZDE5YzY5NzFiNTIx
MDAwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDkgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRlc3RzIGZvciBldmVudCBoYW5kbGluZyBvbiBz
aGFkb3cgYm91bmRhcmllcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWw6
IEFkZGVkLgorCiAyMDExLTA4LTA5ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVGVzdHMgdGhhdCB3ZSBkbyBub3QgY3Jhc2ggd2hlbiB0cnlpbmcgdG8g
ZGlydHkgbGluZSBib3hlcyBvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTBiMDU2M2E0Yjcz
YzI5MDRmZjg0ZmMwMjQzOTM4ZTIzY2I3MjU5OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKQEAgLTAsMCAr
MSwxODIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jcmVhdGUtZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxkaXYgaWQ9
InNhbmRib3giPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUg
dGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9w
YWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuIik7CisKK2Z1bmN0aW9uIG1vdmVNb3Vz
ZU92ZXIoZWxlbWVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikKKyAgICAgICAg
cmV0dXJuOworCisgICAgdmFyIHggPSBlbGVtZW50Lm9mZnNldExlZnQgKyBlbGVtZW50Lm9mZnNl
dFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZz
ZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworfQorCitm
dW5jdGlvbiBtb3ZlTW91c2VPdmVyQnlPZmZzZXRZKGVsZW1lbnQsIG9mZnNldFkpCit7CisgICAg
aWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJldHVybjsKKworICAgIHZhciB4ID0g
ZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkg
PSBlbGVtZW50Lm9mZnNldFRvcCArIG9mZnNldFk7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3Zl
VG8oeCwgeSk7Cit9CisKK3ZhciBldmVudFJlY29yZHMgPSB7fTsKKworZnVuY3Rpb24gY2xlYXJF
dmVudFJlY29yZHMoKQoreworICAgIGV2ZW50UmVjb3JkcyA9IHt9OworfQorCitmdW5jdGlvbiBy
ZWNvcmRFdmVudChldmVudCkKK3sKKyAgICB2YXIgZXZlbnRUeXBlID0gZXZlbnQudHlwZQorICAg
IGlmICghZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0pIHsKKyAgICAgICAgZXZlbnRSZWNvcmRzW2V2
ZW50VHlwZV0gPSBbXQorICAgIH0KKyAgICB2YXIgZXZlbnRTdHJpbmcgPSAnJzsKKyAgICBldmVu
dFN0cmluZyArPSBldmVudC50YXJnZXQuaWQ7CisgICAgaWYgKGV2ZW50LmN1cnJlbnRUYXJnZXQp
CisgICAgICAgIGV2ZW50U3RyaW5nICs9ICcoQCcgKyBldmVudC5jdXJyZW50VGFyZ2V0LmlkICsg
JyknOworICAgIGlmIChldmVudC5yZWxhdGVkVGFyZ2V0KQorICAgICAgICBldmVudFN0cmluZyAr
PSAnKDwtJyArIGV2ZW50LnJlbGF0ZWRUYXJnZXQuaWQgKyAnKSc7CisgICAgZXZlbnRSZWNvcmRz
W2V2ZW50VHlwZV0ucHVzaChldmVudFN0cmluZyk7Cit9CisKK2Z1bmN0aW9uIGdldEVsZW1lbnRJ
blNoYWRvdyhwYXRoKQoreworICAgIHZhciBpZHMgPSBwYXRoLnNwbGl0KCcvJyk7CisgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZHNbMF0pOworICAgIGZvciAodmFy
IGkgPSAxOyBlbGVtZW50ICE9IG51bGwgJiYgaSA8IGlkcy5sZW5ndGg7ICsraSkgeworICAgICAg
ICB2YXIgc2hhZG93Um9vdCA9IGludGVybmFscy5zaGFkb3dSb290KGVsZW1lbnQpOworICAgICAg
ICBlbGVtZW50ID0gaW50ZXJuYWxzLmdldEVsZW1lbnRCeUlkSW5TaGFkb3dSb290KHNoYWRvd1Jv
b3QsIGlkc1tpXSk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50OworfQorCitmdW5jdGlvbiBw
cmVwYXJlRG9tVHJlZShwYXJlbnQpCit7CisgICAgcGFyZW50LmFwcGVuZENoaWxkKAorICAgICAg
ICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2QScsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDog
NDBweCd9LAorICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5w
dXQxJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSksCisgICAgICAgICAg
ICAgICAgICBjcmVhdGVEb20oJ2lucHV0JywgeydpZCc6ICdpbnB1dDInLCAnc3R5bGUnOiAnd2lk
dGg6IDQwcHg7IGhlaWdodDogNDBweCd9KSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRv
dygnZGl2JywgeydpZCc6ICdzaGFkb3dCJywgJ3RhYmluZGV4JzogMH0sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkMnLCAndGFiaW5k
ZXgnOiAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRl
U2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0QnLCAndGFiaW5kZXgnOiAwLCAnc3R5bGUnOiAn
cGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNoYWRvdygnZGl2JywgeydpZCc6ICdzaGFkb3dFJywg
J3RhYmluZGV4JzogMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5w
dXRGJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRHJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4
OyBoZWlnaHQ6IDQwcHgnfSkpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jl
YXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0knLCAndGFi
aW5kZXgnOiAwfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZVNoYWRvdygnZGl2JywgeydpZCc6ICdzaGFkb3dKJywgJ3RhYmluZGV4
JzogMH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdpbnB1dCcsIHsnaWQnOiAnaW5wdXRLJ30pKSkp
KSkpOworCisgICAgdmFyIGlkcyA9IFsnZGl2QScsICdpbnB1dDEnLCAnaW5wdXQyJywKKyAgICAg
ICAgICAgICAgICdzaGFkb3dCJywgJ3NoYWRvd0IvZGl2QycsICdzaGFkb3dCL3NoYWRvd0QnLCAn
c2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UnLAorICAgICAgICAgICAgICAgJ3NoYWRvd0Ivc2hhZG93
RC9zaGFkb3dFL2lucHV0RicsICdzaGFkb3dCL3NoYWRvd0Qvc2hhZG93RS9pbnB1dEcnLAorICAg
ICAgICAgICAgICAgJ3NoYWRvd0IvZGl2SCcsICdzaGFkb3dCL3NoYWRvd0knLCAnc2hhZG93Qi9z
aGFkb3dJL3NoYWRvd0onLCAnc2hhZG93Qi9zaGFkb3dJL3NoYWRvd0ovaW5wdXRLJ107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdmFyIGVsZW1l
bnQgPSBnZXRFbGVtZW50SW5TaGFkb3coaWRzW2ldKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCdmb2N1c2luJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAg
ICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCByZWNvcmRFdmVudCwgZmFsc2Up
OworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlb3ZlcicsIHJlY29yZEV2
ZW50LCBmYWxzZSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VvdXQn
LCByZWNvcmRFdmVudCwgZmFsc2UpOworICAgIH0KK30KKworZnVuY3Rpb24gbW92ZUZvY3VzKG9s
ZEZvY3VzZWROb2RlSWQsICBuZXdGb2N1c2VkTm9kZUlkKQoreworICAgIGRlYnVnKCctLS0tIEZv
Y3VzaW5nICcgKyBvbGRGb2N1c2VkTm9kZUlkICsgJywgdGhlbiAnICsgbmV3Rm9jdXNlZE5vZGVJ
ZCArICdcbicpOworICAgIGdldEVsZW1lbnRJblNoYWRvdyhvbGRGb2N1c2VkTm9kZUlkKS5mb2N1
cygpOworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgZ2V0RWxlbWVudEluU2hhZG93KG5l
d0ZvY3VzZWROb2RlSWQpLmZvY3VzKCk7Cit9CisKK2Z1bmN0aW9uIG1vdmVNb3VzZShvbGRFbGVt
ZW50SWQsIG5ld0VsZW1lbnRJZCkKK3sKKyAgICBkZWJ1ZygnLS0tLSBNb3ZpbmcgbW91c2UgZnJv
bSAnICsgb2xkRWxlbWVudElkICsgJyB0byAnICsgbmV3RWxlbWVudElkICsgJ1xuJyk7CisgICAg
bW92ZU1vdXNlT3ZlcihnZXRFbGVtZW50SW5TaGFkb3cob2xkRWxlbWVudElkKSk7CisgICAgY2xl
YXJFdmVudFJlY29yZHMoKTsKKyAgICBtb3ZlTW91c2VPdmVyKGdldEVsZW1lbnRJblNoYWRvdyhu
ZXdFbGVtZW50SWQpKTsKK30KKworCitmdW5jdGlvbiBtb3ZlTW91c2VCeU9mZnNldFkob2xkRWxl
bWVudElkLCBvbGRFbGVtZW50T2Zmc2V0WSwgbmV3RWxlbWVudElkLCBuZXdFbGVtZW50T2Zmc2V0
WSkKK3sKKyAgICBkZWJ1ZygnLS0tLSBNb3ZpbmcgbW91c2UgZnJvbSAnICsgb2xkRWxlbWVudElk
ICsgJyB0byAnICsgbmV3RWxlbWVudElkICsgJ1xuJyk7CisgICAgbW92ZU1vdXNlT3ZlckJ5T2Zm
c2V0WShnZXRFbGVtZW50SW5TaGFkb3cob2xkRWxlbWVudElkKSwgb2xkRWxlbWVudE9mZnNldFkp
OworICAgIGNsZWFyRXZlbnRSZWNvcmRzKCk7CisgICAgbW92ZU1vdXNlT3ZlckJ5T2Zmc2V0WShn
ZXRFbGVtZW50SW5TaGFkb3cobmV3RWxlbWVudElkKSwgbmV3RWxlbWVudE9mZnNldFkpOworfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgcHJlcGFy
ZURvbVRyZWUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NhbmRib3gnKSk7CisKKyAgICBtb3Zl
TW91c2VCeU9mZnNldFkoJ2RpdkEnLCAyMCwgJ2lucHV0MScsIDIwKTsKKyAgICBzaG91bGRCZSgn
ZXZlbnRSZWNvcmRzWyJtb3VzZW92ZXIiXScsICdbImlucHV0MShAaW5wdXQxKSg8LWRpdkEpIiwg
ImlucHV0MShAZGl2QSkoPC1kaXZBKSJdJyk7CisgICAgc2hvdWxkQmUoJ2V2ZW50UmVjb3Jkc1si
bW91c2VvdXQiXScsICdbImRpdkEoQGRpdkEpKDwtaW5wdXQxKSJdJyk7CisKKyAgICBtb3ZlTW91
c2VCeU9mZnNldFkoJ2lucHV0MScsIDIwLCAnZGl2QScsIDIwKTsKKyAgICBzaG91bGRCZSgnZXZl
bnRSZWNvcmRzWyJtb3VzZW92ZXIiXScsICdbImRpdkEoQGRpdkEpKDwtaW5wdXQxKSJdJyk7Cisg
ICAgc2hvdWxkQmUoJ2V2ZW50UmVjb3Jkc1sibW91c2VvdXQiXScsICdbImlucHV0MShAaW5wdXQx
KSg8LWRpdkEpIiwgImlucHV0MShAZGl2QSkoPC1kaXZBKSJdJyk7CisKKyAgICBtb3ZlTW91c2Uo
J2lucHV0MScsICdpbnB1dDInKTsKKyAgICBzaG91bGRCZSgnZXZlbnRSZWNvcmRzWyJtb3VzZW92
ZXIiXScsICdbImlucHV0MihAaW5wdXQyKSg8LWlucHV0MSkiLCAiaW5wdXQyKEBkaXZBKSg8LWlu
cHV0MSkiXScpOworICAgIHNob3VsZEJlKCdldmVudFJlY29yZHNbIm1vdXNlb3V0Il0nLCAnWyJp
bnB1dDEoQGlucHV0MSkoPC1pbnB1dDIpIiwgImlucHV0MShAZGl2QSkoPC1pbnB1dDIpIl0nKTsK
KworICAgIG1vdmVNb3VzZSgnc2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UvaW5wdXRGJywgJ3NoYWRv
d0Ivc2hhZG93RC9zaGFkb3dFL2lucHV0RycpOworICAgIHNob3VsZEJlKCdldmVudFJlY29yZHNb
Im1vdXNlb3ZlciJdJywgJ1siaW5wdXRHKEBpbnB1dEcpKDwtaW5wdXRGKSJdJyk7CisgICAgc2hv
dWxkQmUoJ2V2ZW50UmVjb3Jkc1sibW91c2VvdXQiXScsICdbImlucHV0RihAaW5wdXRGKSg8LWlu
cHV0RykiXScpOworCisgICAgbW92ZU1vdXNlQnlPZmZzZXRZKCdzaGFkb3dCL3NoYWRvd0QnLCAy
MCwgJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2lucHV0RycsIDIwKTsKKyAgICBzaG91bGRCZSgn
ZXZlbnRSZWNvcmRzWyJtb3VzZW92ZXIiXScsICdbImlucHV0RyhAaW5wdXRHKSg8LXNoYWRvd0Qp
IiwgInNoYWRvd0UoQHNoYWRvd0UpKDwtc2hhZG93RCkiXScpOworICAgIHNob3VsZEJlKCdldmVu
dFJlY29yZHNbIm1vdXNlb3V0Il0nLCAndW5kZWZpbmVkJyk7CisKKyAgICAvLyBBZnRlciBpbXBs
ZW1lbnRpbmcgRm9jdXNpbi9Gb2N1c291dEV2ZW50RGlzcGF0Y2hNZWRpYXRvcgorICAgIC8vIG1v
dmVGb2N1cygnaW5wdXQxJywgJ2lucHV0MicpOworICAgIC8vIHNob3VsZEJlKCdldmVudFJlY29y
ZHNbImZvY3VzaW4iXScsICdbImlucHV0MihAaW5wdXQyKSIsICJpbnB1dDIoQGRpdkEpIl0nKTsK
KyAgICAvLyBzaG91bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1c291dCJdJywgJ1siaW5wdXQxKEBp
bnB1dDEpIiwgImlucHV0MShAZGl2QSkiXScpOworICAgIC8vIHNob3VsZEJlKCdldmVudFJlY29y
ZHNbImZvY3VzIl0nLCAnWyJpbnB1dDIoQGlucHV0MikiXScpOworCisgICAgLy8gbW92ZUZvY3Vz
KCdzaGFkb3dCL2RpdkMnLCAnc2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UvaW5wdXRHJyk7CisgICAg
Ly8gc2hvdWxkQmUoJ2V2ZW50UmVjb3Jkc1siZm9jdXNpbiJdJywgJ1siaW5wdXRHKEBpbnB1dEcp
IiwgInNoYWRvd0UoQHNoYWRvd0UpIiwgInNoYWRvd0QoQHNoYWRvd0QpIiwgInNoYWRvd0QoQGRp
dkMpIl0nKTsKKyAgICAvLyBzaG91bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1c291dCJdJywgJ1si
ZGl2QyhAZGl2QykiXScpOworICAgIC8vIHNob3VsZEJlKCdldmVudFJlY29yZHNbImZvY3VzIl0n
LCAnWyJpbnB1dEcoQGlucHV0RykiXScpOworCisgICAgLy8gbW92ZUZvY3VzKCdzaGFkb3dCL3No
YWRvd0Qvc2hhZG93RS9pbnB1dEcnLCAnc2hhZG93Qi9kaXZDJyk7CisgICAgLy8gc2hvdWxkQmUo
J2V2ZW50UmVjb3Jkc1siZm9jdXNpbiJdJywgJ1siZGl2QyhAZGl2QykiXScpOworICAgIC8vIHNo
b3VsZEJlKCdldmVudFJlY29yZHNbImZvY3Vzb3V0Il0nLCAnWyJpbnB1dEcoQGlucHV0RykiLCAi
c2hhZG93RShAc2hhZG93RSkiLCAic2hhZG93RChAc2hhZG93RCkiLCAic2hhZG93RChAZGl2Qyki
XScpOworICAgIC8vIHNob3VsZEJlKCdldmVudFJlY29yZHNbImZvY3VzIl0nLCAnWyJkaXZDKEBk
aXZDKSJdJyk7CisKKyAgICAvLyBtb3ZlRm9jdXMoJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2lu
cHV0RicsICdzaGFkb3dCL3NoYWRvd0Qvc2hhZG93RS9pbnB1dEcnKTsKKyAgICAvLyBzaG91bGRC
ZSgnZXZlbnRSZWNvcmRzWyJmb2N1c2luIl0nLCAnWyJpbnB1dEcoQGlucHV0RykiXScpOworICAg
IC8vIHNob3VsZEJlKCdldmVudFJlY29yZHNbImZvY3Vzb3V0Il0nLCAnWyJpbnB1dEYoQGlucHV0
RikiXScpOworICAgIC8vIHNob3VsZEJlKCdldmVudFJlY29yZHNbImZvY3VzIl0nLCAnWyJpbnB1
dEcoQGlucHV0RykiXScpOworCisgICAgLy8gbW92ZUZvY3VzKCdzaGFkb3dCL3NoYWRvd0Qvc2hh
ZG93RS9pbnB1dEYnLCAnc2hhZG93Qi9zaGFkb3dJL3NoYWRvd0ovaW5wdXRLJyk7CisgICAgLy8g
c2hvdWxkQmUoJ2V2ZW50UmVjb3Jkc1siZm9jdXNpbiJdJywgJ1siaW5wdXRLKEBpbnB1dEspIiwg
InNoYWRvd0ooQHNoYWRvd0opIiwgInNoYWRvd0koQHNoYWRvd0kpIiwgInNoYWRvd0koQGRpdkgp
Il0nKTsKKyAgICAvLyBzaG91bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1c291dCJdJywgJ1siaW5w
dXRGKEBpbnB1dEYpIiwgInNoYWRvd0UoQHNoYWRvd0UpIiwgInNoYWRvd0QoQHNoYWRvd0QpIiwg
InNoYWRvd0QoQGRpdkMpIl0nKTsKKyAgICAvLyBzaG91bGRCZSgnZXZlbnRSZWNvcmRzWyJmb2N1
cyJdJywgJ1siaW5wdXRLKEBpbnB1dEspIl0nKTsKK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103607</attachid>
            <date>2011-08-11 06:01:24 -0700</date>
            <delta_ts>2011-08-11 08:49:57 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-65899-20110811220122.patch</filename>
            <type>text/plain</type>
            <size>12995</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI4MTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMTg0Nzc2NWE3YzI4NGRmMzFjYTdi
MDBiYmY1Nzk5ODlkOGRiYThlLi45ZTVkOWU3ZWEwNmZiOWFjNDhhYTE5NjU1ZWU5NDI5ZmMxOGMw
M2ZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMTEgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxlbWVudCBwcm9wZXIgaGFuZGxpbmcgb2Yg
ZXZlbnRzIHdpdGggYSByZWxhdGVkIHRhcmdldCBpbiByZWdhcmQgdG8gc2hhZG93IERPTSBib3Vu
ZGFyaWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU4OTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBG
aXhlcyBpc3N1ZXMgb2YgdGhlIGZvbGxvd2luZyBjb3JuZXIgY2FzZXM6CisgICAgICAgIDEuIEJv
dGggYSB0YXJnZXQgbm9kZSBhbmQgYSByZWxhdGVkVGFyZ2V0IG5vZGUgYXJlIGRpcmVjdCBjaGls
ZHJlbiBvZgorICAgICAgICB0aGUgc2FtZSBzaGFkb3cgcm9vdCwgYW4gZXZlbnQgaXMgbm90IGRp
c3BhdGNoZWQgb24gYW55IG5vZGVzLgorICAgICAgICAyLiBJZiBhIHRhcmdldCBub2RlIGlzIGFu
IGFuY2VzdG9yIG9mIGEgcmVsYXRlZFRhcmdldCBub2RlLCBjcm9zc2luZworICAgICAgICBzaGFk
b3cgYm91bmRhcmllcywgb3IgdmljZSB2ZXJzZSwgYW4gZXZlbnQgaXMgbm90IGRpc3BhdGNoZWQg
b3Igd3JvbmdseQorICAgICAgICBkaXNwYXRjaGVkLgorCisgICAgICAgICogZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbDogQWRkZWQuCisKIDIwMTEtMDgtMTAgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBTa2lwIHNvbWUg
bW9yZSB0ZXN0cyBvbiBMaW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hh
ZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODE0ZjRhYzQzYzc4
MzVlNjZlMDVlYjMxMjZhMDczZGEzMWJkNzQ5MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctYm91bmRhcnktZXZlbnRzLmh0bWwKQEAgLTAsMCAr
MSwxNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9jcmVhdGUtZG9tLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJzYW5kYm94Ij48L2Rpdj4KKzxwcmUgaWQ9
ImNvbnNvbGUiPjwvcHJlPgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyB0byBlbnN1cmUg
dGhhdCBzaGFkb3cgRE9NIGJvdW5kYXJ5IGlzIG5vdCBjcm9zc2VkIGR1cmluZyBldmVudCBwcm9w
YWdhdGlvbi4gQ2FuIG9ubHkgcnVuIHdpdGhpbiBEUlQuIik7CisKK2Z1bmN0aW9uIG1vdmVNb3Vz
ZU92ZXIoZWxlbWVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlciB8fCAhd2luZG93
LmludGVybmFscykKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGRlZmF1bHRQYWRkaW5nU2l6
ZSA9IDIwOworICAgIHZhciB4ID0gZWxlbWVudC5vZmZzZXRMZWZ0ICsgZWxlbWVudC5vZmZzZXRX
aWR0aCAvIDI7CisgICAgdmFyIHk7CisgICAgaWYgKGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpIHx8
IHdpbmRvdy5pbnRlcm5hbHMuc2hhZG93Um9vdChlbGVtZW50KSkKKyAgICAgICAgeSA9IGVsZW1l
bnQub2Zmc2V0VG9wICsgZGVmYXVsdFBhZGRpbmdTaXplOworICAgIGVsc2UKKyAgICAgICAgeSA9
IGVsZW1lbnQub2Zmc2V0VG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworfQorCit2YXIgZXZlbnRSZWNvcmRzID0ge307CisK
K2Z1bmN0aW9uIGNsZWFyRXZlbnRSZWNvcmRzKCkKK3sKKyAgICBldmVudFJlY29yZHMgPSB7fTsK
K30KKworZnVuY3Rpb24gZGlzcGF0Y2hlZEV2ZW50KGV2ZW50VHlwZSkKK3sKKyAgICB2YXIgZXZl
bnRzID0gZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV07CisgICAgaWYgKCFldmVudHMpCisgICAgICAg
IHJldHVybiBbXTsKKyAgICByZXR1cm4gZXZlbnRzOworfQorCitmdW5jdGlvbiByZWNvcmRFdmVu
dChldmVudCkKK3sKKyAgICB2YXIgZXZlbnRUeXBlID0gZXZlbnQudHlwZQorICAgIGlmICghZXZl
bnRSZWNvcmRzW2V2ZW50VHlwZV0pIHsKKyAgICAgICAgZXZlbnRSZWNvcmRzW2V2ZW50VHlwZV0g
PSBbXQorICAgIH0KKyAgICAvLyBSZWNvcmRzIGVhY2ggZXZlbnQgaW4gdGhlIGZvbGxvd2luZyBm
b3JtYXQgcGVyIGV2ZW50eXBlIHR5cGU6CisgICAgLy8gICBldmVudFJlY29yZXNbZXZlbnRUeXBl
XSA9IFsndGFyZ2V0LmlkKEBjdXJyZW50VGFyZ2V0LmlkKSg8LXJlbGF0ZWRUYXJnZXQuaWQpJywg
J3RhcmdldC5pZChAY3VycmVudFRhcmdldC5pZCkoPC1yZWxhdGVkVGFyZ2V0LmlkKScsIC4uLl0K
KyAgICAvLyAgICogY3VycmVudFRhcmdldCBhbmQgcmVsYXRlZFRhcmdldCBtYXkgYmUgb21pdHRl
ZCBpZiB0aGV5IGFyZSBub3QgZGVmaW5lZC4KKyAgICAvLyBBIG5ldyBldmVudCBpcyBwdXNoZWQg
YmFjayB0byB0aGUgYXJyYXkgb2YgaXRzIGV2ZW50IHR5cGUuCisgICAgdmFyIGV2ZW50U3RyaW5n
ID0gJyc7CisgICAgZXZlbnRTdHJpbmcgKz0gZXZlbnQudGFyZ2V0LmlkOworICAgIGlmIChldmVu
dC5jdXJyZW50VGFyZ2V0KQorICAgICAgICBldmVudFN0cmluZyArPSAnKEAnICsgZXZlbnQuY3Vy
cmVudFRhcmdldC5pZCArICcpJzsKKyAgICBpZiAoZXZlbnQucmVsYXRlZFRhcmdldCkKKyAgICAg
ICAgZXZlbnRTdHJpbmcgKz0gJyg8LScgKyBldmVudC5yZWxhdGVkVGFyZ2V0LmlkICsgJyknOwor
ICAgIGV2ZW50UmVjb3Jkc1tldmVudFR5cGVdLnB1c2goZXZlbnRTdHJpbmcpOworfQorCitmdW5j
dGlvbiBnZXRFbGVtZW50SW5TaGFkb3cocGF0aCkKK3sKKyAgICB2YXIgaWRzID0gcGF0aC5zcGxp
dCgnLycpOworICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWRzWzBd
KTsKKyAgICBmb3IgKHZhciBpID0gMTsgZWxlbWVudCAhPSBudWxsICYmIGkgPCBpZHMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgdmFyIHNoYWRvd1Jvb3QgPSBpbnRlcm5hbHMuc2hhZG93Um9vdChl
bGVtZW50KTsKKyAgICAgICAgZWxlbWVudCA9IGludGVybmFscy5nZXRFbGVtZW50QnlJZEluU2hh
ZG93Um9vdChzaGFkb3dSb290LCBpZHNbaV0pOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudDsK
K30KKworZnVuY3Rpb24gcHJlcGFyZURvbVRyZWUocGFyZW50KQoreworICAgIHBhcmVudC5hcHBl
bmRDaGlsZCgKKyAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2RpdkEnLCAnc3R5bGUn
OiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2
JywgeydpZCc6ICdkaXYxJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSks
CisgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2MicsICdzdHls
ZSc6ICd3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4J30pLAorICAgICAgICAgICAgICAgICAgY3Jl
YXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0InLCAnc3R5bGUnOiAncGFkZGluZy10b3A6
IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVEb20oJ2Rpdics
IHsnaWQnOiAnZGl2QycsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVTaGFkb3coJ2RpdicsIHsnaWQn
OiAnc2hhZG93RCcsICdzdHlsZSc6ICdwYWRkaW5nLXRvcDogNDBweCd9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdk
aXYnLCB7J2lkJzogJ3NoYWRvd0UnLCAnc3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVEb20oJ2RpdicsIHsnaWQnOiAnZGl2RicsICdzdHlsZSc6ICd3aWR0aDog
NDBweDsgaGVpZ2h0OiA0MHB4J30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6
ICdkaXZHJywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSkpKSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlRG9tKCdkaXYnLCB7J2lkJzogJ2Rpdkgn
LCAnc3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3JlYXRlU2hhZG93KCdkaXYnLCB7J2lkJzogJ3NoYWRvd0knLCAn
c3R5bGUnOiAncGFkZGluZy10b3A6IDQwcHgnfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZURvbSgnZGl2JywgeydpZCc6ICdkaXZK
JywgJ3N0eWxlJzogJ3dpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHgnfSkpKSkpKTsKKworICAgIHZh
ciBpZHMgPSBbJ2RpdkEnLCAnZGl2MScsICdkaXYyJywKKyAgICAgICAgICAgICAgICdzaGFkb3dC
JywgJ3NoYWRvd0IvZGl2QycsICdzaGFkb3dCL3NoYWRvd0QnLCAnc2hhZG93Qi9zaGFkb3dEL3No
YWRvd0UnLAorICAgICAgICAgICAgICAgJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2RpdkYnLCAn
c2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UvZGl2RycsCisgICAgICAgICAgICAgICAnc2hhZG93Qi9k
aXZIJywgJ3NoYWRvd0Ivc2hhZG93SScsICdzaGFkb3dCL3NoYWRvd0kvZGl2SiddOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgaWRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBlbGVtZW50
ID0gZ2V0RWxlbWVudEluU2hhZG93KGlkc1tpXSk7CisgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcignbW91c2VvdmVyJywgcmVjb3JkRXZlbnQsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW91dCcsIHJlY29yZEV2ZW50LCBmYWxzZSk7CisgICAg
fQorfQorCitmdW5jdGlvbiBtb3ZlTW91c2Uob2xkRWxlbWVudElkLCBuZXdFbGVtZW50SWQsIG1l
c3NhZ2UpCit7CisgICAgZGVidWcoJ1xuJyArIG1lc3NhZ2UgKyAnXG4nICsgJ01vdmluZyBtb3Vz
ZSBmcm9tICcgKyBvbGRFbGVtZW50SWQgKyAnIHRvICcgKyBuZXdFbGVtZW50SWQpOworICAgIG1v
dmVNb3VzZU92ZXIoZ2V0RWxlbWVudEluU2hhZG93KG9sZEVsZW1lbnRJZCkpOworICAgIGNsZWFy
RXZlbnRSZWNvcmRzKCk7CisgICAgbW92ZU1vdXNlT3ZlcihnZXRFbGVtZW50SW5TaGFkb3cobmV3
RWxlbWVudElkKSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBwcmVwYXJlRG9tVHJlZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2FuZGJv
eCcpKTsKKworICAgIG1vdmVNb3VzZSgnZGl2MScsICdkaXYyJywKKyAgICAgICAgICAgICAgJ01v
dmUgbW91c2UgZnJvbSBhIG5vZGUgdG8gaXRzIHNpYmxpbmcgbm9kZS4gRXZlcnkgbm9kZXMgYXJl
IG91dHNpZGUgb2Ygc2hhZG93IGJvdW5kYXJ5LicpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVk
RXZlbnQoIm1vdXNlb3ZlciIpJywgJ1siZGl2MihAZGl2MikoPC1kaXYxKSIsICJkaXYyKEBkaXZB
KSg8LWRpdjEpIl0nKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIp
JywgJ1siZGl2MShAZGl2MSkoPC1kaXYyKSIsICJkaXYxKEBkaXZBKSg8LWRpdjIpIl0nKTsKKwor
ICAgIG1vdmVNb3VzZSgnZGl2MScsICdkaXZBJywKKyAgICAgICAgICAgICAgJ1RhcmdldCBpcyBh
biBhbmNlc3RvciBvZiByZWFsdGVkVGFyZ2V0LiBFdmVyeSBub2RlcyBhcmUgb3V0c2lkZSBvZiBz
aGFkb3cgYm91bmRhcnkuJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2Vv
dmVyIiknLCAnWyJkaXZBKEBkaXZBKSg8LWRpdjEpIl0nKTsKKyAgICBzaG91bGRCZSgnZGlzcGF0
Y2hlZEV2ZW50KCJtb3VzZW91dCIpJywgJ1siZGl2MShAZGl2MSkoPC1kaXZBKSIsICJkaXYxKEBk
aXZBKSg8LWRpdkEpIl0nKTsKKworICAgIG1vdmVNb3VzZSgnZGl2QScsICdkaXYxJywKKyAgICAg
ICAgICAgICAgJ1JlbGF0ZWRUYXJnZXQgaXMgYW4gYW5jZXN0b3Igb2YgdGFyZ2V0LiBFdmVyeSBu
b2RlcyBhcmUgb3V0c2lkZSBvZiBzaGFkb3cgYm91bmRhcnkuJyk7CisgICAgc2hvdWxkQmUoJ2Rp
c3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJkaXYxKEBkaXYxKSg8LWRpdkEpIiwgImRp
djEoQGRpdkEpKDwtZGl2QSkiXScpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoIm1v
dXNlb3V0IiknLCAnWyJkaXZBKEBkaXZBKSg8LWRpdjEpIl0nKTsKKworICAgIG1vdmVNb3VzZSgn
c2hhZG93Qi9zaGFkb3dEL3NoYWRvd0UvZGl2RicsICdzaGFkb3dCL3NoYWRvd0Qvc2hhZG93RS9k
aXZHJywKKyAgICAgICAgICAgICAgJ0JvdGggdGFyZ2V0IGFuZCByZWxhdGVkVGFyZ2V0IGFyZSBk
aXJlY3QgY2hpbGQgb2YgdGhlIHNhbWUgc2hhZG93IHJvb3QuJyk7CisgICAgc2hvdWxkQmUoJ2Rp
c3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJkaXZHKEBkaXZHKSg8LWRpdkYpIl0nKTsK
KyAgICBzaG91bGRCZSgnZGlzcGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIpJywgJ1siZGl2RihAZGl2
RikoPC1kaXZHKSJdJyk7CisKKyAgICBtb3ZlTW91c2UoJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dF
L2RpdkcnLCAnc2hhZG93Qi9kaXZDJywKKyAgICAgICAgICAgICAgJ1RhcmdldCBpcyBhbiBhbmNl
c3RvciBvZiByZWxhdGVkVGFyZ2V0LicpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQo
Im1vdXNlb3ZlciIpJywgJ1siZGl2QyhAZGl2QykoPC1zaGFkb3dEKSJdJyk7CisgICAgc2hvdWxk
QmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdXQiKScsICdbImRpdkcoQGRpdkcpKDwtZGl2Qyki
LCAic2hhZG93RShAc2hhZG93RSkoPC1kaXZDKSIsICJzaGFkb3dEKEBzaGFkb3dEKSg8LWRpdkMp
IiwgInNoYWRvd0QoQGRpdkMpKDwtZGl2QykiXScpOworCisgICAgbW92ZU1vdXNlKCdzaGFkb3dC
L3NoYWRvd0Qvc2hhZG93RS9kaXZHJywgJ3NoYWRvd0Ivc2hhZG93RCcsCisgICAgICAgICAgICAg
ICdUYXJnZXQgKHNoYWRvdyBob3N0KSBpcyBhbiBhbmNlc3RvciBvZiByZWxhdGVkVGFyZ2V0Licp
OworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoIm1vdXNlb3ZlciIpJywgJ1tdJyk7Cisg
ICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdXQiKScsICdbImRpdkcoQGRpdkcp
KDwtc2hhZG93RCkiLCAic2hhZG93RShAc2hhZG93RSkoPC1zaGFkb3dEKSJdJyk7CisKKyAgICBt
b3ZlTW91c2UoJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFJywgJ3NoYWRvd0InLAorICAgICAgICAg
ICAgICAnVGFyZ2V0IChzaGFkb3cgaG9zdCkgaXMgYW4gYW5jZXN0b3Igb2YgcmVsYXRlZFRhcmdl
dCAoc2hhZG93IGhvc3QpLicpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoIm1vdXNl
b3ZlciIpJywgJ1tdJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdXQi
KScsICdbInNoYWRvd0UoQHNoYWRvd0UpKDwtc2hhZG93QikiLCAic2hhZG93RChAc2hhZG93RCko
PC1zaGFkb3dCKSIsICJzaGFkb3dEKEBkaXZDKSg8LXNoYWRvd0IpIl0nKTsKKworICAgIG1vdmVN
b3VzZSgnc2hhZG93Qi9kaXZDJywgJ3NoYWRvd0Ivc2hhZG93RC9zaGFkb3dFL2RpdkcnLAorICAg
ICAgICAgICAgICAnUmVsYXRlZFRhcmdldCBpcyBhbmNlc3RvciBvZiB0YXJnZXQuJyk7CisgICAg
c2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJkaXZHKEBkaXZHKSg8
LWRpdkMpIiwgInNoYWRvd0UoQHNoYWRvd0UpKDwtZGl2QykiLCAic2hhZG93RChAc2hhZG93RCko
PC1kaXZDKSIsICJzaGFkb3dEKEBkaXZDKSg8LWRpdkMpIl0nKTsKKyAgICBzaG91bGRCZSgnZGlz
cGF0Y2hlZEV2ZW50KCJtb3VzZW91dCIpJywgJ1siZGl2QyhAZGl2QykoPC1zaGFkb3dEKSJdJyk7
CisKKyAgICBtb3ZlTW91c2UoJ3NoYWRvd0Ivc2hhZG93RCcsICdzaGFkb3dCL3NoYWRvd0Qvc2hh
ZG93RS9kaXZHJywKKyAgICAgICAgICAgICAgJ1JlbGF0ZWRUYXJnZXQgKHNoYWRvdyBob3N0KSBp
cyBhbmNlc3RvciBvZiB0YXJnZXQuJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgi
bW91c2VvdmVyIiknLCAnWyJkaXZHKEBkaXZHKSg8LXNoYWRvd0QpIiwgInNoYWRvd0UoQHNoYWRv
d0UpKDwtc2hhZG93RCkiXScpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoIm1vdXNl
b3V0IiknLCAnW10nKTsKKworICAgIG1vdmVNb3VzZSgnc2hhZG93QicsICdzaGFkb3dCL3NoYWRv
d0Qvc2hhZG93RScsCisgICAgICAgICAgICAgICdSZWxhdGVkVGFyZ2V0IChzaGFkb3cgaG9zdCkg
aXMgYW4gYW5jZXN0b3Igb2YgdGFyZ2V0IChzaGFkb3cgaG9zdCkuJyk7CisgICAgc2hvdWxkQmUo
J2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdmVyIiknLCAnWyJzaGFkb3dFKEBzaGFkb3dFKSg8LXNo
YWRvd0IpIiwgInNoYWRvd0QoQHNoYWRvd0QpKDwtc2hhZG93QikiLCAic2hhZG93RChAZGl2Qyko
PC1zaGFkb3dCKSJdJyk7CisgICAgc2hvdWxkQmUoJ2Rpc3BhdGNoZWRFdmVudCgibW91c2VvdXQi
KScsICdbXScpOworCisgICAgbW92ZU1vdXNlKCdzaGFkb3dCL3NoYWRvd0Qvc2hhZG93RS9kaXZG
JywgJ3NoYWRvd0Ivc2hhZG93SS9kaXZKJywKKyAgICAgICAgICAgICAgJ1RhcmdldCBhbmQgcmVs
YXRlZFRhcmdldCBleGlzdCBpbiBzZXBhcmF0ZWQgc3VidHJlZSwgY3Jvc3Npbmcgc2hhZG93IGJv
dW5kYXJpZXMuIE1ha2luZyBzdXJlIHRoYXQgZXZlbnQgaXMgbm90IGRpc3BhdGNoZWQgYmV5b25k
IHRoZSBsb3dlc3QgY29tbWFuZCBiYW5kYXJ5LicpOworICAgIHNob3VsZEJlKCdkaXNwYXRjaGVk
RXZlbnQoIm1vdXNlb3ZlciIpJywgJ1siZGl2SihAZGl2SikoPC1zaGFkb3dEKSIsICJzaGFkb3dJ
KEBzaGFkb3dJKSg8LXNoYWRvd0QpIiwgInNoYWRvd0koQGRpdkgpKDwtc2hhZG93RCkiXScpOwor
ICAgIHNob3VsZEJlKCdkaXNwYXRjaGVkRXZlbnQoIm1vdXNlb3V0IiknLCAnWyJkaXZGKEBkaXZG
KSg8LXNoYWRvd0kpIiwgInNoYWRvd0UoQHNoYWRvd0UpKDwtc2hhZG93SSkiLCAic2hhZG93RChA
c2hhZG93RCkoPC1zaGFkb3dJKSIsICJzaGFkb3dEKEBkaXZDKSg8LXNoYWRvd0kpIl0nKTsKK30K
KwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGVlYjdmYzllNDFhNGM4YTc4YTg5ZDE0
OWMyNmVhOWMyM2M5ZDc3NWMuLjQyN2NlMDVhYTRiMDIyYzQxM2FkMWJkZTdjZjk2OGQzZmMzNzk2
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wOC0xMSAgSGF5YXRvIEl0byAg
PGhheWF0b0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW1wbGVtZW50IHByb3BlciBoYW5kbGlu
ZyBvZiBldmVudHMgd2l0aCBhIHJlbGF0ZWQgdGFyZ2V0IGluIHJlZ2FyZCB0byBzaGFkb3cgRE9N
IGJvdW5kYXJpZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02NTg5OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEZpeGVzIGlzc3VlcyBvZiB0aGUgZm9sbG93aW5nIGNvcm5lciBjYXNlczoKKyAgICAgICAg
MS4gQm90aCBhIHRhcmdldCBub2RlIGFuZCBhIHJlbGF0ZWRUYXJnZXQgbm9kZSBhcmUgZGlyZWN0
IGNoaWxkcmVuIG9mCisgICAgICAgIHRoZSBzYW1lIHNoYWRvdyByb290LCBhbiBldmVudCBpcyBu
b3QgZGlzcGF0Y2hlZCBvbiBhbnkgbm9kZXMuCisgICAgICAgIDIuIElmIGEgdGFyZ2V0IG5vZGUg
aXMgYW4gYW5jZXN0b3Igb2YgYSByZWxhdGVkVGFyZ2V0IG5vZGUsIGNyb3NzaW5nCisgICAgICAg
IHNoYWRvdyBib3VuZGFyaWVzLCBvciB2aWNlIHZlcnNlLCBhbiBldmVudCBpcyBub3QgZGlzcGF0
Y2hlZCBvciB3cm9uZ2x5CisgICAgICAgIGRpc3BhdGNoZWQuCisKKyAgICAgICAgVGVzdDogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1ib3VuZGFyeS1ldmVudHMuaHRtbAorCisgICAgICAgICogZG9t
L0V2ZW50RGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6
OmFkanVzdFRvU2hhZG93Qm91bmRhcmllcyk6CisKIDIwMTEtMDgtMTAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU1ZHQUVsZW1lbnQgY2hlY2sgZm9y
IGludGVybmFsIG5vbi12aWV3IGFuY2hvcnMgaXMgaW5zaWRlIEVOQUJMRShTVkdfQU5JTUFUSU9O
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCA4YjAxZjM0ZGMwYzMy
NWNlOTJjNzFlZWIyMDkxYzU0YWNhMWUzNzY5Li4zOTkyMWMwZDYxYWJiOTU0MTBkMDAyNzc2Y2I1
M2Q5MmNiYWY5MzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRj
aGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcApAQCAt
MTY0LDIwICsxNjQsMjIgQEAgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gRXZlbnREaXNwYXRjaGVy
OjphZGp1c3RUb1NoYWRvd0JvdW5kYXJpZXMoUGFzc1JlZlB0cjxOb2QKICAgICBpZiAoIWRpdmVy
Z2VkKSB7CiAgICAgICAgIC8vIFRoZSByZWxhdGVkVGFyZ2V0IGlzIGFuIGFuY2VzdG9yIG9yIHNo
YWRvd0hvc3Qgb2YgdGhlIHRhcmdldC4KICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGUgZmly
c3QgY2hlY2sgb25jZSBjb252ZXJzaW9uIHRvIG5ldyBzaGFkb3cgRE9NIGlzIGNvbXBsZXRlIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzQ4Njk4PgotICAgICAgICBpZiAobV9ub2RlLT5zaGFkb3dIb3N0
KCkgPT0gcmVsYXRlZFRhcmdldC5nZXQoKSB8fCBpc1NoYWRvd0hvc3QocmVsYXRlZFRhcmdldC5n
ZXQoKSkpCi0gICAgICAgICAgICBsb3dlc3RDb21tb25Cb3VuZGFyeSA9IG1fYW5jZXN0b3JzLmJl
Z2luKCk7CisgICAgICAgIGlmIChtX25vZGUtPnNoYWRvd0hvc3QoKSA9PSByZWxhdGVkVGFyZ2V0
LmdldCgpIHx8IGlzU2hhZG93SG9zdChyZWxhdGVkVGFyZ2V0LmdldCgpKSkgeworICAgICAgICAg
ICAgQVNTRVJUKHRhcmdldEFuY2VzdG9yIC0gMSA+PSBtX2FuY2VzdG9ycy5iZWdpbigpKTsKKyAg
ICAgICAgICAgIGxvd2VzdENvbW1vbkJvdW5kYXJ5ID0gdGFyZ2V0QW5jZXN0b3IgLSAxOworICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmICgoKmZpcnN0RGl2ZXJnZW50Qm91bmRhcnkpID09IG1fbm9k
ZS5nZXQoKSkgewogICAgICAgICAvLyBTaW5jZSBhbmNlc3RvcnMgZG9lcyBub3QgY29udGFpbiB0
YXJnZXQgaXRzZWxmLCB3ZSBtdXN0IGFjY291bnQKICAgICAgICAgLy8gZm9yIHRoZSBwb3NzaWJp
bGl0eSB0aGF0IHRhcmdldCBpcyBhIHNoYWRvd0hvc3Qgb2YgcmVsYXRlZFRhcmdldAogICAgICAg
ICAvLyBhbmQgdGh1cyBzZXJ2ZXMgYXMgdGhlIGxvd2VzdENvbW1vbkJvdW5kYXJ5LgogICAgICAg
ICAvLyBMdWNraWx5LCBpbiB0aGlzIGNhc2UgdGhlIGZpcnN0RGl2ZXJnZW50Qm91bmRhcnkgaXMg
dGFyZ2V0LgogICAgICAgICBsb3dlc3RDb21tb25Cb3VuZGFyeSA9IG1fYW5jZXN0b3JzLmJlZ2lu
KCk7CisgICAgICAgIG1fc2hvdWxkUHJldmVudERpc3BhdGNoID0gdHJ1ZTsKICAgICB9CiAKICAg
ICBpZiAobG93ZXN0Q29tbW9uQm91bmRhcnkgIT0gbV9hbmNlc3RvcnMuZW5kKCkpIHsKICAgICAg
ICAgLy8gVHJpbSBhbmNlc3RvcnMgdG8gbG93ZXN0Q29tbW9uQm91bmRhcnkgdG8ga2VlcCBldmVu
dHMgaW5zaWRlIG9mIHRoZSBjb21tb24gc2hhZG93IERPTSBzdWJ0cmVlLgogICAgICAgICBtX2Fu
Y2VzdG9ycy5zaHJpbmsobG93ZXN0Q29tbW9uQm91bmRhcnkgLSBtX2FuY2VzdG9ycy5iZWdpbigp
KTsKLSAgICAgICAgbV9zaG91bGRQcmV2ZW50RGlzcGF0Y2ggPSAhbV9hbmNlc3RvcnMuc2l6ZSgp
OwogICAgIH0KICAgICAvLyBTZXQgZXZlbnQncyByZWxhdGVkIHRhcmdldCB0byB0aGUgZmlyc3Qg
ZW5jb3VudGVyZWQgc2hhZG93IERPTSBib3VuZGFyeSBpbiB0aGUgZGl2ZXJnZW50IHN1YnRyZWUu
CiAgICAgcmV0dXJuIGZpcnN0RGl2ZXJnZW50Qm91bmRhcnkgIT0gcmVsYXRlZFRhcmdldEFuY2Vz
dG9ycy5iZWdpbigpID8gKmZpcnN0RGl2ZXJnZW50Qm91bmRhcnkgOiByZWxhdGVkVGFyZ2V0Owo=
</data>
<flag name="review"
          id="99269"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
          </attachment>
      

    </bug>

</bugzilla>