<?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>161085</bug_id>
          
          <creation_ts>2016-08-23 09:34:12 -0700</creation_ts>
          <short_desc>It should be easy to run ES6SampleBench from the jsc shell</short_desc>
          <delta_ts>2016-08-23 20:41:23 -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>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1222244</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 09:34:12 -0700</bug_when>
    <thetext>I was thinking it should be as easy as:
`jsc cli.js`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222398</commentid>
    <comment_count>1</comment_count>
      <attachid>286769</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 14:02:50 -0700</bug_when>
    <thetext>Created attachment 286769
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222401</commentid>
    <comment_count>2</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 14:06:44 -0700</bug_when>
    <thetext>The output from running this looks like:
...
...
...
...
...
...
...
Running... Air ( 10  to go)
firstIteration:     95.44 ms
averageWorstCase:   25.74 ms
steadyState:        2067.60 ms
...


Running... Basic ( 10  to go)
firstIteration:     28.15 ms
averageWorstCase:   22.01 ms
steadyState:        2808.30 ms
summary:            143.79 ms


Running... Air ( 9  to go)
firstIteration:     78.92 ms
averageWorstCase:   27.99 ms
steadyState:        2121.57 ms
summary:            143.79 ms


Running... Basic ( 9  to go)
firstIteration:     26.69 ms
averageWorstCase:   26.14 ms
steadyState:        2921.91 ms
summary:            144.69 ms


Running... Air ( 8  to go)
firstIteration:     70.13 ms +- 55.76 ms
averageWorstCase:   32.19 ms +- 18.88 ms
steadyState:        2209.58 ms +- 401.50 ms
summary:            144.69 ms


Running... Basic ( 8  to go)
firstIteration:     28.21 ms +- 7.48 ms
averageWorstCase:   24.31 ms +- 12.92 ms
steadyState:        2943.24 ms +- 296.59 ms
summary:            145.23 ms +- 3.22 ms


Running... Air ( 7  to go)
firstIteration:     66.45 ms +- 31.42 ms
averageWorstCase:   32.14 ms +- 9.87 ms
steadyState:        2203.60 ms +- 210.81 ms
summary:            145.23 ms +- 3.22 ms


Running... Basic ( 7  to go)
firstIteration:     28.85 ms +- 4.41 ms
averageWorstCase:   23.39 ms +- 7.37 ms
steadyState:        2934.66 ms +- 157.48 ms
summary:            143.61 ms +- 5.40 ms


Running... Air ( 6  to go)
firstIteration:     64.28 ms +- 22.11 ms
averageWorstCase:   32.93 ms +- 7.04 ms
steadyState:        2245.04 ms +- 183.44 ms
summary:            143.61 ms +- 5.40 ms


Running... Basic ( 6  to go)
firstIteration:     28.45 ms +- 3.19 ms
averageWorstCase:   23.67 ms +- 5.05 ms
steadyState:        2893.28 ms +- 156.87 ms
summary:            143.62 ms +- 3.66 ms


Running... Air ( 5  to go)
firstIteration:     61.94 ms +- 17.75 ms
averageWorstCase:   33.56 ms +- 5.56 ms
steadyState:        2235.83 ms +- 140.47 ms
summary:            143.62 ms +- 3.66 ms


Running... Basic ( 5  to go)
firstIteration:     28.03 ms +- 2.64 ms
averageWorstCase:   23.34 ms +- 3.91 ms
steadyState:        2899.33 ms +- 119.43 ms
summary:            142.54 ms +- 3.92 ms


Running... Air ( 4  to go)
firstIteration:     62.82 ms +- 14.46 ms
averageWorstCase:   34.01 ms +- 4.61 ms
steadyState:        2241.81 ms +- 114.12 ms
summary:            142.54 ms +- 3.92 ms


Running... Basic ( 4  to go)
firstIteration:     27.59 ms +- 2.38 ms
averageWorstCase:   22.55 ms +- 3.69 ms
steadyState:        2866.58 ms +- 125.28 ms
summary:            141.82 ms +- 3.61 ms


Running... Air ( 3  to go)
firstIteration:     60.50 ms +- 13.25 ms
averageWorstCase:   33.64 ms +- 3.95 ms
steadyState:        2221.61 ms +- 106.46 ms
summary:            141.82 ms +- 3.61 ms


Running... Basic ( 3  to go)
firstIteration:     27.37 ms +- 2.05 ms
averageWorstCase:   22.36 ms +- 3.11 ms
steadyState:        2844.22 ms +- 117.09 ms
summary:            139.96 ms +- 5.34 ms


Running... Air ( 2  to go)
firstIteration:     59.19 ms +- 11.83 ms
averageWorstCase:   33.12 ms +- 3.61 ms
steadyState:        2201.29 ms +- 103.20 ms
summary:            139.96 ms +- 5.34 ms


Running... Basic ( 2  to go)
firstIteration:     27.11 ms +- 1.87 ms
averageWorstCase:   21.93 ms +- 2.87 ms
steadyState:        2825.77 ms +- 109.69 ms
summary:            138.13 ms +- 6.24 ms


Running... Air ( 1  to go)
firstIteration:     57.71 ms +- 10.88 ms
averageWorstCase:   33.09 ms +- 3.16 ms
steadyState:        2189.60 ms +- 94.09 ms
summary:            138.13 ms +- 6.24 ms


Running... Basic ( 1  to go)
firstIteration:     26.93 ms +- 1.69 ms
averageWorstCase:   21.74 ms +- 2.55 ms
steadyState:        2824.91 ms +- 96.01 ms
summary:            137.10 ms +- 5.95 ms
Success! Benchmark is now finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222525</commentid>
    <comment_count>3</comment_count>
      <attachid>286769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-23 17:36:13 -0700</bug_when>
    <thetext>Comment on attachment 286769
patch

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

r=me. It is good for testing.

&gt; PerformanceTests/ES6SampleBench/driver.js:124
&gt; +                        ` &lt;a href=&quot;${this._triggerLink}&quot;&gt;Restart Benchmark&lt;/a&gt;`;

Is it OK not to show success/failure in browser mode?

&gt; PerformanceTests/ES6SampleBench/stats.js:112
&gt; +        }

Let&apos;s drop braces here.

&gt; PerformanceTests/ES6SampleBench/Air/util.js:172
&gt; +var currentTime;

Why is it changed?

&gt; PerformanceTests/ES6SampleBench/Basic/util.js:27
&gt; +var currentTime;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222531</commentid>
    <comment_count>4</comment_count>
      <attachid>286769</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 17:47:02 -0700</bug_when>
    <thetext>Comment on attachment 286769
patch

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

&gt;&gt; PerformanceTests/ES6SampleBench/driver.js:124
&gt;&gt; +                        ` &lt;a href=&quot;${this._triggerLink}&quot;&gt;Restart Benchmark&lt;/a&gt;`;
&gt; 
&gt; Is it OK not to show success/failure in browser mode?

Oops, that was unintentional. I&apos;ll add that back to the browser path as well.

&gt;&gt; PerformanceTests/ES6SampleBench/stats.js:112
&gt;&gt; +        }
&gt; 
&gt; Let&apos;s drop braces here.

will do

&gt;&gt; PerformanceTests/ES6SampleBench/Air/util.js:172
&gt;&gt; +var currentTime;
&gt; 
&gt; Why is it changed?

Oops^2. This was from a previous iteration of the patch where both benchmarks were executed in the same scope, so their
definitions were throwing an early error from duplicate declarations. I think I can revert them back to `let`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222537</commentid>
    <comment_count>5</comment_count>
      <attachid>286812</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-23 18:10:48 -0700</bug_when>
    <thetext>Created attachment 286812
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222581</commentid>
    <comment_count>6</comment_count>
      <attachid>286812</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 20:41:17 -0700</bug_when>
    <thetext>Comment on attachment 286812
patch for landing

Clearing flags on attachment: 286812

Committed r204882: &lt;http://trac.webkit.org/changeset/204882&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1222582</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-23 20:41:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286769</attachid>
            <date>2016-08-23 14:02:50 -0700</date>
            <delta_ts>2016-08-23 18:10:48 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>22298</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQ4NTcpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBACisyMDE2LTA4LTIzICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEl0IHNob3VsZCBiZSBl
YXN5IHRvIHJ1biBFUzZTYW1wbGVCZW5jaCBmcm9tIHRoZSBqc2Mgc2hlbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTA4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgRVM2
IHNhbXBsZSBiZW5jaCBydW5uYWJsZSB0aHJvdWdoIHRoZSBganNjYCBzaGVsbC4KKyAgICAgICAg
VG8gZG8gdGhhdCwgeW91IG5lZWQgdG8gYmUgaW4gdGhlIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2Ft
cGxlQmVuY2gKKyAgICAgICAgZGlyZWN0b3J5IGFuZCBydW4gYGpzYyBjbGkuanNgLiBUbyBtYWtl
IHRoaXMgd29yaywgdGhlIGJlbmNobWFyaworICAgICAgICBpcyBub3cgYXdhcmUgb2YgYmVpbmcg
cnVuIGluIHR3byBtb2RlczogdmlhIHRoZSBicm93c2VyLCBhbmQgdmlhCisgICAgICAgIHRoZSBz
aGVsbC4gRWFjaCBlbnRyeSBwb2ludCB3aWxsIHNldCBhIHZhcmlhYmxlIGBpc0luQnJvd3NlcmAs
CisgICAgICAgIGFuZCB0aGUgYmVuY2htYXJrIHdpbGwgZG8gZGlmZmVyZW50IHRoaW5ncyBiYXNl
ZCBvbiBpZiB0aGF0CisgICAgICAgIHZhcmlhYmxlIGlzIHRydWUgb3IgZmFsc2UuCisKKyAgICAg
ICAgKiBFUzZTYW1wbGVCZW5jaC9BaXIvYmVuY2htYXJrLmpzOgorICAgICAgICAqIEVTNlNhbXBs
ZUJlbmNoL0Fpci9zdHJlc3MtdGVzdC5qczoKKyAgICAgICAgKiBFUzZTYW1wbGVCZW5jaC9BaXIv
dXRpbC5qczoKKyAgICAgICAgKiBFUzZTYW1wbGVCZW5jaC9CYXNpYy9iZW5jaG1hcmsuanM6Cisg
ICAgICAgIChydW5CZW5jaG1hcmspOgorICAgICAgICAqIEVTNlNhbXBsZUJlbmNoL0Jhc2ljL3N0
cmVzcy10ZXN0LmpzOgorICAgICAgICAqIEVTNlNhbXBsZUJlbmNoL0Jhc2ljL3V0aWwuanM6Cisg
ICAgICAgICogRVM2U2FtcGxlQmVuY2gvYWlyX2JlbmNobWFyay5qczoKKyAgICAgICAgKiBFUzZT
YW1wbGVCZW5jaC9iYXNpY19iZW5jaG1hcmsuanM6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gv
Y2xpLmpzOiBBZGRlZC4KKyAgICAgICAgKHJldHVybi5kb1J1bik6CisgICAgICAgIChtYWtlQmVu
Y2htYXJrUnVubmVyKToKKyAgICAgICAgKiBFUzZTYW1wbGVCZW5jaC9kcml2ZXIuanM6CisgICAg
ICAgIChEcml2ZXIpOgorICAgICAgICAoRHJpdmVyLnByb3RvdHlwZS5fcmVjb21wdXRlU3VtbWFy
eSk6CisgICAgICAgIChEcml2ZXIucHJvdG90eXBlLl9pdGVyYXRlLndpbmRvdy5zZXRUaW1lb3V0
KToKKyAgICAgICAgKERyaXZlci5wcm90b3R5cGUuX2l0ZXJhdGUpOgorICAgICAgICAoRHJpdmVy
LnByb3RvdHlwZS5fdXBkYXRlSXRlcmF0aW9ucyk6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gv
Z2x1ZS5qczoKKyAgICAgICAgKHJlcG9ydFJlc3VsdCk6CisgICAgICAgICogRVM2U2FtcGxlQmVu
Y2gvaW5kZXguaHRtbDoKKyAgICAgICAgKiBFUzZTYW1wbGVCZW5jaC9yZXN1bHRzLmpzOgorICAg
ICAgICAoUmVzdWx0cyk6CisgICAgICAgIChSZXN1bHRzLnByb3RvdHlwZS5yZXBvcnRSdW5uaW5n
KToKKyAgICAgICAgKFJlc3VsdHMucHJvdG90eXBlLnJlcG9ydERvbmUpOgorICAgICAgICAoUmVz
dWx0cy5wcm90b3R5cGUucmVwb3J0RXJyb3IpOgorICAgICAgICAqIEVTNlNhbXBsZUJlbmNoL3N0
YXRzLmpzOgorICAgICAgICAoU3RhdHMpOgorICAgICAgICAoU3RhdHMucHJvdG90eXBlLnRvU3Ry
aW5nKToKKyAgICAgICAgKFN0YXRzLnByb3RvdHlwZS5fdXBkYXRlKToKKwogMjAxNi0wOC0wMSAg
U2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFk
ZCBhbiBvcHRpb24gdG8gcnVuIHRoZSBNb3Rpb25NYXJrIHRlc3RzIHdpdGggY2xhc3NpYyB0aWxl
IHNpemUgKDUxMng1MTIpCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2Fp
cl9iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVC
ZW5jaC9haXJfYmVuY2htYXJrLmpzCShyZXZpc2lvbiAyMDQ3MzEpCisrKyBQZXJmb3JtYW5jZVRl
c3RzL0VTNlNhbXBsZUJlbmNoL2Fpcl9iZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDcgKzQ4LDcgQEAgY29uc3QgQWlyQmVuY2htYXJrQ29kZSA9IFN0cmluZy5yYXdgCiA8c2NyaXB0
IHNyYz0iQWlyL2JlbmNobWFyay5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0PgogdmFyIHJlc3VsdHMg
PSBbXTsKLXZhciBiZW5jaG1hcmsgPSBuZXcgQmVuY2htYXJrKCk7Cit2YXIgYmVuY2htYXJrID0g
bmV3IEFpckJlbmNobWFyaygpOwogdmFyIG51bUl0ZXJhdGlvbnMgPSAyMDA7CiBmb3IgKHZhciBp
ID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgewogICAgIHZhciBiZWZvcmUgPSBjdXJyZW50
VGltZSgpOwpAQCAtNTksMTMgKzU5LDQ3IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0
aW9uczsgKytpKSAKIHJlcG9ydFJlc3VsdChyZXN1bHRzKTsKIDwvc2NyaXB0PmA7CiAKLWNvbnN0
IEFpckJlbmNobWFyayA9IHsKK2xldCBydW5BaXJCZW5jaG1hcmsgPSBudWxsOworaWYgKCFpc0lu
QnJvd3NlcikgeworICAgIGxldCBzb3VyY2VzID0gWworICAgICAgICAiQWlyL3N5bWJvbHMuanMi
CisgICAgICAgICwgIkFpci90bXBfYmFzZS5qcyIKKyAgICAgICAgLCAiQWlyL2FyZy5qcyIKKyAg
ICAgICAgLCAiQWlyL2Jhc2ljX2Jsb2NrLmpzIgorICAgICAgICAsICJBaXIvY29kZS5qcyIKKyAg
ICAgICAgLCAiQWlyL2ZyZXF1ZW50ZWRfYmxvY2suanMiCisgICAgICAgICwgIkFpci9pbnN0Lmpz
IgorICAgICAgICAsICJBaXIvb3Bjb2RlLmpzIgorICAgICAgICAsICJBaXIvcmVnLmpzIgorICAg
ICAgICAsICJBaXIvc3RhY2tfc2xvdC5qcyIKKyAgICAgICAgLCAiQWlyL3RtcC5qcyIKKyAgICAg
ICAgLCAiQWlyL3V0aWwuanMiCisgICAgICAgICwgIkFpci9jdXN0b20uanMiCisgICAgICAgICwg
IkFpci9saXZlbmVzcy5qcyIKKyAgICAgICAgLCAiQWlyL2luc2VydGlvbl9zZXQuanMiCisgICAg
ICAgICwgIkFpci9hbGxvY2F0ZV9zdGFjay5qcyIKKyAgICAgICAgLCAiQWlyL3BheWxvYWQtZ2Jl
bXUtZXhlY3V0ZUl0ZXJhdGlvbi5qcyIKKyAgICAgICAgLCAiQWlyL3BheWxvYWQtaW1hZ2luZy1n
YXVzc2lhbi1ibHVyLWdhdXNzaWFuQmx1ci5qcyIKKyAgICAgICAgLCAiQWlyL3BheWxvYWQtYWly
anMtQUNMajhDLmpzIgorICAgICAgICAsICJBaXIvcGF5bG9hZC10eXBlc2NyaXB0LXNjYW5JZGVu
dGlmaWVyLmpzIgorICAgICAgICAsICJBaXIvYmVuY2htYXJrLmpzIgorICAgIF07CisKKyAgICBy
dW5BaXJCZW5jaG1hcmsgPSBtYWtlQmVuY2htYXJrUnVubmVyKHNvdXJjZXMsICJBaXJCZW5jaG1h
cmsiKTsKK30KKworY29uc3QgQWlyQmVuY2htYXJrUnVubmVyID0gewogICAgIGNvZGU6IEFpckJl
bmNobWFya0NvZGUsCi0gICAgY2VsbHM6IHsKKyAgICBydW46IHJ1bkFpckJlbmNobWFyaywKKyAg
ICBjZWxsczogeyB9LAorICAgIG5hbWU6ICJBaXIiCit9OworCitpZiAoaXNJbkJyb3dzZXIpIHsK
KyAgICBBaXJCZW5jaG1hcmtSdW5uZXIuY2VsbHMgPSB7CiAgICAgICAgIGZpcnN0SXRlcmF0aW9u
OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQWlyRmlyc3RJdGVyYXRpb24iKSwKICAgICAgICAg
YXZlcmFnZVdvcnN0Q2FzZTogZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkFpckF2ZXJhZ2VXb3Jz
dENhc2UiKSwKICAgICAgICAgc3RlYWR5U3RhdGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJB
aXJTdGVhZHlTdGF0ZSIpLAogICAgICAgICBtZXNzYWdlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiQWlyTWVzc2FnZSIpCiAgICAgfQotfTsKLQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9F
UzZTYW1wbGVCZW5jaC9iYXNpY19iZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFu
Y2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9iYXNpY19iZW5jaG1hcmsuanMJKHJldmlzaW9uIDIwNDcz
MSkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvYmFzaWNfYmVuY2htYXJrLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IEJhc2ljQmVuY2htYXJrQ29k
ZSA9IFN0cmluZy5yYXdgCiA8c2NyaXB0IHNyYz0iQmFzaWMvYmVuY2htYXJrLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQ+CiB2YXIgcmVzdWx0cyA9IFtdOwotdmFyIGJlbmNobWFyayA9IG5ldyBCZW5j
aG1hcmsoKTsKK3ZhciBiZW5jaG1hcmsgPSBuZXcgQmFzaWNCZW5jaG1hcmsoKTsKIHZhciBudW1J
dGVyYXRpb25zID0gMjAwOwogZm9yICh2YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kp
IHsKICAgICB2YXIgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKQEAgLTQ4LDEyICs0OCwzNyBAQCBm
b3IgKHZhciBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7ICsraSkgCiByZXBvcnRSZXN1bHQocmVz
dWx0cyk7CiA8L3NjcmlwdD5gOwogCi1jb25zdCBCYXNpY0JlbmNobWFyayA9IHsKKworbGV0IHJ1
bkJhc2ljQmVuY2htYXJrID0gbnVsbDsKK2lmICghaXNJbkJyb3dzZXIpIHsKKyAgICBsZXQgc291
cmNlcyA9IFsKKyAgICAgICAgIkJhc2ljL2FzdC5qcyIKKyAgICAgICAgLCAiQmFzaWMvYmFzaWMu
anMiCisgICAgICAgICwgIkJhc2ljL2Nhc2VsZXNzX21hcC5qcyIKKyAgICAgICAgLCAiQmFzaWMv
bGV4ZXIuanMiCisgICAgICAgICwgIkJhc2ljL251bWJlci5qcyIKKyAgICAgICAgLCAiQmFzaWMv
cGFyc2VyLmpzIgorICAgICAgICAsICJCYXNpYy9yYW5kb20uanMiCisgICAgICAgICwgIkJhc2lj
L3N0YXRlLmpzIgorICAgICAgICAsICJCYXNpYy91dGlsLmpzIgorICAgICAgICAsICJCYXNpYy9i
ZW5jaG1hcmsuanMiCisgICAgXTsKKworICAgIHJ1bkJhc2ljQmVuY2htYXJrID0gbWFrZUJlbmNo
bWFya1J1bm5lcihzb3VyY2VzLCAiQmFzaWNCZW5jaG1hcmsiKTsKK30KKworY29uc3QgQmFzaWNC
ZW5jaG1hcmtSdW5uZXIgPSB7CisgICAgbmFtZTogIkJhc2ljIiwKICAgICBjb2RlOiBCYXNpY0Jl
bmNobWFya0NvZGUsCi0gICAgY2VsbHM6IHsKKyAgICBydW46IHJ1bkJhc2ljQmVuY2htYXJrLAor
ICAgIGNlbGxzOiB7fQorfTsKKworaWYgKGlzSW5Ccm93c2VyKSB7CisgICAgQmFzaWNCZW5jaG1h
cmtSdW5uZXIuY2VsbHMgPSB7CiAgICAgICAgIGZpcnN0SXRlcmF0aW9uOiBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiQmFzaWNGaXJzdEl0ZXJhdGlvbiIpLAogICAgICAgICBhdmVyYWdlV29yc3RD
YXNlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNBdmVyYWdlV29yc3RDYXNlIiksCiAg
ICAgICAgIHN0ZWFkeVN0YXRlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNTdGVhZHlT
dGF0ZSIpLAogICAgICAgICBtZXNzYWdlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNN
ZXNzYWdlIikKLSAgICB9Ci19OworICAgIH07Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0VT
NlNhbXBsZUJlbmNoL2NsaS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNh
bXBsZUJlbmNoL2NsaS5qcwkocmV2aXNpb24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2Ft
cGxlQmVuY2gvY2xpLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKK2NvbnN0IGlz
SW5Ccm93c2VyID0gZmFsc2U7CisKK2Z1bmN0aW9uIG1ha2VCZW5jaG1hcmtSdW5uZXIoc291cmNl
cywgYmVuY2htYXJrQ29uc3RydWN0b3IpIHsKKyAgICBsZXQgc291cmNlID0gIid1c2Ugc3RyaWN0
JzsiCisgICAgZm9yIChsZXQgZmlsZSBvZiBzb3VyY2VzKSB7CisgICAgICAgIHNvdXJjZSArPSBy
ZWFkRmlsZShmaWxlKTsKKyAgICB9CisgICAgc291cmNlICs9IGAKKyAgICAgICAgdGhpcy5yZXN1
bHRzID0gW107CisgICAgICAgIHZhciBiZW5jaG1hcmsgPSBuZXcgJHtiZW5jaG1hcmtDb25zdHJ1
Y3Rvcn0oKTsKKyAgICAgICAgdmFyIG51bUl0ZXJhdGlvbnMgPSAyMDA7CisgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSB7CisgICAgICAgICAgICB2YXIgYmVm
b3JlID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgICAgIGJlbmNobWFyay5ydW5JdGVyYXRpb24o
KTsKKyAgICAgICAgICAgIHZhciBhZnRlciA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICBy
ZXN1bHRzLnB1c2goYWZ0ZXIgLSBiZWZvcmUpOworICAgICAgICB9CisgICAgYDsKKyAgICByZXR1
cm4gZnVuY3Rpb24gZG9SdW4oKSB7CisgICAgICAgIGxldCBnbG9iYWxPYmplY3RPZlNjcmlwdCA9
IHJ1blN0cmluZyhzb3VyY2UpOworICAgICAgICBsZXQgcmVzdWx0cyA9IGdsb2JhbE9iamVjdE9m
U2NyaXB0LnJlc3VsdHM7CisgICAgICAgIHJlcG9ydFJlc3VsdChyZXN1bHRzKTsKKyAgICB9Cit9
CisKK2xvYWQoImRyaXZlci5qcyIpOworbG9hZCgicmVzdWx0cy5qcyIpOworbG9hZCgic3RhdHMu
anMiKTsKK2xvYWQoImFpcl9iZW5jaG1hcmsuanMiKTsKK2xvYWQoImJhc2ljX2JlbmNobWFyay5q
cyIpOworbG9hZCgiZ2x1ZS5qcyIpOworCitkcml2ZXIuc3RhcnQoMTApOwpJbmRleDogUGVyZm9y
bWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9kcml2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9y
bWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9kcml2ZXIuanMJKHJldmlzaW9uIDIwNDczMSkKKysr
IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvZHJpdmVyLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSwxMCArMzEsMTEgQEAgY2xhc3MgRHJpdmVyIHsKICAgICAgICAgdGhpcy5fdHJpZ2dl
ckNlbGwgPSB0cmlnZ2VyQ2VsbDsKICAgICAgICAgdGhpcy5fdHJpZ2dlckxpbmsgPSB0cmlnZ2Vy
TGluazsKICAgICAgICAgdGhpcy5fbWFnaWNDZWxsID0gbWFnaWNDZWxsOwotICAgICAgICB0aGlz
Ll9zdW1tYXJ5ID0gbmV3IFN0YXRzKHN1bW1hcnlDZWxsKTsKKyAgICAgICAgdGhpcy5fc3VtbWFy
eSA9IG5ldyBTdGF0cyhzdW1tYXJ5Q2VsbCwgInN1bW1hcnkiKTsKICAgICAgICAgdGhpcy5fa2V5
ID0ga2V5OwogICAgICAgICB0aGlzLl9oYWRFcnJvcnMgPSBmYWxzZTsKLSAgICAgICAgd2luZG93
W2tleV0gPSB0aGlzOworICAgICAgICBpZiAoaXNJbkJyb3dzZXIpCisgICAgICAgICAgICB3aW5k
b3dba2V5XSA9IHRoaXM7CiAgICAgfQogICAgIAogICAgIGFkZEJlbmNobWFyayhiZW5jaG1hcmsp
CkBAIC05Niw3ICs5Nyw3IEBAIGNsYXNzIERyaXZlciB7CiAgICAgICAgICAgICBmb3IgKGxldCBz
dWJSZXN1bHQgb2YgUmVzdWx0cy5zdWJSZXN1bHRzKQogICAgICAgICAgICAgICAgIHN0YXRzZXMu
cHVzaChyZXN1bHRzW3N1YlJlc3VsdF0pOwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAg
IGxldCBudW1JdGVyYXRpb25zID0gTWF0aC5taW4oLi4uc3RhdHNlcy5tYXAoc3RhdHMgPT4gc3Rh
dHMubnVtSXRlcmF0aW9ucykpOwogICAgICAgICBsZXQgZGF0YSA9IG5ldyBBcnJheShudW1JdGVy
YXRpb25zKTsKICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKQpA
QCAtMTE3LDkgKzExOCwxMiBAQCBjbGFzcyBEcml2ZXIgewogICAgICAgICB0aGlzLl9iZW5jaG1h
cmsgPSB0aGlzLl9pdGVyYXRvciA/IHRoaXMuX2l0ZXJhdG9yLm5leHQoKS52YWx1ZSA6IG51bGw7
CiAgICAgICAgIGlmICghdGhpcy5fYmVuY2htYXJrKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMu
X251bUl0ZXJhdGlvbnMpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl90cmlnZ2VyQ2VsbC5pbm5l
ckhUTUwgPQotICAgICAgICAgICAgICAgICAgICAodGhpcy5faGFkRXJyb3JzID8gIkZhaWx1cmVz
IGVuY291bnRlcmVkISIgOiAiU3VjY2VzcyEiKSArCi0gICAgICAgICAgICAgICAgICAgIGAgPGEg
aHJlZj0iJHt0aGlzLl90cmlnZ2VyTGlua30iPlJlc3RhcnQgQmVuY2htYXJrPC9hPmA7CisgICAg
ICAgICAgICAgICAgaWYgKGlzSW5Ccm93c2VyKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMu
X3RyaWdnZXJDZWxsLmlubmVySFRNTCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg
ICAgICAgICAgICAgICAgICAgICAgYCA8YSBocmVmPSIke3RoaXMuX3RyaWdnZXJMaW5rfSI+UmVz
dGFydCBCZW5jaG1hcms8L2E+YDsKKyAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgcHJpbnQodGhpcy5faGFkRXJyb3JzID8gIkZhaWx1cmVzIGVuY291bnRlcmVkISIg
OiAiU3VjY2VzcyEgQmVuY2htYXJrIGlzIG5vdyBmaW5pc2hlZC4iKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB0aGlzLl9udW1JdGVyYXRpb25z
LS07CkBAIC0xMzAsMzEgKzEzNCw0OCBAQCBjbGFzcyBEcml2ZXIgewogICAgICAgICAKICAgICAg
ICAgdGhpcy5fYmVuY2htYXJrcy5nZXQodGhpcy5fYmVuY2htYXJrKS5yZXBvcnRSdW5uaW5nKCk7
CiAgICAgICAgIAotICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAg
ICBpZiAoIXRoaXMuX2lzUnVubmluZykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAKLSAgICAgICAgICAgIHRoaXMuX21hZ2ljQ2VsbC5jb250ZW50RG9jdW1lbnQuYm9keS50
ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAgdGhpcy5fbWFnaWNDZWxsLmNvbnRlbnREb2N1
bWVudC5ib2R5LmlubmVySFRNTCA9ICI8aWZyYW1lIGlkPVwibWFnaWNGcmFtZVwiIGZyYW1lYm9y
ZGVyPVwiMFwiPiI7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGxldCBtYWdpY0ZyYW1lID0g
dGhpcy5fbWFnaWNDZWxsLmNvbnRlbnREb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFnaWNGcmFt
ZSIpOwotICAgICAgICAgICAgbWFnaWNGcmFtZS5jb250ZW50RG9jdW1lbnQub3BlbigpOwotICAg
ICAgICAgICAgbWFnaWNGcmFtZS5jb250ZW50RG9jdW1lbnQud3JpdGUoCi0gICAgICAgICAgICAg
ICAgYDwhRE9DVFlQRSBodG1sPjxoZWFkPjx0aXRsZT5iZW5jaG1hcmsgcGF5bG9hZDwvdGl0bGU+
PC9oZWFkPjxib2R5PjxzY3JpcHQ+YCArCi0gICAgICAgICAgICAgICAgYHdpbmRvdy5vbmVycm9y
ID0gdG9wLiR7dGhpcy5fa2V5fS5yZXBvcnRFcnJvcjtcbmAgKwotICAgICAgICAgICAgICAgIGBm
dW5jdGlvbiByZXBvcnRSZXN1bHQoKVxuYCArCi0gICAgICAgICAgICAgICAgYHtcbmAgKwotICAg
ICAgICAgICAgICAgIGAgICAgdmFyIGRyaXZlciA9IHRvcC4ke3RoaXMuX2tleX07XG5gICsKLSAg
ICAgICAgICAgICAgICBgICAgIGRyaXZlci5yZXBvcnRSZXN1bHQuYXBwbHkoZHJpdmVyLCBhcmd1
bWVudHMpO1xuYCArCi0gICAgICAgICAgICAgICAgYH1cbmAgKwotICAgICAgICAgICAgICAgIGA8
L3NjcmlwdD5cbmAgKwotICAgICAgICAgICAgICAgIGAke3RoaXMuX2JlbmNobWFyay5jb2RlfTwv
Ym9keT48L2h0bWw+YCk7Ci0gICAgICAgIH0sIDEwMCk7CisgICAgICAgIGxldCBiZW5jaG1hcmsg
PSB0aGlzLl9iZW5jaG1hcms7CisgICAgICAgIGlmIChpc0luQnJvd3NlcikgeworICAgICAgICAg
ICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4geworICAgICAgICAgICAgICAgIGlmICghdGhpcy5f
aXNSdW5uaW5nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgdGhpcy5fbWFnaWNDZWxsLmNvbnRlbnREb2N1bWVudC5ib2R5LnRl
eHRDb250ZW50ID0gIiI7CisgICAgICAgICAgICAgICAgdGhpcy5fbWFnaWNDZWxsLmNvbnRlbnRE
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICI8aWZyYW1lIGlkPVwibWFnaWNGcmFtZVwiIGZyYW1l
Ym9yZGVyPVwiMFwiPiI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbGV0IG1h
Z2ljRnJhbWUgPSB0aGlzLl9tYWdpY0NlbGwuY29udGVudERvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJtYWdpY0ZyYW1lIik7CisgICAgICAgICAgICAgICAgbWFnaWNGcmFtZS5jb250ZW50RG9jdW1l
bnQub3BlbigpOworICAgICAgICAgICAgICAgIG1hZ2ljRnJhbWUuY29udGVudERvY3VtZW50Lndy
aXRlKAorICAgICAgICAgICAgICAgICAgICBgPCFET0NUWVBFIGh0bWw+PGhlYWQ+PHRpdGxlPmJl
bmNobWFyayBwYXlsb2FkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHNjcmlwdD5gICsKKyAgICAgICAg
ICAgICAgICAgICAgYHdpbmRvdy5vbmVycm9yID0gdG9wLiR7dGhpcy5fa2V5fS5yZXBvcnRFcnJv
cjtcbmAgKworICAgICAgICAgICAgICAgICAgICBgZnVuY3Rpb24gcmVwb3J0UmVzdWx0KClcbmAg
KworICAgICAgICAgICAgICAgICAgICBge1xuYCArCisgICAgICAgICAgICAgICAgICAgIGAgICAg
dmFyIGRyaXZlciA9IHRvcC4ke3RoaXMuX2tleX07XG5gICsKKyAgICAgICAgICAgICAgICAgICAg
YCAgICBkcml2ZXIucmVwb3J0UmVzdWx0LmFwcGx5KGRyaXZlciwgYXJndW1lbnRzKTtcbmAgKwor
ICAgICAgICAgICAgICAgICAgICBgfVxuYCArCisgICAgICAgICAgICAgICAgICAgIGA8L3Njcmlw
dD5cbmAgKworICAgICAgICAgICAgICAgICAgICBgJHt0aGlzLl9iZW5jaG1hcmsuY29kZX08L2Jv
ZHk+PC9odG1sPmApOworICAgICAgICAgICAgfSwgMTAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgyMCkudGhlbigoKSA9PiB7CisgICAgICAgICAgICAg
ICAgaWYgKCF0aGlzLl9pc1J1bm5pbmcpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAg
ICBwcmludChgUnVubmluZy4uLiAke3RoaXMuX2JlbmNobWFyay5uYW1lfSAoICR7dGhpcy5fbnVt
SXRlcmF0aW9ucyArIDF9ICB0byBnbylgKTsKKyAgICAgICAgICAgICAgICAgICAgYmVuY2htYXJr
LnJ1bigpOworICAgICAgICAgICAgICAgICAgICBwcmludCgiXG4iKTsKKyAgICAgICAgICAgICAg
ICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZSk7CisgICAgICAgICAg
ICAgICAgICAgIHByaW50KGUuc3RhY2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0pOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIF91cGRhdGVJdGVyYXRpb25zKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMuX3RyaWdnZXJDZWxsLmlubmVySFRNTCA9ICJSdW5uaW5nLi4uICgi
ICsgKHRoaXMuX251bUl0ZXJhdGlvbnMgKyAxKSArICIgdG8gZ28pIjsKKyAgICAgICAgaWYgKGlz
SW5Ccm93c2VyKQorICAgICAgICAgICAgdGhpcy5fdHJpZ2dlckNlbGwuaW5uZXJIVE1MID0gIlJ1
bm5pbmcuLi4gKCIgKyAodGhpcy5fbnVtSXRlcmF0aW9ucyArIDEpICsgIiB0byBnbykiOwogICAg
IH0KIH0KLQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9nbHVlLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvZ2x1ZS5qcwkocmV2
aXNpb24gMjA0NzMxKQorKysgUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9nbHVlLmpz
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMSArMjUsMTUgQEAKICJ1c2Ugc3RyaWN0IjsKIAogY29u
c3QgZHJpdmVyID0gbmV3IERyaXZlcigKLSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJp
Z2dlciIpLAorICAgIGlzSW5Ccm93c2VyID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyaWdn
ZXIiKSA6IG51bGwsCiAgICAgImRyaXZlci5zdGFydCgxMCkiLAotICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJtYWdpYyIpLAotICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJHZW9tZWFu
IiksCisgICAgaXNJbkJyb3dzZXIgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFnaWMiKSA6
IG51bGwsCisgICAgaXNJbkJyb3dzZXIgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiR2VvbWVh
biIpIDogbnVsbCwKICAgICAic2FtcGxlQmVuY2giKTsKIAotZHJpdmVyLmFkZEJlbmNobWFyayhB
aXJCZW5jaG1hcmspOwotZHJpdmVyLmFkZEJlbmNobWFyayhCYXNpY0JlbmNobWFyayk7CitmdW5j
dGlvbiByZXBvcnRSZXN1bHQoLi4uYXJncykgeworICAgIGRyaXZlci5yZXBvcnRSZXN1bHQoLi4u
YXJncyk7Cit9CisKK2RyaXZlci5hZGRCZW5jaG1hcmsoQWlyQmVuY2htYXJrUnVubmVyKTsKK2Ry
aXZlci5hZGRCZW5jaG1hcmsoQmFzaWNCZW5jaG1hcmtSdW5uZXIpOwpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9pbmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvaW5kZXguaHRtbAkocmV2aXNpb24gMjA0NzMxKQorKysg
UGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9pbmRleC5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC04LDYgKzgsOCBAQCB3aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKG1lc3NhZ2UsIHVybCwg
CiB7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyaWdnZXIiKS5pbm5lckhUTUwgPSAi
RVJST1I6ICIgKyB1cmwgKyAiOiIgKyBsaW5lTnVtYmVyICsgIjogIiArIG1lc3NhZ2U7CiB9CisK
K2NvbnN0IGlzSW5Ccm93c2VyID0gdHJ1ZTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9ImRyaXZl
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzdWx0cy5qcyI+PC9zY3JpcHQ+CkluZGV4
OiBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL3Jlc3VsdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9yZXN1bHRzLmpzCShyZXZpc2lvbiAy
MDQ3MzEpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL3Jlc3VsdHMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgUmVzdWx0cyB7CiAgICAgewogICAg
ICAgICB0aGlzLl9iZW5jaG1hcmsgPSBiZW5jaG1hcms7CiAgICAgICAgIGZvciAobGV0IHN1YlJl
c3VsdCBvZiBSZXN1bHRzLnN1YlJlc3VsdHMpCi0gICAgICAgICAgICB0aGlzW3N1YlJlc3VsdF0g
PSBuZXcgU3RhdHMoYmVuY2htYXJrLmNlbGxzW3N1YlJlc3VsdF0pOworICAgICAgICAgICAgdGhp
c1tzdWJSZXN1bHRdID0gbmV3IFN0YXRzKGJlbmNobWFyay5jZWxsc1tzdWJSZXN1bHRdLCBzdWJS
ZXN1bHQpOwogICAgIH0KICAgICAKICAgICBnZXQgYmVuY2htYXJrKCkgeyByZXR1cm4gdGhpcy5f
YmVuY2htYXJrOyB9CkBAIC00MiwxMiArNDIsMTQgQEAgY2xhc3MgUmVzdWx0cyB7CiAgICAgCiAg
ICAgcmVwb3J0UnVubmluZygpCiAgICAgewotICAgICAgICB0aGlzLl9iZW5jaG1hcmsuY2VsbHMu
bWVzc2FnZS5pbm5lckhUTUwgPSAiUnVubmluZy4uLiI7CisgICAgICAgIGlmIChpc0luQnJvd3Nl
cikKKyAgICAgICAgICAgIHRoaXMuX2JlbmNobWFyay5jZWxscy5tZXNzYWdlLmlubmVySFRNTCA9
ICJSdW5uaW5nLi4uIjsKICAgICB9CiAgICAgCiAgICAgcmVwb3J0RG9uZSgpCiAgICAgewotICAg
ICAgICB0aGlzLl9iZW5jaG1hcmsuY2VsbHMubWVzc2FnZS5pbm5lckhUTUwgPSAiIjsKKyAgICAg
ICAgaWYgKGlzSW5Ccm93c2VyKQorICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJrLmNlbGxzLm1l
c3NhZ2UuaW5uZXJIVE1MID0gIiI7CiAgICAgfQogICAgIAogICAgIHJlcG9ydFJlc3VsdCh0aW1l
cykKQEAgLTk5LDcgKzEwMSw4IEBAIGNsYXNzIFJlc3VsdHMgewogICAgIHsKICAgICAgICAgZm9y
IChsZXQgc3ViUmVzdWx0IG9mIFJlc3VsdHMuc3ViUmVzdWx0cykKICAgICAgICAgICAgIHRoaXNb
c3ViUmVzdWx0XS5yZXBvcnRSZXN1bHQoU3RhdHMuZXJyb3IpOwotICAgICAgICB0aGlzLl9iZW5j
aG1hcmsuY2VsbHMubWVzc2FnZS5pbm5lckhUTUwgPSB1cmwgKyAiOiIgKyBsaW5lTnVtYmVyICsg
IjogIiArIG1lc3NhZ2U7CisgICAgICAgIGlmIChpc0luQnJvd3NlcikKKyAgICAgICAgICAgIHRo
aXMuX2JlbmNobWFyay5jZWxscy5tZXNzYWdlLmlubmVySFRNTCA9IHVybCArICI6IiArIGxpbmVO
dW1iZXIgKyAiOiAiICsgbWVzc2FnZTsKICAgICB9CiB9CiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVz
dHMvRVM2U2FtcGxlQmVuY2gvc3RhdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0
cy9FUzZTYW1wbGVCZW5jaC9zdGF0cy5qcwkocmV2aXNpb24gMjA0NzMxKQorKysgUGVyZm9ybWFu
Y2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9zdGF0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjUsMTAg
KzI1LDE2IEBACiAidXNlIHN0cmljdCI7CiAKIGNsYXNzIFN0YXRzIHsKLSAgICBjb25zdHJ1Y3Rv
cihjZWxsKQorICAgIGNvbnN0cnVjdG9yKGNlbGwsIHByZWZpeCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NlbGwgPSBjZWxsOwogICAgICAgICB0aGlzLl9kYXRhID0gW107CisgICAgICAgIHRoaXMu
X3ByZWZpeCA9ICIiOworICAgICAgICBpZiAoIWlzSW5Ccm93c2VyICYmIHByZWZpeCkgeworICAg
ICAgICAgICAgdGhpcy5fcHJlZml4ID0gcHJlZml4ICsgIjogIjsKKyAgICAgICAgICAgIGlmICh0
aGlzLl9wcmVmaXgubGVuZ3RoIDwgMjApCisgICAgICAgICAgICAgICAgdGhpcy5fcHJlZml4ICs9
ICIgIi5yZXBlYXQoMjAgLSB0aGlzLl9wcmVmaXgubGVuZ3RoKTsKKyAgICAgICAgfQogICAgIH0K
ICAgICAKICAgICByZXNldCguLi5kYXRhKQpAQCAtOTEsMTUgKzk3LDE5IEBAIGNsYXNzIFN0YXRz
IHsKICAgICAgICAgICAgIHJldHVybiAiRVJST1IiOwogICAgICAgICAKICAgICAgICAgaWYgKCJp
bnRlcnZhbCIgaW4gcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIGAke3Jlc3VsdC5tZWFuLnRv
Rml4ZWQoMil9IG1zICZwbHVzbW47ICR7cmVzdWx0LmludGVydmFsLnRvRml4ZWQoMil9IG1zYDsK
KyAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLl9wcmVmaXh9JHtyZXN1bHQubWVhbi50b0ZpeGVk
KDIpfSBtcyArLSAke3Jlc3VsdC5pbnRlcnZhbC50b0ZpeGVkKDIpfSBtc2A7CiAKLSAgICAgICAg
cmV0dXJuIGAke3Jlc3VsdC5tZWFuLnRvRml4ZWQoMil9IG1zYDsKKyAgICAgICAgcmV0dXJuIGAk
e3RoaXMuX3ByZWZpeH0ke3Jlc3VsdC5tZWFuLnRvRml4ZWQoMil9IG1zYDsKICAgICB9CiAgICAg
CiAgICAgX3VwZGF0ZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fY2VsbCkKLSAgICAgICAg
ICAgIHRoaXMuX2NlbGwuaW5uZXJIVE1MID0gdGhpcy50b1N0cmluZygpOworICAgICAgICBpZiAo
aXNJbkJyb3dzZXIpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jZWxsKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2NlbGwuaW5uZXJIVE1MID0gdGhpcy50b1N0cmluZygpOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcHJpbnQodGhpcy50b1N0cmluZygpKTsKKyAgICAgICAgfQogICAg
IH0KIH0KIApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9BaXIvYmVuY2ht
YXJrLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQWly
L2JlbmNobWFyay5qcwkocmV2aXNpb24gMjA0NzMxKQorKysgUGVyZm9ybWFuY2VUZXN0cy9FUzZT
YW1wbGVCZW5jaC9BaXIvYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotY2xhc3MgQmVuY2htYXJrIHsKK2NsYXNzIEFpckJl
bmNobWFyayB7CiAgICAgY29uc3RydWN0b3IodmVyYm9zZSA9IDApCiAgICAgewogICAgICAgICB0
aGlzLl92ZXJib3NlID0gdmVyYm9zZTsKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxl
QmVuY2gvQWlyL3N0cmVzcy10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMv
RVM2U2FtcGxlQmVuY2gvQWlyL3N0cmVzcy10ZXN0LmpzCShyZXZpc2lvbiAyMDQ3MzEpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Fpci9zdHJlc3MtdGVzdC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQCBsb2FkKCJwYXlsb2FkLWFpcmpzLUFDTGo4Qy5qcyIp
OwogbG9hZCgicGF5bG9hZC10eXBlc2NyaXB0LXNjYW5JZGVudGlmaWVyLmpzIik7CiBsb2FkKCJi
ZW5jaG1hcmsuanMiKTsKIAotbGV0IGJlbmNobWFyayA9IG5ldyBCZW5jaG1hcmsoKTsKK2xldCBi
ZW5jaG1hcmsgPSBuZXcgQWlyQmVuY2htYXJrKCk7CiBsZXQgYmVmb3JlID0gcHJlY2lzZVRpbWUo
KTsKIAogLy8gUnVuIGZvciBhdCBsZWFzdCAxMCBpdGVyYXRpb25zLgpJbmRleDogUGVyZm9ybWFu
Y2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9BaXIvdXRpbC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3Jt
YW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Fpci91dGlsLmpzCShyZXZpc2lvbiAyMDQ3MzEpCisr
KyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Fpci91dGlsLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjksNyArMTY5LDcgQEAgZnVuY3Rpb24gYnViYmxlU29ydChhcnJheSwgbGVzc1Ro
YW4pCiAgICAgfQogfQogCi1sZXQgY3VycmVudFRpbWU7Cit2YXIgY3VycmVudFRpbWU7CiBpZiAo
dGhpcy5wZXJmb3JtYW5jZSAmJiBwZXJmb3JtYW5jZS5ub3cpCiAgICAgY3VycmVudFRpbWUgPSBm
dW5jdGlvbigpIHsgcmV0dXJuIHBlcmZvcm1hbmNlLm5vdygpIH07CiBlbHNlIGlmICh0aGlzLnBy
ZWNpc2VUaW1lKQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9CYXNpYy9i
ZW5jaG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5j
aC9CYXNpYy9iZW5jaG1hcmsuanMJKHJldmlzaW9uIDIwNDczMSkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMvYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotY2xhc3MgQmVuY2htYXJrIHsKK2Ns
YXNzIEJhc2ljQmVuY2htYXJrIHsKICAgICBjb25zdHJ1Y3Rvcih2ZXJib3NlID0gMCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3ZlcmJvc2UgPSB2ZXJib3NlOwpAQCAtNjMsNCArNjMsMyBAQCBmdW5j
dGlvbiBydW5CZW5jaG1hcmsoKQogICAgIGxldCBhZnRlciA9IGN1cnJlbnRUaW1lKCk7CiAgICAg
cmV0dXJuIGFmdGVyIC0gYmVmb3JlOwogfQotCkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0VTNlNh
bXBsZUJlbmNoL0Jhc2ljL3N0cmVzcy10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNl
VGVzdHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMvc3RyZXNzLXRlc3QuanMJKHJldmlzaW9uIDIwNDcz
MSkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMvc3RyZXNzLXRlc3Qu
anMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbG9hZCgic3RhdGUuanMiKTsKIGxv
YWQoInV0aWwuanMiKTsKIGxvYWQoImJlbmNobWFyay5qcyIpOwogCi1sZXQgYmVuY2htYXJrID0g
bmV3IEJlbmNobWFyaygpOworbGV0IGJlbmNobWFyayA9IG5ldyBCYXNpY0JlbmNobWFyaygpOwog
bGV0IGJlZm9yZSA9IHByZWNpc2VUaW1lKCk7CiAKIC8vIFJ1biBmb3IgYXQgbGVhc3QgMTAgaXRl
cmF0aW9ucy4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMvdXRp
bC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Jhc2lj
L3V0aWwuanMJKHJldmlzaW9uIDIwNDczMSkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxl
QmVuY2gvQmFzaWMvdXRpbC5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICov
CiAidXNlIHN0cmljdCI7CiAKLWxldCBjdXJyZW50VGltZTsKK3ZhciBjdXJyZW50VGltZTsKIGlm
ICh0aGlzLnBlcmZvcm1hbmNlICYmIHBlcmZvcm1hbmNlLm5vdykKICAgICBjdXJyZW50VGltZSA9
IGZ1bmN0aW9uKCkgeyByZXR1cm4gcGVyZm9ybWFuY2Uubm93KCkgfTsKIGVsc2UgaWYgKHRoaXMu
cHJlY2lzZVRpbWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDcz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxNi0wOC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNv
bT4KKworICAgICAgICBJdCBzaG91bGQgYmUgZWFzeSB0byBydW4gRVM2U2FtcGxlQmVuY2ggZnJv
bSB0aGUganNjIHNoZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjEwODUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgZnVuY3Rpb24gY2FsbGVkIGBydW5TdHJpbmdg
IHRvIHRoZSBzaGVsbC4KKyAgICAgICAgSXQgdGFrZXMgaW4gYSBzdHJpbmcsIGFuZCBleGVjdXRl
cyBpdCBpbiBhIG5ldyBnbG9iYWwgb2JqZWN0LgorICAgICAgICBUaGVuLCBpdCByZXR1cm5zIHRo
ZSBnbG9iYWwgb2JqZWN0IGl0IGV4ZWN1dGVkIHRoZSBjb2RlIGluLgorICAgICAgICBUaGlzIGFs
bG93cyB0aGUgY29kZSB0byBzdGFzaCBzb21lIGtpbmQgb2YgYSByZXN1bHQgb24gdGhlIGdsb2Jh
bCwKKyAgICAgICAgYW5kIHRoZW4gaGF2ZSB0aGUgY2FsbGVyIG9mIGBydW5TdHJpbmdgIGV4dHJh
Y3QgdGhlIHJlc3VsdC4KKworICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChHbG9iYWxPYmpl
Y3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKGZ1bmN0aW9uUnVuU3RyaW5nKToKKwogMjAx
Ni0wOC0yMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3Zl
IGRlYWQgY29kZS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDQ3MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg5LDYg
KzU4OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICNlbmRp
Zgogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25WZXJzaW9uKEV4
ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
dW4oRXhlY1N0YXRlKik7CitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5j
dGlvblJ1blN0cmluZyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uTG9hZChFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFN0cmluZyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVhZEZpbGUoRXhlY1N0YXRlKik7CkBA
IC03ODUsNiArNzg2LDcgQEAgcHJvdGVjdGVkOgogI2VuZGlmCiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAidmVyc2lvbiIsIGZ1bmN0aW9uVmVyc2lvbiwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9u
KHZtLCAicnVuIiwgZnVuY3Rpb25SdW4sIDEpOworICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJ1
blN0cmluZyIsIGZ1bmN0aW9uUnVuU3RyaW5nLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJsb2FkIiwgZnVuY3Rpb25Mb2FkLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJsb2Fk
U3RyaW5nIiwgZnVuY3Rpb25Mb2FkU3RyaW5nLCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0s
ICJyZWFkRmlsZSIsIGZ1bmN0aW9uUmVhZEZpbGUsIDEpOwpAQCAtMTQ0Myw2ICsxNDQ1LDMxIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHN0b3BXYXRjaC5nZXRFbGFwc2VkTVMoKSkpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBTdHJpbmcgc291cmNlID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJp
bmcoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAgR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZShleGVjLT52bSgpLCBHbG9iYWxPYmplY3Q6
OmNyZWF0ZVN0cnVjdHVyZShleGVjLT52bSgpLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkp
OworCisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAwKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+
YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKKyAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKKyAgICAgICAgZXhlYy0+dm0oKSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CisKKyAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKKyAgICBl
dmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgbWFrZVNvdXJjZShzb3VyY2UpLCBK
U1ZhbHVlKCksIGV4Y2VwdGlvbik7CisKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGV4Y2Vw
dGlvbik7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0KTsKK30K
KwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYWQoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIFN0cmluZyBmaWxlTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3Ry
aW5nKGV4ZWMpOwo=
</data>
<flag name="review"
          id="310273"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286812</attachid>
            <date>2016-08-23 18:10:48 -0700</date>
            <delta_ts>2016-08-23 20:41:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>21406</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1h
bmNlVGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDQ4NzMpCisrKyBQZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE2LTA4LTIzICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEl0IHNob3VsZCBiZSBl
YXN5IHRvIHJ1biBFUzZTYW1wbGVCZW5jaCBmcm9tIHRoZSBqc2Mgc2hlbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTA4NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtYWtlcyBFUzYg
c2FtcGxlIGJlbmNoIHJ1bm5hYmxlIHRocm91Z2ggdGhlIGBqc2NgIHNoZWxsLgorICAgICAgICBU
byBkbyB0aGF0LCB5b3UgbmVlZCB0byBiZSBpbiB0aGUgUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1w
bGVCZW5jaAorICAgICAgICBkaXJlY3RvcnkgYW5kIHJ1biBganNjIGNsaS5qc2AuIFRvIG1ha2Ug
dGhpcyB3b3JrLCB0aGUgYmVuY2htYXJrCisgICAgICAgIGlzIG5vdyBhd2FyZSBvZiBiZWluZyBy
dW4gaW4gdHdvIG1vZGVzOiB2aWEgdGhlIGJyb3dzZXIsIGFuZCB2aWEKKyAgICAgICAgdGhlIHNo
ZWxsLiBFYWNoIGVudHJ5IHBvaW50IHdpbGwgc2V0IGEgdmFyaWFibGUgYGlzSW5Ccm93c2VyYCwK
KyAgICAgICAgYW5kIHRoZSBiZW5jaG1hcmsgd2lsbCBkbyBkaWZmZXJlbnQgdGhpbmdzIGJhc2Vk
IG9uIGlmIHRoYXQKKyAgICAgICAgdmFyaWFibGUgaXMgdHJ1ZSBvciBmYWxzZS4KKworICAgICAg
ICAqIEVTNlNhbXBsZUJlbmNoL0Fpci9iZW5jaG1hcmsuanM6CisgICAgICAgICogRVM2U2FtcGxl
QmVuY2gvQWlyL3N0cmVzcy10ZXN0LmpzOgorICAgICAgICAqIEVTNlNhbXBsZUJlbmNoL0Jhc2lj
L2JlbmNobWFyay5qczoKKyAgICAgICAgKHJ1bkJlbmNobWFyayk6CisgICAgICAgICogRVM2U2Ft
cGxlQmVuY2gvQmFzaWMvc3RyZXNzLXRlc3QuanM6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gv
YWlyX2JlbmNobWFyay5qczoKKyAgICAgICAgKiBFUzZTYW1wbGVCZW5jaC9iYXNpY19iZW5jaG1h
cmsuanM6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gvY2xpLmpzOiBBZGRlZC4KKyAgICAgICAg
KHJldHVybi5kb1J1bik6CisgICAgICAgIChtYWtlQmVuY2htYXJrUnVubmVyKToKKyAgICAgICAg
KiBFUzZTYW1wbGVCZW5jaC9kcml2ZXIuanM6CisgICAgICAgIChEcml2ZXIpOgorICAgICAgICAo
RHJpdmVyLnByb3RvdHlwZS5fcmVjb21wdXRlU3VtbWFyeSk6CisgICAgICAgIChEcml2ZXIucHJv
dG90eXBlLl9pdGVyYXRlLndpbmRvdy5zZXRUaW1lb3V0KToKKyAgICAgICAgKERyaXZlci5wcm90
b3R5cGUuX2l0ZXJhdGUpOgorICAgICAgICAoRHJpdmVyLnByb3RvdHlwZS5fdXBkYXRlSXRlcmF0
aW9ucyk6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gvZ2x1ZS5qczoKKyAgICAgICAgKHJlcG9y
dFJlc3VsdCk6CisgICAgICAgICogRVM2U2FtcGxlQmVuY2gvaW5kZXguaHRtbDoKKyAgICAgICAg
KiBFUzZTYW1wbGVCZW5jaC9yZXN1bHRzLmpzOgorICAgICAgICAoUmVzdWx0cyk6CisgICAgICAg
IChSZXN1bHRzLnByb3RvdHlwZS5yZXBvcnRSdW5uaW5nKToKKyAgICAgICAgKFJlc3VsdHMucHJv
dG90eXBlLnJlcG9ydERvbmUpOgorICAgICAgICAoUmVzdWx0cy5wcm90b3R5cGUucmVwb3J0RXJy
b3IpOgorICAgICAgICAqIEVTNlNhbXBsZUJlbmNoL3N0YXRzLmpzOgorICAgICAgICAoU3RhdHMp
OgorICAgICAgICAoU3RhdHMucHJvdG90eXBlLnRvU3RyaW5nKToKKyAgICAgICAgKFN0YXRzLnBy
b3RvdHlwZS5fdXBkYXRlKToKKwogMjAxNi0wOC0wMSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJv
dWhhbGxhd2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhbiBvcHRpb24gdG8gcnVuIHRoZSBN
b3Rpb25NYXJrIHRlc3RzIHdpdGggY2xhc3NpYyB0aWxlIHNpemUgKDUxMng1MTIpCkluZGV4OiBQ
ZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2Fpcl9iZW5jaG1hcmsuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9haXJfYmVuY2htYXJrLmpzCShy
ZXZpc2lvbiAyMDQ4NjgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2Fpcl9i
ZW5jaG1hcmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgY29uc3QgQWlyQmVu
Y2htYXJrQ29kZSA9IFN0cmluZy5yYXdgCiA8c2NyaXB0IHNyYz0iQWlyL2JlbmNobWFyay5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0PgogdmFyIHJlc3VsdHMgPSBbXTsKLXZhciBiZW5jaG1hcmsgPSBu
ZXcgQmVuY2htYXJrKCk7Cit2YXIgYmVuY2htYXJrID0gbmV3IEFpckJlbmNobWFyaygpOwogdmFy
IG51bUl0ZXJhdGlvbnMgPSAyMDA7CiBmb3IgKHZhciBpID0gMDsgaSA8IG51bUl0ZXJhdGlvbnM7
ICsraSkgewogICAgIHZhciBiZWZvcmUgPSBjdXJyZW50VGltZSgpOwpAQCAtNTksMTMgKzU5LDQ3
IEBAIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0aW9uczsgKytpKSAKIHJlcG9ydFJlc3Vs
dChyZXN1bHRzKTsKIDwvc2NyaXB0PmA7CiAKLWNvbnN0IEFpckJlbmNobWFyayA9IHsKK2xldCBy
dW5BaXJCZW5jaG1hcmsgPSBudWxsOworaWYgKCFpc0luQnJvd3NlcikgeworICAgIGxldCBzb3Vy
Y2VzID0gWworICAgICAgICAiQWlyL3N5bWJvbHMuanMiCisgICAgICAgICwgIkFpci90bXBfYmFz
ZS5qcyIKKyAgICAgICAgLCAiQWlyL2FyZy5qcyIKKyAgICAgICAgLCAiQWlyL2Jhc2ljX2Jsb2Nr
LmpzIgorICAgICAgICAsICJBaXIvY29kZS5qcyIKKyAgICAgICAgLCAiQWlyL2ZyZXF1ZW50ZWRf
YmxvY2suanMiCisgICAgICAgICwgIkFpci9pbnN0LmpzIgorICAgICAgICAsICJBaXIvb3Bjb2Rl
LmpzIgorICAgICAgICAsICJBaXIvcmVnLmpzIgorICAgICAgICAsICJBaXIvc3RhY2tfc2xvdC5q
cyIKKyAgICAgICAgLCAiQWlyL3RtcC5qcyIKKyAgICAgICAgLCAiQWlyL3V0aWwuanMiCisgICAg
ICAgICwgIkFpci9jdXN0b20uanMiCisgICAgICAgICwgIkFpci9saXZlbmVzcy5qcyIKKyAgICAg
ICAgLCAiQWlyL2luc2VydGlvbl9zZXQuanMiCisgICAgICAgICwgIkFpci9hbGxvY2F0ZV9zdGFj
ay5qcyIKKyAgICAgICAgLCAiQWlyL3BheWxvYWQtZ2JlbXUtZXhlY3V0ZUl0ZXJhdGlvbi5qcyIK
KyAgICAgICAgLCAiQWlyL3BheWxvYWQtaW1hZ2luZy1nYXVzc2lhbi1ibHVyLWdhdXNzaWFuQmx1
ci5qcyIKKyAgICAgICAgLCAiQWlyL3BheWxvYWQtYWlyanMtQUNMajhDLmpzIgorICAgICAgICAs
ICJBaXIvcGF5bG9hZC10eXBlc2NyaXB0LXNjYW5JZGVudGlmaWVyLmpzIgorICAgICAgICAsICJB
aXIvYmVuY2htYXJrLmpzIgorICAgIF07CisKKyAgICBydW5BaXJCZW5jaG1hcmsgPSBtYWtlQmVu
Y2htYXJrUnVubmVyKHNvdXJjZXMsICJBaXJCZW5jaG1hcmsiKTsKK30KKworY29uc3QgQWlyQmVu
Y2htYXJrUnVubmVyID0gewogICAgIGNvZGU6IEFpckJlbmNobWFya0NvZGUsCi0gICAgY2VsbHM6
IHsKKyAgICBydW46IHJ1bkFpckJlbmNobWFyaywKKyAgICBjZWxsczogeyB9LAorICAgIG5hbWU6
ICJBaXIiCit9OworCitpZiAoaXNJbkJyb3dzZXIpIHsKKyAgICBBaXJCZW5jaG1hcmtSdW5uZXIu
Y2VsbHMgPSB7CiAgICAgICAgIGZpcnN0SXRlcmF0aW9uOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiQWlyRmlyc3RJdGVyYXRpb24iKSwKICAgICAgICAgYXZlcmFnZVdvcnN0Q2FzZTogZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoIkFpckF2ZXJhZ2VXb3JzdENhc2UiKSwKICAgICAgICAgc3RlYWR5
U3RhdGU6IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJBaXJTdGVhZHlTdGF0ZSIpLAogICAgICAg
ICBtZXNzYWdlOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQWlyTWVzc2FnZSIpCiAgICAgfQot
fTsKLQorfQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9iYXNpY19iZW5j
aG1hcmsuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9i
YXNpY19iZW5jaG1hcmsuanMJKHJldmlzaW9uIDIwNDg2OCkKKysrIFBlcmZvcm1hbmNlVGVzdHMv
RVM2U2FtcGxlQmVuY2gvYmFzaWNfYmVuY2htYXJrLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3
ICszNyw3IEBAIGNvbnN0IEJhc2ljQmVuY2htYXJrQ29kZSA9IFN0cmluZy5yYXdgCiA8c2NyaXB0
IHNyYz0iQmFzaWMvYmVuY2htYXJrLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+CiB2YXIgcmVzdWx0
cyA9IFtdOwotdmFyIGJlbmNobWFyayA9IG5ldyBCZW5jaG1hcmsoKTsKK3ZhciBiZW5jaG1hcmsg
PSBuZXcgQmFzaWNCZW5jaG1hcmsoKTsKIHZhciBudW1JdGVyYXRpb25zID0gMjAwOwogZm9yICh2
YXIgaSA9IDA7IGkgPCBudW1JdGVyYXRpb25zOyArK2kpIHsKICAgICB2YXIgYmVmb3JlID0gY3Vy
cmVudFRpbWUoKTsKQEAgLTQ4LDEyICs0OCwzNyBAQCBmb3IgKHZhciBpID0gMDsgaSA8IG51bUl0
ZXJhdGlvbnM7ICsraSkgCiByZXBvcnRSZXN1bHQocmVzdWx0cyk7CiA8L3NjcmlwdD5gOwogCi1j
b25zdCBCYXNpY0JlbmNobWFyayA9IHsKKworbGV0IHJ1bkJhc2ljQmVuY2htYXJrID0gbnVsbDsK
K2lmICghaXNJbkJyb3dzZXIpIHsKKyAgICBsZXQgc291cmNlcyA9IFsKKyAgICAgICAgIkJhc2lj
L2FzdC5qcyIKKyAgICAgICAgLCAiQmFzaWMvYmFzaWMuanMiCisgICAgICAgICwgIkJhc2ljL2Nh
c2VsZXNzX21hcC5qcyIKKyAgICAgICAgLCAiQmFzaWMvbGV4ZXIuanMiCisgICAgICAgICwgIkJh
c2ljL251bWJlci5qcyIKKyAgICAgICAgLCAiQmFzaWMvcGFyc2VyLmpzIgorICAgICAgICAsICJC
YXNpYy9yYW5kb20uanMiCisgICAgICAgICwgIkJhc2ljL3N0YXRlLmpzIgorICAgICAgICAsICJC
YXNpYy91dGlsLmpzIgorICAgICAgICAsICJCYXNpYy9iZW5jaG1hcmsuanMiCisgICAgXTsKKwor
ICAgIHJ1bkJhc2ljQmVuY2htYXJrID0gbWFrZUJlbmNobWFya1J1bm5lcihzb3VyY2VzLCAiQmFz
aWNCZW5jaG1hcmsiKTsKK30KKworY29uc3QgQmFzaWNCZW5jaG1hcmtSdW5uZXIgPSB7CisgICAg
bmFtZTogIkJhc2ljIiwKICAgICBjb2RlOiBCYXNpY0JlbmNobWFya0NvZGUsCi0gICAgY2VsbHM6
IHsKKyAgICBydW46IHJ1bkJhc2ljQmVuY2htYXJrLAorICAgIGNlbGxzOiB7fQorfTsKKworaWYg
KGlzSW5Ccm93c2VyKSB7CisgICAgQmFzaWNCZW5jaG1hcmtSdW5uZXIuY2VsbHMgPSB7CiAgICAg
ICAgIGZpcnN0SXRlcmF0aW9uOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNGaXJzdEl0
ZXJhdGlvbiIpLAogICAgICAgICBhdmVyYWdlV29yc3RDYXNlOiBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiQmFzaWNBdmVyYWdlV29yc3RDYXNlIiksCiAgICAgICAgIHN0ZWFkeVN0YXRlOiBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNTdGVhZHlTdGF0ZSIpLAogICAgICAgICBtZXNzYWdl
OiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQmFzaWNNZXNzYWdlIikKLSAgICB9Ci19OworICAg
IH07Cit9CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2NsaS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2NsaS5qcwkocmV2aXNp
b24gMCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvY2xpLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzMgQEAKK2NvbnN0IGlzSW5Ccm93c2VyID0gZmFsc2U7CisKK2Z1
bmN0aW9uIG1ha2VCZW5jaG1hcmtSdW5uZXIoc291cmNlcywgYmVuY2htYXJrQ29uc3RydWN0b3Ip
IHsKKyAgICBsZXQgc291cmNlID0gIid1c2Ugc3RyaWN0JzsiCisgICAgZm9yIChsZXQgZmlsZSBv
ZiBzb3VyY2VzKSB7CisgICAgICAgIHNvdXJjZSArPSByZWFkRmlsZShmaWxlKTsKKyAgICB9Cisg
ICAgc291cmNlICs9IGAKKyAgICAgICAgdGhpcy5yZXN1bHRzID0gW107CisgICAgICAgIHZhciBi
ZW5jaG1hcmsgPSBuZXcgJHtiZW5jaG1hcmtDb25zdHJ1Y3Rvcn0oKTsKKyAgICAgICAgdmFyIG51
bUl0ZXJhdGlvbnMgPSAyMDA7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtSXRlcmF0
aW9uczsgKytpKSB7CisgICAgICAgICAgICB2YXIgYmVmb3JlID0gY3VycmVudFRpbWUoKTsKKyAg
ICAgICAgICAgIGJlbmNobWFyay5ydW5JdGVyYXRpb24oKTsKKyAgICAgICAgICAgIHZhciBhZnRl
ciA9IGN1cnJlbnRUaW1lKCk7CisgICAgICAgICAgICByZXN1bHRzLnB1c2goYWZ0ZXIgLSBiZWZv
cmUpOworICAgICAgICB9CisgICAgYDsKKyAgICByZXR1cm4gZnVuY3Rpb24gZG9SdW4oKSB7Cisg
ICAgICAgIGxldCBnbG9iYWxPYmplY3RPZlNjcmlwdCA9IHJ1blN0cmluZyhzb3VyY2UpOworICAg
ICAgICBsZXQgcmVzdWx0cyA9IGdsb2JhbE9iamVjdE9mU2NyaXB0LnJlc3VsdHM7CisgICAgICAg
IHJlcG9ydFJlc3VsdChyZXN1bHRzKTsKKyAgICB9Cit9CisKK2xvYWQoImRyaXZlci5qcyIpOwor
bG9hZCgicmVzdWx0cy5qcyIpOworbG9hZCgic3RhdHMuanMiKTsKK2xvYWQoImFpcl9iZW5jaG1h
cmsuanMiKTsKK2xvYWQoImJhc2ljX2JlbmNobWFyay5qcyIpOworbG9hZCgiZ2x1ZS5qcyIpOwor
Citkcml2ZXIuc3RhcnQoMTApOwpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5j
aC9kcml2ZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5j
aC9kcml2ZXIuanMJKHJldmlzaW9uIDIwNDg2OCkKKysrIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2Ft
cGxlQmVuY2gvZHJpdmVyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTEgQEAgY2xh
c3MgRHJpdmVyIHsKICAgICAgICAgdGhpcy5fdHJpZ2dlckNlbGwgPSB0cmlnZ2VyQ2VsbDsKICAg
ICAgICAgdGhpcy5fdHJpZ2dlckxpbmsgPSB0cmlnZ2VyTGluazsKICAgICAgICAgdGhpcy5fbWFn
aWNDZWxsID0gbWFnaWNDZWxsOwotICAgICAgICB0aGlzLl9zdW1tYXJ5ID0gbmV3IFN0YXRzKHN1
bW1hcnlDZWxsKTsKKyAgICAgICAgdGhpcy5fc3VtbWFyeSA9IG5ldyBTdGF0cyhzdW1tYXJ5Q2Vs
bCwgInN1bW1hcnkiKTsKICAgICAgICAgdGhpcy5fa2V5ID0ga2V5OwogICAgICAgICB0aGlzLl9o
YWRFcnJvcnMgPSBmYWxzZTsKLSAgICAgICAgd2luZG93W2tleV0gPSB0aGlzOworICAgICAgICBp
ZiAoaXNJbkJyb3dzZXIpCisgICAgICAgICAgICB3aW5kb3dba2V5XSA9IHRoaXM7CiAgICAgfQog
ICAgIAogICAgIGFkZEJlbmNobWFyayhiZW5jaG1hcmspCkBAIC05Niw3ICs5Nyw3IEBAIGNsYXNz
IERyaXZlciB7CiAgICAgICAgICAgICBmb3IgKGxldCBzdWJSZXN1bHQgb2YgUmVzdWx0cy5zdWJS
ZXN1bHRzKQogICAgICAgICAgICAgICAgIHN0YXRzZXMucHVzaChyZXN1bHRzW3N1YlJlc3VsdF0p
OwogICAgICAgICB9Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBudW1JdGVyYXRpb25zID0gTWF0
aC5taW4oLi4uc3RhdHNlcy5tYXAoc3RhdHMgPT4gc3RhdHMubnVtSXRlcmF0aW9ucykpOwogICAg
ICAgICBsZXQgZGF0YSA9IG5ldyBBcnJheShudW1JdGVyYXRpb25zKTsKICAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKQpAQCAtMTE3LDkgKzExOCwxMiBAQCBjbGFz
cyBEcml2ZXIgewogICAgICAgICB0aGlzLl9iZW5jaG1hcmsgPSB0aGlzLl9pdGVyYXRvciA/IHRo
aXMuX2l0ZXJhdG9yLm5leHQoKS52YWx1ZSA6IG51bGw7CiAgICAgICAgIGlmICghdGhpcy5fYmVu
Y2htYXJrKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX251bUl0ZXJhdGlvbnMpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLl90cmlnZ2VyQ2VsbC5pbm5lckhUTUwgPQotICAgICAgICAgICAgICAg
ICAgICAodGhpcy5faGFkRXJyb3JzID8gIkZhaWx1cmVzIGVuY291bnRlcmVkISIgOiAiU3VjY2Vz
cyEiKSArCi0gICAgICAgICAgICAgICAgICAgIGAgPGEgaHJlZj0iJHt0aGlzLl90cmlnZ2VyTGlu
a30iPlJlc3RhcnQgQmVuY2htYXJrPC9hPmA7CisgICAgICAgICAgICAgICAgaWYgKGlzSW5Ccm93
c2VyKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RyaWdnZXJDZWxsLmlubmVySFRNTCA9
CisgICAgICAgICAgICAgICAgICAgICAgICAodGhpcy5faGFkRXJyb3JzID8gIkZhaWx1cmVzIGVu
Y291bnRlcmVkISIgOiAiU3VjY2VzcyEiKSArCisgICAgICAgICAgICAgICAgICAgICAgICBgIDxh
IGhyZWY9IiR7dGhpcy5fdHJpZ2dlckxpbmt9Ij5SZXN0YXJ0IEJlbmNobWFyazwvYT5gOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBwcmludCh0aGlzLl9oYWRF
cnJvcnMgPyAiRmFpbHVyZXMgZW5jb3VudGVyZWQhIiA6ICJTdWNjZXNzISBCZW5jaG1hcmsgaXMg
bm93IGZpbmlzaGVkLiIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIHRoaXMuX251bUl0ZXJhdGlvbnMtLTsKQEAgLTEzMCwzMSArMTM0LDQ4IEBA
IGNsYXNzIERyaXZlciB7CiAgICAgICAgIAogICAgICAgICB0aGlzLl9iZW5jaG1hcmtzLmdldCh0
aGlzLl9iZW5jaG1hcmspLnJlcG9ydFJ1bm5pbmcoKTsKICAgICAgICAgCi0gICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgIGlmICghdGhpcy5faXNSdW5uaW5nKQot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdGhpcy5f
bWFnaWNDZWxsLmNvbnRlbnREb2N1bWVudC5ib2R5LnRleHRDb250ZW50ID0gIiI7Ci0gICAgICAg
ICAgICB0aGlzLl9tYWdpY0NlbGwuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gIjxp
ZnJhbWUgaWQ9XCJtYWdpY0ZyYW1lXCIgZnJhbWVib3JkZXI9XCIwXCI+IjsKLSAgICAgICAgICAg
IAotICAgICAgICAgICAgbGV0IG1hZ2ljRnJhbWUgPSB0aGlzLl9tYWdpY0NlbGwuY29udGVudERv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWdpY0ZyYW1lIik7Ci0gICAgICAgICAgICBtYWdpY0Zy
YW1lLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7Ci0gICAgICAgICAgICBtYWdpY0ZyYW1lLmNvbnRl
bnREb2N1bWVudC53cml0ZSgKLSAgICAgICAgICAgICAgICBgPCFET0NUWVBFIGh0bWw+PGhlYWQ+
PHRpdGxlPmJlbmNobWFyayBwYXlsb2FkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHNjcmlwdD5gICsK
LSAgICAgICAgICAgICAgICBgd2luZG93Lm9uZXJyb3IgPSB0b3AuJHt0aGlzLl9rZXl9LnJlcG9y
dEVycm9yO1xuYCArCi0gICAgICAgICAgICAgICAgYGZ1bmN0aW9uIHJlcG9ydFJlc3VsdCgpXG5g
ICsKLSAgICAgICAgICAgICAgICBge1xuYCArCi0gICAgICAgICAgICAgICAgYCAgICB2YXIgZHJp
dmVyID0gdG9wLiR7dGhpcy5fa2V5fTtcbmAgKwotICAgICAgICAgICAgICAgIGAgICAgZHJpdmVy
LnJlcG9ydFJlc3VsdC5hcHBseShkcml2ZXIsIGFyZ3VtZW50cyk7XG5gICsKLSAgICAgICAgICAg
ICAgICBgfVxuYCArCi0gICAgICAgICAgICAgICAgYDwvc2NyaXB0PlxuYCArCi0gICAgICAgICAg
ICAgICAgYCR7dGhpcy5fYmVuY2htYXJrLmNvZGV9PC9ib2R5PjwvaHRtbD5gKTsKLSAgICAgICAg
fSwgMTAwKTsKKyAgICAgICAgbGV0IGJlbmNobWFyayA9IHRoaXMuX2JlbmNobWFyazsKKyAgICAg
ICAgaWYgKGlzSW5Ccm93c2VyKSB7CisgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9
PiB7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pc1J1bm5pbmcpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl9t
YWdpY0NlbGwuY29udGVudERvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSAiIjsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9tYWdpY0NlbGwuY29udGVudERvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0g
IjxpZnJhbWUgaWQ9XCJtYWdpY0ZyYW1lXCIgZnJhbWVib3JkZXI9XCIwXCI+IjsKKyAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICBsZXQgbWFnaWNGcmFtZSA9IHRoaXMuX21hZ2ljQ2Vs
bC5jb250ZW50RG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hZ2ljRnJhbWUiKTsKKyAgICAgICAg
ICAgICAgICBtYWdpY0ZyYW1lLmNvbnRlbnREb2N1bWVudC5vcGVuKCk7CisgICAgICAgICAgICAg
ICAgbWFnaWNGcmFtZS5jb250ZW50RG9jdW1lbnQud3JpdGUoCisgICAgICAgICAgICAgICAgICAg
IGA8IURPQ1RZUEUgaHRtbD48aGVhZD48dGl0bGU+YmVuY2htYXJrIHBheWxvYWQ8L3RpdGxlPjwv
aGVhZD48Ym9keT48c2NyaXB0PmAgKworICAgICAgICAgICAgICAgICAgICBgd2luZG93Lm9uZXJy
b3IgPSB0b3AuJHt0aGlzLl9rZXl9LnJlcG9ydEVycm9yO1xuYCArCisgICAgICAgICAgICAgICAg
ICAgIGBmdW5jdGlvbiByZXBvcnRSZXN1bHQoKVxuYCArCisgICAgICAgICAgICAgICAgICAgIGB7
XG5gICsKKyAgICAgICAgICAgICAgICAgICAgYCAgICB2YXIgZHJpdmVyID0gdG9wLiR7dGhpcy5f
a2V5fTtcbmAgKworICAgICAgICAgICAgICAgICAgICBgICAgIGRyaXZlci5yZXBvcnRSZXN1bHQu
YXBwbHkoZHJpdmVyLCBhcmd1bWVudHMpO1xuYCArCisgICAgICAgICAgICAgICAgICAgIGB9XG5g
ICsKKyAgICAgICAgICAgICAgICAgICAgYDwvc2NyaXB0PlxuYCArCisgICAgICAgICAgICAgICAg
ICAgIGAke3RoaXMuX2JlbmNobWFyay5jb2RlfTwvYm9keT48L2h0bWw+YCk7CisgICAgICAgICAg
ICB9LCAxMDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHJvbWlzZS5yZXNvbHZl
KDIwKS50aGVuKCgpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2lzUnVubmluZykK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50KGBSdW5uaW5nLi4uICR7dGhp
cy5fYmVuY2htYXJrLm5hbWV9ICggJHt0aGlzLl9udW1JdGVyYXRpb25zICsgMX0gIHRvIGdvKWAp
OworICAgICAgICAgICAgICAgICAgICBiZW5jaG1hcmsucnVuKCk7CisgICAgICAgICAgICAgICAg
ICAgIHByaW50KCJcbiIpOworICAgICAgICAgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAg
ICAgICAgICAgICBwcmludChlKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZS5zdGFjayk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KICAgICB9CiAg
ICAgCiAgICAgX3VwZGF0ZUl0ZXJhdGlvbnMoKQogICAgIHsKLSAgICAgICAgdGhpcy5fdHJpZ2dl
ckNlbGwuaW5uZXJIVE1MID0gIlJ1bm5pbmcuLi4gKCIgKyAodGhpcy5fbnVtSXRlcmF0aW9ucyAr
IDEpICsgIiB0byBnbykiOworICAgICAgICBpZiAoaXNJbkJyb3dzZXIpCisgICAgICAgICAgICB0
aGlzLl90cmlnZ2VyQ2VsbC5pbm5lckhUTUwgPSAiUnVubmluZy4uLiAoIiArICh0aGlzLl9udW1J
dGVyYXRpb25zICsgMSkgKyAiIHRvIGdvKSI7CiAgICAgfQogfQotCkluZGV4OiBQZXJmb3JtYW5j
ZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2dsdWUuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VU
ZXN0cy9FUzZTYW1wbGVCZW5jaC9nbHVlLmpzCShyZXZpc2lvbiAyMDQ4NjgpCisrKyBQZXJmb3Jt
YW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2dsdWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTI1LDEx
ICsyNSwxNSBAQAogInVzZSBzdHJpY3QiOwogCiBjb25zdCBkcml2ZXIgPSBuZXcgRHJpdmVyKAot
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0cmlnZ2VyIiksCisgICAgaXNJbkJyb3dzZXIg
PyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJpZ2dlciIpIDogbnVsbCwKICAgICAiZHJpdmVy
LnN0YXJ0KDEwKSIsCi0gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1hZ2ljIiksCi0gICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkdlb21lYW4iKSwKKyAgICBpc0luQnJvd3NlciA/IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJtYWdpYyIpIDogbnVsbCwKKyAgICBpc0luQnJvd3NlciA/
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJHZW9tZWFuIikgOiBudWxsLAogICAgICJzYW1wbGVC
ZW5jaCIpOwogCi1kcml2ZXIuYWRkQmVuY2htYXJrKEFpckJlbmNobWFyayk7Ci1kcml2ZXIuYWRk
QmVuY2htYXJrKEJhc2ljQmVuY2htYXJrKTsKK2Z1bmN0aW9uIHJlcG9ydFJlc3VsdCguLi5hcmdz
KSB7CisgICAgZHJpdmVyLnJlcG9ydFJlc3VsdCguLi5hcmdzKTsKK30KKworZHJpdmVyLmFkZEJl
bmNobWFyayhBaXJCZW5jaG1hcmtSdW5uZXIpOworZHJpdmVyLmFkZEJlbmNobWFyayhCYXNpY0Jl
bmNobWFya1J1bm5lcik7CkluZGV4OiBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL2lu
ZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9p
bmRleC5odG1sCShyZXZpc2lvbiAyMDQ4NjgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBs
ZUJlbmNoL2luZGV4Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw4IEBAIHdpbmRvdy5v
bmVycm9yID0gZnVuY3Rpb24obWVzc2FnZSwgdXJsLCAKIHsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidHJpZ2dlciIpLmlubmVySFRNTCA9ICJFUlJPUjogIiArIHVybCArICI6IiArIGxp
bmVOdW1iZXIgKyAiOiAiICsgbWVzc2FnZTsKIH0KKworY29uc3QgaXNJbkJyb3dzZXIgPSB0cnVl
OwogPC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iZHJpdmVyLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJyZXN1bHRzLmpzIj48L3NjcmlwdD4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2Ft
cGxlQmVuY2gvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNh
bXBsZUJlbmNoL3Jlc3VsdHMuanMJKHJldmlzaW9uIDIwNDg2OCkKKysrIFBlcmZvcm1hbmNlVGVz
dHMvRVM2U2FtcGxlQmVuY2gvcmVzdWx0cy5qcwkod29ya2luZyBjb3B5KQpAQCAtMjksNyArMjks
NyBAQCBjbGFzcyBSZXN1bHRzIHsKICAgICB7CiAgICAgICAgIHRoaXMuX2JlbmNobWFyayA9IGJl
bmNobWFyazsKICAgICAgICAgZm9yIChsZXQgc3ViUmVzdWx0IG9mIFJlc3VsdHMuc3ViUmVzdWx0
cykKLSAgICAgICAgICAgIHRoaXNbc3ViUmVzdWx0XSA9IG5ldyBTdGF0cyhiZW5jaG1hcmsuY2Vs
bHNbc3ViUmVzdWx0XSk7CisgICAgICAgICAgICB0aGlzW3N1YlJlc3VsdF0gPSBuZXcgU3RhdHMo
YmVuY2htYXJrLmNlbGxzW3N1YlJlc3VsdF0sIHN1YlJlc3VsdCk7CiAgICAgfQogICAgIAogICAg
IGdldCBiZW5jaG1hcmsoKSB7IHJldHVybiB0aGlzLl9iZW5jaG1hcms7IH0KQEAgLTQyLDEyICs0
MiwxNCBAQCBjbGFzcyBSZXN1bHRzIHsKICAgICAKICAgICByZXBvcnRSdW5uaW5nKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2JlbmNobWFyay5jZWxscy5tZXNzYWdlLmlubmVySFRNTCA9ICJSdW5u
aW5nLi4uIjsKKyAgICAgICAgaWYgKGlzSW5Ccm93c2VyKQorICAgICAgICAgICAgdGhpcy5fYmVu
Y2htYXJrLmNlbGxzLm1lc3NhZ2UuaW5uZXJIVE1MID0gIlJ1bm5pbmcuLi4iOwogICAgIH0KICAg
ICAKICAgICByZXBvcnREb25lKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2JlbmNobWFyay5jZWxs
cy5tZXNzYWdlLmlubmVySFRNTCA9ICIiOworICAgICAgICBpZiAoaXNJbkJyb3dzZXIpCisgICAg
ICAgICAgICB0aGlzLl9iZW5jaG1hcmsuY2VsbHMubWVzc2FnZS5pbm5lckhUTUwgPSAiIjsKICAg
ICB9CiAgICAgCiAgICAgcmVwb3J0UmVzdWx0KHRpbWVzKQpAQCAtOTksNyArMTAxLDggQEAgY2xh
c3MgUmVzdWx0cyB7CiAgICAgewogICAgICAgICBmb3IgKGxldCBzdWJSZXN1bHQgb2YgUmVzdWx0
cy5zdWJSZXN1bHRzKQogICAgICAgICAgICAgdGhpc1tzdWJSZXN1bHRdLnJlcG9ydFJlc3VsdChT
dGF0cy5lcnJvcik7Ci0gICAgICAgIHRoaXMuX2JlbmNobWFyay5jZWxscy5tZXNzYWdlLmlubmVy
SFRNTCA9IHVybCArICI6IiArIGxpbmVOdW1iZXIgKyAiOiAiICsgbWVzc2FnZTsKKyAgICAgICAg
aWYgKGlzSW5Ccm93c2VyKQorICAgICAgICAgICAgdGhpcy5fYmVuY2htYXJrLmNlbGxzLm1lc3Nh
Z2UuaW5uZXJIVE1MID0gdXJsICsgIjoiICsgbGluZU51bWJlciArICI6ICIgKyBtZXNzYWdlOwog
ICAgIH0KIH0KIApJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9zdGF0cy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL3N0YXRzLmpz
CShyZXZpc2lvbiAyMDQ4NjgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL3N0
YXRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMCArMjUsMTYgQEAKICJ1c2Ugc3RyaWN0IjsK
IAogY2xhc3MgU3RhdHMgewotICAgIGNvbnN0cnVjdG9yKGNlbGwpCisgICAgY29uc3RydWN0b3Io
Y2VsbCwgcHJlZml4KQogICAgIHsKICAgICAgICAgdGhpcy5fY2VsbCA9IGNlbGw7CiAgICAgICAg
IHRoaXMuX2RhdGEgPSBbXTsKKyAgICAgICAgdGhpcy5fcHJlZml4ID0gIiI7CisgICAgICAgIGlm
ICghaXNJbkJyb3dzZXIgJiYgcHJlZml4KSB7CisgICAgICAgICAgICB0aGlzLl9wcmVmaXggPSBw
cmVmaXggKyAiOiAiOworICAgICAgICAgICAgaWYgKHRoaXMuX3ByZWZpeC5sZW5ndGggPCAyMCkK
KyAgICAgICAgICAgICAgICB0aGlzLl9wcmVmaXggKz0gIiAiLnJlcGVhdCgyMCAtIHRoaXMuX3By
ZWZpeC5sZW5ndGgpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHJlc2V0KC4uLmRhdGEp
CkBAIC05MSwxNSArOTcsMTggQEAgY2xhc3MgU3RhdHMgewogICAgICAgICAgICAgcmV0dXJuICJF
UlJPUiI7CiAgICAgICAgIAogICAgICAgICBpZiAoImludGVydmFsIiBpbiByZXN1bHQpCi0gICAg
ICAgICAgICByZXR1cm4gYCR7cmVzdWx0Lm1lYW4udG9GaXhlZCgyKX0gbXMgJnBsdXNtbjsgJHty
ZXN1bHQuaW50ZXJ2YWwudG9GaXhlZCgyKX0gbXNgOworICAgICAgICAgICAgcmV0dXJuIGAke3Ro
aXMuX3ByZWZpeH0ke3Jlc3VsdC5tZWFuLnRvRml4ZWQoMil9IG1zICstICR7cmVzdWx0LmludGVy
dmFsLnRvRml4ZWQoMil9IG1zYDsKIAotICAgICAgICByZXR1cm4gYCR7cmVzdWx0Lm1lYW4udG9G
aXhlZCgyKX0gbXNgOworICAgICAgICByZXR1cm4gYCR7dGhpcy5fcHJlZml4fSR7cmVzdWx0Lm1l
YW4udG9GaXhlZCgyKX0gbXNgOwogICAgIH0KICAgICAKICAgICBfdXBkYXRlKCkKICAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9jZWxsKQotICAgICAgICAgICAgdGhpcy5fY2VsbC5pbm5lckhUTUwg
PSB0aGlzLnRvU3RyaW5nKCk7CisgICAgICAgIGlmIChpc0luQnJvd3NlcikgeworICAgICAgICAg
ICAgaWYgKHRoaXMuX2NlbGwpCisgICAgICAgICAgICAgICAgdGhpcy5fY2VsbC5pbm5lckhUTUwg
PSB0aGlzLnRvU3RyaW5nKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcHJpbnQodGhp
cy50b1N0cmluZygpKTsKICAgICB9CiB9CiAKSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2Ft
cGxlQmVuY2gvQWlyL2JlbmNobWFyay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3Rz
L0VTNlNhbXBsZUJlbmNoL0Fpci9iZW5jaG1hcmsuanMJKHJldmlzaW9uIDIwNDg2OCkKKysrIFBl
cmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQWlyL2JlbmNobWFyay5qcwkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAidXNlIHN0cmljdCI7CiAKLWNsYXNzIEJlbmNo
bWFyayB7CitjbGFzcyBBaXJCZW5jaG1hcmsgewogICAgIGNvbnN0cnVjdG9yKHZlcmJvc2UgPSAw
KQogICAgIHsKICAgICAgICAgdGhpcy5fdmVyYm9zZSA9IHZlcmJvc2U7CkluZGV4OiBQZXJmb3Jt
YW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Fpci9zdHJlc3MtdGVzdC5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBQZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Fpci9zdHJlc3MtdGVzdC5qcwkocmV2
aXNpb24gMjA0ODY4KQorKysgUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5jaC9BaXIvc3Ry
ZXNzLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgbG9hZCgicGF5bG9h
ZC1haXJqcy1BQ0xqOEMuanMiKTsKIGxvYWQoInBheWxvYWQtdHlwZXNjcmlwdC1zY2FuSWRlbnRp
Zmllci5qcyIpOwogbG9hZCgiYmVuY2htYXJrLmpzIik7CiAKLWxldCBiZW5jaG1hcmsgPSBuZXcg
QmVuY2htYXJrKCk7CitsZXQgYmVuY2htYXJrID0gbmV3IEFpckJlbmNobWFyaygpOwogbGV0IGJl
Zm9yZSA9IHByZWNpc2VUaW1lKCk7CiAKIC8vIFJ1biBmb3IgYXQgbGVhc3QgMTAgaXRlcmF0aW9u
cy4KSW5kZXg6IFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMvYmVuY2htYXJr
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFBlcmZvcm1hbmNlVGVzdHMvRVM2U2FtcGxlQmVuY2gvQmFzaWMv
YmVuY2htYXJrLmpzCShyZXZpc2lvbiAyMDQ4NjgpCisrKyBQZXJmb3JtYW5jZVRlc3RzL0VTNlNh
bXBsZUJlbmNoL0Jhc2ljL2JlbmNobWFyay5qcwkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQs
NyBAQAogICovCiAidXNlIHN0cmljdCI7CiAKLWNsYXNzIEJlbmNobWFyayB7CitjbGFzcyBCYXNp
Y0JlbmNobWFyayB7CiAgICAgY29uc3RydWN0b3IodmVyYm9zZSA9IDApCiAgICAgewogICAgICAg
ICB0aGlzLl92ZXJib3NlID0gdmVyYm9zZTsKQEAgLTYzLDQgKzYzLDMgQEAgZnVuY3Rpb24gcnVu
QmVuY2htYXJrKCkKICAgICBsZXQgYWZ0ZXIgPSBjdXJyZW50VGltZSgpOwogICAgIHJldHVybiBh
ZnRlciAtIGJlZm9yZTsKIH0KLQpJbmRleDogUGVyZm9ybWFuY2VUZXN0cy9FUzZTYW1wbGVCZW5j
aC9CYXNpYy9zdHJlc3MtdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBQZXJmb3JtYW5jZVRlc3RzL0VT
NlNhbXBsZUJlbmNoL0Jhc2ljL3N0cmVzcy10ZXN0LmpzCShyZXZpc2lvbiAyMDQ4NjgpCisrKyBQ
ZXJmb3JtYW5jZVRlc3RzL0VTNlNhbXBsZUJlbmNoL0Jhc2ljL3N0cmVzcy10ZXN0LmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGxvYWQoInN0YXRlLmpzIik7CiBsb2FkKCJ1dGls
LmpzIik7CiBsb2FkKCJiZW5jaG1hcmsuanMiKTsKIAotbGV0IGJlbmNobWFyayA9IG5ldyBCZW5j
aG1hcmsoKTsKK2xldCBiZW5jaG1hcmsgPSBuZXcgQmFzaWNCZW5jaG1hcmsoKTsKIGxldCBiZWZv
cmUgPSBwcmVjaXNlVGltZSgpOwogCiAvLyBSdW4gZm9yIGF0IGxlYXN0IDEwIGl0ZXJhdGlvbnMu
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNDg2OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBA
QAorMjAxNi0wOC0yMyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAg
ICBJdCBzaG91bGQgYmUgZWFzeSB0byBydW4gRVM2U2FtcGxlQmVuY2ggZnJvbSB0aGUganNjIHNo
ZWxsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjEw
ODUKKworICAgICAgICBSZXZpZXdlZCBieSBZdXN1a2UgU3V6dWtpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggYWRkcyBhIG5ldyBmdW5jdGlvbiBjYWxsZWQgYHJ1blN0cmluZ2AgdG8gdGhlIHNoZWxs
LgorICAgICAgICBJdCB0YWtlcyBpbiBhIHN0cmluZywgYW5kIGV4ZWN1dGVzIGl0IGluIGEgbmV3
IGdsb2JhbCBvYmplY3QuCisgICAgICAgIFRoZW4sIGl0IHJldHVybnMgdGhlIGdsb2JhbCBvYmpl
Y3QgaXQgZXhlY3V0ZWQgdGhlIGNvZGUgaW4uCisgICAgICAgIFRoaXMgYWxsb3dzIHRoZSBjb2Rl
IHRvIHN0YXNoIHNvbWUga2luZCBvZiBhIHJlc3VsdCBvbiB0aGUgZ2xvYmFsLAorICAgICAgICBh
bmQgdGhlbiBoYXZlIHRoZSBjYWxsZXIgb2YgYHJ1blN0cmluZ2AgZXh0cmFjdCB0aGUgcmVzdWx0
LgorCisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKEdsb2JhbE9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24pOgorICAgICAgICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorCiAyMDE2LTA4LTIzICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgICVUeXBlZEFycmF5
JS5wcm90b3R5cGUuc2xpY2UgbmVlZHMgdG8gY2hlY2sgdGhhdCB0aGUgc291cmNlIGFuZCBkZXN0
aW5hdGlvbiBoYXZlIG5vdCBiZWVuIGRldGFjaGVkLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDIwNDg2OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01ODksNiArNTg5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZnVuYwogI2VuZGlmCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBmdW5jdGlvblZlcnNpb24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBmdW5jdGlvblJ1bihFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuU3RyaW5nKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkKEV4ZWNTdGF0ZSopOwogc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkU3RyaW5nKEV4ZWNT
dGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZWFk
RmlsZShFeGVjU3RhdGUqKTsKQEAgLTc4NSw2ICs3ODYsNyBAQCBwcm90ZWN0ZWQ6CiAjZW5kaWYK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJ2ZXJzaW9uIiwgZnVuY3Rpb25WZXJzaW9uLCAxKTsK
ICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJydW4iLCBmdW5jdGlvblJ1biwgMSk7CisgICAgICAg
IGFkZEZ1bmN0aW9uKHZtLCAicnVuU3RyaW5nIiwgZnVuY3Rpb25SdW5TdHJpbmcsIDEpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgImxvYWQiLCBmdW5jdGlvbkxvYWQsIDEpOwogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgImxvYWRTdHJpbmciLCBmdW5jdGlvbkxvYWRTdHJpbmcsIDEpOwogICAg
ICAgICBhZGRGdW5jdGlvbih2bSwgInJlYWRGaWxlIiwgZnVuY3Rpb25SZWFkRmlsZSwgMSk7CkBA
IC0xNDQzLDYgKzE0NDUsMzEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
blJ1bgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoc3RvcFdhdGNoLmdldEVs
YXBzZWRNUygpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25S
dW5TdHJpbmcoRXhlY1N0YXRlKiBleGVjKQoreworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5h
cmd1bWVudCgwKS50b1dURlN0cmluZyhleGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9u
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisKKyAg
ICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKGV4ZWMt
PnZtKCksIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGpzTnVsbCgp
KSwgVmVjdG9yPFN0cmluZz4oKSk7CisKKyAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIDApOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICAgICAgYXJyYXkt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAorICAg
ICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlv
bj4gZXhjZXB0aW9uOworICAgIGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBt
YWtlU291cmNlKHNvdXJjZSksIEpTVmFsdWUoKSwgZXhjZXB0aW9uKTsKKworICAgIGlmIChleGNl
cHRpb24pIHsKKyAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShnbG9iYWxPYmplY3QpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uTG9hZChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgU3RyaW5nIGZpbGVOYW1lID0gZXhlYy0+
YXJndW1lbnQoMCkudG9XVEZTdHJpbmcoZXhlYyk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>