<?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>67127</bug_id>
          
          <creation_ts>2011-08-29 07:34:35 -0700</creation_ts>
          <short_desc>Web Inspector: Implement circular tabbing through the Styles sidebar pane contents</short_desc>
          <delta_ts>2011-09-07 08:15:20 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>458209</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-29 07:34:35 -0700</bug_when>
    <thetext>Currently hitting Tab/Enter on a blank new property in the last editable style cancels editing. If a user has done this in error, they will need to use their mouse to restart the style editing.

Instead, the editor should loop to the beginning end of the pane contents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458239</commentid>
    <comment_count>1</comment_count>
      <attachid>105495</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-29 09:09:58 -0700</bug_when>
    <thetext>Created attachment 105495
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458367</commentid>
    <comment_count>2</comment_count>
      <attachid>105495</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-29 12:28:24 -0700</bug_when>
    <thetext>Comment on attachment 105495
[PATCH] Suggested solution

Although I don&apos;t see any flags in the code, I suspect this could be implemented via adding less code. Can you track down the case when you jump from the last new property placeholder? The very moment when focus is about to leave the traversal?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458946</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-08-30 09:19:04 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 105495 [details])
&gt; Although I don&apos;t see any flags in the code, I suspect this could be implemented via adding less code.

I will look into shortening the change.

&gt; Can you track down the case when you jump from the last new property placeholder? The very moment when focus is about to leave the traversal?

What do you mean by this? Is there anything special about this case? Just a quick overview for editor navigation outside of currently edited properties (jumping between name-value gives a few more cases):

* source editor (jump from):
  1. ordinary property (may get deleted once the editor gets committed)
  2. blank new property
* target editor (jump to):
  1. selector of the same section
  2. selector of another section
  3. ordinary property of the same section
  4. ordinary property of another section
  5. blank new property of the same section
  6. blank new property of another section

11 combinations in total (1-4 excluded, as it is impossible), of which the new ones are (partly due to element.style not having a selector):
1-6 (Jump from the first element.style property backwards to a new blank property of the last editable section). This is handled by the lines 2035-2045.
2-5 (If there is only element.style and no matched rules, jump from element.style&apos;s blank property to itself)
2-6 (Jump from a blank new property of the last section to a blank new property of an empty element.style, or vice versa). These two cases (along with the already handled 2-1 and 2-2) are handled by the lines 2114-2128).

I&apos;ll try to come up with something shorter for these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462172</commentid>
    <comment_count>4</comment_count>
      <attachid>106342</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-09-05 09:08:36 -0700</bug_when>
    <thetext>Created attachment 106342
[PATCH] Simplified weird CSS property name/value field editor tabbing calculations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463286</commentid>
    <comment_count>5</comment_count>
      <attachid>106568</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-09-07 04:18:25 -0700</bug_when>
    <thetext>Created attachment 106568
[PATCH] Extracted a hard part of the calculations into StylePropertiesSection (asked by yurys@chromium.org)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463287</commentid>
    <comment_count>6</comment_count>
      <attachid>106568</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-09-07 04:41:36 -0700</bug_when>
    <thetext>Comment on attachment 106568
[PATCH] Extracted a hard part of the calculations into StylePropertiesSection (asked by yurys@chromium.org)

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:941
&gt; +            var candidateSection = this;

I&apos;d rather introduce Section::firstSibling - it can be fetched via parent element momentarily. Also, I would expect these two changes to solve the problem being addressed. Why is it not the case?

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:963
&gt; +            var candidateSection = this;

ditto, Section::lastSibling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463332</commentid>
    <comment_count>7</comment_count>
      <attachid>106581</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-09-07 07:11:20 -0700</bug_when>
    <thetext>Created attachment 106581
[PATCH] A minimally intrusive solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463335</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-09-07 07:13:34 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 106568 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=106568&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:941
&gt; &gt; +            var candidateSection = this;
&gt; 
&gt; I&apos;d rather introduce Section::firstSibling - it can be fetched via parent element momentarily. Also, I would expect these two changes to solve the problem being addressed. Why is it not the case?

Added first/lastSibling.

This is not the case because originally we were never able to cross the top boundary of a style with no selector (element.style). I have made a small refactoring to allow this, and dropped all my previous changes to reduce the change as much as possible.

&gt; &gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:963
&gt; &gt; +            var candidateSection = this;
&gt; 
&gt; ditto, Section::lastSibling

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463350</commentid>
    <comment_count>9</comment_count>
      <attachid>106581</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-09-07 08:01:55 -0700</bug_when>
    <thetext>Comment on attachment 106581
[PATCH] A minimally intrusive solution

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:944
&gt; +                if (curSection === this)

This shouldn&apos;t be needed since there is no sibling after the last section.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:950
&gt; +        return curSection.editable ? curSection : null;

return (curSection &amp;&amp; curSection.editable) ? curSection : null;

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:966
&gt; +                curSection = curSection.previousSibling;

Ditto.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:970
&gt; +        return curSection.editable ? curSection : null;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>463357</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-09-07 08:15:20 -0700</bug_when>
    <thetext>Committed r94671: &lt;http://trac.webkit.org/changeset/94671&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105495</attachid>
            <date>2011-08-29 09:09:58 -0700</date>
            <delta_ts>2011-09-05 09:08:36 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>loopstyleeditor.patch</filename>
            <type>text/plain</type>
            <size>10757</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDFhOTJjNTMzNzA5NjhmMDlmNGMyZTMzNzhjMjM2YzA2YjRkYTQ3MWUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gQXVnIDI5
IDE5OjEzOjQxIDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDdjZWVjZS4uNWY3ZTYwYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDExLTA4LTI5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBh
dmxvdkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wbGVtZW50IGNp
cmN1bGFyIHRhYmJpbmcgdGhyb3VnaCB0aGUgU3R5bGVzIHNpZGViYXIgcGFuZSBjb250ZW50cwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjcxMjcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rv
ci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWw6CisKKzIwMTEtMDgtMjkgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVj
dG9yOiA8YnV0dG9uIGhpZGRlbj4uLjwvYnV0dG9uPiBoYXMgYSBkaWZmZXJlbnQgY29tcHV0ZWQg
ImRpc3BsYXkiIHZhbHVlIHRoYW4gIm5vbmUiCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02NzEyNAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbAppbmRleCBmN2YzZDYyLi45
YmYwNGFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1j
b21taXQtZWRpdGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwKQEAgLTEwLDEyICsxMCwxNCBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzKCJpbnNwZWN0
ZWQiLCBzdGVwMSk7CiAKICAgICB2YXIgdHJlZUVsZW1lbnQ7CisgICAgdmFyIHRyZWVPdXRsaW5l
OwogICAgIHZhciBzZWN0aW9uOwogCiAgICAgZnVuY3Rpb24gc3RlcDEoKQogICAgIHsKICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUpOwogICAgICAg
ICB0cmVlRWxlbWVudCA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVudFN0eWxlUHJvcGVydHlUcmVl
SXRlbSgiY29sb3IiKTsKKyAgICAgICAgdHJlZU91dGxpbmUgPSB0cmVlRWxlbWVudC50cmVlT3V0
bGluZTsKIAogICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRpbmcoKTsKICAgICAgICAgdHJl
ZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiY29sb3IiOwpAQCAtMzQsMTAgKzM2
LDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gc3RlcDIoKQogICAgIHsKLSAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQoKSkgeworICAgICAgICB2
YXIgYmxhbmtUcmVlRWxlbWVudCA9IHRyZWVPdXRsaW5lLmNoaWxkcmVuWzFdOworICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGJsYW5rVHJlZUVsZW1lbnQubmFtZUVsZW1l
bnQpKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiTm8gbmV3IHByb3Bl
cnR5IGVkaXRvciBhY3RpdmUhIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRl
VGVzdCgpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCBTdHlsZXMgcGFuZSBlZGl0b3Ig
bG9vcGluZy4KKyAgICAgICAgYmxhbmtUcmVlRWxlbWVudC5uYW1lRWxlbWVudC5kaXNwYXRjaEV2
ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVyIikpOworICAgICAgICBpZiAo
IVdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRyZWVPdXRsaW5lLmNoaWxkcmVuWzBdLm5hbWVF
bGVtZW50KSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIk9yaWdpbmFs
IHByb3BlcnR5IG5hbWUgZWRpdG9yIG5vdCBhY3RpdmUhIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFm
dGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMmFkMDIw
Li40ZmVjMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTkgQEAKIDIwMTEtMDgtMjkgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVj
dG9yOiBJbXBsZW1lbnQgY2lyY3VsYXIgdGFiYmluZyB0aHJvdWdoIHRoZSBTdHlsZXMgc2lkZWJh
ciBwYW5lIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NzEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5uZXh0RWRp
dGFibGVTaWJsaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0
aW9uLnByb3RvdHlwZS5wcmV2aW91c0VkaXRhYmxlU2libGluZyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuc3RhcnRFZGl0aW5nU2VsZWN0
b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90
b3R5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUuZWxlbWVudC51c2VySW5wdXQucHJldmlvdXNDb250ZW50LmNvbnRleHQubW92ZURp
cmVjdGlvbik6CisKKzIwMTEtMDgtMjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9t
aXVtLm9yZz4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiA8YnV0dG9uIGhpZGRlbj4uLjwvYnV0
dG9uPiBoYXMgYSBkaWZmZXJlbnQgY29tcHV0ZWQgImRpc3BsYXkiIHZhbHVlIHRoYW4gIm5vbmUi
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzEyNAog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Np
ZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNT
aWRlYmFyUGFuZS5qcwppbmRleCBlZGI1MTNjLi40YzQ4ZGE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAg
LTkzNyw2ICs5MzcsMTggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ubmV4dFNpYmxp
bmc7CiAgICAgICAgIH0gd2hpbGUgKGN1clNlY3Rpb24gJiYgIWN1clNlY3Rpb24uZWRpdGFibGUp
OwogCisgICAgICAgIGlmICghY3VyU2VjdGlvbikgeworICAgICAgICAgICAgdmFyIGNhbmRpZGF0
ZVNlY3Rpb24gPSB0aGlzOworICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGNhbmRpZGF0ZVNlY3Rp
b24ucHJldmlvdXNTaWJsaW5nOworICAgICAgICAgICAgd2hpbGUgKGN1clNlY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY3VyU2VjdGlvbi5lZGl0YWJsZSkKKyAgICAgICAgICAgICAgICAg
ICAgY2FuZGlkYXRlU2VjdGlvbiA9IGN1clNlY3Rpb247CisgICAgICAgICAgICAgICAgY3VyU2Vj
dGlvbiA9IGN1clNlY3Rpb24ucHJldmlvdXNTaWJsaW5nOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICByZXR1cm4gY2FuZGlkYXRlU2VjdGlvbi5lZGl0YWJsZSA/IGNhbmRpZGF0ZVNlY3Rp
b24gOiBudWxsOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIGN1clNlY3Rpb247CiAgICAg
fSwKIApAQCAtOTQ3LDYgKzk1OSwxOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjdXJTZWN0aW9uID0gY3VyU2VjdGlvbi5w
cmV2aW91c1NpYmxpbmc7CiAgICAgICAgIH0gd2hpbGUgKGN1clNlY3Rpb24gJiYgIWN1clNlY3Rp
b24uZWRpdGFibGUpOwogCisgICAgICAgIGlmICghY3VyU2VjdGlvbikgeworICAgICAgICAgICAg
dmFyIGNhbmRpZGF0ZVNlY3Rpb24gPSB0aGlzOworICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGNh
bmRpZGF0ZVNlY3Rpb24ubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB3aGlsZSAoY3VyU2VjdGlv
bikgeworICAgICAgICAgICAgICAgIGlmIChjdXJTZWN0aW9uLmVkaXRhYmxlKQorICAgICAgICAg
ICAgICAgICAgICBjYW5kaWRhdGVTZWN0aW9uID0gY3VyU2VjdGlvbjsKKyAgICAgICAgICAgICAg
ICBjdXJTZWN0aW9uID0gY3VyU2VjdGlvbi5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVNlY3Rpb24uZWRpdGFibGUgPyBjYW5kaWRhdGVT
ZWN0aW9uIDogbnVsbDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBjdXJTZWN0aW9uOwog
ICAgIH0sCiAKQEAgLTExMjIsNiArMTE0Niw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5n
RWRpdGVkKGVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHRoaXMuX3Nl
bGVjdG9yRWxlbWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0aGlzLl9zZWxlY3RvckVsZW1lbnQsIHsKICAgICAgICAg
ICAgIGNvbnRleHQ6IG51bGwsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0aGlzLmVkaXRp
bmdTZWxlY3RvckNvbW1pdHRlZC5iaW5kKHRoaXMpLApAQCAtMTgzOSw2ICsxODY0LDggQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwogCiAgICAgICAgIHRoaXMuX3BhcmVu
dFBhbmUuX2lzRWRpdGluZ1N0eWxlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQu
cGFyZW50RWxlbWVudCkKKyAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVudC5z
Y3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0
RWRpdGluZyhzZWxlY3RFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAog
ICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhp
cyksCkBAIC0xOTk1LDE3ICsyMDIyLDI3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbW92ZVRvID0gdGhpczsKICAgICAg
ICAgdmFyIG1vdmVUb090aGVyID0gKGlzRWRpdGluZ05hbWUgXiAobW92ZURpcmVjdGlvbiA9PT0g
ImZvcndhcmQiKSk7CiAgICAgICAgIHZhciBhYmFuZG9uTmV3UHJvcGVydHkgPSB0aGlzLl9uZXdQ
cm9wZXJ0eSAmJiAhdXNlcklucHV0ICYmIChtb3ZlVG9PdGhlciB8fCBpc0VkaXRpbmdOYW1lKTsK
KyAgICAgICAgdmFyIHRhcmdldE5ld1Byb3BlcnR5U2VjdGlvbiA9IHRoaXMudHJlZU91dGxpbmUu
c2VjdGlvbjsKICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiAhaXNF
ZGl0aW5nTmFtZSB8fCBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYmIGlzRWRpdGluZ05h
bWUpIHsKICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICBtb3ZlVG8gPSAobW92ZURp
cmVjdGlvbiA9PT0gImZvcndhcmQiID8gbW92ZVRvLm5leHRTaWJsaW5nIDogbW92ZVRvLnByZXZp
b3VzU2libGluZyk7CiAgICAgICAgICAgICB9IHdoaWxlKG1vdmVUbyAmJiAhbW92ZVRvLnNlbGVj
dGFibGUpOwogCi0gICAgICAgICAgIGlmIChtb3ZlVG8pCisgICAgICAgICAgICBpZiAobW92ZVRv
KQogICAgICAgICAgICAgICAgIG1vdmVUb1Byb3BlcnR5TmFtZSA9IG1vdmVUby5uYW1lOwogICAg
ICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiICYmICghdGhpcy5f
bmV3UHJvcGVydHkgfHwgdXNlcklucHV0KSkKICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQcm9w
ZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiYmFj
a3dhcmQiICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5ydWxlKQotICAgICAgICAgICAgICAg
IG1vdmVUb1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rp
b24gPT09ICJiYWNrd2FyZCIpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZS5zZWN0aW9uLnJ1bGUpCisgICAgICAgICAgICAgICAgICAgIG1vdmVUb1NlbGVjdG9yID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZp
b3VzU2libGluZyA9IHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5wcmV2aW91c0VkaXRhYmxlU2li
bGluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTaWJsaW5nKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjcmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICB0YXJnZXROZXdQcm9wZXJ0eVNlY3Rpb24gPSBwcmV2aW91c1NpYmxpbmc7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0cmlnZ2VyIHRo
ZSBtb3ZlVG9OZXh0Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcuCkBAIC0yMDE0LDcgKzIwNTEsNyBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIGlzRGlydHlWaWFQYXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxl
bWVudC50ZXh0Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVs
ZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZh
ciBzaG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9P
dGhlciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdO
YW1lICYmIGJsYW5rSW5wdXQpKTsKICAgICAgICAgaWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91
c0NvbnRlbnQgfHwgaXNEaXJ0eVZpYVBhc3RlKSAmJiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNo
b3VsZENvbW1pdE5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNl
Y3Rpb24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5f
bmV3UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOworICAg
ICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVUb05l
eHRDYWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCwgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLCB0YXJnZXROZXdQcm9wZXJ0eVNlY3Rpb24pOwogICAgICAg
ICAgICAgdmFyIHByb3BlcnR5VGV4dDsKICAgICAgICAgICAgIGlmIChibGFua0lucHV0IHx8ICh0
aGlzLl9uZXdQcm9wZXJ0eSAmJiAvXlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1lbnQudGV4dENv
bnRlbnQpKSkKICAgICAgICAgICAgICAgICBwcm9wZXJ0eVRleHQgPSAiIjsKQEAgLTIwMjgsMTMg
KzIwNjUsMTMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIWlzRGF0YVBhc3RlZCAm
JiAhdGhpcy5fbmV3UHJvcGVydHkpCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgp
OwotICAgICAgICAgICAgbW92ZVRvTmV4dENhbGxiYWNrLmNhbGwodGhpcywgdGhpcy5fbmV3UHJv
cGVydHksIGZhbHNlLCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOworICAgICAgICAgICAgbW92
ZVRvTmV4dENhbGxiYWNrLmNhbGwodGhpcywgdGhpcy5fbmV3UHJvcGVydHksIGZhbHNlLCB0aGlz
LnRyZWVPdXRsaW5lLnNlY3Rpb24sIHRhcmdldE5ld1Byb3BlcnR5U2VjdGlvbik7CiAgICAgICAg
IH0KIAogICAgICAgICB2YXIgbW92ZVRvSW5kZXggPSBtb3ZlVG8gJiYgdGhpcy50cmVlT3V0bGlu
ZSA/IHRoaXMudHJlZU91dGxpbmUuY2hpbGRyZW4uaW5kZXhPZihtb3ZlVG8pIDogLTE7CiAKICAg
ICAgICAgLy8gVGhlIENhbGxiYWNrIHRvIHN0YXJ0IGVkaXRpbmcgdGhlIG5leHQvcHJldmlvdXMg
cHJvcGVydHkvc2VsZWN0b3IuCi0gICAgICAgIGZ1bmN0aW9uIG1vdmVUb05leHRDYWxsYmFjayhh
bHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24pCisgICAgICAgIGZ1bmN0aW9uIG1vdmVU
b05leHRDYWxsYmFjayhhbHJlYWR5TmV3LCB2YWx1ZUNoYW5nZWQsIHNlY3Rpb24sIHRhcmdldE5l
d1Byb3BlcnR5U2VjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0
aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwNjgsMTQgKzIxMDUsMjcgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgaWYgKGFscmVhZHlOZXcgJiYgIXZhbHVlQ2hhbmdlZCAmJiAoaXNFZGl0aW5nTmFt
ZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiKSkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgICAgIHNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgp
LnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAgICAgIHRhcmdldE5ld1Byb3BlcnR5U2VjdGlv
bi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoYWJhbmRvbk5ld1Byb3Bl
cnR5KSB7CiAgICAgICAgICAgICAgICAgdmFyIHNlY3Rpb25Ub0VkaXQgPSBtb3ZlRGlyZWN0aW9u
ID09PSAiYmFja3dhcmQiID8gc2VjdGlvbiA6IHNlY3Rpb24ubmV4dEVkaXRhYmxlU2libGluZygp
OwotICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uVG9FZGl0ICYmIHNlY3Rpb25Ub0VkaXQucnVs
ZSkKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRpdC5zdGFydEVkaXRpbmdTZWxlY3Rv
cigpOworICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uVG9FZGl0KSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChzZWN0aW9uVG9FZGl0LnJ1bGUpCisgICAgICAgICAgICAgICAgICAgICAgICBz
ZWN0aW9uVG9FZGl0LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJi
YWNrd2FyZCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRpdC5hZGRO
ZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBzZWN0
aW9uVG9FZGl0LnByb3BlcnRpZXNUcmVlT3V0bGluZSA/IHNlY3Rpb25Ub0VkaXQucHJvcGVydGll
c1RyZWVPdXRsaW5lLmNoaWxkcmVuIDogbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGlsZHJlblswXS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25U
b0VkaXQuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygpOworICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106342</attachid>
            <date>2011-09-05 09:08:36 -0700</date>
            <delta_ts>2011-09-07 04:18:25 -0700</delta_ts>
            <desc>[PATCH] Simplified weird CSS property name/value field editor tabbing calculations</desc>
            <filename>loopstyleeditor.patch</filename>
            <type>text/plain</type>
            <size>15575</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwODFkMGVhLi4zNzQ3MzFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgt
MjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgY2lyY3VsYXIgdGFiYmluZyB0aHJvdWdoIHRoZSBTdHls
ZXMgc2lkZWJhciBwYW5lIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcu
aHRtbDoKKwogMjAxMS0wOS0wNSAgWnNvbHQgRmVow6lyICA8ZmVoZXJ6c0BpbmYudS1zemVnZWQu
aHU+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCmlu
ZGV4IGY3ZjNkNjIuLjliZjA0YWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9z
dHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbApAQCAtMTAsMTIgKzEwLDE0IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JT
dHlsZXMoImluc3BlY3RlZCIsIHN0ZXAxKTsKIAogICAgIHZhciB0cmVlRWxlbWVudDsKKyAgICB2
YXIgdHJlZU91dGxpbmU7CiAgICAgdmFyIHNlY3Rpb247CiAKICAgICBmdW5jdGlvbiBzdGVwMSgp
CiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMo
dHJ1ZSk7CiAgICAgICAgIHRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5
bGVQcm9wZXJ0eVRyZWVJdGVtKCJjb2xvciIpOworICAgICAgICB0cmVlT3V0bGluZSA9IHRyZWVF
bGVtZW50LnRyZWVPdXRsaW5lOwogCiAgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygp
OwogICAgICAgICB0cmVlRWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7
CkBAIC0zNCwxMCArMzYsMTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVw
MigpCiAgICAgewotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCgp
KSB7CisgICAgICAgIHZhciBibGFua1RyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuY2hpbGRyZW5b
MV07CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoYmxhbmtUcmVlRWxl
bWVudC5uYW1lRWxlbWVudCkpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCJObyBuZXcgcHJvcGVydHkgZWRpdG9yIGFjdGl2ZSEiKTsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CiAgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IFN0eWxl
cyBwYW5lIGVkaXRvciBsb29waW5nLgorICAgICAgICBibGFua1RyZWVFbGVtZW50Lm5hbWVFbGVt
ZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIiKSk7
CisgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodHJlZU91dGxpbmUuY2hp
bGRyZW5bMF0ubmFtZUVsZW1lbnQpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiT3JpZ2luYWwgcHJvcGVydHkgbmFtZSBlZGl0b3Igbm90IGFjdGl2ZSEiKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAg
ICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVXaXRoSWQoIm90aGVyIik7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDhmODRiOTMuLmZmZjcwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAx
MS0wOC0yOSAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBjaXJjdWxhciB0YWJiaW5nIHRocm91Z2ggdGhl
IFN0eWxlcyBzaWRlYmFyIHBhbmUgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY3MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlLm5leHRFZGl0YWJsZVNpYmxpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxl
UHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5zdGFy
dEVkaXRpbmdTZWxlY3Rvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQu
Y29udGV4dC5tb3ZlRGlyZWN0aW9uKToKKwogMjAxMS0wOS0wNSAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEY1IHJlc3Vs
dHMgaW4gYSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIHJlbG9hZCBvbiBub24tTWFjcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMKaW5kZXggZWRiNTEzYy4uNzBjMTYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC05MzcsNiAr
OTM3LDE4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJTZWN0aW9uLm5leHRTaWJsaW5nOwogICAg
ICAgICB9IHdoaWxlIChjdXJTZWN0aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxlKTsKIAorICAg
ICAgICBpZiAoIWN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGVTZWN0aW9u
ID0gdGhpczsKKyAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjYW5kaWRhdGVTZWN0aW9uLnByZXZp
b3VzU2libGluZzsKKyAgICAgICAgICAgIHdoaWxlIChjdXJTZWN0aW9uKSB7CisgICAgICAgICAg
ICAgICAgaWYgKGN1clNlY3Rpb24uZWRpdGFibGUpCisgICAgICAgICAgICAgICAgICAgIGNhbmRp
ZGF0ZVNlY3Rpb24gPSBjdXJTZWN0aW9uOworICAgICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBj
dXJTZWN0aW9uLnByZXZpb3VzU2libGluZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
cmV0dXJuIGNhbmRpZGF0ZVNlY3Rpb24uZWRpdGFibGUgPyBjYW5kaWRhdGVTZWN0aW9uIDogbnVs
bDsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVybiBjdXJTZWN0aW9uOwogICAgIH0sCiAKQEAg
LTk0Nyw2ICs5NTksMTggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ucHJldmlvdXNT
aWJsaW5nOwogICAgICAgICB9IHdoaWxlIChjdXJTZWN0aW9uICYmICFjdXJTZWN0aW9uLmVkaXRh
YmxlKTsKIAorICAgICAgICBpZiAoIWN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgIHZhciBjYW5k
aWRhdGVTZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjYW5kaWRhdGVT
ZWN0aW9uLm5leHRTaWJsaW5nOworICAgICAgICAgICAgd2hpbGUgKGN1clNlY3Rpb24pIHsKKyAg
ICAgICAgICAgICAgICBpZiAoY3VyU2VjdGlvbi5lZGl0YWJsZSkKKyAgICAgICAgICAgICAgICAg
ICAgY2FuZGlkYXRlU2VjdGlvbiA9IGN1clNlY3Rpb247CisgICAgICAgICAgICAgICAgY3VyU2Vj
dGlvbiA9IGN1clNlY3Rpb24ubmV4dFNpYmxpbmc7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHJldHVybiBjYW5kaWRhdGVTZWN0aW9uLmVkaXRhYmxlID8gY2FuZGlkYXRlU2VjdGlvbiA6
IG51bGw7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gY3VyU2VjdGlvbjsKICAgICB9LAog
CkBAIC0xMTIyLDYgKzExNDYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChl
bGVtZW50KSkKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICB0aGlzLl9zZWxlY3RvckVs
ZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zdGFydEVkaXRpbmcodGhpcy5fc2VsZWN0b3JFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250
ZXh0OiBudWxsLAogICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nU2VsZWN0
b3JDb21taXR0ZWQuYmluZCh0aGlzKSwKQEAgLTExMzgsMTYgKzExNjMsMTMgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBp
ZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5l
eHBhbmQoKTsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUu
Y2hpbGRyZW4ubGVuZ3RoID09PSAwKQorICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRo
aXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuOworICAgICAgICAgICAgICAgIGlmICgh
Y2hpbGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJv
cGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJl
blswXQotICAgICAgICAgICAgICAgICAgICBpdGVtLnN0YXJ0RWRpdGluZyhpdGVtLm5hbWVFbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBjaGlsZHJlblswXS5zdGFydEVkaXRpbmcoY2hpbGRyZW5bMF0ubmFtZUVsZW1l
bnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNT
ZWN0aW9uID0gdGhpcy5wcmV2aW91c0VkaXRhYmxlU2libGluZygpOwotICAgICAgICAgICAgICAg
IGlmICghcHJldmlvdXNTZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgICAgICAgICBwcmV2aW91c1NlY3Rpb24uZXhwYW5kKCk7CiAgICAgICAgICAgICAgICAg
cHJldmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKQEAg
LTE4MzksNiArMTg2MSw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3BlcnR5VGV4dDsK
IAogICAgICAgICB0aGlzLl9wYXJlbnRQYW5lLl9pc0VkaXRpbmdTdHlsZSA9IHRydWU7CisgICAg
ICAgIGlmIChzZWxlY3RFbGVtZW50LnBhcmVudEVsZW1lbnQpCisgICAgICAgICAgICBzZWxlY3RF
bGVtZW50LnBhcmVudEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoc2VsZWN0RWxlbWVudCwgewogICAgICAgICAg
ICAgY29udGV4dDogY29udGV4dCwKICAgICAgICAgICAgIGNvbW1pdEhhbmRsZXI6IHRoaXMuZWRp
dGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLApAQCAtMTk4Miw3ICsyMDA2LDcgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBl
bHNlCiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB9Ci0gICAg
fSwgCisgICAgfSwKIAogICAgIGVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVz
ZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsK
QEAgLTE5OTEsMjEgKzIwMTUsNjIgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpc0VkaXRpbmdOYW1lID0gY29udGV4dC5p
c0VkaXRpbmdOYW1lOwogCiAgICAgICAgIC8vIERldGVybWluZSB3aGVyZSB0byBtb3ZlIHRvIGJl
Zm9yZSBtYWtpbmcgY2hhbmdlcwotICAgICAgICB2YXIgY3JlYXRlTmV3UHJvcGVydHksIG1vdmVU
b1Byb3BlcnR5TmFtZSwgbW92ZVRvU2VsZWN0b3I7CisgICAgICAgIHZhciBtb3ZlVG9Qcm9wZXJ0
eU5hbWU7CisgICAgICAgIHZhciBhY3Rpb24gPSAibW92ZVRvIjsKICAgICAgICAgdmFyIG1vdmVU
byA9IHRoaXM7Ci0gICAgICAgIHZhciBtb3ZlVG9PdGhlciA9IChpc0VkaXRpbmdOYW1lIF4gKG1v
dmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIikpOworICAgICAgICB2YXIgbW92ZUZvcndhcmQgPSBt
b3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCI7CisgICAgICAgIHZhciBtb3ZlVG9PdGhlciA9IGlz
RWRpdGluZ05hbWUgXiBtb3ZlRm9yd2FyZDsKICAgICAgICAgdmFyIGFiYW5kb25OZXdQcm9wZXJ0
eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmICF1c2VySW5wdXQgJiYgKG1vdmVUb090aGVyIHx8IGlz
RWRpdGluZ05hbWUpOwotICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiICYm
ICFpc0VkaXRpbmdOYW1lIHx8IG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgJiYgaXNFZGl0
aW5nTmFtZSkgeworICAgICAgICB2YXIgdGFyZ2V0U2VjdGlvbiA9IHRoaXMudHJlZU91dGxpbmUu
c2VjdGlvbjsKKworICAgICAgICAvLyBUaGUgcmVzdCBvZiB0aGlzIG1ldGhvZCByZWxpZXMgb24g
dGhlIGZhY3QgdGhhdCBhbnkgbm9uLW51bGwgdGFyZ2V0U2VjdGlvbgorICAgICAgICAvLyBoYXMg
bm9uLW51bGwgbmV4dEVkaXRhYmxlU2libGluZygpIGFuZCBwcmV2aW91c0VkaXRhYmxlU2libGlu
ZygpIChzaW5jZSB0aGlzIGlzIGhvdyB0aGVzZSBtZXRob2RzIGFyZSBpbXBsZW1lbnRlZCkuCisg
ICAgICAgIGlmIChtb3ZlVG9PdGhlciB8fCBhYmFuZG9uTmV3UHJvcGVydHkpIHsKICAgICAgICAg
ICAgIGRvIHsKLSAgICAgICAgICAgICAgICBtb3ZlVG8gPSAobW92ZURpcmVjdGlvbiA9PT0gImZv
cndhcmQiID8gbW92ZVRvLm5leHRTaWJsaW5nIDogbW92ZVRvLnByZXZpb3VzU2libGluZyk7Cisg
ICAgICAgICAgICAgICAgbW92ZVRvID0gbW92ZUZvcndhcmQgPyBtb3ZlVG8ubmV4dFNpYmxpbmcg
OiBtb3ZlVG8ucHJldmlvdXNTaWJsaW5nOwogICAgICAgICAgICAgfSB3aGlsZShtb3ZlVG8gJiYg
IW1vdmVUby5zZWxlY3RhYmxlKTsKIAotICAgICAgICAgICBpZiAobW92ZVRvKQorICAgICAgICAg
ICAgaWYgKG1vdmVUbykgewogICAgICAgICAgICAgICAgIG1vdmVUb1Byb3BlcnR5TmFtZSA9IG1v
dmVUby5uYW1lOwotICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZvcndh
cmQiICYmICghdGhpcy5fbmV3UHJvcGVydHkgfHwgdXNlcklucHV0KSkKLSAgICAgICAgICAgICAg
ICBjcmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtb3ZlRGly
ZWN0aW9uID09PSAiYmFja3dhcmQiICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5ydWxlKQot
ICAgICAgICAgICAgICAgIG1vdmVUb1NlbGVjdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBh
Y3Rpb24gPSAibW92ZVRvIjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobW92ZUZvcndhcmQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoYWJhbmRvbk5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAg
ICAgICAgIHRhcmdldFNlY3Rpb24gPSB0YXJnZXRTZWN0aW9uLm5leHRFZGl0YWJsZVNpYmxpbmco
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNlY3Rpb24ucnVsZSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFjdGlvbiA9ICJlZGl0U2VsZWN0b3IiOworICAgICAgICAgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRhcmdl
dFNlY3Rpb24ucHJvcGVydGllc1RyZWVPdXRsaW5lID8gdGFyZ2V0U2VjdGlvbi5wcm9wZXJ0aWVz
VHJlZU91dGxpbmUuY2hpbGRyZW4gOiBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNoaWxkcmVuICYmIGNoaWxkcmVuLmxlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vdmVUbyA9IGNoaWxkcmVuWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFj
dGlvbiA9ICJtb3ZlVG8iOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gImNyZWF0ZU5ldyI7CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWN0
aW9uID0gImNyZWF0ZU5ldyI7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyBNb3ZlIGJhY2t3YXJk
LgorICAgICAgICAgICAgICAgIGlmIChhYmFuZG9uTmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgdmFyIGNoaWxkcmVuID0gdGFyZ2V0U2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxp
bmUgPyB0YXJnZXRTZWN0aW9uLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlbiA6IG51bGw7
CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbiAmJiBjaGlsZHJlbi5sZW5ndGggPiAx
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVG8gPSBjaGlsZHJlbltjaGlsZHJlbi5s
ZW5ndGggLSAyXTsgLy8gSnVtcCB0byBsYXN0IGJ1dCBvbmUgKGJsYW5rKSBwcm9wZXJ0eS4KKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICJtb3ZlVG8iOworICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFNlY3Rpb24u
cnVsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAiZWRpdFNlbGVjdG9y
IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRhcmdldFNlY3Rpb24gPSB0YXJnZXRTZWN0aW9uLnByZXZpb3VzRWRpdGFibGVTaWJs
aW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gImNyZWF0ZU5ldyI7
CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50cmVlT3V0
bGluZS5zZWN0aW9uLnJ1bGUpCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAiZWRp
dFNlbGVjdG9yIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB0YXJnZXRTZWN0aW9uID0gdGFyZ2V0U2VjdGlvbi5wcmV2aW91c0VkaXRhYmxlU2li
bGluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gImNyZWF0ZU5ldyI7Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyBNYWtlIHRoZSBDaGFuZ2VzIGFuZCB0cmlnZ2VyIHRoZSBt
b3ZlVG9OZXh0Q2FsbGJhY2sgYWZ0ZXIgdXBkYXRpbmcuCkBAIC0yMDE0LDcgKzIwNzksNyBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGlzRGlydHlWaWFQYXN0ZSA9IGlzRGF0YVBhc3RlZCAmJiAodGhpcy5uYW1lRWxlbWVu
dC50ZXh0Q29udGVudCAhPT0gY29udGV4dC5vcmlnaW5hbE5hbWUgfHwgdGhpcy52YWx1ZUVsZW1l
bnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxWYWx1ZSk7CiAgICAgICAgIHZhciBz
aG91bGRDb21taXROZXdQcm9wZXJ0eSA9IHRoaXMuX25ld1Byb3BlcnR5ICYmIChtb3ZlVG9PdGhl
ciB8fCAoIW1vdmVEaXJlY3Rpb24gJiYgIWlzRWRpdGluZ05hbWUpIHx8IChpc0VkaXRpbmdOYW1l
ICYmIGJsYW5rSW5wdXQpKTsKICAgICAgICAgaWYgKCgodXNlcklucHV0ICE9PSBwcmV2aW91c0Nv
bnRlbnQgfHwgaXNEaXJ0eVZpYVBhc3RlKSAmJiAhdGhpcy5fbmV3UHJvcGVydHkpIHx8IHNob3Vs
ZENvbW1pdE5ld1Byb3BlcnR5KSB7Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rp
b24uX2FmdGVyVXBkYXRlID0gbW92ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5fbmV3
UHJvcGVydHksICFibGFua0lucHV0LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOworICAgICAg
ICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVUb05leHRD
YWxsYmFjay5iaW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCwgdGFyZ2V0
U2VjdGlvbik7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHlUZXh0OwogICAgICAgICAgICAgaWYg
KGJsYW5rSW5wdXQgfHwgKHRoaXMuX25ld1Byb3BlcnR5ICYmIC9eXHMqJC8udGVzdCh0aGlzLnZh
bHVlRWxlbWVudC50ZXh0Q29udGVudCkpKQogICAgICAgICAgICAgICAgIHByb3BlcnR5VGV4dCA9
ICIiOwpAQCAtMjAyOCw1OSArMjA5Myw1MSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
ICghaXNEYXRhUGFzdGVkICYmICF0aGlzLl9uZXdQcm9wZXJ0eSkKICAgICAgICAgICAgICAgICB0
aGlzLnVwZGF0ZVRpdGxlKCk7Ci0gICAgICAgICAgICBtb3ZlVG9OZXh0Q2FsbGJhY2suY2FsbCh0
aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwgZmFsc2UsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7
CisgICAgICAgICAgICBtb3ZlVG9OZXh0Q2FsbGJhY2suY2FsbCh0aGlzLCB0aGlzLl9uZXdQcm9w
ZXJ0eSwgZmFsc2UsIHRhcmdldFNlY3Rpb24pOwogICAgICAgICB9CiAKICAgICAgICAgdmFyIG1v
dmVUb0luZGV4ID0gbW92ZVRvICYmIHRoaXMudHJlZU91dGxpbmUgPyB0aGlzLnRyZWVPdXRsaW5l
LmNoaWxkcmVuLmluZGV4T2YobW92ZVRvKSA6IC0xOwogCiAgICAgICAgIC8vIFRoZSBDYWxsYmFj
ayB0byBzdGFydCBlZGl0aW5nIHRoZSBuZXh0L3ByZXZpb3VzIHByb3BlcnR5L3NlbGVjdG9yLgot
ICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2FsbGJhY2soYWxyZWFkeU5ldywgdmFsdWVDaGFu
Z2VkLCBzZWN0aW9uKQorICAgICAgICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2FsbGJhY2soYWxyZWFk
eU5ldywgdmFsdWVDaGFuZ2VkLCB0YXJnZXRTZWN0aW9uKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1vdmVEaXJlY3Rpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICAvLyBVc2VyIGp1c3QgdGFiYmVkIHRocm91Z2ggd2l0aG91dCBjaGFuZ2VzLgotICAgICAg
ICAgICAgaWYgKG1vdmVUbyAmJiBtb3ZlVG8ucGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgbW92
ZVRvLnN0YXJ0RWRpdGluZyghaXNFZGl0aW5nTmFtZSA/IG1vdmVUby5uYW1lRWxlbWVudCA6IG1v
dmVUby52YWx1ZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gVXNlciBoYXMgbWFkZSBhIGNoYW5nZSB0aGVuIHRhYmJlZCwg
d2lwaW5nIGFsbCB0aGUgb3JpZ2luYWwgdHJlZUVsZW1lbnRzLgotICAgICAgICAgICAgLy8gUmVj
YWxjdWxhdGUgdGhlIG5ldyB0cmVlRWxlbWVudCBmb3IgdGhlIHNhbWUgcHJvcGVydHkgd2Ugd2Vy
ZSBnb2luZyB0byBlZGl0IG5leHQuCiAgICAgICAgICAgICBpZiAobW92ZVRvICYmICFtb3ZlVG8u
cGFyZW50KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHByb3BlcnR5RWxlbWVudHMgPSBzZWN0aW9u
LnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBpZiAobW92
ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiICYmIGJsYW5rSW5wdXQgJiYgIWlzRWRpdGluZ05hbWUp
CisgICAgICAgICAgICAgICAgLy8gVXNlciBoYXMgbWFkZSBhIGNoYW5nZSBhbmQgdGhlbiB0YWJi
ZWQsIHdpcGluZyBhbGwgdGhlIG9yaWdpbmFsIHRyZWVFbGVtZW50cy4KKyAgICAgICAgICAgICAg
ICAvLyBSZWNhbGN1bGF0ZSB0aGUgbmV3IHRyZWVFbGVtZW50IGZvciB0aGUgc2FtZSBwcm9wZXJ0
eSB3ZSB3ZXJlIGdvaW5nIHRvIGVkaXQgbmV4dC4KKyAgICAgICAgICAgICAgICB2YXIgcHJvcGVy
dHlFbGVtZW50cyA9IHRhcmdldFNlY3Rpb24ucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVu
OworICAgICAgICAgICAgICAgIHZhciBzZWxlY3RhYmxlUHJvcGVydHlFbGVtZW50Q291bnQgPSAw
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcGVydHlFbGVtZW50cy5s
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJvcGVydHlFbGVtZW50c1tp
XS5zZWxlY3RhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgKytzZWxlY3RhYmxlUHJvcGVy
dHlFbGVtZW50Q291bnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICht
b3ZlRm9yd2FyZCAmJiBibGFua0lucHV0ICYmICFpc0VkaXRpbmdOYW1lKQogICAgICAgICAgICAg
ICAgICAgICAtLW1vdmVUb0luZGV4OwotICAgICAgICAgICAgICAgIGlmIChtb3ZlVG9JbmRleCA+
PSBwcm9wZXJ0eUVsZW1lbnRzLmxlbmd0aCAmJiAhdGhpcy5fbmV3UHJvcGVydHkpCi0gICAgICAg
ICAgICAgICAgICAgIGNyZWF0ZU5ld1Byb3BlcnR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBp
ZiAobW92ZVRvSW5kZXggPj0gc2VsZWN0YWJsZVByb3BlcnR5RWxlbWVudENvdW50ICYmICFhbHJl
YWR5TmV3KQorICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAiY3JlYXRlTmV3IjsKICAgICAg
ICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0g
bW92ZVRvSW5kZXggPj0gMCA/IHByb3BlcnR5RWxlbWVudHNbbW92ZVRvSW5kZXhdIDogbnVsbDsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRpbmcoIWlzRWRpdGluZ05hbWUgPyB0cmVlRWxl
bWVudC5uYW1lRWxlbWVudCA6IHRyZWVFbGVtZW50LnZhbHVlRWxlbWVudCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFs
cmVhZHlOZXcpCi0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3RvciA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1vdmVUbyA9IHRyZWVFbGVtZW50OworICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICghYWxyZWFkeU5ldykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICJlZGl0U2Vs
ZWN0b3IiOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
Ly8gQ3JlYXRlIGEgbmV3IGF0dHJpYnV0ZSBpbiB0aGlzIHNlY3Rpb24gKG9yIG1vdmUgdG8gbmV4
dCBlZGl0YWJsZSBzZWxlY3RvciBpZiBwb3NzaWJsZSkuCi0gICAgICAgICAgICBpZiAoY3JlYXRl
TmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICBpZiAoYWxyZWFkeU5ldyAmJiAhdmFsdWVD
aGFuZ2VkICYmIChpc0VkaXRpbmdOYW1lIF4gKG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIp
KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgc2VjdGlv
bi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoYWJhbmRvbk5ld1Byb3Bl
cnR5KSB7Ci0gICAgICAgICAgICAgICAgdmFyIHNlY3Rpb25Ub0VkaXQgPSBtb3ZlRGlyZWN0aW9u
ID09PSAiYmFja3dhcmQiID8gc2VjdGlvbiA6IHNlY3Rpb24ubmV4dEVkaXRhYmxlU2libGluZygp
OwotICAgICAgICAgICAgICAgIGlmIChzZWN0aW9uVG9FZGl0ICYmIHNlY3Rpb25Ub0VkaXQucnVs
ZSkKLSAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRpdC5zdGFydEVkaXRpbmdTZWxlY3Rv
cigpOwotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHN3aXRjaCAoYWN0aW9u
KSB7CisgICAgICAgICAgICBjYXNlICJtb3ZlVG8iOgorICAgICAgICAgICAgICAgIGlmIChtb3Zl
VG8pCisgICAgICAgICAgICAgICAgICAgIG1vdmVUby5zdGFydEVkaXRpbmcoKCFpc0VkaXRpbmdO
YW1lIHx8IChhYmFuZG9uTmV3UHJvcGVydHkgJiYgbW92ZUZvcndhcmQpKSA/IG1vdmVUby5uYW1l
RWxlbWVudCA6IG1vdmVUby52YWx1ZUVsZW1lbnQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgY2FzZSAiY3JlYXRlTmV3IjoKKyAgICAgICAgICAgICAgICB0YXJnZXRTZWN0
aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgImVkaXRTZWxlY3RvciI6CisgICAgICAgICAgICAg
ICAgdGFyZ2V0U2VjdGlvbi5zdGFydEVkaXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobW92ZVRvU2VsZWN0b3Ip
Ci0gICAgICAgICAgICAgICAgc2VjdGlvbi5zdGFydEVkaXRpbmdTZWxlY3RvcigpOwogICAgICAg
ICB9CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106568</attachid>
            <date>2011-09-07 04:18:25 -0700</date>
            <delta_ts>2011-09-07 07:11:20 -0700</delta_ts>
            <desc>[PATCH] Extracted a hard part of the calculations into StylePropertiesSection (asked by yurys@chromium.org)</desc>
            <filename>loopstyleeditor.patch</filename>
            <type>text/plain</type>
            <size>15701</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjIyYjg5Li5lNWNhMmJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDgt
MjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgY2lyY3VsYXIgdGFiYmluZyB0aHJvdWdoIHRoZSBTdHls
ZXMgc2lkZWJhciBwYW5lIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD02NzEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcu
aHRtbDoKKwogMjAxMS0wOS0wNyAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBDaGFuZ2UgZXZlbnQgaXMgbm90IGZpcmVkIGZvciBpbnB1dFt0eXBlPW51bWJlcl0g
d2hlbiB0aGUgdXNlciByZXZlcnRzIGEgY2hhbmdlIG1hZGUgYnkgc2NyaXB0CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRt
bAppbmRleCBmN2YzZDYyLi45YmYwNGFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivc3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwKQEAgLTEwLDEyICsxMCwx
NCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0
Rm9yU3R5bGVzKCJpbnNwZWN0ZWQiLCBzdGVwMSk7CiAKICAgICB2YXIgdHJlZUVsZW1lbnQ7Cisg
ICAgdmFyIHRyZWVPdXRsaW5lOwogICAgIHZhciBzZWN0aW9uOwogCiAgICAgZnVuY3Rpb24gc3Rl
cDEoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5
bGVzKHRydWUpOwogICAgICAgICB0cmVlRWxlbWVudCA9IEluc3BlY3RvclRlc3QuZ2V0RWxlbWVu
dFN0eWxlUHJvcGVydHlUcmVlSXRlbSgiY29sb3IiKTsKKyAgICAgICAgdHJlZU91dGxpbmUgPSB0
cmVlRWxlbWVudC50cmVlT3V0bGluZTsKIAogICAgICAgICB0cmVlRWxlbWVudC5zdGFydEVkaXRp
bmcoKTsKICAgICAgICAgdHJlZUVsZW1lbnQubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiY29s
b3IiOwpAQCAtMzQsMTAgKzM2LDE5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24g
c3RlcDIoKQogICAgIHsKLSAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55Rmll
bGQoKSkgeworICAgICAgICB2YXIgYmxhbmtUcmVlRWxlbWVudCA9IHRyZWVPdXRsaW5lLmNoaWxk
cmVuWzFdOworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGJsYW5rVHJl
ZUVsZW1lbnQubmFtZUVsZW1lbnQpKSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiTm8gbmV3IHByb3BlcnR5IGVkaXRvciBhY3RpdmUhIik7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogICAgICAgICB9CisKKyAgICAgICAgLy8gVGVzdCBT
dHlsZXMgcGFuZSBlZGl0b3IgbG9vcGluZy4KKyAgICAgICAgYmxhbmtUcmVlRWxlbWVudC5uYW1l
RWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZlbnQoIkVudGVy
IikpOworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKHRyZWVPdXRsaW5l
LmNoaWxkcmVuWzBdLm5hbWVFbGVtZW50KSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
ZGRSZXN1bHQoIk9yaWdpbmFsIHByb3BlcnR5IG5hbWUgZWRpdG9yIG5vdCBhY3RpdmUhIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICB9CisKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlV2l0aElkKCJvdGhlciIpOwogICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc3RlcDMpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCA2YThkMmY4Li5kOWE2MzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTEtMDgtMjkgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgY2lyY3VsYXIgdGFiYmluZyB0aHJvdWdo
IHRoZSBTdHlsZXMgc2lkZWJhciBwYW5lIGNvbnRlbnRzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzEyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZS5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNhbmNl
bGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90
b3R5cGUuc3RhcnRFZGl0aW5nT25UcmF2ZXJzYWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUuZWxlbWVudC51c2VySW5wdXQucHJl
dmlvdXNDb250ZW50LmNvbnRleHQubW92ZURpcmVjdGlvbik6CisKIDIwMTEtMDktMDcgIEFudHRp
IEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzYzNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5kZXggZWRiNTEzYy4u
NmEwNDlkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCkBAIC05MzcsNiArOTM3LDE4IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGN1clNl
Y3Rpb24gPSBjdXJTZWN0aW9uLm5leHRTaWJsaW5nOwogICAgICAgICB9IHdoaWxlIChjdXJTZWN0
aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxlKTsKIAorICAgICAgICBpZiAoIWN1clNlY3Rpb24p
IHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGVTZWN0aW9uID0gdGhpczsKKyAgICAgICAgICAg
IGN1clNlY3Rpb24gPSBjYW5kaWRhdGVTZWN0aW9uLnByZXZpb3VzU2libGluZzsKKyAgICAgICAg
ICAgIHdoaWxlIChjdXJTZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1clNlY3Rpb24u
ZWRpdGFibGUpCisgICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZVNlY3Rpb24gPSBjdXJTZWN0
aW9uOworICAgICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJTZWN0aW9uLnByZXZpb3VzU2li
bGluZzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZVNlY3Rp
b24uZWRpdGFibGUgPyBjYW5kaWRhdGVTZWN0aW9uIDogbnVsbDsKKyAgICAgICAgfQorCiAgICAg
ICAgIHJldHVybiBjdXJTZWN0aW9uOwogICAgIH0sCiAKQEAgLTk0Nyw2ICs5NTksMTggQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ucHJldmlvdXNTaWJsaW5nOwogICAgICAgICB9IHdo
aWxlIChjdXJTZWN0aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxlKTsKIAorICAgICAgICBpZiAo
IWN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgIHZhciBjYW5kaWRhdGVTZWN0aW9uID0gdGhpczsK
KyAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjYW5kaWRhdGVTZWN0aW9uLm5leHRTaWJsaW5nOwor
ICAgICAgICAgICAgd2hpbGUgKGN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBpZiAoY3Vy
U2VjdGlvbi5lZGl0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlU2VjdGlvbiA9
IGN1clNlY3Rpb247CisgICAgICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rpb24ubmV4
dFNpYmxpbmc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBjYW5kaWRhdGVT
ZWN0aW9uLmVkaXRhYmxlID8gY2FuZGlkYXRlU2VjdGlvbiA6IG51bGw7CisgICAgICAgIH0KKwog
ICAgICAgICByZXR1cm4gY3VyU2VjdGlvbjsKICAgICB9LAogCkBAIC0xMTIyLDYgKzExNDYsNyBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChlbGVtZW50KSkKICAgICAgICAgICAg
IHJldHVybjsKIAorICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZChmYWxzZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGhpcy5f
c2VsZWN0b3JFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBudWxsLAogICAgICAgICAg
ICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQuYmluZCh0aGlz
KSwKQEAgLTExMzgsMTYgKzExNjMsMTMgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1Nl
Y3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAobW92ZURpcmVjdGlvbiA9PT0g
ImZvcndhcmQiKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICAgICAgICAg
ICAgICBpZiAodGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoID09PSAw
KQorICAgICAgICAgICAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcGVydGllc1RyZWVPdXRs
aW5lLmNoaWxkcmVuOworICAgICAgICAgICAgICAgIGlmICghY2hpbGRyZW4ubGVuZ3RoKQogICAg
ICAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmco
KTsKLSAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0g
PSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlblswXQotICAgICAgICAgICAgICAg
ICAgICBpdGVtLnN0YXJ0RWRpdGluZyhpdGVtLm5hbWVFbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBjaGlsZHJlblsw
XS5zdGFydEVkaXRpbmcoY2hpbGRyZW5bMF0ubmFtZUVsZW1lbnQpOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNTZWN0aW9uID0gdGhpcy5wcmV2aW91
c0VkaXRhYmxlU2libGluZygpOwotICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNTZWN0aW9u
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICBwcmV2aW91
c1NlY3Rpb24uZXhwYW5kKCk7CiAgICAgICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmFkZE5l
d0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKQEAgLTExODksNiArMTIxMSwzNiBAQCBX
ZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgZWRp
dGluZ1NlbGVjdG9yQ2FuY2VsbGVkOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICAvLyBEbyBu
b3RoaW5nLCB0aGlzIGlzIG92ZXJyaWRkZW4gYnkgQmxhbmtTdHlsZVByb3BlcnRpZXNTZWN0aW9u
LgorICAgIH0sCisKKyAgICBzdGFydEVkaXRpbmdPblRyYXZlcnNhbDogZnVuY3Rpb24oZnJvbVRv
cCkKKyAgICB7CisgICAgICAgIGlmICghZnJvbVRvcCkgeworICAgICAgICAgICAgdmFyIGNoaWxk
cmVuID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW47CisgICAgICAgICAgICBm
b3IgKHZhciBpID0gY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoY2hpbGRyZW5baV0uc2VsZWN0YWJsZSkgeworICAgICAgICAgICAgICAgICAg
ICBjaGlsZHJlbltpXS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlz
LnJ1bGUpCisgICAgICAgICAgICAgICAgdGhpcy5zdGFydEVkaXRpbmdTZWxlY3RvcigpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNFZGl0YWJsZVNpYmxp
bmcoKS5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMucnVsZSkKKyAgICAgICAgICAgIHRo
aXMuc3RhcnRFZGl0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2
YXIgY2hpbGRyZW4gPSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlbjsKKyAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoY2hpbGRyZW5baV0uc2VsZWN0YWJsZSkgeworICAgICAgICAgICAgICAg
ICAgICBjaGlsZHJlbltpXS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMu
YWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygpOworICAgICAgICB9CiAgICAgfQog
fQogCkBAIC0xODM5LDYgKzE4OTEsOCBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0
eVRleHQ7CiAKICAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5faXNFZGl0aW5nU3R5bGUgPSB0cnVl
OworICAgICAgICBpZiAoc2VsZWN0RWxlbWVudC5wYXJlbnRFbGVtZW50KQorICAgICAgICAgICAg
c2VsZWN0RWxlbWVudC5wYXJlbnRFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2Up
OwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAg
ICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0
aGlzLmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKQEAgLTE5ODIsNyArMjAzNiw3IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlVGl0bGUoKTsKICAgICAgICAg
fQotICAgIH0sIAorICAgIH0sCiAKICAgICBlZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVt
ZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikK
ICAgICB7CkBAIC0xOTkxLDIxICsyMDQ1LDQyIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgaXNFZGl0aW5nTmFtZSA9IGNv
bnRleHQuaXNFZGl0aW5nTmFtZTsKIAogICAgICAgICAvLyBEZXRlcm1pbmUgd2hlcmUgdG8gbW92
ZSB0byBiZWZvcmUgbWFraW5nIGNoYW5nZXMKLSAgICAgICAgdmFyIGNyZWF0ZU5ld1Byb3BlcnR5
LCBtb3ZlVG9Qcm9wZXJ0eU5hbWUsIG1vdmVUb1NlbGVjdG9yOworICAgICAgICB2YXIgbW92ZVRv
UHJvcGVydHlOYW1lOworICAgICAgICB2YXIgYWN0aW9uID0gIm1vdmVUbyI7CiAgICAgICAgIHZh
ciBtb3ZlVG8gPSB0aGlzOwotICAgICAgICB2YXIgbW92ZVRvT3RoZXIgPSAoaXNFZGl0aW5nTmFt
ZSBeIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIpKTsKKyAgICAgICAgdmFyIG1vdmVGb3J3
YXJkID0gbW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiOworICAgICAgICB2YXIgbW92ZVRvT3Ro
ZXIgPSBpc0VkaXRpbmdOYW1lIF4gbW92ZUZvcndhcmQ7CiAgICAgICAgIHZhciBhYmFuZG9uTmV3
UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9wZXJ0eSAmJiAhdXNlcklucHV0ICYmIChtb3ZlVG9PdGhl
ciB8fCBpc0VkaXRpbmdOYW1lKTsKLSAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3
YXJkIiAmJiAhaXNFZGl0aW5nTmFtZSB8fCBtb3ZlRGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYm
IGlzRWRpdGluZ05hbWUpIHsKKyAgICAgICAgdmFyIHRhcmdldFNlY3Rpb24gPSB0aGlzLnRyZWVP
dXRsaW5lLnNlY3Rpb247CisKKyAgICAgICAgLy8gVGhlIHJlc3Qgb2YgdGhpcyBtZXRob2QgcmVs
aWVzIG9uIHRoZSBmYWN0IHRoYXQgYW55IG5vbi1udWxsIHRhcmdldFNlY3Rpb24KKyAgICAgICAg
Ly8gaGFzIG5vbi1udWxsIG5leHRFZGl0YWJsZVNpYmxpbmcoKSBhbmQgcHJldmlvdXNFZGl0YWJs
ZVNpYmxpbmcoKSAoc2luY2UgdGhpcyBpcyBob3cgdGhlc2UgbWV0aG9kcyBhcmUgaW1wbGVtZW50
ZWQpLgorICAgICAgICBpZiAobW92ZVRvT3RoZXIgfHwgYWJhbmRvbk5ld1Byb3BlcnR5KSB7CiAg
ICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgbW92ZVRvID0gKG1vdmVEaXJlY3Rpb24g
PT09ICJmb3J3YXJkIiA/IG1vdmVUby5uZXh0U2libGluZyA6IG1vdmVUby5wcmV2aW91c1NpYmxp
bmcpOworICAgICAgICAgICAgICAgIG1vdmVUbyA9IG1vdmVGb3J3YXJkID8gbW92ZVRvLm5leHRT
aWJsaW5nIDogbW92ZVRvLnByZXZpb3VzU2libGluZzsKICAgICAgICAgICAgIH0gd2hpbGUobW92
ZVRvICYmICFtb3ZlVG8uc2VsZWN0YWJsZSk7CiAKLSAgICAgICAgICAgaWYgKG1vdmVUbykKKyAg
ICAgICAgICAgIGlmIChtb3ZlVG8pIHsKICAgICAgICAgICAgICAgICBtb3ZlVG9Qcm9wZXJ0eU5h
bWUgPSBtb3ZlVG8ubmFtZTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG1vdmVEaXJlY3Rpb24gPT09
ICJmb3J3YXJkIiAmJiAoIXRoaXMuX25ld1Byb3BlcnR5IHx8IHVzZXJJbnB1dCkpCi0gICAgICAg
ICAgICAgICAgY3JlYXRlTmV3UHJvcGVydHkgPSB0cnVlOwotICAgICAgICAgICAgZWxzZSBpZiAo
bW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIiAmJiB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24u
cnVsZSkKLSAgICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3RvciA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYWN0aW9uID0gIm1vdmVUbyI7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1vdmVGb3J3
YXJkKSB7CisgICAgICAgICAgICAgICAgaWYgKGFiYW5kb25OZXdQcm9wZXJ0eSkgeworICAgICAg
ICAgICAgICAgICAgICB0YXJnZXRTZWN0aW9uID0gdGFyZ2V0U2VjdGlvbi5uZXh0RWRpdGFibGVT
aWJsaW5nKCk7CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICJlZGl0VG9wIjsKKyAgICAg
ICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gImNyZWF0ZU5l
dyI7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyBNb3ZlIGJhY2t3YXJkLgorICAgICAgICAgICAg
ICAgIGlmIChhYmFuZG9uTmV3UHJvcGVydHkpCisgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9
ICJlZGl0Qm90dG9tIjsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5ydWxlKQorICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uID0gImVkaXRTZWxlY3RvciI7CisgICAgICAgICAgICAgICAgICAgIGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0U2VjdGlvbiA9IHRhcmdldFNlY3Rpb24u
cHJldmlvdXNFZGl0YWJsZVNpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
biA9ICJjcmVhdGVOZXciOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gTWFrZSB0aGUgQ2hhbmdl
cyBhbmQgdHJpZ2dlciB0aGUgbW92ZVRvTmV4dENhbGxiYWNrIGFmdGVyIHVwZGF0aW5nLgpAQCAt
MjAxNCw3ICsyMDg5LDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBpc0RpcnR5VmlhUGFzdGUgPSBpc0RhdGFQYXN0ZWQg
JiYgKHRoaXMubmFtZUVsZW1lbnQudGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxOYW1l
IHx8IHRoaXMudmFsdWVFbGVtZW50LnRleHRDb250ZW50ICE9PSBjb250ZXh0Lm9yaWdpbmFsVmFs
dWUpOwogICAgICAgICB2YXIgc2hvdWxkQ29tbWl0TmV3UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9w
ZXJ0eSAmJiAobW92ZVRvT3RoZXIgfHwgKCFtb3ZlRGlyZWN0aW9uICYmICFpc0VkaXRpbmdOYW1l
KSB8fCAoaXNFZGl0aW5nTmFtZSAmJiBibGFua0lucHV0KSk7CiAgICAgICAgIGlmICgoKHVzZXJJ
bnB1dCAhPT0gcHJldmlvdXNDb250ZW50IHx8IGlzRGlydHlWaWFQYXN0ZSkgJiYgIXRoaXMuX25l
d1Byb3BlcnR5KSB8fCBzaG91bGRDb21taXROZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgdGhp
cy50cmVlT3V0bGluZS5zZWN0aW9uLl9hZnRlclVwZGF0ZSA9IG1vdmVUb05leHRDYWxsYmFjay5i
aW5kKHRoaXMsIHRoaXMuX25ld1Byb3BlcnR5LCAhYmxhbmtJbnB1dCwgdGhpcy50cmVlT3V0bGlu
ZS5zZWN0aW9uKTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5fYWZ0ZXJV
cGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJhY2suYmluZCh0aGlzLCB0aGlzLl9uZXdQcm9wZXJ0eSwg
IWJsYW5rSW5wdXQsIHRhcmdldFNlY3Rpb24pOwogICAgICAgICAgICAgdmFyIHByb3BlcnR5VGV4
dDsKICAgICAgICAgICAgIGlmIChibGFua0lucHV0IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiAv
XlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQpKSkKICAgICAgICAgICAg
ICAgICBwcm9wZXJ0eVRleHQgPSAiIjsKQEAgLTIwMjgsNTkgKzIxMDMsNTIgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBpZiAoIWlzRGF0YVBhc3RlZCAmJiAhdGhpcy5fbmV3UHJvcGVydHkp
CiAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwotICAgICAgICAgICAgbW92ZVRv
TmV4dENhbGxiYWNrLmNhbGwodGhpcywgdGhpcy5fbmV3UHJvcGVydHksIGZhbHNlLCB0aGlzLnRy
ZWVPdXRsaW5lLnNlY3Rpb24pOworICAgICAgICAgICAgbW92ZVRvTmV4dENhbGxiYWNrLmNhbGwo
dGhpcywgdGhpcy5fbmV3UHJvcGVydHksIGZhbHNlLCB0YXJnZXRTZWN0aW9uKTsKICAgICAgICAg
fQogCiAgICAgICAgIHZhciBtb3ZlVG9JbmRleCA9IG1vdmVUbyAmJiB0aGlzLnRyZWVPdXRsaW5l
ID8gdGhpcy50cmVlT3V0bGluZS5jaGlsZHJlbi5pbmRleE9mKG1vdmVUbykgOiAtMTsKIAogICAg
ICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9wcmV2aW91cyBw
cm9wZXJ0eS9zZWxlY3Rvci4KLSAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENhbGxiYWNrKGFs
cmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgc2VjdGlvbikKKyAgICAgICAgZnVuY3Rpb24gbW92ZVRv
TmV4dENhbGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgdGFyZ2V0U2VjdGlvbikKICAg
ICAgICAgewogICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgLy8gVXNlciBqdXN0IHRhYmJlZCB0aHJvdWdoIHdpdGhv
dXQgY2hhbmdlcy4KLSAgICAgICAgICAgIGlmIChtb3ZlVG8gJiYgbW92ZVRvLnBhcmVudCkgewot
ICAgICAgICAgICAgICAgIG1vdmVUby5zdGFydEVkaXRpbmcoIWlzRWRpdGluZ05hbWUgPyBtb3Zl
VG8ubmFtZUVsZW1lbnQgOiBtb3ZlVG8udmFsdWVFbGVtZW50KTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFVzZXIgaGFzIG1hZGUgYSBj
aGFuZ2UgdGhlbiB0YWJiZWQsIHdpcGluZyBhbGwgdGhlIG9yaWdpbmFsIHRyZWVFbGVtZW50cy4K
LSAgICAgICAgICAgIC8vIFJlY2FsY3VsYXRlIHRoZSBuZXcgdHJlZUVsZW1lbnQgZm9yIHRoZSBz
YW1lIHByb3BlcnR5IHdlIHdlcmUgZ29pbmcgdG8gZWRpdCBuZXh0LgogICAgICAgICAgICAgaWYg
KG1vdmVUbyAmJiAhbW92ZVRvLnBhcmVudCkgewotICAgICAgICAgICAgICAgIHZhciBwcm9wZXJ0
eUVsZW1lbnRzID0gc2VjdGlvbi5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW47Ci0gICAg
ICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJkIiAmJiBibGFua0lucHV0
ICYmICFpc0VkaXRpbmdOYW1lKQorICAgICAgICAgICAgICAgIC8vIFVzZXIgaGFzIG1hZGUgYSBj
aGFuZ2UgYW5kIHRoZW4gdGFiYmVkLCB3aXBpbmcgYWxsIHRoZSBvcmlnaW5hbCB0cmVlRWxlbWVu
dHMuCisgICAgICAgICAgICAgICAgLy8gUmVjYWxjdWxhdGUgdGhlIG5ldyB0cmVlRWxlbWVudCBm
b3IgdGhlIHNhbWUgcHJvcGVydHkgd2Ugd2VyZSBnb2luZyB0byBlZGl0IG5leHQuCisgICAgICAg
ICAgICAgICAgdmFyIHByb3BlcnR5RWxlbWVudHMgPSB0YXJnZXRTZWN0aW9uLnByb3BlcnRpZXNU
cmVlT3V0bGluZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICBpZiAobW92ZUZvcndhcmQgJiYg
YmxhbmtJbnB1dCAmJiAhaXNFZGl0aW5nTmFtZSkKICAgICAgICAgICAgICAgICAgICAgLS1tb3Zl
VG9JbmRleDsKLSAgICAgICAgICAgICAgICBpZiAobW92ZVRvSW5kZXggPj0gcHJvcGVydHlFbGVt
ZW50cy5sZW5ndGggJiYgIXRoaXMuX25ld1Byb3BlcnR5KQotICAgICAgICAgICAgICAgICAgICBj
cmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1vdmVUb0luZGV4
ID49IHByb3BlcnR5RWxlbWVudHMubGVuZ3RoICYmICFhbHJlYWR5TmV3KQorICAgICAgICAgICAg
ICAgICAgICBhY3Rpb24gPSAiY3JlYXRlTmV3IjsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbW92ZVRvSW5kZXggPj0gMCA/IHBy
b3BlcnR5RWxlbWVudHNbbW92ZVRvSW5kZXhdIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5z
dGFydEVkaXRpbmcoIWlzRWRpdGluZ05hbWUgPyB0cmVlRWxlbWVudC5uYW1lRWxlbWVudCA6IHRy
ZWVFbGVtZW50LnZhbHVlRWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFscmVhZHlOZXcpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3RvciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtb3ZlVG8gPSB0cmVlRWxlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzRWRp
dGluZ05hbWUgPSBmYWxzZTsgLy8gQWx3YXlzIGVkaXQgdGhlIG5leHQgcHJvcGVydHkgbmFtZSBh
ZnRlciByZW1vdmluZyBhIHByb3BlcnR5LgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKCFhbHJlYWR5TmV3KQorICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uID0gImVkaXRTZWxlY3RvciI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgYXR0cmlidXRlIGluIHRoaXMgc2Vj
dGlvbiAob3IgbW92ZSB0byBuZXh0IGVkaXRhYmxlIHNlbGVjdG9yIGlmIHBvc3NpYmxlKS4KLSAg
ICAgICAgICAgIGlmIChjcmVhdGVOZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgICAgIGlmIChh
bHJlYWR5TmV3ICYmICF2YWx1ZUNoYW5nZWQgJiYgKGlzRWRpdGluZ05hbWUgXiAobW92ZURpcmVj
dGlvbiA9PT0gImJhY2t3YXJkIikpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgICAgICBzZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmco
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmIChhYmFuZG9uTmV3UHJvcGVydHkpIHsKLSAgICAgICAgICAgICAgICB2YXIgc2VjdGlvblRv
RWRpdCA9IG1vdmVEaXJlY3Rpb24gPT09ICJiYWNrd2FyZCIgPyBzZWN0aW9uIDogc2VjdGlvbi5u
ZXh0RWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNlY3Rpb25Ub0VkaXQg
JiYgc2VjdGlvblRvRWRpdC5ydWxlKQotICAgICAgICAgICAgICAgICAgICBzZWN0aW9uVG9FZGl0
LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgc3dpdGNoIChhY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgIm1vdmVUbyI6CisgICAg
ICAgICAgICAgICAgaWYgKG1vdmVUbykKKyAgICAgICAgICAgICAgICAgICAgbW92ZVRvLnN0YXJ0
RWRpdGluZygoIWlzRWRpdGluZ05hbWUgfHwgKGFiYW5kb25OZXdQcm9wZXJ0eSAmJiBtb3ZlRm9y
d2FyZCkpID8gbW92ZVRvLm5hbWVFbGVtZW50IDogbW92ZVRvLnZhbHVlRWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJjcmVhdGVOZXciOgorICAgICAg
ICAgICAgICAgIHRhcmdldFNlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGlu
ZygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAiZWRpdFNlbGVj
dG9yIjoKKyAgICAgICAgICAgICAgICB0YXJnZXRTZWN0aW9uLnN0YXJ0RWRpdGluZ1NlbGVjdG9y
KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICJlZGl0VG9wIjoK
KyAgICAgICAgICAgIGNhc2UgImVkaXRCb3R0b20iOgorICAgICAgICAgICAgICAgIHRhcmdldFNl
Y3Rpb24uc3RhcnRFZGl0aW5nT25UcmF2ZXJzYWwoYWN0aW9uID09PSAiZWRpdFRvcCIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobW92
ZVRvU2VsZWN0b3IpCi0gICAgICAgICAgICAgICAgc2VjdGlvbi5zdGFydEVkaXRpbmdTZWxlY3Rv
cigpOwogICAgICAgICB9CiAgICAgfSwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106581</attachid>
            <date>2011-09-07 07:11:20 -0700</date>
            <delta_ts>2011-09-07 08:01:55 -0700</delta_ts>
            <desc>[PATCH] A minimally intrusive solution</desc>
            <filename>loopstyleeditor.patch</filename>
            <type>text/plain</type>
            <size>11639</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGJmNjRiN2RmMDYxMmYzZWM5YzI2NTdhMWJjMDRmZjg5MWYyY2JiZmUKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBXZWQgU2VwIDcg
MTc6NTU6NTUgMjAxMSArMDQwMAoKICAgIEZpeAoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZGMxYmY4Li5iOGE1NmY0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDktMDcgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2
bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbXBsZW1lbnQgY2ly
Y3VsYXIgdGFiYmluZyB0aHJvdWdoIHRoZSBTdHlsZXMgc2lkZWJhciBwYW5lIGNvbnRlbnRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzEyNworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtY29tbWl0LWVkaXRpbmcuaHRtbDoKKwogMjAxMS0wOS0wNyAgQmFsYXpz
IEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1dLMl0gZXZldFNlbmRl
ci5rZXlEb3duIGlzIHVuaW1wbGVtZW50ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9zdHlsZXMvc3R5bGVzLWNvbW1pdC1lZGl0aW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1jb21taXQtZWRpdGluZy5odG1sCmluZGV4IGY3ZjNkNjIuLjli
ZjA0YWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWNv
bW1pdC1lZGl0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHls
ZXMtY29tbWl0LWVkaXRpbmcuaHRtbApAQCAtMTAsMTIgKzEwLDE0IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXMoImluc3BlY3Rl
ZCIsIHN0ZXAxKTsKIAogICAgIHZhciB0cmVlRWxlbWVudDsKKyAgICB2YXIgdHJlZU91dGxpbmU7
CiAgICAgdmFyIHNlY3Rpb247CiAKICAgICBmdW5jdGlvbiBzdGVwMSgpCiAgICAgewogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSk7CiAgICAgICAg
IHRyZWVFbGVtZW50ID0gSW5zcGVjdG9yVGVzdC5nZXRFbGVtZW50U3R5bGVQcm9wZXJ0eVRyZWVJ
dGVtKCJjb2xvciIpOworICAgICAgICB0cmVlT3V0bGluZSA9IHRyZWVFbGVtZW50LnRyZWVPdXRs
aW5lOwogCiAgICAgICAgIHRyZWVFbGVtZW50LnN0YXJ0RWRpdGluZygpOwogICAgICAgICB0cmVl
RWxlbWVudC5uYW1lRWxlbWVudC50ZXh0Q29udGVudCA9ICJjb2xvciI7CkBAIC0zNCwxMCArMzYs
MTkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICBmdW5jdGlvbiBzdGVwMigpCiAgICAgewotICAg
ICAgICBpZiAoIVdlYkluc3BlY3Rvci5pc0VkaXRpbmdBbnlGaWVsZCgpKSB7CisgICAgICAgIHZh
ciBibGFua1RyZWVFbGVtZW50ID0gdHJlZU91dGxpbmUuY2hpbGRyZW5bMV07CisgICAgICAgIGlm
ICghV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoYmxhbmtUcmVlRWxlbWVudC5uYW1lRWxlbWVu
dCkpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJObyBuZXcgcHJvcGVy
dHkgZWRpdG9yIGFjdGl2ZSEiKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CiAgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IFN0eWxlcyBwYW5lIGVkaXRvciBs
b29waW5nLgorICAgICAgICBibGFua1RyZWVFbGVtZW50Lm5hbWVFbGVtZW50LmRpc3BhdGNoRXZl
bnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlFdmVudCgiRW50ZXIiKSk7CisgICAgICAgIGlmICgh
V2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodHJlZU91dGxpbmUuY2hpbGRyZW5bMF0ubmFtZUVs
ZW1lbnQpKSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiT3JpZ2luYWwg
cHJvcGVydHkgbmFtZSBlZGl0b3Igbm90IGFjdGl2ZSEiKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgIH0KKwogICAgICAgICBJbnNwZWN0b3JUZXN0
LnNlbGVjdE5vZGVXaXRoSWQoIm90aGVyIik7CiAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0
ZXJQZW5kaW5nRGlzcGF0Y2hlcyhzdGVwMyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDZhOGQyZjgu
LjVmN2Y1NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMyBAQAorMjAxMS0wOS0wNyAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEltcGxlbWVudCBjaXJjdWxhciB0YWJiaW5nIHRocm91Z2ggdGhlIFN0eWxlcyBzaWRlYmFy
IHBhbmUgY29udGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY3MTI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NlY3Rpb24uanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUuZ2V0IGZpcnN0U2libGluZyk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUuZ2V0IGxhc3RTaWJsaW5nKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLm5leHRFZGl0YWJsZVNpYmxp
bmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5zdGFydEVkaXRpbmdTZWxlY3Rvcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21vdmVF
ZGl0b3JGcm9tU2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZC5zdWNjZXNzQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2
aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9uKToKKwogMjAxMS0wOS0wNyAgQW50dGkg
S29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NjM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NlY3Rpb24uanMKaW5kZXggNjIzZTUzNy4uMzZhNDQyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2VjdGlvbi5qcwpAQCAtMTI0LDYgKzEyNCwz
OCBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9
LAogCisgICAgZ2V0IGZpcnN0U2libGluZygpCisgICAgeworICAgICAgICB2YXIgcGFyZW50ID0g
dGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CisgICAgICAgIGlmICghcGFyZW50KQorICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGNoaWxkRWxlbWVudCA9IHBhcmVudC5m
aXJzdENoaWxkOworICAgICAgICB3aGlsZSAoY2hpbGRFbGVtZW50KSB7CisgICAgICAgICAgICBp
ZiAoY2hpbGRFbGVtZW50Ll9zZWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZEVs
ZW1lbnQuX3NlY3Rpb247CisgICAgICAgICAgICBjaGlsZEVsZW1lbnQgPSBjaGlsZEVsZW1lbnQu
bmV4dFNpYmxpbmc7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9LAor
CisgICAgZ2V0IGxhc3RTaWJsaW5nKCkKKyAgICB7CisgICAgICAgIHZhciBwYXJlbnQgPSB0aGlz
LmVsZW1lbnQucGFyZW50RWxlbWVudDsKKyAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgY2hpbGRFbGVtZW50ID0gcGFyZW50Lmxhc3RD
aGlsZDsKKyAgICAgICAgd2hpbGUgKGNoaWxkRWxlbWVudCkgeworICAgICAgICAgICAgaWYgKGNo
aWxkRWxlbWVudC5fc2VjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRFbGVtZW50
Ll9zZWN0aW9uOworICAgICAgICAgICAgY2hpbGRFbGVtZW50ID0gY2hpbGRFbGVtZW50LnByZXZp
b3VzU2libGluZzsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0sCisK
ICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKICAgICAgICAgdmFyIGN1ckVsZW1lbnQgPSB0
aGlzLmVsZW1lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwppbmRleCBlZGI1MTNjLi5hODJjYTJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanMKQEAgLTkzNyw3ICs5MzcsMTcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3VyU2VjdGlvbiA9IGN1clNlY3Rp
b24ubmV4dFNpYmxpbmc7CiAgICAgICAgIH0gd2hpbGUgKGN1clNlY3Rpb24gJiYgIWN1clNlY3Rp
b24uZWRpdGFibGUpOwogCi0gICAgICAgIHJldHVybiBjdXJTZWN0aW9uOworICAgICAgICBpZiAo
IWN1clNlY3Rpb24pIHsKKyAgICAgICAgICAgIGN1clNlY3Rpb24gPSB0aGlzLmZpcnN0U2libGlu
ZzsKKyAgICAgICAgICAgIHdoaWxlIChjdXJTZWN0aW9uICYmICFjdXJTZWN0aW9uLmVkaXRhYmxl
KSB7CisgICAgICAgICAgICAgICAgLy8gUHJldmVudCBpbmZpbml0ZSBsb29wIHdoZW4gdGhlcmUg
YXJlIG5vIGVkaXRhYmxlIHNlY3Rpb25zLgorICAgICAgICAgICAgICAgIGlmIChjdXJTZWN0aW9u
ID09PSB0aGlzKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBj
dXJTZWN0aW9uID0gY3VyU2VjdGlvbi5uZXh0U2libGluZzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIHJldHVybiBjdXJTZWN0aW9uLmVkaXRhYmxlID8gY3VyU2VjdGlvbiA6
IG51bGw7CiAgICAgfSwKIAogICAgIHByZXZpb3VzRWRpdGFibGVTaWJsaW5nOiBmdW5jdGlvbigp
CkBAIC05NDcsNyArOTU3LDE3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGN1clNlY3Rpb24gPSBjdXJTZWN0aW9uLnByZXZp
b3VzU2libGluZzsKICAgICAgICAgfSB3aGlsZSAoY3VyU2VjdGlvbiAmJiAhY3VyU2VjdGlvbi5l
ZGl0YWJsZSk7CiAKLSAgICAgICAgcmV0dXJuIGN1clNlY3Rpb247CisgICAgICAgIGlmICghY3Vy
U2VjdGlvbikgeworICAgICAgICAgICAgY3VyU2VjdGlvbiA9IHRoaXMubGFzdFNpYmxpbmc7Cisg
ICAgICAgICAgICB3aGlsZSAoY3VyU2VjdGlvbiAmJiAhY3VyU2VjdGlvbi5lZGl0YWJsZSkgewor
ICAgICAgICAgICAgICAgIC8vIFByZXZlbnQgaW5maW5pdGUgbG9vcCB3aGVuIHRoZXJlIGFyZSBu
byBlZGl0YWJsZSBzZWN0aW9ucy4KKyAgICAgICAgICAgICAgICBpZiAoY3VyU2VjdGlvbiA9PT0g
dGhpcykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VyU2Vj
dGlvbiA9IGN1clNlY3Rpb24ucHJldmlvdXNTaWJsaW5nOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIGN1clNlY3Rpb24uZWRpdGFibGUgPyBjdXJTZWN0aW9uIDog
bnVsbDsKICAgICB9LAogCiAgICAgdXBkYXRlOiBmdW5jdGlvbihmdWxsKQpAQCAtMTEyMiw2ICsx
MTQyLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQoZWxlbWVudCkpCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnNjcm9sbElu
dG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5n
KHRoaXMuX3NlbGVjdG9yRWxlbWVudCwgewogICAgICAgICAgICAgY29udGV4dDogbnVsbCwKICAg
ICAgICAgICAgIGNvbW1pdEhhbmRsZXI6IHRoaXMuZWRpdGluZ1NlbGVjdG9yQ29tbWl0dGVkLmJp
bmQodGhpcyksCkBAIC0xMTMwLDMyICsxMTUxLDMyIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3Bl
cnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7CiAgICAgfSwKIAotICAg
IGVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3Q29udGVudCwg
b2xkQ29udGVudCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKKyAgICBfbW92ZUVkaXRvckZyb21T
ZWxlY3RvcjogZnVuY3Rpb24obW92ZURpcmVjdGlvbikKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9u
IG1vdmVUb05leHRJZk5lZWRlZCgpIHsKLSAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikK
LSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJm
b3J3YXJkIikgewotICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7Ci0gICAgICAgICAgICAg
ICAgaWYgKHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkK
LSAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0
aW5nKCk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBp
dGVtID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5bMF0KLSAgICAgICAgICAg
ICAgICAgICAgaXRlbS5zdGFydEVkaXRpbmcoaXRlbS5uYW1lRWxlbWVudCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB2YXIgcHJldmlv
dXNTZWN0aW9uID0gdGhpcy5wcmV2aW91c0VkaXRhYmxlU2libGluZygpOwotICAgICAgICAgICAg
ICAgIGlmICghcHJldmlvdXNTZWN0aW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChtb3ZlRGlyZWN0aW9uID09PSAiZm9yd2FyZCIpIHsKKyAgICAgICAgICAgIHRo
aXMuZXhwYW5kKCk7CisgICAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IHRoaXMucHJvcGVydGll
c1RyZWVPdXRsaW5lLmNoaWxkcmVuWzBdOworICAgICAgICAgICAgaWYgKCFmaXJzdENoaWxkKQor
ICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQuc3RhcnRFZGl0
aW5nKGZpcnN0Q2hpbGQubmFtZUVsZW1lbnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgdmFyIHByZXZpb3VzU2VjdGlvbiA9IHRoaXMucHJldmlvdXNFZGl0YWJsZVNpYmxpbmcoKTsK
KyAgICAgICAgICAgIGlmICghcHJldmlvdXNTZWN0aW9uKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBhbmQoKTsKLSAgICAgICAg
ICAgICAgICBwcmV2aW91c1NlY3Rpb24uYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGlu
ZygpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmV4cGFuZCgp
OworICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFy
dEVkaXRpbmcoKTsKICAgICAgICAgfQorICAgIH0sCiAKKyAgICBlZGl0aW5nU2VsZWN0b3JDb21t
aXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld0NvbnRlbnQsIG9sZENvbnRlbnQsIGNvbnRleHQs
IG1vdmVEaXJlY3Rpb24pCisgICAgewogICAgICAgICBpZiAobmV3Q29udGVudCA9PT0gb2xkQ29u
dGVudCkKLSAgICAgICAgICAgIHJldHVybiBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzKTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLl9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yKG1vdmVEaXJl
Y3Rpb24pOwogCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIApAQCAtMTE3OSw3ICsxMjAwLDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnJlbmFtZVNlbGVjdG9yKG9s
ZElkZW50aWZpZXIsIHRoaXMuaWRlbnRpZmllciwgb2xkQ29udGVudCwgbmV3Q29udGVudCk7CiAK
LSAgICAgICAgICAgIG1vdmVUb05leHRJZk5lZWRlZC5jYWxsKHNlbGYpOworICAgICAgICAgICAg
c2VsZi5fbW92ZUVkaXRvckZyb21TZWxlY3Rvcihtb3ZlRGlyZWN0aW9uKTsKICAgICAgICAgfQog
CiAgICAgICAgIHZhciBzZWxlY3RlZE5vZGUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRz
LnNlbGVjdGVkRE9NTm9kZSgpOwpAQCAtMTgzOSw2ICsxODYwLDggQEAgV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Lm9yaWdpbmFsUHJvcGVydHlUZXh0OwogCiAgICAgICAgIHRoaXMuX3BhcmVudFBhbmUuX2lzRWRp
dGluZ1N0eWxlID0gdHJ1ZTsKKyAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVu
dCkKKyAgICAgICAgICAgIHNlbGVjdEVsZW1lbnQucGFyZW50RWxlbWVudC5zY3JvbGxJbnRvVmll
d0lmTmVlZGVkKGZhbHNlKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhzZWxl
Y3RFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAg
Y29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCkBAIC0xOTgy
LDcgKzIwMDUsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVRp
dGxlKCk7CiAgICAgICAgIH0KLSAgICB9LCAKKyAgICB9LAogCiAgICAgZWRpdGluZ0NvbW1pdHRl
ZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQs
IG1vdmVEaXJlY3Rpb24pCiAgICAgewpAQCAtMjAwMCwxMSArMjAyMywxMSBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICBtb3ZlVG8gPSAobW92ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiID8gbW92ZVRvLm5leHRTaWJs
aW5nIDogbW92ZVRvLnByZXZpb3VzU2libGluZyk7CiAgICAgICAgICAgICB9IHdoaWxlKG1vdmVU
byAmJiAhbW92ZVRvLnNlbGVjdGFibGUpOwogCi0gICAgICAgICAgIGlmIChtb3ZlVG8pCisgICAg
ICAgICAgICBpZiAobW92ZVRvKQogICAgICAgICAgICAgICAgIG1vdmVUb1Byb3BlcnR5TmFtZSA9
IG1vdmVUby5uYW1lOwogICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImZv
cndhcmQiICYmICghdGhpcy5fbmV3UHJvcGVydHkgfHwgdXNlcklucHV0KSkKICAgICAgICAgICAg
ICAgICBjcmVhdGVOZXdQcm9wZXJ0eSA9IHRydWU7Ci0gICAgICAgICAgICBlbHNlIGlmIChtb3Zl
RGlyZWN0aW9uID09PSAiYmFja3dhcmQiICYmIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbi5ydWxl
KQorICAgICAgICAgICAgZWxzZSBpZiAobW92ZURpcmVjdGlvbiA9PT0gImJhY2t3YXJkIikKICAg
ICAgICAgICAgICAgICBtb3ZlVG9TZWxlY3RvciA9IHRydWU7CiAgICAgICAgIH0KIApAQCAtMjA3
NCwxMyArMjA5NywyMSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKGFiYW5kb25OZXdQcm9wZXJ0eSkgewogICAg
ICAgICAgICAgICAgIHZhciBzZWN0aW9uVG9FZGl0ID0gbW92ZURpcmVjdGlvbiA9PT0gImJhY2t3
YXJkIiA/IHNlY3Rpb24gOiBzZWN0aW9uLm5leHRFZGl0YWJsZVNpYmxpbmcoKTsKLSAgICAgICAg
ICAgICAgICBpZiAoc2VjdGlvblRvRWRpdCAmJiBzZWN0aW9uVG9FZGl0LnJ1bGUpCi0gICAgICAg
ICAgICAgICAgICAgIHNlY3Rpb25Ub0VkaXQuc3RhcnRFZGl0aW5nU2VsZWN0b3IoKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc2VjdGlvblRvRWRpdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAo
c2VjdGlvblRvRWRpdC5ydWxlKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VjdGlvblRvRWRp
dC5zdGFydEVkaXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWN0aW9uVG9FZGl0Ll9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9y
KG1vdmVEaXJlY3Rpb24pOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChtb3ZlVG9TZWxlY3RvcikKLSAg
ICAgICAgICAgICAgICBzZWN0aW9uLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICAg
ICBpZiAobW92ZVRvU2VsZWN0b3IpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VjdGlvbi5ydWxl
KQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKCk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uLl9tb3ZlRWRp
dG9yRnJvbVNlbGVjdG9yKG1vdmVEaXJlY3Rpb24pOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfSwKIAo=
</data>
<flag name="review"
          id="103044"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>