<?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>173120</bug_id>
          
          <creation_ts>2017-06-08 15:46:40 -0700</creation_ts>
          <short_desc>Filter SDP from ICE candidates in case of local ICE candidate filtering</short_desc>
          <delta_ts>2017-06-13 01:13:31 -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>Media</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jonlee</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1317110</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-08 15:46:40 -0700</bug_when>
    <thetext>Filter SDP from ICE candidates in case of local ICE candidate filtering</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317116</commentid>
    <comment_count>1</comment_count>
      <attachid>312358</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-08 16:03:11 -0700</bug_when>
    <thetext>Created attachment 312358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317163</commentid>
    <comment_count>2</comment_count>
      <attachid>312358</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-08 19:00:00 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt; LayoutTests/webrtc/datachannel/filter-ice-candidate.html:47
&gt; +            assert_equals(pc.localDescription.sdp.indexOf(&quot;a:=candidate&quot;), -1);

shouldn&apos;t this be a=candidate ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317188</commentid>
    <comment_count>3</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-08 21:44:32 -0700</bug_when>
    <thetext>rdar://problem/32653631</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317404</commentid>
    <comment_count>4</comment_count>
      <attachid>312358</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-06-09 08:56:20 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:47
&gt; +String filterICECandidate(String&amp;&amp;);

Nit: This can be static.

&gt;&gt; LayoutTests/webrtc/datachannel/filter-ice-candidate.html:47
&gt;&gt; +            assert_equals(pc.localDescription.sdp.indexOf(&quot;a:=candidate&quot;), -1);
&gt; 
&gt; shouldn&apos;t this be a=candidate ?

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317447</commentid>
    <comment_count>5</comment_count>
      <attachid>312358</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-09 09:51:46 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:47
&gt;&gt; +String filterICECandidate(String&amp;&amp;);
&gt; 
&gt; Nit: This can be static.

I think you can revert this...

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:306
&gt; +String filterICECandidate(String&amp;&amp; sdp)

... and this.

&gt; LayoutTests/webrtc/datachannel/filter-ice-candidate.html:34
&gt; +    });

I&apos;m confused by these tests. Above there are potentially two resolve() calls. Is that right? Why is filtering set to true in this block, and not set in the next promise_test(), for parallelism?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317449</commentid>
    <comment_count>6</comment_count>
      <attachid>312358</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2017-06-09 09:53:04 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt;&gt; LayoutTests/webrtc/datachannel/filter-ice-candidate.html:34
&gt;&gt; +    });
&gt; 
&gt; I&apos;m confused by these tests. Above there are potentially two resolve() calls. Is that right? Why is filtering set to true in this block, and not set in the next promise_test(), for parallelism?

It seems that the test isn&apos;t reaching some of these asserts. I am able to change the assertions to clearly wrong conditions, and the test still passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317495</commentid>
    <comment_count>7</comment_count>
      <attachid>312358</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-09 10:47:42 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt;&gt;&gt; LayoutTests/webrtc/datachannel/filter-ice-candidate.html:34
&gt;&gt;&gt; +    });
&gt;&gt; 
&gt;&gt; I&apos;m confused by these tests. Above there are potentially two resolve() calls. Is that right? Why is filtering set to true in this block, and not set in the next promise_test(), for parallelism?
&gt; 
&gt; It seems that the test isn&apos;t reaching some of these asserts. I am able to change the assertions to clearly wrong conditions, and the test still passes.

The second resolve is a noop and should be removed. We could change the place where we set the filtering to true. That might be indeed clearer but will not change any behavior here.
Can you explain which assertions you changed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317935</commentid>
    <comment_count>8</comment_count>
      <attachid>312358</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-10 16:01:36 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

I l clean the tests to make them more readable. Putting patch in r? in the meantime.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1317952</commentid>
    <comment_count>9</comment_count>
      <attachid>312358</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-06-10 19:19:28 -0700</bug_when>
    <thetext>Comment on attachment 312358
Patch

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

&gt; Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp:355
&gt; +    Vector&lt;String&gt; lines;
&gt; +    sdp.split(&apos;\n&apos;, false, lines);
&gt; +
&gt; +    StringBuilder builder;
&gt; +    for (auto&amp; line : lines) {
&gt; +        if (!line.contains(&quot;a=candidate&quot;))
&gt; +            builder.append(line);
&gt; +        else if (!line.contains(&quot; host &quot;))
&gt; +            builder.append(filterICECandidate(WTFMove(line)));
&gt; +        else
&gt; +            continue;
&gt; +        builder.append(&apos;\n&apos;);
&gt; +    }
&gt; +    return builder.toString();

I&apos;m not sure how hot this is, but a lot of unnecessary String allocations are taking place.  A split that took a functor, something like spd.split(&apos;\n&apos;, false, [] (StringView line) { }) would allow many fewer allocations. (See splitOnSpaces in SubresourceIntegrity.cpp for non-generalized version of this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318032</commentid>
    <comment_count>10</comment_count>
      <attachid>312613</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-11 11:42:09 -0700</bug_when>
    <thetext>Created attachment 312613
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318035</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-11 11:45:49 -0700</bug_when>
    <thetext>&gt; I&apos;m not sure how hot this is, but a lot of unnecessary String allocations
&gt; are taking place.  A split that took a functor, something like
&gt; spd.split(&apos;\n&apos;, false, [] (StringView line) { }) would allow many fewer
&gt; allocations. (See splitOnSpaces in SubresourceIntegrity.cpp for
&gt; non-generalized version of this).

It is not very hot, it will happen once for a webrtc page typically.
But this is a good idea anyway and some other places might benefit from it as well.
Patch adds a split helper routine here.

In the same patch, I cleaned the tests as discussed above.
I added an additional assert after candidates have been gathered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318595</commentid>
    <comment_count>12</comment_count>
      <attachid>312613</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-13 01:13:29 -0700</bug_when>
    <thetext>Comment on attachment 312613
Patch

Clearing flags on attachment: 312613

Committed r218168: &lt;http://trac.webkit.org/changeset/218168&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1318596</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-13 01:13:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312358</attachid>
            <date>2017-06-08 16:03:11 -0700</date>
            <delta_ts>2017-06-11 11:42:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173120-20170608160307.patch</filename>
            <type>text/plain</type>
            <size>11520</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjliYTM2NTc5NjkxMjZm
ODU3MjVmY2U4YTQ1ZDNjNzU1OTZlYzIxOC4uOWU3MjQ1Y2E1NDBhOTkzNjUyZTk1ZjFiZWJiNWEz
YzA1ZmI5OGMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA2LTA4ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBGaWx0ZXIgU0RQIGZyb20g
SUNFIGNhbmRpZGF0ZXMgaW4gY2FzZSBvZiBsb2NhbCBJQ0UgY2FuZGlkYXRlIGZpbHRlcmluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczMTIwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBi
eSB1cGRhdGVkIHRlc3QuCisKKyAgICAgICAgQWRkaW5nIGZpbHRlcmluZyBvZiBsb2NhbCBkZXNj
cmlwdGlvbiBpbiBnZXR0ZXJzIGFuZCBjcmVhdGVPZmZlciBwcm9taXNlLgorCisgICAgICAgICog
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb246OnRvUlRD
U2Vzc2lvbkRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQ6OmNyZWF0ZU9mZmVyU3VjY2VlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbHRlcklD
RUNhbmRpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmZp
bHRlclNEUCk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6UlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpzZXRTZHAp
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQ6OmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVzY3JpcHRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjps
b2NhbERlc2NyaXB0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0
Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuaDoKKwogMjAxNy0wNi0wOCAgSmVyIE5v
YmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBZb3VUdWJlIGF1ZGlvIHN0dXR0
ZXJzIHdoZW4gcGFnZSBjaGFuZ2VzIHZpc2liaWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50U2Vz
c2lvbkRlc2NyaXB0aW9uLmNwcAppbmRleCAyNGNlMzczOTAzMjQyNjg2YWMzODVkMTIwZTUzZjc2
YmRhMzFmZGI1Li5jZGYzOWIyNzQ4NmY0ZGY3ZjdjMGY0YmUyZjZjZTU3NGFiMGM4MDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhRW5kcG9pbnRT
ZXNzaW9uRGVzY3JpcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAKQEAgLTgzLDcgKzgzLDcg
QEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTWVkaWFFbmRwb2ludFNlc3Npb25EZXNj
cmlwdGlvbjo6dG9SVENTZXNzaW9uRGVzY3IKICAgICAvLyB0aGF0IHNhbWUgaW5zdGFuY2UgYnV0
IHdpdGggYW4gdXBkYXRlZCBzZHAuIEl0IGlzIHVzZWQgZm9yIFJUQ1BlZXJDb25uZWN0aW9uJ3Mg
ZGVzY3JpcHRpb24KICAgICAvLyBhdHJpYnV0ZXMgKGUuZy4gbG9jYWxEZXNjcmlwdGlvbiBhbmQg
cGVuZGluZ0xvY2FsRGVzY3JpcHRpb24pLgogICAgIGlmIChtX3J0Y0Rlc2NyaXB0aW9uKSB7Ci0g
ICAgICAgIG1fcnRjRGVzY3JpcHRpb24tPnNldFNkcChzZHBTdHJpbmcpOworICAgICAgICBtX3J0
Y0Rlc2NyaXB0aW9uLT5zZXRTZHAoV1RGTW92ZShzZHBTdHJpbmcpKTsKICAgICAgICAgcmV0dXJu
IG1fcnRjRGVzY3JpcHRpb247CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXgg
Yjk3MGFiY2I0NTU1NWNjOTdkNTI0MGI5MjQwNTM1MDJhN2E3NjYyOC4uOWU0N2JkZjQ0NDg2Nzgw
NjA0NjIwZjFlMjBkZWEzNjljMWJhMTIzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcApAQCAt
NDQsNiArNDQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK1N0cmluZyBmaWx0ZXJJQ0VD
YW5kaWRhdGUoU3RyaW5nJiYpOworCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRl
T2ZmZXIoUlRDT2ZmZXJPcHRpb25zJiYgb3B0aW9ucywgUGVlckNvbm5lY3Rpb246OlNlc3Npb25E
ZXNjcmlwdGlvblByb21pc2UmJiBwcm9taXNlKQogewogICAgIEFTU0VSVCghbV9vZmZlckFuc3dl
clByb21pc2UpOwpAQCAtNjIsNyArNjQsNyBAQCB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6
Y3JlYXRlT2ZmZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2RwKQogICAgICAgICByZXR1cm47CiAKICAg
ICBBU1NFUlQobV9vZmZlckFuc3dlclByb21pc2UpOwotICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNl
LT5yZXNvbHZlKFJUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Y3JlYXRlKFJUQ1NkcFR5cGU6Ok9mZmVy
LCBXVEZNb3ZlKHNkcCkpKTsKKyAgICBtX29mZmVyQW5zd2VyUHJvbWlzZS0+cmVzb2x2ZShSVENT
ZXNzaW9uRGVzY3JpcHRpb246OmNyZWF0ZShSVENTZHBUeXBlOjpPZmZlciwgZmlsdGVyU0RQKFdU
Rk1vdmUoc2RwKSkpKTsKICAgICBtX29mZmVyQW5zd2VyUHJvbWlzZSA9IHN0ZDo6bnVsbG9wdDsK
IH0KIApAQCAtMzAxLDcgKzMwMyw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNh
YmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkKICAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLmNs
ZWFyKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJp
bmcmJiBzZHApCitTdHJpbmcgZmlsdGVySUNFQ2FuZGlkYXRlKFN0cmluZyYmIHNkcCkKIHsKICAg
ICBBU1NFUlQoIXNkcC5jb250YWlucygiIGhvc3QgIikpOwogCkBAIC0zMzIsNiArMzM0LDI3IEBA
IHN0YXRpYyBpbmxpbmUgU3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCiAg
ICAgcmV0dXJuIGZpbHRlcmVkU0RQLnRvU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBQZWVyQ29ubmVj
dGlvbkJhY2tlbmQ6OmZpbHRlclNEUChTdHJpbmcmJiBzZHApIGNvbnN0Cit7CisgICAgaWYgKCFt
X3Nob3VsZEZpbHRlcklDRUNhbmRpZGF0ZXMpCisgICAgICAgIHJldHVybiBzZHA7CisKKyAgICBW
ZWN0b3I8U3RyaW5nPiBsaW5lczsKKyAgICBzZHAuc3BsaXQoJ1xuJywgZmFsc2UsIGxpbmVzKTsK
KworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBmb3IgKGF1dG8mIGxpbmUgOiBsaW5l
cykgeworICAgICAgICBpZiAoIWxpbmUuY29udGFpbnMoImE9Y2FuZGlkYXRlIikpCisgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChsaW5lKTsKKyAgICAgICAgZWxzZSBpZiAoIWxpbmUuY29udGFp
bnMoIiBob3N0ICIpKQorICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoZmlsdGVySUNFQ2FuZGlk
YXRlKFdURk1vdmUobGluZSkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCdcbicpOworICAgIH0KKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCiB2b2lkIFBlZXJDb25uZWN0aW9uQmFja2VuZDo6bmV3SUNFQ2Fu
ZGlkYXRlKFN0cmluZyYmIHNkcCwgU3RyaW5nJiYgbWlkKQogewogICAgIFJFTEVBU0VfTE9HKFdl
YlJUQywgIkdhdGhlcmVkIGljZSBjYW5kaWRhdGU6XG4lc1xuIiwgc2RwLnV0ZjgoKS5kYXRhKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb25CYWNrZW5kLmgKaW5kZXggOGY5NWExYjc4OWVkZmRiOGU3NzAzMzllMjUyMzRl
Y2JlNzQwNDM1Ny4uODdiMzhjYzA0ZWQ0ZDc3YjkwYTkxMDk3YzM0OGU4OGZkN2E0MjRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlv
bkJhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCkBAIC0xMzMsNiArMTMzLDggQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgYWRkSWNlQ2FuZGlkYXRlU3VjY2VlZGVkKCk7CiAgICAgdm9pZCBhZGRJY2VDYW5kaWRhdGVG
YWlsZWQoRXhjZXB0aW9uJiYpOwogCisgICAgU3RyaW5nIGZpbHRlclNEUChTdHJpbmcmJikgY29u
c3Q7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRvQ3JlYXRlT2ZmZXIoUlRDT2ZmZXJP
cHRpb25zJiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZG9DcmVhdGVBbnN3ZXIoUlRDQW5zd2Vy
T3B0aW9ucyYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uaAppbmRleCA0MWQ0NTM3YTk2OTVmZDU2
MGE3NDVmNjY5OTE2ZTQwZWI5ZjhkZGUwLi4xMDliMmE5YWNmYTFjZTVlNWU1ODliZjQ4NWI1YTE0
NDdlYmE2ODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ1Nlc3Npb25EZXNjcmlwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGlj
OgogICAgIFJUQ1NkcFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogCiAgICAg
Y29uc3QgU3RyaW5nJiBzZHAoKSBjb25zdCB7IHJldHVybiBtX3NkcDsgfQotICAgIHZvaWQgc2V0
U2RwKGNvbnN0IFN0cmluZyYgc2RwKSB7IG1fc2RwID0gc2RwOyB9CisgICAgdm9pZCBzZXRTZHAo
U3RyaW5nJiYgc2RwKSB7IG1fc2RwID0gV1RGTW92ZShzZHApOyB9CiAKIHByaXZhdGU6CiAgICAg
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uKFJUQ1NkcFR5cGUsIFN0cmluZyYmIHNkcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJS
VENQZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAppbmRl
eCAxZDg0OTkzMjU4ZDYxZjhmNTM2MjUwOGY4YzdjN2EzZDYyNzU3ZWVkLi5hZWNkOTY3MDZmMDFh
ZWRkNDIyNTdmY2JkOTliZDgzYzQ2YTEzYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNp
bmNsdWRlICJSVENTZXNzaW9uRGVzY3JpcHRpb24uaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2UuaCIKICNpbmNsdWRlICJSZWFsdGltZUluY29taW5nVmlkZW9Tb3VyY2Uu
aCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMjc3LDcgKzI3OCwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8UlRDRGF0YUNoYW5u
ZWxIYW5kbGVyPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmNyZWF0ZURhdAogCiBS
ZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tl
bmQ6OmN1cnJlbnRMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9lbmRw
b2ludC0+Y3VycmVudExvY2FsRGVzY3JpcHRpb24oKTsKKyAgICBhdXRvIGRlc2NyaXB0aW9uID0g
bV9lbmRwb2ludC0+Y3VycmVudExvY2FsRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoZGVzY3JpcHRp
b24pCisgICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlw
dGlvbi0+c2RwKCkpKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCiBSZWZQdHI8UlRD
U2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJl
bnRSZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yODcsNyArMjkxLDEwIEBAIFJlZlB0cjxS
VENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudFJlbW90ZURlc2NyCiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ0xvY2FsRGVzY3JpcHRpb24oKSBjb25zdAog
ewotICAgIHJldHVybiBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigpOworICAg
IGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5wZW5kaW5nTG9jYWxEZXNjcmlwdGlvbigp
OworICAgIGlmIChkZXNjcmlwdGlvbikKKyAgICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0
ZXJTRFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5zZHAoKSkpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRp
b247CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25u
ZWN0aW9uQmFja2VuZDo6cGVuZGluZ1JlbW90ZURlc2NyaXB0aW9uKCkgY29uc3QKQEAgLTI5Nyw3
ICszMDQsMTAgQEAgUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpwZW5kaW5nUmVtb3RlRGVzY3IKIAogUmVmUHRyPFJUQ1Nlc3Npb25E
ZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpsb2NhbERlc2NyaXB0
aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9lbmRwb2ludC0+bG9jYWxEZXNjcmlwdGlvbigp
OworICAgIGF1dG8gZGVzY3JpcHRpb24gPSBtX2VuZHBvaW50LT5sb2NhbERlc2NyaXB0aW9uKCk7
CisgICAgaWYgKGRlc2NyaXB0aW9uKQorICAgICAgICBkZXNjcmlwdGlvbi0+c2V0U2RwKGZpbHRl
clNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgIHJldHVybiBkZXNjcmlwdGlv
bjsKIH0KIAogUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2ViUlRDUGVlckNvbm5l
Y3Rpb25CYWNrZW5kOjpyZW1vdGVEZXNjcmlwdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29u
bmVjdGlvbkJhY2tlbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGli
d2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4IGRjOTc1Mzg0NzZl
YTRhZDliMDdkM2YzYzVhZjE1NGM0NzYyMTlhZDIuLjY1YjBjMTFmYWNmMWRlM2RmMzg5YzdmNzQ2
ODJiZTA4MzE2YTFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZC5oCkBAIC0xMDEsNiArMTAxLDggQEAgcHJpdmF0ZToKICAgICBWaWRl
b1JlY2VpdmVyIHZpZGVvUmVjZWl2ZXIoU3RyaW5nJiYgdHJhY2tJZCk7CiAgICAgQXVkaW9SZWNl
aXZlciBhdWRpb1JlY2VpdmVyKFN0cmluZyYmIHRyYWNrSWQpOwogCisgICAgdm9pZCBmaWx0ZXJE
ZXNjcmlwdGlvbkljZUNhbmRpZGF0ZXNJZk5lZWRlZChSVENTZXNzaW9uRGVzY3JpcHRpb24qKSBj
b25zdDsKKwogcHJpdmF0ZToKICAgICBSZWY8TGliV2ViUlRDTWVkaWFFbmRwb2ludD4gbV9lbmRw
b2ludDsKICAgICBib29sIG1faXNMb2NhbERlc2NyaXB0aW9uU2V0IHsgZmFsc2UgfTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCA2Nzc0YjEzYmJlMDA4Y2NkZjU4ODRiYmM2ZmM2MDMwMTIwMWE3ZDZlLi5mMDVlNTFiNGY2Nzlj
MzIyZDMzN2U2M2NhNDM4NWIyMTRkZDQwOTdjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTQgQEAKIDIwMTct
MDYtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIEZpbHRl
ciBTRFAgZnJvbSBJQ0UgY2FuZGlkYXRlcyBpbiBjYXNlIG9mIGxvY2FsIElDRSBjYW5kaWRhdGUg
ZmlsdGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzMxMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHdlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0ZS5odG1sOgorCisyMDE3
LTA2LTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKwogICAgICAgICBnZXRV
c2VyTWVkaWEgc2hvdWxkIG5vdCBiZSBwcm9tcHRlZCBhZ2FpbiBpZiB1c2VyIGRlbmllZCBhY2Nl
c3MKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzEw
NAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWlj
ZS1jYW5kaWRhdGUuaHRtbCBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXIt
aWNlLWNhbmRpZGF0ZS5odG1sCmluZGV4IGUyNTZhY2RmMjg4MzU3N2QxYzQ0ODY5NGRlZjljNjNi
NzUxZjAwYzcuLjg1YTY0ODQ5ZWM0NjRkZDMyNDhkMTdjNTBlMzFiNjM4YmNjMjZlZTkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNhbmRpZGF0
ZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYnJ0Yy9kYXRhY2hhbm5lbC9maWx0ZXItaWNlLWNh
bmRpZGF0ZS5odG1sCkBAIC04LDcgKzgsNyBAQAogICA8L2hlYWQ+CiAgIDxib2R5PgogICAgIDxz
Y3JpcHQ+Ci1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Citwcm9taXNlX3Rlc3QoKHRlc3QpID0+
IHsKICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAg
ICB2YXIgY291bnRlciA9IDA7CiAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CkBAIC0y
MSw2ICsyMSw3IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBj
b3VudGVyKys7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgYXNzZXJ0X2ZhbHNlKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2Fu
ZGlkYXRlIikgPT09IC0xKTsKICAgICAgICAgICAgIGlmIChjb3VudGVyICE9PSAwKQogICAgICAg
ICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIGVsc2UKQEAgLTMwLDEwICszMSwxMCBA
QCBwcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAg
ICAgIH07CiAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0
TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0pCisgICAgfSk7CiB9LCAiR2F0aGVy
aW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0aW9uIHdp
dGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb2ZmIik7CiAKLXByb21pc2VfdGVzdChmdW5jdGlv
bigpIHsKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4gewogICAgIHJldHVybiBuZXcgUHJvbWlzZSgo
cmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgIHZhciBjb3VudGVyID0gMDsKICAgICAgICAg
dmFyIHBjID0gbmV3IFJUQ1BlZXJDb25uZWN0aW9uKCk7CkBAIC00MywxMiArNDQsMTYgQEAgcHJv
bWlzZV90ZXN0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgIGNvdW50ZXIrKzsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKHBjLmxvY2FsRGVzY3JpcHRpb24uc2RwLmluZGV4T2YoImE6PWNhbmRpZGF0ZSIpLCAtMSk7
CiAgICAgICAgICAgICBpZiAoY291bnRlciA9PT0gMCkKICAgICAgICAgICAgICAgICByZXNvbHZl
KCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmVqZWN0KCJObyBjYW5kaWRh
dGUgc2hvdWxkIGJlIGZvdW5kIik7CiAgICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVy
KCkudGhlbigob2ZmZXIpID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwor
ICAgICAgICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgICAgICAgICBh
c3NlcnRfZXF1YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7CisgICAg
ICAgICAgICBwYy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgfSk7CiAgICAg
fSk7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVl
ciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKICAgICA8L3Nj
cmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>312613</attachid>
            <date>2017-06-11 11:42:09 -0700</date>
            <delta_ts>2017-06-13 01:13:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173120-20170611194205.patch</filename>
            <type>text/plain</type>
            <size>17781</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE3OTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDRkMGJkNWIwZGUxN2QzYWYzMWI0Nzcx
ODcyZTBmMDBiNGU1MDliMGMuLmQ5YjM5NzcyNGMwZDFhM2FmMDYxMDJlMzI0OTQzNDk4ZDA0ZDU2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTctMDYtMTEgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBTRFAgZnJvbSBJQ0UgY2FuZGlkYXRlcyBp
biBjYXNlIG9mIGxvY2FsIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxMjAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgc3BsaXQgaGVscGVyIHJvdXRp
bmUgd2l0aCBmdW5jdG9yIHBhcmFtZXRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6c3BsaXQpOgorICAgICAgICAqIHd0Zi90ZXh0
L1dURlN0cmluZy5oOgorICAgICAgICAoV1RGOjpTdHJpbmc6OmNvbnRhaW5zKToKKwogMjAxNy0w
Ni0wOCAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIE1lZGlhVGltZSBjbGFzcyBoYXMgcm91bmRpbmcgaXNzdWVzIGluIGRpZmZlcmVudCBw
bGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyOWJhMzY1Nzk2OTEyNmY4NTcyNWZjZThhNDVkM2M3NTU5
NmVjMjE4Li4wMTRkOTNjMTFlODkwZmEwM2JlYjlmNGU1MDIxNTRmMDJiNTUwOTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTctMDYtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgorCisgICAgICAgIEZpbHRlciBTRFAgZnJvbSBJQ0UgY2FuZGlkYXRlcyBpbiBj
YXNlIG9mIGxvY2FsIElDRSBjYW5kaWRhdGUgZmlsdGVyaW5nCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzMxMjAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgdGVzdC4KKwor
ICAgICAgICBBZGRpbmcgZmlsdGVyaW5nIG9mIGxvY2FsIGRlc2NyaXB0aW9uIGluIGdldHRlcnMg
YW5kIGNyZWF0ZU9mZmVyIHByb21pc2UuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhRW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbjo6dG9SVENTZXNzaW9uRGVzY3JpcHRpb24p
OgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3JlYXRlT2ZmZXJT
dWNjZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6ZmlsdGVySUNFQ2FuZGlkYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBlZXJDb25uZWN0aW9uQmFja2VuZDo6ZmlsdGVyU0RQKToKKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSVENTZXNzaW9uRGVzY3JpcHRpb246OnNldFNkcCk6CisgICAgICAgICogTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6Y3Vy
cmVudExvY2FsRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmxvY2FsRGVzY3JpcHRpb24pOgor
CiAyMDE3LTA2LTA4ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAg
IFlvdVR1YmUgYXVkaW8gc3R1dHRlcnMgd2hlbiBwYWdlIGNoYW5nZXMgdmlzaWJpbGl0eS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCA0ZjQ5ZWJjYTExNjE4YWIyYmNhN2EzNzllNTcx
NjBlMGNiYmMyYWUwLi4wNDJkNDMyNzY4OWVkMzQ5MjhkNzZkMjE5NWNkZjYwMjIxNmM4OTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC03NDMsMTkgKzc0MywyNyBAQCB2b2lkIFN0
cmluZzo6c3BsaXQoY29uc3QgU3RyaW5nJiBzZXBhcmF0b3IsIGJvb2wgYWxsb3dFbXB0eUVudHJp
ZXMsIFZlY3RvcjxTdHJpbgogICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnN0cmluZyhzdGFydFBv
cykpOwogfQogCi12b2lkIFN0cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93
RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAordm9pZCBTdHJpbmc6
OnNwbGl0KFVDaGFyIHNlcGFyYXRvciwgYm9vbCBhbGxvd0VtcHR5RW50cmllcywgU3BsaXRGdW5j
dG9yJiYgZnVuY3RvcikgY29uc3QKIHsKLSAgICByZXN1bHQuY2xlYXIoKTsKKyAgICBTdHJpbmdW
aWV3IHZpZXcoKnRoaXMpOwogCiAgICAgdW5zaWduZWQgc3RhcnRQb3MgPSAwOwogICAgIHNpemVf
dCBlbmRQb3M7CiAgICAgd2hpbGUgKChlbmRQb3MgPSBmaW5kKHNlcGFyYXRvciwgc3RhcnRQb3Mp
KSAhPSBub3RGb3VuZCkgewogICAgICAgICBpZiAoYWxsb3dFbXB0eUVudHJpZXMgfHwgc3RhcnRQ
b3MgIT0gZW5kUG9zKQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzdWJzdHJpbmcoc3RhcnRQ
b3MsIGVuZFBvcyAtIHN0YXJ0UG9zKSk7CisgICAgICAgICAgICBmdW5jdG9yKHZpZXcuc3Vic3Ry
aW5nKHN0YXJ0UG9zLCBlbmRQb3MgLSBzdGFydFBvcykpOwogICAgICAgICBzdGFydFBvcyA9IGVu
ZFBvcyArIDE7CiAgICAgfQogICAgIGlmIChhbGxvd0VtcHR5RW50cmllcyB8fCBzdGFydFBvcyAh
PSBsZW5ndGgoKSkKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdWJzdHJpbmcoc3RhcnRQb3MpKTsK
KyAgICAgICAgZnVuY3Rvcih2aWV3LnN1YnN0cmluZyhzdGFydFBvcykpOworfQorCit2b2lkIFN0
cmluZzo6c3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0
b3I8U3RyaW5nPiYgcmVzdWx0KSBjb25zdAoreworICAgIHJlc3VsdC5jbGVhcigpOworICAgIHNw
bGl0KHNlcGFyYXRvciwgYWxsb3dFbXB0eUVudHJpZXMsIFsmcmVzdWx0XShTdHJpbmdWaWV3IGl0
ZW0pIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChpdGVtLnRvU3RyaW5nKCkpOworICAgIH0pOwog
fQogCiBDU3RyaW5nIFN0cmluZzo6YXNjaWkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
aW5kZXggYWIyMWNjMjI1NDBkMTVlMTY0MWMxMDUyMzYzYWJlZGM0MTMxNzdjYy4uYmE4ZTYxMTgw
OTYyNWNhZDNhMjhjMTE3MWY3OTkyZDVmNWY5YmFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5o
CkBAIC0yNSw2ICsyNSw4IEBACiAvLyBUaGlzIGZpbGUgd291bGQgYmUgY2FsbGVkIFN0cmluZy5o
LCBidXQgdGhhdCBjb25mbGljdHMgd2l0aCA8c3RyaW5nLmg+CiAvLyBvbiBzeXN0ZW1zIHdpdGhv
dXQgY2FzZS1zZW5zaXRpdmUgZmlsZSBzeXN0ZW1zLgogCisjaW5jbHVkZSA8ZnVuY3Rpb25hbD4K
KwogI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgpAQCAtMjU3LDExICsyNTksMTEgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBj
YXNlU2Vuc2l0aXZlID8gcmV2ZXJzZUZpbmQoc3RyLCBzdGFydCkgOiByZXZlcnNlRmluZElnbm9y
aW5nQ2FzZShzdHIsIHN0YXJ0KTsgfQogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFZlY3Rv
cjxVQ2hhcj4gY2hhcmFjdGVyc1dpdGhOdWxsVGVybWluYXRpb24oKSBjb25zdDsKLSAgICAKKwog
ICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBVQ2hhcjMyIGNoYXJhY3RlclN0YXJ0aW5nQXQodW5z
aWduZWQpIGNvbnN0OyAvLyBEaXR0by4KLSAgICAKKwogICAgIGJvb2wgY29udGFpbnMoVUNoYXIg
YykgY29uc3QgeyByZXR1cm4gZmluZChjKSAhPSBub3RGb3VuZDsgfQotICAgIGJvb2wgY29udGFp
bnMoY29uc3QgTENoYXIqIHN0ciwgYm9vbCBjYXNlU2Vuc2l0aXZlID0gdHJ1ZSwgdW5zaWduZWQg
c3RhcnRPZmZzZXQgPSAwKSBjb25zdCAKKyAgICBib29sIGNvbnRhaW5zKGNvbnN0IExDaGFyKiBz
dHIsIGJvb2wgY2FzZVNlbnNpdGl2ZSA9IHRydWUsIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMCkg
Y29uc3QKICAgICAgICAgeyByZXR1cm4gZmluZChzdHIsIHN0YXJ0T2Zmc2V0LCBjYXNlU2Vuc2l0
aXZlKSAhPSBub3RGb3VuZDsgfQogICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBzdHIp
IGNvbnN0CiAgICAgICAgIHsgcmV0dXJuIGZpbmQoc3RyKSAhPSBub3RGb3VuZDsgfQpAQCAtMzY0
LDYgKzM2Niw5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHNwbGl0KHNlcGFyYXRvciwgZmFs
c2UsIHJlc3VsdCk7CiAgICAgfQorCisgICAgdXNpbmcgU3BsaXRGdW5jdG9yID0gc3RkOjpmdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZ1ZpZXcmKT47CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJ
IHZvaWQgc3BsaXQoVUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBTcGxp
dEZ1bmN0b3ImJikgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHZvaWQgc3BsaXQo
VUNoYXIgc2VwYXJhdG9yLCBib29sIGFsbG93RW1wdHlFbnRyaWVzLCBWZWN0b3I8U3RyaW5nPiYg
cmVzdWx0KSBjb25zdDsKICAgICB2b2lkIHNwbGl0KFVDaGFyIHNlcGFyYXRvciwgVmVjdG9yPFN0
cmluZz4mIHJlc3VsdCkgY29uc3QKICAgICB7CkBAIC00MjUsNyArNDMwLDcgQEAgcHVibGljOgog
CiAjaWZkZWYgX19PQkpDX18KICAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgU3RyaW5nKE5TU3Ry
aW5nICopOwotICAgIAorCiAgICAgLy8gVGhpcyBjb252ZXJzaW9uIGNvbnZlcnRzIHRoZSBudWxs
IHN0cmluZyB0byBhbiBlbXB0eSBOU1N0cmluZyByYXRoZXIgdGhhbiB0byBuaWwuCiAgICAgLy8g
R2l2ZW4gQ29jb2EgaWRpb21zLCB0aGlzIGlzIGEgbW9yZSB1c2VmdWwgZGVmYXVsdC4gQ2xpZW50
cyB0aGF0IG5lZWQgdG8gcHJlc2VydmUgdGhlCiAgICAgLy8gbnVsbCBzdHJpbmcgY2FuIGNoZWNr
IGlzTnVsbCBleHBsaWNpdGx5LgpAQCAtNDUzLDcgKzQ1OCw3IEBAIHB1YmxpYzoKICAgICAvLyBU
cmllcyB0byBjb252ZXJ0IHRoZSBwYXNzZWQgaW4gc3RyaW5nIHRvIFVURi04LCBidXQgd2lsbCBm
YWxsIGJhY2sgdG8gTGF0aW4tMSBpZiB0aGUgc3RyaW5nIGlzIG5vdCB2YWxpZCBVVEYtOC4KICAg
ICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBmcm9tVVRGOFdpdGhMYXRpbjFG
YWxsYmFjayhjb25zdCBMQ2hhciosIHNpemVfdCk7CiAgICAgc3RhdGljIFN0cmluZyBmcm9tVVRG
OFdpdGhMYXRpbjFGYWxsYmFjayhjb25zdCBjaGFyKiBzLCBzaXplX3QgbGVuZ3RoKSB7IHJldHVy
biBmcm9tVVRGOFdpdGhMYXRpbjFGYWxsYmFjayhyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4ocyksIGxlbmd0aCk7IH07Ci0gICAgCisKICAgICAvLyBEZXRlcm1pbmVzIHRoZSB3cml0aW5n
IGRpcmVjdGlvbiB1c2luZyB0aGUgVW5pY29kZSBCaWRpIEFsZ29yaXRobSBydWxlcyBQMiBhbmQg
UDMuCiAgICAgVUNoYXJEaXJlY3Rpb24gZGVmYXVsdFdyaXRpbmdEaXJlY3Rpb24oYm9vbCogaGFz
U3Ryb25nRGlyZWN0aW9uYWxpdHkgPSBudWxscHRyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFFbmRwb2ludFNlc3Npb25E
ZXNjcmlwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
RW5kcG9pbnRTZXNzaW9uRGVzY3JpcHRpb24uY3BwCmluZGV4IDI0Y2UzNzM5MDMyNDI2ODZhYzM4
NWQxMjBlNTNmNzZiZGEzMWZkYjUuLmNkZjM5YjI3NDg2ZjRkZjdmN2MwZjRiZTJmNmNlNTc0YWIw
YzgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFFbmRwb2ludFNlc3Npb25EZXNjcmlwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYUVuZHBvaW50U2Vzc2lvbkRlc2NyaXB0aW9uLmNwcApAQCAt
ODMsNyArODMsNyBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBNZWRpYUVuZHBvaW50
U2Vzc2lvbkRlc2NyaXB0aW9uOjp0b1JUQ1Nlc3Npb25EZXNjcgogICAgIC8vIHRoYXQgc2FtZSBp
bnN0YW5jZSBidXQgd2l0aCBhbiB1cGRhdGVkIHNkcC4gSXQgaXMgdXNlZCBmb3IgUlRDUGVlckNv
bm5lY3Rpb24ncyBkZXNjcmlwdGlvbgogICAgIC8vIGF0cmlidXRlcyAoZS5nLiBsb2NhbERlc2Ny
aXB0aW9uIGFuZCBwZW5kaW5nTG9jYWxEZXNjcmlwdGlvbikuCiAgICAgaWYgKG1fcnRjRGVzY3Jp
cHRpb24pIHsKLSAgICAgICAgbV9ydGNEZXNjcmlwdGlvbi0+c2V0U2RwKHNkcFN0cmluZyk7Cisg
ICAgICAgIG1fcnRjRGVzY3JpcHRpb24tPnNldFNkcChXVEZNb3ZlKHNkcFN0cmluZykpOwogICAg
ICAgICByZXR1cm4gbV9ydGNEZXNjcmlwdGlvbjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcAppbmRleCBiOTcwYWJjYjQ1NTU1Y2M5N2Q1MjQwYjkyNDA1MzUwMmE3YTc2NjI4Li4xNTRl
ZjJlMGQ3NGFmOTRhNmI1ZWE0YzhmOThjYTY0YzNiYThmZjBmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tl
bmQuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVh
dGVPZmZlclN1Y2NlZWRlZChTdHJpbmcmJiBzZHApCiAgICAgICAgIHJldHVybjsKIAogICAgIEFT
U0VSVChtX29mZmVyQW5zd2VyUHJvbWlzZSk7Ci0gICAgbV9vZmZlckFuc3dlclByb21pc2UtPnJl
c29sdmUoUlRDU2Vzc2lvbkRlc2NyaXB0aW9uOjpjcmVhdGUoUlRDU2RwVHlwZTo6T2ZmZXIsIFdU
Rk1vdmUoc2RwKSkpOworICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlLT5yZXNvbHZlKFJUQ1Nlc3Np
b25EZXNjcmlwdGlvbjo6Y3JlYXRlKFJUQ1NkcFR5cGU6Ok9mZmVyLCBmaWx0ZXJTRFAoV1RGTW92
ZShzZHApKSkpOwogICAgIG1fb2ZmZXJBbnN3ZXJQcm9taXNlID0gc3RkOjpudWxsb3B0OwogfQog
CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVBbnN3
ZXJTdWNjZWVkZWQoU3RyaW5nJiYgc2RwKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgUkVMRUFTRV9MT0coV2ViUlRDLCAiQ3JlYXRpbmcgYW5zd2VyIHN1Y2NlZWRlZDpcbiVz
XG4iLCBzZHAudXRmOCgpLmRhdGEoKSk7Ci0gICAgCisKICAgICBpZiAobV9wZWVyQ29ubmVjdGlv
bi5pc0Nsb3NlZCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwMSwzNCArMzAxLDQ5IEBAIHZv
aWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpkaXNhYmxlSUNFQ2FuZGlkYXRlRmlsdGVyaW5nKCkK
ICAgICBtX3BlbmRpbmdJQ0VDYW5kaWRhdGVzLmNsZWFyKCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
U3RyaW5nIGZpbHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCitzdGF0aWMgU3RyaW5nIGZp
bHRlcklDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHApCiB7CiAgICAgQVNTRVJUKCFzZHAuY29udGFp
bnMoIiBob3N0ICIpKTsKIAogICAgIGlmICghc2RwLmNvbnRhaW5zKCIgcmFkZHIgIikpCiAgICAg
ICAgIHJldHVybiBXVEZNb3ZlKHNkcCk7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBpdGVtczsKLSAg
ICBzZHAuc3BsaXQoJyAnLCBpdGVtcyk7Ci0KICAgICBib29sIHNraXBOZXh0SXRlbSA9IGZhbHNl
OwogICAgIGJvb2wgaXNGaXJzdCA9IHRydWU7CiAgICAgU3RyaW5nQnVpbGRlciBmaWx0ZXJlZFNE
UDsKLSAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgIHNkcC5zcGxpdCgnICcsIGZh
bHNlLCBbJl0oU3RyaW5nVmlldyBpdGVtKSB7CiAgICAgICAgIGlmIChza2lwTmV4dEl0ZW0pIHsK
ICAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IGZhbHNlOwotICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKGl0ZW0gPT0gInJh
ZGRyIiB8fCBpdGVtID09ICJycG9ydCIpIHsKICAgICAgICAgICAgIHNraXBOZXh0SXRlbSA9IHRy
dWU7Ci0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAoaXNGaXJzdCkKICAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKCIgIik7CiAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZChpdGVtKTsKLSAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIGZp
bHRlcmVkU0RQLnRvU3RyaW5nKCk7Cit9CisKK1N0cmluZyBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6
OmZpbHRlclNEUChTdHJpbmcmJiBzZHApIGNvbnN0Cit7CisgICAgaWYgKCFtX3Nob3VsZEZpbHRl
cklDRUNhbmRpZGF0ZXMpCisgICAgICAgIHJldHVybiBzZHA7CisKKyAgICBTdHJpbmdCdWlsZGVy
IGZpbHRlcmVkU0RQOworICAgIHNkcC5zcGxpdCgnXG4nLCBmYWxzZSwgWyZmaWx0ZXJlZFNEUF0o
U3RyaW5nVmlldyBsaW5lKSB7CisgICAgICAgIGlmICghbGluZS5zdGFydHNXaXRoKCJhPWNhbmRp
ZGF0ZSIpKQorICAgICAgICAgICAgZmlsdGVyZWRTRFAuYXBwZW5kKGxpbmUpOworICAgICAgICBl
bHNlIGlmIChsaW5lLmZpbmQoIiBob3N0ICIsIDExKSA9PSBub3RGb3VuZCkKKyAgICAgICAgICAg
IGZpbHRlcmVkU0RQLmFwcGVuZChmaWx0ZXJJQ0VDYW5kaWRhdGUobGluZS50b1N0cmluZygpKSk7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZmlsdGVyZWRTRFAu
YXBwZW5kKCdcbicpOworICAgIH0pOwogICAgIHJldHVybiBmaWx0ZXJlZFNEUC50b1N0cmluZygp
OwogfQogCkBAIC0zNDAsNyArMzU1LDcgQEAgdm9pZCBQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6Om5l
d0lDRUNhbmRpZGF0ZShTdHJpbmcmJiBzZHAsIFN0cmluZyYmIG1pZCkKICAgICAgICAgZmlyZUlD
RUNhbmRpZGF0ZUV2ZW50KFJUQ0ljZUNhbmRpZGF0ZTo6Y3JlYXRlKFdURk1vdmUoc2RwKSwgV1RG
TW92ZShtaWQpLCAwKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHNkcC5jb250
YWlucygiIGhvc3QgIikpIHsKKyAgICBpZiAoc2RwLmZpbmQoIiBob3N0ICIsIDApICE9IG5vdEZv
dW5kKSB7CiAgICAgICAgIG1fcGVuZGluZ0lDRUNhbmRpZGF0ZXMuYXBwZW5kKFBlbmRpbmdJQ0VD
YW5kaWRhdGUgeyBXVEZNb3ZlKHNkcCksIFdURk1vdmUobWlkKX0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMzc5LDkgKzM5NCw5IEBAIHZvaWQgUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpt
YXJrQXNOZWVkaW5nTmVnb3RpYXRpb24oKQogewogICAgIGlmIChtX25lZ290aWF0aW9uTmVlZGVk
KQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBtX25lZ290aWF0aW9uTmVlZGVkID0gdHJ1
ZTsKLSAgICAKKwogICAgIGlmIChtX3BlZXJDb25uZWN0aW9uLnNpZ25hbGluZ1N0YXRlKCkgPT0g
UlRDU2lnbmFsaW5nU3RhdGU6OlN0YWJsZSkKICAgICAgICAgbV9wZWVyQ29ubmVjdGlvbi5zY2hl
ZHVsZU5lZ290aWF0aW9uTmVlZGVkRXZlbnQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5oCmluZGV4
IDhmOTVhMWI3ODllZGZkYjhlNzcwMzM5ZTI1MjM0ZWNiZTc0MDQzNTcuLjg3YjM4Y2MwNGVkNGQ3
N2I5MGE5MTA5N2MzNDhlODhmZDdhNDI0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuaApAQCAtMTMz
LDYgKzEzMyw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGFkZEljZUNhbmRpZGF0ZVN1Y2NlZWRl
ZCgpOwogICAgIHZvaWQgYWRkSWNlQ2FuZGlkYXRlRmFpbGVkKEV4Y2VwdGlvbiYmKTsKIAorICAg
IFN0cmluZyBmaWx0ZXJTRFAoU3RyaW5nJiYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkb0NyZWF0ZU9mZmVyKFJUQ09mZmVyT3B0aW9ucyYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGRvQ3JlYXRlQW5zd2VyKFJUQ0Fuc3dlck9wdGlvbnMmJikgPSAwOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uLmgKaW5kZXggNDFkNDUzN2E5Njk1ZmQ1NjBhNzQ1ZjY2OTkxNmU0MGViOWY4ZGRlMC4u
MTA5YjJhOWFjZmExY2U1ZTVlNTg5YmY0ODViNWExNDQ3ZWJhNjgwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlw
dGlvbi5oCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBSVENTZHBUeXBlIHR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAogICAgIGNvbnN0IFN0cmluZyYgc2RwKCkgY29uc3Qg
eyByZXR1cm4gbV9zZHA7IH0KLSAgICB2b2lkIHNldFNkcChjb25zdCBTdHJpbmcmIHNkcCkgeyBt
X3NkcCA9IHNkcDsgfQorICAgIHZvaWQgc2V0U2RwKFN0cmluZyYmIHNkcCkgeyBtX3NkcCA9IFdU
Rk1vdmUoc2RwKTsgfQogCiBwcml2YXRlOgogICAgIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbihSVENT
ZHBUeXBlLCBTdHJpbmcmJiBzZHApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJU
Q1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKaW5kZXggMWQ4NDk5MzI1OGQ2MWY4ZjUzNjI1MDhm
OGM3YzdhM2Q2Mjc1N2VlZC4uYWVjZDk2NzA2ZjAxYWVkZDQyMjU3ZmNiZDk5YmQ4M2M0NmExM2Mz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJy
dGMvTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uLmgiCiAjaW5jbHVkZSAiUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlLmgiCiAjaW5jbHVk
ZSAiUmVhbHRpbWVJbmNvbWluZ1ZpZGVvU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3Nyw3ICsyNzgsMTAg
QEAgc3RkOjp1bmlxdWVfcHRyPFJUQ0RhdGFDaGFubmVsSGFuZGxlcj4gTGliV2ViUlRDUGVlckNv
bm5lY3Rpb25CYWNrZW5kOjpjcmVhdGVEYXQKIAogUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlv
bj4gTGliV2ViUlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjdXJyZW50TG9jYWxEZXNjcmlwdGlv
bigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZW5kcG9pbnQtPmN1cnJlbnRMb2NhbERlc2NyaXB0
aW9uKCk7CisgICAgYXV0byBkZXNjcmlwdGlvbiA9IG1fZW5kcG9pbnQtPmN1cnJlbnRMb2NhbERl
c2NyaXB0aW9uKCk7CisgICAgaWYgKGRlc2NyaXB0aW9uKQorICAgICAgICBkZXNjcmlwdGlvbi0+
c2V0U2RwKGZpbHRlclNEUChTdHJpbmcoZGVzY3JpcHRpb24tPnNkcCgpKSkpOworICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KIAogUmVmUHRyPFJUQ1Nlc3Npb25EZXNjcmlwdGlvbj4gTGliV2Vi
UlRDUGVlckNvbm5lY3Rpb25CYWNrZW5kOjpjdXJyZW50UmVtb3RlRGVzY3JpcHRpb24oKSBjb25z
dApAQCAtMjg3LDcgKzI5MSwxMCBAQCBSZWZQdHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJX
ZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OmN1cnJlbnRSZW1vdGVEZXNjcgogCiBSZWZQdHI8
UlRDU2Vzc2lvbkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBl
bmRpbmdMb2NhbERlc2NyaXB0aW9uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9lbmRwb2ludC0+
cGVuZGluZ0xvY2FsRGVzY3JpcHRpb24oKTsKKyAgICBhdXRvIGRlc2NyaXB0aW9uID0gbV9lbmRw
b2ludC0+cGVuZGluZ0xvY2FsRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoZGVzY3JpcHRpb24pCisg
ICAgICAgIGRlc2NyaXB0aW9uLT5zZXRTZHAoZmlsdGVyU0RQKFN0cmluZyhkZXNjcmlwdGlvbi0+
c2RwKCkpKSk7CisgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQogCiBSZWZQdHI8UlRDU2Vzc2lv
bkRlc2NyaXB0aW9uPiBMaWJXZWJSVENQZWVyQ29ubmVjdGlvbkJhY2tlbmQ6OnBlbmRpbmdSZW1v
dGVEZXNjcmlwdGlvbigpIGNvbnN0CkBAIC0yOTcsNyArMzA0LDEwIEBAIFJlZlB0cjxSVENTZXNz
aW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cGVuZGluZ1Jl
bW90ZURlc2NyCiAKIFJlZlB0cjxSVENTZXNzaW9uRGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJD
b25uZWN0aW9uQmFja2VuZDo6bG9jYWxEZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IG1fZW5kcG9pbnQtPmxvY2FsRGVzY3JpcHRpb24oKTsKKyAgICBhdXRvIGRlc2NyaXB0aW9uID0g
bV9lbmRwb2ludC0+bG9jYWxEZXNjcmlwdGlvbigpOworICAgIGlmIChkZXNjcmlwdGlvbikKKyAg
ICAgICAgZGVzY3JpcHRpb24tPnNldFNkcChmaWx0ZXJTRFAoU3RyaW5nKGRlc2NyaXB0aW9uLT5z
ZHAoKSkpKTsKKyAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9CiAKIFJlZlB0cjxSVENTZXNzaW9u
RGVzY3JpcHRpb24+IExpYldlYlJUQ1BlZXJDb25uZWN0aW9uQmFja2VuZDo6cmVtb3RlRGVzY3Jp
cHRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3NzRiMTNiYmUwMDhjY2RmNTg4NGJiYzZmYzYwMzAxMjAx
YTdkNmUuLjlkNjE1NTFhYTcxZWQ1MDYwMDBhYjU5M2JlOTNmODBjZDdiYWJlMjYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxNy0wNi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5j
b20+CisKKyAgICAgICAgRmlsdGVyIFNEUCBmcm9tIElDRSBjYW5kaWRhdGVzIGluIGNhc2Ugb2Yg
bG9jYWwgSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzEyMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRlci1pY2UtY2Fu
ZGlkYXRlLmh0bWw6IE1pbm9yIGNsZWFuLXVwIGFuZAorICAgICAgICBhZGRpbmcgYXNzZXJ0aW9u
cyB0byBlbnN1cmUgdGhhdCBJQ0UgY2FuZGlkYXRlcyBhcmUgYWxzbyBmaWx0ZXJlZCBvdXQuCisK
IDIwMTctMDYtMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAg
IGdldFVzZXJNZWRpYSBzaG91bGQgbm90IGJlIHByb21wdGVkIGFnYWluIGlmIHVzZXIgZGVuaWVk
IGFjY2VzcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvd2VicnRjL2RhdGFjaGFubmVsL2ZpbHRl
ci1pY2UtY2FuZGlkYXRlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmls
dGVyLWljZS1jYW5kaWRhdGUuaHRtbAppbmRleCBlMjU2YWNkZjI4ODM1NzdkMWM0NDg2OTRkZWY5
YzYzYjc1MWYwMGM3Li41ZWE5YjhlNTI5ZjA2ODI3MzI3YTViZDY3ZjM0OTlkNDI4YmEzM2JkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWljZS1jYW5k
aWRhdGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy93ZWJydGMvZGF0YWNoYW5uZWwvZmlsdGVyLWlj
ZS1jYW5kaWRhdGUuaHRtbApAQCAtOCwxMiArOCwxMiBAQAogICA8L2hlYWQ+CiAgIDxib2R5Pgog
ICAgIDxzY3JpcHQ+Ci1wcm9taXNlX3Rlc3QoZnVuY3Rpb24oKSB7Citwcm9taXNlX3Rlc3QoKHRl
c3QpID0+IHsKKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAgICAgICAgaW50ZXJuYWxzLnNl
dElDRUNhbmRpZGF0ZUZpbHRlcmluZyhmYWxzZSk7CisKICAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICB2YXIgY291bnRlciA9IDA7Ci0gICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2Fu
ZGlkYXRlRmlsdGVyaW5nKGZhbHNlKTsKLSAgICAgICAgfQogICAgICAgICB2YXIgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKICAgICAgICAgcGMuY3JlYXRlRGF0YUNoYW5uZWwoJ3NlbmRE
YXRhQ2hhbm5lbCcpOwogICAgICAgICBwYy5vbmljZWNhbmRpZGF0ZSA9IChldmVudCkgPT4gewpA
QCAtMjEsMTkgKzIxLDI0IEBAIHByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKICAgICAgICAgICAg
ICAgICBjb3VudGVyKys7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgaWYgKGNvdW50ZXIgIT09IDApCi0gICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0X2ZhbHNlKHBjLmxvY2FsRGVz
Y3JpcHRpb24uc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIikgPT09IC0xKTsKKyAgICAgICAgICAg
IGlmIChjb3VudGVyICE9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gUmVkb2luZyBhbiBvZmZl
ciBub3cgdGhhdCB3ZSBoYXZlIHNvbWUgY2FuZGlkYXRlcy4KKyAgICAgICAgICAgICAgICBwYy5j
cmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGFzc2Vy
dF9mYWxzZShvZmZlci5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUiKSA9PT0gLTEpOworICAgICAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgICAgICByZWplY3QoIkhvc3QgY2FuZGlkYXRlcyBzaG91bGQg
YmUgZm91bmQiKTsKLSAgICAgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQotICAgICAgICAg
ICAgICAgIGludGVybmFscy5zZXRJQ0VDYW5kaWRhdGVGaWx0ZXJpbmcodHJ1ZSk7Ci0gICAgICAg
ICAgICByZXNvbHZlKCk7CiAgICAgICAgIH07CiAgICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhl
bigob2ZmZXIpID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOwotICAgIH0p
CisgICAgfSk7CiB9LCAiR2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5u
ZWwgcGVlciBjb25uZWN0aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb2ZmIik7CiAK
LXByb21pc2VfdGVzdChmdW5jdGlvbigpIHsKK3Byb21pc2VfdGVzdCgodGVzdCkgPT4geworICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICBpbnRlcm5hbHMuc2V0SUNFQ2FuZGlkYXRl
RmlsdGVyaW5nKHRydWUpOworCiAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWpl
Y3QpID0+IHsKICAgICAgICAgdmFyIGNvdW50ZXIgPSAwOwogICAgICAgICB2YXIgcGMgPSBuZXcg
UlRDUGVlckNvbm5lY3Rpb24oKTsKQEAgLTQzLDEyICs0OCwxOSBAQCBwcm9taXNlX3Rlc3QoZnVu
Y3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgY291bnRlcisrOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjb3VudGVyID09PSAwKQotICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFz
c2VydF9lcXVhbHMocGMubG9jYWxEZXNjcmlwdGlvbi5zZHAuaW5kZXhPZigiYT1jYW5kaWRhdGUi
KSwgLTEpOworICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT09IDApIHsKKyAgICAgICAgICAgICAg
ICBwYy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGFzc2VydF9lcXVhbHMob2ZmZXIuc2RwLmluZGV4T2YoImE9Y2FuZGlkYXRlIiksIC0xKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmVqZWN0KCJObyBjYW5kaWRhdGUgc2hvdWxk
IGJlIGZvdW5kIik7CiAgICAgICAgIH07Ci0gICAgICAgIHBjLmNyZWF0ZU9mZmVyKCkudGhlbigo
b2ZmZXIpID0+IHsgcGMuc2V0TG9jYWxEZXNjcmlwdGlvbihvZmZlcik7IH0pOworICAgICAgICBw
Yy5jcmVhdGVPZmZlcigpLnRoZW4oKG9mZmVyKSA9PiB7CisgICAgICAgICAgICBhc3NlcnRfZXF1
YWxzKG9mZmVyLnNkcC5pbmRleE9mKCJhPWNhbmRpZGF0ZSIpLCAtMSk7CisgICAgICAgICAgICBw
Yy5zZXRMb2NhbERlc2NyaXB0aW9uKG9mZmVyKTsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9LCAi
R2F0aGVyaW5nIElDRSBjYW5kaWRhdGVzIGZyb20gYSBkYXRhIGNoYW5uZWwgcGVlciBjb25uZWN0
aW9uIHdpdGggSUNFIGNhbmRpZGF0ZSBmaWx0ZXJpbmcgb24iKTsKICAgICA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>