<?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>220421</bug_id>
          
          <creation_ts>2021-01-07 10:22:36 -0800</creation_ts>
          <short_desc>LayoutTestFinder should be in charge of finding expectations for each test</short_desc>
          <delta_ts>2024-03-14 17:26:58 -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>Tools / Tests</component>
          <version>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220025</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=270974</see_also>
          <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>
          <dependson>221577</dependson>
    
    <dependson>222662</dependson>
    
    <dependson>222770</dependson>
    
    <dependson>224329</dependson>
    
    <dependson>224442</dependson>
    
    <dependson>232018</dependson>
    
    <dependson>232576</dependson>
    
    <dependson>235370</dependson>
    
    <dependson>268379</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Sneddon [:gsnedders]">gsnedders</reporter>
          <assigned_to name="Sam Sneddon [:gsnedders]">gsnedders</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1717990</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-01-07 10:22:36 -0800</bug_when>
    <thetext>Following on from bug 220025, as mentioned in comment 5:

&gt; To summarise what [myself and jbedard] discussed in person, my longer term plan was to migrate all the expectation-finding code into the LayoutTestFinder as well. Currently we build up TestInputs in the manager, add the reference_files to them in layout_test_runner, and then construct a DriverOutput with all the relevant expectations in single_test_runner. This doesn&apos;t really make sense to have split across three places.
&gt;
&gt; At the moment, after [bug 220025], finding expectations (references among them) remain with the Port, but that should be changed in a later patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717991</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-01-07 10:22:44 -0800</bug_when>
    <thetext>&lt;rdar://problem/72894403&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726281</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2021-02-05 14:34:15 -0800</bug_when>
    <thetext>So, there&apos;s at least a few complications here:

We&apos;re not just wanting to create TestInput in the LayoutTestFinder itself, as these also contain information related to the specific run (e.g., the used timeout, should_dump_jsconsolelog_in_stderr).

Anything related to the specific run should probably just be passed through to the point where we create the port.driver.DriverInput, and most of what&apos;s in port.driver.DriverOuput should (perhaps ironically) be in the new TestInput.

Finally, there&apos;s a few places where we currently behave like the device_type can depend on the current worker (e.g. `self._port.target_host(self._worker_number).device_type`) and others where we don&apos;t (e.g., `self._driver.host.device_type`). I guess we can treat it as the latter everywhere?

I think stage one at this point is to simplify what we store in TestInput and move some of it into DriverInput, so that TestInput moves towards having less complexity in it, to make it easier for us to move where it gets created?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1832113</commentid>
    <comment_count>3</comment_count>
      <attachid>449501</attachid>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2022-01-19 11:43:36 -0800</bug_when>
    <thetext>Created attachment 449501
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2009155</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Sneddon [:gsnedders]">gsnedders</who>
    <bug_when>2024-01-30 16:45:42 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/23546</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2021192</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-03-14 17:26:56 -0700</bug_when>
    <thetext>Committed 276129@main (bee9faa82faa): &lt;https://commits.webkit.org/276129@main&gt;

Reviewed commits have been landed. Closing PR #23546 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>449501</attachid>
            <date>2022-01-19 11:43:36 -0800</date>
            <delta_ts>2024-01-30 16:46:33 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-220421-20220119194335.patch</filename>
            <type>text/plain</type>
            <size>30043</size>
            <attacher name="Sam Sneddon [:gsnedders]">gsnedders</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg4MjE3CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtLnB5CmluZGV4IGI2NjJiNWM1MmFmMDcyOTU4YjVm
YjA5OThkNjY0YTQzZjc4NjE5YjIuLmYwNzcyMjk4NzI5NGI5NjIzMmRhOWNjYTFjYzhjODY0NDRh
ZjQ5NmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9m
aWxlc3lzdGVtLnB5CkBAIC00MSw2ICs0MSwxMSBAQCBpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtp
dGNvcmVweSBpbXBvcnQgc3RyaW5nX3V0aWxzCiAKK3RyeToKKyAgICBmcm9tIG9zIGltcG9ydCBz
Y2FuZGlyLCB3YWxrCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgZnJvbSBzY2FuZGlyIGltcG9y
dCBzY2FuZGlyLCB3YWxrCisKIAogY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgogICAgICIiIkZp
bGVTeXN0ZW0gaW50ZXJmYWNlIGZvciB3ZWJraXRweS4KQEAgLTgwLDEwICs4NSw3IEBAIGNsYXNz
IEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIG9zLmNoZGlyKHBhdGgpCiAKICAg
ICBkZWYgY29weWZpbGUoc2VsZiwgc291cmNlLCBkZXN0aW5hdGlvbik6Ci0gICAgICAgIHJldHVy
biBzaHV0aWwuY29weWZpbGUoc291cmNlLCBkZXN0aW5hdGlvbikKLQotICAgIGRlZiBjb3B5bW9k
ZShzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKLSAgICAgICAgcmV0dXJuIHNodXRpbC5jb3B5
bW9kZShzb3VyY2UsIGRlc3RpbmF0aW9uKQorICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNl
LCBkZXN0aW5hdGlvbikKIAogICAgIGRlZiBkaXJuYW1lKHNlbGYsIHBhdGgpOgogICAgICAgICBy
ZXR1cm4gb3MucGF0aC5kaXJuYW1lKHBhdGgpCkBAIC0xMDQsNyArMTA2LDcgQEAgY2xhc3MgRmls
ZVN5c3RlbShvYmplY3QpOgogICAgICAgICBkaXJfZmlsdGVyID0gZGlyX2ZpbHRlciBvciBmaWx0
ZXJfYWxsCiAKICAgICAgICAgZGlycyA9IFtdCi0gICAgICAgIGZvciAoZGlycGF0aCwgZGlybmFt
ZXMsIGZpbGVuYW1lcykgaW4gb3Mud2FsayhwYXRoKToKKyAgICAgICAgZm9yIChkaXJwYXRoLCBk
aXJuYW1lcywgZmlsZW5hbWVzKSBpbiB3YWxrKHBhdGgpOgogICAgICAgICAgICAgaWYgZGlyX2Zp
bHRlcihzZWxmLCBkaXJwYXRoKToKICAgICAgICAgICAgICAgICBkaXJzLmFwcGVuZChkaXJwYXRo
KQogICAgICAgICByZXR1cm4gZGlycwpAQCAtMTMzLDcgKzEzNSw3IEBAIGNsYXNzIEZpbGVTeXN0
ZW0ob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5iYXNlbmFtZShwYXRoKSBpbiBkaXJzX3RvX3Nr
aXA6CiAgICAgICAgICAgICByZXR1cm4gW10KIAotICAgICAgICBmb3IgKGRpcnBhdGgsIGRpcm5h
bWVzLCBmaWxlbmFtZXMpIGluIG9zLndhbGsocGF0aCk6CisgICAgICAgIGZvciAoZGlycGF0aCwg
ZGlybmFtZXMsIGZpbGVuYW1lcykgaW4gd2FsayhwYXRoKToKICAgICAgICAgICAgIGZvciBkIGlu
IGRpcnNfdG9fc2tpcDoKICAgICAgICAgICAgICAgICBpZiBkIGluIGRpcm5hbWVzOgogICAgICAg
ICAgICAgICAgICAgICBkaXJuYW1lcy5yZW1vdmUoZCkKQEAgLTE2MSwxMiArMTYzLDE4IEBAIGNs
YXNzIEZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICBkZWYgaXNkaXIoc2VsZiwgcGF0aCk6CiAgICAg
ICAgIHJldHVybiBvcy5wYXRoLmlzZGlyKHBhdGgpCiAKKyAgICBkZWYgaXNsaW5rKHNlbGYsIHBh
dGgpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2xpbmsocGF0aCkKKwogICAgIGRlZiBqb2lu
KHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKmNvbXBzKQogCiAg
ICAgZGVmIGxpc3RkaXIoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBvcy5saXN0ZGlyKHBh
dGgpCiAKKyAgICBkZWYgc2NhbmRpcihzZWxmLCBwYXRoKToKKyAgICAgICAgcmV0dXJuIHNjYW5k
aXIocGF0aCkKKwogICAgIGRlZiBta2R0ZW1wKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgIiIi
Q3JlYXRlIGFuZCByZXR1cm4gYSB1bmlxdWVseSBuYW1lZCBkaXJlY3RvcnkuCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2su
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZmlsZXN5c3RlbV9tb2Nr
LnB5CmluZGV4IDg4MDlkMmRkYzI3OGFmMTFjYThjY2ExMThlYjhjYTU0NzNmMTFkZTcuLjViZTE2
ZTJiMDFlMjczYzdmYzdhMGZhM2QwOTAwMjEwZTE4YmZiYjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9maWxlc3lzdGVtX21vY2sucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2ZpbGVzeXN0ZW1fbW9jay5weQpAQCAt
MTE1LDkgKzExNSw2IEBAIGNsYXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgIHNl
bGYuZmlsZXNbZGVzdGluYXRpb25dID0gc2VsZi5maWxlc1tzb3VyY2VdCiAgICAgICAgIHNlbGYu
d3JpdHRlbl9maWxlc1tkZXN0aW5hdGlvbl0gPSBzZWxmLmZpbGVzW3NvdXJjZV0KIAotICAgIGRl
ZiBjb3B5bW9kZShzZWxmLCBzb3VyY2UsIGRlc3RpbmF0aW9uKToKLSAgICAgICAgcGFzcwotCiAg
ICAgZGVmIGRpcm5hbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9zcGxpdChw
YXRoKVswXQogCkBAIC0xOTgsNiArMTk1LDkgQEAgY2xhc3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0
KToKICAgICBkZWYgaXNkaXIoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLm5vcm1w
YXRoKHBhdGgpIGluIHNlbGYuZGlycwogCisgICAgZGVmIGlzbGluayhzZWxmLCBwYXRoKToKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKICAgICBkZWYgX3Nsb3dfYnV0X2NvcnJlY3Rfam9pbihzZWxm
LCAqY29tcHMpOgogICAgICAgICByZXR1cm4gcmUuc3ViKHJlLmVzY2FwZShvcy5wYXRoLnNlcCks
IHNlbGYuc2VwLCBvcy5wYXRoLmpvaW4oKmNvbXBzKSkKIApAQCAtMjQxLDYgKzI0MSw5IEBAIGNs
YXNzIE1vY2tGaWxlU3lzdGVtKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgIGZpbGVzLmFw
cGVuZChyZW1haW5pbmcpCiAgICAgICAgIHJldHVybiBkaXJzICsgZmlsZXMKIAorICAgIGRlZiBz
Y2FuZGlyKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gU2NhbkRpck1vY2soc2VsZiwgcGF0
aCkKKyAgICAKICAgICBkZWYgbXRpbWUoc2VsZiwgcGF0aCk6CiAgICAgICAgIGlmIHNlbGYuZXhp
c3RzKHBhdGgpOgogICAgICAgICAgICAgcmV0dXJuIDAKQEAgLTQzNyw2ICs0NDAsNjYgQEAgY2xh
c3MgTW9ja0ZpbGVTeXN0ZW0ob2JqZWN0KToKICAgICAgICAgc2VsZi5tb3ZlKHNvdXJjZSwgZGVz
dGluYXRpb24pCiAKIAorY2xhc3MgU2NhbkRpck1vY2sob2JqZWN0KToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZnMsIHBhdGgpOgorICAgICAgICBzZWxmLl9mcyA9IGZzCisgICAgICAgIHNlbGYu
X3BhdGggPSBwYXRoCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4g
c2VsZgorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICBmcyA9IHNlbGYuX2ZzCisg
ICAgICAgIHBhdGggPSBzZWxmLl9wYXRoCisgICAgICAgIAorICAgICAgICBzZXAgPSBmcy5zZXAK
KyAgICAgICAgaWYgbm90IGZzLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgcmFpc2UgT1NFcnJv
cigiJXMgaXMgbm90IGEgZGlyZWN0b3J5IiAlIHBhdGgpCisKKyAgICAgICAgaWYgbm90IHBhdGgu
ZW5kc3dpdGgoc2VwKToKKyAgICAgICAgICAgIHBhdGggKz0gc2VwCisKKyAgICAgICAgc2Vlbl9k
aXJzID0gc2V0KCkKKyAgICAgICAgZm9yIGYgaW4gZnMuZmlsZXM6CisgICAgICAgICAgICBpZiBm
cy5leGlzdHMoZikgYW5kIGYuc3RhcnRzd2l0aChwYXRoKToKKyAgICAgICAgICAgICAgICByZW1h
aW5pbmcgPSBmW2xlbihwYXRoKTpdCisgICAgICAgICAgICAgICAgaWYgc2VwIGluIHJlbWFpbmlu
ZzoKKyAgICAgICAgICAgICAgICAgICAgZGlyID0gcmVtYWluaW5nWzpyZW1haW5pbmcuaW5kZXgo
c2VwKV0KKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRpciBpbiBzZWVuX2RpcnM6CisgICAg
ICAgICAgICAgICAgICAgICAgICB5aWVsZCBEaXJFbnRyeU1vY2soZnMsIGZzLmpvaW4ocGF0aCwg
ZGlyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlZW5fZGlycy5hZGQoZGlyKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIERpckVudHJ5TW9jayhm
cywgZikKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFj
ZWJhY2spOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2NsYXNzIERpckVudHJ5TW9jayhvYmpl
Y3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCk6CisgICAgICAgIHNlbGYuX2Zz
ID0gZnMKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgQHByb3BlcnR5CisgICAgZGVm
IG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl9mcy5iYXNlbmFtZShzZWxmLnBhdGgp
CisKKyAgICBkZWYgaXNfZGlyKHNlbGYsIGZvbGxvd19zeW1saW5rcz1UcnVlKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2ZzLmlzZGlyKHNlbGYucGF0aCkgYW5kIChmb2xsb3dfc3ltbGlua3Mgb3Ig
bm90IHNlbGYuX2ZzLmlzbGluayhzZWxmLnBhdGgpKQorCisgICAgZGVmIGlzX2ZpbGUoc2VsZiwg
Zm9sbG93X3N5bWxpbmtzPVRydWUpOgorICAgICAgICByZXR1cm4gc2VsZi5fZnMuaXNmaWxlKHNl
bGYucGF0aCkgYW5kIChmb2xsb3dfc3ltbGlua3Mgb3Igbm90IHNlbGYuX2ZzLmlzbGluayhzZWxm
LnBhdGgpKQorCisgICAgZGVmIGlzX3N5bWxpbmsoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
Ll9mcy5pc2xpbmsoc2VsZi5wYXRoKQorCisgICAgZGVmIHN0YXQoc2VsZiwgZm9sbG93X3N5bWxp
bmtzPVRydWUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJtb2NrIG9ubHkg
c3VwcG9ydHMgZm9sbG93X3N5bWxpbmtzIikKKworICAgIGRlZiBpbm9kZShzZWxmKToKKyAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisKIGNsYXNzIFdyaXRhYmxlQmluYXJ5Rmls
ZU9iamVjdChvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcywgcGF0aCk6CiAgICAg
ICAgIHNlbGYuZnMgPSBmcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyLnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA4MzNhODM5NjVmM2QxMmI1MmZlNWE1YjJiNmZhNmEyMWI3MTQ2MjQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy9sYXlvdXRfdGVzdF9maW5kZXIucHkKQEAgLTAsMCArMSwzNzUgQEAKK2ltcG9ydCBm
bm1hdGNoCitpbXBvcnQgaXRlcnRvb2xzCitpbXBvcnQgYmlzZWN0CitpbXBvcnQganNvbgoraW1w
b3J0IHJlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorCitmcm9tIC4ubW9k
ZWxzLnRlc3QgaW1wb3J0IFRlc3QKKworCitzdXBwb3J0ZWRfdGVzdF9leHRlbnNpb25zID0gewor
ICAgICIuaHRtbCIsCisgICAgIi5zaHRtbCIsCisgICAgIi54bWwiLAorICAgICIueGh0bWwiLAor
ICAgICIucGwiLAorICAgICIucHkiLAorICAgICIuaHRtIiwKKyAgICAiLnBocCIsCisgICAgIi5z
dmciLAorICAgICIubWh0IiwKKyAgICAiLnhodCIsCit9CitzdXBwb3J0ZWRfdGVzdF9leHRlbnNp
b25zX3R1cGxlID0gdHVwbGUoc3VwcG9ydGVkX3Rlc3RfZXh0ZW5zaW9ucykKK3NpbXBsZV9iYXNl
bGluZV9leHRlbnNpb25zID0geyIud2F2IiwgIi53ZWJhcmNoaXZlIiwgIi50eHQiLCAiLnBuZyJ9
CitzdXBwb3J0ZWRfcmVmZXJlbmNlX2V4dGVuc2lvbnMgPSB7Ii5odG1sIiwgIi54bWwiLCAiLnho
dG1sIiwgIi5odG0iLCAiLnN2ZyIsICIueGh0In0KK3NpbXBsZV9leHBlY3RhdGlvbl90eXBlID0g
eworICAgICIud2F2IjogImF1ZGlvIiwKKyAgICAiLndlYmFyY2hpdmUiOiAidGV4dCIsCisgICAg
Ii50eHQiOiAidGV4dCIsCisgICAgIi5wbmciOiAicGl4ZWwiLAorfQorYXNzZXJ0IHN1cHBvcnRl
ZF9yZWZlcmVuY2VfZXh0ZW5zaW9ucyA8IHN1cHBvcnRlZF90ZXN0X2V4dGVuc2lvbnMKK2Fzc2Vy
dCBub3QgKHNpbXBsZV9iYXNlbGluZV9leHRlbnNpb25zICYgc3VwcG9ydGVkX3JlZmVyZW5jZV9l
eHRlbnNpb25zKQorYXNzZXJ0IHNldChzaW1wbGVfZXhwZWN0YXRpb25fdHlwZSkgPT0gc2ltcGxl
X2Jhc2VsaW5lX2V4dGVuc2lvbnMKKworc2tpcHBlZF9kaXJlY3RvcmllcyA9IHsKKyAgICAiLnN2
biIsCisgICAgIl9zdm4iLAorICAgICJyZXNvdXJjZXMiLAorICAgICJzdXBwb3J0IiwKKyAgICAi
c2NyaXB0LXRlc3RzIiwKKyAgICAidG9vbHMiLAorICAgICJyZWZlcmVuY2UiLAorICAgICJyZWZ0
ZXN0IiwKK30KKworcmVmZXJlbmNlX3N1ZmZpeGVzID0geworICAgICIiLmpvaW4ocGFpcikKKyAg
ICBmb3IgcGFpciBpbiBpdGVydG9vbHMucHJvZHVjdCgKKyAgICAgICAgKCItZXhwZWN0ZWQiLCAi
LWV4cGVjdGVkLW1pc21hdGNoIiwgIi1yZWYiLCAiLW5vdHJlZiIpLAorICAgICAgICBzdXBwb3J0
ZWRfcmVmZXJlbmNlX2V4dGVuc2lvbnMsCisgICAgKQorfQorcmVmZXJlbmNlX3N1ZmZpeGVzX3R1
cGxlID0gdHVwbGUocmVmZXJlbmNlX3N1ZmZpeGVzKQorZGlnaXRfcmUgPSByZS5jb21waWxlKCIo
WzAtOV0rKSIpCisKKworZGVmIG5hdHNvcnQoc3RyaW5nX3RvX3NwbGl0KToKKyAgICBzcGxpdCA9
IGRpZ2l0X3JlLnNwbGl0KHN0cmluZ190b19zcGxpdCkKKyAgICAjIHRoaXMgY29udmVydHMgdGhl
IHNwbGl0IG51bWJlcnMgaW50byB0dXBsZXMgc28gdGhhdCAiMDEiIDwgIjEiCisgICAgc3BsaXRb
MTo6Ml0gPSBbKGludChpKSwgaSkgZm9yIGkgaW4gc3BsaXRbMTo6Ml1dCisgICAgcmV0dXJuIHNw
bGl0CisKKworY2xhc3MgTGF5b3V0VGVzdEZpbmRlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBmcywgbGF5b3V0X3Rlc3RzX2Jhc2VfZGlyLCBiYXNlbGluZV9zZWFyY2hfcGF0aHMp
OgorICAgICAgICBzZWxmLmZzID0gZnMKKworICAgICAgICBsYXlvdXRfdGVzdHNfYmFzZV9kaXIg
PSBmcy5yZWFscGF0aChsYXlvdXRfdGVzdHNfYmFzZV9kaXIpCisgICAgICAgIGJhc2VsaW5lX3Nl
YXJjaF9wYXRocyA9IFtmcy5yZWFscGF0aChic3ApIGZvciBic3AgaW4gYmFzZWxpbmVfc2VhcmNo
X3BhdGhzXQorCisgICAgICAgIHNlbGYubGF5b3V0X3Rlc3RzX2Jhc2VfZGlyID0gbGF5b3V0X3Rl
c3RzX2Jhc2VfZGlyCisgICAgICAgIHNlbGYuYmFzZWxpbmVfc2VhcmNoX3BhdGhzID0gYmFzZWxp
bmVfc2VhcmNoX3BhdGhzCisKKyAgICAgICAgc2VsZi5zZWFyY2hfcGF0aHMgPSBbCisgICAgICAg
ICAgICBmcy5qb2luKAorICAgICAgICAgICAgICAgIGxheW91dF90ZXN0c19iYXNlX2RpciwKKyAg
ICAgICAgICAgICAgICBmcy5yZWxwYXRoKGJzcCwgbGF5b3V0X3Rlc3RzX2Jhc2VfZGlyKSwKKyAg
ICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciBic3AgaW4gYmFzZWxpbmVfc2VhcmNoX3BhdGhz
CisgICAgICAgIF0gKyBbbGF5b3V0X3Rlc3RzX2Jhc2VfZGlyXQorCisgICAgICAgIHNlbGYudzNj
X2RpcnMsIHNlbGYudzNjX2ZpbGVzID0gc2VsZi5fbG9hZF93M2NfcmVzb3VyY2VfZGF0YSgKKyAg
ICAgICAgICAgIGxheW91dF90ZXN0c19iYXNlX2RpcgorICAgICAgICApCisKKyAgICBkZWYgX2xv
YWRfdzNjX3Jlc291cmNlX2RhdGEoc2VsZiwgbGF5b3V0X3Rlc3RzX2Rpcik6CisgICAgICAgIGZp
bGVwYXRoID0gc2VsZi5mcy5qb2luKAorICAgICAgICAgICAgbGF5b3V0X3Rlc3RzX2RpciwgImlt
cG9ydGVkIiwgInczYyIsICJyZXNvdXJjZXMiLCAicmVzb3VyY2UtZmlsZXMuanNvbiIKKyAgICAg
ICAgKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZkID0gb3BlbihmaWxlcGF0aCwgInJi
IikKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcmV0dXJu
IHt9LCB7fQorCisgICAgICAgIHdpdGggZmQ6CisgICAgICAgICAgICBqc29uX2RhdGEgPSBqc29u
LmxvYWQoZmQpCisKKyAgICAgICAgZGlyc19ieV9wYXJlbnQgPSB7fQorICAgICAgICBmb3IgZnVs
bG5hbWUgaW4ganNvbl9kYXRhWyJkaXJlY3RvcmllcyJdOgorICAgICAgICAgICAgZGlybmFtZSwg
YmFzZW5hbWUgPSBmdWxsbmFtZS5yc3BsaXQoIi8iLCAxKQorICAgICAgICAgICAgZGlyc19ieV9w
YXJlbnQuc2V0ZGVmYXVsdCgiaW1wb3J0ZWQvdzNjLyIgKyBkaXJuYW1lLCBzZXQoKSkuYWRkKGJh
c2VuYW1lKQorCisgICAgICAgIGZpbGVzX2J5X3BhcmVudCA9IHt9CisgICAgICAgIGZvciBmdWxs
bmFtZSBpbiBqc29uX2RhdGFbImZpbGVzIl06CisgICAgICAgICAgICBkaXJuYW1lLCBiYXNlbmFt
ZSA9IGZ1bGxuYW1lLnJzcGxpdCgiLyIsIDEpCisgICAgICAgICAgICBmaWxlc19ieV9wYXJlbnQu
c2V0ZGVmYXVsdCgiaW1wb3J0ZWQvdzNjLyIgKyBkaXJuYW1lLCBzZXQoKSkuYWRkKGJhc2VuYW1l
KQorCisgICAgICAgIHJldHVybiBkaXJzX2J5X3BhcmVudCwgZmlsZXNfYnlfcGFyZW50CisKKyAg
ICBkZWYgZ2V0X3Rlc3RzKHNlbGYsIGdsb2JzPU5vbmUpOgorICAgICAgICAiIiJHZXQgVGVzdCBv
YmplY3RzIGZvciBlaXRoZXIgYWxsIExheW91dFRlc3RzIG9yIHRob3NlIHdpdGggcGF0aHMgc3Bl
Y2lmaWNpZWQgYnkgZ2xvYnMiIiIKKyAgICAgICAgIyBUaGUgbWFqb3JpdHkgb2YgdGhlIGltcGxl
bWVudGF0aW9uIGlzIGFjdHVhbGx5IGRlbGVnYXRlZCB0bworICAgICAgICAjIF9nZXRfdGVzdHNf
aW5fZGlyZWN0b3J5OyB0aGlzIGZ1bmN0aW9uIGp1c3QgZG9lcyBzb21lIGJhc2ljIGhhbmRsaW5n
IG9mIHRoZQorICAgICAgICAjIGdsb2JzIGJlZm9yZSBkZWNpZGluZyB3aGljaCBkaXJlY3Rvcmll
cyB0byBzY2FuLgorCisgICAgICAgIGlmIG5vdCBnbG9iczoKKyAgICAgICAgICAgIHlpZWxkIGZy
b20gc2VsZi5fZ2V0X3Rlc3RzX2luX2RpcmVjdG9yeShkaXJlY3Rvcnk9IiIpCisgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBhbGxfc3BsaXRfZ2xvYnMgPSBbc2VsZi5mcy5zcGxpdChnbG9i
KSBmb3IgZ2xvYiBpbiBnbG9ic10KKyAgICAgICAgIyBGSVhNRTogY2FuIHdlIHNvbWVob3cgZ3Jv
dXAgdGhlc2UgYnkgZGlybmFtZT8gc2VlIHRlc3RfcHJlc2VydmVzX29yZGVyX21peGVkX2ZpbGVf
dHlwZSBob3dldmVyCisgICAgICAgIGZvciBkaXJuYW1lLCBiYXNlbmFtZSBpbiBhbGxfc3BsaXRf
Z2xvYnM6CisgICAgICAgICAgICBpZiBub3QgZGlybmFtZToKKyAgICAgICAgICAgICAgICB5aWVs
ZCBmcm9tIHNlbGYuX2dldF90ZXN0c19pbl9kaXJlY3RvcnkoCisgICAgICAgICAgICAgICAgICAg
IGRpcmVjdG9yeT0iIiwgZm5maWx0ZXI9W2Jhc2VuYW1lXQorICAgICAgICAgICAgICAgICkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAjIHRoaXMgaXMgbWF5YmUgbm90
IHdoYXQgd2Ugd2FudD8gaXQgbWlzc2VzIHRoaW5ncyBvbmx5IGluIHBsYXRmb3JtLworICAgICAg
ICAgICAgZGlycyA9IHNvcnRlZCgKKyAgICAgICAgICAgICAgICBzZXQoCisgICAgICAgICAgICAg
ICAgICAgICgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZnMucmVscGF0aChwLCBzZWFy
Y2hfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBzZWFyY2hfcGF0aCBpbiBzZWxm
LnNlYXJjaF9wYXRocworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5mcy5n
bG9iKHNlbGYuZnMuam9pbihzZWFyY2hfcGF0aCwgZGlybmFtZSkpCisgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICApLAorICAgICAgICAgICAgICAgIGtleT1uYXRzb3J0LAor
ICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIGQgaW4gZGlyczoKKyAgICAgICAgICAgICAg
ICAjIHRoZSBiYXNlbmFtZSBjYW4gYmUgZW1wdHkgaW4gdGhlIGNhc2UgdGhhdCB0ZXN0LyBpcyBw
YXNzZWQKKyAgICAgICAgICAgICAgICBpZiBub3QgYmFzZW5hbWU6CisgICAgICAgICAgICAgICAg
ICAgIHlpZWxkIGZyb20gc2VsZi5fZ2V0X3Rlc3RzX2luX2RpcmVjdG9yeShkaXJlY3Rvcnk9ZCkK
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHNl
bGYuX2dldF90ZXN0c19pbl9kaXJlY3RvcnkoCisgICAgICAgICAgICAgICAgICAgICAgICBkaXJl
Y3Rvcnk9ZCwgZm5maWx0ZXI9W2Jhc2VuYW1lXQorICAgICAgICAgICAgICAgICAgICApCisKKyAg
ICBkZWYgX2dldF90ZXN0c19pbl9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5LCBmbmZpbHRlcj1O
b25lKToKKyAgICAgICAgIiIiR2V0IHRlc3RzIGluIGRpcmVjdG9yeSwgZmlsdGVyaW5nIGVudHJp
ZXMgaW4gcm9vdCBkaXJlY3RvcnkgYnkgZmlsZW5hbWUgdXNpbmcKKyAgICAgICAgZm5tYXRjaGVz
IGluIGZuZmlsdGVyLiBUaGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyByZWN1cnNpdmUsIGFzIGxvbmcg
YXMgZm5maWx0ZXIKKyAgICAgICAgbWF0Y2hlcyBhbnkgZGlyZWN0b3J5LgorICAgICAgICAiIiIK
KworICAgICAgICBzdGFjayA9IFsKKyAgICAgICAgICAgICgKKyAgICAgICAgICAgICAgICBkaXJl
Y3RvcnksCisgICAgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICAgICBzZWxmLmZzLmpv
aW4oc2VhcmNoX3BhdGgsIGRpcmVjdG9yeSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIHNlYXJj
aF9wYXRoIGluIHNlbGYuc2VhcmNoX3BhdGhzCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAg
ICAgICkKKyAgICAgICAgXQorICAgICAgICBmb2xsb3dfc3ltbGlua3MgPSBGYWxzZQorCisgICAg
ICAgIHdoaWxlIHN0YWNrOgorICAgICAgICAgICAgY3VycmVudF9wYXRoLCBjdXJyZW50X3NlYXJj
aF9wYXRocyA9IHN0YWNrLnBvcCgpCisgICAgICAgICAgICBhc3NlcnQgbGVuKGN1cnJlbnRfc2Vh
cmNoX3BhdGhzKSA9PSBsZW4oc2VsZi5zZWFyY2hfcGF0aHMpCisKKyAgICAgICAgICAgIGRpcnMg
PSBzZXQoKQorICAgICAgICAgICAgZmlsZXMgPSBzZXQoKQorICAgICAgICAgICAgb3RoZXJzID0g
c2V0KCkKKworICAgICAgICAgICAgY3VycmVudF9kaXJzID0gT3JkZXJlZERpY3QoKQorICAgICAg
ICAgICAgZm9yIGksIGN1cnJlbnRfc2VhcmNoX3BhdGggaW4gZW51bWVyYXRlKGN1cnJlbnRfc2Vh
cmNoX3BhdGhzKToKKyAgICAgICAgICAgICAgICBpZiBjdXJyZW50X3NlYXJjaF9wYXRoIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyID0ge30KKyAgICAgICAgICAgICAgICAg
ICAgd2l0aCBzZWxmLmZzLnNjYW5kaXIoY3VycmVudF9zZWFyY2hfcGF0aCkgYXMgaXQ6CisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gaXQ6CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3VycmVudF9kaXJbZW50cnkubmFtZV0gPSBlbnRyeS5wYXRoCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgZW50cnkuaXNfZGlyKGZvbGxvd19zeW1saW5rcz1mb2xsb3df
c3ltbGlua3MpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJzLmFkZChlbnRy
eS5uYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZW50cnkuaXNfZmlsZShm
b2xsb3dfc3ltbGlua3M9Zm9sbG93X3N5bWxpbmtzKToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsZXMuYWRkKGVudHJ5Lm5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzLmFkZChlbnRy
eS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2RpcnNbY3VycmVudF9zZWFyY2hf
cGF0aF0gPSBjdXJyZW50X2RpcgorICAgICAgICAgICAgICAgIGV4Y2VwdCAoRmlsZU5vdEZvdW5k
RXJyb3IsIE9TRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlYXJjaF9wYXRo
c1tpXSA9IE5vbmUKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAg
aWYgZGlycyAmIChmaWxlcyB8IG90aGVycyk6CisgICAgICAgICAgICAgICAgIyBUT0RPOiBnaXZl
IGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2l0aCBwYXRocworICAgICAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigiZmlsZW5hbWUgW3hdIGV4aXN0cyBhcyBib3RoIGRpciBhbmQgZmlsZSIpCisK
KyAgICAgICAgICAgIGRpcnMgLT0gc2tpcHBlZF9kaXJlY3RvcmllcworICAgICAgICAgICAgZGly
cyAtPSBzZWxmLnczY19kaXJzLmdldChjdXJyZW50X3BhdGgsIHNldCgpKQorICAgICAgICAgICAg
aWYgKAorICAgICAgICAgICAgICAgIGN1cnJlbnRfcGF0aCA9PSAiIgorICAgICAgICAgICAgICAg
IGFuZCAicGxhdGZvcm0iIGluIGRpcnMKKyAgICAgICAgICAgICAgICBhbmQgKGZuZmlsdGVyIGlz
IE5vbmUgb3IgInBsYXRmb3JtIiBub3QgaW4gZm5maWx0ZXIpCisgICAgICAgICAgICApOgorICAg
ICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCJwbGF0Zm9ybSIpCisKKyAgICAgICAgICAgICMgc29y
dCB3aXRoIC8gYXBwZW5kZWQgdG8gbWF0Y2ggbGVnYWN5IExheW91dFRlc3RGaW5kZXIoISkKKyAg
ICAgICAgICAgIHNvcnRlZF9kaXJzID0gc29ydGVkKGRpcnMsIGtleT1sYW1iZGEgeDogbmF0c29y
dCh4ICsgIi8iKSkKKworICAgICAgICAgICAgaWYgZm5maWx0ZXIgaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICB5aWVsZCBmcm9tIHNlbGYuX3Byb2Nlc3NfZGlyKGN1cnJlbnRfcGF0aCwgZmlsZXMs
IGN1cnJlbnRfZGlycykKKyAgICAgICAgICAgICAgICBuZXh0X2RpcnMgPSBzb3J0ZWRfZGlycwor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXh0X2RpcnMgPSBbXQorICAgICAg
ICAgICAgICAgIGRpcl9vdXRwdXQgPSBsaXN0KHNlbGYuX3Byb2Nlc3NfZGlyKGN1cnJlbnRfcGF0
aCwgZmlsZXMsIGN1cnJlbnRfZGlycykpCisgICAgICAgICAgICAgICAgZm9yIHBhdHRlcm4gaW4g
Zm5maWx0ZXI6CisgICAgICAgICAgICAgICAgICAgIGlmIHBhdHRlcm4gPT0gIioiOgorICAgICAg
ICAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSBkaXJfb3V0cHV0CisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXh0X2RpcnMuZXh0ZW5kKHNvcnRlZF9kaXJzKQorICAgICAgICAgICAgICAgICAg
ICAjIGVsaWYgZm5tYXRjaC5jb3VudCgiKiIpID4gMCBvciBmbm1hdGNoLmNvdW50KCI/IikgPiAw
IG9yIGZubWF0Y2guY291bnQoIlsiKSA+IDA6CisgICAgICAgICAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjb21waWxlZCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFu
c2xhdGUocGF0dGVybikpCisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBmcm9tICgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gZGlyX291dHB1dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IGNvbXBpbGVkLm1hdGNoKHRlc3QudGVzdF9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfZGlycy5leHRlbmQoZCBmb3IgZCBp
biBzb3J0ZWRfZGlycyBpZiBjb21waWxlZC5tYXRjaChkKSkKKworICAgICAgICAgICAgICAgICMg
d2UgZG9uJ3QgYXBwbHkgZm5maWx0ZXIgcmVjdXJzaXZlbHkKKyAgICAgICAgICAgICAgICBmbmZp
bHRlciA9IE5vbmUKKworICAgICAgICAgICAgZm9yIGQgaW4gcmV2ZXJzZWQobmV4dF9kaXJzKToK
KyAgICAgICAgICAgICAgICBuZXh0X3NlYXJjaF9wYXRocyA9IFsKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5mcy5qb2luKGN1ciwgZCkgaWYgY3VyIGlzIG5vdCBOb25lIGVsc2UgTm9uZQorICAg
ICAgICAgICAgICAgICAgICBmb3IgY3VyIGluIGN1cnJlbnRfc2VhcmNoX3BhdGhzCisgICAgICAg
ICAgICAgICAgXQorICAgICAgICAgICAgICAgIGFzc2VydCBsZW4obmV4dF9zZWFyY2hfcGF0aHMp
ID09IGxlbihzZWxmLnNlYXJjaF9wYXRocykKKyAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQo
KHNlbGYuZnMuam9pbihjdXJyZW50X3BhdGgsIGQpLCBuZXh0X3NlYXJjaF9wYXRocykpCisKKyAg
ICBkZWYgX3Byb2Nlc3NfZGlyKHNlbGYsIGN1cnJlbnRfdGVzdF9wYXRoLCBmaWxlcywgY3VycmVu
dF9kaXJzKToKKyAgICAgICAgdGVzdF9maWxlcyA9IFtdCisgICAgICAgIG5vbl90ZXN0X2ZpbGVz
ID0gW10KKyAgICAgICAgZm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICBpZiBzZWxmLmlzX3Rl
c3QoY3VycmVudF90ZXN0X3BhdGgsIGYpOgorICAgICAgICAgICAgICAgIHRlc3RfZmlsZXMuYXBw
ZW5kKGYpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5vbl90ZXN0X2ZpbGVz
LmFwcGVuZChmKQorCisgICAgICAgIHRlc3RfZmlsZXMgPSBzb3J0ZWQodGVzdF9maWxlcywga2V5
PW5hdHNvcnQpCisgICAgICAgIG5vbl90ZXN0X2ZpbGVzID0gc29ydGVkKG5vbl90ZXN0X2ZpbGVz
KSAgIyBOQjogbm90IG5hdHNvcnQgZm9yIGJpc2VjdCBiZWxvdworCisgICAgICAgIGZvciBuYW1l
IGluIHRlc3RfZmlsZXM6CisgICAgICAgICAgICBleHBlY3RhdGlvbnNfZm9yX2YgPSBbXQorICAg
ICAgICAgICAgbmFtZV93aXRob3V0X2V4dCwgXyA9IHNlbGYuZnMuc3BsaXRleHQobmFtZSkKKyAg
ICAgICAgICAgIGV4cGVjdGVkX3ByZWZpeCA9IG5hbWVfd2l0aG91dF9leHQgKyAiLWV4cGVjdGVk
IgorCisgICAgICAgICAgICBleHBlY3RlZF90ZXh0X3BhdGhzID0gW10KKyAgICAgICAgICAgIGV4
cGVjdGVkX2ltYWdlX3BhdGhzID0gW10KKyAgICAgICAgICAgIGV4cGVjdGVkX2F1ZGlvX3BhdGhz
ID0gW10KKyAgICAgICAgICAgIHJlZmVyZW5jZV9maWxlcyA9IFtdCisKKyAgICAgICAgICAgIGV4
cGVjdGVkX2NhbmRpZGF0ZXMgPSBbXQorICAgICAgICAgICAgZm9yIGV4cGVjdGVkX2ZpbGUgaW4g
bm9uX3Rlc3RfZmlsZXNbCisgICAgICAgICAgICAgICAgYmlzZWN0LmJpc2VjdF9sZWZ0KAorICAg
ICAgICAgICAgICAgICAgICBub25fdGVzdF9maWxlcywgZXhwZWN0ZWRfcHJlZml4CisgICAgICAg
ICAgICAgICAgKSA6IGJpc2VjdC5iaXNlY3RfbGVmdChub25fdGVzdF9maWxlcywgZXhwZWN0ZWRf
cHJlZml4WzotMV0gKyAiZSIpCisgICAgICAgICAgICBdOgorICAgICAgICAgICAgICAgIGV4cGVj
dGF0aW9uX3R5cGUgPSBzZWxmLmlzX2V4cGVjdGF0aW9uX2ZvcigKKyAgICAgICAgICAgICAgICAg
ICAgbmFtZSwgZXhwZWN0ZWRfZmlsZSwgZXhwZWN0ZWRfcHJlZml4CisgICAgICAgICAgICAgICAg
KQorICAgICAgICAgICAgICAgIGlmIG5vdCBleHBlY3RhdGlvbl90eXBlOgorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX2NhbmRpZGF0ZXMuYXBw
ZW5kKChleHBlY3RlZF9maWxlLCBleHBlY3RhdGlvbl90eXBlKSkKKworICAgICAgICAgICAgcGF0
aCA9IE5vbmUKKyAgICAgICAgICAgIGZvciBjdXJyZW50X3NlYXJjaF9wYXRoLCBjdXJyZW50X2Rp
ciBpbiByZXZlcnNlZChjdXJyZW50X2RpcnMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgaWYg
Y3VycmVudF9kaXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAg
ICAgICAgICAgICAgIGlmIG5hbWUgaW4gY3VycmVudF9kaXI6CisgICAgICAgICAgICAgICAgICAg
IGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludChmIntw
YXRofSBvdmVyd3JpZGRlbiBieSB7Y3VycmVudF9kaXJbbmFtZV19IikKKyAgICAgICAgICAgICAg
ICAgICAgcGF0aCA9IGN1cnJlbnRfZGlyW25hbWVdCisgICAgICAgICAgICAgICAgICAgIGV4cGVj
dGVkX3RleHRfcGF0aHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9pbWFnZV9w
YXRocyA9IFtdCisgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2F1ZGlvX3BhdGhzID0gW10K
KyAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX2ZpbGVzID0gW10KKworICAgICAgICAgICAg
ICAgIHJlZmVyZW5jZV9maWxlcy5hcHBlbmQoW10pCisKKyAgICAgICAgICAgICAgICBmb3IgZXhw
ZWN0ZWRfZmlsZSwgZXhwZWN0YXRpb25fdHlwZSBpbiBleHBlY3RlZF9jYW5kaWRhdGVzOgorICAg
ICAgICAgICAgICAgICAgICBpZiBleHBlY3RlZF9maWxlIGluIGN1cnJlbnRfZGlyOgorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfcGF0aCA9IGN1cnJlbnRfZGlyW2V4cGVjdGVkX2Zp
bGVdCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBleHBlY3RhdGlvbl90eXBlID09ICJ0ZXh0
IjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF90ZXh0X3BhdGhzLmFwcGVu
ZChleHBlY3RlZF9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBleHBlY3RhdGlv
bl90eXBlID09ICJhdWRpbyI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
YXVkaW9fcGF0aHMuYXBwZW5kKGV4cGVjdGVkX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBlbGlmIGV4cGVjdGF0aW9uX3R5cGUgPT0gInBpeGVsIjoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBleHBlY3RlZF9pbWFnZV9wYXRocy5hcHBlbmQoZXhwZWN0ZWRfcGF0aCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsaWYgZXhwZWN0YXRpb25fdHlwZSBpbiAoIj09IiwgIiE9Iik6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlX2ZpbGVzWy0xXS5hcHBlbmQo
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBlY3RhdGlvbl90eXBlLCBleHBl
Y3RlZF9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0ICgKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICApLCBmInVua25vd24gZXhwZWN0YXRpb24gdHlwZToge2V4cGVjdGF0aW9uX3R5cGV9
IgorCisgICAgICAgICAgICAgICAgaWYgbm90IHJlZmVyZW5jZV9maWxlc1stMV06CisgICAgICAg
ICAgICAgICAgICAgIHJlZmVyZW5jZV9maWxlcy5wb3AoKQorCisgICAgICAgICAgICBhc3NlcnQg
cGF0aC5zdGFydHN3aXRoKHNlbGYubGF5b3V0X3Rlc3RzX2Jhc2VfZGlyICsgIi8iKQorICAgICAg
ICAgICAgdHJpbW1lZF9wYXRoID0gcGF0aFtsZW4oc2VsZi5sYXlvdXRfdGVzdHNfYmFzZV9kaXIp
ICsgMSA6XQorICAgICAgICAgICAgeWllbGQgVGVzdCgKKyAgICAgICAgICAgICAgICAjIGZtdDog
b2ZmCisgICAgICAgICAgICAgICAgdGVzdF9wYXRoPXRyaW1tZWRfcGF0aCwKKyAgICAgICAgICAg
ICAgICBleHBlY3RlZF90ZXh0X3BhdGg9ZXhwZWN0ZWRfdGV4dF9wYXRoc1stMV0KKyAgICAgICAg
ICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdGV4dF9wYXRocworICAgICAgICAgICAgICAgICAgICBl
bHNlIE5vbmUsCisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXVkaW9fcGF0aD1leHBlY3RlZF9h
dWRpb19wYXRoc1stMV0KKyAgICAgICAgICAgICAgICAgICAgaWYgZXhwZWN0ZWRfYXVkaW9fcGF0
aHMKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBOb25lLAorICAgICAgICAgICAgICAgIGV4cGVj
dGVkX2ltYWdlX3BhdGg9ZXhwZWN0ZWRfaW1hZ2VfcGF0aHNbLTFdCisgICAgICAgICAgICAgICAg
ICAgIGlmIGV4cGVjdGVkX2ltYWdlX3BhdGhzCisgICAgICAgICAgICAgICAgICAgIGVsc2UgTm9u
ZSwKKyAgICAgICAgICAgICAgICByZWZlcmVuY2VfZmlsZXM9c29ydGVkKHJlZmVyZW5jZV9maWxl
c1stMV0pCisgICAgICAgICAgICAgICAgICAgIGlmIHJlZmVyZW5jZV9maWxlcworICAgICAgICAg
ICAgICAgICAgICBlbHNlIE5vbmUsCisgICAgICAgICAgICAgICAgaXNfaHR0cF90ZXN0PSJodHRw
L3Rlc3QiIGluIHRyaW1tZWRfcGF0aCwKKyAgICAgICAgICAgICAgICBpc193ZWJzb2NrZXRfdGVz
dD0id2Vic29ja2V0LyIgaW4gdHJpbW1lZF9wYXRoLAorICAgICAgICAgICAgICAgIGlzX3dwdF90
ZXN0PSgKKyAgICAgICAgICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvIiBpbiB0cmltbWVkX3BhdGgKKyAgICAgICAgICAgICAgICAgICAgb3IgImh0dHAvd3B0LyIg
aW4gdHJpbW1lZF9wYXRoCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICkKKworICAg
IGRlZiBpc190ZXN0KHNlbGYsIGN1cnJlbnRfZGlyX3BhdGgsIG5hbWUpOgorICAgICAgICBpZiAo
CisgICAgICAgICAgICAobm90IG5hbWUuZW5kc3dpdGgoc3VwcG9ydGVkX3Rlc3RfZXh0ZW5zaW9u
c190dXBsZSkpCisgICAgICAgICAgICBvciBuYW1lLnN0YXJ0c3dpdGgoKCJyZWYtIiwgIm5vdHJl
Zi0iKSkKKyAgICAgICAgICAgIG9yIG5hbWUuZW5kc3dpdGgocmVmZXJlbmNlX3N1ZmZpeGVzX3R1
cGxlKQorICAgICAgICAgICAgb3IgbmFtZS5lbmRzd2l0aCgiX3dzaC5weSIpCisgICAgICAgICAg
ICBvciBuYW1lIGluICgiYm9vdC54bWwiLCAicm9vdC54bWwiKQorICAgICAgICAgICAgb3IgKAor
ICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyX3BhdGguc3RhcnRzd2l0aCgiaW1wb3J0ZWQvdzNj
LyIpCisgICAgICAgICAgICAgICAgYW5kICgKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5lbmRz
d2l0aCgiLnB5IikKKyAgICAgICAgICAgICAgICAgICAgb3IgbmFtZSBpbiBzZWxmLnczY19maWxl
cy5nZXQoY3VycmVudF9kaXJfcGF0aCwgc2V0KCkpCisgICAgICAgICAgICAgICAgKQorICAgICAg
ICAgICAgKQorICAgICAgICApOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJl
dHVybiBUcnVlCisKKyAgICBkZWYgaXNfZXhwZWN0YXRpb25fZm9yKHNlbGYsIHRlc3RfbmFtZSwg
ZXhwZWN0ZWRfbmFtZSwgZXhwZWN0ZWRfcHJlZml4PU5vbmUpOgorICAgICAgICBpZiBleHBlY3Rl
ZF9wcmVmaXggaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVfd2l0aG91dF9leHQsIF8gPSBzZWxm
LmZzLnNwbGl0ZXh0KHRlc3RfbmFtZSkKKyAgICAgICAgICAgIGV4cGVjdGVkX3ByZWZpeCA9IG5h
bWVfd2l0aG91dF9leHQgKyAiLWV4cGVjdGVkIgorCisgICAgICAgIGZvciBiYXNlbGluZV9leHQg
aW4gc2ltcGxlX2Jhc2VsaW5lX2V4dGVuc2lvbnM6CisgICAgICAgICAgICBpZiBleHBlY3RlZF9u
YW1lID09IGV4cGVjdGVkX3ByZWZpeCArIGJhc2VsaW5lX2V4dDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2ltcGxlX2V4cGVjdGF0aW9uX3R5cGVbYmFzZWxpbmVfZXh0XQorCisgICAgICAgIGZv
ciByZWZfZXh0IGluIHN1cHBvcnRlZF9yZWZlcmVuY2VfZXh0ZW5zaW9uczoKKyAgICAgICAgICAg
IGlmIGV4cGVjdGVkX25hbWUgPT0gZXhwZWN0ZWRfcHJlZml4ICsgcmVmX2V4dDoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIj09IgorICAgICAgICAgICAgZWxpZiBleHBlY3RlZF9uYW1lID09IGV4
cGVjdGVkX3ByZWZpeCArICItbWlzbWF0Y2giICsgcmVmX2V4dDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gIiE9IgorCisgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVy
X2xlZ2FjeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X2ZpbmRlcl9sZWdhY3kucHkKaW5kZXggNzljNjI1MDM4MGExMTIyZjRl
NGIxYWEwNWViZWRiNzhkMjBkYzM1MC4uZmY2OTZjYmI3MjMxYmY0ZjNjM2I0YzhjZWI5YzczOTlk
MTY4YzU0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVyX2xlZ2FjeS5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9maW5kZXJf
bGVnYWN5LnB5CkBAIC0yNiw2ICsyNiw3IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitpbXBvcnQgYmlzZWN0CiBpbXBvcnQgZXJybm8KIGltcG9ydCBqc29uCiBpbXBvcnQgbG9n
Z2luZwpAQCAtMzUsNiArMzYsOCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9m
aWxlcwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3QgaW1wb3J0IFRlc3QK
IGZyb20gd2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0CiAKK2Zyb20gLmxheW91dF90ZXN0
X2ZpbmRlciBpbXBvcnQgTGF5b3V0VGVzdEZpbmRlciBhcyBMYXlvdXRUZXN0RmluZGVyX05ldwor
CiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtMTA0LDYgKzEwNywz
OCBAQCBjbGFzcyBMYXlvdXRUZXN0RmluZGVyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiAocGF0
aHMsIHRlc3RzKQogCiAgICAgZGVmIGZpbmRfdGVzdHNfYnlfcGF0aChzZWxmLCBwYXRocywgZGV2
aWNlX3R5cGU9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiB0ZXN0cyBmb3Vu
ZC4gQm90aCBnZW5lcmljIGFuZCBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0cyBtYXRjaGluZyBwYXRo
cyBzaG91bGQgYmUgcmV0dXJuZWQuIiIiCisgICAgICAgIGZpbmRlciA9IExheW91dFRlc3RGaW5k
ZXJfTmV3KAorICAgICAgICAgICAgc2VsZi5fcG9ydC5ob3N0LmZpbGVzeXN0ZW0sIHNlbGYuX3Bv
cnQubGF5b3V0X3Rlc3RzX2RpcigpLCBzZWxmLl9wb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKGRl
dmljZV90eXBlKQorICAgICAgICApCisKKyAgICAgICAgaWYgcGF0aHM6CisgICAgICAgICAgICB0
ZXN0cyA9IFtdCisgICAgICAgICAgICBmb3IgcGF0aCBpbiBwYXRoczoKKyAgICAgICAgICAgICAg
ICB0ZXN0cy5leHRlbmQoc2VsZi5fZmluZF90ZXN0c19ieV9wYXRoX3Jlb3JkZXJlZChmaW5kZXIs
IHBhdGgpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdGVzdHMgPSBzZWxmLl9maW5kX3Rl
c3RzX2J5X3BhdGhfcmVvcmRlcmVkKGZpbmRlciwgTm9uZSkKKworICAgICAgICAjIHJhaXNlIFN5
c3RlbUVycm9yCisgICAgICAgIHJldHVybiB0ZXN0cworCisgICAgZGVmIF9maW5kX3Rlc3RzX2J5
X3BhdGhfcmVvcmRlcmVkKHNlbGYsIGZpbmRlciwgcGF0aD1Ob25lKToKKyAgICAgICAgIyB0aGlz
IGlzIHRlY2huaWNhbGx5IG5vdCByaWdodCB3aGVuIHdlIGhhdmUgYSBnbG9iLCBidXQgaXQncyBw
cm9iYWJseSBnb29kIGVub3VnaCBhcyBhbiBpbnRlcmltIG1lYXN1cmUKKyAgICAgICAgcGF0aHMg
PSBbcGF0aF0gaWYgcGF0aCBpcyBub3QgTm9uZSBlbHNlIFtdCisgICAgICAgIHRlc3RzID0gbGlz
dChmaW5kZXIuZ2V0X3Rlc3RzKHBhdGhzKSkKKworICAgICAgICAjIGZvciBsZWdhY3kgcmVhc29u
cywgbW92ZSBvdmVycmlkZGVuIHBsYXRmb3JtLXNwZWNpZmljIHRlc3RzIGJlIHNvcnRlZCBhcyAi
cGxhdGZvcm0vIgorICAgICAgICBwbGF0Zm9ybV90ZXN0cyA9IHNvcnRlZCgKKyAgICAgICAgICAg
IFt0IGZvciB0IGluIHRlc3RzIGlmIHQudGVzdF9wYXRoLnN0YXJ0c3dpdGgoInBsYXRmb3JtLyIp
XSwKKyAgICAgICAgICAgIGtleT1sYW1iZGEgeDogc2VsZi5fcG9ydC50ZXN0X2tleSh4LnRlc3Rf
cGF0aCksCisgICAgICAgICkKKyAgICAgICAgdGVzdHMgPSBbdCBmb3IgdCBpbiB0ZXN0cyBpZiBu
b3QgdC50ZXN0X3BhdGguc3RhcnRzd2l0aCgicGxhdGZvcm0vIildCisgICAgICAgIGkgPSBiaXNl
Y3QuYmlzZWN0X2xlZnQoW3QudGVzdF9wYXRoIGZvciB0IGluIHRlc3RzXSwgInBsYXRmb3JtLyIp
CisgICAgICAgIHRlc3RzW2k6aV0gPSBwbGF0Zm9ybV90ZXN0cworCisgICAgICAgIHJldHVybiB0
ZXN0cworCisgICAgZGVmIGxlZ2FjeV9maW5kX3Rlc3RzX2J5X3BhdGgoc2VsZiwgcGF0aHMsIGRl
dmljZV90eXBlPU5vbmUpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgZm91
bmQuIEJvdGggZ2VuZXJpYyBhbmQgcGxhdGZvcm0tc3BlY2lmaWMgdGVzdHMgbWF0Y2hpbmcgcGF0
aHMgc2hvdWxkIGJlIHJldHVybmVkLiIiIgogICAgICAgICBleHBhbmRlZF9wYXRocyA9IHNlbGYu
X2V4cGFuZGVkX3BhdGhzKHBhdGhzLCBkZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSkKICAgICAgICAg
cmV0dXJuIFsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X2ZpbmRlcl9sZWdhY3lfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9m
aW5kZXJfbGVnYWN5X3VuaXR0ZXN0LnB5CmluZGV4IGViMmU4ZWMzYmNiOTI4ZTM1YjkyMzFmODkz
MGZiOGE2NTYxODNmOTguLmNlYmFkNzBkOWE1NTkzMDZjZGM1NmIzYjhmYzJhOWEwMWE3NDY3NzQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL2xheW91dF90ZXN0X2ZpbmRlcl9sZWdhY3lfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfZmluZGVy
X2xlZ2FjeV91bml0dGVzdC5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBMYXlvdXRUZXN0Rmlu
ZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBmaW5kZXIgPSBzZWxmLmZpbmRl
cgogICAgICAgICB0ZXN0cyA9IFt0LnRlc3RfcGF0aCBmb3IgdCBpbiBmaW5kZXIuZmluZF90ZXN0
c19ieV9wYXRoKFtdKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBvcnQubmFtZSgp
LCAndGVzdC1tYWMtbGVvcGFyZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3BsYXRmb3JtL3Rl
c3Qtc25vdy1sZW9wYXJkL3dlYnNvY2tldC90ZXN0Lmh0bWwnLCB0ZXN0cykKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb3RJbigncGxhdGZvcm0vdGVzdC1zbm93LWxlb3BhcmQvd2Vic29ja2V0L3Rlc3Qu
aHRtbCcsIHRlc3RzKQogCiAgICAgZGVmIHRlc3RfZmluZF9vbmVfdGVzdChzZWxmKToKICAgICAg
ICAgZmluZGVyID0gc2VsZi5maW5kZXIKQEAgLTE1MCwxMiArMTUwLDE0IEBAIGNsYXNzIExheW91
dFRlc3RGaW5kZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZmluZF9w
bGF0Zm9ybV9zcGVjaWZpYyhzZWxmKToKICAgICAgICAgZmluZGVyID0gc2VsZi5maW5kZXIKICAg
ICAgICAgdGVzdHMgPSBbdC50ZXN0X3BhdGggZm9yIHQgaW4gZmluZGVyLmZpbmRfdGVzdHNfYnlf
cGF0aChbJ2h0dHAvdGVzdC5odG1sJ10pXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rz
LCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cywgWydwbGF0Zm9ybS90ZXN0LW1h
Yy1sZW9wYXJkL2h0dHAvdGVzdC5odG1sJ10pCiAKICAgICBkZWYgdGVzdF9maW5kX3BsYXRmb3Jt
X3NwZWNpZmljX2RpcmVjdG9yeShzZWxmKToKICAgICAgICAgZmluZGVyID0gc2VsZi5maW5kZXIK
ICAgICAgICAgdGVzdHMgPSBbdC50ZXN0X3BhdGggZm9yIHQgaW4gZmluZGVyLmZpbmRfdGVzdHNf
YnlfcGF0aChbJ3BsYXRmb3JtLXNwZWNpZmljLWRpciddKV0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh0ZXN0cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICB0
ZXN0cywgWydwbGF0Zm9ybS90ZXN0LW1hYy1sZW9wYXJkL3BsYXRmb3JtLXNwZWNpZmljLWRpci9w
bGF0Zm9ybS1zcGVjaWZpYy10ZXN0Lmh0bWwnXQorICAgICAgICApCiAgICAgICAgIHdpdGhfc2xh
c2ggPSBbdC50ZXN0X3BhdGggZm9yIHQgaW4gZmluZGVyLmZpbmRfdGVzdHNfYnlfcGF0aChbJ3Bs
YXRmb3JtLXNwZWNpZmljLWRpci8nXSldCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHMs
IHdpdGhfc2xhc2gpCiAgICAgICAgIHdpdGhfc3RhciA9IFt0LnRlc3RfcGF0aCBmb3IgdCBpbiBm
aW5kZXIuZmluZF90ZXN0c19ieV9wYXRoKFsncGxhdGZvcm0tc3BlY2lmaWMtZGlyLyonXSldCkBA
IC0yMDAsNyArMjAyLDcgQEAgY2xhc3MgTGF5b3V0VGVzdEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRl
c3RDYXNlKToKIAogICAgICAgICAjIHRlc3QgdGhlIHNob3J0LCBzaW1wbGUgY2FzZSBmaXJzdAog
ICAgICAgICB0ZXN0cyA9IFt0LnRlc3RfcGF0aCBmb3IgdCBpbiBmaW5kZXIuZmluZF90ZXN0c19i
eV9wYXRoKFsncGFzc2VzL3MqJ10pXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzLCBb
J3Bhc3Nlcy9za2lwcGVkL3NraXAuaHRtbCcsICdwYXNzZXMvc3ZncmVmdGVzdC5zdmcnXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0cywgWydwYXNzZXMvc3ZncmVmdGVzdC5zdmcnLCAn
cGFzc2VzL3NraXBwZWQvc2tpcC5odG1sJ10pCiAKICAgICAgICAgIyB0aGVuIHRlc3QgdGhlIHdo
b2xlIGRpcmVjdG9yeSAoY2hlY2sgZGlyZWN0b3JpZXMgYXJlbid0IGp1c3Qgc29ydGVkIGZpcnN0
KQogICAgICAgICB0ZXN0cyA9IFt0LnRlc3RfcGF0aCBmb3IgdCBpbiBmaW5kZXIuZmluZF90ZXN0
c19ieV9wYXRoKFsncGFzc2VzLyonXSldCkBAIC0yMTcsMTAgKzIxOSwxMSBAQCBjbGFzcyBMYXlv
dXRUZXN0RmluZGVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICdw
YXNzZXMvcGhwcmVmdGVzdC5waHAnLAogICAgICAgICAgICAgICAgICdwYXNzZXMvcGxhdGZvcm1f
aW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgJ3Bhc3Nlcy9yZWZ0ZXN0Lmh0bWwnLAotICAg
ICAgICAgICAgICAgICdwYXNzZXMvc2tpcHBlZC9za2lwLmh0bWwnLAogICAgICAgICAgICAgICAg
ICdwYXNzZXMvc3ZncmVmdGVzdC5zdmcnLAogICAgICAgICAgICAgICAgICdwYXNzZXMvdGV4dC5o
dG1sJywKICAgICAgICAgICAgICAgICAncGFzc2VzL3hodHJlZnRlc3QueGh0JywKKyAgICAgICAg
ICAgICAgICAncGFzc2VzL3NraXBwZWQvc2tpcC5odG1sJywKKyAgICAgICAgICAgICAgICAncGxh
dGZvcm0vdGVzdC1tYWMtbGVvcGFyZC9wYXNzZXMvcGxhdGZvcm0tc3BlY2lmaWMtdGVzdC5odG1s
JywKICAgICAgICAgICAgIF0sCiAgICAgICAgICkKIApAQCAtMjQyLDE0ICsyNDUsMTMgQEAgY2xh
c3MgTGF5b3V0VGVzdEZpbmRlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVz
dF9maW5kX2dsb2JfZGlyZWN0b3J5X2Uoc2VsZik6CiAgICAgICAgIGZpbmRlciA9IHNlbGYuZmlu
ZGVyCiAgICAgICAgIHRlc3RzID0gW3QudGVzdF9wYXRoIGZvciB0IGluIGZpbmRlci5maW5kX3Rl
c3RzX2J5X3BhdGgoWydoKnRwJ10pXQotICAgICAgICAjIGNvbnRyYXN0IHdpdGggdGVzdF9maW5k
X2RpcmVjdG9yeV9pbmNsdWRlc19wbGF0Zm9ybV9zcGVjaWZpYzsKLSAgICAgICAgIyB0aGlzIGV4
Y2x1ZGVzIHRoZSBwbGF0Zm9ybS8qL2h0dHAvIHRlc3RzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCiAgICAgICAgICAgICB0ZXN0cywKICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAn
aHR0cC90ZXN0cy9wYXNzZXMvaW1hZ2UuaHRtbCcsCiAgICAgICAgICAgICAgICAgJ2h0dHAvdGVz
dHMvcGFzc2VzL3RleHQuaHRtbCcsCiAgICAgICAgICAgICAgICAgJ2h0dHAvdGVzdHMvc3NsL3Rl
eHQuaHRtbCcsCisgICAgICAgICAgICAgICAgJ3BsYXRmb3JtL3Rlc3QtbWFjLWxlb3BhcmQvaHR0
cC90ZXN0Lmh0bWwnLAogICAgICAgICAgICAgXSwKICAgICAgICAgKQogCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVz
dF9maW5kZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9maW5kZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIu
cHkKaW5kZXggZWExZDQ2ODEzOTUxNmE5ZDA1ZDA4NzNiMzBlZjljYjdmMmQ2MjI2NS4uZTM1N2U3
NzRhNmZkOTFmYmFiYzY5OGVlOWViNDc3ZDA4ZWVjNmIwYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5
CkBAIC0xMTMsNyArMTEzLDYgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBhZ2dy
ZWdhdGVfdGVzdHNfdG9fcnVuID0gc2V0KCkgICMgdHlwZTogU2V0W1Rlc3RdCiAgICAgICAgIHRl
c3RzX3RvX3J1bl9ieV9kZXZpY2UgPSB7fSAgIyB0eXBlOiBEaWN0W09wdGlvbmFsW0RldmljZVR5
cGVdLCBMaXN0W1Rlc3RdXQogCi0gICAgICAgIGRldmljZV90eXBlX2xpc3QgPSBzZWxmLl9wb3J0
LnN1cHBvcnRlZF9kZXZpY2VfdHlwZXMoKQogICAgICAgICBmb3IgZGV2aWNlX3R5cGUgaW4gZGV2
aWNlX3R5cGVfbGlzdDoKICAgICAgICAgICAgIGZvcl9kZXZpY2VfdHlwZSA9IHUnZm9yIHt9ICcu
Zm9ybWF0KGRldmljZV90eXBlKSBpZiBkZXZpY2VfdHlwZSBlbHNlICcnCiAgICAgICAgICAgICBz
ZWxmLl9wcmludGVyLndyaXRlX3VwZGF0ZSh1J0NvbGxlY3RpbmcgdGVzdHMge30uLi4nLmZvcm1h
dChmb3JfZGV2aWNlX3R5cGUpKQpAQCAtMjMxLDkgKzIzMCw3IEBAIGNsYXNzIE1hbmFnZXIob2Jq
ZWN0KToKIAogICAgIGRlZiBfdGVzdF9pbnB1dF9mb3JfZmlsZShzZWxmLCB0ZXN0X2ZpbGUsIGRl
dmljZV90eXBlKToKICAgICAgICAgdGVzdF9pc19zbG93ID0gc2VsZi5fdGVzdF9pc19zbG93KHRl
c3RfZmlsZS50ZXN0X3BhdGgsIGRldmljZV90eXBlPWRldmljZV90eXBlKQotICAgICAgICByZWZl
cmVuY2VfZmlsZXMgPSBzZWxmLl9wb3J0LnJlZmVyZW5jZV9maWxlcygKLSAgICAgICAgICAgIHRl
c3RfZmlsZS50ZXN0X3BhdGgsIGRldmljZV90eXBlPWRldmljZV90eXBlCi0gICAgICAgICkKKyAg
ICAgICAgcmVmZXJlbmNlX2ZpbGVzID0gdGVzdF9maWxlLnJlZmVyZW5jZV9maWxlcwogICAgICAg
ICB0aW1lb3V0ID0gKAogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zbG93X3RpbWVfb3V0X21z
CiAgICAgICAgICAgICBpZiB0ZXN0X2lzX3Nsb3cKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3QucHkKaW5kZXggMDczZjA0YTM2YTBmNTE1MTk1
NjVjMWZiMTQ1MDBkYzYwYTEwNGQzZS4uNjU5NmRkOTBmYTkzNmM3NGNlMTM4YjZhZmFhNzkzY2Yx
ODg5MzQ3NSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bW9kZWxzL3Rlc3QucHkKQEAgLTM4LDEzICszOCwxNyBAQCBjbGFzcyBUZXN0KG9iamVjdCk6CiAg
ICAgdGVzdF9wYXRoID0gYXR0ci5pYih0eXBlPXN0cikKICAgICBleHBlY3RlZF90ZXh0X3BhdGgg
PSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1zdHIpCiAgICAgZXhwZWN0ZWRfaW1hZ2VfcGF0
aCA9IGF0dHIuaWIoZGVmYXVsdD1Ob25lLCB0eXBlPXN0cikKLSAgICBleHBlY3RlZF9jaGVja3N1
bV9wYXRoID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQogICAgIGV4cGVjdGVkX2F1
ZGlvX3BhdGggPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1zdHIpCi0gICAgcmVmZXJlbmNl
X2ZpbGVzID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIHR5cGU9bGlzdCkKKyAgICByZWZlcmVuY2Vf
ZmlsZXMgPSBhdHRyLmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1saXN0LCBjb252ZXJ0ZXI9bGFtYmRh
IHg6IE5vbmUgaWYgbm90IHggZWxzZSB0dXBsZSh4KSkKICAgICBpc19odHRwX3Rlc3QgPSBhdHRy
LmliKGRlZmF1bHQ9Tm9uZSwgdHlwZT1ib29sKQogICAgIGlzX3dlYnNvY2tldF90ZXN0ID0gYXR0
ci5pYihkZWZhdWx0PU5vbmUsIHR5cGU9Ym9vbCkKICAgICBpc193cHRfdGVzdCA9IGF0dHIuaWIo
ZGVmYXVsdD1Ob25lLCB0eXBlPWJvb2wpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdGVzdF9m
aWxlbmFtZShzZWxmKToKKyAgICAgICAgXywgYmFzZW5hbWUgPSBzZWxmLnRlc3RfcGF0aC5yc3Bs
aXQoIi8iLCAxKQorICAgICAgICByZXR1cm4gYmFzZW5hbWUKKwogICAgIEBwcm9wZXJ0eQogICAg
IGRlZiBuZWVkc19odHRwX3NlcnZlcihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuaXNfaHR0
cF90ZXN0IG9yIHNlbGYuaXNfd2Vic29ja2V0X3Rlc3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3Rl
c3QucHkKaW5kZXggMDM2YTZkYTZmM2UyMDA3YWNhMWEwNGY0ZWQ3N2RhNjZiNGVmOTFmNy4uMWE3
NDU5OTljODA0MGFhNmRmNDcyMmZiNThiMjk3Y2JjOGQ5NjFhYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3Rlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L3Rlc3QucHkKQEAgLTEwNiw4ICsxMDYsOCBAQCBjbGFzcyBUZXN0TGlzdChvYmplY3Qp
OgogIwogIyBUaGVzZSBudW1iZXJzIG1heSBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbmV2ZXIgd2Ug
YWRkIG9yIGRlbGV0ZSB0ZXN0cy4KICMKLVRPVEFMX1RFU1RTID0gNzUKLVRPVEFMX1NLSVBTID0g
MTEKK1RPVEFMX1RFU1RTID0gNzIKK1RPVEFMX1NLSVBTID0gOAogVE9UQUxfUkVUUklFUyA9IDEx
CiAKIFVORVhQRUNURURfUEFTU0VTID0gNgpAQCAtMzg5LDcgKzM4OSw3IEBAIGNsYXNzIFRlc3RQ
b3J0KFBvcnQpOgogICAgICAgICAjIHRoZSBtb2NrX2RydCBEcml2ZXIuIFdlIHJldHVybiBzb21l
dGhpbmcsIGJ1dCBtYWtlIHN1cmUgaXQncyB1c2VsZXNzLgogICAgICAgICByZXR1cm4gJ01PQ0sg
X3BhdGhfdG9fZHJpdmVyJwogCi0gICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYsICoq
a3dhcmdzKToKKyAgICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZiwgZGV2aWNlX3R5cGU9
Tm9uZSk6CiAgICAgICAgIHNlYXJjaF9wYXRocyA9IHsKICAgICAgICAgICAgICd0ZXN0LW1hYy1z
bm93bGVvcGFyZCc6IFsndGVzdC1tYWMtc25vd2xlb3BhcmQnXSwKICAgICAgICAgICAgICd0ZXN0
LW1hYy1sZW9wYXJkJzogWyd0ZXN0LW1hYy1sZW9wYXJkJywgJ3Rlc3QtbWFjLXNub3dsZW9wYXJk
J10sCg==
</data>
<flag name="commit-queue"
          id="475613"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>