<?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>182387</bug_id>
          
          <creation_ts>2018-02-01 07:07:25 -0800</creation_ts>
          <short_desc>StyleBench: Attribute selectors and other improvements</short_desc>
          <delta_ts>2018-02-07 11:36:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>joepeck</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1395452</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-01 07:07:25 -0800</bug_when>
    <thetext>We should test attribute selectors too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395472</commentid>
    <comment_count>1</comment_count>
      <attachid>332879</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-01 08:14:23 -0800</bug_when>
    <thetext>Created attachment 332879
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397146</commentid>
    <comment_count>2</comment_count>
      <attachid>333279</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-07 05:53:20 -0800</bug_when>
    <thetext>Created attachment 333279
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397247</commentid>
    <comment_count>3</comment_count>
      <attachid>333279</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2018-02-07 11:14:13 -0800</bug_when>
    <thetext>Comment on attachment 333279
patch

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

r=me

&gt; PerformanceTests/StyleBench/resources/style-bench.js:203
&gt; +        if (valueNum==0)
&gt; +            return &quot;&quot;;
&gt; +        if (valueNum==1)
&gt; +            return &quot;val&quot;;

Normal style would be:

    if (valueNum === 0)
        return &quot;&quot;;
    if (valueNum === 1)
        return &quot;val&quot;;

Up to you if you want to converge on `==` or `===`.

&gt; PerformanceTests/StyleBench/resources/style-bench.js:204
&gt; +        return `val${ valueNum }`;

Style: Normally you don&apos;t use spaces inside the ${...}.

&gt; PerformanceTests/StyleBench/resources/style-bench.js:233
&gt; +        if (operator==&apos;&apos;)

Ditto on style. Or here you could even just:

    if (!operator)

&gt; PerformanceTests/StyleBench/resources/style-bench.js:266
&gt; +            result +=  this.randomAttributeSelector();

Style: Accidental double space after the operator.

&gt; PerformanceTests/StyleBench/resources/style-bench.js:493
&gt; +                const count = this.random.number(this.configuration.elementMaximumAttributes) + 1;
&gt; +                for (let i = 0; i &lt; count; ++i)
&gt; +                    element.setAttribute(this.randomAttributeName(), this.randomAttributeValue());

It is bad style to shadow both `i` and `count`. Had you used `var` you&apos;d have run into issues! I&apos;d recommend using different names just for clarity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397253</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-02-07 11:34:10 -0800</bug_when>
    <thetext>https://trac.webkit.org/r228237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397254</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-07 11:36:10 -0800</bug_when>
    <thetext>&lt;rdar://problem/37321177&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332879</attachid>
            <date>2018-02-01 08:14:23 -0800</date>
            <delta_ts>2018-02-07 05:53:20 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylebench-attribute.patch</filename>
            <type>text/plain</type>
            <size>13041</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjc5NjIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTAyLTAxICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTdHlsZUJlbmNoOiBB
ZGQgYXR0cmlidXRlIHNlbGVjdG9yIHN1YnRlc3QKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjM4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIHNvbWUgYXR0cmlidXRlcyB0byBlbGVtZW50cyBp
biBhbGwgdGVzdHMKKyAgICAgICAgLSBBZGQgc29tZSBhdHRyaWJ1dGUgc2VsZWN0b3JzIHRvIHN0
eWxlc2hlZXRzIGluIGFsbCB0ZXN0cworICAgICAgICAtIEFkZCBhIHNlcGFyYXRlIGF0dHJpYnV0
ZSBzZWxlY3RvciB0ZXN0IHRoYXQgaW5jbHVkZXMgY29tcGxleCBzZWxlY3RvcnMgYW5kIGRvZXMg
YXR0cmlidXRlIG11dGF0aW9ucworICAgICAgICAtIEFsc28gYWRkIHNvbWUgKiBzZWxlY3RvcnMg
dG8gYWxsIHN0eWxlc2hlZXRzLgorCisgICAgICAgICogU3R5bGVCZW5jaC9yZXNvdXJjZXMvc3R5
bGUtYmVuY2guanM6CisgICAgICAgIChkZWZhdWx0Q29uZmlndXJhdGlvbik6CisgICAgICAgIChh
dHRyaWJ1dGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKHByZWRlZmluZWRDb25maWd1cmF0aW9u
cyk6CisgICAgICAgIChwcm90b3R5cGUucmFuZG9tQXR0cmlidXRlTmFtZSk6CisgICAgICAgIChw
cm90b3R5cGUucmFuZG9tQXR0cmlidXRlVmFsdWUpOgorICAgICAgICAocHJvdG90eXBlLnJhbmRv
bUF0dHJpYnV0ZVNlbGVjdG9yKToKKyAgICAgICAgKHByb3RvdHlwZS5tYWtlQ29tcG91bmRTZWxl
Y3Rvcik6CisgICAgICAgIChwcm90b3R5cGUubWFrZUVsZW1lbnQpOgorICAgICAgICAocHJvdG90
eXBlLmFkZENsYXNzZXMpOgorICAgICAgICAocHJvdG90eXBlLnJlbW92ZUNsYXNzZXMpOgorICAg
ICAgICAocHJvdG90eXBlLm11dGF0ZUF0dHJpYnV0ZXMpOgorICAgICAgICAocHJvdG90eXBlLmFz
eW5jLnJ1bkZvcmV2ZXIpOgorICAgICAgICAqIFN0eWxlQmVuY2gvcmVzb3VyY2VzL3Rlc3RzLmpz
OgorICAgICAgICAobWFrZVN0ZXBzKToKKyAgICAgICAgKG1ha2VTdWl0ZSk6CisKIDIwMTgtMDEt
MzEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBydW4t
cGVyZi10ZXN0cyB3b3JrIHdpdGggU3R5bGVCZW5jaCBhbmQgcmUtZW5hYmxlIGl0CkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL1N0eWxlQmVuY2gvcmVzb3VyY2VzL3N0eWxlLWJlbmNoLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvU3R5bGVCZW5jaC9yZXNvdXJjZXMvc3R5bGUtYmVu
Y2guanMJKHJldmlzaW9uIDIyNzk1NykKKysrIFBlcmZvcm1hbmNlVGVzdHMvU3R5bGVCZW5jaC9y
ZXNvdXJjZXMvc3R5bGUtYmVuY2guanMJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDE1IEBA
IGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgICAgIGVsZW1lbnRDaGFuY2U6IDAuNSwKICAgICAg
ICAgICAgIGNsYXNzQ291bnQ6IDIwMCwKICAgICAgICAgICAgIGNsYXNzQ2hhbmNlOiAwLjMsCisg
ICAgICAgICAgICBzdGFyQ2hhbmNlOiAwLjA1LAorICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmNl
OiAwLjAyLAorICAgICAgICAgICAgYXR0cmlidXRlQ291bnQ6IDEwLAorICAgICAgICAgICAgYXR0
cmlidXRlVmFsdWVDb3VudDogMjAsCisgICAgICAgICAgICBhdHRyaWJ1dGVPcGVyYXRvcnM6IFsn
JywnPSddLAorICAgICAgICAgICAgZWxlbWVudENsYXNzQ2hhbmNlOiAwLjUsCisgICAgICAgICAg
ICBlbGVtZW50TWF4aW11bUNsYXNzZXM6IDMsCisgICAgICAgICAgICBlbGVtZW50QXR0cmlidXRl
Q2hhbmNlOiAwLjIsCisgICAgICAgICAgICBlbGVtZW50TWF4aW11bUF0dHJpYnV0ZXM6IDMsCiAg
ICAgICAgICAgICBjb21iaW5hdG9yczogWycgJywgJz4nLF0sCiAgICAgICAgICAgICBwc2V1ZG9D
bGFzc2VzOiBbXSwKICAgICAgICAgICAgIHBzZXVkb0NsYXNzQ2hhbmNlOiAwLApAQCAtNjIsOSAr
NzEsMTMgQEAgY2xhc3MgU3R5bGVCZW5jaAogICAgICAgICAgICAgbWF4aW11bVRyZWVXaWR0aDog
NTAsCiAgICAgICAgICAgICByZXBlYXRpbmdTZXF1ZW5jZUNoYW5jZTogMC4yLAogICAgICAgICAg
ICAgcmVwZWF0aW5nU2VxdWVuY2VNYXhpbXVtTGVuZ3RoOiAzLAotICAgICAgICAgICAgbGVhZkNs
YXNzTXV0YXRpb25DaGFuY2U6IDAuMSwKKyAgICAgICAgICAgIGxlYWZNdXRhdGlvbkNoYW5jZTog
MC4xLAogICAgICAgICAgICAgc3R5bGVTZWVkOiAxLAogICAgICAgICAgICAgZG9tU2VlZDogMiwK
KyAgICAgICAgICAgIHN0ZXBDb3VudDogMTAsCisgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUVs
ZW1lbnRBZGRBbmRSZW1vdmVTdGVwczogdHJ1ZSwKKyAgICAgICAgICAgIHNob3VsZEdlbmVyYXRl
Q2xhc3NNdXRhdGlvblN0ZXBzOiB0cnVlLAorICAgICAgICAgICAgc2hvdWxkR2VuZXJhdGVBdHRy
aWJ1dGVNdXRhdGlvblN0ZXBzOiBmYWxzZSwKICAgICAgICAgfTsKICAgICB9CiAKQEAgLTExMyw2
ICsxMjYsMjUgQEAgY2xhc3MgU3R5bGVCZW5jaAogICAgICAgICB9KTsKICAgICB9CiAKKyAgICBz
dGF0aWMgYXR0cmlidXRlQ29uZmlndXJhdGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gT2Jq
ZWN0LmFzc2lnbih0aGlzLmRlZmF1bHRDb25maWd1cmF0aW9uKCksIHsKKyAgICAgICAgICAgIG5h
bWU6ICdBdHRyaWJ1dGUgc2VsZWN0b3JzJywKKyAgICAgICAgICAgIGVsZW1lbnRBdHRyaWJ1dGVD
aGFuY2U6MC41LAorICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmNlOiAwLjMsCisgICAgICAgICAg
ICBhdHRyaWJ1dGVPcGVyYXRvcnM6IFsKKyAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAg
ICAgICAnPScsCisgICAgICAgICAgICAgICAgJ349JywKKyAgICAgICAgICAgICAgICAnXj0nLAor
ICAgICAgICAgICAgICAgICckPScsCisgICAgICAgICAgICAgICAgJyo9JywKKyAgICAgICAgICAg
IF0sCisgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUNsYXNzTXV0YXRpb25TdGVwczogZmFsc2Us
CisgICAgICAgICAgICBzaG91bGRHZW5lcmF0ZUF0dHJpYnV0ZU11dGF0aW9uU3RlcHM6IHRydWUs
CisgICAgICAgIH0pOworICAgIH0KKwogICAgIHN0YXRpYyBiZWZvcmVBbmRBZnRlckNvbmZpZ3Vy
YXRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0
Q29uZmlndXJhdGlvbigpLCB7CkBAIC0xMjgsNiArMTYwLDcgQEAgY2xhc3MgU3R5bGVCZW5jaAog
ICAgICAgICAgICAgdGhpcy5zaWJsaW5nQ29tYmluYXRvckNvbmZpZ3VyYXRpb24oKSwKICAgICAg
ICAgICAgIHRoaXMuc3RydWN0dXJhbFBzZXVkb0NsYXNzQ29uZmlndXJhdGlvbigpLAogICAgICAg
ICAgICAgdGhpcy5udGhQc2V1ZG9DbGFzc0NvbmZpZ3VyYXRpb24oKSwKKyAgICAgICAgICAgIHRo
aXMuYXR0cmlidXRlQ29uZmlndXJhdGlvbigpLAogICAgICAgICAgICAgdGhpcy5iZWZvcmVBbmRB
ZnRlckNvbmZpZ3VyYXRpb24oKSwKICAgICAgICAgXTsKICAgICB9CkBAIC0xNzYsNiArMjA5LDIz
IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgcmV0dXJuIGBjbGFzcyR7IHRoaXMucmFuZG9t
Lm51bWJlclNxdWFyZVdlaWdodGVkVG9Mb3cobWF4aW11bSkgfWA7CiAgICAgfQogCisgICAgcmFu
ZG9tQXR0cmlidXRlTmFtZSgpCisgICAgeworICAgICAgICBjb25zdCBhdHRyaWJ1dGVDb3VudCA9
IHRoaXMuY29uZmlndXJhdGlvbi5hdHRyaWJ1dGVDb3VudDsKKyAgICAgICAgcmV0dXJuIGBhdHRy
JHsgdGhpcy5yYW5kb20ubnVtYmVyU3F1YXJlV2VpZ2h0ZWRUb0xvdyhhdHRyaWJ1dGVDb3VudCkg
fWA7CisgICAgfQorCisgICAgcmFuZG9tQXR0cmlidXRlVmFsdWUoKQorICAgIHsKKyAgICAgICAg
Y29uc3QgYXR0cmlidXRlVmFsdWVDb3VudCA9IHRoaXMuY29uZmlndXJhdGlvbi5hdHRyaWJ1dGVW
YWx1ZUNvdW50OworICAgICAgICBjb25zdCB2YWx1ZU51bSA9IHRoaXMucmFuZG9tLm51bWJlclNx
dWFyZVdlaWdodGVkVG9Mb3coYXR0cmlidXRlVmFsdWVDb3VudCk7CisgICAgICAgIGlmICh2YWx1
ZU51bT09MCkKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgaWYgKHZhbHVlTnVtPT0x
KQorICAgICAgICAgICAgcmV0dXJuICJ2YWwiOworICAgICAgICByZXR1cm4gYHZhbCR7IHZhbHVl
TnVtIH1gOworICAgIH0KKwogICAgIHJhbmRvbUNvbWJpbmF0b3IoKQogICAgIHsKICAgICAgICAg
Y29uc3QgY29tYmluYXRvcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uY29tYmluYXRvcnM7CkBAIC0x
OTcsNiArMjQ3LDE3IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgcmV0dXJuIGBpZCR7IHRo
aXMucmFuZG9tLm51bWJlcihpZENvdW50KSB9YDsKICAgICB9CiAKKyAgICByYW5kb21BdHRyaWJ1
dGVTZWxlY3RvcigpCisgICAgeworICAgICAgICBjb25zdCBuYW1lID0gdGhpcy5yYW5kb21BdHRy
aWJ1dGVOYW1lKCk7CisgICAgICAgIGNvbnN0IG9wZXJhdG9ycyA9IHRoaXMuY29uZmlndXJhdGlv
bi5hdHRyaWJ1dGVPcGVyYXRvcnM7CisgICAgICAgIGNvbnN0IG9wZXJhdG9yID0gb3BlcmF0b3Jz
W3RoaXMucmFuZG9tLm51bWJlclNxdWFyZVdlaWdodGVkVG9Mb3cob3BlcmF0b3JzLmxlbmd0aCld
OworICAgICAgICBpZiAob3BlcmF0b3I9PScnKQorICAgICAgICAgICAgcmV0dXJuIGBbJHtuYW1l
fV1gOworICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMucmFuZG9tQXR0cmlidXRlVmFsdWUoKTsK
KyAgICAgICAgcmV0dXJuIGBbJHtuYW1lfSR7b3BlcmF0b3J9IiR7dmFsdWV9Il1gOworICAgIH0K
KwogICAgIG1ha2VDb21wb3VuZFNlbGVjdG9yKGluZGV4LCBsZW5ndGgpCiAgICAgewogICAgICAg
ICBjb25zdCBpc0ZpcnN0ID0gaW5kZXggPT0gMDsKQEAgLTIwNCwxMSArMjY1LDE2IEBAIGNsYXNz
IFN0eWxlQmVuY2gKICAgICAgICAgY29uc3QgdXNlUHNldWRvQ2xhc3MgPSB0aGlzLnJhbmRvbS5j
aGFuY2UodGhpcy5jb25maWd1cmF0aW9uLnBzZXVkb0NsYXNzQ2hhbmNlKSAmJiB0aGlzLmNvbmZp
Z3VyYXRpb24ucHNldWRvQ2xhc3Nlcy5sZW5ndGg7CiAgICAgICAgIGNvbnN0IHVzZUlkID0gaXNG
aXJzdCAmJiB0aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmlkQ2hhbmNlKTsK
ICAgICAgICAgY29uc3QgdXNlRWxlbWVudCA9ICF1c2VJZCAmJiAodXNlUHNldWRvQ2xhc3MgfHwg
dGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5lbGVtZW50Q2hhbmNlKSk7IC8v
IDpudGgtb2YtdHlwZSBldGMgb25seSBtYWtlIHNlbnNlIHdpdGggZWxlbWVudAotICAgICAgICBj
b25zdCB1c2VDbGFzcyA9ICF1c2VJZCAmJiAoIXVzZUVsZW1lbnQgfHwgdGhpcy5yYW5kb20uY2hh
bmNlKHRoaXMuY29uZmlndXJhdGlvbi5jbGFzc0NoYW5jZSkpOworICAgICAgICBjb25zdCB1c2VB
dHRyaWJ1dGUgPSAhdXNlSWQgJiYgdGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlv
bi5hdHRyaWJ1dGVDaGFuY2UpOworICAgICAgICBjb25zdCB1c2VJZEVsZW1lbnRPckF0dHJpYnV0
ZSA9IHVzZUlkIHx8IHVzZUVsZW1lbnQgfHwgdXNlQXR0cmlidXRlOworICAgICAgICBjb25zdCB1
c2VTdGFyID0gIXVzZUlkRWxlbWVudE9yQXR0cmlidXRlICYmICFpc0ZpcnN0ICYmIHRoaXMucmFu
ZG9tLmNoYW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24uc3RhckNoYW5jZSk7CisgICAgICAgIGNvbnN0
IHVzZUNsYXNzID0gIXVzZUlkICYmICF1c2VTdGFyICYmICghdXNlSWRFbGVtZW50T3JBdHRyaWJ1
dGUgfHwgdGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5jbGFzc0NoYW5jZSkp
OwogICAgICAgICBjb25zdCB1c2VCZWZvcmVPckFmdGVyID0gaXNMYXN0ICYmIHRoaXMucmFuZG9t
LmNoYW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24uYmVmb3JlQWZ0ZXJDaGFuY2UpOwogICAgICAgICBs
ZXQgcmVzdWx0ID0gIiI7CiAgICAgICAgIGlmICh1c2VFbGVtZW50KQogICAgICAgICAgICAgcmVz
dWx0ICs9IHRoaXMucmFuZG9tRWxlbWVudE5hbWUoKTsKKyAgICAgICAgaWYgKHVzZVN0YXIpCisg
ICAgICAgICAgICByZXN1bHQgPSAiKiI7CiAgICAgICAgIGlmICh1c2VJZCkKICAgICAgICAgICAg
IHJlc3VsdCArPSAiIyIgKyB0aGlzLnJhbmRvbUlkKCk7CiAgICAgICAgIGlmICh1c2VDbGFzcykg
ewpAQCAtMjE4LDYgKzI4NCw5IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgICAgICAgICBy
ZXN1bHQgKz0gIi4iICsgdGhpcy5yYW5kb21DbGFzc05hbWVGcm9tUmFuZ2UoKGluZGV4ICsgMSkg
LyBsZW5ndGgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmICh1c2VBdHRy
aWJ1dGUpCisgICAgICAgICAgICByZXN1bHQgKz0gIHRoaXMucmFuZG9tQXR0cmlidXRlU2VsZWN0
b3IoKTsKKwogICAgICAgICBpZiAodXNlUHNldWRvQ2xhc3MpCiAgICAgICAgICAgICByZXN1bHQg
Kz0gICI6IiArIHRoaXMucmFuZG9tUHNldWRvQ2xhc3MoaXNMYXN0KTsKICAgICAgICAgaWYgKHVz
ZUJlZm9yZU9yQWZ0ZXIpIHsKQEAgLTI4MiwxMiArMzUxLDE4IEBAIGNsYXNzIFN0eWxlQmVuY2gK
ICAgICBtYWtlRWxlbWVudCgpCiAgICAgewogICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCh0aGlzLnJhbmRvbUVsZW1lbnROYW1lKCkpOwotICAgICAgICBjb25z
dCBoYXNDbGFzc2VzID0gdGhpcy5yYW5kb20uY2hhbmNlKDAuNSk7CisgICAgICAgIGNvbnN0IGhh
c0NsYXNzZXMgPSB0aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmVsZW1lbnRD
bGFzc0NoYW5jZSk7CisgICAgICAgIGNvbnN0IGhhc0F0dHJpYnV0ZXMgPSB0aGlzLnJhbmRvbS5j
aGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmVsZW1lbnRBdHRyaWJ1dGVDaGFuY2UpOwogICAgICAg
ICBpZiAoaGFzQ2xhc3NlcykgewotICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnJhbmRv
bS5udW1iZXJTcXVhcmVXZWlnaHRlZFRvTG93KDMpICsgMTsKKyAgICAgICAgICAgIGNvbnN0IGNv
dW50ID0gdGhpcy5yYW5kb20ubnVtYmVyU3F1YXJlV2VpZ2h0ZWRUb0xvdyh0aGlzLmNvbmZpZ3Vy
YXRpb24uZWxlbWVudE1heGltdW1DbGFzc2VzKSArIDE7CiAgICAgICAgICAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKHRoaXMucmFuZG9tQ2xhc3NOYW1lKCkpOwogICAgICAgICB9CisgICAgICAgIGlmIChoYXNB
dHRyaWJ1dGVzKSB7CisgICAgICAgICAgICBjb25zdCBjb3VudCA9IHRoaXMucmFuZG9tLm51bWJl
cih0aGlzLmNvbmZpZ3VyYXRpb24uZWxlbWVudE1heGltdW1BdHRyaWJ1dGVzKSArIDE7CisgICAg
ICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAg
ZWxlbWVudC5zZXRBdHRyaWJ1dGUodGhpcy5yYW5kb21BdHRyaWJ1dGVOYW1lKCksIHRoaXMucmFu
ZG9tQXR0cmlidXRlVmFsdWUoKSk7CisgICAgICAgIH0KICAgICAgICAgY29uc3QgaGFzSWQgPSB0
aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmlkQ2hhbmNlKTsKICAgICAgICAg
aWYgKGhhc0lkKSB7CiAgICAgICAgICAgICBlbGVtZW50LmlkID0gYGlkJHsgdGhpcy5pZENvdW50
IH1gOwpAQCAtMzY1LDcgKzQ0MCw3IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBjb3VudDspIHsKICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlz
LnJhbmRvbVRyZWVFbGVtZW50KCk7CiAgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbW9yZSBsZWF2
ZXMgdGhhbiBicmFuY2hlcy4gQXZvaWQgc2tld2luZyB0b3dhcmRzIGxlYWYgbXV0YXRpb25zLgot
ICAgICAgICAgICAgaWYgKCFlbGVtZW50LmZpcnN0Q2hpbGQgJiYgIXRoaXMucmFuZG9tLmNoYW5j
ZSh0aGlzLmNvbmZpZ3VyYXRpb24ubGVhZkNsYXNzTXV0YXRpb25DaGFuY2UpKQorICAgICAgICAg
ICAgaWYgKCFlbGVtZW50LmZpcnN0Q2hpbGQgJiYgIXRoaXMucmFuZG9tLmNoYW5jZSh0aGlzLmNv
bmZpZ3VyYXRpb24ubGVhZk11dGF0aW9uQ2hhbmNlKSkKICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICsraTsKICAgICAgICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IGVsZW1l
bnQuY2xhc3NMaXN0OwpAQCAtMzc4LDcgKzQ1Myw3IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAg
ICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDspIHsKICAgICAgICAgICAgIGNvbnN0IGVsZW1l
bnQgPSB0aGlzLnJhbmRvbVRyZWVFbGVtZW50KCk7CiAgICAgICAgICAgICBjb25zdCBjbGFzc0xp
c3QgPSBlbGVtZW50LmNsYXNzTGlzdDsKLSAgICAgICAgICAgIGlmICghZWxlbWVudC5maXJzdENo
aWxkICYmICF0aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmxlYWZDbGFzc011
dGF0aW9uQ2hhbmNlKSkKKyAgICAgICAgICAgIGlmICghZWxlbWVudC5maXJzdENoaWxkICYmICF0
aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmxlYWZNdXRhdGlvbkNoYW5jZSkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIWNsYXNzTGlzdC5s
ZW5ndGgpCiAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00MTYsNiArNDkxLDMzIEBAIGNs
YXNzIFN0eWxlQmVuY2gKICAgICAgICAgdGhpcy51cGRhdGVDYWNoZWRUZXN0RWxlbWVudHMoKTsK
ICAgICB9CiAKKyAgICBtdXRhdGVBdHRyaWJ1dGVzKGNvdW50KQorICAgIHsKKyAgICAgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCBjb3VudDspIHsKKyAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0
aGlzLnJhbmRvbVRyZWVFbGVtZW50KCk7CisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgbW9yZSBs
ZWF2ZXMgdGhhbiBicmFuY2hlcy4gQXZvaWQgc2tld2luZyB0b3dhcmRzIGxlYWYgbXV0YXRpb25z
LgorICAgICAgICAgICAgaWYgKCFlbGVtZW50LmZpcnN0Q2hpbGQgJiYgIXRoaXMucmFuZG9tLmNo
YW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24ubGVhZk11dGF0aW9uQ2hhbmNlKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZU5hbWVzID0gZWxlbWVu
dC5nZXRBdHRyaWJ1dGVOYW1lcygpOworICAgICAgICAgICAgbGV0IG11dGF0ZWRBdHRyaWJ1dGVz
ID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgYXR0cmlidXRlTmFtZXMp
IHsKKyAgICAgICAgICAgICAgICBpZiAobmFtZSA9PSAiY2xhc3MiIHx8IG5hbWUgPT0gImlkIikK
KyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMu
cmFuZG9tLmNoYW5jZSgwLjUpKQorICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUF0
dHJpYnV0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHRoaXMucmFuZG9tQXR0cmlidXRlVmFsdWUoKSk7
CisgICAgICAgICAgICAgICAgbXV0YXRlZEF0dHJpYnV0ZXMgPSB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKCFtdXRhdGVkQXR0cmlidXRlcykgeworICAgICAgICAgICAgICAg
IGNvbnN0IGNvdW50ID0gdGhpcy5yYW5kb20ubnVtYmVyKHRoaXMuY29uZmlndXJhdGlvbi5lbGVt
ZW50TWF4aW11bUF0dHJpYnV0ZXMpICsgMTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmli
dXRlKHRoaXMucmFuZG9tQXR0cmlidXRlTmFtZSgpLCB0aGlzLnJhbmRvbUF0dHJpYnV0ZVZhbHVl
KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpOworICAgICAgICB9CisgICAgfQor
CiAgICAgYXN5bmMgcnVuRm9yZXZlcigpCiAgICAgewogICAgICAgICB3aGlsZSAodHJ1ZSkgewpA
QCAtNDIzLDYgKzUyNSw3IEBAIGNsYXNzIFN0eWxlQmVuY2gKICAgICAgICAgICAgIHRoaXMucmVt
b3ZlQ2xhc3NlcygxMCk7CiAgICAgICAgICAgICB0aGlzLmFkZExlYWZFbGVtZW50cygxMCk7CiAg
ICAgICAgICAgICB0aGlzLnJlbW92ZUxlYWZFbGVtZW50cygxMCk7CisgICAgICAgICAgICB0aGlz
Lm11dGF0ZUF0dHJpYnV0ZXMoMTApOwogCiAgICAgICAgICAgICBhd2FpdCBuZXh0QW5pbWF0aW9u
RnJhbWUoKTsKICAgICAgICAgfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9TdHlsZUJlbmNoL3Jl
c291cmNlcy90ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL1N0eWxlQmVu
Y2gvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lvbiAyMjc5NTcpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL1N0eWxlQmVuY2gvcmVzb3VyY2VzL3Rlc3RzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE5
ICsxLDI4IEBACi1mdW5jdGlvbiBtYWtlU3RlcHMoY291bnQpCitmdW5jdGlvbiBtYWtlU3RlcHMo
Y29uZmlndXJhdGlvbikKIHsKICAgICBjb25zdCBzdGVwcyA9IFtdOwotICAgIGZvciAoaSA9IDA7
IGkgPCBjb3VudDsgKytpKSB7Ci0gICAgICAgIHN0ZXBzLnB1c2gobmV3IEJlbmNobWFya1Rlc3RT
dGVwKGBBZGRpbmcgY2xhc3NlcyAtICR7aX1gLCAoYmVuY2gsIGNvbnRlbnRXaW5kb3csIGNvbnRl
bnREb2N1bWVudCkgPT4gewotICAgICAgICAgICAgYmVuY2guYWRkQ2xhc3NlcygyNSk7Ci0gICAg
ICAgIH0pKTsKLSAgICAgICAgc3RlcHMucHVzaChuZXcgQmVuY2htYXJrVGVzdFN0ZXAoYFJlbW92
aW5nIGNsYXNzZXMgLSAke2l9YCwgKGJlbmNoLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpID0+IHsKLSAgICAgICAgICAgIGJlbmNoLnJlbW92ZUNsYXNzZXMoMjUpOwotICAgICAgICB9
KSk7Ci0gICAgICAgIHN0ZXBzLnB1c2gobmV3IEJlbmNobWFya1Rlc3RTdGVwKGBBZGRpbmcgbGVh
ZiBlbGVtZW50cyAtICR7aX1gLCAoYmVuY2gsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVu
dCkgPT4gewotICAgICAgICAgICAgYmVuY2guYWRkTGVhZkVsZW1lbnRzKDI1KTsKLSAgICAgICAg
fSkpOwotICAgICAgICBzdGVwcy5wdXNoKG5ldyBCZW5jaG1hcmtUZXN0U3RlcChgUmVtb3Zpbmcg
bGVhZiBlbGVtZW50cyAtICR7aX1gLCAoYmVuY2gsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgPT4gewotICAgICAgICAgICAgYmVuY2gucmVtb3ZlTGVhZkVsZW1lbnRzKDI1KTsKLSAg
ICAgICAgfSkpOworICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLnN0ZXBDb3VudDsg
KytpKSB7CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnNob3VsZEdlbmVyYXRlQ2xhc3NNdXRh
dGlvblN0ZXBzKSB7CisgICAgICAgICAgICBzdGVwcy5wdXNoKG5ldyBCZW5jaG1hcmtUZXN0U3Rl
cChgQWRkaW5nIGNsYXNzZXMgLSAke2l9YCwgKGJlbmNoLCBjb250ZW50V2luZG93LCBjb250ZW50
RG9jdW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICBiZW5jaC5hZGRDbGFzc2VzKDI1KTsKKyAg
ICAgICAgICAgIH0pKTsKKyAgICAgICAgICAgIHN0ZXBzLnB1c2gobmV3IEJlbmNobWFya1Rlc3RT
dGVwKGBSZW1vdmluZyBjbGFzc2VzIC0gJHtpfWAsIChiZW5jaCwgY29udGVudFdpbmRvdywgY29u
dGVudERvY3VtZW50KSA9PiB7CisgICAgICAgICAgICAgICAgYmVuY2gucmVtb3ZlQ2xhc3Nlcygy
NSk7CisgICAgICAgICAgICB9KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24uc2hvdWxkR2VuZXJhdGVBdHRyaWJ1dGVNdXRhdGlvblN0ZXBzKSB7CisgICAgICAgICAgICBz
dGVwcy5wdXNoKG5ldyBCZW5jaG1hcmtUZXN0U3RlcChgTXV0YXRpbmcgYXR0cmlidXRlcyAtICR7
aX1gLCAoYmVuY2gsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1bWVudCkgPT4geworICAgICAg
ICAgICAgICAgIGJlbmNoLm11dGF0ZUF0dHJpYnV0ZXMoMjUpOworICAgICAgICAgICAgfSkpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnNob3VsZEdlbmVyYXRlRWxlbWVu
dEFkZEFuZFJlbW92ZVN0ZXBzKSB7CisgICAgICAgICAgICBzdGVwcy5wdXNoKG5ldyBCZW5jaG1h
cmtUZXN0U3RlcChgQWRkaW5nIGxlYWYgZWxlbWVudHMgLSAke2l9YCwgKGJlbmNoLCBjb250ZW50
V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICAgICAgICAgICAgICBiZW5jaC5hZGRM
ZWFmRWxlbWVudHMoMjUpOworICAgICAgICAgICAgfSkpOworICAgICAgICAgICAgc3RlcHMucHVz
aChuZXcgQmVuY2htYXJrVGVzdFN0ZXAoYFJlbW92aW5nIGxlYWYgZWxlbWVudHMgLSAke2l9YCwg
KGJlbmNoLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICBiZW5jaC5yZW1vdmVMZWFmRWxlbWVudHMoMjUpOworICAgICAgICAgICAgfSkpOworICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBzdGVwczsKIH0KQEAgLTI4LDcgKzM3LDcgQEAgZnVu
Y3Rpb24gbWFrZVN1aXRlKGNvbmZpZ3VyYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bnRlbnRXaW5kb3cuY3JlYXRlQmVuY2htYXJrKGNvbmZpZ3VyYXRpb24pOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgIH0sCi0gICAgICAgIHRlc3RzOiBtYWtlU3RlcHMoMTApLAorICAgICAgICB0
ZXN0czogbWFrZVN0ZXBzKGNvbmZpZ3VyYXRpb24pLAogICAgIH07CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333279</attachid>
            <date>2018-02-07 05:53:20 -0800</date>
            <delta_ts>2018-02-07 11:14:13 -0800</delta_ts>
            <desc>patch</desc>
            <filename>stylebench-attribute-2.patch</filename>
            <type>text/plain</type>
            <size>11281</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjgxNTIpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisyMDE4LTAyLTAxICBB
bnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTdHlsZUJlbmNoOiBB
dHRyaWJ1dGUgc2VsZWN0b3JzIGFuZCBvdGhlciBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjM4NworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gQWRkIHNvbWUgYXR0cmlidXRlcyB0
byBlbGVtZW50cyBpbiBhbGwgdGVzdHMKKyAgICAgICAgLSBBZGQgc29tZSBhdHRyaWJ1dGUgc2Vs
ZWN0b3JzIHRvIHN0eWxlc2hlZXRzIGluIGFsbCB0ZXN0cworICAgICAgICAtIEFsc28gYWRkIHNv
bWUgKiBzZWxlY3RvcnMgdG8gYWxsIHN0eWxlc2hlZXRzLgorICAgICAgICAtIEFkZCBhdHRyaWJ1
dGUgbXV0YXRpb24gc3RlcCB0byBhbGwgc3VpdGVzCisgICAgICAgIC0gTWFrZSB0ZXN0IHN0ZXBz
IGRvIG1vcmUgbXV0YXRpb25zICgyNS0+MTAwKSBhbmQgcmVkdWNlIHRoZSBudW1iZXIgb2Ygc3Rl
cHMgdG8ga2VlcCB0ZXN0aW5nIHRpbWUgaW4gY2hlY2suCisgICAgICAgICAgVG9vIGZhc3Qgc3Rl
cHMgd2VyZSBydW5uaW5nIGludG8gdGltZXIgcmVzb2x1dGlvbiBsaW1pdHMuCisKKyAgICAgICAg
KiBTdHlsZUJlbmNoL3Jlc291cmNlcy9zdHlsZS1iZW5jaC5qczoKKyAgICAgICAgKGRlZmF1bHRD
b25maWd1cmF0aW9uKToKKyAgICAgICAgKHByb3RvdHlwZS5yYW5kb21BdHRyaWJ1dGVOYW1lKToK
KyAgICAgICAgKHByb3RvdHlwZS5yYW5kb21BdHRyaWJ1dGVWYWx1ZSk6CisgICAgICAgIChwcm90
b3R5cGUucmFuZG9tQXR0cmlidXRlU2VsZWN0b3IpOgorICAgICAgICAocHJvdG90eXBlLm1ha2VD
b21wb3VuZFNlbGVjdG9yKToKKyAgICAgICAgKHByb3RvdHlwZS5tYWtlRWxlbWVudCk6CisgICAg
ICAgIChwcm90b3R5cGUuYWRkQ2xhc3Nlcyk6CisgICAgICAgIChwcm90b3R5cGUucmVtb3ZlQ2xh
c3Nlcyk6CisgICAgICAgIChwcm90b3R5cGUubXV0YXRlQXR0cmlidXRlcyk6CisgICAgICAgIChw
cm90b3R5cGUuYXN5bmMucnVuRm9yZXZlcik6CisgICAgICAgICogU3R5bGVCZW5jaC9yZXNvdXJj
ZXMvdGVzdHMuanM6CisgICAgICAgIChtYWtlU3RlcHMpOgorICAgICAgICAobWFrZVN1aXRlKToK
KwogMjAxOC0wMi0wMSAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIE1ha2UgTWFsbG9jQmVuY2ggZWFzaWVyIGZvciBub24tV2ViS2l0IGVuZ2luZWVycyB0byBy
dW4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3R5bGVCZW5jaC9yZXNvdXJjZXMvc3R5bGUtYmVu
Y2guanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdHlsZUJlbmNoL3Jlc291cmNl
cy9zdHlsZS1iZW5jaC5qcwkocmV2aXNpb24gMjI4MTUyKQorKysgUGVyZm9ybWFuY2VUZXN0cy9T
dHlsZUJlbmNoL3Jlc291cmNlcy9zdHlsZS1iZW5jaC5qcwkod29ya2luZyBjb3B5KQpAQCAtNTEs
NiArNTEsMTUgQEAgY2xhc3MgU3R5bGVCZW5jaAogICAgICAgICAgICAgZWxlbWVudENoYW5jZTog
MC41LAogICAgICAgICAgICAgY2xhc3NDb3VudDogMjAwLAogICAgICAgICAgICAgY2xhc3NDaGFu
Y2U6IDAuMywKKyAgICAgICAgICAgIHN0YXJDaGFuY2U6IDAuMDUsCisgICAgICAgICAgICBhdHRy
aWJ1dGVDaGFuY2U6IDAuMDIsCisgICAgICAgICAgICBhdHRyaWJ1dGVDb3VudDogMTAsCisgICAg
ICAgICAgICBhdHRyaWJ1dGVWYWx1ZUNvdW50OiAyMCwKKyAgICAgICAgICAgIGF0dHJpYnV0ZU9w
ZXJhdG9yczogWycnLCc9J10sCisgICAgICAgICAgICBlbGVtZW50Q2xhc3NDaGFuY2U6IDAuNSwK
KyAgICAgICAgICAgIGVsZW1lbnRNYXhpbXVtQ2xhc3NlczogMywKKyAgICAgICAgICAgIGVsZW1l
bnRBdHRyaWJ1dGVDaGFuY2U6IDAuMiwKKyAgICAgICAgICAgIGVsZW1lbnRNYXhpbXVtQXR0cmli
dXRlczogMywKICAgICAgICAgICAgIGNvbWJpbmF0b3JzOiBbJyAnLCAnPicsXSwKICAgICAgICAg
ICAgIHBzZXVkb0NsYXNzZXM6IFtdLAogICAgICAgICAgICAgcHNldWRvQ2xhc3NDaGFuY2U6IDAs
CkBAIC02Miw5ICs3MSwxMSBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgICAgICBtYXhpbXVt
VHJlZVdpZHRoOiA1MCwKICAgICAgICAgICAgIHJlcGVhdGluZ1NlcXVlbmNlQ2hhbmNlOiAwLjIs
CiAgICAgICAgICAgICByZXBlYXRpbmdTZXF1ZW5jZU1heGltdW1MZW5ndGg6IDMsCi0gICAgICAg
ICAgICBsZWFmQ2xhc3NNdXRhdGlvbkNoYW5jZTogMC4xLAorICAgICAgICAgICAgbGVhZk11dGF0
aW9uQ2hhbmNlOiAwLjEsCiAgICAgICAgICAgICBzdHlsZVNlZWQ6IDEsCiAgICAgICAgICAgICBk
b21TZWVkOiAyLAorICAgICAgICAgICAgc3RlcENvdW50OiA1LAorICAgICAgICAgICAgbXV0YXRp
b25zUGVyU3RlcDogMTAwLAogICAgICAgICB9OwogICAgIH0KIApAQCAtMTc2LDYgKzE4NywyMyBA
QCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgIHJldHVybiBgY2xhc3MkeyB0aGlzLnJhbmRvbS5u
dW1iZXJTcXVhcmVXZWlnaHRlZFRvTG93KG1heGltdW0pIH1gOwogICAgIH0KIAorICAgIHJhbmRv
bUF0dHJpYnV0ZU5hbWUoKQorICAgIHsKKyAgICAgICAgY29uc3QgYXR0cmlidXRlQ291bnQgPSB0
aGlzLmNvbmZpZ3VyYXRpb24uYXR0cmlidXRlQ291bnQ7CisgICAgICAgIHJldHVybiBgYXR0ciR7
IHRoaXMucmFuZG9tLm51bWJlclNxdWFyZVdlaWdodGVkVG9Mb3coYXR0cmlidXRlQ291bnQpIH1g
OworICAgIH0KKworICAgIHJhbmRvbUF0dHJpYnV0ZVZhbHVlKCkKKyAgICB7CisgICAgICAgIGNv
bnN0IGF0dHJpYnV0ZVZhbHVlQ291bnQgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYXR0cmlidXRlVmFs
dWVDb3VudDsKKyAgICAgICAgY29uc3QgdmFsdWVOdW0gPSB0aGlzLnJhbmRvbS5udW1iZXJTcXVh
cmVXZWlnaHRlZFRvTG93KGF0dHJpYnV0ZVZhbHVlQ291bnQpOworICAgICAgICBpZiAodmFsdWVO
dW09PTApCisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIGlmICh2YWx1ZU51bT09MSkK
KyAgICAgICAgICAgIHJldHVybiAidmFsIjsKKyAgICAgICAgcmV0dXJuIGB2YWwkeyB2YWx1ZU51
bSB9YDsKKyAgICB9CisKICAgICByYW5kb21Db21iaW5hdG9yKCkKICAgICB7CiAgICAgICAgIGNv
bnN0IGNvbWJpbmF0b3JzID0gdGhpcy5jb25maWd1cmF0aW9uLmNvbWJpbmF0b3JzOwpAQCAtMTk3
LDYgKzIyNSwxNyBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgIHJldHVybiBgaWQkeyB0aGlz
LnJhbmRvbS5udW1iZXIoaWRDb3VudCkgfWA7CiAgICAgfQogCisgICAgcmFuZG9tQXR0cmlidXRl
U2VsZWN0b3IoKQorICAgIHsKKyAgICAgICAgY29uc3QgbmFtZSA9IHRoaXMucmFuZG9tQXR0cmli
dXRlTmFtZSgpOworICAgICAgICBjb25zdCBvcGVyYXRvcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24u
YXR0cmlidXRlT3BlcmF0b3JzOworICAgICAgICBjb25zdCBvcGVyYXRvciA9IG9wZXJhdG9yc1t0
aGlzLnJhbmRvbS5udW1iZXJTcXVhcmVXZWlnaHRlZFRvTG93KG9wZXJhdG9ycy5sZW5ndGgpXTsK
KyAgICAgICAgaWYgKG9wZXJhdG9yPT0nJykKKyAgICAgICAgICAgIHJldHVybiBgWyR7bmFtZX1d
YDsKKyAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJhbmRvbUF0dHJpYnV0ZVZhbHVlKCk7Cisg
ICAgICAgIHJldHVybiBgWyR7bmFtZX0ke29wZXJhdG9yfSIke3ZhbHVlfSJdYDsKKyAgICB9CisK
ICAgICBtYWtlQ29tcG91bmRTZWxlY3RvcihpbmRleCwgbGVuZ3RoKQogICAgIHsKICAgICAgICAg
Y29uc3QgaXNGaXJzdCA9IGluZGV4ID09IDA7CkBAIC0yMDQsMTEgKzI0MywxNiBAQCBjbGFzcyBT
dHlsZUJlbmNoCiAgICAgICAgIGNvbnN0IHVzZVBzZXVkb0NsYXNzID0gdGhpcy5yYW5kb20uY2hh
bmNlKHRoaXMuY29uZmlndXJhdGlvbi5wc2V1ZG9DbGFzc0NoYW5jZSkgJiYgdGhpcy5jb25maWd1
cmF0aW9uLnBzZXVkb0NsYXNzZXMubGVuZ3RoOwogICAgICAgICBjb25zdCB1c2VJZCA9IGlzRmly
c3QgJiYgdGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5pZENoYW5jZSk7CiAg
ICAgICAgIGNvbnN0IHVzZUVsZW1lbnQgPSAhdXNlSWQgJiYgKHVzZVBzZXVkb0NsYXNzIHx8IHRo
aXMucmFuZG9tLmNoYW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24uZWxlbWVudENoYW5jZSkpOyAvLyA6
bnRoLW9mLXR5cGUgZXRjIG9ubHkgbWFrZSBzZW5zZSB3aXRoIGVsZW1lbnQKLSAgICAgICAgY29u
c3QgdXNlQ2xhc3MgPSAhdXNlSWQgJiYgKCF1c2VFbGVtZW50IHx8IHRoaXMucmFuZG9tLmNoYW5j
ZSh0aGlzLmNvbmZpZ3VyYXRpb24uY2xhc3NDaGFuY2UpKTsKKyAgICAgICAgY29uc3QgdXNlQXR0
cmlidXRlID0gIXVzZUlkICYmIHRoaXMucmFuZG9tLmNoYW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24u
YXR0cmlidXRlQ2hhbmNlKTsKKyAgICAgICAgY29uc3QgdXNlSWRFbGVtZW50T3JBdHRyaWJ1dGUg
PSB1c2VJZCB8fCB1c2VFbGVtZW50IHx8IHVzZUF0dHJpYnV0ZTsKKyAgICAgICAgY29uc3QgdXNl
U3RhciA9ICF1c2VJZEVsZW1lbnRPckF0dHJpYnV0ZSAmJiAhaXNGaXJzdCAmJiB0aGlzLnJhbmRv
bS5jaGFuY2UodGhpcy5jb25maWd1cmF0aW9uLnN0YXJDaGFuY2UpOworICAgICAgICBjb25zdCB1
c2VDbGFzcyA9ICF1c2VJZCAmJiAhdXNlU3RhciAmJiAoIXVzZUlkRWxlbWVudE9yQXR0cmlidXRl
IHx8IHRoaXMucmFuZG9tLmNoYW5jZSh0aGlzLmNvbmZpZ3VyYXRpb24uY2xhc3NDaGFuY2UpKTsK
ICAgICAgICAgY29uc3QgdXNlQmVmb3JlT3JBZnRlciA9IGlzTGFzdCAmJiB0aGlzLnJhbmRvbS5j
aGFuY2UodGhpcy5jb25maWd1cmF0aW9uLmJlZm9yZUFmdGVyQ2hhbmNlKTsKICAgICAgICAgbGV0
IHJlc3VsdCA9ICIiOwogICAgICAgICBpZiAodXNlRWxlbWVudCkKICAgICAgICAgICAgIHJlc3Vs
dCArPSB0aGlzLnJhbmRvbUVsZW1lbnROYW1lKCk7CisgICAgICAgIGlmICh1c2VTdGFyKQorICAg
ICAgICAgICAgcmVzdWx0ID0gIioiOwogICAgICAgICBpZiAodXNlSWQpCiAgICAgICAgICAgICBy
ZXN1bHQgKz0gIiMiICsgdGhpcy5yYW5kb21JZCgpOwogICAgICAgICBpZiAodXNlQ2xhc3MpIHsK
QEAgLTIxOCw2ICsyNjIsOSBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgICAgICAgICAgcmVz
dWx0ICs9ICIuIiArIHRoaXMucmFuZG9tQ2xhc3NOYW1lRnJvbVJhbmdlKChpbmRleCArIDEpIC8g
bGVuZ3RoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAodXNlQXR0cmli
dXRlKQorICAgICAgICAgICAgcmVzdWx0ICs9ICB0aGlzLnJhbmRvbUF0dHJpYnV0ZVNlbGVjdG9y
KCk7CisKICAgICAgICAgaWYgKHVzZVBzZXVkb0NsYXNzKQogICAgICAgICAgICAgcmVzdWx0ICs9
ICAiOiIgKyB0aGlzLnJhbmRvbVBzZXVkb0NsYXNzKGlzTGFzdCk7CiAgICAgICAgIGlmICh1c2VC
ZWZvcmVPckFmdGVyKSB7CkBAIC0yODIsMTIgKzMyOSwxOCBAQCBjbGFzcyBTdHlsZUJlbmNoCiAg
ICAgbWFrZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQodGhpcy5yYW5kb21FbGVtZW50TmFtZSgpKTsKLSAgICAgICAgY29uc3Qg
aGFzQ2xhc3NlcyA9IHRoaXMucmFuZG9tLmNoYW5jZSgwLjUpOworICAgICAgICBjb25zdCBoYXND
bGFzc2VzID0gdGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5lbGVtZW50Q2xh
c3NDaGFuY2UpOworICAgICAgICBjb25zdCBoYXNBdHRyaWJ1dGVzID0gdGhpcy5yYW5kb20uY2hh
bmNlKHRoaXMuY29uZmlndXJhdGlvbi5lbGVtZW50QXR0cmlidXRlQ2hhbmNlKTsKICAgICAgICAg
aWYgKGhhc0NsYXNzZXMpIHsKLSAgICAgICAgICAgIGNvbnN0IGNvdW50ID0gdGhpcy5yYW5kb20u
bnVtYmVyU3F1YXJlV2VpZ2h0ZWRUb0xvdygzKSArIDE7CisgICAgICAgICAgICBjb25zdCBjb3Vu
dCA9IHRoaXMucmFuZG9tLm51bWJlclNxdWFyZVdlaWdodGVkVG9Mb3codGhpcy5jb25maWd1cmF0
aW9uLmVsZW1lbnRNYXhpbXVtQ2xhc3NlcykgKyAxOwogICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCh0aGlzLnJhbmRvbUNsYXNzTmFtZSgpKTsKICAgICAgICAgfQorICAgICAgICBpZiAoaGFzQXR0
cmlidXRlcykgeworICAgICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLnJhbmRvbS5udW1iZXIo
dGhpcy5jb25maWd1cmF0aW9uLmVsZW1lbnRNYXhpbXVtQXR0cmlidXRlcykgKyAxOworICAgICAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgIGVs
ZW1lbnQuc2V0QXR0cmlidXRlKHRoaXMucmFuZG9tQXR0cmlidXRlTmFtZSgpLCB0aGlzLnJhbmRv
bUF0dHJpYnV0ZVZhbHVlKCkpOworICAgICAgICB9CiAgICAgICAgIGNvbnN0IGhhc0lkID0gdGhp
cy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5pZENoYW5jZSk7CiAgICAgICAgIGlm
IChoYXNJZCkgewogICAgICAgICAgICAgZWxlbWVudC5pZCA9IGBpZCR7IHRoaXMuaWRDb3VudCB9
YDsKQEAgLTM2NSw3ICs0MTgsNyBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgIGZvciAobGV0
IGkgPSAwOyBpIDwgY291bnQ7KSB7CiAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5y
YW5kb21UcmVlRWxlbWVudCgpOwogICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgbGVhdmVz
IHRoYW4gYnJhbmNoZXMuIEF2b2lkIHNrZXdpbmcgdG93YXJkcyBsZWFmIG11dGF0aW9ucy4KLSAg
ICAgICAgICAgIGlmICghZWxlbWVudC5maXJzdENoaWxkICYmICF0aGlzLnJhbmRvbS5jaGFuY2Uo
dGhpcy5jb25maWd1cmF0aW9uLmxlYWZDbGFzc011dGF0aW9uQ2hhbmNlKSkKKyAgICAgICAgICAg
IGlmICghZWxlbWVudC5maXJzdENoaWxkICYmICF0aGlzLnJhbmRvbS5jaGFuY2UodGhpcy5jb25m
aWd1cmF0aW9uLmxlYWZNdXRhdGlvbkNoYW5jZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICArK2k7CiAgICAgICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSBlbGVtZW50
LmNsYXNzTGlzdDsKQEAgLTM3OCw3ICs0MzEsNyBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAg
IGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7KSB7CiAgICAgICAgICAgICBjb25zdCBlbGVtZW50
ID0gdGhpcy5yYW5kb21UcmVlRWxlbWVudCgpOwogICAgICAgICAgICAgY29uc3QgY2xhc3NMaXN0
ID0gZWxlbWVudC5jbGFzc0xpc3Q7Ci0gICAgICAgICAgICBpZiAoIWVsZW1lbnQuZmlyc3RDaGls
ZCAmJiAhdGhpcy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5sZWFmQ2xhc3NNdXRh
dGlvbkNoYW5jZSkpCisgICAgICAgICAgICBpZiAoIWVsZW1lbnQuZmlyc3RDaGlsZCAmJiAhdGhp
cy5yYW5kb20uY2hhbmNlKHRoaXMuY29uZmlndXJhdGlvbi5sZWFmTXV0YXRpb25DaGFuY2UpKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKCFjbGFzc0xpc3QubGVu
Z3RoKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDE2LDYgKzQ2OSwzMyBAQCBjbGFz
cyBTdHlsZUJlbmNoCiAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGVkVGVzdEVsZW1lbnRzKCk7CiAg
ICAgfQogCisgICAgbXV0YXRlQXR0cmlidXRlcyhjb3VudCkKKyAgICB7CisgICAgICAgIGZvciAo
bGV0IGkgPSAwOyBpIDwgY291bnQ7KSB7CisgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhp
cy5yYW5kb21UcmVlRWxlbWVudCgpOworICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG1vcmUgbGVh
dmVzIHRoYW4gYnJhbmNoZXMuIEF2b2lkIHNrZXdpbmcgdG93YXJkcyBsZWFmIG11dGF0aW9ucy4K
KyAgICAgICAgICAgIGlmICghZWxlbWVudC5maXJzdENoaWxkICYmICF0aGlzLnJhbmRvbS5jaGFu
Y2UodGhpcy5jb25maWd1cmF0aW9uLmxlYWZNdXRhdGlvbkNoYW5jZSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVOYW1lcyA9IGVsZW1lbnQu
Z2V0QXR0cmlidXRlTmFtZXMoKTsKKyAgICAgICAgICAgIGxldCBtdXRhdGVkQXR0cmlidXRlcyA9
IGZhbHNlOworICAgICAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGF0dHJpYnV0ZU5hbWVzKSB7
CisgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gImNsYXNzIiB8fCBuYW1lID09ICJpZCIpCisg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGlmICh0aGlzLnJh
bmRvbS5jaGFuY2UoMC41KSkKKyAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRy
aWJ1dGUobmFtZSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBl
bGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB0aGlzLnJhbmRvbUF0dHJpYnV0ZVZhbHVlKCkpOwor
ICAgICAgICAgICAgICAgIG11dGF0ZWRBdHRyaWJ1dGVzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghbXV0YXRlZEF0dHJpYnV0ZXMpIHsKKyAgICAgICAgICAgICAgICBj
b25zdCBjb3VudCA9IHRoaXMucmFuZG9tLm51bWJlcih0aGlzLmNvbmZpZ3VyYXRpb24uZWxlbWVu
dE1heGltdW1BdHRyaWJ1dGVzKSArIDE7CisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0
ZSh0aGlzLnJhbmRvbUF0dHJpYnV0ZU5hbWUoKSwgdGhpcy5yYW5kb21BdHRyaWJ1dGVWYWx1ZSgp
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIGFzeW5jIHJ1bkZvcmV2ZXIoKQogICAgIHsKICAgICAgICAgd2hpbGUgKHRydWUpIHsKQEAg
LTQyMyw2ICs1MDMsNyBAQCBjbGFzcyBTdHlsZUJlbmNoCiAgICAgICAgICAgICB0aGlzLnJlbW92
ZUNsYXNzZXMoMTApOwogICAgICAgICAgICAgdGhpcy5hZGRMZWFmRWxlbWVudHMoMTApOwogICAg
ICAgICAgICAgdGhpcy5yZW1vdmVMZWFmRWxlbWVudHMoMTApOworICAgICAgICAgICAgdGhpcy5t
dXRhdGVBdHRyaWJ1dGVzKDEwKTsKIAogICAgICAgICAgICAgYXdhaXQgbmV4dEFuaW1hdGlvbkZy
YW1lKCk7CiAgICAgICAgIH0KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvU3R5bGVCZW5jaC9yZXNv
dXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9TdHlsZUJlbmNo
L3Jlc291cmNlcy90ZXN0cy5qcwkocmV2aXNpb24gMjI4MTUyKQorKysgUGVyZm9ybWFuY2VUZXN0
cy9TdHlsZUJlbmNoL3Jlc291cmNlcy90ZXN0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMSwxOCAr
MSwyMSBAQAotZnVuY3Rpb24gbWFrZVN0ZXBzKGNvdW50KQorZnVuY3Rpb24gbWFrZVN0ZXBzKGNv
bmZpZ3VyYXRpb24pCiB7CiAgICAgY29uc3Qgc3RlcHMgPSBbXTsKLSAgICBmb3IgKGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgIGZvciAoaSA9IDA7IGkgPCBjb25maWd1cmF0aW9uLnN0ZXBD
b3VudDsgKytpKSB7CiAgICAgICAgIHN0ZXBzLnB1c2gobmV3IEJlbmNobWFya1Rlc3RTdGVwKGBB
ZGRpbmcgY2xhc3NlcyAtICR7aX1gLCAoYmVuY2gsIGNvbnRlbnRXaW5kb3csIGNvbnRlbnREb2N1
bWVudCkgPT4gewotICAgICAgICAgICAgYmVuY2guYWRkQ2xhc3NlcygyNSk7CisgICAgICAgICAg
ICBiZW5jaC5hZGRDbGFzc2VzKGNvbmZpZ3VyYXRpb24ubXV0YXRpb25zUGVyU3RlcCk7CiAgICAg
ICAgIH0pKTsKICAgICAgICAgc3RlcHMucHVzaChuZXcgQmVuY2htYXJrVGVzdFN0ZXAoYFJlbW92
aW5nIGNsYXNzZXMgLSAke2l9YCwgKGJlbmNoLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1l
bnQpID0+IHsKLSAgICAgICAgICAgIGJlbmNoLnJlbW92ZUNsYXNzZXMoMjUpOworICAgICAgICAg
ICAgYmVuY2gucmVtb3ZlQ2xhc3Nlcyhjb25maWd1cmF0aW9uLm11dGF0aW9uc1BlclN0ZXApOwor
ICAgICAgICB9KSk7CisgICAgICAgIHN0ZXBzLnB1c2gobmV3IEJlbmNobWFya1Rlc3RTdGVwKGBN
dXRhdGluZyBhdHRyaWJ1dGVzIC0gJHtpfWAsIChiZW5jaCwgY29udGVudFdpbmRvdywgY29udGVu
dERvY3VtZW50KSA9PiB7CisgICAgICAgICAgICBiZW5jaC5tdXRhdGVBdHRyaWJ1dGVzKGNvbmZp
Z3VyYXRpb24ubXV0YXRpb25zUGVyU3RlcCk7CiAgICAgICAgIH0pKTsKICAgICAgICAgc3RlcHMu
cHVzaChuZXcgQmVuY2htYXJrVGVzdFN0ZXAoYEFkZGluZyBsZWFmIGVsZW1lbnRzIC0gJHtpfWAs
IChiZW5jaCwgY29udGVudFdpbmRvdywgY29udGVudERvY3VtZW50KSA9PiB7Ci0gICAgICAgICAg
ICBiZW5jaC5hZGRMZWFmRWxlbWVudHMoMjUpOworICAgICAgICAgICAgYmVuY2guYWRkTGVhZkVs
ZW1lbnRzKGNvbmZpZ3VyYXRpb24ubXV0YXRpb25zUGVyU3RlcCk7CiAgICAgICAgIH0pKTsKICAg
ICAgICAgc3RlcHMucHVzaChuZXcgQmVuY2htYXJrVGVzdFN0ZXAoYFJlbW92aW5nIGxlYWYgZWxl
bWVudHMgLSAke2l9YCwgKGJlbmNoLCBjb250ZW50V2luZG93LCBjb250ZW50RG9jdW1lbnQpID0+
IHsKLSAgICAgICAgICAgIGJlbmNoLnJlbW92ZUxlYWZFbGVtZW50cygyNSk7CisgICAgICAgICAg
ICBiZW5jaC5yZW1vdmVMZWFmRWxlbWVudHMoY29uZmlndXJhdGlvbi5tdXRhdGlvbnNQZXJTdGVw
KTsKICAgICAgICAgfSkpOwogICAgIH0KICAgICByZXR1cm4gc3RlcHM7CkBAIC0yOCw3ICszMSw3
IEBAIGZ1bmN0aW9uIG1ha2VTdWl0ZShjb25maWd1cmF0aW9uKQogICAgICAgICAgICAgICAgIHJl
dHVybiBjb250ZW50V2luZG93LmNyZWF0ZUJlbmNobWFyayhjb25maWd1cmF0aW9uKTsKICAgICAg
ICAgICAgIH0pOwogICAgICAgICB9LAotICAgICAgICB0ZXN0czogbWFrZVN0ZXBzKDEwKSwKKyAg
ICAgICAgdGVzdHM6IG1ha2VTdGVwcyhjb25maWd1cmF0aW9uKSwKICAgICB9OwogfQogCg==
</data>
<flag name="review"
          id="352181"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>