<?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>27752</bug_id>
          
          <creation_ts>2009-07-27 19:15:32 -0700</creation_ts>
          <short_desc>cpplint* should be named cpp_style*</short_desc>
          <delta_ts>2009-07-28 08:36:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>manyoso</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135099</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-27 19:15:32 -0700</bug_when>
    <thetext>This better reflects the fact that it is about checking the style of files.  

For the same reason, check-webkit-style was renamed in a similar bug https://bugs.webkit.org/show_bug.cgi?id=27568

All folks who have been working on these script know about this change and were fine with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135103</commentid>
    <comment_count>1</comment_count>
      <attachid>33595</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-27 19:20:09 -0700</bug_when>
    <thetext>Created attachment 33595
Diff showing changes done after move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135106</commentid>
    <comment_count>2</comment_count>
      <attachid>33596</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-27 19:30:41 -0700</bug_when>
    <thetext>Created attachment 33596
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135107</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-27 19:33:36 -0700</bug_when>
    <thetext>The first patch is the diff between right after I did the move to all of the changes done right after the move.

The second patch is the real patch (but it is not really possible to review as is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135224</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-07-28 08:36:20 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/46488</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33595</attachid>
            <date>2009-07-27 19:20:09 -0700</date>
            <delta_ts>2009-07-27 19:34:04 -0700</delta_ts>
            <desc>Diff showing changes done after move.
</desc>
            <filename>bug27752.txt</filename>
            <type>text/plain</type>
            <size>71691</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1Yzg4MjYzLi42ODE3NjIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDct
MjcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNwcGxpbnQqIHNob3VsZCBiZSBuYW1lZCBj
cHBfc3R5bGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzc1MgorCisgICAgICAgIFRoZSBmaWxlcyB3ZXJlIHJlbmFtZWQuIEEgZmV3IHJlbmFtZXMg
d2VyZSBkb25lOgorICAgICAgICAgIENwcExpbnQgLT4gQ3BwU3R5bGUKKyAgICAgICAgICBjcHBs
aW50IC0+IGNwcF9zdHlsZQorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGU6
CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weTogQ29waWVkIGZyb20gY3Bw
bGludC5weSBhbmQKKyAgICAgICAgICBkaWQgbmFtZSBmaXggdXBzLgorICAgICAgICAqIFNjcmlw
dHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHk6IENvcGllZCBmcm9tIGNwcGxpbnRfdW5p
dHRlc3QucHkgYW5kCisgICAgICAgICAgZGlkIG5hbWUgZml4IHVwcy4KKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwbGludC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY3BwbGludF91bml0dGVzdC5weTogUmVtb3ZlZC4KKwogMjAwOS0wNy0yNyAgR2Fib3IgUmFw
Y3NhbnlpICA8cmFwY3NhbnlpLmdhYm9yQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0
eWxlCmluZGV4IDgxOWFjMWEuLjdlZTkwOTggMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlCkBAIC0zNCwxMyArMzQsMTMgQEAgaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAog
aW1wb3J0IHN5cwogCi1pbXBvcnQgbW9kdWxlcy5jcHBsaW50IGFzIGNwcGxpbnQKK2ltcG9ydCBt
b2R1bGVzLmNwcF9zdHlsZSBhcyBjcHBfc3R5bGUKIGZyb20gbW9kdWxlcy5kaWZmX3BhcnNlciBp
bXBvcnQgRGlmZlBhcnNlcgogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0
ZW0KIAogCiAjIE92ZXJyaWRlIHRoZSB1c2FnZSBvZiB0aGUgbGludCB0b29sLgotY3BwbGludC5f
VVNBR0UgPSAiIiIKK2NwcF9zdHlsZS5fVVNBR0UgPSAiIiIKIFN5bnRheDogJShwcm9ncmFtX25h
bWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PENPTU1JVElTSD5dIFstLW91dHB1dD12
czddIFstLWZpbHRlcj0teCwreSwuLi5dCiAKICAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0
cmllcyB0byBmb2xsb3cgYXJlIHRob3NlIGluCkBAIC0xMDIsNyArMTAyLDcgQEAgZGVmIHByb2Nl
c3NfcGF0Y2gocGF0Y2hfc3RyaW5nKToKICAgICAgICAgICAgIGxpbmVfbnVtYmVycyA9IHNldCgp
CiAKICAgICAgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgIiIiV3Jh
cHBlciBmdW5jdGlvbiBvZiBjcHBsaW50LmVycm9yIGZvciBwYXRjaGVzLgorICAgICAgICAgICAg
ICAgICIiIldyYXBwZXIgZnVuY3Rpb24gb2YgY3BwX3N0eWxlLmVycm9yIGZvciBwYXRjaGVzLgog
CiAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRo
ZSBsaW5lIG51bWJlcgogICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNo
IGFyZSBtb2RpZmllZCBvciBhZGRlZC4KQEAgLTExNSwxNyArMTE1LDE3IEBAIGRlZiBwcm9jZXNz
X3BhdGNoKHBhdGNoX3N0cmluZyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9u
dW1iZXJzLmFkZChsaW5lWzFdKQogCiAgICAgICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4g
bGluZV9udW1iZXJzOgotICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgICAg
ICAgICAgICAgIGNwcF9zdHlsZS5lcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKQogCi0gICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmls
ZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQorICAgICAgICAgICAgY3BwX3N0eWxl
LnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQogCiAKIGRlZiBt
YWluKCk6Ci0gICAgY3BwbGludC51c2Vfd2Via2l0X3N0eWxlcygpCisgICAgY3BwX3N0eWxlLnVz
ZV93ZWJraXRfc3R5bGVzKCkKIAotICAgIChhcmdzLCBmbGFncykgPSBjcHBsaW50LnBhcnNlX2Fy
Z3VtZW50cyhzeXMuYXJndlsxOl0sIFsiZ2l0LWNvbW1pdD0iXSkKKyAgICAoYXJncywgZmxhZ3Mp
ID0gY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhzeXMuYXJndlsxOl0sIFsiZ2l0LWNvbW1pdD0i
XSkKICAgICBpZiBhcmdzOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFUlJPUjogV2UgZG9u
J3Qgc3VwcG9ydCBmaWxlcyBhcyBhcmd1bWVudHMgZm9yIG5vdy5cbiIgKyBjcHBsaW50Ll9VU0FH
RSkKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRVJST1I6IFdlIGRvbid0IHN1cHBvcnQgZmls
ZXMgYXMgYXJndW1lbnRzIGZvciBub3cuXG4iICsgY3BwX3N0eWxlLl9VU0FHRSkKICAgICAgICAg
c3lzLmV4aXQoMSkKIAogICAgIGN3ZCA9IG9zLnBhdGguYWJzcGF0aCgnLicpCkBAIC0xMzYsOCAr
MTM2LDggQEAgZGVmIG1haW4oKToKICAgICBlbHNlOgogICAgICAgICBwcm9jZXNzX3BhdGNoKHNj
bS5jcmVhdGVfcGF0Y2goKSkKIAotICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVycm9ycyBm
b3VuZDogJWRcbicgJSBjcHBsaW50LmVycm9yX2NvdW50KCkpCi0gICAgc3lzLmV4aXQoY3BwbGlu
dC5lcnJvcl9jb3VudCgpID4gMCkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCdUb3RhbCBlcnJvcnMg
Zm91bmQ6ICVkXG4nICUgY3BwX3N0eWxlLmVycm9yX2NvdW50KCkpCisgICAgc3lzLmV4aXQoY3Bw
X3N0eWxlLmVycm9yX2NvdW50KCkgPiAwKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQppbmRleCA2NTQ5N2Y3Li43
YzE1MzJhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxl
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGUucHkKQEAgLTU5
LDcgKzU5LDcgQEAgaW1wb3J0IHVuaWNvZGVkYXRhCiAKIAogX1VTQUdFID0gIiIiCi1TeW50YXg6
IGNwcGxpbnQucHkgWy0tdmVyYm9zZT0jXSBbLS1vdXRwdXQ9dnM3XSBbLS1maWx0ZXI9LXgsK3ks
Li4uXQorU3ludGF4OiAlKHByb2dyYW1fbmFtZSlzIFstLXZlcmJvc2U9I10gWy0tb3V0cHV0PXZz
N10gWy0tZmlsdGVyPS14LCt5LC4uLl0KICAgICAgICAgPGZpbGU+IFtmaWxlXSAuLi4KIAogICBU
aGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4KQEAg
LTk2LDE0ICs5NiwxNCBAQCBTeW50YXg6IGNwcGxpbnQucHkgWy0tdmVyYm9zZT0jXSBbLS1vdXRw
dXQ9dnM3XSBbLS1maWx0ZXI9LXgsK3ksLi4uXQogICAgICAgICAgICAgICAgIC0tZmlsdGVyPXdo
aXRlc3BhY2UscnVudGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1hdAogICAgICAgICAg
ICAgICAgIC0tZmlsdGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlCiAKLSAgICAgIFRv
IHNlZSBhIGxpc3Qgb2YgYWxsIHRoZSBjYXRlZ29yaWVzIHVzZWQgaW4gY3BwbGludCwgcGFzcyBu
byBhcmc6CisgICAgICBUbyBzZWUgYSBsaXN0IG9mIGFsbCB0aGUgY2F0ZWdvcmllcyB1c2VkIGlu
ICUocHJvZ3JhbV9uYW1lKXMsIHBhc3Mgbm8gYXJnOgogICAgICAgICAgLS1maWx0ZXI9Ci0iIiIK
KyIiIiAlIHsncHJvZ3JhbV9uYW1lJzogc3lzLmFyZ3ZbMF19CiAKICMgV2UgY2F0ZWdvcml6ZSBl
YWNoIGVycm9yIG1lc3NhZ2Ugd2UgcHJpbnQuICBIZXJlIGFyZSB0aGUgY2F0ZWdvcmllcy4KLSMg
V2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNhbiBsaXN0IHRoZW0gYWxsIGluIGNwcGxp
bnQgLS1maWx0ZXI9LgorIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2UgY2FuIGxpc3Qg
dGhlbSBhbGwgaW4gY3BwX3N0eWxlIC0tZmlsdGVyPS4KICMgSWYgeW91IGFkZCBhIG5ldyBlcnJv
ciBtZXNzYWdlIHdpdGggYSBuZXcgY2F0ZWdvcnksIGFkZCBpdCB0byB0aGUgbGlzdAotIyBoZXJl
ISAgY3BwbGludF91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3UgaWYgeW91IGZvcmdldCB0byBk
byB0aGlzLgorIyBoZXJlISAgY3BwX3N0eWxlX3VuaXR0ZXN0LnB5IHNob3VsZCB0ZWxsIHlvdSBp
ZiB5b3UgZm9yZ2V0IHRvIGRvIHRoaXMuCiAjIFwgdXNlZCBmb3IgY2xlYXJlciBsYXlvdXQgLS0g
cHlsaW50OiBkaXNhYmxlLW1zZz1DNjAxMwogX0VSUk9SX0NBVEVHT1JJRVMgPSAnJydcCiAgICAg
YnVpbGQvY2xhc3MKQEAgLTM0Nyw3ICszNDcsNyBAQCBjbGFzcyBfSW5jbHVkZVN0YXRlKGRpY3Qp
OgogICAgICAgICByZXR1cm4gZXJyb3JfbWVzc2FnZQogCiAKLWNsYXNzIF9DcHBMaW50U3RhdGUo
b2JqZWN0KToKK2NsYXNzIF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CiAgICAgIiIiTWFpbnRhaW5z
IG1vZHVsZS13aWRlIHN0YXRlLi4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTQw
NSwzMiArNDA1LDMyIEBAIGNsYXNzIF9DcHBMaW50U3RhdGUob2JqZWN0KToKICAgICAgICAgc2Vs
Zi5lcnJvcl9jb3VudCArPSAxCiAKIAotX2NwcGxpbnRfc3RhdGUgPSBfQ3BwTGludFN0YXRlKCkK
K19jcHBfc3R5bGVfc3RhdGUgPSBfQ3BwU3R5bGVTdGF0ZSgpCiAKIAogZGVmIF9vdXRwdXRfZm9y
bWF0KCk6CiAgICAgIiIiR2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1hdC4iIiIKLSAgICBy
ZXR1cm4gX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdAorICAgIHJldHVybiBfY3BwX3N0eWxl
X3N0YXRlLm91dHB1dF9mb3JtYXQKIAogCiBkZWYgX3NldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9m
b3JtYXQpOgogICAgICIiIlNldHMgdGhlIG1vZHVsZSdzIG91dHB1dCBmb3JtYXQuIiIiCi0gICAg
X2NwcGxpbnRfc3RhdGUuc2V0X291dHB1dF9mb3JtYXQob3V0cHV0X2Zvcm1hdCkKKyAgICBfY3Bw
X3N0eWxlX3N0YXRlLnNldF9vdXRwdXRfZm9ybWF0KG91dHB1dF9mb3JtYXQpCiAKIAogZGVmIF92
ZXJib3NlX2xldmVsKCk6CiAgICAgIiIiUmV0dXJucyB0aGUgbW9kdWxlJ3MgdmVyYm9zaXR5IHNl
dHRpbmcuIiIiCi0gICAgcmV0dXJuIF9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwKKyAgICBy
ZXR1cm4gX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsCiAKIAogZGVmIF9zZXRfdmVyYm9z
ZV9sZXZlbChsZXZlbCk6CiAgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgdmVyYm9zaXR5LCBhbmQg
cmV0dXJucyB0aGUgcHJldmlvdXMgc2V0dGluZy4iIiIKLSAgICByZXR1cm4gX2NwcGxpbnRfc3Rh
dGUuc2V0X3ZlcmJvc2VfbGV2ZWwobGV2ZWwpCisgICAgcmV0dXJuIF9jcHBfc3R5bGVfc3RhdGUu
c2V0X3ZlcmJvc2VfbGV2ZWwobGV2ZWwpCiAKIAogZGVmIF9maWx0ZXJzKCk6CiAgICAgIiIiUmV0
dXJucyB0aGUgbW9kdWxlJ3MgbGlzdCBvZiBvdXRwdXQgZmlsdGVycywgYXMgYSBsaXN0LiIiIgot
ICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5maWx0ZXJzCisgICAgcmV0dXJuIF9jcHBfc3R5bGVf
c3RhdGUuZmlsdGVycwogCiAKIGRlZiBfc2V0X2ZpbHRlcnMoZmlsdGVycyk6CkBAIC00NDMsMTIg
KzQ0MywxMiBAQCBkZWYgX3NldF9maWx0ZXJzKGZpbHRlcnMpOgogICAgICAgZmlsdGVyczogQSBz
dHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZpbHRlcnMgKGVnICJ3aGl0ZXNwYWNlL2luZGVudCIp
LgogICAgICAgICAgICAgICAgRWFjaCBmaWx0ZXIgc2hvdWxkIHN0YXJ0IHdpdGggKyBvciAtOyBl
bHNlIHdlIGRpZS4KICAgICAiIiIKLSAgICBfY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycyhmaWx0
ZXJzKQorICAgIF9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoZmlsdGVycykKIAogCiBkZWYg
ZXJyb3JfY291bnQoKToKICAgICAiIiJSZXR1cm5zIHRoZSBnbG9iYWwgY291bnQgb2YgcmVwb3J0
ZWQgZXJyb3JzLiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5lcnJvcl9jb3VudAorICAg
IHJldHVybiBfY3BwX3N0eWxlX3N0YXRlLmVycm9yX2NvdW50CiAKIAogY2xhc3MgX0Z1bmN0aW9u
U3RhdGUob2JqZWN0KToKQEAgLTYwMiw3ICs2MDIsNyBAQCBkZWYgX3Nob3VsZF9wcmludF9lcnJv
cihjYXRlZ29yeSwgY29uZmlkZW5jZSk6CiAgICAgIiIiUmV0dXJucyB0cnVlIGlmZiBjb25maWRl
bmNlID49IHZlcmJvc2UsIGFuZCBjYXRlZ29yeSBwYXNzZXMgZmlsdGVyLiIiIgogICAgICMgVGhl
cmUgYXJlIHR3byB3YXlzIHdlIG1pZ2h0IGRlY2lkZSBub3QgdG8gcHJpbnQgYW4gZXJyb3IgbWVz
c2FnZToKICAgICAjIHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXNuJ3QgaGlnaCBlbm91Z2gsIG9yIHRo
ZSBmaWx0ZXJzIGZpbHRlciBpdCBvdXQuCi0gICAgaWYgY29uZmlkZW5jZSA8IF9jcHBsaW50X3N0
YXRlLnZlcmJvc2VfbGV2ZWw6CisgICAgaWYgY29uZmlkZW5jZSA8IF9jcHBfc3R5bGVfc3RhdGUu
dmVyYm9zZV9sZXZlbDoKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBpc19maWx0ZXJlZCA9
IEZhbHNlCkBAIC02NDIsOCArNjQyLDggQEAgZGVmIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgogICAgICMgVGhlcmUgYXJlIHR3byB3
YXlzIHdlIG1pZ2h0IGRlY2lkZSBub3QgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZToKICAgICAj
IHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXNuJ3QgaGlnaCBlbm91Z2gsIG9yIHRoZSBmaWx0ZXJzIGZp
bHRlciBpdCBvdXQuCiAgICAgaWYgX3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlk
ZW5jZSk6Ci0gICAgICAgIF9jcHBsaW50X3N0YXRlLmluY3JlbWVudF9lcnJvcl9jb3VudCgpCi0g
ICAgICAgIGlmIF9jcHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQgPT0gJ3ZzNyc6CisgICAgICAg
IF9jcHBfc3R5bGVfc3RhdGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKKyAgICAgICAgaWYgX2Nw
cF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0ID09ICd2czcnOgogICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXMoJXMpOiAgJXMgIFslc10gWyVkXVxuJyAlICgKICAgICAgICAgICAgICAg
ICBmaWxlbmFtZSwgbGluZV9udW1iZXIsIG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkK
ICAgICAgICAgZWxzZToKQEAgLTExMDksNyArMTEwOSw3IEBAIGNsYXNzIF9DbGFzc1N0YXRlKG9i
amVjdCk6CiAgICAgICAgIGlmIHNlbGYuY2xhc3NpbmZvX3N0YWNrOgogICAgICAgICAgICAgIyBO
b3RlOiBUaGlzIHRlc3QgY2FuIHJlc3VsdCBpbiBmYWxzZSBwb3NpdGl2ZXMgaWYgI2lmZGVmIGNv
bnN0cnVjdHMKICAgICAgICAgICAgICMgZ2V0IGluIHRoZSB3YXkgb2YgYnJhY2UgbWF0Y2hpbmcu
IFNlZSB0aGUgdGVzdEJ1aWxkQ2xhc3MgdGVzdCBpbgotICAgICAgICAgICAgIyBjcHBsaW50X3Vu
aXR0ZXN0LnB5IGZvciBhbiBleGFtcGxlIG9mIHRoaXMuCisgICAgICAgICAgICAjIGNwcF9zdHls
ZV91bml0dGVzdC5weSBmb3IgYW4gZXhhbXBsZSBvZiB0aGlzLgogICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIHNlbGYuY2xhc3NpbmZvX3N0YWNrWzBdLmxpbmVfbnVtYmVyLCAnYnVpbGQvY2xh
c3MnLCA1LAogICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBmaW5kIGNvbXBsZXRlIGRlY2xh
cmF0aW9uIG9mIGNsYXNzICVzJyAlCiAgICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzaW5mb19z
dGFja1swXS5uYW1lKQpAQCAtMjIyNSw3ICsyMjI1LDcgQEAgZGVmIF9jbGFzc2lmeV9pbmNsdWRl
KGZpbGVuYW1lLCBpbmNsdWRlLCBpc19zeXN0ZW0sIGluY2x1ZGVfc3RhdGUpOgogICAgICIiIkZp
Z3VyZXMgb3V0IHdoYXQga2luZCBvZiBoZWFkZXIgJ2luY2x1ZGUnIGlzLgogCiAgICAgQXJnczoK
LSAgICAgIGZpbGVuYW1lOiBUaGUgY3VycmVudCBmaWxlIGNwcGxpbnQgaXMgcnVubmluZyBvdmVy
LgorICAgICAgZmlsZW5hbWU6IFRoZSBjdXJyZW50IGZpbGUgY3BwX3N0eWxlIGlzIHJ1bm5pbmcg
b3Zlci4KICAgICAgIGluY2x1ZGU6IFRoZSBwYXRoIHRvIGEgI2luY2x1ZGVkIGZpbGUuCiAgICAg
ICBpc19zeXN0ZW06IFRydWUgaWYgdGhlICNpbmNsdWRlIHVzZWQgPD4gcmF0aGVyIHRoYW4gIiIu
CiAgICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGluIHdoaWNo
IHRoZSBoZWFkZXJzIGFyZSBpbnNlcnRlZC4KQEAgLTI4MjYsNyArMjgyNiw3IEBAIGRlZiBjaGVj
a19mb3JfaW5jbHVkZV93aGF0X3lvdV91c2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRl
X3N0YXRlLCBlcnJvciwKICAgICBhYnNfZmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5h
bWUpCiAKICAgICAjIEZvciBFbWFjcydzIGZseW1ha2UuCi0gICAgIyBJZiBjcHBsaW50IGlzIGlu
dm9rZWQgZnJvbSBFbWFjcydzIGZseW1ha2UsIGEgdGVtcG9yYXJ5IGZpbGUgaXMgZ2VuZXJhdGVk
CisgICAgIyBJZiBjcHBfc3R5bGUgaXMgaW52b2tlZCBmcm9tIEVtYWNzJ3MgZmx5bWFrZSwgYSB0
ZW1wb3JhcnkgZmlsZSBpcyBnZW5lcmF0ZWQKICAgICAjIGJ5IGZseW1ha2UgYW5kIHRoYXQgZmls
ZSBuYW1lIG1pZ2h0IGVuZCB3aXRoICdfZmx5bWFrZS5jcHAnLiBJbiB0aGF0IGNhc2UsCiAgICAg
IyByZXN0b3JlIG9yaWdpbmFsIGZpbGUgbmFtZSBoZXJlIHNvIHRoYXQgdGhlIGNvcnJlc3BvbmRp
bmcgaGVhZGVyIGZpbGUgY2FuIGJlCiAgICAgIyBmb3VuZC4KQEAgLTI5MzcsNyArMjkzNyw3IEBA
IGRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBl
cnJvcik6CiAKIAogZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3IpOgotICAg
ICIiIlBlcmZvcm1zIGNwcGxpbnQgb24gYSBzaW5nbGUgZmlsZS4KKyAgICAiIiJQZXJmb3JtcyBj
cHBfc3R5bGUgb24gYSBzaW5nbGUgZmlsZS4KIAogICAgIEFyZ3M6CiAgICAgICBmaWxlbmFtZTog
VGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcGFyc2UuCkBAIC0yOTc3LDcgKzI5NzcsNyBAQCBkZWYg
cHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJvcik6CiAgICAgIyBOb3RlLCBpZiBubyBk
b3QgaXMgZm91bmQsIHRoaXMgd2lsbCBnaXZlIHRoZSBlbnRpcmUgZmlsZW5hbWUgYXMgdGhlIGV4
dC4KICAgICBmaWxlX2V4dGVuc2lvbiA9IGZpbGVuYW1lW2ZpbGVuYW1lLnJmaW5kKCcuJykgKyAx
Ol0KIAotICAgICMgV2hlbiByZWFkaW5nIGZyb20gc3RkaW4sIHRoZSBleHRlbnNpb24gaXMgdW5r
bm93biwgc28gbm8gY3BwbGludCB0ZXN0cworICAgICMgV2hlbiByZWFkaW5nIGZyb20gc3RkaW4s
IHRoZSBleHRlbnNpb24gaXMgdW5rbm93biwgc28gbm8gY3BwX3N0eWxlIHRlc3RzCiAgICAgIyBz
aG91bGQgcmVseSBvbiB0aGUgZXh0ZW5zaW9uLgogICAgIGlmIChmaWxlbmFtZSAhPSAnLScgYW5k
IGZpbGVfZXh0ZW5zaW9uICE9ICdoJyBhbmQgZmlsZV9leHRlbnNpb24gIT0gJ2NwcCcKICAgICAg
ICAgYW5kIGZpbGVfZXh0ZW5zaW9uICE9ICdjJyk6CkBAIC0zMTIxLDExICszMTIxLDExIEBAIHRo
YXQgeW91IG5vdGljZSB0aGF0IGl0IGZsYWdzIGluY29ycmVjdGx5LgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXR3cml0ZXIoJ3V0ZjgnKSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpCiAKLSAg
ICBfY3BwbGludF9zdGF0ZS5yZXNldF9lcnJvcl9jb3VudCgpCisgICAgX2NwcF9zdHlsZV9zdGF0
ZS5yZXNldF9lcnJvcl9jb3VudCgpCiAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKICAg
ICAgICAgcHJvY2Vzc19maWxlKGZpbGVuYW1lKQotICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFs
IGVycm9ycyBmb3VuZDogJWRcbicgJSBfY3BwbGludF9zdGF0ZS5lcnJvcl9jb3VudCkKLSAgICBz
eXMuZXhpdChfY3BwbGludF9zdGF0ZS5lcnJvcl9jb3VudCA+IDApCisgICAgc3lzLnN0ZGVyci53
cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5kOiAlZFxuJyAlIF9jcHBfc3R5bGVfc3RhdGUuZXJyb3Jf
Y291bnQpCisgICAgc3lzLmV4aXQoX2NwcF9zdHlsZV9zdGF0ZS5lcnJvcl9jb3VudCA+IDApCiAK
IAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L21vZHVsZXMvY3BwX3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4IGEzZDA1MTIuLjdmYmNlODQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3Qu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5w
eQpAQCAtMzAsNyArMzAsNyBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAotIiIi
VW5pdCB0ZXN0IGZvciBjcHBsaW50LnB5LiIiIgorIiIiVW5pdCB0ZXN0IGZvciBjcHBfc3R5bGUu
cHkuIiIiCiAKICMgRklYTUU6IEFkZCBhIGdvb2QgdGVzdCB0aGF0IHRlc3RzIFVwZGF0ZUluY2x1
ZGVTdGF0ZS4KIApAQCAtMzksMTYgKzM5LDE2IEBAIGltcG9ydCBvcwogaW1wb3J0IHJhbmRvbQog
aW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBjcHBsaW50CitpbXBvcnQgY3BwX3N0
eWxlCiAKIAotIyBUaGlzIGNsYXNzIHdvcmtzIGFzIGFuIGVycm9yIGNvbGxlY3RvciBhbmQgcmVw
bGFjZXMgY3BwbGludC5FcnJvcgorIyBUaGlzIGNsYXNzIHdvcmtzIGFzIGFuIGVycm9yIGNvbGxl
Y3RvciBhbmQgcmVwbGFjZXMgY3BwX3N0eWxlLkVycm9yCiAjIGZ1bmN0aW9uIGZvciB0aGUgdW5p
dCB0ZXN0cy4gIFdlIGFsc28gdmVyaWZ5IGVhY2ggY2F0ZWdvcnkgd2Ugc2VlCi0jIGlzIGluIGNw
cGxpbnQuX0VSUk9SX0NBVEVHT1JJRVMsIHRvIGhlbHAga2VlcCB0aGF0IGxpc3QgdXAgdG8gZGF0
ZS4KKyMgaXMgaW4gY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTLCB0byBoZWxwIGtlZXAgdGhh
dCBsaXN0IHVwIHRvIGRhdGUuCiBjbGFzcyBFcnJvckNvbGxlY3RvcjoKICAgICAjIFRoZXNlIGFy
ZSBhIGdsb2JhbCBsaXN0LCBjb3ZlcmluZyBhbGwgY2F0ZWdvcmllcyBzZWVuIGV2ZXIuCiAgICAg
X0VSUk9SX0NBVEVHT1JJRVMgPSBbeC5zdHJpcCgpICAgICMgZ2V0IHJpZCBvZiBsZWFkaW5nIHdo
aXRlc3BhY2UKLSAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBjcHBsaW50Ll9FUlJP
Ul9DQVRFR09SSUVTLnNwbGl0KCldCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4g
Y3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTLnNwbGl0KCldCiAgICAgX1NFRU5fRVJST1JfQ0FU
RUdPUklFUyA9IHt9CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgYXNzZXJ0X2ZuKToKQEAgLTYy
LDcgKzYyLDcgQEAgY2xhc3MgRXJyb3JDb2xsZWN0b3I6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29yeSAiJXMiLCcKICAgICAgICAgICAgICAgICAgICAg
ICAgICcgd2hpY2ggaXMgbm90IGluIF9FUlJPUl9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRl
Z29yeSkpCiAgICAgICAgIHNlbGYuX1NFRU5fRVJST1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAx
Ci0gICAgICAgIGlmIGNwcGxpbnQuX3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlk
ZW5jZSk6CisgICAgICAgIGlmIGNwcF9zdHlsZS5fc2hvdWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5
LCBjb25maWRlbmNlKToKICAgICAgICAgICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoJyVzICBbJXNd
IFslZF0nICUgKG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKIAogICAgIGRlZiByZXN1
bHRzKHNlbGYpOgpAQCAtMTA2LDIyICsxMDYsMjIgQEAgY2xhc3MgTW9ja0lvOgogICAgICAgICBy
ZXR1cm4gc2VsZi5tb2NrX2ZpbGUKIAogCi1jbGFzcyBDcHBsaW50VGVzdEJhc2UodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgICIiIlByb3ZpZGVzIHNvbWUgdXNlZnVsIGhlbHBlciBmdW5jdGlvbnMg
Zm9yIGNwcGxpbnQgdGVzdHMuIiIiCitjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRl
c3RDYXNlKToKKyAgICAiIiJQcm92aWRlcyBzb21lIHVzZWZ1bCBoZWxwZXIgZnVuY3Rpb25zIGZv
ciBjcHBfc3R5bGUgdGVzdHMuIiIiCiAKICAgICAjIFBlcmZvcm0gbGludCBvbiBzaW5nbGUgbGlu
ZSBvZiBpbnB1dCBhbmQgcmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgogICAgIGRlZiBwZXJmb3Jt
X3NpbmdsZV9saW5lX2xpbnQoc2VsZiwgY29kZSwgZmlsZV9uYW1lKToKICAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQogICAgICAgICBsaW5lcyA9
IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21t
ZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGNsZWFuX2xp
bmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBpbmNsdWRlX3N0YXRl
ID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKLSAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBs
aW50Ll9GdW5jdGlvblN0YXRlKCkKKyAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5l
X2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY2xl
YW5fbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgaW5jbHVk
ZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKKyAgICAgICAgZnVuY3Rpb25fc3Rh
dGUgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUoKQogICAgICAgICBleHQgPSBmaWxlX25hbWVb
ZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KLSAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBsaW50
Ll9DbGFzc1N0YXRlKCkKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2xpbmUoZmlsZV9uYW1lLCBl
eHQsIGNsZWFuX2xpbmVzLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRl
X3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3Nfc3RhdGUsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBfc3R5
bGUuX0NsYXNzU3RhdGUoKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19saW5lKGZpbGVfbmFt
ZSwgZXh0LCBjbGVhbl9saW5lcywgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzc19zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICAjIFNpbmdsZS1saW5l
IGxpbnQgdGVzdHMgYXJlIGFsbG93ZWQgdG8gZmFpbCB0aGUgJ3VubGludGFibGUgZnVuY3Rpb24n
CiAgICAgICAgICMgY2hlY2suCiAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZW1vdmVfaWZfcHJl
c2VudCgKQEAgLTEzMiwxNCArMTMyLDE0IEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgZGVmIHBlcmZvcm1fbXVsdGlfbGluZV9saW50KHNlbGYsIGNvZGUs
IGZpbGVfbmFtZSk6CiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNl
bGYuYXNzZXJ0XykKICAgICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNw
cGxpbnQucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3Jf
Y29sbGVjdG9yKQotICAgICAgICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykK
KyAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwg
bGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5z
ZWRMaW5lcyhsaW5lcykKICAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgn
LicpICsgMTpdCi0gICAgICAgIGNsYXNzX3N0YXRlID0gY3BwbGludC5fQ2xhc3NTdGF0ZSgpCisg
ICAgICAgIGNsYXNzX3N0YXRlID0gY3BwX3N0eWxlLl9DbGFzc1N0YXRlKCkKICAgICAgICAgZm9y
IGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcGxpbnQuY2hl
Y2tfc3R5bGUoZmlsZV9uYW1lLCBsaW5lcywgaSwgZXh0LCBlcnJvcl9jb2xsZWN0b3IpCi0gICAg
ICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cyhmaWxlX25h
bWUsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgIGNw
cF9zdHlsZS5jaGVja19zdHlsZShmaWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGVycm9yX2NvbGxl
Y3RvcikKKyAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0
cnVjdHMoZmlsZV9uYW1lLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikK
ICAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZmlsZV9uYW1lLCBlcnJvcl9jb2xs
ZWN0b3IpCiAgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCiAKQEAgLTE0
NywyNCArMTQ3LDI0IEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgIyBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMKICAgICBkZWYgcGVyZm9y
bV9sYW5ndWFnZV9ydWxlc19jaGVjayhzZWxmLCBmaWxlX25hbWUsIGNvZGUpOgogICAgICAgICBl
cnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGlu
Y2x1ZGVfc3RhdGUgPSBjcHBsaW50Ll9JbmNsdWRlU3RhdGUoKQorICAgICAgICBpbmNsdWRlX3N0
YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUoKQogICAgICAgICBsaW5lcyA9IGNvZGUuc3Bs
aXQoJ1xuJykKLSAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxl
X25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGxpbmVzID0gY3BwbGludC5D
bGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVf
Y29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBsaW5l
cyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQogICAgICAgICBleHQgPSBmaWxlX25h
bWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxp
bmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcGxpbnQuY2hlY2tfbGFuZ3VhZ2UoZmls
ZV9uYW1lLCBsaW5lcywgaSwgZXh0LCBpbmNsdWRlX3N0YXRlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBjcHBfc3R5bGUu
Y2hlY2tfbGFuZ3VhZ2UoZmlsZV9uYW1lLCBsaW5lcywgaSwgZXh0LCBpbmNsdWRlX3N0YXRlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAg
ICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKIAogICAgIGRlZiBwZXJmb3Jt
X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soc2VsZiwgY29kZSk6CiAgICAgICAgICIiIlBlcmZvcm0g
TGludCBmdW5jdGlvbiBsZW5ndGggY2hlY2sgb24gYmxvY2sgb2YgY29kZSBhbmQgcmV0dXJuIHdh
cm5pbmdzLgogCiAgICAgICAgIEJ1aWxkcyB1cCBhbiBhcnJheSBvZiBsaW5lcyBjb3JyZXNwb25k
aW5nIHRvIHRoZSBjb2RlIGFuZCBzdHJpcHMgY29tbWVudHMKLSAgICAgICAgdXNpbmcgY3BwbGlu
dCBmdW5jdGlvbnMuCisgICAgICAgIHVzaW5nIGNwcF9zdHlsZSBmdW5jdGlvbnMuCiAKICAgICAg
ICAgRXN0YWJsaXNoZXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlv
biBsZW5ndGggY2hlY2tpbmcKLSAgICAgICAgZnVuY3Rpb24gZm9sbG93aW5nIGNwcGxpbnQncyBw
YXR0ZXJuLgorICAgICAgICBmdW5jdGlvbiBmb2xsb3dpbmcgY3BwX3N0eWxlJ3MgcGF0dGVybi4K
IAogICAgICAgICBBcmdzOgogICAgICAgICAgIGNvZGU6IEMrKyBzb3VyY2UgY29kZSBleHBlY3Rl
ZCB0byBnZW5lcmF0ZSBhIHdhcm5pbmcgbWVzc2FnZS4KQEAgLTE3NCwzMiArMTc0LDMyIEBAIGNs
YXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICIiIgogICAg
ICAgICBmaWxlX25hbWUgPSAnZm9vLmNwcCcKICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJy
b3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcGxp
bnQuX0Z1bmN0aW9uU3RhdGUoKQorICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcF9zdHlsZS5f
RnVuY3Rpb25TdGF0ZSgpCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAg
ICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVy
cm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGlu
ZXMpCisgICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlX25h
bWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGxpbmVzID0gY3BwX3N0eWxlLkNs
ZWFuc2VkTGluZXMobGluZXMpCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGlu
ZXMoKSk6Ci0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGZp
bGVfbmFtZSwgbGluZXMsIGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBj
cHBfc3R5bGUuY2hlY2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZV9uYW1lLCBsaW5lcywgaSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlv
bl9zdGF0ZSwgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9y
LnJlc3VsdHMoKQogCiAgICAgZGVmIHBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2Uoc2VsZiwg
Y29kZSwgZmlsZW5hbWU9J2Zvby5oJywgaW89Y29kZWNzKToKICAgICAgICAgIyBGaXJzdCwgYnVp
bGQgdXAgdGhlIGluY2x1ZGUgc3RhdGUuCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9y
Q29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgaW5jbHVkZV9zdGF0ZSA9IGNwcGxpbnQu
X0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1
ZGVTdGF0ZSgpCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBs
aW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3JfY29s
bGVjdG9yKQotICAgICAgICBsaW5lcyA9IGNwcGxpbnQuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAg
ICAgICAgY3BwX3N0eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5l
cywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBsaW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExp
bmVzKGxpbmVzKQogICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgot
ICAgICAgICAgICAgY3BwbGludC5jaGVja19sYW5ndWFnZShmaWxlbmFtZSwgbGluZXMsIGksICcu
aCcsIGluY2x1ZGVfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19sYW5ndWFnZShmaWxl
bmFtZSwgbGluZXMsIGksICcuaCcsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICAjIFdlIGNvdWxkIGNs
ZWFyIHRoZSBlcnJvcl9jb2xsZWN0b3IgaGVyZSwgYnV0IHRoaXMgc2hvdWxkCiAgICAgICAgICMg
YWxzbyBiZSBmaW5lLCBzaW5jZSBvdXIgSW5jbHVkZVdoYXRZb3VVc2UgdW5pdHRlc3RzIGRvIG5v
dAogICAgICAgICAjIGhhdmUgbGFuZ3VhZ2UgcHJvYmxlbXMuCiAKICAgICAgICAgIyBTZWNvbmQs
IGxvb2sgZm9yIG1pc3NpbmcgaW5jbHVkZXMuCi0gICAgICAgIGNwcGxpbnQuY2hlY2tfZm9yX2lu
Y2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBsaW5lcywgaW5jbHVkZV9zdGF0ZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
LCBpbykKKyAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShm
aWxlbmFtZSwgbGluZXMsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLCBpbykKICAgICAgICAgcmV0
dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKIAogICAgICMgUGVyZm9ybSBsaW50IGFuZCBj
b21wYXJlIHRoZSBlcnJvciBtZXNzYWdlIHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgpAQCAtMjMy
LDcgKzIzMiw3IEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICBkZWYgYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYsIGxpbmVzLCBzdGFydF9lcnJv
cnMsIGVuZF9lcnJvcnMpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5j
cHAnLCAnY3BwJywgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3BwX3N0eWxlLnBy
b2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3Ip
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICAgICAgc3RhcnRfZXJyb3JzLAog
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKQEAgLTI0NSwzMSAr
MjQ1LDMxIEBAIGNsYXNzIENwcGxpbnRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAg
ICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNdJykpCiAKIAotY2xhc3Mg
Q3BwbGludFRlc3QoQ3BwbGludFRlc3RCYXNlKToKK2NsYXNzIENwcFN0eWxlVGVzdChDcHBTdHls
ZVRlc3RCYXNlKToKIAogICAgICMgVGVzdCBnZXQgbGluZSB3aWR0aC4KICAgICBkZWYgdGVzdF9n
ZXRfbGluZV93aWR0aChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgY3BwbGlu
dC5nZXRfbGluZV93aWR0aCgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEwLCBjcHBs
aW50LmdldF9saW5lX3dpZHRoKHUneCcgKiAxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDE2LCBjcHBsaW50LmdldF9saW5lX3dpZHRoKHUn6YO9fOmBk3zlupx855yMfOaUr+W6gScpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBjcHBfc3R5bGUuZ2V0X2xpbmVfd2lkdGgoJycp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxMCwgY3BwX3N0eWxlLmdldF9saW5lX3dpZHRo
KHUneCcgKiAxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDE2LCBjcHBfc3R5bGUuZ2V0
X2xpbmVfd2lkdGgodSfpg7186YGTfOW6nHznnIx85pSv5bqBJykpCiAKICAgICBkZWYgdGVzdF9m
aW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQo
WycnXSwgMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5maW5kX25l
eHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KFsnJ10sIDApKQogCiAgICAgICAgIGxpbmVzID0g
WydhJywgJ2InLCAnLyogYyddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGNwcGxpbnQu
ZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgMCkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKDIsIGNwcF9zdHlsZS5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50
X3N0YXJ0KGxpbmVzLCAwKSkKIAogICAgICAgICBsaW5lcyA9IFsnY2hhciBhW10gPSAiLyoiOydd
ICAjIG5vdCByZWNvZ25pemVkIGFzIGNvbW1lbnQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDEsIGNwcGxpbnQuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgMCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5maW5kX25leHRfbXVsdGlf
bGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCAwKSkKIAogICAgIGRlZiB0ZXN0X2ZpbmRfbmV4dF9t
dWx0aV9saW5lX2NvbW1lbnRfZW5kKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKFsnJ10sIDApKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5bGUuZmluZF9uZXh0X211bHRpX2xpbmVf
Y29tbWVudF9lbmQoWycnXSwgMCkpCiAgICAgICAgIGxpbmVzID0gWydhJywgJ2InLCAnIGMgKi8n
XQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9s
aW5lX2NvbW1lbnRfZW5kKGxpbmVzLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwg
Y3BwX3N0eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCAwKSkKIAog
ICAgIGRlZiB0ZXN0X3JlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2Uoc2VsZik6
CiAgICAgICAgIGxpbmVzID0gWydhJywgJyAgLyogY29tbWVudCAnLCAnICogc3RpbGwgY29tbWVu
dCcsICcgY29tbWVudCAqLyAgICcsICdiJ10KLSAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlf
bGluZV9jb21tZW50c19mcm9tX3JhbmdlKGxpbmVzLCAxLCA0KQorICAgICAgICBjcHBfc3R5bGUu
cmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywgMSwgNCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoWydhJywgJy8vIGR1bW15JywgJy8vIGR1bW15JywgJy8vIGR1
bW15JywgJ2InXSwgbGluZXMpCiAKICAgICBkZWYgdGVzdF9zcGFjZXNfYXRfZW5kX29mX2xpbmUo
c2VsZik6CkBAIC00MzEsNyArNDMxLDcgQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RC
YXNlKToKICAgICAgICAgICAgICdVc2luZyBzaXplb2YodHlwZSkuICBVc2Ugc2l6ZW9mKHZhcm5h
bWUpIGluc3RlYWQgaWYgcG9zc2libGUnCiAgICAgICAgICAgICAnICBbcnVudGltZS9zaXplb2Zd
IFsxXScpCiAKLSAgICAjIFRlc3QgdHlwZWRlZiBjYXNlcy4gIFRoZXJlIHdhcyBhIGJ1ZyB0aGF0
IGNwcGxpbnQgbWlzaWRlbnRpZmllZAorICAgICMgVGVzdCB0eXBlZGVmIGNhc2VzLiAgVGhlcmUg
d2FzIGEgYnVnIHRoYXQgY3BwX3N0eWxlIG1pc2lkZW50aWZpZWQKICAgICAjIHR5cGVkZWYgZm9y
IHBvaW50ZXIgdG8gZnVuY3Rpb24gYXMgQy1zdHlsZSBjYXN0IGFuZCBwcm9kdWNlZAogICAgICMg
ZmFsc2UtcG9zaXRpdmUgZXJyb3IgbWVzc2FnZXMuCiAgICAgZGVmIHRlc3RfdHlwZWRlZl9mb3Jf
cG9pbnRlcl90b19mdW5jdGlvbihzZWxmKToKQEAgLTYyMyw3ICs2MjMsNyBAQCBjbGFzcyBDcHBs
aW50VGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQogCiAgICAgZGVmIHRlc3Rf
ZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKHNlbGYpOgotICAgICAgICBmID0gY3BwbGludC5m
aWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUKKyAgICAgICAgZiA9IGNwcF9zdHlsZS5maWxlc19i
ZWxvbmdfdG9fc2FtZV9tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcn
KSwgZignYS5jcHAnLCAnYS5oJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAn
JyksIGYoJ2Jhc2UvZ29vZ2xlLmNwcCcsICdiYXNlL2dvb2dsZS5oJykpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKChUcnVlLCAnJyksIGYoJ2Jhc2UvZ29vZ2xlX3Rlc3QuY3BwJywgJ2Jhc2Uv
Z29vZ2xlLmgnKSkKQEAgLTY0OSwxNyArNjQ5LDE3IEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxp
bnRUZXN0QmFzZSk6CiAKICAgICBkZWYgdGVzdF9jbGVhbnNlX2xpbmUoc2VsZik6CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCdpbnQgZm9vID0gMDsgICcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcGxpbnQuY2xlYW5zZV9jb21tZW50cygnaW50IGZvbyA9IDA7ICAvLyBkYW5nZXIh
JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRz
KCdpbnQgZm9vID0gMDsgIC8vIGRhbmdlciEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
J2ludCBvID0gMDsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2Vf
Y29tbWVudHMoJ2ludCAvKiBmb28gKi8gbyA9IDA7JykpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdpbnQgLyogZm9vICovIG8gPSAwOycpKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZm9vKGludCBhLCBpbnQgYik7JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdmb28oaW50IGEgLyog
YWJjICovLCBpbnQgYik7JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5j
bGVhbnNlX2NvbW1lbnRzKCdmb28oaW50IGEgLyogYWJjICovLCBpbnQgYik7JykpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBsaW50LmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFtZSAqLyBiKTsnKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnZihhLCAvKiBuYW1l
ICovIGIpOycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdmKGEgLyogbmFtZSAq
LywgYik7JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29t
bWVudHMoJ2YoYSAvKiBuYW1lICovLCBiKTsnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
ZihhLCBiKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuY2xlYW5zZV9jb21t
ZW50cygnZihhLCAvKiBuYW1lICovYik7JykpCisgICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
X3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFtZSAqL2IpOycpKQogCiAgICAgZGVm
IHRlc3RfbXVsdGlfbGluZV9jb21tZW50cyhzZWxmKToKICAgICAgICAgIyBtaXNzaW5nIGV4cGxp
Y2l0IGlzIGJhZApAQCAtNjkxLDEwICs2OTEsMTAgQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGlu
dFRlc3RCYXNlKToKICAgICAgICAgZmlsZV9wYXRoID0gJ215ZGlyL2Zvby5jcHAnCiAKICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAg
ICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2NwcCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWydjb25zdCBjaGFyKiBzdHIgPSAiVGhpcyBpcyBhXFwn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11bHRpbGluZSBzdHJpbmcu
IjsnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Ip
CisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjcHAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydjb25zdCBjaGFyKiBzdHIgPSAi
VGhpcyBpcyBhXFwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgbXVs
dGlsaW5lIHN0cmluZy4iOyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgICAg
IDIsICAjIE9uZSBwZXIgbGluZS4KICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRf
bGlzdCgpLmNvdW50KG11bHRpbGluZV9zdHJpbmdfZXJyb3JfbWVzc2FnZSkpCkBAIC0xMzMyLDgg
KzEzMzIsOCBAQCBjbGFzcyBDcHBsaW50VGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgIGRlZiB0
ZXN0X25ld2xpbmVfYXRfZW9mKHNlbGYpOgogICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCBkYXRh
LCBpc19taXNzaW5nX2VvZik6CiAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNv
bGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9k
YXRhKCdmb28uY3BwJywgJ2NwcCcsIGRhdGEuc3BsaXQoJ1xuJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgICAgIGNwcF9z
dHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLCBkYXRhLnNwbGl0KCdcbicp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
cikKICAgICAgICAgICAgICMgVGhlIHdhcm5pbmcgYXBwZWFycyBvbmx5IG9uY2UuCiAgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygKICAgICAgICAgICAgICAgICBpbnQoaXNfbWlzc2luZ19l
b2YpLApAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RC
YXNlKToKICAgICBkZWYgdGVzdF9pbnZhbGlkX3V0Zjgoc2VsZik6CiAgICAgICAgIGRlZiBkb190
ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRmOCk6CiAgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgICAgICBj
cHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKAorICAgICAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3Nf
ZmlsZV9kYXRhKAogICAgICAgICAgICAgICAgICdmb28uY3BwJywgJ2NwcCcsCiAgICAgICAgICAg
ICAgICAgdW5pY29kZShyYXdfYnl0ZXMsICd1dGY4JywgJ3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwK
ICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCkBAIC0xMzY3LDExICsxMzY3LDExIEBA
IGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgIGRvX3Rlc3Qoc2Vs
ZiwgJ1x4ZWZceGJmXHhiZFxuJywgVHJ1ZSkKIAogICAgIGRlZiB0ZXN0X2lzX2JsYW5rX2xpbmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0XyhjcHBsaW50LmlzX2JsYW5rX2xpbmUoJycpKQot
ICAgICAgICBzZWxmLmFzc2VydF8oY3BwbGludC5pc19ibGFua19saW5lKCcgJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0XyhjcHBsaW50LmlzX2JsYW5rX2xpbmUoJyBcdFxyXG4nKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRfKG5vdCBjcHBsaW50LmlzX2JsYW5rX2xpbmUoJ2ludCBhOycpKQotICAgICAg
ICBzZWxmLmFzc2VydF8obm90IGNwcGxpbnQuaXNfYmxhbmtfbGluZSgneycpKQorICAgICAgICBz
ZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJycpKQorICAgICAgICBzZWxmLmFz
c2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJyAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRf
KGNwcF9zdHlsZS5pc19ibGFua19saW5lKCcgXHRcclxuJykpCisgICAgICAgIHNlbGYuYXNzZXJ0
Xyhub3QgY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJ2ludCBhOycpKQorICAgICAgICBzZWxmLmFz
c2VydF8obm90IGNwcF9zdHlsZS5pc19ibGFua19saW5lKCd7JykpCiAKICAgICBkZWYgdGVzdF9i
bGFua19saW5lc19jaGVjayhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNf
Y2hlY2soWyd7XG4nLCAnXG4nLCAnXG4nLCAnfVxuJ10sIDEsIDEpCkBAIC0xMzgzLDQwICsxMzgz
LDQwIEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAKICAgICBkZWYgdGVz
dF9hbGxvd19ibGFua19saW5lX2JlZm9yZV9jbG9zaW5nX25hbWVzcGFjZShzZWxmKToKICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAg
ICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWyduYW1lc3BhY2UgeycsICcnLCAnfSAgLy8gbmFtZXNw
YWNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnbmFtZXNwYWNlIHsnLCAnJywg
J30gIC8vIG5hbWVzcGFjZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBlcnJvcl9jb2xs
ZWN0b3IucmVzdWx0cygpLmNvdW50KAogICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVu
ZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCiAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKIAogICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5rX2xp
bmVfYmVmb3JlX2lmX2Vsc2VfY2hhaW4oc2VsZik6CiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2Zp
bGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsnaWYgKGhvZ2UpIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
JywgICMgTm8gd2FybmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBl
bHNlIGlmIChwaXlvKSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycs
ICAjIE5vIHdhcm5pbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30gZWxz
ZSBpZiAocGl5b3BpeW8pIHsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBob2dlID0gdHJ1ZTsnLCAgIyBObyB3YXJuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd9IGVsc2UgeycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcnLCAgIyBXYXJuaW5nIG9uIHRoaXMgbGluZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnfSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdj
cHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydpZiAoaG9nZSkgeycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIE5vIHdhcm5pbmcK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBlbHNlIGlmIChwaXlvKSB7
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICMgTm8gd2Fybmlu
ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHBpeW9w
aXlvKSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBob2dlID0g
dHJ1ZTsnLCAgIyBObyB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ30gZWxzZSB7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywg
ICMgV2FybmluZyBvbiB0aGlzIGxpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnfSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29s
bGVjdG9yKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVz
dWx0cygpLmNvdW50KAogICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNv
ZGUgYmxvY2suICBJcyB0aGlzIG5lZWRlZD8nCiAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9i
bGFua19saW5lXSBbM10nKSkKIAogICAgIGRlZiB0ZXN0X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Ns
b3NpbmdfYnJhY2VzKHNlbGYpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxl
Y3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zv
by5jcHAnLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmICho
b2dlKSB7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9JywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyBlbHNlIHsnICAjIFdhcm5pbmcgb24gdGhpcyBsaW5lCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnfSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvcikKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywg
J2NwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyBlbHNlIHsnICAjIFdhcm5pbmcgb24gdGhpcyBsaW5lCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ30nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgZXJyb3JfY29sbGVj
dG9yLnJlc3VsdHMoKS5jb3VudCgKICAgICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBlYXIg
b24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0nCiAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9uZXdsaW5lXSBbNF0nKSkKQEAgLTE0NzgsODEgKzE0NzgsODEgQEAgY2xhc3MgQ3Bw
bGludFRlc3QoQ3BwbGludFRlc3RCYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFi
IGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcyAgW3doaXRlc3BhY2UvdGFiXSBbMV0nKQogCiAg
ICAgZGVmIHRlc3RfcGFyc2VfYXJndW1lbnRzKHNlbGYpOgotICAgICAgICBvbGRfdXNhZ2UgPSBj
cHBsaW50Ll9VU0FHRQotICAgICAgICBvbGRfZXJyb3JfY2F0ZWdvcmllcyA9IGNwcGxpbnQuX0VS
Uk9SX0NBVEVHT1JJRVMKLSAgICAgICAgb2xkX291dHB1dF9mb3JtYXQgPSBjcHBsaW50Ll9jcHBs
aW50X3N0YXRlLm91dHB1dF9mb3JtYXQKLSAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBjcHBs
aW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwKLSAgICAgICAgb2xkX2ZpbHRlcnMgPSBj
cHBsaW50Ll9jcHBsaW50X3N0YXRlLmZpbHRlcnMKKyAgICAgICAgb2xkX3VzYWdlID0gY3BwX3N0
eWxlLl9VU0FHRQorICAgICAgICBvbGRfZXJyb3JfY2F0ZWdvcmllcyA9IGNwcF9zdHlsZS5fRVJS
T1JfQ0FURUdPUklFUworICAgICAgICBvbGRfb3V0cHV0X2Zvcm1hdCA9IGNwcF9zdHlsZS5fY3Bw
X3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQKKyAgICAgICAgb2xkX3ZlcmJvc2VfbGV2ZWwgPSBj
cHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsCisgICAgICAgIG9sZF9maWx0
ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycwogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAjIERvbid0IHByaW50IHVzYWdlIGR1cmluZyB0aGUgdGVzdHMsIG9yIGZpbHRl
ciBjYXRlZ29yaWVzCi0gICAgICAgICAgICBjcHBsaW50Ll9VU0FHRSA9ICcnCi0gICAgICAgICAg
ICBjcHBsaW50Ll9FUlJPUl9DQVRFR09SSUVTID0gJycKKyAgICAgICAgICAgIGNwcF9zdHlsZS5f
VVNBR0UgPSAnJworICAgICAgICAgICAgY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTID0gJycK
IAotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwbGludC5wYXJz
ZV9hcmd1bWVudHMsIFsnLS1iYWRvcHQnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFN5c3RlbUV4aXQsIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0taGVscCddKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwbGludC5wYXJzZV9hcmd1bWVu
dHMsIFsnLS1maWx0ZXI9J10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1F
eGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tYmFkb3B0J10pCisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRz
LCBbJy0taGVscCddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwg
Y3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywgWyctLWZpbHRlcj0nXSkKICAgICAgICAgICAgICMg
VGhpcyBpcyBpbGxlZ2FsIGJlY2F1c2UgYWxsIGZpbHRlcnMgbXVzdCBzdGFydCB3aXRoICsgb3Ig
LQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3BwbGludC5wYXJz
ZV9hcmd1bWVudHMsIFsnLS1maWx0ZXI9Zm9vJ10pCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsn
LS1maWx0ZXI9Zm9vJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9y
LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyctLWZpbHRlcj0rYSxiLC1jJ10pCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KChbJ2Zvby5jcHAnXSwge30pLCBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSkp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvbGRfb3V0cHV0X2Zvcm1hdCwgY3BwbGlu
dC5fY3BwbGludF9zdGF0ZS5vdXRwdXRfZm9ybWF0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMob2xkX3ZlcmJvc2VfbGV2ZWwsIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9s
ZXZlbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLCBj
cHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCddKSkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9sZF9vdXRwdXRfZm9ybWF0LCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS5vdXRwdXRfZm9ybWF0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob2xkX3ZlcmJv
c2VfbGV2ZWwsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCiAKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbXSwge30pLCBjcHBsaW50LnBhcnNlX2FyZ3Vt
ZW50cyhbXSkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoW10sIHt9KSwgY3BwbGlu
dC5wYXJzZV9hcmd1bWVudHMoWyctLXY9MCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKChbXSwge30pLCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFtdKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKChbXSwge30pLCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsn
LS12PTAnXSkpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwg
e30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVu
dHMoWyctLXY9MScsICdmb28uY3BwJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MSwgY3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0xJywgJ2Zvby5j
cHAnXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBjcHBfc3R5bGUuX2NwcF9z
dHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
KFsnZm9vLmgnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5w
YXJzZV9hcmd1bWVudHMoWyctLXY9MycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDMsIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9sZXZlbCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9
MycsICdmb28uaCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDMsIGNwcF9zdHls
ZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnLS12ZXJib3NlPTUnLCAnZm9vLmNwcCddKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDUsIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVy
Ym9zZV9sZXZlbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJz
ZV9hcmd1bWVudHMoWyctLXZlcmJvc2U9NScsICdmb28uY3BwJ10pKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoNSwgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZl
bCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywgWyctLXY9ZicsICdm
b28uY3BwJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2Vf
YXJndW1lbnRzLCBbJy0tdj1mJywgJ2Zvby5jcHAnXSkKIAogICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnXSkp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW1hY3MnLCBjcHBsaW50Ll9jcHBsaW50
X3N0YXRlLm91dHB1dF9mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBf
c3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9ZW1hY3MnLCAnZm9vLmNwcCddKSkKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbWFjcycsIGNwcF9zdHlsZS5fY3BwX3N0eWxl
X3N0YXRlLm91dHB1dF9mb3JtYXQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydm
b28uaCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNl
X2FyZ3VtZW50cyhbJy0tb3V0cHV0PXZzNycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCd2czcnLCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRz
KFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5oJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ3ZzNycsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCiAgICAg
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMsIFsnLS1vdXRwdXQ9YmxhaCcsICdm
b28uY3BwJ10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2Vf
YXJndW1lbnRzLCBbJy0tb3V0cHV0PWJsYWgnLCAnZm9vLmNwcCddKQogCiAgICAgICAgICAgICBm
aWx0ID0gJy0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2UvaW5kZW50JwogICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMoWyctLWZpbHRlcj0nK2ZpbHQsICdmb28uaCdd
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVu
dHMoWyctLWZpbHRlcj0nK2ZpbHQsICdmb28uaCddKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFsnLScsICcrd2hpdGVzcGFjZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycykK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRl
LmZpbHRlcnMpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnLCAn
Zm9vLmgnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJz
ZV9hcmd1bWVudHMoWydmb28uY3BwJywgJ2Zvby5oJ10pKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnLCAnZm9vLmgnXSkp
CiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6
ICcnfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3Vt
ZW50cyhbJy0tZm9vJywgJ2Zvby5jcHAnXSwgWydmb28nXSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1mb28nLCAnZm9vLmNwcCdd
LCBbJ2ZvbyddKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwg
eyctLWZvbyc6ICdiYXInfSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50
LnBhcnNlX2FyZ3VtZW50cyhbJy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyct
LWZvbz1iYXInLCAnZm9vLmNwcCddLCBbJ2Zvbz0nXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCddLCBbJ2Zvbz0nXSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNw
cCddLCBbJ2Zvbz0nXSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctLWZvb3R5cG89YmFyJywgJ2Zvby5j
cHAnXSwgWydmb289J10pCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjcHBsaW50Ll9V
U0FHRSA9IG9sZF91c2FnZQotICAgICAgICAgICAgY3BwbGludC5fRVJST1JfQ0FURUdPUklFUyA9
IG9sZF9lcnJvcl9jYXRlZ29yaWVzCi0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRl
Lm91dHB1dF9mb3JtYXQgPSBvbGRfb3V0cHV0X2Zvcm1hdAotICAgICAgICAgICAgY3BwbGludC5f
Y3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJvc2VfbGV2ZWwKLSAgICAgICAg
ICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCisgICAgICAg
ICAgICBjcHBfc3R5bGUuX1VTQUdFID0gb2xkX3VzYWdlCisgICAgICAgICAgICBjcHBfc3R5bGUu
X0VSUk9SX0NBVEVHT1JJRVMgPSBvbGRfZXJyb3JfY2F0ZWdvcmllcworICAgICAgICAgICAgY3Bw
X3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCA9IG9sZF9vdXRwdXRfZm9ybWF0
CisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0g
b2xkX3ZlcmJvc2VfbGV2ZWwKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRl
LmZpbHRlcnMgPSBvbGRfZmlsdGVycwogCiAgICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgotICAg
ICAgICBvbGRfZmlsdGVycyA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycworICAgICAg
ICBvbGRfZmlsdGVycyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycygn
LSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQnKQorICAgICAgICAgICAgY3BwX3N0eWxl
Ll9jcHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoJy0sK3doaXRlc3BhY2UsLXdoaXRlc3BhY2Uv
aW5kZW50JykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAgICAg
Jy8vIEhlbGxvIHRoZXJlICcsCiAgICAgICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNw
YWNlLiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKQEAgLTE1NjAsMjUg
KzE1NjAsMjUgQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RCYXNlKToKICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhID0gKGludCkxLjA7JywgJycpCiAgICAgICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcgd2VpcmQgb3BlbmluZyBzcGFjZScsICcnKQogICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5maWx0ZXJzID0gb2xk
X2ZpbHRlcnMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMg
PSBvbGRfZmlsdGVycwogCiAgICAgZGVmIHRlc3RfZGVmYXVsdF9maWx0ZXIoc2VsZik6Ci0gICAg
ICAgIGRlZmF1bHRfZmlsdGVycyA9IGNwcGxpbnQuX0RFRkFVTFRfRklMVEVSUwotICAgICAgICBv
bGRfZmlsdGVycyA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycwotICAgICAgICBjcHBs
aW50Ll9ERUZBVUxUX0ZJTFRFUlMgPSBbICctd2hpdGVzcGFjZScgXQorICAgICAgICBkZWZhdWx0
X2ZpbHRlcnMgPSBjcHBfc3R5bGUuX0RFRkFVTFRfRklMVEVSUworICAgICAgICBvbGRfZmlsdGVy
cyA9IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMKKyAgICAgICAgY3BwX3N0eWxl
Ll9ERUZBVUxUX0ZJTFRFUlMgPSBbICctd2hpdGVzcGFjZScgXQogICAgICAgICB0cnk6CiAgICAg
ICAgICAgICAjIFJlc2V0IGZpbHRlcnMKLSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3Rh
dGUuc2V0X2ZpbHRlcnMoJycpCisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS5zZXRfZmlsdGVycygnJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8vIEhlbGxv
IHRoZXJlICcsICcnKQotICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmls
dGVycygnK3doaXRlc3BhY2UvZW5kX29mX2xpbmUnKQorICAgICAgICAgICAgY3BwX3N0eWxlLl9j
cHBfc3R5bGVfc3RhdGUuc2V0X2ZpbHRlcnMoJyt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lJykKICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCiAgICAgICAgICAgICAgICAgJy8vIEhlbGxvIHRo
ZXJlICcsCiAgICAgICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNwYWNlLiAgQ29uc2lk
ZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9lbmRfb2ZfbGluZV0gWzRdJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
JyB3ZWlyZCBvcGVuaW5nIHNwYWNlJywgJycpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycwotICAgICAgICAg
ICAgY3BwbGludC5fREVGQVVMVF9GSUxURVJTID0gZGVmYXVsdF9maWx0ZXJzCisgICAgICAgICAg
ICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzID0gb2xkX2ZpbHRlcnMKKyAgICAg
ICAgICAgIGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJTID0gZGVmYXVsdF9maWx0ZXJzCiAKICAg
ICBkZWYgdGVzdF91bm5hbWVkX25hbWVzcGFjZXNfaW5faGVhZGVycyhzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soCkBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBj
bGFzcyBDcHBsaW50VGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgICAgICAjIGRvZXNuJ3QgYWxs
b3cgdXMgdG8gdGVzdCB0aGUgc3VnZ2VzdGVkIGhlYWRlciBndWFyZCwgYnV0IGl0IGRvZXMgbGV0
IHVzCiAgICAgICAgICMgdGVzdCBhbGwgdGhlIG90aGVyIGhlYWRlciB0ZXN0cy4KICAgICAgICAg
ZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBj
cHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLCBbXSwgZXJyb3JfY29sbGVj
dG9yKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcs
IFtdLCBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIGV4cGVjdGVkX2d1YXJkID0gJycKICAgICAg
ICAgbWF0Y2hlciA9IHJlLmNvbXBpbGUoCiAgICAgICAgICAgICAnTm8gXCNpZm5kZWYgaGVhZGVy
IGd1YXJkIGZvdW5kXCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpc1w6IChbQS1aXzAtOV0rKSAn
KQpAQCAtMTY2Miw4ICsxNjYyLDggQEAgY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RCYXNl
KToKIAogICAgICAgICAjIFdyb25nIGd1YXJkCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
JyNpZm5kZWYgRk9PX0gnLCAnI2RlZmluZSBGT09fSCddLCBlcnJvcl9jb2xsZWN0b3IpCisgICAg
ICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT09fSCcsICcjZGVmaW5lIEZP
T19IJ10sIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAg
ICAgICAgICAxLAogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291
bnQoCkBAIC0xNjczLDggKzE2NzMsOCBAQCBjbGFzcyBDcHBsaW50VGVzdChDcHBsaW50VGVzdEJh
c2UpOgogCiAgICAgICAgICMgTm8gZGVmaW5lCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
JyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAg
IGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZF0s
IGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAgICAg
ICAxLAogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCkBA
IC0xNjg0LDEwICsxNjg0LDEwIEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6
CiAKICAgICAgICAgIyBNaXNtYXRjaGVkIGRlZmluZQogICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19m
aWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2RlZmluZSBGT09fSCddLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmls
ZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPT19IJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KAogICAgICAgICAgICAgMSwKICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlz
dCgpLmNvdW50KApAQCAtMTY5NywxMCArMTY5NywxMCBAQCBjbGFzcyBDcHBsaW50VGVzdChDcHBs
aW50VGVzdEJhc2UpOgogCiAgICAgICAgICMgTm8gZW5kaWYKICAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nl
c3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3Bw
X3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVk
X2d1YXJkXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAgICAgICAxLAogICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCkBAIC0xNzEwLDExICsx
NzEwLDExIEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAKICAgICAgICAg
IyBDb21tZW50bGVzcyBlbmRpZgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxl
Y3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmls
ZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVm
ICVzJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2RlZmluZSAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNlbmRpZiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKGZp
bGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZu
ZGVmICVzJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcjZW5kaWYnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAg
ICAgICAgICAgICAxLAogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCku
Y291bnQoCkBAIC0xNzI0LDExICsxNzI0LDExIEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRU
ZXN0QmFzZSk6CiAKICAgICAgICAgIyBDb21tZW50bGVzcyBlbmRpZiBmb3Igb2xkLXN0eWxlIGd1
YXJkCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0
XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXNfJyAlIGV4cGVjdGVk
X2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlc18n
ICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
ZW5kaWYnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IpCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhw
ZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZp
bmUgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjZW5kaWYnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAgICAgICAx
LAogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCkBAIC0x
NzM4LDM2ICsxNzM4LDM2IEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAK
ICAgICAgICAgIyBObyBoZWFkZXIgZ3VhcmQgZXJyb3JzCiAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNz
X2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZGVmaW5lICVzJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlcycgJSBleHBlY3RlZF9ndWFy
ZF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQor
ICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMnICUgZXhwZWN0ZWRf
Z3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMn
ICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNlbmRpZiAgLy8gJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBmb3IgbGluZSBpbiBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKICAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnYnVp
bGQvaGVhZGVyX2d1YXJkJykgIT0gLTE6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4
cGVjdGVkIGVycm9yOiAlcycgJSBsaW5lKQogCiAgICAgICAgICMgTm8gaGVhZGVyIGd1YXJkIGVy
cm9ycyBmb3Igb2xkLXN0eWxlIGd1YXJkCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9y
Q29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0
YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNp
Zm5kZWYgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2RlZmluZSAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcjZW5kaWYgIC8vICVzXycgJSBleHBlY3RlZF9ndWFyZF0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAg
ICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXNfJyAlIGV4cGVjdGVkX2d1YXJk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVzXycgJSBl
eHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2Vu
ZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3VhcmRdLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBmb3IgbGluZSBpbiBlcnJvcl9j
b2xsZWN0b3IucmVzdWx0X2xpc3QoKToKICAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnYnVpbGQv
aGVhZGVyX2d1YXJkJykgIT0gLTE6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVj
dGVkIGVycm9yOiAlcycgJSBsaW5lKQogCi0gICAgICAgIG9sZF92ZXJib3NlX2xldmVsID0gY3Bw
bGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsCisgICAgICAgIG9sZF92ZXJib3NlX2xl
dmVsID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbAogICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWwgPSAw
CisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsID0g
MAogICAgICAgICAgICAgIyBXYXJuIG9uIG9sZC1zdHlsZSBndWFyZCBpZiB2ZXJib3NpdHkgaXMg
MC4KICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNz
ZXJ0XykKLSAgICAgICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAn
aCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlc18n
ICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2RlZmluZSAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAg
ICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVzXycgJSBleHBl
Y3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNk
ZWZpbmUgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3VhcmRdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICAgICAgICAgIDEsCiAgICAgICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCkBAIC0xNzc1LDE1ICsx
Nzc1LDE1IEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICAg
ICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFswXScgJSBleHBlY3RlZF9ndWFyZCks
CiAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCiAgICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2
ZWwgPSBvbGRfdmVyYm9zZV9sZXZlbAorICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVf
c3RhdGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCiAKICAgICAgICAgIyBDb21w
bGV0ZWx5IGluY29ycmVjdCBoZWFkZXIgZ3VhcmQKICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0g
RXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmls
ZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFsnI2lmbmRlZiBGT08nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2Rl
ZmluZSBGT08nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAv
LyBGT08nXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IpCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT08nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPTycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRpZiAgLy8gRk9PJ10sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKAogICAgICAgICAgICAgMSwKICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KApAQCAtMTkzMSwxMyArMTkzMSwxMyBAQCBjbGFzcyBD
cHBsaW50VGVzdChDcHBsaW50VGVzdEJhc2UpOgogCiAgICAgICAgICMgVGhlcmUgc2hvdWxkIGJl
IGEgY29weXJpZ2h0IG1lc3NhZ2UgaW4gdGhlIGZpcnN0IDEwIGxpbmVzCiAgICAgICAgIGVycm9y
X2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGlu
dC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjcHAnLCBbXSwgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywg
W10sIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCiAgICAgICAg
ICAgICAxLAogICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQo
bGVnYWxfY29weXJpZ2h0X21lc3NhZ2UpKQogCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVf
ZGF0YSgKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKAogICAgICAgICAgICAg
ZmlsZV9wYXRoLCAnY3BwJywKICAgICAgICAgICAgIFsnJyBmb3IgdW51c2VkX2kgaW4gcmFuZ2Uo
MTApXSArIFtjb3B5cmlnaHRfbGluZV0sCiAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCkBA
IC0xOTQ3LDEzICsxOTQ3LDEzIEBAIGNsYXNzIENwcGxpbnRUZXN0KENwcGxpbnRUZXN0QmFzZSk6
CiAKICAgICAgICAgIyBUZXN0IHRoYXQgd2FybmluZyBpc24ndCBpc3N1ZWQgaWYgQ29weXJpZ2h0
IGxpbmUgYXBwZWFycyBlYXJseSBlbm91Z2guCiAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVf
ZGF0YShmaWxlX3BhdGgsICdjcHAnLCBbY29weXJpZ2h0X2xpbmVdLCBlcnJvcl9jb2xsZWN0b3Ip
CisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdjcHAnLCBb
Y29weXJpZ2h0X2xpbmVdLCBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIGZvciBtZXNzYWdlIGlu
IGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgogICAgICAgICAgICAgaWYgbWVzc2FnZS5m
aW5kKCdsZWdhbC9jb3B5cmlnaHQnKSAhPSAtMToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwo
J1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIG1lc3NhZ2UpCiAKICAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nl
c3NfZmlsZV9kYXRhKAorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoCiAgICAg
ICAgICAgICBmaWxlX3BhdGgsICdjcHAnLAogICAgICAgICAgICAgWycnIGZvciB1bnVzZWRfaSBp
biByYW5nZSg5KV0gKyBbY29weXJpZ2h0X2xpbmVdLAogICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yKQpAQCAtMTk3Myw3ICsxOTczLDcgQEAgY2xhc3MgQ2xlYW5zZWRMaW5lc1Rlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAnTGluZSAzIC8vIENvbW1lbnQgdGVzdCcs
CiAgICAgICAgICAgICAgICAgICdMaW5lIDQgImZvbyInXQogCi0gICAgICAgIGNsZWFuX2xpbmVz
ID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBjbGVhbl9saW5lcyA9IGNw
cF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhs
aW5lcywgY2xlYW5fbGluZXMucmF3X2xpbmVzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0
LCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSkKIApAQCAtMTk5MCwxMiArMTk5MCwxMiBAQCBjbGFz
cyBDbGVhbnNlZExpbmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFuX2xpbmVzLmVsaWRlZCkKIAogICAgIGRlZiB0ZXN0X2luaXRfZW1wdHko
c2VsZik6Ci0gICAgICAgIGNsZWFuX2xpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKFtdKQor
ICAgICAgICBjbGVhbl9saW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKFtdKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhbXSwgY2xlYW5fbGluZXMucmF3X2xpbmVzKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygwLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSkKIAogICAgIGRlZiB0
ZXN0X2NvbGxhcHNlX3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGNvbGxhcHNlID0gY3BwbGludC5D
bGVhbnNlZExpbmVzLmNvbGxhcHNlX3N0cmluZ3MKKyAgICAgICAgY29sbGFwc2UgPSBjcHBfc3R5
bGUuQ2xlYW5zZWRMaW5lcy5jb2xsYXBzZV9zdHJpbmdzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKCciIicsIGNvbGxhcHNlKCciIicpKSAgICAgICAgICAgICAjICIiICAgICAoZW1wdHkpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIiInLCBjb2xsYXBzZSgnIiIiJykpICAgICAgICAg
ICAjICIiIiAgICAoYmFkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBz
ZSgnInh5eiInKSkgICAgICAgICAgIyAieHl6IiAgKHN0cmluZykKQEAgLTIwMjEsOSArMjAyMSw5
IEBAIGNsYXNzIENsZWFuc2VkTGluZXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29sbGFwc2UoJ1wnIlwnICJmb28iJykpCiAKIAotY2xhc3MgT3Jk
ZXJPZkluY2x1ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgorY2xhc3MgT3JkZXJPZkluY2x1ZGVz
VGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNl
bGYuaW5jbHVkZV9zdGF0ZSA9IGNwcGxpbnQuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIHNlbGYu
aW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKIAogICAgICAgICAjIENo
ZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmlsZUluZm8gY2xhc3MuCiAgICAgICAgIHNl
bGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRoLmFic3BhdGgKQEAgLTIwMzMsMjEgKzIw
MzMsMjEgQEAgY2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAg
ICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxmLm9zX3BhdGhfYWJzcGF0aF9vcmlnCiAKICAgICBk
ZWYgdGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zv
by1pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vJywgY3BwX3N0eWxl
Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1pbmwuaCcpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdmb28vYmFyL2ZvbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGlu
dC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9iYXIvZm9vX2lubC5oJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygn
Zm9vL2Zvby5jcHAnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3Bf
Y29tbW9uX3N1ZmZpeGVzKCdmb28vYmFyL2Zvb19pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdmb28vZm9vJywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zv
by5jcHAnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJu
YWwnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZp
eGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbC5oJykpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJu
YWwuaCcpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdfdGVzdC5jcHAnKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdfdGVz
dC5jcHAnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ3Rlc3QuY3BwJykpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygn
dGVzdC5jcHAnKSkKIAogCi1jbGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcGxpbnRUZXN0QmFz
ZSk6CitjbGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5j
bHVkZVN0YXRlKCkKKyAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNs
dWRlU3RhdGUoKQogCiAgICAgICAgICMgQ2hlYXQgb3MucGF0aC5hYnNwYXRoIGNhbGxlZCBpbiBG
aWxlSW5mbyBjbGFzcy4KICAgICAgICAgc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZyA9IG9zLnBh
dGguYWJzcGF0aApAQCAtMjA1OCwxMSArMjA1OCwxMSBAQCBjbGFzcyBPcmRlck9mSW5jbHVkZXNU
ZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAKICAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXJfX25vX2NvbmZpZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVhZGVy
IGZpbGUgc2hvdWxkIG5vdCBjb250YWluIFdlYkNvcmUgY29uZmlnLmguJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcGxpbnQuX0NPTkZJR19IRUFERVIsIFRydWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9D
T05GSUdfSEVBREVSLCBUcnVlKSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9v
cmRlcl9fbm9fc2VsZihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVhZGVyIGZp
bGUgc2hvdWxkIG5vdCBjb250YWluIGl0c2VsZi4nLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwbGludC5fUFJJ
TUFSWV9IRUFERVIsIFRydWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVk
ZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURF
UiwgVHJ1ZSkpCiAgICAgICAgICMgVGVzdCBhY3R1YWwgY29kZSB0byBtYWtlIHN1cmUgdGhhdCBo
ZWFkZXIgdHlwZXMgYXJlIGNvcnJlY3RseSBhc3NpZ25lZC4KICAgICAgICAgc2VsZi5hc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ0Zvby5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNpbmNsdWRlICJGb28uaCJcbicsCkBAIC0yMDc0LDIyICsyMDc0LDIy
IEBAIGNsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rlc3QoQ3BwbGludFRlc3RCYXNlKToKIAogICAgIGRl
ZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fbGlrZWx5X3RoZW5fY29uZmlnKHNlbGYp
OgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBoZWFkZXIgdGhpcyBmaWxlIGltcGxl
bWVudHMgYmVmb3JlIFdlYkNvcmUgY29uZmlnLmguJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcGxpbnQuX1BS
SU1BUllfSEVBREVSLCBGYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNs
dWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX1BSSU1BUllfSEVB
REVSLCBGYWxzZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIFdlYkNvcmUgY29u
ZmlnLmggYWZ0ZXIgYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcGxpbnQuX0NPTkZJR19IRUFERVIsIEZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5f
Q09ORklHX0hFQURFUiwgRmFsc2UpKQogCiAgICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRl
X29yZGVyX19vdGhlcl90aGVuX2NvbmZpZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnRm91bmQgb3RoZXIgaGVhZGVyIGJlZm9yZSBXZWJDb3JlIGNvbmZpZy5oLicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9v
cmRlcihjcHBsaW50Ll9PVEhFUl9IRUFERVIsIEZhbHNlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHls
ZS5fT1RIRVJfSEVBREVSLCBGYWxzZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5k
IFdlYkNvcmUgY29uZmlnLmggYWZ0ZXIgb3RoZXIgaGVhZGVyLicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBs
aW50Ll9DT05GSUdfSEVBREVSLCBGYWxzZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX0NPTkZJ
R19IRUFERVIsIEZhbHNlKSkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRl
cl9fY29uZmlnX3RoZW5fb3RoZXJfdGhlbl9saWtlbHkoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIo
Y3BwbGludC5fQ09ORklHX0hFQURFUiwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHls
ZS5fQ09ORklHX0hFQURFUiwgRmFsc2UpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3Vu
ZCBvdGhlciBoZWFkZXIgYmVmb3JlIGEgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzLicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5j
bHVkZV9vcmRlcihjcHBsaW50Ll9PVEhFUl9IRUFERVIsIEZhbHNlKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNw
cF9zdHlsZS5fT1RIRVJfSEVBREVSLCBGYWxzZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0ZvdW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBhZnRlciBvdGhlciBoZWFkZXIuJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9p
bmNsdWRlX29yZGVyKGNwcGxpbnQuX1BSSU1BUllfSEVBREVSLCBGYWxzZSkpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRl
cihjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLCBGYWxzZSkpCiAKICAgICBkZWYgdGVzdF9jaGVj
a19hbHBoYWJldGljYWxfaW5jbHVkZV9vcmRlcihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKQEAgLTIyMDEsMjkgKzIyMDEsMjkgQEAgY2xh
c3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV0gWzRdJykKIAogICAg
IGRlZiB0ZXN0X2NsYXNzaWZ5X2luY2x1ZGUoc2VsZik6Ci0gICAgICAgIGNsYXNzaWZ5X2luY2x1
ZGUgPSBjcHBsaW50Ll9jbGFzc2lmeV9pbmNsdWRlCi0gICAgICAgIGluY2x1ZGVfc3RhdGUgPSBj
cHBsaW50Ll9JbmNsdWRlU3RhdGUoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcGxpbnQu
X0NPTkZJR19IRUFERVIsCisgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUgPSBjcHBfc3R5bGUuX2Ns
YXNzaWZ5X2luY2x1ZGUKKyAgICAgICAgaW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVk
ZVN0YXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX0NPTkZJR19IRUFE
RVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2Zvby5j
cHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmZpZy5o
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNs
dWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9QUklNQVJZX0hF
QURFUiwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVS
LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9pbnRlcm5h
bC9mb28uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdm
b28vcHVibGljL2Zvby5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBs
aW50Ll9QUklNQVJZX0hFQURFUiwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUu
X1BSSU1BUllfSEVBREVSLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1
ZGUoJ2Zvby9pbnRlcm5hbC9mb28uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdmb28vb3RoZXIvcHVibGljL2Zvby5oJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY3BwX3N0eWxlLl9PVEhFUl9IRUFERVIsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vcC5oJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRl
X3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIs
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9PVEhFUl9IRUFERVIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2Zvby5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBpbmNsdWRlX3N0YXRlKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9QUklNQVJZX0hFQURFUiwKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvb0N1c3RvbS5jcHAnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby5oJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKQEAg
LTIyNDQsMzEgKzIyNDQsMzEgQEAgY2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBsaW50VGVz
dEJhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVp
bGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKIAogICAgIGRlZiB0ZXN0X3RyeV9kcm9wX2NvbW1vbl9z
dWZmaXhlcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcGxp
bnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vLWlubC5oJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdm
b28vZm9vLWlubC5oJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9iYXIvZm9vJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygn
Zm9vL2Jhci9mb29faW5sLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvbycs
IGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vLmNwcCcpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9iYXIv
Zm9vX2lubC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBfc3R5
bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vLmNwcCcpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb29fdW51c3VhbGludGVy
bmFsLmgnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9u
X3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbC5oJykpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21t
b25fc3VmZml4ZXMoJ190ZXN0LmNwcCcpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9z
dHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ190ZXN0LmNwcCcpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCd0ZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9kcm9w
X2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCd0ZXN0LmNwcCcpKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCd0ZXN0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9k
cm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCd0ZXN0LmNwcCcpKQogCi1jbGFzcyBD
aGVja0ZvckZ1bmN0aW9uTGVuZ3Roc1Rlc3QoQ3BwbGludFRlc3RCYXNlKToKK2NsYXNzIENoZWNr
Rm9yRnVuY3Rpb25MZW5ndGhzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKICAgICBkZWYgc2V0VXAo
c2VsZik6CiAgICAgICAgICMgUmVkdWNpbmcgdGhlc2UgdGhyZXNob2xkcyBmb3IgdGhlIHRlc3Rz
IHNwZWVkcyB1cCB0ZXN0cyBzaWduaWZpY2FudGx5LgotICAgICAgICBzZWxmLm9sZF9ub3JtYWxf
dHJpZ2dlciA9IGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSCi0gICAgICAg
IHNlbGYub2xkX3Rlc3RfdHJpZ2dlciA9IGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJ
R0dFUgorICAgICAgICBzZWxmLm9sZF9ub3JtYWxfdHJpZ2dlciA9IGNwcF9zdHlsZS5fRnVuY3Rp
b25TdGF0ZS5fTk9STUFMX1RSSUdHRVIKKyAgICAgICAgc2VsZi5vbGRfdGVzdF90cmlnZ2VyID0g
Y3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIKIAotICAgICAgICBjcHBsaW50
Ll9GdW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJR0dFUiA9IDEwCi0gICAgICAgIGNwcGxpbnQuX0Z1
bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9IDI1CisgICAgICAgIGNwcF9zdHlsZS5fRnVuY3Rp
b25TdGF0ZS5fTk9STUFMX1RSSUdHRVIgPSAxMAorICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9u
U3RhdGUuX1RFU1RfVFJJR0dFUiA9IDI1CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAg
ICAgIGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSID0gc2VsZi5vbGRfbm9y
bWFsX3RyaWdnZXIKLSAgICAgICAgY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fVEVTVF9UUklHR0VS
ID0gc2VsZi5vbGRfdGVzdF90cmlnZ2VyCisgICAgICAgIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0
ZS5fTk9STUFMX1RSSUdHRVIgPSBzZWxmLm9sZF9ub3JtYWxfdHJpZ2dlcgorICAgICAgICBjcHBf
c3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9IHNlbGYub2xkX3Rlc3RfdHJpZ2dl
cgogCiAgICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUsIGV4
cGVjdGVkX21lc3NhZ2UpOgogICAgICAgICAiIiJDaGVjayB3YXJuaW5ncyBmb3IgbG9uZyBmdW5j
dGlvbiBib2RpZXMgYXJlIGFzIGV4cGVjdGVkLgpAQCAtMjI4NCwzMiArMjI4NCwzMiBAQCBjbGFz
cyBDaGVja0ZvckZ1bmN0aW9uTGVuZ3Roc1Rlc3QoQ3BwbGludFRlc3RCYXNlKToKICAgICAgICAg
IiIiUmV0dXJuIG51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIGxl
bmd0aCB3YXJuaW5nLgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0t
diBzZXR0aW5nIGZvciBjcHBsaW50LgorICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYgc2V0dGlu
ZyBmb3IgY3BwX3N0eWxlLgogCiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgTnVtYmVyIG9m
IGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcuCiAgICAg
ICAgICIiIgotICAgICAgICByZXR1cm4gY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RS
SUdHRVIgKiAyICoqIGVycm9yX2xldmVsCisgICAgICAgIHJldHVybiBjcHBfc3R5bGUuX0Z1bmN0
aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSICogMiAqKiBlcnJvcl9sZXZlbAogCiAgICAgZGVmIHRy
aWdnZXJfdGVzdF9saW5lcyhzZWxmLCBlcnJvcl9sZXZlbCk6CiAgICAgICAgICIiIlJldHVybiBu
dW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSB0ZXN0IGZ1bmN0aW9uIGxlbmd0aCB3
YXJuaW5nLgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0
aW5nIGZvciBjcHBsaW50LgorICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYgc2V0dGluZyBmb3Ig
Y3BwX3N0eWxlLgogCiAgICAgICAgIFJldHVybnM6CiAgICAgICAgICAgTnVtYmVyIG9mIGxpbmVz
IG5lZWRlZCB0byB0cmlnZ2VyIGEgdGVzdCBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4KICAgICAg
ICAgIiIiCi0gICAgICAgIHJldHVybiBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdH
RVIgKiAyICoqIGVycm9yX2xldmVsCisgICAgICAgIHJldHVybiBjcHBfc3R5bGUuX0Z1bmN0aW9u
U3RhdGUuX1RFU1RfVFJJR0dFUiAqIDIgKiogZXJyb3JfbGV2ZWwKIAogICAgIGRlZiBhc3NlcnRf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZiwgbGluZXMsIGVycm9yX2xldmVs
KToKICAgICAgICAgIiIiR2VuZXJhdGUgbG9uZyBmdW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVj
ayB3YXJuaW5ncyBhcmUgYXMgZXhwZWN0ZWQuCiAKICAgICAgICAgQXJnczoKICAgICAgICAgICBs
aW5lczogTnVtYmVyIG9mIGxpbmVzIHRvIGdlbmVyYXRlLgotICAgICAgICAgIGVycm9yX2xldmVs
OiAgLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCisgICAgICAgICAgZXJyb3JfbGV2ZWw6ICAtLXYg
c2V0dGluZyBmb3IgY3BwX3N0eWxlLgogICAgICAgICAiIiIKLSAgICAgICAgdHJpZ2dlcl9sZXZl
bCA9IHNlbGYudHJpZ2dlcl9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCisgICAgICAg
IHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwX3N0eWxlLl92ZXJib3NlX2xl
dmVsKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCiAgICAg
ICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2JvZHkobGluZXMpLAog
ICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDog
JwpAQCAtMjMzMiw3ICsyMzMyLDcgQEAgY2xhc3MgQ2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0
KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICIiIkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlv
biBhdCB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNldHRpbmcuCiAKICAgICAgICAgQXJnczoK
LSAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCisgICAgICAg
ICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBfc3R5bGUuCiAgICAgICAgICIiIgog
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxm
LnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9sZXZlbCkKQEAgLTIzNDEsNyArMjM0MSw3
IEBAIGNsYXNzIENoZWNrRm9yRnVuY3Rpb25MZW5ndGhzVGVzdChDcHBsaW50VGVzdEJhc2UpOgog
ICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgY2hlY2sgZnVuY3Rpb24ganVzdCBiZWxvdyB0aGUgdHJp
Z2dlciBsZXZlbCBmb3IgLS12IHNldHRpbmcuCiAKICAgICAgICAgQXJnczoKLSAgICAgICAgICBl
cnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCisgICAgICAgICAgZXJyb3JfbGV2
ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBfc3R5bGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxm
LmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGlu
ZXMoZXJyb3JfbGV2ZWwpIC0gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfbGV2ZWwgLSAxKQpAQCAtMjM1MCw3ICsyMzUwLDcgQEAg
Y2xhc3MgQ2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAg
ICAgICIiIkdlbmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBqdXN0IGFib3ZlIHRoZSB0cmlnZ2Vy
IGxldmVsIGZvciAtLXYgc2V0dGluZy4KIAogICAgICAgICBBcmdzOgotICAgICAgICAgIGVycm9y
X2xldmVsOiAtLXYgc2V0dGluZyBmb3IgY3BwbGludC4KKyAgICAgICAgICBlcnJvcl9sZXZlbDog
LS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhl
cnJvcl9sZXZlbCkgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9sZXZlbCkKQEAgLTIzOTIsMjkgKzIzOTIsMjkgQEAgY2xhc3Mg
Q2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICAg
ICAnJykKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Jl
bG93X3NldmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3Nl
dF92ZXJib3NlX2xldmVsKDApCisgICAgICAgIG9sZF92ZXJib3NpdHkgPSBjcHBfc3R5bGUuX3Nl
dF92ZXJib3NlX2xldmVsKDApCiAgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygwKSAtIDEpCi0gICAgICAgIGNw
cGxpbnQuX3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCisgICAgICAgIGNwcF9zdHls
ZS5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKIAogICAgIGRlZiB0ZXN0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MChzZWxmKToKLSAgICAgICAg
b2xkX3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKDApCisgICAgICAgIG9s
ZF92ZXJib3NpdHkgPSBjcHBfc3R5bGUuX3NldF92ZXJib3NlX2xldmVsKDApCiAgICAgICAgIHNl
bGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dl
cl9saW5lcygwKSkKLSAgICAgICAgY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJv
c2l0eSkKKyAgICAgICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5
KQogCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYWJvdmVf
c2V2ZXJpdHkwKHNlbGYpOgotICAgICAgICBvbGRfdmVyYm9zaXR5ID0gY3BwbGludC5fc2V0X3Zl
cmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcF9zdHlsZS5fc2V0X3Zl
cmJvc2VfbGV2ZWwoMCkKICAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2Fib3ZlX2Vycm9yX2xldmVsKDApCi0gICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVs
KG9sZF92ZXJib3NpdHkpCisgICAgICAgIGNwcF9zdHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xk
X3ZlcmJvc2l0eSkKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX2JlbG93X3NldmVyaXR5MXYwKHNlbGYpOgotICAgICAgICBvbGRfdmVyYm9zaXR5ID0gY3Bw
bGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcF9z
dHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKICAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2JlbG93X2Vycm9yX2xldmVsKDEpCi0gICAgICAgIGNwcGxpbnQuX3NldF92
ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCisgICAgICAgIGNwcF9zdHlsZS5fc2V0X3ZlcmJv
c2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19kZWZpbml0aW9uX2F0X3NldmVyaXR5MXYwKHNlbGYpOgotICAgICAgICBvbGRfdmVyYm9z
aXR5ID0gY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgb2xkX3ZlcmJvc2l0
eSA9IGNwcF9zdHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKICAgICAgICAgc2VsZi5hc3NlcnRf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDEpCi0gICAgICAgIGNwcGxpbnQu
X3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJib3NpdHkpCisgICAgICAgIGNwcF9zdHlsZS5fc2V0
X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MShzZWxmKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2Vy
X2xpbmVzKDEpIC0gMSkKQEAgLTI0MjgsNyArMjQyOCw3IEBAIGNsYXNzIENoZWNrRm9yRnVuY3Rp
b25MZW5ndGhzVGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9wbHVzX2JsYW5rcyhzZWxmKToKICAgICAg
ICAgZXJyb3JfbGV2ZWwgPSAxCiAgICAgICAgIGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX2xp
bmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dl
cl9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCisgICAgICAgIHRyaWdnZXJfbGV2ZWwg
PSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwX3N0eWxlLl92ZXJib3NlX2xldmVsKCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCiAgICAgICAgICAgICAndm9pZCB0
ZXN0X2JsYW5rcyhpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwKICAg
ICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcK
QEAgLTI0NDAsNyArMjQ0MCw3IEBAIGNsYXNzIENoZWNrRm9yRnVuY3Rpb25MZW5ndGhzVGVzdChD
cHBsaW50VGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19jb21w
bGV4X2RlZmluaXRpb25fc2V2ZXJpdHkxKHNlbGYpOgogICAgICAgICBlcnJvcl9sZXZlbCA9IDEK
ICAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsg
MQotICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKGNwcGxpbnQuX3Zl
cmJvc2VfbGV2ZWwoKSkKKyAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl9saW5l
cyhjcHBfc3R5bGUuX3ZlcmJvc2VfbGV2ZWwoKSkKICAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKICAgICAgICAgICAgICgnbXlfbmFtZXNwYWNlOjpteV9vdGhlcl9u
YW1lc3BhY2U6Ok15VmVyeUxvbmdUeXBlTmFtZSpcbicKICAgICAgICAgICAgICAnbXlfbmFtZXNw
YWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oaW50IGFyZzEsIGNoYXIqIGFyZzIp
JwpAQCAtMjQ1NSw3ICsyNDU1LDcgQEAgY2xhc3MgQ2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0
KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Rl
ZmluaXRpb25fc2V2ZXJpdHkxX2Zvcl90ZXN0KHNlbGYpOgogICAgICAgICBlcnJvcl9sZXZlbCA9
IDEKICAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhlcnJvcl9s
ZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5l
cyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCisgICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxm
LnRyaWdnZXJfdGVzdF9saW5lcyhjcHBfc3R5bGUuX3ZlcmJvc2VfbGV2ZWwoKSkKICAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKICAgICAgICAgICAgICdURVNUX0Yo
VGVzdCwgTXV0YXRvciknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSwKICAgICAg
ICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKQEAg
LTI0NjcsNyArMjQ2Nyw3IEBAIGNsYXNzIENoZWNrRm9yRnVuY3Rpb25MZW5ndGhzVGVzdChDcHBs
aW50VGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MV9mb3Jfc3BsaXRfbGluZV90ZXN0KHNlbGYpOgogICAgICAgICBlcnJvcl9s
ZXZlbCA9IDEKICAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhl
cnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVz
dF9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkpCisgICAgICAgIHRyaWdnZXJfbGV2ZWwg
PSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhjcHBfc3R5bGUuX3ZlcmJvc2VfbGV2ZWwoKSkKICAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKICAgICAgICAgICAgICgn
VEVTVF9GKEdvb2dsZVVwZGF0ZVJlY292ZXJ5UmVnaXN0cnlQcm90ZWN0ZWRUZXN0LFxuJwogICAg
ICAgICAgICAgICcgICAgRml4R29vZ2xlVXBkYXRlX0FsbFZhbHVlc19NYWNoaW5lQXBwKScgICMg
bm90ZTogNCBzcGFjZXMKQEAgLTI0ODIsNyArMjQ4Miw3IEBAIGNsYXNzIENoZWNrRm9yRnVuY3Rp
b25MZW5ndGhzVGVzdChDcHBsaW50VGVzdEJhc2UpOgogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5MV9mb3JfYmFkX3Rlc3RfZG9lc250X2JyZWFr
KHNlbGYpOgogICAgICAgICBlcnJvcl9sZXZlbCA9IDEKICAgICAgICAgZXJyb3JfbGluZXMgPSBz
ZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdnZXJf
bGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhjcHBsaW50Ll92ZXJib3NlX2xldmVsKCkp
CisgICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfdGVzdF9saW5lcyhjcHBfc3R5
bGUuX3ZlcmJvc2VfbGV2ZWwoKSkKICAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
c19jaGVjaygKICAgICAgICAgICAgICgnVEVTVF9GKCcKICAgICAgICAgICAgICArIHNlbGYuZnVu
Y3Rpb25fYm9keShlcnJvcl9saW5lcykpLApAQCAtMjQ5NSw3ICsyNDk1LDcgQEAgY2xhc3MgQ2hl
Y2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgZGVmIHRlc3Rf
ZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX3dpdGhfZW1iZWRkZWRf
bm9fbGludHMoc2VsZik6CiAgICAgICAgIGVycm9yX2xldmVsID0gMQogICAgICAgICBlcnJvcl9s
aW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdn
ZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9zZV9sZXZlbCgpKQor
ICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKGNwcF9zdHlsZS5fdmVy
Ym9zZV9sZXZlbCgpKQogICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNr
KAogICAgICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5X3dp
dGhfbm9fbGludHMoZXJyb3JfbGluZXMpLAogICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNl
ZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwpAQCAtMjU2Nyw3ICsyNTY3LDcgQEAgY2xhc3Mg
Q2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWzVdJykKIAogCi1jbGFzcyBOb05vblZpcnR1YWxE
ZXN0cnVjdG9yc1Rlc3QoQ3BwbGludFRlc3RCYXNlKToKK2NsYXNzIE5vTm9uVmlydHVhbERlc3Ry
dWN0b3JzVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAogICAgIGRlZiB0ZXN0X25vX2Vycm9yKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCkBAIC0yNjk0LDE3ICsy
Njk0LDE3IEBAIGNsYXNzIE5vTm9uVmlydHVhbERlc3RydWN0b3JzVGVzdChDcHBsaW50VGVzdEJh
c2UpOgogICAgICAgICAgICAgICd2aXJ0dWFsIG1ldGhvZChzKSwgb25lIGRlY2xhcmVkIGF0IGxp
bmUgMi4gIFtydW50aW1lL3ZpcnR1YWxdIFs0XSddKQogCiAKLWNsYXNzIENwcExpbnRTdGF0ZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgQ3BwU3R5bGVTdGF0ZVRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Vycm9yX2NvdW50KHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygwLCBjcHBsaW50LmVycm9yX2NvdW50KCkpCi0gICAgICAgIGNwcGxpbnQu
X2NwcGxpbnRfc3RhdGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKLSAgICAgICAgY3BwbGludC5f
Y3BwbGludF9zdGF0ZS5pbmNyZW1lbnRfZXJyb3JfY291bnQoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygyLCBjcHBsaW50LmVycm9yX2NvdW50KCkpCi0gICAgICAgIGNwcGxpbnQuX2NwcGxp
bnRfc3RhdGUucmVzZXRfZXJyb3JfY291bnQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygw
LCBjcHBsaW50LmVycm9yX2NvdW50KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIGNw
cF9zdHlsZS5lcnJvcl9jb3VudCgpKQorICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0
ZS5pbmNyZW1lbnRfZXJyb3JfY291bnQoKQorICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9z
dGF0ZS5pbmNyZW1lbnRfZXJyb3JfY291bnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygy
LCBjcHBfc3R5bGUuZXJyb3JfY291bnQoKSkKKyAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVf
c3RhdGUucmVzZXRfZXJyb3JfY291bnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBj
cHBfc3R5bGUuZXJyb3JfY291bnQoKSkKIAogCi1jbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3BwbGlu
dFRlc3RCYXNlKToKK2NsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKIAog
ICAgICMgZm9yIGh0dHA6Ly93ZWJraXQub3JnL2NvZGluZy9jb2Rpbmctc3R5bGUuaHRtbAogICAg
IGRlZiB0ZXN0X2luZGVudGF0aW9uKHNlbGYpOgpAQCAtMzMzMiw3ICszMzMyLDcgQEAgY2xhc3Mg
V2ViS2l0U3R5bGVUZXN0KENwcGxpbnRUZXN0QmFzZSk6CiAgICAgICAgICAgICAnICBbcmVhZGFi
aWxpdHkvbnVsbF0gWzRdJywKICAgICAgICAgICAgICdmb28uY3BwJykKICAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICciQSBzdHJpbmcgd2l0aCBOVUxMIiAgLy8gYW5kIGEg
Y29tbWVudCB3aXRoIE5VTEwgaXMgdHJpY2t5IHRvIGZsYWcgY29ycmVjdGx5IGluIGNwcGxpbnQu
JywKKyAgICAgICAgICAgICciQSBzdHJpbmcgd2l0aCBOVUxMIiAgLy8gYW5kIGEgY29tbWVudCB3
aXRoIE5VTEwgaXMgdHJpY2t5IHRvIGZsYWcgY29ycmVjdGx5IGluIGNwcF9zdHlsZS4nLAogICAg
ICAgICAgICAgJ1VzZSAwIGluc3RlYWQgb2YgTlVMTC4nCiAgICAgICAgICAgICAnICBbcmVhZGFi
aWxpdHkvbnVsbF0gWzRdJywKICAgICAgICAgICAgICdmb28uY3BwJykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33596</attachid>
            <date>2009-07-27 19:30:41 -0700</date>
            <delta_ts>2009-07-28 08:29:45 -0700</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug27752.txt</filename>
            <type>text/plain</type>
            <size>585341</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA1Yzg4MjYzLi42ODE3NjIyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDct
MjcgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGNwcGxpbnQqIHNob3VsZCBiZSBuYW1lZCBj
cHBfc3R5bGUqCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yNzc1MgorCisgICAgICAgIFRoZSBmaWxlcyB3ZXJlIHJlbmFtZWQuIEEgZmV3IHJlbmFtZXMg
d2VyZSBkb25lOgorICAgICAgICAgIENwcExpbnQgLT4gQ3BwU3R5bGUKKyAgICAgICAgICBjcHBs
aW50IC0+IGNwcF9zdHlsZQorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGU6
CisgICAgICAgICogU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weTogQ29waWVkIGZyb20gY3Bw
bGludC5weSBhbmQKKyAgICAgICAgICBkaWQgbmFtZSBmaXggdXBzLgorICAgICAgICAqIFNjcmlw
dHMvbW9kdWxlcy9jcHBfc3R5bGVfdW5pdHRlc3QucHk6IENvcGllZCBmcm9tIGNwcGxpbnRfdW5p
dHRlc3QucHkgYW5kCisgICAgICAgICAgZGlkIG5hbWUgZml4IHVwcy4KKyAgICAgICAgKiBTY3Jp
cHRzL21vZHVsZXMvY3BwbGludC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL21vZHVs
ZXMvY3BwbGludF91bml0dGVzdC5weTogUmVtb3ZlZC4KKwogMjAwOS0wNy0yNyAgR2Fib3IgUmFw
Y3NhbnlpICA8cmFwY3NhbnlpLmdhYm9yQHN0dWQudS1zemVnZWQuaHU+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0
eWxlCmluZGV4IDgxOWFjMWEuLjdlZTkwOTggMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlCkBAIC0zNCwxMyArMzQsMTMgQEAgaW1wb3J0IG9zCiBpbXBvcnQgb3MucGF0aAog
aW1wb3J0IHN5cwogCi1pbXBvcnQgbW9kdWxlcy5jcHBsaW50IGFzIGNwcGxpbnQKK2ltcG9ydCBt
b2R1bGVzLmNwcF9zdHlsZSBhcyBjcHBfc3R5bGUKIGZyb20gbW9kdWxlcy5kaWZmX3BhcnNlciBp
bXBvcnQgRGlmZlBhcnNlcgogZnJvbSBtb2R1bGVzLnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0
ZW0KIAogCiAjIE92ZXJyaWRlIHRoZSB1c2FnZSBvZiB0aGUgbGludCB0b29sLgotY3BwbGludC5f
VVNBR0UgPSAiIiIKK2NwcF9zdHlsZS5fVVNBR0UgPSAiIiIKIFN5bnRheDogJShwcm9ncmFtX25h
bWUpcyBbLS12ZXJib3NlPSNdIFstLWdpdC1jb21taXQ9PENPTU1JVElTSD5dIFstLW91dHB1dD12
czddIFstLWZpbHRlcj0teCwreSwuLi5dCiAKICAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0
cmllcyB0byBmb2xsb3cgYXJlIHRob3NlIGluCkBAIC0xMDIsNyArMTAyLDcgQEAgZGVmIHByb2Nl
c3NfcGF0Y2gocGF0Y2hfc3RyaW5nKToKICAgICAgICAgICAgIGxpbmVfbnVtYmVycyA9IHNldCgp
CiAKICAgICAgICAgICAgIGRlZiBlcnJvcl9mb3JfcGF0Y2goZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgIiIiV3Jh
cHBlciBmdW5jdGlvbiBvZiBjcHBsaW50LmVycm9yIGZvciBwYXRjaGVzLgorICAgICAgICAgICAg
ICAgICIiIldyYXBwZXIgZnVuY3Rpb24gb2YgY3BwX3N0eWxlLmVycm9yIGZvciBwYXRjaGVzLgog
CiAgICAgICAgICAgICAgICAgVGhpcyBmdW5jdGlvbiBvdXRwdXRzIGVycm9ycyBvbmx5IGlmIHRo
ZSBsaW5lIG51bWJlcgogICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRzIHRvIGxpbmVzIHdoaWNo
IGFyZSBtb2RpZmllZCBvciBhZGRlZC4KQEAgLTExNSwxNyArMTE1LDE3IEBAIGRlZiBwcm9jZXNz
X3BhdGNoKHBhdGNoX3N0cmluZyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9u
dW1iZXJzLmFkZChsaW5lWzFdKQogCiAgICAgICAgICAgICAgICAgaWYgbGluZV9udW1iZXIgaW4g
bGluZV9udW1iZXJzOgotICAgICAgICAgICAgICAgICAgICBjcHBsaW50LmVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgICAg
ICAgICAgICAgIGNwcF9zdHlsZS5lcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKQogCi0gICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmls
ZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQorICAgICAgICAgICAgY3BwX3N0eWxl
LnByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3JfZm9yX3BhdGNoKQogCiAKIGRlZiBt
YWluKCk6Ci0gICAgY3BwbGludC51c2Vfd2Via2l0X3N0eWxlcygpCisgICAgY3BwX3N0eWxlLnVz
ZV93ZWJraXRfc3R5bGVzKCkKIAotICAgIChhcmdzLCBmbGFncykgPSBjcHBsaW50LnBhcnNlX2Fy
Z3VtZW50cyhzeXMuYXJndlsxOl0sIFsiZ2l0LWNvbW1pdD0iXSkKKyAgICAoYXJncywgZmxhZ3Mp
ID0gY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhzeXMuYXJndlsxOl0sIFsiZ2l0LWNvbW1pdD0i
XSkKICAgICBpZiBhcmdzOgotICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJFUlJPUjogV2UgZG9u
J3Qgc3VwcG9ydCBmaWxlcyBhcyBhcmd1bWVudHMgZm9yIG5vdy5cbiIgKyBjcHBsaW50Ll9VU0FH
RSkKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiRVJST1I6IFdlIGRvbid0IHN1cHBvcnQgZmls
ZXMgYXMgYXJndW1lbnRzIGZvciBub3cuXG4iICsgY3BwX3N0eWxlLl9VU0FHRSkKICAgICAgICAg
c3lzLmV4aXQoMSkKIAogICAgIGN3ZCA9IG9zLnBhdGguYWJzcGF0aCgnLicpCkBAIC0xMzYsOCAr
MTM2LDggQEAgZGVmIG1haW4oKToKICAgICBlbHNlOgogICAgICAgICBwcm9jZXNzX3BhdGNoKHNj
bS5jcmVhdGVfcGF0Y2goKSkKIAotICAgIHN5cy5zdGRlcnIud3JpdGUoJ1RvdGFsIGVycm9ycyBm
b3VuZDogJWRcbicgJSBjcHBsaW50LmVycm9yX2NvdW50KCkpCi0gICAgc3lzLmV4aXQoY3BwbGlu
dC5lcnJvcl9jb3VudCgpID4gMCkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCdUb3RhbCBlcnJvcnMg
Zm91bmQ6ICVkXG4nICUgY3BwX3N0eWxlLmVycm9yX2NvdW50KCkpCisgICAgc3lzLmV4aXQoY3Bw
X3N0eWxlLmVycm9yX2NvdW50KCkgPiAwKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwX3N0eWxlLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi43YzE1MzJhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy9tb2R1bGVzL2NwcF9zdHlsZS5weQpAQCAtMCwwICsxLDMxMzIgQEAKKyMhL3Vz
ci9iaW4vcHl0aG9uCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMp
IDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDA5IFRvcmNoIE1vYmlsZSBJbmMuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisj
IG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisj
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIFRoaXMgaXMgdGhlIG1v
ZGlmaWVkIHZlcnNpb24gb2YgR29vZ2xlJ3MgY3BwbGludC4gVGhlIG9yaWdpbmFsIGNvZGUgaXMK
KyMgaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRlLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBs
aW50L2NwcGxpbnQucHkKKworIiIiRG9lcyBXZWJLaXQtbGludCBvbiBjKysgZmlsZXMuCisKK1Ro
ZSBnb2FsIG9mIHRoaXMgc2NyaXB0IGlzIHRvIGlkZW50aWZ5IHBsYWNlcyBpbiB0aGUgY29kZSB0
aGF0ICptYXkqCitiZSBpbiBub24tY29tcGxpYW5jZSB3aXRoIFdlYktpdCBzdHlsZS4gIEl0IGRv
ZXMgbm90IGF0dGVtcHQgdG8gZml4Cit1cCB0aGVzZSBwcm9ibGVtcyAtLSB0aGUgcG9pbnQgaXMg
dG8gZWR1Y2F0ZS4gIEl0IGRvZXMgYWxzbyBub3QKK2F0dGVtcHQgdG8gZmluZCBhbGwgcHJvYmxl
bXMsIG9yIHRvIGVuc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXQgZG9lcworZmluZCBpcyBsZWdpdGlt
YXRlbHkgYSBwcm9ibGVtLgorCitJbiBwYXJ0aWN1bGFyLCB3ZSBjYW4gZ2V0IHZlcnkgY29uZnVz
ZWQgYnkgLyogYW5kIC8vIGluc2lkZSBzdHJpbmdzIQorV2UgZG8gYSBzbWFsbCBoYWNrLCB3aGlj
aCBpcyB0byBpZ25vcmUgLy8ncyB3aXRoICIncyBhZnRlciB0aGVtIG9uIHRoZQorc2FtZSBsaW5l
LCBidXQgaXQgaXMgZmFyIGZyb20gcGVyZmVjdCAoaW4gZWl0aGVyIGRpcmVjdGlvbikuCisiIiIK
KworaW1wb3J0IGNvZGVjcworaW1wb3J0IGdldG9wdAoraW1wb3J0IG1hdGggICMgZm9yIGxvZwor
aW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3JlX2NvbXBpbGUK
K2ltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bmljb2RlZGF0YQorCisKK19VU0FH
RSA9ICIiIgorU3ludGF4OiAlKHByb2dyYW1fbmFtZSlzIFstLXZlcmJvc2U9I10gWy0tb3V0cHV0
PXZzN10gWy0tZmlsdGVyPS14LCt5LC4uLl0KKyAgICAgICAgPGZpbGU+IFtmaWxlXSAuLi4KKwor
ICBUaGUgc3R5bGUgZ3VpZGVsaW5lcyB0aGlzIHRyaWVzIHRvIGZvbGxvdyBhcmUgdGhvc2UgaW4K
KyAgICBodHRwOi8vd2Via2l0Lm9yZy9jb2RpbmcvY29kaW5nLXN0eWxlLmh0bWwKKworICBFdmVy
eSBwcm9ibGVtIGlzIGdpdmVuIGEgY29uZmlkZW5jZSBzY29yZSBmcm9tIDEtNSwgd2l0aCA1IG1l
YW5pbmcgd2UgYXJlCisgIGNlcnRhaW4gb2YgdGhlIHByb2JsZW0sIGFuZCAxIG1lYW5pbmcgaXQg
Y291bGQgYmUgYSBsZWdpdGltYXRlIGNvbnN0cnVjdC4KKyAgVGhpcyB3aWxsIG1pc3Mgc29tZSBl
cnJvcnMsIGFuZCBpcyBub3QgYSBzdWJzdGl0dXRlIGZvciBhIGNvZGUgcmV2aWV3LgorCisgIFRv
IHByZXZlbnQgc3BlY2lmaWMgbGluZXMgZnJvbSBiZWluZyBsaW50ZWQsIGFkZCBhICcvLyBOT0xJ
TlQnIGNvbW1lbnQgdG8gdGhlCisgIGVuZCBvZiB0aGUgbGluZS4KKworICBUaGUgZmlsZXMgcGFz
c2VkIGluIHdpbGwgYmUgbGludGVkOyBhdCBsZWFzdCBvbmUgZmlsZSBtdXN0IGJlIHByb3ZpZGVk
LgorICBMaW50ZWQgZXh0ZW5zaW9ucyBhcmUgLmNwcCwgLmMgYW5kIC5oLiAgT3RoZXIgZmlsZSB0
eXBlcyB3aWxsIGJlIGlnbm9yZWQuCisKKyAgRmxhZ3M6CisKKyAgICBvdXRwdXQ9dnM3CisgICAg
ICBCeSBkZWZhdWx0LCB0aGUgb3V0cHV0IGlzIGZvcm1hdHRlZCB0byBlYXNlIGVtYWNzIHBhcnNp
bmcuICBWaXN1YWwgU3R1ZGlvCisgICAgICBjb21wYXRpYmxlIG91dHB1dCAodnM3KSBtYXkgYWxz
byBiZSB1c2VkLiAgT3RoZXIgZm9ybWF0cyBhcmUgdW5zdXBwb3J0ZWQuCisKKyAgICB2ZXJib3Nl
PSMKKyAgICAgIFNwZWNpZnkgYSBudW1iZXIgMC01IHRvIHJlc3RyaWN0IGVycm9ycyB0byBjZXJ0
YWluIHZlcmJvc2l0eSBsZXZlbHMuCisKKyAgICBmaWx0ZXI9LXgsK3ksLi4uCisgICAgICBTcGVj
aWZ5IGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY2F0ZWdvcnktZmlsdGVycyB0byBhcHBseTog
b25seQorICAgICAgZXJyb3IgbWVzc2FnZXMgd2hvc2UgY2F0ZWdvcnkgbmFtZXMgcGFzcyB0aGUg
ZmlsdGVycyB3aWxsIGJlIHByaW50ZWQuCisgICAgICAoQ2F0ZWdvcnkgbmFtZXMgYXJlIHByaW50
ZWQgd2l0aCB0aGUgbWVzc2FnZSBhbmQgbG9vayBsaWtlCisgICAgICAiW3doaXRlc3BhY2UvaW5k
ZW50XSIuKSAgRmlsdGVycyBhcmUgZXZhbHVhdGVkIGxlZnQgdG8gcmlnaHQuCisgICAgICAiLUZP
TyIgYW5kICJGT08iIG1lYW5zICJkbyBub3QgcHJpbnQgY2F0ZWdvcmllcyB0aGF0IHN0YXJ0IHdp
dGggRk9PIi4KKyAgICAgICIrRk9PIiBtZWFucyAiZG8gcHJpbnQgY2F0ZWdvcmllcyB0aGF0IHN0
YXJ0IHdpdGggRk9PIi4KKworICAgICAgRXhhbXBsZXM6IC0tZmlsdGVyPS13aGl0ZXNwYWNlLCt3
aGl0ZXNwYWNlL2JyYWNlcworICAgICAgICAgICAgICAgIC0tZmlsdGVyPXdoaXRlc3BhY2UscnVu
dGltZS9wcmludGYsK3J1bnRpbWUvcHJpbnRmX2Zvcm1hdAorICAgICAgICAgICAgICAgIC0tZmls
dGVyPS0sK2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlCisKKyAgICAgIFRvIHNlZSBhIGxpc3Qg
b2YgYWxsIHRoZSBjYXRlZ29yaWVzIHVzZWQgaW4gJShwcm9ncmFtX25hbWUpcywgcGFzcyBubyBh
cmc6CisgICAgICAgICAtLWZpbHRlcj0KKyIiIiAlIHsncHJvZ3JhbV9uYW1lJzogc3lzLmFyZ3Zb
MF19CisKKyMgV2UgY2F0ZWdvcml6ZSBlYWNoIGVycm9yIG1lc3NhZ2Ugd2UgcHJpbnQuICBIZXJl
IGFyZSB0aGUgY2F0ZWdvcmllcy4KKyMgV2Ugd2FudCBhbiBleHBsaWNpdCBsaXN0IHNvIHdlIGNh
biBsaXN0IHRoZW0gYWxsIGluIGNwcF9zdHlsZSAtLWZpbHRlcj0uCisjIElmIHlvdSBhZGQgYSBu
ZXcgZXJyb3IgbWVzc2FnZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QK
KyMgaGVyZSEgIGNwcF9zdHlsZV91bml0dGVzdC5weSBzaG91bGQgdGVsbCB5b3UgaWYgeW91IGZv
cmdldCB0byBkbyB0aGlzLgorIyBcIHVzZWQgZm9yIGNsZWFyZXIgbGF5b3V0IC0tIHB5bGludDog
ZGlzYWJsZS1tc2c9QzYwMTMKK19FUlJPUl9DQVRFR09SSUVTID0gJycnXAorICAgIGJ1aWxkL2Ns
YXNzCisgICAgYnVpbGQvZGVwcmVjYXRlZAorICAgIGJ1aWxkL2VuZGlmX2NvbW1lbnQKKyAgICBi
dWlsZC9mb3J3YXJkX2RlY2wKKyAgICBidWlsZC9oZWFkZXJfZ3VhcmQKKyAgICBidWlsZC9pbmNs
dWRlCisgICAgYnVpbGQvaW5jbHVkZV9vcmRlcgorICAgIGJ1aWxkL2luY2x1ZGVfd2hhdF95b3Vf
dXNlCisgICAgYnVpbGQvbmFtZXNwYWNlcworICAgIGJ1aWxkL3ByaW50Zl9mb3JtYXQKKyAgICBi
dWlsZC9zdG9yYWdlX2NsYXNzCisgICAgbGVnYWwvY29weXJpZ2h0CisgICAgcmVhZGFiaWxpdHkv
YnJhY2VzCisgICAgcmVhZGFiaWxpdHkvY2FzdGluZworICAgIHJlYWRhYmlsaXR5L2NoZWNrCisg
ICAgcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvCisgICAgcmVhZGFiaWxpdHkvY29uc3Ry
dWN0b3JzCisgICAgcmVhZGFiaWxpdHkvY29udHJvbF9mbG93CisgICAgcmVhZGFiaWxpdHkvZm5f
c2l6ZQorICAgIHJlYWRhYmlsaXR5L2Z1bmN0aW9uCisgICAgcmVhZGFiaWxpdHkvbXVsdGlsaW5l
X2NvbW1lbnQKKyAgICByZWFkYWJpbGl0eS9tdWx0aWxpbmVfc3RyaW5nCisgICAgcmVhZGFiaWxp
dHkvbnVsbAorICAgIHJlYWRhYmlsaXR5L3N0cmVhbXMKKyAgICByZWFkYWJpbGl0eS90b2RvCisg
ICAgcmVhZGFiaWxpdHkvdXRmOAorICAgIHJ1bnRpbWUvYXJyYXlzCisgICAgcnVudGltZS9jYXN0
aW5nCisgICAgcnVudGltZS9leHBsaWNpdAorICAgIHJ1bnRpbWUvaW50CisgICAgcnVudGltZS9p
bml0CisgICAgcnVudGltZS9pbnZhbGlkX2luY3JlbWVudAorICAgIHJ1bnRpbWUvbWVtc2V0Cisg
ICAgcnVudGltZS9wcmludGYKKyAgICBydW50aW1lL3ByaW50Zl9mb3JtYXQKKyAgICBydW50aW1l
L3JlZmVyZW5jZXMKKyAgICBydW50aW1lL3J0dGkKKyAgICBydW50aW1lL3NpemVvZgorICAgIHJ1
bnRpbWUvc3RyaW5nCisgICAgcnVudGltZS90aHJlYWRzYWZlX2ZuCisgICAgcnVudGltZS92aXJ0
dWFsCisgICAgd2hpdGVzcGFjZS9ibGFua19saW5lCisgICAgd2hpdGVzcGFjZS9icmFjZXMKKyAg
ICB3aGl0ZXNwYWNlL2NvbW1hCisgICAgd2hpdGVzcGFjZS9jb21tZW50cworICAgIHdoaXRlc3Bh
Y2UvZW5kX29mX2xpbmUKKyAgICB3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lCisgICAgd2hpdGVz
cGFjZS9pbmRlbnQKKyAgICB3aGl0ZXNwYWNlL2xhYmVscworICAgIHdoaXRlc3BhY2UvbGluZV9s
ZW5ndGgKKyAgICB3aGl0ZXNwYWNlL25ld2xpbmUKKyAgICB3aGl0ZXNwYWNlL29wZXJhdG9ycwor
ICAgIHdoaXRlc3BhY2UvcGFyZW5zCisgICAgd2hpdGVzcGFjZS9zZW1pY29sb24KKyAgICB3aGl0
ZXNwYWNlL3RhYgorICAgIHdoaXRlc3BhY2UvdG9kbworJycnCisKKyMgVGhlIGRlZmF1bHQgc3Rh
dGUgb2YgdGhlIGNhdGVnb3J5IGZpbHRlci4gVGhpcyBpcyBvdmVycmlkZWQgYnkgdGhlIC0tZmls
dGVyPQorIyBmbGFnLiBCeSBkZWZhdWx0IGFsbCBlcnJvcnMgYXJlIG9uLCBzbyBvbmx5IGFkZCBo
ZXJlIGNhdGVnb3JpZXMgdGhhdCBzaG91bGQgYmUKKyMgb2ZmIGJ5IGRlZmF1bHQgKGkuZS4sIGNh
dGVnb3JpZXMgdGhhdCBtdXN0IGJlIGVuYWJsZWQgYnkgdGhlIC0tZmlsdGVyPSBmbGFncykuCisj
IEFsbCBlbnRyaWVzIGhlcmUgc2hvdWxkIHN0YXJ0IHdpdGggYSAnLScgb3IgJysnLCBhcyBpbiB0
aGUgLS1maWx0ZXI9IGZsYWcuCitfREVGQVVMVF9GSUxURVJTID0gW10KKworIyBIZWFkZXJzIHRo
YXQgd2UgY29uc2lkZXIgU1RMIGhlYWRlcnMuCitfU1RMX0hFQURFUlMgPSBmcm96ZW5zZXQoWwor
ICAgICdhbGdvYmFzZS5oJywgJ2FsZ29yaXRobScsICdhbGxvYy5oJywgJ2JpdHNldCcsICdkZXF1
ZScsICdleGNlcHRpb24nLAorICAgICdmdW5jdGlvbi5oJywgJ2Z1bmN0aW9uYWwnLCAnaGFzaF9t
YXAnLCAnaGFzaF9tYXAuaCcsICdoYXNoX3NldCcsCisgICAgJ2hhc2hfc2V0LmgnLCAnaXRlcmF0
b3InLCAnbGlzdCcsICdsaXN0LmgnLCAnbWFwJywgJ21lbW9yeScsICdwYWlyLmgnLAorICAgICdw
dGhyZWFkX2FsbG9jJywgJ3F1ZXVlJywgJ3NldCcsICdzZXQuaCcsICdzc3RyZWFtJywgJ3N0YWNr
JywKKyAgICAnc3RsX2FsbG9jLmgnLCAnc3RsX3JlbG9wcy5oJywgJ3R5cGVfdHJhaXRzLmgnLAor
ICAgICd1dGlsaXR5JywgJ3ZlY3RvcicsICd2ZWN0b3IuaCcsCisgICAgXSkKKworCisjIE5vbi1T
VEwgQysrIHN5c3RlbSBoZWFkZXJzLgorX0NQUF9IRUFERVJTID0gZnJvemVuc2V0KFsKKyAgICAn
YWxnby5oJywgJ2J1aWx0aW5idWYuaCcsICdidmVjdG9yLmgnLCAnY2Fzc2VydCcsICdjY3R5cGUn
LAorICAgICdjZXJybm8nLCAnY2Zsb2F0JywgJ2Npc282NDYnLCAnY2xpbWl0cycsICdjbG9jYWxl
JywgJ2NtYXRoJywKKyAgICAnY29tcGxleCcsICdjb21wbGV4LmgnLCAnY3NldGptcCcsICdjc2ln
bmFsJywgJ2NzdGRhcmcnLCAnY3N0ZGRlZicsCisgICAgJ2NzdGRpbycsICdjc3RkbGliJywgJ2Nz
dHJpbmcnLCAnY3RpbWUnLCAnY3djaGFyJywgJ2N3Y3R5cGUnLAorICAgICdkZWZhbGxvYy5oJywg
J2RlcXVlLmgnLCAnZWRpdGJ1Zi5oJywgJ2V4Y2VwdGlvbicsICdmc3RyZWFtJywKKyAgICAnZnN0
cmVhbS5oJywgJ2hhc2h0YWJsZS5oJywgJ2hlYXAuaCcsICdpbmRzdHJlYW0uaCcsICdpb21hbmlw
JywKKyAgICAnaW9tYW5pcC5oJywgJ2lvcycsICdpb3Nmd2QnLCAnaW9zdHJlYW0nLCAnaW9zdHJl
YW0uaCcsICdpc3RyZWFtLmgnLAorICAgICdpdGVyYXRvci5oJywgJ2xpbWl0cycsICdtYXAuaCcs
ICdtdWx0aW1hcC5oJywgJ211bHRpc2V0LmgnLAorICAgICdudW1lcmljJywgJ29zdHJlYW0uaCcs
ICdwYXJzZXN0cmVhbS5oJywgJ3Bmc3RyZWFtLmgnLCAnUGxvdEZpbGUuaCcsCisgICAgJ3Byb2Ni
dWYuaCcsICdwdGhyZWFkX2FsbG9jLmgnLCAncm9wZScsICdyb3BlLmgnLCAncm9wZWltcGwuaCcs
CisgICAgJ1NGaWxlLmgnLCAnc2xpc3QnLCAnc2xpc3QuaCcsICdzdGFjay5oJywgJ3N0ZGV4Y2Vw
dCcsCisgICAgJ3N0ZGlvc3RyZWFtLmgnLCAnc3RyZWFtYnVmLmgnLCAnc3RyZWFtLmgnLCAnc3Ry
ZmlsZS5oJywgJ3N0cmluZycsCisgICAgJ3N0cnN0cmVhbScsICdzdHJzdHJlYW0uaCcsICd0ZW1w
YnVmLmgnLCAndHJlZS5oJywgJ3R5cGVpbmZvJywgJ3ZhbGFycmF5JywKKyAgICBdKQorCisKKyMg
QXNzZXJ0aW9uIG1hY3Jvcy4gIFRoZXNlIGFyZSBkZWZpbmVkIGluIGJhc2UvbG9nZ2luZy5oIGFu
ZAorIyB0ZXN0aW5nL2Jhc2UvZ3VuaXQuaC4gIE5vdGUgdGhhdCB0aGUgX00gdmVyc2lvbnMgbmVl
ZCB0byBjb21lIGZpcnN0CisjIGZvciBzdWJzdHJpbmcgbWF0Y2hpbmcgdG8gd29yay4KK19DSEVD
S19NQUNST1MgPSBbCisgICAgJ0RDSEVDSycsICdDSEVDSycsCisgICAgJ0VYUEVDVF9UUlVFX00n
LCAnRVhQRUNUX1RSVUUnLAorICAgICdBU1NFUlRfVFJVRV9NJywgJ0FTU0VSVF9UUlVFJywKKyAg
ICAnRVhQRUNUX0ZBTFNFX00nLCAnRVhQRUNUX0ZBTFNFJywKKyAgICAnQVNTRVJUX0ZBTFNFX00n
LCAnQVNTRVJUX0ZBTFNFJywKKyAgICBdCisKKyMgUmVwbGFjZW1lbnQgbWFjcm9zIGZvciBDSEVD
Sy9EQ0hFQ0svRVhQRUNUX1RSVUUvRVhQRUNUX0ZBTFNFCitfQ0hFQ0tfUkVQTEFDRU1FTlQgPSBk
aWN0KFsobSwge30pIGZvciBtIGluIF9DSEVDS19NQUNST1NdKQorCitmb3Igb3AsIHJlcGxhY2Vt
ZW50IGluIFsoJz09JywgJ0VRJyksICgnIT0nLCAnTkUnKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICgnPj0nLCAnR0UnKSwgKCc+JywgJ0dUJyksCisgICAgICAgICAgICAgICAgICAgICAgICAo
Jzw9JywgJ0xFJyksICgnPCcsICdMVCcpXToKKyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0RDSEVD
SyddW29wXSA9ICdEQ0hFQ0tfJXMnICUgcmVwbGFjZW1lbnQKKyAgICBfQ0hFQ0tfUkVQTEFDRU1F
TlRbJ0NIRUNLJ11bb3BdID0gJ0NIRUNLXyVzJyAlIHJlcGxhY2VtZW50CisgICAgX0NIRUNLX1JF
UExBQ0VNRU5UWydFWFBFQ1RfVFJVRSddW29wXSA9ICdFWFBFQ1RfJXMnICUgcmVwbGFjZW1lbnQK
KyAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9UUlVFJ11bb3BdID0gJ0FTU0VSVF8lcycg
JSByZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNUX1RSVUVfTSddW29w
XSA9ICdFWFBFQ1RfJXNfTScgJSByZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsn
QVNTRVJUX1RSVUVfTSddW29wXSA9ICdBU1NFUlRfJXNfTScgJSByZXBsYWNlbWVudAorCitmb3Ig
b3AsIGludl9yZXBsYWNlbWVudCBpbiBbKCc9PScsICdORScpLCAoJyE9JywgJ0VRJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCc+PScsICdMVCcpLCAoJz4nLCAnTEUnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoJzw9JywgJ0dUJyksICgnPCcsICdHRScpXToKKyAgICBf
Q0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRSddW29wXSA9ICdFWFBFQ1RfJXMnICUgaW52
X3JlcGxhY2VtZW50CisgICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NFUlRfRkFMU0UnXVtvcF0g
PSAnQVNTRVJUXyVzJyAlIGludl9yZXBsYWNlbWVudAorICAgIF9DSEVDS19SRVBMQUNFTUVOVFsn
RVhQRUNUX0ZBTFNFX00nXVtvcF0gPSAnRVhQRUNUXyVzX00nICUgaW52X3JlcGxhY2VtZW50Cisg
ICAgX0NIRUNLX1JFUExBQ0VNRU5UWydBU1NFUlRfRkFMU0VfTSddW29wXSA9ICdBU1NFUlRfJXNf
TScgJSBpbnZfcmVwbGFjZW1lbnQKKworCisjIFRoZXNlIGNvbnN0YW50cyBkZWZpbmUgdHlwZXMg
b2YgaGVhZGVycyBmb3IgdXNlIHdpdGgKKyMgX0luY2x1ZGVTdGF0ZS5jaGVja19uZXh0X2luY2x1
ZGVfb3JkZXIoKS4KK19DT05GSUdfSEVBREVSID0gMAorX1BSSU1BUllfSEVBREVSID0gMQorX09U
SEVSX0hFQURFUiA9IDIKKworCitfcmVnZXhwX2NvbXBpbGVfY2FjaGUgPSB7fQorCisKK2RlZiBt
YXRjaChwYXR0ZXJuLCBzKToKKyAgICAiIiJNYXRjaGVzIHRoZSBzdHJpbmcgd2l0aCB0aGUgcGF0
dGVybiwgY2FjaGluZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgorICAgICMgVGhlIHJlZ2V4cCBj
b21waWxhdGlvbiBjYWNoaW5nIGlzIGlubGluZWQgaW4gYm90aCBtYXRjaCBhbmQgc2VhcmNoIGZv
cgorICAgICMgcGVyZm9ybWFuY2UgcmVhc29uczsgZmFjdG9yaW5nIGl0IG91dCBpbnRvIGEgc2Vw
YXJhdGUgZnVuY3Rpb24gdHVybnMgb3V0CisgICAgIyB0byBiZSBub3RpY2VhYmx5IGV4cGVuc2l2
ZS4KKyAgICBpZiBub3QgcGF0dGVybiBpbiBfcmVnZXhwX2NvbXBpbGVfY2FjaGU6CisgICAgICAg
IF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXSA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0
dGVybikKKyAgICByZXR1cm4gX3JlZ2V4cF9jb21waWxlX2NhY2hlW3BhdHRlcm5dLm1hdGNoKHMp
CisKKworZGVmIHNlYXJjaChwYXR0ZXJuLCBzKToKKyAgICAiIiJTZWFyY2hlcyB0aGUgc3RyaW5n
IGZvciB0aGUgcGF0dGVybiwgY2FjaGluZyB0aGUgY29tcGlsZWQgcmVnZXhwLiIiIgorICAgIGlm
IG5vdCBwYXR0ZXJuIGluIF9yZWdleHBfY29tcGlsZV9jYWNoZToKKyAgICAgICAgX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dID0gc3JlX2NvbXBpbGUuY29tcGlsZShwYXR0ZXJuKQorICAg
IHJldHVybiBfcmVnZXhwX2NvbXBpbGVfY2FjaGVbcGF0dGVybl0uc2VhcmNoKHMpCisKKworY2xh
c3MgX0luY2x1ZGVTdGF0ZShkaWN0KToKKyAgICAiIiJUcmFja3MgbGluZSBudW1iZXJzIGZvciBp
bmNsdWRlcywgYW5kIHRoZSBvcmRlciBpbiB3aGljaCBpbmNsdWRlcyBhcHBlYXIuCisKKyAgICBB
cyBhIGRpY3QsIGFuIF9JbmNsdWRlU3RhdGUgb2JqZWN0IHNlcnZlcyBhcyBhIG1hcHBpbmcgYmV0
d2VlbiBpbmNsdWRlCisgICAgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIG9uIHdoaWNoIHRoYXQg
ZmlsZSB3YXMgaW5jbHVkZWQuCisKKyAgICBDYWxsIGNoZWNrX25leHRfaW5jbHVkZV9vcmRlcigp
IG9uY2UgZm9yIGVhY2ggaGVhZGVyIGluIHRoZSBmaWxlLCBwYXNzaW5nCisgICAgaW4gdGhlIHR5
cGUgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuIENhbGxzIGluIGFuIGlsbGVnYWwgb3JkZXIgd2ls
bAorICAgIHJhaXNlIGFuIF9JbmNsdWRlRXJyb3Igd2l0aCBhbiBhcHByb3ByaWF0ZSBlcnJvciBt
ZXNzYWdlLgorCisgICAgIiIiCisgICAgIyBzZWxmLl9zZWN0aW9uIHdpbGwgbW92ZSBtb25vdG9u
aWNhbGx5IHRocm91Z2ggdGhpcyBzZXQuIElmIGl0IGV2ZXIKKyAgICAjIG5lZWRzIHRvIG1vdmUg
YmFja3dhcmRzLCBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIgd2lsbCByYWlzZSBhbiBlcnJvci4K
KyAgICBfSU5JVElBTF9TRUNUSU9OID0gMAorICAgIF9DT05GSUdfU0VDVElPTiA9IDEKKyAgICBf
UFJJTUFSWV9TRUNUSU9OID0gMgorICAgIF9PVEhFUl9TRUNUSU9OID0gMworCisgICAgX1RZUEVf
TkFNRVMgPSB7CisgICAgICAgIF9DT05GSUdfSEVBREVSOiAnV2ViQ29yZSBjb25maWcuaCcsCisg
ICAgICAgIF9QUklNQVJZX0hFQURFUjogJ2hlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cycsCisg
ICAgICAgIF9PVEhFUl9IRUFERVI6ICdvdGhlciBoZWFkZXInLAorICAgICAgICB9CisgICAgX1NF
Q1RJT05fTkFNRVMgPSB7CisgICAgICAgIF9JTklUSUFMX1NFQ1RJT046ICIuLi4gbm90aGluZy4i
LAorICAgICAgICBfQ09ORklHX1NFQ1RJT046ICJXZWJDb3JlIGNvbmZpZy5oLiIsCisgICAgICAg
IF9QUklNQVJZX1NFQ1RJT046ICdhIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cy4nLAorICAg
ICAgICBfT1RIRVJfU0VDVElPTjogJ290aGVyIGhlYWRlci4nLAorICAgICAgICB9CisKKyAgICBk
ZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIGRpY3QuX19pbml0X18oc2VsZikKKyAgICAgICAg
c2VsZi5fc2VjdGlvbiA9IHNlbGYuX0lOSVRJQUxfU0VDVElPTgorICAgICAgICBzZWxmLl92aXNp
dGVkX3ByaW1hcnlfc2VjdGlvbiA9IEZhbHNlCisgICAgICAgIHNlbGYuaGVhZGVyX3R5cGVzID0g
ZGljdCgpOworCisgICAgZGVmIHZpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fdmlzaXRlZF9wcmltYXJ5X3NlY3Rpb24KKworICAgIGRlZiBjaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoc2VsZiwgaGVhZGVyX3R5cGUsIGZpbGVfaXNfaGVhZGVyKToKKyAg
ICAgICAgIiIiUmV0dXJucyBhIG5vbi1lbXB0eSBlcnJvciBtZXNzYWdlIGlmIHRoZSBuZXh0IGhl
YWRlciBpcyBvdXQgb2Ygb3JkZXIuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBhbHNvIHVwZGF0
ZXMgdGhlIGludGVybmFsIHN0YXRlIHRvIGJlIHJlYWR5IHRvIGNoZWNrCisgICAgICAgIHRoZSBu
ZXh0IGluY2x1ZGUuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBoZWFkZXJfdHlwZTogT25l
IG9mIHRoZSBfWFhYX0hFQURFUiBjb25zdGFudHMgZGVmaW5lZCBhYm92ZS4KKyAgICAgICAgICBm
aWxlX2lzX2hlYWRlcjogV2hldGhlciB0aGUgZmlsZSB0aGF0IG93bnMgdGhpcyBfSW5jbHVkZVN0
YXRlIGlzIGl0c2VsZiBhIGhlYWRlcgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhl
IGVtcHR5IHN0cmluZyBpZiB0aGUgaGVhZGVyIGlzIGluIHRoZSByaWdodCBvcmRlciwgb3IgYW4K
KyAgICAgICAgICBlcnJvciBtZXNzYWdlIGRlc2NyaWJpbmcgd2hhdCdzIHdyb25nLgorCisgICAg
ICAgICIiIgorICAgICAgICBpZiBoZWFkZXJfdHlwZSA9PSBfQ09ORklHX0hFQURFUiBhbmQgZmls
ZV9pc19oZWFkZXI6CisgICAgICAgICAgICByZXR1cm4gJ0hlYWRlciBmaWxlIHNob3VsZCBub3Qg
Y29udGFpbiBXZWJDb3JlIGNvbmZpZy5oLicKKyAgICAgICAgaWYgaGVhZGVyX3R5cGUgPT0gX1BS
SU1BUllfSEVBREVSIGFuZCBmaWxlX2lzX2hlYWRlcjoKKyAgICAgICAgICAgIHJldHVybiAnSGVh
ZGVyIGZpbGUgc2hvdWxkIG5vdCBjb250YWluIGl0c2VsZi4nCisKKyAgICAgICAgZXJyb3JfbWVz
c2FnZSA9ICcnCisgICAgICAgIGlmIHNlbGYuX3NlY3Rpb24gIT0gc2VsZi5fT1RIRVJfU0VDVElP
TjoKKyAgICAgICAgICAgIGJlZm9yZV9lcnJvcl9tZXNzYWdlID0gKCdGb3VuZCAlcyBiZWZvcmUg
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9UWVBFX05B
TUVTW2hlYWRlcl90eXBlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9TRUNUSU9OX05BTUVTW3NlbGYuX3NlY3Rpb24gKyAxXSkpCisgICAgICAgIGFmdGVyX2Vy
cm9yX21lc3NhZ2UgPSAoJ0ZvdW5kICVzIGFmdGVyICVzJyAlCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChzZWxmLl9UWVBFX05BTUVTW2hlYWRlcl90eXBlXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFQ1RJT05fTkFNRVNbc2VsZi5fc2VjdGlvbl0p
KQorCisgICAgICAgIGlmIGhlYWRlcl90eXBlID09IF9DT05GSUdfSEVBREVSOgorICAgICAgICAg
ICAgaWYgc2VsZi5fc2VjdGlvbiA+PSBzZWxmLl9DT05GSUdfU0VDVElPTjoKKyAgICAgICAgICAg
ICAgICBlcnJvcl9tZXNzYWdlID0gYWZ0ZXJfZXJyb3JfbWVzc2FnZQorICAgICAgICAgICAgc2Vs
Zi5fc2VjdGlvbiA9IHNlbGYuX0NPTkZJR19TRUNUSU9OCisgICAgICAgIGVsaWYgaGVhZGVyX3R5
cGUgPT0gX1BSSU1BUllfSEVBREVSOgorICAgICAgICAgICAgaWYgc2VsZi5fc2VjdGlvbiA+PSBz
ZWxmLl9QUklNQVJZX1NFQ1RJT046CisgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZSA9IGFm
dGVyX2Vycm9yX21lc3NhZ2UKKyAgICAgICAgICAgIGVsaWYgc2VsZi5fc2VjdGlvbiA8IHNlbGYu
X0NPTkZJR19TRUNUSU9OOgorICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSBiZWZvcmVf
ZXJyb3JfbWVzc2FnZQorICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNlbGYuX1BSSU1BUllf
U0VDVElPTgorICAgICAgICAgICAgc2VsZi5fdmlzaXRlZF9wcmltYXJ5X3NlY3Rpb24gPSBUcnVl
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgaGVhZGVyX3R5cGUgPT0gX09USEVS
X0hFQURFUgorICAgICAgICAgICAgaWYgbm90IGZpbGVfaXNfaGVhZGVyIGFuZCBzZWxmLl9zZWN0
aW9uIDwgc2VsZi5fUFJJTUFSWV9TRUNUSU9OOgorICAgICAgICAgICAgICAgIGVycm9yX21lc3Nh
Z2UgPSBiZWZvcmVfZXJyb3JfbWVzc2FnZQorICAgICAgICAgICAgc2VsZi5fc2VjdGlvbiA9IHNl
bGYuX09USEVSX1NFQ1RJT04KKworICAgICAgICByZXR1cm4gZXJyb3JfbWVzc2FnZQorCisKK2Ns
YXNzIF9DcHBTdHlsZVN0YXRlKG9iamVjdCk6CisgICAgIiIiTWFpbnRhaW5zIG1vZHVsZS13aWRl
IHN0YXRlLi4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi52ZXJi
b3NlX2xldmVsID0gMSAgIyBnbG9iYWwgc2V0dGluZy4KKyAgICAgICAgc2VsZi5lcnJvcl9jb3Vu
dCA9IDAgICAgIyBnbG9iYWwgY291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzCisgICAgICAgICMgZmls
dGVycyB0byBhcHBseSB3aGVuIGVtaXR0aW5nIGVycm9yIG1lc3NhZ2VzCisgICAgICAgIHNlbGYu
ZmlsdGVycyA9IF9ERUZBVUxUX0ZJTFRFUlNbOl0KKworICAgICAgICAjIG91dHB1dCBmb3JtYXQ6
CisgICAgICAgICMgImVtYWNzIiAtIGZvcm1hdCB0aGF0IGVtYWNzIGNhbiBwYXJzZSAoZGVmYXVs
dCkKKyAgICAgICAgIyAidnM3IiAtIGZvcm1hdCB0aGF0IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlv
IDcgY2FuIHBhcnNlCisgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9ICdlbWFjcycKKworICAg
IGRlZiBzZXRfb3V0cHV0X2Zvcm1hdChzZWxmLCBvdXRwdXRfZm9ybWF0KToKKyAgICAgICAgIiIi
U2V0cyB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgZXJyb3JzLiIiIgorICAgICAgICBzZWxmLm91dHB1
dF9mb3JtYXQgPSBvdXRwdXRfZm9ybWF0CisKKyAgICBkZWYgc2V0X3ZlcmJvc2VfbGV2ZWwoc2Vs
ZiwgbGV2ZWwpOgorICAgICAgICAiIiJTZXRzIHRoZSBtb2R1bGUncyB2ZXJib3NpdHksIGFuZCBy
ZXR1cm5zIHRoZSBwcmV2aW91cyBzZXR0aW5nLiIiIgorICAgICAgICBsYXN0X3ZlcmJvc2VfbGV2
ZWwgPSBzZWxmLnZlcmJvc2VfbGV2ZWwKKyAgICAgICAgc2VsZi52ZXJib3NlX2xldmVsID0gbGV2
ZWwKKyAgICAgICAgcmV0dXJuIGxhc3RfdmVyYm9zZV9sZXZlbAorCisgICAgZGVmIHNldF9maWx0
ZXJzKHNlbGYsIGZpbHRlcnMpOgorICAgICAgICAiIiJTZXRzIHRoZSBlcnJvci1tZXNzYWdlIGZp
bHRlcnMuCisKKyAgICAgICAgVGhlc2UgZmlsdGVycyBhcmUgYXBwbGllZCB3aGVuIGRlY2lkaW5n
IHdoZXRoZXIgdG8gZW1pdCBhIGdpdmVuCisgICAgICAgIGVycm9yIG1lc3NhZ2UuCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBmaWx0ZXJzOiBBIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQg
ZmlsdGVycyAoZWcgIit3aGl0ZXNwYWNlL2luZGVudCIpLgorICAgICAgICAgICAgICAgICAgIEVh
Y2ggZmlsdGVyIHNob3VsZCBzdGFydCB3aXRoICsgb3IgLTsgZWxzZSB3ZSBkaWUuCisKKyAgICAg
ICAgUmFpc2VzOgorICAgICAgICAgIFZhbHVlRXJyb3I6IFRoZSBjb21tYS1zZXBhcmF0ZWQgZmls
dGVycyBkaWQgbm90IGFsbCBzdGFydCB3aXRoICcrJyBvciAnLScuCisgICAgICAgICAgICAgICAg
ICAgICAgRS5nLiAiLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQsd2hpdGVzcGFjZS9i
YWRmaWx0ZXIiCisgICAgICAgICIiIgorICAgICAgICAjIERlZmF1bHQgZmlsdGVycyBhbHdheXMg
aGF2ZSBsZXNzIHByaW9yaXR5IHRoYW4gdGhlIGZsYWcgb25lcy4KKyAgICAgICAgc2VsZi5maWx0
ZXJzID0gX0RFRkFVTFRfRklMVEVSU1s6XQorICAgICAgICBmb3IgZmlsdGVyIGluIGZpbHRlcnMu
c3BsaXQoJywnKToKKyAgICAgICAgICAgIGNsZWFuX2ZpbHRlciA9IGZpbHRlci5zdHJpcCgpCisg
ICAgICAgICAgICBpZiBjbGVhbl9maWx0ZXI6CisgICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJz
LmFwcGVuZChjbGVhbl9maWx0ZXIpCisgICAgICAgIGZvciBmaWx0ZXIgaW4gc2VsZi5maWx0ZXJz
OgorICAgICAgICAgICAgaWYgbm90IChmaWx0ZXIuc3RhcnRzd2l0aCgnKycpIG9yIGZpbHRlci5z
dGFydHN3aXRoKCctJykpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0V2ZXJ5
IGZpbHRlciBpbiAtLWZpbHRlciBtdXN0IHN0YXJ0IHdpdGggJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJysgb3IgLSAoJXMgZG9lcyBub3QpJyAlIGZpbHRlcikKKworICAgIGRl
ZiByZXNldF9lcnJvcl9jb3VudChzZWxmKToKKyAgICAgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3Mg
ZXJyb3Igc3RhdGlzdGljIGJhY2sgdG8gemVyby4iIiIKKyAgICAgICAgc2VsZi5lcnJvcl9jb3Vu
dCA9IDAKKworICAgIGRlZiBpbmNyZW1lbnRfZXJyb3JfY291bnQoc2VsZik6CisgICAgICAgICIi
IkJ1bXBzIHRoZSBtb2R1bGUncyBlcnJvciBzdGF0aXN0aWMuIiIiCisgICAgICAgIHNlbGYuZXJy
b3JfY291bnQgKz0gMQorCisKK19jcHBfc3R5bGVfc3RhdGUgPSBfQ3BwU3R5bGVTdGF0ZSgpCisK
KworZGVmIF9vdXRwdXRfZm9ybWF0KCk6CisgICAgIiIiR2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0
IGZvcm1hdC4iIiIKKyAgICByZXR1cm4gX2NwcF9zdHlsZV9zdGF0ZS5vdXRwdXRfZm9ybWF0CisK
KworZGVmIF9zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0KToKKyAgICAiIiJTZXRzIHRo
ZSBtb2R1bGUncyBvdXRwdXQgZm9ybWF0LiIiIgorICAgIF9jcHBfc3R5bGVfc3RhdGUuc2V0X291
dHB1dF9mb3JtYXQob3V0cHV0X2Zvcm1hdCkKKworCitkZWYgX3ZlcmJvc2VfbGV2ZWwoKToKKyAg
ICAiIiJSZXR1cm5zIHRoZSBtb2R1bGUncyB2ZXJib3NpdHkgc2V0dGluZy4iIiIKKyAgICByZXR1
cm4gX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsCisKKworZGVmIF9zZXRfdmVyYm9zZV9s
ZXZlbChsZXZlbCk6CisgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgdmVyYm9zaXR5LCBhbmQgcmV0
dXJucyB0aGUgcHJldmlvdXMgc2V0dGluZy4iIiIKKyAgICByZXR1cm4gX2NwcF9zdHlsZV9zdGF0
ZS5zZXRfdmVyYm9zZV9sZXZlbChsZXZlbCkKKworCitkZWYgX2ZpbHRlcnMoKToKKyAgICAiIiJS
ZXR1cm5zIHRoZSBtb2R1bGUncyBsaXN0IG9mIG91dHB1dCBmaWx0ZXJzLCBhcyBhIGxpc3QuIiIi
CisgICAgcmV0dXJuIF9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycworCisKK2RlZiBfc2V0X2ZpbHRl
cnMoZmlsdGVycyk6CisgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgZXJyb3ItbWVzc2FnZSBmaWx0
ZXJzLgorCisgICAgVGhlc2UgZmlsdGVycyBhcmUgYXBwbGllZCB3aGVuIGRlY2lkaW5nIHdoZXRo
ZXIgdG8gZW1pdCBhIGdpdmVuCisgICAgZXJyb3IgbWVzc2FnZS4KKworICAgIEFyZ3M6CisgICAg
ICBmaWx0ZXJzOiBBIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgZmlsdGVycyAoZWcgIndoaXRl
c3BhY2UvaW5kZW50IikuCisgICAgICAgICAgICAgICBFYWNoIGZpbHRlciBzaG91bGQgc3RhcnQg
d2l0aCArIG9yIC07IGVsc2Ugd2UgZGllLgorICAgICIiIgorICAgIF9jcHBfc3R5bGVfc3RhdGUu
c2V0X2ZpbHRlcnMoZmlsdGVycykKKworCitkZWYgZXJyb3JfY291bnQoKToKKyAgICAiIiJSZXR1
cm5zIHRoZSBnbG9iYWwgY291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzLiIiIgorICAgIHJldHVybiBf
Y3BwX3N0eWxlX3N0YXRlLmVycm9yX2NvdW50CisKKworY2xhc3MgX0Z1bmN0aW9uU3RhdGUob2Jq
ZWN0KToKKyAgICAiIiJUcmFja3MgY3VycmVudCBmdW5jdGlvbiBuYW1lIGFuZCB0aGUgbnVtYmVy
IG9mIGxpbmVzIGluIGl0cyBib2R5LiIiIgorCisgICAgX05PUk1BTF9UUklHR0VSID0gMjUwICAj
IGZvciAtLXY9MCwgNTAwIGZvciAtLXY9MSwgZXRjLgorICAgIF9URVNUX1RSSUdHRVIgPSA0MDAg
ICAgIyBhYm91dCA1MCUgbW9yZSB0aGFuIF9OT1JNQUxfVFJJR0dFUi4KKworICAgIGRlZiBfX2lu
aXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5pbl9hX2Z1bmN0aW9uID0gRmFsc2UKKyAgICAgICAg
c2VsZi5saW5lc19pbl9mdW5jdGlvbiA9IDAKKyAgICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9u
ID0gJycKKworICAgIGRlZiBiZWdpbihzZWxmLCBmdW5jdGlvbl9uYW1lKToKKyAgICAgICAgIiIi
U3RhcnQgYW5hbHl6aW5nIGZ1bmN0aW9uIGJvZHkuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAg
ICAgIGZ1bmN0aW9uX25hbWU6IFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBiZWluZyB0cmFja2Vk
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pbl9hX2Z1bmN0aW9uID0gVHJ1ZQorICAgICAg
ICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uID0gMAorICAgICAgICBzZWxmLmN1cnJlbnRfZnVuY3Rp
b24gPSBmdW5jdGlvbl9uYW1lCisKKyAgICBkZWYgY291bnQoc2VsZik6CisgICAgICAgICIiIkNv
dW50IGxpbmUgaW4gY3VycmVudCBmdW5jdGlvbiBib2R5LiIiIgorICAgICAgICBpZiBzZWxmLmlu
X2FfZnVuY3Rpb246CisgICAgICAgICAgICBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uICs9IDEKKwor
ICAgIGRlZiBjaGVjayhzZWxmLCBlcnJvciwgZmlsZW5hbWUsIGxpbmVfbnVtYmVyKToKKyAgICAg
ICAgIiIiUmVwb3J0IGlmIHRvbyBtYW55IGxpbmVzIGluIGZ1bmN0aW9uIGJvZHkuCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkg
ZXJyb3JzIGZvdW5kLgorICAgICAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVu
dCBmaWxlLgorICAgICAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRv
IGNoZWNrLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgbWF0Y2gocidUKEVTVHxlc3QpJywgc2Vs
Zi5jdXJyZW50X2Z1bmN0aW9uKToKKyAgICAgICAgICAgIGJhc2VfdHJpZ2dlciA9IHNlbGYuX1RF
U1RfVFJJR0dFUgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmFzZV90cmlnZ2VyID0gc2Vs
Zi5fTk9STUFMX1RSSUdHRVIKKyAgICAgICAgdHJpZ2dlciA9IGJhc2VfdHJpZ2dlciAqIDIgKiog
X3ZlcmJvc2VfbGV2ZWwoKQorCisgICAgICAgIGlmIHNlbGYubGluZXNfaW5fZnVuY3Rpb24gPiB0
cmlnZ2VyOgorICAgICAgICAgICAgZXJyb3JfbGV2ZWwgPSBpbnQobWF0aC5sb2coc2VsZi5saW5l
c19pbl9mdW5jdGlvbiAvIGJhc2VfdHJpZ2dlciwgMikpCisgICAgICAgICAgICAjIDUwID0+IDAs
IDEwMCA9PiAxLCAyMDAgPT4gMiwgNDAwID0+IDMsIDgwMCA9PiA0LCAxNjAwID0+IDUsIC4uLgor
ICAgICAgICAgICAgaWYgZXJyb3JfbGV2ZWwgPiA1OgorICAgICAgICAgICAgICAgIGVycm9yX2xl
dmVsID0gNQorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFi
aWxpdHkvZm5fc2l6ZScsIGVycm9yX2xldmVsLAorICAgICAgICAgICAgICAgICAgJ1NtYWxsIGFu
ZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOicKKyAgICAgICAgICAgICAgICAgICcg
JXMgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzJworICAgICAgICAgICAgICAgICAgJyAoZXJyb3Ig
dHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5lcykuJyAgJSAoCisgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uLCBzZWxmLmxpbmVzX2luX2Z1bmN0aW9uLCB0cmln
Z2VyKSkKKworICAgIGRlZiBlbmQoc2VsZik6CisgICAgICAgICIiIlN0b3AgYW5hbGl6aW5nIGZ1
bmN0aW9uIGJvZHkuIiIiCisgICAgICAgIHNlbGYuaW5fYV9mdW5jdGlvbiA9IEZhbHNlCisKKwor
Y2xhc3MgX0luY2x1ZGVFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkluZGljYXRlcyBhIHByb2Js
ZW0gd2l0aCB0aGUgaW5jbHVkZSBvcmRlciBpbiBhIGZpbGUuIiIiCisgICAgcGFzcworCisKK2Ns
YXNzIEZpbGVJbmZvOgorICAgICIiIlByb3ZpZGVzIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBmaWxl
bmFtZXMuCisKKyAgICBGaWxlSW5mbyBwcm92aWRlcyBlYXN5IGFjY2VzcyB0byB0aGUgY29tcG9u
ZW50cyBvZiBhIGZpbGUncyBwYXRoCisgICAgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC4K
KyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIHNl
bGYuX2ZpbGVuYW1lID0gZmlsZW5hbWUKKworICAgIGRlZiBmdWxsX25hbWUoc2VsZik6CisgICAg
ICAgICIiIk1ha2UgV2luZG93cyBwYXRocyBsaWtlIFVuaXguIiIiCisgICAgICAgIHJldHVybiBv
cy5wYXRoLmFic3BhdGgoc2VsZi5fZmlsZW5hbWUpLnJlcGxhY2UoJ1xcJywgJy8nKQorCisgICAg
ZGVmIHJlcG9zaXRvcnlfbmFtZShzZWxmKToKKyAgICAgICAgIiIiRnVsbCBuYW1lIGFmdGVyIHJl
bW92aW5nIHRoZSBsb2NhbCBwYXRoIHRvIHRoZSByZXBvc2l0b3J5LgorCisgICAgICAgIElmIHdl
IGhhdmUgYSByZWFsIGFic29sdXRlIHBhdGggbmFtZSBoZXJlIHdlIGNhbiB0cnkgdG8gZG8gc29t
ZXRoaW5nIHNtYXJ0OgorICAgICAgICBkZXRlY3RpbmcgdGhlIHJvb3Qgb2YgdGhlIGNoZWNrb3V0
IGFuZCB0cnVuY2F0aW5nIC9wYXRoL3RvL2NoZWNrb3V0IGZyb20KKyAgICAgICAgdGhlIG5hbWUg
c28gdGhhdCB3ZSBnZXQgaGVhZGVyIGd1YXJkcyB0aGF0IGRvbid0IGluY2x1ZGUgdGhpbmdzIGxp
a2UKKyAgICAgICAgIkM6XERvY3VtZW50cyBhbmQgU2V0dGluZ3NcLi4uIiBvciAiL2hvbWUvdXNl
cm5hbWUvLi4uIiBpbiB0aGVtIGFuZCB0aHVzCisgICAgICAgIHBlb3BsZSBvbiBkaWZmZXJlbnQg
Y29tcHV0ZXJzIHdobyBoYXZlIGNoZWNrZWQgdGhlIHNvdXJjZSBvdXQgdG8gZGlmZmVyZW50Cisg
ICAgICAgIGxvY2F0aW9ucyB3b24ndCBzZWUgYm9ndXMgZXJyb3JzLgorICAgICAgICAiIiIKKyAg
ICAgICAgZnVsbG5hbWUgPSBzZWxmLmZ1bGxfbmFtZSgpCisKKyAgICAgICAgaWYgb3MucGF0aC5l
eGlzdHMoZnVsbG5hbWUpOgorICAgICAgICAgICAgcHJvamVjdF9kaXIgPSBvcy5wYXRoLmRpcm5h
bWUoZnVsbG5hbWUpCisKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9p
bihwcm9qZWN0X2RpciwgIi5zdm4iKSk6CisgICAgICAgICAgICAgICAgIyBJZiB0aGVyZSdzIGEg
LnN2biBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeSwgd2UKKyAgICAgICAgICAgICAgICAj
IHJlY3Vyc2l2ZWx5IGxvb2sgdXAgdGhlIGRpcmVjdG9yeSB0cmVlIGZvciB0aGUgdG9wCisgICAg
ICAgICAgICAgICAgIyBvZiB0aGUgU1ZOIGNoZWNrb3V0CisgICAgICAgICAgICAgICAgcm9vdF9k
aXIgPSBwcm9qZWN0X2RpcgorICAgICAgICAgICAgICAgIG9uZV91cF9kaXIgPSBvcy5wYXRoLmRp
cm5hbWUocm9vdF9kaXIpCisgICAgICAgICAgICAgICAgd2hpbGUgb3MucGF0aC5leGlzdHMob3Mu
cGF0aC5qb2luKG9uZV91cF9kaXIsICIuc3ZuIikpOgorICAgICAgICAgICAgICAgICAgICByb290
X2RpciA9IG9zLnBhdGguZGlybmFtZShyb290X2RpcikKKyAgICAgICAgICAgICAgICAgICAgb25l
X3VwX2RpciA9IG9zLnBhdGguZGlybmFtZShvbmVfdXBfZGlyKQorCisgICAgICAgICAgICAgICAg
cHJlZml4ID0gb3MucGF0aC5jb21tb25wcmVmaXgoW3Jvb3RfZGlyLCBwcm9qZWN0X2Rpcl0pCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZ1bGxuYW1lW2xlbihwcmVmaXgpICsgMTpdCisKKyAgICAg
ICAgICAgICMgTm90IFNWTj8gVHJ5IHRvIGZpbmQgYSBnaXQgdG9wIGxldmVsIGRpcmVjdG9yeSBi
eQorICAgICAgICAgICAgIyBzZWFyY2hpbmcgdXAgZnJvbSB0aGUgY3VycmVudCBwYXRoLgorICAg
ICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoZnVsbG5hbWUpCisgICAgICAgICAg
ICB3aGlsZSAocm9vdF9kaXIgIT0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQorICAgICAgICAg
ICAgICAgICAgIGFuZCBub3Qgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHJvb3RfZGlyLCAi
LmdpdCIpKSk6CisgICAgICAgICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocm9v
dF9kaXIpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHJv
b3RfZGlyLCAiLmdpdCIpKToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gb3MucGF0aC5j
b21tb25wcmVmaXgoW3Jvb3RfZGlyLCBwcm9qZWN0X2Rpcl0pCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmdWxsbmFtZVtsZW4ocHJlZml4KSArIDE6XQorCisgICAgICAgICMgRG9uJ3Qga25v
dyB3aGF0IHRvIGRvOyBoZWFkZXIgZ3VhcmQgd2FybmluZ3MgbWF5IGJlIHdyb25nLi4uCisgICAg
ICAgIHJldHVybiBmdWxsbmFtZQorCisgICAgZGVmIHNwbGl0KHNlbGYpOgorICAgICAgICAiIiJT
cGxpdHMgdGhlIGZpbGUgaW50byB0aGUgZGlyZWN0b3J5LCBiYXNlbmFtZSwgYW5kIGV4dGVuc2lv
bi4KKworICAgICAgICBGb3IgJ2Nocm9tZS9icm93c2VyL2Jyb3dzZXIuY3BwJywgU3BsaXQoKSB3
b3VsZAorICAgICAgICByZXR1cm4gKCdjaHJvbWUvYnJvd3NlcicsICdicm93c2VyJywgJy5jcHAn
KQorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgQSB0dXBsZSBvZiAoZGlyZWN0b3J5LCBi
YXNlbmFtZSwgZXh0ZW5zaW9uKS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZ29vZ2xlbmFtZSA9
IHNlbGYucmVwb3NpdG9yeV9uYW1lKCkKKyAgICAgICAgcHJvamVjdCwgcmVzdCA9IG9zLnBhdGgu
c3BsaXQoZ29vZ2xlbmFtZSkKKyAgICAgICAgcmV0dXJuIChwcm9qZWN0LCkgKyBvcy5wYXRoLnNw
bGl0ZXh0KHJlc3QpCisKKyAgICBkZWYgYmFzZV9uYW1lKHNlbGYpOgorICAgICAgICAiIiJGaWxl
IGJhc2UgbmFtZSAtIHRleHQgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLCBiZWZvcmUgdGhlIGZpbmFs
IHBlcmlvZC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuc3BsaXQoKVsxXQorCisgICAgZGVmIGV4
dGVuc2lvbihzZWxmKToKKyAgICAgICAgIiIiRmlsZSBleHRlbnNpb24gLSB0ZXh0IGZvbGxvd2lu
ZyB0aGUgZmluYWwgcGVyaW9kLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5zcGxpdCgpWzJdCisK
KyAgICBkZWYgbm9fZXh0ZW5zaW9uKHNlbGYpOgorICAgICAgICAiIiJGaWxlIGhhcyBubyBzb3Vy
Y2UgZmlsZSBleHRlbnNpb24uIiIiCisgICAgICAgIHJldHVybiAnLycuam9pbihzZWxmLnNwbGl0
KClbMDoyXSkKKworICAgIGRlZiBpc19zb3VyY2Uoc2VsZik6CisgICAgICAgICIiIkZpbGUgaGFz
IGEgc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5leHRlbnNp
b24oKVsxOl0gaW4gKCdjJywgJ2NjJywgJ2NwcCcsICdjeHgnKQorCisKK2RlZiBfc2hvdWxkX3By
aW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKKyAgICAiIiJSZXR1cm5zIHRydWUgaWZm
IGNvbmZpZGVuY2UgPj0gdmVyYm9zZSwgYW5kIGNhdGVnb3J5IHBhc3NlcyBmaWx0ZXIuIiIiCisg
ICAgIyBUaGVyZSBhcmUgdHdvIHdheXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmludCBhbiBl
cnJvciBtZXNzYWdlOgorICAgICMgdGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdoIGVub3Vn
aCwgb3IgdGhlIGZpbHRlcnMgZmlsdGVyIGl0IG91dC4KKyAgICBpZiBjb25maWRlbmNlIDwgX2Nw
cF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAg
IGlzX2ZpbHRlcmVkID0gRmFsc2UKKyAgICBmb3Igb25lX2ZpbHRlciBpbiBfZmlsdGVycygpOgor
ICAgICAgICBpZiBvbmVfZmlsdGVyLnN0YXJ0c3dpdGgoJy0nKToKKyAgICAgICAgICAgIGlmIGNh
dGVnb3J5LnN0YXJ0c3dpdGgob25lX2ZpbHRlclsxOl0pOgorICAgICAgICAgICAgICAgIGlzX2Zp
bHRlcmVkID0gVHJ1ZQorICAgICAgICBlbGlmIG9uZV9maWx0ZXIuc3RhcnRzd2l0aCgnKycpOgor
ICAgICAgICAgICAgaWYgY2F0ZWdvcnkuc3RhcnRzd2l0aChvbmVfZmlsdGVyWzE6XSk6CisgICAg
ICAgICAgICAgICAgaXNfZmlsdGVyZWQgPSBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgYXNzZXJ0IEZhbHNlICAjIHNob3VsZCBoYXZlIGJlZW4gY2hlY2tlZCBmb3IgaW4gc2V0X2Zp
bHRlci4KKyAgICBpZiBpc19maWx0ZXJlZDoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBy
ZXR1cm4gVHJ1ZQorCisKK2RlZiBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAiIiJMb2dzIHRoZSBmYWN0IHdlJ3ZlIGZvdW5k
IGEgbGludCBlcnJvci4KKworICAgIFdlIGxvZyB3aGVyZSB0aGUgZXJyb3Igd2FzIGZvdW5kLCBh
bmQgYWxzbyBvdXIgY29uZmlkZW5jZSBpbiB0aGUgZXJyb3IsCisgICAgdGhhdCBpcywgaG93IGNl
cnRhaW4gd2UgYXJlIHRoaXMgaXMgYSBsZWdpdGltYXRlIHN0eWxlIHJlZ3Jlc3Npb24sIGFuZAor
ICAgIG5vdCBhIG1pc2lkZW50aWZpY2F0aW9uIG9yIGEgdXNlIHRoYXQncyBzb21ldGltZXMganVz
dGlmaWVkLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgZmls
ZSBjb250YWluaW5nIHRoZSBlcnJvci4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9m
IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGVycm9yLgorICAgICAgY2F0ZWdvcnk6IEEgc3RyaW5n
IHVzZWQgdG8gZGVzY3JpYmUgdGhlICJjYXRlZ29yeSIgdGhpcyBidWcKKyAgICAgICAgICAgICAg
ICBmYWxscyB1bmRlcjogIndoaXRlc3BhY2UiLCBzYXksIG9yICJydW50aW1lIi4gIENhdGVnb3Jp
ZXMKKyAgICAgICAgICAgICAgICBtYXkgaGF2ZSBhIGhpZXJhcmNoeSBzZXBhcmF0ZWQgYnkgc2xh
c2hlczogIndoaXRlc3BhY2UvaW5kZW50Ii4KKyAgICAgIGNvbmZpZGVuY2U6IEEgbnVtYmVyIGZy
b20gMS01IHJlcHJlc2VudGluZyBhIGNvbmZpZGVuY2Ugc2NvcmUgZm9yCisgICAgICAgICAgICAg
ICAgICB0aGUgZXJyb3IsIHdpdGggNSBtZWFuaW5nIHRoYXQgd2UgYXJlIGNlcnRhaW4gb2YgdGhl
IHByb2JsZW0sCisgICAgICAgICAgICAgICAgICBhbmQgMSBtZWFuaW5nIHRoYXQgaXQgY291bGQg
YmUgYSBsZWdpdGltYXRlIGNvbnN0cnVjdC4KKyAgICAgIG1lc3NhZ2U6IFRoZSBlcnJvciBtZXNz
YWdlLgorICAgICIiIgorICAgICMgVGhlcmUgYXJlIHR3byB3YXlzIHdlIG1pZ2h0IGRlY2lkZSBu
b3QgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZToKKyAgICAjIHRoZSB2ZXJib3NpdHkgbGV2ZWwg
aXNuJ3QgaGlnaCBlbm91Z2gsIG9yIHRoZSBmaWx0ZXJzIGZpbHRlciBpdCBvdXQuCisgICAgaWYg
X3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5jZSk6CisgICAgICAgIF9jcHBf
c3R5bGVfc3RhdGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKKyAgICAgICAgaWYgX2NwcF9zdHls
ZV9zdGF0ZS5vdXRwdXRfZm9ybWF0ID09ICd2czcnOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53
cml0ZSgnJXMoJXMpOiAgJXMgIFslc10gWyVkXVxuJyAlICgKKyAgICAgICAgICAgICAgICBmaWxl
bmFtZSwgbGluZV9udW1iZXIsIG1lc3NhZ2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzOiVzOiAgJXMgIFslc10g
WyVkXVxuJyAlICgKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZV9udW1iZXIsIG1lc3Nh
Z2UsIGNhdGVnb3J5LCBjb25maWRlbmNlKSkKKworCisjIE1hdGNoZXMgc3RhbmRhcmQgQysrIGVz
Y2FwZSBlc2VxdWVuY2VzIHBlciAyLjEzLjIuMyBvZiB0aGUgQysrIHN0YW5kYXJkLgorX1JFX1BB
VFRFUk5fQ0xFQU5TRV9MSU5FX0VTQ0FQRVMgPSByZS5jb21waWxlKAorICAgIHInXFwoW2FiZm5y
dHY/IlxcXCddfFxkK3x4WzAtOWEtZkEtRl0rKScpCisjIE1hdGNoZXMgc3RyaW5ncy4gIEVzY2Fw
ZSBjb2RlcyBzaG91bGQgYWxyZWFkeSBiZSByZW1vdmVkIGJ5IEVTQ0FQRVMuCitfUkVfUEFUVEVS
Tl9DTEVBTlNFX0xJTkVfRE9VQkxFX1FVT1RFUyA9IHJlLmNvbXBpbGUociciW14iXSoiJykKKyMg
TWF0Y2hlcyBjaGFyYWN0ZXJzLiAgRXNjYXBlIGNvZGVzIHNob3VsZCBhbHJlYWR5IGJlIHJlbW92
ZWQgYnkgRVNDQVBFUy4KK19SRV9QQVRURVJOX0NMRUFOU0VfTElORV9TSU5HTEVfUVVPVEVTID0g
cmUuY29tcGlsZShyIicuJyIpCisjIE1hdGNoZXMgbXVsdGktbGluZSBDKysgY29tbWVudHMuCisj
IFRoaXMgUkUgaXMgYSBsaXR0bGUgYml0IG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBvbmUgbWlnaHQg
ZXhwZWN0LCBiZWNhdXNlIHdlCisjIGhhdmUgdG8gdGFrZSBjYXJlIG9mIHNwYWNlIHJlbW92YWxz
IHRvb2xzIHNvIHdlIGNhbiBoYW5kbGUgY29tbWVudHMgaW5zaWRlCisjIHN0YXRlbWVudHMgYmV0
dGVyLgorIyBUaGUgY3VycmVudCBydWxlIGlzOiBXZSBvbmx5IGNsZWFyIHNwYWNlcyBmcm9tIGJv
dGggc2lkZXMgd2hlbiB3ZSdyZSBhdCB0aGUKKyMgZW5kIG9mIHRoZSBsaW5lLiBPdGhlcndpc2Us
IHdlIHRyeSB0byByZW1vdmUgc3BhY2VzIGZyb20gdGhlIHJpZ2h0IHNpZGUsCisjIGlmIHRoaXMg
ZG9lc24ndCB3b3JrIHdlIHRyeSBvbiBsZWZ0IHNpZGUgYnV0IG9ubHkgaWYgdGhlcmUncyBhIG5v
bi1jaGFyYWN0ZXIKKyMgb24gdGhlIHJpZ2h0LgorX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0Nf
Q09NTUVOVFMgPSByZS5jb21waWxlKAorICAgIHIiIiIoXHMqL1wqLipcKi9ccyokfAorICAgICAg
ICAgICAgL1wqLipcKi9ccyt8CisgICAgICAgICBccysvXCouKlwqLyg/PVxXKXwKKyAgICAgICAg
ICAgIC9cKi4qXCovKSIiIiwgcmUuVkVSQk9TRSkKKworCitkZWYgaXNfY3BwX3N0cmluZyhsaW5l
KToKKyAgICAiIiJEb2VzIGxpbmUgdGVybWluYXRlIHNvLCB0aGF0IHRoZSBuZXh0IHN5bWJvbCBp
cyBpbiBzdHJpbmcgY29uc3RhbnQuCisKKyAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNvbnNp
ZGVyIHNpbmdsZS1saW5lIG5vciBtdWx0aS1saW5lIGNvbW1lbnRzLgorCisgICAgQXJnczoKKyAg
ICAgIGxpbmU6IGlzIGEgcGFydGlhbCBsaW5lIG9mIGNvZGUgc3RhcnRpbmcgZnJvbSB0aGUgMC4u
bi4KKworICAgIFJldHVybnM6CisgICAgICBUcnVlLCBpZiBuZXh0IGNoYXJhY3RlciBhcHBlbmRl
ZCB0byAnbGluZScgaXMgaW5zaWRlIGEKKyAgICAgIHN0cmluZyBjb25zdGFudC4KKyAgICAiIiIK
KworICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UocidcXCcsICdYWCcpICAjIGFmdGVyIHRoaXMsIFxc
IiBkb2VzIG5vdCBtYXRjaCB0byBcIgorICAgIHJldHVybiAoKGxpbmUuY291bnQoJyInKSAtIGxp
bmUuY291bnQocidcIicpIC0gbGluZS5jb3VudCgiJ1wiJyIpKSAmIDEpID09IDEKKworCitkZWYg
ZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChsaW5lcywgbGluZV9pbmRleCk6Cisg
ICAgIiIiRmluZCB0aGUgYmVnaW5uaW5nIG1hcmtlciBmb3IgYSBtdWx0aWxpbmUgY29tbWVudC4i
IiIKKyAgICB3aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToKKyAgICAgICAgaWYgbGluZXNb
bGluZV9pbmRleF0uc3RyaXAoKS5zdGFydHN3aXRoKCcvKicpOgorICAgICAgICAgICAgIyBPbmx5
IHJldHVybiB0aGlzIG1hcmtlciBpZiB0aGUgY29tbWVudCBnb2VzIGJleW9uZCB0aGlzIGxpbmUK
KyAgICAgICAgICAgIGlmIGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuZmluZCgnKi8nLCAyKSA8
IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVfaW5kZXgKKyAgICAgICAgbGluZV9pbmRl
eCArPSAxCisgICAgcmV0dXJuIGxlbihsaW5lcykKKworCitkZWYgZmluZF9uZXh0X211bHRpX2xp
bmVfY29tbWVudF9lbmQobGluZXMsIGxpbmVfaW5kZXgpOgorICAgICIiIldlIGFyZSBpbnNpZGUg
YSBjb21tZW50LCBmaW5kIHRoZSBlbmQgbWFya2VyLiIiIgorICAgIHdoaWxlIGxpbmVfaW5kZXgg
PCBsZW4obGluZXMpOgorICAgICAgICBpZiBsaW5lc1tsaW5lX2luZGV4XS5zdHJpcCgpLmVuZHN3
aXRoKCcqLycpOgorICAgICAgICAgICAgcmV0dXJuIGxpbmVfaW5kZXgKKyAgICAgICAgbGluZV9p
bmRleCArPSAxCisgICAgcmV0dXJuIGxlbihsaW5lcykKKworCitkZWYgcmVtb3ZlX211bHRpX2xp
bmVfY29tbWVudHNfZnJvbV9yYW5nZShsaW5lcywgYmVnaW4sIGVuZCk6CisgICAgIiIiQ2xlYXJz
IGEgcmFuZ2Ugb2YgbGluZXMgZm9yIG11bHRpLWxpbmUgY29tbWVudHMuIiIiCisgICAgIyBIYXZp
bmcgLy8gZHVtbXkgY29tbWVudHMgbWFrZXMgdGhlIGxpbmVzIG5vbi1lbXB0eSwgc28gd2Ugd2ls
bCBub3QgZ2V0CisgICAgIyB1bm5lY2Vzc2FyeSBibGFuayBsaW5lIHdhcm5pbmdzIGxhdGVyIGlu
IHRoZSBjb2RlLgorICAgIGZvciBpIGluIHJhbmdlKGJlZ2luLCBlbmQpOgorICAgICAgICBsaW5l
c1tpXSA9ICcvLyBkdW1teScKKworCitkZWYgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmls
ZW5hbWUsIGxpbmVzLCBlcnJvcik6CisgICAgIiIiUmVtb3ZlcyBtdWx0aWxpbmUgKGMtc3R5bGUp
IGNvbW1lbnRzIGZyb20gbGluZXMuIiIiCisgICAgbGluZV9pbmRleCA9IDAKKyAgICB3aGlsZSBs
aW5lX2luZGV4IDwgbGVuKGxpbmVzKToKKyAgICAgICAgbGluZV9pbmRleF9iZWdpbiA9IGZpbmRf
bmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIGxpbmVfaW5kZXgpCisgICAgICAg
IGlmIGxpbmVfaW5kZXhfYmVnaW4gPj0gbGVuKGxpbmVzKToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICBsaW5lX2luZGV4X2VuZCA9IGZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5k
KGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luKQorICAgICAgICBpZiBsaW5lX2luZGV4X2VuZCA+PSBs
ZW4obGluZXMpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfaW5kZXhfYmVnaW4g
KyAxLCAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQnLCA1LAorICAgICAgICAgICAgICAg
ICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnKQorICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2Uo
bGluZXMsIGxpbmVfaW5kZXhfYmVnaW4sIGxpbmVfaW5kZXhfZW5kICsgMSkKKyAgICAgICAgbGlu
ZV9pbmRleCA9IGxpbmVfaW5kZXhfZW5kICsgMQorCisKK2RlZiBjbGVhbnNlX2NvbW1lbnRzKGxp
bmUpOgorICAgICIiIlJlbW92ZXMgLy8tY29tbWVudHMgYW5kIHNpbmdsZS1saW5lIEMtc3R5bGUg
LyogKi8gY29tbWVudHMuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBsaW5lIG9mIEMrKyBz
b3VyY2UuCisKKyAgICBSZXR1cm5zOgorICAgICAgVGhlIGxpbmUgd2l0aCBzaW5nbGUtbGluZSBj
b21tZW50cyByZW1vdmVkLgorICAgICIiIgorICAgIGNvbW1lbnRfcG9zaXRpb24gPSBsaW5lLmZp
bmQoJy8vJykKKyAgICBpZiBjb21tZW50X3Bvc2l0aW9uICE9IC0xIGFuZCBub3QgaXNfY3BwX3N0
cmluZyhsaW5lWzpjb21tZW50X3Bvc2l0aW9uXSk6CisgICAgICAgIGxpbmUgPSBsaW5lWzpjb21t
ZW50X3Bvc2l0aW9uXQorICAgICMgZ2V0IHJpZCBvZiAvKiAuLi4gKi8KKyAgICByZXR1cm4gX1JF
X1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0NfQ09NTUVOVFMuc3ViKCcnLCBsaW5lKQorCisKK2NsYXNz
IENsZWFuc2VkTGluZXMob2JqZWN0KToKKyAgICAiIiJIb2xkcyAzIGNvcGllcyBvZiBhbGwgbGlu
ZXMgd2l0aCBkaWZmZXJlbnQgcHJlcHJvY2Vzc2luZyBhcHBsaWVkIHRvIHRoZW0uCisKKyAgICAx
KSBlbGlkZWQgbWVtYmVyIGNvbnRhaW5zIGxpbmVzIHdpdGhvdXQgc3RyaW5ncyBhbmQgY29tbWVu
dHMsCisgICAgMikgbGluZXMgbWVtYmVyIGNvbnRhaW5zIGxpbmVzIHdpdGhvdXQgY29tbWVudHMs
IGFuZAorICAgIDMpIHJhdyBtZW1iZXIgY29udGFpbnMgYWxsIHRoZSBsaW5lcyB3aXRob3V0IHBy
b2Nlc3NpbmcuCisgICAgQWxsIHRoZXNlIHRocmVlIG1lbWJlcnMgYXJlIG9mIDx0eXBlICdsaXN0
Jz4sIGFuZCBvZiB0aGUgc2FtZSBsZW5ndGguCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgbGluZXMpOgorICAgICAgICBzZWxmLmVsaWRlZCA9IFtdCisgICAgICAgIHNlbGYubGlu
ZXMgPSBbXQorICAgICAgICBzZWxmLnJhd19saW5lcyA9IGxpbmVzCisgICAgICAgIHNlbGYuX251
bV9saW5lcyA9IGxlbihsaW5lcykKKyAgICAgICAgZm9yIGxpbmVfbnVtYmVyIGluIHJhbmdlKGxl
bihsaW5lcykpOgorICAgICAgICAgICAgc2VsZi5saW5lcy5hcHBlbmQoY2xlYW5zZV9jb21tZW50
cyhsaW5lc1tsaW5lX251bWJlcl0pKQorICAgICAgICAgICAgZWxpZGVkID0gc2VsZi5jb2xsYXBz
ZV9zdHJpbmdzKGxpbmVzW2xpbmVfbnVtYmVyXSkKKyAgICAgICAgICAgIHNlbGYuZWxpZGVkLmFw
cGVuZChjbGVhbnNlX2NvbW1lbnRzKGVsaWRlZCkpCisKKyAgICBkZWYgbnVtX2xpbmVzKHNlbGYp
OgorICAgICAgICAiIiJSZXR1cm5zIHRoZSBudW1iZXIgb2YgbGluZXMgcmVwcmVzZW50ZWQuIiIi
CisgICAgICAgIHJldHVybiBzZWxmLl9udW1fbGluZXMKKworICAgIEBzdGF0aWNtZXRob2QKKyAg
ICBkZWYgY29sbGFwc2Vfc3RyaW5ncyhlbGlkZWQpOgorICAgICAgICAiIiJDb2xsYXBzZXMgc3Ry
aW5ncyBhbmQgY2hhcnMgb24gYSBsaW5lIHRvIHNpbXBsZSAiIiBvciAnJyBibG9ja3MuCisKKyAg
ICAgICAgV2Ugbml4IHN0cmluZ3MgZmlyc3Qgc28gd2UncmUgbm90IGZvb2xlZCBieSB0ZXh0IGxp
a2UgJyJodHRwOi8vIicKKworICAgICAgICBBcmdzOgorICAgICAgICAgIGVsaWRlZDogVGhlIGxp
bmUgYmVpbmcgcHJvY2Vzc2VkLgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgVGhlIGxp
bmUgd2l0aCBjb2xsYXBzZWQgc3RyaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBf
UkVfUEFUVEVSTl9JTkNMVURFLm1hdGNoKGVsaWRlZCk6CisgICAgICAgICAgICAjIFJlbW92ZSBl
c2NhcGVkIGNoYXJhY3RlcnMgZmlyc3QgdG8gbWFrZSBxdW90ZS9zaW5nbGUgcXVvdGUgY29sbGFw
c2luZworICAgICAgICAgICAgIyBiYXNpYy4gIFRoaW5ncyB0aGF0IGxvb2sgbGlrZSBlc2NhcGVk
IGNoYXJhY3RlcnMgc2hvdWxkbid0IG9jY3VyCisgICAgICAgICAgICAjIG91dHNpZGUgb2Ygc3Ry
aW5ncyBhbmQgY2hhcnMuCisgICAgICAgICAgICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNF
X0xJTkVfRVNDQVBFUy5zdWIoJycsIGVsaWRlZCkKKyAgICAgICAgICAgIGVsaWRlZCA9IF9SRV9Q
QVRURVJOX0NMRUFOU0VfTElORV9TSU5HTEVfUVVPVEVTLnN1YigiJyciLCBlbGlkZWQpCisgICAg
ICAgICAgICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfRE9VQkxFX1FVT1RFUy5z
dWIoJyIiJywgZWxpZGVkKQorICAgICAgICByZXR1cm4gZWxpZGVkCisKKworZGVmIGNsb3NlX2V4
cHJlc3Npb24oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBwb3MpOgorICAgICIiIklmIGlucHV0
IHBvaW50cyB0byAoIG9yIHsgb3IgWywgZmluZHMgdGhlIHBvc2l0aW9uIHRoYXQgY2xvc2VzIGl0
LgorCisgICAgSWYgbGluZXNbbGluZV9udW1iZXJdW3Bvc10gcG9pbnRzIHRvIGEgJygnIG9yICd7
JyBvciAnWycsIGZpbmRzIHRoZSB0aGUKKyAgICBsaW5lX251bWJlci9wb3MgdGhhdCBjb3JyZXNw
b25kIHRvIHRoZSBjbG9zaW5nIG9mIHRoZSBleHByZXNzaW9uLgorCisgICAgQXJnczoKKyAgICAg
IGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmls
ZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgor
ICAgICAgcG9zOiBBIHBvc2l0aW9uIG9uIHRoZSBsaW5lLgorCisgICAgUmV0dXJuczoKKyAgICAg
IEEgdHVwbGUgKGxpbmUsIGxpbmVfbnVtYmVyLCBwb3MpIHBvaW50ZXIgKnBhc3QqIHRoZSBjbG9z
aW5nIGJyYWNlLCBvcgorICAgICAgKGxpbmUsIGxlbihsaW5lcyksIC0xKSBpZiB3ZSBuZXZlciBm
aW5kIGEgY2xvc2UuICBOb3RlIHdlIGlnbm9yZQorICAgICAgc3RyaW5ncyBhbmQgY29tbWVudHMg
d2hlbiBtYXRjaGluZzsgYW5kIHRoZSBsaW5lIHdlIHJldHVybiBpcyB0aGUKKyAgICAgICdjbGVh
bnNlZCcgbGluZSBhdCBsaW5lX251bWJlci4KKyAgICAiIiIKKworICAgIGxpbmUgPSBjbGVhbl9s
aW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCisgICAgc3RhcnRfY2hhcmFjdGVyID0gbGluZVtwb3Nd
CisgICAgaWYgc3RhcnRfY2hhcmFjdGVyIG5vdCBpbiAnKHtbJzoKKyAgICAgICAgcmV0dXJuIChs
aW5lLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSwgLTEpCisgICAgaWYgc3RhcnRfY2hhcmFjdGVy
ID09ICcoJzoKKyAgICAgICAgZW5kX2NoYXJhY3RlciA9ICcpJworICAgIGlmIHN0YXJ0X2NoYXJh
Y3RlciA9PSAnWyc6CisgICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAnXScKKyAgICBpZiBzdGFydF9j
aGFyYWN0ZXIgPT0gJ3snOgorICAgICAgICBlbmRfY2hhcmFjdGVyID0gJ30nCisKKyAgICBudW1f
b3BlbiA9IGxpbmUuY291bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291bnQoZW5kX2NoYXJh
Y3RlcikKKyAgICB3aGlsZSBsaW5lX251bWJlciA8IGNsZWFuX2xpbmVzLm51bV9saW5lcygpIGFu
ZCBudW1fb3BlbiA+IDA6CisgICAgICAgIGxpbmVfbnVtYmVyICs9IDEKKyAgICAgICAgbGluZSA9
IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKyAgICAgICAgbnVtX29wZW4gKz0gbGlu
ZS5jb3VudChzdGFydF9jaGFyYWN0ZXIpIC0gbGluZS5jb3VudChlbmRfY2hhcmFjdGVyKQorICAg
ICMgT0ssIG5vdyBmaW5kIHRoZSBlbmRfY2hhcmFjdGVyIHRoYXQgYWN0dWFsbHkgZ290IHVzIGJh
Y2sgdG8gZXZlbgorICAgIGVuZHBvcyA9IGxlbihsaW5lKQorICAgIHdoaWxlIG51bV9vcGVuID49
IDA6CisgICAgICAgIGVuZHBvcyA9IGxpbmUucmZpbmQoJyknLCAwLCBlbmRwb3MpCisgICAgICAg
IG51bV9vcGVuIC09IDEgICAgICAgICAgICAgICAgICMgY2hvcHBlZCBvZmYgYW5vdGhlciApCisg
ICAgcmV0dXJuIChsaW5lLCBsaW5lX251bWJlciwgZW5kcG9zICsgMSkKKworCitkZWYgY2hlY2tf
Zm9yX2NvcHlyaWdodChmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKKyAgICAiIiJMb2dzIGFuIGVy
cm9yIGlmIG5vIENvcHlyaWdodCBtZXNzYWdlIGFwcGVhcnMgYXQgdGhlIHRvcCBvZiB0aGUgZmls
ZS4iIiIKKworICAgICMgV2UnbGwgc2F5IGl0IHNob3VsZCBvY2N1ciBieSBsaW5lIDEwLiBEb24n
dCBmb3JnZXQgdGhlcmUncyBhCisgICAgIyBkdW1teSBsaW5lIGF0IHRoZSBmcm9udC4KKyAgICBm
b3IgbGluZSBpbiB4cmFuZ2UoMSwgbWluKGxlbihsaW5lcyksIDExKSk6CisgICAgICAgIGlmIHJl
LnNlYXJjaChyJ0NvcHlyaWdodCcsIGxpbmVzW2xpbmVdLCByZS5JKToKKyAgICAgICAgICAgIGJy
ZWFrCisgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICMgbWVhbnMgbm8gY29weXJpZ2h0
IGxpbmUgd2FzIGZvdW5kCisgICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnbGVnYWwvY29weXJp
Z2h0JywgNSwKKyAgICAgICAgICAgICAgJ05vIGNvcHlyaWdodCBtZXNzYWdlIGZvdW5kLiAgJwor
ICAgICAgICAgICAgICAnWW91IHNob3VsZCBoYXZlIGEgbGluZTogIkNvcHlyaWdodCBbeWVhcl0g
PENvcHlyaWdodCBPd25lcj4iJykKKworCitkZWYgZ2V0X2hlYWRlcl9ndWFyZF9jcHBfdmFyaWFi
bGUoZmlsZW5hbWUpOgorICAgICIiIlJldHVybnMgdGhlIENQUCB2YXJpYWJsZSB0aGF0IHNob3Vs
ZCBiZSB1c2VkIGFzIGEgaGVhZGVyIGd1YXJkLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1l
OiBUaGUgbmFtZSBvZiBhIEMrKyBoZWFkZXIgZmlsZS4KKworICAgIFJldHVybnM6CisgICAgICBU
aGUgQ1BQIHZhcmlhYmxlIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgYSBoZWFkZXIgZ3VhcmQgaW4g
dGhlCisgICAgICBuYW1lZCBmaWxlLgorCisgICAgIiIiCisKKyAgICBmaWxlaW5mbyA9IEZpbGVJ
bmZvKGZpbGVuYW1lKQorICAgIHJldHVybiByZS5zdWIocidbLS4vXHNdJywgJ18nLCBmaWxlaW5m
by5yZXBvc2l0b3J5X25hbWUoKSkudXBwZXIoKSArICdfJworCisKK2RlZiBjaGVja19mb3JfaGVh
ZGVyX2d1YXJkKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgorICAgICIiIkNoZWNrcyB0aGF0IHRo
ZSBmaWxlIGNvbnRhaW5zIGEgaGVhZGVyIGd1YXJkLgorCisgICAgTG9ncyBhbiBlcnJvciBpZiBu
byAjaWZuZGVmIGhlYWRlciBndWFyZCBpcyBwcmVzZW50LiAgRm9yIG90aGVyCisgICAgaGVhZGVy
cywgY2hlY2tzIHRoYXQgdGhlIGZ1bGwgcGF0aG5hbWUgaXMgdXNlZC4KKworICAgIEFyZ3M6Cisg
ICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIEMrKyBoZWFkZXIgZmlsZS4KKyAgICAgIGxp
bmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGluZyBhIGxpbmUgb2YgdGhl
IGZpbGUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgorICAgICIiIgorCisgICAgY3BwdmFyID0gZ2V0X2hlYWRlcl9ndWFyZF9jcHBfdmFy
aWFibGUoZmlsZW5hbWUpCisKKyAgICBpZm5kZWYgPSBOb25lCisgICAgaWZuZGVmX2xpbmVfbnVt
YmVyID0gMAorICAgIGRlZmluZSA9IE5vbmUKKyAgICBlbmRpZiA9IE5vbmUKKyAgICBlbmRpZl9s
aW5lX251bWJlciA9IDAKKyAgICBmb3IgbGluZV9udW1iZXIsIGxpbmUgaW4gZW51bWVyYXRlKGxp
bmVzKToKKyAgICAgICAgbGluZV9zcGxpdCA9IGxpbmUuc3BsaXQoKQorICAgICAgICBpZiBsZW4o
bGluZV9zcGxpdCkgPj0gMjoKKyAgICAgICAgICAgICMgZmluZCB0aGUgZmlyc3Qgb2NjdXJyZW5j
ZSBvZiAjaWZuZGVmIGFuZCAjZGVmaW5lLCBzYXZlIGFyZworICAgICAgICAgICAgaWYgbm90IGlm
bmRlZiBhbmQgbGluZV9zcGxpdFswXSA9PSAnI2lmbmRlZic6CisgICAgICAgICAgICAgICAgIyBz
ZXQgaWZuZGVmIHRvIHRoZSBoZWFkZXIgZ3VhcmQgcHJlc2VudGVkIG9uIHRoZSAjaWZuZGVmIGxp
bmUuCisgICAgICAgICAgICAgICAgaWZuZGVmID0gbGluZV9zcGxpdFsxXQorICAgICAgICAgICAg
ICAgIGlmbmRlZl9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisgICAgICAgICAgICBpZiBub3Qg
ZGVmaW5lIGFuZCBsaW5lX3NwbGl0WzBdID09ICcjZGVmaW5lJzoKKyAgICAgICAgICAgICAgICBk
ZWZpbmUgPSBsaW5lX3NwbGl0WzFdCisgICAgICAgICMgZmluZCB0aGUgbGFzdCBvY2N1cnJlbmNl
IG9mICNlbmRpZiwgc2F2ZSBlbnRpcmUgbGluZQorICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo
JyNlbmRpZicpOgorICAgICAgICAgICAgZW5kaWYgPSBsaW5lCisgICAgICAgICAgICBlbmRpZl9s
aW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisKKyAgICBpZiBub3QgaWZuZGVmIG9yIG5vdCBkZWZp
bmUgb3IgaWZuZGVmICE9IGRlZmluZToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIDAsICdidWls
ZC9oZWFkZXJfZ3VhcmQnLCA1LAorICAgICAgICAgICAgICAnTm8gI2lmbmRlZiBoZWFkZXIgZ3Vh
cmQgZm91bmQsIHN1Z2dlc3RlZCBDUFAgdmFyaWFibGUgaXM6ICVzJyAlCisgICAgICAgICAgICAg
IGNwcHZhcikKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIFRoZSBndWFyZCBzaG91bGQgYmUgUEFU
SF9GSUxFX0hfLCBidXQgd2UgYWxzbyBhbGxvdyBQQVRIX0ZJTEVfSF9fCisgICAgIyBmb3IgYmFj
a3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgICBpZiBpZm5kZWYgIT0gY3BwdmFyOgorICAgICAgICBl
cnJvcl9sZXZlbCA9IDAKKyAgICAgICAgaWYgaWZuZGVmICE9IGNwcHZhciArICdfJzoKKyAgICAg
ICAgICAgIGVycm9yX2xldmVsID0gNQorCisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBpZm5kZWZf
bGluZV9udW1iZXIsICdidWlsZC9oZWFkZXJfZ3VhcmQnLCBlcnJvcl9sZXZlbCwKKyAgICAgICAg
ICAgICAgJyNpZm5kZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTog
JXMnICUgY3BwdmFyKQorCisgICAgaWYgZW5kaWYgIT0gKCcjZW5kaWYgIC8vICVzJyAlIGNwcHZh
cik6CisgICAgICAgIGVycm9yX2xldmVsID0gMAorICAgICAgICBpZiBlbmRpZiAhPSAoJyNlbmRp
ZiAgLy8gJXMnICUgKGNwcHZhciArICdfJykpOgorICAgICAgICAgICAgZXJyb3JfbGV2ZWwgPSA1
CisKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGVuZGlmX2xpbmVfbnVtYmVyLCAnYnVpbGQvaGVh
ZGVyX2d1YXJkJywgZXJyb3JfbGV2ZWwsCisgICAgICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91
bGQgYmUgIiNlbmRpZiAgLy8gJXMiJyAlIGNwcHZhcikKKworCitkZWYgY2hlY2tfZm9yX3VuaWNv
ZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVycyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKKyAgICAi
IiJMb2dzIGFuIGVycm9yIGZvciBlYWNoIGxpbmUgY29udGFpbmluZyBVbmljb2RlIHJlcGxhY2Vt
ZW50IGNoYXJhY3RlcnMuCisKKyAgICBUaGVzZSBpbmRpY2F0ZSB0aGF0IGVpdGhlciB0aGUgZmls
ZSBjb250YWluZWQgaW52YWxpZCBVVEYtOCAobGlrZWx5KQorICAgIG9yIFVuaWNvZGUgcmVwbGFj
ZW1lbnQgY2hhcmFjdGVycyAod2hpY2ggaXQgc2hvdWxkbid0KS4gIE5vdGUgdGhhdAorICAgIGl0
J3MgcG9zc2libGUgZm9yIHRoaXMgdG8gdGhyb3cgb2ZmIGxpbmUgbnVtYmVyaW5nIGlmIHRoZSBp
bnZhbGlkCisgICAgVVRGLTggb2NjdXJyZWQgYWRqYWNlbnQgdG8gYSBuZXdsaW5lLgorCisgICAg
QXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAg
ICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBv
ZiB0aGUgZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBl
cnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5lIGluIGVudW1l
cmF0ZShsaW5lcyk6CisgICAgICAgIGlmIHUnXHVmZmZkJyBpbiBsaW5lOgorICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvdXRmOCcsIDUsCisgICAg
ICAgICAgICAgICAgICAnTGluZSBjb250YWlucyBpbnZhbGlkIFVURi04IChvciBVbmljb2RlIHJl
cGxhY2VtZW50IGNoYXJhY3RlcikuJykKKworCitkZWYgY2hlY2tfZm9yX25ld19saW5lX2F0X2Vv
ZihmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKKyAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHRoZXJl
IGlzIG5vIG5ld2xpbmUgY2hhciBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLgorCisgICAgQXJnczoK
KyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgbGlu
ZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUg
ZmlsZS4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMg
Zm91bmQuCisgICAgIiIiCisKKyAgICAjIFRoZSBhcnJheSBsaW5lcygpIHdhcyBjcmVhdGVkIGJ5
IGFkZGluZyB0d28gbmV3bGluZXMgdG8gdGhlCisgICAgIyBvcmlnaW5hbCBmaWxlIChnbyBmaWd1
cmUpLCB0aGVuIHNwbGl0dGluZyBvbiBcbi4KKyAgICAjIFRvIHZlcmlmeSB0aGF0IHRoZSBmaWxl
IGVuZHMgaW4gXG4sIHdlIGp1c3QgaGF2ZSB0byBtYWtlIHN1cmUgdGhlCisgICAgIyBsYXN0LWJ1
dC10d28gZWxlbWVudCBvZiBsaW5lcygpIGV4aXN0cyBhbmQgaXMgZW1wdHkuCisgICAgaWYgbGVu
KGxpbmVzKSA8IDMgb3IgbGluZXNbLTJdOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGVuKGxp
bmVzKSAtIDIsICd3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lJywgNSwKKyAgICAgICAgICAgICAg
J0NvdWxkIG5vdCBmaW5kIGEgbmV3bGluZSBjaGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZmls
ZS4nKQorCisKK2RlZiBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJpbmdzKGZp
bGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJMb2dzIGFu
IGVycm9yIGlmIHdlIHNlZSAvKiAuLi4gKi8gb3IgIi4uLiIgdGhhdCBleHRlbmQgcGFzdCBvbmUg
bGluZS4KKworICAgIC8qIC4uLiAqLyBjb21tZW50cyBhcmUgbGVnaXQgaW5zaWRlIG1hY3Jvcywg
Zm9yIG9uZSBsaW5lLgorICAgIE90aGVyd2lzZSwgd2UgcHJlZmVyIC8vIGNvbW1lbnRzLCBzbyBp
dCdzIG9rIHRvIHdhcm4gYWJvdXQgdGhlCisgICAgb3RoZXIuICBMaWtld2lzZSwgaXQncyBvayBm
b3Igc3RyaW5ncyB0byBleHRlbmQgYWNyb3NzIG11bHRpcGxlCisgICAgbGluZXMsIGFzIGxvbmcg
YXMgYSBsaW5lIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXIgKGJhY2tzbGFzaCkKKyAgICB0ZXJtaW5h
dGVzIGVhY2ggbGluZS4gQWx0aG91Z2ggbm90IGN1cnJlbnRseSBwcm9oaWJpdGVkIGJ5IHRoZSBD
KysKKyAgICBzdHlsZSBndWlkZSwgaXQncyB1Z2x5IGFuZCB1bm5lY2Vzc2FyeS4gV2UgZG9uJ3Qg
ZG8gd2VsbCB3aXRoIGVpdGhlcgorICAgIGluIHRoaXMgbGludCBwcm9ncmFtLCBzbyB3ZSB3YXJu
IGFib3V0IGJvdGguCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRo
ZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3Rh
bmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBv
ZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3
aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVs
aWRlZFtsaW5lX251bWJlcl0KKworICAgICMgUmVtb3ZlIGFsbCBcXCAoZXNjYXBlZCBiYWNrc2xh
c2hlcykgZnJvbSB0aGUgbGluZS4gVGhleSBhcmUgT0ssIGFuZCB0aGUKKyAgICAjIHNlY29uZCAo
ZXNjYXBlZCkgc2xhc2ggbWF5IHRyaWdnZXIgbGF0ZXIgXCIgZGV0ZWN0aW9uIGVycm9uZW91c2x5
LgorICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ1xcXFwnLCAnJykKKworICAgIGlmIGxpbmUuY291
bnQoJy8qJykgPiBsaW5lLmNvdW50KCcqLycpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsICdyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudCcsIDUsCisgICAgICAgICAg
ICAgICdDb21wbGV4IG11bHRpLWxpbmUgLyouLi4qLy1zdHlsZSBjb21tZW50IGZvdW5kLiAnCisg
ICAgICAgICAgICAgICdMaW50IG1heSBnaXZlIGJvZ3VzIHdhcm5pbmdzLiAgJworICAgICAgICAg
ICAgICAnQ29uc2lkZXIgcmVwbGFjaW5nIHRoZXNlIHdpdGggLy8tc3R5bGUgY29tbWVudHMsICcK
KyAgICAgICAgICAgICAgJ3dpdGggI2lmIDAuLi4jZW5kaWYsICcKKyAgICAgICAgICAgICAgJ29y
IHdpdGggbW9yZSBjbGVhcmx5IHN0cnVjdHVyZWQgbXVsdGktbGluZSBjb21tZW50cy4nKQorCisg
ICAgaWYgKGxpbmUuY291bnQoJyInKSAtIGxpbmUuY291bnQoJ1xcIicpKSAlIDI6CisgICAgICAg
IGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9zdHJp
bmcnLCA1LAorICAgICAgICAgICAgICAnTXVsdGktbGluZSBzdHJpbmcgKCIuLi4iKSBmb3VuZC4g
IFRoaXMgbGludCBzY3JpcHQgZG9lc25cJ3QgJworICAgICAgICAgICAgICAnZG8gd2VsbCB3aXRo
IHN1Y2ggc3RyaW5ncywgYW5kIG1heSBnaXZlIGJvZ3VzIHdhcm5pbmdzLiAgVGhleVwncmUgJwor
ICAgICAgICAgICAgICAndWdseSBhbmQgdW5uZWNlc3NhcnksIGFuZCB5b3Ugc2hvdWxkIHVzZSBj
b25jYXRlbmF0aW9uIGluc3RlYWQiLicpCisKKworX1RIUkVBRElOR19MSVNUID0gKAorICAgICgn
YXNjdGltZSgnLCAnYXNjdGltZV9yKCcpLAorICAgICgnY3RpbWUoJywgJ2N0aW1lX3IoJyksCisg
ICAgKCdnZXRncmdpZCgnLCAnZ2V0Z3JnaWRfcignKSwKKyAgICAoJ2dldGdybmFtKCcsICdnZXRn
cm5hbV9yKCcpLAorICAgICgnZ2V0bG9naW4oJywgJ2dldGxvZ2luX3IoJyksCisgICAgKCdnZXRw
d25hbSgnLCAnZ2V0cHduYW1fcignKSwKKyAgICAoJ2dldHB3dWlkKCcsICdnZXRwd3VpZF9yKCcp
LAorICAgICgnZ210aW1lKCcsICdnbXRpbWVfcignKSwKKyAgICAoJ2xvY2FsdGltZSgnLCAnbG9j
YWx0aW1lX3IoJyksCisgICAgKCdyYW5kKCcsICdyYW5kX3IoJyksCisgICAgKCdyZWFkZGlyKCcs
ICdyZWFkZGlyX3IoJyksCisgICAgKCdzdHJ0b2soJywgJ3N0cnRva19yKCcpLAorICAgICgndHR5
bmFtZSgnLCAndHR5bmFtZV9yKCcpLAorICAgICkKKworCitkZWYgY2hlY2tfcG9zaXhfdGhyZWFk
aW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJD
aGVja3MgZm9yIGNhbGxzIHRvIHRocmVhZC11bnNhZmUgZnVuY3Rpb25zLgorCisgICAgTXVjaCBj
b2RlIGhhcyBiZWVuIG9yaWdpbmFsbHkgd3JpdHRlbiB3aXRob3V0IGNvbnNpZGVyYXRpb24gb2YK
KyAgICBtdWx0aS10aHJlYWRpbmcuIEFsc28sIGVuZ2luZWVycyBhcmUgcmVseWluZyBvbiB0aGVp
ciBvbGQgZXhwZXJpZW5jZTsKKyAgICB0aGV5IGhhdmUgbGVhcm5lZCBwb3NpeCBiZWZvcmUgdGhy
ZWFkaW5nIGV4dGVuc2lvbnMgd2VyZSBhZGRlZC4gVGhlc2UKKyAgICB0ZXN0cyBndWlkZSB0aGUg
ZW5naW5lZXJzIHRvIHVzZSB0aHJlYWQtc2FmZSBmdW5jdGlvbnMgKHdoZW4gdXNpbmcKKyAgICBw
b3NpeCBkaXJlY3RseSkuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGlu
c3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisgICAgbGluZSA9IGNsZWFuX2xpbmVz
LmVsaWRlZFtsaW5lX251bWJlcl0KKyAgICBmb3Igc2luZ2xlX3RocmVhZF9mdW5jdGlvbiwgbXVs
dGl0aHJlYWRfc2FmZV9mdW5jdGlvbiBpbiBfVEhSRUFESU5HX0xJU1Q6CisgICAgICAgIGluZGV4
ID0gbGluZS5maW5kKHNpbmdsZV90aHJlYWRfZnVuY3Rpb24pCisgICAgICAgICMgQ29tcGFyaXNv
bnMgbWFkZSBleHBsaWNpdCBmb3IgY2xhcml0eSAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAz
CisgICAgICAgIGlmIGluZGV4ID49IDAgYW5kIChpbmRleCA9PSAwIG9yIChub3QgbGluZVtpbmRl
eCAtIDFdLmlzYWxudW0oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYW5kIGxpbmVbaW5kZXggLSAxXSBub3QgaW4gKCdfJywgJy4nLCAnPicpKSk6CisgICAgICAg
ICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL3RocmVhZHNhZmVfZm4n
LCAyLAorICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nICcgKyBtdWx0aXRocmVhZF9z
YWZlX2Z1bmN0aW9uICsKKyAgICAgICAgICAgICAgICAgICcuLi4pIGluc3RlYWQgb2YgJyArIHNp
bmdsZV90aHJlYWRfZnVuY3Rpb24gKworICAgICAgICAgICAgICAgICAgJy4uLikgZm9yIGltcHJv
dmVkIHRocmVhZCBzYWZldHkuJykKKworCisjIE1hdGNoZXMgaW52YWxpZCBpbmNyZW1lbnQ6ICpj
b3VudCsrLCB3aGljaCBtb3ZlcyBwb2ludGVyIGluc3RlYWQgb2YKKyMgaW5jcmVtZW50aW5nIGEg
dmFsdWUuCitfUkVfUEFUVEVSTl9JTlZBTElEX0lOQ1JFTUVOVCA9IHJlLmNvbXBpbGUoCisgICAg
cideXHMqXCpcdysoXCtcK3wtLSk7JykKKworCitkZWYgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQo
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorICAgICIiIkNoZWNr
cyBmb3IgaW52YWxpZCBpbmNyZW1lbnQgKmNvdW50KysuCisKKyAgICBGb3IgZXhhbXBsZSBmb2xs
b3dpbmcgZnVuY3Rpb246CisgICAgdm9pZCBpbmNyZW1lbnRfY291bnRlcihpbnQqIGNvdW50KSB7
CisgICAgICAgICpjb3VudCsrOworICAgIH0KKyAgICBpcyBpbnZhbGlkLCBiZWNhdXNlIGl0IGVm
ZmVjdGl2ZWx5IGRvZXMgY291bnQrKywgbW92aW5nIHBvaW50ZXIsIGFuZCBzaG91bGQKKyAgICBi
ZSByZXBsYWNlZCB3aXRoICsrKmNvdW50LCAoKmNvdW50KSsrIG9yICpjb3VudCArPSAxLgorCisg
ICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgor
ICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRo
ZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hl
Y2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgorICAgICIiIgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJd
CisgICAgaWYgX1JFX1BBVFRFUk5fSU5WQUxJRF9JTkNSRU1FTlQubWF0Y2gobGluZSk6CisgICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvaW52YWxpZF9pbmNyZW1l
bnQnLCA1LAorICAgICAgICAgICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVl
IChvciB1bnVzZWQgdmFsdWUgb2Ygb3BlcmF0b3IqKS4nKQorCisKK2NsYXNzIF9DbGFzc0luZm8o
b2JqZWN0KToKKyAgICAiIiJTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgYSBjbGFzcy4iIiIKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBsaW5lX251bWJlcik6CisgICAgICAgIHNlbGYu
bmFtZSA9IG5hbWUKKyAgICAgICAgc2VsZi5saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisgICAg
ICAgIHNlbGYuc2Vlbl9vcGVuX2JyYWNlID0gRmFsc2UKKyAgICAgICAgc2VsZi5pc19kZXJpdmVk
ID0gRmFsc2UKKyAgICAgICAgc2VsZi52aXJ0dWFsX21ldGhvZF9saW5lX251bWJlciA9IE5vbmUK
KyAgICAgICAgc2VsZi5oYXNfdmlydHVhbF9kZXN0cnVjdG9yID0gRmFsc2UKKyAgICAgICAgc2Vs
Zi5icmFjZV9kZXB0aCA9IDAKKworCitjbGFzcyBfQ2xhc3NTdGF0ZShvYmplY3QpOgorICAgICIi
IkhvbGRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYXJzZSByZWxhdGluZyB0byBjbGFzcyBk
ZWNsYXJhdGlvbnMuCisKKyAgICBJdCBtYWludGFpbnMgYSBzdGFjayBvZiBfQ2xhc3NJbmZvcyBy
ZXByZXNlbnRpbmcgdGhlIHBhcnNlcidzIGd1ZXNzCisgICAgYXMgdG8gdGhlIGN1cnJlbnQgbmVz
dGluZyBvZiBjbGFzcyBkZWNsYXJhdGlvbnMuIFRoZSBpbm5lcm1vc3QgY2xhc3MKKyAgICBpcyBh
dCB0aGUgdG9wIChiYWNrKSBvZiB0aGUgc3RhY2suIFR5cGljYWxseSwgdGhlIHN0YWNrIHdpbGwg
ZWl0aGVyCisgICAgYmUgZW1wdHkgb3IgaGF2ZSBleGFjdGx5IG9uZSBlbnRyeS4KKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5jbGFzc2luZm9fc3RhY2sg
PSBbXQorCisgICAgZGVmIGNoZWNrX2ZpbmlzaGVkKHNlbGYsIGZpbGVuYW1lLCBlcnJvcik6Cisg
ICAgICAgICIiIkNoZWNrcyB0aGF0IGFsbCBjbGFzc2VzIGhhdmUgYmVlbiBjb21wbGV0ZWx5IHBh
cnNlZC4KKworICAgICAgICBDYWxsIHRoaXMgd2hlbiBhbGwgbGluZXMgaW4gYSBmaWxlIGhhdmUg
YmVlbiBwcm9jZXNzZWQuCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgZmlsZW5hbWU6IFRoZSBu
YW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0
byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNl
bGYuY2xhc3NpbmZvX3N0YWNrOgorICAgICAgICAgICAgIyBOb3RlOiBUaGlzIHRlc3QgY2FuIHJl
c3VsdCBpbiBmYWxzZSBwb3NpdGl2ZXMgaWYgI2lmZGVmIGNvbnN0cnVjdHMKKyAgICAgICAgICAg
ICMgZ2V0IGluIHRoZSB3YXkgb2YgYnJhY2UgbWF0Y2hpbmcuIFNlZSB0aGUgdGVzdEJ1aWxkQ2xh
c3MgdGVzdCBpbgorICAgICAgICAgICAgIyBjcHBfc3R5bGVfdW5pdHRlc3QucHkgZm9yIGFuIGV4
YW1wbGUgb2YgdGhpcy4KKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBzZWxmLmNsYXNzaW5m
b19zdGFja1swXS5saW5lX251bWJlciwgJ2J1aWxkL2NsYXNzJywgNSwKKyAgICAgICAgICAgICAg
ICAgICdGYWlsZWQgdG8gZmluZCBjb21wbGV0ZSBkZWNsYXJhdGlvbiBvZiBjbGFzcyAlcycgJQor
ICAgICAgICAgICAgICAgICAgc2VsZi5jbGFzc2luZm9fc3RhY2tbMF0ubmFtZSkKKworCitkZWYg
Y2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywg
bGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNz
X3N0YXRlLCBlcnJvcik6CisgICAgIiIiTG9ncyBhbiBlcnJvciBpZiB3ZSBzZWUgY2VydGFpbiBu
b24tQU5TSSBjb25zdHJ1Y3RzIGlnbm9yZWQgYnkgZ2NjLTIuCisKKyAgICBDb21wbGFpbiBhYm91
dCBzZXZlcmFsIGNvbnN0cnVjdHMgd2hpY2ggZ2NjLTIgYWNjZXB0cywgYnV0IHdoaWNoIGFyZQor
ICAgIG5vdCBzdGFuZGFyZCBDKysuICBXYXJuaW5nIGFib3V0IHRoZXNlIGluIGxpbnQgaXMgb25l
IHdheSB0byBlYXNlIHRoZQorICAgIHRyYW5zaXRpb24gdG8gbmV3IGNvbXBpbGVycy4KKyAgICAt
IHB1dCBzdG9yYWdlIGNsYXNzIGZpcnN0IChlLmcuICJzdGF0aWMgY29uc3QiIGluc3RlYWQgb2Yg
ImNvbnN0IHN0YXRpYyIpLgorICAgIC0gIiVsbGQiIGluc3RlYWQgb2YgJXFkIiBpbiBwcmludGYt
dHlwZSBmdW5jdGlvbnMuCisgICAgLSAiJTEkZCIgaXMgbm9uLXN0YW5kYXJkIGluIHByaW50Zi10
eXBlIGZ1bmN0aW9ucy4KKyAgICAtICJcJSIgaXMgYW4gdW5kZWZpbmVkIGNoYXJhY3RlciBlc2Nh
cGUgc2VxdWVuY2UuCisgICAgLSB0ZXh0IGFmdGVyICNlbmRpZiBpcyBub3QgYWxsb3dlZC4KKyAg
ICAtIGludmFsaWQgaW5uZXItc3R5bGUgZm9yd2FyZCBkZWNsYXJhdGlvbi4KKyAgICAtID4/IGFu
ZCA8PyBvcGVyYXRvcnMsIGFuZCB0aGVpciA+Pz0gYW5kIDw/PSBjb3VzaW5zLgorICAgIC0gY2xh
c3NlcyB3aXRoIHZpcnR1YWwgbWV0aG9kcyBuZWVkIHZpcnR1YWwgZGVzdHJ1Y3RvcnMgKGNvbXBp
bGVyIHdhcm5pbmcKKyAgICAgICAgYXZhaWxhYmxlLCBidXQgbm90IHR1cm5lZCBvbiB5ZXQuKQor
CisgICAgQWRkaXRpb25hbGx5LCBjaGVjayBmb3IgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciBzdHls
ZSB2aW9sYXRpb25zIGFzIGl0CisgICAgaXMgdmVyeSBjb252ZW5pZW50IHRvIGRvIHNvIHdoaWxl
IGNoZWNraW5nIGZvciBnY2MtMiBjb21wbGlhbmNlLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVu
YW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEg
Q2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9u
dW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBjbGFzc19zdGF0
ZTogQSBfQ2xhc3NTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJv
dXQKKyAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFjayBvZiBuZXN0ZWQgY2xhc3Mg
ZGVjbGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KKyAgICAgIGVycm9yOiBBIGNhbGxhYmxlIHRvIHdo
aWNoIGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2VzIDQgYXJndW1lbnRzOgorICAgICAg
ICAgICAgIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgZXJyb3IgbGV2ZWwsIGFuZCBtZXNzYWdlCisg
ICAgIiIiCisKKyAgICAjIFJlbW92ZSBjb21tZW50cyBmcm9tIHRoZSBsaW5lLCBidXQgbGVhdmUg
aW4gc3RyaW5ncyBmb3Igbm93LgorICAgIGxpbmUgPSBjbGVhbl9saW5lcy5saW5lc1tsaW5lX251
bWJlcl0KKworICAgIGlmIHNlYXJjaChyJ3ByaW50ZlxzKlwoLioiLiolWy0rIF0/XGQqcScsIGxp
bmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL3ByaW50
Zl9mb3JtYXQnLCAzLAorICAgICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVw
cmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVhZC4nKQorCisgICAgaWYgc2VhcmNoKHIncHJpbnRmXHMq
XCguKiIuKiVcZCtcJCcsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsICdydW50aW1lL3ByaW50Zl9mb3JtYXQnLCAyLAorICAgICAgICAgICAgICAnJU4kIGZvcm1h
dHMgYXJlIHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0aGVtLicpCisK
KyAgICAjIFJlbW92ZSBlc2NhcGVkIGJhY2tzbGFzaGVzIGJlZm9yZSBsb29raW5nIGZvciB1bmRl
ZmluZWQgZXNjYXBlcy4KKyAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdcXFxcJywgJycpCisKKyAg
ICBpZiBzZWFyY2gocicoInxcJykuKlxcKCV8XFt8XCh8eyknLCBsaW5lKToKKyAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvcHJpbnRmX2Zvcm1hdCcsIDMsCisgICAg
ICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVz
LiAgVW5lc2NhcGUgdGhlbS4nKQorCisgICAgIyBGb3IgdGhlIHJlc3QsIHdvcmsgd2l0aCBib3Ro
IGNvbW1lbnRzIGFuZCBzdHJpbmdzIHJlbW92ZWQuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVs
aWRlZFtsaW5lX251bWJlcl0KKworICAgIGlmIHNlYXJjaChyJ1xiKGNvbnN0fHZvbGF0aWxlfHZv
aWR8Y2hhcnxzaG9ydHxpbnR8bG9uZycKKyAgICAgICAgICAgICAgcid8ZmxvYXR8ZG91YmxlfHNp
Z25lZHx1bnNpZ25lZCcKKyAgICAgICAgICAgICAgcid8c2NoYXJ8dT9pbnQ4fHU/aW50MTZ8dT9p
bnQzMnx1P2ludDY0KScKKyAgICAgICAgICAgICAgcidccysoYXV0b3xyZWdpc3RlcnxzdGF0aWN8
ZXh0ZXJufHR5cGVkZWYpXGInLAorICAgICAgICAgICAgICBsaW5lKToKKyAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvc3RvcmFnZV9jbGFzcycsIDUsCisgICAgICAg
ICAgICAgICdTdG9yYWdlIGNsYXNzIChzdGF0aWMsIGV4dGVybiwgdHlwZWRlZiwgZXRjKSBzaG91
bGQgYmUgZmlyc3QuJykKKworICAgIGlmIG1hdGNoKHInXHMqI1xzKmVuZGlmXHMqW14vXHNdKycs
IGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9lbmRp
Zl9jb21tZW50JywgNSwKKyAgICAgICAgICAgICAgJ1VuY29tbWVudGVkIHRleHQgYWZ0ZXIgI2Vu
ZGlmIGlzIG5vbi1zdGFuZGFyZC4gIFVzZSBhIGNvbW1lbnQuJykKKworICAgIGlmIG1hdGNoKHIn
XHMqY2xhc3NccysoXHcrXHMqOjpccyopK1x3K1xzKjsnLCBsaW5lKToKKyAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvZm9yd2FyZF9kZWNsJywgNSwKKyAgICAgICAg
ICAgICAgJ0lubmVyLXN0eWxlIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBpbnZhbGlkLiAgUmVt
b3ZlIHRoaXMgbGluZS4nKQorCisgICAgaWYgc2VhcmNoKHInKFx3K3xbKy1dP1xkKyhcLlxkKik/
KVxzKig8fD4pXD89P1xzKihcdyt8WystXT9cZCspKFwuXGQqKT8nLCBsaW5lKToKKyAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvZGVwcmVjYXRlZCcsIDMsCisgICAg
ICAgICAgICAgICc+PyBhbmQgPD8gKG1heCBhbmQgbWluKSBvcGVyYXRvcnMgYXJlIG5vbi1zdGFu
ZGFyZCBhbmQgZGVwcmVjYXRlZC4nKQorCisgICAgIyBUcmFjayBjbGFzcyBlbnRyeSBhbmQgZXhp
dCwgYW5kIGF0dGVtcHQgdG8gZmluZCBjYXNlcyB3aXRoaW4gdGhlCisgICAgIyBjbGFzcyBkZWNs
YXJhdGlvbiB0aGF0IGRvbid0IG1lZXQgdGhlIEMrKyBzdHlsZQorICAgICMgZ3VpZGVsaW5lcy4g
VHJhY2tpbmcgaXMgdmVyeSBkZXBlbmRlbnQgb24gdGhlIGNvZGUgbWF0Y2hpbmcgR29vZ2xlCisg
ICAgIyBzdHlsZSBndWlkZWxpbmVzLCBidXQgaXQgc2VlbXMgdG8gcGVyZm9ybSB3ZWxsIGVub3Vn
aCBpbiB0ZXN0aW5nCisgICAgIyB0byBiZSBhIHdvcnRod2hpbGUgYWRkaXRpb24gdG8gdGhlIGNo
ZWNrcy4KKyAgICBjbGFzc2luZm9fc3RhY2sgPSBjbGFzc19zdGF0ZS5jbGFzc2luZm9fc3RhY2sK
KyAgICAjIExvb2sgZm9yIGEgY2xhc3MgZGVjbGFyYXRpb24KKyAgICBjbGFzc19kZWNsX21hdGNo
ID0gbWF0Y2goCisgICAgICAgIHInXHMqKHRlbXBsYXRlXHMqPFtcd1xzPD4sOl0qPlxzKik/KGNs
YXNzfHN0cnVjdClccysoXHcrKDo6XHcrKSopJywgbGluZSkKKyAgICBpZiBjbGFzc19kZWNsX21h
dGNoOgorICAgICAgICBjbGFzc2luZm9fc3RhY2suYXBwZW5kKF9DbGFzc0luZm8oY2xhc3NfZGVj
bF9tYXRjaC5ncm91cCgzKSwgbGluZV9udW1iZXIpKQorCisgICAgIyBFdmVyeXRoaW5nIGVsc2Ug
aW4gdGhpcyBmdW5jdGlvbiB1c2VzIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlmIGl0J3MKKyAgICAj
IG5vdCBlbXB0eS4KKyAgICBpZiBub3QgY2xhc3NpbmZvX3N0YWNrOgorICAgICAgICByZXR1cm4K
KworICAgIGNsYXNzaW5mbyA9IGNsYXNzaW5mb19zdGFja1stMV0KKworICAgICMgSWYgdGhlIG9w
ZW5pbmcgYnJhY2UgaGFzbid0IGJlZW4gc2VlbiBsb29rIGZvciBpdCBhbmQgYWxzbworICAgICMg
cGFyZW50IGNsYXNzIGRlY2xhcmF0aW9ucy4KKyAgICBpZiBub3QgY2xhc3NpbmZvLnNlZW5fb3Bl
bl9icmFjZToKKyAgICAgICAgIyBJZiB0aGUgbGluZSBoYXMgYSAnOycgaW4gaXQsIGFzc3VtZSBp
dCdzIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBvcgorICAgICAgICAjIGEgc2luZ2xlLWxpbmUgY2xh
c3MgZGVjbGFyYXRpb24sIHdoaWNoIHdlIHdvbid0IHByb2Nlc3MuCisgICAgICAgIGlmIGxpbmUu
ZmluZCgnOycpICE9IC0xOgorICAgICAgICAgICAgY2xhc3NpbmZvX3N0YWNrLnBvcCgpCisgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgY2xhc3NpbmZvLnNlZW5fb3Blbl9icmFjZSA9IChsaW5l
LmZpbmQoJ3snKSAhPSAtMSkKKyAgICAgICAgIyBMb29rIGZvciBhIGJhcmUgJzonCisgICAgICAg
IGlmIHNlYXJjaCgnKF58W146XSk6KCR8W146XSknLCBsaW5lKToKKyAgICAgICAgICAgIGNsYXNz
aW5mby5pc19kZXJpdmVkID0gVHJ1ZQorICAgICAgICBpZiBub3QgY2xhc3NpbmZvLnNlZW5fb3Bl
bl9icmFjZToKKyAgICAgICAgICAgIHJldHVybiAgIyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhpcyBm
dW5jdGlvbiBpcyBmb3IgYWZ0ZXIgb3BlbiBicmFjZQorCisgICAgIyBUaGUgY2xhc3MgbWF5IGhh
dmUgYmVlbiBkZWNsYXJlZCB3aXRoIG5hbWVzcGFjZSBvciBjbGFzc25hbWUgcXVhbGlmaWVycy4K
KyAgICAjIFRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciB3aWxsIG5vdCBoYXZlIHRob3Nl
IHF1YWxpZmllcnMuCisgICAgYmFzZV9jbGFzc25hbWUgPSBjbGFzc2luZm8ubmFtZS5zcGxpdCgn
OjonKVstMV0KKworICAgICMgTG9vayBmb3Igc2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyB0
aGF0IGFyZW4ndCBtYXJrZWQgZXhwbGljaXQuCisgICAgIyBUZWNobmljYWxseSBhIHZhbGlkIGNv
bnN0cnVjdCwgYnV0IGFnYWluc3Qgc3R5bGUuCisgICAgYXJncyA9IG1hdGNoKHInKD88IWV4cGxp
Y2l0KVxzKyVzXHMqXCgoW14sKCldKylcKScKKyAgICAgICAgICAgICAgICAgJSByZS5lc2NhcGUo
YmFzZV9jbGFzc25hbWUpLAorICAgICAgICAgICAgICAgICBsaW5lKQorICAgIGlmIChhcmdzCisg
ICAgICAgIGFuZCBhcmdzLmdyb3VwKDEpICE9ICd2b2lkJworICAgICAgICBhbmQgbm90IG1hdGNo
KHInKGNvbnN0XHMrKT8lc1xzKiYnICUgcmUuZXNjYXBlKGJhc2VfY2xhc3NuYW1lKSwKKyAgICAg
ICAgICAgICAgICAgICAgICBhcmdzLmdyb3VwKDEpLnN0cmlwKCkpKToKKyAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9leHBsaWNpdCcsIDUsCisgICAgICAgICAg
ICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGlj
aXQuJykKKworICAgICMgTG9vayBmb3IgbWV0aG9kcyBkZWNsYXJlZCB2aXJ0dWFsLgorICAgIGlm
IHNlYXJjaChyJ1xidmlydHVhbFxiJywgbGluZSk6CisgICAgICAgIGNsYXNzaW5mby52aXJ0dWFs
X21ldGhvZF9saW5lX251bWJlciA9IGxpbmVfbnVtYmVyCisgICAgICAgICMgT25seSBsb29rIGZv
ciBhIGRlc3RydWN0b3IgZGVjbGFyYXRpb24gb24gdGhlIHNhbWUgbGluZS4gSXQgd291bGQKKyAg
ICAgICAgIyBiZSBleHRyZW1lbHkgdW5saWtlbHkgZm9yIHRoZSBkZXN0cnVjdG9yIGRlY2xhcmF0
aW9uIHRvIG9jY3VweQorICAgICAgICAjIG1vcmUgdGhhbiBvbmUgbGluZS4KKyAgICAgICAgaWYg
c2VhcmNoKHInfiVzXHMqXCgnICUgYmFzZV9jbGFzc25hbWUsIGxpbmUpOgorICAgICAgICAgICAg
Y2xhc3NpbmZvLmhhc192aXJ0dWFsX2Rlc3RydWN0b3IgPSBUcnVlCisKKyAgICAjIExvb2sgZm9y
IGNsYXNzIGVuZC4KKyAgICBicmFjZV9kZXB0aCA9IGNsYXNzaW5mby5icmFjZV9kZXB0aAorICAg
IGJyYWNlX2RlcHRoID0gYnJhY2VfZGVwdGggKyBsaW5lLmNvdW50KCd7JykgLSBsaW5lLmNvdW50
KCd9JykKKyAgICBpZiBicmFjZV9kZXB0aCA8PSAwOgorICAgICAgICBjbGFzc2luZm8gPSBjbGFz
c2luZm9fc3RhY2sucG9wKCkKKyAgICAgICAgIyBUcnkgdG8gZGV0ZWN0IG1pc3NpbmcgdmlydHVh
bCBkZXN0cnVjdG9yIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgIyBGb3Igbm93LCBvbmx5IHdhcm4g
aWYgYSBub24tZGVyaXZlZCBjbGFzcyB3aXRoIHZpcnR1YWwgbWV0aG9kcyBsYWNrcworICAgICAg
ICAjIGEgdmlydHVhbCBkZXN0cnVjdG9yLiBUaGlzIGlzIHRvIG1ha2UgaXQgbGVzcyBsaWtlbHkg
dGhhdCBwZW9wbGUgd2lsbAorICAgICAgICAjIGRlY2xhcmUgZGVyaXZlZCB2aXJ0dWFsIGRlc3Ry
dWN0b3JzIHdpdGhvdXQgZGVjbGFyaW5nIHRoZSBiYXNlCisgICAgICAgICMgZGVzdHJ1Y3RvciB2
aXJ0dWFsLgorICAgICAgICBpZiAoKGNsYXNzaW5mby52aXJ0dWFsX21ldGhvZF9saW5lX251bWJl
ciBpcyBub3QgTm9uZSkKKyAgICAgICAgICAgIGFuZCAobm90IGNsYXNzaW5mby5oYXNfdmlydHVh
bF9kZXN0cnVjdG9yKQorICAgICAgICAgICAgYW5kIChub3QgY2xhc3NpbmZvLmlzX2Rlcml2ZWQp
KTogICMgT25seSB3YXJuIGZvciBiYXNlIGNsYXNzZXMKKyAgICAgICAgICAgIGVycm9yKGZpbGVu
YW1lLCBjbGFzc2luZm8ubGluZV9udW1iZXIsICdydW50aW1lL3ZpcnR1YWwnLCA0LAorICAgICAg
ICAgICAgICAgICAgJ1RoZSBjbGFzcyAlcyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1
Y3RvciBkdWUgdG8gJworICAgICAgICAgICAgICAgICAgJ2hhdmluZyB2aXJ0dWFsIG1ldGhvZChz
KSwgb25lIGRlY2xhcmVkIGF0IGxpbmUgJWQuJworICAgICAgICAgICAgICAgICAgJSAoY2xhc3Np
bmZvLm5hbWUsIGNsYXNzaW5mby52aXJ0dWFsX21ldGhvZF9saW5lX251bWJlcikpCisgICAgZWxz
ZToKKyAgICAgICAgY2xhc3NpbmZvLmJyYWNlX2RlcHRoID0gYnJhY2VfZGVwdGgKKworCitkZWYg
Y2hlY2tfc3BhY2luZ19mb3JfZnVuY3Rpb25fY2FsbChmaWxlbmFtZSwgbGluZSwgbGluZV9udW1i
ZXIsIGVycm9yKToKKyAgICAiIiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB2YXJpb3Vz
IHNwYWNpbmcgYXJvdW5kIGZ1bmN0aW9uIGNhbGxzLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVu
YW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgorICAgICAgbGluZTogVGhlIHRleHQg
b2YgdGhlIGxpbmUgdG8gY2hlY2suCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0
aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCisgICAgIiIiCisKKyAgICAjIFNpbmNlIGZ1bmN0aW9uIGNhbGxz
IG9mdGVuIG9jY3VyIGluc2lkZSBpZi9mb3IvZm9yZWFjaC93aGlsZS9zd2l0Y2gKKyAgICAjIGV4
cHJlc3Npb25zIC0gd2hpY2ggaGF2ZSB0aGVpciBvd24sIG1vcmUgbGliZXJhbCBjb252ZW50aW9u
cyAtIHdlCisgICAgIyBmaXJzdCBzZWUgaWYgd2Ugc2hvdWxkIGJlIGxvb2tpbmcgaW5zaWRlIHN1
Y2ggYW4gZXhwcmVzc2lvbiBmb3IgYQorICAgICMgZnVuY3Rpb24gY2FsbCwgdG8gd2hpY2ggd2Ug
Y2FuIGFwcGx5IG1vcmUgc3RyaWN0IHN0YW5kYXJkcy4KKyAgICBmdW5jdGlvbl9jYWxsID0gbGlu
ZSAgICAjIGlmIHRoZXJlJ3Mgbm8gY29udHJvbCBmbG93IGNvbnN0cnVjdCwgbG9vayBhdCB3aG9s
ZSBsaW5lCisgICAgZm9yIHBhdHRlcm4gaW4gKHInXGJpZlxzKlwoKC4qKVwpXHMqeycsCisgICAg
ICAgICAgICAgICAgICAgIHInXGJmb3JccypcKCguKilcKVxzKnsnLAorICAgICAgICAgICAgICAg
ICAgICByJ1xiZm9yZWFjaFxzKlwoKC4qKVwpXHMqeycsCisgICAgICAgICAgICAgICAgICAgIHIn
XGJ3aGlsZVxzKlwoKC4qKVwpXHMqW3s7XScsCisgICAgICAgICAgICAgICAgICAgIHInXGJzd2l0
Y2hccypcKCguKilcKVxzKnsnKToKKyAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChwYXR0ZXJuLCBs
aW5lKQorICAgICAgICBpZiBtYXRjaGVkOgorICAgICAgICAgICAgZnVuY3Rpb25fY2FsbCA9IG1h
dGNoZWQuZ3JvdXAoMSkgICAgIyBsb29rIGluc2lkZSB0aGUgcGFyZW5zIGZvciBmdW5jdGlvbiBj
YWxscworICAgICAgICAgICAgYnJlYWsKKworICAgICMgRXhjZXB0IGluIGlmL2Zvci9mb3JlYWNo
L3doaWxlL3N3aXRjaCwgdGhlcmUgc2hvdWxkIG5ldmVyIGJlIHNwYWNlCisgICAgIyBpbW1lZGlh
dGVseSBpbnNpZGUgcGFyZW5zIChlZyAiZiggMywgNCApIikuICBXZSBtYWtlIGFuIGV4Y2VwdGlv
bgorICAgICMgZm9yIG5lc3RlZCBwYXJlbnMgKCAoYStiKSArIGMgKS4gIExpa2V3aXNlLCB0aGVy
ZSBzaG91bGQgbmV2ZXIgYmUKKyAgICAjIGEgc3BhY2UgYmVmb3JlIGEgKCB3aGVuIGl0J3MgYSBm
dW5jdGlvbiBhcmd1bWVudC4gIEkgYXNzdW1lIGl0J3MgYQorICAgICMgZnVuY3Rpb24gYXJndW1l
bnQgd2hlbiB0aGUgY2hhciBiZWZvcmUgdGhlIHdoaXRlc3BhY2UgaXMgbGVnYWwgaW4KKyAgICAj
IGEgZnVuY3Rpb24gbmFtZSAoYWxudW0gKyBfKSBhbmQgd2UncmUgbm90IHN0YXJ0aW5nIGEgbWFj
cm8uIEFsc28gaWdub3JlCisgICAgIyBwb2ludGVycyBhbmQgcmVmZXJlbmNlcyB0byBhcnJheXMg
YW5kIGZ1bmN0aW9ucyBjb3ogdGhleSdyZSB0b28gdHJpY2t5OgorICAgICMgd2UgdXNlIGEgdmVy
eSBzaW1wbGUgd2F5IHRvIHJlY29nbml6ZSB0aGVzZToKKyAgICAjICIgKHNvbWV0aGluZykobWF5
YmUtc29tZXRoaW5nKSIgb3IKKyAgICAjICIgKHNvbWV0aGluZykobWF5YmUtc29tZXRoaW5nLCIg
b3IKKyAgICAjICIgKHNvbWV0aGluZylbc29tZXRoaW5nXSIKKyAgICAjIE5vdGUgdGhhdCB3ZSBh
c3N1bWUgdGhlIGNvbnRlbnRzIG9mIFtdIHRvIGJlIHNob3J0IGVub3VnaCB0aGF0CisgICAgIyB0
aGV5J2xsIG5ldmVyIG5lZWQgdG8gd3JhcC4KKyAgICBpZiAoICAjIElnbm9yZSBjb250cm9sIHN0
cnVjdHVyZXMuCisgICAgICAgIG5vdCBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxz
d2l0Y2h8cmV0dXJufG5ld3xkZWxldGUpXGInLCBmdW5jdGlvbl9jYWxsKQorICAgICAgICAjIEln
bm9yZSBwb2ludGVycy9yZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucy4KKyAgICAgICAgYW5kIG5vdCBz
ZWFyY2gocicgXChbXildK1wpXChbXildKihcKXwsJCknLCBmdW5jdGlvbl9jYWxsKQorICAgICAg
ICAjIElnbm9yZSBwb2ludGVycy9yZWZlcmVuY2VzIHRvIGFycmF5cy4KKyAgICAgICAgYW5kIG5v
dCBzZWFyY2gocicgXChbXildK1wpXFtbXlxdXStcXScsIGZ1bmN0aW9uX2NhbGwpKToKKyAgICAg
ICAgaWYgc2VhcmNoKHInXHdccypcKFsgXHRdKD8hXHMqXFwkKScsIGZ1bmN0aW9uX2NhbGwpOiAg
ICAgICMgYSAoIHVzZWQgZm9yIGEgZm4gY2FsbAorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCA0LAorICAgICAgICAgICAgICAgICAg
J0V4dHJhIHNwYWNlIGFmdGVyICggaW4gZnVuY3Rpb24gY2FsbCcpCisgICAgICAgIGVsaWYgc2Vh
cmNoKHInXChbIFx0XSsoPyEoXHMqXFwpfFwoKScsIGZ1bmN0aW9uX2NhbGwpOgorICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnMnLCAyLAor
ICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGFmdGVyICgnKQorICAgICAgICBpZiAoc2Vh
cmNoKHInXHdccytcKCcsIGZ1bmN0aW9uX2NhbGwpCisgICAgICAgICAgICBhbmQgbm90IHNlYXJj
aChyJyNccypkZWZpbmV8dHlwZWRlZicsIGZ1bmN0aW9uX2NhbGwpKToKKyAgICAgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNCwKKyAgICAg
ICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsJykKKyAg
ICAgICAgIyBJZiB0aGUgKSBpcyBmb2xsb3dlZCBvbmx5IGJ5IGEgbmV3bGluZSBvciBhIHsgKyBu
ZXdsaW5lLCBhc3N1bWUgaXQncworICAgICAgICAjIHBhcnQgb2YgYSBjb250cm9sIHN0YXRlbWVu
dCAoaWYvd2hpbGUvZXRjKSwgYW5kIGRvbid0IGNvbXBsYWluCisgICAgICAgIGlmIHNlYXJjaChy
J1teKVxzXVxzK1wpKD8hXHMqJHx7XHMqJCknLCBmdW5jdGlvbl9jYWxsKToKKyAgICAgICAgICAg
IGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgMiwKKyAg
ICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKScpCisKKworZGVmIGlzX2JsYW5r
X2xpbmUobGluZSk6CisgICAgIiIiUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBsaW5lIGlzIGJs
YW5rLgorCisgICAgV2UgY29uc2lkZXIgYSBsaW5lIHRvIGJlIGJsYW5rIGlmIHRoZSBsaW5lIGlz
IGVtcHR5IG9yIGNvbnNpc3RzIG9mCisgICAgb25seSB3aGl0ZSBzcGFjZXMuCisKKyAgICBBcmdz
OgorICAgICAgbGluZTogQSBsaW5lIG9mIGEgc3RyaW5nLgorCisgICAgUmV0dXJuczoKKyAgICAg
IFRydWUsIGlmIHRoZSBnaXZlbiBsaW5lIGlzIGJsYW5rLgorICAgICIiIgorICAgIHJldHVybiBu
b3QgbGluZSBvciBsaW5lLmlzc3BhY2UoKQorCisKK2RlZiBjaGVja19mb3JfZnVuY3Rpb25fbGVu
Z3RocyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcik6CisgICAgIiIiUmVwb3J0cyBm
b3IgbG9uZyBmdW5jdGlvbiBib2RpZXMuCisKKyAgICBGb3IgYW4gb3ZlcnZpZXcgd2h5IHRoaXMg
aXMgZG9uZSwgc2VlOgorICAgIGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2RlLmNv
bS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI1dyaXRlX1Nob3J0X0Z1bmN0aW9ucworCisgICAgVXNl
cyBhIHNpbXBsaXN0aWMgYWxnb3JpdGhtIGFzc3VtaW5nIG90aGVyIHN0eWxlIGd1aWRlbGluZXMK
KyAgICAoZXNwZWNpYWxseSBzcGFjaW5nKSBhcmUgZm9sbG93ZWQuCisgICAgT25seSBjaGVja3Mg
dW5pbmRlbnRlZCBmdW5jdGlvbnMsIHNvIGNsYXNzIG1lbWJlcnMgYXJlIHVuY2hlY2tlZC4KKyAg
ICBUcml2aWFsIGJvZGllcyBhcmUgdW5jaGVja2VkLCBzbyBjb25zdHJ1Y3RvcnMgd2l0aCBodWdl
IGluaXRpYWxpemVyIGxpc3RzCisgICAgbWF5IGJlIG1pc3NlZC4KKyAgICBCbGFuay9jb21tZW50
IGxpbmVzIGFyZSBub3QgY291bnRlZCBzbyBhcyB0byBhdm9pZCBlbmNvdXJhZ2luZyB0aGUgcmVt
b3ZhbAorICAgIG9mIHZlcnRpY2FsIHNwYWNlIGFuZCBjb21tbWVudHMganVzdCB0byBnZXQgdGhy
b3VnaCBhIGxpbnQgY2hlY2suCisgICAgTk9MSU5UICpvbiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVu
Y3Rpb24qIGRpc2FibGVzIHRoaXMgY2hlY2suCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6
IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVh
bnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBsaW5lX251bWJl
cjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGZ1bmN0aW9uX3N0YXRl
OiBDdXJyZW50IGZ1bmN0aW9uIG5hbWUgYW5kIGxpbmVzIGluIGJvZHkgc28gZmFyLgorICAgICAg
ZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAi
IiIKKyAgICBsaW5lcyA9IGNsZWFuX2xpbmVzLmxpbmVzCisgICAgbGluZSA9IGxpbmVzW2xpbmVf
bnVtYmVyXQorICAgIHJhdyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcworICAgIHJhd19saW5lID0g
cmF3W2xpbmVfbnVtYmVyXQorICAgIGpvaW5lZF9saW5lID0gJycKKworICAgIHN0YXJ0aW5nX2Z1
bmMgPSBGYWxzZQorICAgIHJlZ2V4cCA9IHInKFx3KFx3fDo6fFwqfFwmfFxzKSopXCgnICAjIGRl
Y2xzICogJiBzcGFjZTo6bmFtZSggLi4uCisgICAgbWF0Y2hfcmVzdWx0ID0gbWF0Y2gocmVnZXhw
LCBsaW5lKQorICAgIGlmIG1hdGNoX3Jlc3VsdDoKKyAgICAgICAgIyBJZiB0aGUgbmFtZSBpcyBh
bGwgY2FwcyBhbmQgdW5kZXJzY29yZXMsIGZpZ3VyZSBpdCdzIGEgbWFjcm8gYW5kCisgICAgICAg
ICMgaWdub3JlIGl0LCB1bmxlc3MgaXQncyBURVNUIG9yIFRFU1RfRi4KKyAgICAgICAgZnVuY3Rp
b25fbmFtZSA9IG1hdGNoX3Jlc3VsdC5ncm91cCgxKS5zcGxpdCgpWy0xXQorICAgICAgICBpZiBm
dW5jdGlvbl9uYW1lID09ICdURVNUJyBvciBmdW5jdGlvbl9uYW1lID09ICdURVNUX0YnIG9yIChu
b3QgbWF0Y2gocidbQS1aX10rJCcsIGZ1bmN0aW9uX25hbWUpKToKKyAgICAgICAgICAgIHN0YXJ0
aW5nX2Z1bmMgPSBUcnVlCisKKyAgICBpZiBzdGFydGluZ19mdW5jOgorICAgICAgICBib2R5X2Zv
dW5kID0gRmFsc2UKKyAgICAgICAgZm9yIHN0YXJ0X2xpbmVfbnVtYmVyIGluIHhyYW5nZShsaW5l
X251bWJlciwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgc3RhcnRfbGlu
ZSA9IGxpbmVzW3N0YXJ0X2xpbmVfbnVtYmVyXQorICAgICAgICAgICAgam9pbmVkX2xpbmUgKz0g
JyAnICsgc3RhcnRfbGluZS5sc3RyaXAoKQorICAgICAgICAgICAgaWYgc2VhcmNoKHInKDt8fSkn
LCBzdGFydF9saW5lKTogICMgRGVjbGFyYXRpb25zIGFuZCB0cml2aWFsIGZ1bmN0aW9ucworICAg
ICAgICAgICAgICAgIGJvZHlfZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgYnJlYWsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIC4uLiBpZ25vcmUKKyAgICAgICAgICAgIGlmIHNl
YXJjaChyJ3snLCBzdGFydF9saW5lKToKKyAgICAgICAgICAgICAgICBib2R5X2ZvdW5kID0gVHJ1
ZQorICAgICAgICAgICAgICAgIGZ1bmN0aW9uID0gc2VhcmNoKHInKChcd3w6KSopXCgnLCBsaW5l
KS5ncm91cCgxKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoKHInVEVTVCcsIGZ1bmN0aW9uKTog
ICAgIyBIYW5kbGUgVEVTVC4uLiBtYWNyb3MKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVy
X3JlZ2V4cCA9IHNlYXJjaChyJyhcKC4qXCkpJywgam9pbmVkX2xpbmUpCisgICAgICAgICAgICAg
ICAgICAgIGlmIHBhcmFtZXRlcl9yZWdleHA6ICAgICAgICAgICAgICMgSWdub3JlIGJhZCBzeW50
YXgKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICs9IHBhcmFtZXRlcl9yZWdleHAu
Z3JvdXAoMSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmdW5j
dGlvbiArPSAnKCknCisgICAgICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUuYmVnaW4oZnVuY3Rp
b24pCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGJvZHlfZm91bmQ6Cisg
ICAgICAgICAgICAjIE5vIGJvZHkgZm9yIHRoZSBmdW5jdGlvbiAob3IgZXZpZGVuY2Ugb2YgYSBu
b24tZnVuY3Rpb24pIHdhcyBmb3VuZC4KKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCA1LAorICAgICAgICAgICAgICAgICAgJ0xp
bnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQorICAgIGVsaWYgbWF0
Y2gocideXH1ccyokJywgbGluZSk6ICAjIGZ1bmN0aW9uIGVuZAorICAgICAgICBpZiBub3Qgc2Vh
cmNoKHInXGJOT0xJTlRcYicsIHJhd19saW5lKToKKyAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRl
LmNoZWNrKGVycm9yLCBmaWxlbmFtZSwgbGluZV9udW1iZXIpCisgICAgICAgIGZ1bmN0aW9uX3N0
YXRlLmVuZCgpCisgICAgZWxpZiBub3QgbWF0Y2gocideXHMqJCcsIGxpbmUpOgorICAgICAgICBm
dW5jdGlvbl9zdGF0ZS5jb3VudCgpICAjIENvdW50IG5vbi1ibGFuay9ub24tY29tbWVudCBsaW5l
cy4KKworCitkZWYgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIGZvciB0aGUgY29ycmVjdG5lc3Mgb2YgdmFyaW91
cyBzcGFjaW5nIGlzc3VlcyBpbiB0aGUgY29kZS4KKworICAgIFRoaW5ncyB3ZSBjaGVjayBmb3I6
IHNwYWNlcyBhcm91bmQgb3BlcmF0b3JzLCBzcGFjZXMgYWZ0ZXIKKyAgICBpZi9mb3Ivd2hpbGUv
c3dpdGNoLCBubyBzcGFjZXMgYXJvdW5kIHBhcmVucyBpbiBmdW5jdGlvbiBjYWxscywgdHdvCisg
ICAgc3BhY2VzIGJldHdlZW4gY29kZSBhbmQgY29tbWVudCwgZG9uJ3Qgc3RhcnQgYSBibG9jayB3
aXRoIGEgYmxhbmsKKyAgICBsaW5lLCBkb24ndCBlbmQgYSBmdW5jdGlvbiB3aXRoIGEgYmxhbmsg
bGluZSwgZG9uJ3QgaGF2ZSB0b28gbWFueQorICAgIGJsYW5rIGxpbmVzIGluIGEgcm93LgorCisg
ICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgor
ICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRo
ZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hl
Y2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgorICAgICIiIgorCisgICAgcmF3ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAgbGlu
ZSA9IHJhd1tsaW5lX251bWJlcl0KKworICAgICMgQmVmb3JlIG5peGluZyBjb21tZW50cywgY2hl
Y2sgaWYgdGhlIGxpbmUgaXMgYmxhbmsgZm9yIG5vIGdvb2QKKyAgICAjIHJlYXNvbi4gIFRoaXMg
aW5jbHVkZXMgdGhlIGZpcnN0IGxpbmUgYWZ0ZXIgYSBibG9jayBpcyBvcGVuZWQsIGFuZAorICAg
ICMgYmxhbmsgbGluZXMgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIChpZSwgcmlnaHQgYmVmb3Jl
IGEgbGluZSBsaWtlICd9JykuCisgICAgaWYgaXNfYmxhbmtfbGluZShsaW5lKToKKyAgICAgICAg
ZWxpZGVkID0gY2xlYW5fbGluZXMuZWxpZGVkCisgICAgICAgIHByZXZpb3VzX2xpbmUgPSBlbGlk
ZWRbbGluZV9udW1iZXIgLSAxXQorICAgICAgICBwcmV2aW91c19icmFjZSA9IHByZXZpb3VzX2xp
bmUucmZpbmQoJ3snKQorICAgICAgICAjIEZJWE1FOiBEb24ndCBjb21wbGFpbiBpZiBsaW5lIGJl
Zm9yZSBibGFuayBsaW5lLCBhbmQgbGluZSBhZnRlciwKKyAgICAgICAgIyAgICAgICAgYm90aCBz
dGFydCB3aXRoIGFsbnVtcyBhbmQgYXJlIGluZGVudGVkIHRoZSBzYW1lIGFtb3VudC4KKyAgICAg
ICAgIyAgICAgICAgVGhpcyBpZ25vcmVzIHdoaXRlc3BhY2UgYXQgdGhlIHN0YXJ0IG9mIGEgbmFt
ZXNwYWNlIGJsb2NrCisgICAgICAgICMgICAgICAgIGJlY2F1c2UgdGhvc2UgYXJlIG5vdCB1c3Vh
bGx5IGluZGVudGVkLgorICAgICAgICBpZiAocHJldmlvdXNfYnJhY2UgIT0gLTEgYW5kIHByZXZp
b3VzX2xpbmVbcHJldmlvdXNfYnJhY2U6XS5maW5kKCd9JykgPT0gLTEKKyAgICAgICAgICAgIGFu
ZCBwcmV2aW91c19saW5lWzpwcmV2aW91c19icmFjZV0uZmluZCgnbmFtZXNwYWNlJykgPT0gLTEp
OgorICAgICAgICAgICAgIyBPSywgd2UgaGF2ZSBhIGJsYW5rIGxpbmUgYXQgdGhlIHN0YXJ0IG9m
IGEgY29kZSBibG9jay4gIEJlZm9yZSB3ZQorICAgICAgICAgICAgIyBjb21wbGFpbiwgd2UgY2hl
Y2sgaWYgaXQgaXMgYW4gZXhjZXB0aW9uIHRvIHRoZSBydWxlOiBUaGUgcHJldmlvdXMKKyAgICAg
ICAgICAgICMgbm9uLWVtcHR5IGxpbmUgaGFzIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24g
aGVhZGVyIHRoYXQgYXJlIGluZGVudGVkCisgICAgICAgICAgICAjIDQgc3BhY2VzIChiZWNhdXNl
IHRoZXkgZGlkIG5vdCBmaXQgaW4gYSA4MCBjb2x1bW4gbGluZSB3aGVuIHBsYWNlZCBvbgorICAg
ICAgICAgICAgIyB0aGUgc2FtZSBsaW5lIGFzIHRoZSBmdW5jdGlvbiBuYW1lKS4gIFdlIGFsc28g
Y2hlY2sgZm9yIHRoZSBjYXNlIHdoZXJlCisgICAgICAgICAgICAjIHRoZSBwcmV2aW91cyBsaW5l
IGlzIGluZGVudGVkIDYgc3BhY2VzLCB3aGljaCBtYXkgaGFwcGVuIHdoZW4gdGhlCisgICAgICAg
ICAgICAjIGluaXRpYWxpemVycyBvZiBhIGNvbnN0cnVjdG9yIGRvIG5vdCBmaXQgaW50byBhIDgw
IGNvbHVtbiBsaW5lLgorICAgICAgICAgICAgZXhjZXB0aW9uID0gRmFsc2UKKyAgICAgICAgICAg
IGlmIG1hdGNoKHInIHs2fVx3JywgcHJldmlvdXNfbGluZSk6ICAjIEluaXRpYWxpemVyIGxpc3Q/
CisgICAgICAgICAgICAgICAgIyBXZSBhcmUgbG9va2luZyBmb3IgdGhlIG9wZW5pbmcgY29sdW1u
IG9mIGluaXRpYWxpemVyIGxpc3QsIHdoaWNoCisgICAgICAgICAgICAgICAgIyBzaG91bGQgYmUg
aW5kZW50ZWQgNCBzcGFjZXMgdG8gY2F1c2UgNiBzcGFjZSBpbmRlbnRhdGlvbiBhZnRlcndhcmRz
LgorICAgICAgICAgICAgICAgIHNlYXJjaF9wb3NpdGlvbiA9IGxpbmVfbnVtYmVyIC0gMgorICAg
ICAgICAgICAgICAgIHdoaWxlIChzZWFyY2hfcG9zaXRpb24gPj0gMAorICAgICAgICAgICAgICAg
ICAgICAgICBhbmQgbWF0Y2gocicgezZ9XHcnLCBlbGlkZWRbc2VhcmNoX3Bvc2l0aW9uXSkpOgor
ICAgICAgICAgICAgICAgICAgICBzZWFyY2hfcG9zaXRpb24gLT0gMQorICAgICAgICAgICAgICAg
IGV4Y2VwdGlvbiA9IChzZWFyY2hfcG9zaXRpb24gPj0gMAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhbmQgZWxpZGVkW3NlYXJjaF9wb3NpdGlvbl1bOjVdID09ICcgICAgOicpCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgU2VhcmNoIGZvciB0aGUgZnVuY3Rpb24g
YXJndW1lbnRzIG9yIGFuIGluaXRpYWxpemVyIGxpc3QuICBXZSB1c2UgYQorICAgICAgICAgICAg
ICAgICMgc2ltcGxlIGhldXJpc3RpYyBoZXJlOiBJZiB0aGUgbGluZSBpcyBpbmRlbnRlZCA0IHNw
YWNlczsgYW5kIHdlIGhhdmUgYQorICAgICAgICAgICAgICAgICMgY2xvc2luZyBwYXJlbiwgd2l0
aG91dCB0aGUgb3BlbmluZyBwYXJlbiwgZm9sbG93ZWQgYnkgYW4gb3BlbmluZyBicmFjZQorICAg
ICAgICAgICAgICAgICMgb3IgY29sb24gKGZvciBpbml0aWFsaXplciBsaXN0cykgd2UgYXNzdW1l
IHRoYXQgaXQgaXMgdGhlIGxhc3QgbGluZSBvZgorICAgICAgICAgICAgICAgICMgYSBmdW5jdGlv
biBoZWFkZXIuICBJZiB3ZSBoYXZlIGEgY29sb24gaW5kZW50ZWQgNCBzcGFjZXMsIGl0IGlzIGFu
CisgICAgICAgICAgICAgICAgIyBpbml0aWFsaXplciBsaXN0LgorICAgICAgICAgICAgICAgIGV4
Y2VwdGlvbiA9IChtYXRjaChyJyB7NH1cd1teXChdKlwpXHMqKGNvbnN0XHMqKT8oXHtccyokfDop
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNfbGluZSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgbWF0Y2gocicgezR9OicsIHByZXZpb3VzX2xp
bmUpKQorCisgICAgICAgICAgICBpZiBub3QgZXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYmxhbmtfbGluZScsIDIsCisg
ICAgICAgICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIHN0YXJ0IG9mIGEgY29kZSBi
bG9jay4gIElzIHRoaXMgbmVlZGVkPycpCisgICAgICAgICMgVGhpcyBkb2Vzbid0IGlnbm9yZSB3
aGl0ZXNwYWNlIGF0IHRoZSBlbmQgb2YgYSBuYW1lc3BhY2UgYmxvY2sKKyAgICAgICAgIyBiZWNh
dXNlIHRoYXQgaXMgdG9vIGhhcmQgd2l0aG91dCBwYWlyaW5nIG9wZW4vY2xvc2UgYnJhY2VzOwor
ICAgICAgICAjIGhvd2V2ZXIsIGEgc3BlY2lhbCBleGNlcHRpb24gaXMgbWFkZSBmb3IgbmFtZXNw
YWNlIGNsb3NpbmcKKyAgICAgICAgIyBicmFja2V0cyB3aGljaCBoYXZlIGEgY29tbWVudCBjb250
YWluaW5nICJuYW1lc3BhY2UiLgorICAgICAgICAjCisgICAgICAgICMgQWxzbywgaWdub3JlIGJs
YW5rIGxpbmVzIGF0IHRoZSBlbmQgb2YgYSBibG9jayBpbiBhIGxvbmcgaWYtZWxzZQorICAgICAg
ICAjIGNoYWluLCBsaWtlIHRoaXM6CisgICAgICAgICMgICBpZiAoY29uZGl0aW9uMSkgeworICAg
ICAgICAjICAgICAvLyBTb21ldGhpbmcgZm9sbG93ZWQgYnkgYSBibGFuayBsaW5lCisgICAgICAg
ICMKKyAgICAgICAgIyAgIH0gZWxzZSBpZiAoY29uZGl0aW9uMikgeworICAgICAgICAjICAgICAv
LyBTb21ldGhpbmcgZWxzZQorICAgICAgICAjICAgfQorICAgICAgICBpZiBsaW5lX251bWJlciAr
IDEgPCBjbGVhbl9saW5lcy5udW1fbGluZXMoKToKKyAgICAgICAgICAgIG5leHRfbGluZSA9IHJh
d1tsaW5lX251bWJlciArIDFdCisgICAgICAgICAgICBpZiAobmV4dF9saW5lCisgICAgICAgICAg
ICAgICAgYW5kIG1hdGNoKHInXHMqfScsIG5leHRfbGluZSkKKyAgICAgICAgICAgICAgICBhbmQg
bmV4dF9saW5lLmZpbmQoJ25hbWVzcGFjZScpID09IC0xCisgICAgICAgICAgICAgICAgYW5kIG5l
eHRfbGluZS5maW5kKCd9IGVsc2UgJykgPT0gLTEpOgorICAgICAgICAgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvYmxhbmtfbGluZScsIDMsCisgICAgICAg
ICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJ
cyB0aGlzIG5lZWRlZD8nKQorCisgICAgIyBOZXh0LCB3ZSBjb21wbGFpbiBpZiB0aGVyZSdzIGEg
Y29tbWVudCB0b28gbmVhciB0aGUgdGV4dAorICAgIGNvbW1lbnRfcG9zaXRpb24gPSBsaW5lLmZp
bmQoJy8vJykKKyAgICBpZiBjb21tZW50X3Bvc2l0aW9uICE9IC0xOgorICAgICAgICAjIENoZWNr
IGlmIHRoZSAvLyBtYXkgYmUgaW4gcXVvdGVzLiAgSWYgc28sIGlnbm9yZSBpdAorICAgICAgICAj
IENvbXBhcmlzb25zIG1hZGUgZXhwbGljaXQgZm9yIGNsYXJpdHkgLS0gcHlsaW50OiBkaXNhYmxl
LW1zZz1DNjQwMworICAgICAgICBpZiAobGluZS5jb3VudCgnIicsIDAsIGNvbW1lbnRfcG9zaXRp
b24pIC0gbGluZS5jb3VudCgnXFwiJywgMCwgY29tbWVudF9wb3NpdGlvbikpICUgMiA9PSAwOiAg
ICMgbm90IGluIHF1b3RlcworICAgICAgICAgICAgIyBBbGxvdyBvbmUgc3BhY2UgZm9yIG5ldyBz
Y29wZXMsIHR3byBzcGFjZXMgb3RoZXJ3aXNlOgorICAgICAgICAgICAgaWYgKG5vdCBtYXRjaChy
J15ccyp7IC8vJywgbGluZSkKKyAgICAgICAgICAgICAgICBhbmQgKChjb21tZW50X3Bvc2l0aW9u
ID49IDEKKyAgICAgICAgICAgICAgICAgICAgICBhbmQgbGluZVtjb21tZW50X3Bvc2l0aW9uLTFd
IG5vdCBpbiBzdHJpbmcud2hpdGVzcGFjZSkKKyAgICAgICAgICAgICAgICAgICAgIG9yIChjb21t
ZW50X3Bvc2l0aW9uID49IDIKKyAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGluZVtjb21t
ZW50X3Bvc2l0aW9uLTJdIG5vdCBpbiBzdHJpbmcud2hpdGVzcGFjZSkpKToKKyAgICAgICAgICAg
ICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1lbnRzJywg
MiwKKyAgICAgICAgICAgICAgICAgICAgICAnQXQgbGVhc3QgdHdvIHNwYWNlcyBpcyBiZXN0IGJl
dHdlZW4gY29kZSBhbmQgY29tbWVudHMnKQorICAgICAgICAgICAgIyBUaGVyZSBzaG91bGQgYWx3
YXlzIGJlIGEgc3BhY2UgYmV0d2VlbiB0aGUgLy8gYW5kIHRoZSBjb21tZW50CisgICAgICAgICAg
ICBjb21tZW50ZW5kID0gY29tbWVudF9wb3NpdGlvbiArIDIKKyAgICAgICAgICAgIGlmIGNvbW1l
bnRlbmQgPCBsZW4obGluZSkgYW5kIG5vdCBsaW5lW2NvbW1lbnRlbmRdID09ICcgJzoKKyAgICAg
ICAgICAgICAgICAjIGJ1dCBzb21lIGxpbmVzIGFyZSBleGNlcHRpb25zIC0tIGUuZy4gaWYgdGhl
eSdyZSBiaWcKKyAgICAgICAgICAgICAgICAjIGNvbW1lbnQgZGVsaW1pdGVycyBsaWtlOgorICAg
ICAgICAgICAgICAgICMgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgIyBvciB0aGV5IGJlZ2luIHdpdGgg
bXVsdGlwbGUgc2xhc2hlcyBmb2xsb3dlZCBieSBhIHNwYWNlOgorICAgICAgICAgICAgICAgICMg
Ly8vLy8vLy8gSGVhZGVyIGNvbW1lbnQKKyAgICAgICAgICAgICAgICBtYXRjaGVkID0gKHNlYXJj
aChyJ1s9Ly1dezQsfVxzKiQnLCBsaW5lW2NvbW1lbnRlbmQ6XSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG9yIHNlYXJjaChyJ14vKyAnLCBsaW5lW2NvbW1lbnRlbmQ6XSkpCisgICAgICAg
ICAgICAgICAgaWYgbm90IG1hdGNoZWQ6CisgICAgICAgICAgICAgICAgICAgIGVycm9yKGZpbGVu
YW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvY29tbWVudHMnLCA0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUgYSBzcGFjZSBiZXR3ZWVuIC8vIGFuZCBjb21tZW50
JykKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICAjIGdldCBy
aWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKKworICAgICMgRG9uJ3QgdHJ5IHRvIGRvIHNwYWNp
bmcgY2hlY2tzIGZvciBvcGVyYXRvciBtZXRob2RzCisgICAgbGluZSA9IHJlLnN1YihyJ29wZXJh
dG9yKD09fCE9fDx8PDx8PD18Pj18Pj58PilcKCcsICdvcGVyYXRvclwoJywgbGluZSkKKworICAg
ICMgV2UgYWxsb3cgbm8tc3BhY2VzIGFyb3VuZCA9IHdpdGhpbiBhbiBpZjogImlmICggKGE9Rm9v
KCkpID09IDAgKSIuCisgICAgIyBPdGhlcndpc2Ugbm90LiAgTm90ZSB3ZSBvbmx5IGNoZWNrIGZv
ciBub24tc3BhY2VzIG9uICpib3RoKiBzaWRlczsKKyAgICAjIHNvbWV0aW1lcyBwZW9wbGUgcHV0
IG5vbi1zcGFjZXMgb24gb25lIHNpZGUgd2hlbiBhbGlnbmluZyA9J3MgYW1vbmcKKyAgICAjIG1h
bnkgbGluZXMgKG5vdCB0aGF0IHRoaXMgaXMgYmVoYXZpb3IgdGhhdCBJIGFwcHJvdmUgb2YuLi4p
CisgICAgaWYgc2VhcmNoKHInW1x3Ll09W1x3Ll0nLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ1xi
KGlmfHdoaWxlKSAnLCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCAnd2hpdGVzcGFjZS9vcGVyYXRvcnMnLCA0LAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFj
ZXMgYXJvdW5kID0nKQorCisgICAgIyBGSVhNRTogSXQncyBub3Qgb2sgdG8gaGF2ZSBzcGFjZXMg
YXJvdW5kIGJpbmFyeSBvcGVyYXRvcnMgbGlrZSArIC0gKiAvIC4KKworICAgICMgWW91IHNob3Vs
ZCBhbHdheXMgaGF2ZSB3aGl0ZXNwYWNlIGFyb3VuZCBiaW5hcnkgb3BlcmF0b3JzLgorICAgICMg
QWxhcywgd2UgY2FuJ3QgdGVzdCA8IG9yID4gYmVjYXVzZSB0aGV5J3JlIGxlZ2l0aW1hdGVseSB1
c2VkIHNhbnMgc3BhY2VzCisgICAgIyAoYS0+YiwgdmVjdG9yPGludD4gYSkuICBUaGUgb25seSB0
aW1lIHdlIGNhbiB0ZWxsIGlzIGEgPCB3aXRoIG5vID4sIGFuZAorICAgICMgb25seSBpZiBpdCdz
IG5vdCB0ZW1wbGF0ZSBwYXJhbXMgbGlzdCBzcGlsbGluZyBpbnRvIHRoZSBuZXh0IGxpbmUuCisg
ICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49IVxzXSg9PXwhPXw8PXw+PSlbXjw+PSFcc10nLCBs
aW5lKQorICAgIGlmIG5vdCBtYXRjaGVkOgorICAgICAgICAjIE5vdGUgdGhhdCB3aGlsZSBpdCBz
ZWVtcyB0aGF0IHRoZSAnPFtePF0qJyB0ZXJtIGluIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIyBy
ZWdleHAgY291bGQgYmUgc2ltcGxpZmllZCB0byAnPC4qJywgd2hpY2ggd291bGQgaW5kZWVkIG1h
dGNoCisgICAgICAgICMgdGhlIHNhbWUgY2xhc3Mgb2Ygc3RyaW5ncywgdGhlIFtePF0gbWVhbnMg
dGhhdCBzZWFyY2hpbmcgZm9yIHRoZQorICAgICAgICAjIHJlZ2V4cCB0YWtlcyBsaW5lYXIgcmF0
aGVyIHRoYW4gcXVhZHJhdGljIHRpbWUuCisgICAgICAgIGlmIG5vdCBzZWFyY2gocic8W148XSos
XHMqJCcsIGxpbmUpOiAgIyB0ZW1wbGF0ZSBwYXJhbXMgc3BpbGwKKyAgICAgICAgICAgIG1hdGNo
ZWQgPSBzZWFyY2gocidbXjw+PSFcc10oPClbXjw+PSFcc10oW14+XXwtPikqJCcsIGxpbmUpCisg
ICAgaWYgbWF0Y2hlZDoKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hp
dGVzcGFjZS9vcGVyYXRvcnMnLCAzLAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJv
dW5kICVzJyAlIG1hdGNoZWQuZ3JvdXAoMSkpCisgICAgIyBXZSBhbGxvdyBuby1zcGFjZXMgYXJv
dW5kIDw8IGFuZCA+PiB3aGVuIHVzZWQgbGlrZSB0aGlzOiAxMDw8MjAsIGJ1dAorICAgICMgbm90
IG90aGVyd2lzZSAocGFydGljdWxhcmx5LCBub3Qgd2hlbiB1c2VkIGFzIHN0cmVhbXMpCisgICAg
bWF0Y2hlZCA9IHNlYXJjaChyJ1teMC05XHNdKDw8fD4+KVteMC05XHNdJywgbGluZSkKKyAgICBp
ZiBtYXRjaGVkOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL29wZXJhdG9ycycsIDMsCisgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlcyBhcm91bmQg
JXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKKworICAgICMgVGhlcmUgc2hvdWxkbid0IGJlIHNwYWNl
IGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMKKyAgICBtYXRjaGVkID0gc2VhcmNoKHInKCFcc3x+XHN8
W1xzXS0tW1xzO118W1xzXVwrXCtbXHM7XSknLCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywg
NCwKKyAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGZvciBvcGVyYXRvciAlcycgJSBtYXRjaGVk
Lmdyb3VwKDEpKQorCisgICAgIyBBIHBldCBwZWV2ZSBvZiBtaW5lOiBubyBzcGFjZXMgYWZ0ZXIg
YW4gaWYsIHdoaWxlLCBzd2l0Y2gsIG9yIGZvcgorICAgIG1hdGNoZWQgPSBzZWFyY2gocicgKGlm
XCh8Zm9yXCh8Zm9yZWFjaFwofHdoaWxlXCh8c3dpdGNoXCgpJywgbGluZSkKKyAgICBpZiBtYXRj
aGVkOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3Bh
cmVucycsIDUsCisgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9yZSAoIGluICVzJyAl
IG1hdGNoZWQuZ3JvdXAoMSkpCisKKyAgICAjIEZvciBpZi9mb3IvZm9yZWFjaC93aGlsZS9zd2l0
Y2gsIHRoZSBsZWZ0IGFuZCByaWdodCBwYXJlbnMgc2hvdWxkIGJlCisgICAgIyBjb25zaXN0ZW50
IGFib3V0IGhvdyBtYW55IHNwYWNlcyBhcmUgaW5zaWRlIHRoZSBwYXJlbnMsIGFuZAorICAgICMg
dGhlcmUgc2hvdWxkIGVpdGhlciBiZSB6ZXJvIG9yIG9uZSBzcGFjZXMgaW5zaWRlIHRoZSBwYXJl
bnMuCisgICAgIyBXZSBkb24ndCB3YW50OiAiaWYgKCBmb28pIiBvciAiaWYgKCBmb28gICApIi4K
KyAgICAjIEV4Y2VwdGlvbjogImZvciAoIDsgZm9vOyBiYXIpIiBhbmQgImZvciAoZm9vOyBiYXI7
ICkiIGFyZSBhbGxvd2VkLgorICAgIG1hdGNoZWQgPSBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFj
aHx3aGlsZXxzd2l0Y2gpXHMqXCgoWyBdKikoLikuKlteIF0rKFsgXSopXClccyp7XHMqJCcsCisg
ICAgICAgICAgICAgICAgICAgICBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGlmIGxl
bihtYXRjaGVkLmdyb3VwKDIpKSAhPSBsZW4obWF0Y2hlZC5ncm91cCg0KSk6CisgICAgICAgICAg
ICBpZiBub3QgKG1hdGNoZWQuZ3JvdXAoMykgPT0gJzsnCisgICAgICAgICAgICAgICAgICAgIGFu
ZCBsZW4obWF0Y2hlZC5ncm91cCgyKSkgPT0gMSArIGxlbihtYXRjaGVkLmdyb3VwKDQpKQorICAg
ICAgICAgICAgICAgICAgICBvciBub3QgbWF0Y2hlZC5ncm91cCgyKSBhbmQgc2VhcmNoKHInXGJm
b3JccypcKC4qOyBcKScsIGxpbmUpKToKKyAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDUsCisgICAgICAgICAgICAgICAgICAg
ICAgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgx
KSkKKyAgICAgICAgaWYgbm90IGxlbihtYXRjaGVkLmdyb3VwKDIpKSBpbiBbMCwgMV06CisgICAg
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycs
IDUsCisgICAgICAgICAgICAgICAgICAnU2hvdWxkIGhhdmUgemVybyBvciBvbmUgc3BhY2VzIGlu
c2lkZSAoIGFuZCApIGluICVzJyAlCisgICAgICAgICAgICAgICAgICBtYXRjaGVkLmdyb3VwKDEp
KQorCisgICAgIyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIGEgc3BhY2UgYWZ0ZXIgYSBjb21tYSAo
ZWl0aGVyIGFzIGZuIGFyZyBvciBvcGVyYXRvcikKKyAgICBpZiBzZWFyY2gocicsW15cc10nLCBs
aW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9j
b21tYScsIDMsCisgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwnKQorCisgICAg
IyBOZXh0IHdlIHdpbGwgbG9vayBmb3IgaXNzdWVzIHdpdGggZnVuY3Rpb24gY2FsbHMuCisgICAg
Y2hlY2tfc3BhY2luZ19mb3JfZnVuY3Rpb25fY2FsbChmaWxlbmFtZSwgbGluZSwgbGluZV9udW1i
ZXIsIGVycm9yKQorCisgICAgIyBFeGNlcHQgYWZ0ZXIgYW4gb3BlbmluZyBwYXJlbiwgeW91IHNo
b3VsZCBoYXZlIHNwYWNlcyBiZWZvcmUgeW91ciBicmFjZXMuCisgICAgIyBBbmQgc2luY2UgeW91
IHNob3VsZCBuZXZlciBoYXZlIGJyYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSwgdGhp
cyBpcworICAgICMgYW4gZWFzeSB0ZXN0LgorICAgIGlmIHNlYXJjaChyJ1teICh7XXsnLCBsaW5l
KToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFj
ZXMnLCA1LAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgeycpCisKKyAgICAj
IE1ha2Ugc3VyZSAnfSBlbHNlIHsnIGhhcyBzcGFjZXMuCisgICAgaWYgc2VhcmNoKHInfWVsc2Un
LCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9icmFjZXMnLCA1LAorICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgZWxzZScp
CisKKyAgICAjIFlvdSBzaG91bGRuJ3QgaGF2ZSBzcGFjZXMgYmVmb3JlIHlvdXIgYnJhY2tldHMs
IGV4Y2VwdCBtYXliZSBhZnRlcgorICAgICMgJ2RlbGV0ZSBbXScgb3IgJ25ldyBjaGFyICogW10n
LgorICAgIGlmIHNlYXJjaChyJ1x3XHMrXFsnLCBsaW5lKSBhbmQgbm90IHNlYXJjaChyJ2RlbGV0
ZVxzK1xbJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvYnJhY2VzJywgNSwKKyAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSBb
JykKKworICAgICMgWW91IHNob3VsZG4ndCBoYXZlIGEgc3BhY2UgYmVmb3JlIGEgc2VtaWNvbG9u
IGF0IHRoZSBlbmQgb2YgdGhlIGxpbmUuCisgICAgIyBUaGVyZSdzIGEgc3BlY2lhbCBjYXNlIGZv
ciAiZm9yIiBzaW5jZSB0aGUgc3R5bGUgZ3VpZGUgYWxsb3dzIHNwYWNlIGJlZm9yZQorICAgICMg
dGhlIHNlbWljb2xvbiB0aGVyZS4KKyAgICBpZiBzZWFyY2gocic6XHMqO1xzKiQnLCBsaW5lKToK
KyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29s
b24nLCA1LAorICAgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVu
dC4gVXNlIHsgfSBpbnN0ZWFkLicpCisgICAgZWxpZiBzZWFyY2gocideXHMqO1xzKiQnLCBsaW5l
KToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1p
Y29sb24nLCA1LAorICAgICAgICAgICAgICAnTGluZSBjb250YWlucyBvbmx5IHNlbWljb2xvbi4g
SWYgdGhpcyBzaG91bGQgYmUgYW4gZW1wdHkgc3RhdGVtZW50LCAnCisgICAgICAgICAgICAgICd1
c2UgeyB9IGluc3RlYWQuJykKKyAgICBlbGlmIChzZWFyY2gocidccys7XHMqJCcsIGxpbmUpIGFu
ZCBub3Qgc2VhcmNoKHInXGJmb3JcYicsIGxpbmUpKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAorICAgICAgICAgICAgICAn
RXh0cmEgc3BhY2UgYmVmb3JlIGxhc3Qgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBl
bXB0eSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIHVzZSB7IH0gaW5zdGVhZC4nKQorICAg
IGVsaWYgKHNlYXJjaChyJ1xiKGZvcnx3aGlsZSlccypcKC4qXClccyo7XHMqJCcsIGxpbmUpCisg
ICAgICAgICAgYW5kIGxpbmUuY291bnQoJygnKSA9PSBsaW5lLmNvdW50KCcpJykKKyAgICAgICAg
ICAjIEFsbG93IGRvIHt9IHdoaWxlKCk7CisgICAgICAgICAgYW5kIG5vdCBzZWFyY2gocid9XHMq
d2hpbGUnLCBsaW5lKSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3do
aXRlc3BhY2Uvc2VtaWNvbG9uJywgNSwKKyAgICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmlu
ZyBlbXB0eSBzdGF0ZW1lbnQgZm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0ZWFkLicpCisKKwor
ZGVmIGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIp
OgorICAgICIiIlJldHVybiB0aGUgbW9zdCByZWNlbnQgbm9uLWJsYW5rIGxpbmUgYW5kIGl0cyBs
aW5lIG51bWJlci4KKworICAgIEFyZ3M6CisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExp
bmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUgY29udGVudHMuCisgICAgICBsaW5lX251
bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKworICAgIFJldHVybnM6Cisg
ICAgICBBIHR1cGxlIHdpdGggdHdvIGVsZW1lbnRzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaXMgdGhl
IGNvbnRlbnRzIG9mIHRoZSBsYXN0CisgICAgICBub24tYmxhbmsgbGluZSBiZWZvcmUgdGhlIGN1
cnJlbnQgbGluZSwgb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGlzIGlzIHRoZQorICAgICAgZmly
c3Qgbm9uLWJsYW5rIGxpbmUuICBUaGUgc2Vjb25kIGlzIHRoZSBsaW5lIG51bWJlciBvZiB0aGF0
IGxpbmUsIG9yIC0xCisgICAgICBpZiB0aGlzIGlzIHRoZSBmaXJzdCBub24tYmxhbmsgbGluZS4K
KyAgICAiIiIKKworICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgLSAxCisg
ICAgd2hpbGUgcHJldmlvdXNfbGluZV9udW1iZXIgPj0gMDoKKyAgICAgICAgcHJldmlvdXNfbGlu
ZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtwcmV2aW91c19saW5lX251bWJlcl0KKyAgICAgICAgaWYg
bm90IGlzX2JsYW5rX2xpbmUocHJldmlvdXNfbGluZSk6ICAgICAjIGlmIG5vdCBhIGJsYW5rIGxp
bmUuLi4KKyAgICAgICAgICAgIHJldHVybiAocHJldmlvdXNfbGluZSwgcHJldmlvdXNfbGluZV9u
dW1iZXIpCisgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDEKKyAgICByZXR1cm4gKCcn
LCAtMSkKKworCitkZWYgY2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVh
bl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcik6CisgICAgIiIiTG9v
a3MgZm9yIGluZGVudGF0aW9uIGVycm9ycyBpbnNpZGUgb2YgbmFtZXNwYWNlcy4KKworICAgIEFy
Z3M6CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAg
IGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmls
ZS4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgor
ICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9m
IHRoZSBmaWxlLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVy
cm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGlu
ZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KKworICAgIG5hbWVz
cGFjZV9tYXRjaCA9IG1hdGNoKHInKD9QPG5hbWVzcGFjZV9pbmRlbnRhdGlvbj5ccyopbmFtZXNw
YWNlXHMrXFMrXHMqe1xzKiQnLCBsaW5lKQorICAgIGlmIG5vdCBuYW1lc3BhY2VfbWF0Y2g6Cisg
ICAgICAgIHJldHVybgorCisgICAgbmFtZXNwYWNlX2luZGVudGF0aW9uID0gbmFtZXNwYWNlX21h
dGNoLmdyb3VwKCduYW1lc3BhY2VfaW5kZW50YXRpb24nKQorCisgICAgaXNfaGVhZGVyX2ZpbGUg
PSBmaWxlX2V4dGVuc2lvbiA9PSAnaCcKKyAgICBpc19pbXBsZW1lbnRhdGlvbl9maWxlID0gbm90
IGlzX2hlYWRlcl9maWxlCisgICAgbGluZV9vZmZzZXQgPSAwCisKKyAgICBpZiBpc19oZWFkZXJf
ZmlsZToKKyAgICAgICAgaW5uZXJfaW5kZW50YXRpb24gPSBuYW1lc3BhY2VfaW5kZW50YXRpb24g
KyAnICcgKiA0CisKKyAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5yYXdf
bGluZXNbbGluZV9udW1iZXIgKyAxOl06CisgICAgICAgICAgICBsaW5lX29mZnNldCArPSAxCisK
KyAgICAgICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3
aXRoIHByZXByb2Nlc3NvciBkaXJlY3RpdmVzLgorICAgICAgICAgICAgIyBHb3RvIGxhYmVscyBk
b24ndCBvY2N1ciBpbiBoZWFkZXIgZmlsZXMsIHNvIG5vIG5lZWQgdG8gY2hlY2sgZm9yIHRob3Nl
LgorICAgICAgICAgICAgaWYgY3VycmVudF9saW5lLnN0cmlwKCkgPT0gJycgb3IgY3VycmVudF9s
aW5lLnN0YXJ0c3dpdGgoJyMnKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
ICAgICBpZiBub3QgY3VycmVudF9saW5lLnN0YXJ0c3dpdGgoaW5uZXJfaW5kZW50YXRpb24pOgor
ICAgICAgICAgICAgICAgICMgSWYgc29tZXRoaW5nIHVuaW5kZW50ZWQgd2FzIGRpc2NvdmVyZWQs
IG1ha2Ugc3VyZSBpdCdzIGEgY2xvc2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICBpZiBub3Qg
Y3VycmVudF9saW5lLnN0YXJ0c3dpdGgobmFtZXNwYWNlX2luZGVudGF0aW9uICsgJ30nKToKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZz
ZXQsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdJ
biBhIGhlYWRlciwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIGJlIGluZGVudGVkLicp
CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgIGlmIGlzX2ltcGxlbWVudGF0aW9uX2ZpbGU6
CisgICAgICAgIGZvciBjdXJyZW50X2xpbmUgaW4gY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVf
bnVtYmVyICsgMTpdOgorICAgICAgICAgICAgbGluZV9vZmZzZXQgKz0gMQorCisgICAgICAgICAg
ICAjIFNraXAgbm90IG9ubHkgZW1wdHkgbGluZXMgYnV0IGFsc28gdGhvc2Ugd2l0aCAoZ290bykg
bGFiZWxzLgorICAgICAgICAgICAgIyBUaGUgZ290byBsYWJlbCByZWdleHAgYWNjZXB0cyBzcGFj
ZXMgb3IgdGhlIGJlZ2lubmluZyBvZiBhCisgICAgICAgICAgICAjIGNvbW1lbnQgKGlmIGFueXRo
aW5nKSBhZnRlciB0aGUgaW5pdGlhbCBjb2xvbi4KKyAgICAgICAgICAgIGlmIGN1cnJlbnRfbGlu
ZS5zdHJpcCgpID09ICcnIG9yIG1hdGNoKHInXHcrXHMqOihbXHNcL10uKik/JCcsIGN1cnJlbnRf
bGluZSk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcmVtYWluaW5n
X2xpbmUgPSBjdXJyZW50X2xpbmVbbGVuKG5hbWVzcGFjZV9pbmRlbnRhdGlvbik6XQorICAgICAg
ICAgICAgaWYgbm90IG1hdGNoKHInXFMnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0ZXNwYWNl
L2luZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAgICAgJ0luIGFuIGltcGxlbWVudGF0aW9u
IGZpbGUsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuJykK
KworICAgICAgICAgICAgIyBKdXN0IGNoZWNrIHRoZSBmaXJzdCBub24tZW1wdHkgbGluZSBpbiBh
bnkgY2FzZSwgYmVjYXVzZQorICAgICAgICAgICAgIyBvdGhlcndpc2Ugd2Ugd291bGQgbmVlZCB0
byBjb3VudCBvcGVuZWQgYW5kIGNsb3NlZCBicmFjZXMsCisgICAgICAgICAgICAjIHdoaWNoIGlz
IG9idmlvdXNseSBhIGxvdCBtb3JlIGNvbXBsaWNhdGVkLgorICAgICAgICAgICAgYnJlYWsKKwor
CitkZWYgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGlu
ZV9udW1iZXIsIGVycm9yKToKKyAgICAiIiJMb29rcyBmb3IgaW5kZW50YXRpb24gZXJyb3JzIGlu
c2lkZSBvZiBzd2l0Y2ggc3RhdGVtZW50cy4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTog
VGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFu
c2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAgIGxpbmVfbnVtYmVy
OiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZXJyb3I6IFRoZSBmdW5j
dGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBvZiBjb21tZW50cyBh
bmQgc3RyaW5ncy4KKworICAgIHN3aXRjaF9tYXRjaCA9IG1hdGNoKHInKD9QPHN3aXRjaF9pbmRl
bnRhdGlvbj5ccyopc3dpdGNoXHMqXCguK1wpXHMqe1xzKiQnLCBsaW5lKQorICAgIGlmIG5vdCBz
d2l0Y2hfbWF0Y2g6CisgICAgICAgIHJldHVybgorCisgICAgc3dpdGNoX2luZGVudGF0aW9uID0g
c3dpdGNoX21hdGNoLmdyb3VwKCdzd2l0Y2hfaW5kZW50YXRpb24nKQorICAgIGlubmVyX2luZGVu
dGF0aW9uID0gc3dpdGNoX2luZGVudGF0aW9uICsgJyAnICogNAorICAgIGxpbmVfb2Zmc2V0ID0g
MAorICAgIGVuY291bnRlcmVkX25lc3RlZF9zd2l0Y2ggPSBGYWxzZQorCisgICAgZm9yIGN1cnJl
bnRfbGluZSBpbiBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXIgKyAxOl06CisgICAgICAg
IGxpbmVfb2Zmc2V0ICs9IDEKKworICAgICAgICAjIFNraXAgbm90IG9ubHkgZW1wdHkgbGluZXMg
YnV0IGFsc28gdGhvc2Ugd2l0aCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4KKyAgICAgICAgaWYg
Y3VycmVudF9saW5lLnN0cmlwKCkgPT0gJycgb3IgY3VycmVudF9saW5lLnN0YXJ0c3dpdGgoJyMn
KToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgbWF0Y2gocidccypzd2l0Y2hc
cypcKC4rXClccyp7XHMqJCcsIGN1cnJlbnRfbGluZSk6CisgICAgICAgICAgICAjIENvbXBsZXhp
dHkgYWxhcm0gLSBhbm90aGVyIHN3aXRjaCBzdGF0ZW1lbnQgbmVzdGVkIGluc2lkZSB0aGUgb25l
CisgICAgICAgICAgICAjIHRoYXQgd2UncmUgY3VycmVudGx5IHRlc3RpbmcuIFdlJ2xsIG5lZWQg
dG8gdHJhY2sgdGhlIGV4dGVudCBvZgorICAgICAgICAgICAgIyB0aGF0IGlubmVyIHN3aXRjaCBp
ZiB0aGUgdXBjb21pbmcgbGFiZWwgdGVzdHMgYXJlIHN0aWxsIHN1cHBvc2VkCisgICAgICAgICAg
ICAjIHRvIHdvcmsgY29ycmVjdGx5LiBMZXQncyBub3QgZG8gdGhhdDsgaW5zdGVhZCwgd2UnbGwg
ZmluaXNoCisgICAgICAgICAgICAjIGNoZWNraW5nIHRoaXMgbGluZSwgYW5kIHRoZW4gbGVhdmUg
aXQgbGlrZSB0aGF0LiBBc3N1bWluZyB0aGUKKyAgICAgICAgICAgICMgaW5kZW50YXRpb24gaXMg
ZG9uZSBjb25zaXN0ZW50bHkgKGV2ZW4gaWYgaW5jb3JyZWN0bHkpLCB0aGlzIHdpbGwKKyAgICAg
ICAgICAgICMgc3RpbGwgY2F0Y2ggYWxsIGluZGVudGF0aW9uIGlzc3VlcyBpbiBwcmFjdGljZS4K
KyAgICAgICAgICAgIGVuY291bnRlcmVkX25lc3RlZF9zd2l0Y2ggPSBUcnVlCisKKyAgICAgICAg
Y3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaCA9IG1hdGNoKHInKD9QPGluZGVudGF0aW9uPlxzKiko
P1A8cmVtYWluaW5nX2xpbmU+LiopJCcsIGN1cnJlbnRfbGluZSk7CisgICAgICAgIGN1cnJlbnRf
aW5kZW50YXRpb24gPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdpbmRlbnRhdGlv
bicpCisgICAgICAgIHJlbWFpbmluZ19saW5lID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5n
cm91cCgncmVtYWluaW5nX2xpbmUnKQorCisgICAgICAgICMgRW5kIHRoZSBjaGVjayBhdCB0aGUg
ZW5kIG9mIHRoZSBzd2l0Y2ggc3RhdGVtZW50LgorICAgICAgICBpZiByZW1haW5pbmdfbGluZS5z
dGFydHN3aXRoKCd9JykgYW5kIGN1cnJlbnRfaW5kZW50YXRpb24gPT0gc3dpdGNoX2luZGVudGF0
aW9uOgorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgIyBDYXNlIGFuZCBkZWZhdWx0IGJyYW5j
aGVzIHNob3VsZCBub3QgYmUgaW5kZW50ZWQuIFRoZSByZWdleHAgYWxzbworICAgICAgICAjIGNh
dGNoZXMgc2luZ2xlLWxpbmUgY2FzZXMgbGlrZSAiZGVmYXVsdDogYnJlYWs7IiBidXQgZG9lcyBu
b3QgdHJpZ2dlcgorICAgICAgICAjIG9uIHN0dWZmIGxpa2UgIkRvY3VtZW50OjpGb28oKTsiLgor
ICAgICAgICBlbGlmIG1hdGNoKHInKGRlZmF1bHR8Y2FzZVxzKy4qKVxzKjooW146XS4qKT8kJywg
cmVtYWluaW5nX2xpbmUpOgorICAgICAgICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbiAhPSBz
d2l0Y2hfaW5kZW50YXRpb246CisgICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVf
bnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2luZGVudCcsIDQsCisgICAgICAgICAg
ICAgICAgICAgICAgJ0EgY2FzZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGlu
ZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LicpCisgICAgICAgICAgICAgICAgIyBEb24n
dCB0aHJvdyBhbiBlcnJvciBmb3IgbXVsdGlwbGUgYmFkbHkgaW5kZW50ZWQgbGFiZWxzLAorICAg
ICAgICAgICAgICAgICMgb25lIHNob3VsZCBiZSBlbm91Z2ggdG8gZmlndXJlIG91dCB0aGUgcHJv
YmxlbS4KKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAjIFdlIGlnbm9yZSBnb3RvIGxh
YmVscyBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2YgYSBsaW5lLgorICAgICAgICBlbGlmIG1hdGNo
KHInXHcrXHMqOlxzKiQnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAgICAgICBjb250aW51ZQor
ICAgICAgICAjIEl0J3Mgbm90IGEgZ290byBsYWJlbCwgc28gY2hlY2sgaWYgaXQncyBpbmRlbnRl
ZCBhdCBsZWFzdCBhcyBmYXIgYXMKKyAgICAgICAgIyB0aGUgc3dpdGNoIHN0YXRlbWVudCBwbHVz
IG9uZSBtb3JlIGxldmVsIG9mIGluZGVudGF0aW9uLgorICAgICAgICBlbGlmIG5vdCBjdXJyZW50
X2luZGVudGF0aW9uLnN0YXJ0c3dpdGgoaW5uZXJfaW5kZW50YXRpb24pOgorICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICd3aGl0ZXNwYWNlL2lu
ZGVudCcsIDQsCisgICAgICAgICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUgaW5zaWRlIHN3aXRj
aCBzdGF0ZW1lbnRzIHNob3VsZCBiZSBpbmRlbnRlZC4nKQorICAgICAgICAgICAgIyBEb24ndCB0
aHJvdyBhbiBlcnJvciBmb3IgbXVsdGlwbGUgYmFkbHkgaW5kZW50ZWQgc3RhdGVtZW50cywKKyAg
ICAgICAgICAgICMgb25lIHNob3VsZCBiZSBlbm91Z2ggdG8gZmlndXJlIG91dCB0aGUgcHJvYmxl
bS4KKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgZW5jb3VudGVyZWRfbmVzdGVkX3N3
aXRjaDoKKyAgICAgICAgICAgIGJyZWFrCisKKworZGVmIGNoZWNrX2JyYWNlcyhmaWxlbmFtZSwg
Y2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CisgICAgIiIiTG9va3MgZm9yIG1pc3Bs
YWNlZCBicmFjZXMgKGUuZy4gYXQgdGhlIGVuZCBvZiBsaW5lKS4KKworICAgIEFyZ3M6CisgICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNsZWFuX2xp
bmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KKyAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAgICAgZXJy
b3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIK
KworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdICMgR2V0IHJpZCBv
ZiBjb21tZW50cyBhbmQgc3RyaW5ncy4KKworICAgIGlmIG1hdGNoKHInXHMqe1xzKiQnLCBsaW5l
KToKKyAgICAgICAgIyBXZSBhbGxvdyBhbiBvcGVuIGJyYWNlIHRvIHN0YXJ0IGEgbGluZSBpbiB0
aGUgY2FzZSB3aGVyZSBzb21lb25lCisgICAgICAgICMgaXMgdXNpbmcgYnJhY2VzIGZvciBmdW5j
dGlvbiBkZWZpbml0aW9uIG9yIGluIGEgYmxvY2sgdG8KKyAgICAgICAgIyBleHBsaWNpdGx5IGNy
ZWF0ZSBhIG5ldyBzY29wZSwgd2hpY2ggaXMgY29tbW9ubHkgdXNlZCB0byBjb250cm9sCisgICAg
ICAgICMgdGhlIGxpZmV0aW1lIG9mIHN0YWNrLWFsbG9jYXRlZCB2YXJpYWJsZXMuICBXZSBkb24n
dCBkZXRlY3QgdGhpcworICAgICAgICAjIHBlcmZlY3RseTogd2UganVzdCBkb24ndCBjb21wbGFp
biBpZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZQorICAgICAgICAjIGNoYXJhY3RlciBvbiB0aGUg
cHJldmlvdXMgbm9uLWJsYW5rIGxpbmUgaXMgJzsnLCAnOicsICd7JywgJ30nLAorICAgICAgICAj
ICcpJywgb3IgJykgY29uc3QnIGFuZCBkb2Vzbid0IGJlZ2luIHdpdGggJ2lmfGZvcnx3aGlsZXxz
d2l0Y2h8ZWxzZScuCisgICAgICAgICMgV2UgYWxzbyBhbGxvdyAnIycgZm9yICNlbmRpZiBhbmQg
Jz0nIGZvciBhcnJheSBpbml0aWFsaXphdGlvbi4KKyAgICAgICAgcHJldmlvdXNfbGluZSA9IGdl
dF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdCisg
ICAgICAgIGlmICgobm90IHNlYXJjaChyJ1s7On17KT1dXHMqJHxcKVxzKmNvbnN0XHMqJCcsIHBy
ZXZpb3VzX2xpbmUpCisgICAgICAgICAgICAgb3Igc2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8
d2hpbGV8c3dpdGNofGVsc2UpXGInLCBwcmV2aW91c19saW5lKSkKKyAgICAgICAgICAgIGFuZCBw
cmV2aW91c19saW5lLmZpbmQoJyMnKSA8IDApOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA0LAorICAgICAgICAgICAgICAgICAg
J1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZScpCisgICAg
ZWxpZiAoc2VhcmNoKHInXClccyooY29uc3RccyopP3tccyokJywgbGluZSkKKyAgICAgICAgICBh
bmQgbGluZS5jb3VudCgnKCcpID09IGxpbmUuY291bnQoJyknKQorICAgICAgICAgIGFuZCBub3Qg
c2VhcmNoKHInXGIoaWZ8Zm9yfGZvcmVhY2h8d2hpbGV8c3dpdGNoKVxiJywgbGluZSkpOgorICAg
ICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQs
CisgICAgICAgICAgICAgICdQbGFjZSBicmFjZSBvbiBpdHMgb3duIGxpbmUgZm9yIGZ1bmN0aW9u
IGRlZmluaXRpb25zLicpCisKKyAgICBpZiAobWF0Y2gocidccyp9XHMqJCcsIGxpbmUpIGFuZCBs
aW5lX251bWJlciA+IDEpOgorICAgICAgICAjIFdlIGNoZWNrIGlmIGEgY2xvc2VkIGJyYWNlIGhh
cyBzdGFydGVkIGEgbGluZSB0byBzZWUgaWYgYQorICAgICAgICAjIG9uZSBsaW5lIGNvbnRyb2wg
c3RhdGVtZW50IHdhcyBwcmV2aW91cy4KKyAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xp
bmVzLmVsaWRlZFtsaW5lX251bWJlciAtIDJdCisgICAgICAgIGlmIChwcmV2aW91c19saW5lLmZp
bmQoJ3snKSA+IDAKKyAgICAgICAgICAgIGFuZCBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3
aGlsZXxlbHNlKVxiJywgcHJldmlvdXNfbGluZSkpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA0LAorICAgICAgICAgICAgICAg
ICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuJykKKwor
ICAgICMgQW4gZWxzZSBjbGF1c2Ugc2hvdWxkIGJlIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHBy
ZWNlZGluZyBjbG9zaW5nIGJyYWNlLgorICAgIGlmIG1hdGNoKHInXHMqZWxzZVxzKicsIGxpbmUp
OgorICAgICAgICBwcmV2aW91c19saW5lID0gZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlcilbMF0KKyAgICAgICAgaWYgbWF0Y2gocidccyp9XHMqJCcs
IHByZXZpb3VzX2xpbmUpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKKyAgICAgICAgICAgICAgICAgICdBbiBlbHNlIHNo
b3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0nKQorCisgICAg
IyBMaWtld2lzZSwgYW4gZWxzZSBzaG91bGQgbmV2ZXIgaGF2ZSB0aGUgZWxzZSBjbGF1c2Ugb24g
dGhlIHNhbWUgbGluZQorICAgIGlmIHNlYXJjaChyJ1xiZWxzZSBbXlxze10nLCBsaW5lKSBhbmQg
bm90IHNlYXJjaChyJ1xiZWxzZSBpZlxiJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvbmV3bGluZScsIDQsCisgICAgICAgICAgICAgICdF
bHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgKHVzZSAyIGxp
bmVzKScpCisKKyAgICAjIEluIHRoZSBzYW1lIHdheSwgYSBkby93aGlsZSBzaG91bGQgbmV2ZXIg
YmUgb24gb25lIGxpbmUKKyAgICBpZiBtYXRjaChyJ1xzKmRvIFteXHN7XScsIGxpbmUpOgorICAg
ICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCA0
LAorICAgICAgICAgICAgICAnZG8vd2hpbGUgY2xhdXNlcyBzaG91bGQgbm90IGJlIG9uIGEgc2lu
Z2xlIGxpbmUnKQorCisgICAgIyBCcmFjZXMgc2hvdWxkbid0IGJlIGZvbGxvd2VkIGJ5IGEgOyB1
bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAorICAgICMgb3IgaW5pdGlhbGl6aW5nIGFu
IGFycmF5LgorICAgICMgV2UgY2FuJ3QgdGVsbCBpbiBnZW5lcmFsLCBidXQgd2UgY2FuIGZvciBz
b21lIGNvbW1vbiBjYXNlcy4KKyAgICBwcmV2aW91c19saW5lX251bWJlciA9IGxpbmVfbnVtYmVy
CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgKHByZXZpb3VzX2xpbmUsIHByZXZpb3VzX2xpbmVf
bnVtYmVyKSA9IGdldF9wcmV2aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgcHJldmlv
dXNfbGluZV9udW1iZXIpCisgICAgICAgIGlmIG1hdGNoKHInXHMrey4qfVxzKjsnLCBsaW5lKSBh
bmQgbm90IHByZXZpb3VzX2xpbmUuY291bnQoJzsnKToKKyAgICAgICAgICAgIGxpbmUgPSBwcmV2
aW91c19saW5lICsgbGluZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICBp
ZiAoc2VhcmNoKHIney4qfVxzKjsnLCBsaW5lKQorICAgICAgICBhbmQgbGluZS5jb3VudCgneycp
ID09IGxpbmUuY291bnQoJ30nKQorICAgICAgICBhbmQgbm90IHNlYXJjaChyJ3N0cnVjdHxjbGFz
c3xlbnVtfFxzKj1ccyp7JywgbGluZSkpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9u
dW1iZXIsICdyZWFkYWJpbGl0eS9icmFjZXMnLCA0LAorICAgICAgICAgICAgICAiWW91IGRvbid0
IG5lZWQgYSA7IGFmdGVyIGEgfSIpCisKKworZGVmIGNoZWNrX2V4aXRfc3RhdGVtZW50X3NpbXBs
aWZpY2F0aW9ucyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Cisg
ICAgIiIiTG9va3MgZm9yIGVsc2Ugb3IgZWxzZS1pZiBzdGF0ZW1lbnRzIHRoYXQgc2hvdWxkIGJl
IHdyaXR0ZW4gYXMgYW4KKyAgICBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgcHJpb3IgaWYgY29uY2x1
ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvcgorICAgIGdvdG8gc3RhdGVtZW50
LgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWlu
aW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgorICAgICIiIgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5l
X251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgorCisgICAgZWxzZV9t
YXRjaCA9IG1hdGNoKHInKD9QPGVsc2VfaW5kZW50YXRpb24+XHMqKShcfVxzKik/ZWxzZShccytp
ZlxzKlwofCg/UDxlbHNlPlxzKihce1xzKik/XFopKScsIGxpbmUpCisgICAgaWYgbm90IGVsc2Vf
bWF0Y2g6CisgICAgICAgIHJldHVybgorCisgICAgZWxzZV9pbmRlbnRhdGlvbiA9IGVsc2VfbWF0
Y2guZ3JvdXAoJ2Vsc2VfaW5kZW50YXRpb24nKQorICAgIGlubmVyX2luZGVudGF0aW9uID0gZWxz
ZV9pbmRlbnRhdGlvbiArICcgJyAqIDQKKworICAgIHByZXZpb3VzX2xpbmVzID0gY2xlYW5fbGlu
ZXMuZWxpZGVkWzpsaW5lX251bWJlcl0KKyAgICBwcmV2aW91c19saW5lcy5yZXZlcnNlKCkKKyAg
ICBsaW5lX29mZnNldCA9IDAKKyAgICBlbmNvdW50ZXJlZF9leGl0X3N0YXRlbWVudCA9IEZhbHNl
CisKKyAgICBmb3IgY3VycmVudF9saW5lIGluIHByZXZpb3VzX2xpbmVzOgorICAgICAgICBsaW5l
X29mZnNldCAtPSAxCisKKyAgICAgICAgIyBTa2lwIG5vdCBvbmx5IGVtcHR5IGxpbmVzIGJ1dCBh
bHNvIHRob3NlIHdpdGggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMKKyAgICAgICAgIyBhbmQgZ290
byBsYWJlbHMuCisgICAgICAgIGlmIGN1cnJlbnRfbGluZS5zdHJpcCgpID09ICcnIG9yIGN1cnJl
bnRfbGluZS5zdGFydHN3aXRoKCcjJykgb3IgbWF0Y2gocidcdytccyo6XHMqJCcsIGN1cnJlbnRf
bGluZSk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgU2tpcCBsaW5lcyB3aXRo
IGNsb3NpbmcgYnJhY2VzIG9uIHRoZSBvcmlnaW5hbCBpbmRlbnRhdGlvbiBsZXZlbC4KKyAgICAg
ICAgIyBFdmVuIHRob3VnaCB0aGUgc3R5bGVndWlkZSBzYXlzIHRoZXkgc2hvdWxkIGJlIG9uIHRo
ZSBzYW1lIGxpbmUgYXMKKyAgICAgICAgIyB0aGUgImVsc2UgaWYiIHN0YXRlbWVudCwgd2UgYWxz
byB3YW50IHRvIGNoZWNrIGZvciBpbnN0YW5jZXMgd2hlcmUKKyAgICAgICAgIyB0aGUgY3VycmVu
dCBjb2RlIGRvZXMgbm90IGNvbXBseSB3aXRoIHRoZSBjb2Rpbmcgc3R5bGUuIFRodXMsIGlnbm9y
ZQorICAgICAgICAjIHRoZXNlIGxpbmVzIGFuZCBwcm9jZWVkIHRvIHRoZSBsaW5lIGJlZm9yZSB0
aGF0LgorICAgICAgICBpZiBjdXJyZW50X2xpbmUgPT0gZWxzZV9pbmRlbnRhdGlvbiArICd9JzoK
KyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY3VycmVudF9pbmRlbnRhdGlvbl9tYXRj
aCA9IG1hdGNoKHInKD9QPGluZGVudGF0aW9uPlxzKikoP1A8cmVtYWluaW5nX2xpbmU+LiopJCcs
IGN1cnJlbnRfbGluZSk7CisgICAgICAgIGN1cnJlbnRfaW5kZW50YXRpb24gPSBjdXJyZW50X2lu
ZGVudGF0aW9uX21hdGNoLmdyb3VwKCdpbmRlbnRhdGlvbicpCisgICAgICAgIHJlbWFpbmluZ19s
aW5lID0gY3VycmVudF9pbmRlbnRhdGlvbl9tYXRjaC5ncm91cCgncmVtYWluaW5nX2xpbmUnKQor
CisgICAgICAgICMgQXMgd2UncmUgZ29pbmcgdXAgdGhlIGxpbmVzLCB0aGUgZmlyc3QgcmVhbCBz
dGF0ZW1lbnQgdG8gZW5jb3VudGVyCisgICAgICAgICMgaGFzIHRvIGJlIGFuIGV4aXQgc3RhdGVt
ZW50IChyZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvKSAtCisgICAgICAgICMgb3RoZXJ3
aXNlLCB0aGlzIGNoZWNrIGRvZXNuJ3QgYXBwbHkuCisgICAgICAgIGlmIG5vdCBlbmNvdW50ZXJl
ZF9leGl0X3N0YXRlbWVudDoKKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGZpbmQgZXhp
dCBzdGF0ZW1lbnRzIGlmIHRoZXkgYXJlIG9uIGV4YWN0bHkKKyAgICAgICAgICAgICMgdGhlIHNh
bWUgbGV2ZWwgb2YgaW5kZW50YXRpb24gYXMgZXhwZWN0ZWQgZnJvbSB0aGUgY29kZSBpbnNpZGUK
KyAgICAgICAgICAgICMgdGhlIGJsb2NrLiBJZiB0aGUgaW5kZW50YXRpb24gZG9lc24ndCBzdHJp
Y3RseSBtYXRjaCB0aGVuIHdlCisgICAgICAgICAgICAjIG1pZ2h0IGhhdmUgYSBuZXN0ZWQgaWYg
b3Igc29tZXRoaW5nLCB3aGljaCBtdXN0IGJlIGlnbm9yZWQuCisgICAgICAgICAgICBpZiBjdXJy
ZW50X2luZGVudGF0aW9uICE9IGlubmVyX2luZGVudGF0aW9uOgorICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBpZiBtYXRjaChyJyhyZXR1cm4oXFcrLiopfChicmVha3xjb250aW51
ZSlccyo7fGdvdG9ccypcdys7KSQnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAgICAgICAgICAg
ZW5jb3VudGVyZWRfZXhpdF9zdGF0ZW1lbnQgPSBUcnVlCisgICAgICAgICAgICAgICAgY29udGlu
dWUKKyAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgIyBXaGVuIGNvZGUgZXhlY3V0aW9uIHJl
YWNoZXMgdGhpcyBwb2ludCwgd2UndmUgZm91bmQgYW4gZXhpdCBzdGF0ZW1lbnQKKyAgICAgICAg
IyBhcyBsYXN0IHN0YXRlbWVudCBvZiB0aGUgcHJldmlvdXMgYmxvY2suIE5vdyB3ZSBvbmx5IG5l
ZWQgdG8gbWFrZQorICAgICAgICAjIHN1cmUgdGhhdCB0aGUgYmxvY2sgYmVsb25ncyB0byBhbiAi
aWYiLCB0aGVuIHdlIGNhbiB0aHJvdyBhbiBlcnJvci4KKworICAgICAgICAjIFNraXAgbGluZXMg
d2l0aCBvcGVuaW5nIGJyYWNlcyBvbiB0aGUgb3JpZ2luYWwgaW5kZW50YXRpb24gbGV2ZWwsCisg
ICAgICAgICMgc2ltaWxhciB0byB0aGUgY2xvc2luZyBicmFjZXMgY2hlY2sgYWJvdmUuICgiaWYg
KGNvbmRpdGlvbilcbnsiKQorICAgICAgICBpZiBjdXJyZW50X2xpbmUgPT0gZWxzZV9pbmRlbnRh
dGlvbiArICd7JzoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgIyBTa2lwIGV2ZXJ5
dGhpbmcgdGhhdCdzIGZ1cnRoZXIgaW5kZW50ZWQgdGhhbiBvdXIgImVsc2UiIG9yICJlbHNlIGlm
Ii4KKyAgICAgICAgaWYgY3VycmVudF9pbmRlbnRhdGlvbi5zdGFydHN3aXRoKGVsc2VfaW5kZW50
YXRpb24pIGFuZCBjdXJyZW50X2luZGVudGF0aW9uICE9IGVsc2VfaW5kZW50YXRpb246CisgICAg
ICAgICAgICBjb250aW51ZQorCisgICAgICAgICMgU28gd2UndmUgZ290IGEgbGluZSB3aXRoIHNh
bWUgKG9yIGxlc3MpIGluZGVudGF0aW9uLiBJcyBpdCBhbiAiaWYiPworICAgICAgICAjIElmIHll
czogdGhyb3cgYW4gZXJyb3IuIElmIG5vOiBkb24ndCB0aHJvdyBhbiBlcnJvci4KKyAgICAgICAg
IyBXaGF0ZXZlciB0aGUgb3V0Y29tZSwgdGhpcyBpcyB0aGUgZW5kIG9mIG91ciBsb29wLgorICAg
ICAgICBpZiBtYXRjaChyJ2lmXHMqXCgnLCByZW1haW5pbmdfbGluZSk6CisgICAgICAgICAgICBp
ZiBlbHNlX21hdGNoLnN0YXJ0KCdlbHNlJykgIT0gLTE6CisgICAgICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyICsgbGluZV9vZmZzZXQsICdyZWFkYWJpbGl0eS9jb250cm9s
X2Zsb3cnLCA0LAorICAgICAgICAgICAgICAgICAgICAgICdBbiBlbHNlIHN0YXRlbWVudCBjYW4g
YmUgcmVtb3ZlZCB3aGVuIHRoZSBwcmlvciAiaWYiICcKKyAgICAgICAgICAgICAgICAgICAgICAn
Y29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVu
dC4nKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwg
bGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvdycsIDQs
CisgICAgICAgICAgICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3
cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgICAgICAgICAgJ3doZW4g
dGhlIHByaW9yICJpZiIgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCAnCisgICAgICAg
ICAgICAgICAgICAgICAgJ2NvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicpCisgICAgICAgIGJy
ZWFrCisKKworZGVmIHJlcGxhY2VhYmxlX2NoZWNrKG9wZXJhdG9yLCBtYWNybywgbGluZSk6Cisg
ICAgIiIiRGV0ZXJtaW5lIHdoZXRoZXIgYSBiYXNpYyBDSEVDSyBjYW4gYmUgcmVwbGFjZWQgd2l0
aCBhIG1vcmUgc3BlY2lmaWMgb25lLgorCisgICAgRm9yIGV4YW1wbGUgc3VnZ2VzdCB1c2luZyBD
SEVDS19FUSBpbnN0ZWFkIG9mIENIRUNLKGEgPT0gYikgYW5kCisgICAgc2ltaWxhcmx5IGZvciBD
SEVDS19HRSwgQ0hFQ0tfR1QsIENIRUNLX0xFLCBDSEVDS19MVCwgQ0hFQ0tfTkUuCisKKyAgICBB
cmdzOgorICAgICAgb3BlcmF0b3I6IFRoZSBDKysgb3BlcmF0b3IgdXNlZCBpbiB0aGUgQ0hFQ0su
CisgICAgICBtYWNybzogVGhlIENIRUNLIG9yIEVYUEVDVCBtYWNybyBiZWluZyBjYWxsZWQuCisg
ICAgICBsaW5lOiBUaGUgY3VycmVudCBzb3VyY2UgbGluZS4KKworICAgIFJldHVybnM6CisgICAg
ICBUcnVlIGlmIHRoZSBDSEVDSyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIG1vcmUgc3BlY2lmaWMg
b25lLgorICAgICIiIgorCisgICAgIyBUaGlzIG1hdGNoZXMgZGVjaW1hbCBhbmQgaGV4IGludGVn
ZXJzLCBzdHJpbmdzLCBhbmQgY2hhcnMgKGluIHRoYXQgb3JkZXIpLgorICAgIG1hdGNoX2NvbnN0
YW50ID0gcicoWy0rXT8oXGQrfDBbeFhdWzAtOWEtZkEtRl0rKVtsTHVVXXswLDN9fCIuKiJ8XCcu
KlwnKScKKworICAgICMgRXhwcmVzc2lvbiB0byBtYXRjaCB0d28gc2lkZXMgb2YgdGhlIG9wZXJh
dG9yIHdpdGggc29tZXRoaW5nIHRoYXQKKyAgICAjIGxvb2tzIGxpa2UgYSBsaXRlcmFsLCBzaW5j
ZSBDSEVDSyh4ID09IGl0ZXJhdG9yKSB3b24ndCBjb21waWxlLgorICAgICMgVGhpcyBtZWFucyB3
ZSBjYW4ndCBjYXRjaCBhbGwgdGhlIGNhc2VzIHdoZXJlIGEgbW9yZSBzcGVjaWZpYworICAgICMg
Q0hFQ0sgaXMgcG9zc2libGUsIGJ1dCBpdCdzIGxlc3MgYW5ub3lpbmcgdGhhbiBkZWFsaW5nIHdp
dGgKKyAgICAjIGV4dHJhbmVvdXMgd2FybmluZ3MuCisgICAgbWF0Y2hfdGhpcyA9IChyJ1xzKicg
KyBtYWNybyArIHInXCgoXHMqJyArCisgICAgICAgICAgICAgICAgICBtYXRjaF9jb25zdGFudCAr
IHInXHMqJyArIG9wZXJhdG9yICsgcidbXjw+XS4qfCcKKyAgICAgICAgICAgICAgICAgIHInLipb
Xjw+XScgKyBvcGVyYXRvciArIHInXHMqJyArIG1hdGNoX2NvbnN0YW50ICsKKyAgICAgICAgICAg
ICAgICAgIHInXHMqXCkpJykKKworICAgICMgRG9uJ3QgY29tcGxhaW4gYWJvdXQgQ0hFQ0soeCA9
PSBOVUxMKSBvciBzaW1pbGFyIGJlY2F1c2UKKyAgICAjIENIRUNLX0VRKHgsIE5VTEwpIHdvbid0
IGNvbXBpbGUgKHJlcXVpcmVzIGEgY2FzdCkuCisgICAgIyBBbHNvLCBkb24ndCBjb21wbGFpbiBh
Ym91dCBtb3JlIGNvbXBsZXggYm9vbGVhbiBleHByZXNzaW9ucworICAgICMgaW52b2x2aW5nICYm
IG9yIHx8IHN1Y2ggYXMgQ0hFQ0soYSA9PSBiIHx8IGMgPT0gZCkuCisgICAgcmV0dXJuIG1hdGNo
KG1hdGNoX3RoaXMsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHInTlVMTHwmJnxcfFx8JywgbGluZSkK
KworCitkZWYgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZXJyb3IpOgorICAgICIiIkNoZWNrcyB0aGUgdXNlIG9mIENIRUNLIGFuZCBFWFBFQ1QgbWFjcm9z
LgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWlu
aW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJy
b3JzIGZvdW5kLgorICAgICIiIgorCisgICAgIyBEZWNpZGUgdGhlIHNldCBvZiByZXBsYWNlbWVu
dCBtYWNyb3MgdGhhdCBzaG91bGQgYmUgc3VnZ2VzdGVkCisgICAgcmF3X2xpbmVzID0gY2xlYW5f
bGluZXMucmF3X2xpbmVzCisgICAgY3VycmVudF9tYWNybyA9ICcnCisgICAgZm9yIG1hY3JvIGlu
IF9DSEVDS19NQUNST1M6CisgICAgICAgIGlmIHJhd19saW5lc1tsaW5lX251bWJlcl0uZmluZCht
YWNybykgPj0gMDoKKyAgICAgICAgICAgIGN1cnJlbnRfbWFjcm8gPSBtYWNybworICAgICAgICAg
ICAgYnJlYWsKKyAgICBpZiBub3QgY3VycmVudF9tYWNybzoKKyAgICAgICAgIyBEb24ndCB3YXN0
ZSB0aW1lIGhlcmUgaWYgbGluZSBkb2Vzbid0IGNvbnRhaW4gJ0NIRUNLJyBvciAnRVhQRUNUJwor
ICAgICAgICByZXR1cm4KKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1i
ZXJdICAgICAgICAjIGdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MKKworICAgICMgRW5j
b3VyYWdlIHJlcGxhY2luZyBwbGFpbiBDSEVDS3Mgd2l0aCBDSEVDS19FUS9DSEVDS19ORS9ldGMu
CisgICAgZm9yIG9wZXJhdG9yIGluIFsnPT0nLCAnIT0nLCAnPj0nLCAnPicsICc8PScsICc8J106
CisgICAgICAgIGlmIHJlcGxhY2VhYmxlX2NoZWNrKG9wZXJhdG9yLCBjdXJyZW50X21hY3JvLCBs
aW5lKToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmls
aXR5L2NoZWNrJywgMiwKKyAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyAlcyBpbnN0
ZWFkIG9mICVzKGEgJXMgYiknICUgKAorICAgICAgICAgICAgICAgICAgICAgIF9DSEVDS19SRVBM
QUNFTUVOVFtjdXJyZW50X21hY3JvXVtvcGVyYXRvcl0sCisgICAgICAgICAgICAgICAgICAgICAg
Y3VycmVudF9tYWNybywgb3BlcmF0b3IpKQorICAgICAgICAgICAgYnJlYWsKKworCitkZWYgY2hl
Y2tfZm9yX2NvbXBhcmlzb25zX3RvX3plcm8oZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZXJyb3IpOgorICAgICMgR2V0IHRoZSBsaW5lIHdpdGhvdXQgY29tbWVudHMgYW5kIHN0
cmluZ3MuCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0KKworICAg
ICMgSW5jbHVkZSBOVUxMIGhlcmUgc28gdGhhdCB1c2VycyBkb24ndCBoYXZlIHRvIGNvbnZlcnQg
TlVMTCB0byAwIGZpcnN0IGFuZCB0aGVuIGdldCB0aGlzIGVycm9yLgorICAgIGlmIHNlYXJjaChy
J1s9IV09XHMqKE5VTEx8MHx0cnVlfGZhbHNlKVxXJywgbGluZSkgb3Igc2VhcmNoKHInXFcoTlVM
THwwfHRydWV8ZmFsc2UpXHMqWz0hXT0nLCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvJywgNSwKKyAgICAg
ICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9u
b24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4n
KQorCisKK2RlZiBjaGVja19mb3JfbnVsbChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcik6CisgICAgIyBUaGlzIGNoZWNrIGRvZXNuJ3QgYXBwbHkgdG8gQyBvciBPYmpl
Y3RpdmUtQyBpbXBsZW1lbnRhdGlvbiBmaWxlcy4KKyAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgn
LmMnKSBvciBmaWxlbmFtZS5lbmRzd2l0aCgnLm0nKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBs
aW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQorICAgIGlmIHNlYXJjaChyJ1xi
TlVMTFxiJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3Jl
YWRhYmlsaXR5L251bGwnLCA1LCAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicpCisgICAgICAgIHJl
dHVybgorCisgICAgbGluZSA9IGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlcl0KKyAg
ICAjIFNlZSBpZiBOVUxMIG9jY3VycyBpbiBhbnkgY29tbWVudHMgaW4gdGhlIGxpbmUuIElmIHRo
ZSBzZWFyY2ggZm9yIE5VTEwgdXNpbmcgdGhlIHJhdyBsaW5lCisgICAgIyBtYXRjaGVzLCB0aGVu
IGRvIHRoZSBjaGVjayB3aXRoIHN0cmluZ3MgY29sbGFwc2VkIHRvIGF2b2lkIGdpdmluZyBlcnJv
cnMgZm9yCisgICAgIyBOVUxMcyBvY2N1cnJpbmcgaW4gc3RyaW5ncy4KKyAgICBpZiBzZWFyY2go
cidcYk5VTExcYicsIGxpbmUpIGFuZCBzZWFyY2gocidcYk5VTExcYicsIENsZWFuc2VkTGluZXMu
Y29sbGFwc2Vfc3RyaW5ncyhsaW5lKSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3JlYWRhYmlsaXR5L251bGwnLCA0LCAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicpCisK
K2RlZiBnZXRfbGluZV93aWR0aChsaW5lKToKKyAgICAiIiJEZXRlcm1pbmVzIHRoZSB3aWR0aCBv
ZiB0aGUgbGluZSBpbiBjb2x1bW4gcG9zaXRpb25zLgorCisgICAgQXJnczoKKyAgICAgIGxpbmU6
IEEgc3RyaW5nLCB3aGljaCBtYXkgYmUgYSBVbmljb2RlIHN0cmluZy4KKworICAgIFJldHVybnM6
CisgICAgICBUaGUgd2lkdGggb2YgdGhlIGxpbmUgaW4gY29sdW1uIHBvc2l0aW9ucywgYWNjb3Vu
dGluZyBmb3IgVW5pY29kZQorICAgICAgY29tYmluaW5nIGNoYXJhY3RlcnMgYW5kIHdpZGUgY2hh
cmFjdGVycy4KKyAgICAiIiIKKyAgICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgorICAg
ICAgICB3aWR0aCA9IDAKKyAgICAgICAgZm9yIGMgaW4gdW5pY29kZWRhdGEubm9ybWFsaXplKCdO
RkMnLCBsaW5lKToKKyAgICAgICAgICAgIGlmIHVuaWNvZGVkYXRhLmVhc3RfYXNpYW5fd2lkdGgo
YykgaW4gKCdXJywgJ0YnKToKKyAgICAgICAgICAgICAgICB3aWR0aCArPSAyCisgICAgICAgICAg
ICBlbGlmIG5vdCB1bmljb2RlZGF0YS5jb21iaW5pbmcoYyk6CisgICAgICAgICAgICAgICAgd2lk
dGggKz0gMQorICAgICAgICByZXR1cm4gd2lkdGgKKyAgICByZXR1cm4gbGVuKGxpbmUpCisKKwor
ZGVmIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVf
ZXh0ZW5zaW9uLCBlcnJvcik6CisgICAgIiIiQ2hlY2tzIHJ1bGVzIGZyb20gdGhlICdDKysgc3R5
bGUgcnVsZXMnIHNlY3Rpb24gb2YgY3BwZ3VpZGUuaHRtbC4KKworICAgIE1vc3Qgb2YgdGhlc2Ug
cnVsZXMgYXJlIGhhcmQgdG8gdGVzdCAobmFtaW5nLCBjb21tZW50IHN0eWxlKSwgYnV0IHdlCisg
ICAgZG8gd2hhdCB3ZSBjYW4uICBJbiBwYXJ0aWN1bGFyIHdlIGNoZWNrIGZvciA0LXNwYWNlIGlu
ZGVudHMsIGxpbmUgbGVuZ3RocywKKyAgICB0YWIgdXNhZ2UsIHNwYWNlcyBpbnNpZGUgY29kZSwg
ZXRjLgorCisgICAgQXJnczoKKyAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVu
dCBmaWxlLgorICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250
YWluaW5nIHRoZSBmaWxlLgorICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxp
bmUgdG8gY2hlY2suCisgICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAod2l0aG91
dCB0aGUgZG90KSBvZiB0aGUgZmlsZW5hbWUuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRv
IGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorCisgICAgcmF3X2xpbmVzID0g
Y2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAgbGluZSA9IHJhd19saW5lc1tsaW5lX251bWJlcl0K
KworICAgIGlmIGxpbmUuZmluZCgnXHQnKSAhPSAtMToKKyAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS90YWInLCAxLAorICAgICAgICAgICAgICAnVGFiIGZv
dW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcycpCisKKyAgICAjIE9uZSBvciB0aHJlZSBibGFuayBz
cGFjZXMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZSBpcyB3ZWlyZDsgaXQncworICAgICMg
aGFyZCB0byByZWNvbmNpbGUgdGhhdCB3aXRoIDQtc3BhY2UgaW5kZW50cy4KKyAgICAjIE5PVEU6
IGhlcmUgYXJlIHRoZSBjb25kaXRpb25zIHJvYiBwaWtlIHVzZWQgZm9yIGhpcyB0ZXN0cy4gIE1p
bmUgYXJlbid0CisgICAgIyBhcyBzb3BoaXN0aWNhdGVkLCBidXQgaXQgbWF5IGJlIHdvcnRoIGJl
Y29taW5nIHNvOiAgUkxFTkdUSD09aW5pdGlhbF9zcGFjZXMKKyAgICAjIGlmKFJMRU5HVEggPiAy
MCkgY29tcGxhaW4gPSAwOworICAgICMgaWYobWF0Y2goJDAsICIgKyhlcnJvcnxwcml2YXRlfHB1
YmxpY3xwcm90ZWN0ZWQpOiIpKSBjb21wbGFpbiA9IDA7CisgICAgIyBpZihtYXRjaChwcmV2LCAi
JiYgKiQiKSkgY29tcGxhaW4gPSAwOworICAgICMgaWYobWF0Y2gocHJldiwgIlxcfFxcfCAqJCIp
KSBjb21wbGFpbiA9IDA7CisgICAgIyBpZihtYXRjaChwcmV2LCAiW1wiLD0+PF0gKiQiKSkgY29t
cGxhaW4gPSAwOworICAgICMgaWYobWF0Y2goJDAsICIgPDwiKSkgY29tcGxhaW4gPSAwOworICAg
ICMgaWYobWF0Y2gocHJldiwgIiArZm9yIFxcKCIpKSBjb21wbGFpbiA9IDA7CisgICAgIyBpZihw
cmV2b2RkICYmIG1hdGNoKHByZXZwcmV2LCAiICtmb3IgXFwoIikpIGNvbXBsYWluID0gMDsKKyAg
ICBpbml0aWFsX3NwYWNlcyA9IDAKKyAgICBjbGVhbnNlZF9saW5lID0gY2xlYW5fbGluZXMuZWxp
ZGVkW2xpbmVfbnVtYmVyXQorICAgIHdoaWxlIGluaXRpYWxfc3BhY2VzIDwgbGVuKGxpbmUpIGFu
ZCBsaW5lW2luaXRpYWxfc3BhY2VzXSA9PSAnICc6CisgICAgICAgIGluaXRpYWxfc3BhY2VzICs9
IDEKKyAgICBpZiBsaW5lIGFuZCBsaW5lWy0xXS5pc3NwYWNlKCk6CisgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvZW5kX29mX2xpbmUnLCA0LAorICAgICAg
ICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBkZWxldGluZyB0aGVz
ZSBleHRyYSBzcGFjZXMuJykKKyAgICAjIFRoZXJlIGFyZSBjZXJ0YWluIHNpdHVhdGlvbnMgd2Ug
YWxsb3cgb25lIHNwYWNlLCBub3RhYmx5IGZvciBsYWJlbHMKKyAgICBlbGlmICgoaW5pdGlhbF9z
cGFjZXMgPj0gMSBhbmQgaW5pdGlhbF9zcGFjZXMgPD0gMykKKyAgICAgICAgICBhbmQgbm90IG1h
dGNoKHInXHMqXHcrXHMqOlxzKiQnLCBjbGVhbnNlZF9saW5lKSk6CisgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvaW5kZW50JywgMywKKyAgICAgICAgICAg
ICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKKyAgICAgICAgICAg
ICAgJ0FyZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8nKQorICAgICMgTGFiZWxzIHNob3Vs
ZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVhc3Qgb25lIHNwYWNlLgorICAgIGVsaWYgbm90IGlu
aXRpYWxfc3BhY2VzIGFuZCBsaW5lWzoyXSAhPSAnLy8nOgorICAgICAgICBsYWJlbF9tYXRjaCA9
IG1hdGNoKHInKD9QPGxhYmVsPlteOl0rKTpccyokJywgbGluZSkKKworICAgICAgICBpZiBsYWJl
bF9tYXRjaDoKKyAgICAgICAgICAgIGxhYmVsID0gbGFiZWxfbWF0Y2guZ3JvdXAoJ2xhYmVsJykK
KyAgICAgICAgICAgICMgT25seSB0aHJvdyBlcnJvcnMgZm9yIHN0dWZmIHRoYXQgaXMgZGVmaW5p
dGVseSBub3QgYSBnb3RvIGxhYmVsLAorICAgICAgICAgICAgIyBiZWNhdXNlIGdvdG8gbGFiZWxz
IGNhbiBpbiBmYWN0IG9jY3VyIGF0IHRoZSBzdGFydCBvZiB0aGUgbGluZS4KKyAgICAgICAgICAg
IGlmIGxhYmVsIGluIFsncHVibGljJywgJ3ByaXZhdGUnLCAncHJvdGVjdGVkJ10gb3IgbGFiZWwu
ZmluZCgnICcpICE9IC0xOgorICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3doaXRlc3BhY2UvbGFiZWxzJywgNCwKKyAgICAgICAgICAgICAgICAgICAgICAnTGFi
ZWxzIHNob3VsZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVhc3Qgb25lIHNwYWNlLiAgJworICAg
ICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGlzIGEgbWVtYmVyLWluaXRpYWxpemVyIGxpc3Qg
aW4gYSBjb25zdHJ1Y3RvciwgJworICAgICAgICAgICAgICAgICAgICAgICd0aGUgY29sb24gc2hv
dWxkIGJlIG9uIHRoZSBsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uIGhlYWRlci4nKQorCisgICAg
aWYgKGNsZWFuc2VkX2xpbmUuY291bnQoJzsnKSA+IDEKKyAgICAgICAgIyBmb3IgbG9vcHMgYXJl
IGFsbG93ZWQgdHdvIDsncyAoYW5kIG1heSBydW4gb3ZlciB0d28gbGluZXMpLgorICAgICAgICBh
bmQgY2xlYW5zZWRfbGluZS5maW5kKCdmb3InKSA9PSAtMQorICAgICAgICBhbmQgKGdldF9wcmV2
aW91c19ub25fYmxhbmtfbGluZShjbGVhbl9saW5lcywgbGluZV9udW1iZXIpWzBdLmZpbmQoJ2Zv
cicpID09IC0xCisgICAgICAgICAgICAgb3IgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlcilbMF0uZmluZCgnOycpICE9IC0xKQorICAgICAgICAjIEl0
J3Mgb2sgdG8gaGF2ZSBtYW55IGNvbW1hbmRzIGluIGEgc3dpdGNoIGNhc2UgdGhhdCBmaXRzIGlu
IDEgbGluZQorICAgICAgICBhbmQgbm90ICgoY2xlYW5zZWRfbGluZS5maW5kKCdjYXNlICcpICE9
IC0xCisgICAgICAgICAgICAgICAgICBvciBjbGVhbnNlZF9saW5lLmZpbmQoJ2RlZmF1bHQ6Jykg
IT0gLTEpCisgICAgICAgICAgICAgICAgIGFuZCBjbGVhbnNlZF9saW5lLmZpbmQoJ2JyZWFrOycp
ICE9IC0xKSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvbmV3bGluZScsIDQsCisgICAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24g
dGhlIHNhbWUgbGluZScpCisKKyAgICBpZiBjbGVhbnNlZF9saW5lLnN0cmlwKCkuZW5kc3dpdGgo
J3x8Jykgb3IgY2xlYW5zZWRfbGluZS5zdHJpcCgpLmVuZHN3aXRoKCcmJicpOgorICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDQsCisg
ICAgICAgICAgICAgICdCb29sZWFuIGV4cHJlc3Npb25zIHRoYXQgc3BhbiBtdWx0aXBsZSBsaW5l
cyBzaG91bGQgaGF2ZSB0aGVpciAnCisgICAgICAgICAgICAgICdvcGVyYXRvcnMgb24gdGhlIGxl
ZnQgc2lkZSBvZiB0aGUgbGluZSBpbnN0ZWFkIG9mIHRoZSByaWdodCBzaWRlLicpCisKKyAgICAj
IFNvbWUgbW9yZSBzdHlsZSBjaGVja3MKKyAgICBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24o
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9y
KQorICAgIGNoZWNrX3N3aXRjaF9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxp
bmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVja19icmFjZXMoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZXhpdF9zdGF0ZW1lbnRfc2ltcGxpZmlj
YXRpb25zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQorICAgIGNo
ZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisg
ICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3Ip
CisgICAgY2hlY2tfZm9yX2NvbXBhcmlzb25zX3RvX3plcm8oZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZm9yX251bGwoZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisKKworX1JFX1BBVFRFUk5fSU5DTFVERV9ORVdf
U1RZTEUgPSByZS5jb21waWxlKHInI2luY2x1ZGUgKyJbXi9dK1wuaCInKQorX1JFX1BBVFRFUk5f
SU5DTFVERSA9IHJlLmNvbXBpbGUocideXHMqI1xzKmluY2x1ZGVccyooWzwiXSkoW14+Il0qKVs+
Il0uKiQnKQorIyBNYXRjaGVzIHRoZSBmaXJzdCBjb21wb25lbnQgb2YgYSBmaWxlbmFtZSBkZWxp
bWl0ZWQgYnkgLXMgYW5kIF9zLiBUaGF0IGlzOgorIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRj
aCgnZm9vJykuZ3JvdXAoMCkgPT0gJ2ZvbycKKyMgIF9SRV9GSVJTVF9DT01QT05FTlQubWF0Y2go
J2Zvby5jcHAnKS5ncm91cCgwKSA9PSAnZm9vJworIyAgX1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRj
aCgnZm9vLWJhcl9iYXouY3BwJykuZ3JvdXAoMCkgPT0gJ2ZvbycKKyMgIF9SRV9GSVJTVF9DT01Q
T05FTlQubWF0Y2goJ2Zvb19iYXItYmF6LmNwcCcpLmdyb3VwKDApID09ICdmb28nCitfUkVfRklS
U1RfQ09NUE9ORU5UID0gcmUuY29tcGlsZShyJ15bXi1fLl0rJykKKworCitkZWYgX2Ryb3BfY29t
bW9uX3N1ZmZpeGVzKGZpbGVuYW1lKToKKyAgICAiIiJEcm9wcyBjb21tb24gc3VmZml4ZXMgbGlr
ZSBfdGVzdC5jcHAgb3IgLWlubC5oIGZyb20gZmlsZW5hbWUuCisKKyAgICBGb3IgZXhhbXBsZToK
KyAgICAgID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb28taW5sLmgnKQorICAgICAg
J2Zvby9mb28nCisgICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vYmFyL2Zvby5j
cHAnKQorICAgICAgJ2Zvby9iYXIvZm9vJworICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZmaXhl
cygnZm9vL2Zvb19pbnRlcm5hbC5oJykKKyAgICAgICdmb28vZm9vJworICAgICAgPj4+IF9kcm9w
X2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwuaCcpCisgICAgICAnZm9v
L2Zvb191bnVzdWFsaW50ZXJuYWwnCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBp
bnB1dCBmaWxlbmFtZS4KKworICAgIFJldHVybnM6CisgICAgICBUaGUgZmlsZW5hbWUgd2l0aCB0
aGUgY29tbW9uIHN1ZmZpeCByZW1vdmVkLgorICAgICIiIgorICAgIGZvciBzdWZmaXggaW4gKCd0
ZXN0LmNwcCcsICdyZWd0ZXN0LmNwcCcsICd1bml0dGVzdC5jcHAnLAorICAgICAgICAgICAgICAg
ICAgICdpbmwuaCcsICdpbXBsLmgnLCAnaW50ZXJuYWwuaCcpOgorICAgICAgICBpZiAoZmlsZW5h
bWUuZW5kc3dpdGgoc3VmZml4KSBhbmQgbGVuKGZpbGVuYW1lKSA+IGxlbihzdWZmaXgpCisgICAg
ICAgICAgICBhbmQgZmlsZW5hbWVbLWxlbihzdWZmaXgpIC0gMV0gaW4gKCctJywgJ18nKSk6Cisg
ICAgICAgICAgICByZXR1cm4gZmlsZW5hbWVbOi1sZW4oc3VmZml4KSAtIDFdCisgICAgcmV0dXJu
IG9zLnBhdGguc3BsaXRleHQoZmlsZW5hbWUpWzBdCisKKworZGVmIF9pc190ZXN0X2ZpbGVuYW1l
KGZpbGVuYW1lKToKKyAgICAiIiJEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBmaWxlbmFtZSBoYXMg
YSBzdWZmaXggdGhhdCBpZGVudGlmaWVzIGl0IGFzIGEgdGVzdC4KKworICAgIEFyZ3M6CisgICAg
ICBmaWxlbmFtZTogVGhlIGlucHV0IGZpbGVuYW1lLgorCisgICAgUmV0dXJuczoKKyAgICAgIFRy
dWUgaWYgJ2ZpbGVuYW1lJyBsb29rcyBsaWtlIGEgdGVzdCwgRmFsc2Ugb3RoZXJ3aXNlLgorICAg
ICIiIgorICAgIGlmIChmaWxlbmFtZS5lbmRzd2l0aCgnX3Rlc3QuY3BwJykKKyAgICAgICAgb3Ig
ZmlsZW5hbWUuZW5kc3dpdGgoJ191bml0dGVzdC5jcHAnKQorICAgICAgICBvciBmaWxlbmFtZS5l
bmRzd2l0aCgnX3JlZ3Rlc3QuY3BwJykpOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIHJldHVy
biBGYWxzZQorCisKK2RlZiBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFtZSwgaW5jbHVkZSwgaXNf
c3lzdGVtLCBpbmNsdWRlX3N0YXRlKToKKyAgICAiIiJGaWd1cmVzIG91dCB3aGF0IGtpbmQgb2Yg
aGVhZGVyICdpbmNsdWRlJyBpcy4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogVGhlIGN1
cnJlbnQgZmlsZSBjcHBfc3R5bGUgaXMgcnVubmluZyBvdmVyLgorICAgICAgaW5jbHVkZTogVGhl
IHBhdGggdG8gYSAjaW5jbHVkZWQgZmlsZS4KKyAgICAgIGlzX3N5c3RlbTogVHJ1ZSBpZiB0aGUg
I2luY2x1ZGUgdXNlZCA8PiByYXRoZXIgdGhhbiAiIi4KKyAgICAgIGluY2x1ZGVfc3RhdGU6IEFu
IF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJlIGluc2VydGVk
LgorCisgICAgUmV0dXJuczoKKyAgICAgIE9uZSBvZiB0aGUgX1hYWF9IRUFERVIgY29uc3RhbnRz
LgorCisgICAgRm9yIGV4YW1wbGU6CisgICAgICA+Pj4gX2NsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5j
cHAnLCAnY29uZmlnLmgnLCBGYWxzZSkKKyAgICAgIF9DT05GSUdfSEVBREVSCisgICAgICA+Pj4g
X2NsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLCAnZm9vLmgnLCBGYWxzZSkKKyAgICAgIF9QUklN
QVJZX0hFQURFUgorICAgICAgPj4+IF9jbGFzc2lmeV9pbmNsdWRlKCdmb28uY3BwJywgJ2Jhci5o
JywgRmFsc2UpCisgICAgICBfT1RIRVJfSEVBREVSCisgICAgIiIiCisKKyAgICAjIElmIGl0IGlz
IGEgc3lzdGVtIGhlYWRlciB3ZSBrbm93IGl0IGlzIGNsYXNzaWZpZWQgYXMgX09USEVSX0hFQURF
Ui4KKyAgICBpZiBpc19zeXN0ZW06CisgICAgICAgIHJldHVybiBfT1RIRVJfSEVBREVSCisKKyAg
ICAjIElmIHRoZSBpbmNsdWRlIGlzIG5hbWVkIGNvbmZpZy5oIHRoZW4gdGhpcyBpcyBXZWJDb3Jl
L2NvbmZpZy5oLgorICAgIGlmIGluY2x1ZGUgPT0gImNvbmZpZy5oIjoKKyAgICAgICAgcmV0dXJu
IF9DT05GSUdfSEVBREVSCisKKyAgICAjIFRoZXJlIGNhbm5vdCBiZSBwcmltYXJ5IGluY2x1ZGVz
IGluIGhlYWRlciBmaWxlcyB0aGVtc2VsdmVzLiBPbmx5IGFuCisgICAgIyBpbmNsdWRlIGV4YWN0
bHkgbWF0Y2hlcyB0aGUgaGVhZGVyIGZpbGVuYW1lIHdpbGwgYmUgaXMgZmxhZ2dlZCBhcworICAg
ICMgcHJpbWFyeSwgc28gdGhhdCBpdCB0cmlnZ2VycyB0aGUgImRvbid0IGluY2x1ZGUgeW91cnNl
bGYiIGNoZWNrLgorICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuaCcpIGFuZCBmaWxlbmFtZSAh
PSBpbmNsdWRlOgorICAgICAgICByZXR1cm4gX09USEVSX0hFQURFUjsKKworICAgICMgSWYgdGhl
IHRhcmdldCBmaWxlIGJhc2VuYW1lIHN0YXJ0cyB3aXRoIHRoZSBpbmNsdWRlIHdlJ3JlIGNoZWNr
aW5nCisgICAgIyB0aGVuIHdlIGNvbnNpZGVyIGl0IHRoZSBwcmltYXJ5IGhlYWRlci4KKyAgICB0
YXJnZXRfYmFzZSA9IEZpbGVJbmZvKGZpbGVuYW1lKS5iYXNlX25hbWUoKQorICAgIGluY2x1ZGVf
YmFzZSA9IEZpbGVJbmZvKGluY2x1ZGUpLmJhc2VfbmFtZSgpCisKKyAgICAjIElmIHdlIGhhdmVu
J3QgZW5jb3VudGVyZWQgYSBwcmltYXJ5IGhlYWRlciwgdGhlbiBiZSBsZW5pZW50IGluIGNoZWNr
aW5nLgorICAgIGlmIG5vdCBpbmNsdWRlX3N0YXRlLnZpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uKCkg
YW5kIHRhcmdldF9iYXNlLnN0YXJ0c3dpdGgoaW5jbHVkZV9iYXNlKToKKyAgICAgICAgcmV0dXJu
IF9QUklNQVJZX0hFQURFUgorICAgICMgSWYgd2UgYWxyZWFkeSBlbmNvdW50ZXJlZCBhIHByaW1h
cnkgaGVhZGVyLCBwZXJmb3JtIGEgc3RyaWN0IGNvbXBhcmlzb24uCisgICAgIyBJbiBjYXNlIHRo
ZSB0d28gZmlsZW5hbWUgYmFzZXMgYXJlIHRoZSBzYW1lIHRoZW4gdGhlIGFib3ZlIGxlbmllbnQg
Y2hlY2sKKyAgICAjIHByb2JhYmx5IHdhcyBhIGZhbHNlIHBvc2l0aXZlLgorICAgIGVsaWYgaW5j
bHVkZV9zdGF0ZS52aXNpdGVkX3ByaW1hcnlfc2VjdGlvbigpIGFuZCB0YXJnZXRfYmFzZSA9PSBp
bmNsdWRlX2Jhc2U6CisgICAgICAgIHJldHVybiBfUFJJTUFSWV9IRUFERVIKKworICAgIHJldHVy
biBfT1RIRVJfSEVBREVSCisKKworCitkZWYgY2hlY2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsIGluY2x1ZGVfc3RhdGUsIGVycm9yKToKKyAgICAiIiJD
aGVjayBydWxlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvICNpbmNsdWRlIGxpbmVzLgorCisgICAg
U3RyaW5ncyBvbiAjaW5jbHVkZSBsaW5lcyBhcmUgTk9UIHJlbW92ZWQgZnJvbSBlbGlkZWQgbGlu
ZSwgdG8gbWFrZQorICAgIGNlcnRhaW4gdGFza3MgZWFzaWVyLiBIb3dldmVyLCB0byBwcmV2ZW50
IGZhbHNlIHBvc2l0aXZlcywgY2hlY2tzCisgICAgYXBwbGljYWJsZSB0byAjaW5jbHVkZSBsaW5l
cyBpbiBDaGVja0xhbmd1YWdlIG11c3QgYmUgcHV0IGhlcmUuCisKKyAgICBBcmdzOgorICAgICAg
ZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCisgICAgICBjbGVhbl9saW5l
czogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCisgICAgICBs
aW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGluY2x1
ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMg
YXJlIGluc2VydGVkLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55
IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKworICAgIGxpbmUgPSBjbGVhbl9saW5lcy5saW5lc1ts
aW5lX251bWJlcl0KKworICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChs
aW5lKQorICAgIGlmIG5vdCBtYXRjaGVkOgorICAgICAgICByZXR1cm4KKworICAgIGluY2x1ZGUg
PSBtYXRjaGVkLmdyb3VwKDIpCisgICAgaXNfc3lzdGVtID0gKG1hdGNoZWQuZ3JvdXAoMSkgPT0g
JzwnKQorCisgICAgIyBMb29rIGZvciBhbnkgb2YgdGhlIHN0cmVhbSBjbGFzc2VzIHRoYXQgYXJl
IHBhcnQgb2Ygc3RhbmRhcmQgQysrLgorICAgIGlmIG1hdGNoKHInKGZ8aW5kfGlvfGl8b3xwYXJz
ZXxwZnxzdGRpb3xzdHJ8KT9zdHJlYW0kJywgaW5jbHVkZSk6CisgICAgICAgICMgTWFueSB1bml0
IHRlc3RzIHVzZSBjb3V0LCBzbyB3ZSBleGVtcHQgdGhlbS4KKyAgICAgICAgaWYgbm90IF9pc190
ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLCAzLAorICAgICAgICAgICAgICAgICAgJ1N0
cmVhbXMgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC4nKQorCisgICAgIyBMb29rIGZvciBzcGVjaWZp
YyBpbmNsdWRlcyB0byBmaXguCisgICAgaWYgaW5jbHVkZS5zdGFydHN3aXRoKCd3dGYvJykgYW5k
IG5vdCBpc19zeXN0ZW06CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1
aWxkL2luY2x1ZGUnLCA0LAorICAgICAgICAgICAgICAnd3RmIGluY2x1ZGVzIHNob3VsZCBiZSA8
d3RmL2ZpbGUuaD4gaW5zdGVhZCBvZiAid3RmL2ZpbGUuaCIuJykKKworICAgIGR1cGxpY2F0ZV9o
ZWFkZXIgPSBpbmNsdWRlIGluIGluY2x1ZGVfc3RhdGUKKyAgICBpZiBkdXBsaWNhdGVfaGVhZGVy
OgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9pbmNsdWRlJywg
NCwKKyAgICAgICAgICAgICAgJyIlcyIgYWxyZWFkeSBpbmNsdWRlZCBhdCAlczolcycgJQorICAg
ICAgICAgICAgICAoaW5jbHVkZSwgZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGVbaW5jbHVkZV0pKQor
ICAgIGVsc2U6CisgICAgICAgIGluY2x1ZGVfc3RhdGVbaW5jbHVkZV0gPSBsaW5lX251bWJlcgor
CisgICAgaGVhZGVyX3R5cGUgPSBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFtZSwgaW5jbHVkZSwg
aXNfc3lzdGVtLCBpbmNsdWRlX3N0YXRlKQorICAgIGluY2x1ZGVfc3RhdGUuaGVhZGVyX3R5cGVz
W2xpbmVfbnVtYmVyXSA9IGhlYWRlcl90eXBlCisKKyAgICAjIE9ubHkgcHJvY2VlZCBpZiB0aGlz
IGlzbid0IGEgZHVwbGljYXRlIGhlYWRlci4KKyAgICBpZiBkdXBsaWNhdGVfaGVhZGVyOgorICAg
ICAgICByZXR1cm4KKworICAgICMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBoZWFkZXJzIGFwcGVh
ciBpbiB0aGUgcmlnaHQgb3JkZXI6CisgICAgIyAxKSBmb3IgaW1wbGVtZW50YXRpb24gZmlsZXM6
IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwgYmxhbmsgbGluZSwgYWxwaGFiZXRpY2FsbHkgc29y
dGVkCisgICAgIyAyKSBmb3IgaGVhZGVyIGZpbGVzOiBhbHBoYWJldGljYWxseSBzb3J0ZWQKKyAg
ICAjIFRoZSBpbmNsdWRlX3N0YXRlIG9iamVjdCBrZWVwcyB0cmFjayBvZiB0aGUgbGFzdCB0eXBl
IHNlZW4KKyAgICAjIGFuZCBjb21wbGFpbnMgaWYgdGhlIGhlYWRlciB0eXBlcyBhcmUgb3V0IG9m
IG9yZGVyIG9yIG1pc3NpbmcuCisgICAgZXJyb3JfbWVzc2FnZSA9IGluY2x1ZGVfc3RhdGUuY2hl
Y2tfbmV4dF9pbmNsdWRlX29yZGVyKGhlYWRlcl90eXBlLCBmaWxlbmFtZS5lbmRzd2l0aCgnLmgn
KSkKKworICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBibGFuayBsaW5lIGFmdGVy
IHByaW1hcnkgaGVhZGVyLgorICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFuZCBoZWFkZXJfdHlw
ZSA9PSBfUFJJTUFSWV9IRUFERVI6CisgICAgICAgICBuZXh0X2xpbmUgPSBjbGVhbl9saW5lcy5y
YXdfbGluZXNbbGluZV9udW1iZXIgKyAxXQorICAgICAgICAgaWYgbm90IGlzX2JsYW5rX2xpbmUo
bmV4dF9saW5lKToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1
aWxkL2luY2x1ZGVfb3JkZXInLCA0LAorICAgICAgICAgICAgICAgICAgJ1lvdSBzaG91bGQgYWRk
IGEgYmxhbmsgbGluZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93biBoZWFkZXIuJykK
KworICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBoZWFkZXJzIGJlc2lkZXMgY29uZmlnLmgg
YW5kIHRoZSBwcmltYXJ5IGhlYWRlciBhcmUKKyAgICAjIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4K
KyAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0gX09USEVSX0hFQURF
UjoKKyAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgLSAxOworICAg
ICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW3ByZXZpb3VzX2xpbmVfbnVt
YmVyXQorICAgICAgICAgcHJldmlvdXNfbWF0Y2ggPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJj
aChwcmV2aW91c19saW5lKQorICAgICAgICAgd2hpbGUgKG5vdCBwcmV2aW91c19tYXRjaCBhbmQg
cHJldmlvdXNfbGluZV9udW1iZXIgPiAwCisgICAgICAgICAgICAgICAgYW5kIG5vdCBzZWFyY2go
cidcQSgjaWZ8I2lmZGVmfCNpZm5kZWZ8I2Vsc2V8I2VsaWZ8I2VuZGlmKScsIHByZXZpb3VzX2xp
bmUpKToKKyAgICAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDE7CisgICAgICAgICAg
ICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMubGluZXNbcHJldmlvdXNfbGluZV9udW1iZXJd
CisgICAgICAgICAgICBwcmV2aW91c19tYXRjaCA9IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNo
KHByZXZpb3VzX2xpbmUpCisgICAgICAgICBpZiBwcmV2aW91c19tYXRjaDoKKyAgICAgICAgICAg
IHByZXZpb3VzX2hlYWRlcl90eXBlID0gaW5jbHVkZV9zdGF0ZS5oZWFkZXJfdHlwZXNbcHJldmlv
dXNfbGluZV9udW1iZXJdCisgICAgICAgICAgICBpZiBwcmV2aW91c19oZWFkZXJfdHlwZSA9PSBf
T1RIRVJfSEVBREVSIGFuZCBwcmV2aW91c19saW5lLnN0cmlwKCkgPiBsaW5lLnN0cmlwKCk6Cisg
ICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVk
ZV9vcmRlcicsIDQsCisgICAgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5n
IHByb2JsZW0uJykKKworICAgIGlmIGVycm9yX21lc3NhZ2U6CisgICAgICAgIGlmIGZpbGVuYW1l
LmVuZHN3aXRoKCcuaCcpOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVy
LCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCisgICAgICAgICAgICAgICAgICAnJXMgU2hvdWxk
IGJlOiBhbHBoYWJldGljYWxseSBzb3J0ZWQuJyAlCisgICAgICAgICAgICAgICAgICBlcnJvcl9t
ZXNzYWdlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVf
bnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCisgICAgICAgICAgICAgICAgICAnJXMg
U2hvdWxkIGJlOiBjb25maWcuaCwgcHJpbWFyeSBoZWFkZXIsIGJsYW5rIGxpbmUsIGFuZCB0aGVu
IGFscGhhYmV0aWNhbGx5IHNvcnRlZC4nICUKKyAgICAgICAgICAgICAgICAgIGVycm9yX21lc3Nh
Z2UpCisKKworZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3N0YXRlLAorICAgICAgICAgICAgICAgICAg
IGVycm9yKToKKyAgICAiIiJDaGVja3MgcnVsZXMgZnJvbSB0aGUgJ0MrKyBsYW5ndWFnZSBydWxl
cycgc2VjdGlvbiBvZiBjcHBndWlkZS5odG1sLgorCisgICAgU29tZSBvZiB0aGVzZSBydWxlcyBh
cmUgaGFyZCB0byB0ZXN0IChmdW5jdGlvbiBvdmVybG9hZGluZywgdXNpbmcKKyAgICB1aW50MzIg
aW5hcHByb3ByaWF0ZWx5KSwgYnV0IHdlIGRvIHRoZSBiZXN0IHdlIGNhbi4KKworICAgIEFyZ3M6
CisgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAgIGNs
ZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4K
KyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgorICAg
ICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKHdpdGhvdXQgdGhlIGRvdCkgb2YgdGhl
IGZpbGVuYW1lLgorICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5j
ZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCisgICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgorICAgICIiIgorICAgICMgSWYg
dGhlIGxpbmUgaXMgZW1wdHkgb3IgY29uc2lzdHMgb2YgZW50aXJlbHkgYSBjb21tZW50LCBubyBu
ZWVkIHRvCisgICAgIyBjaGVjayBpdC4KKyAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXQorICAgIGlmIG5vdCBsaW5lOgorICAgICAgICByZXR1cm4KKworICAgIG1hdGNo
ZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChsaW5lKQorICAgIGlmIG1hdGNoZWQ6Cisg
ICAgICAgIGNoZWNrX2luY2x1ZGVfbGluZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIEZJWE1F
OiBmaWd1cmUgb3V0IGlmIHRoZXkncmUgdXNpbmcgZGVmYXVsdCBhcmd1bWVudHMgaW4gZm4gcHJv
dG8uCisKKyAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGV5J3JlIHVzaW5nIGFuIGNvbnZlcnNpb24g
ZnVuY3Rpb24gY2FzdC4KKyAgICAjIEkganVzdCB0cnkgdG8gY2FwdHVyZSB0aGUgbW9zdCBjb21t
b24gYmFzaWMgdHlwZXMsIHRob3VnaCB0aGVyZSBhcmUgbW9yZS4KKyAgICAjIFBhcmFtZXRlcmxl
c3MgY29udmVyc2lvbiBmdW5jdGlvbnMsIHN1Y2ggYXMgYm9vbCgpLCBhcmUgYWxsb3dlZCBhcyB0
aGV5IGFyZQorICAgICMgcHJvYmFibHkgYSBtZW1iZXIgb3BlcmF0b3IgZGVjbGFyYXRpb24gb3Ig
ZGVmYXVsdCBjb25zdHJ1Y3Rvci4KKyAgICBtYXRjaGVkID0gc2VhcmNoKAorICAgICAgICByJ1xi
KGludHxmbG9hdHxkb3VibGV8Ym9vbHxjaGFyfGludDMyfHVpbnQzMnxpbnQ2NHx1aW50NjQpXChb
XildJywgbGluZSkKKyAgICBpZiBtYXRjaGVkOgorICAgICAgICAjIGdNb2NrIG1ldGhvZHMgYXJl
IGRlZmluZWQgdXNpbmcgc29tZSB2YXJpYW50IG9mIE1PQ0tfTUVUSE9EeChuYW1lLCB0eXBlKQor
ICAgICAgICAjIHdoZXJlIHR5cGUgbWF5IGJlIGZsb2F0KCksIGludChzdHJpbmcpLCBldGMuICBX
aXRob3V0IGNvbnRleHQgdGhleSBhcmUKKyAgICAgICAgIyB2aXJ0dWFsbHkgaW5kaXN0aW5ndWlz
aGFibGUgZnJvbSBpbnQoeCkgY2FzdHMuCisgICAgICAgIGlmIG5vdCBtYXRjaChyJ15ccypNT0NL
XyhDT05TVF8pP01FVEhPRFxkKyhfVCk/XCgnLCBsaW5lKToKKyAgICAgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2Nhc3RpbmcnLCA0LAorICAgICAgICAg
ICAgICAgICAgJ1VzaW5nIGRlcHJlY2F0ZWQgY2FzdGluZyBzdHlsZS4gICcKKyAgICAgICAgICAg
ICAgICAgICdVc2Ugc3RhdGljX2Nhc3Q8JXM+KC4uLikgaW5zdGVhZCcgJQorICAgICAgICAgICAg
ICAgICAgbWF0Y2hlZC5ncm91cCgxKSkKKworICAgIGNoZWNrX2Nfc3R5bGVfY2FzdChmaWxlbmFt
ZSwgbGluZV9udW1iZXIsIGxpbmUsIGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlcl0s
CisgICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWNfY2FzdCcsCisgICAgICAgICAgICAgICAg
ICAgICAgIHInXCgoaW50fGZsb2F0fGRvdWJsZXxib29sfGNoYXJ8dT9pbnQoMTZ8MzJ8NjQpKVwp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpCisgICAgIyBUaGlzIGRvZXNuJ3QgY2F0
Y2ggYWxsIGNhc2VzLiAgQ29uc2lkZXIgKGNvbnN0IGNoYXIgKiBjb25zdCkiaGVsbG8iLgorICAg
IGNoZWNrX2Nfc3R5bGVfY2FzdChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxpbmUsIGNsZWFuX2xp
bmVzLnJhd19saW5lc1tsaW5lX251bWJlcl0sCisgICAgICAgICAgICAgICAgICAgICAgICdyZWlu
dGVycHJldF9jYXN0JywgcidcKChcdytccz9cKitccz8pXCknLCBlcnJvcikKKworICAgICMgSW4g
YWRkaXRpb24sIHdlIGxvb2sgZm9yIHBlb3BsZSB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSBjYXN0
LiAgVGhpcworICAgICMgaXMgZGFuZ2Vyb3VzIC0tIGNhc3RzIGNhbiBhc3NpZ24gdG8gdGVtcG9y
YXJpZXMsIHNvIHRoZSBwb2ludGVyIGRvZXNuJ3QKKyAgICAjIHBvaW50IHdoZXJlIHlvdSB0aGlu
ay4KKyAgICBpZiBzZWFyY2goCisgICAgICAgIHInKCZcKFteKV0rXClbXHcoXSl8KCYoc3RhdGlj
fGR5bmFtaWN8cmVpbnRlcnByZXQpX2Nhc3RcYiknLCBsaW5lKToKKyAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9jYXN0aW5nJywgNCwKKyAgICAgICAgICAgICAg
KCdBcmUgeW91IHRha2luZyBhbiBhZGRyZXNzIG9mIGEgY2FzdD8gICcKKyAgICAgICAgICAgICAg
ICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0ZW1wIHZhci4gICcKKyAgICAgICAgICAg
ICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9yZSBkb2luZyB0aGUgY2FzdCwgcmF0aGVyIHRoYW4g
YWZ0ZXInKSkKKworICAgICMgQ2hlY2sgZm9yIHBlb3BsZSBkZWNsYXJpbmcgc3RhdGljL2dsb2Jh
bCBTVEwgc3RyaW5ncyBhdCB0aGUgdG9wIGxldmVsLgorICAgICMgVGhpcyBpcyBkYW5nZXJvdXMg
YmVjYXVzZSB0aGUgQysrIGxhbmd1YWdlIGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0CisgICAgIyBn
bG9iYWxzIHdpdGggY29uc3RydWN0b3JzIGFyZSBpbml0aWFsaXplZCBiZWZvcmUgdGhlIGZpcnN0
IGFjY2Vzcy4KKyAgICBtYXRjaGVkID0gbWF0Y2goCisgICAgICAgIHInKCg/OnxzdGF0aWMgKyko
Pzp8Y29uc3QgKykpc3RyaW5nICsoW2EtekEtWjAtOV86XSspXGIoLiopJywKKyAgICAgICAgbGlu
ZSkKKyAgICAjIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGZ1bmN0aW9uLgorICAgICMgRnVuY3Rpb24g
dGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gbG9va3MgbGlrZTogInN0cmluZyBmb288VHlwZT4oLi4u
Ii4KKyAgICAjIENsYXNzIHRlbXBsYXRlIGRlZmluaXRpb25zIGxvb2sgbGlrZTogInN0cmluZyBG
b288VHlwZT46Ok1ldGhvZCguLi4iLgorICAgIGlmIG1hdGNoZWQgYW5kIG5vdCBtYXRjaChyJ1xz
Kig8Lio+KT8oOjpbYS16QS1aMC05X10rKT9ccypcKChbXiJdfCQpJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgzKSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgJ3J1bnRpbWUvc3RyaW5nJywgNCwKKyAgICAgICAgICAgICAgJ0ZvciBh
IHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlIHN0cmluZyBpbnN0
ZWFkOiAnCisgICAgICAgICAgICAgICciJXNjaGFyICVzW10iLicgJQorICAgICAgICAgICAgICAo
bWF0Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCisKKyAgICAjIENoZWNrIHRoYXQg
d2UncmUgbm90IHVzaW5nIFJUVEkgb3V0c2lkZSBvZiB0ZXN0aW5nIGNvZGUuCisgICAgaWYgc2Vh
cmNoKHInXGJkeW5hbWljX2Nhc3Q8JywgbGluZSkgYW5kIG5vdCBfaXNfdGVzdF9maWxlbmFtZShm
aWxlbmFtZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUv
cnR0aScsIDUsCisgICAgICAgICAgICAgICdEbyBub3QgdXNlIGR5bmFtaWNfY2FzdDw+LiAgSWYg
eW91IG5lZWQgdG8gY2FzdCB3aXRoaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICJoaWVyYXJj
aHksIHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2Vzbid0IHN1cHBvcnQg
IgorICAgICAgICAgICAgICAnUlRUSS4nKQorCisgICAgaWYgc2VhcmNoKHInXGIoW0EtWmEtejAt
OV9dKl8pXChcMVwpJywgbGluZSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ3J1bnRpbWUvaW5pdCcsIDQsCisgICAgICAgICAgICAgICdZb3Ugc2VlbSB0byBiZSBpbml0
aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUgd2l0aCBpdHNlbGYuJykKKworICAgIGlmIGZpbGVf
ZXh0ZW5zaW9uID09ICdoJzoKKyAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhhdCAxLWFyZyBjb25z
dHJ1Y3RvcnMgYXJlIGV4cGxpY2l0LgorICAgICAgICAjICAgICAgICBIb3cgdG8gdGVsbCBpdCdz
IGEgY29uc3RydWN0b3I/CisgICAgICAgICMgICAgICAgIChoYW5kbGVkIGluIGNoZWNrX2Zvcl9u
b25fc3RhbmRhcmRfY29uc3RydWN0cyBmb3Igbm93KQorICAgICAgICBwYXNzCisKKyAgICAjIENo
ZWNrIGlmIHBlb3BsZSBhcmUgdXNpbmcgdGhlIHZlcmJvdGVuIEMgYmFzaWMgdHlwZXMuICBUaGUg
b25seSBleGNlcHRpb24KKyAgICAjIHdlIHJlZ3VsYXJseSBhbGxvdyBpcyAidW5zaWduZWQgc2hv
cnQgcG9ydCIgZm9yIHBvcnQuCisgICAgaWYgc2VhcmNoKHInXGJzaG9ydCBwb3J0XGInLCBsaW5l
KToKKyAgICAgICAgaWYgbm90IHNlYXJjaChyJ1xidW5zaWduZWQgc2hvcnQgcG9ydFxiJywgbGlu
ZSk6CisgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL2lu
dCcsIDQsCisgICAgICAgICAgICAgICAgICAnVXNlICJ1bnNpZ25lZCBzaG9ydCIgZm9yIHBvcnRz
LCBub3QgInNob3J0IicpCisKKyAgICAjIFdoZW4gc25wcmludGYgaXMgdXNlZCwgdGhlIHNlY29u
ZCBhcmd1bWVudCBzaG91bGRuJ3QgYmUgYSBsaXRlcmFsLgorICAgIG1hdGNoZWQgPSBzZWFyY2go
cidzbnByaW50ZlxzKlwoKFteLF0qKSxccyooWzAtOV0qKVxzKiwnLCBsaW5lKQorICAgIGlmIG1h
dGNoZWQ6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJp
bnRmJywgMywKKyAgICAgICAgICAgICAgJ0lmIHlvdSBjYW4sIHVzZSBzaXplb2YoJXMpIGluc3Rl
YWQgb2YgJXMgYXMgdGhlIDJuZCBhcmcgJworICAgICAgICAgICAgICAndG8gc25wcmludGYuJyAl
IChtYXRjaGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKKworICAgICMgQ2hlY2sgaWYg
c29tZSB2ZXJib3RlbiBDIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZC4KKyAgICBpZiBzZWFyY2go
cidcYnNwcmludGZcYicsIGxpbmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsICdydW50aW1lL3ByaW50ZicsIDUsCisgICAgICAgICAgICAgICdOZXZlciB1c2Ugc3ByaW50
Zi4gIFVzZSBzbnByaW50ZiBpbnN0ZWFkLicpCisgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1xiKHN0
cmNweXxzdHJjYXQpXGInLCBsaW5lKQorICAgIGlmIG1hdGNoZWQ6CisgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgNCwKKyAgICAgICAgICAgICAg
J0FsbW9zdCBhbHdheXMsIHNucHJpbnRmIGlzIGJldHRlciB0aGFuICVzJyAlIG1hdGNoZWQuZ3Jv
dXAoMSkpCisKKyAgICBpZiBzZWFyY2gocidcYnNzY2FuZlxiJywgbGluZSk6CisgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgMSwKKyAgICAgICAg
ICAgICAgJ3NzY2FuZiBjYW4gYmUgb2ssIGJ1dCBpcyBzbG93IGFuZCBjYW4gb3ZlcmZsb3cgYnVm
ZmVycy4nKQorCisgICAgIyBDaGVjayBmb3Igc3VzcGljaW91cyB1c2FnZSBvZiAiaWYiIGxpa2UK
KyAgICAjIH0gaWYgKGEgPT0gYikgeworICAgIGlmIHNlYXJjaChyJ1x9XHMqaWZccypcKCcsIGxp
bmUpOgorICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9i
cmFjZXMnLCA0LAorICAgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJlbHNlIGlmIj8gSWYgbm90
LCBzdGFydCBhIG5ldyBsaW5lIGZvciAiaWYiLicpCisKKyAgICAjIENoZWNrIGZvciBwb3RlbnRp
YWwgZm9ybWF0IHN0cmluZyBidWdzIGxpa2UgcHJpbnRmKGZvbykuCisgICAgIyBXZSBjb25zdHJh
aW4gdGhlIHBhdHRlcm4gbm90IHRvIHBpY2sgdGhpbmdzIGxpa2UgRG9jaWRGb3JQcmludGYoZm9v
KS4KKyAgICAjIE5vdCBwZXJmZWN0IGJ1dCBpdCBjYW4gY2F0Y2ggcHJpbnRmKGZvby5jX3N0cigp
KSBhbmQgcHJpbnRmKGZvby0+Y19zdHIoKSkKKyAgICBtYXRjaGVkID0gcmUuc2VhcmNoKHInXGIo
KD86c3RyaW5nKT9wcmludGYpXHMqXCgoW1x3LlwtPigpXSspXCknLCBsaW5lLCByZS5JKQorICAg
IGlmIG1hdGNoZWQ6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRp
bWUvcHJpbnRmJywgNCwKKyAgICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3JtYXQgc3RyaW5nIGJ1
Zy4gRG8gJXMoIiUlcyIsICVzKSBpbnN0ZWFkLicKKyAgICAgICAgICAgICAgJSAobWF0Y2hlZC5n
cm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCisKKyAgICAjIENoZWNrIGZvciBwb3RlbnRpYWwg
bWVtc2V0IGJ1Z3MgbGlrZSBtZW1zZXQoYnVmLCBzaXplb2YoYnVmKSwgMCkuCisgICAgbWF0Y2hl
ZCA9IHNlYXJjaChyJ21lbXNldFxzKlwoKFteLF0qKSxccyooW14sXSopLFxzKjBccypcKScsIGxp
bmUpCisgICAgaWYgbWF0Y2hlZCBhbmQgbm90IG1hdGNoKHIiXicnfC0/WzAtOV0rfDB4WzAtOUEt
RmEtZl0kIiwgbWF0Y2hlZC5ncm91cCgyKSk6CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ3J1bnRpbWUvbWVtc2V0JywgNCwKKyAgICAgICAgICAgICAgJ0RpZCB5b3UgbWVh
biAibWVtc2V0KCVzLCAwLCAlcykiPycKKyAgICAgICAgICAgICAgJSAobWF0Y2hlZC5ncm91cCgx
KSwgbWF0Y2hlZC5ncm91cCgyKSkpCisKKyAgICAjIERldGVjdCB2YXJpYWJsZS1sZW5ndGggYXJy
YXlzLgorICAgIG1hdGNoZWQgPSBtYXRjaChyJ1xzKiguKzo6KT8oXHcrKSBbYS16XVx3KlxbKC4r
KV07JywgbGluZSkKKyAgICBpZiAobWF0Y2hlZCBhbmQgbWF0Y2hlZC5ncm91cCgyKSAhPSAncmV0
dXJuJyBhbmQgbWF0Y2hlZC5ncm91cCgyKSAhPSAnZGVsZXRlJyBhbmQKKyAgICAgICAgbWF0Y2hl
ZC5ncm91cCgzKS5maW5kKCddJykgPT0gLTEpOgorICAgICAgICAjIFNwbGl0IHRoZSBzaXplIHVz
aW5nIHNwYWNlIGFuZCBhcml0aG1ldGljIG9wZXJhdG9ycyBhcyBkZWxpbWl0ZXJzLgorICAgICAg
ICAjIElmIGFueSBvZiB0aGUgcmVzdWx0aW5nIHRva2VucyBhcmUgbm90IGNvbXBpbGUgdGltZSBj
b25zdGFudHMgdGhlbgorICAgICAgICAjIHJlcG9ydCB0aGUgZXJyb3IuCisgICAgICAgIHRva2Vu
cyA9IHJlLnNwbGl0KHInXHN8XCt8XC18XCp8XC98PDx8Pj5dJywgbWF0Y2hlZC5ncm91cCgzKSkK
KyAgICAgICAgaXNfY29uc3QgPSBUcnVlCisgICAgICAgIHNraXBfbmV4dCA9IEZhbHNlCisgICAg
ICAgIGZvciB0b2sgaW4gdG9rZW5zOgorICAgICAgICAgICAgaWYgc2tpcF9uZXh0OgorICAgICAg
ICAgICAgICAgIHNraXBfbmV4dCA9IEZhbHNlCisgICAgICAgICAgICAgICAgY29udGludWUKKwor
ICAgICAgICAgICAgaWYgc2VhcmNoKHInc2l6ZW9mXCguK1wpJywgdG9rKToKKyAgICAgICAgICAg
ICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgc2VhcmNoKHInYXJyYXlzaXplXChcdytcKScs
IHRvayk6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgdG9rID0gdG9r
LmxzdHJpcCgnKCcpCisgICAgICAgICAgICB0b2sgPSB0b2sucnN0cmlwKCcpJykKKyAgICAgICAg
ICAgIGlmIG5vdCB0b2s6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlm
IG1hdGNoKHInXGQrJywgdG9rKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAg
ICAgaWYgbWF0Y2gocicwW3hYXVswLTlhLWZBLUZdKycsIHRvayk6CisgICAgICAgICAgICAgICAg
Y29udGludWUKKyAgICAgICAgICAgIGlmIG1hdGNoKHIna1tBLVowLTldXHcqJywgdG9rKToKKyAg
ICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgbWF0Y2gocicoLis6Oik/a1tB
LVowLTldXHcqJywgdG9rKToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
aWYgbWF0Y2gocicoLis6Oik/W0EtWl1bQS1aMC05X10qJywgdG9rKToKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICAgICAgIyBBIGNhdGNoIGFsbCBmb3IgdHJpY2t5IHNpemVvZiBj
YXNlcywgaW5jbHVkaW5nICdzaXplb2YgZXhwcmVzc2lvbicsCisgICAgICAgICAgICAjICdzaXpl
b2YoKnR5cGUpJywgJ3NpemVvZihjb25zdCB0eXBlKScsICdzaXplb2Yoc3RydWN0IFN0cnVjdE5h
bWUpJworICAgICAgICAgICAgIyByZXF1aXJlcyBza2lwcGluZyB0aGUgbmV4dCB0b2tlbiBiZWNh
c3VlIHdlIHNwbGl0IG9uICcgJyBhbmQgJyonLgorICAgICAgICAgICAgaWYgdG9rLnN0YXJ0c3dp
dGgoJ3NpemVvZicpOgorICAgICAgICAgICAgICAgIHNraXBfbmV4dCA9IFRydWUKKyAgICAgICAg
ICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaXNfY29uc3QgPSBGYWxzZQorICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgaWYgbm90IGlzX2NvbnN0OgorICAgICAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9hcnJheXMnLCAxLAorICAgICAgICAgICAgICAg
ICAgJ0RvIG5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFycmF5cy4gIFVzZSBhbiBhcHByb3ByaWF0
ZWx5IG5hbWVkICcKKyAgICAgICAgICAgICAgICAgICIoJ2snIGZvbGxvd2VkIGJ5IENhbWVsQ2Fz
ZSkgY29tcGlsZS10aW1lIGNvbnN0YW50IGZvciB0aGUgc2l6ZS4iKQorCisgICAgIyBDaGVjayBm
b3IgdXNlIG9mIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFkZXIgZmlsZXMuICBSZWdpc3RyYXRp
b24KKyAgICAjIG1hY3JvcyBhcmUgdHlwaWNhbGx5IE9LLCBzbyB3ZSBhbGxvdyB1c2Ugb2YgIm5h
bWVzcGFjZSB7IiBvbiBsaW5lcworICAgICMgdGhhdCBlbmQgd2l0aCBiYWNrc2xhc2hlcy4KKyAg
ICBpZiAoZmlsZV9leHRlbnNpb24gPT0gJ2gnCisgICAgICAgIGFuZCBzZWFyY2gocidcYm5hbWVz
cGFjZVxzKnsnLCBsaW5lKQorICAgICAgICBhbmQgbGluZVstMV0gIT0gJ1xcJyk6CisgICAgICAg
IGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1aWxkL25hbWVzcGFjZXMnLCA0LAorICAg
ICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4gaGVhZGVyIGZpbGVz
LiAgU2VlICcKKyAgICAgICAgICAgICAgJ2h0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVj
b2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMnCisgICAgICAgICAgICAg
ICcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykKKworCitkZWYgY2hlY2tfY19zdHlsZV9jYXN0KGZp
bGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgcmF3X2xpbmUsIGNhc3RfdHlwZSwgcGF0dGVybiwK
KyAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOgorICAgICIiIkNoZWNrcyBmb3IgYSBDLXN0
eWxlIGNhc3QgYnkgbG9va2luZyBmb3IgdGhlIHBhdHRlcm4uCisKKyAgICBUaGlzIGFsc28gaGFu
ZGxlcyBzaXplb2YodHlwZSkgd2FybmluZ3MsIGR1ZSB0byBzaW1pbGFyaXR5IG9mIGNvbnRlbnQu
CisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCisgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
KyAgICAgIGxpbmU6IFRoZSBsaW5lIG9mIGNvZGUgdG8gY2hlY2suCisgICAgICByYXdfbGluZTog
VGhlIHJhdyBsaW5lIG9mIGNvZGUgdG8gY2hlY2ssIHdpdGggY29tbWVudHMuCisgICAgICBjYXN0
X3R5cGU6IFRoZSBzdHJpbmcgZm9yIHRoZSBDKysgY2FzdCB0byByZWNvbW1lbmQuICBUaGlzIGlz
IGVpdGhlcgorICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0IG9yIHN0YXRpY19jYXN0
LCBkZXBlbmRpbmcuCisgICAgICBwYXR0ZXJuOiBUaGUgcmVndWxhciBleHByZXNzaW9uIHVzZWQg
dG8gZmluZCBDLXN0eWxlIGNhc3RzLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxs
IHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKyAgICBtYXRjaGVkID0gc2VhcmNoKHBh
dHRlcm4sIGxpbmUpCisgICAgaWYgbm90IG1hdGNoZWQ6CisgICAgICAgIHJldHVybgorCisgICAg
IyBlLmcuLCBzaXplb2YoaW50KQorICAgIHNpemVvZl9tYXRjaCA9IG1hdGNoKHInLipzaXplb2Zc
cyokJywgbGluZVswOm1hdGNoZWQuc3RhcnQoMSkgLSAxXSkKKyAgICBpZiBzaXplb2ZfbWF0Y2g6
CisgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvc2l6ZW9mJywg
MSwKKyAgICAgICAgICAgICAgJ1VzaW5nIHNpemVvZih0eXBlKS4gIFVzZSBzaXplb2YodmFybmFt
ZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScpCisgICAgICAgIHJldHVybgorCisgICAgcmVtYWluZGVy
ID0gbGluZVttYXRjaGVkLmVuZCgwKTpdCisKKyAgICAjIFRoZSBjbG9zZSBwYXJlbiBpcyBmb3Ig
ZnVuY3Rpb24gcG9pbnRlcnMgYXMgYXJndW1lbnRzIHRvIGEgZnVuY3Rpb24uCisgICAgIyBlZywg
dm9pZCBmb28odm9pZCAoKmJhcikoaW50KSk7CisgICAgIyBUaGUgc2VtaWNvbG9uIGNoZWNrIGlz
IGEgbW9yZSBiYXNpYyBmdW5jdGlvbiBjaGVjazsgYWxzbyBwb3NzaWJseSBhCisgICAgIyBmdW5j
dGlvbiBwb2ludGVyIHR5cGVkZWYuCisgICAgIyBlZywgdm9pZCBmb28oaW50KTsgb3Igdm9pZCBm
b28oaW50KSBjb25zdDsKKyAgICAjIFRoZSBlcXVhbHMgY2hlY2sgaXMgZm9yIGZ1bmN0aW9uIHBv
aW50ZXIgYXNzaWdubWVudC4KKyAgICAjIGVnLCB2b2lkICooKmZvbykoaW50KSA9IC4uLgorICAg
ICMKKyAgICAjIFJpZ2h0IG5vdywgdGhpcyB3aWxsIG9ubHkgY2F0Y2ggY2FzZXMgd2hlcmUgdGhl
cmUncyBhIHNpbmdsZSBhcmd1bWVudCwgYW5kCisgICAgIyBpdCdzIHVubmFtZWQuICBJdCBzaG91
bGQgcHJvYmFibHkgYmUgZXhwYW5kZWQgdG8gY2hlY2sgZm9yIG11bHRpcGxlCisgICAgIyBhcmd1
bWVudHMgd2l0aCBzb21lIHVubmFtZWQuCisgICAgZnVuY3Rpb25fbWF0Y2ggPSBtYXRjaChyJ1xz
KihcKXw9fChjb25zdCk/XHMqKDt8XHt8dGhyb3dcKFwpKSknLCByZW1haW5kZXIpCisgICAgaWYg
ZnVuY3Rpb25fbWF0Y2g6CisgICAgICAgIGlmIChub3QgZnVuY3Rpb25fbWF0Y2guZ3JvdXAoMykK
KyAgICAgICAgICAgIG9yIGZ1bmN0aW9uX21hdGNoLmdyb3VwKDMpID09ICc7JworICAgICAgICAg
ICAgb3IgcmF3X2xpbmUuZmluZCgnLyonKSA8IDApOgorICAgICAgICAgICAgZXJyb3IoZmlsZW5h
bWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZnVuY3Rpb24nLCAzLAorICAgICAgICAgICAg
ICAgICAgJ0FsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBuYW1lZCBpbiBhIGZ1bmN0aW9uJykKKyAg
ICAgICAgcmV0dXJuCisKKyAgICAjIEF0IHRoaXMgcG9pbnQsIGFsbCB0aGF0IHNob3VsZCBiZSBs
ZWZ0IGlzIGFjdHVhbCBjYXN0cy4KKyAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdy
ZWFkYWJpbGl0eS9jYXN0aW5nJywgNCwKKyAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAg
VXNlICVzPCVzPiguLi4pIGluc3RlYWQnICUKKyAgICAgICAgICAoY2FzdF90eXBlLCBtYXRjaGVk
Lmdyb3VwKDEpKSkKKworCitfSEVBREVSU19DT05UQUlOSU5HX1RFTVBMQVRFUyA9ICgKKyAgICAo
JzxkZXF1ZT4nLCAoJ2RlcXVlJywpKSwKKyAgICAoJzxmdW5jdGlvbmFsPicsICgndW5hcnlfZnVu
Y3Rpb24nLCAnYmluYXJ5X2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAncGx1cycs
ICdtaW51cycsICdtdWx0aXBsaWVzJywgJ2RpdmlkZXMnLCAnbW9kdWx1cycsCisgICAgICAgICAg
ICAgICAgICAgICAgJ25lZ2F0ZScsCisgICAgICAgICAgICAgICAgICAgICAgJ2VxdWFsX3RvJywg
J25vdF9lcXVhbF90bycsICdncmVhdGVyJywgJ2xlc3MnLAorICAgICAgICAgICAgICAgICAgICAg
ICdncmVhdGVyX2VxdWFsJywgJ2xlc3NfZXF1YWwnLAorICAgICAgICAgICAgICAgICAgICAgICds
b2dpY2FsX2FuZCcsICdsb2dpY2FsX29yJywgJ2xvZ2ljYWxfbm90JywKKyAgICAgICAgICAgICAg
ICAgICAgICAndW5hcnlfbmVnYXRlJywgJ25vdDEnLCAnYmluYXJ5X25lZ2F0ZScsICdub3QyJywK
KyAgICAgICAgICAgICAgICAgICAgICAnYmluZDFzdCcsICdiaW5kMm5kJywKKyAgICAgICAgICAg
ICAgICAgICAgICAncG9pbnRlcl90b191bmFyeV9mdW5jdGlvbicsCisgICAgICAgICAgICAgICAg
ICAgICAgJ3BvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uJywKKyAgICAgICAgICAgICAgICAgICAg
ICAncHRyX2Z1bicsCisgICAgICAgICAgICAgICAgICAgICAgJ21lbV9mdW5fdCcsICdtZW1fZnVu
JywgJ21lbV9mdW4xX3QnLCAnbWVtX2Z1bjFfcmVmX3QnLAorICAgICAgICAgICAgICAgICAgICAg
ICdtZW1fZnVuX3JlZl90JywKKyAgICAgICAgICAgICAgICAgICAgICAnY29uc3RfbWVtX2Z1bl90
JywgJ2NvbnN0X21lbV9mdW4xX3QnLAorICAgICAgICAgICAgICAgICAgICAgICdjb25zdF9tZW1f
ZnVuX3JlZl90JywgJ2NvbnN0X21lbV9mdW4xX3JlZl90JywKKyAgICAgICAgICAgICAgICAgICAg
ICAnbWVtX2Z1bl9yZWYnLAorICAgICAgICAgICAgICAgICAgICAgKSksCisgICAgKCc8bGltaXRz
PicsICgnbnVtZXJpY19saW1pdHMnLCkpLAorICAgICgnPGxpc3Q+JywgKCdsaXN0JywpKSwKKyAg
ICAoJzxtYXA+JywgKCdtYXAnLCAnbXVsdGltYXAnLCkpLAorICAgICgnPG1lbW9yeT4nLCAoJ2Fs
bG9jYXRvcicsKSksCisgICAgKCc8cXVldWU+JywgKCdxdWV1ZScsICdwcmlvcml0eV9xdWV1ZScs
KSksCisgICAgKCc8c2V0PicsICgnc2V0JywgJ211bHRpc2V0JywpKSwKKyAgICAoJzxzdGFjaz4n
LCAoJ3N0YWNrJywpKSwKKyAgICAoJzxzdHJpbmc+JywgKCdjaGFyX3RyYWl0cycsICdiYXNpY19z
dHJpbmcnLCkpLAorICAgICgnPHV0aWxpdHk+JywgKCdwYWlyJywpKSwKKyAgICAoJzx2ZWN0b3I+
JywgKCd2ZWN0b3InLCkpLAorCisgICAgIyBnY2MgZXh0ZW5zaW9ucy4KKyAgICAjIE5vdGU6IHN0
ZDo6aGFzaCBpcyB0aGVpciBoYXNoLCA6Omhhc2ggaXMgb3VyIGhhc2gKKyAgICAoJzxoYXNoX21h
cD4nLCAoJ2hhc2hfbWFwJywgJ2hhc2hfbXVsdGltYXAnLCkpLAorICAgICgnPGhhc2hfc2V0Pics
ICgnaGFzaF9zZXQnLCAnaGFzaF9tdWx0aXNldCcsKSksCisgICAgKCc8c2xpc3Q+JywgKCdzbGlz
dCcsKSksCisgICAgKQorCitfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BST01PVEVEID0gewor
ICAgICMgV2UgY2FuIHRydXN0IHdpdGggcmVhc29uYWJsZSBjb25maWRlbmNlIHRoYXQgbWFwIGdp
dmVzIHVzIHBhaXI8PiwgdG9vLgorICAgICdwYWlyPD4nOiAoJ21hcCcsICdtdWx0aW1hcCcsICdo
YXNoX21hcCcsICdoYXNoX211bHRpbWFwJykKK30KKworX1JFX1BBVFRFUk5fU1RSSU5HID0gcmUu
Y29tcGlsZShyJ1xic3RyaW5nXGInKQorCitfcmVfcGF0dGVybl9hbGdvcml0aG1faGVhZGVyID0g
W10KK2ZvciBfdGVtcGxhdGUgaW4gKCdjb3B5JywgJ21heCcsICdtaW4nLCAnbWluX2VsZW1lbnQn
LCAnc29ydCcsICdzd2FwJywKKyAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nKToKKyAgICAj
IE1hdGNoIG1heDx0eXBlPiguLi4sIC4uLiksIG1heCguLi4sIC4uLiksIGJ1dCBub3QgZm9vLT5t
YXgsIGZvby5tYXggb3IKKyAgICAjIHR5cGU6Om1heCgpLgorICAgIF9yZV9wYXR0ZXJuX2FsZ29y
aXRobV9oZWFkZXIuYXBwZW5kKAorICAgICAgICAocmUuY29tcGlsZShyJ1tePi5dXGInICsgX3Rl
bXBsYXRlICsgcicoPC4qPz4pP1woW15cKV0nKSwKKyAgICAgICAgIF90ZW1wbGF0ZSwKKyAgICAg
ICAgICc8YWxnb3JpdGhtPicpKQorCitfcmVfcGF0dGVybl90ZW1wbGF0ZXMgPSBbXQorZm9yIF9o
ZWFkZXIsIF90ZW1wbGF0ZXMgaW4gX0hFQURFUlNfQ09OVEFJTklOR19URU1QTEFURVM6CisgICAg
Zm9yIF90ZW1wbGF0ZSBpbiBfdGVtcGxhdGVzOgorICAgICAgICBfcmVfcGF0dGVybl90ZW1wbGF0
ZXMuYXBwZW5kKAorICAgICAgICAgICAgKHJlLmNvbXBpbGUocicoXDx8XGIpJyArIF90ZW1wbGF0
ZSArIHInXHMqXDwnKSwKKyAgICAgICAgICAgICBfdGVtcGxhdGUgKyAnPD4nLAorICAgICAgICAg
ICAgIF9oZWFkZXIpKQorCisKK2RlZiBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoZmlsZW5h
bWVfY3BwLCBmaWxlbmFtZV9oKToKKyAgICAiIiJDaGVjayBpZiB0aGVzZSB0d28gZmlsZW5hbWVz
IGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUuCisKKyAgICBUaGUgY29uY2VwdCBvZiBhICdtb2R1
bGUnIGhlcmUgaXMgYSBhcyBmb2xsb3dzOgorICAgIGZvby5oLCBmb28taW5sLmgsIGZvby5jcHAs
IGZvb190ZXN0LmNwcCBhbmQgZm9vX3VuaXR0ZXN0LmNwcCBiZWxvbmcgdG8gdGhlCisgICAgc2Ft
ZSAnbW9kdWxlJyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCisgICAgc29tZS9w
YXRoL3B1YmxpYy94eXp6eSBhbmQgc29tZS9wYXRoL2ludGVybmFsL3h5enp5IGFyZSBhbHNvIGNv
bnNpZGVyZWQKKyAgICB0byBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxlIGhlcmUuCisKKyAgICBJ
ZiB0aGUgZmlsZW5hbWVfY3BwIGNvbnRhaW5zIGEgbG9uZ2VyIHBhdGggdGhhbiB0aGUgZmlsZW5h
bWVfaCwgZm9yIGV4YW1wbGUsCisgICAgJy9hYnNvbHV0ZS9wYXRoL3RvL2Jhc2Uvc3lzaW5mby5j
cHAnLCBhbmQgdGhpcyBmaWxlIHdvdWxkIGluY2x1ZGUKKyAgICAnYmFzZS9zeXNpbmZvLmgnLCB0
aGlzIGZ1bmN0aW9uIGFsc28gcHJvZHVjZXMgdGhlIHByZWZpeCBuZWVkZWQgdG8gb3BlbiB0aGUK
KyAgICBoZWFkZXIuIFRoaXMgaXMgdXNlZCBieSB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24g
dG8gbW9yZSByb2J1c3RseSBvcGVuIHRoZQorICAgIGhlYWRlciBmaWxlLiBXZSBkb24ndCBoYXZl
IGFjY2VzcyB0byB0aGUgcmVhbCBpbmNsdWRlIHBhdGhzIGluIHRoaXMgY29udGV4dCwKKyAgICBz
byB3ZSBuZWVkIHRoaXMgZ3Vlc3N3b3JrIGhlcmUuCisKKyAgICBLbm93biBidWdzOiB0b29scy9i
YXNlL2Jhci5jcHAgYW5kIGJhc2UvYmFyLmggYmVsb25nIHRvIHRoZSBzYW1lIG1vZHVsZQorICAg
IGFjY29yZGluZyB0byB0aGlzIGltcGxlbWVudGF0aW9uLiBCZWNhdXNlIG9mIHRoaXMsIHRoaXMg
ZnVuY3Rpb24gZ2l2ZXMKKyAgICBzb21lIGZhbHNlIHBvc2l0aXZlcy4gVGhpcyBzaG91bGQgYmUg
c3VmZmljaWVudGx5IHJhcmUgaW4gcHJhY3RpY2UuCisKKyAgICBBcmdzOgorICAgICAgZmlsZW5h
bWVfY3BwOiBpcyB0aGUgcGF0aCBmb3IgdGhlIC5jcHAgZmlsZQorICAgICAgZmlsZW5hbWVfaDog
aXMgdGhlIHBhdGggZm9yIHRoZSBoZWFkZXIgcGF0aAorCisgICAgUmV0dXJuczoKKyAgICAgIFR1
cGxlIHdpdGggYSBib29sIGFuZCBhIHN0cmluZzoKKyAgICAgIGJvb2w6IFRydWUgaWYgZmlsZW5h
bWVfY3BwIGFuZCBmaWxlbmFtZV9oIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUuCisgICAgICBz
dHJpbmc6IHRoZSBhZGRpdGlvbmFsIHByZWZpeCBuZWVkZWQgdG8gb3BlbiB0aGUgaGVhZGVyIGZp
bGUuCisgICAgIiIiCisKKyAgICBpZiBub3QgZmlsZW5hbWVfY3BwLmVuZHN3aXRoKCcuY3BwJyk6
CisgICAgICAgIHJldHVybiAoRmFsc2UsICcnKQorICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1l
X2NwcFs6LWxlbignLmNwcCcpXQorICAgIGlmIGZpbGVuYW1lX2NwcC5lbmRzd2l0aCgnX3VuaXR0
ZXN0Jyk6CisgICAgICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6LWxlbignX3VuaXR0
ZXN0JyldCisgICAgZWxpZiBmaWxlbmFtZV9jcHAuZW5kc3dpdGgoJ190ZXN0Jyk6CisgICAgICAg
IGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6LWxlbignX3Rlc3QnKV0KKyAgICBmaWxlbmFt
ZV9jcHAgPSBmaWxlbmFtZV9jcHAucmVwbGFjZSgnL3B1YmxpYy8nLCAnLycpCisgICAgZmlsZW5h
bWVfY3BwID0gZmlsZW5hbWVfY3BwLnJlcGxhY2UoJy9pbnRlcm5hbC8nLCAnLycpCisKKyAgICBp
ZiBub3QgZmlsZW5hbWVfaC5lbmRzd2l0aCgnLmgnKToKKyAgICAgICAgcmV0dXJuIChGYWxzZSwg
JycpCisgICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2hbOi1sZW4oJy5oJyldCisgICAgaWYgZmls
ZW5hbWVfaC5lbmRzd2l0aCgnLWlubCcpOgorICAgICAgICBmaWxlbmFtZV9oID0gZmlsZW5hbWVf
aFs6LWxlbignLWlubCcpXQorICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJlcGxhY2UoJy9w
dWJsaWMvJywgJy8nKQorICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJlcGxhY2UoJy9pbnRl
cm5hbC8nLCAnLycpCisKKyAgICBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUgPSBmaWxlbmFt
ZV9jcHAuZW5kc3dpdGgoZmlsZW5hbWVfaCkKKyAgICBjb21tb25fcGF0aCA9ICcnCisgICAgaWYg
ZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlOgorICAgICAgICBjb21tb25fcGF0aCA9IGZpbGVu
YW1lX2NwcFs6LWxlbihmaWxlbmFtZV9oKV0KKyAgICByZXR1cm4gZmlsZXNfYmVsb25nX3RvX3Nh
bWVfbW9kdWxlLCBjb21tb25fcGF0aAorCisKK2RlZiB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmaWxl
bmFtZSwgaW5jbHVkZV9zdGF0ZSwgaW89Y29kZWNzKToKKyAgICAiIiJGaWxsIHVwIHRoZSBpbmNs
dWRlX3N0YXRlIHdpdGggbmV3IGluY2x1ZGVzIGZvdW5kIGZyb20gdGhlIGZpbGUuCisKKyAgICBB
cmdzOgorICAgICAgZmlsZW5hbWU6IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIgdG8gcmVhZC4KKyAg
ICAgIGluY2x1ZGVfc3RhdGU6IGFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhl
IGhlYWRlcnMgYXJlIGluc2VydGVkLgorICAgICAgaW86IFRoZSBpbyBmYWN0b3J5IHRvIHVzZSB0
byByZWFkIHRoZSBmaWxlLiBQcm92aWRlZCBmb3IgdGVzdGFiaWxpdHkuCisKKyAgICBSZXR1cm5z
OgorICAgICAgVHJ1ZSBpZiBhIGhlYWRlciB3YXMgc3VjY2VzZnVsbHkgYWRkZWQuIEZhbHNlIG90
aGVyd2lzZS4KKyAgICAiIiIKKyAgICBoZWFkZXJfZmlsZSA9IE5vbmUKKyAgICB0cnk6CisgICAg
ICAgIGhlYWRlcl9maWxlID0gaW8ub3BlbihmaWxlbmFtZSwgJ3InLCAndXRmOCcsICdyZXBsYWNl
JykKKyAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgbGluZV9u
dW1iZXIgPSAwCisgICAgZm9yIGxpbmUgaW4gaGVhZGVyX2ZpbGU6CisgICAgICAgIGxpbmVfbnVt
YmVyICs9IDEKKyAgICAgICAgY2xlYW5fbGluZSA9IGNsZWFuc2VfY29tbWVudHMobGluZSkKKyAg
ICAgICAgbWF0Y2hlZCA9IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGNsZWFuX2xpbmUpCisg
ICAgICAgIGlmIG1hdGNoZWQ6CisgICAgICAgICAgICBpbmNsdWRlID0gbWF0Y2hlZC5ncm91cCgy
KQorICAgICAgICAgICAgIyBUaGUgdmFsdWUgZm9ybWF0dGluZyBpcyBjdXRlLCBidXQgbm90IHJl
YWxseSB1c2VkIHJpZ2h0IG5vdy4KKyAgICAgICAgICAgICMgV2hhdCBtYXR0ZXJzIGhlcmUgaXMg
dGhhdCB0aGUga2V5IGlzIGluIGluY2x1ZGVfc3RhdGUuCisgICAgICAgICAgICBpbmNsdWRlX3N0
YXRlLnNldGRlZmF1bHQoaW5jbHVkZSwgJyVzOiVkJyAlIChmaWxlbmFtZSwgbGluZV9udW1iZXIp
KQorICAgIHJldHVybiBUcnVlCisKKworZGVmIGNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3Vz
ZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVfc3RhdGUsIGVycm9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbz1jb2RlY3MpOgorICAgICIiIlJlcG9ydHMgZm9y
IG1pc3Npbmcgc3RsIGluY2x1ZGVzLgorCisgICAgVGhpcyBmdW5jdGlvbiB3aWxsIG91dHB1dCB3
YXJuaW5ncyB0byBtYWtlIHN1cmUgeW91IGFyZSBpbmNsdWRpbmcgdGhlIGhlYWRlcnMKKyAgICBu
ZWNlc3NhcnkgZm9yIHRoZSBzdGwgY29udGFpbmVycyBhbmQgZnVuY3Rpb25zIHRoYXQgeW91IHVz
ZS4gV2Ugb25seSBnaXZlIG9uZQorICAgIHJlYXNvbiB0byBpbmNsdWRlIGEgaGVhZGVyLiBGb3Ig
ZXhhbXBsZSwgaWYgeW91IHVzZSBib3RoIGVxdWFsX3RvPD4gYW5kCisgICAgbGVzczw+IGluIGEg
LmggZmlsZSwgb25seSBvbmUgKHRoZSBsYXR0ZXIgaW4gdGhlIGZpbGUpIG9mIHRoZXNlIHdpbGwg
YmUKKyAgICByZXBvcnRlZCBhcyBhIHJlYXNvbiB0byBpbmNsdWRlIHRoZSA8ZnVuY3Rpb25hbD4u
CisKKyAgICBBcmdzOgorICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCisgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5p
bmcgdGhlIGZpbGUuCisgICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3Rh
bmNlLgorICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBm
b3VuZC4KKyAgICAgIGlvOiBUaGUgSU8gZmFjdG9yeSB0byB1c2UgdG8gcmVhZCB0aGUgaGVhZGVy
IGZpbGUuIFByb3ZpZGVkIGZvciB1bml0dGVzdAorICAgICAgICAgIGluamVjdGlvbi4KKyAgICAi
IiIKKyAgICByZXF1aXJlZCA9IHt9ICAjIEEgbWFwIG9mIGhlYWRlciBuYW1lIHRvIGxpbmVfbnVt
YmVyIGFuZCB0aGUgdGVtcGxhdGUgZW50aXR5LgorICAgICAgICAjIEV4YW1wbGUgb2YgcmVxdWly
ZWQ6IHsgJzxmdW5jdGlvbmFsPic6ICgxMjE5LCAnbGVzczw+JykgfQorCisgICAgZm9yIGxpbmVf
bnVtYmVyIGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6CisgICAgICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCisgICAgICAgIGlmIG5vdCBsaW5lIG9y
IGxpbmVbMF0gPT0gJyMnOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAjIFN0cmlu
ZyBpcyBzcGVjaWFsIC0tIGl0IGlzIGEgbm9uLXRlbXBsYXRpemVkIHR5cGUgaW4gU1RMLgorICAg
ICAgICBpZiBfUkVfUEFUVEVSTl9TVFJJTkcuc2VhcmNoKGxpbmUpOgorICAgICAgICAgICAgcmVx
dWlyZWRbJzxzdHJpbmc+J10gPSAobGluZV9udW1iZXIsICdzdHJpbmcnKQorCisgICAgICAgIGZv
ciBwYXR0ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9yZV9wYXR0ZXJuX2FsZ29yaXRobV9oZWFk
ZXI6CisgICAgICAgICAgICBpZiBwYXR0ZXJuLnNlYXJjaChsaW5lKToKKyAgICAgICAgICAgICAg
ICByZXF1aXJlZFtoZWFkZXJdID0gKGxpbmVfbnVtYmVyLCB0ZW1wbGF0ZSkKKworICAgICAgICAj
IFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMganVzdCBhIHNwZWVkIHVwLCBubyBzZW1hbnRpY3Mg
YXJlIGNoYW5nZWQuCisgICAgICAgIGlmIG5vdCAnPCcgaW4gbGluZTogICMgUmVkdWNlcyB0aGUg
Y3B1IHRpbWUgdXNhZ2UgYnkgc2tpcHBpbmcgbGluZXMuCisgICAgICAgICAgICBjb250aW51ZQor
CisgICAgICAgIGZvciBwYXR0ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9yZV9wYXR0ZXJuX3Rl
bXBsYXRlczoKKyAgICAgICAgICAgIGlmIHBhdHRlcm4uc2VhcmNoKGxpbmUpOgorICAgICAgICAg
ICAgICAgIHJlcXVpcmVkW2hlYWRlcl0gPSAobGluZV9udW1iZXIsIHRlbXBsYXRlKQorCisgICAg
IyBUaGUgcG9saWN5IGlzIHRoYXQgaWYgeW91ICNpbmNsdWRlIHNvbWV0aGluZyBpbiBmb28uaCB5
b3UgZG9uJ3QgbmVlZCB0bworICAgICMgaW5jbHVkZSBpdCBhZ2FpbiBpbiBmb28uY3BwLiBIZXJl
LCB3ZSB3aWxsIGxvb2sgYXQgcG9zc2libGUgaW5jbHVkZXMuCisgICAgIyBMZXQncyBjb3B5IHRo
ZSBpbmNsdWRlX3N0YXRlIHNvIGl0IGlzIG9ubHkgbWVzc2VkIHVwIHdpdGhpbiB0aGlzIGZ1bmN0
aW9uLgorICAgIGluY2x1ZGVfc3RhdGUgPSBpbmNsdWRlX3N0YXRlLmNvcHkoKQorCisgICAgIyBE
aWQgd2UgZmluZCB0aGUgaGVhZGVyIGZvciB0aGlzIGZpbGUgKGlmIGFueSkgYW5kIHN1Y2Nlc2Z1
bGx5IGxvYWQgaXQ/CisgICAgaGVhZGVyX2ZvdW5kID0gRmFsc2UKKworICAgICMgVXNlIHRoZSBh
YnNvbHV0ZSBwYXRoIHNvIHRoYXQgbWF0Y2hpbmcgd29ya3MgcHJvcGVybHkuCisgICAgYWJzX2Zp
bGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQorCisgICAgIyBGb3IgRW1hY3MncyBm
bHltYWtlLgorICAgICMgSWYgY3BwX3N0eWxlIGlzIGludm9rZWQgZnJvbSBFbWFjcydzIGZseW1h
a2UsIGEgdGVtcG9yYXJ5IGZpbGUgaXMgZ2VuZXJhdGVkCisgICAgIyBieSBmbHltYWtlIGFuZCB0
aGF0IGZpbGUgbmFtZSBtaWdodCBlbmQgd2l0aCAnX2ZseW1ha2UuY3BwJy4gSW4gdGhhdCBjYXNl
LAorICAgICMgcmVzdG9yZSBvcmlnaW5hbCBmaWxlIG5hbWUgaGVyZSBzbyB0aGF0IHRoZSBjb3Jy
ZXNwb25kaW5nIGhlYWRlciBmaWxlIGNhbiBiZQorICAgICMgZm91bmQuCisgICAgIyBlLmcuIElm
IHRoZSBmaWxlIG5hbWUgaXMgJ2Zvb19mbHltYWtlLmNwcCcsIHdlIHNob3VsZCBzZWFyY2ggZm9y
ICdmb28uaCcKKyAgICAjIGluc3RlYWQgb2YgJ2Zvb19mbHltYWtlLmgnCisgICAgZW1hY3NfZmx5
bWFrZV9zdWZmaXggPSAnX2ZseW1ha2UuY3BwJworICAgIGlmIGFic19maWxlbmFtZS5lbmRzd2l0
aChlbWFjc19mbHltYWtlX3N1ZmZpeCk6CisgICAgICAgIGFic19maWxlbmFtZSA9IGFic19maWxl
bmFtZVs6LWxlbihlbWFjc19mbHltYWtlX3N1ZmZpeCldICsgJy5jcHAnCisKKyAgICAjIGluY2x1
ZGVfc3RhdGUgaXMgbW9kaWZpZWQgZHVyaW5nIGl0ZXJhdGlvbiwgc28gd2UgaXRlcmF0ZSBvdmVy
IGEgY29weSBvZgorICAgICMgdGhlIGtleXMuCisgICAgZm9yIGhlYWRlciBpbiBpbmNsdWRlX3N0
YXRlLmtleXMoKTogICNOT0xJTlQKKyAgICAgICAgKHNhbWVfbW9kdWxlLCBjb21tb25fcGF0aCkg
PSBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoYWJzX2ZpbGVuYW1lLCBoZWFkZXIpCisgICAg
ICAgIGZ1bGxwYXRoID0gY29tbW9uX3BhdGggKyBoZWFkZXIKKyAgICAgICAgaWYgc2FtZV9tb2R1
bGUgYW5kIHVwZGF0ZV9pbmNsdWRlX3N0YXRlKGZ1bGxwYXRoLCBpbmNsdWRlX3N0YXRlLCBpbyk6
CisgICAgICAgICAgICBoZWFkZXJfZm91bmQgPSBUcnVlCisKKyAgICAjIElmIHdlIGNhbid0IGZp
bmQgdGhlIGhlYWRlciBmaWxlIGZvciBhIC5jcHAsIGFzc3VtZSBpdCdzIGJlY2F1c2Ugd2UgZG9u
J3QKKyAgICAjIGtub3cgd2hlcmUgdG8gbG9vay4gSW4gdGhhdCBjYXNlIHdlJ2xsIGdpdmUgdXAg
YXMgd2UncmUgbm90IHN1cmUgdGhleQorICAgICMgZGlkbid0IGluY2x1ZGUgaXQgaW4gdGhlIC5o
IGZpbGUuCisgICAgIyBGSVhNRTogRG8gYSBiZXR0ZXIgam9iIG9mIGZpbmRpbmcgLmggZmlsZXMg
c28gd2UgYXJlIGNvbmZpZGVudCB0aGF0CisgICAgIyAgICAgICAgbm90IGhhdmluZyB0aGUgLmgg
ZmlsZSBtZWFucyB0aGVyZSBpc24ndCBvbmUuCisgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5j
cHAnKSBhbmQgbm90IGhlYWRlcl9mb3VuZDoKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIEFsbCB0
aGUgbGluZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZCwgcmVwb3J0IHRoZSBlcnJvcnMgZm91bmQuCisg
ICAgZm9yIHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkIGluIHJlcXVpcmVkOgorICAgICAgICB0
ZW1wbGF0ZSA9IHJlcXVpcmVkW3JlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkXVsxXQorICAgICAg
ICBpZiB0ZW1wbGF0ZSBpbiBfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BST01PVEVEOgorICAg
ICAgICAgICAgaGVhZGVycyA9IF9IRUFERVJTX0FDQ0VQVEVEX0JVVF9OT1RfUFJPTU9URURbdGVt
cGxhdGVdCisgICAgICAgICAgICBpZiBbVHJ1ZSBmb3IgaGVhZGVyIGluIGhlYWRlcnMgaWYgaGVh
ZGVyIGluIGluY2x1ZGVfc3RhdGVdOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAg
IGlmIHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkLnN0cmlwKCc8PiInKSBub3QgaW4gaW5jbHVk
ZV9zdGF0ZToKKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCByZXF1aXJlZFtyZXF1aXJlZF9o
ZWFkZXJfdW5zdHJpcHBlZF1bMF0sCisgICAgICAgICAgICAgICAgICAnYnVpbGQvaW5jbHVkZV93
aGF0X3lvdV91c2UnLCA0LAorICAgICAgICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSAnICsgcmVx
dWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWQgKyAnIGZvciAnICsgdGVtcGxhdGUpCisKKworZGVmIHBy
b2Nlc3NfbGluZShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sCisgICAgICAgICAgICAgICAgIGNs
ZWFuX2xpbmVzLCBsaW5lLCBpbmNsdWRlX3N0YXRlLCBmdW5jdGlvbl9zdGF0ZSwKKyAgICAgICAg
ICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKToKKyAgICAiIiJQcm9jZXNzZXMgYSBzaW5nbGUg
bGluZSBpbiB0aGUgZmlsZS4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTogRmlsZW5hbWUg
b2YgdGhlIGZpbGUgdGhhdCBpcyBiZWluZyBwcm9jZXNzZWQuCisgICAgICBmaWxlX2V4dGVuc2lv
bjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUuCisgICAgICBj
bGVhbl9saW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRpbmcgYSBsaW5l
IG9mIHRoZSBmaWxlLAorICAgICAgICAgICAgICAgICAgIHdpdGggY29tbWVudHMgc3RyaXBwZWQu
CisgICAgICBsaW5lOiBOdW1iZXIgb2YgbGluZSBiZWluZyBwcm9jZXNzZWQuCisgICAgICBpbmNs
dWRlX3N0YXRlOiBBbiBfSW5jbHVkZVN0YXRlIGluc3RhbmNlIGluIHdoaWNoIHRoZSBoZWFkZXJz
IGFyZSBpbnNlcnRlZC4KKyAgICAgIGZ1bmN0aW9uX3N0YXRlOiBBIF9GdW5jdGlvblN0YXRlIGlu
c3RhbmNlIHdoaWNoIGNvdW50cyBmdW5jdGlvbiBsaW5lcywgZXRjLgorICAgICAgY2xhc3Nfc3Rh
dGU6IEEgX0NsYXNzU3RhdGUgaW5zdGFuY2Ugd2hpY2ggbWFpbnRhaW5zIGluZm9ybWF0aW9uIGFi
b3V0CisgICAgICAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgc3RhY2sgb2YgbmVzdGVkIGNsYXNz
IGRlY2xhcmF0aW9ucyBiZWluZyBwYXJzZWQuCisgICAgICBlcnJvcjogQSBjYWxsYWJsZSB0byB3
aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGljaCB0YWtlcyA0IGFyZ3VtZW50czoKKyAgICAg
ICAgICAgICBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGVycm9yIGxldmVsLCBhbmQgbWVzc2FnZQor
CisgICAgIiIiCisgICAgcmF3X2xpbmVzID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCisgICAgY2hl
Y2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBmdW5j
dGlvbl9zdGF0ZSwgZXJyb3IpCisgICAgaWYgc2VhcmNoKHInXGJOT0xJTlRcYicsIHJhd19saW5l
c1tsaW5lXSk6ICAjIGlnbm9yZSBub2xpbnQgbGluZXMKKyAgICAgICAgcmV0dXJuCisgICAgY2hl
Y2tfZm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhmaWxlbmFtZSwgY2xlYW5fbGlu
ZXMsIGxpbmUsIGVycm9yKQorICAgIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywg
bGluZSwgZmlsZV9leHRlbnNpb24sIGVycm9yKQorICAgIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1l
LCBjbGVhbl9saW5lcywgbGluZSwgZmlsZV9leHRlbnNpb24sIGluY2x1ZGVfc3RhdGUsCisgICAg
ICAgICAgICAgICAgICAgZXJyb3IpCisgICAgY2hlY2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1
Y3RzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKQorICAgIGNoZWNrX3Bvc2l4X3RocmVh
ZGluZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQorICAgIGNoZWNrX2ludmFs
aWRfaW5jcmVtZW50KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZXJyb3IpCisKKworZGVm
IHByb2Nlc3NfZmlsZV9kYXRhKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgbGluZXMsIGVycm9y
KToKKyAgICAiIiJQZXJmb3JtcyBsaW50IGNoZWNrcyBhbmQgcmVwb3J0cyBhbnkgZXJyb3JzIHRv
IHRoZSBnaXZlbiBlcnJvciBmdW5jdGlvbi4KKworICAgIEFyZ3M6CisgICAgICBmaWxlbmFtZTog
RmlsZW5hbWUgb2YgdGhlIGZpbGUgdGhhdCBpcyBiZWluZyBwcm9jZXNzZWQuCisgICAgICBmaWxl
X2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUu
CisgICAgICBsaW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRpbmcgYSBs
aW5lIG9mIHRoZSBmaWxlLCB3aXRoIHRoZQorICAgICAgICAgICAgIGxhc3QgZWxlbWVudCBiZWlu
ZyBlbXB0eSBpZiB0aGUgZmlsZSBpcyB0ZXJtaW5lZCB3aXRoIGEgbmV3bGluZS4KKyAgICAgIGVy
cm9yOiBBIGNhbGxhYmxlIHRvIHdoaWNoIGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2Vz
IDQgYXJndW1lbnRzOgorICAgICIiIgorICAgIGxpbmVzID0gKFsnLy8gbWFya2VyIHNvIGxpbmUg
bnVtYmVycyBhbmQgaW5kaWNlcyBib3RoIHN0YXJ0IGF0IDEnXSArIGxpbmVzICsKKyAgICAgICAg
ICAgICBbJy8vIG1hcmtlciBzbyBsaW5lIG51bWJlcnMgZW5kIGluIGEga25vd24gd2F5J10pCisK
KyAgICBpbmNsdWRlX3N0YXRlID0gX0luY2x1ZGVTdGF0ZSgpCisgICAgZnVuY3Rpb25fc3RhdGUg
PSBfRnVuY3Rpb25TdGF0ZSgpCisgICAgY2xhc3Nfc3RhdGUgPSBfQ2xhc3NTdGF0ZSgpCisKKyAg
ICBjaGVja19mb3JfY29weXJpZ2h0KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCisKKyAgICBpZiBm
aWxlX2V4dGVuc2lvbiA9PSAnaCc6CisgICAgICAgIGNoZWNrX2Zvcl9oZWFkZXJfZ3VhcmQoZmls
ZW5hbWUsIGxpbmVzLCBlcnJvcikKKworICAgIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZp
bGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgY2xlYW5fbGluZXMgPSBDbGVhbnNlZExpbmVzKGxp
bmVzKQorICAgIGZvciBsaW5lIGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6Cisg
ICAgICAgIHByb2Nlc3NfbGluZShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGNsZWFuX2xpbmVz
LCBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3Rh
dGUsIGNsYXNzX3N0YXRlLCBlcnJvcikKKyAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZChm
aWxlbmFtZSwgZXJyb3IpCisKKyAgICBjaGVja19mb3JfaW5jbHVkZV93aGF0X3lvdV91c2UoZmls
ZW5hbWUsIGNsZWFuX2xpbmVzLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKKworICAgICMgV2UgY2hl
Y2sgaGVyZSByYXRoZXIgdGhhbiBpbnNpZGUgcHJvY2Vzc19saW5lIHNvIHRoYXQgd2Ugc2VlIHJh
dworICAgICMgbGluZXMgcmF0aGVyIHRoYW4gImNsZWFuZWQiIGxpbmVzLgorICAgIGNoZWNrX2Zv
cl91bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikK
KworICAgIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2YoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcikK
KworCitkZWYgcHJvY2Vzc19maWxlKGZpbGVuYW1lLCBlcnJvcj1lcnJvcik6CisgICAgIiIiUGVy
Zm9ybXMgY3BwX3N0eWxlIG9uIGEgc2luZ2xlIGZpbGUuCisKKyAgICBBcmdzOgorICAgICAgZmls
ZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBmaWxlIHRvIHBhcnNlLgorICAgICAgZXJyb3I6IFRoZSBm
dW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KKyAgICAiIiIKKyAgICB0cnk6
CisgICAgICAgICMgU3VwcG9ydCB0aGUgVU5JWCBjb252ZW50aW9uIG9mIHVzaW5nICItIiBmb3Ig
c3RkaW4uICBOb3RlIHRoYXQKKyAgICAgICAgIyB3ZSBhcmUgbm90IG9wZW5pbmcgdGhlIGZpbGUg
d2l0aCB1bml2ZXJzYWwgbmV3bGluZSBzdXBwb3J0CisgICAgICAgICMgKHdoaWNoIGNvZGVjcyBk
b2Vzbid0IHN1cHBvcnQgYW55d2F5KSwgc28gdGhlIHJlc3VsdGluZyBsaW5lcyBkbworICAgICAg
ICAjIGNvbnRhaW4gdHJhaWxpbmcgJ1xyJyBjaGFyYWN0ZXJzIGlmIHdlIGFyZSByZWFkaW5nIGEg
ZmlsZSB0aGF0CisgICAgICAgICMgaGFzIENSTEYgZW5kaW5ncy4KKyAgICAgICAgIyBJZiBhZnRl
ciB0aGUgc3BsaXQgYSB0cmFpbGluZyAnXHInIGlzIHByZXNlbnQsIGl0IGlzIHJlbW92ZWQKKyAg
ICAgICAgIyBiZWxvdy4gSWYgaXQgaXMgbm90IGV4cGVjdGVkIHRvIGJlIHByZXNlbnQgKGkuZS4g
b3MubGluZXNlcCAhPQorICAgICAgICAjICdcclxuJyBhcyBpbiBXaW5kb3dzKSwgYSB3YXJuaW5n
IGlzIGlzc3VlZCBiZWxvdyBpZiB0aGlzIGZpbGUKKyAgICAgICAgIyBpcyBwcm9jZXNzZWQuCisK
KyAgICAgICAgaWYgZmlsZW5hbWUgPT0gJy0nOgorICAgICAgICAgICAgbGluZXMgPSBjb2RlY3Mu
U3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0cmVhZGVyKCd1dGY4JyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRm
OCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBs
YWNlJykucmVhZCgpLnNwbGl0KCdcbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsaW5l
cyA9IGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAncicsICd1dGY4JywgJ3JlcGxhY2UnKS5yZWFkKCku
c3BsaXQoJ1xuJykKKworICAgICAgICBjYXJyaWFnZV9yZXR1cm5fZm91bmQgPSBGYWxzZQorICAg
ICAgICAjIFJlbW92ZSB0cmFpbGluZyAnXHInLgorICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4g
cmFuZ2UobGVuKGxpbmVzKSk6CisgICAgICAgICAgICBpZiBsaW5lc1tsaW5lX251bWJlcl0uZW5k
c3dpdGgoJ1xyJyk6CisgICAgICAgICAgICAgICAgbGluZXNbbGluZV9udW1iZXJdID0gbGluZXNb
bGluZV9udW1iZXJdLnJzdHJpcCgnXHInKQorICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVy
bl9mb3VuZCA9IFRydWUKKworICAgIGV4Y2VwdCBJT0Vycm9yOgorICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKAorICAgICAgICAgICAgIlNraXBwaW5nIGlucHV0ICclcyc6IENhbid0IG9wZW4gZm9y
IHJlYWRpbmdcbiIgJSBmaWxlbmFtZSkKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIE5vdGUsIGlm
IG5vIGRvdCBpcyBmb3VuZCwgdGhpcyB3aWxsIGdpdmUgdGhlIGVudGlyZSBmaWxlbmFtZSBhcyB0
aGUgZXh0LgorICAgIGZpbGVfZXh0ZW5zaW9uID0gZmlsZW5hbWVbZmlsZW5hbWUucmZpbmQoJy4n
KSArIDE6XQorCisgICAgIyBXaGVuIHJlYWRpbmcgZnJvbSBzdGRpbiwgdGhlIGV4dGVuc2lvbiBp
cyB1bmtub3duLCBzbyBubyBjcHBfc3R5bGUgdGVzdHMKKyAgICAjIHNob3VsZCByZWx5IG9uIHRo
ZSBleHRlbnNpb24uCisgICAgaWYgKGZpbGVuYW1lICE9ICctJyBhbmQgZmlsZV9leHRlbnNpb24g
IT0gJ2gnIGFuZCBmaWxlX2V4dGVuc2lvbiAhPSAnY3BwJworICAgICAgICBhbmQgZmlsZV9leHRl
bnNpb24gIT0gJ2MnKToKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3JpbmcgJXM7IG5v
dCBhIC5jcHAsIC5jIG9yIC5oIGZpbGVcbicgJSBmaWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAg
ICBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJv
cikKKyAgICAgICAgaWYgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kIGFuZCBvcy5saW5lc2VwICE9ICdc
clxuJzoKKyAgICAgICAgICAgICMgVXNlIDAgZm9yIGxpbmVfbnVtYmVyIHNpbmNlIG91dHB1dGlu
ZyBvbmx5IG9uZSBlcnJvciBmb3IgcG90ZW50aWFsbHkKKyAgICAgICAgICAgICMgc2V2ZXJhbCBs
aW5lcy4KKyAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnd2hpdGVzcGFjZS9uZXdsaW5l
JywgMSwKKyAgICAgICAgICAgICAgICAgICdPbmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxcciAoXk0p
IGZvdW5kOycKKyAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4nKQor
CisgICAgc3lzLnN0ZGVyci53cml0ZSgnRG9uZSBwcm9jZXNzaW5nICVzXG4nICUgZmlsZW5hbWUp
CisKKworZGVmIHByaW50X3VzYWdlKG1lc3NhZ2UpOgorICAgICIiIlByaW50cyBhIGJyaWVmIHVz
YWdlIHN0cmluZyBhbmQgZXhpdHMsIG9wdGlvbmFsbHkgd2l0aCBhbiBlcnJvciBtZXNzYWdlLgor
CisgICAgQXJnczoKKyAgICAgIG1lc3NhZ2U6IFRoZSBvcHRpb25hbCBlcnJvciBtZXNzYWdlLgor
ICAgICIiIgorICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQorICAgIGlmIG1lc3NhZ2U6Cisg
ICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgbWVzc2FnZSkKKyAgICBlbHNlOgor
ICAgICAgICBzeXMuZXhpdCgxKQorCisKK2RlZiBwcmludF9jYXRlZ29yaWVzKCk6CisgICAgIiIi
UHJpbnRzIGEgbGlzdCBvZiBhbGwgdGhlIGVycm9yLWNhdGVnb3JpZXMgdXNlZCBieSBlcnJvciBt
ZXNzYWdlcy4KKworICAgIFRoZXNlIGFyZSB0aGUgY2F0ZWdvcmllcyB1c2VkIHRvIGZpbHRlciBt
ZXNzYWdlcyB2aWEgLS1maWx0ZXIuCisgICAgIiIiCisgICAgc3lzLnN0ZGVyci53cml0ZShfRVJS
T1JfQ0FURUdPUklFUykKKyAgICBzeXMuZXhpdCgwKQorCisKK2RlZiBwYXJzZV9hcmd1bWVudHMo
YXJncywgYWRkaXRpb25hbF9mbGFncz1bXSk6CisgICAgIiIiUGFyc2VzIHRoZSBjb21tYW5kIGxp
bmUgYXJndW1lbnRzLgorCisgICAgVGhpcyBtYXkgc2V0IHRoZSBvdXRwdXQgZm9ybWF0IGFuZCB2
ZXJib3NpdHkgbGV2ZWwgYXMgc2lkZS1lZmZlY3RzLgorCisgICAgQXJnczoKKyAgICAgIGFyZ3M6
IFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgorICAgICAgYWRkaXRpb25hbF9mbGFnczogQSBs
aXN0IG9mIHN0cmluZ3Mgd2hpY2ggc3BlY2lmaWVzIGZsYWdzIHdlIGFsbG93LgorCisgICAgUmV0
dXJuczoKKyAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywgZmxhZ3MpCisKKyAgICAgIGZpbGVu
YW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGxpbnQuCisgICAgICBmbGFnczogVGhlIGRp
Y3Qgb2YgdGhlIGZsYWcgbmFtZXMgYW5kIHRoZSBmbGFnIHZhbHVlcy4KKyAgICAiIiIKKyAgICBm
bGFncyA9IFsnaGVscCcsICdvdXRwdXQ9JywgJ3ZlcmJvc2U9JywgJ2ZpbHRlcj0nXSArIGFkZGl0
aW9uYWxfZmxhZ3MKKyAgICBhZGRpdGlvbmFsX2ZsYWdfdmFsdWVzID0ge30KKyAgICB0cnk6Cisg
ICAgICAgIChvcHRzLCBmaWxlbmFtZXMpID0gZ2V0b3B0LmdldG9wdChhcmdzLCAnJywgZmxhZ3Mp
CisgICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoKKyAgICAgICAgcHJpbnRfdXNhZ2UoJ0lu
dmFsaWQgYXJndW1lbnRzLicpCisKKyAgICB2ZXJib3NpdHkgPSBfdmVyYm9zZV9sZXZlbCgpCisg
ICAgb3V0cHV0X2Zvcm1hdCA9IF9vdXRwdXRfZm9ybWF0KCkKKyAgICBmaWx0ZXJzID0gJycKKwor
ICAgIGZvciAob3B0LCB2YWwpIGluIG9wdHM6CisgICAgICAgIGlmIG9wdCA9PSAnLS1oZWxwJzoK
KyAgICAgICAgICAgIHByaW50X3VzYWdlKE5vbmUpCisgICAgICAgIGVsaWYgb3B0ID09ICctLW91
dHB1dCc6CisgICAgICAgICAgICBpZiBub3QgdmFsIGluICgnZW1hY3MnLCAndnM3Jyk6CisgICAg
ICAgICAgICAgICAgcHJpbnRfdXNhZ2UoJ1RoZSBvbmx5IGFsbG93ZWQgb3V0cHV0IGZvcm1hdHMg
YXJlIGVtYWNzIGFuZCB2czcuJykKKyAgICAgICAgICAgIG91dHB1dF9mb3JtYXQgPSB2YWwKKyAg
ICAgICAgZWxpZiBvcHQgPT0gJy0tdmVyYm9zZSc6CisgICAgICAgICAgICB2ZXJib3NpdHkgPSBp
bnQodmFsKQorICAgICAgICBlbGlmIG9wdCA9PSAnLS1maWx0ZXInOgorICAgICAgICAgICAgZmls
dGVycyA9IHZhbAorICAgICAgICAgICAgaWYgbm90IGZpbHRlcnM6CisgICAgICAgICAgICAgICAg
cHJpbnRfY2F0ZWdvcmllcygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhZGRpdGlvbmFs
X2ZsYWdfdmFsdWVzW29wdF0gPSB2YWwKKworICAgIF9zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRf
Zm9ybWF0KQorICAgIF9zZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCisgICAgX3NldF9maWx0
ZXJzKGZpbHRlcnMpCisKKyAgICByZXR1cm4gKGZpbGVuYW1lcywgYWRkaXRpb25hbF9mbGFnX3Zh
bHVlcykKKworCitkZWYgdXNlX3dlYmtpdF9zdHlsZXMoKToKKyAgICAiIiJEaXNhYmxlcyBzb21l
IGZlYXR1cmVzIHdoaWNoIGFyZSBub3Qgc3VpdGFibGUgZm9yIFdlYktpdC4iIiIKKyAgICAjIEZJ
WE1FOiBGb3IgZmlsdGVycyB3ZSB3aWxsIG5ldmVyIHdhbnQgdG8gaGF2ZSwgcmVtb3ZlIHRoZW0u
CisgICAgIyAgICAgICAgRm9yIGZpbHRlcnMgd2Ugd2FudCB0byBoYXZlIHNpbWlsYXIgZnVuY3Rp
b25hbGl0aWVzLAorICAgICMgICAgICAgIG1vZGlmeSB0aGUgaW1wbGVtZW50YXRpb24gYW5kIGVu
YWJsZSB0aGVtLgorICAgIGdsb2JhbCBfREVGQVVMVF9GSUxURVJTCisgICAgX0RFRkFVTFRfRklM
VEVSUyA9IFsKKyAgICAgICAgJy13aGl0ZXNwYWNlL2NvbW1lbnRzJywKKyAgICAgICAgJy13aGl0
ZXNwYWNlL2JsYW5rX2xpbmUnLAorICAgICAgICAnLXJ1bnRpbWUvZXhwbGljaXQnLCAgIyBleHBs
aWNpdAorICAgICAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgorICAgICAg
ICAnLXJ1bnRpbWUvcHJpbnRmJywKKyAgICAgICAgJy1ydW50aW1lL3RocmVhZHNhZmVfZm4nLAor
ICAgICAgICAnLXJ1bnRpbWUvcnR0aScsCisgICAgICAgICctYnVpbGQvaW5jbHVkZV93aGF0X3lv
dV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKKyAgICAgICAgJy1sZWdhbC9jb3B5
cmlnaHQnLAorICAgICAgICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywKKyAgICAg
ICAgJy1yZWFkYWJpbGl0eS9icmFjZXMnLCAgIyBpbnQgZm9vKCkge307CisgICAgICAgICctcmVh
ZGFiaWxpdHkvZm5fc2l6ZScsCisgICAgICAgICctYnVpbGQvc3RvcmFnZV9jbGFzcycsICAjIGNv
bnN0IHN0YXRpYworICAgICAgICAnLWJ1aWxkL2VuZGlmX2NvbW1lbnQnLAorICAgICAgICAnLXdo
aXRlc3BhY2UvbGFiZWxzJywKKyAgICAgICAgJy1ydW50aW1lL2FycmF5cycsICAjIHZhcmlhYmxl
IGxlbmd0aCBhcnJheQorICAgICAgICAnLWJ1aWxkL2hlYWRlcl9ndWFyZCcsCisgICAgICAgICct
cmVhZGFiaWxpdHkvY2FzdGluZycsCisgICAgICAgICctcmVhZGFiaWxpdHkvZnVuY3Rpb24nLAor
ICAgICAgICAnLXJ1bnRpbWUvY2FzdGluZycsCisgICAgICAgICctcnVudGltZS9zaXplb2YnLAor
ICAgIF0KKworCitkZWYgbWFpbigpOgorICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICcn
JyoqKioqKioqKioqKioqKioqKioqKiBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAqKioqKioqKioq
KioqKioqKioqKioKKworVGhpcyB0b29sIGlzIGluIHRoZSBwcm9jZXNzIG9mIGRldmVsb3BtZW50
IGFuZCBtYXkgZ2l2ZSBpbmFjY3VyYXRlCityZXN1bHRzIGF0IHByZXNlbnQuICBQbGVhc2UgZmls
ZSBidWdzIChhbmQvb3IgcGF0Y2hlcykgZm9yIHRoaW5ncwordGhhdCB5b3Ugbm90aWNlIHRoYXQg
aXQgZmxhZ3MgaW5jb3JyZWN0bHkuCisKKyoqKioqKioqKioqKioqKioqKioqKiBXQVJOSU5HIFdB
Uk5JTkcgV0FSTklORyAqKioqKioqKioqKioqKioqKioqKioKKworJycnKQorCisgICAgdXNlX3dl
YmtpdF9zdHlsZXMoKQorCisgICAgKGZpbGVuYW1lcywgZmxhZ3MpID0gcGFyc2VfYXJndW1lbnRz
KHN5cy5hcmd2WzE6XSkKKyAgICBpZiBub3QgZmlsZW5hbWVzOgorICAgICAgICBwcmludF91c2Fn
ZSgnTm8gZmlsZXMgd2VyZSBzcGVjaWZpZWQuJykKKworICAgICMgQ2hhbmdlIHN0ZGVyciB0byB3
cml0ZSB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCisgICAgIyBp
ZiB3ZSB0cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNoYXJhY3Rl
cnMuCisgICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGVy
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0
cmVhZGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdyZXBsYWNlJykKKworICAgIF9jcHBfc3R5bGVfc3RhdGUucmVzZXRf
ZXJyb3JfY291bnQoKQorICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6CisgICAgICAgIHBy
b2Nlc3NfZmlsZShmaWxlbmFtZSkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCdUb3RhbCBlcnJvcnMg
Zm91bmQ6ICVkXG4nICUgX2NwcF9zdHlsZV9zdGF0ZS5lcnJvcl9jb3VudCkKKyAgICBzeXMuZXhp
dChfY3BwX3N0eWxlX3N0YXRlLmVycm9yX2NvdW50ID4gMCkKKworCitpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2NwcF9zdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jcHBfc3R5bGVfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uN2ZiY2U4NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxl
cy9jcHBfc3R5bGVfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwzNDM5IEBACisjIS91c3IvYmluL3B5
dGhvbgorIyAtKi0gY29kaW5nOiB1dGYtODsgLSotCisjCisjIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9y
Y2ggTW9iaWxlIEluYy4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0Ogor
IworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
IyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgY3BwX3N0
eWxlLnB5LiIiIgorCisjIEZJWE1FOiBBZGQgYSBnb29kIHRlc3QgdGhhdCB0ZXN0cyBVcGRhdGVJ
bmNsdWRlU3RhdGUuCisKK2ltcG9ydCBjb2RlY3MKK2ltcG9ydCBvcworaW1wb3J0IHJhbmRvbQor
aW1wb3J0IHJlCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBjcHBfc3R5bGUKKworCisjIFRoaXMg
Y2xhc3Mgd29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBfc3R5bGUu
RXJyb3IKKyMgZnVuY3Rpb24gZm9yIHRoZSB1bml0IHRlc3RzLiAgV2UgYWxzbyB2ZXJpZnkgZWFj
aCBjYXRlZ29yeSB3ZSBzZWUKKyMgaXMgaW4gY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTLCB0
byBoZWxwIGtlZXAgdGhhdCBsaXN0IHVwIHRvIGRhdGUuCitjbGFzcyBFcnJvckNvbGxlY3RvcjoK
KyAgICAjIFRoZXNlIGFyZSBhIGdsb2JhbCBsaXN0LCBjb3ZlcmluZyBhbGwgY2F0ZWdvcmllcyBz
ZWVuIGV2ZXIuCisgICAgX0VSUk9SX0NBVEVHT1JJRVMgPSBbeC5zdHJpcCgpICAgICMgZ2V0IHJp
ZCBvZiBsZWFkaW5nIHdoaXRlc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBp
biBjcHBfc3R5bGUuX0VSUk9SX0NBVEVHT1JJRVMuc3BsaXQoKV0KKyAgICBfU0VFTl9FUlJPUl9D
QVRFR09SSUVTID0ge30KKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhc3NlcnRfZm4pOgorICAg
ICAgICAiIiJhc3NlcnRfZm46IGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHdlIG5vdGljZSBhIHBy
b2JsZW0uIiIiCisgICAgICAgIHNlbGYuX2Fzc2VydF9mbiA9IGFzc2VydF9mbgorICAgICAgICBz
ZWxmLl9lcnJvcnMgPSBbXQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHVudXNlZF9maWxlbmFt
ZSwgdW51c2VkX2xpbmVudW0sCisgICAgICAgICAgICAgICAgIGNhdGVnb3J5LCBjb25maWRlbmNl
LCBtZXNzYWdlKToKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2ZuKGNhdGVnb3J5IGluIHNlbGYuX0VS
Uk9SX0NBVEVHT1JJRVMsCisgICAgICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhh
cyBjYXRlZ29yeSAiJXMiLCcKKyAgICAgICAgICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90
IGluIF9FUlJPUl9DQVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCisgICAgICAgIHNl
bGYuX1NFRU5fRVJST1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAxCisgICAgICAgIGlmIGNwcF9z
dHlsZS5fc2hvdWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKKyAgICAgICAg
ICAgIHNlbGYuX2Vycm9ycy5hcHBlbmQoJyVzICBbJXNdIFslZF0nICUgKG1lc3NhZ2UsIGNhdGVn
b3J5LCBjb25maWRlbmNlKSkKKworICAgIGRlZiByZXN1bHRzKHNlbGYpOgorICAgICAgICBpZiBs
ZW4oc2VsZi5fZXJyb3JzKSA8IDI6CisgICAgICAgICAgICByZXR1cm4gJycuam9pbihzZWxmLl9l
cnJvcnMpICAjIE1vc3QgdGVzdHMgZXhwZWN0IHRvIGhhdmUgYSBzdHJpbmcuCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZXJyb3JzICAjIExldCdzIGdpdmUgYSBsaXN0
IGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUuCisKKyAgICBkZWYgcmVzdWx0X2xpc3Qoc2VsZik6
CisgICAgICAgIHJldHVybiBzZWxmLl9lcnJvcnMKKworICAgIGRlZiB2ZXJpZnlfYWxsX2NhdGVn
b3JpZXNfYXJlX3NlZW4oc2VsZik6CisgICAgICAgICIiIkZhaWxzIGlmIHRoZXJlJ3MgYSBjYXRl
Z29yeSBpbiBfRVJST1JfQ0FURUdPUklFUyAtIF9TRUVOX0VSUk9SX0NBVEVHT1JJRVMuCisKKyAg
ICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYWxsIHRlc3RzIGFyZSBydW4s
IHNvCisgICAgICAgIF9TRUVOX0VSUk9SX0NBVEVHT1JJRVMgaGFzIGhhZCBhIGNoYW5jZSB0byBm
dWxseSBwb3B1bGF0ZS4gIFNpbmNlCisgICAgICAgIHRoaXMgaXNuJ3QgY2FsbGVkIGZyb20gd2l0
aGluIHRoZSBub3JtYWwgdW5pdHRlc3QgZnJhbWV3b3JrLCB3ZQorICAgICAgICBjYW4ndCB1c2Ug
dGhlIG5vcm1hbCB1bml0dGVzdCBhc3NlcnQgbWFjcm9zLiAgSW5zdGVhZCB3ZSBqdXN0IGV4aXQK
KyAgICAgICAgd2hlbiB3ZSBzZWUgYW4gZXJyb3IuICBHb29kIHRoaW5nIHRoaXMgdGVzdCBpcyBh
bHdheXMgcnVuIGxhc3QhCisgICAgICAgICIiIgorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc2Vs
Zi5fRVJST1JfQ0FURUdPUklFUzoKKyAgICAgICAgICAgIGlmIGNhdGVnb3J5IG5vdCBpbiBzZWxm
Ll9TRUVOX0VSUk9SX0NBVEVHT1JJRVM6CisgICAgICAgICAgICAgICAgaW1wb3J0IHN5cworICAg
ICAgICAgICAgICAgIHN5cy5leGl0KCdGQVRBTCBFUlJPUjogVGhlcmUgYXJlIG5vIHRlc3RzIGZv
ciBjYXRlZ29yeSAiJXMiJyAlIGNhdGVnb3J5KQorCisgICAgZGVmIHJlbW92ZV9pZl9wcmVzZW50
KHNlbGYsIHN1YnN0cik6CisgICAgICAgIGZvciAoaW5kZXgsIGVycm9yKSBpbiBlbnVtZXJhdGUo
c2VsZi5fZXJyb3JzKToKKyAgICAgICAgICAgIGlmIGVycm9yLmZpbmQoc3Vic3RyKSAhPSAtMToK
KyAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcnMgPSBzZWxmLl9lcnJvcnNbMDppbmRleF0gKyBz
ZWxmLl9lcnJvcnNbKGluZGV4ICsgMSk6XQorICAgICAgICAgICAgICAgIGJyZWFrCisKKworIyBU
aGlzIGNsYXNzIGlzIGEgbGFtZSBtb2NrIG9mIGNvZGVjcy4gV2UgZG8gbm90IHZlcmlmeSBmaWxl
bmFtZSwgbW9kZSwgb3IKKyMgZW5jb2RpbmcsIGJ1dCBmb3IgdGhlIGN1cnJlbnQgdXNlIGNhc2Ug
aXQgaXMgbm90IG5lZWRlZC4KK2NsYXNzIE1vY2tJbzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bW9ja19maWxlKToKKyAgICAgICAgc2VsZi5tb2NrX2ZpbGUgPSBtb2NrX2ZpbGUKKworICAgIGRl
ZiBvcGVuKHNlbGYsIHVudXNlZF9maWxlbmFtZSwgdW51c2VkX21vZGUsIHVudXNlZF9lbmNvZGlu
ZywgXyk6ICAjIE5PTElOVAorICAgICAgICAjIChsaW50IGRvZXNuJ3QgbGlrZSBvcGVuIGFzIGEg
bWV0aG9kIG5hbWUpCisgICAgICAgIHJldHVybiBzZWxmLm1vY2tfZmlsZQorCisKK2NsYXNzIENw
cFN0eWxlVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlByb3ZpZGVzIHNvbWUg
dXNlZnVsIGhlbHBlciBmdW5jdGlvbnMgZm9yIGNwcF9zdHlsZSB0ZXN0cy4iIiIKKworICAgICMg
UGVyZm9ybSBsaW50IG9uIHNpbmdsZSBsaW5lIG9mIGlucHV0IGFuZCByZXR1cm4gdGhlIGVycm9y
IG1lc3NhZ2UuCisgICAgZGVmIHBlcmZvcm1fc2luZ2xlX2xpbmVfbGludChzZWxmLCBjb2RlLCBm
aWxlX25hbWUpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxm
LmFzc2VydF8pCisgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQorICAgICAgICBjcHBf
c3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3Jf
Y29sbGVjdG9yKQorICAgICAgICBjbGVhbl9saW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVz
KGxpbmVzKQorICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRlU3RhdGUo
KQorICAgICAgICBmdW5jdGlvbl9zdGF0ZSA9IGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0ZSgpCisg
ICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQorICAgICAg
ICBjbGFzc19zdGF0ZSA9IGNwcF9zdHlsZS5fQ2xhc3NTdGF0ZSgpCisgICAgICAgIGNwcF9zdHls
ZS5wcm9jZXNzX2xpbmUoZmlsZV9uYW1lLCBleHQsIGNsZWFuX2xpbmVzLCAwLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcl9jb2xsZWN0b3Ip
CisgICAgICAgICMgU2luZ2xlLWxpbmUgbGludCB0ZXN0cyBhcmUgYWxsb3dlZCB0byBmYWlsIHRo
ZSAndW5saW50YWJsZSBmdW5jdGlvbicKKyAgICAgICAgIyBjaGVjay4KKyAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yLnJlbW92ZV9pZl9wcmVzZW50KAorICAgICAgICAgICAgJ0xpbnQgZmFpbGVkIHRv
IGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQorICAgICAgICByZXR1cm4gZXJyb3JfY29s
bGVjdG9yLnJlc3VsdHMoKQorCisgICAgIyBQZXJmb3JtIGxpbnQgb3ZlciBtdWx0aXBsZSBsaW5l
cyBhbmQgcmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgorICAgIGRlZiBwZXJmb3JtX211bHRpX2xp
bmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGxpbmVzID0gY29kZS5zcGxp
dCgnXG4nKQorICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmls
ZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBsaW5lcyA9IGNwcF9zdHls
ZS5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBleHQgPSBmaWxlX25hbWVbZmlsZV9uYW1l
LnJmaW5kKCcuJykgKyAxOl0KKyAgICAgICAgY2xhc3Nfc3RhdGUgPSBjcHBfc3R5bGUuX0NsYXNz
U3RhdGUoKQorICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAg
ICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX3N0eWxlKGZpbGVfbmFtZSwgbGluZXMsIGksIGV4dCwg
ZXJyb3JfY29sbGVjdG9yKQorICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9ub25fc3Rh
bmRhcmRfY29uc3RydWN0cyhmaWxlX25hbWUsIGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Jf
Y29sbGVjdG9yKQorICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZChmaWxlX25hbWUs
IGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRz
KCkKKworICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRpX2xpbmVfbGludCwgYnV0IGNhbGxz
IGNoZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKKyAgICAjIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRf
Y29uc3RydWN0cworICAgIGRlZiBwZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2NoZWNrKHNlbGYsIGZp
bGVfbmFtZSwgY29kZSk6CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0XykKKyAgICAgICAgaW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVk
ZVN0YXRlKCkKKyAgICAgICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCisgICAgICAgIGNwcF9z
dHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIGxpbmVzID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMobGluZXMp
CisgICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQorICAg
ICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAgY3Bw
X3N0eWxlLmNoZWNrX2xhbmd1YWdlKGZpbGVfbmFtZSwgbGluZXMsIGksIGV4dCwgaW5jbHVkZV9z
dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IpCisgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCisKKyAgICBkZWYg
cGVyZm9ybV9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKHNlbGYsIGNvZGUpOgorICAgICAgICAiIiJQ
ZXJmb3JtIExpbnQgZnVuY3Rpb24gbGVuZ3RoIGNoZWNrIG9uIGJsb2NrIG9mIGNvZGUgYW5kIHJl
dHVybiB3YXJuaW5ncy4KKworICAgICAgICBCdWlsZHMgdXAgYW4gYXJyYXkgb2YgbGluZXMgY29y
cmVzcG9uZGluZyB0byB0aGUgY29kZSBhbmQgc3RyaXBzIGNvbW1lbnRzCisgICAgICAgIHVzaW5n
IGNwcF9zdHlsZSBmdW5jdGlvbnMuCisKKyAgICAgICAgRXN0YWJsaXNoZXMgYW4gZXJyb3IgY29s
bGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlvbiBsZW5ndGggY2hlY2tpbmcKKyAgICAgICAg
ZnVuY3Rpb24gZm9sbG93aW5nIGNwcF9zdHlsZSdzIHBhdHRlcm4uCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICBjb2RlOiBDKysgc291cmNlIGNvZGUgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSB3
YXJuaW5nIG1lc3NhZ2UuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICBUaGUgYWNjdW11
bGF0ZWQgZXJyb3JzLgorICAgICAgICAiIiIKKyAgICAgICAgZmlsZV9uYW1lID0gJ2Zvby5jcHAn
CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykK
KyAgICAgICAgZnVuY3Rpb25fc3RhdGUgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUoKQorICAg
ICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3BwX3N0eWxlLnJlbW92ZV9t
dWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKKyAg
ICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAgICAgZm9y
IGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKKyAgICAgICAgICAgIGNwcF9zdHlsZS5j
aGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlX25hbWUsIGxpbmVzLCBpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBl
cnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygp
CisKKyAgICBkZWYgcGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmLCBjb2RlLCBmaWxl
bmFtZT0nZm9vLmgnLCBpbz1jb2RlY3MpOgorICAgICAgICAjIEZpcnN0LCBidWlsZCB1cCB0aGUg
aW5jbHVkZSBzdGF0ZS4KKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Io
c2VsZi5hc3NlcnRfKQorICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9JbmNsdWRl
U3RhdGUoKQorICAgICAgICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKKyAgICAgICAgY3BwX3N0
eWxlLnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3JfY29s
bGVjdG9yKQorICAgICAgICBsaW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQor
ICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgorICAgICAgICAgICAg
Y3BwX3N0eWxlLmNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBsaW5lcywgaSwgJy5oJywgaW5jbHVk
ZV9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgICMgV2UgY291bGQgY2xlYXIgdGhlIGVycm9yX2NvbGxlY3RvciBoZXJl
LCBidXQgdGhpcyBzaG91bGQKKyAgICAgICAgIyBhbHNvIGJlIGZpbmUsIHNpbmNlIG91ciBJbmNs
dWRlV2hhdFlvdVVzZSB1bml0dGVzdHMgZG8gbm90CisgICAgICAgICMgaGF2ZSBsYW5ndWFnZSBw
cm9ibGVtcy4KKworICAgICAgICAjIFNlY29uZCwgbG9vayBmb3IgbWlzc2luZyBpbmNsdWRlcy4K
KyAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFt
ZSwgbGluZXMsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLCBpbykKKyAgICAgICAgcmV0dXJuIGVy
cm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKKworICAgICMgUGVyZm9ybSBsaW50IGFuZCBjb21wYXJl
IHRoZSBlcnJvciBtZXNzYWdlIHdpdGggImV4cGVjdGVkX21lc3NhZ2UiLgorICAgIGRlZiBhc3Nl
cnRfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5jcHAn
KToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJm
b3JtX3NpbmdsZV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKKworICAgIGRlZiBhc3NlcnRf
bGludF9vbmVfb2ZfbWFueV9lcnJvcnNfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9y
ZSwgZmlsZV9uYW1lPSdmb28uY3BwJyk6CisgICAgICAgIG1lc3NhZ2VzID0gc2VsZi5wZXJmb3Jt
X3NpbmdsZV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKQorICAgICAgICBmb3IgbWVzc2FnZSBp
biBtZXNzYWdlczoKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaChleHBlY3RlZF9tZXNzYWdlX3Jl
LCBtZXNzYWdlKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLCBtZXNzYWdlcykKKworICAgIGRlZiBhc3NlcnRfbXVs
dGlfbGluZV9saW50KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UsIGZpbGVfbmFtZT0nZm9v
LmgnKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5w
ZXJmb3JtX211bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX25hbWUpKQorCisgICAgZGVmIGFzc2Vy
dF9tdWx0aV9saW5lX2xpbnRfcmUoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2FnZV9yZSwgZmls
ZV9uYW1lPSdmb28uaCcpOgorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX211bHRpX2xp
bmVfbGludChjb2RlLCBmaWxlX25hbWUpCisgICAgICAgIGlmIG5vdCByZS5zZWFyY2goZXhwZWN0
ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ01lc3NhZ2Ug
d2FzOlxuJyArIG1lc3NhZ2UgKyAnRXhwZWN0ZWQgbWF0Y2ggdG8gIicgKyBleHBlY3RlZF9tZXNz
YWdlX3JlICsgJyInKQorCisgICAgZGVmIGFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjayhzZWxm
LCBmaWxlX25hbWUsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhleHBlY3RlZF9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LnBlcmZvcm1fbGFuZ3VhZ2VfcnVsZXNfY2hlY2soZmlsZV9uYW1lLCBjb2RlKSkKKworICAgIGRl
ZiBhc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2Uoc2VsZiwgY29kZSwgZXhwZWN0ZWRfbWVzc2Fn
ZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShjb2Rl
KSkKKworICAgIGRlZiBhc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soc2VsZiwgbGluZXMsIHN0YXJ0
X2Vycm9ycywgZW5kX2Vycm9ycyk6CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29s
bGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRh
KCdmb28uY3BwJywgJ2NwcCcsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgc3RhcnRfZXJyb3JzLAorICAgICAgICAgICAgZXJy
b3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAnQmxhbmsgbGlu
ZSBhdCB0aGUgc3RhcnQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JworICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFsyXScpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIGVuZF9lcnJvcnMsCisgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAorICAgICAgICAgICAgICAgICdCbGFuayBsaW5l
IGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JworICAgICAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQorCisKK2NsYXNzIENwcFN0
eWxlVGVzdChDcHBTdHlsZVRlc3RCYXNlKToKKworICAgICMgVGVzdCBnZXQgbGluZSB3aWR0aC4K
KyAgICBkZWYgdGVzdF9nZXRfbGluZV93aWR0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoMCwgY3BwX3N0eWxlLmdldF9saW5lX3dpZHRoKCcnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoMTAsIGNwcF9zdHlsZS5nZXRfbGluZV93aWR0aCh1J3gnICogMTApKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygxNiwgY3BwX3N0eWxlLmdldF9saW5lX3dpZHRoKHUn6YO9fOmB
k3zlupx855yMfOaUr+W6gScpKQorCisgICAgZGVmIHRlc3RfZmluZF9uZXh0X211bHRpX2xpbmVf
Y29tbWVudF9zdGFydChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0
eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQoWycnXSwgMCkpCisKKyAgICAg
ICAgbGluZXMgPSBbJ2EnLCAnYicsICcvKiBjJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MiwgY3BwX3N0eWxlLmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIDAp
KQorCisgICAgICAgIGxpbmVzID0gWydjaGFyIGFbXSA9ICIvKiI7J10gICMgbm90IHJlY29nbml6
ZWQgYXMgY29tbWVudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0eWxlLmZp
bmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIDApKQorCisgICAgZGVmIHRl
c3RfZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDEsIGNwcF9zdHlsZS5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X2Vu
ZChbJyddLCAwKSkKKyAgICAgICAgbGluZXMgPSBbJ2EnLCAnYicsICcgYyAqLyddCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGNwcF9zdHlsZS5maW5kX25leHRfbXVsdGlfbGluZV9jb21t
ZW50X2VuZChsaW5lcywgMCkpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbXVsdGlfbGluZV9jb21t
ZW50c19mcm9tX3JhbmdlKHNlbGYpOgorICAgICAgICBsaW5lcyA9IFsnYScsICcgIC8qIGNvbW1l
bnQgJywgJyAqIHN0aWxsIGNvbW1lbnQnLCAnIGNvbW1lbnQgKi8gICAnLCAnYiddCisgICAgICAg
IGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50c19mcm9tX3JhbmdlKGxpbmVzLCAx
LCA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2EnLCAnLy8gZHVtbXknLCAnLy8gZHVt
bXknLCAnLy8gZHVtbXknLCAnYiddLCBsaW5lcykKKworICAgIGRlZiB0ZXN0X3NwYWNlc19hdF9l
bmRfb2ZfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAg
ICcvLyBIZWxsbyB0aGVyZSAnLAorICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3aGl0ZXNwYWNl
LiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKKyAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBbNF0nKQorCisgICAgIyBUZXN0IEMtc3R5bGUgY2Fz
dCBjYXNlcy4KKyAgICBkZWYgdGVzdF9jc3R5bGVfY2FzdChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQgYSA9IChpbnQpMS4wOycsCisgICAgICAgICAg
ICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0PGludD4oLi4uKSBpbnN0ZWFk
JworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaW50ICphID0gKGludCAqKURFRklORURfVkFM
VUU7JywKKyAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2UgcmVpbnRlcnByZXRf
Y2FzdDxpbnQgKj4oLi4uKSBpbnN0ZWFkJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nh
c3RpbmddIFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICd1
aW50MTYgYSA9ICh1aW50MTYpMS4wOycsCisgICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0
LiAgVXNlIHN0YXRpY19jYXN0PHVpbnQxNj4oLi4uKSBpbnN0ZWFkJworICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisg
ICAgICAgICAgICAnaW50MzIgYSA9IChpbnQzMikxLjA7JywKKyAgICAgICAgICAgICdVc2luZyBD
LXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8aW50MzI+KC4uLikgaW5zdGVhZCcKKyAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAorICAgICAgICAgICAgJ3VpbnQ2NCBhID0gKHVpbnQ2NCkxLjA7JywKKyAgICAgICAg
ICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8dWludDY0PiguLi4pIGlu
c3RlYWQnCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRdJykKKworICAg
ICMgVGVzdCB0YWtpbmcgYWRkcmVzcyBvZiBjYXN0cyAocnVudGltZS9jYXN0aW5nKQorICAgIGRl
ZiB0ZXN0X3J1bnRpbWVfY2FzdGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
KyAgICAgICAgICAgICdpbnQqIHggPSAmc3RhdGljX2Nhc3Q8aW50Kj4oZm9vKTsnLAorICAgICAg
ICAgICAgJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJworICAgICAgICAg
ICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAgJworICAgICAgICAg
ICAgJ1Rha2UgdGhlIGFkZHJlc3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCByYXRoZXIgdGhhbiBh
ZnRlcicKKyAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQqIHggPSAmZHluYW1pY19jYXN0PGlu
dCAqPihmb28pOycsCisgICAgICAgICAgICBbJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2Yg
YSBjYXN0PyAgJworICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0
ZW1wIHZhci4gICcKKyAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9pbmcg
dGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJworICAgICAgICAgICAgICcgIFtydW50aW1lL2Nh
c3RpbmddIFs0XScsCisgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJ
ZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKKyAgICAgICAgICAgICAnaGllcmFy
Y2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9lc25cJ3Qgc3VwcG9y
dCAnCisgICAgICAgICAgICAgJ1JUVEkuICBbcnVudGltZS9ydHRpXSBbNV0nXSkKKworICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCogeCA9ICZyZWludGVycHJldF9j
YXN0PGludCAqPihmb28pOycsCisgICAgICAgICAgICAnQXJlIHlvdSB0YWtpbmcgYW4gYWRkcmVz
cyBvZiBhIGNhc3Q/ICAnCisgICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJvdXM6IGNvdWxkIGJl
IGEgdGVtcCB2YXIuICAnCisgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZvcmUgZG9p
bmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJworICAgICAgICAgICAgJyAgW3J1bnRpbWUv
Y2FzdGluZ10gWzRdJykKKworICAgICAgICAjIEl0J3MgT0sgdG8gY2FzdCBhbiBhZGRyZXNzLgor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2ludCogeCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8aW50ICo+KCZmb28pOycsCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0
X3J1bnRpbWVfc2VsZmluaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAg
ICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHJfKSwgbF8obF8pIHsgfScsCisg
ICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVtYmVyIHZhcmlhYmxl
IHdpdGggaXRzZWxmLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL2luaXRdIFs0XScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBs
KSA6IHJfKHIpLCBsXyhsKSB7IH0nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCisgICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIpIDogcl8ociksIGxfKHJfKSwg
bGxfKGxfKSB7IH0nLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9ydW50aW1lX3J0
dGkoc2VsZik6CisgICAgICAgIHN0YXRlbWVudCA9ICdpbnQqIHggPSBkeW5hbWljX2Nhc3Q8aW50
Kj4oJmZvbyk7JworICAgICAgICBlcnJvcl9tZXNzYWdlID0gKAorICAgICAgICAgICAgJ0RvIG5v
dCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNz
ICcKKyAgICAgICAgICAgICdoaWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4g
IEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcKKyAgICAgICAgICAgICdSVFRJLiAgW3J1bnRpbWUv
cnR0aV0gWzVdJykKKyAgICAgICAgIyBkeW5hbWljX2Nhc3QgaXMgZGlzYWxsb3dlZCBpbiBtb3N0
IGZpbGVzLgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNw
cCcsIHN0YXRlbWVudCwgZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdlKQorICAgICAg
ICAjIEl0IGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBpbiB0ZXN0cywgaG93ZXZlci4KKyAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb190ZXN0LmNwcCcsIHN0YXRlbWVu
dCwgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb29fdW5p
dHRlc3QuY3BwJywgc3RhdGVtZW50LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2Vf
cnVsZXNfY2hlY2soJ2Zvb19yZWd0ZXN0LmNwcCcsIHN0YXRlbWVudCwgJycpCisKKyAgICAjIFdl
IGNhbm5vdCB0ZXN0IHRoaXMgZnVuY3Rpb25hbGl0eSBiZWNhdXNlIG9mIGRpZmZlcmVuY2Ugb2YK
KyAgICAjIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgQW55d2F5LCB3ZSBtYXkgbmV2ZXIgZW5hYmxl
IHRoaXMuCisgICAgIworICAgICMgIyBUZXN0IGZvciB1bm5hbWVkIGFyZ3VtZW50cyBpbiBhIG1l
dGhvZC4KKyAgICAjIGRlZiB0ZXN0X2NoZWNrX2Zvcl91bm5hbWVkX3BhcmFtcyhzZWxmKToKKyAg
ICAjICAgbWVzc2FnZSA9ICgnQWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIG5hbWVkIGluIGEgZnVu
Y3Rpb24nCisgICAgIyAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Z1bmN0aW9uXSBbM10n
KQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQShpbnQqKSBjb25zdDsn
LCBtZXNzYWdlKQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQih2b2lk
ICgqZm4pKGludCopKTsnLCBtZXNzYWdlKQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0
dWFsIHZvaWQgQyhpbnQqKTsnLCBtZXNzYWdlKQorICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2
b2lkICooKmYpKHZvaWQgKikgPSB4OycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ZvaWQgTWV0aG9kKGNoYXIqKSB7JywgbWVzc2FnZSkKKyAgICAjICAgc2VsZi5hc3NlcnRf
bGludCgndm9pZCBNZXRob2QoY2hhciopOycsIG1lc3NhZ2UpCisgICAgIyAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIC8qeCovKTsnLCBtZXNzYWdlKQorICAgICMgICBzZWxm
LmFzc2VydF9saW50KCd0eXBlZGVmIHZvaWQgKCpNZXRob2QpKGludDMyKTsnLCBtZXNzYWdlKQor
ICAgICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBkZWxldGVbXSh2
b2lkKikgdGhyb3coKTsnLCBtZXNzYWdlKQorICAgICMgCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ZpcnR1YWwgdm9pZCBEKGludCogcCk7JywgJycpCisgICAgIyAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHgpIHRocm93KCk7JywgJycpCisgICAgIyAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIHgpXG57JywgJycpCisgICAgIyAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIC8qeCovKVxueycsICcnKQorICAg
ICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiB4KTsnLCAnJykKKyAgICAj
ICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiB2b2lkICgqTWV0aG9kKShpbnQzMiB4KTsnLCAn
JykKKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVsZXRl
W10odm9pZCogeCkgdGhyb3coKTsnLCAnJykKKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3Rh
dGljIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogLyp4Ki8pIHRocm93KCk7JywgJycpCisg
ICAgIyAKKyAgICAjICAgIyBUaGlzIG9uZSBzaG91bGQgdGVjaG5pY2FsbHkgd2FybiwgYnV0IGRv
ZXNuJ3QgYmVjYXVzZSB0aGUgZnVuY3Rpb24KKyAgICAjICAgIyBwb2ludGVyIGlzIGNvbmZ1c2lu
Zy4KKyAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lkIEUodm9pZCAoKmZuKShp
bnQqIHApKTsnLCAnJykKKworICAgICMgVGVzdCBkZXByZWNhdGVkIGNhc3RzIHN1Y2ggYXMgaW50
KGQpCisgICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9jYXN0KHNlbGYpOgorICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgJ2ludCBhID0gaW50KDIuMik7JywKKyAgICAgICAgICAg
ICdVc2luZyBkZXByZWNhdGVkIGNhc3Rpbmcgc3R5bGUuICAnCisgICAgICAgICAgICAnVXNlIHN0
YXRpY19jYXN0PGludD4oLi4uKSBpbnN0ZWFkJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2Nhc3RpbmddIFs0XScpCisgICAgICAgICMgQ2hlY2tzIGZvciBmYWxzZSBwb3NpdGl2ZXMuLi4K
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpbnQgYSA9IGludCgpOyAg
Ly8gQ29uc3RydWN0b3IsIG8uay4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCisgICAgICAgICAgICAnWDo6WCgpIDogYShpbnQoKSkge30gIC8vIGRlZmF1bHQg
Q29uc3RydWN0b3IsIG8uay4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAnb3BlcmF0b3IgYm9vbCgpOyAgLy8gQ29udmVyc2lvbiBvcGVy
YXRvciwgby5rLicsCisgICAgICAgICAgICAnJykKKworICAgICMgVGhlIHNlY29uZCBwYXJhbWV0
ZXIgdG8gYSBnTW9jayBtZXRob2QgZGVmaW5pdGlvbiBpcyBhIGZ1bmN0aW9uIHNpZ25hdHVyZQor
ICAgICMgdGhhdCBvZnRlbiBsb29rcyBsaWtlIGEgYmFkIGNhc3QgYnV0IHNob3VsZCBub3QgcGlj
a2VkIHVwIGJ5IGxpbnQuCisgICAgZGVmIHRlc3RfbW9ja19tZXRob2Qoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnTU9DS19NRVRIT0QwKG1ldGhvZCwgaW50
KCkpOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgICdNT0NLX0NPTlNUX01FVEhPRDEobWV0aG9kLCBmbG9hdChzdHJpbmcpKTsnLAorICAg
ICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnTU9D
S19DT05TVF9NRVRIT0QyX1QobWV0aG9kLCBkb3VibGUoZmxvYXQsIGZsb2F0KSk7JywKKyAgICAg
ICAgICAgICcnKQorCisgICAgIyBUZXN0IHNpemVvZih0eXBlKSBjYXNlcy4KKyAgICBkZWYgdGVz
dF9zaXplb2ZfdHlwZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICdzaXplb2YoaW50KTsnLAorICAgICAgICAgICAgJ1VzaW5nIHNpemVvZih0eXBlKS4gIFVz
ZSBzaXplb2YodmFybmFtZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScKKyAgICAgICAgICAgICcgIFty
dW50aW1lL3NpemVvZl0gWzFdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICdzaXplb2YoaW50ICopOycsCisgICAgICAgICAgICAnVXNpbmcgc2l6ZW9mKHR5cGUpLiAg
VXNlIHNpemVvZih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBvc3NpYmxlJworICAgICAgICAgICAgJyAg
W3J1bnRpbWUvc2l6ZW9mXSBbMV0nKQorCisgICAgIyBUZXN0IHR5cGVkZWYgY2FzZXMuICBUaGVy
ZSB3YXMgYSBidWcgdGhhdCBjcHBfc3R5bGUgbWlzaWRlbnRpZmllZAorICAgICMgdHlwZWRlZiBm
b3IgcG9pbnRlciB0byBmdW5jdGlvbiBhcyBDLXN0eWxlIGNhc3QgYW5kIHByb2R1Y2VkCisgICAg
IyBmYWxzZS1wb3NpdGl2ZSBlcnJvciBtZXNzYWdlcy4KKyAgICBkZWYgdGVzdF90eXBlZGVmX2Zv
cl9wb2ludGVyX3RvX2Z1bmN0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCAoKkZ1bmMpKGludCB4KTsnLAorICAgICAgICAgICAg
JycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAndHlwZWRlZiB2b2lk
ICgqRnVuYykoaW50ICp4KTsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCisgICAgICAgICAgICAndHlwZWRlZiB2b2lkIEZ1bmMoaW50IHgpOycsCisgICAgICAg
ICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICd0eXBlZGVm
IHZvaWQgRnVuYyhpbnQgKngpOycsCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2lu
Y2x1ZGVfd2hhdF95b3VfdXNlX25vX2ltcGxlbWVudGF0aW9uX2ZpbGVzKHNlbGYpOgorICAgICAg
ICBjb2RlID0gJ3N0ZDo6dmVjdG9yPGludD4gZm9vOycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ0FkZCAjaW5jbHVkZSA8dmVjdG9yPiBmb3IgdmVjdG9yPD4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUs
ICdmb28uaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hhdF95b3VfdXNlKGNvZGUsICdmb28u
Y3BwJykpCisKKyAgICBkZWYgdGVzdF9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5j
bHVkZSA8dmVjdG9yPgorICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBmb287CisgICAg
ICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVk
ZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8bWFwPgorICAgICAgICAg
ICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAg
ICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAg
ICAgICAgICcnJyNpbmNsdWRlIDxtdWx0aW1hcD4KKyAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxp
bnQsaW50PiBmb287CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVk
ZSA8aGFzaF9tYXA+CisgICAgICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOworICAg
ICAgICAgICAgJycnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1
ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgPHV0aWxpdHk+CisgICAg
ICAgICAgICAgICBzdGQ6OnBhaXI8aW50LGludD4gZm9vOworICAgICAgICAgICAgJycnLAorICAg
ICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAor
ICAgICAgICAgICAgJycnI2luY2x1ZGUgPHZlY3Rvcj4KKyAgICAgICAgICAgICAgIERFQ0xBUkVf
c3RyaW5nKGZvb2Jhcik7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5j
bHVkZSA8dmVjdG9yPgorICAgICAgICAgICAgICAgREVGSU5FX3N0cmluZyhmb29iYXIsICIiLCAi
Iik7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9y
PgorICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKKyAgICAgICAgICAgICcn
JywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHV0aWxpdHk+IGZvciBwYWlyPD4nCisgICAg
ICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUg
ImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsKKyAg
ICAgICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHZlY3Rvcj4gZm9yIHZl
Y3Rvcjw+JworICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAg
ICcnJyNpbmNsdWRlIDx2ZWN0b3I+CisgICAgICAgICAgICAgICBzdGQ6OnNldDxpbnQ+IGZvbzsK
KyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPHNldD4gZm9yIHNl
dDw+JworICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQor
ICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcn
JyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgorICAgICAgICAgICAgICBoYXNoX21hcDxpbnQsIGlu
dD4gZm9vYmFyOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8
aGFzaF9tYXA+IGZvciBoYXNoX21hcDw+JworICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVf
d2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91
X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgorICAgICAgICAg
ICAgICAgYm9vbCBmb29iYXIgPSBzdGQ6Omxlc3M8aW50PigwLDEpOworICAgICAgICAgICAgJycn
LAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4gZm9yIGxlc3M8PicKKyAg
ICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5jbHVk
ZSAiYmFzZS9mb29iYXIuaCIKKyAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gbWluPGludD4o
MCwxKTsKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGFsZ29y
aXRobT4gZm9yIG1pbiAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAg
ICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICd2b2lkIGEo
Y29uc3Qgc3RyaW5nICZmb29iYXIpOycsCisgICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxzdHJp
bmc+IGZvciBzdHJpbmcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJycjaW5j
bHVkZSAiYmFzZS9mb29iYXIuaCIKKyAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gc3dhcCgw
LDEpOworICAgICAgICAgICAgJycnLAorICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3Jp
dGhtPiBmb3Igc3dhcCAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAg
ICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNs
dWRlICJiYXNlL2Zvb2Jhci5oIgorICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSB0cmFuc2Zv
cm0oYS5iZWdpbigpLCBhLmVuZCgpLCBiLnN0YXJ0KCksIEZvbyk7CisgICAgICAgICAgICAnJycs
CisgICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxhbGdvcml0aG0+IGZvciB0cmFuc2Zvcm0gICcK
KyAgICAgICAgICAgICdbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1
ZGUgImJhc2UvZm9vYmFyLmgiCisgICAgICAgICAgICAgICBib29sIGZvb2JhciA9IG1pbl9lbGVt
ZW50KGEuYmVnaW4oKSwgYS5lbmQoKSk7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAn
QWRkICNpbmNsdWRlIDxhbGdvcml0aG0+IGZvciBtaW5fZWxlbWVudCAgJworICAgICAgICAgICAg
J1tidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
aW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAnJydmb28tPnN3YXAoMCwxKTsKKyAg
ICAgICAgICAgICAgIGZvby5zd2FwKDAsMSk7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAg
ICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAg
ICAgICAnJycjaW5jbHVkZSA8c3RyaW5nPgorICAgICAgICAgICAgICAgdm9pZCBhKGNvbnN0IHN0
ZDo6bXVsdGltYXA8aW50LHN0cmluZz4gJmZvb2Jhcik7CisgICAgICAgICAgICAnJycsCisgICAg
ICAgICAgICAnQWRkICNpbmNsdWRlIDxtYXA+IGZvciBtdWx0aW1hcDw+JworICAgICAgICAgICAg
JyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlIDxxdWV1ZT4K
KyAgICAgICAgICAgICAgIHZvaWQgYShjb25zdCBzdGQ6OnByaW9yaXR5X3F1ZXVlPGludD4gJmZv
b2Jhcik7CisgICAgICAgICAgICAnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCisgICAgICAgICAgICAgJycnI2luY2x1ZGUgImJh
c2UvYmFzaWN0eXBlcy5oIgorICAgICAgICAgICAgICAgICNpbmNsdWRlICJiYXNlL3BvcnQuaCIK
KyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgICAgICAgICAgICAgICAgI2lu
Y2x1ZGUgPHN0cmluZz4KKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8dmVjdG9yPgorICAgICAg
ICAgICAgICAgIHZlY3RvcjxzdHJpbmc+IGhham9hOycnJywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmlu
Zz4KKyAgICAgICAgICAgICAgIGludCBpID0gbnVtZXJpY19saW1pdHM8aW50Pjo6bWF4KCkKKyAg
ICAgICAgICAgICcnJywKKyAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGxpbWl0cz4gZm9yIG51
bWVyaWNfbGltaXRzPD4nCisgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91
c2VdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAorICAg
ICAgICAgICAgJycnI2luY2x1ZGUgPGxpbWl0cz4KKyAgICAgICAgICAgICAgIGludCBpID0gbnVt
ZXJpY19saW1pdHM8aW50Pjo6bWF4KCkKKyAgICAgICAgICAgICcnJywKKyAgICAgICAgICAgICcn
KQorCisgICAgICAgICMgVGVzdCB0aGUgVXBkYXRlSW5jbHVkZVN0YXRlIGNvZGUgcGF0aC4KKyAg
ICAgICAgbW9ja19oZWFkZXJfY29udGVudHMgPSBbJyNpbmNsdWRlICJibGFoL2Zvby5oIicsICcj
aW5jbHVkZSAiYmxhaC9iYXIuaCInXQorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2lu
Y2x1ZGVfd2hhdF95b3VfdXNlKAorICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicK
KyAgICAgICAgICAgICcjaW5jbHVkZSAiYmxhaC9hLmgiXG4nLAorICAgICAgICAgICAgZmlsZW5h
bWU9J2JsYWgvYS5jcHAnLAorICAgICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRl
bnRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCisKKyAgICAgICAg
bW9ja19oZWFkZXJfY29udGVudHMgPSBbJyNpbmNsdWRlIDxzZXQ+J10KKyAgICAgICAgbWVzc2Fn
ZSA9IHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKKyAgICAgICAgICAgICcnJyNp
bmNsdWRlICJjb25maWcuaCIKKyAgICAgICAgICAgICAgICNpbmNsdWRlICJibGFoL2EuaCIKKwor
ICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBmb287JycnLAorICAgICAgICAgICAgZmlsZW5h
bWU9J2JsYWgvYS5jcHAnLAorICAgICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRl
bnRzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCisKKyAgICAgICAg
IyBJZiB0aGVyZSdzIGp1c3QgYSAuY3BwIGFuZCB0aGUgaGVhZGVyIGNhbid0IGJlIGZvdW5kIHRo
ZW4gaXQncyBvay4KKyAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRf
eW91X3VzZSgKKyAgICAgICAgICAgICcnJyNpbmNsdWRlICJjb25maWcuaCIKKyAgICAgICAgICAg
ICAgICNpbmNsdWRlICJibGFoL2EuaCIKKworICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBm
b287JycnLAorICAgICAgICAgICAgZmlsZW5hbWU9J2JsYWgvYS5jcHAnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhtZXNzYWdlLCAnJykKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBmaW5k
IHRoZSBoZWFkZXJzIHdpdGggcmVsYXRpdmUgcGF0aHMuCisgICAgICAgIG1vY2tfaGVhZGVyX2Nv
bnRlbnRzID0gWycnXQorICAgICAgICBtZXNzYWdlID0gc2VsZi5wZXJmb3JtX2luY2x1ZGVfd2hh
dF95b3VfdXNlKAorICAgICAgICAgICAgJycnI2luY2x1ZGUgImNvbmZpZy5oIgorICAgICAgICAg
ICAgICAgI2luY2x1ZGUgIiVzL2EuaCIKKworICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50PiBm
b287JycnICUgb3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksCisgICAgICAgICAgICBmaWxl
bmFtZT0nYS5jcHAnLAorICAgICAgICAgICAgaW89TW9ja0lvKG1vY2tfaGVhZGVyX2NvbnRlbnRz
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZSwgJ0FkZCAjaW5jbHVkZSA8c2V0
PiBmb3Igc2V0PD4gICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1tidWls
ZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKKworICAgIGRlZiB0ZXN0X2ZpbGVzX2JlbG9u
Z190b19zYW1lX21vZHVsZShzZWxmKToKKyAgICAgICAgZiA9IGNwcF9zdHlsZS5maWxlc19iZWxv
bmdfdG9fc2FtZV9tb2R1bGUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwg
ZignYS5jcHAnLCAnYS5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyks
IGYoJ2Jhc2UvZ29vZ2xlLmNwcCcsICdiYXNlL2dvb2dsZS5oJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKChUcnVlLCAnJyksIGYoJ2Jhc2UvZ29vZ2xlX3Rlc3QuY3BwJywgJ2Jhc2UvZ29v
Z2xlLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZignYmFzZS9nb29nbGVfdW5pdHRlc3QuY3BwJywgJ2Jhc2UvZ29v
Z2xlLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZignYmFzZS9pbnRlcm5hbC9nb29nbGVfdW5pdHRlc3QuY3BwJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZS9wdWJsaWMvZ29vZ2xlLmgnKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICd4eHgveXl5LycpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBmKCd4eHgveXl5L2Jhc2UvaW50ZXJuYWwvZ29vZ2xlX3VuaXR0ZXN0LmNw
cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAneHh4L3l5eS8nKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgZigneHh4L3l5eS9iYXNlL2dvb2dsZV91bml0dGVzdC5jcHAnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlL3B1YmxpYy9nb29nbGUuaCcpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBmKCdiYXNlL2dvb2dsZV91bml0dGVzdC5jcHAnLCAnYmFzZS9nb29nbGUtaW5sLmgnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICcvaG9tZS9idWlsZC9nb29nbGUzLycp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBmKCcvaG9tZS9idWlsZC9nb29nbGUzL2Jhc2Uv
Z29vZ2xlLmNwcCcsICdiYXNlL2dvb2dsZS5oJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoKEZhbHNlLCAnJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxk
L2dvb2dsZTMvYmFzZS9nb29nbGUuY3BwJywgJ2Jhc3UvZ29vZ2xlLmgnKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKEZhbHNlLCAnJyksIGYoJ2EuY3BwJywgJ2IuaCcpKQorCisgICAgZGVm
IHRlc3RfY2xlYW5zZV9saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnaW50
IGZvbyA9IDA7ICAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5z
ZV9jb21tZW50cygnaW50IGZvbyA9IDA7ICAvLyBkYW5nZXIhJykpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCdpbnQgbyA9IDA7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0
eWxlLmNsZWFuc2VfY29tbWVudHMoJ2ludCAvKiBmb28gKi8gbyA9IDA7JykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKCdmb28oaW50IGEsIGludCBiKTsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnZm9vKGludCBhIC8qIGFiYyAqLywg
aW50IGIpOycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFt
ZSAqLyBiKTsnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZihhLCBiKTsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5jbGVhbnNlX2NvbW1lbnRzKCdmKGEgLyogbmFt
ZSAqLywgYik7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuY2xlYW5zZV9jb21tZW50cygnZihhLCAvKiBu
YW1lICovYik7JykpCisKKyAgICBkZWYgdGVzdF9tdWx0aV9saW5lX2NvbW1lbnRzKHNlbGYpOgor
ICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQgaXMgYmFkCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgIHInJydpbnQgYSA9IDA7CisgICAgICAgICAgICAg
ICAgLyogbXVsdGktbGluZXIKKyAgICAgICAgICAgICAgICBjbGFzcyBGb28geworICAgICAgICAg
ICAgICAgIEZvbyhpbnQgZik7ICAvLyBzaG91bGQgY2F1c2UgYSBsaW50IHdhcm5pbmcgaW4gY29k
ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICovICcnJywKKyAgICAgICAgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgIHInJycvKiBp
bnQgYSA9IDA7IG11bHRpLWxpbmVyCisgICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IGIgPSAw
OycnJywKKyAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50Jwor
ICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQocicnJyAgICAvKiBtdWx0aS1saW5lIGNvbW1lbnQn
JycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ291bGQgbm90IGZpbmQg
ZW5kIG9mIG11bHRpLWxpbmUgY29tbWVudCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9tdWx0aWxpbmVfY29tbWVudF0gWzVdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KHInJycgICAgLy8gLyogY29tbWVudCwgYnV0IG5v
dCBtdWx0aS1saW5lJycnLCAnJykKKworICAgIGRlZiB0ZXN0X211bHRpbGluZV9zdHJpbmdzKHNl
bGYpOgorICAgICAgICBtdWx0aWxpbmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UgPSAoCisgICAgICAg
ICAgICAnTXVsdGktbGluZSBzdHJpbmcgKCIuLi4iKSBmb3VuZC4gIFRoaXMgbGludCBzY3JpcHQg
ZG9lc25cJ3QgJworICAgICAgICAgICAgJ2RvIHdlbGwgd2l0aCBzdWNoIHN0cmluZ3MsIGFuZCBt
YXkgZ2l2ZSBib2d1cyB3YXJuaW5ncy4gIFRoZXlcJ3JlICcKKyAgICAgICAgICAgICd1Z2x5IGFu
ZCB1bm5lY2Vzc2FyeSwgYW5kIHlvdSBzaG91bGQgdXNlIGNvbmNhdGVuYXRpb24gaW5zdGVhZCIu
JworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9zdHJpbmddIFs1XScpCisK
KyAgICAgICAgZmlsZV9wYXRoID0gJ215ZGlyL2Zvby5jcHAnCisKKyAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUu
cHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnY29uc3QgY2hhciogc3RyID0gIlRoaXMgaXMgYVxcJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIG11bHRpbGluZSBzdHJpbmcuIjsnXSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAyLCAgIyBPbmUgcGVyIGxpbmUu
CisgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChtdWx0aWxp
bmVfc3RyaW5nX2Vycm9yX21lc3NhZ2UpKQorCisgICAgIyBUZXN0IG5vbi1leHBsaWNpdCBzaW5n
bGUtYXJndW1lbnQgY29uc3RydWN0b3JzCisgICAgZGVmIHRlc3RfZXhwbGljaXRfc2luZ2xlX2Fy
Z3VtZW50X2NvbnN0cnVjdG9ycyhzZWxmKToKKyAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlz
IGJhZAorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
JydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oaW50IGYpOworICAgICAgICAgICAg
ICAgfTsnJycsCisgICAgICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91
bGQgYmUgbWFya2VkIGV4cGxpY2l0LicKKyAgICAgICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0
XSBbNV0nKQorICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQgaXMgYmFkLCBldmVuIHdpdGggd2hp
dGVzcGFjZQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28gKGludCBmKTsKKyAgICAgICAg
ICAgICAgIH07JycnLAorICAgICAgICAgICAgWydFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5j
dGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAgICAgJ1Npbmds
ZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCisgICAg
ICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XSddKQorICAgICAgICAjIG1pc3Npbmcg
ZXhwbGljaXQsIHdpdGggZGlzdHJhY3RpbmcgY29tbWVudCwgaXMgc3RpbGwgYmFkCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7
CisgICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7ICAvLyBzaW1wbGVyIHRoYW4gRm9vKGJsYXJn
aCwgYmxhcmcpCisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdTaW5nbGUtYXJn
dW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJworICAgICAgICAg
ICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCisgICAgICAgICMgbWlzc2luZyBleHBsaWNp
dCwgd2l0aCBxdWFsaWZpZWQgY2xhc3NuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIFF1YWxpZmllcjo6QW5vdGhlck9uZTo6Rm9v
IHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAor
ICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtl
ZCBleHBsaWNpdC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9leHBsaWNpdF0gWzVdJykKKyAg
ICAgICAgIyBzdHJ1Y3RzIGFyZSBjYXVnaHQgYXMgd2VsbC4KKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnc3RydWN0IEZvbyB7CisgICAgICAgICAg
ICAgICAgIEZvbyhpbnQgZik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdT
aW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwor
ICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCisgICAgICAgICMgVGVtcGxh
dGl6ZWQgY2xhc3NlcyBhcmUgY2F1Z2h0IGFzIHdlbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNz
IEZvbyB7CisgICAgICAgICAgICAgICAgIEZvbyhpbnQgZik7CisgICAgICAgICAgICAgICB9Oycn
JywKKyAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBt
YXJrZWQgZXhwbGljaXQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScp
CisgICAgICAgICMgcHJvcGVyIHN0eWxlIGlzIG9rYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAg
ICAgZXhwbGljaXQgRm9vKGludCBmKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAg
ICAgJycpCisgICAgICAgICMgdHdvIGFyZ3VtZW50IGNvbnN0cnVjdG9yIGlzIG9rYXkKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9v
IHsKKyAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7CisgICAgICAgICAgICAgICB9
OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIHR3byBhcmd1bWVudCBjb25zdHJ1Y3Rv
ciwgYWNyb3NzIHR3byBsaW5lcywgaXMgb2theQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBG
b28oaW50IGYsCisgICAgICAgICAgICAgICAgICAgICBpbnQgYik7CisgICAgICAgICAgICAgICB9
OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIG5vbi1jb25zdHJ1Y3RvciAoYnV0IHNp
bWlsYXIgbmFtZSksIGlzIG9rYXkKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgYUZvbyhpbnQg
Zik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIGNv
bnN0cnVjdG9yIHdpdGggdm9pZCBhcmd1bWVudCBpcyBva2F5CisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAg
ICAgICAgIEZvbyh2b2lkKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycp
CisgICAgICAgICMgc2luZ2xlIGFyZ3VtZW50IG1ldGhvZCBpcyBva2F5CisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAg
ICAgICAgICAgICAgIEJhcihpbnQgYik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAg
ICAgICcnKQorICAgICAgICAjIGNvbW1lbnRzIHNob3VsZCBiZSBpZ25vcmVkCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Cisg
ICAgICAgICAgICAgICAvLyBGb28oaW50IGYpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAg
ICAgICAgICAnJykKKyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gZm9sbG93aW5n
IGNsYXNzIGRlZmluaXRpb24gaXMgb2theQorICAgICAgICAjIChva2F5LCBpdCdzIG5vdCBhY3R1
YWxseSB2YWxpZCwgYnV0IHdlIGRvbid0IHdhbnQgYSBmYWxzZSBwb3NpdGl2ZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsK
KyAgICAgICAgICAgICAgICAgRm9vKGludCBmLCBpbnQgYik7CisgICAgICAgICAgICAgICB9Owor
ICAgICAgICAgICAgICAgRm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAg
IyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gaXMgb2theQorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydzdGF0aWMgRm9vKGludCBmKTsnJycsCisg
ICAgICAgICAgICAnJykKKyAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgY29weSBjb25zdHJ1Y3Rv
ciBpcyBva2F5LgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICBGb28oY29uc3QgRm9vJik7Cisg
ICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAg
ICAgICAgICBGb28oRm9vJik7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcn
KQorCisgICAgZGVmIHRlc3Rfc2xhc2hfc3Rhcl9jb21tZW50X29uX3NpbmdsZV9saW5lKHNlbGYp
OgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJycv
KiBzdGF0aWMgKi8gRm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnLyovIHN0YXRpYyAqLyAg
Rm9vKGludCBmKTsnJycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnLyovIHN0YXRpYyBGb28oaW50IGYpOycnJywK
KyAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50Jwor
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnJycgICAgLyov
IHN0YXRpYyBGb28oaW50IGYpOycnJywKKyAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQg
b2YgbXVsdGktbGluZSBjb21tZW50JworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRp
bGluZV9jb21tZW50XSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnJycgICAgLyoqLyBzdGF0aWMgRm9vKGludCBmKTsnJycsCisgICAgICAg
ICAgICAnJykKKworICAgICMgVGVzdCBzdXNwaWNpb3VzIHVzYWdlIG9mICJpZiIgbGlrZSB0aGlz
OgorICAgICMgaWYgKGEgPT0gYikgeworICAgICMgICBEb1NvbWV0aGluZygpOworICAgICMgfSBp
ZiAoYSA9PSBjKSB7ICAgLy8gU2hvdWxkIGJlICJlbHNlIGlmIi4KKyAgICAjICAgRG9Tb21ldGhp
bmcoKTsgIC8vIFRoaXMgZ2V0cyBjYWxsZWQgdHdpY2UgaWYgYSA9PSBiICYmIGEgPT0gYy4KKyAg
ICAjIH0KKyAgICBkZWYgdGVzdF9zdXNwaWNpb3VzX3VzYWdlX29mX2lmKHNlbGYpOgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAgICBpZiAoYSA9PSBiKSB7JywKKyAg
ICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAg
ICB9IGlmIChhID09IGIpIHsnLAorICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAiZWxzZSBpZiI/
IElmIG5vdCwgc3RhcnQgYSBuZXcgbGluZSBmb3IgImlmIi4nCisgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvYnJhY2VzXSBbNF0nKQorCisgICAgIyBUZXN0IHN1c3BpY2lvdXMgdXNhZ2Ugb2Yg
bWVtc2V0LiBTcGVjaWZpY2FsbHksIGEgMAorICAgICMgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlz
IGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCisgICAgZGVmIHRlc3Rfc3VzcGljaW91c191c2Fn
ZV9vZl9tZW1zZXQoc2VsZik6CisgICAgICAgICMgTm9ybWFsIHVzZSBpcyBva2F5LgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAwLCBzaXpl
b2YoYnVmKSknLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyBBIDAgYXMgdGhlIGZpbmFs
IGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoCisgICAgICAgICAgICAnICAgIG1lbXNldChidWYsIHNpemVvZihidWYpLCAwKScs
CisgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSki
PycKKyAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgeHNpemUgKiB5c2l6ZSwg
MCknLAorICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAibWVtc2V0KGJ1ZiwgMCwgeHNpemUgKiB5
c2l6ZSkiPycKKyAgICAgICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykKKworICAgICAg
ICAjIFRoZXJlIGlzIGxlZ2l0aW1hdGUgdGVzdCBjb2RlIHRoYXQgdXNlcyB0aGlzIGZvcm0uCisg
ICAgICAgICMgVGhpcyBpcyBva2F5IHNpbmNlIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBsaXRl
cmFsLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgIiAgICBtZW1zZXQo
YnVmLCAneScsIDApIiwKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KAorICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCA0LCAwKScsCisgICAgICAgICAgICAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1Ziwg
LTEsIDApJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAweEYxLCAwKScsCisgICAgICAgICAgICAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgMHhj
ZCwgMCknLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9jaGVja19wb3NpeF90aHJl
YWRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3NjdGltZV9yKCknLCAnJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnc3RydG9rX3IoKScsICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCcgICAgc3RydG9rX3IoZm9vLCBiYSwgciknLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnYnJhbmQoKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdf
cmFuZCgpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy5yYW5kKCknLCAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnPnJhbmQoKScsICcnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdyYW5kKCknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2lu
ZyByYW5kX3IoLi4uKSBpbnN0ZWFkIG9mIHJhbmQoLi4uKScKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbcnVudGltZS90aHJlYWRzYWZlX2ZuXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdzdHJ0b2soKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIHN0cnRva19yKC4uLikgJworICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN0ZWFkIG9m
IHN0cnRvayguLi4pJworICAgICAgICAgICAgICAgICAgICAgICAgICcgZm9yIGltcHJvdmVkIHRo
cmVhZCBzYWZldHkuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3RocmVh
ZHNhZmVfZm5dIFsyXScpCisKKyAgICAjIFRlc3QgcG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVn
cyBsaWtlIHByaW50Zihmb28pLgorICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdHJpbmdzKHNlbGYpOgor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdwcmludGYoImZvbyIpJywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiZm9vOiAlcyIsIGZvbyknLCAnJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnRG9jaWRGb3JQcmludGYoZG9jaWQpJywgJycpICAjIFNob3VsZCBub3Qg
dHJpZ2dlci4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdwcmludGYo
Zm9vKScsCisgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBEbyBwcmlu
dGYoIiVzIiwgZm9vKSBpbnN0ZWFkLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl0g
WzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdwcmludGYoZm9v
LmNfc3RyKCkpJywKKyAgICAgICAgICAgICdQb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuICcK
KyAgICAgICAgICAgICdEbyBwcmludGYoIiVzIiwgZm9vLmNfc3RyKCkpIGluc3RlYWQuJworICAg
ICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ3ByaW50Zihmb28tPmNfc3RyKCkpJywKKyAgICAgICAgICAgICdQ
b3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuICcKKyAgICAgICAgICAgICdEbyBwcmludGYoIiVz
IiwgZm9vLT5jX3N0cigpKSBpbnN0ZWFkLicKKyAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50
Zl0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdTdHJpbmdQ
cmludGYoZm9vKScsCisgICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBE
byBTdHJpbmdQcmludGYoIiVzIiwgZm9vKSBpbnN0ZWFkLicKKyAgICAgICAgICAgICcnCisgICAg
ICAgICAgICAnICBbcnVudGltZS9wcmludGZdIFs0XScpCisKKyAgICAjIFZhcmlhYmxlLWxlbmd0
aCBhcnJheXMgYXJlIG5vdCBwZXJtaXR0ZWQuCisgICAgZGVmIHRlc3RfdmFyaWFibGVfbGVuZ3Ro
X2FycmF5X2RldGVjdGlvbihzZWxmKToKKyAgICAgICAgZXJybXNnID0gKCdEbyBub3QgdXNlIHZh
cmlhYmxlLWxlbmd0aCBhcnJheXMuICBVc2UgYW4gYXBwcm9wcmlhdGVseSBuYW1lZCAnCisgICAg
ICAgICAgICAgICAgICAiKCdrJyBmb2xsb3dlZCBieSBDYW1lbENhc2UpIGNvbXBpbGUtdGltZSBj
b25zdGFudCBmb3IgdGhlIHNpemUuIgorICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvYXJy
YXlzXSBbMV0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2FueV9vbGRfdmFy
aWFibGVdOycsIGVycm1zZykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGRvdWJsZXNp
emVbc29tZV92YXIgKiAyXTsnLCBlcnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBhW2FmdW5jdGlvbigpXTsnLCBlcnJtc2cpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lu
dCBhW2Z1bmN0aW9uKGtNYXhGb29CYXJzKV07JywgZXJybXNnKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdib29sIGFfbGlzdFtpdGVtc18tPnNpemUoKV07JywgZXJybXNnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCduYW1lc3BhY2U6OlR5cGUgYnVmZmVyW2xlbisxXTsnLCBlcnJtc2cp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbNjRdOycsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdpbnQgYVsweEZGXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnaW50IGZpcnN0WzI1Nl0sIHNlY29uZFsyNTZdOycsICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdpbnQgYXJyYXlfbmFtZVtrQ29tcGlsZVRpbWVDb25zdGFudF07JywgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NoYXIgYnVmW3NvbWVuYW1lc3BhY2U6OmtCdWZTaXpl
XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFycmF5X25hbWVbQUxMX0NB
UFNdOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdBQ2xhc3MgYXJyYXkxW2Zvbzo6
YmFyOjpBTExfQ0FQU107JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2tN
YXhTdHJMZW4gKyAxXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6
ZW9mKGZvbyldOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtzaXplb2Yo
KmZvbyldOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtzaXplb2YgZm9v
XTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKHN0cnVjdCBG
b28pXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbMTI4IC0gc2l6ZW9m
KGNvbnN0IGJhcildOycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVsoc2l6
ZW9mKGZvbykgKiA0KV07JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWyhh
cnJheXNpemUoZml4ZWRfc2l6ZV9hcnJheSkvMikgPDwgMV07JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2RlbGV0ZSBhW3NvbWVfdmFyXTsnLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgncmV0dXJuIGFbc29tZV92YXJdOycsICcnKQorCisgICAgIyBCcmFjZSB1c2FnZQor
ICAgIGRlZiB0ZXN0X2JyYWNlcyhzZWxmKToKKyAgICAgICAgIyBCcmFjZXMgc2hvdWxkbid0IGJl
IGZvbGxvd2VkIGJ5IGEgOyB1bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAorICAgICAg
ICAjIG9yIGluaXRpYWxpemluZyBhbiBhcnJheQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdp
bnQgYVszXSA9IHsgMSwgMiwgMyB9OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJycnY29uc3QgaW50IGZvb1tdID0KKyAgICAgICAgICAgICAgICAgICB7MSwg
MiwgMyB9OycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIEZvciBzaW5nbGUgbGluZSwg
dW5tYXRjaGVkICd9JyB3aXRoIGEgJzsnIGlzIGlnbm9yZWQgKG5vdCBlbm91Z2ggY29udGV4dCkK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnaW50
IGFbM10gPSB7IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAzIH07JycnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2ludCBhWzJdWzNdID0geyB7
IDEsIDIgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAzLCA0IH0gfTsnJycsCisg
ICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJycnaW50IGFbMl1bM10gPQorICAgICAgICAgICAgICAgICAgIHsgeyAxLCAyIH0s
CisgICAgICAgICAgICAgICAgICAgICB7IDMsIDQgfSB9OycnJywKKyAgICAgICAgICAgICcnKQor
CisgICAgIyBDSEVDSy9FWFBFQ1RfVFJVRS9FWFBFQ1RfRkFMU0UgcmVwbGFjZW1lbnRzCisgICAg
ZGVmIHRlc3RfY2hlY2tfY2hlY2soc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NI
RUNLKHggPT0gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcg
Q0hFQ0tfRVEgaW5zdGVhZCBvZiBDSEVDSyhhID09IGIpJworICAgICAgICAgICAgICAgICAgICAg
ICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnQ0hFQ0soeCAhPSA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1
c2luZyBDSEVDS19ORSBpbnN0ZWFkIG9mIENIRUNLKGEgIT0gYiknCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdDSEVDSyh4ID49IDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNp
ZGVyIHVzaW5nIENIRUNLX0dFIGluc3RlYWQgb2YgQ0hFQ0soYSA+PSBiKScKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ0NIRUNLKHggPiA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdD
b25zaWRlciB1c2luZyBDSEVDS19HVCBpbnN0ZWFkIG9mIENIRUNLKGEgPiBiKScKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPD0gNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfTEUgaW5zdGVhZCBvZiBDSEVDSyhhIDw9IGIpJworICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCA8IDQyKScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2YgQ0hFQ0soYSA8IGIpJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKwor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCA9PSA0MiknLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfRVEgaW5zdGVhZCBvZiBEQ0hFQ0so
YSA9PSBiKScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2td
IFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ICE9IDQyKScsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19ORSBpbnN0ZWFkIG9m
IERDSEVDSyhhICE9IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPj0gNDIp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0dFIGlu
c3RlYWQgb2YgRENIRUNLKGEgPj0gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0so
eCA+IDQyKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVD
S19HVCBpbnN0ZWFkIG9mIERDSEVDSyhhID4gYiknCisgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdE
Q0hFQ0soeCA8PSA0MiknLAorICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2lu
ZyBEQ0hFQ0tfTEUgaW5zdGVhZCBvZiBEQ0hFQ0soYSA8PSBiKScKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ0RDSEVDSyh4IDwgNDIpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lk
ZXIgdXNpbmcgRENIRUNLX0xUIGluc3RlYWQgb2YgRENIRUNLKGEgPCBiKScKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgiNDIiID09IHgpJywKKyAg
ICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfRVEgaW5zdGVhZCBvZiBFWFBFQ1RfVFJV
RShhID09IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCI0MiIgIT0g
eCknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFkIG9mIEVY
UEVDVF9UUlVFKGEgIT0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsy
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRVhQRUNUX1RSVUUo
KzQyID49IHgpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfR0UgaW5zdGVh
ZCBvZiBFWFBFQ1RfVFJVRShhID49IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2No
ZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVD
VF9UUlVFX00oLTQyID4geCknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9H
VF9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhID4gYiknCisgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2hlY2tdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAg
ICAgICAnRVhQRUNUX1RSVUVfTSg0MlUgPD0geCknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVz
aW5nIEVYUEVDVF9MRV9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhIDw9IGIpJworICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAorICAgICAgICAgICAgJ0VYUEVDVF9UUlVFX00oNDJMIDwgeCknLAorICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9MVF9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhIDwg
YiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCisKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCA9PSA0MiknLAor
ICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFkIG9mIEVYUEVDVF9G
QUxTRShhID09IGIpJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ0VYUEVDVF9GQUxTRSh4ICE9
IDQyKScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0VRIGluc3RlYWQgb2Yg
RVhQRUNUX0ZBTFNFKGEgIT0gYiknCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2td
IFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnRVhQRUNUX0ZB
TFNFKHggPj0gNDIpJywKKyAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFQgaW5z
dGVhZCBvZiBFWFBFQ1RfRkFMU0UoYSA+PSBiKScKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdB
U1NFUlRfRkFMU0UoeCA+IDQyKScsCisgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQVNTRVJU
X0xFIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFKGEgPiBiKScKKyAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAg
ICAgICdBU1NFUlRfRkFMU0UoeCA8PSA0MiknLAorICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5n
IEFTU0VSVF9HVCBpbnN0ZWFkIG9mIEFTU0VSVF9GQUxTRShhIDw9IGIpJworICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAor
ICAgICAgICAgICAgJ0FTU0VSVF9GQUxTRV9NKHggPCA0MiknLAorICAgICAgICAgICAgJ0NvbnNp
ZGVyIHVzaW5nIEFTU0VSVF9HRV9NIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFX00oYSA8IGIpJwor
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ0NIRUNLKHNvbWVfaXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdFWFBFQ1RfVFJVRShzb21lX2l0ZXJhdG9yID09IG9iai5l
bmQoKSknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX0ZBTFNFKHNvbWVf
aXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J0NIRUNLKENyZWF0ZVRlc3RGaWxlKGRpciwgKDEgPDwgMjApKSk7JywgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKENyZWF0ZVRlc3RGaWxlKGRpciwgKDEgPj4gMjApKSk7Jywg
JycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeDw0MiknLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2YgQ0hFQ0so
YSA8IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2td
IFsyXSddKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4PjQyKScsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0dUIGluc3RlYWQgb2YgQ0hF
Q0soYSA+IGIpJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVj
a10gWzJdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJyAgICBF
WFBFQ1RfVFJVRSg0MiA8IHgpICAvLyBSYW5kb20gY29tbWVudC4nLAorICAgICAgICAgICAgJ0Nv
bnNpZGVyIHVzaW5nIEVYUEVDVF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPCBiKScKKyAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKKyAgICAgICAgICAgICdFWFBFQ1RfVFJVRSggNDIgPCB4ICknLAorICAgICAgICAg
ICAgWydFeHRyYSBzcGFjZSBhZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCisgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nLAorICAgICAgICAgICAgICdDb25zaWRlciB1c2lu
ZyBFWFBFQ1RfTFQgaW5zdGVhZCBvZiBFWFBFQ1RfVFJVRShhIDwgYiknCisgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
KyAgICAgICAgICAgICdDSEVDSygiZm9vIiA9PSAiZm9vIiknLAorICAgICAgICAgICAgJ0NvbnNp
ZGVyIHVzaW5nIENIRUNLX0VRIGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKScKKyAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdDSEVDS19FUSgiZm9vIiwgImZvbyIpJywgJycpCisKKyAgICBkZWYgdGVzdF9icmFjZV9hdF9i
ZWdpbl9vZl9saW5lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd7JywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBw
cmV2aW91cyBsaW5lJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2Jy
YWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAgICAgJyNlbmRpZlxuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICd9XG4nLAor
ICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaW50IGZvbygpIHsnLAor
ICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVm
aW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpbnQgZm9vKCkgY29uc3QgeycsCisgICAg
ICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0
aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ludCBmb28oKSBjb25zdFxuJworICAgICAgICAg
ICAgJ3tcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uXG4n
CisgICAgICAgICAgICAnICAgICYmIGNvbmRpdGlvbjJcbicKKyAgICAgICAgICAgICcgICAgJiYg
Y29uZGl0aW9uMykge1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnJykKKwor
ICAgIGRlZiB0ZXN0X21pc21hdGNoaW5nX3NwYWNlc19pbl9wYXJlbnMoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28gKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNp
ZGUgKCkgaW4gaWYnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKCBmb28pIHsnLCAn
TWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiBzd2l0Y2gnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdmb3IgKGZvbzsgYmE7IGJhciApIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lk
ZSAoKSBpbiBmb3InCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFy
ZW5zXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKDsgZm9vOyBiYXIpIHsn
LCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJhcikgeycsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFyICkgeycsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZvbzsgYmFyOyApIHsnLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnZm9yZWFjaCAoZm9vLCBmb29zICkgeycsICdNaXNtYXRjaGlu
ZyBzcGFjZXMgaW5zaWRlICgpIGluIGZvcmVhY2gnCisgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdm
b3JlYWNoICggZm9vLCBmb29zKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4g
Zm9yZWFjaCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZvbyAgKSB7JywgJ1No
b3VsZCBoYXZlIHplcm8gb3Igb25lIHNwYWNlcyBpbnNpZGUnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAoIGFuZCApIGluIHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCisKKyAg
ICBkZWYgdGVzdF9zcGFjaW5nX2Zvcl9mbmNhbGwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb28pIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChm
b287YmFyO2JheikgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoIChm
b28sIGZvb3MpIHsnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbykg
eycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKGZvbykgeycsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCduZXcgKFJlbmRlckFyZW5hKCkpIFJlbmRlcklubGlu
ZShkb2N1bWVudCgpKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28oIGJhcikn
LCAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJworICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnZm9vYmFyKCBcXCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb29i
YXIoICAgICBcXCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoIGEgKyBiKScsICdF
eHRyYSBzcGFjZSBhZnRlciAoJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL3BhcmVuc10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKChhK2IpKScsICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28gKGZvbyknLCAnRXh0cmEgc3BhY2UgYmVm
b3JlICggaW4gZnVuY3Rpb24gY2FsbCcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9wYXJlbnNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYg
Zm9vICgqZm9vKShmb28pJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYg
Zm9vICgqZm9vMTJiYXJfKShmb28pJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5
cGVkZWYgZm9vIChGb286OipiYXIpKGZvbyknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnZm9vIChGb286OipiYXIpKCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNw
YWNlIGJlZm9yZSAoIGluIGZ1bmN0aW9uIGNhbGwnCisgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0
eXBlZGVmIGZvbyAoRm9vOjoqYmFyKSgnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
KGZvbykoYmFyKScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpmb28pKGJh
ciknLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRm9vICgqZm9vKShCYXIgYmFyLCcs
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgqcClbc2l6ZW9mKGZvbyldID0g
JmZvbycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgmcmVmKVtzaXplb2Yo
Zm9vKV0gPSAmZm9vJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NvbnN0IGNoYXIz
MiAoKnRhYmxlW10pWzZdOycsICcnKQorCisgICAgZGVmIHRlc3Rfc3BhY2luZ19iZWZvcmVfYnJh
Y2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vKXsnLCAnTWlzc2lu
ZyBzcGFjZSBiZWZvcmUgeycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvcnsnLCAnTWlzc2lu
ZyBzcGFjZSBiZWZvcmUgeycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciB7JywgJycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0VYUEVDVF9ERUJVR19ERUFUSCh7JywgJycpCisKKyAg
ICBkZWYgdGVzdF9zcGFjaW5nX2Fyb3VuZF9lbHNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCd9ZWxzZSB7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVsc2UnCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQorICAgICAgICBzZWxm
LmFzc2VydF9saW50KCd9IGVsc2V7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIHsnCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCd9IGVsc2UgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd9IGVsc2UgaWYnLCAnJykKKworICAgIGRlZiB0ZXN0X3NwYWNpbmdfZm9yX2JpbmFyeV9vcHMo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288PWJhcikgeycsICdNaXNz
aW5nIHNwYWNlcyBhcm91bmQgPD0nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2Uvb3BlcmF0b3JzXSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9v
PGJhcikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJ2lmIChmb288YmFyLT5iYXopIHsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vPGJhci0+YmFyKSB7JywgJ01pc3Npbmcg
c3BhY2VzIGFyb3VuZCA8JworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L29wZXJhdG9yc10gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBoYXNo
X21hcDxGb28sIEJhcicsICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3R5cGVkZWYgaGFzaF9tYXA8Rm9vb29vVHlwZSwgQmFhYWFhclR5cGUsJywg
JycpCisKKyAgICBkZWYgdGVzdF9zcGFjaW5nX2JlZm9yZV9sYXN0X3NlbWljb2xvbihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2FsbF9mdW5jdGlvbigpIDsnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24uIElmIHRo
aXMgc2hvdWxkIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RhdGVt
ZW50LCB1c2UgeyB9IGluc3RlYWQuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUg
KHRydWUpIDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUg
bGFzdCBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFuICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnZW1wdHkgc3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZGVmYXVsdDo7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnU2Vt
aWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudC4gVXNlIHsgfSBpbnN0ZWFkLicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICAgIDsnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICdMaW5lIGNvbnRhaW5zIG9ubHkgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0
eSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFk
LicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50IGkgPSAwOyA7JywgJycpCisK
KyAgICAjIFN0YXRpYyBvciBnbG9iYWwgU1RMIHN0cmluZ3MuCisgICAgZGVmIHRlc3Rfc3RhdGlj
X29yX2dsb2JhbF9zdGxzdHJpbmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdz
dHJpbmcgZm9vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9i
YWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIGZvb1tdIi4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdzdHJpbmcga0ZvbyA9ICJoZWxsbyI7ICAvLyBFbmdsaXNoJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnRm9yIGEgc3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5
bGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIga0Zv
b1tdIi4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0n
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgc3RyaW5nIGZvbzsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwg
dXNlIGEgQyBzdHlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFk
OiAic3RhdGljIGNoYXIgZm9vW10iLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVu
dGltZS9zdHJpbmddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBjb25z
dCBzdHJpbmcgZm9vOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9n
bG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJzdGF0aWMgY29uc3QgY2hhciBmb29bXSIuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnc3RyaW5nIEZvbzo6YmFyOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxl
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIEZvbzo6
YmFyW10iLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0
XScpCisgICAgICAgICMgUmFyZSBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJp
bmcgZm9vKCJmb29iYXIiKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0
aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKKyAgICAgICAgIyBTaG91bGQg
bm90IGNhdGNoIGxvY2FsIG9yIG1lbWJlciB2YXJpYWJsZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJyAgICBzdHJpbmcgZm9vJywgJycpCisgICAgICAgICMgU2hvdWxkIG5vdCBjYXRjaCBm
dW5jdGlvbnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBFbXB0eVN0cmluZygp
IHsgcmV0dXJuICIiOyB9JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBF
bXB0eVN0cmluZyAoKSB7IHJldHVybiAiIjsgfScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdzdHJpbmcgVmVyeUxvbmdOYW1lRnVuY3Rpb25Tb21ldGltZXNFbmRzV2l0aChcbicKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnICAgIFZlcnlMb25nTmFtZVR5cGUgdmVyeV9sb25nX25h
bWVfdmFyaWFibGUpIHt9JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3RlbXBsYXRl
PD5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0aW9uVGVtcGxhdGVT
cGVjaWFsaXphdGlvbjxTb21lVHlwZT4oXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAg
ICAgIGludCB4KSB7IHJldHVybiAiIjsgfScsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd0ZW1wbGF0ZTw+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBGdW5jdGlv
blRlbXBsYXRlU3BlY2lhbGl6YXRpb248dmVjdG9yPEE6OkI+KiA+KFxuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICcgICAgICBpbnQgeCkgeyByZXR1cm4gIiI7IH0nLCAnJykKKworICAgICAg
ICAjIHNob3VsZCBub3QgY2F0Y2ggbWV0aG9kcyBvZiB0ZW1wbGF0ZSBjbGFzc2VzLgorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZCgpIGNvbnN0XG4n
CisgICAgICAgICAgICAgICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnICByZXR1cm4gIiI7XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZChcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgaW50IGFyZykgY29uc3RcbicKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJldHVy
biAiIjtcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycpCisKKyAgICBkZWYg
dGVzdF9ub19zcGFjZXNfaW5fZnVuY3Rpb25fY2FsbHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ1RlbGxTdG9yeSgxLCAzKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdUZWxsU3RvcnkoMSwgMyApOycsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJworICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzJdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnVGVsbFN0b3J5KDEgLyogd29sZiAqLywgMyAvKiBwaWdzICovKTsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoJyNlbmRpZlxuICAgICk7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcnKQorCisgICAgZGVmIHRlc3RfdHdvX3NwYWNlc19iZXR3ZWVuX2NvZGVfYW5kX2NvbW1lbnRz
KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IC8vIG5hbWVzcGFjZSBmb28nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0
d2VlbiBjb2RlIGFuZCBjb21tZW50cycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9jb21tZW50c10gWzJdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnfS8vIG5h
bWVzcGFjZSBmb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3Bh
Y2VzIGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50cycKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzJdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgncHJpbnRmKCJmb28iKTsgLy8gT3V0c2lkZSBxdW90ZXMuJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnQXQgbGVhc3QgdHdvIHNwYWNlcyBpcyBiZXN0IGJldHdlZW4gY29kZSBh
bmQgY29tbWVudHMnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29t
bWVudHNdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgIC8vIEhh
dmluZyB0d28gc3BhY2VzIGlzIGZpbmUuJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2ludCBpID0gMDsgICAvLyBIYXZpbmcgdGhyZWUgc3BhY2VzIGlzIE9LLicsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcvLyBUb3AgbGV2ZWwgY29tbWVudCcsICcnKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCcgICAgLy8gTGluZSBzdGFydHMgd2l0aCBmb3VyIHNwYWNlcy4nLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9vKCk7XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3sgLy8gQSBzY29wZSBpcyBvcGVuaW5nLicsICcnKQorICAgICAgICBzZWxmLmFz
c2VydF9saW50KCcgICAgZm9vKCk7XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7
IC8vIEFuIGluZGVudGVkIHNjb3BlIGlzIG9wZW5pbmcuJywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2lmIChmb28pIHsgLy8gbm90IGEgcHVyZSBzY29wZTsgY29tbWVudCBpcyB0b28g
Y2xvc2UhJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQXQgbGVhc3QgdHdvIHNwYWNlcyBp
cyBiZXN0IGJldHdlZW4gY29kZSBhbmQgY29tbWVudHMnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFsyXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ByaW50ZigiLy8gSW4gcXVvdGVzLiIpJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ3ByaW50ZigiXFwiJXMgLy8gSW4gcXVvdGVzLiIpJywgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ3ByaW50ZigiJXMiLCAiLy8gSW4gcXVvdGVzLiIpJywgJycpCisKKyAgICBkZWYg
dGVzdF9zcGFjZV9hZnRlcl9jb21tZW50X21hcmtlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnLy8nLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy94JywgJ1Nob3Vs
ZCBoYXZlIGEgc3BhY2UgYmV0d2VlbiAvLyBhbmQgY29tbWVudCcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50c10gWzRdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnLy8geCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy0tLS0nLCAn
JykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy89PT09JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJy8vLy8vLycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8v
Ly8geCcsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8geCcsICcnKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcvLy8veCcsICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4g
Ly8gYW5kIGNvbW1lbnQnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
Y29tbWVudHNdIFs0XScpCisKKyAgICBkZWYgdGVzdF9uZXdsaW5lX2F0X2VvZihzZWxmKToKKyAg
ICAgICAgZGVmIGRvX3Rlc3Qoc2VsZiwgZGF0YSwgaXNfbWlzc2luZ19lb2YpOgorICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAg
ICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKCdmb28uY3BwJywgJ2NwcCcsIGRhdGEu
c3BsaXQoJ1xuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy
b3JfY29sbGVjdG9yKQorICAgICAgICAgICAgIyBUaGUgd2FybmluZyBhcHBlYXJzIG9ubHkgb25j
ZS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgICAgIGludChp
c19taXNzaW5nX2VvZiksCisgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMo
KS5jb3VudCgKKyAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kIGEgbmV3bGluZSBj
aGFyYWN0ZXIgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4nCisgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2VuZGluZ19uZXdsaW5lXSBbNV0nKSkKKworICAgICAgICBkb190ZXN0KHNl
bGYsICcvLyBOZXdsaW5lXG4vLyBhdCBFT0ZcbicsIEZhbHNlKQorICAgICAgICBkb190ZXN0KHNl
bGYsICcvLyBObyBuZXdsaW5lXG4vLyBhdCBFT0YnLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaW52
YWxpZF91dGY4KHNlbGYpOgorICAgICAgICBkZWYgZG9fdGVzdChzZWxmLCByYXdfYnl0ZXMsIGhh
c19pbnZhbGlkX3V0ZjgpOgorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xs
ZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9k
YXRhKAorICAgICAgICAgICAgICAgICdmb28uY3BwJywgJ2NwcCcsCisgICAgICAgICAgICAgICAg
dW5pY29kZShyYXdfYnl0ZXMsICd1dGY4JywgJ3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKKyAgICAg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFw
cGVhcnMgb25seSBvbmNlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAg
ICAgICAgICAgaW50KGhhc19pbnZhbGlkX3V0ZjgpLAorICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCisgICAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRh
aW5zIGludmFsaWQgVVRGLTgnCisgICAgICAgICAgICAgICAgICAgICcgKG9yIFVuaWNvZGUgcmVw
bGFjZW1lbnQgY2hhcmFjdGVyKS4nCisgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS91dGY4XSBbNV0nKSkKKworICAgICAgICBkb190ZXN0KHNlbGYsICdIZWxsbyB3b3JsZFxuJywg
RmFsc2UpCisgICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTlceDhlXHhiZFxuJywgRmFsc2UpCisg
ICAgICAgIGRvX3Rlc3Qoc2VsZiwgJ1x4ZTl4XHg4ZVx4YmRcbicsIFRydWUpCisgICAgICAgICMg
VGhpcyBpcyB0aGUgZW5jb2Rpbmcgb2YgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpdHNlbGYg
KHdoaWNoCisgICAgICAgICMgeW91IGNhbiBzZWUgYnkgZXZhbHVhdGluZyBjb2RlY3MuZ2V0ZW5j
b2RlcigndXRmOCcpKHUnXHVmZmZkJykpLgorICAgICAgICBkb190ZXN0KHNlbGYsICdceGVmXHhi
Zlx4YmRcbicsIFRydWUpCisKKyAgICBkZWYgdGVzdF9pc19ibGFua19saW5lKHNlbGYpOgorICAg
ICAgICBzZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJycpKQorICAgICAgICBz
ZWxmLmFzc2VydF8oY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJyAnKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRfKGNwcF9zdHlsZS5pc19ibGFua19saW5lKCcgXHRcclxuJykpCisgICAgICAgIHNlbGYu
YXNzZXJ0Xyhub3QgY3BwX3N0eWxlLmlzX2JsYW5rX2xpbmUoJ2ludCBhOycpKQorICAgICAgICBz
ZWxmLmFzc2VydF8obm90IGNwcF9zdHlsZS5pc19ibGFua19saW5lKCd7JykpCisKKyAgICBkZWYg
dGVzdF9ibGFua19saW5lc19jaGVjayhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtf
bGluZXNfY2hlY2soWyd7XG4nLCAnXG4nLCAnXG4nLCAnfVxuJ10sIDEsIDEpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnICBpZiAoZm9vKSB7XG4nLCAnXG4nLCAnICB9
XG4nXSwgMSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soCisgICAg
ICAgICAgICBbJ1xuJywgJy8vIHtcbicsICdcbicsICdcbicsICcvLyBDb21tZW50XG4nLCAne1xu
JywgJ31cbiddLCAwLCAwKQorICAgICAgICBzZWxmLmFzc2VydF9ibGFua19saW5lc19jaGVjayhb
J1xuJywgJ3J1bigieyIpO1xuJywgJ1xuJ10sIDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0X2Js
YW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAnICBpZiAoZm9vKSB7IHJldHVybiAwOyB9XG4nLCAnXG4n
XSwgMCwgMCkKKworICAgIGRlZiB0ZXN0X2FsbG93X2JsYW5rX2xpbmVfYmVmb3JlX2Nsb3Npbmdf
bmFtZXNwYWNlKHNlbGYpOgorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9v
LmNwcCcsICdjcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyduYW1l
c3BhY2UgeycsICcnLCAnfSAgLy8gbmFtZXNwYWNlJ10sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KDAsIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQoCisgICAgICAgICAgICAnQmxhbmsg
bGluZSBhdCB0aGUgZW5kIG9mIGEgY29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycKKyAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL2JsYW5rX2xpbmVdIFszXScpKQorCisgICAgZGVmIHRlc3Rf
YWxsb3dfYmxhbmtfbGluZV9iZWZvcmVfaWZfZWxzZV9jaGFpbihzZWxmKToKKyAgICAgICAgZXJy
b3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBf
c3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFsnaWYgKGhvZ2UpIHsnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcnLCAgIyBObyB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ30gZWxzZSBpZiAocGl5bykgeycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJycsICAjIE5vIHdhcm5pbmcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnfSBlbHNlIGlmIChwaXlvcGl5bykgeycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgaG9nZSA9IHRydWU7JywgICMgTm8gd2Fybmlu
ZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IGVsc2UgeycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIFdhcm5pbmcgb24gdGhpcyBs
aW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoMSwgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKKyAgICAg
ICAgICAgICdCbGFuayBsaW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBu
ZWVkZWQ/JworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNdJykpCisK
KyAgICBkZWYgdGVzdF9lbHNlX29uX3NhbWVfbGluZV9hc19jbG9zaW5nX2JyYWNlcyhzZWxmKToK
KyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQor
ICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnaWYgKGhvZ2UpIHsnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIGVsc2UgeycgICMgV2FybmluZyBvbiB0aGlzIGxpbmUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnfSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0
cygpLmNvdW50KAorICAgICAgICAgICAgJ0FuIGVsc2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2Ft
ZSBsaW5lIGFzIHRoZSBwcmVjZWRpbmcgfScKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL25l
d2xpbmVdIFs0XScpKQorCisgICAgZGVmIHRlc3RfZWxzZV9jbGF1c2Vfbm90X29uX3NhbWVfbGlu
ZV9hc19lbHNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgZWxzZSBEb1Nv
bWV0aGluZ0Vsc2UoKTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdFbHNlIGNsYXVzZSBz
aG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgJworICAgICAgICAgICAgICAgICAg
ICAgICAgICcodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKQorICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcgICAgZWxzZSBpZkRvU29tZXRoaW5nRWxzZSgpOycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBzYW1l
IGxpbmUgYXMgZWxzZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyh1c2UgMiBsaW5lcykg
IFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAg
ICBlbHNlIGlmIChibGFoKSB7JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICB2
YXJpYWJsZV9lbmRzX2luX2Vsc2UgPSB0cnVlOycsICcnKQorCisgICAgZGVmIHRlc3RfY29tbWEo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2EgPSBmKDEsMik7JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBhZnRlciAsICBbd2hpdGVzcGFjZS9jb21t
YV0gWzNdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IHRtcD1hLGE9YixiPXRtcDsn
LAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnTWlzc2luZyBzcGFjZXMgYXJvdW5kID0gIFt3
aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ01p
c3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXSddKQorICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdmKGEsIC8qIG5hbWUgKi8gYik7JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ2YoYSwgLyogbmFtZSAqL2IpOycsICcnKQorCisgICAgZGVmIHRlc3RfaW5k
ZW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgaW50IG5vaW5kZW50
OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgaW50IGZvdXJfc3BhY2VfaW5k
ZW50OycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgaW50IG9uZV9zcGFjZV9pbmRl
bnQ7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBh
dCBsaW5lLXN0YXJ0LiAgJworICAgICAgICAgICAgICAgICAgICAgICAgICdBcmUgeW91IHVzaW5n
IGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJyAgIGludCB0aHJlZV9zcGFjZV9pbmRlbnQ7JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICdBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/
ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyBj
aGFyKiBvbmVfc3BhY2VfaW5kZW50ID0gInB1YmxpYzoiOycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRl
c3BhY2UvaW5kZW50XSBbM10nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgcHVibGljOics
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnICAgcHVibGljOicsICcnKQorCisgICAgZGVmIHRlc3RfbGFiZWwo
c2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3B1YmxpYzonLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBv
bmUgc3BhY2UuICAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoaXMgaXMgYSBtZW1i
ZXItaW5pdGlhbGl6ZXIgbGlzdCBpbiBhIGNvbnN0cnVjdG9yLCAnCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoZSBjb2xvbiBzaG91bGQgYmUgb24gdGhlIGxpbmUgYWZ0ZXIgdGhlIGRlZmlu
aXRpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICdoZWFkZXIuICBbd2hpdGVzcGFjZS9s
YWJlbHNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgcHVibGljOicsICcnKQor
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnQoJyBwdWJsaWM6JywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAg
cHVibGljOicsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBwdWJsaWM6JywgJycp
CisKKyAgICBkZWYgdGVzdF9ub3RfYWxhYmVsKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdNeVZlcnlMb25nTmFtZXNwYWNlOjpNeVZlcnlMb25nQ2xhc3NOYW1lOjonLCAnJykKKwor
ICAgIGRlZiB0ZXN0X3RhYihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnXHRpbnQg
YTsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ug
c3BhY2VzICBbd2hpdGVzcGFjZS90YWJdIFsxXScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J2ludCBhID0gNTtcdFx0Ly8gc2V0IGEgdG8gNScsCisgICAgICAgICAgICAgICAgICAgICAgICAg
J1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdJykK
KworICAgIGRlZiB0ZXN0X3BhcnNlX2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgb2xkX3VzYWdl
ID0gY3BwX3N0eWxlLl9VU0FHRQorICAgICAgICBvbGRfZXJyb3JfY2F0ZWdvcmllcyA9IGNwcF9z
dHlsZS5fRVJST1JfQ0FURUdPUklFUworICAgICAgICBvbGRfb3V0cHV0X2Zvcm1hdCA9IGNwcF9z
dHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQKKyAgICAgICAgb2xkX3ZlcmJvc2Vf
bGV2ZWwgPSBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVsCisgICAgICAg
IG9sZF9maWx0ZXJzID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycworICAgICAg
ICB0cnk6CisgICAgICAgICAgICAjIERvbid0IHByaW50IHVzYWdlIGR1cmluZyB0aGUgdGVzdHMs
IG9yIGZpbHRlciBjYXRlZ29yaWVzCisgICAgICAgICAgICBjcHBfc3R5bGUuX1VTQUdFID0gJycK
KyAgICAgICAgICAgIGNwcF9zdHlsZS5fRVJST1JfQ0FURUdPUklFUyA9ICcnCisKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVu
dHMsIFsnLS1iYWRvcHQnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4
aXQsIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMsIFsnLS1oZWxwJ10pCisgICAgICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBb
Jy0tZmlsdGVyPSddKQorICAgICAgICAgICAgIyBUaGlzIGlzIGlsbGVnYWwgYmVjYXVzZSBhbGwg
ZmlsdGVycyBtdXN0IHN0YXJ0IHdpdGggKyBvciAtCisgICAgICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhWYWx1ZUVycm9yLCBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tZmlsdGVyPWZv
byddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY3BwX3N0eWxl
LnBhcnNlX2FyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1maWx0
ZXI9K2EsYiwtYyddKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3Bw
J10sIHt9KSwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnXSkpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvbGRfb3V0cHV0X2Zvcm1hdCwgY3BwX3N0eWxlLl9jcHBf
c3R5bGVfc3RhdGUub3V0cHV0X2Zvcm1hdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KG9sZF92ZXJib3NlX2xldmVsLCBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xl
dmVsKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoW10sIHt9KSwgY3BwX3N0eWxl
LnBhcnNlX2FyZ3VtZW50cyhbXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoW10s
IHt9KSwgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJy0tdj0wJ10pKQorCisgICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXY9MScsICdmb28uY3Bw
J10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwX3N0eWxlLl9jcHBfc3R5
bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChb
J2Zvby5oJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5w
YXJzZV9hcmd1bWVudHMoWyctLXY9MycsICdmb28uaCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKDMsIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnZlcmJvc2VfbGV2ZWwpCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJ10sIHt9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLXZlcmJv
c2U9NScsICdmb28uY3BwJ10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNSwgY3Bw
X3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVyYm9zZV9sZXZlbCkKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfc3R5bGUucGFyc2VfYXJndW1lbnRzLCBbJy0tdj1mJywgJ2Zvby5jcHAnXSkKKworICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9ZW1h
Y3MnLCAnZm9vLmNwcCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbWFjcycs
IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCisgICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1vdXRwdXQ9dnM3JywgJ2Zvby5o
J10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3ZzNycsIGNwcF9zdHlsZS5fY3Bw
X3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTeXN0ZW1FeGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBh
cnNlX2FyZ3VtZW50cywgWyctLW91dHB1dD1ibGFoJywgJ2Zvby5jcHAnXSkKKworICAgICAgICAg
ICAgZmlsdCA9ICctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCcKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5oJ10sIHt9KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNwcF9zdHlsZS5wYXJzZV9hcmd1bWVudHMoWyctLWZpbHRlcj0nK2ZpbHQsICdm
b28uaCddKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnLScsICcrd2hpdGVzcGFj
ZScsICctd2hpdGVzcGFjZS9pbmRlbnQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMpCisKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnLCAnZm9vLmgnXSwge30pLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cyhbJ2Zvby5jcHAnLCAnZm9v
LmgnXSkpCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyct
LWZvbyc6ICcnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFy
c2VfYXJndW1lbnRzKFsnLS1mb28nLCAnZm9vLmNwcCddLCBbJ2ZvbyddKSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6ICdiYXInfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnLS1m
b289YmFyJywgJ2Zvby5jcHAnXSwgWydmb289J10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoKFsnZm9vLmNwcCddLCB7fSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
cHBfc3R5bGUucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCddLCBbJ2Zvbz0nXSkpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwX3N0eWxlLnBhcnNlX2FyZ3VtZW50cywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnLS1mb290eXBvPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKQorICAgICAg
ICBmaW5hbGx5OgorICAgICAgICAgICAgY3BwX3N0eWxlLl9VU0FHRSA9IG9sZF91c2FnZQorICAg
ICAgICAgICAgY3BwX3N0eWxlLl9FUlJPUl9DQVRFR09SSUVTID0gb2xkX2Vycm9yX2NhdGVnb3Jp
ZXMKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLm91dHB1dF9mb3JtYXQg
PSBvbGRfb3V0cHV0X2Zvcm1hdAorICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3Rh
dGUudmVyYm9zZV9sZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCisgICAgICAgICAgICBjcHBfc3R5
bGUuX2NwcF9zdHlsZV9zdGF0ZS5maWx0ZXJzID0gb2xkX2ZpbHRlcnMKKworICAgIGRlZiB0ZXN0
X2ZpbHRlcihzZWxmKToKKyAgICAgICAgb2xkX2ZpbHRlcnMgPSBjcHBfc3R5bGUuX2NwcF9zdHls
ZV9zdGF0ZS5maWx0ZXJzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3Bw
X3N0eWxlX3N0YXRlLnNldF9maWx0ZXJzKCctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVu
dCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgICAgICcvLyBI
ZWxsbyB0aGVyZSAnLAorICAgICAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4g
IENvbnNpZGVyIGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nCisgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvZW5kX29mX2xpbmVdIFs0XScpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdpbnQgYSA9IChpbnQpMS4wOycsICcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnIHdlaXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycwor
CisgICAgZGVmIHRlc3RfZGVmYXVsdF9maWx0ZXIoc2VsZik6CisgICAgICAgIGRlZmF1bHRfZmls
dGVycyA9IGNwcF9zdHlsZS5fREVGQVVMVF9GSUxURVJTCisgICAgICAgIG9sZF9maWx0ZXJzID0g
Y3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUuZmlsdGVycworICAgICAgICBjcHBfc3R5bGUuX0RF
RkFVTFRfRklMVEVSUyA9IFsgJy13aGl0ZXNwYWNlJyBdCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICMgUmVzZXQgZmlsdGVycworICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3Rh
dGUuc2V0X2ZpbHRlcnMoJycpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLyBIZWxs
byB0aGVyZSAnLCAnJykKKyAgICAgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxlX3N0YXRlLnNl
dF9maWx0ZXJzKCcrd2hpdGVzcGFjZS9lbmRfb2ZfbGluZScpCisgICAgICAgICAgICBzZWxmLmFz
c2VydF9saW50KAorICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAorICAgICAgICAg
ICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNl
IGV4dHJhIHNwYWNlcy4nCisgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xp
bmVdIFs0XScpCisgICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgd2VpcmQgb3BlbmluZyBz
cGFjZScsICcnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY3BwX3N0eWxlLl9jcHBf
c3R5bGVfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCisgICAgICAgICAgICBjcHBfc3R5bGUu
X0RFRkFVTFRfRklMVEVSUyA9IGRlZmF1bHRfZmlsdGVycworCisgICAgZGVmIHRlc3RfdW5uYW1l
ZF9uYW1lc3BhY2VzX2luX2hlYWRlcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1
YWdlX3J1bGVzX2NoZWNrKAorICAgICAgICAgICAgJ2Zvby5oJywgJ25hbWVzcGFjZSB7JywKKyAg
ICAgICAgICAgICdEbyBub3QgdXNlIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFkZXIgZmlsZXMu
ICBTZWUnCisgICAgICAgICAgICAnIGh0dHA6Ly9nb29nbGUtc3R5bGVndWlkZS5nb29nbGVjb2Rl
LmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMnCisgICAgICAgICAgICAnIGZv
ciBtb3JlIGluZm9ybWF0aW9uLiAgW2J1aWxkL25hbWVzcGFjZXNdIFs0XScpCisgICAgICAgICMg
bmFtZXNwYWNlIHJlZ2lzdHJhdGlvbiBtYWNyb3MgYXJlIE9LLgorICAgICAgICBzZWxmLmFzc2Vy
dF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCAnbmFtZXNwYWNlIHsgIFxcJywgJycpCisg
ICAgICAgICMgbmFtZWQgbmFtZXNwYWNlcyBhcmUgT0suCisgICAgICAgIHNlbGYuYXNzZXJ0X2xh
bmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsICduYW1lc3BhY2UgZm9vIHsnLCAnJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVzcGFjZSBm
b29uYW1lc3BhY2UgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19j
aGVjaygnZm9vLmNwcCcsICduYW1lc3BhY2UgeycsICcnKQorICAgICAgICBzZWxmLmFzc2VydF9s
YW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsICduYW1lc3BhY2UgZm9vIHsnLCAnJykKKwor
ICAgIGRlZiB0ZXN0X2J1aWxkX2NsYXNzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB0aGUg
bGludGVyIGNhbiBwYXJzZSB0byB0aGUgZW5kIG9mIGNsYXNzIGRlZmluaXRpb25zLAorICAgICAg
ICAjIGFuZCB0aGF0IGl0IHdpbGwgcmVwb3J0IHdoZW4gaXQgY2FuJ3QuCisgICAgICAgICMgVXNl
IG11bHRpLWxpbmUgbGludGVyIGJlY2F1c2UgaXQgcGVyZm9ybXMgdGhlIENsYXNzU3RhdGUgY2hl
Y2suCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdj
bGFzcyBGb28geycsCisgICAgICAgICAgICAnRmFpbGVkIHRvIGZpbmQgY29tcGxldGUgZGVjbGFy
YXRpb24gb2YgY2xhc3MgRm9vJworICAgICAgICAgICAgJyAgW2J1aWxkL2NsYXNzXSBbNV0nKQor
ICAgICAgICAjIERvbid0IHdhcm4gb24gZm9yd2FyZCBkZWNsYXJhdGlvbnMgb2YgdmFyaW91cyB0
eXBlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
J2NsYXNzIEZvbzsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ3N0cnVjdCBGb28qCisgICAgICAgICAgICAgICAg
IGZvbyA9IE5ld0ZvbygpOycnJywKKyAgICAgICAgICAgICcnKQorICAgICAgICAjIEhlcmUgaXMg
YW4gZXhhbXBsZSB3aGVyZSB0aGUgbGludGVyIGdldHMgY29uZnVzZWQsIGV2ZW4gdGhvdWdoCisg
ICAgICAgICMgdGhlIGNvZGUgZG9lc24ndCB2aW9sYXRlIHRoZSBzdHlsZSBndWlkZS4KKyAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9v
CisgICAgICAgICAgICAjaWZkZWYgREVSSVZFX0ZST01fR09PCisgICAgICAgICAgICAgIDogcHVi
bGljIEdvbyB7CisgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICA6IHB1YmxpYyBIb28g
eworICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAg
J0ZhaWxlZCB0byBmaW5kIGNvbXBsZXRlIGRlY2xhcmF0aW9uIG9mIGNsYXNzIEZvbycKKyAgICAg
ICAgICAgICcgIFtidWlsZC9jbGFzc10gWzVdJykKKworICAgIGRlZiB0ZXN0X2J1aWxkX2VuZF9j
b21tZW50KHNlbGYpOgorICAgICAgICAjIFRoZSBjcm9zc3Rvb2wgY29tcGlsZXIgd2UgY3VycmVu
dGx5IHVzZSB3aWxsIGZhaWwgdG8gY29tcGlsZSB0aGUKKyAgICAgICAgIyBjb2RlIGluIHRoaXMg
dGVzdCwgc28gd2UgbWlnaHQgY29uc2lkZXIgcmVtb3ZpbmcgdGhlIGxpbnQgY2hlY2suCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyNlbmRpZiBOb3QgYSBjb21tZW50JywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnVW5jb21tZW50ZWQgdGV4dCBhZnRlciAjZW5kaWYgaXMgbm9uLXN0YW5k
YXJkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICBVc2UgYSBjb21tZW50LicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvZW5kaWZfY29tbWVudF0gWzVdJykKKworICAg
IGRlZiB0ZXN0X2J1aWxkX2ZvcndhcmRfZGVjbChzZWxmKToKKyAgICAgICAgIyBUaGUgY3Jvc3N0
b29sIGNvbXBpbGVyIHdlIGN1cnJlbnRseSB1c2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgdGhlCisg
ICAgICAgICMgY29kZSBpbiB0aGlzIHRlc3QsIHNvIHdlIG1pZ2h0IGNvbnNpZGVyIHJlbW92aW5n
IHRoZSBsaW50IGNoZWNrLgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjbGFzcyBGb286Okdv
bzsnLAorICAgICAgICAgICAgICAgICAgICAgICAgICdJbm5lci1zdHlsZSBmb3J3YXJkIGRlY2xh
cmF0aW9ucyBhcmUgaW52YWxpZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgUmVtb3Zl
IHRoaXMgbGluZS4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2ZvcndhcmRf
ZGVjbF0gWzVdJykKKworICAgIGRlZiB0ZXN0X2J1aWxkX2hlYWRlcl9ndWFyZChzZWxmKToKKyAg
ICAgICAgZmlsZV9wYXRoID0gJ215ZGlyL2Zvby5oJworCisgICAgICAgICMgV2UgY2FuJ3QgcmVs
eSBvbiBvdXIgaW50ZXJuYWwgc3R1ZmYgdG8gZ2V0IGEgc2FuZSBwYXRoIG9uIHRoZSBvcGVuIHNv
dXJjZQorICAgICAgICAjIHNpZGUgb2YgdGhpbmdzLCBzbyBqdXN0IHBhcnNlIG91dCB0aGUgc3Vn
Z2VzdGVkIGhlYWRlciBndWFyZC4gVGhpcworICAgICAgICAjIGRvZXNuJ3QgYWxsb3cgdXMgdG8g
dGVzdCB0aGUgc3VnZ2VzdGVkIGhlYWRlciBndWFyZCwgYnV0IGl0IGRvZXMgbGV0IHVzCisgICAg
ICAgICMgdGVzdCBhbGwgdGhlIG90aGVyIGhlYWRlciB0ZXN0cy4KKyAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUu
cHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCisg
ICAgICAgIGV4cGVjdGVkX2d1YXJkID0gJycKKyAgICAgICAgbWF0Y2hlciA9IHJlLmNvbXBpbGUo
CisgICAgICAgICAgICAnTm8gXCNpZm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5kXCwgc3VnZ2VzdGVk
IENQUCB2YXJpYWJsZSBpc1w6IChbQS1aXzAtOV0rKSAnKQorICAgICAgICBmb3IgZXJyb3IgaW4g
ZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6CisgICAgICAgICAgICBtYXRjaGVzID0gbWF0
Y2hlci5tYXRjaChlcnJvcikKKyAgICAgICAgICAgIGlmIG1hdGNoZXM6CisgICAgICAgICAgICAg
ICAgZXhwZWN0ZWRfZ3VhcmQgPSBtYXRjaGVzLmdyb3VwKDEpCisgICAgICAgICAgICAgICAgYnJl
YWsKKworICAgICAgICAjIE1ha2Ugc3VyZSB3ZSBleHRyYWN0ZWQgc29tZXRoaW5nIGZvciBvdXIg
aGVhZGVyIGd1YXJkLgorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGV4cGVjdGVkX2d1YXJk
LCAnJykKKworICAgICAgICAjIFdyb25nIGd1YXJkCisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3Nf
ZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWycjaWZuZGVmIEZPT19IJywgJyNkZWZpbmUgRk9PX0gnXSwgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAgICAgICAg
ICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAn
I2lmbmRlZiBoZWFkZXIgZ3VhcmQgaGFzIHdyb25nIHN0eWxlLCBwbGVhc2UgdXNlOiAlcycKKyAg
ICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3Vh
cmQpLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCisKKyAgICAg
ICAgIyBObyBkZWZpbmUKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Io
c2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9w
YXRoLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYg
JXMnICUgZXhwZWN0ZWRfZ3VhcmRdLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5y
ZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRlciBn
dWFyZCBmb3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnCisgICAgICAgICAgICAg
ICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQorCisgICAgICAgICMgTWlzbWF0
Y2hlZCBkZWZpbmUKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2Vs
Zi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRo
LCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMn
ICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNkZWZpbmUgRk9PX0gnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy
cm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAx
LAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCisgICAg
ICAgICAgICAgICAgJ05vICNpZm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5kLCBzdWdnZXN0ZWQgQ1BQ
IHZhcmlhYmxlIGlzOiAlcycKKyAgICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJk
XSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJl
c3VsdF9saXN0KCkpCisKKyAgICAgICAgIyBObyBlbmRpZgorICAgICAgICBlcnJvcl9jb2xsZWN0
b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9j
ZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlcycgJSBleHBlY3RlZF9ndWFyZF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9y
X2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAgICAgICAgICcjZW5kaWYg
bGluZSBzaG91bGQgYmUgIiNlbmRpZiAgLy8gJXMiJworICAgICAgICAgICAgICAgICcgIFtidWls
ZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKworICAgICAgICAjIENvbW1lbnRsZXNzIGVuZGlm
CisgICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykK
KyAgICAgICAgY3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVzJyAlIGV4cGVjdGVk
X2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVz
JyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjZW5kaWYnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAxLAorICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCisgICAgICAgICAg
ICAgICAgJyNlbmRpZiBsaW5lIHNob3VsZCBiZSAiI2VuZGlmICAvLyAlcyInCisgICAgICAgICAg
ICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQorCisgICAgICAgICMgQ29t
bWVudGxlc3MgZW5kaWYgZm9yIG9sZC1zdHlsZSBndWFyZAorICAgICAgICBlcnJvcl9jb2xsZWN0
b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9j
ZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0ZWRfZ3VhcmQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYnXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yLnJlc3VsdF9saXN0KCkuY291bnQoCisgICAgICAgICAgICAgICAgJyNlbmRpZiBsaW5lIHNo
b3VsZCBiZSAiI2VuZGlmICAvLyAlcyInCisgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRl
cl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpKQorCisgICAgICAgICMgTm8gaGVhZGVyIGd1YXJkIGVycm9ycwor
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCisg
ICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9n
dWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlcycg
JSBleHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2VuZGlmICAvLyAlcycgJSBleHBlY3RlZF9ndWFyZF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGZvciBsaW5lIGluIGVycm9y
X2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpOgorICAgICAgICAgICAgaWYgbGluZS5maW5kKCdidWls
ZC9oZWFkZXJfZ3VhcmQnKSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhw
ZWN0ZWQgZXJyb3I6ICVzJyAlIGxpbmUpCisKKyAgICAgICAgIyBObyBoZWFkZXIgZ3VhcmQgZXJy
b3JzIGZvciBvbGQtc3R5bGUgZ3VhcmQKKyAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JD
b2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQorICAgICAgICBjcHBfc3R5bGUucHJvY2Vzc19maWxlX2Rh
dGEoZmlsZV9wYXRoLCAnaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
JyNpZm5kZWYgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjZGVmaW5lICVzXycgJSBleHBlY3RlZF9ndWFyZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3Vh
cmRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
KQorICAgICAgICBmb3IgbGluZSBpbiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKKyAg
ICAgICAgICAgIGlmIGxpbmUuZmluZCgnYnVpbGQvaGVhZGVyX2d1YXJkJykgIT0gLTE6CisgICAg
ICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGVycm9yOiAlcycgJSBsaW5lKQorCisg
ICAgICAgIG9sZF92ZXJib3NlX2xldmVsID0gY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3RhdGUudmVy
Ym9zZV9sZXZlbAorICAgICAgICB0cnk6CisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHls
ZV9zdGF0ZS52ZXJib3NlX2xldmVsID0gMAorICAgICAgICAgICAgIyBXYXJuIG9uIG9sZC1zdHls
ZSBndWFyZCBpZiB2ZXJib3NpdHkgaXMgMC4KKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvciA9
IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgICAgIGNwcF9zdHlsZS5wcm9j
ZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbJyNpZm5kZWYgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2RlZmluZSAlc18nICUgZXhwZWN0ZWRf
Z3VhcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYg
IC8vICVzXycgJSBleHBlY3RlZF9ndWFyZF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoCisgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3Iu
cmVzdWx0X2xpc3QoKS5jb3VudCgKKyAgICAgICAgICAgICAgICAgICAgJyNpZm5kZWYgaGVhZGVy
IGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnCisgICAgICAgICAgICAgICAg
ICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFswXScgJSBleHBlY3RlZF9ndWFyZCksCisgICAg
ICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCisgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICBjcHBfc3R5bGUuX2NwcF9zdHlsZV9zdGF0ZS52ZXJib3NlX2xldmVs
ID0gb2xkX3ZlcmJvc2VfbGV2ZWwKKworICAgICAgICAjIENvbXBsZXRlbHkgaW5jb3JyZWN0IGhl
YWRlciBndWFyZAorICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxm
LmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgs
ICdoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiBGT08n
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lIEZPTycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRpZiAgLy8gRk9PJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAgICAgICAgICAgIGVycm9y
X2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAorICAgICAgICAgICAgICAgICcjaWZuZGVm
IGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5bGUsIHBsZWFzZSB1c2U6ICVzJworICAgICAgICAg
ICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRdIFs1XScgJSBleHBlY3RlZF9ndWFyZCksCisg
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoCisgICAgICAgICAgICAxLAorICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9y
LnJlc3VsdF9saXN0KCkuY291bnQoCisgICAgICAgICAgICAgICAgJyNlbmRpZiBsaW5lIHNob3Vs
ZCBiZSAiI2VuZGlmICAvLyAlcyInCisgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9n
dWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKKyAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rv
ci5yZXN1bHRfbGlzdCgpKQorCisgICAgZGVmIHRlc3RfYnVpbGRfcHJpbnRmX2Zvcm1hdChzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgIHIncHJpbnRmKCJcJSVk
IiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJSwgWywgKCwgYW5kIHsgYXJlIHVuZGVmaW5lZCBj
aGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJworICAgICAgICAgICAgJyAgW2J1aWxk
L3ByaW50Zl9mb3JtYXRdIFszXScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAg
ICAgICAgIHInc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIlxbJWQiLCB2YWx1ZSk7
JywKKyAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBl
c2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCisgICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zv
cm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidm
cHJpbnRmKGZpbGUsICJcKCVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJSwgWywgKCwgYW5k
IHsgYXJlIHVuZGVmaW5lZCBjaGFyYWN0ZXIgZXNjYXBlcy4gIFVuZXNjYXBlIHRoZW0uJworICAg
ICAgICAgICAgJyAgW2J1aWxkL3ByaW50Zl9mb3JtYXRdIFszXScpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKKyAgICAgICAgICAgIHIndnNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZl
ciksICJcXFx7JWQiLCBhcCk7JywKKyAgICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5k
ZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4nCisgICAgICAgICAgICAn
ICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICAjIERvbid0IHdhcm4gaWYg
ZG91YmxlLXNsYXNoIHByZWNlZGVzIHRoZSBzeW1ib2wKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dChyJ3ByaW50ZigiXFwlJSVkIiwgdmFsdWUpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
JycpCisKKyAgICBkZWYgdGVzdF9ydW50aW1lX3ByaW50Zl9mb3JtYXQoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICByJ2ZwcmludGYoZmlsZSwgIiVxIiwgdmFs
dWUpOycsCisgICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4g
IFVzZSAlbGwgaW5zdGVhZC4nCisgICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0
XSBbM10nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICByJ2Fwcmlu
dGYoZmlsZSwgIlRoZSBudW1iZXIgaXMgJTEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVx
IGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAg
ICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxm
LmFzc2VydF9saW50KAorICAgICAgICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMi
ICIlLTEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlz
IGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUv
cHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAg
ICAgICAgcidwcmludGYoZmlsZSwgIlRoZSBudW1iZXIgaXMiICIlKzEycSIsIHZhbHVlKTsnLAor
ICAgICAgICAgICAgJyVxIGluIGZvcm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxs
IGluc3RlYWQuJworICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykK
KworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgcidwcmludGYoZmlsZSwg
IlRoZSBudW1iZXIgaXMiICIlIDEycSIsIHZhbHVlKTsnLAorICAgICAgICAgICAgJyVxIGluIGZv
cm1hdCBzdHJpbmdzIGlzIGRlcHJlY2F0ZWQuICBVc2UgJWxsIGluc3RlYWQuJworICAgICAgICAg
ICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzNdJykKKworICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAorICAgICAgICAgICAgcidzbnByaW50ZihmaWxlLCAiTmV2ZXIgbWl4ICVkIGFuZCAl
MSRkIHBhcm1hZXRlcnMhIiwgdmFsdWUpOycsCisgICAgICAgICAgICAnJU4kIGZvcm1hdHMgYXJl
IHVuY29udmVudGlvbmFsLiAgVHJ5IHJld3JpdGluZyB0byBhdm9pZCB0aGVtLicKKyAgICAgICAg
ICAgICcgIFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFsyXScpCisKKyAgICBkZWYgYXNzZXJ0X2xp
bnRMb2dDb2RlT25FcnJvcihzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlKToKKyAgICAgICAg
IyBTcGVjaWFsIGFzc2VydF9saW50IHdoaWNoIGxvZ3MgdGhlIGlucHV0IGNvZGUgb24gZXJyb3Iu
CisgICAgICAgIHJlc3VsdCA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUsICdm
b28uY3BwJykKKyAgICAgICAgaWYgcmVzdWx0ICE9IGV4cGVjdGVkX21lc3NhZ2U6CisgICAgICAg
ICAgICBzZWxmLmZhaWwoJ0ZvciBjb2RlOiAiJXMiXG5Hb3Q6ICIlcyJcbkV4cGVjdGVkOiAiJXMi
JworICAgICAgICAgICAgICAgICAgICAgICUgKGNvZGUsIHJlc3VsdCwgZXhwZWN0ZWRfbWVzc2Fn
ZSkpCisKKyAgICBkZWYgdGVzdF9idWlsZF9zdG9yYWdlX2NsYXNzKHNlbGYpOgorICAgICAgICBx
dWFsaWZpZXJzID0gW05vbmUsICdjb25zdCcsICd2b2xhdGlsZSddCisgICAgICAgIHNpZ25zID0g
W05vbmUsICdzaWduZWQnLCAndW5zaWduZWQnXQorICAgICAgICB0eXBlcyA9IFsndm9pZCcsICdj
aGFyJywgJ2ludCcsICdmbG9hdCcsICdkb3VibGUnLAorICAgICAgICAgICAgICAgICAnc2NoYXIn
LCAnaW50OCcsICd1aW50OCcsICdpbnQxNicsICd1aW50MTYnLAorICAgICAgICAgICAgICAgICAn
aW50MzInLCAndWludDMyJywgJ2ludDY0JywgJ3VpbnQ2NCddCisgICAgICAgIHN0b3JhZ2VfY2xh
c3NlcyA9IFsnYXV0bycsICdleHRlcm4nLCAncmVnaXN0ZXInLCAnc3RhdGljJywgJ3R5cGVkZWYn
XQorCisgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSA9ICgKKyAgICAg
ICAgICAgICdTdG9yYWdlIGNsYXNzIChzdGF0aWMsIGV4dGVybiwgdHlwZWRlZiwgZXRjKSBzaG91
bGQgYmUgZmlyc3QuJworICAgICAgICAgICAgJyAgW2J1aWxkL3N0b3JhZ2VfY2xhc3NdIFs1XScp
CisKKyAgICAgICAgIyBTb21lIGV4cGxpY2l0IGNhc2VzLiBMZWdhbCBpbiBDKyssIGRlcHJlY2F0
ZWQgaW4gQzk5LgorICAgICAgICBzZWxmLmFzc2VydF9saW50KCdjb25zdCBpbnQgc3RhdGljIGZv
byA9IDU7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vy
cm9yX21lc3NhZ2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2hhciBzdGF0aWMgZm9v
OycsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9t
ZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2RvdWJsZSBjb25zdCBzdGF0aWMg
Zm9vID0gMi4wOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFz
c19lcnJvcl9tZXNzYWdlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3VpbnQ2NCB0eXBl
ZGVmIHVuc2lnbmVkX2xvbmdfbG9uZzsnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
X3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQgcmVnaXN0ZXIgZm9vID0gMDsnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
X3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKKworICAgICAgICAjIFNpbmNlIHRoZXJlIGFy
ZSBhIHZlcnkgbGFyZ2UgbnVtYmVyIG9mIHBvc3NpYmlsaXRpZXMsIHJhbmRvbWx5CisgICAgICAg
ICMgY29uc3RydWN0IGRlY2xhcmF0aW9ucy4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUg
ZGVjbGFyYXRpb24gaXMgbG9nZ2VkIGlmIHRoZXJlJ3MgYW4gZXJyb3IuCisgICAgICAgICMgU2Vl
ZCBnZW5lcmF0b3Igd2l0aCBhbiBpbnRlZ2VyIGZvciBhYnNvbHV0ZSByZXByb2R1Y2liaWxpdHku
CisgICAgICAgIHJhbmRvbS5zZWVkKDI1KQorICAgICAgICBmb3IgdW51c2VkX2kgaW4gcmFuZ2Uo
MTApOgorICAgICAgICAgICAgIyBCdWlsZCB1cCByYW5kb20gbGlzdCBvZiBub24tc3RvcmFnZS1j
bGFzcyBkZWNsYXJhdGlvbiBzcGVjcy4KKyAgICAgICAgICAgIG90aGVyX2RlY2xfc3BlY3MgPSBb
cmFuZG9tLmNob2ljZShxdWFsaWZpZXJzKSwgcmFuZG9tLmNob2ljZShzaWducyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbS5jaG9pY2UodHlwZXMpXQorICAgICAgICAg
ICAgIyByZW1vdmUgTm9uZQorICAgICAgICAgICAgb3RoZXJfZGVjbF9zcGVjcyA9IGZpbHRlcihs
YW1iZGEgeDogeCBpcyBub3QgTm9uZSwgb3RoZXJfZGVjbF9zcGVjcykKKworICAgICAgICAgICAg
IyBzaHVmZmxlCisgICAgICAgICAgICByYW5kb20uc2h1ZmZsZShvdGhlcl9kZWNsX3NwZWNzKQor
CisgICAgICAgICAgICAjIGluc2VydCBzdG9yYWdlIGNsYXNzIGFmdGVyIHRoZSBmaXJzdAorICAg
ICAgICAgICAgc3RvcmFnZV9jbGFzcyA9IHJhbmRvbS5jaG9pY2Uoc3RvcmFnZV9jbGFzc2VzKQor
ICAgICAgICAgICAgaW5zZXJ0aW9uX3BvaW50ID0gcmFuZG9tLnJhbmRpbnQoMSwgbGVuKG90aGVy
X2RlY2xfc3BlY3MpKQorICAgICAgICAgICAgZGVjbF9zcGVjcyA9IChvdGhlcl9kZWNsX3NwZWNz
WzA6aW5zZXJ0aW9uX3BvaW50XQorICAgICAgICAgICAgICAgICAgICAgICAgICArIFtzdG9yYWdl
X2NsYXNzXQorICAgICAgICAgICAgICAgICAgICAgICAgICArIG90aGVyX2RlY2xfc3BlY3NbaW5z
ZXJ0aW9uX3BvaW50Ol0pCisKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnRMb2dDb2RlT25F
cnJvcigKKyAgICAgICAgICAgICAgICAnICcuam9pbihkZWNsX3NwZWNzKSArICc7JywKKyAgICAg
ICAgICAgICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCisKKyAgICAgICAg
ICAgICMgYnV0IG5vIGVycm9yIGlmIHN0b3JhZ2UgY2xhc3MgaXMgZmlyc3QKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnRMb2dDb2RlT25FcnJvcigKKyAgICAgICAgICAgICAgICBzdG9yYWdl
X2NsYXNzICsgJyAnICsgJyAnLmpvaW4ob3RoZXJfZGVjbF9zcGVjcyksCisgICAgICAgICAgICAg
ICAgJycpCisKKyAgICBkZWYgdGVzdF9sZWdhbF9jb3B5cmlnaHQoc2VsZik6CisgICAgICAgIGxl
Z2FsX2NvcHlyaWdodF9tZXNzYWdlID0gKAorICAgICAgICAgICAgJ05vIGNvcHlyaWdodCBtZXNz
YWdlIGZvdW5kLiAgJworICAgICAgICAgICAgJ1lvdSBzaG91bGQgaGF2ZSBhIGxpbmU6ICJDb3B5
cmlnaHQgW3llYXJdIDxDb3B5cmlnaHQgT3duZXI+IicKKyAgICAgICAgICAgICcgIFtsZWdhbC9j
b3B5cmlnaHRdIFs1XScpCisKKyAgICAgICAgY29weXJpZ2h0X2xpbmUgPSAnLy8gQ29weXJpZ2h0
IDIwMDggR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4nCisKKyAgICAgICAgZmlsZV9w
YXRoID0gJ215ZGlyL2dvb2dsZWNsaWVudC9mb28uY3BwJworCisgICAgICAgICMgVGhlcmUgc2hv
dWxkIGJlIGEgY29weXJpZ2h0IG1lc3NhZ2UgaW4gdGhlIGZpcnN0IDEwIGxpbmVzCisgICAgICAg
IGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAg
Y3BwX3N0eWxlLnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2NwcCcsIFtdLCBlcnJvcl9j
b2xsZWN0b3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorICAgICAgICAgICAgMSwKKyAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KGxlZ2FsX2NvcHly
aWdodF9tZXNzYWdlKSkKKworICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgKKyAg
ICAgICAgICAgIGZpbGVfcGF0aCwgJ2NwcCcsCisgICAgICAgICAgICBbJycgZm9yIHVudXNlZF9p
IGluIHJhbmdlKDEwKV0gKyBbY29weXJpZ2h0X2xpbmVdLAorICAgICAgICAgICAgZXJyb3JfY29s
bGVjdG9yKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKyAgICAgICAgICAgIDEsCisgICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChsZWdhbF9jb3B5cmln
aHRfbWVzc2FnZSkpCisKKyAgICAgICAgIyBUZXN0IHRoYXQgd2FybmluZyBpc24ndCBpc3N1ZWQg
aWYgQ29weXJpZ2h0IGxpbmUgYXBwZWFycyBlYXJseSBlbm91Z2guCisgICAgICAgIGVycm9yX2Nv
bGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKKyAgICAgICAgY3BwX3N0eWxl
LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2NwcCcsIFtjb3B5cmlnaHRfbGluZV0sIGVy
cm9yX2NvbGxlY3RvcikKKyAgICAgICAgZm9yIG1lc3NhZ2UgaW4gZXJyb3JfY29sbGVjdG9yLnJl
c3VsdF9saXN0KCk6CisgICAgICAgICAgICBpZiBtZXNzYWdlLmZpbmQoJ2xlZ2FsL2NvcHlyaWdo
dCcpICE9IC0xOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjog
JXMnICUgbWVzc2FnZSkKKworICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCisgICAgICAgIGNwcF9zdHlsZS5wcm9jZXNzX2ZpbGVfZGF0YSgKKyAg
ICAgICAgICAgIGZpbGVfcGF0aCwgJ2NwcCcsCisgICAgICAgICAgICBbJycgZm9yIHVudXNlZF9p
IGluIHJhbmdlKDkpXSArIFtjb3B5cmlnaHRfbGluZV0sCisgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCisgICAgICAgIGZvciBtZXNzYWdlIGluIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlz
dCgpOgorICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5kKCdsZWdhbC9jb3B5cmlnaHQnKSAhPSAt
MToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQgZXJyb3I6ICVzJyAlIG1l
c3NhZ2UpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2luY3JlbWVudChzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnKmNvdW50Kys7JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
Q2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVlIChvciB1bnVzZWQgdmFsdWUgb2YgJwor
ICAgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRvciopLiAgW3J1bnRpbWUvaW52YWxpZF9p
bmNyZW1lbnRdIFs1XScpCisKK2NsYXNzIENsZWFuc2VkTGluZXNUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICBsaW5lcyA9IFsnTGluZSAx
JywKKyAgICAgICAgICAgICAgICAgJ0xpbmUgMicsCisgICAgICAgICAgICAgICAgICdMaW5lIDMg
Ly8gQ29tbWVudCB0ZXN0JywKKyAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9vIiddCisKKyAg
ICAgICAgY2xlYW5fbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobGluZXMsIGNsZWFuX2xpbmVzLnJhd19saW5lcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoNCwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCkpCisKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoWydMaW5lIDEnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0xpbmUgMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnTGluZSAzICcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnTGluZSA0ICJmb28iJ10sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsZWFuX2xpbmVzLmxpbmVzKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KFsnTGluZSAxJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDInLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgMyAnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0xpbmUgNCAiIiddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhbl9saW5lcy5l
bGlkZWQpCisKKyAgICBkZWYgdGVzdF9pbml0X2VtcHR5KHNlbGYpOgorICAgICAgICBjbGVhbl9s
aW5lcyA9IGNwcF9zdHlsZS5DbGVhbnNlZExpbmVzKFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhbXSwgY2xlYW5fbGluZXMucmF3X2xpbmVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygwLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSkKKworICAgIGRlZiB0ZXN0X2NvbGxhcHNlX3N0
cmluZ3Moc2VsZik6CisgICAgICAgIGNvbGxhcHNlID0gY3BwX3N0eWxlLkNsZWFuc2VkTGluZXMu
Y29sbGFwc2Vfc3RyaW5ncworICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBz
ZSgnIiInKSkgICAgICAgICAgICAgIyAiIiAgICAgKGVtcHR5KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygnIiIiJywgY29sbGFwc2UoJyIiIicpKSAgICAgICAgICAgIyAiIiIgICAgKGJhZCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJ4eXoiJykpICAgICAg
ICAgICMgInh5eiIgIChzdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCciIicsIGNv
bGxhcHNlKCciXFxcIiInKSkgICAgICAgICAjICJcIiIgICAoc3RyaW5nKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlwnIicpKSAgICAgICAgICAgIyAiJyIgICAg
KHN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyJcIicsIGNvbGxhcHNlKCciXCIn
KSkgICAgICAgICAgICMgIlwiICAgIChiYWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCci
IicsIGNvbGxhcHNlKCciXFxcXCInKSkgICAgICAgICAjICJcXCIgICAoc3RyaW5nKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygnIicsIGNvbGxhcHNlKCciXFxcXFxcIicpKSAgICAgICAgIyAi
XFxcIiAgKGJhZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJc
XFxcXFxcXCInKSkgICAgICMgIlxcXFwiIChzdHJpbmcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdcJycpKSAgICAgICAgICMgJycgICAgIChlbXB0eSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdhXCcnKSkgICAg
ICAgICMgJ2EnICAgIChjaGFyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnXCdcJycsIGNv
bGxhcHNlKCdcJ1xcXCdcJycpKSAgICAgIyAnXCcnICAgKGNoYXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCdcJycsIGNvbGxhcHNlKCdcJ1xcXCcnKSkgICAgICAgICAjICdcJyAgICAoYmFk
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xcMDEyJykpICAgICAg
ICAgICAgIyAnXDAxMicgKGNoYXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBjb2xs
YXBzZSgnXFx4ZkYwJykpICAgICAgICAgICAjICdceGZGMCcgKGNoYXIpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCcnLCBjb2xsYXBzZSgnXFxuJykpICAgICAgICAgICAgICAjICdcbicgKGNo
YXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcIycsIGNvbGxhcHNlKCdcXCMnKSkgICAg
ICAgICAgICAjICdcIycgKGJhZCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnU3RyaW5n
UmVwbGFjZShib2R5LCAiIiwgIiIpOycsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxh
cHNlKCdTdHJpbmdSZXBsYWNlKGJvZHksICJcXFxcIiwgIlxcXFxcXFxcIik7JykpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnICIiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29sbGFwc2UoJ1wnIlwnICJmb28iJykpCisKKworY2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChD
cHBTdHlsZVRlc3RCYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuaW5j
bHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKKworICAgICAgICAjIENoZWF0
IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmlsZUluZm8gY2xhc3MuCisgICAgICAgIHNlbGYu
b3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRoLmFic3BhdGgKKyAgICAgICAgb3MucGF0aC5h
YnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1ZQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgor
ICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxmLm9zX3BhdGhfYWJzcGF0aF9vcmlnCisKKyAg
ICBkZWYgdGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6CisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdm
b28vZm9vLWlubC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9iYXIvZm9vJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVz
KCdmb28vYmFyL2Zvb19pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9v
JywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jcHAnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ2Zvby9mb29f
dW51c3VhbGludGVybmFsLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdfdGVz
dC5jcHAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkK
KworCitjbGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgorICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwX3N0eWxlLl9J
bmNsdWRlU3RhdGUoKQorCisgICAgICAgICMgQ2hlYXQgb3MucGF0aC5hYnNwYXRoIGNhbGxlZCBp
biBGaWxlSW5mbyBjbGFzcy4KKyAgICAgICAgc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZyA9IG9z
LnBhdGguYWJzcGF0aAorICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBsYW1iZGEgdmFsdWU6IHZh
bHVlCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIG9zLnBhdGguYWJzcGF0aCA9
IHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcKKworICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5j
bHVkZV9vcmRlcl9fbm9fY29uZmlnKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWFkZXIgZmlsZSBzaG91bGQgbm90IGNvbnRhaW4gV2ViQ29yZSBjb25maWcuaC4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXIoY3BwX3N0eWxlLl9DT05GSUdfSEVBREVSLCBUcnVlKSkKKworICAgIGRlZiB0ZXN0X2No
ZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fbm9fc2VsZihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnSGVhZGVyIGZpbGUgc2hvdWxkIG5vdCBjb250YWluIGl0c2VsZi4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXIoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURFUiwgVHJ1ZSkpCisgICAgICAgICMgVGVzdCBh
Y3R1YWwgY29kZSB0byBtYWtlIHN1cmUgdGhhdCBoZWFkZXIgdHlwZXMgYXJlIGNvcnJlY3RseSBh
c3NpZ25lZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ0Zvby5o
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJG
b28uaCJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIZWFk
ZXIgZmlsZSBzaG91bGQgbm90IGNvbnRhaW4gaXRzZWxmLiBTaG91bGQgYmU6IGFscGhhYmV0aWNh
bGx5IHNvcnRlZC4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFn
ZV9ydWxlc19jaGVjaygnRm9vQmFyLmgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgIkZvby5oIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXJfX2xpa2VseV90aGVuX2NvbmZpZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnRm91bmQgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzIGJlZm9yZSBXZWJDb3JlIGNvbmZp
Zy5oLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNr
X25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLCBGYWxzZSkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIFdlYkNvcmUgY29uZmlnLmggYWZ0ZXIgYSBo
ZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
ZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5fQ09O
RklHX0hFQURFUiwgRmFsc2UpKQorCisgICAgZGVmIHRlc3RfY2hlY2tfbmV4dF9pbmNsdWRlX29y
ZGVyX19vdGhlcl90aGVuX2NvbmZpZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
Rm91bmQgb3RoZXIgaGVhZGVyIGJlZm9yZSBXZWJDb3JlIGNvbmZpZy5oLicsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRl
cihjcHBfc3R5bGUuX09USEVSX0hFQURFUiwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdGb3VuZCBXZWJDb3JlIGNvbmZpZy5oIGFmdGVyIG90aGVyIGhlYWRlci4nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVf
b3JkZXIoY3BwX3N0eWxlLl9DT05GSUdfSEVBREVSLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9j
aGVja19uZXh0X2luY2x1ZGVfb3JkZXJfX2NvbmZpZ190aGVuX290aGVyX3RoZW5fbGlrZWx5KHNl
bGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hl
Y2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcF9zdHlsZS5fQ09ORklHX0hFQURFUiwgRmFsc2UpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBvdGhlciBoZWFkZXIgYmVmb3JlIGEgaGVh
ZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzLicsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBfc3R5bGUuX09USEVS
X0hFQURFUiwgRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBoZWFkZXIg
dGhpcyBmaWxlIGltcGxlbWVudHMgYWZ0ZXIgb3RoZXIgaGVhZGVyLicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihj
cHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLCBGYWxzZSkpCisKKyAgICBkZWYgdGVzdF9jaGVja19h
bHBoYWJldGljYWxfaW5jbHVkZV9vcmRlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFu
Z3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJhLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYy5oIlxuJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImIuaCJcbicsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAg
W2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3Vh
Z2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNpbmNsdWRlICJhLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSAiYi5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImMuaCJcbicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdl
X3J1bGVzX2NoZWNrKCdmb28uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSA8YXNzZXJ0Lmg+XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFti
dWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdl
X3J1bGVzX2NoZWNrKCdmb28uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjaW5jbHVkZSA8YXNzZXJ0Lmg+XG4nLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2NoZWNrX2xpbmVfYnJl
YWtfYWZ0ZXJfb3duX2hlYWRlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2Vf
cnVsZXNfY2hlY2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1lvdSBzaG91bGQgYWRkIGEgYmxhbmsgbGlu
ZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93biBoZWFkZXIuICBbYnVpbGQvaW5jbHVk
ZV9vcmRlcl0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
aW5jbHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJyNpbmNsdWRlICJiYXIuaCJcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfY2hlY2tfcHJlcHJvY2Vzc29yX2luX2luY2x1
ZGVfc2VjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hl
Y2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaWZkZWYgQkFaXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSAiYmF6LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjZWxzZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImZvb2Jhci5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2VuZGlmIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJywgIyBObyBmbGFnIGJlY2F1c2UgcHJldmlv
dXMgaXMgaW4gcHJlcHJvY2Vzc29yIHNlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNf
Y2hlY2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaWZkZWYgQkFaXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiYmF6LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICcjZW5kaWYiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYS5oIlxuJywgIyBTaG91bGQgc3RpbGwgZmxhZyB0
aGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRp
Y2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb28u
aCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lmZGVmIEJBWlxuJworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhei5oIlxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJh
ci5oIlxuJyAjU2hvdWxkIHN0aWxsIGZsYWcgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2VuZGlmIlxuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNhbCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5j
bHVkZV9vcmRlcl0gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19j
aGVjaygnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpZmRlZiBCQVpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJiYXouaCJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNlbmRpZiJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNpZmRlZiBGT09CQVJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJmb29iYXIuaCJcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNlbmRpZiJcbicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJhLmgiXG4nLCAjIFNob3VsZCBzdGls
bCBmbGFnIHRoaXMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdB
bHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScp
CisKKyAgICAgICAgIyBDaGVjayB0aGF0IGFmdGVyIGFuIGFscmVhZHkgaW5jbHVkZWQgZXJyb3Is
IHRoZSBzb3J0aW5nIHJ1bGVzIHN0aWxsIHdvcmsuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1
YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImcuaCJcbicsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICciZm9vLmgiIGFscmVhZHkgaW5jbHVkZWQgYXQg
Zm9vLmNwcDoxICBbYnVpbGQvaW5jbHVkZV0gWzRdJykKKworICAgIGRlZiB0ZXN0X2NoZWNrX3d0
Zl9pbmNsdWRlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hl
Y2soJ2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD5cbicsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9y
dWxlc19jaGVjaygnZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyNpbmNsdWRlICJ3dGYvQXNzZXJ0aW9ucy5oIlxuJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3d0ZiBpbmNsdWRlcyBzaG91bGQgYmUgPHd0
Zi9maWxlLmg+IGluc3RlYWQgb2YgInd0Zi9maWxlLmgiLicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVdIFs0XScpCisKKyAgICBkZWYg
dGVzdF9jbGFzc2lmeV9pbmNsdWRlKHNlbGYpOgorICAgICAgICBjbGFzc2lmeV9pbmNsdWRlID0g
Y3BwX3N0eWxlLl9jbGFzc2lmeV9pbmNsdWRlCisgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBf
c3R5bGUuX0luY2x1ZGVTdGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxl
Ll9DT05GSUdfSEVBREVSLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1
ZGUoJ2Zvby9mb28uY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdjb25maWcuaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0
eWxlLl9QUklNQVJZX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9p
bmNsdWRlKCdmb28vaW50ZXJuYWwvZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZm9vL3B1YmxpYy9mb28uaCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9QUklNQVJZX0hFQURFUiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb28vaW50ZXJuYWwvZm9vLmNwcCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vL290aGVyL3B1YmxpYy9m
b28uaCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwg
aW5jbHVkZV9zdGF0ZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9PVEhF
Ul9IRUFERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9v
L2ludGVybmFsL2Zvby5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vcC5oJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjcHBfc3R5bGUuX09USEVSX0hFQURFUiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb28vZm9vLmNwcCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRydWUsIGluY2x1ZGVfc3RhdGUpKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vQ3VzdG9tLmNwcCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vLmgnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQorICAgICAgICAjIFRy
aWNreSBleGFtcGxlIHdoZXJlIGJvdGggaW5jbHVkZXMgbWlnaHQgYmUgY2xhc3NpZmllZCBhcyBw
cmltYXJ5LgorICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnU2Nyb2xs
YmFyVGhlbWVXaW5jZS5jcHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lV2luY2UuaCJcbicKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhci5oIlxuJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdTY3JvbGxiYXJUaGVtZVdpbmNlLmNwcCcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmln
LmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVk
ZSAiU2Nyb2xsYmFyLmgiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJTY3JvbGxiYXJUaGVtZVdpbmNlLmgiXG4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnRm91bmQgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzIGFmdGVy
IGEgaGVhZGVyIHRoaXMgZmlsZSBpbXBsZW1lbnRzLicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJyBTaG91bGQgYmU6IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwg
YmxhbmsgbGluZSwgYW5kIHRoZW4gYWxwaGFiZXRpY2FsbHkgc29ydGVkLicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0
XScpCisKKyAgICBkZWYgdGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6CisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1
ZmZpeGVzKCdmb28vZm9vLWlubC5oJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9i
YXIvZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9u
X3N1ZmZpeGVzKCdmb28vYmFyL2Zvb19pbmwuaCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdmb28vZm9vJywgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jcHAn
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcF9zdHlsZS5fZHJvcF9jb21tb25fc3VmZml4ZXMo
J2Zvby9mb29fdW51c3VhbGludGVybmFsLmgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjcHBfc3R5bGUuX2Ryb3BfY29tbW9uX3N1ZmZp
eGVzKCdfdGVzdC5jcHAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVz
dC5jcHAnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgY3BwX3N0eWxlLl9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkK
KworY2xhc3MgQ2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgor
ICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgIyBSZWR1Y2luZyB0aGVzZSB0aHJlc2hvbGRz
IGZvciB0aGUgdGVzdHMgc3BlZWRzIHVwIHRlc3RzIHNpZ25pZmljYW50bHkuCisgICAgICAgIHNl
bGYub2xkX25vcm1hbF90cmlnZ2VyID0gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9OT1JNQUxf
VFJJR0dFUgorICAgICAgICBzZWxmLm9sZF90ZXN0X3RyaWdnZXIgPSBjcHBfc3R5bGUuX0Z1bmN0
aW9uU3RhdGUuX1RFU1RfVFJJR0dFUgorCisgICAgICAgIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0
ZS5fTk9STUFMX1RSSUdHRVIgPSAxMAorICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUu
X1RFU1RfVFJJR0dFUiA9IDI1CisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIGNw
cF9zdHlsZS5fRnVuY3Rpb25TdGF0ZS5fTk9STUFMX1RSSUdHRVIgPSBzZWxmLm9sZF9ub3JtYWxf
dHJpZ2dlcgorICAgICAgICBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJR0dFUiA9
IHNlbGYub2xkX3Rlc3RfdHJpZ2dlcgorCisgICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhz
X2NoZWNrKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgorICAgICAgICAiIiJDaGVjayB3
YXJuaW5ncyBmb3IgbG9uZyBmdW5jdGlvbiBib2RpZXMgYXJlIGFzIGV4cGVjdGVkLgorCisgICAg
ICAgIEFyZ3M6CisgICAgICAgICAgY29kZTogQysrIHNvdXJjZSBjb2RlIGV4cGVjdGVkIHRvIGdl
bmVyYXRlIGEgd2FybmluZyBtZXNzYWdlLgorICAgICAgICAgIGV4cGVjdGVkX21lc3NhZ2U6IE1l
c3NhZ2UgZXhwZWN0ZWQgdG8gYmUgZ2VuZXJhdGVkIGJ5IHRoZSBDKysgY29kZS4KKyAgICAgICAg
IiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKGNv
ZGUpKQorCisgICAgZGVmIHRyaWdnZXJfbGluZXMoc2VsZiwgZXJyb3JfbGV2ZWwpOgorICAgICAg
ICAiIiJSZXR1cm4gbnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmlnZ2VyIGEgZnVuY3Rpb24g
bGVuZ3RoIHdhcm5pbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDog
LS12IHNldHRpbmcgZm9yIGNwcF9zdHlsZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAg
IE51bWJlciBvZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIGxlbmd0aCB3YXJu
aW5nLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGNwcF9zdHlsZS5fRnVuY3Rpb25TdGF0
ZS5fTk9STUFMX1RSSUdHRVIgKiAyICoqIGVycm9yX2xldmVsCisKKyAgICBkZWYgdHJpZ2dlcl90
ZXN0X2xpbmVzKHNlbGYsIGVycm9yX2xldmVsKToKKyAgICAgICAgIiIiUmV0dXJuIG51bWJlciBv
ZiBsaW5lcyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcu
CisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9y
IGNwcF9zdHlsZS4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgIE51bWJlciBvZiBsaW5l
cyBuZWVkZWQgdG8gdHJpZ2dlciBhIHRlc3QgZnVuY3Rpb24gbGVuZ3RoIHdhcm5pbmcuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gY3BwX3N0eWxlLl9GdW5jdGlvblN0YXRlLl9URVNUX1RS
SUdHRVIgKiAyICoqIGVycm9yX2xldmVsCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19kZWZpbml0aW9uKHNlbGYsIGxpbmVzLCBlcnJvcl9sZXZlbCk6CisgICAgICAgICIi
IkdlbmVyYXRlIGxvbmcgZnVuY3Rpb24gZGVmaW5pdGlvbiBhbmQgY2hlY2sgd2FybmluZ3MgYXJl
IGFzIGV4cGVjdGVkLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgbGluZXM6IE51bWJlciBv
ZiBsaW5lcyB0byBnZW5lcmF0ZS4KKyAgICAgICAgICBlcnJvcl9sZXZlbDogIC0tdiBzZXR0aW5n
IGZvciBjcHBfc3R5bGUuCisgICAgICAgICIiIgorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2Vs
Zi50cmlnZ2VyX2xpbmVzKGNwcF9zdHlsZS5fdmVyYm9zZV9sZXZlbCgpKQorICAgICAgICBzZWxm
LmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgJ3ZvaWQgdGVzdChp
bnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGxpbmVzKSwKKyAgICAgICAgICAgICgnU21hbGwg
YW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAndGVz
dCgpIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0cmln
Z2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRhYmls
aXR5L2ZuX3NpemVdIFslZF0nCisgICAgICAgICAgICAgJSAobGluZXMsIHRyaWdnZXJfbGV2ZWws
IGVycm9yX2xldmVsKSkpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX29rKHNlbGYsIGxpbmVzKToKKyAgICAgICAgIiIiR2VuZXJhdGUgc2hvcnRlciBm
dW5jdGlvbiBkZWZpbml0aW9uIGFuZCBjaGVjayBubyB3YXJuaW5nIGlzIHByb2R1Y2VkLgorCisg
ICAgICAgIEFyZ3M6CisgICAgICAgICAgbGluZXM6IE51bWJlciBvZiBsaW5lcyB0byBnZW5lcmF0
ZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hl
Y2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2JvZHko
bGluZXMpLAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19hdF9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9sZXZlbCk6CisgICAgICAgICIiIkdl
bmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBhdCB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNl
dHRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRp
bmcgZm9yIGNwcF9zdHlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZl
bCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yX2xldmVsKQorCisgICAgZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVs
b3dfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3JfbGV2ZWwpOgorICAgICAgICAiIiJHZW5lcmF0ZSBh
bmQgY2hlY2sgZnVuY3Rpb24ganVzdCBiZWxvdyB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNl
dHRpbmcuCisKKyAgICAgICAgQXJnczoKKyAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRp
bmcgZm9yIGNwcF9zdHlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZl
bCkgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBlcnJvcl9sZXZlbCAtIDEpCisKKyAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9j
aGVja19hYm92ZV9lcnJvcl9sZXZlbChzZWxmLCBlcnJvcl9sZXZlbCk6CisgICAgICAgICIiIkdl
bmVyYXRlIGFuZCBjaGVjayBmdW5jdGlvbiBqdXN0IGFib3ZlIHRoZSB0cmlnZ2VyIGxldmVsIGZv
ciAtLXYgc2V0dGluZy4KKworICAgICAgICBBcmdzOgorICAgICAgICAgIGVycm9yX2xldmVsOiAt
LXYgc2V0dGluZyBmb3IgY3BwX3N0eWxlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb24oc2VsZi50cmlnZ2VyX2xpbmVzKGVy
cm9yX2xldmVsKSArIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVycm9yX2xldmVsKQorCisgICAgZGVmIGZ1bmN0aW9uX2JvZHkoc2VsZiwg
bnVtYmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyArICcgICAgdGhpc19pc19q
dXN0X2FfdGVzdCgpO1xuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JworCisgICAgZGVmIGZ1bmN0
aW9uX2JvZHlfd2l0aF9ibGFua19saW5lcyhzZWxmLCBudW1iZXJfb2ZfbGluZXMpOgorICAgICAg
ICByZXR1cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0KCk7XG5cbicgKiBudW1i
ZXJfb2ZfbGluZXMgKyAnfScKKworICAgIGRlZiBmdW5jdGlvbl9ib2R5X3dpdGhfbm9fbGludHMo
c2VsZiwgbnVtYmVyX29mX2xpbmVzKToKKyAgICAgICAgcmV0dXJuICcge1xuJyArICcgICAgdGhp
c19pc19qdXN0X2FfdGVzdCgpOyAgLy8gTk9MSU5UXG4nICogbnVtYmVyX29mX2xpbmVzICsgJ30n
CisKKyAgICAjIFRlc3QgbGluZSBsZW5ndGggY2hlY2tzLgorICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVu
Y3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICd2b2lkIHRlc3QoKTsnLCAgIyBOb3Qg
YSBmdW5jdGlvbiBkZWZpbml0aW9uCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X2Z1
bmN0aW9uX2xlbmd0aF9jaGVja19kZWNsYXJhdGlvbl93aXRoX2Jsb2NrX2ZvbGxvd2luZyhzZWxm
KToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAg
ICAgICgndm9pZCB0ZXN0KCk7XG4nCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHko
NjYpKSwgICMgTm90IGEgZnVuY3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICAgJycpCisKKyAg
ICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY2xhc3NfZGVmaW5pdGlvbihzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjayggICMgTm90IGEgZnVu
Y3Rpb24gZGVmaW5pdGlvbgorICAgICAgICAgICAgJ2NsYXNzIFRlc3QnICsgc2VsZi5mdW5jdGlv
bl9ib2R5KDY2KSArICc7JywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX3RyaXZpYWwoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0
aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge30nLCAgIyBOb3Qg
Y291bnRlZAorICAgICAgICAgICAgJycpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZW1wdHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soCisgICAgICAgICAgICAndm9pZCB0ZXN0KCkge1xufScsCisgICAgICAgICAgICAnJykK
KworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3Nl
dmVyaXR5MChzZWxmKToKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcF9zdHlsZS5fc2V0X3Zl
cmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2VyX2xpbmVzKDApIC0gMSkKKyAgICAgICAgY3BwX3N0
eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5KQorCisgICAgZGVmIHRlc3RfZnVu
Y3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHkwKHNlbGYpOgorICAgICAg
ICBvbGRfdmVyYm9zaXR5ID0gY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbCgwKQorICAgICAg
ICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9vayhzZWxmLnRy
aWdnZXJfbGluZXMoMCkpCisgICAgICAgIGNwcF9zdHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xk
X3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX2Fib3ZlX3NldmVyaXR5MChzZWxmKToKKyAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcF9z
dHlsZS5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVsKDApCisgICAgICAgIGNwcF9zdHlsZS5fc2V0
X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX2JlbG93X3NldmVyaXR5MXYwKHNlbGYpOgorICAgICAgICBv
bGRfdmVyYm9zaXR5ID0gY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbCgwKQorICAgICAgICBz
ZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJyb3JfbGV2ZWwoMSkKKyAg
ICAgICAgY3BwX3N0eWxlLl9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5KQorCisgICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYXRfc2V2ZXJpdHkxdjAo
c2VsZik6CisgICAgICAgIG9sZF92ZXJib3NpdHkgPSBjcHBfc3R5bGUuX3NldF92ZXJib3NlX2xl
dmVsKDApCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hdF9lcnJv
cl9sZXZlbCgxKQorICAgICAgICBjcHBfc3R5bGUuX3NldF92ZXJib3NlX2xldmVsKG9sZF92ZXJi
b3NpdHkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9i
ZWxvd19zZXZlcml0eTEoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSAtIDEpCisKKyAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0eTEoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9u
X29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0
aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MShzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVsKDEpCisKKyAgICBk
ZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfcGx1c19i
bGFua3Moc2VsZik6CisgICAgICAgIGVycm9yX2xldmVsID0gMQorICAgICAgICBlcnJvcl9saW5l
cyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCisgICAgICAgIHRyaWdnZXJf
bGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwX3N0eWxlLl92ZXJib3NlX2xldmVsKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisgICAgICAgICAgICAn
dm9pZCB0ZXN0X2JsYW5rcyhpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVz
KSwKKyAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25zIGFyZSBwcmVmZXJy
ZWQ6ICcKKyAgICAgICAgICAgICAndGVzdF9ibGFua3MoKSBoYXMgJWQgbm9uLWNvbW1lbnQgbGlu
ZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGluZyAlZCBsaW5l
cykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRdJykKKyAgICAg
ICAgICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCisKKyAg
ICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfY29tcGxleF9kZWZpbml0aW9uX3NldmVy
aXR5MShzZWxmKToKKyAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCisgICAgICAgIGVycm9yX2xpbmVz
ID0gc2VsZi50cmlnZ2VyX2xpbmVzKGVycm9yX2xldmVsKSArIDEKKyAgICAgICAgdHJpZ2dlcl9s
ZXZlbCA9IHNlbGYudHJpZ2dlcl9saW5lcyhjcHBfc3R5bGUuX3ZlcmJvc2VfbGV2ZWwoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICgn
bXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15VmVyeUxvbmdUeXBlTmFtZSpcbicK
KyAgICAgICAgICAgICAnbXlfbmFtZXNwYWNlOjpteV9vdGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rp
b24oaW50IGFyZzEsIGNoYXIqIGFyZzIpJworICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9i
b2R5KGVycm9yX2xpbmVzKSksCisgICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0
aW9ucyBhcmUgcHJlZmVycmVkOiAnCisgICAgICAgICAgICAgJ215X25hbWVzcGFjZTo6bXlfb3Ro
ZXJfbmFtZXNwYWNlOjpNeUZ1bmN0aW9uKCknCisgICAgICAgICAgICAgJyBoYXMgJWQgbm9uLWNv
bW1lbnQgbGluZXMgJworICAgICAgICAgICAgICcoZXJyb3IgdHJpZ2dlcmVkIGJ5IGV4Y2VlZGlu
ZyAlZCBsaW5lcykuJworICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9mbl9zaXplXSBbJWRd
JykKKyAgICAgICAgICAgICUgKGVycm9yX2xpbmVzLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZl
bCkpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZl
cml0eTFfZm9yX3Rlc3Qoc2VsZik6CisgICAgICAgIGVycm9yX2xldmVsID0gMQorICAgICAgICBl
cnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKKyAg
ICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGNwcF9zdHlsZS5f
dmVyYm9zZV9sZXZlbCgpKQorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2No
ZWNrKAorICAgICAgICAgICAgJ1RFU1RfRihUZXN0LCBNdXRhdG9yKScgKyBzZWxmLmZ1bmN0aW9u
X2JvZHkoZXJyb3JfbGluZXMpLAorICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5j
dGlvbnMgYXJlIHByZWZlcnJlZDogJworICAgICAgICAgICAgICdURVNUX0YoVGVzdCwgTXV0YXRv
cikgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzICcKKyAgICAgICAgICAgICAnKGVycm9yIHRyaWdn
ZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicKKyAgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvZm5fc2l6ZV0gWyVkXScpCisgICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9s
ZXZlbCwgZXJyb3JfbGV2ZWwpKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2RlZmluaXRpb25fc2V2ZXJpdHkxX2Zvcl9zcGxpdF9saW5lX3Rlc3Qoc2VsZik6CisgICAgICAg
IGVycm9yX2xldmVsID0gMQorICAgICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl90ZXN0
X2xpbmVzKGVycm9yX2xldmVsKSArIDEKKyAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJp
Z2dlcl90ZXN0X2xpbmVzKGNwcF9zdHlsZS5fdmVyYm9zZV9sZXZlbCgpKQorICAgICAgICBzZWxm
LmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAorICAgICAgICAgICAgKCdURVNUX0YoR29v
Z2xlVXBkYXRlUmVjb3ZlcnlSZWdpc3RyeVByb3RlY3RlZFRlc3QsXG4nCisgICAgICAgICAgICAg
JyAgICBGaXhHb29nbGVVcGRhdGVfQWxsVmFsdWVzX01hY2hpbmVBcHApJyAgIyBub3RlOiA0IHNw
YWNlcworICAgICAgICAgICAgICsgc2VsZi5mdW5jdGlvbl9ib2R5KGVycm9yX2xpbmVzKSksCisg
ICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJlZmVycmVkOiAn
CisgICAgICAgICAgICAgJ1RFU1RfRihHb29nbGVVcGRhdGVSZWNvdmVyeVJlZ2lzdHJ5UHJvdGVj
dGVkVGVzdCwgJyAgIyAxIHNwYWNlCisgICAgICAgICAgICAgJ0ZpeEdvb2dsZVVwZGF0ZV9BbGxW
YWx1ZXNfTWFjaGluZUFwcCkgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzICcKKyAgICAgICAgICAg
ICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicKKyAgICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCisgICAgICAgICAgICAlIChlcnJvcl9s
aW5lcysxLCB0cmlnZ2VyX2xldmVsLCBlcnJvcl9sZXZlbCkpCisKKyAgICBkZWYgdGVzdF9mdW5j
dGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFfZm9yX2JhZF90ZXN0X2RvZXNu
dF9icmVhayhzZWxmKToKKyAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCisgICAgICAgIGVycm9yX2xp
bmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQorICAgICAgICB0
cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoY3BwX3N0eWxlLl92ZXJib3Nl
X2xldmVsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soCisg
ICAgICAgICAgICAoJ1RFU1RfRignCisgICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9uX2JvZHko
ZXJyb3JfbGluZXMpKSwKKyAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVuY3Rpb25z
IGFyZSBwcmVmZXJyZWQ6ICcKKyAgICAgICAgICAgICAnVEVTVF9GIGhhcyAlZCBub24tY29tbWVu
dCBsaW5lcyAnCisgICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVk
IGxpbmVzKS4nCisgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQor
ICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xldmVsKSkK
KworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3NldmVyaXR5
MV93aXRoX2VtYmVkZGVkX25vX2xpbnRzKHNlbGYpOgorICAgICAgICBlcnJvcl9sZXZlbCA9IDEK
KyAgICAgICAgZXJyb3JfbGluZXMgPSBzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsg
MQorICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX2xpbmVzKGNwcF9zdHlsZS5f
dmVyYm9zZV9sZXZlbCgpKQorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2No
ZWNrKAorICAgICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5
X3dpdGhfbm9fbGludHMoZXJyb3JfbGluZXMpLAorICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9j
dXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJworICAgICAgICAgICAgICd0ZXN0KCkgaGFz
ICVkIG5vbi1jb21tZW50IGxpbmVzICcKKyAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBi
eSBleGNlZWRpbmcgJWQgbGluZXMpLicKKyAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5f
c2l6ZV0gWyVkXScpCisgICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwg
ZXJyb3JfbGV2ZWwpKQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmlu
aXRpb25fc2V2ZXJpdHkxX3dpdGhfbm9fbGludChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRf
ZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAgICAgICgndm9pZCB0ZXN0KGludCB4KScg
KyBzZWxmLmZ1bmN0aW9uX2JvZHkoc2VsZi50cmlnZ2VyX2xpbmVzKDEpKQorICAgICAgICAgICAg
ICsgJyAgLy8gTk9MSU5UIC0tIGxvbmcgZnVuY3Rpb24nKSwKKyAgICAgICAgICAgICcnKQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJp
dHkyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVs
b3dfZXJyb3JfbGV2ZWwoMikKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX3NldmVyaXR5MihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDIpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTIoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgyKQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJp
dHkzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVs
b3dfZXJyb3JfbGV2ZWwoMykKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX3NldmVyaXR5MyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDMpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTMoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgzKQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJp
dHk0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVs
b3dfZXJyb3JfbGV2ZWwoNCkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX3NldmVyaXR5NChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25f
bGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDQpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlvbl9s
ZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTQoc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg0KQorCisg
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJp
dHk1KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVs
b3dfZXJyb3JfbGV2ZWwoNSkKKworICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX2F0X3NldmVyaXR5NShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDUpCisKKyAgICBkZWYgdGVzdF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTUoc2VsZik6CisgICAgICAg
IHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg1KQor
CisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25faHVnZV9saW5l
cyhzZWxmKToKKyAgICAgICAgIyA1IGlzIHRoZSBsaW1pdAorICAgICAgICBzZWxmLmFzc2VydF9m
dW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoMTApLCA1
KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX25vdF9kZXRlcm1pbmFibGUoc2VsZik6
CisgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbiB3aXRob3V0IHRlcm1pbmF0aW5nIHNlbWljb2xv
bi4KKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKKyAgICAgICAg
ICAgICdNQUNSTyhhcmcpJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgICMgTWFjcm8gd2l0
aCB1bmRlcnNjb3JlcworICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNr
KAorICAgICAgICAgICAgJ01BQ1JPX1dJVEhfVU5ERVJTQ09SRVMoYXJnMSwgYXJnMiwgYXJnMykn
LAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
c19jaGVjaygKKyAgICAgICAgICAgICdOb25NYWNybyhhcmcpJywKKyAgICAgICAgICAgICdMaW50
IGZhaWxlZCB0byBmaW5kIHN0YXJ0IG9mIGZ1bmN0aW9uIGJvZHkuJworICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2ZuX3NpemVdIFs1XScpCisKKworY2xhc3MgTm9Ob25WaXJ0dWFsRGVzdHJ1
Y3RvcnNUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgorCisgICAgZGVmIHRlc3Rfbm9fZXJyb3Ioc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcn
J2NsYXNzIEZvbyB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB+Rm9vKCk7CisgICAgICAg
ICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisg
ICAgICAgICAgICAnJykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnJydjbGFzcyBGb28geworICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgaW5s
aW5lIH5Gb28oKTsKKyAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAg
ICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAg
ICAgICAgICAgaW5saW5lIHZpcnR1YWwgfkZvbygpOworICAgICAgICAgICAgICAgICAgIHZpcnR1
YWwgdm9pZCBmb28oKTsKKyAgICAgICAgICAgICAgIH07JycnLAorICAgICAgICAgICAgJycpCisK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xh
c3MgRm9vOjpHb28geworICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgfkdvbygpOworICAgICAg
ICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBnb28oKTsKKyAgICAgICAgICAgICAgIH07JycnLAor
ICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICdjbGFzcyBGb28geyB2b2lkIGZvbygpOyB9OycsCisgICAgICAgICAgICAnTW9y
ZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVd
IFs0XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJycnY2xhc3MgUXVhbGlmaWVkOjpHb28gOiBwdWJsaWMgRm9vIHsKKyAgICAgICAgICAgICAg
ICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAg
ICAgICcnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAg
ICAgICMgTGluZS1lbmRpbmcgOgorICAgICAgICAgICAgJycnY2xhc3MgR29vIDoKKyAgICAgICAg
ICAgICAgIHB1YmxpYyBGb28geworICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29v
KCk7CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFs
d2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2UuICBJZiB0aGlzIGlzIGEgJworICAg
ICAgICAgICAgJ21lbWJlci1pbml0aWFsaXplciBsaXN0IGluIGEgY29uc3RydWN0b3IsIHRoZSBj
b2xvbiBzaG91bGQgYmUgb24gdGhlICcKKyAgICAgICAgICAgICdsaW5lIGFmdGVyIHRoZSBkZWZp
bml0aW9uIGhlYWRlci4gIFt3aGl0ZXNwYWNlL2xhYmVsc10gWzRdJykKKworICAgIGRlZiB0ZXN0
X25vX2Rlc3RydWN0b3Jfd2hlbl92aXJ0dWFsX25lZWRlZChzZWxmKToKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7CisgICAgICAgICAgICAgICB9Oycn
JywKKyAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBk
ZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X2Rlc3RydWN0b3Jfbm9uX3ZpcnR1YWxfd2hlbl92
aXJ0dWFsX25lZWRlZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgICB+Rm9v
KCk7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAg
ICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZp
cnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAgICBkZWYgdGVzdF9ub193YXJuX3doZW5fZGVyaXZlZChz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
JycnY2xhc3MgRm9vIDogcHVibGljIEdvbyB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2
b2lkIGZvbygpOworICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnJykKKworICAg
IGRlZiB0ZXN0X2ludGVybmFsX2JyYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50X3JlKAorICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAg
ICAgICAgICBlbnVtIEdvbyB7CisgICAgICAgICAgICAgICAgICAgICAgIEdPTworICAgICAgICAg
ICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAg
ICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBu
ZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAgICBkZWYgdGVzdF9pbm5lcl9jbGFzc19u
ZWVkc192aXJ0dWFsX2Rlc3RydWN0b3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludF9yZSgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7CisgICAgICAgICAgICAg
ICAgICAgY2xhc3MgR29vIHsKKyAgICAgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGdv
bygpOworICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICB9OycnJywKKyAgICAg
ICAgICAgICdUaGUgY2xhc3MgR29vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9y
JykKKworICAgIGRlZiB0ZXN0X291dGVyX2NsYXNzX25lZWRzX3ZpcnR1YWxfZGVzdHJ1Y3Rvcihz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKAorICAgICAgICAg
ICAgJycnY2xhc3MgRm9vIHsKKyAgICAgICAgICAgICAgICAgICBjbGFzcyBHb28geworICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwor
ICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJs
eSBuZWVkcyBhIHZpcnR1YWwgZGVzdHJ1Y3RvcicpCisKKyAgICBkZWYgdGVzdF9xdWFsaWZpZWRf
Y2xhc3NfbmVlZHNfdmlydHVhbF9kZXN0cnVjdG9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnRfcmUoCisgICAgICAgICAgICAnJydjbGFzcyBRdWFsaWZpZWQ6OkZv
byB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAgICAg
ICAgfTsnJycsCisgICAgICAgICAgICAnVGhlIGNsYXNzIFF1YWxpZmllZDo6Rm9vIHByb2JhYmx5
IG5lZWRzIGEgdmlydHVhbCBkZXN0cnVjdG9yJykKKworICAgIGRlZiB0ZXN0X211bHRpX2xpbmVf
ZGVjbGFyYXRpb25fbm9fZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludF9yZSgKKyAgICAgICAgICAgICcnJ2NsYXNzIEZvbworICAgICAgICAgICAgICAgICAg
IDogcHVibGljIEdvbyB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOwor
ICAgICAgICAgICAgICAgfTsnJycsCisgICAgICAgICAgICAnJykKKworICAgIGRlZiB0ZXN0X211
bHRpX2xpbmVfZGVjbGFyYXRpb25fd2l0aF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJycnY2xhc3MgRm9vCisgICAgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lkIGZvbygpOworICAgICAgICAg
ICAgICAgfTsnJycsCisgICAgICAgICAgICBbJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJldmlvdXMgbGluZSAgJworICAgICAgICAgICAgICdbd2hpdGVzcGFjZS9icmFjZXNd
IFs0XScsCisgICAgICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0
dWFsIGRlc3RydWN0b3IgZHVlIHRvIGhhdmluZyAnCisgICAgICAgICAgICAgJ3ZpcnR1YWwgbWV0
aG9kKHMpLCBvbmUgZGVjbGFyZWQgYXQgbGluZSAyLiAgW3J1bnRpbWUvdmlydHVhbF0gWzRdJ10p
CisKKworY2xhc3MgQ3BwU3R5bGVTdGF0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRl
ZiB0ZXN0X2Vycm9yX2NvdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscygwLCBj
cHBfc3R5bGUuZXJyb3JfY291bnQoKSkKKyAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVfc3Rh
dGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKKyAgICAgICAgY3BwX3N0eWxlLl9jcHBfc3R5bGVf
c3RhdGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
MiwgY3BwX3N0eWxlLmVycm9yX2NvdW50KCkpCisgICAgICAgIGNwcF9zdHlsZS5fY3BwX3N0eWxl
X3N0YXRlLnJlc2V0X2Vycm9yX2NvdW50KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
Y3BwX3N0eWxlLmVycm9yX2NvdW50KCkpCisKKworY2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0
eWxlVGVzdEJhc2UpOgorCisgICAgIyBmb3IgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGlu
Zy1zdHlsZS5odG1sCisgICAgZGVmIHRlc3RfaW5kZW50YXRpb24oc2VsZik6CisgICAgICAgICMg
MS4gVXNlIHNwYWNlcywgbm90IHRhYnMuIFRhYnMgc2hvdWxkIG9ubHkgYXBwZWFyIGluIGZpbGVz
IHRoYXQKKyAgICAgICAgIyAgICByZXF1aXJlIHRoZW0gZm9yIHNlbWFudGljIG1lYW5pbmcsIGxp
a2UgTWFrZWZpbGVzLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnY2xhc3MgRm9vIHtcbicKKyAgICAgICAgICAgICcgICAgaW50IGdvbztcbicKKyAg
ICAgICAgICAgICd9OycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2NsYXNzIEZvbyB7XG4nCisgICAgICAgICAgICAn
XHRpbnQgZ29vO1xuJworICAgICAgICAgICAgJ307JywKKyAgICAgICAgICAgICdUYWIgZm91bmQ7
IGJldHRlciB0byB1c2Ugc3BhY2VzICBbd2hpdGVzcGFjZS90YWJdIFsxXScpCisKKyAgICAgICAg
IyAyLiBUaGUgaW5kZW50IHNpemUgaXMgNCBzcGFjZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBGb28ge1xuJworICAgICAgICAgICAg
JyAgICBpbnQgZ29vO1xuJworICAgICAgICAgICAgJ307JywKKyAgICAgICAgICAgICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnY2xhc3MgRm9v
IHtcbicKKyAgICAgICAgICAgICcgICBpbnQgZ29vO1xuJworICAgICAgICAgICAgJ307JywKKyAg
ICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICBBcmUgeW91
IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCisgICAg
ICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciA4LXNwYWNlcy4KKworICAgICAgICAjIDMuIEluIGEg
aGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgYmUgaW5kZW50ZWQuCisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICduYW1lc3BhY2Ug
V2ViQ29yZSB7XG5cbicKKyAgICAgICAgICAgICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJworICAg
ICAgICAgICAgJyAgICAgICAgaW50IG15VmFyaWFibGU7XG4nCisgICAgICAgICAgICAnICAgIH07
XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28u
aCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdu
YW1lc3BhY2UgT3V0ZXJOYW1lc3BhY2Uge1xuJworICAgICAgICAgICAgJyAgICBuYW1lc3BhY2Ug
SW5uZXJOYW1lc3BhY2Uge1xuJworICAgICAgICAgICAgJyAgICAgICAgY2xhc3MgRG9jdW1lbnQg
e1xuJworICAgICAgICAgICAgJyAgICAgICAgfTtcbicKKyAgICAgICAgICAgICcgICAgfTtcbicK
KyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5oJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVz
cGFjZSBXZWJDb3JlIHtcbicKKyAgICAgICAgICAgICcjaWYgMFxuJworICAgICAgICAgICAgJyAg
ICBjbGFzcyBEb2N1bWVudCB7XG4nCisgICAgICAgICAgICAnICAgIH07XG4nCisgICAgICAgICAg
ICAnI2VuZGlmXG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAg
ICAgICdmb28uaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnY2xhc3MgRG9jdW1l
bnQge1xuJworICAgICAgICAgICAgJ307XG4nCisgICAgICAgICAgICAnfScsCisgICAgICAgICAg
ICAnSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRlIGEgbmFtZXNwYWNlIHNob3VsZCBiZSBpbmRlbnRl
ZC4nCisgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScsCisgICAgICAgICAg
ICAnZm9vLmgnKQorCisgICAgICAgICMgNC4gSW4gYW4gaW1wbGVtZW50YXRpb24gZmlsZSAoZmls
ZXMgd2l0aCB0aGUgZXh0ZW5zaW9uIC5jcHAsIC5jCisgICAgICAgICMgICAgb3IgLm1tKSwgY29k
ZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3Jl
IHtcblxuJworICAgICAgICAgICAgJ0RvY3VtZW50OjpGb28oKVxuJworICAgICAgICAgICAgJyAg
ICA6IGZvbyhiYXIpXG4nCisgICAgICAgICAgICAnICAgICwgYm9vKGZhcilcbicKKyAgICAgICAg
ICAgICd7XG4nCisgICAgICAgICAgICAnICAgIHN0dWZmKCk7XG4nCisgICAgICAgICAgICAnfScs
CisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVz
cGFjZSB7XG4nCisgICAgICAgICAgICAnbmFtZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKKyAg
ICAgICAgICAgICdEb2N1bWVudDo6Rm9vKCkgeyB9XG4nCisgICAgICAgICAgICAnfScsCisgICAg
ICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgV2ViQ29yZSB7XG5c
bicKKyAgICAgICAgICAgICdzdGFydDogIC8vIFBvaW50bGVzcyBjb2RlLCBidXQgdGVzdHMgdGhl
IGxhYmVsIHJlZ2V4cC5cbicKKyAgICAgICAgICAgICcgICAgZ290byBzdGFydDtcbicKKyAgICAg
ICAgICAgICcgICAgfScsCisgICAgICAgICAgICAnJywKKyAgICAgICAgICAgICdmb28uY3BwJykK
KyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBu
YW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKKyAgICAgICAgICAgICcgICAgdm9pZCBEb2N1bWVudDo6
Rm9vKClcbicKKyAgICAgICAgICAgICcgICAge1xuJworICAgICAgICAgICAgJ3N0YXJ0OiAgLy8g
aW5maW5pdGUgbG9vcHMgYXJlIGZ1biFcbicKKyAgICAgICAgICAgICcgICAgICAgIGdvdG8gc3Rh
cnQ7XG4nCisgICAgICAgICAgICAnICAgIH0nLAorICAgICAgICAgICAgJycsCisgICAgICAgICAg
ICAnZm9vLmNwcCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG4nCisgICAgICAgICAgICAnICAgIERvY3VtZW50
OjpGb28oKSB7IH1cbicKKyAgICAgICAgICAgICd9JywKKyAgICAgICAgICAgICdJbiBhbiBpbXBs
ZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGlu
ZGVudGVkLicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKKyAgICAg
ICAgICAgICdmb28uY3BwJykKKworICAgICAgICAjIDUuIEEgY2FzZSBsYWJlbCBzaG91bGQgbGlu
ZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LiBUaGUKKyAgICAgICAgIyAgICBjYXNlIHN0
YXRlbWVudCBpcyBpbmRlbnRlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAgICAg
JyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKKyAgICAgICAgICAgICcgICAgY2FzZSBiYXJDb25k
aXRpb246XG4nCisgICAgICAgICAgICAnICAgICAgICBpKys7XG4nCisgICAgICAgICAgICAnICAg
ICAgICBicmVhaztcbicKKyAgICAgICAgICAgICcgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAg
ICcgICAgICAgIGktLTtcbicKKyAgICAgICAgICAgICcgICAgfVxuJywKKyAgICAgICAgICAgICcn
KQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnICAg
IHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29uZGl0
aW9uOlxuJworICAgICAgICAgICAgJyAgICAgICAgc3dpdGNoIChvdGhlckNvbmRpdGlvbikge1xu
JworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAgICAg
ICAgICByZXR1cm47XG4nCisgICAgICAgICAgICAnICAgICAgICB9XG4nCisgICAgICAgICAgICAn
ICAgIGRlZmF1bHQ6XG4nCisgICAgICAgICAgICAnICAgICAgICBpLS07XG4nCisgICAgICAgICAg
ICAnICAgIH1cbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAg
ICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjogYnJlYWs7XG4nCisgICAgICAgICAgICAn
ICAgIGRlZmF1bHQ6IHJldHVybjtcbicKKyAgICAgICAgICAgICcgICAgfVxuJywKKyAgICAgICAg
ICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgICAgICBjYXNl
IGZvb0NvbmRpdGlvbjpcbicKKyAgICAgICAgICAgICcgICAgICAgIGNhc2UgYmFyQ29uZGl0aW9u
OlxuJworICAgICAgICAgICAgJyAgICAgICAgICAgIGkrKztcbicKKyAgICAgICAgICAgICcgICAg
ICAgICAgICBicmVhaztcbicKKyAgICAgICAgICAgICcgICAgICAgIGRlZmF1bHQ6XG4nCisgICAg
ICAgICAgICAnICAgICAgICAgICAgaS0tO1xuJworICAgICAgICAgICAgJyAgICB9XG4nLAorICAg
ICAgICAgICAgJ0EgY2FzZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGluZSB1
cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNl
L2luZGVudF0gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAgICAgJyAgICAg
ICAgY2FzZSBmb29Db25kaXRpb246XG4nCisgICAgICAgICAgICAnICAgICAgICAgICAgYnJlYWs7
XG4nCisgICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCisgICAgICAgICAgICAnICAgICAgICAg
ICAgaS0tO1xuJworICAgICAgICAgICAgJyAgICB9XG4nLAorICAgICAgICAgICAgJ0EgY2FzZSBs
YWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGluZSB1cCB3aXRoIGl0cyBzd2l0Y2gg
c3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJyAgICBzd2l0
Y2ggKGNvbmRpdGlvbikge1xuJworICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpc
bicKKyAgICAgICAgICAgICcgICAgY2FzZSBiYXJDb25kaXRpb246XG4nCisgICAgICAgICAgICAn
ICAgICAgICBzd2l0Y2ggKG90aGVyQ29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgICAg
ICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICByZXR1cm47XG4nCisg
ICAgICAgICAgICAnICAgICAgICB9XG4nCisgICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCisg
ICAgICAgICAgICAnICAgICAgICBpLS07XG4nCisgICAgICAgICAgICAnICAgIH1cbicsCisgICAg
ICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3VsZCBub3QgYmUgaW5kZW50ZWQsIGJ1dCBsaW5lIHVw
IHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuJworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
aW5kZW50XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAgIGNh
c2UgZm9vQ29uZGl0aW9uOlxuJworICAgICAgICAgICAgJyAgICBjYXNlIGJhckNvbmRpdGlvbjpc
bicKKyAgICAgICAgICAgICcgICAgaSsrO1xuJworICAgICAgICAgICAgJyAgICBicmVhaztcblxu
JworICAgICAgICAgICAgJyAgICBkZWZhdWx0OlxuJworICAgICAgICAgICAgJyAgICBpLS07XG4n
CisgICAgICAgICAgICAnICAgIH1cbicsCisgICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUgaW5z
aWRlIHN3aXRjaCBzdGF0ZW1lbnRzIHNob3VsZCBiZSBpbmRlbnRlZC4nCisgICAgICAgICAgICAn
ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKKyAgICAgICAgICAgICcgICAgc3dpdGNoIChjb25kaXRpb24pIHtcbicKKyAgICAg
ICAgICAgICcgICAgY2FzZSBmb29Db25kaXRpb246XG4nCisgICAgICAgICAgICAnICAgIGNhc2Ug
YmFyQ29uZGl0aW9uOlxuJworICAgICAgICAgICAgJyAgICAgICAgc3dpdGNoIChvdGhlckNvbmRp
dGlvbikge1xuJworICAgICAgICAgICAgJyAgICAgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAg
ICcgICAgICAgIHJldHVybjtcbicKKyAgICAgICAgICAgICcgICAgICAgIH1cbicKKyAgICAgICAg
ICAgICcgICAgZGVmYXVsdDpcbicKKyAgICAgICAgICAgICcgICAgICAgIGktLTtcbicKKyAgICAg
ICAgICAgICcgICAgfVxuJywKKyAgICAgICAgICAgICdOb24tbGFiZWwgY29kZSBpbnNpZGUgc3dp
dGNoIHN0YXRlbWVudHMgc2hvdWxkIGJlIGluZGVudGVkLicKKyAgICAgICAgICAgICcgIFt3aGl0
ZXNwYWNlL2luZGVudF0gWzRdJykKKworICAgICAgICAjIDYuIEJvb2xlYW4gZXhwcmVzc2lvbnMg
YXQgdGhlIHNhbWUgbmVzdGluZyBsZXZlbCB0aGF0IHNwYW4KKyAgICAgICAgIyAgIG11bHRpcGxl
IGxpbmVzIHNob3VsZCBoYXZlIHRoZWlyIG9wZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mCisg
ICAgICAgICMgICB0aGUgbGluZSBpbnN0ZWFkIG9mIHRoZSByaWdodCBzaWRlLgorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIHJldHVybiBhdHRy
LT5uYW1lKCkgPT0gc3JjQXR0clxuJworICAgICAgICAgICAgJyAgICAgICAgfHwgYXR0ci0+bmFt
ZSgpID09IGxvd3NyY0F0dHI7XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGF0dHItPm5hbWUo
KSA9PSBzcmNBdHRyIHx8XG4nCisgICAgICAgICAgICAnICAgICAgICBhdHRyLT5uYW1lKCkgPT0g
bG93c3JjQXR0cjtcbicsCisgICAgICAgICAgICAnQm9vbGVhbiBleHByZXNzaW9ucyB0aGF0IHNw
YW4gbXVsdGlwbGUgbGluZXMgc2hvdWxkIGhhdmUgdGhlaXIgJworICAgICAgICAgICAgJ29wZXJh
dG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNp
ZGUuJworICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQorCisgICAg
ZGVmIHRlc3Rfc3BhY2luZyhzZWxmKToKKyAgICAgICAgIyAxLiBEbyBub3QgcGxhY2Ugc3BhY2Vz
IGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICdpKys7JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaSArKzsnLAorICAgICAgICAg
ICAgJ0V4dHJhIHNwYWNlIGZvciBvcGVyYXRvciAgKys7ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNd
IFs0XScpCisKKyAgICAgICAgIyAyLiBEbyBwbGFjZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBhbmQg
dGVybmFyeSBvcGVyYXRvcnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICd5ID0gbSAqIHggKyBiOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7JywKKyAg
ICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnYyA9IGEgfCBiOycsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ3JldHVybiBjb25kaXRpb24gPyAxIDog
MDsnLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICd5PW0qeCtiOycsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMg
YXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSxiKTsnLAorICAgICAgICAgICAg
J01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdjID0gYXxiOycsCisg
ICAgICAgICAgICAnJykKKyAgICAgICAgIyBGSVhNRTogV2UgY2Fubm90IGNhdGNoIHRoaXMgbGlu
dCBlcnJvci4KKyAgICAgICAgIyBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICMgICAgICdyZXR1cm4gY29uZGl0aW9uID8gMTowOycsCisgICAgICAgICMgICAgICcnKQorCisg
ICAgICAgICMgMy4gUGxhY2Ugc3BhY2VzIGJldHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFuZCB0
aGVpciBwYXJlbnRoZXNlcy4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAor
ICAgICAgICAgICAgJyAgICBpZiAoY29uZGl0aW9uKVxuJworICAgICAgICAgICAgJyAgICAgICAg
ZG9JdCgpO1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9s
aW5lX2xpbnQoCisgICAgICAgICAgICAnICAgIGlmKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAg
ICcgICAgICAgIGRvSXQoKTtcbicsCisgICAgICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUg
KCBpbiBpZiggIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzVdJykKKworICAgICAgICAjIDQuIERvIG5v
dCBwbGFjZSBzcGFjZXMgYmV0d2VlbiBhIGZ1bmN0aW9uIGFuZCBpdHMgcGFyZW50aGVzZXMsCisg
ICAgICAgICMgICAgb3IgYmV0d2VlbiBhIHBhcmVudGhlc2lzIGFuZCBpdHMgY29udGVudC4KKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2YoYSwgYik7
JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnZiAoYSwgYik7JywKKyAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZv
cmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScpCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmKCBhLCBiICk7JywK
KyAgICAgICAgICAgIFsnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hp
dGVzcGFjZS9wYXJlbnNdIFs0XScsCisgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAp
ICBbd2hpdGVzcGFjZS9wYXJlbnNdIFsyXSddKQorCisgICAgZGVmIHRlc3RfbGluZV9icmVha2lu
ZyhzZWxmKToKKyAgICAgICAgIyAxLiBFYWNoIHN0YXRlbWVudCBzaG91bGQgZ2V0IGl0cyBvd24g
bGluZS4KKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
JyAgICB4Kys7XG4nCisgICAgICAgICAgICAnICAgIHkrKztcbicKKyAgICAgICAgICAgICcgICAg
aWYgKGNvbmRpdGlvbik7XG4nCisgICAgICAgICAgICAnICAgICAgICBkb0l0KCk7XG4nLAorICAg
ICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAg
ICAgICAgICcgICAgeCsrOyB5Kys7JywKKyAgICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1h
bmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKKyAgICAgICAg
IyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAorICAgICAgICAjICAgICAnICAgIGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCisg
ICAgICAgICMgICAgICcnKQorCisgICAgICAgICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hvdWxk
IGdvIG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBwcmVjZWRpbmcKKyAgICAgICAgIyAgIGNsb3NlIGJy
YWNlIGlmIG9uZSBpcyBwcmVzZW50LCBlbHNlIGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlCisg
ICAgICAgICMgICBpZiBzdGF0ZW1lbnQuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSB7XG4nCisgICAgICAgICAgICAnICAg
IGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nQWdhaW4oKTtc
bicKKyAgICAgICAgICAgICd9IGVsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGlu
Z0Vsc2UoKTtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicK
KyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJworICAgICAg
ICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ2Vsc2VcbicKKyAgICAg
ICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nLAorICAgICAgICAgICAgJycpCisgICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0
aW9uKVxuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAg
J2Vsc2Uge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKKyAgICAg
ICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicKKyAgICAgICAgICAgICd9XG4n
LAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pIHtcbicKKyAgICAgICAgICAgICcgICAgZG9T
b21ldGhpbmcoKTtcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdBZ2FpbigpO1xuJwor
ICAgICAgICAgICAgJ31cbicKKyAgICAgICAgICAgICdlbHNlIHtcbicKKyAgICAgICAgICAgICcg
ICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxz
ZUFnYWluKCk7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdBbiBlbHNlIHNo
b3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2VkaW5nIH0gIFt3aGl0ZXNw
YWNlL25ld2xpbmVdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKSBkb1NvbWV0aGluZygpOyBlbHNlIGRvU29tZXRo
aW5nRWxzZSgpO1xuJywKKyAgICAgICAgICAgIFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRo
ZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScsCisgICAgICAgICAgICAgJ0Vs
c2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGlu
ZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nXSkKKyAgICAgICAgIyBGSVhNRTogTWFrZSB0
aGlzIGZhaWwuCisgICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAjICAgICAnaWYgKGNvbmRpdGlvbikgZG9Tb21ldGhpbmcoKTsgZWxzZSB7XG4nCisgICAgICAg
ICMgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCisgICAgICAgICMgICAgICd9XG4nLAor
ICAgICAgICAjICAgICAnJykKKworICAgICAgICAjIDMuIEFuIGVsc2UgaWYgc3RhdGVtZW50IHNo
b3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudAorICAgICAgICAjICAgIHdoZW4gdGhl
IHByaW9yIGlmIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuIHN0YXRlbWVudC4KKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChtb3RpdmF0ZWQpIHtc
bicKKyAgICAgICAgICAgICcgICAgaWYgKGxpcXVpZClcbicKKyAgICAgICAgICAgICcgICAgICAg
IHJldHVybiBtb25leTtcbicKKyAgICAgICAgICAgICd9IGVsc2UgaWYgKHRpcmVkKVxuJworICAg
ICAgICAgICAgJyAgICBicmVhaztcbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisg
ICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAo
b3RoZXJDb25kaXRpb24pXG4nCisgICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xu
JywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
CisgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgZG9Tb21l
dGhpbmcoKTtcbicKKyAgICAgICAgICAgICdlbHNlXG4nCisgICAgICAgICAgICAnICAgIGRvU29t
ZXRoaW5nRWxzZSgpO1xuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAg
ICAgICcgICAgcmV0dXJuVmFsdWUgPSBmb287XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAob3Ro
ZXJDb25kaXRpb24pXG4nCisgICAgICAgICAgICAnICAgIHJldHVyblZhbHVlID0gYmFyO1xuJywK
KyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisg
ICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuVmFs
dWUgPSBmb287XG4nCisgICAgICAgICAgICAnZWxzZVxuJworICAgICAgICAgICAgJyAgICByZXR1
cm5WYWx1ZSA9IGJhcjtcbicsCisgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisgICAgICAg
ICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCisgICAgICAgICAgICAnZWxzZSBpZiAobGlxdWlk
KVxuJworICAgICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCisgICAgICAgICAgICAnZWxz
ZSBpZiAoYnJva2UpXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBmYXZvcjtcbicKKyAgICAg
ICAgICAgICdlbHNlXG4nCisgICAgICAgICAgICAnICAgIHNsZWVwKDI4ODAwKTtcbicsCisgICAg
ICAgICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAg
ICAgICAgJ2lmIChsaXF1aWQpIHtcbicKKyAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJwor
ICAgICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCisgICAgICAgICAgICAnfSBlbHNlIGlm
IChncmVlZHkpIHtcbicKKyAgICAgICAgICAgICcgICAga2VlcCgpO1xuJworICAgICAgICAgICAg
JyAgICByZXR1cm4gbm90aGluZztcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAg
J0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVu
dCB3aGVuIHRoZSAnCisgICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJl
dHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICcgICAgaWYgKHN0dXBpZCkge1xuJworICAgICAg
ICAgICAgJ2luZmluaXRlTG9vcDpcbicKKyAgICAgICAgICAgICcgICAgICAgIGdvdG8gaW5maW5p
dGVMb29wO1xuJworICAgICAgICAgICAgJyAgICB9IGVsc2UgaWYgKGV2aWwpXG4nCisgICAgICAg
ICAgICAnICAgICAgICBnb3RvIGhlbGw7XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3Rh
dGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVuIHRoZSAnCisg
ICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNv
bnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9j
b250cm9sX2Zsb3ddIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
KyAgICAgICAgICAgICdpZiAobGlxdWlkKVxuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAg
ICAgICcgICAgcHJlcGFyZSgpO1xuJworICAgICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4n
CisgICAgICAgICAgICAnfVxuJworICAgICAgICAgICAgJ2Vsc2UgaWYgKGdyZWVkeSlcbicKKyAg
ICAgICAgICAgICcgICAga2VlcCgpO1xuJywKKyAgICAgICAgICAgIFsnVGhpcyB7IHNob3VsZCBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0
XScsCisgICAgICAgICAgICAnQW4gZWxzZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUg
YXMgdGhlIHByZWNlZGluZyB9ICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nLAorICAgICAgICAg
ICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRl
bWVudCB3aGVuIHRoZSAnCisgICAgICAgICAgICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBh
IHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicKKyAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XSddKQorICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKGdvbmUpXG4nCisgICAgICAgICAg
ICAnICAgIHJldHVybjtcbicKKyAgICAgICAgICAgICdlbHNlIGlmIChoZXJlKVxuJworICAgICAg
ICAgICAgJyAgICBnbygpO1xuJywKKyAgICAgICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBz
aG91bGQgYmUgd3JpdHRlbiBhcyBhbiBpZiBzdGF0ZW1lbnQgd2hlbiB0aGUgJworICAgICAgICAg
ICAgJ3ByaW9yICJpZiIgY29uY2x1ZGVzIHdpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBv
ciBnb3RvIHN0YXRlbWVudC4nCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9m
bG93XSBbNF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAg
ICAgICAnaWYgKGdvbmUpXG4nCisgICAgICAgICAgICAnICAgIHJldHVybjtcbicKKyAgICAgICAg
ICAgICdlbHNlXG4nCisgICAgICAgICAgICAnICAgIGdvKCk7XG4nLAorICAgICAgICAgICAgJ0Fu
IGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByaW9yICJpZiIgY29uY2x1
ZGVzICcKKyAgICAgICAgICAgICd3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290
byBzdGF0ZW1lbnQuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10g
WzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAg
J2lmIChtb3RpdmF0ZWQpIHtcbicKKyAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJworICAg
ICAgICAgICAgJyAgICBjb250aW51ZTtcbicKKyAgICAgICAgICAgICd9IGVsc2Uge1xuJworICAg
ICAgICAgICAgJyAgICBjbGVhblVwKCk7XG4nCisgICAgICAgICAgICAnICAgIGJyZWFrO1xuJwor
ICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnQW4gZWxzZSBzdGF0ZW1lbnQgY2FuIGJl
IHJlbW92ZWQgd2hlbiB0aGUgcHJpb3IgImlmIiBjb25jbHVkZXMgJworICAgICAgICAgICAgJ3dp
dGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVudC4nCisgICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0nKQorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnaWYgKHRpcmVkKVxuJworICAgICAg
ICAgICAgJyAgICBicmVhaztcbicKKyAgICAgICAgICAgICdlbHNlIHtcbicKKyAgICAgICAgICAg
ICcgICAgcHJlcGFyZSgpO1xuJworICAgICAgICAgICAgJyAgICBjb250aW51ZTtcbicKKyAgICAg
ICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1v
dmVkIHdoZW4gdGhlIHByaW9yICJpZiIgY29uY2x1ZGVzICcKKyAgICAgICAgICAgICd3aXRoIGEg
cmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJworICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKKworICAgIGRlZiB0ZXN0X2JyYWNl
cyhzZWxmKToKKyAgICAgICAgIyAxLiBGdW5jdGlvbiBkZWZpbml0aW9uczogcGxhY2UgZWFjaCBi
cmFjZSBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICdpbnQgbWFpbigpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAg
ICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAg
ICAgICAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ2ludCBtYWluKCkge1xuJworICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJwor
ICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBs
aW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykK
KworICAgICAgICAjIDIuIE90aGVyIGJyYWNlczogcGxhY2UgdGhlIG9wZW4gYnJhY2Ugb24gdGhl
IGxpbmUgcHJlY2VkaW5nIHRoZQorICAgICAgICAjICAgIGNvZGUgYmxvY2s7IHBsYWNlIHRoZSBj
bG9zZSBicmFjZSBvbiBpdHMgb3duIGxpbmUuCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKKyAgICAgICAgICAgICdjbGFzcyBNeUNsYXNzIHtcbicKKyAgICAgICAgICAgICcg
ICAgaW50IGZvbztcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICcnKQorICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnbmFtZXNwYWNl
IFdlYkNvcmUge1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAg
J307XG4nLAorICAgICAgICAgICAgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKKyAgICAgICAgICAgICdmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbicKKyAg
ICAgICAgICAgICcgICAgRG9Tb21ldGhpbmcoKTtcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAg
ICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAg
ICAgICAgICAnY2xhc3MgTXlDbGFzc1xuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAg
ICcgICAgaW50IGZvbztcbicKKyAgICAgICAgICAgICd9O1xuJywKKyAgICAgICAgICAgICdUaGlz
IHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNl
L2JyYWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAg
ICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnVGhp
cyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAg
ICAgICAgICAgICdmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpKyspXG4nCisgICAgICAgICAgICAn
e1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisg
ICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBs
aW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKKyAgICAgICAgICAgICd3aGlsZSAodHJ1ZSlcbicKKyAgICAgICAgICAgICd7
XG4nCisgICAgICAgICAgICAnICAgIGludCBmb287XG4nCisgICAgICAgICAgICAnfVxuJywKKyAg
ICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxp
bmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAorICAgICAgICAgICAgJ2ZvcmVhY2ggKEZvbyogZm9vLCBmb29zKVxuJworICAg
ICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICcgICAgaW50IGJhcjtcbicKKyAgICAgICAgICAg
ICd9XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUg
cHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnc3dpdGNoICh0eXBlKVxuJworICAg
ICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICdjYXNlIGZvbzogcmV0dXJuO1xuJworICAgICAg
ICAgICAgJ31cbicsCisgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9m
IHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisgICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxu
JworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKKyAgICAg
ICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBv
ZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZm9yIChpbnQgaSA9IDA7
IGkgPCAxMDsgaSsrKVxuJworICAgICAgICAgICAgJ3tcbicKKyAgICAgICAgICAgICcgICAgaW50
IGZvbztcbicKKyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQg
YmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBb
NF0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
d2hpbGUgKHRydWUpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0
XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdz
d2l0Y2ggKHR5cGUpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJ2Nhc2UgZm9v
OiByZXR1cm47XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdUaGlzIHsgc2hv
dWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNl
c10gWzRdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAg
ICAgJ2Vsc2UgaWYgKHR5cGUpXG4nCisgICAgICAgICAgICAne1xuJworICAgICAgICAgICAgJ2Nh
c2UgZm9vOiByZXR1cm47XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAgICdUaGlz
IHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNl
L2JyYWNlc10gWzRdJykKKworICAgICAgICAjIDMuIE9uZS1saW5lIGNvbnRyb2wgY2xhdXNlcyBz
aG91bGQgbm90IHVzZSBicmFjZXMgdW5sZXNzCisgICAgICAgICMgICAgY29tbWVudHMgYXJlIGlu
Y2x1ZGVkIG9yIGEgc2luZ2xlIHN0YXRlbWVudCBzcGFucyBtdWx0aXBsZQorICAgICAgICAjICAg
IGxpbmVzLgorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAg
ICAnaWYgKHRydWUpIHtcbicKKyAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKKyAgICAgICAg
ICAgICd9XG4nLAorICAgICAgICAgICAgJ09uZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQg
bm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCisKKyAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ZvciAoOyBmb287IGJhcikg
e1xuJworICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisg
ICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNl
cy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCisgICAgICAgICAgICAnZm9yZWFjaCAoZm9vLCBmb29zKSB7XG4nCisgICAg
ICAgICAgICAnICAgIGludCBiYXI7XG4nCisgICAgICAgICAgICAnfVxuJywKKyAgICAgICAgICAg
ICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRl
c3BhY2UvYnJhY2VzXSBbNF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKKyAgICAgICAgICAgICd3aGlsZSAodHJ1ZSkge1xuJworICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJworICAgICAgICAgICAgJ31cbicsCisgICAgICAgICAgICAnT25lIGxpbmUgY29udHJv
bCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKKworICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
aWYgKHRydWUpXG4nCisgICAgICAgICAgICAnICAgIGludCBmb287XG4nCisgICAgICAgICAgICAn
ZWxzZSB7XG4nCisgICAgICAgICAgICAnICAgIGludCBmb287XG4nCisgICAgICAgICAgICAnfVxu
JywKKyAgICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2Ug
YnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0
X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdpZiAodHJ1ZSkge1xuJworICAgICAgICAg
ICAgJyAgICAvLyBTb21lIGNvbW1lbnRcbicKKyAgICAgICAgICAgICcgICAgaW50IGZvbztcbicK
KyAgICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2lmICh0cnVlKSB7XG4nCisgICAgICAg
ICAgICAnICAgIG15RnVuY3Rpb24ocmVhbGx5TG9uZ1BhcmFtMSwgcmVhbGx5TG9uZ1BhcmFtMixc
bicKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICByZWFsbHlMb25nUGFyYW0zKTtcbicKKyAg
ICAgICAgICAgICd9XG4nLAorICAgICAgICAgICAgJycpCisKKyAgICAgICAgIyA0LiBDb250cm9s
IGNsYXVzZXMgd2l0aG91dCBhIGJvZHkgc2hvdWxkIHVzZSBlbXB0eSBicmFjZXMuCisgICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKKyAgICAgICAgICAgICdmb3IgKCA7IGN1cnJl
bnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KSB7IH1cbicsCisgICAgICAgICAgICAnJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAgICAgICAgICAgJ2ZvciAoIDsg
Y3VycmVudDtcbicKKyAgICAgICAgICAgICcgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KSB7
fVxuJywKKyAgICAgICAgICAgICcnKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCisgICAgICAgICAgICAnZm9yICggOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4
dCk7XG4nLAorICAgICAgICAgICAgJ1NlbWljb2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1lbnQg
Zm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0ZWFkLiAgW3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBb
NV0nKQorICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCisgICAgICAgICAgICAn
d2hpbGUgKHRydWUpO1xuJywKKyAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkg
c3RhdGVtZW50IGZvciB0aGlzIGxvb3AuIFVzZSB7IH0gaW5zdGVhZC4gIFt3aGl0ZXNwYWNlL3Nl
bWljb2xvbl0gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAorICAg
ICAgICAgICAgJ30gd2hpbGUgKHRydWUpO1xuJywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVm
IHRlc3RfbnVsbF9mYWxzZV96ZXJvKHNlbGYpOgorICAgICAgICAjIDEuIEluIEMrKywgdGhlIG51
bGwgcG9pbnRlciB2YWx1ZSBzaG91bGQgYmUgd3JpdHRlbiBhcyAwLiBJbiBDLAorICAgICAgICAj
ICAgIGl0IHNob3VsZCBiZSB3cml0dGVuIGFzIE5VTEwuIEluIE9iamVjdGl2ZS1DIGFuZCBPYmpl
Y3RpdmUtQysrLAorICAgICAgICAjICAgIGZvbGxvdyB0aGUgZ3VpZGVsaW5lIGZvciBDIG9yIEMr
KywgcmVzcGVjdGl2ZWx5LCBidXQgdXNlIG5pbCB0bworICAgICAgICAjICAgIHJlcHJlc2VudCBh
IG51bGwgT2JqZWN0aXZlLUMgb2JqZWN0LgorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAg
ICAgICAgICAgJ2Z1bmN0aW9uQ2FsbChOVUxMKScsCisgICAgICAgICAgICAnVXNlIDAgaW5zdGVh
ZCBvZiBOVUxMLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9udWxsXSBbNV0nLAorICAg
ICAgICAgICAgJ2Zvby5jcHAnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAg
ICAgIi8vIERvbid0IHVzZSBOVUxMIGluIGNvbW1lbnRzIHNpbmNlIGl0IGlzbid0IGluIGNvZGUu
IiwKKyAgICAgICAgICAgICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwuJworICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L251bGxdIFs0XScsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnIkEgc3RyaW5nIHdpdGggTlVMTCIgIC8v
IGFuZCBhIGNvbW1lbnQgd2l0aCBOVUxMIGlzIHRyaWNreSB0byBmbGFnIGNvcnJlY3RseSBpbiBj
cHBfc3R5bGUuJywKKyAgICAgICAgICAgICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwuJworICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L251bGxdIFs0XScsCisgICAgICAgICAgICAnZm9vLmNwcCcp
CisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnIkEgc3RyaW5nIGNvbnRh
aW5pbmcgTlVMTCBpcyBvayInLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNw
cCcpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaWYgKGFib3V0TlVM
TCknLAorICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnbXlWYXJpYWJsZSA9IE5VTExpZnknLAorICAg
ICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLmNwcCcpCisgICAgICAgICMgTWFrZSBzdXJl
IHRoYXQgdGhlIE5VTEwgY2hlY2sgZG9lcyBub3QgYXBwbHkgdG8gQyBhbmQgT2JqZWN0aXZlLUMg
ZmlsZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnZnVuY3Rpb25D
YWxsKE5VTEwpJywKKyAgICAgICAgICAgICcnLAorICAgICAgICAgICAgJ2Zvby5jJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdmdW5jdGlvbkNhbGwoTlVMTCknLAor
ICAgICAgICAgICAgJycsCisgICAgICAgICAgICAnZm9vLm0nKQorCisgICAgICAgICMgMi4gQysr
IGFuZCBDIGJvb2wgdmFsdWVzIHNob3VsZCBiZSB3cml0dGVuIGFzIHRydWUgYW5kCisgICAgICAg
ICMgICAgZmFsc2UuIE9iamVjdGl2ZS1DIEJPT0wgdmFsdWVzIHNob3VsZCBiZSB3cml0dGVuIGFz
IFlFUyBhbmQgTk8uCisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgorCisgICAgICAg
ICMgMy4gVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16
ZXJvIHNob3VsZAorICAgICAgICAjICAgIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29t
cGFyaXNvbnMuCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAnaWYgKGNv
dW50ID09IDApJywKKyAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24t
bnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxp
dHkgY29tcGFyaXNvbnMuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25f
dG9femVyb10gWzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludF9vbmVfb2ZfbWFueV9lcnJv
cnNfcmUoCisgICAgICAgICAgICAnaWYgKHN0cmluZyAhPSBOVUxMKScsCisgICAgICAgICAgICBy
J1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBz
aG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29uc1wuJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpZiAoY29uZGl0aW9uID09IHRydWUp
JywKKyAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5k
IHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFy
aXNvbnMuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10g
WzVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpZiAobXlWYXJp
YWJsZSAhPSAvKiBXaHkgd291bGQgYW55b25lIHB1dCBhIGNvbW1lbnQgaGVyZT8gKi8gZmFsc2Up
JywKKyAgICAgICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5k
IHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFy
aXNvbnMuJworICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10g
WzVdJykKKworICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmICgwIC8q
IFRoaXMgY29tbWVudCBhbHNvIGxvb2tzIG9kZCB0byBtZS4gKi8gIT0gYUxvbmdlclZhcmlhYmxl
TmFtZSknLAorICAgICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxs
LCBhbmQgemVyby9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBj
b21wYXJpc29ucy4nCisgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196
ZXJvXSBbNV0nKQorICAgICAgICBzZWxmLmFzc2VydF9saW50X29uZV9vZl9tYW55X2Vycm9yc19y
ZSgKKyAgICAgICAgICAgICdpZiAoTlVMTCA9PSB0aGlzTWF5QmVOdWxsKScsCisgICAgICAgICAg
ICByJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVy
byBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29uc1wuJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKKyAgICAgICAgICAgICdpZiAodHJ1ZSAhPSBhbm90aGVy
Q29uZGl0aW9uKScsCisgICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9u
LW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFs
aXR5IGNvbXBhcmlzb25zLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29u
X3RvX3plcm9dIFs1XScpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCisgICAgICAgICAgICAn
aWYgKGZhbHNlID09IG15Qm9vbFZhbHVlKScsCisgICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUv
ZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9u
ZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKKyAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1XScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKKyAgICAgICAgICAgICdpZiAoZm9udFR5cGUgPT0gdHJ1ZVR5cGUpJywKKyAgICAgICAgICAg
ICcnKQorICAgICAgICBzZWxmLmFzc2VydF9saW50KAorICAgICAgICAgICAgJ2lmIChvdGhlcnRy
dWUgPT0gZm9udFR5cGUpJywKKyAgICAgICAgICAgICcnKQorCisgICAgZGVmIHRlc3RfbmFtZXMo
c2VsZik6CisgICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgICAgICBwYXNzCisK
KyAgICBkZWYgdGVzdF9vdGhlcihzZWxmKToKKyAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IHRo
aXMuCisgICAgICAgIHBhc3MKKworCitkZWYgdGVhckRvd24oKToKKyAgICAiIiJBIGdsb2JhbCBj
aGVjayB0byBtYWtlIHN1cmUgYWxsIGVycm9yLWNhdGVnb3JpZXMgaGF2ZSBiZWVuIHRlc3RlZC4K
KworICAgIFRoZSBtYWluIHRlYXJEb3duKCkgcm91dGluZSBpcyB0aGUgb25seSBjb2RlIHdlIGNh
biBndWFyYW50ZWUgd2lsbCBiZQorICAgIHJ1biBhZnRlciBhbGwgb3RoZXIgdGVzdHMgaGF2ZSBi
ZWVuIGV4ZWN1dGVkLgorICAgICIiIgorICAgIHRyeToKKyAgICAgICAgaWYgX3J1bl92ZXJpZnlh
bGxjYXRlZ29yaWVzc2VlbjoKKyAgICAgICAgICAgIEVycm9yQ29sbGVjdG9yKE5vbmUpLnZlcmlm
eV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbigpCisgICAgZXhjZXB0IE5hbWVFcnJvcjoKKyAgICAg
ICAgIyBJZiBub2JvZHkgc2V0IHRoZSBnbG9iYWwgX3J1bl92ZXJpZnlhbGxjYXRlZ29yaWVzc2Vl
biwgdGhlbgorICAgICAgICAjIHdlIGFzc3VtZSB3ZSBzaG91bGRuJ3QgcnVuIHRoZSB0ZXN0Cisg
ICAgICAgIHBhc3MKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBpbXBvcnQgc3lz
CisgICAgIyBXZSBkb24ndCB3YW50IHRvIHJ1biB0aGUgdmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2Fy
ZV9zZWVuKCkgdGVzdCB1bmxlc3MKKyAgICAjIHdlJ3JlIHJ1bm5pbmcgdGhlIGZ1bGwgdGVzdCBz
dWl0ZTogaWYgd2Ugb25seSBydW4gb25lIHRlc3QsCisgICAgIyBvYnZpb3VzbHkgd2UncmUgbm90
IGdvaW5nIHRvIHNlZSBhbGwgdGhlIGVycm9yIGNhdGVnb3JpZXMuICBTbyB3ZQorICAgICMgb25s
eSBydW4gdmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVuKCkgd2hlbiBubyBjb21tYW5kbGlu
ZSBmbGFncworICAgICMgYXJlIHBhc3NlZCBpbi4KKyAgICBnbG9iYWwgX3J1bl92ZXJpZnlhbGxj
YXRlZ29yaWVzc2VlbgorICAgIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW4gPSAobGVuKHN5
cy5hcmd2KSA9PSAxKQorCisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9k
dWxlcy9jcHBsaW50LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTQ5N2Y3Li4w
MDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbW9kdWxlcy9jcHBsaW50LnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMzEzMiArMCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotIyAtKi0gY29k
aW5nOiB1dGYtOCAtKi0KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGlzIHRoZSBtb2RpZmllZCB2ZXJzaW9uIG9mIEdvb2ds
ZSdzIGNwcGxpbnQuIFRoZSBvcmlnaW5hbCBjb2RlIGlzCi0jIGh0dHA6Ly9nb29nbGUtc3R5bGVn
dWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwbGludC9jcHBsaW50LnB5Ci0KLSIiIkRv
ZXMgV2ViS2l0LWxpbnQgb24gYysrIGZpbGVzLgotCi1UaGUgZ29hbCBvZiB0aGlzIHNjcmlwdCBp
cyB0byBpZGVudGlmeSBwbGFjZXMgaW4gdGhlIGNvZGUgdGhhdCAqbWF5KgotYmUgaW4gbm9uLWNv
bXBsaWFuY2Ugd2l0aCBXZWJLaXQgc3R5bGUuICBJdCBkb2VzIG5vdCBhdHRlbXB0IHRvIGZpeAot
dXAgdGhlc2UgcHJvYmxlbXMgLS0gdGhlIHBvaW50IGlzIHRvIGVkdWNhdGUuICBJdCBkb2VzIGFs
c28gbm90Ci1hdHRlbXB0IHRvIGZpbmQgYWxsIHByb2JsZW1zLCBvciB0byBlbnN1cmUgdGhhdCBl
dmVyeXRoaW5nIGl0IGRvZXMKLWZpbmQgaXMgbGVnaXRpbWF0ZWx5IGEgcHJvYmxlbS4KLQotSW4g
cGFydGljdWxhciwgd2UgY2FuIGdldCB2ZXJ5IGNvbmZ1c2VkIGJ5IC8qIGFuZCAvLyBpbnNpZGUg
c3RyaW5ncyEKLVdlIGRvIGEgc21hbGwgaGFjaywgd2hpY2ggaXMgdG8gaWdub3JlIC8vJ3Mgd2l0
aCAiJ3MgYWZ0ZXIgdGhlbSBvbiB0aGUKLXNhbWUgbGluZSwgYnV0IGl0IGlzIGZhciBmcm9tIHBl
cmZlY3QgKGluIGVpdGhlciBkaXJlY3Rpb24pLgotIiIiCi0KLWltcG9ydCBjb2RlY3MKLWltcG9y
dCBnZXRvcHQKLWltcG9ydCBtYXRoICAjIGZvciBsb2cKLWltcG9ydCBvcwotaW1wb3J0IG9zLnBh
dGgKLWltcG9ydCByZQotaW1wb3J0IHNyZV9jb21waWxlCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQg
c3lzCi1pbXBvcnQgdW5pY29kZWRhdGEKLQotCi1fVVNBR0UgPSAiIiIKLVN5bnRheDogY3BwbGlu
dC5weSBbLS12ZXJib3NlPSNdIFstLW91dHB1dD12czddIFstLWZpbHRlcj0teCwreSwuLi5dCi0g
ICAgICAgIDxmaWxlPiBbZmlsZV0gLi4uCi0KLSAgVGhlIHN0eWxlIGd1aWRlbGluZXMgdGhpcyB0
cmllcyB0byBmb2xsb3cgYXJlIHRob3NlIGluCi0gICAgaHR0cDovL3dlYmtpdC5vcmcvY29kaW5n
L2NvZGluZy1zdHlsZS5odG1sCi0KLSAgRXZlcnkgcHJvYmxlbSBpcyBnaXZlbiBhIGNvbmZpZGVu
Y2Ugc2NvcmUgZnJvbSAxLTUsIHdpdGggNSBtZWFuaW5nIHdlIGFyZQotICBjZXJ0YWluIG9mIHRo
ZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5nIGl0IGNvdWxkIGJlIGEgbGVnaXRpbWF0ZSBjb25zdHJ1
Y3QuCi0gIFRoaXMgd2lsbCBtaXNzIHNvbWUgZXJyb3JzLCBhbmQgaXMgbm90IGEgc3Vic3RpdHV0
ZSBmb3IgYSBjb2RlIHJldmlldy4KLQotICBUbyBwcmV2ZW50IHNwZWNpZmljIGxpbmVzIGZyb20g
YmVpbmcgbGludGVkLCBhZGQgYSAnLy8gTk9MSU5UJyBjb21tZW50IHRvIHRoZQotICBlbmQgb2Yg
dGhlIGxpbmUuCi0KLSAgVGhlIGZpbGVzIHBhc3NlZCBpbiB3aWxsIGJlIGxpbnRlZDsgYXQgbGVh
c3Qgb25lIGZpbGUgbXVzdCBiZSBwcm92aWRlZC4KLSAgTGludGVkIGV4dGVuc2lvbnMgYXJlIC5j
cHAsIC5jIGFuZCAuaC4gIE90aGVyIGZpbGUgdHlwZXMgd2lsbCBiZSBpZ25vcmVkLgotCi0gIEZs
YWdzOgotCi0gICAgb3V0cHV0PXZzNwotICAgICAgQnkgZGVmYXVsdCwgdGhlIG91dHB1dCBpcyBm
b3JtYXR0ZWQgdG8gZWFzZSBlbWFjcyBwYXJzaW5nLiAgVmlzdWFsIFN0dWRpbwotICAgICAgY29t
cGF0aWJsZSBvdXRwdXQgKHZzNykgbWF5IGFsc28gYmUgdXNlZC4gIE90aGVyIGZvcm1hdHMgYXJl
IHVuc3VwcG9ydGVkLgotCi0gICAgdmVyYm9zZT0jCi0gICAgICBTcGVjaWZ5IGEgbnVtYmVyIDAt
NSB0byByZXN0cmljdCBlcnJvcnMgdG8gY2VydGFpbiB2ZXJib3NpdHkgbGV2ZWxzLgotCi0gICAg
ZmlsdGVyPS14LCt5LC4uLgotICAgICAgU3BlY2lmeSBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9m
IGNhdGVnb3J5LWZpbHRlcnMgdG8gYXBwbHk6IG9ubHkKLSAgICAgIGVycm9yIG1lc3NhZ2VzIHdo
b3NlIGNhdGVnb3J5IG5hbWVzIHBhc3MgdGhlIGZpbHRlcnMgd2lsbCBiZSBwcmludGVkLgotICAg
ICAgKENhdGVnb3J5IG5hbWVzIGFyZSBwcmludGVkIHdpdGggdGhlIG1lc3NhZ2UgYW5kIGxvb2sg
bGlrZQotICAgICAgIlt3aGl0ZXNwYWNlL2luZGVudF0iLikgIEZpbHRlcnMgYXJlIGV2YWx1YXRl
ZCBsZWZ0IHRvIHJpZ2h0LgotICAgICAgIi1GT08iIGFuZCAiRk9PIiBtZWFucyAiZG8gbm90IHBy
aW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0gICAgICAiK0ZPTyIgbWVhbnMg
ImRvIHByaW50IGNhdGVnb3JpZXMgdGhhdCBzdGFydCB3aXRoIEZPTyIuCi0KLSAgICAgIEV4YW1w
bGVzOiAtLWZpbHRlcj0td2hpdGVzcGFjZSwrd2hpdGVzcGFjZS9icmFjZXMKLSAgICAgICAgICAg
ICAgICAtLWZpbHRlcj13aGl0ZXNwYWNlLHJ1bnRpbWUvcHJpbnRmLCtydW50aW1lL3ByaW50Zl9m
b3JtYXQKLSAgICAgICAgICAgICAgICAtLWZpbHRlcj0tLCtidWlsZC9pbmNsdWRlX3doYXRfeW91
X3VzZQotCi0gICAgICBUbyBzZWUgYSBsaXN0IG9mIGFsbCB0aGUgY2F0ZWdvcmllcyB1c2VkIGlu
IGNwcGxpbnQsIHBhc3Mgbm8gYXJnOgotICAgICAgICAgLS1maWx0ZXI9Ci0iIiIKLQotIyBXZSBj
YXRlZ29yaXplIGVhY2ggZXJyb3IgbWVzc2FnZSB3ZSBwcmludC4gIEhlcmUgYXJlIHRoZSBjYXRl
Z29yaWVzLgotIyBXZSB3YW50IGFuIGV4cGxpY2l0IGxpc3Qgc28gd2UgY2FuIGxpc3QgdGhlbSBh
bGwgaW4gY3BwbGludCAtLWZpbHRlcj0uCi0jIElmIHlvdSBhZGQgYSBuZXcgZXJyb3IgbWVzc2Fn
ZSB3aXRoIGEgbmV3IGNhdGVnb3J5LCBhZGQgaXQgdG8gdGhlIGxpc3QKLSMgaGVyZSEgIGNwcGxp
bnRfdW5pdHRlc3QucHkgc2hvdWxkIHRlbGwgeW91IGlmIHlvdSBmb3JnZXQgdG8gZG8gdGhpcy4K
LSMgXCB1c2VkIGZvciBjbGVhcmVyIGxheW91dCAtLSBweWxpbnQ6IGRpc2FibGUtbXNnPUM2MDEz
Ci1fRVJST1JfQ0FURUdPUklFUyA9ICcnJ1wKLSAgICBidWlsZC9jbGFzcwotICAgIGJ1aWxkL2Rl
cHJlY2F0ZWQKLSAgICBidWlsZC9lbmRpZl9jb21tZW50Ci0gICAgYnVpbGQvZm9yd2FyZF9kZWNs
Ci0gICAgYnVpbGQvaGVhZGVyX2d1YXJkCi0gICAgYnVpbGQvaW5jbHVkZQotICAgIGJ1aWxkL2lu
Y2x1ZGVfb3JkZXIKLSAgICBidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZQotICAgIGJ1aWxkL25h
bWVzcGFjZXMKLSAgICBidWlsZC9wcmludGZfZm9ybWF0Ci0gICAgYnVpbGQvc3RvcmFnZV9jbGFz
cwotICAgIGxlZ2FsL2NvcHlyaWdodAotICAgIHJlYWRhYmlsaXR5L2JyYWNlcwotICAgIHJlYWRh
YmlsaXR5L2Nhc3RpbmcKLSAgICByZWFkYWJpbGl0eS9jaGVjawotICAgIHJlYWRhYmlsaXR5L2Nv
bXBhcmlzb25fdG9femVybwotICAgIHJlYWRhYmlsaXR5L2NvbnN0cnVjdG9ycwotICAgIHJlYWRh
YmlsaXR5L2NvbnRyb2xfZmxvdwotICAgIHJlYWRhYmlsaXR5L2ZuX3NpemUKLSAgICByZWFkYWJp
bGl0eS9mdW5jdGlvbgotICAgIHJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50Ci0gICAgcmVh
ZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZwotICAgIHJlYWRhYmlsaXR5L251bGwKLSAgICByZWFk
YWJpbGl0eS9zdHJlYW1zCi0gICAgcmVhZGFiaWxpdHkvdG9kbwotICAgIHJlYWRhYmlsaXR5L3V0
ZjgKLSAgICBydW50aW1lL2FycmF5cwotICAgIHJ1bnRpbWUvY2FzdGluZwotICAgIHJ1bnRpbWUv
ZXhwbGljaXQKLSAgICBydW50aW1lL2ludAotICAgIHJ1bnRpbWUvaW5pdAotICAgIHJ1bnRpbWUv
aW52YWxpZF9pbmNyZW1lbnQKLSAgICBydW50aW1lL21lbXNldAotICAgIHJ1bnRpbWUvcHJpbnRm
Ci0gICAgcnVudGltZS9wcmludGZfZm9ybWF0Ci0gICAgcnVudGltZS9yZWZlcmVuY2VzCi0gICAg
cnVudGltZS9ydHRpCi0gICAgcnVudGltZS9zaXplb2YKLSAgICBydW50aW1lL3N0cmluZwotICAg
IHJ1bnRpbWUvdGhyZWFkc2FmZV9mbgotICAgIHJ1bnRpbWUvdmlydHVhbAotICAgIHdoaXRlc3Bh
Y2UvYmxhbmtfbGluZQotICAgIHdoaXRlc3BhY2UvYnJhY2VzCi0gICAgd2hpdGVzcGFjZS9jb21t
YQotICAgIHdoaXRlc3BhY2UvY29tbWVudHMKLSAgICB3aGl0ZXNwYWNlL2VuZF9vZl9saW5lCi0g
ICAgd2hpdGVzcGFjZS9lbmRpbmdfbmV3bGluZQotICAgIHdoaXRlc3BhY2UvaW5kZW50Ci0gICAg
d2hpdGVzcGFjZS9sYWJlbHMKLSAgICB3aGl0ZXNwYWNlL2xpbmVfbGVuZ3RoCi0gICAgd2hpdGVz
cGFjZS9uZXdsaW5lCi0gICAgd2hpdGVzcGFjZS9vcGVyYXRvcnMKLSAgICB3aGl0ZXNwYWNlL3Bh
cmVucwotICAgIHdoaXRlc3BhY2Uvc2VtaWNvbG9uCi0gICAgd2hpdGVzcGFjZS90YWIKLSAgICB3
aGl0ZXNwYWNlL3RvZG8KLScnJwotCi0jIFRoZSBkZWZhdWx0IHN0YXRlIG9mIHRoZSBjYXRlZ29y
eSBmaWx0ZXIuIFRoaXMgaXMgb3ZlcnJpZGVkIGJ5IHRoZSAtLWZpbHRlcj0KLSMgZmxhZy4gQnkg
ZGVmYXVsdCBhbGwgZXJyb3JzIGFyZSBvbiwgc28gb25seSBhZGQgaGVyZSBjYXRlZ29yaWVzIHRo
YXQgc2hvdWxkIGJlCi0jIG9mZiBieSBkZWZhdWx0IChpLmUuLCBjYXRlZ29yaWVzIHRoYXQgbXVz
dCBiZSBlbmFibGVkIGJ5IHRoZSAtLWZpbHRlcj0gZmxhZ3MpLgotIyBBbGwgZW50cmllcyBoZXJl
IHNob3VsZCBzdGFydCB3aXRoIGEgJy0nIG9yICcrJywgYXMgaW4gdGhlIC0tZmlsdGVyPSBmbGFn
LgotX0RFRkFVTFRfRklMVEVSUyA9IFtdCi0KLSMgSGVhZGVycyB0aGF0IHdlIGNvbnNpZGVyIFNU
TCBoZWFkZXJzLgotX1NUTF9IRUFERVJTID0gZnJvemVuc2V0KFsKLSAgICAnYWxnb2Jhc2UuaCcs
ICdhbGdvcml0aG0nLCAnYWxsb2MuaCcsICdiaXRzZXQnLCAnZGVxdWUnLCAnZXhjZXB0aW9uJywK
LSAgICAnZnVuY3Rpb24uaCcsICdmdW5jdGlvbmFsJywgJ2hhc2hfbWFwJywgJ2hhc2hfbWFwLmgn
LCAnaGFzaF9zZXQnLAotICAgICdoYXNoX3NldC5oJywgJ2l0ZXJhdG9yJywgJ2xpc3QnLCAnbGlz
dC5oJywgJ21hcCcsICdtZW1vcnknLCAncGFpci5oJywKLSAgICAncHRocmVhZF9hbGxvYycsICdx
dWV1ZScsICdzZXQnLCAnc2V0LmgnLCAnc3N0cmVhbScsICdzdGFjaycsCi0gICAgJ3N0bF9hbGxv
Yy5oJywgJ3N0bF9yZWxvcHMuaCcsICd0eXBlX3RyYWl0cy5oJywKLSAgICAndXRpbGl0eScsICd2
ZWN0b3InLCAndmVjdG9yLmgnLAotICAgIF0pCi0KLQotIyBOb24tU1RMIEMrKyBzeXN0ZW0gaGVh
ZGVycy4KLV9DUFBfSEVBREVSUyA9IGZyb3plbnNldChbCi0gICAgJ2FsZ28uaCcsICdidWlsdGlu
YnVmLmgnLCAnYnZlY3Rvci5oJywgJ2Nhc3NlcnQnLCAnY2N0eXBlJywKLSAgICAnY2Vycm5vJywg
J2NmbG9hdCcsICdjaXNvNjQ2JywgJ2NsaW1pdHMnLCAnY2xvY2FsZScsICdjbWF0aCcsCi0gICAg
J2NvbXBsZXgnLCAnY29tcGxleC5oJywgJ2NzZXRqbXAnLCAnY3NpZ25hbCcsICdjc3RkYXJnJywg
J2NzdGRkZWYnLAotICAgICdjc3RkaW8nLCAnY3N0ZGxpYicsICdjc3RyaW5nJywgJ2N0aW1lJywg
J2N3Y2hhcicsICdjd2N0eXBlJywKLSAgICAnZGVmYWxsb2MuaCcsICdkZXF1ZS5oJywgJ2VkaXRi
dWYuaCcsICdleGNlcHRpb24nLCAnZnN0cmVhbScsCi0gICAgJ2ZzdHJlYW0uaCcsICdoYXNodGFi
bGUuaCcsICdoZWFwLmgnLCAnaW5kc3RyZWFtLmgnLCAnaW9tYW5pcCcsCi0gICAgJ2lvbWFuaXAu
aCcsICdpb3MnLCAnaW9zZndkJywgJ2lvc3RyZWFtJywgJ2lvc3RyZWFtLmgnLCAnaXN0cmVhbS5o
JywKLSAgICAnaXRlcmF0b3IuaCcsICdsaW1pdHMnLCAnbWFwLmgnLCAnbXVsdGltYXAuaCcsICdt
dWx0aXNldC5oJywKLSAgICAnbnVtZXJpYycsICdvc3RyZWFtLmgnLCAncGFyc2VzdHJlYW0uaCcs
ICdwZnN0cmVhbS5oJywgJ1Bsb3RGaWxlLmgnLAotICAgICdwcm9jYnVmLmgnLCAncHRocmVhZF9h
bGxvYy5oJywgJ3JvcGUnLCAncm9wZS5oJywgJ3JvcGVpbXBsLmgnLAotICAgICdTRmlsZS5oJywg
J3NsaXN0JywgJ3NsaXN0LmgnLCAnc3RhY2suaCcsICdzdGRleGNlcHQnLAotICAgICdzdGRpb3N0
cmVhbS5oJywgJ3N0cmVhbWJ1Zi5oJywgJ3N0cmVhbS5oJywgJ3N0cmZpbGUuaCcsICdzdHJpbmcn
LAotICAgICdzdHJzdHJlYW0nLCAnc3Ryc3RyZWFtLmgnLCAndGVtcGJ1Zi5oJywgJ3RyZWUuaCcs
ICd0eXBlaW5mbycsICd2YWxhcnJheScsCi0gICAgXSkKLQotCi0jIEFzc2VydGlvbiBtYWNyb3Mu
ICBUaGVzZSBhcmUgZGVmaW5lZCBpbiBiYXNlL2xvZ2dpbmcuaCBhbmQKLSMgdGVzdGluZy9iYXNl
L2d1bml0LmguICBOb3RlIHRoYXQgdGhlIF9NIHZlcnNpb25zIG5lZWQgdG8gY29tZSBmaXJzdAot
IyBmb3Igc3Vic3RyaW5nIG1hdGNoaW5nIHRvIHdvcmsuCi1fQ0hFQ0tfTUFDUk9TID0gWwotICAg
ICdEQ0hFQ0snLCAnQ0hFQ0snLAotICAgICdFWFBFQ1RfVFJVRV9NJywgJ0VYUEVDVF9UUlVFJywK
LSAgICAnQVNTRVJUX1RSVUVfTScsICdBU1NFUlRfVFJVRScsCi0gICAgJ0VYUEVDVF9GQUxTRV9N
JywgJ0VYUEVDVF9GQUxTRScsCi0gICAgJ0FTU0VSVF9GQUxTRV9NJywgJ0FTU0VSVF9GQUxTRScs
Ci0gICAgXQotCi0jIFJlcGxhY2VtZW50IG1hY3JvcyBmb3IgQ0hFQ0svRENIRUNLL0VYUEVDVF9U
UlVFL0VYUEVDVF9GQUxTRQotX0NIRUNLX1JFUExBQ0VNRU5UID0gZGljdChbKG0sIHt9KSBmb3Ig
bSBpbiBfQ0hFQ0tfTUFDUk9TXSkKLQotZm9yIG9wLCByZXBsYWNlbWVudCBpbiBbKCc9PScsICdF
UScpLCAoJyE9JywgJ05FJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAoJz49JywgJ0dFJyks
ICgnPicsICdHVCcpLAotICAgICAgICAgICAgICAgICAgICAgICAgKCc8PScsICdMRScpLCAoJzwn
LCAnTFQnKV06Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydEQ0hFQ0snXVtvcF0gPSAnRENIRUNL
XyVzJyAlIHJlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5UWydDSEVDSyddW29wXSA9
ICdDSEVDS18lcycgJSByZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNFTUVOVFsnRVhQRUNU
X1RSVUUnXVtvcF0gPSAnRVhQRUNUXyVzJyAlIHJlcGxhY2VtZW50Ci0gICAgX0NIRUNLX1JFUExB
Q0VNRU5UWydBU1NFUlRfVFJVRSddW29wXSA9ICdBU1NFUlRfJXMnICUgcmVwbGFjZW1lbnQKLSAg
ICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9UUlVFX00nXVtvcF0gPSAnRVhQRUNUXyVzX00n
ICUgcmVwbGFjZW1lbnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0FTU0VSVF9UUlVFX00nXVtv
cF0gPSAnQVNTRVJUXyVzX00nICUgcmVwbGFjZW1lbnQKLQotZm9yIG9wLCBpbnZfcmVwbGFjZW1l
bnQgaW4gWygnPT0nLCAnTkUnKSwgKCchPScsICdFUScpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICgnPj0nLCAnTFQnKSwgKCc+JywgJ0xFJyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCc8PScsICdHVCcpLCAoJzwnLCAnR0UnKV06Ci0gICAgX0NIRUNLX1JFUExBQ0VNRU5U
WydFWFBFQ1RfRkFMU0UnXVtvcF0gPSAnRVhQRUNUXyVzJyAlIGludl9yZXBsYWNlbWVudAotICAg
IF9DSEVDS19SRVBMQUNFTUVOVFsnQVNTRVJUX0ZBTFNFJ11bb3BdID0gJ0FTU0VSVF8lcycgJSBp
bnZfcmVwbGFjZW1lbnQKLSAgICBfQ0hFQ0tfUkVQTEFDRU1FTlRbJ0VYUEVDVF9GQUxTRV9NJ11b
b3BdID0gJ0VYUEVDVF8lc19NJyAlIGludl9yZXBsYWNlbWVudAotICAgIF9DSEVDS19SRVBMQUNF
TUVOVFsnQVNTRVJUX0ZBTFNFX00nXVtvcF0gPSAnQVNTRVJUXyVzX00nICUgaW52X3JlcGxhY2Vt
ZW50Ci0KLQotIyBUaGVzZSBjb25zdGFudHMgZGVmaW5lIHR5cGVzIG9mIGhlYWRlcnMgZm9yIHVz
ZSB3aXRoCi0jIF9JbmNsdWRlU3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKCkuCi1fQ09O
RklHX0hFQURFUiA9IDAKLV9QUklNQVJZX0hFQURFUiA9IDEKLV9PVEhFUl9IRUFERVIgPSAyCi0K
LQotX3JlZ2V4cF9jb21waWxlX2NhY2hlID0ge30KLQotCi1kZWYgbWF0Y2gocGF0dGVybiwgcyk6
Ci0gICAgIiIiTWF0Y2hlcyB0aGUgc3RyaW5nIHdpdGggdGhlIHBhdHRlcm4sIGNhY2hpbmcgdGhl
IGNvbXBpbGVkIHJlZ2V4cC4iIiIKLSAgICAjIFRoZSByZWdleHAgY29tcGlsYXRpb24gY2FjaGlu
ZyBpcyBpbmxpbmVkIGluIGJvdGggbWF0Y2ggYW5kIHNlYXJjaCBmb3IKLSAgICAjIHBlcmZvcm1h
bmNlIHJlYXNvbnM7IGZhY3RvcmluZyBpdCBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHR1
cm5zIG91dAotICAgICMgdG8gYmUgbm90aWNlYWJseSBleHBlbnNpdmUuCi0gICAgaWYgbm90IHBh
dHRlcm4gaW4gX3JlZ2V4cF9jb21waWxlX2NhY2hlOgotICAgICAgICBfcmVnZXhwX2NvbXBpbGVf
Y2FjaGVbcGF0dGVybl0gPSBzcmVfY29tcGlsZS5jb21waWxlKHBhdHRlcm4pCi0gICAgcmV0dXJu
IF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0ZXJuXS5tYXRjaChzKQotCi0KLWRlZiBzZWFyY2go
cGF0dGVybiwgcyk6Ci0gICAgIiIiU2VhcmNoZXMgdGhlIHN0cmluZyBmb3IgdGhlIHBhdHRlcm4s
IGNhY2hpbmcgdGhlIGNvbXBpbGVkIHJlZ2V4cC4iIiIKLSAgICBpZiBub3QgcGF0dGVybiBpbiBf
cmVnZXhwX2NvbXBpbGVfY2FjaGU6Ci0gICAgICAgIF9yZWdleHBfY29tcGlsZV9jYWNoZVtwYXR0
ZXJuXSA9IHNyZV9jb21waWxlLmNvbXBpbGUocGF0dGVybikKLSAgICByZXR1cm4gX3JlZ2V4cF9j
b21waWxlX2NhY2hlW3BhdHRlcm5dLnNlYXJjaChzKQotCi0KLWNsYXNzIF9JbmNsdWRlU3RhdGUo
ZGljdCk6Ci0gICAgIiIiVHJhY2tzIGxpbmUgbnVtYmVycyBmb3IgaW5jbHVkZXMsIGFuZCB0aGUg
b3JkZXIgaW4gd2hpY2ggaW5jbHVkZXMgYXBwZWFyLgotCi0gICAgQXMgYSBkaWN0LCBhbiBfSW5j
bHVkZVN0YXRlIG9iamVjdCBzZXJ2ZXMgYXMgYSBtYXBwaW5nIGJldHdlZW4gaW5jbHVkZQotICAg
IGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciBvbiB3aGljaCB0aGF0IGZpbGUgd2FzIGluY2x1ZGVk
LgotCi0gICAgQ2FsbCBjaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoKSBvbmNlIGZvciBlYWNoIGhl
YWRlciBpbiB0aGUgZmlsZSwgcGFzc2luZwotICAgIGluIHRoZSB0eXBlIGNvbnN0YW50cyBkZWZp
bmVkIGFib3ZlLiBDYWxscyBpbiBhbiBpbGxlZ2FsIG9yZGVyIHdpbGwKLSAgICByYWlzZSBhbiBf
SW5jbHVkZUVycm9yIHdpdGggYW4gYXBwcm9wcmlhdGUgZXJyb3IgbWVzc2FnZS4KLQotICAgICIi
IgotICAgICMgc2VsZi5fc2VjdGlvbiB3aWxsIG1vdmUgbW9ub3RvbmljYWxseSB0aHJvdWdoIHRo
aXMgc2V0LiBJZiBpdCBldmVyCi0gICAgIyBuZWVkcyB0byBtb3ZlIGJhY2t3YXJkcywgY2hlY2tf
bmV4dF9pbmNsdWRlX29yZGVyIHdpbGwgcmFpc2UgYW4gZXJyb3IuCi0gICAgX0lOSVRJQUxfU0VD
VElPTiA9IDAKLSAgICBfQ09ORklHX1NFQ1RJT04gPSAxCi0gICAgX1BSSU1BUllfU0VDVElPTiA9
IDIKLSAgICBfT1RIRVJfU0VDVElPTiA9IDMKLQotICAgIF9UWVBFX05BTUVTID0gewotICAgICAg
ICBfQ09ORklHX0hFQURFUjogJ1dlYkNvcmUgY29uZmlnLmgnLAotICAgICAgICBfUFJJTUFSWV9I
RUFERVI6ICdoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMnLAotICAgICAgICBfT1RIRVJfSEVB
REVSOiAnb3RoZXIgaGVhZGVyJywKLSAgICAgICAgfQotICAgIF9TRUNUSU9OX05BTUVTID0gewot
ICAgICAgICBfSU5JVElBTF9TRUNUSU9OOiAiLi4uIG5vdGhpbmcuIiwKLSAgICAgICAgX0NPTkZJ
R19TRUNUSU9OOiAiV2ViQ29yZSBjb25maWcuaC4iLAotICAgICAgICBfUFJJTUFSWV9TRUNUSU9O
OiAnYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJywKLSAgICAgICAgX09USEVSX1NFQ1RJ
T046ICdvdGhlciBoZWFkZXIuJywKLSAgICAgICAgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBkaWN0Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3NlY3Rpb24gPSBz
ZWxmLl9JTklUSUFMX1NFQ1RJT04KLSAgICAgICAgc2VsZi5fdmlzaXRlZF9wcmltYXJ5X3NlY3Rp
b24gPSBGYWxzZQotICAgICAgICBzZWxmLmhlYWRlcl90eXBlcyA9IGRpY3QoKTsKLQotICAgIGRl
ZiB2aXNpdGVkX3ByaW1hcnlfc2VjdGlvbihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Zp
c2l0ZWRfcHJpbWFyeV9zZWN0aW9uCi0KLSAgICBkZWYgY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KHNlbGYsIGhlYWRlcl90eXBlLCBmaWxlX2lzX2hlYWRlcik6Ci0gICAgICAgICIiIlJldHVybnMg
YSBub24tZW1wdHkgZXJyb3IgbWVzc2FnZSBpZiB0aGUgbmV4dCBoZWFkZXIgaXMgb3V0IG9mIG9y
ZGVyLgotCi0gICAgICAgIFRoaXMgZnVuY3Rpb24gYWxzbyB1cGRhdGVzIHRoZSBpbnRlcm5hbCBz
dGF0ZSB0byBiZSByZWFkeSB0byBjaGVjawotICAgICAgICB0aGUgbmV4dCBpbmNsdWRlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgaGVhZGVyX3R5cGU6IE9uZSBvZiB0aGUgX1hYWF9IRUFE
RVIgY29uc3RhbnRzIGRlZmluZWQgYWJvdmUuCi0gICAgICAgICAgZmlsZV9pc19oZWFkZXI6IFdo
ZXRoZXIgdGhlIGZpbGUgdGhhdCBvd25zIHRoaXMgX0luY2x1ZGVTdGF0ZSBpcyBpdHNlbGYgYSBo
ZWFkZXIKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIFRoZSBlbXB0eSBzdHJpbmcgaWYg
dGhlIGhlYWRlciBpcyBpbiB0aGUgcmlnaHQgb3JkZXIsIG9yIGFuCi0gICAgICAgICAgZXJyb3Ig
bWVzc2FnZSBkZXNjcmliaW5nIHdoYXQncyB3cm9uZy4KLQotICAgICAgICAiIiIKLSAgICAgICAg
aWYgaGVhZGVyX3R5cGUgPT0gX0NPTkZJR19IRUFERVIgYW5kIGZpbGVfaXNfaGVhZGVyOgotICAg
ICAgICAgICAgcmV0dXJuICdIZWFkZXIgZmlsZSBzaG91bGQgbm90IGNvbnRhaW4gV2ViQ29yZSBj
b25maWcuaC4nCi0gICAgICAgIGlmIGhlYWRlcl90eXBlID09IF9QUklNQVJZX0hFQURFUiBhbmQg
ZmlsZV9pc19oZWFkZXI6Ci0gICAgICAgICAgICByZXR1cm4gJ0hlYWRlciBmaWxlIHNob3VsZCBu
b3QgY29udGFpbiBpdHNlbGYuJwotCi0gICAgICAgIGVycm9yX21lc3NhZ2UgPSAnJwotICAgICAg
ICBpZiBzZWxmLl9zZWN0aW9uICE9IHNlbGYuX09USEVSX1NFQ1RJT046Ci0gICAgICAgICAgICBi
ZWZvcmVfZXJyb3JfbWVzc2FnZSA9ICgnRm91bmQgJXMgYmVmb3JlICVzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fVFlQRV9OQU1FU1toZWFkZXJfdHlwZV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fU0VDVElPTl9OQU1F
U1tzZWxmLl9zZWN0aW9uICsgMV0pKQotICAgICAgICBhZnRlcl9lcnJvcl9tZXNzYWdlID0gKCdG
b3VuZCAlcyBhZnRlciAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2Vs
Zi5fVFlQRV9OQU1FU1toZWFkZXJfdHlwZV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9TRUNUSU9OX05BTUVTW3NlbGYuX3NlY3Rpb25dKSkKLQotICAgICAgICBpZiBo
ZWFkZXJfdHlwZSA9PSBfQ09ORklHX0hFQURFUjoKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlY3Rp
b24gPj0gc2VsZi5fQ09ORklHX1NFQ1RJT046Ci0gICAgICAgICAgICAgICAgZXJyb3JfbWVzc2Fn
ZSA9IGFmdGVyX2Vycm9yX21lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxm
Ll9DT05GSUdfU0VDVElPTgotICAgICAgICBlbGlmIGhlYWRlcl90eXBlID09IF9QUklNQVJZX0hF
QURFUjoKLSAgICAgICAgICAgIGlmIHNlbGYuX3NlY3Rpb24gPj0gc2VsZi5fUFJJTUFSWV9TRUNU
SU9OOgotICAgICAgICAgICAgICAgIGVycm9yX21lc3NhZ2UgPSBhZnRlcl9lcnJvcl9tZXNzYWdl
Ci0gICAgICAgICAgICBlbGlmIHNlbGYuX3NlY3Rpb24gPCBzZWxmLl9DT05GSUdfU0VDVElPTjoK
LSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gYmVmb3JlX2Vycm9yX21lc3NhZ2UKLSAg
ICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxmLl9QUklNQVJZX1NFQ1RJT04KLSAgICAgICAg
ICAgIHNlbGYuX3Zpc2l0ZWRfcHJpbWFyeV9zZWN0aW9uID0gVHJ1ZQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYXNzZXJ0IGhlYWRlcl90eXBlID09IF9PVEhFUl9IRUFERVIKLSAgICAgICAg
ICAgIGlmIG5vdCBmaWxlX2lzX2hlYWRlciBhbmQgc2VsZi5fc2VjdGlvbiA8IHNlbGYuX1BSSU1B
UllfU0VDVElPTjoKLSAgICAgICAgICAgICAgICBlcnJvcl9tZXNzYWdlID0gYmVmb3JlX2Vycm9y
X21lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuX3NlY3Rpb24gPSBzZWxmLl9PVEhFUl9TRUNUSU9O
Ci0KLSAgICAgICAgcmV0dXJuIGVycm9yX21lc3NhZ2UKLQotCi1jbGFzcyBfQ3BwTGludFN0YXRl
KG9iamVjdCk6Ci0gICAgIiIiTWFpbnRhaW5zIG1vZHVsZS13aWRlIHN0YXRlLi4iIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi52ZXJib3NlX2xldmVsID0gMSAgIyBn
bG9iYWwgc2V0dGluZy4KLSAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9IDAgICAgIyBnbG9iYWwg
Y291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzCi0gICAgICAgICMgZmlsdGVycyB0byBhcHBseSB3aGVu
IGVtaXR0aW5nIGVycm9yIG1lc3NhZ2VzCi0gICAgICAgIHNlbGYuZmlsdGVycyA9IF9ERUZBVUxU
X0ZJTFRFUlNbOl0KLQotICAgICAgICAjIG91dHB1dCBmb3JtYXQ6Ci0gICAgICAgICMgImVtYWNz
IiAtIGZvcm1hdCB0aGF0IGVtYWNzIGNhbiBwYXJzZSAoZGVmYXVsdCkKLSAgICAgICAgIyAidnM3
IiAtIGZvcm1hdCB0aGF0IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDcgY2FuIHBhcnNlCi0gICAg
ICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9ICdlbWFjcycKLQotICAgIGRlZiBzZXRfb3V0cHV0X2Zv
cm1hdChzZWxmLCBvdXRwdXRfZm9ybWF0KToKLSAgICAgICAgIiIiU2V0cyB0aGUgb3V0cHV0IGZv
cm1hdCBmb3IgZXJyb3JzLiIiIgotICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBvdXRwdXRf
Zm9ybWF0Ci0KLSAgICBkZWYgc2V0X3ZlcmJvc2VfbGV2ZWwoc2VsZiwgbGV2ZWwpOgotICAgICAg
ICAiIiJTZXRzIHRoZSBtb2R1bGUncyB2ZXJib3NpdHksIGFuZCByZXR1cm5zIHRoZSBwcmV2aW91
cyBzZXR0aW5nLiIiIgotICAgICAgICBsYXN0X3ZlcmJvc2VfbGV2ZWwgPSBzZWxmLnZlcmJvc2Vf
bGV2ZWwKLSAgICAgICAgc2VsZi52ZXJib3NlX2xldmVsID0gbGV2ZWwKLSAgICAgICAgcmV0dXJu
IGxhc3RfdmVyYm9zZV9sZXZlbAotCi0gICAgZGVmIHNldF9maWx0ZXJzKHNlbGYsIGZpbHRlcnMp
OgotICAgICAgICAiIiJTZXRzIHRoZSBlcnJvci1tZXNzYWdlIGZpbHRlcnMuCi0KLSAgICAgICAg
VGhlc2UgZmlsdGVycyBhcmUgYXBwbGllZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gZW1pdCBh
IGdpdmVuCi0gICAgICAgIGVycm9yIG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICBmaWx0ZXJzOiBBIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgZmlsdGVycyAoZWcgIit3aGl0
ZXNwYWNlL2luZGVudCIpLgotICAgICAgICAgICAgICAgICAgIEVhY2ggZmlsdGVyIHNob3VsZCBz
dGFydCB3aXRoICsgb3IgLTsgZWxzZSB3ZSBkaWUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAg
ICAgIFZhbHVlRXJyb3I6IFRoZSBjb21tYS1zZXBhcmF0ZWQgZmlsdGVycyBkaWQgbm90IGFsbCBz
dGFydCB3aXRoICcrJyBvciAnLScuCi0gICAgICAgICAgICAgICAgICAgICAgRS5nLiAiLSwrd2hp
dGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRlbnQsd2hpdGVzcGFjZS9iYWRmaWx0ZXIiCi0gICAgICAg
ICIiIgotICAgICAgICAjIERlZmF1bHQgZmlsdGVycyBhbHdheXMgaGF2ZSBsZXNzIHByaW9yaXR5
IHRoYW4gdGhlIGZsYWcgb25lcy4KLSAgICAgICAgc2VsZi5maWx0ZXJzID0gX0RFRkFVTFRfRklM
VEVSU1s6XQotICAgICAgICBmb3IgZmlsdGVyIGluIGZpbHRlcnMuc3BsaXQoJywnKToKLSAgICAg
ICAgICAgIGNsZWFuX2ZpbHRlciA9IGZpbHRlci5zdHJpcCgpCi0gICAgICAgICAgICBpZiBjbGVh
bl9maWx0ZXI6Ci0gICAgICAgICAgICAgICAgc2VsZi5maWx0ZXJzLmFwcGVuZChjbGVhbl9maWx0
ZXIpCi0gICAgICAgIGZvciBmaWx0ZXIgaW4gc2VsZi5maWx0ZXJzOgotICAgICAgICAgICAgaWYg
bm90IChmaWx0ZXIuc3RhcnRzd2l0aCgnKycpIG9yIGZpbHRlci5zdGFydHN3aXRoKCctJykpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0V2ZXJ5IGZpbHRlciBpbiAtLWZpbHRl
ciBtdXN0IHN0YXJ0IHdpdGggJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJysg
b3IgLSAoJXMgZG9lcyBub3QpJyAlIGZpbHRlcikKLQotICAgIGRlZiByZXNldF9lcnJvcl9jb3Vu
dChzZWxmKToKLSAgICAgICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3MgZXJyb3Igc3RhdGlzdGljIGJh
Y2sgdG8gemVyby4iIiIKLSAgICAgICAgc2VsZi5lcnJvcl9jb3VudCA9IDAKLQotICAgIGRlZiBp
bmNyZW1lbnRfZXJyb3JfY291bnQoc2VsZik6Ci0gICAgICAgICIiIkJ1bXBzIHRoZSBtb2R1bGUn
cyBlcnJvciBzdGF0aXN0aWMuIiIiCi0gICAgICAgIHNlbGYuZXJyb3JfY291bnQgKz0gMQotCi0K
LV9jcHBsaW50X3N0YXRlID0gX0NwcExpbnRTdGF0ZSgpCi0KLQotZGVmIF9vdXRwdXRfZm9ybWF0
KCk6Ci0gICAgIiIiR2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1hdC4iIiIKLSAgICByZXR1
cm4gX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdAotCi0KLWRlZiBfc2V0X291dHB1dF9mb3Jt
YXQob3V0cHV0X2Zvcm1hdCk6Ci0gICAgIiIiU2V0cyB0aGUgbW9kdWxlJ3Mgb3V0cHV0IGZvcm1h
dC4iIiIKLSAgICBfY3BwbGludF9zdGF0ZS5zZXRfb3V0cHV0X2Zvcm1hdChvdXRwdXRfZm9ybWF0
KQotCi0KLWRlZiBfdmVyYm9zZV9sZXZlbCgpOgotICAgICIiIlJldHVybnMgdGhlIG1vZHVsZSdz
IHZlcmJvc2l0eSBzZXR0aW5nLiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS52ZXJib3Nl
X2xldmVsCi0KLQotZGVmIF9zZXRfdmVyYm9zZV9sZXZlbChsZXZlbCk6Ci0gICAgIiIiU2V0cyB0
aGUgbW9kdWxlJ3MgdmVyYm9zaXR5LCBhbmQgcmV0dXJucyB0aGUgcHJldmlvdXMgc2V0dGluZy4i
IiIKLSAgICByZXR1cm4gX2NwcGxpbnRfc3RhdGUuc2V0X3ZlcmJvc2VfbGV2ZWwobGV2ZWwpCi0K
LQotZGVmIF9maWx0ZXJzKCk6Ci0gICAgIiIiUmV0dXJucyB0aGUgbW9kdWxlJ3MgbGlzdCBvZiBv
dXRwdXQgZmlsdGVycywgYXMgYSBsaXN0LiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5m
aWx0ZXJzCi0KLQotZGVmIF9zZXRfZmlsdGVycyhmaWx0ZXJzKToKLSAgICAiIiJTZXRzIHRoZSBt
b2R1bGUncyBlcnJvci1tZXNzYWdlIGZpbHRlcnMuCi0KLSAgICBUaGVzZSBmaWx0ZXJzIGFyZSBh
cHBsaWVkIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBlbWl0IGEgZ2l2ZW4KLSAgICBlcnJvciBt
ZXNzYWdlLgotCi0gICAgQXJnczoKLSAgICAgIGZpbHRlcnM6IEEgc3RyaW5nIG9mIGNvbW1hLXNl
cGFyYXRlZCBmaWx0ZXJzIChlZyAid2hpdGVzcGFjZS9pbmRlbnQiKS4KLSAgICAgICAgICAgICAg
IEVhY2ggZmlsdGVyIHNob3VsZCBzdGFydCB3aXRoICsgb3IgLTsgZWxzZSB3ZSBkaWUuCi0gICAg
IiIiCi0gICAgX2NwcGxpbnRfc3RhdGUuc2V0X2ZpbHRlcnMoZmlsdGVycykKLQotCi1kZWYgZXJy
b3JfY291bnQoKToKLSAgICAiIiJSZXR1cm5zIHRoZSBnbG9iYWwgY291bnQgb2YgcmVwb3J0ZWQg
ZXJyb3JzLiIiIgotICAgIHJldHVybiBfY3BwbGludF9zdGF0ZS5lcnJvcl9jb3VudAotCi0KLWNs
YXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6Ci0gICAgIiIiVHJhY2tzIGN1cnJlbnQgZnVuY3Rp
b24gbmFtZSBhbmQgdGhlIG51bWJlciBvZiBsaW5lcyBpbiBpdHMgYm9keS4iIiIKLQotICAgIF9O
T1JNQUxfVFJJR0dFUiA9IDI1MCAgIyBmb3IgLS12PTAsIDUwMCBmb3IgLS12PTEsIGV0Yy4KLSAg
ICBfVEVTVF9UUklHR0VSID0gNDAwICAgICMgYWJvdXQgNTAlIG1vcmUgdGhhbiBfTk9STUFMX1RS
SUdHRVIuCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuaW5fYV9mdW5j
dGlvbiA9IEZhbHNlCi0gICAgICAgIHNlbGYubGluZXNfaW5fZnVuY3Rpb24gPSAwCi0gICAgICAg
IHNlbGYuY3VycmVudF9mdW5jdGlvbiA9ICcnCi0KLSAgICBkZWYgYmVnaW4oc2VsZiwgZnVuY3Rp
b25fbmFtZSk6Ci0gICAgICAgICIiIlN0YXJ0IGFuYWx5emluZyBmdW5jdGlvbiBib2R5LgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmdW5jdGlvbl9uYW1lOiBUaGUgbmFtZSBvZiB0aGUg
ZnVuY3Rpb24gYmVpbmcgdHJhY2tlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuaW5fYV9m
dW5jdGlvbiA9IFRydWUKLSAgICAgICAgc2VsZi5saW5lc19pbl9mdW5jdGlvbiA9IDAKLSAgICAg
ICAgc2VsZi5jdXJyZW50X2Z1bmN0aW9uID0gZnVuY3Rpb25fbmFtZQotCi0gICAgZGVmIGNvdW50
KHNlbGYpOgotICAgICAgICAiIiJDb3VudCBsaW5lIGluIGN1cnJlbnQgZnVuY3Rpb24gYm9keS4i
IiIKLSAgICAgICAgaWYgc2VsZi5pbl9hX2Z1bmN0aW9uOgotICAgICAgICAgICAgc2VsZi5saW5l
c19pbl9mdW5jdGlvbiArPSAxCi0KLSAgICBkZWYgY2hlY2soc2VsZiwgZXJyb3IsIGZpbGVuYW1l
LCBsaW5lX251bWJlcik6Ci0gICAgICAgICIiIlJlcG9ydCBpZiB0b28gbWFueSBsaW5lcyBpbiBm
dW5jdGlvbiBib2R5LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZXJyb3I6IFRoZSBmdW5j
dGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAgICAgICBmaWxlbmFtZTog
VGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgICAgICBsaW5lX251bWJlcjogVGhl
IG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIG1h
dGNoKHInVChFU1R8ZXN0KScsIHNlbGYuY3VycmVudF9mdW5jdGlvbik6Ci0gICAgICAgICAgICBi
YXNlX3RyaWdnZXIgPSBzZWxmLl9URVNUX1RSSUdHRVIKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGJhc2VfdHJpZ2dlciA9IHNlbGYuX05PUk1BTF9UUklHR0VSCi0gICAgICAgIHRyaWdnZXIg
PSBiYXNlX3RyaWdnZXIgKiAyICoqIF92ZXJib3NlX2xldmVsKCkKLQotICAgICAgICBpZiBzZWxm
LmxpbmVzX2luX2Z1bmN0aW9uID4gdHJpZ2dlcjoKLSAgICAgICAgICAgIGVycm9yX2xldmVsID0g
aW50KG1hdGgubG9nKHNlbGYubGluZXNfaW5fZnVuY3Rpb24gLyBiYXNlX3RyaWdnZXIsIDIpKQot
ICAgICAgICAgICAgIyA1MCA9PiAwLCAxMDAgPT4gMSwgMjAwID0+IDIsIDQwMCA9PiAzLCA4MDAg
PT4gNCwgMTYwMCA9PiA1LCAuLi4KLSAgICAgICAgICAgIGlmIGVycm9yX2xldmVsID4gNToKLSAg
ICAgICAgICAgICAgICBlcnJvcl9sZXZlbCA9IDUKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2ZuX3NpemUnLCBlcnJvcl9sZXZlbCwKLSAgICAg
ICAgICAgICAgICAgICdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDon
Ci0gICAgICAgICAgICAgICAgICAnICVzIGhhcyAlZCBub24tY29tbWVudCBsaW5lcycKLSAgICAg
ICAgICAgICAgICAgICcgKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicg
ICUgKAotICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudF9mdW5jdGlvbiwgc2VsZi5s
aW5lc19pbl9mdW5jdGlvbiwgdHJpZ2dlcikpCi0KLSAgICBkZWYgZW5kKHNlbGYpOgotICAgICAg
ICAiIiJTdG9wIGFuYWxpemluZyBmdW5jdGlvbiBib2R5LiIiIgotICAgICAgICBzZWxmLmluX2Ff
ZnVuY3Rpb24gPSBGYWxzZQotCi0KLWNsYXNzIF9JbmNsdWRlRXJyb3IoRXhjZXB0aW9uKToKLSAg
ICAiIiJJbmRpY2F0ZXMgYSBwcm9ibGVtIHdpdGggdGhlIGluY2x1ZGUgb3JkZXIgaW4gYSBmaWxl
LiIiIgotICAgIHBhc3MKLQotCi1jbGFzcyBGaWxlSW5mbzoKLSAgICAiIiJQcm92aWRlcyB1dGls
aXR5IGZ1bmN0aW9ucyBmb3IgZmlsZW5hbWVzLgotCi0gICAgRmlsZUluZm8gcHJvdmlkZXMgZWFz
eSBhY2Nlc3MgdG8gdGhlIGNvbXBvbmVudHMgb2YgYSBmaWxlJ3MgcGF0aAotICAgIHJlbGF0aXZl
IHRvIHRoZSBwcm9qZWN0IHJvb3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZW5hbWUpOgotICAgICAgICBzZWxmLl9maWxlbmFtZSA9IGZpbGVuYW1lCi0KLSAgICBkZWYg
ZnVsbF9uYW1lKHNlbGYpOgotICAgICAgICAiIiJNYWtlIFdpbmRvd3MgcGF0aHMgbGlrZSBVbml4
LiIiIgotICAgICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKHNlbGYuX2ZpbGVuYW1lKS5yZXBs
YWNlKCdcXCcsICcvJykKLQotICAgIGRlZiByZXBvc2l0b3J5X25hbWUoc2VsZik6Ci0gICAgICAg
ICIiIkZ1bGwgbmFtZSBhZnRlciByZW1vdmluZyB0aGUgbG9jYWwgcGF0aCB0byB0aGUgcmVwb3Np
dG9yeS4KLQotICAgICAgICBJZiB3ZSBoYXZlIGEgcmVhbCBhYnNvbHV0ZSBwYXRoIG5hbWUgaGVy
ZSB3ZSBjYW4gdHJ5IHRvIGRvIHNvbWV0aGluZyBzbWFydDoKLSAgICAgICAgZGV0ZWN0aW5nIHRo
ZSByb290IG9mIHRoZSBjaGVja291dCBhbmQgdHJ1bmNhdGluZyAvcGF0aC90by9jaGVja291dCBm
cm9tCi0gICAgICAgIHRoZSBuYW1lIHNvIHRoYXQgd2UgZ2V0IGhlYWRlciBndWFyZHMgdGhhdCBk
b24ndCBpbmNsdWRlIHRoaW5ncyBsaWtlCi0gICAgICAgICJDOlxEb2N1bWVudHMgYW5kIFNldHRp
bmdzXC4uLiIgb3IgIi9ob21lL3VzZXJuYW1lLy4uLiIgaW4gdGhlbSBhbmQgdGh1cwotICAgICAg
ICBwZW9wbGUgb24gZGlmZmVyZW50IGNvbXB1dGVycyB3aG8gaGF2ZSBjaGVja2VkIHRoZSBzb3Vy
Y2Ugb3V0IHRvIGRpZmZlcmVudAotICAgICAgICBsb2NhdGlvbnMgd29uJ3Qgc2VlIGJvZ3VzIGVy
cm9ycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZ1bGxuYW1lID0gc2VsZi5mdWxsX25hbWUoKQot
Ci0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ1bGxuYW1lKToKLSAgICAgICAgICAgIHByb2pl
Y3RfZGlyID0gb3MucGF0aC5kaXJuYW1lKGZ1bGxuYW1lKQotCi0gICAgICAgICAgICBpZiBvcy5w
YXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4ocHJvamVjdF9kaXIsICIuc3ZuIikpOgotICAgICAgICAg
ICAgICAgICMgSWYgdGhlcmUncyBhIC5zdm4gZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnks
IHdlCi0gICAgICAgICAgICAgICAgIyByZWN1cnNpdmVseSBsb29rIHVwIHRoZSBkaXJlY3Rvcnkg
dHJlZSBmb3IgdGhlIHRvcAotICAgICAgICAgICAgICAgICMgb2YgdGhlIFNWTiBjaGVja291dAot
ICAgICAgICAgICAgICAgIHJvb3RfZGlyID0gcHJvamVjdF9kaXIKLSAgICAgICAgICAgICAgICBv
bmVfdXBfZGlyID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQotICAgICAgICAgICAgICAgIHdo
aWxlIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihvbmVfdXBfZGlyLCAiLnN2biIpKToKLSAg
ICAgICAgICAgICAgICAgICAgcm9vdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUocm9vdF9kaXIpCi0g
ICAgICAgICAgICAgICAgICAgIG9uZV91cF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob25lX3VwX2Rp
cikKLQotICAgICAgICAgICAgICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4KFtyb290
X2RpciwgcHJvamVjdF9kaXJdKQotICAgICAgICAgICAgICAgIHJldHVybiBmdWxsbmFtZVtsZW4o
cHJlZml4KSArIDE6XQotCi0gICAgICAgICAgICAjIE5vdCBTVk4/IFRyeSB0byBmaW5kIGEgZ2l0
IHRvcCBsZXZlbCBkaXJlY3RvcnkgYnkKLSAgICAgICAgICAgICMgc2VhcmNoaW5nIHVwIGZyb20g
dGhlIGN1cnJlbnQgcGF0aC4KLSAgICAgICAgICAgIHJvb3RfZGlyID0gb3MucGF0aC5kaXJuYW1l
KGZ1bGxuYW1lKQotICAgICAgICAgICAgd2hpbGUgKHJvb3RfZGlyICE9IG9zLnBhdGguZGlybmFt
ZShyb290X2RpcikKLSAgICAgICAgICAgICAgICAgICBhbmQgbm90IG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSkpOgotICAgICAgICAgICAgICAgIHJvb3RfZGly
ID0gb3MucGF0aC5kaXJuYW1lKHJvb3RfZGlyKQotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGgu
ZXhpc3RzKG9zLnBhdGguam9pbihyb290X2RpciwgIi5naXQiKSk6Ci0gICAgICAgICAgICAgICAg
ICAgIHByZWZpeCA9IG9zLnBhdGguY29tbW9ucHJlZml4KFtyb290X2RpciwgcHJvamVjdF9kaXJd
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZnVsbG5hbWVbbGVuKHByZWZpeCkgKyAxOl0K
LQotICAgICAgICAjIERvbid0IGtub3cgd2hhdCB0byBkbzsgaGVhZGVyIGd1YXJkIHdhcm5pbmdz
IG1heSBiZSB3cm9uZy4uLgotICAgICAgICByZXR1cm4gZnVsbG5hbWUKLQotICAgIGRlZiBzcGxp
dChzZWxmKToKLSAgICAgICAgIiIiU3BsaXRzIHRoZSBmaWxlIGludG8gdGhlIGRpcmVjdG9yeSwg
YmFzZW5hbWUsIGFuZCBleHRlbnNpb24uCi0KLSAgICAgICAgRm9yICdjaHJvbWUvYnJvd3Nlci9i
cm93c2VyLmNwcCcsIFNwbGl0KCkgd291bGQKLSAgICAgICAgcmV0dXJuICgnY2hyb21lL2Jyb3dz
ZXInLCAnYnJvd3NlcicsICcuY3BwJykKLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIEEg
dHVwbGUgb2YgKGRpcmVjdG9yeSwgYmFzZW5hbWUsIGV4dGVuc2lvbikuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIGdvb2dsZW5hbWUgPSBzZWxmLnJlcG9zaXRvcnlfbmFtZSgpCi0gICAgICAgIHBy
b2plY3QsIHJlc3QgPSBvcy5wYXRoLnNwbGl0KGdvb2dsZW5hbWUpCi0gICAgICAgIHJldHVybiAo
cHJvamVjdCwpICsgb3MucGF0aC5zcGxpdGV4dChyZXN0KQotCi0gICAgZGVmIGJhc2VfbmFtZShz
ZWxmKToKLSAgICAgICAgIiIiRmlsZSBiYXNlIG5hbWUgLSB0ZXh0IGFmdGVyIHRoZSBmaW5hbCBz
bGFzaCwgYmVmb3JlIHRoZSBmaW5hbCBwZXJpb2QuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnNw
bGl0KClbMV0KLQotICAgIGRlZiBleHRlbnNpb24oc2VsZik6Ci0gICAgICAgICIiIkZpbGUgZXh0
ZW5zaW9uIC0gdGV4dCBmb2xsb3dpbmcgdGhlIGZpbmFsIHBlcmlvZC4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuc3BsaXQoKVsyXQotCi0gICAgZGVmIG5vX2V4dGVuc2lvbihzZWxmKToKLSAgICAg
ICAgIiIiRmlsZSBoYXMgbm8gc291cmNlIGZpbGUgZXh0ZW5zaW9uLiIiIgotICAgICAgICByZXR1
cm4gJy8nLmpvaW4oc2VsZi5zcGxpdCgpWzA6Ml0pCi0KLSAgICBkZWYgaXNfc291cmNlKHNlbGYp
OgotICAgICAgICAiIiJGaWxlIGhhcyBhIHNvdXJjZSBmaWxlIGV4dGVuc2lvbi4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuZXh0ZW5zaW9uKClbMTpdIGluICgnYycsICdjYycsICdjcHAnLCAnY3h4
JykKLQotCi1kZWYgX3Nob3VsZF9wcmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5jZSk6Ci0g
ICAgIiIiUmV0dXJucyB0cnVlIGlmZiBjb25maWRlbmNlID49IHZlcmJvc2UsIGFuZCBjYXRlZ29y
eSBwYXNzZXMgZmlsdGVyLiIiIgotICAgICMgVGhlcmUgYXJlIHR3byB3YXlzIHdlIG1pZ2h0IGRl
Y2lkZSBub3QgdG8gcHJpbnQgYW4gZXJyb3IgbWVzc2FnZToKLSAgICAjIHRoZSB2ZXJib3NpdHkg
bGV2ZWwgaXNuJ3QgaGlnaCBlbm91Z2gsIG9yIHRoZSBmaWx0ZXJzIGZpbHRlciBpdCBvdXQuCi0g
ICAgaWYgY29uZmlkZW5jZSA8IF9jcHBsaW50X3N0YXRlLnZlcmJvc2VfbGV2ZWw6Ci0gICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgaXNfZmlsdGVyZWQgPSBGYWxzZQotICAgIGZvciBvbmVfZmls
dGVyIGluIF9maWx0ZXJzKCk6Ci0gICAgICAgIGlmIG9uZV9maWx0ZXIuc3RhcnRzd2l0aCgnLScp
OgotICAgICAgICAgICAgaWYgY2F0ZWdvcnkuc3RhcnRzd2l0aChvbmVfZmlsdGVyWzE6XSk6Ci0g
ICAgICAgICAgICAgICAgaXNfZmlsdGVyZWQgPSBUcnVlCi0gICAgICAgIGVsaWYgb25lX2ZpbHRl
ci5zdGFydHN3aXRoKCcrJyk6Ci0gICAgICAgICAgICBpZiBjYXRlZ29yeS5zdGFydHN3aXRoKG9u
ZV9maWx0ZXJbMTpdKToKLSAgICAgICAgICAgICAgICBpc19maWx0ZXJlZCA9IEZhbHNlCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBhc3NlcnQgRmFsc2UgICMgc2hvdWxkIGhhdmUgYmVlbiBj
aGVja2VkIGZvciBpbiBzZXRfZmlsdGVyLgotICAgIGlmIGlzX2ZpbHRlcmVkOgotICAgICAgICBy
ZXR1cm4gRmFsc2UKLQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIGVycm9yKGZpbGVuYW1lLCBs
aW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgotICAgICIiIkxvZ3Mg
dGhlIGZhY3Qgd2UndmUgZm91bmQgYSBsaW50IGVycm9yLgotCi0gICAgV2UgbG9nIHdoZXJlIHRo
ZSBlcnJvciB3YXMgZm91bmQsIGFuZCBhbHNvIG91ciBjb25maWRlbmNlIGluIHRoZSBlcnJvciwK
LSAgICB0aGF0IGlzLCBob3cgY2VydGFpbiB3ZSBhcmUgdGhpcyBpcyBhIGxlZ2l0aW1hdGUgc3R5
bGUgcmVncmVzc2lvbiwgYW5kCi0gICAgbm90IGEgbWlzaWRlbnRpZmljYXRpb24gb3IgYSB1c2Ug
dGhhdCdzIHNvbWV0aW1lcyBqdXN0aWZpZWQuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGVycm9yLgotICAgICAgbGluZV9u
dW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgY29udGFpbmluZyB0aGUgZXJyb3IuCi0gICAg
ICBjYXRlZ29yeTogQSBzdHJpbmcgdXNlZCB0byBkZXNjcmliZSB0aGUgImNhdGVnb3J5IiB0aGlz
IGJ1ZwotICAgICAgICAgICAgICAgIGZhbGxzIHVuZGVyOiAid2hpdGVzcGFjZSIsIHNheSwgb3Ig
InJ1bnRpbWUiLiAgQ2F0ZWdvcmllcwotICAgICAgICAgICAgICAgIG1heSBoYXZlIGEgaGllcmFy
Y2h5IHNlcGFyYXRlZCBieSBzbGFzaGVzOiAid2hpdGVzcGFjZS9pbmRlbnQiLgotICAgICAgY29u
ZmlkZW5jZTogQSBudW1iZXIgZnJvbSAxLTUgcmVwcmVzZW50aW5nIGEgY29uZmlkZW5jZSBzY29y
ZSBmb3IKLSAgICAgICAgICAgICAgICAgIHRoZSBlcnJvciwgd2l0aCA1IG1lYW5pbmcgdGhhdCB3
ZSBhcmUgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwKLSAgICAgICAgICAgICAgICAgIGFuZCAxIG1l
YW5pbmcgdGhhdCBpdCBjb3VsZCBiZSBhIGxlZ2l0aW1hdGUgY29uc3RydWN0LgotICAgICAgbWVz
c2FnZTogVGhlIGVycm9yIG1lc3NhZ2UuCi0gICAgIiIiCi0gICAgIyBUaGVyZSBhcmUgdHdvIHdh
eXMgd2UgbWlnaHQgZGVjaWRlIG5vdCB0byBwcmludCBhbiBlcnJvciBtZXNzYWdlOgotICAgICMg
dGhlIHZlcmJvc2l0eSBsZXZlbCBpc24ndCBoaWdoIGVub3VnaCwgb3IgdGhlIGZpbHRlcnMgZmls
dGVyIGl0IG91dC4KLSAgICBpZiBfc2hvdWxkX3ByaW50X2Vycm9yKGNhdGVnb3J5LCBjb25maWRl
bmNlKToKLSAgICAgICAgX2NwcGxpbnRfc3RhdGUuaW5jcmVtZW50X2Vycm9yX2NvdW50KCkKLSAg
ICAgICAgaWYgX2NwcGxpbnRfc3RhdGUub3V0cHV0X2Zvcm1hdCA9PSAndnM3JzoKLSAgICAgICAg
ICAgIHN5cy5zdGRlcnIud3JpdGUoJyVzKCVzKTogICVzICBbJXNdIFslZF1cbicgJSAoCi0gICAg
ICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCBtZXNzYWdlLCBjYXRlZ29yeSwgY29u
ZmlkZW5jZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcl
czolczogICVzICBbJXNdIFslZF1cbicgJSAoCi0gICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCBtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5jZSkpCi0KLQotIyBNYXRjaGVz
IHN0YW5kYXJkIEMrKyBlc2NhcGUgZXNlcXVlbmNlcyBwZXIgMi4xMy4yLjMgb2YgdGhlIEMrKyBz
dGFuZGFyZC4KLV9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9FU0NBUEVTID0gcmUuY29tcGlsZSgK
LSAgICByJ1xcKFthYmZucnR2PyJcXFwnXXxcZCt8eFswLTlhLWZBLUZdKyknKQotIyBNYXRjaGVz
IHN0cmluZ3MuICBFc2NhcGUgY29kZXMgc2hvdWxkIGFscmVhZHkgYmUgcmVtb3ZlZCBieSBFU0NB
UEVTLgotX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0RPVUJMRV9RVU9URVMgPSByZS5jb21waWxl
KHInIlteIl0qIicpCi0jIE1hdGNoZXMgY2hhcmFjdGVycy4gIEVzY2FwZSBjb2RlcyBzaG91bGQg
YWxyZWFkeSBiZSByZW1vdmVkIGJ5IEVTQ0FQRVMuCi1fUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVf
U0lOR0xFX1FVT1RFUyA9IHJlLmNvbXBpbGUociInLiciKQotIyBNYXRjaGVzIG11bHRpLWxpbmUg
QysrIGNvbW1lbnRzLgotIyBUaGlzIFJFIGlzIGEgbGl0dGxlIGJpdCBtb3JlIGNvbXBsaWNhdGVk
IHRoYW4gb25lIG1pZ2h0IGV4cGVjdCwgYmVjYXVzZSB3ZQotIyBoYXZlIHRvIHRha2UgY2FyZSBv
ZiBzcGFjZSByZW1vdmFscyB0b29scyBzbyB3ZSBjYW4gaGFuZGxlIGNvbW1lbnRzIGluc2lkZQot
IyBzdGF0ZW1lbnRzIGJldHRlci4KLSMgVGhlIGN1cnJlbnQgcnVsZSBpczogV2Ugb25seSBjbGVh
ciBzcGFjZXMgZnJvbSBib3RoIHNpZGVzIHdoZW4gd2UncmUgYXQgdGhlCi0jIGVuZCBvZiB0aGUg
bGluZS4gT3RoZXJ3aXNlLCB3ZSB0cnkgdG8gcmVtb3ZlIHNwYWNlcyBmcm9tIHRoZSByaWdodCBz
aWRlLAotIyBpZiB0aGlzIGRvZXNuJ3Qgd29yayB3ZSB0cnkgb24gbGVmdCBzaWRlIGJ1dCBvbmx5
IGlmIHRoZXJlJ3MgYSBub24tY2hhcmFjdGVyCi0jIG9uIHRoZSByaWdodC4KLV9SRV9QQVRURVJO
X0NMRUFOU0VfTElORV9DX0NPTU1FTlRTID0gcmUuY29tcGlsZSgKLSAgICByIiIiKFxzKi9cKi4q
XCovXHMqJHwKLSAgICAgICAgICAgIC9cKi4qXCovXHMrfAotICAgICAgICAgXHMrL1wqLipcKi8o
Pz1cVyl8Ci0gICAgICAgICAgICAvXCouKlwqLykiIiIsIHJlLlZFUkJPU0UpCi0KLQotZGVmIGlz
X2NwcF9zdHJpbmcobGluZSk6Ci0gICAgIiIiRG9lcyBsaW5lIHRlcm1pbmF0ZSBzbywgdGhhdCB0
aGUgbmV4dCBzeW1ib2wgaXMgaW4gc3RyaW5nIGNvbnN0YW50LgotCi0gICAgVGhpcyBmdW5jdGlv
biBkb2VzIG5vdCBjb25zaWRlciBzaW5nbGUtbGluZSBub3IgbXVsdGktbGluZSBjb21tZW50cy4K
LQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBpcyBhIHBhcnRpYWwgbGluZSBvZiBjb2RlIHN0YXJ0
aW5nIGZyb20gdGhlIDAuLm4uCi0KLSAgICBSZXR1cm5zOgotICAgICAgVHJ1ZSwgaWYgbmV4dCBj
aGFyYWN0ZXIgYXBwZW5kZWQgdG8gJ2xpbmUnIGlzIGluc2lkZSBhCi0gICAgICBzdHJpbmcgY29u
c3RhbnQuCi0gICAgIiIiCi0KLSAgICBsaW5lID0gbGluZS5yZXBsYWNlKHInXFwnLCAnWFgnKSAg
IyBhZnRlciB0aGlzLCBcXCIgZG9lcyBub3QgbWF0Y2ggdG8gXCIKLSAgICByZXR1cm4gKChsaW5l
LmNvdW50KCciJykgLSBsaW5lLmNvdW50KHInXCInKSAtIGxpbmUuY291bnQoIidcIiciKSkgJiAx
KSA9PSAxCi0KLQotZGVmIGZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMs
IGxpbmVfaW5kZXgpOgotICAgICIiIkZpbmQgdGhlIGJlZ2lubmluZyBtYXJrZXIgZm9yIGEgbXVs
dGlsaW5lIGNvbW1lbnQuIiIiCi0gICAgd2hpbGUgbGluZV9pbmRleCA8IGxlbihsaW5lcyk6Ci0g
ICAgICAgIGlmIGxpbmVzW2xpbmVfaW5kZXhdLnN0cmlwKCkuc3RhcnRzd2l0aCgnLyonKToKLSAg
ICAgICAgICAgICMgT25seSByZXR1cm4gdGhpcyBtYXJrZXIgaWYgdGhlIGNvbW1lbnQgZ29lcyBi
ZXlvbmQgdGhpcyBsaW5lCi0gICAgICAgICAgICBpZiBsaW5lc1tsaW5lX2luZGV4XS5zdHJpcCgp
LmZpbmQoJyovJywgMikgPCAwOgotICAgICAgICAgICAgICAgIHJldHVybiBsaW5lX2luZGV4Ci0g
ICAgICAgIGxpbmVfaW5kZXggKz0gMQotICAgIHJldHVybiBsZW4obGluZXMpCi0KLQotZGVmIGZp
bmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCBsaW5lX2luZGV4KToKLSAgICAi
IiJXZSBhcmUgaW5zaWRlIGEgY29tbWVudCwgZmluZCB0aGUgZW5kIG1hcmtlci4iIiIKLSAgICB3
aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToKLSAgICAgICAgaWYgbGluZXNbbGluZV9pbmRl
eF0uc3RyaXAoKS5lbmRzd2l0aCgnKi8nKToKLSAgICAgICAgICAgIHJldHVybiBsaW5lX2luZGV4
Ci0gICAgICAgIGxpbmVfaW5kZXggKz0gMQotICAgIHJldHVybiBsZW4obGluZXMpCi0KLQotZGVm
IHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2UobGluZXMsIGJlZ2luLCBlbmQp
OgotICAgICIiIkNsZWFycyBhIHJhbmdlIG9mIGxpbmVzIGZvciBtdWx0aS1saW5lIGNvbW1lbnRz
LiIiIgotICAgICMgSGF2aW5nIC8vIGR1bW15IGNvbW1lbnRzIG1ha2VzIHRoZSBsaW5lcyBub24t
ZW1wdHksIHNvIHdlIHdpbGwgbm90IGdldAotICAgICMgdW5uZWNlc3NhcnkgYmxhbmsgbGluZSB3
YXJuaW5ncyBsYXRlciBpbiB0aGUgY29kZS4KLSAgICBmb3IgaSBpbiByYW5nZShiZWdpbiwgZW5k
KToKLSAgICAgICAgbGluZXNbaV0gPSAnLy8gZHVtbXknCi0KLQotZGVmIHJlbW92ZV9tdWx0aV9s
aW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgotICAgICIiIlJlbW92ZXMgbXVs
dGlsaW5lIChjLXN0eWxlKSBjb21tZW50cyBmcm9tIGxpbmVzLiIiIgotICAgIGxpbmVfaW5kZXgg
PSAwCi0gICAgd2hpbGUgbGluZV9pbmRleCA8IGxlbihsaW5lcyk6Ci0gICAgICAgIGxpbmVfaW5k
ZXhfYmVnaW4gPSBmaW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0KGxpbmVzLCBsaW5l
X2luZGV4KQotICAgICAgICBpZiBsaW5lX2luZGV4X2JlZ2luID49IGxlbihsaW5lcyk6Ci0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgbGluZV9pbmRleF9lbmQgPSBmaW5kX25leHRfbXVsdGlf
bGluZV9jb21tZW50X2VuZChsaW5lcywgbGluZV9pbmRleF9iZWdpbikKLSAgICAgICAgaWYgbGlu
ZV9pbmRleF9lbmQgPj0gbGVuKGxpbmVzKToKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBs
aW5lX2luZGV4X2JlZ2luICsgMSwgJ3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywgNSwK
LSAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21t
ZW50JykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZW1vdmVfbXVsdGlfbGluZV9jb21t
ZW50c19mcm9tX3JhbmdlKGxpbmVzLCBsaW5lX2luZGV4X2JlZ2luLCBsaW5lX2luZGV4X2VuZCAr
IDEpCi0gICAgICAgIGxpbmVfaW5kZXggPSBsaW5lX2luZGV4X2VuZCArIDEKLQotCi1kZWYgY2xl
YW5zZV9jb21tZW50cyhsaW5lKToKLSAgICAiIiJSZW1vdmVzIC8vLWNvbW1lbnRzIGFuZCBzaW5n
bGUtbGluZSBDLXN0eWxlIC8qICovIGNvbW1lbnRzLgotCi0gICAgQXJnczoKLSAgICAgIGxpbmU6
IEEgbGluZSBvZiBDKysgc291cmNlLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRoZSBsaW5lIHdp
dGggc2luZ2xlLWxpbmUgY29tbWVudHMgcmVtb3ZlZC4KLSAgICAiIiIKLSAgICBjb21tZW50X3Bv
c2l0aW9uID0gbGluZS5maW5kKCcvLycpCi0gICAgaWYgY29tbWVudF9wb3NpdGlvbiAhPSAtMSBh
bmQgbm90IGlzX2NwcF9zdHJpbmcobGluZVs6Y29tbWVudF9wb3NpdGlvbl0pOgotICAgICAgICBs
aW5lID0gbGluZVs6Y29tbWVudF9wb3NpdGlvbl0KLSAgICAjIGdldCByaWQgb2YgLyogLi4uICov
Ci0gICAgcmV0dXJuIF9SRV9QQVRURVJOX0NMRUFOU0VfTElORV9DX0NPTU1FTlRTLnN1YignJywg
bGluZSkKLQotCi1jbGFzcyBDbGVhbnNlZExpbmVzKG9iamVjdCk6Ci0gICAgIiIiSG9sZHMgMyBj
b3BpZXMgb2YgYWxsIGxpbmVzIHdpdGggZGlmZmVyZW50IHByZXByb2Nlc3NpbmcgYXBwbGllZCB0
byB0aGVtLgotCi0gICAgMSkgZWxpZGVkIG1lbWJlciBjb250YWlucyBsaW5lcyB3aXRob3V0IHN0
cmluZ3MgYW5kIGNvbW1lbnRzLAotICAgIDIpIGxpbmVzIG1lbWJlciBjb250YWlucyBsaW5lcyB3
aXRob3V0IGNvbW1lbnRzLCBhbmQKLSAgICAzKSByYXcgbWVtYmVyIGNvbnRhaW5zIGFsbCB0aGUg
bGluZXMgd2l0aG91dCBwcm9jZXNzaW5nLgotICAgIEFsbCB0aGVzZSB0aHJlZSBtZW1iZXJzIGFy
ZSBvZiA8dHlwZSAnbGlzdCc+LCBhbmQgb2YgdGhlIHNhbWUgbGVuZ3RoLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5lbGlkZWQgPSBbXQot
ICAgICAgICBzZWxmLmxpbmVzID0gW10KLSAgICAgICAgc2VsZi5yYXdfbGluZXMgPSBsaW5lcwot
ICAgICAgICBzZWxmLl9udW1fbGluZXMgPSBsZW4obGluZXMpCi0gICAgICAgIGZvciBsaW5lX251
bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIHNlbGYubGluZXMuYXBwZW5k
KGNsZWFuc2VfY29tbWVudHMobGluZXNbbGluZV9udW1iZXJdKSkKLSAgICAgICAgICAgIGVsaWRl
ZCA9IHNlbGYuY29sbGFwc2Vfc3RyaW5ncyhsaW5lc1tsaW5lX251bWJlcl0pCi0gICAgICAgICAg
ICBzZWxmLmVsaWRlZC5hcHBlbmQoY2xlYW5zZV9jb21tZW50cyhlbGlkZWQpKQotCi0gICAgZGVm
IG51bV9saW5lcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgbnVtYmVyIG9mIGxpbmVz
IHJlcHJlc2VudGVkLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbnVtX2xpbmVzCi0KLSAgICBA
c3RhdGljbWV0aG9kCi0gICAgZGVmIGNvbGxhcHNlX3N0cmluZ3MoZWxpZGVkKToKLSAgICAgICAg
IiIiQ29sbGFwc2VzIHN0cmluZ3MgYW5kIGNoYXJzIG9uIGEgbGluZSB0byBzaW1wbGUgIiIgb3Ig
JycgYmxvY2tzLgotCi0gICAgICAgIFdlIG5peCBzdHJpbmdzIGZpcnN0IHNvIHdlJ3JlIG5vdCBm
b29sZWQgYnkgdGV4dCBsaWtlICciaHR0cDovLyInCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICBlbGlkZWQ6IFRoZSBsaW5lIGJlaW5nIHByb2Nlc3NlZC4KLQotICAgICAgICBSZXR1cm5zOgot
ICAgICAgICAgIFRoZSBsaW5lIHdpdGggY29sbGFwc2VkIHN0cmluZ3MuCi0gICAgICAgICIiIgot
ICAgICAgICBpZiBub3QgX1JFX1BBVFRFUk5fSU5DTFVERS5tYXRjaChlbGlkZWQpOgotICAgICAg
ICAgICAgIyBSZW1vdmUgZXNjYXBlZCBjaGFyYWN0ZXJzIGZpcnN0IHRvIG1ha2UgcXVvdGUvc2lu
Z2xlIHF1b3RlIGNvbGxhcHNpbmcKLSAgICAgICAgICAgICMgYmFzaWMuICBUaGluZ3MgdGhhdCBs
b29rIGxpa2UgZXNjYXBlZCBjaGFyYWN0ZXJzIHNob3VsZG4ndCBvY2N1cgotICAgICAgICAgICAg
IyBvdXRzaWRlIG9mIHN0cmluZ3MgYW5kIGNoYXJzLgotICAgICAgICAgICAgZWxpZGVkID0gX1JF
X1BBVFRFUk5fQ0xFQU5TRV9MSU5FX0VTQ0FQRVMuc3ViKCcnLCBlbGlkZWQpCi0gICAgICAgICAg
ICBlbGlkZWQgPSBfUkVfUEFUVEVSTl9DTEVBTlNFX0xJTkVfU0lOR0xFX1FVT1RFUy5zdWIoIicn
IiwgZWxpZGVkKQotICAgICAgICAgICAgZWxpZGVkID0gX1JFX1BBVFRFUk5fQ0xFQU5TRV9MSU5F
X0RPVUJMRV9RVU9URVMuc3ViKCciIicsIGVsaWRlZCkKLSAgICAgICAgcmV0dXJuIGVsaWRlZAot
Ci0KLWRlZiBjbG9zZV9leHByZXNzaW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgcG9zKToK
LSAgICAiIiJJZiBpbnB1dCBwb2ludHMgdG8gKCBvciB7IG9yIFssIGZpbmRzIHRoZSBwb3NpdGlv
biB0aGF0IGNsb3NlcyBpdC4KLQotICAgIElmIGxpbmVzW2xpbmVfbnVtYmVyXVtwb3NdIHBvaW50
cyB0byBhICcoJyBvciAneycgb3IgJ1snLCBmaW5kcyB0aGUgdGhlCi0gICAgbGluZV9udW1iZXIv
cG9zIHRoYXQgY29ycmVzcG9uZCB0byB0aGUgY2xvc2luZyBvZiB0aGUgZXhwcmVzc2lvbi4KLQot
ICAgIEFyZ3M6Ci0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNv
bnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUg
bGluZSB0byBjaGVjay4KLSAgICAgIHBvczogQSBwb3NpdGlvbiBvbiB0aGUgbGluZS4KLQotICAg
IFJldHVybnM6Ci0gICAgICBBIHR1cGxlIChsaW5lLCBsaW5lX251bWJlciwgcG9zKSBwb2ludGVy
ICpwYXN0KiB0aGUgY2xvc2luZyBicmFjZSwgb3IKLSAgICAgIChsaW5lLCBsZW4obGluZXMpLCAt
MSkgaWYgd2UgbmV2ZXIgZmluZCBhIGNsb3NlLiAgTm90ZSB3ZSBpZ25vcmUKLSAgICAgIHN0cmlu
Z3MgYW5kIGNvbW1lbnRzIHdoZW4gbWF0Y2hpbmc7IGFuZCB0aGUgbGluZSB3ZSByZXR1cm4gaXMg
dGhlCi0gICAgICAnY2xlYW5zZWQnIGxpbmUgYXQgbGluZV9udW1iZXIuCi0gICAgIiIiCi0KLSAg
ICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIHN0YXJ0X2NoYXJh
Y3RlciA9IGxpbmVbcG9zXQotICAgIGlmIHN0YXJ0X2NoYXJhY3RlciBub3QgaW4gJyh7Wyc6Ci0g
ICAgICAgIHJldHVybiAobGluZSwgY2xlYW5fbGluZXMubnVtX2xpbmVzKCksIC0xKQotICAgIGlm
IHN0YXJ0X2NoYXJhY3RlciA9PSAnKCc6Ci0gICAgICAgIGVuZF9jaGFyYWN0ZXIgPSAnKScKLSAg
ICBpZiBzdGFydF9jaGFyYWN0ZXIgPT0gJ1snOgotICAgICAgICBlbmRfY2hhcmFjdGVyID0gJ10n
Ci0gICAgaWYgc3RhcnRfY2hhcmFjdGVyID09ICd7JzoKLSAgICAgICAgZW5kX2NoYXJhY3RlciA9
ICd9JwotCi0gICAgbnVtX29wZW4gPSBsaW5lLmNvdW50KHN0YXJ0X2NoYXJhY3RlcikgLSBsaW5l
LmNvdW50KGVuZF9jaGFyYWN0ZXIpCi0gICAgd2hpbGUgbGluZV9udW1iZXIgPCBjbGVhbl9saW5l
cy5udW1fbGluZXMoKSBhbmQgbnVtX29wZW4gPiAwOgotICAgICAgICBsaW5lX251bWJlciArPSAx
Ci0gICAgICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgICAg
IG51bV9vcGVuICs9IGxpbmUuY291bnQoc3RhcnRfY2hhcmFjdGVyKSAtIGxpbmUuY291bnQoZW5k
X2NoYXJhY3RlcikKLSAgICAjIE9LLCBub3cgZmluZCB0aGUgZW5kX2NoYXJhY3RlciB0aGF0IGFj
dHVhbGx5IGdvdCB1cyBiYWNrIHRvIGV2ZW4KLSAgICBlbmRwb3MgPSBsZW4obGluZSkKLSAgICB3
aGlsZSBudW1fb3BlbiA+PSAwOgotICAgICAgICBlbmRwb3MgPSBsaW5lLnJmaW5kKCcpJywgMCwg
ZW5kcG9zKQotICAgICAgICBudW1fb3BlbiAtPSAxICAgICAgICAgICAgICAgICAjIGNob3BwZWQg
b2ZmIGFub3RoZXIgKQotICAgIHJldHVybiAobGluZSwgbGluZV9udW1iZXIsIGVuZHBvcyArIDEp
Ci0KLQotZGVmIGNoZWNrX2Zvcl9jb3B5cmlnaHQoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6Ci0g
ICAgIiIiTG9ncyBhbiBlcnJvciBpZiBubyBDb3B5cmlnaHQgbWVzc2FnZSBhcHBlYXJzIGF0IHRo
ZSB0b3Agb2YgdGhlIGZpbGUuIiIiCi0KLSAgICAjIFdlJ2xsIHNheSBpdCBzaG91bGQgb2NjdXIg
YnkgbGluZSAxMC4gRG9uJ3QgZm9yZ2V0IHRoZXJlJ3MgYQotICAgICMgZHVtbXkgbGluZSBhdCB0
aGUgZnJvbnQuCi0gICAgZm9yIGxpbmUgaW4geHJhbmdlKDEsIG1pbihsZW4obGluZXMpLCAxMSkp
OgotICAgICAgICBpZiByZS5zZWFyY2gocidDb3B5cmlnaHQnLCBsaW5lc1tsaW5lXSwgcmUuSSk6
Ci0gICAgICAgICAgICBicmVhawotICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAjIG1l
YW5zIG5vIGNvcHlyaWdodCBsaW5lIHdhcyBmb3VuZAotICAgICAgICBlcnJvcihmaWxlbmFtZSwg
MCwgJ2xlZ2FsL2NvcHlyaWdodCcsIDUsCi0gICAgICAgICAgICAgICdObyBjb3B5cmlnaHQgbWVz
c2FnZSBmb3VuZC4gICcKLSAgICAgICAgICAgICAgJ1lvdSBzaG91bGQgaGF2ZSBhIGxpbmU6ICJD
b3B5cmlnaHQgW3llYXJdIDxDb3B5cmlnaHQgT3duZXI+IicpCi0KLQotZGVmIGdldF9oZWFkZXJf
Z3VhcmRfY3BwX3ZhcmlhYmxlKGZpbGVuYW1lKToKLSAgICAiIiJSZXR1cm5zIHRoZSBDUFAgdmFy
aWFibGUgdGhhdCBzaG91bGQgYmUgdXNlZCBhcyBhIGhlYWRlciBndWFyZC4KLQotICAgIEFyZ3M6
Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgYSBDKysgaGVhZGVyIGZpbGUuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgVGhlIENQUCB2YXJpYWJsZSB0aGF0IHNob3VsZCBiZSB1c2VkIGFzIGEg
aGVhZGVyIGd1YXJkIGluIHRoZQotICAgICAgbmFtZWQgZmlsZS4KLQotICAgICIiIgotCi0gICAg
ZmlsZWluZm8gPSBGaWxlSW5mbyhmaWxlbmFtZSkKLSAgICByZXR1cm4gcmUuc3ViKHInWy0uL1xz
XScsICdfJywgZmlsZWluZm8ucmVwb3NpdG9yeV9uYW1lKCkpLnVwcGVyKCkgKyAnXycKLQotCi1k
ZWYgY2hlY2tfZm9yX2hlYWRlcl9ndWFyZChmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKLSAgICAi
IiJDaGVja3MgdGhhdCB0aGUgZmlsZSBjb250YWlucyBhIGhlYWRlciBndWFyZC4KLQotICAgIExv
Z3MgYW4gZXJyb3IgaWYgbm8gI2lmbmRlZiBoZWFkZXIgZ3VhcmQgaXMgcHJlc2VudC4gIEZvciBv
dGhlcgotICAgIGhlYWRlcnMsIGNoZWNrcyB0aGF0IHRoZSBmdWxsIHBhdGhuYW1lIGlzIHVzZWQu
Ci0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBDKysgaGVhZGVy
IGZpbGUuCi0gICAgICBsaW5lczogQW4gYXJyYXkgb2Ygc3RyaW5ncywgZWFjaCByZXByZXNlbnRp
bmcgYSBsaW5lIG9mIHRoZSBmaWxlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxs
IHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGNwcHZhciA9IGdldF9oZWFk
ZXJfZ3VhcmRfY3BwX3ZhcmlhYmxlKGZpbGVuYW1lKQotCi0gICAgaWZuZGVmID0gTm9uZQotICAg
IGlmbmRlZl9saW5lX251bWJlciA9IDAKLSAgICBkZWZpbmUgPSBOb25lCi0gICAgZW5kaWYgPSBO
b25lCi0gICAgZW5kaWZfbGluZV9udW1iZXIgPSAwCi0gICAgZm9yIGxpbmVfbnVtYmVyLCBsaW5l
IGluIGVudW1lcmF0ZShsaW5lcyk6Ci0gICAgICAgIGxpbmVfc3BsaXQgPSBsaW5lLnNwbGl0KCkK
LSAgICAgICAgaWYgbGVuKGxpbmVfc3BsaXQpID49IDI6Ci0gICAgICAgICAgICAjIGZpbmQgdGhl
IGZpcnN0IG9jY3VycmVuY2Ugb2YgI2lmbmRlZiBhbmQgI2RlZmluZSwgc2F2ZSBhcmcKLSAgICAg
ICAgICAgIGlmIG5vdCBpZm5kZWYgYW5kIGxpbmVfc3BsaXRbMF0gPT0gJyNpZm5kZWYnOgotICAg
ICAgICAgICAgICAgICMgc2V0IGlmbmRlZiB0byB0aGUgaGVhZGVyIGd1YXJkIHByZXNlbnRlZCBv
biB0aGUgI2lmbmRlZiBsaW5lLgotICAgICAgICAgICAgICAgIGlmbmRlZiA9IGxpbmVfc3BsaXRb
MV0KLSAgICAgICAgICAgICAgICBpZm5kZWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgotICAg
ICAgICAgICAgaWYgbm90IGRlZmluZSBhbmQgbGluZV9zcGxpdFswXSA9PSAnI2RlZmluZSc6Ci0g
ICAgICAgICAgICAgICAgZGVmaW5lID0gbGluZV9zcGxpdFsxXQotICAgICAgICAjIGZpbmQgdGhl
IGxhc3Qgb2NjdXJyZW5jZSBvZiAjZW5kaWYsIHNhdmUgZW50aXJlIGxpbmUKLSAgICAgICAgaWYg
bGluZS5zdGFydHN3aXRoKCcjZW5kaWYnKToKLSAgICAgICAgICAgIGVuZGlmID0gbGluZQotICAg
ICAgICAgICAgZW5kaWZfbGluZV9udW1iZXIgPSBsaW5lX251bWJlcgotCi0gICAgaWYgbm90IGlm
bmRlZiBvciBub3QgZGVmaW5lIG9yIGlmbmRlZiAhPSBkZWZpbmU6Ci0gICAgICAgIGVycm9yKGZp
bGVuYW1lLCAwLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgNSwKLSAgICAgICAgICAgICAgJ05vICNp
Zm5kZWYgaGVhZGVyIGd1YXJkIGZvdW5kLCBzdWdnZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzOiAlcycg
JQotICAgICAgICAgICAgICBjcHB2YXIpCi0gICAgICAgIHJldHVybgotCi0gICAgIyBUaGUgZ3Vh
cmQgc2hvdWxkIGJlIFBBVEhfRklMRV9IXywgYnV0IHdlIGFsc28gYWxsb3cgUEFUSF9GSUxFX0hf
XwotICAgICMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0gICAgaWYgaWZuZGVmICE9IGNw
cHZhcjoKLSAgICAgICAgZXJyb3JfbGV2ZWwgPSAwCi0gICAgICAgIGlmIGlmbmRlZiAhPSBjcHB2
YXIgKyAnXyc6Ci0gICAgICAgICAgICBlcnJvcl9sZXZlbCA9IDUKLQotICAgICAgICBlcnJvcihm
aWxlbmFtZSwgaWZuZGVmX2xpbmVfbnVtYmVyLCAnYnVpbGQvaGVhZGVyX2d1YXJkJywgZXJyb3Jf
bGV2ZWwsCi0gICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5
bGUsIHBsZWFzZSB1c2U6ICVzJyAlIGNwcHZhcikKLQotICAgIGlmIGVuZGlmICE9ICgnI2VuZGlm
ICAvLyAlcycgJSBjcHB2YXIpOgotICAgICAgICBlcnJvcl9sZXZlbCA9IDAKLSAgICAgICAgaWYg
ZW5kaWYgIT0gKCcjZW5kaWYgIC8vICVzJyAlIChjcHB2YXIgKyAnXycpKToKLSAgICAgICAgICAg
IGVycm9yX2xldmVsID0gNQotCi0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBlbmRpZl9saW5lX251
bWJlciwgJ2J1aWxkL2hlYWRlcl9ndWFyZCcsIGVycm9yX2xldmVsLAotICAgICAgICAgICAgICAn
I2VuZGlmIGxpbmUgc2hvdWxkIGJlICIjZW5kaWYgIC8vICVzIicgJSBjcHB2YXIpCi0KLQotZGVm
IGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMoZmlsZW5hbWUsIGxpbmVz
LCBlcnJvcik6Ci0gICAgIiIiTG9ncyBhbiBlcnJvciBmb3IgZWFjaCBsaW5lIGNvbnRhaW5pbmcg
VW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXJzLgotCi0gICAgVGhlc2UgaW5kaWNhdGUgdGhh
dCBlaXRoZXIgdGhlIGZpbGUgY29udGFpbmVkIGludmFsaWQgVVRGLTggKGxpa2VseSkKLSAgICBv
ciBVbmljb2RlIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgKHdoaWNoIGl0IHNob3VsZG4ndCkuICBO
b3RlIHRoYXQKLSAgICBpdCdzIHBvc3NpYmxlIGZvciB0aGlzIHRvIHRocm93IG9mZiBsaW5lIG51
bWJlcmluZyBpZiB0aGUgaW52YWxpZAotICAgIFVURi04IG9jY3VycmVkIGFkamFjZW50IHRvIGEg
bmV3bGluZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1
cnJlbnQgZmlsZS4KLSAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJl
c2VudGluZyBhIGxpbmUgb2YgdGhlIGZpbGUuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRv
IGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotICAgIGZvciBsaW5lX251bWJl
ciwgbGluZSBpbiBlbnVtZXJhdGUobGluZXMpOgotICAgICAgICBpZiB1J1x1ZmZmZCcgaW4gbGlu
ZToKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5
L3V0ZjgnLCA1LAotICAgICAgICAgICAgICAgICAgJ0xpbmUgY29udGFpbnMgaW52YWxpZCBVVEYt
OCAob3IgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLicpCi0KLQotZGVmIGNoZWNrX2Zv
cl9uZXdfbGluZV9hdF9lb2YoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6Ci0gICAgIiIiTG9ncyBh
biBlcnJvciBpZiB0aGVyZSBpcyBubyBuZXdsaW5lIGNoYXIgYXQgdGhlIGVuZCBvZiB0aGUgZmls
ZS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQg
ZmlsZS4KLSAgICAgIGxpbmVzOiBBbiBhcnJheSBvZiBzdHJpbmdzLCBlYWNoIHJlcHJlc2VudGlu
ZyBhIGxpbmUgb2YgdGhlIGZpbGUuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwg
d2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgIyBUaGUgYXJyYXkgbGluZXMo
KSB3YXMgY3JlYXRlZCBieSBhZGRpbmcgdHdvIG5ld2xpbmVzIHRvIHRoZQotICAgICMgb3JpZ2lu
YWwgZmlsZSAoZ28gZmlndXJlKSwgdGhlbiBzcGxpdHRpbmcgb24gXG4uCi0gICAgIyBUbyB2ZXJp
ZnkgdGhhdCB0aGUgZmlsZSBlbmRzIGluIFxuLCB3ZSBqdXN0IGhhdmUgdG8gbWFrZSBzdXJlIHRo
ZQotICAgICMgbGFzdC1idXQtdHdvIGVsZW1lbnQgb2YgbGluZXMoKSBleGlzdHMgYW5kIGlzIGVt
cHR5LgotICAgIGlmIGxlbihsaW5lcykgPCAzIG9yIGxpbmVzWy0yXToKLSAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxlbihsaW5lcykgLSAyLCAnd2hpdGVzcGFjZS9lbmRpbmdfbmV3bGluZScsIDUs
Ci0gICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhIG5ld2xpbmUgY2hhcmFjdGVyIGF0IHRo
ZSBlbmQgb2YgdGhlIGZpbGUuJykKLQotCi1kZWYgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50
c19hbmRfc3RyaW5ncyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6
Ci0gICAgIiIiTG9ncyBhbiBlcnJvciBpZiB3ZSBzZWUgLyogLi4uICovIG9yICIuLi4iIHRoYXQg
ZXh0ZW5kIHBhc3Qgb25lIGxpbmUuCi0KLSAgICAvKiAuLi4gKi8gY29tbWVudHMgYXJlIGxlZ2l0
IGluc2lkZSBtYWNyb3MsIGZvciBvbmUgbGluZS4KLSAgICBPdGhlcndpc2UsIHdlIHByZWZlciAv
LyBjb21tZW50cywgc28gaXQncyBvayB0byB3YXJuIGFib3V0IHRoZQotICAgIG90aGVyLiAgTGlr
ZXdpc2UsIGl0J3Mgb2sgZm9yIHN0cmluZ3MgdG8gZXh0ZW5kIGFjcm9zcyBtdWx0aXBsZQotICAg
IGxpbmVzLCBhcyBsb25nIGFzIGEgbGluZSBjb250aW51YXRpb24gY2hhcmFjdGVyIChiYWNrc2xh
c2gpCi0gICAgdGVybWluYXRlcyBlYWNoIGxpbmUuIEFsdGhvdWdoIG5vdCBjdXJyZW50bHkgcHJv
aGliaXRlZCBieSB0aGUgQysrCi0gICAgc3R5bGUgZ3VpZGUsIGl0J3MgdWdseSBhbmQgdW5uZWNl
c3NhcnkuIFdlIGRvbid0IGRvIHdlbGwgd2l0aCBlaXRoZXIKLSAgICBpbiB0aGlzIGxpbnQgcHJv
Z3JhbSwgc28gd2Ugd2FybiBhYm91dCBib3RoLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1l
OiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xl
YW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1i
ZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhlIGZ1
bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotICAgIGxpbmUg
PSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0KLSAgICAjIFJlbW92ZSBhbGwgXFwg
KGVzY2FwZWQgYmFja3NsYXNoZXMpIGZyb20gdGhlIGxpbmUuIFRoZXkgYXJlIE9LLCBhbmQgdGhl
Ci0gICAgIyBzZWNvbmQgKGVzY2FwZWQpIHNsYXNoIG1heSB0cmlnZ2VyIGxhdGVyIFwiIGRldGVj
dGlvbiBlcnJvbmVvdXNseS4KLSAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdcXFxcJywgJycpCi0K
LSAgICBpZiBsaW5lLmNvdW50KCcvKicpID4gbGluZS5jb3VudCgnKi8nKToKLSAgICAgICAgZXJy
b3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnQn
LCA1LAotICAgICAgICAgICAgICAnQ29tcGxleCBtdWx0aS1saW5lIC8qLi4uKi8tc3R5bGUgY29t
bWVudCBmb3VuZC4gJwotICAgICAgICAgICAgICAnTGludCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5n
cy4gICcKLSAgICAgICAgICAgICAgJ0NvbnNpZGVyIHJlcGxhY2luZyB0aGVzZSB3aXRoIC8vLXN0
eWxlIGNvbW1lbnRzLCAnCi0gICAgICAgICAgICAgICd3aXRoICNpZiAwLi4uI2VuZGlmLCAnCi0g
ICAgICAgICAgICAgICdvciB3aXRoIG1vcmUgY2xlYXJseSBzdHJ1Y3R1cmVkIG11bHRpLWxpbmUg
Y29tbWVudHMuJykKLQotICAgIGlmIChsaW5lLmNvdW50KCciJykgLSBsaW5lLmNvdW50KCdcXCIn
KSkgJSAyOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0
eS9tdWx0aWxpbmVfc3RyaW5nJywgNSwKLSAgICAgICAgICAgICAgJ011bHRpLWxpbmUgc3RyaW5n
ICgiLi4uIikgZm91bmQuICBUaGlzIGxpbnQgc2NyaXB0IGRvZXNuXCd0ICcKLSAgICAgICAgICAg
ICAgJ2RvIHdlbGwgd2l0aCBzdWNoIHN0cmluZ3MsIGFuZCBtYXkgZ2l2ZSBib2d1cyB3YXJuaW5n
cy4gIFRoZXlcJ3JlICcKLSAgICAgICAgICAgICAgJ3VnbHkgYW5kIHVubmVjZXNzYXJ5LCBhbmQg
eW91IHNob3VsZCB1c2UgY29uY2F0ZW5hdGlvbiBpbnN0ZWFkIi4nKQotCi0KLV9USFJFQURJTkdf
TElTVCA9ICgKLSAgICAoJ2FzY3RpbWUoJywgJ2FzY3RpbWVfcignKSwKLSAgICAoJ2N0aW1lKCcs
ICdjdGltZV9yKCcpLAotICAgICgnZ2V0Z3JnaWQoJywgJ2dldGdyZ2lkX3IoJyksCi0gICAgKCdn
ZXRncm5hbSgnLCAnZ2V0Z3JuYW1fcignKSwKLSAgICAoJ2dldGxvZ2luKCcsICdnZXRsb2dpbl9y
KCcpLAotICAgICgnZ2V0cHduYW0oJywgJ2dldHB3bmFtX3IoJyksCi0gICAgKCdnZXRwd3VpZCgn
LCAnZ2V0cHd1aWRfcignKSwKLSAgICAoJ2dtdGltZSgnLCAnZ210aW1lX3IoJyksCi0gICAgKCds
b2NhbHRpbWUoJywgJ2xvY2FsdGltZV9yKCcpLAotICAgICgncmFuZCgnLCAncmFuZF9yKCcpLAot
ICAgICgncmVhZGRpcignLCAncmVhZGRpcl9yKCcpLAotICAgICgnc3RydG9rKCcsICdzdHJ0b2tf
cignKSwKLSAgICAoJ3R0eW5hbWUoJywgJ3R0eW5hbWVfcignKSwKLSAgICApCi0KLQotZGVmIGNo
ZWNrX3Bvc2l4X3RocmVhZGluZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6Ci0gICAgIiIiQ2hlY2tzIGZvciBjYWxscyB0byB0aHJlYWQtdW5zYWZlIGZ1bmN0aW9u
cy4KLQotICAgIE11Y2ggY29kZSBoYXMgYmVlbiBvcmlnaW5hbGx5IHdyaXR0ZW4gd2l0aG91dCBj
b25zaWRlcmF0aW9uIG9mCi0gICAgbXVsdGktdGhyZWFkaW5nLiBBbHNvLCBlbmdpbmVlcnMgYXJl
IHJlbHlpbmcgb24gdGhlaXIgb2xkIGV4cGVyaWVuY2U7Ci0gICAgdGhleSBoYXZlIGxlYXJuZWQg
cG9zaXggYmVmb3JlIHRocmVhZGluZyBleHRlbnNpb25zIHdlcmUgYWRkZWQuIFRoZXNlCi0gICAg
dGVzdHMgZ3VpZGUgdGhlIGVuZ2luZWVycyB0byB1c2UgdGhyZWFkLXNhZmUgZnVuY3Rpb25zICh3
aGVuIHVzaW5nCi0gICAgcG9zaXggZGlyZWN0bHkpLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVu
YW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEg
Q2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9u
dW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBlcnJvcjogVGhl
IGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotICAgIGxp
bmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgZm9yIHNpbmdsZV90aHJl
YWRfZnVuY3Rpb24sIG11bHRpdGhyZWFkX3NhZmVfZnVuY3Rpb24gaW4gX1RIUkVBRElOR19MSVNU
OgotICAgICAgICBpbmRleCA9IGxpbmUuZmluZChzaW5nbGVfdGhyZWFkX2Z1bmN0aW9uKQotICAg
ICAgICAjIENvbXBhcmlzb25zIG1hZGUgZXhwbGljaXQgZm9yIGNsYXJpdHkgLS0gcHlsaW50OiBk
aXNhYmxlLW1zZz1DNjQwMwotICAgICAgICBpZiBpbmRleCA+PSAwIGFuZCAoaW5kZXggPT0gMCBv
ciAobm90IGxpbmVbaW5kZXggLSAxXS5pc2FsbnVtKCkKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lW2luZGV4IC0gMV0gbm90IGluICgnXycsICcuJywg
Jz4nKSkpOgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGlt
ZS90aHJlYWRzYWZlX2ZuJywgMiwKLSAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyAn
ICsgbXVsdGl0aHJlYWRfc2FmZV9mdW5jdGlvbiArCi0gICAgICAgICAgICAgICAgICAnLi4uKSBp
bnN0ZWFkIG9mICcgKyBzaW5nbGVfdGhyZWFkX2Z1bmN0aW9uICsKLSAgICAgICAgICAgICAgICAg
ICcuLi4pIGZvciBpbXByb3ZlZCB0aHJlYWQgc2FmZXR5LicpCi0KLQotIyBNYXRjaGVzIGludmFs
aWQgaW5jcmVtZW50OiAqY291bnQrKywgd2hpY2ggbW92ZXMgcG9pbnRlciBpbnN0ZWFkIG9mCi0j
IGluY3JlbWVudGluZyBhIHZhbHVlLgotX1JFX1BBVFRFUk5fSU5WQUxJRF9JTkNSRU1FTlQgPSBy
ZS5jb21waWxlKAotICAgIHInXlxzKlwqXHcrKFwrXCt8LS0pOycpCi0KLQotZGVmIGNoZWNrX2lu
dmFsaWRfaW5jcmVtZW50KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9y
KToKLSAgICAiIiJDaGVja3MgZm9yIGludmFsaWQgaW5jcmVtZW50ICpjb3VudCsrLgotCi0gICAg
Rm9yIGV4YW1wbGUgZm9sbG93aW5nIGZ1bmN0aW9uOgotICAgIHZvaWQgaW5jcmVtZW50X2NvdW50
ZXIoaW50KiBjb3VudCkgewotICAgICAgICAqY291bnQrKzsKLSAgICB9Ci0gICAgaXMgaW52YWxp
ZCwgYmVjYXVzZSBpdCBlZmZlY3RpdmVseSBkb2VzIGNvdW50KyssIG1vdmluZyBwb2ludGVyLCBh
bmQgc2hvdWxkCi0gICAgYmUgcmVwbGFjZWQgd2l0aCArKypjb3VudCwgKCpjb3VudCkrKyBvciAq
Y291bnQgKz0gMS4KLQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFu
Y2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9m
IHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdp
dGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxp
ZGVkW2xpbmVfbnVtYmVyXQotICAgIGlmIF9SRV9QQVRURVJOX0lOVkFMSURfSU5DUkVNRU5ULm1h
dGNoKGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1l
L2ludmFsaWRfaW5jcmVtZW50JywgNSwKLSAgICAgICAgICAgICAgJ0NoYW5naW5nIHBvaW50ZXIg
aW5zdGVhZCBvZiB2YWx1ZSAob3IgdW51c2VkIHZhbHVlIG9mIG9wZXJhdG9yKikuJykKLQotCi1j
bGFzcyBfQ2xhc3NJbmZvKG9iamVjdCk6Ci0gICAgIiIiU3RvcmVzIGluZm9ybWF0aW9uIGFib3V0
IGEgY2xhc3MuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgbGluZV9udW1iZXIp
OgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYubGluZV9udW1iZXIgPSBs
aW5lX251bWJlcgotICAgICAgICBzZWxmLnNlZW5fb3Blbl9icmFjZSA9IEZhbHNlCi0gICAgICAg
IHNlbGYuaXNfZGVyaXZlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYudmlydHVhbF9tZXRob2RfbGlu
ZV9udW1iZXIgPSBOb25lCi0gICAgICAgIHNlbGYuaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvciA9IEZh
bHNlCi0gICAgICAgIHNlbGYuYnJhY2VfZGVwdGggPSAwCi0KLQotY2xhc3MgX0NsYXNzU3RhdGUo
b2JqZWN0KToKLSAgICAiIiJIb2xkcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgcGFyc2UgcmVs
YXRpbmcgdG8gY2xhc3MgZGVjbGFyYXRpb25zLgotCi0gICAgSXQgbWFpbnRhaW5zIGEgc3RhY2sg
b2YgX0NsYXNzSW5mb3MgcmVwcmVzZW50aW5nIHRoZSBwYXJzZXIncyBndWVzcwotICAgIGFzIHRv
IHRoZSBjdXJyZW50IG5lc3Rpbmcgb2YgY2xhc3MgZGVjbGFyYXRpb25zLiBUaGUgaW5uZXJtb3N0
IGNsYXNzCi0gICAgaXMgYXQgdGhlIHRvcCAoYmFjaykgb2YgdGhlIHN0YWNrLiBUeXBpY2FsbHks
IHRoZSBzdGFjayB3aWxsIGVpdGhlcgotICAgIGJlIGVtcHR5IG9yIGhhdmUgZXhhY3RseSBvbmUg
ZW50cnkuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYu
Y2xhc3NpbmZvX3N0YWNrID0gW10KLQotICAgIGRlZiBjaGVja19maW5pc2hlZChzZWxmLCBmaWxl
bmFtZSwgZXJyb3IpOgotICAgICAgICAiIiJDaGVja3MgdGhhdCBhbGwgY2xhc3NlcyBoYXZlIGJl
ZW4gY29tcGxldGVseSBwYXJzZWQuCi0KLSAgICAgICAgQ2FsbCB0aGlzIHdoZW4gYWxsIGxpbmVz
IGluIGEgZmlsZSBoYXZlIGJlZW4gcHJvY2Vzc2VkLgotICAgICAgICBBcmdzOgotICAgICAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgICAgIGVycm9y
OiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgICAgICIi
IgotICAgICAgICBpZiBzZWxmLmNsYXNzaW5mb19zdGFjazoKLSAgICAgICAgICAgICMgTm90ZTog
VGhpcyB0ZXN0IGNhbiByZXN1bHQgaW4gZmFsc2UgcG9zaXRpdmVzIGlmICNpZmRlZiBjb25zdHJ1
Y3RzCi0gICAgICAgICAgICAjIGdldCBpbiB0aGUgd2F5IG9mIGJyYWNlIG1hdGNoaW5nLiBTZWUg
dGhlIHRlc3RCdWlsZENsYXNzIHRlc3QgaW4KLSAgICAgICAgICAgICMgY3BwbGludF91bml0dGVz
dC5weSBmb3IgYW4gZXhhbXBsZSBvZiB0aGlzLgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IHNlbGYuY2xhc3NpbmZvX3N0YWNrWzBdLmxpbmVfbnVtYmVyLCAnYnVpbGQvY2xhc3MnLCA1LAot
ICAgICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBmaW5kIGNvbXBsZXRlIGRlY2xhcmF0aW9uIG9m
IGNsYXNzICVzJyAlCi0gICAgICAgICAgICAgICAgICBzZWxmLmNsYXNzaW5mb19zdGFja1swXS5u
YW1lKQotCi0KLWRlZiBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xhc3Nfc3RhdGUsIGVycm9yKToKLSAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdl
IHNlZSBjZXJ0YWluIG5vbi1BTlNJIGNvbnN0cnVjdHMgaWdub3JlZCBieSBnY2MtMi4KLQotICAg
IENvbXBsYWluIGFib3V0IHNldmVyYWwgY29uc3RydWN0cyB3aGljaCBnY2MtMiBhY2NlcHRzLCBi
dXQgd2hpY2ggYXJlCi0gICAgbm90IHN0YW5kYXJkIEMrKy4gIFdhcm5pbmcgYWJvdXQgdGhlc2Ug
aW4gbGludCBpcyBvbmUgd2F5IHRvIGVhc2UgdGhlCi0gICAgdHJhbnNpdGlvbiB0byBuZXcgY29t
cGlsZXJzLgotICAgIC0gcHV0IHN0b3JhZ2UgY2xhc3MgZmlyc3QgKGUuZy4gInN0YXRpYyBjb25z
dCIgaW5zdGVhZCBvZiAiY29uc3Qgc3RhdGljIikuCi0gICAgLSAiJWxsZCIgaW5zdGVhZCBvZiAl
cWQiIGluIHByaW50Zi10eXBlIGZ1bmN0aW9ucy4KLSAgICAtICIlMSRkIiBpcyBub24tc3RhbmRh
cmQgaW4gcHJpbnRmLXR5cGUgZnVuY3Rpb25zLgotICAgIC0gIlwlIiBpcyBhbiB1bmRlZmluZWQg
Y2hhcmFjdGVyIGVzY2FwZSBzZXF1ZW5jZS4KLSAgICAtIHRleHQgYWZ0ZXIgI2VuZGlmIGlzIG5v
dCBhbGxvd2VkLgotICAgIC0gaW52YWxpZCBpbm5lci1zdHlsZSBmb3J3YXJkIGRlY2xhcmF0aW9u
LgotICAgIC0gPj8gYW5kIDw/IG9wZXJhdG9ycywgYW5kIHRoZWlyID4/PSBhbmQgPD89IGNvdXNp
bnMuCi0gICAgLSBjbGFzc2VzIHdpdGggdmlydHVhbCBtZXRob2RzIG5lZWQgdmlydHVhbCBkZXN0
cnVjdG9ycyAoY29tcGlsZXIgd2FybmluZwotICAgICAgICBhdmFpbGFibGUsIGJ1dCBub3QgdHVy
bmVkIG9uIHlldC4pCi0KLSAgICBBZGRpdGlvbmFsbHksIGNoZWNrIGZvciBjb25zdHJ1Y3Rvci9k
ZXN0cnVjdG9yIHN0eWxlIHZpb2xhdGlvbnMgYXMgaXQKLSAgICBpcyB2ZXJ5IGNvbnZlbmllbnQg
dG8gZG8gc28gd2hpbGUgY2hlY2tpbmcgZm9yIGdjYy0yIGNvbXBsaWFuY2UuCi0KLSAgICBBcmdz
OgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBj
bGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUu
Ci0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAg
ICAgIGNsYXNzX3N0YXRlOiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBp
bmZvcm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHN0YWNrIG9m
IG5lc3RlZCBjbGFzcyBkZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAgICAgZXJyb3I6IEEg
Y2FsbGFibGUgdG8gd2hpY2ggZXJyb3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1
bWVudHM6Ci0gICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBlcnJvciBsZXZlbCwg
YW5kIG1lc3NhZ2UKLSAgICAiIiIKLQotICAgICMgUmVtb3ZlIGNvbW1lbnRzIGZyb20gdGhlIGxp
bmUsIGJ1dCBsZWF2ZSBpbiBzdHJpbmdzIGZvciBub3cuCi0gICAgbGluZSA9IGNsZWFuX2xpbmVz
LmxpbmVzW2xpbmVfbnVtYmVyXQotCi0gICAgaWYgc2VhcmNoKHIncHJpbnRmXHMqXCguKiIuKiVb
LSsgXT9cZCpxJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsIDMsCi0gICAgICAgICAgICAgICclcSBpbiBmb3JtYXQg
c3RyaW5ncyBpcyBkZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicpCi0KLSAgICBpZiBzZWFy
Y2gocidwcmludGZccypcKC4qIi4qJVxkK1wkJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVu
YW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmX2Zvcm1hdCcsIDIsCi0gICAgICAgICAg
ICAgICclTiQgZm9ybWF0cyBhcmUgdW5jb252ZW50aW9uYWwuICBUcnkgcmV3cml0aW5nIHRvIGF2
b2lkIHRoZW0uJykKLQotICAgICMgUmVtb3ZlIGVzY2FwZWQgYmFja3NsYXNoZXMgYmVmb3JlIGxv
b2tpbmcgZm9yIHVuZGVmaW5lZCBlc2NhcGVzLgotICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ1xc
XFwnLCAnJykKLQotICAgIGlmIHNlYXJjaChyJygifFwnKS4qXFwoJXxcW3xcKHx7KScsIGxpbmUp
OgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9wcmludGZfZm9y
bWF0JywgMywKLSAgICAgICAgICAgICAgJyUsIFssICgsIGFuZCB7IGFyZSB1bmRlZmluZWQgY2hh
cmFjdGVyIGVzY2FwZXMuICBVbmVzY2FwZSB0aGVtLicpCi0KLSAgICAjIEZvciB0aGUgcmVzdCwg
d29yayB3aXRoIGJvdGggY29tbWVudHMgYW5kIHN0cmluZ3MgcmVtb3ZlZC4KLSAgICBsaW5lID0g
Y2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotCi0gICAgaWYgc2VhcmNoKHInXGIoY29u
c3R8dm9sYXRpbGV8dm9pZHxjaGFyfHNob3J0fGludHxsb25nJwotICAgICAgICAgICAgICByJ3xm
bG9hdHxkb3VibGV8c2lnbmVkfHVuc2lnbmVkJwotICAgICAgICAgICAgICByJ3xzY2hhcnx1P2lu
dDh8dT9pbnQxNnx1P2ludDMyfHU/aW50NjQpJwotICAgICAgICAgICAgICByJ1xzKyhhdXRvfHJl
Z2lzdGVyfHN0YXRpY3xleHRlcm58dHlwZWRlZilcYicsCi0gICAgICAgICAgICAgIGxpbmUpOgot
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9zdG9yYWdlX2NsYXNz
JywgNSwKLSAgICAgICAgICAgICAgJ1N0b3JhZ2UgY2xhc3MgKHN0YXRpYywgZXh0ZXJuLCB0eXBl
ZGVmLCBldGMpIHNob3VsZCBiZSBmaXJzdC4nKQotCi0gICAgaWYgbWF0Y2gocidccyojXHMqZW5k
aWZccypbXi9cc10rJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ2J1aWxkL2VuZGlmX2NvbW1lbnQnLCA1LAotICAgICAgICAgICAgICAnVW5jb21tZW50ZWQg
dGV4dCBhZnRlciAjZW5kaWYgaXMgbm9uLXN0YW5kYXJkLiAgVXNlIGEgY29tbWVudC4nKQotCi0g
ICAgaWYgbWF0Y2gocidccypjbGFzc1xzKyhcdytccyo6OlxzKikrXHcrXHMqOycsIGxpbmUpOgot
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9mb3J3YXJkX2RlY2wn
LCA1LAotICAgICAgICAgICAgICAnSW5uZXItc3R5bGUgZm9yd2FyZCBkZWNsYXJhdGlvbnMgYXJl
IGludmFsaWQuICBSZW1vdmUgdGhpcyBsaW5lLicpCi0KLSAgICBpZiBzZWFyY2gocicoXHcrfFsr
LV0/XGQrKFwuXGQqKT8pXHMqKDx8PilcPz0/XHMqKFx3K3xbKy1dP1xkKykoXC5cZCopPycsIGxp
bmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWlsZC9kZXByZWNh
dGVkJywgMywKLSAgICAgICAgICAgICAgJz4/IGFuZCA8PyAobWF4IGFuZCBtaW4pIG9wZXJhdG9y
cyBhcmUgbm9uLXN0YW5kYXJkIGFuZCBkZXByZWNhdGVkLicpCi0KLSAgICAjIFRyYWNrIGNsYXNz
IGVudHJ5IGFuZCBleGl0LCBhbmQgYXR0ZW1wdCB0byBmaW5kIGNhc2VzIHdpdGhpbiB0aGUKLSAg
ICAjIGNsYXNzIGRlY2xhcmF0aW9uIHRoYXQgZG9uJ3QgbWVldCB0aGUgQysrIHN0eWxlCi0gICAg
IyBndWlkZWxpbmVzLiBUcmFja2luZyBpcyB2ZXJ5IGRlcGVuZGVudCBvbiB0aGUgY29kZSBtYXRj
aGluZyBHb29nbGUKLSAgICAjIHN0eWxlIGd1aWRlbGluZXMsIGJ1dCBpdCBzZWVtcyB0byBwZXJm
b3JtIHdlbGwgZW5vdWdoIGluIHRlc3RpbmcKLSAgICAjIHRvIGJlIGEgd29ydGh3aGlsZSBhZGRp
dGlvbiB0byB0aGUgY2hlY2tzLgotICAgIGNsYXNzaW5mb19zdGFjayA9IGNsYXNzX3N0YXRlLmNs
YXNzaW5mb19zdGFjawotICAgICMgTG9vayBmb3IgYSBjbGFzcyBkZWNsYXJhdGlvbgotICAgIGNs
YXNzX2RlY2xfbWF0Y2ggPSBtYXRjaCgKLSAgICAgICAgcidccyoodGVtcGxhdGVccyo8W1x3XHM8
Piw6XSo+XHMqKT8oY2xhc3N8c3RydWN0KVxzKyhcdysoOjpcdyspKiknLCBsaW5lKQotICAgIGlm
IGNsYXNzX2RlY2xfbWF0Y2g6Ci0gICAgICAgIGNsYXNzaW5mb19zdGFjay5hcHBlbmQoX0NsYXNz
SW5mbyhjbGFzc19kZWNsX21hdGNoLmdyb3VwKDMpLCBsaW5lX251bWJlcikpCi0KLSAgICAjIEV2
ZXJ5dGhpbmcgZWxzZSBpbiB0aGlzIGZ1bmN0aW9uIHVzZXMgdGhlIHRvcCBvZiB0aGUgc3RhY2sg
aWYgaXQncwotICAgICMgbm90IGVtcHR5LgotICAgIGlmIG5vdCBjbGFzc2luZm9fc3RhY2s6Ci0g
ICAgICAgIHJldHVybgotCi0gICAgY2xhc3NpbmZvID0gY2xhc3NpbmZvX3N0YWNrWy0xXQotCi0g
ICAgIyBJZiB0aGUgb3BlbmluZyBicmFjZSBoYXNuJ3QgYmVlbiBzZWVuIGxvb2sgZm9yIGl0IGFu
ZCBhbHNvCi0gICAgIyBwYXJlbnQgY2xhc3MgZGVjbGFyYXRpb25zLgotICAgIGlmIG5vdCBjbGFz
c2luZm8uc2Vlbl9vcGVuX2JyYWNlOgotICAgICAgICAjIElmIHRoZSBsaW5lIGhhcyBhICc7JyBp
biBpdCwgYXNzdW1lIGl0J3MgYSBmb3J3YXJkIGRlY2xhcmF0aW9uIG9yCi0gICAgICAgICMgYSBz
aW5nbGUtbGluZSBjbGFzcyBkZWNsYXJhdGlvbiwgd2hpY2ggd2Ugd29uJ3QgcHJvY2Vzcy4KLSAg
ICAgICAgaWYgbGluZS5maW5kKCc7JykgIT0gLTE6Ci0gICAgICAgICAgICBjbGFzc2luZm9fc3Rh
Y2sucG9wKCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBjbGFzc2luZm8uc2Vlbl9vcGVu
X2JyYWNlID0gKGxpbmUuZmluZCgneycpICE9IC0xKQotICAgICAgICAjIExvb2sgZm9yIGEgYmFy
ZSAnOicKLSAgICAgICAgaWYgc2VhcmNoKCcoXnxbXjpdKTooJHxbXjpdKScsIGxpbmUpOgotICAg
ICAgICAgICAgY2xhc3NpbmZvLmlzX2Rlcml2ZWQgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBjbGFz
c2luZm8uc2Vlbl9vcGVuX2JyYWNlOgotICAgICAgICAgICAgcmV0dXJuICAjIEV2ZXJ5dGhpbmcg
ZWxzZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIGZvciBhZnRlciBvcGVuIGJyYWNlCi0KLSAgICAjIFRo
ZSBjbGFzcyBtYXkgaGF2ZSBiZWVuIGRlY2xhcmVkIHdpdGggbmFtZXNwYWNlIG9yIGNsYXNzbmFt
ZSBxdWFsaWZpZXJzLgotICAgICMgVGhlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIHdpbGwg
bm90IGhhdmUgdGhvc2UgcXVhbGlmaWVycy4KLSAgICBiYXNlX2NsYXNzbmFtZSA9IGNsYXNzaW5m
by5uYW1lLnNwbGl0KCc6OicpWy0xXQotCi0gICAgIyBMb29rIGZvciBzaW5nbGUtYXJndW1lbnQg
Y29uc3RydWN0b3JzIHRoYXQgYXJlbid0IG1hcmtlZCBleHBsaWNpdC4KLSAgICAjIFRlY2huaWNh
bGx5IGEgdmFsaWQgY29uc3RydWN0LCBidXQgYWdhaW5zdCBzdHlsZS4KLSAgICBhcmdzID0gbWF0
Y2gocicoPzwhZXhwbGljaXQpXHMrJXNccypcKChbXiwoKV0rKVwpJwotICAgICAgICAgICAgICAg
ICAlIHJlLmVzY2FwZShiYXNlX2NsYXNzbmFtZSksCi0gICAgICAgICAgICAgICAgIGxpbmUpCi0g
ICAgaWYgKGFyZ3MKLSAgICAgICAgYW5kIGFyZ3MuZ3JvdXAoMSkgIT0gJ3ZvaWQnCi0gICAgICAg
IGFuZCBub3QgbWF0Y2gocicoY29uc3RccyspPyVzXHMqJicgJSByZS5lc2NhcGUoYmFzZV9jbGFz
c25hbWUpLAotICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuZ3JvdXAoMSkuc3RyaXAoKSkpOgot
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdydW50aW1lL2V4cGxpY2l0Jywg
NSwKLSAgICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJl
IG1hcmtlZCBleHBsaWNpdC4nKQotCi0gICAgIyBMb29rIGZvciBtZXRob2RzIGRlY2xhcmVkIHZp
cnR1YWwuCi0gICAgaWYgc2VhcmNoKHInXGJ2aXJ0dWFsXGInLCBsaW5lKToKLSAgICAgICAgY2xh
c3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIKLSAgICAgICAg
IyBPbmx5IGxvb2sgZm9yIGEgZGVzdHJ1Y3RvciBkZWNsYXJhdGlvbiBvbiB0aGUgc2FtZSBsaW5l
LiBJdCB3b3VsZAotICAgICAgICAjIGJlIGV4dHJlbWVseSB1bmxpa2VseSBmb3IgdGhlIGRlc3Ry
dWN0b3IgZGVjbGFyYXRpb24gdG8gb2NjdXB5Ci0gICAgICAgICMgbW9yZSB0aGFuIG9uZSBsaW5l
LgotICAgICAgICBpZiBzZWFyY2gocid+JXNccypcKCcgJSBiYXNlX2NsYXNzbmFtZSwgbGluZSk6
Ci0gICAgICAgICAgICBjbGFzc2luZm8uaGFzX3ZpcnR1YWxfZGVzdHJ1Y3RvciA9IFRydWUKLQot
ICAgICMgTG9vayBmb3IgY2xhc3MgZW5kLgotICAgIGJyYWNlX2RlcHRoID0gY2xhc3NpbmZvLmJy
YWNlX2RlcHRoCi0gICAgYnJhY2VfZGVwdGggPSBicmFjZV9kZXB0aCArIGxpbmUuY291bnQoJ3sn
KSAtIGxpbmUuY291bnQoJ30nKQotICAgIGlmIGJyYWNlX2RlcHRoIDw9IDA6Ci0gICAgICAgIGNs
YXNzaW5mbyA9IGNsYXNzaW5mb19zdGFjay5wb3AoKQotICAgICAgICAjIFRyeSB0byBkZXRlY3Qg
bWlzc2luZyB2aXJ0dWFsIGRlc3RydWN0b3IgZGVjbGFyYXRpb25zLgotICAgICAgICAjIEZvciBu
b3csIG9ubHkgd2FybiBpZiBhIG5vbi1kZXJpdmVkIGNsYXNzIHdpdGggdmlydHVhbCBtZXRob2Rz
IGxhY2tzCi0gICAgICAgICMgYSB2aXJ0dWFsIGRlc3RydWN0b3IuIFRoaXMgaXMgdG8gbWFrZSBp
dCBsZXNzIGxpa2VseSB0aGF0IHBlb3BsZSB3aWxsCi0gICAgICAgICMgZGVjbGFyZSBkZXJpdmVk
IHZpcnR1YWwgZGVzdHJ1Y3RvcnMgd2l0aG91dCBkZWNsYXJpbmcgdGhlIGJhc2UKLSAgICAgICAg
IyBkZXN0cnVjdG9yIHZpcnR1YWwuCi0gICAgICAgIGlmICgoY2xhc3NpbmZvLnZpcnR1YWxfbWV0
aG9kX2xpbmVfbnVtYmVyIGlzIG5vdCBOb25lKQotICAgICAgICAgICAgYW5kIChub3QgY2xhc3Np
bmZvLmhhc192aXJ0dWFsX2Rlc3RydWN0b3IpCi0gICAgICAgICAgICBhbmQgKG5vdCBjbGFzc2lu
Zm8uaXNfZGVyaXZlZCkpOiAgIyBPbmx5IHdhcm4gZm9yIGJhc2UgY2xhc3NlcwotICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGNsYXNzaW5mby5saW5lX251bWJlciwgJ3J1bnRpbWUvdmlydHVh
bCcsIDQsCi0gICAgICAgICAgICAgICAgICAnVGhlIGNsYXNzICVzIHByb2JhYmx5IG5lZWRzIGEg
dmlydHVhbCBkZXN0cnVjdG9yIGR1ZSB0byAnCi0gICAgICAgICAgICAgICAgICAnaGF2aW5nIHZp
cnR1YWwgbWV0aG9kKHMpLCBvbmUgZGVjbGFyZWQgYXQgbGluZSAlZC4nCi0gICAgICAgICAgICAg
ICAgICAlIChjbGFzc2luZm8ubmFtZSwgY2xhc3NpbmZvLnZpcnR1YWxfbWV0aG9kX2xpbmVfbnVt
YmVyKSkKLSAgICBlbHNlOgotICAgICAgICBjbGFzc2luZm8uYnJhY2VfZGVwdGggPSBicmFjZV9k
ZXB0aAotCi0KLWRlZiBjaGVja19zcGFjaW5nX2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBs
aW5lLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkNoZWNrcyBmb3IgdGhlIGNvcnJlY3Ru
ZXNzIG9mIHZhcmlvdXMgc3BhY2luZyBhcm91bmQgZnVuY3Rpb24gY2FsbHMuCi0KLSAgICBBcmdz
OgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBs
aW5lOiBUaGUgdGV4dCBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgICMgU2luY2Ug
ZnVuY3Rpb24gY2FsbHMgb2Z0ZW4gb2NjdXIgaW5zaWRlIGlmL2Zvci9mb3JlYWNoL3doaWxlL3N3
aXRjaAotICAgICMgZXhwcmVzc2lvbnMgLSB3aGljaCBoYXZlIHRoZWlyIG93biwgbW9yZSBsaWJl
cmFsIGNvbnZlbnRpb25zIC0gd2UKLSAgICAjIGZpcnN0IHNlZSBpZiB3ZSBzaG91bGQgYmUgbG9v
a2luZyBpbnNpZGUgc3VjaCBhbiBleHByZXNzaW9uIGZvciBhCi0gICAgIyBmdW5jdGlvbiBjYWxs
LCB0byB3aGljaCB3ZSBjYW4gYXBwbHkgbW9yZSBzdHJpY3Qgc3RhbmRhcmRzLgotICAgIGZ1bmN0
aW9uX2NhbGwgPSBsaW5lICAgICMgaWYgdGhlcmUncyBubyBjb250cm9sIGZsb3cgY29uc3RydWN0
LCBsb29rIGF0IHdob2xlIGxpbmUKLSAgICBmb3IgcGF0dGVybiBpbiAocidcYmlmXHMqXCgoLiop
XClccyp7JywKLSAgICAgICAgICAgICAgICAgICAgcidcYmZvclxzKlwoKC4qKVwpXHMqeycsCi0g
ICAgICAgICAgICAgICAgICAgIHInXGJmb3JlYWNoXHMqXCgoLiopXClccyp7JywKLSAgICAgICAg
ICAgICAgICAgICAgcidcYndoaWxlXHMqXCgoLiopXClccypbeztdJywKLSAgICAgICAgICAgICAg
ICAgICAgcidcYnN3aXRjaFxzKlwoKC4qKVwpXHMqeycpOgotICAgICAgICBtYXRjaGVkID0gc2Vh
cmNoKHBhdHRlcm4sIGxpbmUpCi0gICAgICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgICAgICBmdW5j
dGlvbl9jYWxsID0gbWF0Y2hlZC5ncm91cCgxKSAgICAjIGxvb2sgaW5zaWRlIHRoZSBwYXJlbnMg
Zm9yIGZ1bmN0aW9uIGNhbGxzCi0gICAgICAgICAgICBicmVhawotCi0gICAgIyBFeGNlcHQgaW4g
aWYvZm9yL2ZvcmVhY2gvd2hpbGUvc3dpdGNoLCB0aGVyZSBzaG91bGQgbmV2ZXIgYmUgc3BhY2UK
LSAgICAjIGltbWVkaWF0ZWx5IGluc2lkZSBwYXJlbnMgKGVnICJmKCAzLCA0ICkiKS4gIFdlIG1h
a2UgYW4gZXhjZXB0aW9uCi0gICAgIyBmb3IgbmVzdGVkIHBhcmVucyAoIChhK2IpICsgYyApLiAg
TGlrZXdpc2UsIHRoZXJlIHNob3VsZCBuZXZlciBiZQotICAgICMgYSBzcGFjZSBiZWZvcmUgYSAo
IHdoZW4gaXQncyBhIGZ1bmN0aW9uIGFyZ3VtZW50LiAgSSBhc3N1bWUgaXQncyBhCi0gICAgIyBm
dW5jdGlvbiBhcmd1bWVudCB3aGVuIHRoZSBjaGFyIGJlZm9yZSB0aGUgd2hpdGVzcGFjZSBpcyBs
ZWdhbCBpbgotICAgICMgYSBmdW5jdGlvbiBuYW1lIChhbG51bSArIF8pIGFuZCB3ZSdyZSBub3Qg
c3RhcnRpbmcgYSBtYWNyby4gQWxzbyBpZ25vcmUKLSAgICAjIHBvaW50ZXJzIGFuZCByZWZlcmVu
Y2VzIHRvIGFycmF5cyBhbmQgZnVuY3Rpb25zIGNveiB0aGV5J3JlIHRvbyB0cmlja3k6Ci0gICAg
IyB3ZSB1c2UgYSB2ZXJ5IHNpbXBsZSB3YXkgdG8gcmVjb2duaXplIHRoZXNlOgotICAgICMgIiAo
c29tZXRoaW5nKShtYXliZS1zb21ldGhpbmcpIiBvcgotICAgICMgIiAoc29tZXRoaW5nKShtYXli
ZS1zb21ldGhpbmcsIiBvcgotICAgICMgIiAoc29tZXRoaW5nKVtzb21ldGhpbmddIgotICAgICMg
Tm90ZSB0aGF0IHdlIGFzc3VtZSB0aGUgY29udGVudHMgb2YgW10gdG8gYmUgc2hvcnQgZW5vdWdo
IHRoYXQKLSAgICAjIHRoZXknbGwgbmV2ZXIgbmVlZCB0byB3cmFwLgotICAgIGlmICggICMgSWdu
b3JlIGNvbnRyb2wgc3RydWN0dXJlcy4KLSAgICAgICAgbm90IHNlYXJjaChyJ1xiKGlmfGZvcnxm
b3JlYWNofHdoaWxlfHN3aXRjaHxyZXR1cm58bmV3fGRlbGV0ZSlcYicsIGZ1bmN0aW9uX2NhbGwp
Ci0gICAgICAgICMgSWdub3JlIHBvaW50ZXJzL3JlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgotICAg
ICAgICBhbmQgbm90IHNlYXJjaChyJyBcKFteKV0rXClcKFteKV0qKFwpfCwkKScsIGZ1bmN0aW9u
X2NhbGwpCi0gICAgICAgICMgSWdub3JlIHBvaW50ZXJzL3JlZmVyZW5jZXMgdG8gYXJyYXlzLgot
ICAgICAgICBhbmQgbm90IHNlYXJjaChyJyBcKFteKV0rXClcW1teXF1dK1xdJywgZnVuY3Rpb25f
Y2FsbCkpOgotICAgICAgICBpZiBzZWFyY2gocidcd1xzKlwoWyBcdF0oPyFccypcXCQpJywgZnVu
Y3Rpb25fY2FsbCk6ICAgICAgIyBhICggdXNlZCBmb3IgYSBmbiBjYWxsCi0gICAgICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVucycsIDQsCi0gICAg
ICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJykKLSAg
ICAgICAgZWxpZiBzZWFyY2gocidcKFsgXHRdKyg/IShccypcXCl8XCgpJywgZnVuY3Rpb25fY2Fs
bCk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3BhcmVucycsIDIsCi0gICAgICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgYWZ0ZXIgKCcpCi0g
ICAgICAgIGlmIChzZWFyY2gocidcd1xzK1woJywgZnVuY3Rpb25fY2FsbCkKLSAgICAgICAgICAg
IGFuZCBub3Qgc2VhcmNoKHInI1xzKmRlZmluZXx0eXBlZGVmJywgZnVuY3Rpb25fY2FsbCkpOgot
ICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJl
bnMnLCA0LAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGluIGZ1bmN0
aW9uIGNhbGwnKQotICAgICAgICAjIElmIHRoZSApIGlzIGZvbGxvd2VkIG9ubHkgYnkgYSBuZXds
aW5lIG9yIGEgeyArIG5ld2xpbmUsIGFzc3VtZSBpdCdzCi0gICAgICAgICMgcGFydCBvZiBhIGNv
bnRyb2wgc3RhdGVtZW50IChpZi93aGlsZS9ldGMpLCBhbmQgZG9uJ3QgY29tcGxhaW4KLSAgICAg
ICAgaWYgc2VhcmNoKHInW14pXHNdXHMrXCkoPyFccyokfHtccyokKScsIGZ1bmN0aW9uX2NhbGwp
OgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9w
YXJlbnMnLCAyLAotICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJykKLQot
Ci1kZWYgaXNfYmxhbmtfbGluZShsaW5lKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWYgdGhlIGdp
dmVuIGxpbmUgaXMgYmxhbmsuCi0KLSAgICBXZSBjb25zaWRlciBhIGxpbmUgdG8gYmUgYmxhbmsg
aWYgdGhlIGxpbmUgaXMgZW1wdHkgb3IgY29uc2lzdHMgb2YKLSAgICBvbmx5IHdoaXRlIHNwYWNl
cy4KLQotICAgIEFyZ3M6Ci0gICAgICBsaW5lOiBBIGxpbmUgb2YgYSBzdHJpbmcuCi0KLSAgICBS
ZXR1cm5zOgotICAgICAgVHJ1ZSwgaWYgdGhlIGdpdmVuIGxpbmUgaXMgYmxhbmsuCi0gICAgIiIi
Ci0gICAgcmV0dXJuIG5vdCBsaW5lIG9yIGxpbmUuaXNzcGFjZSgpCi0KLQotZGVmIGNoZWNrX2Zv
cl9mdW5jdGlvbl9sZW5ndGhzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25fc3RhdGUsIGVycm9yKToKLSAg
ICAiIiJSZXBvcnRzIGZvciBsb25nIGZ1bmN0aW9uIGJvZGllcy4KLQotICAgIEZvciBhbiBvdmVy
dmlldyB3aHkgdGhpcyBpcyBkb25lLCBzZWU6Ci0gICAgaHR0cDovL2dvb2dsZS1zdHlsZWd1aWRl
Lmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9jcHBndWlkZS54bWwjV3JpdGVfU2hvcnRfRnVuY3Rp
b25zCi0KLSAgICBVc2VzIGEgc2ltcGxpc3RpYyBhbGdvcml0aG0gYXNzdW1pbmcgb3RoZXIgc3R5
bGUgZ3VpZGVsaW5lcwotICAgIChlc3BlY2lhbGx5IHNwYWNpbmcpIGFyZSBmb2xsb3dlZC4KLSAg
ICBPbmx5IGNoZWNrcyB1bmluZGVudGVkIGZ1bmN0aW9ucywgc28gY2xhc3MgbWVtYmVycyBhcmUg
dW5jaGVja2VkLgotICAgIFRyaXZpYWwgYm9kaWVzIGFyZSB1bmNoZWNrZWQsIHNvIGNvbnN0cnVj
dG9ycyB3aXRoIGh1Z2UgaW5pdGlhbGl6ZXIgbGlzdHMKLSAgICBtYXkgYmUgbWlzc2VkLgotICAg
IEJsYW5rL2NvbW1lbnQgbGluZXMgYXJlIG5vdCBjb3VudGVkIHNvIGFzIHRvIGF2b2lkIGVuY291
cmFnaW5nIHRoZSByZW1vdmFsCi0gICAgb2YgdmVydGljYWwgc3BhY2UgYW5kIGNvbW1tZW50cyBq
dXN0IHRvIGdldCB0aHJvdWdoIGEgbGludCBjaGVjay4KLSAgICBOT0xJTlQgKm9uIHRoZSBsYXN0
IGxpbmUgb2YgYSBmdW5jdGlvbiogZGlzYWJsZXMgdGhpcyBjaGVjay4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KLSAgICAgIGNsZWFu
X2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KLSAg
ICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotICAgICAg
ZnVuY3Rpb25fc3RhdGU6IEN1cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgbGluZXMgaW4gYm9keSBz
byBmYXIuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3Jz
IGZvdW5kLgotICAgICIiIgotICAgIGxpbmVzID0gY2xlYW5fbGluZXMubGluZXMKLSAgICBsaW5l
ID0gbGluZXNbbGluZV9udW1iZXJdCi0gICAgcmF3ID0gY2xlYW5fbGluZXMucmF3X2xpbmVzCi0g
ICAgcmF3X2xpbmUgPSByYXdbbGluZV9udW1iZXJdCi0gICAgam9pbmVkX2xpbmUgPSAnJwotCi0g
ICAgc3RhcnRpbmdfZnVuYyA9IEZhbHNlCi0gICAgcmVnZXhwID0gcicoXHcoXHd8Ojp8XCp8XCZ8
XHMpKilcKCcgICMgZGVjbHMgKiAmIHNwYWNlOjpuYW1lKCAuLi4KLSAgICBtYXRjaF9yZXN1bHQg
PSBtYXRjaChyZWdleHAsIGxpbmUpCi0gICAgaWYgbWF0Y2hfcmVzdWx0OgotICAgICAgICAjIElm
IHRoZSBuYW1lIGlzIGFsbCBjYXBzIGFuZCB1bmRlcnNjb3JlcywgZmlndXJlIGl0J3MgYSBtYWNy
byBhbmQKLSAgICAgICAgIyBpZ25vcmUgaXQsIHVubGVzcyBpdCdzIFRFU1Qgb3IgVEVTVF9GLgot
ICAgICAgICBmdW5jdGlvbl9uYW1lID0gbWF0Y2hfcmVzdWx0Lmdyb3VwKDEpLnNwbGl0KClbLTFd
Ci0gICAgICAgIGlmIGZ1bmN0aW9uX25hbWUgPT0gJ1RFU1QnIG9yIGZ1bmN0aW9uX25hbWUgPT0g
J1RFU1RfRicgb3IgKG5vdCBtYXRjaChyJ1tBLVpfXSskJywgZnVuY3Rpb25fbmFtZSkpOgotICAg
ICAgICAgICAgc3RhcnRpbmdfZnVuYyA9IFRydWUKLQotICAgIGlmIHN0YXJ0aW5nX2Z1bmM6Ci0g
ICAgICAgIGJvZHlfZm91bmQgPSBGYWxzZQotICAgICAgICBmb3Igc3RhcnRfbGluZV9udW1iZXIg
aW4geHJhbmdlKGxpbmVfbnVtYmVyLCBjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAg
ICAgICBzdGFydF9saW5lID0gbGluZXNbc3RhcnRfbGluZV9udW1iZXJdCi0gICAgICAgICAgICBq
b2luZWRfbGluZSArPSAnICcgKyBzdGFydF9saW5lLmxzdHJpcCgpCi0gICAgICAgICAgICBpZiBz
ZWFyY2gocicoO3x9KScsIHN0YXJ0X2xpbmUpOiAgIyBEZWNsYXJhdGlvbnMgYW5kIHRyaXZpYWwg
ZnVuY3Rpb25zCi0gICAgICAgICAgICAgICAgYm9keV9mb3VuZCA9IFRydWUKLSAgICAgICAgICAg
ICAgICBicmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgLi4uIGlnbm9yZQotICAg
ICAgICAgICAgaWYgc2VhcmNoKHIneycsIHN0YXJ0X2xpbmUpOgotICAgICAgICAgICAgICAgIGJv
ZHlfZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24gPSBzZWFyY2gocicoKFx3
fDopKilcKCcsIGxpbmUpLmdyb3VwKDEpCi0gICAgICAgICAgICAgICAgaWYgbWF0Y2gocidURVNU
JywgZnVuY3Rpb24pOiAgICAjIEhhbmRsZSBURVNULi4uIG1hY3JvcwotICAgICAgICAgICAgICAg
ICAgICBwYXJhbWV0ZXJfcmVnZXhwID0gc2VhcmNoKHInKFwoLipcKSknLCBqb2luZWRfbGluZSkK
LSAgICAgICAgICAgICAgICAgICAgaWYgcGFyYW1ldGVyX3JlZ2V4cDogICAgICAgICAgICAgIyBJ
Z25vcmUgYmFkIHN5bnRheAotICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKz0gcGFy
YW1ldGVyX3JlZ2V4cC5ncm91cCgxKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIGZ1bmN0aW9uICs9ICcoKScKLSAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0
ZS5iZWdpbihmdW5jdGlvbikKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3Qg
Ym9keV9mb3VuZDoKLSAgICAgICAgICAgICMgTm8gYm9keSBmb3IgdGhlIGZ1bmN0aW9uIChvciBl
dmlkZW5jZSBvZiBhIG5vbi1mdW5jdGlvbikgd2FzIGZvdW5kLgotICAgICAgICAgICAgZXJyb3Io
ZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZm5fc2l6ZScsIDUsCi0gICAgICAg
ICAgICAgICAgICAnTGludCBmYWlsZWQgdG8gZmluZCBzdGFydCBvZiBmdW5jdGlvbiBib2R5Licp
Ci0gICAgZWxpZiBtYXRjaChyJ15cfVxzKiQnLCBsaW5lKTogICMgZnVuY3Rpb24gZW5kCi0gICAg
ICAgIGlmIG5vdCBzZWFyY2gocidcYk5PTElOVFxiJywgcmF3X2xpbmUpOgotICAgICAgICAgICAg
ZnVuY3Rpb25fc3RhdGUuY2hlY2soZXJyb3IsIGZpbGVuYW1lLCBsaW5lX251bWJlcikKLSAgICAg
ICAgZnVuY3Rpb25fc3RhdGUuZW5kKCkKLSAgICBlbGlmIG5vdCBtYXRjaChyJ15ccyokJywgbGlu
ZSk6Ci0gICAgICAgIGZ1bmN0aW9uX3N0YXRlLmNvdW50KCkgICMgQ291bnQgbm9uLWJsYW5rL25v
bi1jb21tZW50IGxpbmVzLgotCi0KLWRlZiBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0
bmVzcyBvZiB2YXJpb3VzIHNwYWNpbmcgaXNzdWVzIGluIHRoZSBjb2RlLgotCi0gICAgVGhpbmdz
IHdlIGNoZWNrIGZvcjogc3BhY2VzIGFyb3VuZCBvcGVyYXRvcnMsIHNwYWNlcyBhZnRlcgotICAg
IGlmL2Zvci93aGlsZS9zd2l0Y2gsIG5vIHNwYWNlcyBhcm91bmQgcGFyZW5zIGluIGZ1bmN0aW9u
IGNhbGxzLCB0d28KLSAgICBzcGFjZXMgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50LCBkb24ndCBz
dGFydCBhIGJsb2NrIHdpdGggYSBibGFuawotICAgIGxpbmUsIGRvbid0IGVuZCBhIGZ1bmN0aW9u
IHdpdGggYSBibGFuayBsaW5lLCBkb24ndCBoYXZlIHRvbyBtYW55Ci0gICAgYmxhbmsgbGluZXMg
aW4gYSByb3cuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBj
dXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNl
IGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0
aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICByYXcgPSBjbGVhbl9saW5lcy5yYXdf
bGluZXMKLSAgICBsaW5lID0gcmF3W2xpbmVfbnVtYmVyXQotCi0gICAgIyBCZWZvcmUgbml4aW5n
IGNvbW1lbnRzLCBjaGVjayBpZiB0aGUgbGluZSBpcyBibGFuayBmb3Igbm8gZ29vZAotICAgICMg
cmVhc29uLiAgVGhpcyBpbmNsdWRlcyB0aGUgZmlyc3QgbGluZSBhZnRlciBhIGJsb2NrIGlzIG9w
ZW5lZCwgYW5kCi0gICAgIyBibGFuayBsaW5lcyBhdCB0aGUgZW5kIG9mIGEgZnVuY3Rpb24gKGll
LCByaWdodCBiZWZvcmUgYSBsaW5lIGxpa2UgJ30nKS4KLSAgICBpZiBpc19ibGFua19saW5lKGxp
bmUpOgotICAgICAgICBlbGlkZWQgPSBjbGVhbl9saW5lcy5lbGlkZWQKLSAgICAgICAgcHJldmlv
dXNfbGluZSA9IGVsaWRlZFtsaW5lX251bWJlciAtIDFdCi0gICAgICAgIHByZXZpb3VzX2JyYWNl
ID0gcHJldmlvdXNfbGluZS5yZmluZCgneycpCi0gICAgICAgICMgRklYTUU6IERvbid0IGNvbXBs
YWluIGlmIGxpbmUgYmVmb3JlIGJsYW5rIGxpbmUsIGFuZCBsaW5lIGFmdGVyLAotICAgICAgICAj
ICAgICAgICBib3RoIHN0YXJ0IHdpdGggYWxudW1zIGFuZCBhcmUgaW5kZW50ZWQgdGhlIHNhbWUg
YW1vdW50LgotICAgICAgICAjICAgICAgICBUaGlzIGlnbm9yZXMgd2hpdGVzcGFjZSBhdCB0aGUg
c3RhcnQgb2YgYSBuYW1lc3BhY2UgYmxvY2sKLSAgICAgICAgIyAgICAgICAgYmVjYXVzZSB0aG9z
ZSBhcmUgbm90IHVzdWFsbHkgaW5kZW50ZWQuCi0gICAgICAgIGlmIChwcmV2aW91c19icmFjZSAh
PSAtMSBhbmQgcHJldmlvdXNfbGluZVtwcmV2aW91c19icmFjZTpdLmZpbmQoJ30nKSA9PSAtMQot
ICAgICAgICAgICAgYW5kIHByZXZpb3VzX2xpbmVbOnByZXZpb3VzX2JyYWNlXS5maW5kKCduYW1l
c3BhY2UnKSA9PSAtMSk6Ci0gICAgICAgICAgICAjIE9LLCB3ZSBoYXZlIGEgYmxhbmsgbGluZSBh
dCB0aGUgc3RhcnQgb2YgYSBjb2RlIGJsb2NrLiAgQmVmb3JlIHdlCi0gICAgICAgICAgICAjIGNv
bXBsYWluLCB3ZSBjaGVjayBpZiBpdCBpcyBhbiBleGNlcHRpb24gdG8gdGhlIHJ1bGU6IFRoZSBw
cmV2aW91cwotICAgICAgICAgICAgIyBub24tZW1wdHkgbGluZSBoYXMgdGhlIHBhcmFtZXRlcnMg
b2YgYSBmdW5jdGlvbiBoZWFkZXIgdGhhdCBhcmUgaW5kZW50ZWQKLSAgICAgICAgICAgICMgNCBz
cGFjZXMgKGJlY2F1c2UgdGhleSBkaWQgbm90IGZpdCBpbiBhIDgwIGNvbHVtbiBsaW5lIHdoZW4g
cGxhY2VkIG9uCi0gICAgICAgICAgICAjIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGZ1bmN0aW9uIG5h
bWUpLiAgV2UgYWxzbyBjaGVjayBmb3IgdGhlIGNhc2Ugd2hlcmUKLSAgICAgICAgICAgICMgdGhl
IHByZXZpb3VzIGxpbmUgaXMgaW5kZW50ZWQgNiBzcGFjZXMsIHdoaWNoIG1heSBoYXBwZW4gd2hl
biB0aGUKLSAgICAgICAgICAgICMgaW5pdGlhbGl6ZXJzIG9mIGEgY29uc3RydWN0b3IgZG8gbm90
IGZpdCBpbnRvIGEgODAgY29sdW1uIGxpbmUuCi0gICAgICAgICAgICBleGNlcHRpb24gPSBGYWxz
ZQotICAgICAgICAgICAgaWYgbWF0Y2gocicgezZ9XHcnLCBwcmV2aW91c19saW5lKTogICMgSW5p
dGlhbGl6ZXIgbGlzdD8KLSAgICAgICAgICAgICAgICAjIFdlIGFyZSBsb29raW5nIGZvciB0aGUg
b3BlbmluZyBjb2x1bW4gb2YgaW5pdGlhbGl6ZXIgbGlzdCwgd2hpY2gKLSAgICAgICAgICAgICAg
ICAjIHNob3VsZCBiZSBpbmRlbnRlZCA0IHNwYWNlcyB0byBjYXVzZSA2IHNwYWNlIGluZGVudGF0
aW9uIGFmdGVyd2FyZHMuCi0gICAgICAgICAgICAgICAgc2VhcmNoX3Bvc2l0aW9uID0gbGluZV9u
dW1iZXIgLSAyCi0gICAgICAgICAgICAgICAgd2hpbGUgKHNlYXJjaF9wb3NpdGlvbiA+PSAwCi0g
ICAgICAgICAgICAgICAgICAgICAgIGFuZCBtYXRjaChyJyB7Nn1cdycsIGVsaWRlZFtzZWFyY2hf
cG9zaXRpb25dKSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlYXJjaF9wb3NpdGlvbiAtPSAxCi0g
ICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gKHNlYXJjaF9wb3NpdGlvbiA+PSAwCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbGlkZWRbc2VhcmNoX3Bvc2l0aW9uXVs6NV0gPT0g
JyAgICA6JykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTZWFyY2ggZm9y
IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgb3IgYW4gaW5pdGlhbGl6ZXIgbGlzdC4gIFdlIHVzZSBh
Ci0gICAgICAgICAgICAgICAgIyBzaW1wbGUgaGV1cmlzdGljIGhlcmU6IElmIHRoZSBsaW5lIGlz
IGluZGVudGVkIDQgc3BhY2VzOyBhbmQgd2UgaGF2ZSBhCi0gICAgICAgICAgICAgICAgIyBjbG9z
aW5nIHBhcmVuLCB3aXRob3V0IHRoZSBvcGVuaW5nIHBhcmVuLCBmb2xsb3dlZCBieSBhbiBvcGVu
aW5nIGJyYWNlCi0gICAgICAgICAgICAgICAgIyBvciBjb2xvbiAoZm9yIGluaXRpYWxpemVyIGxp
c3RzKSB3ZSBhc3N1bWUgdGhhdCBpdCBpcyB0aGUgbGFzdCBsaW5lIG9mCi0gICAgICAgICAgICAg
ICAgIyBhIGZ1bmN0aW9uIGhlYWRlci4gIElmIHdlIGhhdmUgYSBjb2xvbiBpbmRlbnRlZCA0IHNw
YWNlcywgaXQgaXMgYW4KLSAgICAgICAgICAgICAgICAjIGluaXRpYWxpemVyIGxpc3QuCi0gICAg
ICAgICAgICAgICAgZXhjZXB0aW9uID0gKG1hdGNoKHInIHs0fVx3W15cKF0qXClccyooY29uc3Rc
cyopPyhce1xzKiR8OiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2
aW91c19saW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBtYXRjaChyJyB7NH06
JywgcHJldmlvdXNfbGluZSkpCi0KLSAgICAgICAgICAgIGlmIG5vdCBleGNlcHRpb246Ci0gICAg
ICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFu
a19saW5lJywgMiwKLSAgICAgICAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgc3Rh
cnQgb2YgYSBjb2RlIGJsb2NrLiAgSXMgdGhpcyBuZWVkZWQ/JykKLSAgICAgICAgIyBUaGlzIGRv
ZXNuJ3QgaWdub3JlIHdoaXRlc3BhY2UgYXQgdGhlIGVuZCBvZiBhIG5hbWVzcGFjZSBibG9jawot
ICAgICAgICAjIGJlY2F1c2UgdGhhdCBpcyB0b28gaGFyZCB3aXRob3V0IHBhaXJpbmcgb3Blbi9j
bG9zZSBicmFjZXM7Ci0gICAgICAgICMgaG93ZXZlciwgYSBzcGVjaWFsIGV4Y2VwdGlvbiBpcyBt
YWRlIGZvciBuYW1lc3BhY2UgY2xvc2luZwotICAgICAgICAjIGJyYWNrZXRzIHdoaWNoIGhhdmUg
YSBjb21tZW50IGNvbnRhaW5pbmcgIm5hbWVzcGFjZSIuCi0gICAgICAgICMKLSAgICAgICAgIyBB
bHNvLCBpZ25vcmUgYmxhbmsgbGluZXMgYXQgdGhlIGVuZCBvZiBhIGJsb2NrIGluIGEgbG9uZyBp
Zi1lbHNlCi0gICAgICAgICMgY2hhaW4sIGxpa2UgdGhpczoKLSAgICAgICAgIyAgIGlmIChjb25k
aXRpb24xKSB7Ci0gICAgICAgICMgICAgIC8vIFNvbWV0aGluZyBmb2xsb3dlZCBieSBhIGJsYW5r
IGxpbmUKLSAgICAgICAgIwotICAgICAgICAjICAgfSBlbHNlIGlmIChjb25kaXRpb24yKSB7Ci0g
ICAgICAgICMgICAgIC8vIFNvbWV0aGluZyBlbHNlCi0gICAgICAgICMgICB9Ci0gICAgICAgIGlm
IGxpbmVfbnVtYmVyICsgMSA8IGNsZWFuX2xpbmVzLm51bV9saW5lcygpOgotICAgICAgICAgICAg
bmV4dF9saW5lID0gcmF3W2xpbmVfbnVtYmVyICsgMV0KLSAgICAgICAgICAgIGlmIChuZXh0X2xp
bmUKLSAgICAgICAgICAgICAgICBhbmQgbWF0Y2gocidccyp9JywgbmV4dF9saW5lKQotICAgICAg
ICAgICAgICAgIGFuZCBuZXh0X2xpbmUuZmluZCgnbmFtZXNwYWNlJykgPT0gLTEKLSAgICAgICAg
ICAgICAgICBhbmQgbmV4dF9saW5lLmZpbmQoJ30gZWxzZSAnKSA9PSAtMSk6Ci0gICAgICAgICAg
ICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9ibGFua19saW5l
JywgMywKLSAgICAgICAgICAgICAgICAgICAgICAnQmxhbmsgbGluZSBhdCB0aGUgZW5kIG9mIGEg
Y29kZSBibG9jay4gIElzIHRoaXMgbmVlZGVkPycpCi0KLSAgICAjIE5leHQsIHdlIGNvbXBsYWlu
IGlmIHRoZXJlJ3MgYSBjb21tZW50IHRvbyBuZWFyIHRoZSB0ZXh0Ci0gICAgY29tbWVudF9wb3Np
dGlvbiA9IGxpbmUuZmluZCgnLy8nKQotICAgIGlmIGNvbW1lbnRfcG9zaXRpb24gIT0gLTE6Ci0g
ICAgICAgICMgQ2hlY2sgaWYgdGhlIC8vIG1heSBiZSBpbiBxdW90ZXMuICBJZiBzbywgaWdub3Jl
IGl0Ci0gICAgICAgICMgQ29tcGFyaXNvbnMgbWFkZSBleHBsaWNpdCBmb3IgY2xhcml0eSAtLSBw
eWxpbnQ6IGRpc2FibGUtbXNnPUM2NDAzCi0gICAgICAgIGlmIChsaW5lLmNvdW50KCciJywgMCwg
Y29tbWVudF9wb3NpdGlvbikgLSBsaW5lLmNvdW50KCdcXCInLCAwLCBjb21tZW50X3Bvc2l0aW9u
KSkgJSAyID09IDA6ICAgIyBub3QgaW4gcXVvdGVzCi0gICAgICAgICAgICAjIEFsbG93IG9uZSBz
cGFjZSBmb3IgbmV3IHNjb3BlcywgdHdvIHNwYWNlcyBvdGhlcndpc2U6Ci0gICAgICAgICAgICBp
ZiAobm90IG1hdGNoKHInXlxzKnsgLy8nLCBsaW5lKQotICAgICAgICAgICAgICAgIGFuZCAoKGNv
bW1lbnRfcG9zaXRpb24gPj0gMQotICAgICAgICAgICAgICAgICAgICAgIGFuZCBsaW5lW2NvbW1l
bnRfcG9zaXRpb24tMV0gbm90IGluIHN0cmluZy53aGl0ZXNwYWNlKQotICAgICAgICAgICAgICAg
ICAgICAgb3IgKGNvbW1lbnRfcG9zaXRpb24gPj0gMgotICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZCBsaW5lW2NvbW1lbnRfcG9zaXRpb24tMl0gbm90IGluIHN0cmluZy53aGl0ZXNwYWNlKSkp
OgotICAgICAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvY29tbWVudHMnLCAyLAotICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3Bh
Y2VzIGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBjb21tZW50cycpCi0gICAgICAgICAgICAjIFRo
ZXJlIHNob3VsZCBhbHdheXMgYmUgYSBzcGFjZSBiZXR3ZWVuIHRoZSAvLyBhbmQgdGhlIGNvbW1l
bnQKLSAgICAgICAgICAgIGNvbW1lbnRlbmQgPSBjb21tZW50X3Bvc2l0aW9uICsgMgotICAgICAg
ICAgICAgaWYgY29tbWVudGVuZCA8IGxlbihsaW5lKSBhbmQgbm90IGxpbmVbY29tbWVudGVuZF0g
PT0gJyAnOgotICAgICAgICAgICAgICAgICMgYnV0IHNvbWUgbGluZXMgYXJlIGV4Y2VwdGlvbnMg
LS0gZS5nLiBpZiB0aGV5J3JlIGJpZwotICAgICAgICAgICAgICAgICMgY29tbWVudCBkZWxpbWl0
ZXJzIGxpa2U6Ci0gICAgICAgICAgICAgICAgIyAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAjIG9yIHRo
ZXkgYmVnaW4gd2l0aCBtdWx0aXBsZSBzbGFzaGVzIGZvbGxvd2VkIGJ5IGEgc3BhY2U6Ci0gICAg
ICAgICAgICAgICAgIyAvLy8vLy8vLyBIZWFkZXIgY29tbWVudAotICAgICAgICAgICAgICAgIG1h
dGNoZWQgPSAoc2VhcmNoKHInWz0vLV17NCx9XHMqJCcsIGxpbmVbY29tbWVudGVuZDpdKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgb3Igc2VhcmNoKHInXi8rICcsIGxpbmVbY29tbWVudGVu
ZDpdKSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2hlZDoKLSAgICAgICAgICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9jb21tZW50cycsIDQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4g
Ly8gYW5kIGNvbW1lbnQnKQotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251
bWJlcl0gICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5ncwotCi0gICAgIyBEb24ndCB0
cnkgdG8gZG8gc3BhY2luZyBjaGVja3MgZm9yIG9wZXJhdG9yIG1ldGhvZHMKLSAgICBsaW5lID0g
cmUuc3ViKHInb3BlcmF0b3IoPT18IT18PHw8PHw8PXw+PXw+Pnw+KVwoJywgJ29wZXJhdG9yXCgn
LCBsaW5lKQotCi0gICAgIyBXZSBhbGxvdyBuby1zcGFjZXMgYXJvdW5kID0gd2l0aGluIGFuIGlm
OiAiaWYgKCAoYT1Gb28oKSkgPT0gMCApIi4KLSAgICAjIE90aGVyd2lzZSBub3QuICBOb3RlIHdl
IG9ubHkgY2hlY2sgZm9yIG5vbi1zcGFjZXMgb24gKmJvdGgqIHNpZGVzOwotICAgICMgc29tZXRp
bWVzIHBlb3BsZSBwdXQgbm9uLXNwYWNlcyBvbiBvbmUgc2lkZSB3aGVuIGFsaWduaW5nID0ncyBh
bW9uZwotICAgICMgbWFueSBsaW5lcyAobm90IHRoYXQgdGhpcyBpcyBiZWhhdmlvciB0aGF0IEkg
YXBwcm92ZSBvZi4uLikKLSAgICBpZiBzZWFyY2gocidbXHcuXT1bXHcuXScsIGxpbmUpIGFuZCBu
b3Qgc2VhcmNoKHInXGIoaWZ8d2hpbGUpICcsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDQsCi0gICAgICAgICAgICAg
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPScpCi0KLSAgICAjIEZJWE1FOiBJdCdzIG5vdCBvayB0
byBoYXZlIHNwYWNlcyBhcm91bmQgYmluYXJ5IG9wZXJhdG9ycyBsaWtlICsgLSAqIC8gLgotCi0g
ICAgIyBZb3Ugc2hvdWxkIGFsd2F5cyBoYXZlIHdoaXRlc3BhY2UgYXJvdW5kIGJpbmFyeSBvcGVy
YXRvcnMuCi0gICAgIyBBbGFzLCB3ZSBjYW4ndCB0ZXN0IDwgb3IgPiBiZWNhdXNlIHRoZXkncmUg
bGVnaXRpbWF0ZWx5IHVzZWQgc2FucyBzcGFjZXMKLSAgICAjIChhLT5iLCB2ZWN0b3I8aW50PiBh
KS4gIFRoZSBvbmx5IHRpbWUgd2UgY2FuIHRlbGwgaXMgYSA8IHdpdGggbm8gPiwgYW5kCi0gICAg
IyBvbmx5IGlmIGl0J3Mgbm90IHRlbXBsYXRlIHBhcmFtcyBsaXN0IHNwaWxsaW5nIGludG8gdGhl
IG5leHQgbGluZS4KLSAgICBtYXRjaGVkID0gc2VhcmNoKHInW148Pj0hXHNdKD09fCE9fDw9fD49
KVtePD49IVxzXScsIGxpbmUpCi0gICAgaWYgbm90IG1hdGNoZWQ6Ci0gICAgICAgICMgTm90ZSB0
aGF0IHdoaWxlIGl0IHNlZW1zIHRoYXQgdGhlICc8W148XSonIHRlcm0gaW4gdGhlIGZvbGxvd2lu
ZwotICAgICAgICAjIHJlZ2V4cCBjb3VsZCBiZSBzaW1wbGlmaWVkIHRvICc8LionLCB3aGljaCB3
b3VsZCBpbmRlZWQgbWF0Y2gKLSAgICAgICAgIyB0aGUgc2FtZSBjbGFzcyBvZiBzdHJpbmdzLCB0
aGUgW148XSBtZWFucyB0aGF0IHNlYXJjaGluZyBmb3IgdGhlCi0gICAgICAgICMgcmVnZXhwIHRh
a2VzIGxpbmVhciByYXRoZXIgdGhhbiBxdWFkcmF0aWMgdGltZS4KLSAgICAgICAgaWYgbm90IHNl
YXJjaChyJzxbXjxdKixccyokJywgbGluZSk6ICAjIHRlbXBsYXRlIHBhcmFtcyBzcGlsbAotICAg
ICAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1tePD49IVxzXSg8KVtePD49IVxzXShbXj5dfC0+
KSokJywgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsICd3aGl0ZXNwYWNlL29wZXJhdG9ycycsIDMsCi0gICAgICAgICAgICAgICdNaXNz
aW5nIHNwYWNlcyBhcm91bmQgJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLSAgICAjIFdlIGFsbG93
IG5vLXNwYWNlcyBhcm91bmQgPDwgYW5kID4+IHdoZW4gdXNlZCBsaWtlIHRoaXM6IDEwPDwyMCwg
YnV0Ci0gICAgIyBub3Qgb3RoZXJ3aXNlIChwYXJ0aWN1bGFybHksIG5vdCB3aGVuIHVzZWQgYXMg
c3RyZWFtcykKLSAgICBtYXRjaGVkID0gc2VhcmNoKHInW14wLTlcc10oPDx8Pj4pW14wLTlcc10n
LCBsaW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3doaXRlc3BhY2Uvb3BlcmF0b3JzJywgMywKLSAgICAgICAgICAgICAgJ01pc3Npbmcg
c3BhY2VzIGFyb3VuZCAlcycgJSBtYXRjaGVkLmdyb3VwKDEpKQotCi0gICAgIyBUaGVyZSBzaG91
bGRuJ3QgYmUgc3BhY2UgYXJvdW5kIHVuYXJ5IG9wZXJhdG9ycwotICAgIG1hdGNoZWQgPSBzZWFy
Y2gocicoIVxzfH5cc3xbXHNdLS1bXHM7XXxbXHNdXCtcK1tccztdKScsIGxpbmUpCi0gICAgaWYg
bWF0Y2hlZDoKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFj
ZS9vcGVyYXRvcnMnLCA0LAotICAgICAgICAgICAgICAnRXh0cmEgc3BhY2UgZm9yIG9wZXJhdG9y
ICVzJyAlIG1hdGNoZWQuZ3JvdXAoMSkpCi0KLSAgICAjIEEgcGV0IHBlZXZlIG9mIG1pbmU6IG5v
IHNwYWNlcyBhZnRlciBhbiBpZiwgd2hpbGUsIHN3aXRjaCwgb3IgZm9yCi0gICAgbWF0Y2hlZCA9
IHNlYXJjaChyJyAoaWZcKHxmb3JcKHxmb3JlYWNoXCh8d2hpbGVcKHxzd2l0Y2hcKCknLCBsaW5l
KQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYmVm
b3JlICggaW4gJXMnICUgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgICMgRm9yIGlmL2Zvci9mb3Jl
YWNoL3doaWxlL3N3aXRjaCwgdGhlIGxlZnQgYW5kIHJpZ2h0IHBhcmVucyBzaG91bGQgYmUKLSAg
ICAjIGNvbnNpc3RlbnQgYWJvdXQgaG93IG1hbnkgc3BhY2VzIGFyZSBpbnNpZGUgdGhlIHBhcmVu
cywgYW5kCi0gICAgIyB0aGVyZSBzaG91bGQgZWl0aGVyIGJlIHplcm8gb3Igb25lIHNwYWNlcyBp
bnNpZGUgdGhlIHBhcmVucy4KLSAgICAjIFdlIGRvbid0IHdhbnQ6ICJpZiAoIGZvbykiIG9yICJp
ZiAoIGZvbyAgICkiLgotICAgICMgRXhjZXB0aW9uOiAiZm9yICggOyBmb287IGJhcikiIGFuZCAi
Zm9yIChmb287IGJhcjsgKSIgYXJlIGFsbG93ZWQuCi0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ1xi
KGlmfGZvcnxmb3JlYWNofHdoaWxlfHN3aXRjaClccypcKChbIF0qKSguKS4qW14gXSsoWyBdKilc
KVxzKntccyokJywKLSAgICAgICAgICAgICAgICAgICAgIGxpbmUpCi0gICAgaWYgbWF0Y2hlZDoK
LSAgICAgICAgaWYgbGVuKG1hdGNoZWQuZ3JvdXAoMikpICE9IGxlbihtYXRjaGVkLmdyb3VwKDQp
KToKLSAgICAgICAgICAgIGlmIG5vdCAobWF0Y2hlZC5ncm91cCgzKSA9PSAnOycKLSAgICAgICAg
ICAgICAgICAgICAgYW5kIGxlbihtYXRjaGVkLmdyb3VwKDIpKSA9PSAxICsgbGVuKG1hdGNoZWQu
Z3JvdXAoNCkpCi0gICAgICAgICAgICAgICAgICAgIG9yIG5vdCBtYXRjaGVkLmdyb3VwKDIpIGFu
ZCBzZWFyY2gocidcYmZvclxzKlwoLio7IFwpJywgbGluZSkpOgotICAgICAgICAgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW5zJywgNSwKLSAgICAg
ICAgICAgICAgICAgICAgICAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiAlcycgJSBt
YXRjaGVkLmdyb3VwKDEpKQotICAgICAgICBpZiBub3QgbGVuKG1hdGNoZWQuZ3JvdXAoMikpIGlu
IFswLCAxXToKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvcGFyZW5zJywgNSwKLSAgICAgICAgICAgICAgICAgICdTaG91bGQgaGF2ZSB6ZXJvIG9y
IG9uZSBzcGFjZXMgaW5zaWRlICggYW5kICkgaW4gJXMnICUKLSAgICAgICAgICAgICAgICAgIG1h
dGNoZWQuZ3JvdXAoMSkpCi0KLSAgICAjIFlvdSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzcGFjZSBh
ZnRlciBhIGNvbW1hIChlaXRoZXIgYXMgZm4gYXJnIG9yIG9wZXJhdG9yKQotICAgIGlmIHNlYXJj
aChyJyxbXlxzXScsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICd3aGl0ZXNwYWNlL2NvbW1hJywgMywKLSAgICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYWZ0
ZXIgLCcpCi0KLSAgICAjIE5leHQgd2Ugd2lsbCBsb29rIGZvciBpc3N1ZXMgd2l0aCBmdW5jdGlv
biBjYWxscy4KLSAgICBjaGVja19zcGFjaW5nX2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBs
aW5lLCBsaW5lX251bWJlciwgZXJyb3IpCi0KLSAgICAjIEV4Y2VwdCBhZnRlciBhbiBvcGVuaW5n
IHBhcmVuLCB5b3Ugc2hvdWxkIGhhdmUgc3BhY2VzIGJlZm9yZSB5b3VyIGJyYWNlcy4KLSAgICAj
IEFuZCBzaW5jZSB5b3Ugc2hvdWxkIG5ldmVyIGhhdmUgYnJhY2VzIGF0IHRoZSBiZWdpbm5pbmcg
b2YgYSBsaW5lLCB0aGlzIGlzCi0gICAgIyBhbiBlYXN5IHRlc3QuCi0gICAgaWYgc2VhcmNoKHIn
W14gKHtdeycsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL2JyYWNlcycsIDUsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGJlZm9y
ZSB7JykKLQotICAgICMgTWFrZSBzdXJlICd9IGVsc2UgeycgaGFzIHNwYWNlcy4KLSAgICBpZiBz
ZWFyY2gocid9ZWxzZScsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDUsCi0gICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNl
IGJlZm9yZSBlbHNlJykKLQotICAgICMgWW91IHNob3VsZG4ndCBoYXZlIHNwYWNlcyBiZWZvcmUg
eW91ciBicmFja2V0cywgZXhjZXB0IG1heWJlIGFmdGVyCi0gICAgIyAnZGVsZXRlIFtdJyBvciAn
bmV3IGNoYXIgKiBbXScuCi0gICAgaWYgc2VhcmNoKHInXHdccytcWycsIGxpbmUpIGFuZCBub3Qg
c2VhcmNoKHInZGVsZXRlXHMrXFsnLCBsaW5lKToKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9icmFjZXMnLCA1LAotICAgICAgICAgICAgICAnRXh0cmEg
c3BhY2UgYmVmb3JlIFsnKQotCi0gICAgIyBZb3Ugc2hvdWxkbid0IGhhdmUgYSBzcGFjZSBiZWZv
cmUgYSBzZW1pY29sb24gYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICAjIFRoZXJlJ3MgYSBz
cGVjaWFsIGNhc2UgZm9yICJmb3IiIHNpbmNlIHRoZSBzdHlsZSBndWlkZSBhbGxvd3Mgc3BhY2Ug
YmVmb3JlCi0gICAgIyB0aGUgc2VtaWNvbG9uIHRoZXJlLgotICAgIGlmIHNlYXJjaChyJzpccyo7
XHMqJCcsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0
ZXNwYWNlL3NlbWljb2xvbicsIDUsCi0gICAgICAgICAgICAgICdTZW1pY29sb24gZGVmaW5pbmcg
ZW1wdHkgc3RhdGVtZW50LiBVc2UgeyB9IGluc3RlYWQuJykKLSAgICBlbGlmIHNlYXJjaChyJ15c
cyo7XHMqJCcsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL3NlbWljb2xvbicsIDUsCi0gICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5zIG9u
bHkgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0eSBzdGF0ZW1lbnQsICcKLSAg
ICAgICAgICAgICAgJ3VzZSB7IH0gaW5zdGVhZC4nKQotICAgIGVsaWYgKHNlYXJjaChyJ1xzKztc
cyokJywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidcYmZvclxiJywgbGluZSkpOgotICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3NlbWljb2xvbicsIDUsCi0g
ICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24uIElmIHRoaXMg
c2hvdWxkIGJlIGFuIGVtcHR5ICcKLSAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgdXNlIHsgfSBp
bnN0ZWFkLicpCi0gICAgZWxpZiAoc2VhcmNoKHInXGIoZm9yfHdoaWxlKVxzKlwoLipcKVxzKjtc
cyokJywgbGluZSkKLSAgICAgICAgICBhbmQgbGluZS5jb3VudCgnKCcpID09IGxpbmUuY291bnQo
JyknKQotICAgICAgICAgICMgQWxsb3cgZG8ge30gd2hpbGUoKTsKLSAgICAgICAgICBhbmQgbm90
IHNlYXJjaChyJ31ccyp3aGlsZScsIGxpbmUpKToKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9zZW1pY29sb24nLCA1LAotICAgICAgICAgICAgICAnU2Vt
aWNvbG9uIGRlZmluaW5nIGVtcHR5IHN0YXRlbWVudCBmb3IgdGhpcyBsb29wLiBVc2UgeyB9IGlu
c3RlYWQuJykKLQotCi1kZWYgZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlcik6Ci0gICAgIiIiUmV0dXJuIHRoZSBtb3N0IHJlY2VudCBub24tYmxhbmsg
bGluZSBhbmQgaXRzIGxpbmUgbnVtYmVyLgotCi0gICAgQXJnczoKLSAgICAgIGNsZWFuX2xpbmVz
OiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZSBjb250ZW50cy4K
LSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUgd2l0aCB0d28gZWxlbWVudHMuICBUaGUgZmlyc3Qg
ZWxlbWVudCBpcyB0aGUgY29udGVudHMgb2YgdGhlIGxhc3QKLSAgICAgIG5vbi1ibGFuayBsaW5l
IGJlZm9yZSB0aGUgY3VycmVudCBsaW5lLCBvciB0aGUgZW1wdHkgc3RyaW5nIGlmIHRoaXMgaXMg
dGhlCi0gICAgICBmaXJzdCBub24tYmxhbmsgbGluZS4gIFRoZSBzZWNvbmQgaXMgdGhlIGxpbmUg
bnVtYmVyIG9mIHRoYXQgbGluZSwgb3IgLTEKLSAgICAgIGlmIHRoaXMgaXMgdGhlIGZpcnN0IG5v
bi1ibGFuayBsaW5lLgotICAgICIiIgotCi0gICAgcHJldmlvdXNfbGluZV9udW1iZXIgPSBsaW5l
X251bWJlciAtIDEKLSAgICB3aGlsZSBwcmV2aW91c19saW5lX251bWJlciA+PSAwOgotICAgICAg
ICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW3ByZXZpb3VzX2xpbmVfbnVtYmVy
XQotICAgICAgICBpZiBub3QgaXNfYmxhbmtfbGluZShwcmV2aW91c19saW5lKTogICAgICMgaWYg
bm90IGEgYmxhbmsgbGluZS4uLgotICAgICAgICAgICAgcmV0dXJuIChwcmV2aW91c19saW5lLCBw
cmV2aW91c19saW5lX251bWJlcikKLSAgICAgICAgcHJldmlvdXNfbGluZV9udW1iZXIgLT0gMQot
ICAgIHJldHVybiAoJycsIC0xKQotCi0KLWRlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24o
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9y
KToKLSAgICAiIiJMb29rcyBmb3IgaW5kZW50YXRpb24gZXJyb3JzIGluc2lkZSBvZiBuYW1lc3Bh
Y2VzLgotCi0gICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVu
dCBmaWxlLgotICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250
YWluaW5nIHRoZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxp
bmUgdG8gY2hlY2suCi0gICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5v
dCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUuCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNh
bGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xp
bmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdz
LgotCi0gICAgbmFtZXNwYWNlX21hdGNoID0gbWF0Y2gocicoP1A8bmFtZXNwYWNlX2luZGVudGF0
aW9uPlxzKiluYW1lc3BhY2VccytcUytccyp7XHMqJCcsIGxpbmUpCi0gICAgaWYgbm90IG5hbWVz
cGFjZV9tYXRjaDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBuYW1lc3BhY2VfaW5kZW50YXRpb24g
PSBuYW1lc3BhY2VfbWF0Y2guZ3JvdXAoJ25hbWVzcGFjZV9pbmRlbnRhdGlvbicpCi0KLSAgICBp
c19oZWFkZXJfZmlsZSA9IGZpbGVfZXh0ZW5zaW9uID09ICdoJwotICAgIGlzX2ltcGxlbWVudGF0
aW9uX2ZpbGUgPSBub3QgaXNfaGVhZGVyX2ZpbGUKLSAgICBsaW5lX29mZnNldCA9IDAKLQotICAg
IGlmIGlzX2hlYWRlcl9maWxlOgotICAgICAgICBpbm5lcl9pbmRlbnRhdGlvbiA9IG5hbWVzcGFj
ZV9pbmRlbnRhdGlvbiArICcgJyAqIDQKLQotICAgICAgICBmb3IgY3VycmVudF9saW5lIGluIGNs
ZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlciArIDE6XToKLSAgICAgICAgICAgIGxpbmVf
b2Zmc2V0ICs9IDEKLQotICAgICAgICAgICAgIyBTa2lwIG5vdCBvbmx5IGVtcHR5IGxpbmVzIGJ1
dCBhbHNvIHRob3NlIHdpdGggcHJlcHJvY2Vzc29yIGRpcmVjdGl2ZXMuCi0gICAgICAgICAgICAj
IEdvdG8gbGFiZWxzIGRvbid0IG9jY3VyIGluIGhlYWRlciBmaWxlcywgc28gbm8gbmVlZCB0byBj
aGVjayBmb3IgdGhvc2UuCi0gICAgICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAn
JyBvciBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0KLSAgICAgICAgICAgIGlmIG5vdCBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aChpbm5lcl9p
bmRlbnRhdGlvbik6Ci0gICAgICAgICAgICAgICAgIyBJZiBzb21ldGhpbmcgdW5pbmRlbnRlZCB3
YXMgZGlzY292ZXJlZCwgbWFrZSBzdXJlIGl0J3MgYSBjbG9zaW5nIGJyYWNlLgotICAgICAgICAg
ICAgICAgIGlmIG5vdCBjdXJyZW50X2xpbmUuc3RhcnRzd2l0aChuYW1lc3BhY2VfaW5kZW50YXRp
b24gKyAnfScpOgotICAgICAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1i
ZXIgKyBsaW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ0luIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVzcGFjZSBzaG91bGQg
YmUgaW5kZW50ZWQuJykKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgaWYgaXNfaW1wbGVt
ZW50YXRpb25fZmlsZToKLSAgICAgICAgZm9yIGN1cnJlbnRfbGluZSBpbiBjbGVhbl9saW5lcy5y
YXdfbGluZXNbbGluZV9udW1iZXIgKyAxOl06Ci0gICAgICAgICAgICBsaW5lX29mZnNldCArPSAx
Ci0KLSAgICAgICAgICAgICMgU2tpcCBub3Qgb25seSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9z
ZSB3aXRoIChnb3RvKSBsYWJlbHMuCi0gICAgICAgICAgICAjIFRoZSBnb3RvIGxhYmVsIHJlZ2V4
cCBhY2NlcHRzIHNwYWNlcyBvciB0aGUgYmVnaW5uaW5nIG9mIGEKLSAgICAgICAgICAgICMgY29t
bWVudCAoaWYgYW55dGhpbmcpIGFmdGVyIHRoZSBpbml0aWFsIGNvbG9uLgotICAgICAgICAgICAg
aWYgY3VycmVudF9saW5lLnN0cmlwKCkgPT0gJycgb3IgbWF0Y2gocidcdytccyo6KFtcc1wvXS4q
KT8kJywgY3VycmVudF9saW5lKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICAgICByZW1haW5pbmdfbGluZSA9IGN1cnJlbnRfbGluZVtsZW4obmFtZXNwYWNlX2luZGVudGF0
aW9uKTpdCi0gICAgICAgICAgICBpZiBub3QgbWF0Y2gocidcUycsIHJlbWFpbmluZ19saW5lKToK
LSAgICAgICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNl
dCwgJ3doaXRlc3BhY2UvaW5kZW50JywgNCwKLSAgICAgICAgICAgICAgICAgICAgICAnSW4gYW4g
aW1wbGVtZW50YXRpb24gZmlsZSwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5vdCBi
ZSBpbmRlbnRlZC4nKQotCi0gICAgICAgICAgICAjIEp1c3QgY2hlY2sgdGhlIGZpcnN0IG5vbi1l
bXB0eSBsaW5lIGluIGFueSBjYXNlLCBiZWNhdXNlCi0gICAgICAgICAgICAjIG90aGVyd2lzZSB3
ZSB3b3VsZCBuZWVkIHRvIGNvdW50IG9wZW5lZCBhbmQgY2xvc2VkIGJyYWNlcywKLSAgICAgICAg
ICAgICMgd2hpY2ggaXMgb2J2aW91c2x5IGEgbG90IG1vcmUgY29tcGxpY2F0ZWQuCi0gICAgICAg
ICAgICBicmVhawotCi0KLWRlZiBjaGVja19zd2l0Y2hfaW5kZW50YXRpb24oZmlsZW5hbWUsIGNs
ZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgotICAgICIiIkxvb2tzIGZvciBpbmRlbnRh
dGlvbiBlcnJvcnMgaW5zaWRlIG9mIHN3aXRjaCBzdGF0ZW1lbnRzLgotCi0gICAgQXJnczoKLSAg
ICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgotICAgICAgY2xlYW5f
bGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgotICAg
ICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCi0gICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIi
IgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlcl0gIyBHZXQgcmlk
IG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgc3dpdGNoX21hdGNoID0gbWF0Y2gocico
P1A8c3dpdGNoX2luZGVudGF0aW9uPlxzKilzd2l0Y2hccypcKC4rXClccyp7XHMqJCcsIGxpbmUp
Ci0gICAgaWYgbm90IHN3aXRjaF9tYXRjaDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBzd2l0Y2hf
aW5kZW50YXRpb24gPSBzd2l0Y2hfbWF0Y2guZ3JvdXAoJ3N3aXRjaF9pbmRlbnRhdGlvbicpCi0g
ICAgaW5uZXJfaW5kZW50YXRpb24gPSBzd2l0Y2hfaW5kZW50YXRpb24gKyAnICcgKiA0Ci0gICAg
bGluZV9vZmZzZXQgPSAwCi0gICAgZW5jb3VudGVyZWRfbmVzdGVkX3N3aXRjaCA9IEZhbHNlCi0K
LSAgICBmb3IgY3VycmVudF9saW5lIGluIGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJlciAr
IDE6XToKLSAgICAgICAgbGluZV9vZmZzZXQgKz0gMQotCi0gICAgICAgICMgU2tpcCBub3Qgb25s
eSBlbXB0eSBsaW5lcyBidXQgYWxzbyB0aG9zZSB3aXRoIHByZXByb2Nlc3NvciBkaXJlY3RpdmVz
LgotICAgICAgICBpZiBjdXJyZW50X2xpbmUuc3RyaXAoKSA9PSAnJyBvciBjdXJyZW50X2xpbmUu
c3RhcnRzd2l0aCgnIycpOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBtYXRj
aChyJ1xzKnN3aXRjaFxzKlwoLitcKVxzKntccyokJywgY3VycmVudF9saW5lKToKLSAgICAgICAg
ICAgICMgQ29tcGxleGl0eSBhbGFybSAtIGFub3RoZXIgc3dpdGNoIHN0YXRlbWVudCBuZXN0ZWQg
aW5zaWRlIHRoZSBvbmUKLSAgICAgICAgICAgICMgdGhhdCB3ZSdyZSBjdXJyZW50bHkgdGVzdGlu
Zy4gV2UnbGwgbmVlZCB0byB0cmFjayB0aGUgZXh0ZW50IG9mCi0gICAgICAgICAgICAjIHRoYXQg
aW5uZXIgc3dpdGNoIGlmIHRoZSB1cGNvbWluZyBsYWJlbCB0ZXN0cyBhcmUgc3RpbGwgc3VwcG9z
ZWQKLSAgICAgICAgICAgICMgdG8gd29yayBjb3JyZWN0bHkuIExldCdzIG5vdCBkbyB0aGF0OyBp
bnN0ZWFkLCB3ZSdsbCBmaW5pc2gKLSAgICAgICAgICAgICMgY2hlY2tpbmcgdGhpcyBsaW5lLCBh
bmQgdGhlbiBsZWF2ZSBpdCBsaWtlIHRoYXQuIEFzc3VtaW5nIHRoZQotICAgICAgICAgICAgIyBp
bmRlbnRhdGlvbiBpcyBkb25lIGNvbnNpc3RlbnRseSAoZXZlbiBpZiBpbmNvcnJlY3RseSksIHRo
aXMgd2lsbAotICAgICAgICAgICAgIyBzdGlsbCBjYXRjaCBhbGwgaW5kZW50YXRpb24gaXNzdWVz
IGluIHByYWN0aWNlLgotICAgICAgICAgICAgZW5jb3VudGVyZWRfbmVzdGVkX3N3aXRjaCA9IFRy
dWUKLQotICAgICAgICBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoID0gbWF0Y2gocicoP1A8aW5k
ZW50YXRpb24+XHMqKSg/UDxyZW1haW5pbmdfbGluZT4uKikkJywgY3VycmVudF9saW5lKTsKLSAg
ICAgICAgY3VycmVudF9pbmRlbnRhdGlvbiA9IGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2guZ3Jv
dXAoJ2luZGVudGF0aW9uJykKLSAgICAgICAgcmVtYWluaW5nX2xpbmUgPSBjdXJyZW50X2luZGVu
dGF0aW9uX21hdGNoLmdyb3VwKCdyZW1haW5pbmdfbGluZScpCi0KLSAgICAgICAgIyBFbmQgdGhl
IGNoZWNrIGF0IHRoZSBlbmQgb2YgdGhlIHN3aXRjaCBzdGF0ZW1lbnQuCi0gICAgICAgIGlmIHJl
bWFpbmluZ19saW5lLnN0YXJ0c3dpdGgoJ30nKSBhbmQgY3VycmVudF9pbmRlbnRhdGlvbiA9PSBz
d2l0Y2hfaW5kZW50YXRpb246Ci0gICAgICAgICAgICBicmVhawotICAgICAgICAjIENhc2UgYW5k
IGRlZmF1bHQgYnJhbmNoZXMgc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gVGhlIHJlZ2V4cCBhbHNv
Ci0gICAgICAgICMgY2F0Y2hlcyBzaW5nbGUtbGluZSBjYXNlcyBsaWtlICJkZWZhdWx0OiBicmVh
azsiIGJ1dCBkb2VzIG5vdCB0cmlnZ2VyCi0gICAgICAgICMgb24gc3R1ZmYgbGlrZSAiRG9jdW1l
bnQ6OkZvbygpOyIuCi0gICAgICAgIGVsaWYgbWF0Y2gocicoZGVmYXVsdHxjYXNlXHMrLiopXHMq
OihbXjpdLiopPyQnLCByZW1haW5pbmdfbGluZSk6Ci0gICAgICAgICAgICBpZiBjdXJyZW50X2lu
ZGVudGF0aW9uICE9IHN3aXRjaF9pbmRlbnRhdGlvbjoKLSAgICAgICAgICAgICAgICBlcnJvcihm
aWxlbmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3doaXRlc3BhY2UvaW5kZW50Jywg
NCwKLSAgICAgICAgICAgICAgICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3VsZCBub3QgYmUgaW5k
ZW50ZWQsIGJ1dCBsaW5lIHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQuJykKLSAgICAgICAg
ICAgICAgICAjIERvbid0IHRocm93IGFuIGVycm9yIGZvciBtdWx0aXBsZSBiYWRseSBpbmRlbnRl
ZCBsYWJlbHMsCi0gICAgICAgICAgICAgICAgIyBvbmUgc2hvdWxkIGJlIGVub3VnaCB0byBmaWd1
cmUgb3V0IHRoZSBwcm9ibGVtLgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICMgV2Ug
aWdub3JlIGdvdG8gbGFiZWxzIGF0IHRoZSB2ZXJ5IGJlZ2lubmluZyBvZiBhIGxpbmUuCi0gICAg
ICAgIGVsaWYgbWF0Y2gocidcdytccyo6XHMqJCcsIHJlbWFpbmluZ19saW5lKToKLSAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICMgSXQncyBub3QgYSBnb3RvIGxhYmVsLCBzbyBjaGVjayBp
ZiBpdCdzIGluZGVudGVkIGF0IGxlYXN0IGFzIGZhciBhcwotICAgICAgICAjIHRoZSBzd2l0Y2gg
c3RhdGVtZW50IHBsdXMgb25lIG1vcmUgbGV2ZWwgb2YgaW5kZW50YXRpb24uCi0gICAgICAgIGVs
aWYgbm90IGN1cnJlbnRfaW5kZW50YXRpb24uc3RhcnRzd2l0aChpbm5lcl9pbmRlbnRhdGlvbik6
Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwg
J3doaXRlc3BhY2UvaW5kZW50JywgNCwKLSAgICAgICAgICAgICAgICAgICdOb24tbGFiZWwgY29k
ZSBpbnNpZGUgc3dpdGNoIHN0YXRlbWVudHMgc2hvdWxkIGJlIGluZGVudGVkLicpCi0gICAgICAg
ICAgICAjIERvbid0IHRocm93IGFuIGVycm9yIGZvciBtdWx0aXBsZSBiYWRseSBpbmRlbnRlZCBz
dGF0ZW1lbnRzLAotICAgICAgICAgICAgIyBvbmUgc2hvdWxkIGJlIGVub3VnaCB0byBmaWd1cmUg
b3V0IHRoZSBwcm9ibGVtLgotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBlbmNvdW50
ZXJlZF9uZXN0ZWRfc3dpdGNoOgotICAgICAgICAgICAgYnJlYWsKLQotCi1kZWYgY2hlY2tfYnJh
Y2VzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAiIiJM
b29rcyBmb3IgbWlzcGxhY2VkIGJyYWNlcyAoZS5nLiBhdCB0aGUgZW5kIG9mIGxpbmUpLgotCi0g
ICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgot
ICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRo
ZSBmaWxlLgotICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hl
Y2suCi0gICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgotICAgICIiIgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVsaWRlZFtsaW5lX251bWJl
cl0gIyBHZXQgcmlkIG9mIGNvbW1lbnRzIGFuZCBzdHJpbmdzLgotCi0gICAgaWYgbWF0Y2gocidc
cyp7XHMqJCcsIGxpbmUpOgotICAgICAgICAjIFdlIGFsbG93IGFuIG9wZW4gYnJhY2UgdG8gc3Rh
cnQgYSBsaW5lIGluIHRoZSBjYXNlIHdoZXJlIHNvbWVvbmUKLSAgICAgICAgIyBpcyB1c2luZyBi
cmFjZXMgZm9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgaW4gYSBibG9jayB0bwotICAgICAgICAj
IGV4cGxpY2l0bHkgY3JlYXRlIGEgbmV3IHNjb3BlLCB3aGljaCBpcyBjb21tb25seSB1c2VkIHRv
IGNvbnRyb2wKLSAgICAgICAgIyB0aGUgbGlmZXRpbWUgb2Ygc3RhY2stYWxsb2NhdGVkIHZhcmlh
Ymxlcy4gIFdlIGRvbid0IGRldGVjdCB0aGlzCi0gICAgICAgICMgcGVyZmVjdGx5OiB3ZSBqdXN0
IGRvbid0IGNvbXBsYWluIGlmIHRoZSBsYXN0IG5vbi13aGl0ZXNwYWNlCi0gICAgICAgICMgY2hh
cmFjdGVyIG9uIHRoZSBwcmV2aW91cyBub24tYmxhbmsgbGluZSBpcyAnOycsICc6JywgJ3snLCAn
fScsCi0gICAgICAgICMgJyknLCBvciAnKSBjb25zdCcgYW5kIGRvZXNuJ3QgYmVnaW4gd2l0aCAn
aWZ8Zm9yfHdoaWxlfHN3aXRjaHxlbHNlJy4KLSAgICAgICAgIyBXZSBhbHNvIGFsbG93ICcjJyBm
b3IgI2VuZGlmIGFuZCAnPScgZm9yIGFycmF5IGluaXRpYWxpemF0aW9uLgotICAgICAgICBwcmV2
aW91c19saW5lID0gZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlcilbMF0KLSAgICAgICAgaWYgKChub3Qgc2VhcmNoKHInWzs6fXspPV1ccyokfFwpXHMq
Y29uc3RccyokJywgcHJldmlvdXNfbGluZSkKLSAgICAgICAgICAgICBvciBzZWFyY2gocidcYihp
Znxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2h8ZWxzZSlcYicsIHByZXZpb3VzX2xpbmUpKQotICAg
ICAgICAgICAgYW5kIHByZXZpb3VzX2xpbmUuZmluZCgnIycpIDwgMCk6Ci0gICAgICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQsCi0gICAg
ICAgICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lJykKLSAgICBlbGlmIChzZWFyY2gocidcKVxzKihjb25zdFxzKik/e1xzKiQnLCBsaW5l
KQotICAgICAgICAgIGFuZCBsaW5lLmNvdW50KCcoJykgPT0gbGluZS5jb3VudCgnKScpCi0gICAg
ICAgICAgYW5kIG5vdCBzZWFyY2gocidcYihpZnxmb3J8Zm9yZWFjaHx3aGlsZXxzd2l0Y2gpXGIn
LCBsaW5lKSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvYnJhY2VzJywgNCwKLSAgICAgICAgICAgICAgJ1BsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGlu
ZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuJykKLQotICAgIGlmIChtYXRjaChyJ1xzKn1ccyok
JywgbGluZSkgYW5kIGxpbmVfbnVtYmVyID4gMSk6Ci0gICAgICAgICMgV2UgY2hlY2sgaWYgYSBj
bG9zZWQgYnJhY2UgaGFzIHN0YXJ0ZWQgYSBsaW5lIHRvIHNlZSBpZiBhCi0gICAgICAgICMgb25l
IGxpbmUgY29udHJvbCBzdGF0ZW1lbnQgd2FzIHByZXZpb3VzLgotICAgICAgICBwcmV2aW91c19s
aW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVfbnVtYmVyIC0gMl0KLSAgICAgICAgaWYgKHBy
ZXZpb3VzX2xpbmUuZmluZCgneycpID4gMAotICAgICAgICAgICAgYW5kIHNlYXJjaChyJ1xiKGlm
fGZvcnxmb3JlYWNofHdoaWxlfGVsc2UpXGInLCBwcmV2aW91c19saW5lKSk6Ci0gICAgICAgICAg
ICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2JyYWNlcycsIDQsCi0g
ICAgICAgICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNl
IGJyYWNlcy4nKQotCi0gICAgIyBBbiBlbHNlIGNsYXVzZSBzaG91bGQgYmUgb24gdGhlIHNhbWUg
bGluZSBhcyB0aGUgcHJlY2VkaW5nIGNsb3NpbmcgYnJhY2UuCi0gICAgaWYgbWF0Y2gocidccypl
bHNlXHMqJywgbGluZSk6Ci0gICAgICAgIHByZXZpb3VzX2xpbmUgPSBnZXRfcHJldmlvdXNfbm9u
X2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVswXQotICAgICAgICBpZiBtYXRj
aChyJ1xzKn1ccyokJywgcHJldmlvdXNfbGluZSk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL25ld2xpbmUnLCA0LAotICAgICAgICAgICAgICAg
ICAgJ0FuIGVsc2Ugc2hvdWxkIGFwcGVhciBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBwcmVjZWRp
bmcgfScpCi0KLSAgICAjIExpa2V3aXNlLCBhbiBlbHNlIHNob3VsZCBuZXZlciBoYXZlIHRoZSBl
bHNlIGNsYXVzZSBvbiB0aGUgc2FtZSBsaW5lCi0gICAgaWYgc2VhcmNoKHInXGJlbHNlIFteXHN7
XScsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHInXGJlbHNlIGlmXGInLCBsaW5lKToKLSAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKLSAg
ICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBvbiBzYW1lIGxpbmUgYXMg
ZWxzZSAodXNlIDIgbGluZXMpJykKLQotICAgICMgSW4gdGhlIHNhbWUgd2F5LCBhIGRvL3doaWxl
IHNob3VsZCBuZXZlciBiZSBvbiBvbmUgbGluZQotICAgIGlmIG1hdGNoKHInXHMqZG8gW15cc3td
JywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvbmV3bGluZScsIDQsCi0gICAgICAgICAgICAgICdkby93aGlsZSBjbGF1c2VzIHNob3VsZCBu
b3QgYmUgb24gYSBzaW5nbGUgbGluZScpCi0KLSAgICAjIEJyYWNlcyBzaG91bGRuJ3QgYmUgZm9s
bG93ZWQgYnkgYSA7IHVubGVzcyB0aGV5J3JlIGRlZmluaW5nIGEgc3RydWN0Ci0gICAgIyBvciBp
bml0aWFsaXppbmcgYW4gYXJyYXkuCi0gICAgIyBXZSBjYW4ndCB0ZWxsIGluIGdlbmVyYWwsIGJ1
dCB3ZSBjYW4gZm9yIHNvbWUgY29tbW9uIGNhc2VzLgotICAgIHByZXZpb3VzX2xpbmVfbnVtYmVy
ID0gbGluZV9udW1iZXIKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICAocHJldmlvdXNfbGluZSwg
cHJldmlvdXNfbGluZV9udW1iZXIpID0gZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFu
X2xpbmVzLCBwcmV2aW91c19saW5lX251bWJlcikKLSAgICAgICAgaWYgbWF0Y2gocidccyt7Lip9
XHMqOycsIGxpbmUpIGFuZCBub3QgcHJldmlvdXNfbGluZS5jb3VudCgnOycpOgotICAgICAgICAg
ICAgbGluZSA9IHByZXZpb3VzX2xpbmUgKyBsaW5lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBicmVhawotICAgIGlmIChzZWFyY2gocid7Lip9XHMqOycsIGxpbmUpCi0gICAgICAgIGFuZCBs
aW5lLmNvdW50KCd7JykgPT0gbGluZS5jb3VudCgnfScpCi0gICAgICAgIGFuZCBub3Qgc2VhcmNo
KHInc3RydWN0fGNsYXNzfGVudW18XHMqPVxzKnsnLCBsaW5lKSk6Ci0gICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2JyYWNlcycsIDQsCi0gICAgICAgICAg
ICAgICJZb3UgZG9uJ3QgbmVlZCBhIDsgYWZ0ZXIgYSB9IikKLQotCi1kZWYgY2hlY2tfZXhpdF9z
dGF0ZW1lbnRfc2ltcGxpZmljYXRpb25zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGVycm9yKToKLSAgICAiIiJMb29rcyBmb3IgZWxzZSBvciBlbHNlLWlmIHN0YXRlbWVudHMg
dGhhdCBzaG91bGQgYmUgd3JpdHRlbiBhcyBhbgotICAgIGlmIHN0YXRlbWVudCB3aGVuIHRoZSBw
cmlvciBpZiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yCi0gICAg
Z290byBzdGF0ZW1lbnQuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGlu
c3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3Mu
Ci0KLSAgICBlbHNlX21hdGNoID0gbWF0Y2gocicoP1A8ZWxzZV9pbmRlbnRhdGlvbj5ccyopKFx9
XHMqKT9lbHNlKFxzK2lmXHMqXCh8KD9QPGVsc2U+XHMqKFx7XHMqKT9cWikpJywgbGluZSkKLSAg
ICBpZiBub3QgZWxzZV9tYXRjaDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBlbHNlX2luZGVudGF0
aW9uID0gZWxzZV9tYXRjaC5ncm91cCgnZWxzZV9pbmRlbnRhdGlvbicpCi0gICAgaW5uZXJfaW5k
ZW50YXRpb24gPSBlbHNlX2luZGVudGF0aW9uICsgJyAnICogNAotCi0gICAgcHJldmlvdXNfbGlu
ZXMgPSBjbGVhbl9saW5lcy5lbGlkZWRbOmxpbmVfbnVtYmVyXQotICAgIHByZXZpb3VzX2xpbmVz
LnJldmVyc2UoKQotICAgIGxpbmVfb2Zmc2V0ID0gMAotICAgIGVuY291bnRlcmVkX2V4aXRfc3Rh
dGVtZW50ID0gRmFsc2UKLQotICAgIGZvciBjdXJyZW50X2xpbmUgaW4gcHJldmlvdXNfbGluZXM6
Ci0gICAgICAgIGxpbmVfb2Zmc2V0IC09IDEKLQotICAgICAgICAjIFNraXAgbm90IG9ubHkgZW1w
dHkgbGluZXMgYnV0IGFsc28gdGhvc2Ugd2l0aCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcwotICAg
ICAgICAjIGFuZCBnb3RvIGxhYmVscy4KLSAgICAgICAgaWYgY3VycmVudF9saW5lLnN0cmlwKCkg
PT0gJycgb3IgY3VycmVudF9saW5lLnN0YXJ0c3dpdGgoJyMnKSBvciBtYXRjaChyJ1x3K1xzKjpc
cyokJywgY3VycmVudF9saW5lKToKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgIyBT
a2lwIGxpbmVzIHdpdGggY2xvc2luZyBicmFjZXMgb24gdGhlIG9yaWdpbmFsIGluZGVudGF0aW9u
IGxldmVsLgotICAgICAgICAjIEV2ZW4gdGhvdWdoIHRoZSBzdHlsZWd1aWRlIHNheXMgdGhleSBz
aG91bGQgYmUgb24gdGhlIHNhbWUgbGluZSBhcwotICAgICAgICAjIHRoZSAiZWxzZSBpZiIgc3Rh
dGVtZW50LCB3ZSBhbHNvIHdhbnQgdG8gY2hlY2sgZm9yIGluc3RhbmNlcyB3aGVyZQotICAgICAg
ICAjIHRoZSBjdXJyZW50IGNvZGUgZG9lcyBub3QgY29tcGx5IHdpdGggdGhlIGNvZGluZyBzdHls
ZS4gVGh1cywgaWdub3JlCi0gICAgICAgICMgdGhlc2UgbGluZXMgYW5kIHByb2NlZWQgdG8gdGhl
IGxpbmUgYmVmb3JlIHRoYXQuCi0gICAgICAgIGlmIGN1cnJlbnRfbGluZSA9PSBlbHNlX2luZGVu
dGF0aW9uICsgJ30nOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBjdXJyZW50X2lu
ZGVudGF0aW9uX21hdGNoID0gbWF0Y2gocicoP1A8aW5kZW50YXRpb24+XHMqKSg/UDxyZW1haW5p
bmdfbGluZT4uKikkJywgY3VycmVudF9saW5lKTsKLSAgICAgICAgY3VycmVudF9pbmRlbnRhdGlv
biA9IGN1cnJlbnRfaW5kZW50YXRpb25fbWF0Y2guZ3JvdXAoJ2luZGVudGF0aW9uJykKLSAgICAg
ICAgcmVtYWluaW5nX2xpbmUgPSBjdXJyZW50X2luZGVudGF0aW9uX21hdGNoLmdyb3VwKCdyZW1h
aW5pbmdfbGluZScpCi0KLSAgICAgICAgIyBBcyB3ZSdyZSBnb2luZyB1cCB0aGUgbGluZXMsIHRo
ZSBmaXJzdCByZWFsIHN0YXRlbWVudCB0byBlbmNvdW50ZXIKLSAgICAgICAgIyBoYXMgdG8gYmUg
YW4gZXhpdCBzdGF0ZW1lbnQgKHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8pIC0KLSAg
ICAgICAgIyBvdGhlcndpc2UsIHRoaXMgY2hlY2sgZG9lc24ndCBhcHBseS4KLSAgICAgICAgaWYg
bm90IGVuY291bnRlcmVkX2V4aXRfc3RhdGVtZW50OgotICAgICAgICAgICAgIyBXZSBvbmx5IHdh
bnQgdG8gZmluZCBleGl0IHN0YXRlbWVudHMgaWYgdGhleSBhcmUgb24gZXhhY3RseQotICAgICAg
ICAgICAgIyB0aGUgc2FtZSBsZXZlbCBvZiBpbmRlbnRhdGlvbiBhcyBleHBlY3RlZCBmcm9tIHRo
ZSBjb2RlIGluc2lkZQotICAgICAgICAgICAgIyB0aGUgYmxvY2suIElmIHRoZSBpbmRlbnRhdGlv
biBkb2Vzbid0IHN0cmljdGx5IG1hdGNoIHRoZW4gd2UKLSAgICAgICAgICAgICMgbWlnaHQgaGF2
ZSBhIG5lc3RlZCBpZiBvciBzb21ldGhpbmcsIHdoaWNoIG11c3QgYmUgaWdub3JlZC4KLSAgICAg
ICAgICAgIGlmIGN1cnJlbnRfaW5kZW50YXRpb24gIT0gaW5uZXJfaW5kZW50YXRpb246Ci0gICAg
ICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIG1hdGNoKHInKHJldHVybihcVysuKil8
KGJyZWFrfGNvbnRpbnVlKVxzKjt8Z290b1xzKlx3KzspJCcsIHJlbWFpbmluZ19saW5lKToKLSAg
ICAgICAgICAgICAgICBlbmNvdW50ZXJlZF9leGl0X3N0YXRlbWVudCA9IFRydWUKLSAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIFdoZW4gY29k
ZSBleGVjdXRpb24gcmVhY2hlcyB0aGlzIHBvaW50LCB3ZSd2ZSBmb3VuZCBhbiBleGl0IHN0YXRl
bWVudAotICAgICAgICAjIGFzIGxhc3Qgc3RhdGVtZW50IG9mIHRoZSBwcmV2aW91cyBibG9jay4g
Tm93IHdlIG9ubHkgbmVlZCB0byBtYWtlCi0gICAgICAgICMgc3VyZSB0aGF0IHRoZSBibG9jayBi
ZWxvbmdzIHRvIGFuICJpZiIsIHRoZW4gd2UgY2FuIHRocm93IGFuIGVycm9yLgotCi0gICAgICAg
ICMgU2tpcCBsaW5lcyB3aXRoIG9wZW5pbmcgYnJhY2VzIG9uIHRoZSBvcmlnaW5hbCBpbmRlbnRh
dGlvbiBsZXZlbCwKLSAgICAgICAgIyBzaW1pbGFyIHRvIHRoZSBjbG9zaW5nIGJyYWNlcyBjaGVj
ayBhYm92ZS4gKCJpZiAoY29uZGl0aW9uKVxueyIpCi0gICAgICAgIGlmIGN1cnJlbnRfbGluZSA9
PSBlbHNlX2luZGVudGF0aW9uICsgJ3snOgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAg
ICAjIFNraXAgZXZlcnl0aGluZyB0aGF0J3MgZnVydGhlciBpbmRlbnRlZCB0aGFuIG91ciAiZWxz
ZSIgb3IgImVsc2UgaWYiLgotICAgICAgICBpZiBjdXJyZW50X2luZGVudGF0aW9uLnN0YXJ0c3dp
dGgoZWxzZV9pbmRlbnRhdGlvbikgYW5kIGN1cnJlbnRfaW5kZW50YXRpb24gIT0gZWxzZV9pbmRl
bnRhdGlvbjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgIyBTbyB3ZSd2ZSBnb3Qg
YSBsaW5lIHdpdGggc2FtZSAob3IgbGVzcykgaW5kZW50YXRpb24uIElzIGl0IGFuICJpZiI/Ci0g
ICAgICAgICMgSWYgeWVzOiB0aHJvdyBhbiBlcnJvci4gSWYgbm86IGRvbid0IHRocm93IGFuIGVy
cm9yLgotICAgICAgICAjIFdoYXRldmVyIHRoZSBvdXRjb21lLCB0aGlzIGlzIHRoZSBlbmQgb2Yg
b3VyIGxvb3AuCi0gICAgICAgIGlmIG1hdGNoKHInaWZccypcKCcsIHJlbWFpbmluZ19saW5lKToK
LSAgICAgICAgICAgIGlmIGVsc2VfbWF0Y2guc3RhcnQoJ2Vsc2UnKSAhPSAtMToKLSAgICAgICAg
ICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIgKyBsaW5lX29mZnNldCwgJ3JlYWRh
YmlsaXR5L2NvbnRyb2xfZmxvdycsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgJ0FuIGVsc2Ug
c3RhdGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByaW9yICJpZiIgJwotICAgICAgICAg
ICAgICAgICAgICAgICdjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9y
IGdvdG8gc3RhdGVtZW50LicpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciArIGxpbmVfb2Zmc2V0LCAncmVhZGFiaWxpdHkvY29u
dHJvbF9mbG93JywgNCwKLSAgICAgICAgICAgICAgICAgICAgICAnQW4gZWxzZSBpZiBzdGF0ZW1l
bnQgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgYW4gaWYgc3RhdGVtZW50ICcKLSAgICAgICAgICAgICAg
ICAgICAgICAnd2hlbiB0aGUgcHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJl
YWssICcKLSAgICAgICAgICAgICAgICAgICAgICAnY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQu
JykKLSAgICAgICAgYnJlYWsKLQotCi1kZWYgcmVwbGFjZWFibGVfY2hlY2sob3BlcmF0b3IsIG1h
Y3JvLCBsaW5lKToKLSAgICAiIiJEZXRlcm1pbmUgd2hldGhlciBhIGJhc2ljIENIRUNLIGNhbiBi
ZSByZXBsYWNlZCB3aXRoIGEgbW9yZSBzcGVjaWZpYyBvbmUuCi0KLSAgICBGb3IgZXhhbXBsZSBz
dWdnZXN0IHVzaW5nIENIRUNLX0VRIGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKSBhbmQKLSAgICBz
aW1pbGFybHkgZm9yIENIRUNLX0dFLCBDSEVDS19HVCwgQ0hFQ0tfTEUsIENIRUNLX0xULCBDSEVD
S19ORS4KLQotICAgIEFyZ3M6Ci0gICAgICBvcGVyYXRvcjogVGhlIEMrKyBvcGVyYXRvciB1c2Vk
IGluIHRoZSBDSEVDSy4KLSAgICAgIG1hY3JvOiBUaGUgQ0hFQ0sgb3IgRVhQRUNUIG1hY3JvIGJl
aW5nIGNhbGxlZC4KLSAgICAgIGxpbmU6IFRoZSBjdXJyZW50IHNvdXJjZSBsaW5lLgotCi0gICAg
UmV0dXJuczoKLSAgICAgIFRydWUgaWYgdGhlIENIRUNLIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEg
bW9yZSBzcGVjaWZpYyBvbmUuCi0gICAgIiIiCi0KLSAgICAjIFRoaXMgbWF0Y2hlcyBkZWNpbWFs
IGFuZCBoZXggaW50ZWdlcnMsIHN0cmluZ3MsIGFuZCBjaGFycyAoaW4gdGhhdCBvcmRlcikuCi0g
ICAgbWF0Y2hfY29uc3RhbnQgPSByJyhbLStdPyhcZCt8MFt4WF1bMC05YS1mQS1GXSspW2xMdVVd
ezAsM318Ii4qInxcJy4qXCcpJwotCi0gICAgIyBFeHByZXNzaW9uIHRvIG1hdGNoIHR3byBzaWRl
cyBvZiB0aGUgb3BlcmF0b3Igd2l0aCBzb21ldGhpbmcgdGhhdAotICAgICMgbG9va3MgbGlrZSBh
IGxpdGVyYWwsIHNpbmNlIENIRUNLKHggPT0gaXRlcmF0b3IpIHdvbid0IGNvbXBpbGUuCi0gICAg
IyBUaGlzIG1lYW5zIHdlIGNhbid0IGNhdGNoIGFsbCB0aGUgY2FzZXMgd2hlcmUgYSBtb3JlIHNw
ZWNpZmljCi0gICAgIyBDSEVDSyBpcyBwb3NzaWJsZSwgYnV0IGl0J3MgbGVzcyBhbm5veWluZyB0
aGFuIGRlYWxpbmcgd2l0aAotICAgICMgZXh0cmFuZW91cyB3YXJuaW5ncy4KLSAgICBtYXRjaF90
aGlzID0gKHInXHMqJyArIG1hY3JvICsgcidcKChccyonICsKLSAgICAgICAgICAgICAgICAgIG1h
dGNoX2NvbnN0YW50ICsgcidccyonICsgb3BlcmF0b3IgKyByJ1tePD5dLip8JwotICAgICAgICAg
ICAgICAgICAgcicuKltePD5dJyArIG9wZXJhdG9yICsgcidccyonICsgbWF0Y2hfY29uc3RhbnQg
KwotICAgICAgICAgICAgICAgICAgcidccypcKSknKQotCi0gICAgIyBEb24ndCBjb21wbGFpbiBh
Ym91dCBDSEVDSyh4ID09IE5VTEwpIG9yIHNpbWlsYXIgYmVjYXVzZQotICAgICMgQ0hFQ0tfRVEo
eCwgTlVMTCkgd29uJ3QgY29tcGlsZSAocmVxdWlyZXMgYSBjYXN0KS4KLSAgICAjIEFsc28sIGRv
bid0IGNvbXBsYWluIGFib3V0IG1vcmUgY29tcGxleCBib29sZWFuIGV4cHJlc3Npb25zCi0gICAg
IyBpbnZvbHZpbmcgJiYgb3IgfHwgc3VjaCBhcyBDSEVDSyhhID09IGIgfHwgYyA9PSBkKS4KLSAg
ICByZXR1cm4gbWF0Y2gobWF0Y2hfdGhpcywgbGluZSkgYW5kIG5vdCBzZWFyY2gocidOVUxMfCYm
fFx8XHwnLCBsaW5lKQotCi0KLWRlZiBjaGVja19jaGVjayhmaWxlbmFtZSwgY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIiIiQ2hlY2tzIHRoZSB1c2Ugb2YgQ0hFQ0sgYW5k
IEVYUEVDVCBtYWNyb3MuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9m
IHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGlu
c3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJl
ciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2Fs
bCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAgICAjIERlY2lkZSB0aGUgc2V0
IG9mIHJlcGxhY2VtZW50IG1hY3JvcyB0aGF0IHNob3VsZCBiZSBzdWdnZXN0ZWQKLSAgICByYXdf
bGluZXMgPSBjbGVhbl9saW5lcy5yYXdfbGluZXMKLSAgICBjdXJyZW50X21hY3JvID0gJycKLSAg
ICBmb3IgbWFjcm8gaW4gX0NIRUNLX01BQ1JPUzoKLSAgICAgICAgaWYgcmF3X2xpbmVzW2xpbmVf
bnVtYmVyXS5maW5kKG1hY3JvKSA+PSAwOgotICAgICAgICAgICAgY3VycmVudF9tYWNybyA9IG1h
Y3JvCi0gICAgICAgICAgICBicmVhawotICAgIGlmIG5vdCBjdXJyZW50X21hY3JvOgotICAgICAg
ICAjIERvbid0IHdhc3RlIHRpbWUgaGVyZSBpZiBsaW5lIGRvZXNuJ3QgY29udGFpbiAnQ0hFQ0sn
IG9yICdFWFBFQ1QnCi0gICAgICAgIHJldHVybgotCi0gICAgbGluZSA9IGNsZWFuX2xpbmVzLmVs
aWRlZFtsaW5lX251bWJlcl0gICAgICAgICMgZ2V0IHJpZCBvZiBjb21tZW50cyBhbmQgc3RyaW5n
cwotCi0gICAgIyBFbmNvdXJhZ2UgcmVwbGFjaW5nIHBsYWluIENIRUNLcyB3aXRoIENIRUNLX0VR
L0NIRUNLX05FL2V0Yy4KLSAgICBmb3Igb3BlcmF0b3IgaW4gWyc9PScsICchPScsICc+PScsICc+
JywgJzw9JywgJzwnXToKLSAgICAgICAgaWYgcmVwbGFjZWFibGVfY2hlY2sob3BlcmF0b3IsIGN1
cnJlbnRfbWFjcm8sIGxpbmUpOgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCAncmVhZGFiaWxpdHkvY2hlY2snLCAyLAotICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nICVzIGluc3RlYWQgb2YgJXMoYSAlcyBiKScgJSAoCi0gICAgICAgICAgICAgICAgICAg
ICAgX0NIRUNLX1JFUExBQ0VNRU5UW2N1cnJlbnRfbWFjcm9dW29wZXJhdG9yXSwKLSAgICAgICAg
ICAgICAgICAgICAgICBjdXJyZW50X21hY3JvLCBvcGVyYXRvcikpCi0gICAgICAgICAgICBicmVh
awotCi0KLWRlZiBjaGVja19mb3JfY29tcGFyaXNvbnNfdG9femVybyhmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Ci0gICAgIyBHZXQgdGhlIGxpbmUgd2l0aG91dCBj
b21tZW50cyBhbmQgc3RyaW5ncy4KLSAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xpbmVf
bnVtYmVyXQotCi0gICAgIyBJbmNsdWRlIE5VTEwgaGVyZSBzbyB0aGF0IHVzZXJzIGRvbid0IGhh
dmUgdG8gY29udmVydCBOVUxMIHRvIDAgZmlyc3QgYW5kIHRoZW4gZ2V0IHRoaXMgZXJyb3IuCi0g
ICAgaWYgc2VhcmNoKHInWz0hXT1ccyooTlVMTHwwfHRydWV8ZmFsc2UpXFcnLCBsaW5lKSBvciBz
ZWFyY2gocidcVyhOVUxMfDB8dHJ1ZXxmYWxzZSlccypbPSFdPScsIGxpbmUpOgotICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3pl
cm8nLCA1LAotICAgICAgICAgICAgICAnVGVzdHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51
bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5
IGNvbXBhcmlzb25zLicpCi0KLQotZGVmIGNoZWNrX2Zvcl9udWxsKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKLSAgICAjIFRoaXMgY2hlY2sgZG9lc24ndCBhcHBs
eSB0byBDIG9yIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9uIGZpbGVzLgotICAgIGlmIGZpbGVu
YW1lLmVuZHN3aXRoKCcuYycpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCcubScpOgotICAgICAgICBy
ZXR1cm4KLQotICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAg
aWYgc2VhcmNoKHInXGJOVUxMXGInLCBsaW5lKToKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxp
bmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbnVsbCcsIDUsICdVc2UgMCBpbnN0ZWFkIG9mIE5VTEwu
JykKLSAgICAgICAgcmV0dXJuCi0KLSAgICBsaW5lID0gY2xlYW5fbGluZXMucmF3X2xpbmVzW2xp
bmVfbnVtYmVyXQotICAgICMgU2VlIGlmIE5VTEwgb2NjdXJzIGluIGFueSBjb21tZW50cyBpbiB0
aGUgbGluZS4gSWYgdGhlIHNlYXJjaCBmb3IgTlVMTCB1c2luZyB0aGUgcmF3IGxpbmUKLSAgICAj
IG1hdGNoZXMsIHRoZW4gZG8gdGhlIGNoZWNrIHdpdGggc3RyaW5ncyBjb2xsYXBzZWQgdG8gYXZv
aWQgZ2l2aW5nIGVycm9ycyBmb3IKLSAgICAjIE5VTExzIG9jY3VycmluZyBpbiBzdHJpbmdzLgot
ICAgIGlmIHNlYXJjaChyJ1xiTlVMTFxiJywgbGluZSkgYW5kIHNlYXJjaChyJ1xiTlVMTFxiJywg
Q2xlYW5zZWRMaW5lcy5jb2xsYXBzZV9zdHJpbmdzKGxpbmUpKToKLSAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvbnVsbCcsIDQsICdVc2UgMCBpbnN0ZWFk
IG9mIE5VTEwuJykKLQotZGVmIGdldF9saW5lX3dpZHRoKGxpbmUpOgotICAgICIiIkRldGVybWlu
ZXMgdGhlIHdpZHRoIG9mIHRoZSBsaW5lIGluIGNvbHVtbiBwb3NpdGlvbnMuCi0KLSAgICBBcmdz
OgotICAgICAgbGluZTogQSBzdHJpbmcsIHdoaWNoIG1heSBiZSBhIFVuaWNvZGUgc3RyaW5nLgot
Ci0gICAgUmV0dXJuczoKLSAgICAgIFRoZSB3aWR0aCBvZiB0aGUgbGluZSBpbiBjb2x1bW4gcG9z
aXRpb25zLCBhY2NvdW50aW5nIGZvciBVbmljb2RlCi0gICAgICBjb21iaW5pbmcgY2hhcmFjdGVy
cyBhbmQgd2lkZSBjaGFyYWN0ZXJzLgotICAgICIiIgotICAgIGlmIGlzaW5zdGFuY2UobGluZSwg
dW5pY29kZSk6Ci0gICAgICAgIHdpZHRoID0gMAotICAgICAgICBmb3IgYyBpbiB1bmljb2RlZGF0
YS5ub3JtYWxpemUoJ05GQycsIGxpbmUpOgotICAgICAgICAgICAgaWYgdW5pY29kZWRhdGEuZWFz
dF9hc2lhbl93aWR0aChjKSBpbiAoJ1cnLCAnRicpOgotICAgICAgICAgICAgICAgIHdpZHRoICs9
IDIKLSAgICAgICAgICAgIGVsaWYgbm90IHVuaWNvZGVkYXRhLmNvbWJpbmluZyhjKToKLSAgICAg
ICAgICAgICAgICB3aWR0aCArPSAxCi0gICAgICAgIHJldHVybiB3aWR0aAotICAgIHJldHVybiBs
ZW4obGluZSkKLQotCi1kZWYgY2hlY2tfc3R5bGUoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5l
X251bWJlciwgZmlsZV9leHRlbnNpb24sIGVycm9yKToKLSAgICAiIiJDaGVja3MgcnVsZXMgZnJv
bSB0aGUgJ0MrKyBzdHlsZSBydWxlcycgc2VjdGlvbiBvZiBjcHBndWlkZS5odG1sLgotCi0gICAg
TW9zdCBvZiB0aGVzZSBydWxlcyBhcmUgaGFyZCB0byB0ZXN0IChuYW1pbmcsIGNvbW1lbnQgc3R5
bGUpLCBidXQgd2UKLSAgICBkbyB3aGF0IHdlIGNhbi4gIEluIHBhcnRpY3VsYXIgd2UgY2hlY2sg
Zm9yIDQtc3BhY2UgaW5kZW50cywgbGluZSBsZW5ndGhzLAotICAgIHRhYiB1c2FnZSwgc3BhY2Vz
IGluc2lkZSBjb2RlLCBldGMuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1l
IG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVz
IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51
bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KLSAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0
ZW5zaW9uICh3aXRob3V0IHRoZSBkb3QpIG9mIHRoZSBmaWxlbmFtZS4KLSAgICAgIGVycm9yOiBU
aGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCi0gICAgIiIiCi0KLSAg
ICByYXdfbGluZXMgPSBjbGVhbl9saW5lcy5yYXdfbGluZXMKLSAgICBsaW5lID0gcmF3X2xpbmVz
W2xpbmVfbnVtYmVyXQotCi0gICAgaWYgbGluZS5maW5kKCdcdCcpICE9IC0xOgotICAgICAgICBl
cnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3RhYicsIDEsCi0gICAgICAg
ICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ugc3BhY2VzJykKLQotICAgICMgT25lIG9y
IHRocmVlIGJsYW5rIHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGlzIHdlaXJk
OyBpdCdzCi0gICAgIyBoYXJkIHRvIHJlY29uY2lsZSB0aGF0IHdpdGggNC1zcGFjZSBpbmRlbnRz
LgotICAgICMgTk9URTogaGVyZSBhcmUgdGhlIGNvbmRpdGlvbnMgcm9iIHBpa2UgdXNlZCBmb3Ig
aGlzIHRlc3RzLiAgTWluZSBhcmVuJ3QKLSAgICAjIGFzIHNvcGhpc3RpY2F0ZWQsIGJ1dCBpdCBt
YXkgYmUgd29ydGggYmVjb21pbmcgc286ICBSTEVOR1RIPT1pbml0aWFsX3NwYWNlcwotICAgICMg
aWYoUkxFTkdUSCA+IDIwKSBjb21wbGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaCgkMCwgIiArKGVy
cm9yfHByaXZhdGV8cHVibGljfHByb3RlY3RlZCk6IikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlm
KG1hdGNoKHByZXYsICImJiAqJCIpKSBjb21wbGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaChwcmV2
LCAiXFx8XFx8ICokIikpIGNvbXBsYWluID0gMDsKLSAgICAjIGlmKG1hdGNoKHByZXYsICJbXCIs
PT48XSAqJCIpKSBjb21wbGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaCgkMCwgIiA8PCIpKSBjb21w
bGFpbiA9IDA7Ci0gICAgIyBpZihtYXRjaChwcmV2LCAiICtmb3IgXFwoIikpIGNvbXBsYWluID0g
MDsKLSAgICAjIGlmKHByZXZvZGQgJiYgbWF0Y2gocHJldnByZXYsICIgK2ZvciBcXCgiKSkgY29t
cGxhaW4gPSAwOwotICAgIGluaXRpYWxfc3BhY2VzID0gMAotICAgIGNsZWFuc2VkX2xpbmUgPSBj
bGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgd2hpbGUgaW5pdGlhbF9zcGFjZXMg
PCBsZW4obGluZSkgYW5kIGxpbmVbaW5pdGlhbF9zcGFjZXNdID09ICcgJzoKLSAgICAgICAgaW5p
dGlhbF9zcGFjZXMgKz0gMQotICAgIGlmIGxpbmUgYW5kIGxpbmVbLTFdLmlzc3BhY2UoKToKLSAg
ICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9lbmRfb2ZfbGlu
ZScsIDQsCi0gICAgICAgICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVy
IGRlbGV0aW5nIHRoZXNlIGV4dHJhIHNwYWNlcy4nKQotICAgICMgVGhlcmUgYXJlIGNlcnRhaW4g
c2l0dWF0aW9ucyB3ZSBhbGxvdyBvbmUgc3BhY2UsIG5vdGFibHkgZm9yIGxhYmVscwotICAgIGVs
aWYgKChpbml0aWFsX3NwYWNlcyA+PSAxIGFuZCBpbml0aWFsX3NwYWNlcyA8PSAzKQotICAgICAg
ICAgIGFuZCBub3QgbWF0Y2gocidccypcdytccyo6XHMqJCcsIGNsZWFuc2VkX2xpbmUpKToKLSAg
ICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9pbmRlbnQnLCAz
LAotICAgICAgICAgICAgICAnV2VpcmQgbnVtYmVyIG9mIHNwYWNlcyBhdCBsaW5lLXN0YXJ0LiAg
JwotICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PycpCi0gICAg
IyBMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUgc3BhY2UuCi0g
ICAgZWxpZiBub3QgaW5pdGlhbF9zcGFjZXMgYW5kIGxpbmVbOjJdICE9ICcvLyc6Ci0gICAgICAg
IGxhYmVsX21hdGNoID0gbWF0Y2gocicoP1A8bGFiZWw+W146XSspOlxzKiQnLCBsaW5lKQotCi0g
ICAgICAgIGlmIGxhYmVsX21hdGNoOgotICAgICAgICAgICAgbGFiZWwgPSBsYWJlbF9tYXRjaC5n
cm91cCgnbGFiZWwnKQotICAgICAgICAgICAgIyBPbmx5IHRocm93IGVycm9ycyBmb3Igc3R1ZmYg
dGhhdCBpcyBkZWZpbml0ZWx5IG5vdCBhIGdvdG8gbGFiZWwsCi0gICAgICAgICAgICAjIGJlY2F1
c2UgZ290byBsYWJlbHMgY2FuIGluIGZhY3Qgb2NjdXIgYXQgdGhlIHN0YXJ0IG9mIHRoZSBsaW5l
LgotICAgICAgICAgICAgaWYgbGFiZWwgaW4gWydwdWJsaWMnLCAncHJpdmF0ZScsICdwcm90ZWN0
ZWQnXSBvciBsYWJlbC5maW5kKCcgJykgIT0gLTE6Ci0gICAgICAgICAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9sYWJlbHMnLCA0LAotICAgICAgICAgICAg
ICAgICAgICAgICdMYWJlbHMgc2hvdWxkIGFsd2F5cyBiZSBpbmRlbnRlZCBhdCBsZWFzdCBvbmUg
c3BhY2UuICAnCi0gICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoaXMgaXMgYSBtZW1iZXItaW5p
dGlhbGl6ZXIgbGlzdCBpbiBhIGNvbnN0cnVjdG9yLCAnCi0gICAgICAgICAgICAgICAgICAgICAg
J3RoZSBjb2xvbiBzaG91bGQgYmUgb24gdGhlIGxpbmUgYWZ0ZXIgdGhlIGRlZmluaXRpb24gaGVh
ZGVyLicpCi0KLSAgICBpZiAoY2xlYW5zZWRfbGluZS5jb3VudCgnOycpID4gMQotICAgICAgICAj
IGZvciBsb29wcyBhcmUgYWxsb3dlZCB0d28gOydzIChhbmQgbWF5IHJ1biBvdmVyIHR3byBsaW5l
cykuCi0gICAgICAgIGFuZCBjbGVhbnNlZF9saW5lLmZpbmQoJ2ZvcicpID09IC0xCi0gICAgICAg
IGFuZCAoZ2V0X3ByZXZpb3VzX25vbl9ibGFua19saW5lKGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
cilbMF0uZmluZCgnZm9yJykgPT0gLTEKLSAgICAgICAgICAgICBvciBnZXRfcHJldmlvdXNfbm9u
X2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKVswXS5maW5kKCc7JykgIT0gLTEp
Ci0gICAgICAgICMgSXQncyBvayB0byBoYXZlIG1hbnkgY29tbWFuZHMgaW4gYSBzd2l0Y2ggY2Fz
ZSB0aGF0IGZpdHMgaW4gMSBsaW5lCi0gICAgICAgIGFuZCBub3QgKChjbGVhbnNlZF9saW5lLmZp
bmQoJ2Nhc2UgJykgIT0gLTEKLSAgICAgICAgICAgICAgICAgIG9yIGNsZWFuc2VkX2xpbmUuZmlu
ZCgnZGVmYXVsdDonKSAhPSAtMSkKLSAgICAgICAgICAgICAgICAgYW5kIGNsZWFuc2VkX2xpbmUu
ZmluZCgnYnJlYWs7JykgIT0gLTEpKToKLSAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVt
YmVyLCAnd2hpdGVzcGFjZS9uZXdsaW5lJywgNCwKLSAgICAgICAgICAgICAgJ01vcmUgdGhhbiBv
bmUgY29tbWFuZCBvbiB0aGUgc2FtZSBsaW5lJykKLQotICAgIGlmIGNsZWFuc2VkX2xpbmUuc3Ry
aXAoKS5lbmRzd2l0aCgnfHwnKSBvciBjbGVhbnNlZF9saW5lLnN0cmlwKCkuZW5kc3dpdGgoJyYm
Jyk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3doaXRlc3BhY2Uvb3Bl
cmF0b3JzJywgNCwKLSAgICAgICAgICAgICAgJ0Jvb2xlYW4gZXhwcmVzc2lvbnMgdGhhdCBzcGFu
IG11bHRpcGxlIGxpbmVzIHNob3VsZCBoYXZlIHRoZWlyICcKLSAgICAgICAgICAgICAgJ29wZXJh
dG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNp
ZGUuJykKLQotICAgICMgU29tZSBtb3JlIHN0eWxlIGNoZWNrcwotICAgIGNoZWNrX25hbWVzcGFj
ZV9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4
dGVuc2lvbiwgZXJyb3IpCi0gICAgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGZpbGVuYW1lLCBj
bGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQotICAgIGNoZWNrX2JyYWNlcyhmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19leGl0X3N0YXRl
bWVudF9zaW1wbGlmaWNhdGlvbnMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZXJyb3IpCi0gICAgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcikKLSAgICBjaGVja19jaGVjayhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVf
bnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19mb3JfY29tcGFyaXNvbnNfdG9femVybyhmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19mb3JfbnVsbChm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLQotCi1fUkVfUEFUVEVS
Tl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUocicjaW5jbHVkZSArIlteL10rXC5oIicp
Ci1fUkVfUEFUVEVSTl9JTkNMVURFID0gcmUuY29tcGlsZShyJ15ccyojXHMqaW5jbHVkZVxzKihb
PCJdKShbXj4iXSopWz4iXS4qJCcpCi0jIE1hdGNoZXMgdGhlIGZpcnN0IGNvbXBvbmVudCBvZiBh
IGZpbGVuYW1lIGRlbGltaXRlZCBieSAtcyBhbmQgX3MuIFRoYXQgaXM6Ci0jICBfUkVfRklSU1Rf
Q09NUE9ORU5ULm1hdGNoKCdmb28nKS5ncm91cCgwKSA9PSAnZm9vJwotIyAgX1JFX0ZJUlNUX0NP
TVBPTkVOVC5tYXRjaCgnZm9vLmNwcCcpLmdyb3VwKDApID09ICdmb28nCi0jICBfUkVfRklSU1Rf
Q09NUE9ORU5ULm1hdGNoKCdmb28tYmFyX2Jhei5jcHAnKS5ncm91cCgwKSA9PSAnZm9vJwotIyAg
X1JFX0ZJUlNUX0NPTVBPTkVOVC5tYXRjaCgnZm9vX2Jhci1iYXouY3BwJykuZ3JvdXAoMCkgPT0g
J2ZvbycKLV9SRV9GSVJTVF9DT01QT05FTlQgPSByZS5jb21waWxlKHInXlteLV8uXSsnKQotCi0K
LWRlZiBfZHJvcF9jb21tb25fc3VmZml4ZXMoZmlsZW5hbWUpOgotICAgICIiIkRyb3BzIGNvbW1v
biBzdWZmaXhlcyBsaWtlIF90ZXN0LmNwcCBvciAtaW5sLmggZnJvbSBmaWxlbmFtZS4KLQotICAg
IEZvciBleGFtcGxlOgotICAgICAgPj4+IF9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby1p
bmwuaCcpCi0gICAgICAnZm9vL2ZvbycKLSAgICAgID4+PiBfZHJvcF9jb21tb25fc3VmZml4ZXMo
J2Zvby9iYXIvZm9vLmNwcCcpCi0gICAgICAnZm9vL2Jhci9mb28nCi0gICAgICA+Pj4gX2Ryb3Bf
Y29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX2ludGVybmFsLmgnKQotICAgICAgJ2Zvby9mb28nCi0g
ICAgICA+Pj4gX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3VudXN1YWxpbnRlcm5hbC5o
JykKLSAgICAgICdmb28vZm9vX3VudXN1YWxpbnRlcm5hbCcKLQotICAgIEFyZ3M6Ci0gICAgICBm
aWxlbmFtZTogVGhlIGlucHV0IGZpbGVuYW1lLgotCi0gICAgUmV0dXJuczoKLSAgICAgIFRoZSBm
aWxlbmFtZSB3aXRoIHRoZSBjb21tb24gc3VmZml4IHJlbW92ZWQuCi0gICAgIiIiCi0gICAgZm9y
IHN1ZmZpeCBpbiAoJ3Rlc3QuY3BwJywgJ3JlZ3Rlc3QuY3BwJywgJ3VuaXR0ZXN0LmNwcCcsCi0g
ICAgICAgICAgICAgICAgICAgJ2lubC5oJywgJ2ltcGwuaCcsICdpbnRlcm5hbC5oJyk6Ci0gICAg
ICAgIGlmIChmaWxlbmFtZS5lbmRzd2l0aChzdWZmaXgpIGFuZCBsZW4oZmlsZW5hbWUpID4gbGVu
KHN1ZmZpeCkKLSAgICAgICAgICAgIGFuZCBmaWxlbmFtZVstbGVuKHN1ZmZpeCkgLSAxXSBpbiAo
Jy0nLCAnXycpKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZVs6LWxlbihzdWZmaXgpIC0g
MV0KLSAgICByZXR1cm4gb3MucGF0aC5zcGxpdGV4dChmaWxlbmFtZSlbMF0KLQotCi1kZWYgX2lz
X3Rlc3RfZmlsZW5hbWUoZmlsZW5hbWUpOgotICAgICIiIkRldGVybWluZXMgaWYgdGhlIGdpdmVu
IGZpbGVuYW1lIGhhcyBhIHN1ZmZpeCB0aGF0IGlkZW50aWZpZXMgaXQgYXMgYSB0ZXN0LgotCi0g
ICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgaW5wdXQgZmlsZW5hbWUuCi0KLSAgICBSZXR1
cm5zOgotICAgICAgVHJ1ZSBpZiAnZmlsZW5hbWUnIGxvb2tzIGxpa2UgYSB0ZXN0LCBGYWxzZSBv
dGhlcndpc2UuCi0gICAgIiIiCi0gICAgaWYgKGZpbGVuYW1lLmVuZHN3aXRoKCdfdGVzdC5jcHAn
KQotICAgICAgICBvciBmaWxlbmFtZS5lbmRzd2l0aCgnX3VuaXR0ZXN0LmNwcCcpCi0gICAgICAg
IG9yIGZpbGVuYW1lLmVuZHN3aXRoKCdfcmVndGVzdC5jcHAnKSk6Ci0gICAgICAgIHJldHVybiBU
cnVlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9jbGFzc2lmeV9pbmNsdWRlKGZpbGVuYW1l
LCBpbmNsdWRlLCBpc19zeXN0ZW0sIGluY2x1ZGVfc3RhdGUpOgotICAgICIiIkZpZ3VyZXMgb3V0
IHdoYXQga2luZCBvZiBoZWFkZXIgJ2luY2x1ZGUnIGlzLgotCi0gICAgQXJnczoKLSAgICAgIGZp
bGVuYW1lOiBUaGUgY3VycmVudCBmaWxlIGNwcGxpbnQgaXMgcnVubmluZyBvdmVyLgotICAgICAg
aW5jbHVkZTogVGhlIHBhdGggdG8gYSAjaW5jbHVkZWQgZmlsZS4KLSAgICAgIGlzX3N5c3RlbTog
VHJ1ZSBpZiB0aGUgI2luY2x1ZGUgdXNlZCA8PiByYXRoZXIgdGhhbiAiIi4KLSAgICAgIGluY2x1
ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMg
YXJlIGluc2VydGVkLgotCi0gICAgUmV0dXJuczoKLSAgICAgIE9uZSBvZiB0aGUgX1hYWF9IRUFE
RVIgY29uc3RhbnRzLgotCi0gICAgRm9yIGV4YW1wbGU6Ci0gICAgICA+Pj4gX2NsYXNzaWZ5X2lu
Y2x1ZGUoJ2Zvby5jcHAnLCAnY29uZmlnLmgnLCBGYWxzZSkKLSAgICAgIF9DT05GSUdfSEVBREVS
Ci0gICAgICA+Pj4gX2NsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLCAnZm9vLmgnLCBGYWxzZSkK
LSAgICAgIF9QUklNQVJZX0hFQURFUgotICAgICAgPj4+IF9jbGFzc2lmeV9pbmNsdWRlKCdmb28u
Y3BwJywgJ2Jhci5oJywgRmFsc2UpCi0gICAgICBfT1RIRVJfSEVBREVSCi0gICAgIiIiCi0KLSAg
ICAjIElmIGl0IGlzIGEgc3lzdGVtIGhlYWRlciB3ZSBrbm93IGl0IGlzIGNsYXNzaWZpZWQgYXMg
X09USEVSX0hFQURFUi4KLSAgICBpZiBpc19zeXN0ZW06Ci0gICAgICAgIHJldHVybiBfT1RIRVJf
SEVBREVSCi0KLSAgICAjIElmIHRoZSBpbmNsdWRlIGlzIG5hbWVkIGNvbmZpZy5oIHRoZW4gdGhp
cyBpcyBXZWJDb3JlL2NvbmZpZy5oLgotICAgIGlmIGluY2x1ZGUgPT0gImNvbmZpZy5oIjoKLSAg
ICAgICAgcmV0dXJuIF9DT05GSUdfSEVBREVSCi0KLSAgICAjIFRoZXJlIGNhbm5vdCBiZSBwcmlt
YXJ5IGluY2x1ZGVzIGluIGhlYWRlciBmaWxlcyB0aGVtc2VsdmVzLiBPbmx5IGFuCi0gICAgIyBp
bmNsdWRlIGV4YWN0bHkgbWF0Y2hlcyB0aGUgaGVhZGVyIGZpbGVuYW1lIHdpbGwgYmUgaXMgZmxh
Z2dlZCBhcwotICAgICMgcHJpbWFyeSwgc28gdGhhdCBpdCB0cmlnZ2VycyB0aGUgImRvbid0IGlu
Y2x1ZGUgeW91cnNlbGYiIGNoZWNrLgotICAgIGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuaCcpIGFu
ZCBmaWxlbmFtZSAhPSBpbmNsdWRlOgotICAgICAgICByZXR1cm4gX09USEVSX0hFQURFUjsKLQot
ICAgICMgSWYgdGhlIHRhcmdldCBmaWxlIGJhc2VuYW1lIHN0YXJ0cyB3aXRoIHRoZSBpbmNsdWRl
IHdlJ3JlIGNoZWNraW5nCi0gICAgIyB0aGVuIHdlIGNvbnNpZGVyIGl0IHRoZSBwcmltYXJ5IGhl
YWRlci4KLSAgICB0YXJnZXRfYmFzZSA9IEZpbGVJbmZvKGZpbGVuYW1lKS5iYXNlX25hbWUoKQot
ICAgIGluY2x1ZGVfYmFzZSA9IEZpbGVJbmZvKGluY2x1ZGUpLmJhc2VfbmFtZSgpCi0KLSAgICAj
IElmIHdlIGhhdmVuJ3QgZW5jb3VudGVyZWQgYSBwcmltYXJ5IGhlYWRlciwgdGhlbiBiZSBsZW5p
ZW50IGluIGNoZWNraW5nLgotICAgIGlmIG5vdCBpbmNsdWRlX3N0YXRlLnZpc2l0ZWRfcHJpbWFy
eV9zZWN0aW9uKCkgYW5kIHRhcmdldF9iYXNlLnN0YXJ0c3dpdGgoaW5jbHVkZV9iYXNlKToKLSAg
ICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgotICAgICMgSWYgd2UgYWxyZWFkeSBlbmNvdW50
ZXJlZCBhIHByaW1hcnkgaGVhZGVyLCBwZXJmb3JtIGEgc3RyaWN0IGNvbXBhcmlzb24uCi0gICAg
IyBJbiBjYXNlIHRoZSB0d28gZmlsZW5hbWUgYmFzZXMgYXJlIHRoZSBzYW1lIHRoZW4gdGhlIGFi
b3ZlIGxlbmllbnQgY2hlY2sKLSAgICAjIHByb2JhYmx5IHdhcyBhIGZhbHNlIHBvc2l0aXZlLgot
ICAgIGVsaWYgaW5jbHVkZV9zdGF0ZS52aXNpdGVkX3ByaW1hcnlfc2VjdGlvbigpIGFuZCB0YXJn
ZXRfYmFzZSA9PSBpbmNsdWRlX2Jhc2U6Ci0gICAgICAgIHJldHVybiBfUFJJTUFSWV9IRUFERVIK
LQotICAgIHJldHVybiBfT1RIRVJfSEVBREVSCi0KLQotCi1kZWYgY2hlY2tfaW5jbHVkZV9saW5l
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGluY2x1ZGVfc3RhdGUsIGVycm9y
KToKLSAgICAiIiJDaGVjayBydWxlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvICNpbmNsdWRlIGxp
bmVzLgotCi0gICAgU3RyaW5ncyBvbiAjaW5jbHVkZSBsaW5lcyBhcmUgTk9UIHJlbW92ZWQgZnJv
bSBlbGlkZWQgbGluZSwgdG8gbWFrZQotICAgIGNlcnRhaW4gdGFza3MgZWFzaWVyLiBIb3dldmVy
LCB0byBwcmV2ZW50IGZhbHNlIHBvc2l0aXZlcywgY2hlY2tzCi0gICAgYXBwbGljYWJsZSB0byAj
aW5jbHVkZSBsaW5lcyBpbiBDaGVja0xhbmd1YWdlIG11c3QgYmUgcHV0IGhlcmUuCi0KLSAgICBB
cmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCi0gICAg
ICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZp
bGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4K
LSAgICAgIGluY2x1ZGVfc3RhdGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2gg
dGhlIGhlYWRlcnMgYXJlIGluc2VydGVkLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBj
YWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLQotICAgIGxpbmUgPSBjbGVhbl9s
aW5lcy5saW5lc1tsaW5lX251bWJlcl0KLQotICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNM
VURFLnNlYXJjaChsaW5lKQotICAgIGlmIG5vdCBtYXRjaGVkOgotICAgICAgICByZXR1cm4KLQot
ICAgIGluY2x1ZGUgPSBtYXRjaGVkLmdyb3VwKDIpCi0gICAgaXNfc3lzdGVtID0gKG1hdGNoZWQu
Z3JvdXAoMSkgPT0gJzwnKQotCi0gICAgIyBMb29rIGZvciBhbnkgb2YgdGhlIHN0cmVhbSBjbGFz
c2VzIHRoYXQgYXJlIHBhcnQgb2Ygc3RhbmRhcmQgQysrLgotICAgIGlmIG1hdGNoKHInKGZ8aW5k
fGlvfGl8b3xwYXJzZXxwZnxzdGRpb3xzdHJ8KT9zdHJlYW0kJywgaW5jbHVkZSk6Ci0gICAgICAg
ICMgTWFueSB1bml0IHRlc3RzIHVzZSBjb3V0LCBzbyB3ZSBleGVtcHQgdGhlbS4KLSAgICAgICAg
aWYgbm90IF9pc190ZXN0X2ZpbGVuYW1lKGZpbGVuYW1lKToKLSAgICAgICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L3N0cmVhbXMnLCAzLAotICAgICAgICAg
ICAgICAgICAgJ1N0cmVhbXMgYXJlIGhpZ2hseSBkaXNjb3VyYWdlZC4nKQotCi0gICAgIyBMb29r
IGZvciBzcGVjaWZpYyBpbmNsdWRlcyB0byBmaXguCi0gICAgaWYgaW5jbHVkZS5zdGFydHN3aXRo
KCd3dGYvJykgYW5kIG5vdCBpc19zeXN0ZW06Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ2J1aWxkL2luY2x1ZGUnLCA0LAotICAgICAgICAgICAgICAnd3RmIGluY2x1ZGVz
IHNob3VsZCBiZSA8d3RmL2ZpbGUuaD4gaW5zdGVhZCBvZiAid3RmL2ZpbGUuaCIuJykKLQotICAg
IGR1cGxpY2F0ZV9oZWFkZXIgPSBpbmNsdWRlIGluIGluY2x1ZGVfc3RhdGUKLSAgICBpZiBkdXBs
aWNhdGVfaGVhZGVyOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdidWls
ZC9pbmNsdWRlJywgNCwKLSAgICAgICAgICAgICAgJyIlcyIgYWxyZWFkeSBpbmNsdWRlZCBhdCAl
czolcycgJQotICAgICAgICAgICAgICAoaW5jbHVkZSwgZmlsZW5hbWUsIGluY2x1ZGVfc3RhdGVb
aW5jbHVkZV0pKQotICAgIGVsc2U6Ci0gICAgICAgIGluY2x1ZGVfc3RhdGVbaW5jbHVkZV0gPSBs
aW5lX251bWJlcgotCi0gICAgaGVhZGVyX3R5cGUgPSBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFt
ZSwgaW5jbHVkZSwgaXNfc3lzdGVtLCBpbmNsdWRlX3N0YXRlKQotICAgIGluY2x1ZGVfc3RhdGUu
aGVhZGVyX3R5cGVzW2xpbmVfbnVtYmVyXSA9IGhlYWRlcl90eXBlCi0KLSAgICAjIE9ubHkgcHJv
Y2VlZCBpZiB0aGlzIGlzbid0IGEgZHVwbGljYXRlIGhlYWRlci4KLSAgICBpZiBkdXBsaWNhdGVf
aGVhZGVyOgotICAgICAgICByZXR1cm4KLQotICAgICMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBo
ZWFkZXJzIGFwcGVhciBpbiB0aGUgcmlnaHQgb3JkZXI6Ci0gICAgIyAxKSBmb3IgaW1wbGVtZW50
YXRpb24gZmlsZXM6IGNvbmZpZy5oLCBwcmltYXJ5IGhlYWRlciwgYmxhbmsgbGluZSwgYWxwaGFi
ZXRpY2FsbHkgc29ydGVkCi0gICAgIyAyKSBmb3IgaGVhZGVyIGZpbGVzOiBhbHBoYWJldGljYWxs
eSBzb3J0ZWQKLSAgICAjIFRoZSBpbmNsdWRlX3N0YXRlIG9iamVjdCBrZWVwcyB0cmFjayBvZiB0
aGUgbGFzdCB0eXBlIHNlZW4KLSAgICAjIGFuZCBjb21wbGFpbnMgaWYgdGhlIGhlYWRlciB0eXBl
cyBhcmUgb3V0IG9mIG9yZGVyIG9yIG1pc3NpbmcuCi0gICAgZXJyb3JfbWVzc2FnZSA9IGluY2x1
ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGhlYWRlcl90eXBlLCBmaWxlbmFtZS5l
bmRzd2l0aCgnLmgnKSkKLQotICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHdlIGhhdmUgYSBibGFu
ayBsaW5lIGFmdGVyIHByaW1hcnkgaGVhZGVyLgotICAgIGlmIG5vdCBlcnJvcl9tZXNzYWdlIGFu
ZCBoZWFkZXJfdHlwZSA9PSBfUFJJTUFSWV9IRUFERVI6Ci0gICAgICAgICBuZXh0X2xpbmUgPSBj
bGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1iZXIgKyAxXQotICAgICAgICAgaWYgbm90IGlz
X2JsYW5rX2xpbmUobmV4dF9saW5lKToKLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5l
X251bWJlciwgJ2J1aWxkL2luY2x1ZGVfb3JkZXInLCA0LAotICAgICAgICAgICAgICAgICAgJ1lv
dSBzaG91bGQgYWRkIGEgYmxhbmsgbGluZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93
biBoZWFkZXIuJykKLQotICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBoZWFkZXJzIGJlc2lk
ZXMgY29uZmlnLmggYW5kIHRoZSBwcmltYXJ5IGhlYWRlciBhcmUKLSAgICAjIGFscGhhYmV0aWNh
bGx5IHNvcnRlZC4KLSAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0g
X09USEVSX0hFQURFUjoKLSAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1i
ZXIgLSAxOwotICAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW3ByZXZp
b3VzX2xpbmVfbnVtYmVyXQotICAgICAgICAgcHJldmlvdXNfbWF0Y2ggPSBfUkVfUEFUVEVSTl9J
TkNMVURFLnNlYXJjaChwcmV2aW91c19saW5lKQotICAgICAgICAgd2hpbGUgKG5vdCBwcmV2aW91
c19tYXRjaCBhbmQgcHJldmlvdXNfbGluZV9udW1iZXIgPiAwCi0gICAgICAgICAgICAgICAgYW5k
IG5vdCBzZWFyY2gocidcQSgjaWZ8I2lmZGVmfCNpZm5kZWZ8I2Vsc2V8I2VsaWZ8I2VuZGlmKScs
IHByZXZpb3VzX2xpbmUpKToKLSAgICAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyIC09IDE7
Ci0gICAgICAgICAgICBwcmV2aW91c19saW5lID0gY2xlYW5fbGluZXMubGluZXNbcHJldmlvdXNf
bGluZV9udW1iZXJdCi0gICAgICAgICAgICBwcmV2aW91c19tYXRjaCA9IF9SRV9QQVRURVJOX0lO
Q0xVREUuc2VhcmNoKHByZXZpb3VzX2xpbmUpCi0gICAgICAgICBpZiBwcmV2aW91c19tYXRjaDoK
LSAgICAgICAgICAgIHByZXZpb3VzX2hlYWRlcl90eXBlID0gaW5jbHVkZV9zdGF0ZS5oZWFkZXJf
dHlwZXNbcHJldmlvdXNfbGluZV9udW1iZXJdCi0gICAgICAgICAgICBpZiBwcmV2aW91c19oZWFk
ZXJfdHlwZSA9PSBfT1RIRVJfSEVBREVSIGFuZCBwcmV2aW91c19saW5lLnN0cmlwKCkgPiBsaW5l
LnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAn
YnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCi0gICAgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0
aWNhbCBzb3J0aW5nIHByb2JsZW0uJykKLQotICAgIGlmIGVycm9yX21lc3NhZ2U6Ci0gICAgICAg
IGlmIGZpbGVuYW1lLmVuZHN3aXRoKCcuaCcpOgotICAgICAgICAgICAgZXJyb3IoZmlsZW5hbWUs
IGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCi0gICAgICAgICAgICAgICAg
ICAnJXMgU2hvdWxkIGJlOiBhbHBoYWJldGljYWxseSBzb3J0ZWQuJyAlCi0gICAgICAgICAgICAg
ICAgICBlcnJvcl9tZXNzYWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZXJyb3IoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCi0gICAgICAgICAg
ICAgICAgICAnJXMgU2hvdWxkIGJlOiBjb25maWcuaCwgcHJpbWFyeSBoZWFkZXIsIGJsYW5rIGxp
bmUsIGFuZCB0aGVuIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4nICUKLSAgICAgICAgICAgICAgICAg
IGVycm9yX21lc3NhZ2UpCi0KLQotZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3N0YXRlLAotICAgICAg
ICAgICAgICAgICAgIGVycm9yKToKLSAgICAiIiJDaGVja3MgcnVsZXMgZnJvbSB0aGUgJ0MrKyBs
YW5ndWFnZSBydWxlcycgc2VjdGlvbiBvZiBjcHBndWlkZS5odG1sLgotCi0gICAgU29tZSBvZiB0
aGVzZSBydWxlcyBhcmUgaGFyZCB0byB0ZXN0IChmdW5jdGlvbiBvdmVybG9hZGluZywgdXNpbmcK
LSAgICB1aW50MzIgaW5hcHByb3ByaWF0ZWx5KSwgYnV0IHdlIGRvIHRoZSBiZXN0IHdlIGNhbi4K
LQotICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmls
ZS4KLSAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmlu
ZyB0aGUgZmlsZS4KLSAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRv
IGNoZWNrLgotICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKHdpdGhvdXQgdGhl
IGRvdCkgb2YgdGhlIGZpbGVuYW1lLgotICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVT
dGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0gICAgICBl
cnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIi
IgotICAgICMgSWYgdGhlIGxpbmUgaXMgZW1wdHkgb3IgY29uc2lzdHMgb2YgZW50aXJlbHkgYSBj
b21tZW50LCBubyBuZWVkIHRvCi0gICAgIyBjaGVjayBpdC4KLSAgICBsaW5lID0gY2xlYW5fbGlu
ZXMuZWxpZGVkW2xpbmVfbnVtYmVyXQotICAgIGlmIG5vdCBsaW5lOgotICAgICAgICByZXR1cm4K
LQotICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChsaW5lKQotICAgIGlm
IG1hdGNoZWQ6Ci0gICAgICAgIGNoZWNrX2luY2x1ZGVfbGluZShmaWxlbmFtZSwgY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKLSAgICAgICAgcmV0dXJuCi0K
LSAgICAjIEZJWE1FOiBmaWd1cmUgb3V0IGlmIHRoZXkncmUgdXNpbmcgZGVmYXVsdCBhcmd1bWVu
dHMgaW4gZm4gcHJvdG8uCi0KLSAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGV5J3JlIHVzaW5nIGFu
IGNvbnZlcnNpb24gZnVuY3Rpb24gY2FzdC4KLSAgICAjIEkganVzdCB0cnkgdG8gY2FwdHVyZSB0
aGUgbW9zdCBjb21tb24gYmFzaWMgdHlwZXMsIHRob3VnaCB0aGVyZSBhcmUgbW9yZS4KLSAgICAj
IFBhcmFtZXRlcmxlc3MgY29udmVyc2lvbiBmdW5jdGlvbnMsIHN1Y2ggYXMgYm9vbCgpLCBhcmUg
YWxsb3dlZCBhcyB0aGV5IGFyZQotICAgICMgcHJvYmFibHkgYSBtZW1iZXIgb3BlcmF0b3IgZGVj
bGFyYXRpb24gb3IgZGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICBtYXRjaGVkID0gc2VhcmNoKAot
ICAgICAgICByJ1xiKGludHxmbG9hdHxkb3VibGV8Ym9vbHxjaGFyfGludDMyfHVpbnQzMnxpbnQ2
NHx1aW50NjQpXChbXildJywgbGluZSkKLSAgICBpZiBtYXRjaGVkOgotICAgICAgICAjIGdNb2Nr
IG1ldGhvZHMgYXJlIGRlZmluZWQgdXNpbmcgc29tZSB2YXJpYW50IG9mIE1PQ0tfTUVUSE9EeChu
YW1lLCB0eXBlKQotICAgICAgICAjIHdoZXJlIHR5cGUgbWF5IGJlIGZsb2F0KCksIGludChzdHJp
bmcpLCBldGMuICBXaXRob3V0IGNvbnRleHQgdGhleSBhcmUKLSAgICAgICAgIyB2aXJ0dWFsbHkg
aW5kaXN0aW5ndWlzaGFibGUgZnJvbSBpbnQoeCkgY2FzdHMuCi0gICAgICAgIGlmIG5vdCBtYXRj
aChyJ15ccypNT0NLXyhDT05TVF8pP01FVEhPRFxkKyhfVCk/XCgnLCBsaW5lKToKLSAgICAgICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3JlYWRhYmlsaXR5L2Nhc3RpbmcnLCA0
LAotICAgICAgICAgICAgICAgICAgJ1VzaW5nIGRlcHJlY2F0ZWQgY2FzdGluZyBzdHlsZS4gICcK
LSAgICAgICAgICAgICAgICAgICdVc2Ugc3RhdGljX2Nhc3Q8JXM+KC4uLikgaW5zdGVhZCcgJQot
ICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgxKSkKLQotICAgIGNoZWNrX2Nfc3R5bGVf
Y2FzdChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxpbmUsIGNsZWFuX2xpbmVzLnJhd19saW5lc1ts
aW5lX251bWJlcl0sCi0gICAgICAgICAgICAgICAgICAgICAgICdzdGF0aWNfY2FzdCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgIHInXCgoaW50fGZsb2F0fGRvdWJsZXxib29sfGNoYXJ8dT9pbnQo
MTZ8MzJ8NjQpKVwpJywKLSAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpCi0gICAgIyBUaGlz
IGRvZXNuJ3QgY2F0Y2ggYWxsIGNhc2VzLiAgQ29uc2lkZXIgKGNvbnN0IGNoYXIgKiBjb25zdCki
aGVsbG8iLgotICAgIGNoZWNrX2Nfc3R5bGVfY2FzdChmaWxlbmFtZSwgbGluZV9udW1iZXIsIGxp
bmUsIGNsZWFuX2xpbmVzLnJhd19saW5lc1tsaW5lX251bWJlcl0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICdyZWludGVycHJldF9jYXN0JywgcidcKChcdytccz9cKitccz8pXCknLCBlcnJvcikK
LQotICAgICMgSW4gYWRkaXRpb24sIHdlIGxvb2sgZm9yIHBlb3BsZSB0YWtpbmcgdGhlIGFkZHJl
c3Mgb2YgYSBjYXN0LiAgVGhpcwotICAgICMgaXMgZGFuZ2Vyb3VzIC0tIGNhc3RzIGNhbiBhc3Np
Z24gdG8gdGVtcG9yYXJpZXMsIHNvIHRoZSBwb2ludGVyIGRvZXNuJ3QKLSAgICAjIHBvaW50IHdo
ZXJlIHlvdSB0aGluay4KLSAgICBpZiBzZWFyY2goCi0gICAgICAgIHInKCZcKFteKV0rXClbXHco
XSl8KCYoc3RhdGljfGR5bmFtaWN8cmVpbnRlcnByZXQpX2Nhc3RcYiknLCBsaW5lKToKLSAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9jYXN0aW5nJywgNCwKLSAg
ICAgICAgICAgICAgKCdBcmUgeW91IHRha2luZyBhbiBhZGRyZXNzIG9mIGEgY2FzdD8gICcKLSAg
ICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291bGQgYmUgYSB0ZW1wIHZhci4gICcK
LSAgICAgICAgICAgICAgICdUYWtlIHRoZSBhZGRyZXNzIGJlZm9yZSBkb2luZyB0aGUgY2FzdCwg
cmF0aGVyIHRoYW4gYWZ0ZXInKSkKLQotICAgICMgQ2hlY2sgZm9yIHBlb3BsZSBkZWNsYXJpbmcg
c3RhdGljL2dsb2JhbCBTVEwgc3RyaW5ncyBhdCB0aGUgdG9wIGxldmVsLgotICAgICMgVGhpcyBp
cyBkYW5nZXJvdXMgYmVjYXVzZSB0aGUgQysrIGxhbmd1YWdlIGRvZXMgbm90IGd1YXJhbnRlZSB0
aGF0Ci0gICAgIyBnbG9iYWxzIHdpdGggY29uc3RydWN0b3JzIGFyZSBpbml0aWFsaXplZCBiZWZv
cmUgdGhlIGZpcnN0IGFjY2Vzcy4KLSAgICBtYXRjaGVkID0gbWF0Y2goCi0gICAgICAgIHInKCg/
OnxzdGF0aWMgKykoPzp8Y29uc3QgKykpc3RyaW5nICsoW2EtekEtWjAtOV86XSspXGIoLiopJywK
LSAgICAgICAgbGluZSkKLSAgICAjIE1ha2Ugc3VyZSBpdCdzIG5vdCBhIGZ1bmN0aW9uLgotICAg
ICMgRnVuY3Rpb24gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb24gbG9va3MgbGlrZTogInN0cmluZyBm
b288VHlwZT4oLi4uIi4KLSAgICAjIENsYXNzIHRlbXBsYXRlIGRlZmluaXRpb25zIGxvb2sgbGlr
ZTogInN0cmluZyBGb288VHlwZT46Ok1ldGhvZCguLi4iLgotICAgIGlmIG1hdGNoZWQgYW5kIG5v
dCBtYXRjaChyJ1xzKig8Lio+KT8oOjpbYS16QS1aMC05X10rKT9ccypcKChbXiJdfCQpJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hlZC5ncm91cCgzKSk6Ci0gICAgICAgIGVy
cm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvc3RyaW5nJywgNCwKLSAgICAgICAg
ICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxl
IHN0cmluZyBpbnN0ZWFkOiAnCi0gICAgICAgICAgICAgICciJXNjaGFyICVzW10iLicgJQotICAg
ICAgICAgICAgICAobWF0Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAj
IENoZWNrIHRoYXQgd2UncmUgbm90IHVzaW5nIFJUVEkgb3V0c2lkZSBvZiB0ZXN0aW5nIGNvZGUu
Ci0gICAgaWYgc2VhcmNoKHInXGJkeW5hbWljX2Nhc3Q8JywgbGluZSkgYW5kIG5vdCBfaXNfdGVz
dF9maWxlbmFtZShmaWxlbmFtZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJl
ciwgJ3J1bnRpbWUvcnR0aScsIDUsCi0gICAgICAgICAgICAgICdEbyBub3QgdXNlIGR5bmFtaWNf
Y2FzdDw+LiAgSWYgeW91IG5lZWQgdG8gY2FzdCB3aXRoaW4gYSBjbGFzcyAnCi0gICAgICAgICAg
ICAgICJoaWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+IHRvIHVwY2FzdC4gIEdvb2dsZSBkb2Vz
bid0IHN1cHBvcnQgIgotICAgICAgICAgICAgICAnUlRUSS4nKQotCi0gICAgaWYgc2VhcmNoKHIn
XGIoW0EtWmEtejAtOV9dKl8pXChcMVwpJywgbGluZSk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1l
LCBsaW5lX251bWJlciwgJ3J1bnRpbWUvaW5pdCcsIDQsCi0gICAgICAgICAgICAgICdZb3Ugc2Vl
bSB0byBiZSBpbml0aWFsaXppbmcgYSBtZW1iZXIgdmFyaWFibGUgd2l0aCBpdHNlbGYuJykKLQot
ICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJzoKLSAgICAgICAgIyBGSVhNRTogY2hlY2sgdGhh
dCAxLWFyZyBjb25zdHJ1Y3RvcnMgYXJlIGV4cGxpY2l0LgotICAgICAgICAjICAgICAgICBIb3cg
dG8gdGVsbCBpdCdzIGEgY29uc3RydWN0b3I/Ci0gICAgICAgICMgICAgICAgIChoYW5kbGVkIGlu
IGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cyBmb3Igbm93KQotICAgICAgICBwYXNz
Ci0KLSAgICAjIENoZWNrIGlmIHBlb3BsZSBhcmUgdXNpbmcgdGhlIHZlcmJvdGVuIEMgYmFzaWMg
dHlwZXMuICBUaGUgb25seSBleGNlcHRpb24KLSAgICAjIHdlIHJlZ3VsYXJseSBhbGxvdyBpcyAi
dW5zaWduZWQgc2hvcnQgcG9ydCIgZm9yIHBvcnQuCi0gICAgaWYgc2VhcmNoKHInXGJzaG9ydCBw
b3J0XGInLCBsaW5lKToKLSAgICAgICAgaWYgbm90IHNlYXJjaChyJ1xidW5zaWduZWQgc2hvcnQg
cG9ydFxiJywgbGluZSk6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIs
ICdydW50aW1lL2ludCcsIDQsCi0gICAgICAgICAgICAgICAgICAnVXNlICJ1bnNpZ25lZCBzaG9y
dCIgZm9yIHBvcnRzLCBub3QgInNob3J0IicpCi0KLSAgICAjIFdoZW4gc25wcmludGYgaXMgdXNl
ZCwgdGhlIHNlY29uZCBhcmd1bWVudCBzaG91bGRuJ3QgYmUgYSBsaXRlcmFsLgotICAgIG1hdGNo
ZWQgPSBzZWFyY2gocidzbnByaW50ZlxzKlwoKFteLF0qKSxccyooWzAtOV0qKVxzKiwnLCBsaW5l
KQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwg
J3J1bnRpbWUvcHJpbnRmJywgMywKLSAgICAgICAgICAgICAgJ0lmIHlvdSBjYW4sIHVzZSBzaXpl
b2YoJXMpIGluc3RlYWQgb2YgJXMgYXMgdGhlIDJuZCBhcmcgJwotICAgICAgICAgICAgICAndG8g
c25wcmludGYuJyAlIChtYXRjaGVkLmdyb3VwKDEpLCBtYXRjaGVkLmdyb3VwKDIpKSkKLQotICAg
ICMgQ2hlY2sgaWYgc29tZSB2ZXJib3RlbiBDIGZ1bmN0aW9ucyBhcmUgYmVpbmcgdXNlZC4KLSAg
ICBpZiBzZWFyY2gocidcYnNwcmludGZcYicsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFt
ZSwgbGluZV9udW1iZXIsICdydW50aW1lL3ByaW50ZicsIDUsCi0gICAgICAgICAgICAgICdOZXZl
ciB1c2Ugc3ByaW50Zi4gIFVzZSBzbnByaW50ZiBpbnN0ZWFkLicpCi0gICAgbWF0Y2hlZCA9IHNl
YXJjaChyJ1xiKHN0cmNweXxzdHJjYXQpXGInLCBsaW5lKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAg
ICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgNCwKLSAg
ICAgICAgICAgICAgJ0FsbW9zdCBhbHdheXMsIHNucHJpbnRmIGlzIGJldHRlciB0aGFuICVzJyAl
IG1hdGNoZWQuZ3JvdXAoMSkpCi0KLSAgICBpZiBzZWFyY2gocidcYnNzY2FuZlxiJywgbGluZSk6
Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywg
MSwKLSAgICAgICAgICAgICAgJ3NzY2FuZiBjYW4gYmUgb2ssIGJ1dCBpcyBzbG93IGFuZCBjYW4g
b3ZlcmZsb3cgYnVmZmVycy4nKQotCi0gICAgIyBDaGVjayBmb3Igc3VzcGljaW91cyB1c2FnZSBv
ZiAiaWYiIGxpa2UKLSAgICAjIH0gaWYgKGEgPT0gYikgewotICAgIGlmIHNlYXJjaChyJ1x9XHMq
aWZccypcKCcsIGxpbmUpOgotICAgICAgICBlcnJvcihmaWxlbmFtZSwgbGluZV9udW1iZXIsICdy
ZWFkYWJpbGl0eS9icmFjZXMnLCA0LAotICAgICAgICAgICAgICAnRGlkIHlvdSBtZWFuICJlbHNl
IGlmIj8gSWYgbm90LCBzdGFydCBhIG5ldyBsaW5lIGZvciAiaWYiLicpCi0KLSAgICAjIENoZWNr
IGZvciBwb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWdzIGxpa2UgcHJpbnRmKGZvbykuCi0gICAg
IyBXZSBjb25zdHJhaW4gdGhlIHBhdHRlcm4gbm90IHRvIHBpY2sgdGhpbmdzIGxpa2UgRG9jaWRG
b3JQcmludGYoZm9vKS4KLSAgICAjIE5vdCBwZXJmZWN0IGJ1dCBpdCBjYW4gY2F0Y2ggcHJpbnRm
KGZvby5jX3N0cigpKSBhbmQgcHJpbnRmKGZvby0+Y19zdHIoKSkKLSAgICBtYXRjaGVkID0gcmUu
c2VhcmNoKHInXGIoKD86c3RyaW5nKT9wcmludGYpXHMqXCgoW1x3LlwtPigpXSspXCknLCBsaW5l
LCByZS5JKQotICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251
bWJlciwgJ3J1bnRpbWUvcHJpbnRmJywgNCwKLSAgICAgICAgICAgICAgJ1BvdGVudGlhbCBmb3Jt
YXQgc3RyaW5nIGJ1Zy4gRG8gJXMoIiUlcyIsICVzKSBpbnN0ZWFkLicKLSAgICAgICAgICAgICAg
JSAobWF0Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAjIENoZWNrIGZv
ciBwb3RlbnRpYWwgbWVtc2V0IGJ1Z3MgbGlrZSBtZW1zZXQoYnVmLCBzaXplb2YoYnVmKSwgMCku
Ci0gICAgbWF0Y2hlZCA9IHNlYXJjaChyJ21lbXNldFxzKlwoKFteLF0qKSxccyooW14sXSopLFxz
KjBccypcKScsIGxpbmUpCi0gICAgaWYgbWF0Y2hlZCBhbmQgbm90IG1hdGNoKHIiXicnfC0/WzAt
OV0rfDB4WzAtOUEtRmEtZl0kIiwgbWF0Y2hlZC5ncm91cCgyKSk6Ci0gICAgICAgIGVycm9yKGZp
bGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRpbWUvbWVtc2V0JywgNCwKLSAgICAgICAgICAgICAg
J0RpZCB5b3UgbWVhbiAibWVtc2V0KCVzLCAwLCAlcykiPycKLSAgICAgICAgICAgICAgJSAobWF0
Y2hlZC5ncm91cCgxKSwgbWF0Y2hlZC5ncm91cCgyKSkpCi0KLSAgICAjIERldGVjdCB2YXJpYWJs
ZS1sZW5ndGggYXJyYXlzLgotICAgIG1hdGNoZWQgPSBtYXRjaChyJ1xzKiguKzo6KT8oXHcrKSBb
YS16XVx3KlxbKC4rKV07JywgbGluZSkKLSAgICBpZiAobWF0Y2hlZCBhbmQgbWF0Y2hlZC5ncm91
cCgyKSAhPSAncmV0dXJuJyBhbmQgbWF0Y2hlZC5ncm91cCgyKSAhPSAnZGVsZXRlJyBhbmQKLSAg
ICAgICAgbWF0Y2hlZC5ncm91cCgzKS5maW5kKCddJykgPT0gLTEpOgotICAgICAgICAjIFNwbGl0
IHRoZSBzaXplIHVzaW5nIHNwYWNlIGFuZCBhcml0aG1ldGljIG9wZXJhdG9ycyBhcyBkZWxpbWl0
ZXJzLgotICAgICAgICAjIElmIGFueSBvZiB0aGUgcmVzdWx0aW5nIHRva2VucyBhcmUgbm90IGNv
bXBpbGUgdGltZSBjb25zdGFudHMgdGhlbgotICAgICAgICAjIHJlcG9ydCB0aGUgZXJyb3IuCi0g
ICAgICAgIHRva2VucyA9IHJlLnNwbGl0KHInXHN8XCt8XC18XCp8XC98PDx8Pj5dJywgbWF0Y2hl
ZC5ncm91cCgzKSkKLSAgICAgICAgaXNfY29uc3QgPSBUcnVlCi0gICAgICAgIHNraXBfbmV4dCA9
IEZhbHNlCi0gICAgICAgIGZvciB0b2sgaW4gdG9rZW5zOgotICAgICAgICAgICAgaWYgc2tpcF9u
ZXh0OgotICAgICAgICAgICAgICAgIHNraXBfbmV4dCA9IEZhbHNlCi0gICAgICAgICAgICAgICAg
Y29udGludWUKLQotICAgICAgICAgICAgaWYgc2VhcmNoKHInc2l6ZW9mXCguK1wpJywgdG9rKToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgc2VhcmNoKHInYXJyYXlz
aXplXChcdytcKScsIHRvayk6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICAg
ICAgdG9rID0gdG9rLmxzdHJpcCgnKCcpCi0gICAgICAgICAgICB0b2sgPSB0b2sucnN0cmlwKCcp
JykKLSAgICAgICAgICAgIGlmIG5vdCB0b2s6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIGlmIG1hdGNoKHInXGQrJywgdG9rKToKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgaWYgbWF0Y2gocicwW3hYXVswLTlhLWZBLUZdKycsIHRvayk6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG1hdGNoKHIna1tBLVowLTldXHcq
JywgdG9rKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbWF0Y2go
cicoLis6Oik/a1tBLVowLTldXHcqJywgdG9rKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgaWYgbWF0Y2gocicoLis6Oik/W0EtWl1bQS1aMC05X10qJywgdG9rKToKLSAg
ICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgIyBBIGNhdGNoIGFsbCBmb3IgdHJp
Y2t5IHNpemVvZiBjYXNlcywgaW5jbHVkaW5nICdzaXplb2YgZXhwcmVzc2lvbicsCi0gICAgICAg
ICAgICAjICdzaXplb2YoKnR5cGUpJywgJ3NpemVvZihjb25zdCB0eXBlKScsICdzaXplb2Yoc3Ry
dWN0IFN0cnVjdE5hbWUpJwotICAgICAgICAgICAgIyByZXF1aXJlcyBza2lwcGluZyB0aGUgbmV4
dCB0b2tlbiBiZWNhc3VlIHdlIHNwbGl0IG9uICcgJyBhbmQgJyonLgotICAgICAgICAgICAgaWYg
dG9rLnN0YXJ0c3dpdGgoJ3NpemVvZicpOgotICAgICAgICAgICAgICAgIHNraXBfbmV4dCA9IFRy
dWUKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaXNfY29uc3QgPSBGYWxz
ZQotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGlzX2NvbnN0OgotICAgICAgICAg
ICAgZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncnVudGltZS9hcnJheXMnLCAxLAotICAg
ICAgICAgICAgICAgICAgJ0RvIG5vdCB1c2UgdmFyaWFibGUtbGVuZ3RoIGFycmF5cy4gIFVzZSBh
biBhcHByb3ByaWF0ZWx5IG5hbWVkICcKLSAgICAgICAgICAgICAgICAgICIoJ2snIGZvbGxvd2Vk
IGJ5IENhbWVsQ2FzZSkgY29tcGlsZS10aW1lIGNvbnN0YW50IGZvciB0aGUgc2l6ZS4iKQotCi0g
ICAgIyBDaGVjayBmb3IgdXNlIG9mIHVubmFtZWQgbmFtZXNwYWNlcyBpbiBoZWFkZXIgZmlsZXMu
ICBSZWdpc3RyYXRpb24KLSAgICAjIG1hY3JvcyBhcmUgdHlwaWNhbGx5IE9LLCBzbyB3ZSBhbGxv
dyB1c2Ugb2YgIm5hbWVzcGFjZSB7IiBvbiBsaW5lcwotICAgICMgdGhhdCBlbmQgd2l0aCBiYWNr
c2xhc2hlcy4KLSAgICBpZiAoZmlsZV9leHRlbnNpb24gPT0gJ2gnCi0gICAgICAgIGFuZCBzZWFy
Y2gocidcYm5hbWVzcGFjZVxzKnsnLCBsaW5lKQotICAgICAgICBhbmQgbGluZVstMV0gIT0gJ1xc
Jyk6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ2J1aWxkL25hbWVzcGFj
ZXMnLCA0LAotICAgICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4g
aGVhZGVyIGZpbGVzLiAgU2VlICcKLSAgICAgICAgICAgICAgJ2h0dHA6Ly9nb29nbGUtc3R5bGVn
dWlkZS5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvY3BwZ3VpZGUueG1sI05hbWVzcGFjZXMnCi0g
ICAgICAgICAgICAgICcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykKLQotCi1kZWYgY2hlY2tfY19z
dHlsZV9jYXN0KGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgcmF3X2xpbmUsIGNhc3RfdHlw
ZSwgcGF0dGVybiwKLSAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IpOgotICAgICIiIkNoZWNr
cyBmb3IgYSBDLXN0eWxlIGNhc3QgYnkgbG9va2luZyBmb3IgdGhlIHBhdHRlcm4uCi0KLSAgICBU
aGlzIGFsc28gaGFuZGxlcyBzaXplb2YodHlwZSkgd2FybmluZ3MsIGR1ZSB0byBzaW1pbGFyaXR5
IG9mIGNvbnRlbnQuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRo
ZSBjdXJyZW50IGZpbGUuCi0gICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGlu
ZSB0byBjaGVjay4KLSAgICAgIGxpbmU6IFRoZSBsaW5lIG9mIGNvZGUgdG8gY2hlY2suCi0gICAg
ICByYXdfbGluZTogVGhlIHJhdyBsaW5lIG9mIGNvZGUgdG8gY2hlY2ssIHdpdGggY29tbWVudHMu
Ci0gICAgICBjYXN0X3R5cGU6IFRoZSBzdHJpbmcgZm9yIHRoZSBDKysgY2FzdCB0byByZWNvbW1l
bmQuICBUaGlzIGlzIGVpdGhlcgotICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0IG9y
IHN0YXRpY19jYXN0LCBkZXBlbmRpbmcuCi0gICAgICBwYXR0ZXJuOiBUaGUgcmVndWxhciBleHBy
ZXNzaW9uIHVzZWQgdG8gZmluZCBDLXN0eWxlIGNhc3RzLgotICAgICAgZXJyb3I6IFRoZSBmdW5j
dGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KLSAgICAiIiIKLSAgICBtYXRjaGVk
ID0gc2VhcmNoKHBhdHRlcm4sIGxpbmUpCi0gICAgaWYgbm90IG1hdGNoZWQ6Ci0gICAgICAgIHJl
dHVybgotCi0gICAgIyBlLmcuLCBzaXplb2YoaW50KQotICAgIHNpemVvZl9tYXRjaCA9IG1hdGNo
KHInLipzaXplb2ZccyokJywgbGluZVswOm1hdGNoZWQuc3RhcnQoMSkgLSAxXSkKLSAgICBpZiBz
aXplb2ZfbWF0Y2g6Ci0gICAgICAgIGVycm9yKGZpbGVuYW1lLCBsaW5lX251bWJlciwgJ3J1bnRp
bWUvc2l6ZW9mJywgMSwKLSAgICAgICAgICAgICAgJ1VzaW5nIHNpemVvZih0eXBlKS4gIFVzZSBz
aXplb2YodmFybmFtZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScpCi0gICAgICAgIHJldHVybgotCi0g
ICAgcmVtYWluZGVyID0gbGluZVttYXRjaGVkLmVuZCgwKTpdCi0KLSAgICAjIFRoZSBjbG9zZSBw
YXJlbiBpcyBmb3IgZnVuY3Rpb24gcG9pbnRlcnMgYXMgYXJndW1lbnRzIHRvIGEgZnVuY3Rpb24u
Ci0gICAgIyBlZywgdm9pZCBmb28odm9pZCAoKmJhcikoaW50KSk7Ci0gICAgIyBUaGUgc2VtaWNv
bG9uIGNoZWNrIGlzIGEgbW9yZSBiYXNpYyBmdW5jdGlvbiBjaGVjazsgYWxzbyBwb3NzaWJseSBh
Ci0gICAgIyBmdW5jdGlvbiBwb2ludGVyIHR5cGVkZWYuCi0gICAgIyBlZywgdm9pZCBmb28oaW50
KTsgb3Igdm9pZCBmb28oaW50KSBjb25zdDsKLSAgICAjIFRoZSBlcXVhbHMgY2hlY2sgaXMgZm9y
IGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWdubWVudC4KLSAgICAjIGVnLCB2b2lkICooKmZvbykoaW50
KSA9IC4uLgotICAgICMKLSAgICAjIFJpZ2h0IG5vdywgdGhpcyB3aWxsIG9ubHkgY2F0Y2ggY2Fz
ZXMgd2hlcmUgdGhlcmUncyBhIHNpbmdsZSBhcmd1bWVudCwgYW5kCi0gICAgIyBpdCdzIHVubmFt
ZWQuICBJdCBzaG91bGQgcHJvYmFibHkgYmUgZXhwYW5kZWQgdG8gY2hlY2sgZm9yIG11bHRpcGxl
Ci0gICAgIyBhcmd1bWVudHMgd2l0aCBzb21lIHVubmFtZWQuCi0gICAgZnVuY3Rpb25fbWF0Y2gg
PSBtYXRjaChyJ1xzKihcKXw9fChjb25zdCk/XHMqKDt8XHt8dGhyb3dcKFwpKSknLCByZW1haW5k
ZXIpCi0gICAgaWYgZnVuY3Rpb25fbWF0Y2g6Ci0gICAgICAgIGlmIChub3QgZnVuY3Rpb25fbWF0
Y2guZ3JvdXAoMykKLSAgICAgICAgICAgIG9yIGZ1bmN0aW9uX21hdGNoLmdyb3VwKDMpID09ICc7
JwotICAgICAgICAgICAgb3IgcmF3X2xpbmUuZmluZCgnLyonKSA8IDApOgotICAgICAgICAgICAg
ZXJyb3IoZmlsZW5hbWUsIGxpbmVfbnVtYmVyLCAncmVhZGFiaWxpdHkvZnVuY3Rpb24nLCAzLAot
ICAgICAgICAgICAgICAgICAgJ0FsbCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBuYW1lZCBpbiBhIGZ1
bmN0aW9uJykKLSAgICAgICAgcmV0dXJuCi0KLSAgICAjIEF0IHRoaXMgcG9pbnQsIGFsbCB0aGF0
IHNob3VsZCBiZSBsZWZ0IGlzIGFjdHVhbCBjYXN0cy4KLSAgICBlcnJvcihmaWxlbmFtZSwgbGlu
ZV9udW1iZXIsICdyZWFkYWJpbGl0eS9jYXN0aW5nJywgNCwKLSAgICAgICAgICAnVXNpbmcgQy1z
dHlsZSBjYXN0LiAgVXNlICVzPCVzPiguLi4pIGluc3RlYWQnICUKLSAgICAgICAgICAoY2FzdF90
eXBlLCBtYXRjaGVkLmdyb3VwKDEpKSkKLQotCi1fSEVBREVSU19DT05UQUlOSU5HX1RFTVBMQVRF
UyA9ICgKLSAgICAoJzxkZXF1ZT4nLCAoJ2RlcXVlJywpKSwKLSAgICAoJzxmdW5jdGlvbmFsPics
ICgndW5hcnlfZnVuY3Rpb24nLCAnYmluYXJ5X2Z1bmN0aW9uJywKLSAgICAgICAgICAgICAgICAg
ICAgICAncGx1cycsICdtaW51cycsICdtdWx0aXBsaWVzJywgJ2RpdmlkZXMnLCAnbW9kdWx1cycs
Ci0gICAgICAgICAgICAgICAgICAgICAgJ25lZ2F0ZScsCi0gICAgICAgICAgICAgICAgICAgICAg
J2VxdWFsX3RvJywgJ25vdF9lcXVhbF90bycsICdncmVhdGVyJywgJ2xlc3MnLAotICAgICAgICAg
ICAgICAgICAgICAgICdncmVhdGVyX2VxdWFsJywgJ2xlc3NfZXF1YWwnLAotICAgICAgICAgICAg
ICAgICAgICAgICdsb2dpY2FsX2FuZCcsICdsb2dpY2FsX29yJywgJ2xvZ2ljYWxfbm90JywKLSAg
ICAgICAgICAgICAgICAgICAgICAndW5hcnlfbmVnYXRlJywgJ25vdDEnLCAnYmluYXJ5X25lZ2F0
ZScsICdub3QyJywKLSAgICAgICAgICAgICAgICAgICAgICAnYmluZDFzdCcsICdiaW5kMm5kJywK
LSAgICAgICAgICAgICAgICAgICAgICAncG9pbnRlcl90b191bmFyeV9mdW5jdGlvbicsCi0gICAg
ICAgICAgICAgICAgICAgICAgJ3BvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uJywKLSAgICAgICAg
ICAgICAgICAgICAgICAncHRyX2Z1bicsCi0gICAgICAgICAgICAgICAgICAgICAgJ21lbV9mdW5f
dCcsICdtZW1fZnVuJywgJ21lbV9mdW4xX3QnLCAnbWVtX2Z1bjFfcmVmX3QnLAotICAgICAgICAg
ICAgICAgICAgICAgICdtZW1fZnVuX3JlZl90JywKLSAgICAgICAgICAgICAgICAgICAgICAnY29u
c3RfbWVtX2Z1bl90JywgJ2NvbnN0X21lbV9mdW4xX3QnLAotICAgICAgICAgICAgICAgICAgICAg
ICdjb25zdF9tZW1fZnVuX3JlZl90JywgJ2NvbnN0X21lbV9mdW4xX3JlZl90JywKLSAgICAgICAg
ICAgICAgICAgICAgICAnbWVtX2Z1bl9yZWYnLAotICAgICAgICAgICAgICAgICAgICAgKSksCi0g
ICAgKCc8bGltaXRzPicsICgnbnVtZXJpY19saW1pdHMnLCkpLAotICAgICgnPGxpc3Q+JywgKCds
aXN0JywpKSwKLSAgICAoJzxtYXA+JywgKCdtYXAnLCAnbXVsdGltYXAnLCkpLAotICAgICgnPG1l
bW9yeT4nLCAoJ2FsbG9jYXRvcicsKSksCi0gICAgKCc8cXVldWU+JywgKCdxdWV1ZScsICdwcmlv
cml0eV9xdWV1ZScsKSksCi0gICAgKCc8c2V0PicsICgnc2V0JywgJ211bHRpc2V0JywpKSwKLSAg
ICAoJzxzdGFjaz4nLCAoJ3N0YWNrJywpKSwKLSAgICAoJzxzdHJpbmc+JywgKCdjaGFyX3RyYWl0
cycsICdiYXNpY19zdHJpbmcnLCkpLAotICAgICgnPHV0aWxpdHk+JywgKCdwYWlyJywpKSwKLSAg
ICAoJzx2ZWN0b3I+JywgKCd2ZWN0b3InLCkpLAotCi0gICAgIyBnY2MgZXh0ZW5zaW9ucy4KLSAg
ICAjIE5vdGU6IHN0ZDo6aGFzaCBpcyB0aGVpciBoYXNoLCA6Omhhc2ggaXMgb3VyIGhhc2gKLSAg
ICAoJzxoYXNoX21hcD4nLCAoJ2hhc2hfbWFwJywgJ2hhc2hfbXVsdGltYXAnLCkpLAotICAgICgn
PGhhc2hfc2V0PicsICgnaGFzaF9zZXQnLCAnaGFzaF9tdWx0aXNldCcsKSksCi0gICAgKCc8c2xp
c3Q+JywgKCdzbGlzdCcsKSksCi0gICAgKQotCi1fSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BS
T01PVEVEID0gewotICAgICMgV2UgY2FuIHRydXN0IHdpdGggcmVhc29uYWJsZSBjb25maWRlbmNl
IHRoYXQgbWFwIGdpdmVzIHVzIHBhaXI8PiwgdG9vLgotICAgICdwYWlyPD4nOiAoJ21hcCcsICdt
dWx0aW1hcCcsICdoYXNoX21hcCcsICdoYXNoX211bHRpbWFwJykKLX0KLQotX1JFX1BBVFRFUk5f
U1RSSU5HID0gcmUuY29tcGlsZShyJ1xic3RyaW5nXGInKQotCi1fcmVfcGF0dGVybl9hbGdvcml0
aG1faGVhZGVyID0gW10KLWZvciBfdGVtcGxhdGUgaW4gKCdjb3B5JywgJ21heCcsICdtaW4nLCAn
bWluX2VsZW1lbnQnLCAnc29ydCcsICdzd2FwJywKLSAgICAgICAgICAgICAgICAgICd0cmFuc2Zv
cm0nKToKLSAgICAjIE1hdGNoIG1heDx0eXBlPiguLi4sIC4uLiksIG1heCguLi4sIC4uLiksIGJ1
dCBub3QgZm9vLT5tYXgsIGZvby5tYXggb3IKLSAgICAjIHR5cGU6Om1heCgpLgotICAgIF9yZV9w
YXR0ZXJuX2FsZ29yaXRobV9oZWFkZXIuYXBwZW5kKAotICAgICAgICAocmUuY29tcGlsZShyJ1te
Pi5dXGInICsgX3RlbXBsYXRlICsgcicoPC4qPz4pP1woW15cKV0nKSwKLSAgICAgICAgIF90ZW1w
bGF0ZSwKLSAgICAgICAgICc8YWxnb3JpdGhtPicpKQotCi1fcmVfcGF0dGVybl90ZW1wbGF0ZXMg
PSBbXQotZm9yIF9oZWFkZXIsIF90ZW1wbGF0ZXMgaW4gX0hFQURFUlNfQ09OVEFJTklOR19URU1Q
TEFURVM6Ci0gICAgZm9yIF90ZW1wbGF0ZSBpbiBfdGVtcGxhdGVzOgotICAgICAgICBfcmVfcGF0
dGVybl90ZW1wbGF0ZXMuYXBwZW5kKAotICAgICAgICAgICAgKHJlLmNvbXBpbGUocicoXDx8XGIp
JyArIF90ZW1wbGF0ZSArIHInXHMqXDwnKSwKLSAgICAgICAgICAgICBfdGVtcGxhdGUgKyAnPD4n
LAotICAgICAgICAgICAgIF9oZWFkZXIpKQotCi0KLWRlZiBmaWxlc19iZWxvbmdfdG9fc2FtZV9t
b2R1bGUoZmlsZW5hbWVfY3BwLCBmaWxlbmFtZV9oKToKLSAgICAiIiJDaGVjayBpZiB0aGVzZSB0
d28gZmlsZW5hbWVzIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1bGUuCi0KLSAgICBUaGUgY29uY2Vw
dCBvZiBhICdtb2R1bGUnIGhlcmUgaXMgYSBhcyBmb2xsb3dzOgotICAgIGZvby5oLCBmb28taW5s
LmgsIGZvby5jcHAsIGZvb190ZXN0LmNwcCBhbmQgZm9vX3VuaXR0ZXN0LmNwcCBiZWxvbmcgdG8g
dGhlCi0gICAgc2FtZSAnbW9kdWxlJyBpZiB0aGV5IGFyZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
Ci0gICAgc29tZS9wYXRoL3B1YmxpYy94eXp6eSBhbmQgc29tZS9wYXRoL2ludGVybmFsL3h5enp5
IGFyZSBhbHNvIGNvbnNpZGVyZWQKLSAgICB0byBiZWxvbmcgdG8gdGhlIHNhbWUgbW9kdWxlIGhl
cmUuCi0KLSAgICBJZiB0aGUgZmlsZW5hbWVfY3BwIGNvbnRhaW5zIGEgbG9uZ2VyIHBhdGggdGhh
biB0aGUgZmlsZW5hbWVfaCwgZm9yIGV4YW1wbGUsCi0gICAgJy9hYnNvbHV0ZS9wYXRoL3RvL2Jh
c2Uvc3lzaW5mby5jcHAnLCBhbmQgdGhpcyBmaWxlIHdvdWxkIGluY2x1ZGUKLSAgICAnYmFzZS9z
eXNpbmZvLmgnLCB0aGlzIGZ1bmN0aW9uIGFsc28gcHJvZHVjZXMgdGhlIHByZWZpeCBuZWVkZWQg
dG8gb3BlbiB0aGUKLSAgICBoZWFkZXIuIFRoaXMgaXMgdXNlZCBieSB0aGUgY2FsbGVyIG9mIHRo
aXMgZnVuY3Rpb24gdG8gbW9yZSByb2J1c3RseSBvcGVuIHRoZQotICAgIGhlYWRlciBmaWxlLiBX
ZSBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgcmVhbCBpbmNsdWRlIHBhdGhzIGluIHRoaXMgY29u
dGV4dCwKLSAgICBzbyB3ZSBuZWVkIHRoaXMgZ3Vlc3N3b3JrIGhlcmUuCi0KLSAgICBLbm93biBi
dWdzOiB0b29scy9iYXNlL2Jhci5jcHAgYW5kIGJhc2UvYmFyLmggYmVsb25nIHRvIHRoZSBzYW1l
IG1vZHVsZQotICAgIGFjY29yZGluZyB0byB0aGlzIGltcGxlbWVudGF0aW9uLiBCZWNhdXNlIG9m
IHRoaXMsIHRoaXMgZnVuY3Rpb24gZ2l2ZXMKLSAgICBzb21lIGZhbHNlIHBvc2l0aXZlcy4gVGhp
cyBzaG91bGQgYmUgc3VmZmljaWVudGx5IHJhcmUgaW4gcHJhY3RpY2UuCi0KLSAgICBBcmdzOgot
ICAgICAgZmlsZW5hbWVfY3BwOiBpcyB0aGUgcGF0aCBmb3IgdGhlIC5jcHAgZmlsZQotICAgICAg
ZmlsZW5hbWVfaDogaXMgdGhlIHBhdGggZm9yIHRoZSBoZWFkZXIgcGF0aAotCi0gICAgUmV0dXJu
czoKLSAgICAgIFR1cGxlIHdpdGggYSBib29sIGFuZCBhIHN0cmluZzoKLSAgICAgIGJvb2w6IFRy
dWUgaWYgZmlsZW5hbWVfY3BwIGFuZCBmaWxlbmFtZV9oIGJlbG9uZyB0byB0aGUgc2FtZSBtb2R1
bGUuCi0gICAgICBzdHJpbmc6IHRoZSBhZGRpdGlvbmFsIHByZWZpeCBuZWVkZWQgdG8gb3BlbiB0
aGUgaGVhZGVyIGZpbGUuCi0gICAgIiIiCi0KLSAgICBpZiBub3QgZmlsZW5hbWVfY3BwLmVuZHN3
aXRoKCcuY3BwJyk6Ci0gICAgICAgIHJldHVybiAoRmFsc2UsICcnKQotICAgIGZpbGVuYW1lX2Nw
cCA9IGZpbGVuYW1lX2NwcFs6LWxlbignLmNwcCcpXQotICAgIGlmIGZpbGVuYW1lX2NwcC5lbmRz
d2l0aCgnX3VuaXR0ZXN0Jyk6Ci0gICAgICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6
LWxlbignX3VuaXR0ZXN0JyldCi0gICAgZWxpZiBmaWxlbmFtZV9jcHAuZW5kc3dpdGgoJ190ZXN0
Jyk6Ci0gICAgICAgIGZpbGVuYW1lX2NwcCA9IGZpbGVuYW1lX2NwcFs6LWxlbignX3Rlc3QnKV0K
LSAgICBmaWxlbmFtZV9jcHAgPSBmaWxlbmFtZV9jcHAucmVwbGFjZSgnL3B1YmxpYy8nLCAnLycp
Ci0gICAgZmlsZW5hbWVfY3BwID0gZmlsZW5hbWVfY3BwLnJlcGxhY2UoJy9pbnRlcm5hbC8nLCAn
LycpCi0KLSAgICBpZiBub3QgZmlsZW5hbWVfaC5lbmRzd2l0aCgnLmgnKToKLSAgICAgICAgcmV0
dXJuIChGYWxzZSwgJycpCi0gICAgZmlsZW5hbWVfaCA9IGZpbGVuYW1lX2hbOi1sZW4oJy5oJyld
Ci0gICAgaWYgZmlsZW5hbWVfaC5lbmRzd2l0aCgnLWlubCcpOgotICAgICAgICBmaWxlbmFtZV9o
ID0gZmlsZW5hbWVfaFs6LWxlbignLWlubCcpXQotICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9o
LnJlcGxhY2UoJy9wdWJsaWMvJywgJy8nKQotICAgIGZpbGVuYW1lX2ggPSBmaWxlbmFtZV9oLnJl
cGxhY2UoJy9pbnRlcm5hbC8nLCAnLycpCi0KLSAgICBmaWxlc19iZWxvbmdfdG9fc2FtZV9tb2R1
bGUgPSBmaWxlbmFtZV9jcHAuZW5kc3dpdGgoZmlsZW5hbWVfaCkKLSAgICBjb21tb25fcGF0aCA9
ICcnCi0gICAgaWYgZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlOgotICAgICAgICBjb21tb25f
cGF0aCA9IGZpbGVuYW1lX2NwcFs6LWxlbihmaWxlbmFtZV9oKV0KLSAgICByZXR1cm4gZmlsZXNf
YmVsb25nX3RvX3NhbWVfbW9kdWxlLCBjb21tb25fcGF0aAotCi0KLWRlZiB1cGRhdGVfaW5jbHVk
ZV9zdGF0ZShmaWxlbmFtZSwgaW5jbHVkZV9zdGF0ZSwgaW89Y29kZWNzKToKLSAgICAiIiJGaWxs
IHVwIHRoZSBpbmNsdWRlX3N0YXRlIHdpdGggbmV3IGluY2x1ZGVzIGZvdW5kIGZyb20gdGhlIGZp
bGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IHRoZSBuYW1lIG9mIHRoZSBoZWFkZXIg
dG8gcmVhZC4KLSAgICAgIGluY2x1ZGVfc3RhdGU6IGFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2Ug
aW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJlIGluc2VydGVkLgotICAgICAgaW86IFRoZSBpbyBmYWN0
b3J5IHRvIHVzZSB0byByZWFkIHRoZSBmaWxlLiBQcm92aWRlZCBmb3IgdGVzdGFiaWxpdHkuCi0K
LSAgICBSZXR1cm5zOgotICAgICAgVHJ1ZSBpZiBhIGhlYWRlciB3YXMgc3VjY2VzZnVsbHkgYWRk
ZWQuIEZhbHNlIG90aGVyd2lzZS4KLSAgICAiIiIKLSAgICBoZWFkZXJfZmlsZSA9IE5vbmUKLSAg
ICB0cnk6Ci0gICAgICAgIGhlYWRlcl9maWxlID0gaW8ub3BlbihmaWxlbmFtZSwgJ3InLCAndXRm
OCcsICdyZXBsYWNlJykKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0gICAgbGluZV9udW1iZXIgPSAwCi0gICAgZm9yIGxpbmUgaW4gaGVhZGVyX2ZpbGU6Ci0gICAg
ICAgIGxpbmVfbnVtYmVyICs9IDEKLSAgICAgICAgY2xlYW5fbGluZSA9IGNsZWFuc2VfY29tbWVu
dHMobGluZSkKLSAgICAgICAgbWF0Y2hlZCA9IF9SRV9QQVRURVJOX0lOQ0xVREUuc2VhcmNoKGNs
ZWFuX2xpbmUpCi0gICAgICAgIGlmIG1hdGNoZWQ6Ci0gICAgICAgICAgICBpbmNsdWRlID0gbWF0
Y2hlZC5ncm91cCgyKQotICAgICAgICAgICAgIyBUaGUgdmFsdWUgZm9ybWF0dGluZyBpcyBjdXRl
LCBidXQgbm90IHJlYWxseSB1c2VkIHJpZ2h0IG5vdy4KLSAgICAgICAgICAgICMgV2hhdCBtYXR0
ZXJzIGhlcmUgaXMgdGhhdCB0aGUga2V5IGlzIGluIGluY2x1ZGVfc3RhdGUuCi0gICAgICAgICAg
ICBpbmNsdWRlX3N0YXRlLnNldGRlZmF1bHQoaW5jbHVkZSwgJyVzOiVkJyAlIChmaWxlbmFtZSwg
bGluZV9udW1iZXIpKQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIGNoZWNrX2Zvcl9pbmNsdWRl
X3doYXRfeW91X3VzZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGluY2x1ZGVfc3RhdGUsIGVycm9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbz1jb2RlY3MpOgotICAgICIi
IlJlcG9ydHMgZm9yIG1pc3Npbmcgc3RsIGluY2x1ZGVzLgotCi0gICAgVGhpcyBmdW5jdGlvbiB3
aWxsIG91dHB1dCB3YXJuaW5ncyB0byBtYWtlIHN1cmUgeW91IGFyZSBpbmNsdWRpbmcgdGhlIGhl
YWRlcnMKLSAgICBuZWNlc3NhcnkgZm9yIHRoZSBzdGwgY29udGFpbmVycyBhbmQgZnVuY3Rpb25z
IHRoYXQgeW91IHVzZS4gV2Ugb25seSBnaXZlIG9uZQotICAgIHJlYXNvbiB0byBpbmNsdWRlIGEg
aGVhZGVyLiBGb3IgZXhhbXBsZSwgaWYgeW91IHVzZSBib3RoIGVxdWFsX3RvPD4gYW5kCi0gICAg
bGVzczw+IGluIGEgLmggZmlsZSwgb25seSBvbmUgKHRoZSBsYXR0ZXIgaW4gdGhlIGZpbGUpIG9m
IHRoZXNlIHdpbGwgYmUKLSAgICByZXBvcnRlZCBhcyBhIHJlYXNvbiB0byBpbmNsdWRlIHRoZSA8
ZnVuY3Rpb25hbD4uCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRo
ZSBjdXJyZW50IGZpbGUuCi0gICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3Rh
bmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCi0gICAgICBpbmNsdWRlX3N0YXRlOiBBbiBfSW5jbHVk
ZVN0YXRlIGluc3RhbmNlLgotICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdpdGgg
YW55IGVycm9ycyBmb3VuZC4KLSAgICAgIGlvOiBUaGUgSU8gZmFjdG9yeSB0byB1c2UgdG8gcmVh
ZCB0aGUgaGVhZGVyIGZpbGUuIFByb3ZpZGVkIGZvciB1bml0dGVzdAotICAgICAgICAgIGluamVj
dGlvbi4KLSAgICAiIiIKLSAgICByZXF1aXJlZCA9IHt9ICAjIEEgbWFwIG9mIGhlYWRlciBuYW1l
IHRvIGxpbmVfbnVtYmVyIGFuZCB0aGUgdGVtcGxhdGUgZW50aXR5LgotICAgICAgICAjIEV4YW1w
bGUgb2YgcmVxdWlyZWQ6IHsgJzxmdW5jdGlvbmFsPic6ICgxMjE5LCAnbGVzczw+JykgfQotCi0g
ICAgZm9yIGxpbmVfbnVtYmVyIGluIHhyYW5nZShjbGVhbl9saW5lcy5udW1fbGluZXMoKSk6Ci0g
ICAgICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCi0gICAgICAgIGlm
IG5vdCBsaW5lIG9yIGxpbmVbMF0gPT0gJyMnOgotICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICAjIFN0cmluZyBpcyBzcGVjaWFsIC0tIGl0IGlzIGEgbm9uLXRlbXBsYXRpemVkIHR5cGUg
aW4gU1RMLgotICAgICAgICBpZiBfUkVfUEFUVEVSTl9TVFJJTkcuc2VhcmNoKGxpbmUpOgotICAg
ICAgICAgICAgcmVxdWlyZWRbJzxzdHJpbmc+J10gPSAobGluZV9udW1iZXIsICdzdHJpbmcnKQot
Ci0gICAgICAgIGZvciBwYXR0ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9yZV9wYXR0ZXJuX2Fs
Z29yaXRobV9oZWFkZXI6Ci0gICAgICAgICAgICBpZiBwYXR0ZXJuLnNlYXJjaChsaW5lKToKLSAg
ICAgICAgICAgICAgICByZXF1aXJlZFtoZWFkZXJdID0gKGxpbmVfbnVtYmVyLCB0ZW1wbGF0ZSkK
LQotICAgICAgICAjIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMganVzdCBhIHNwZWVkIHVwLCBu
byBzZW1hbnRpY3MgYXJlIGNoYW5nZWQuCi0gICAgICAgIGlmIG5vdCAnPCcgaW4gbGluZTogICMg
UmVkdWNlcyB0aGUgY3B1IHRpbWUgdXNhZ2UgYnkgc2tpcHBpbmcgbGluZXMuCi0gICAgICAgICAg
ICBjb250aW51ZQotCi0gICAgICAgIGZvciBwYXR0ZXJuLCB0ZW1wbGF0ZSwgaGVhZGVyIGluIF9y
ZV9wYXR0ZXJuX3RlbXBsYXRlczoKLSAgICAgICAgICAgIGlmIHBhdHRlcm4uc2VhcmNoKGxpbmUp
OgotICAgICAgICAgICAgICAgIHJlcXVpcmVkW2hlYWRlcl0gPSAobGluZV9udW1iZXIsIHRlbXBs
YXRlKQotCi0gICAgIyBUaGUgcG9saWN5IGlzIHRoYXQgaWYgeW91ICNpbmNsdWRlIHNvbWV0aGlu
ZyBpbiBmb28uaCB5b3UgZG9uJ3QgbmVlZCB0bwotICAgICMgaW5jbHVkZSBpdCBhZ2FpbiBpbiBm
b28uY3BwLiBIZXJlLCB3ZSB3aWxsIGxvb2sgYXQgcG9zc2libGUgaW5jbHVkZXMuCi0gICAgIyBM
ZXQncyBjb3B5IHRoZSBpbmNsdWRlX3N0YXRlIHNvIGl0IGlzIG9ubHkgbWVzc2VkIHVwIHdpdGhp
biB0aGlzIGZ1bmN0aW9uLgotICAgIGluY2x1ZGVfc3RhdGUgPSBpbmNsdWRlX3N0YXRlLmNvcHko
KQotCi0gICAgIyBEaWQgd2UgZmluZCB0aGUgaGVhZGVyIGZvciB0aGlzIGZpbGUgKGlmIGFueSkg
YW5kIHN1Y2Nlc2Z1bGx5IGxvYWQgaXQ/Ci0gICAgaGVhZGVyX2ZvdW5kID0gRmFsc2UKLQotICAg
ICMgVXNlIHRoZSBhYnNvbHV0ZSBwYXRoIHNvIHRoYXQgbWF0Y2hpbmcgd29ya3MgcHJvcGVybHku
Ci0gICAgYWJzX2ZpbGVuYW1lID0gb3MucGF0aC5hYnNwYXRoKGZpbGVuYW1lKQotCi0gICAgIyBG
b3IgRW1hY3MncyBmbHltYWtlLgotICAgICMgSWYgY3BwbGludCBpcyBpbnZva2VkIGZyb20gRW1h
Y3MncyBmbHltYWtlLCBhIHRlbXBvcmFyeSBmaWxlIGlzIGdlbmVyYXRlZAotICAgICMgYnkgZmx5
bWFrZSBhbmQgdGhhdCBmaWxlIG5hbWUgbWlnaHQgZW5kIHdpdGggJ19mbHltYWtlLmNwcCcuIElu
IHRoYXQgY2FzZSwKLSAgICAjIHJlc3RvcmUgb3JpZ2luYWwgZmlsZSBuYW1lIGhlcmUgc28gdGhh
dCB0aGUgY29ycmVzcG9uZGluZyBoZWFkZXIgZmlsZSBjYW4gYmUKLSAgICAjIGZvdW5kLgotICAg
ICMgZS5nLiBJZiB0aGUgZmlsZSBuYW1lIGlzICdmb29fZmx5bWFrZS5jcHAnLCB3ZSBzaG91bGQg
c2VhcmNoIGZvciAnZm9vLmgnCi0gICAgIyBpbnN0ZWFkIG9mICdmb29fZmx5bWFrZS5oJwotICAg
IGVtYWNzX2ZseW1ha2Vfc3VmZml4ID0gJ19mbHltYWtlLmNwcCcKLSAgICBpZiBhYnNfZmlsZW5h
bWUuZW5kc3dpdGgoZW1hY3NfZmx5bWFrZV9zdWZmaXgpOgotICAgICAgICBhYnNfZmlsZW5hbWUg
PSBhYnNfZmlsZW5hbWVbOi1sZW4oZW1hY3NfZmx5bWFrZV9zdWZmaXgpXSArICcuY3BwJwotCi0g
ICAgIyBpbmNsdWRlX3N0YXRlIGlzIG1vZGlmaWVkIGR1cmluZyBpdGVyYXRpb24sIHNvIHdlIGl0
ZXJhdGUgb3ZlciBhIGNvcHkgb2YKLSAgICAjIHRoZSBrZXlzLgotICAgIGZvciBoZWFkZXIgaW4g
aW5jbHVkZV9zdGF0ZS5rZXlzKCk6ICAjTk9MSU5UCi0gICAgICAgIChzYW1lX21vZHVsZSwgY29t
bW9uX3BhdGgpID0gZmlsZXNfYmVsb25nX3RvX3NhbWVfbW9kdWxlKGFic19maWxlbmFtZSwgaGVh
ZGVyKQotICAgICAgICBmdWxscGF0aCA9IGNvbW1vbl9wYXRoICsgaGVhZGVyCi0gICAgICAgIGlm
IHNhbWVfbW9kdWxlIGFuZCB1cGRhdGVfaW5jbHVkZV9zdGF0ZShmdWxscGF0aCwgaW5jbHVkZV9z
dGF0ZSwgaW8pOgotICAgICAgICAgICAgaGVhZGVyX2ZvdW5kID0gVHJ1ZQotCi0gICAgIyBJZiB3
ZSBjYW4ndCBmaW5kIHRoZSBoZWFkZXIgZmlsZSBmb3IgYSAuY3BwLCBhc3N1bWUgaXQncyBiZWNh
dXNlIHdlIGRvbid0Ci0gICAgIyBrbm93IHdoZXJlIHRvIGxvb2suIEluIHRoYXQgY2FzZSB3ZSds
bCBnaXZlIHVwIGFzIHdlJ3JlIG5vdCBzdXJlIHRoZXkKLSAgICAjIGRpZG4ndCBpbmNsdWRlIGl0
IGluIHRoZSAuaCBmaWxlLgotICAgICMgRklYTUU6IERvIGEgYmV0dGVyIGpvYiBvZiBmaW5kaW5n
IC5oIGZpbGVzIHNvIHdlIGFyZSBjb25maWRlbnQgdGhhdAotICAgICMgICAgICAgIG5vdCBoYXZp
bmcgdGhlIC5oIGZpbGUgbWVhbnMgdGhlcmUgaXNuJ3Qgb25lLgotICAgIGlmIGZpbGVuYW1lLmVu
ZHN3aXRoKCcuY3BwJykgYW5kIG5vdCBoZWFkZXJfZm91bmQ6Ci0gICAgICAgIHJldHVybgotCi0g
ICAgIyBBbGwgdGhlIGxpbmVzIGhhdmUgYmVlbiBwcm9jZXNzZWQsIHJlcG9ydCB0aGUgZXJyb3Jz
IGZvdW5kLgotICAgIGZvciByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZCBpbiByZXF1aXJlZDoK
LSAgICAgICAgdGVtcGxhdGUgPSByZXF1aXJlZFtyZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZF1b
MV0KLSAgICAgICAgaWYgdGVtcGxhdGUgaW4gX0hFQURFUlNfQUNDRVBURURfQlVUX05PVF9QUk9N
T1RFRDoKLSAgICAgICAgICAgIGhlYWRlcnMgPSBfSEVBREVSU19BQ0NFUFRFRF9CVVRfTk9UX1BS
T01PVEVEW3RlbXBsYXRlXQotICAgICAgICAgICAgaWYgW1RydWUgZm9yIGhlYWRlciBpbiBoZWFk
ZXJzIGlmIGhlYWRlciBpbiBpbmNsdWRlX3N0YXRlXToKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICBpZiByZXF1aXJlZF9oZWFkZXJfdW5zdHJpcHBlZC5zdHJpcCgnPD4iJykgbm90
IGluIGluY2x1ZGVfc3RhdGU6Ci0gICAgICAgICAgICBlcnJvcihmaWxlbmFtZSwgcmVxdWlyZWRb
cmVxdWlyZWRfaGVhZGVyX3Vuc3RyaXBwZWRdWzBdLAotICAgICAgICAgICAgICAgICAgJ2J1aWxk
L2luY2x1ZGVfd2hhdF95b3VfdXNlJywgNCwKLSAgICAgICAgICAgICAgICAgICdBZGQgI2luY2x1
ZGUgJyArIHJlcXVpcmVkX2hlYWRlcl91bnN0cmlwcGVkICsgJyBmb3IgJyArIHRlbXBsYXRlKQot
Ci0KLWRlZiBwcm9jZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLAotICAgICAgICAg
ICAgICAgICBjbGVhbl9saW5lcywgbGluZSwgaW5jbHVkZV9zdGF0ZSwgZnVuY3Rpb25fc3RhdGUs
Ci0gICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcik6Ci0gICAgIiIiUHJvY2Vzc2Vz
IGEgc2luZ2xlIGxpbmUgaW4gdGhlIGZpbGUuCi0KLSAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6
IEZpbGVuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgotICAgICAgZmls
ZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9mIHRoZSBmaWxl
LgotICAgICAgY2xlYW5fbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVzZW50
aW5nIGEgbGluZSBvZiB0aGUgZmlsZSwKLSAgICAgICAgICAgICAgICAgICB3aXRoIGNvbW1lbnRz
IHN0cmlwcGVkLgotICAgICAgbGluZTogTnVtYmVyIG9mIGxpbmUgYmVpbmcgcHJvY2Vzc2VkLgot
ICAgICAgaW5jbHVkZV9zdGF0ZTogQW4gX0luY2x1ZGVTdGF0ZSBpbnN0YW5jZSBpbiB3aGljaCB0
aGUgaGVhZGVycyBhcmUgaW5zZXJ0ZWQuCi0gICAgICBmdW5jdGlvbl9zdGF0ZTogQSBfRnVuY3Rp
b25TdGF0ZSBpbnN0YW5jZSB3aGljaCBjb3VudHMgZnVuY3Rpb24gbGluZXMsIGV0Yy4KLSAgICAg
IGNsYXNzX3N0YXRlOiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNoIG1haW50YWlucyBpbmZv
cm1hdGlvbiBhYm91dAotICAgICAgICAgICAgICAgICAgIHRoZSBjdXJyZW50IHN0YWNrIG9mIG5l
c3RlZCBjbGFzcyBkZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAgICAgZXJyb3I6IEEgY2Fs
bGFibGUgdG8gd2hpY2ggZXJyb3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgNCBhcmd1bWVu
dHM6Ci0gICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBlcnJvciBsZXZlbCwgYW5k
IG1lc3NhZ2UKLQotICAgICIiIgotICAgIHJhd19saW5lcyA9IGNsZWFuX2xpbmVzLnJhd19saW5l
cwotICAgIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywg
bGluZSwgZnVuY3Rpb25fc3RhdGUsIGVycm9yKQotICAgIGlmIHNlYXJjaChyJ1xiTk9MSU5UXGIn
LCByYXdfbGluZXNbbGluZV0pOiAgIyBpZ25vcmUgbm9saW50IGxpbmVzCi0gICAgICAgIHJldHVy
bgotICAgIGNoZWNrX2Zvcl9tdWx0aWxpbmVfY29tbWVudHNfYW5kX3N0cmluZ3MoZmlsZW5hbWUs
IGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKLSAgICBjaGVja19zdHlsZShmaWxlbmFtZSwgY2xl
YW5fbGluZXMsIGxpbmUsIGZpbGVfZXh0ZW5zaW9uLCBlcnJvcikKLSAgICBjaGVja19sYW5ndWFn
ZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3N0
YXRlLAotICAgICAgICAgICAgICAgICAgIGVycm9yKQotICAgIGNoZWNrX2Zvcl9ub25fc3RhbmRh
cmRfY29uc3RydWN0cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcikKLSAgICBjaGVja19w
b3NpeF90aHJlYWRpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKLSAgICBj
aGVja19pbnZhbGlkX2luY3JlbWVudChmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmUsIGVycm9y
KQotCi0KLWRlZiBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxp
bmVzLCBlcnJvcik6Ci0gICAgIiIiUGVyZm9ybXMgbGludCBjaGVja3MgYW5kIHJlcG9ydHMgYW55
IGVycm9ycyB0byB0aGUgZ2l2ZW4gZXJyb3IgZnVuY3Rpb24uCi0KLSAgICBBcmdzOgotICAgICAg
ZmlsZW5hbWU6IEZpbGVuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkLgot
ICAgICAgZmlsZV9leHRlbnNpb246IFRoZSBleHRlbnNpb24gKGRvdCBub3QgaW5jbHVkZWQpIG9m
IHRoZSBmaWxlLgotICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVz
ZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZSwgd2l0aCB0aGUKLSAgICAgICAgICAgICBsYXN0IGVs
ZW1lbnQgYmVpbmcgZW1wdHkgaWYgdGhlIGZpbGUgaXMgdGVybWluZWQgd2l0aCBhIG5ld2xpbmUu
Ci0gICAgICBlcnJvcjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3
aGljaCB0YWtlcyA0IGFyZ3VtZW50czoKLSAgICAiIiIKLSAgICBsaW5lcyA9IChbJy8vIG1hcmtl
ciBzbyBsaW5lIG51bWJlcnMgYW5kIGluZGljZXMgYm90aCBzdGFydCBhdCAxJ10gKyBsaW5lcyAr
Ci0gICAgICAgICAgICAgWycvLyBtYXJrZXIgc28gbGluZSBudW1iZXJzIGVuZCBpbiBhIGtub3du
IHdheSddKQotCi0gICAgaW5jbHVkZV9zdGF0ZSA9IF9JbmNsdWRlU3RhdGUoKQotICAgIGZ1bmN0
aW9uX3N0YXRlID0gX0Z1bmN0aW9uU3RhdGUoKQotICAgIGNsYXNzX3N0YXRlID0gX0NsYXNzU3Rh
dGUoKQotCi0gICAgY2hlY2tfZm9yX2NvcHlyaWdodChmaWxlbmFtZSwgbGluZXMsIGVycm9yKQot
Ci0gICAgaWYgZmlsZV9leHRlbnNpb24gPT0gJ2gnOgotICAgICAgICBjaGVja19mb3JfaGVhZGVy
X2d1YXJkKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCi0KLSAgICByZW1vdmVfbXVsdGlfbGluZV9j
b21tZW50cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKQotICAgIGNsZWFuX2xpbmVzID0gQ2xlYW5z
ZWRMaW5lcyhsaW5lcykKLSAgICBmb3IgbGluZSBpbiB4cmFuZ2UoY2xlYW5fbGluZXMubnVtX2xp
bmVzKCkpOgotICAgICAgICBwcm9jZXNzX2xpbmUoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBj
bGVhbl9saW5lcywgbGluZSwKLSAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfc3RhdGUsIGZ1
bmN0aW9uX3N0YXRlLCBjbGFzc19zdGF0ZSwgZXJyb3IpCi0gICAgY2xhc3Nfc3RhdGUuY2hlY2tf
ZmluaXNoZWQoZmlsZW5hbWUsIGVycm9yKQotCi0gICAgY2hlY2tfZm9yX2luY2x1ZGVfd2hhdF95
b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5jbHVkZV9zdGF0ZSwgZXJyb3IpCi0KLSAg
ICAjIFdlIGNoZWNrIGhlcmUgcmF0aGVyIHRoYW4gaW5zaWRlIHByb2Nlc3NfbGluZSBzbyB0aGF0
IHdlIHNlZSByYXcKLSAgICAjIGxpbmVzIHJhdGhlciB0aGFuICJjbGVhbmVkIiBsaW5lcy4KLSAg
ICBjaGVja19mb3JfdW5pY29kZV9yZXBsYWNlbWVudF9jaGFyYWN0ZXJzKGZpbGVuYW1lLCBsaW5l
cywgZXJyb3IpCi0KLSAgICBjaGVja19mb3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5l
cywgZXJyb3IpCi0KLQotZGVmIHByb2Nlc3NfZmlsZShmaWxlbmFtZSwgZXJyb3I9ZXJyb3IpOgot
ICAgICIiIlBlcmZvcm1zIGNwcGxpbnQgb24gYSBzaW5nbGUgZmlsZS4KLQotICAgIEFyZ3M6Ci0g
ICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcGFyc2UuCi0gICAgICBlcnJv
cjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgotICAgICIiIgot
ICAgIHRyeToKLSAgICAgICAgIyBTdXBwb3J0IHRoZSBVTklYIGNvbnZlbnRpb24gb2YgdXNpbmcg
Ii0iIGZvciBzdGRpbi4gIE5vdGUgdGhhdAotICAgICAgICAjIHdlIGFyZSBub3Qgb3BlbmluZyB0
aGUgZmlsZSB3aXRoIHVuaXZlcnNhbCBuZXdsaW5lIHN1cHBvcnQKLSAgICAgICAgIyAod2hpY2gg
Y29kZWNzIGRvZXNuJ3Qgc3VwcG9ydCBhbnl3YXkpLCBzbyB0aGUgcmVzdWx0aW5nIGxpbmVzIGRv
Ci0gICAgICAgICMgY29udGFpbiB0cmFpbGluZyAnXHInIGNoYXJhY3RlcnMgaWYgd2UgYXJlIHJl
YWRpbmcgYSBmaWxlIHRoYXQKLSAgICAgICAgIyBoYXMgQ1JMRiBlbmRpbmdzLgotICAgICAgICAj
IElmIGFmdGVyIHRoZSBzcGxpdCBhIHRyYWlsaW5nICdccicgaXMgcHJlc2VudCwgaXQgaXMgcmVt
b3ZlZAotICAgICAgICAjIGJlbG93LiBJZiBpdCBpcyBub3QgZXhwZWN0ZWQgdG8gYmUgcHJlc2Vu
dCAoaS5lLiBvcy5saW5lc2VwICE9Ci0gICAgICAgICMgJ1xyXG4nIGFzIGluIFdpbmRvd3MpLCBh
IHdhcm5pbmcgaXMgaXNzdWVkIGJlbG93IGlmIHRoaXMgZmlsZQotICAgICAgICAjIGlzIHByb2Nl
c3NlZC4KLQotICAgICAgICBpZiBmaWxlbmFtZSA9PSAnLSc6Ci0gICAgICAgICAgICBsaW5lcyA9
IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGluLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0ZjgnKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3Jp
dGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3JlcGxhY2UnKS5yZWFkKCkuc3BsaXQoJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGxpbmVzID0gY29kZWNzLm9wZW4oZmlsZW5hbWUsICdyJywgJ3V0ZjgnLCAncmVwbGFjZScp
LnJlYWQoKS5zcGxpdCgnXG4nKQotCi0gICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9IEZh
bHNlCi0gICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nICdccicuCi0gICAgICAgIGZvciBsaW5lX251
bWJlciBpbiByYW5nZShsZW4obGluZXMpKToKLSAgICAgICAgICAgIGlmIGxpbmVzW2xpbmVfbnVt
YmVyXS5lbmRzd2l0aCgnXHInKToKLSAgICAgICAgICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0g
PSBsaW5lc1tsaW5lX251bWJlcl0ucnN0cmlwKCdccicpCi0gICAgICAgICAgICAgICAgY2Fycmlh
Z2VfcmV0dXJuX2ZvdW5kID0gVHJ1ZQotCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHN5
cy5zdGRlcnIud3JpdGUoCi0gICAgICAgICAgICAiU2tpcHBpbmcgaW5wdXQgJyVzJzogQ2FuJ3Qg
b3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVuYW1lKQotICAgICAgICByZXR1cm4KLQotICAgICMg
Tm90ZSwgaWYgbm8gZG90IGlzIGZvdW5kLCB0aGlzIHdpbGwgZ2l2ZSB0aGUgZW50aXJlIGZpbGVu
YW1lIGFzIHRoZSBleHQuCi0gICAgZmlsZV9leHRlbnNpb24gPSBmaWxlbmFtZVtmaWxlbmFtZS5y
ZmluZCgnLicpICsgMTpdCi0KLSAgICAjIFdoZW4gcmVhZGluZyBmcm9tIHN0ZGluLCB0aGUgZXh0
ZW5zaW9uIGlzIHVua25vd24sIHNvIG5vIGNwcGxpbnQgdGVzdHMKLSAgICAjIHNob3VsZCByZWx5
IG9uIHRoZSBleHRlbnNpb24uCi0gICAgaWYgKGZpbGVuYW1lICE9ICctJyBhbmQgZmlsZV9leHRl
bnNpb24gIT0gJ2gnIGFuZCBmaWxlX2V4dGVuc2lvbiAhPSAnY3BwJwotICAgICAgICBhbmQgZmls
ZV9leHRlbnNpb24gIT0gJ2MnKToKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSWdub3Jpbmcg
JXM7IG5vdCBhIC5jcHAsIC5jIG9yIC5oIGZpbGVcbicgJSBmaWxlbmFtZSkKLSAgICBlbHNlOgot
ICAgICAgICBwcm9jZXNzX2ZpbGVfZGF0YShmaWxlbmFtZSwgZmlsZV9leHRlbnNpb24sIGxpbmVz
LCBlcnJvcikKLSAgICAgICAgaWYgY2FycmlhZ2VfcmV0dXJuX2ZvdW5kIGFuZCBvcy5saW5lc2Vw
ICE9ICdcclxuJzoKLSAgICAgICAgICAgICMgVXNlIDAgZm9yIGxpbmVfbnVtYmVyIHNpbmNlIG91
dHB1dGluZyBvbmx5IG9uZSBlcnJvciBmb3IgcG90ZW50aWFsbHkKLSAgICAgICAgICAgICMgc2V2
ZXJhbCBsaW5lcy4KLSAgICAgICAgICAgIGVycm9yKGZpbGVuYW1lLCAwLCAnd2hpdGVzcGFjZS9u
ZXdsaW5lJywgMSwKLSAgICAgICAgICAgICAgICAgICdPbmUgb3IgbW9yZSB1bmV4cGVjdGVkIFxc
ciAoXk0pIGZvdW5kOycKLSAgICAgICAgICAgICAgICAgICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBc
XG4nKQotCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnRG9uZSBwcm9jZXNzaW5nICVzXG4nICUgZmls
ZW5hbWUpCi0KLQotZGVmIHByaW50X3VzYWdlKG1lc3NhZ2UpOgotICAgICIiIlByaW50cyBhIGJy
aWVmIHVzYWdlIHN0cmluZyBhbmQgZXhpdHMsIG9wdGlvbmFsbHkgd2l0aCBhbiBlcnJvciBtZXNz
YWdlLgotCi0gICAgQXJnczoKLSAgICAgIG1lc3NhZ2U6IFRoZSBvcHRpb25hbCBlcnJvciBtZXNz
YWdlLgotICAgICIiIgotICAgIHN5cy5zdGRlcnIud3JpdGUoX1VTQUdFKQotICAgIGlmIG1lc3Nh
Z2U6Ci0gICAgICAgIHN5cy5leGl0KCdcbkZBVEFMIEVSUk9SOiAnICsgbWVzc2FnZSkKLSAgICBl
bHNlOgotICAgICAgICBzeXMuZXhpdCgxKQotCi0KLWRlZiBwcmludF9jYXRlZ29yaWVzKCk6Ci0g
ICAgIiIiUHJpbnRzIGEgbGlzdCBvZiBhbGwgdGhlIGVycm9yLWNhdGVnb3JpZXMgdXNlZCBieSBl
cnJvciBtZXNzYWdlcy4KLQotICAgIFRoZXNlIGFyZSB0aGUgY2F0ZWdvcmllcyB1c2VkIHRvIGZp
bHRlciBtZXNzYWdlcyB2aWEgLS1maWx0ZXIuCi0gICAgIiIiCi0gICAgc3lzLnN0ZGVyci53cml0
ZShfRVJST1JfQ0FURUdPUklFUykKLSAgICBzeXMuZXhpdCgwKQotCi0KLWRlZiBwYXJzZV9hcmd1
bWVudHMoYXJncywgYWRkaXRpb25hbF9mbGFncz1bXSk6Ci0gICAgIiIiUGFyc2VzIHRoZSBjb21t
YW5kIGxpbmUgYXJndW1lbnRzLgotCi0gICAgVGhpcyBtYXkgc2V0IHRoZSBvdXRwdXQgZm9ybWF0
IGFuZCB2ZXJib3NpdHkgbGV2ZWwgYXMgc2lkZS1lZmZlY3RzLgotCi0gICAgQXJnczoKLSAgICAg
IGFyZ3M6IFRoZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzOgotICAgICAgYWRkaXRpb25hbF9mbGFn
czogQSBsaXN0IG9mIHN0cmluZ3Mgd2hpY2ggc3BlY2lmaWVzIGZsYWdzIHdlIGFsbG93LgotCi0g
ICAgUmV0dXJuczoKLSAgICAgIEEgdHVwbGUgb2YgKGZpbGVuYW1lcywgZmxhZ3MpCi0KLSAgICAg
IGZpbGVuYW1lczogVGhlIGxpc3Qgb2YgZmlsZW5hbWVzIHRvIGxpbnQuCi0gICAgICBmbGFnczog
VGhlIGRpY3Qgb2YgdGhlIGZsYWcgbmFtZXMgYW5kIHRoZSBmbGFnIHZhbHVlcy4KLSAgICAiIiIK
LSAgICBmbGFncyA9IFsnaGVscCcsICdvdXRwdXQ9JywgJ3ZlcmJvc2U9JywgJ2ZpbHRlcj0nXSAr
IGFkZGl0aW9uYWxfZmxhZ3MKLSAgICBhZGRpdGlvbmFsX2ZsYWdfdmFsdWVzID0ge30KLSAgICB0
cnk6Ci0gICAgICAgIChvcHRzLCBmaWxlbmFtZXMpID0gZ2V0b3B0LmdldG9wdChhcmdzLCAnJywg
ZmxhZ3MpCi0gICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoKLSAgICAgICAgcHJpbnRfdXNh
Z2UoJ0ludmFsaWQgYXJndW1lbnRzLicpCi0KLSAgICB2ZXJib3NpdHkgPSBfdmVyYm9zZV9sZXZl
bCgpCi0gICAgb3V0cHV0X2Zvcm1hdCA9IF9vdXRwdXRfZm9ybWF0KCkKLSAgICBmaWx0ZXJzID0g
JycKLQotICAgIGZvciAob3B0LCB2YWwpIGluIG9wdHM6Ci0gICAgICAgIGlmIG9wdCA9PSAnLS1o
ZWxwJzoKLSAgICAgICAgICAgIHByaW50X3VzYWdlKE5vbmUpCi0gICAgICAgIGVsaWYgb3B0ID09
ICctLW91dHB1dCc6Ci0gICAgICAgICAgICBpZiBub3QgdmFsIGluICgnZW1hY3MnLCAndnM3Jyk6
Ci0gICAgICAgICAgICAgICAgcHJpbnRfdXNhZ2UoJ1RoZSBvbmx5IGFsbG93ZWQgb3V0cHV0IGZv
cm1hdHMgYXJlIGVtYWNzIGFuZCB2czcuJykKLSAgICAgICAgICAgIG91dHB1dF9mb3JtYXQgPSB2
YWwKLSAgICAgICAgZWxpZiBvcHQgPT0gJy0tdmVyYm9zZSc6Ci0gICAgICAgICAgICB2ZXJib3Np
dHkgPSBpbnQodmFsKQotICAgICAgICBlbGlmIG9wdCA9PSAnLS1maWx0ZXInOgotICAgICAgICAg
ICAgZmlsdGVycyA9IHZhbAotICAgICAgICAgICAgaWYgbm90IGZpbHRlcnM6Ci0gICAgICAgICAg
ICAgICAgcHJpbnRfY2F0ZWdvcmllcygpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhZGRp
dGlvbmFsX2ZsYWdfdmFsdWVzW29wdF0gPSB2YWwKLQotICAgIF9zZXRfb3V0cHV0X2Zvcm1hdChv
dXRwdXRfZm9ybWF0KQotICAgIF9zZXRfdmVyYm9zZV9sZXZlbCh2ZXJib3NpdHkpCi0gICAgX3Nl
dF9maWx0ZXJzKGZpbHRlcnMpCi0KLSAgICByZXR1cm4gKGZpbGVuYW1lcywgYWRkaXRpb25hbF9m
bGFnX3ZhbHVlcykKLQotCi1kZWYgdXNlX3dlYmtpdF9zdHlsZXMoKToKLSAgICAiIiJEaXNhYmxl
cyBzb21lIGZlYXR1cmVzIHdoaWNoIGFyZSBub3Qgc3VpdGFibGUgZm9yIFdlYktpdC4iIiIKLSAg
ICAjIEZJWE1FOiBGb3IgZmlsdGVycyB3ZSB3aWxsIG5ldmVyIHdhbnQgdG8gaGF2ZSwgcmVtb3Zl
IHRoZW0uCi0gICAgIyAgICAgICAgRm9yIGZpbHRlcnMgd2Ugd2FudCB0byBoYXZlIHNpbWlsYXIg
ZnVuY3Rpb25hbGl0aWVzLAotICAgICMgICAgICAgIG1vZGlmeSB0aGUgaW1wbGVtZW50YXRpb24g
YW5kIGVuYWJsZSB0aGVtLgotICAgIGdsb2JhbCBfREVGQVVMVF9GSUxURVJTCi0gICAgX0RFRkFV
TFRfRklMVEVSUyA9IFsKLSAgICAgICAgJy13aGl0ZXNwYWNlL2NvbW1lbnRzJywKLSAgICAgICAg
Jy13aGl0ZXNwYWNlL2JsYW5rX2xpbmUnLAotICAgICAgICAnLXJ1bnRpbWUvZXhwbGljaXQnLCAg
IyBleHBsaWNpdAotICAgICAgICAnLXJ1bnRpbWUvdmlydHVhbCcsICAjIHZpcnR1YWwgZHRvcgot
ICAgICAgICAnLXJ1bnRpbWUvcHJpbnRmJywKLSAgICAgICAgJy1ydW50aW1lL3RocmVhZHNhZmVf
Zm4nLAotICAgICAgICAnLXJ1bnRpbWUvcnR0aScsCi0gICAgICAgICctYnVpbGQvaW5jbHVkZV93
aGF0X3lvdV91c2UnLCAgIyA8c3RyaW5nPiBmb3Igc3RkOjpzdHJpbmcKLSAgICAgICAgJy1sZWdh
bC9jb3B5cmlnaHQnLAotICAgICAgICAnLXJlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50JywK
LSAgICAgICAgJy1yZWFkYWJpbGl0eS9icmFjZXMnLCAgIyBpbnQgZm9vKCkge307Ci0gICAgICAg
ICctcmVhZGFiaWxpdHkvZm5fc2l6ZScsCi0gICAgICAgICctYnVpbGQvc3RvcmFnZV9jbGFzcycs
ICAjIGNvbnN0IHN0YXRpYwotICAgICAgICAnLWJ1aWxkL2VuZGlmX2NvbW1lbnQnLAotICAgICAg
ICAnLXdoaXRlc3BhY2UvbGFiZWxzJywKLSAgICAgICAgJy1ydW50aW1lL2FycmF5cycsICAjIHZh
cmlhYmxlIGxlbmd0aCBhcnJheQotICAgICAgICAnLWJ1aWxkL2hlYWRlcl9ndWFyZCcsCi0gICAg
ICAgICctcmVhZGFiaWxpdHkvY2FzdGluZycsCi0gICAgICAgICctcmVhZGFiaWxpdHkvZnVuY3Rp
b24nLAotICAgICAgICAnLXJ1bnRpbWUvY2FzdGluZycsCi0gICAgICAgICctcnVudGltZS9zaXpl
b2YnLAotICAgIF0KLQotCi1kZWYgbWFpbigpOgotICAgIHN5cy5zdGRlcnIud3JpdGUoCi0gICAg
ICAgICcnJyoqKioqKioqKioqKioqKioqKioqKiBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyAqKioq
KioqKioqKioqKioqKioqKioKLQotVGhpcyB0b29sIGlzIGluIHRoZSBwcm9jZXNzIG9mIGRldmVs
b3BtZW50IGFuZCBtYXkgZ2l2ZSBpbmFjY3VyYXRlCi1yZXN1bHRzIGF0IHByZXNlbnQuICBQbGVh
c2UgZmlsZSBidWdzIChhbmQvb3IgcGF0Y2hlcykgZm9yIHRoaW5ncwotdGhhdCB5b3Ugbm90aWNl
IHRoYXQgaXQgZmxhZ3MgaW5jb3JyZWN0bHkuCi0KLSoqKioqKioqKioqKioqKioqKioqKiBXQVJO
SU5HIFdBUk5JTkcgV0FSTklORyAqKioqKioqKioqKioqKioqKioqKioKLQotJycnKQotCi0gICAg
dXNlX3dlYmtpdF9zdHlsZXMoKQotCi0gICAgKGZpbGVuYW1lcywgZmxhZ3MpID0gcGFyc2VfYXJn
dW1lbnRzKHN5cy5hcmd2WzE6XSkKLSAgICBpZiBub3QgZmlsZW5hbWVzOgotICAgICAgICBwcmlu
dF91c2FnZSgnTm8gZmlsZXMgd2VyZSBzcGVjaWZpZWQuJykKLQotICAgICMgQ2hhbmdlIHN0ZGVy
ciB0byB3cml0ZSB3aXRoIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgc28gd2UgZG9uJ3QgZGllCi0g
ICAgIyBpZiB3ZSB0cnkgdG8gcHJpbnQgc29tZXRoaW5nIGNvbnRhaW5pbmcgbm9uLUFTQ0lJIGNo
YXJhY3RlcnMuCi0gICAgc3lzLnN0ZGVyciA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lz
LnN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2Rl
Y3MuZ2V0cmVhZGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29kZWNzLmdldHdyaXRlcigndXRmOCcpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlJykKLQotICAgIF9jcHBsaW50X3N0YXRlLnJl
c2V0X2Vycm9yX2NvdW50KCkKLSAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgotICAgICAg
ICBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUpCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJy
b3JzIGZvdW5kOiAlZFxuJyAlIF9jcHBsaW50X3N0YXRlLmVycm9yX2NvdW50KQotICAgIHN5cy5l
eGl0KF9jcHBsaW50X3N0YXRlLmVycm9yX2NvdW50ID4gMCkKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9t
b2R1bGVzL2NwcGxpbnRfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMv
Y3BwbGludF91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNkMDUx
Mi4uMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL21vZHVsZXMvY3BwbGludF91bml0
dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDM0MzkgKzAsMCBAQAotIyEvdXNyL2Jpbi9weXRo
b24KLSMgLSotIGNvZGluZzogdXRmLTg7IC0qLQotIwotIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNo
IE1vYmlsZSBJbmMuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJVbml0IHRlc3QgZm9yIGNwcGxpbnQu
cHkuIiIiCi0KLSMgRklYTUU6IEFkZCBhIGdvb2QgdGVzdCB0aGF0IHRlc3RzIFVwZGF0ZUluY2x1
ZGVTdGF0ZS4KLQotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBv
cnQgcmUKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IGNwcGxpbnQKLQotCi0jIFRoaXMgY2xhc3Mg
d29ya3MgYXMgYW4gZXJyb3IgY29sbGVjdG9yIGFuZCByZXBsYWNlcyBjcHBsaW50LkVycm9yCi0j
IGZ1bmN0aW9uIGZvciB0aGUgdW5pdCB0ZXN0cy4gIFdlIGFsc28gdmVyaWZ5IGVhY2ggY2F0ZWdv
cnkgd2Ugc2VlCi0jIGlzIGluIGNwcGxpbnQuX0VSUk9SX0NBVEVHT1JJRVMsIHRvIGhlbHAga2Vl
cCB0aGF0IGxpc3QgdXAgdG8gZGF0ZS4KLWNsYXNzIEVycm9yQ29sbGVjdG9yOgotICAgICMgVGhl
c2UgYXJlIGEgZ2xvYmFsIGxpc3QsIGNvdmVyaW5nIGFsbCBjYXRlZ29yaWVzIHNlZW4gZXZlci4K
LSAgICBfRVJST1JfQ0FURUdPUklFUyA9IFt4LnN0cmlwKCkgICAgIyBnZXQgcmlkIG9mIGxlYWRp
bmcgd2hpdGVzcGFjZQotICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGNwcGxpbnQu
X0VSUk9SX0NBVEVHT1JJRVMuc3BsaXQoKV0KLSAgICBfU0VFTl9FUlJPUl9DQVRFR09SSUVTID0g
e30KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhc3NlcnRfZm4pOgotICAgICAgICAiIiJhc3Nl
cnRfZm46IGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHdlIG5vdGljZSBhIHByb2JsZW0uIiIiCi0g
ICAgICAgIHNlbGYuX2Fzc2VydF9mbiA9IGFzc2VydF9mbgotICAgICAgICBzZWxmLl9lcnJvcnMg
PSBbXQotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHVudXNlZF9maWxlbmFtZSwgdW51c2VkX2xp
bmVudW0sCi0gICAgICAgICAgICAgICAgIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToK
LSAgICAgICAgc2VsZi5fYXNzZXJ0X2ZuKGNhdGVnb3J5IGluIHNlbGYuX0VSUk9SX0NBVEVHT1JJ
RVMsCi0gICAgICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZSAiJXMiIGhhcyBjYXRlZ29yeSAi
JXMiLCcKLSAgICAgICAgICAgICAgICAgICAgICAgICcgd2hpY2ggaXMgbm90IGluIF9FUlJPUl9D
QVRFR09SSUVTJyAlIChtZXNzYWdlLCBjYXRlZ29yeSkpCi0gICAgICAgIHNlbGYuX1NFRU5fRVJS
T1JfQ0FURUdPUklFU1tjYXRlZ29yeV0gPSAxCi0gICAgICAgIGlmIGNwcGxpbnQuX3Nob3VsZF9w
cmludF9lcnJvcihjYXRlZ29yeSwgY29uZmlkZW5jZSk6Ci0gICAgICAgICAgICBzZWxmLl9lcnJv
cnMuYXBwZW5kKCclcyAgWyVzXSBbJWRdJyAlIChtZXNzYWdlLCBjYXRlZ29yeSwgY29uZmlkZW5j
ZSkpCi0KLSAgICBkZWYgcmVzdWx0cyhzZWxmKToKLSAgICAgICAgaWYgbGVuKHNlbGYuX2Vycm9y
cykgPCAyOgotICAgICAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5fZXJyb3JzKSAgIyBNb3N0
IHRlc3RzIGV4cGVjdCB0byBoYXZlIGEgc3RyaW5nLgotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX2Vycm9ycyAgIyBMZXQncyBnaXZlIGEgbGlzdCBpZiB0aGVyZSBpcyBt
b3JlIHRoYW4gb25lLgotCi0gICAgZGVmIHJlc3VsdF9saXN0KHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi5fZXJyb3JzCi0KLSAgICBkZWYgdmVyaWZ5X2FsbF9jYXRlZ29yaWVzX2FyZV9zZWVu
KHNlbGYpOgotICAgICAgICAiIiJGYWlscyBpZiB0aGVyZSdzIGEgY2F0ZWdvcnkgaW4gX0VSUk9S
X0NBVEVHT1JJRVMgLSBfU0VFTl9FUlJPUl9DQVRFR09SSUVTLgotCi0gICAgICAgIFRoaXMgc2hv
dWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGFsbCB0ZXN0cyBhcmUgcnVuLCBzbwotICAgICAgICBf
U0VFTl9FUlJPUl9DQVRFR09SSUVTIGhhcyBoYWQgYSBjaGFuY2UgdG8gZnVsbHkgcG9wdWxhdGUu
ICBTaW5jZQotICAgICAgICB0aGlzIGlzbid0IGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgbm9ybWFs
IHVuaXR0ZXN0IGZyYW1ld29yaywgd2UKLSAgICAgICAgY2FuJ3QgdXNlIHRoZSBub3JtYWwgdW5p
dHRlc3QgYXNzZXJ0IG1hY3Jvcy4gIEluc3RlYWQgd2UganVzdCBleGl0Ci0gICAgICAgIHdoZW4g
d2Ugc2VlIGFuIGVycm9yLiAgR29vZCB0aGluZyB0aGlzIHRlc3QgaXMgYWx3YXlzIHJ1biBsYXN0
IQotICAgICAgICAiIiIKLSAgICAgICAgZm9yIGNhdGVnb3J5IGluIHNlbGYuX0VSUk9SX0NBVEVH
T1JJRVM6Ci0gICAgICAgICAgICBpZiBjYXRlZ29yeSBub3QgaW4gc2VsZi5fU0VFTl9FUlJPUl9D
QVRFR09SSUVTOgotICAgICAgICAgICAgICAgIGltcG9ydCBzeXMKLSAgICAgICAgICAgICAgICBz
eXMuZXhpdCgnRkFUQUwgRVJST1I6IFRoZXJlIGFyZSBubyB0ZXN0cyBmb3IgY2F0ZWdvcnkgIiVz
IicgJSBjYXRlZ29yeSkKLQotICAgIGRlZiByZW1vdmVfaWZfcHJlc2VudChzZWxmLCBzdWJzdHIp
OgotICAgICAgICBmb3IgKGluZGV4LCBlcnJvcikgaW4gZW51bWVyYXRlKHNlbGYuX2Vycm9ycyk6
Ci0gICAgICAgICAgICBpZiBlcnJvci5maW5kKHN1YnN0cikgIT0gLTE6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fZXJyb3JzID0gc2VsZi5fZXJyb3JzWzA6aW5kZXhdICsgc2VsZi5fZXJyb3JzWyhp
bmRleCArIDEpOl0KLSAgICAgICAgICAgICAgICBicmVhawotCi0KLSMgVGhpcyBjbGFzcyBpcyBh
IGxhbWUgbW9jayBvZiBjb2RlY3MuIFdlIGRvIG5vdCB2ZXJpZnkgZmlsZW5hbWUsIG1vZGUsIG9y
Ci0jIGVuY29kaW5nLCBidXQgZm9yIHRoZSBjdXJyZW50IHVzZSBjYXNlIGl0IGlzIG5vdCBuZWVk
ZWQuCi1jbGFzcyBNb2NrSW86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1vY2tfZmlsZSk6Ci0g
ICAgICAgIHNlbGYubW9ja19maWxlID0gbW9ja19maWxlCi0KLSAgICBkZWYgb3BlbihzZWxmLCB1
bnVzZWRfZmlsZW5hbWUsIHVudXNlZF9tb2RlLCB1bnVzZWRfZW5jb2RpbmcsIF8pOiAgIyBOT0xJ
TlQKLSAgICAgICAgIyAobGludCBkb2Vzbid0IGxpa2Ugb3BlbiBhcyBhIG1ldGhvZCBuYW1lKQot
ICAgICAgICByZXR1cm4gc2VsZi5tb2NrX2ZpbGUKLQotCi1jbGFzcyBDcHBsaW50VGVzdEJhc2Uo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlByb3ZpZGVzIHNvbWUgdXNlZnVsIGhlbHBlciBm
dW5jdGlvbnMgZm9yIGNwcGxpbnQgdGVzdHMuIiIiCi0KLSAgICAjIFBlcmZvcm0gbGludCBvbiBz
aW5nbGUgbGluZSBvZiBpbnB1dCBhbmQgcmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgotICAgIGRl
ZiBwZXJmb3JtX3NpbmdsZV9saW5lX2xpbnQoc2VsZiwgY29kZSwgZmlsZV9uYW1lKToKLSAgICAg
ICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAg
ICBsaW5lcyA9IGNvZGUuc3BsaXQoJ1xuJykKLSAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlf
bGluZV9jb21tZW50cyhmaWxlX25hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
IGNsZWFuX2xpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBpbmNs
dWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKLSAgICAgICAgZnVuY3Rpb25fc3Rh
dGUgPSBjcHBsaW50Ll9GdW5jdGlvblN0YXRlKCkKLSAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2Zp
bGVfbmFtZS5yZmluZCgnLicpICsgMTpdCi0gICAgICAgIGNsYXNzX3N0YXRlID0gY3BwbGludC5f
Q2xhc3NTdGF0ZSgpCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19saW5lKGZpbGVfbmFtZSwgZXh0
LCBjbGVhbl9saW5lcywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9z
dGF0ZSwgZnVuY3Rpb25fc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNz
X3N0YXRlLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgICMgU2luZ2xlLWxpbmUgbGludCB0ZXN0
cyBhcmUgYWxsb3dlZCB0byBmYWlsIHRoZSAndW5saW50YWJsZSBmdW5jdGlvbicKLSAgICAgICAg
IyBjaGVjay4KLSAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlbW92ZV9pZl9wcmVzZW50KAotICAg
ICAgICAgICAgJ0xpbnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQot
ICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQotCi0gICAgIyBQZXJmb3Jt
IGxpbnQgb3ZlciBtdWx0aXBsZSBsaW5lcyBhbmQgcmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlLgot
ICAgIGRlZiBwZXJmb3JtX211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgot
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0g
ICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9t
dWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAg
ICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGV4dCA9
IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6XQotICAgICAgICBjbGFzc19zdGF0
ZSA9IGNwcGxpbnQuX0NsYXNzU3RhdGUoKQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMu
bnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwbGludC5jaGVja19zdHlsZShmaWxlX25hbWUs
IGxpbmVzLCBpLCBleHQsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgICAgIGNwcGxpbnQuY2hl
Y2tfZm9yX25vbl9zdGFuZGFyZF9jb25zdHJ1Y3RzKGZpbGVfbmFtZSwgbGluZXMsIGksIGNsYXNz
X3N0YXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hl
ZChmaWxlX25hbWUsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRzKCkKLQotICAgICMgU2ltaWxhciB0byBwZXJmb3JtX211bHRpX2xpbmVfbGlu
dCwgYnV0IGNhbGxzIGNoZWNrX2xhbmd1YWdlIGluc3RlYWQgb2YKLSAgICAjIGNoZWNrX2Zvcl9u
b25fc3RhbmRhcmRfY29uc3RydWN0cwotICAgIGRlZiBwZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2No
ZWNrKHNlbGYsIGZpbGVfbmFtZSwgY29kZSk6Ci0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVy
cm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgaW5jbHVkZV9zdGF0ZSA9IGNwcGxp
bnQuX0luY2x1ZGVTdGF0ZSgpCi0gICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAg
ICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMs
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMo
bGluZXMpCi0gICAgICAgIGV4dCA9IGZpbGVfbmFtZVtmaWxlX25hbWUucmZpbmQoJy4nKSArIDE6
XQotICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAg
ICAgY3BwbGludC5jaGVja19sYW5ndWFnZShmaWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGluY2x1
ZGVfc3RhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3RvcikKLSAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKLQotICAgIGRl
ZiBwZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soc2VsZiwgY29kZSk6Ci0gICAgICAgICIi
IlBlcmZvcm0gTGludCBmdW5jdGlvbiBsZW5ndGggY2hlY2sgb24gYmxvY2sgb2YgY29kZSBhbmQg
cmV0dXJuIHdhcm5pbmdzLgotCi0gICAgICAgIEJ1aWxkcyB1cCBhbiBhcnJheSBvZiBsaW5lcyBj
b3JyZXNwb25kaW5nIHRvIHRoZSBjb2RlIGFuZCBzdHJpcHMgY29tbWVudHMKLSAgICAgICAgdXNp
bmcgY3BwbGludCBmdW5jdGlvbnMuCi0KLSAgICAgICAgRXN0YWJsaXNoZXMgYW4gZXJyb3IgY29s
bGVjdG9yIGFuZCBpbnZva2VzIHRoZSBmdW5jdGlvbiBsZW5ndGggY2hlY2tpbmcKLSAgICAgICAg
ZnVuY3Rpb24gZm9sbG93aW5nIGNwcGxpbnQncyBwYXR0ZXJuLgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgY29kZTogQysrIHNvdXJjZSBjb2RlIGV4cGVjdGVkIHRvIGdlbmVyYXRlIGEgd2Fy
bmluZyBtZXNzYWdlLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVGhlIGFjY3VtdWxh
dGVkIGVycm9ycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZpbGVfbmFtZSA9ICdmb28uY3BwJwot
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0g
ICAgICAgIGZ1bmN0aW9uX3N0YXRlID0gY3BwbGludC5fRnVuY3Rpb25TdGF0ZSgpCi0gICAgICAg
IGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBsaW50LnJlbW92ZV9tdWx0aV9s
aW5lX2NvbW1lbnRzKGZpbGVfbmFtZSwgbGluZXMsIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAg
bGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMobGluZXMpCi0gICAgICAgIGZvciBpIGluIHhy
YW5nZShsaW5lcy5udW1fbGluZXMoKSk6Ci0gICAgICAgICAgICBjcHBsaW50LmNoZWNrX2Zvcl9m
dW5jdGlvbl9sZW5ndGhzKGZpbGVfbmFtZSwgbGluZXMsIGksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX3N0YXRlLCBlcnJvcl9jb2xsZWN0
b3IpCi0gICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCi0KLSAgICBkZWYg
cGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShzZWxmLCBjb2RlLCBmaWxlbmFtZT0nZm9vLmgn
LCBpbz1jb2RlY3MpOgotICAgICAgICAjIEZpcnN0LCBidWlsZCB1cCB0aGUgaW5jbHVkZSBzdGF0
ZS4KLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRf
KQotICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKLSAgICAg
ICAgbGluZXMgPSBjb2RlLnNwbGl0KCdcbicpCi0gICAgICAgIGNwcGxpbnQucmVtb3ZlX211bHRp
X2xpbmVfY29tbWVudHMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAg
IGxpbmVzID0gY3BwbGludC5DbGVhbnNlZExpbmVzKGxpbmVzKQotICAgICAgICBmb3IgaSBpbiB4
cmFuZ2UobGluZXMubnVtX2xpbmVzKCkpOgotICAgICAgICAgICAgY3BwbGludC5jaGVja19sYW5n
dWFnZShmaWxlbmFtZSwgbGluZXMsIGksICcuaCcsIGluY2x1ZGVfc3RhdGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgIyBXZSBj
b3VsZCBjbGVhciB0aGUgZXJyb3JfY29sbGVjdG9yIGhlcmUsIGJ1dCB0aGlzIHNob3VsZAotICAg
ICAgICAjIGFsc28gYmUgZmluZSwgc2luY2Ugb3VyIEluY2x1ZGVXaGF0WW91VXNlIHVuaXR0ZXN0
cyBkbyBub3QKLSAgICAgICAgIyBoYXZlIGxhbmd1YWdlIHByb2JsZW1zLgotCi0gICAgICAgICMg
U2Vjb25kLCBsb29rIGZvciBtaXNzaW5nIGluY2x1ZGVzLgotICAgICAgICBjcHBsaW50LmNoZWNr
X2Zvcl9pbmNsdWRlX3doYXRfeW91X3VzZShmaWxlbmFtZSwgbGluZXMsIGluY2x1ZGVfc3RhdGUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvciwgaW8pCi0gICAgICAgIHJldHVybiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpCi0K
LSAgICAjIFBlcmZvcm0gbGludCBhbmQgY29tcGFyZSB0aGUgZXJyb3IgbWVzc2FnZSB3aXRoICJl
eHBlY3RlZF9tZXNzYWdlIi4KLSAgICBkZWYgYXNzZXJ0X2xpbnQoc2VsZiwgY29kZSwgZXhwZWN0
ZWRfbWVzc2FnZSwgZmlsZV9uYW1lPSdmb28uY3BwJyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUs
IGZpbGVfbmFtZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2xpbnRfb25lX29mX21hbnlfZXJyb3JzX3Jl
KHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZT0nZm9vLmNwcCcpOgot
ICAgICAgICBtZXNzYWdlcyA9IHNlbGYucGVyZm9ybV9zaW5nbGVfbGluZV9saW50KGNvZGUsIGZp
bGVfbmFtZSkKLSAgICAgICAgZm9yIG1lc3NhZ2UgaW4gbWVzc2FnZXM6Ci0gICAgICAgICAgICBp
ZiByZS5zZWFyY2goZXhwZWN0ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwg
bWVzc2FnZXMpCi0KLSAgICBkZWYgYXNzZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBl
eHBlY3RlZF9tZXNzYWdlLCBmaWxlX25hbWU9J2Zvby5oJyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2UsIHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29k
ZSwgZmlsZV9uYW1lKSkKLQotICAgIGRlZiBhc3NlcnRfbXVsdGlfbGluZV9saW50X3JlKHNlbGYs
IGNvZGUsIGV4cGVjdGVkX21lc3NhZ2VfcmUsIGZpbGVfbmFtZT0nZm9vLmgnKToKLSAgICAgICAg
bWVzc2FnZSA9IHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKQot
ICAgICAgICBpZiBub3QgcmUuc2VhcmNoKGV4cGVjdGVkX21lc3NhZ2VfcmUsIG1lc3NhZ2UpOgot
ICAgICAgICAgICAgc2VsZi5mYWlsKCdNZXNzYWdlIHdhczpcbicgKyBtZXNzYWdlICsgJ0V4cGVj
dGVkIG1hdGNoIHRvICInICsgZXhwZWN0ZWRfbWVzc2FnZV9yZSArICciJykKLQotICAgIGRlZiBh
c3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soc2VsZiwgZmlsZV9uYW1lLCBjb2RlLCBleHBlY3Rl
ZF9tZXNzYWdlKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wZXJmb3JtX2xhbmd1YWdlX3J1bGVzX2No
ZWNrKGZpbGVfbmFtZSwgY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3Vf
dXNlKHNlbGYsIGNvZGUsIGV4cGVjdGVkX21lc3NhZ2UpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhleHBlY3RlZF9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBl
cmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoY29kZSkpCi0KLSAgICBkZWYgYXNzZXJ0X2JsYW5r
X2xpbmVzX2NoZWNrKHNlbGYsIGxpbmVzLCBzdGFydF9lcnJvcnMsIGVuZF9lcnJvcnMpOgotICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAg
ICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywgbGluZXMsIGVy
cm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICBz
dGFydF9lcnJvcnMsCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50
KAotICAgICAgICAgICAgICAgICdCbGFuayBsaW5lIGF0IHRoZSBzdGFydCBvZiBhIGNvZGUgYmxv
Y2suICBJcyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxh
bmtfbGluZV0gWzJdJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAg
ZW5kX2Vycm9ycywKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291bnQo
Ci0gICAgICAgICAgICAgICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2su
ICBJcyB0aGlzIG5lZWRlZD8nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtf
bGluZV0gWzNdJykpCi0KLQotY2xhc3MgQ3BwbGludFRlc3QoQ3BwbGludFRlc3RCYXNlKToKLQot
ICAgICMgVGVzdCBnZXQgbGluZSB3aWR0aC4KLSAgICBkZWYgdGVzdF9nZXRfbGluZV93aWR0aChz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgY3BwbGludC5nZXRfbGluZV93aWR0
aCgnJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEwLCBjcHBsaW50LmdldF9saW5lX3dp
ZHRoKHUneCcgKiAxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDE2LCBjcHBsaW50Lmdl
dF9saW5lX3dpZHRoKHUn6YO9fOmBk3zlupx855yMfOaUr+W6gScpKQotCi0gICAgZGVmIHRlc3Rf
ZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9zdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoMSwgY3BwbGludC5maW5kX25leHRfbXVsdGlfbGluZV9jb21tZW50X3N0YXJ0
KFsnJ10sIDApKQotCi0gICAgICAgIGxpbmVzID0gWydhJywgJ2InLCAnLyogYyddCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKDIsIGNwcGxpbnQuZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVu
dF9zdGFydChsaW5lcywgMCkpCi0KLSAgICAgICAgbGluZXMgPSBbJ2NoYXIgYVtdID0gIi8qIjsn
XSAgIyBub3QgcmVjb2duaXplZCBhcyBjb21tZW50LgotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygxLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0aV9saW5lX2NvbW1lbnRfc3RhcnQobGluZXMsIDAp
KQotCi0gICAgZGVmIHRlc3RfZmluZF9uZXh0X211bHRpX2xpbmVfY29tbWVudF9lbmQoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGNwcGxpbnQuZmluZF9uZXh0X211bHRpX2xp
bmVfY29tbWVudF9lbmQoWycnXSwgMCkpCi0gICAgICAgIGxpbmVzID0gWydhJywgJ2InLCAnIGMg
Ki8nXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygyLCBjcHBsaW50LmZpbmRfbmV4dF9tdWx0
aV9saW5lX2NvbW1lbnRfZW5kKGxpbmVzLCAwKSkKLQotICAgIGRlZiB0ZXN0X3JlbW92ZV9tdWx0
aV9saW5lX2NvbW1lbnRzX2Zyb21fcmFuZ2Uoc2VsZik6Ci0gICAgICAgIGxpbmVzID0gWydhJywg
JyAgLyogY29tbWVudCAnLCAnICogc3RpbGwgY29tbWVudCcsICcgY29tbWVudCAqLyAgICcsICdi
J10KLSAgICAgICAgY3BwbGludC5yZW1vdmVfbXVsdGlfbGluZV9jb21tZW50c19mcm9tX3Jhbmdl
KGxpbmVzLCAxLCA0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJ2EnLCAnLy8gZHVtbXkn
LCAnLy8gZHVtbXknLCAnLy8gZHVtbXknLCAnYiddLCBsaW5lcykKLQotICAgIGRlZiB0ZXN0X3Nw
YWNlc19hdF9lbmRfb2ZfbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAotICAgICAgICAgICAgJ0xpbmUgZW5kcyBpbiB3
aGl0ZXNwYWNlLiAgQ29uc2lkZXIgZGVsZXRpbmcgdGhlc2UgZXh0cmEgc3BhY2VzLicKLSAgICAg
ICAgICAgICcgIFt3aGl0ZXNwYWNlL2VuZF9vZl9saW5lXSBbNF0nKQotCi0gICAgIyBUZXN0IEMt
c3R5bGUgY2FzdCBjYXNlcy4KLSAgICBkZWYgdGVzdF9jc3R5bGVfY2FzdChzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQgYSA9IChpbnQpMS4wOycsCi0g
ICAgICAgICAgICAnVXNpbmcgQy1zdHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0PGludD4oLi4u
KSBpbnN0ZWFkJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaW50ICphID0gKGludCAqKURF
RklORURfVkFMVUU7JywKLSAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2UgcmVp
bnRlcnByZXRfY2FzdDxpbnQgKj4oLi4uKSBpbnN0ZWFkJwotICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2Nhc3RpbmddIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICd1aW50MTYgYSA9ICh1aW50MTYpMS4wOycsCi0gICAgICAgICAgICAnVXNpbmcgQy1z
dHlsZSBjYXN0LiAgVXNlIHN0YXRpY19jYXN0PHVpbnQxNj4oLi4uKSBpbnN0ZWFkJwotICAgICAg
ICAgICAgJyAgW3JlYWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICAnaW50MzIgYSA9IChpbnQzMikxLjA7JywKLSAgICAgICAgICAg
ICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8aW50MzI+KC4uLikgaW5zdGVh
ZCcKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jYXN0aW5nXSBbNF0nKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3VpbnQ2NCBhID0gKHVpbnQ2NCkxLjA7JywK
LSAgICAgICAgICAgICdVc2luZyBDLXN0eWxlIGNhc3QuICBVc2Ugc3RhdGljX2Nhc3Q8dWludDY0
PiguLi4pIGluc3RlYWQnCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2FzdGluZ10gWzRd
JykKLQotICAgICMgVGVzdCB0YWtpbmcgYWRkcmVzcyBvZiBjYXN0cyAocnVudGltZS9jYXN0aW5n
KQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfY2FzdGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICdpbnQqIHggPSAmc3RhdGljX2Nhc3Q8aW50Kj4oZm9vKTsn
LAotICAgICAgICAgICAgJ0FyZSB5b3UgdGFraW5nIGFuIGFkZHJlc3Mgb2YgYSBjYXN0PyAgJwot
ICAgICAgICAgICAgJ1RoaXMgaXMgZGFuZ2Vyb3VzOiBjb3VsZCBiZSBhIHRlbXAgdmFyLiAgJwot
ICAgICAgICAgICAgJ1Rha2UgdGhlIGFkZHJlc3MgYmVmb3JlIGRvaW5nIHRoZSBjYXN0LCByYXRo
ZXIgdGhhbiBhZnRlcicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2Nhc3RpbmddIFs0XScpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQqIHggPSAmZHluYW1p
Y19jYXN0PGludCAqPihmb28pOycsCi0gICAgICAgICAgICBbJ0FyZSB5b3UgdGFraW5nIGFuIGFk
ZHJlc3Mgb2YgYSBjYXN0PyAgJwotICAgICAgICAgICAgICdUaGlzIGlzIGRhbmdlcm91czogY291
bGQgYmUgYSB0ZW1wIHZhci4gICcKLSAgICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBiZWZv
cmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJwotICAgICAgICAgICAgICcgIFty
dW50aW1lL2Nhc3RpbmddIFs0XScsCi0gICAgICAgICAgICAgJ0RvIG5vdCB1c2UgZHluYW1pY19j
YXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhpbiBhIGNsYXNzICcKLSAgICAgICAgICAg
ICAnaGllcmFyY2h5LCB1c2Ugc3RhdGljX2Nhc3Q8PiB0byB1cGNhc3QuICBHb29nbGUgZG9lc25c
J3Qgc3VwcG9ydCAnCi0gICAgICAgICAgICAgJ1JUVEkuICBbcnVudGltZS9ydHRpXSBbNV0nXSkK
LQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCogeCA9ICZyZWlu
dGVycHJldF9jYXN0PGludCAqPihmb28pOycsCi0gICAgICAgICAgICAnQXJlIHlvdSB0YWtpbmcg
YW4gYWRkcmVzcyBvZiBhIGNhc3Q/ICAnCi0gICAgICAgICAgICAnVGhpcyBpcyBkYW5nZXJvdXM6
IGNvdWxkIGJlIGEgdGVtcCB2YXIuICAnCi0gICAgICAgICAgICAnVGFrZSB0aGUgYWRkcmVzcyBi
ZWZvcmUgZG9pbmcgdGhlIGNhc3QsIHJhdGhlciB0aGFuIGFmdGVyJwotICAgICAgICAgICAgJyAg
W3J1bnRpbWUvY2FzdGluZ10gWzRdJykKLQotICAgICAgICAjIEl0J3MgT0sgdG8gY2FzdCBhbiBh
ZGRyZXNzLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCogeCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8aW50ICo+KCZmb28pOycsCi0gICAgICAgICAgICAnJykKLQotICAg
IGRlZiB0ZXN0X3J1bnRpbWVfc2VsZmluaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIsIEJlbCBsKSA6IHJfKHJfKSwgbF8obF8p
IHsgfScsCi0gICAgICAgICAgICAnWW91IHNlZW0gdG8gYmUgaW5pdGlhbGl6aW5nIGEgbWVtYmVy
IHZhcmlhYmxlIHdpdGggaXRzZWxmLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2luaXRdIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFy
IHIsIEJlbCBsKSA6IHJfKHIpLCBsXyhsKSB7IH0nLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRm9vOjpGb28oQmFyIHIpIDogcl8ociks
IGxfKHJfKSwgbGxfKGxfKSB7IH0nLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9y
dW50aW1lX3J0dGkoc2VsZik6Ci0gICAgICAgIHN0YXRlbWVudCA9ICdpbnQqIHggPSBkeW5hbWlj
X2Nhc3Q8aW50Kj4oJmZvbyk7JwotICAgICAgICBlcnJvcl9tZXNzYWdlID0gKAotICAgICAgICAg
ICAgJ0RvIG5vdCB1c2UgZHluYW1pY19jYXN0PD4uICBJZiB5b3UgbmVlZCB0byBjYXN0IHdpdGhp
biBhIGNsYXNzICcKLSAgICAgICAgICAgICdoaWVyYXJjaHksIHVzZSBzdGF0aWNfY2FzdDw+IHRv
IHVwY2FzdC4gIEdvb2dsZSBkb2VzblwndCBzdXBwb3J0ICcKLSAgICAgICAgICAgICdSVFRJLiAg
W3J1bnRpbWUvcnR0aV0gWzVdJykKLSAgICAgICAgIyBkeW5hbWljX2Nhc3QgaXMgZGlzYWxsb3dl
ZCBpbiBtb3N0IGZpbGVzLgotICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVj
aygnZm9vLmNwcCcsIHN0YXRlbWVudCwgZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgc3RhdGVtZW50LCBlcnJvcl9tZXNzYWdl
KQotICAgICAgICAjIEl0IGlzIGV4cGxpY2l0bHkgYWxsb3dlZCBpbiB0ZXN0cywgaG93ZXZlci4K
LSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb190ZXN0LmNwcCcs
IHN0YXRlbWVudCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNr
KCdmb29fdW5pdHRlc3QuY3BwJywgc3RhdGVtZW50LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvb19yZWd0ZXN0LmNwcCcsIHN0YXRlbWVudCwgJycpCi0K
LSAgICAjIFdlIGNhbm5vdCB0ZXN0IHRoaXMgZnVuY3Rpb25hbGl0eSBiZWNhdXNlIG9mIGRpZmZl
cmVuY2Ugb2YKLSAgICAjIGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgQW55d2F5LCB3ZSBtYXkgbmV2
ZXIgZW5hYmxlIHRoaXMuCi0gICAgIwotICAgICMgIyBUZXN0IGZvciB1bm5hbWVkIGFyZ3VtZW50
cyBpbiBhIG1ldGhvZC4KLSAgICAjIGRlZiB0ZXN0X2NoZWNrX2Zvcl91bm5hbWVkX3BhcmFtcyhz
ZWxmKToKLSAgICAjICAgbWVzc2FnZSA9ICgnQWxsIHBhcmFtZXRlcnMgc2hvdWxkIGJlIG5hbWVk
IGluIGEgZnVuY3Rpb24nCi0gICAgIyAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2Z1bmN0
aW9uXSBbM10nKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZvaWQgQShpbnQq
KSBjb25zdDsnLCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2aXJ0dWFsIHZv
aWQgQih2b2lkICgqZm4pKGludCopKTsnLCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9s
aW50KCd2aXJ0dWFsIHZvaWQgQyhpbnQqKTsnLCBtZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2Vy
dF9saW50KCd2b2lkICooKmYpKHZvaWQgKikgPSB4OycsIG1lc3NhZ2UpCi0gICAgIyAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqKSB7JywgbWVzc2FnZSkKLSAgICAjICAgc2Vs
Zi5hc3NlcnRfbGludCgndm9pZCBNZXRob2QoY2hhciopOycsIG1lc3NhZ2UpCi0gICAgIyAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIC8qeCovKTsnLCBtZXNzYWdlKQotICAg
ICMgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHZvaWQgKCpNZXRob2QpKGludDMyKTsnLCBt
ZXNzYWdlKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCdzdGF0aWMgdm9pZCBvcGVyYXRvciBk
ZWxldGVbXSh2b2lkKikgdGhyb3coKTsnLCBtZXNzYWdlKQotICAgICMgCi0gICAgIyAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3ZpcnR1YWwgdm9pZCBEKGludCogcCk7JywgJycpCi0gICAgIyAgIHNlbGYu
YXNzZXJ0X2xpbnQoJ3ZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHgpIHRocm93KCk7JywgJycp
Ci0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIHgpXG57JywgJycp
Ci0gICAgIyAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgTWV0aG9kKGNoYXIqIC8qeCovKVxueycs
ICcnKQotICAgICMgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIE1ldGhvZChjaGFyKiB4KTsnLCAn
JykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiB2b2lkICgqTWV0aG9kKShpbnQz
MiB4KTsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgnc3RhdGljIHZvaWQgb3BlcmF0
b3IgZGVsZXRlW10odm9pZCogeCkgdGhyb3coKTsnLCAnJykKLSAgICAjICAgc2VsZi5hc3NlcnRf
bGludCgnc3RhdGljIHZvaWQgb3BlcmF0b3IgZGVsZXRlW10odm9pZCogLyp4Ki8pIHRocm93KCk7
JywgJycpCi0gICAgIyAKLSAgICAjICAgIyBUaGlzIG9uZSBzaG91bGQgdGVjaG5pY2FsbHkgd2Fy
biwgYnV0IGRvZXNuJ3QgYmVjYXVzZSB0aGUgZnVuY3Rpb24KLSAgICAjICAgIyBwb2ludGVyIGlz
IGNvbmZ1c2luZy4KLSAgICAjICAgc2VsZi5hc3NlcnRfbGludCgndmlydHVhbCB2b2lkIEUodm9p
ZCAoKmZuKShpbnQqIHApKTsnLCAnJykKLQotICAgICMgVGVzdCBkZXByZWNhdGVkIGNhc3RzIHN1
Y2ggYXMgaW50KGQpCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9jYXN0KHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2ludCBhID0gaW50KDIuMik7JywKLSAg
ICAgICAgICAgICdVc2luZyBkZXByZWNhdGVkIGNhc3Rpbmcgc3R5bGUuICAnCi0gICAgICAgICAg
ICAnVXNlIHN0YXRpY19jYXN0PGludD4oLi4uKSBpbnN0ZWFkJwotICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2Nhc3RpbmddIFs0XScpCi0gICAgICAgICMgQ2hlY2tzIGZvciBmYWxzZSBwb3Np
dGl2ZXMuLi4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdpbnQgYSA9
IGludCgpOyAgLy8gQ29uc3RydWN0b3IsIG8uay4nLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnWDo6WCgpIDogYShpbnQoKSkge30gIC8v
IGRlZmF1bHQgQ29uc3RydWN0b3IsIG8uay4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnb3BlcmF0b3IgYm9vbCgpOyAgLy8gQ29udmVy
c2lvbiBvcGVyYXRvciwgby5rLicsCi0gICAgICAgICAgICAnJykKLQotICAgICMgVGhlIHNlY29u
ZCBwYXJhbWV0ZXIgdG8gYSBnTW9jayBtZXRob2QgZGVmaW5pdGlvbiBpcyBhIGZ1bmN0aW9uIHNp
Z25hdHVyZQotICAgICMgdGhhdCBvZnRlbiBsb29rcyBsaWtlIGEgYmFkIGNhc3QgYnV0IHNob3Vs
ZCBub3QgcGlja2VkIHVwIGJ5IGxpbnQuCi0gICAgZGVmIHRlc3RfbW9ja19tZXRob2Qoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnTU9DS19NRVRIT0QwKG1l
dGhvZCwgaW50KCkpOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdNT0NLX0NPTlNUX01FVEhPRDEobWV0aG9kLCBmbG9hdChzdHJpbmcp
KTsnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnTU9DS19DT05TVF9NRVRIT0QyX1QobWV0aG9kLCBkb3VibGUoZmxvYXQsIGZsb2F0KSk7
JywKLSAgICAgICAgICAgICcnKQotCi0gICAgIyBUZXN0IHNpemVvZih0eXBlKSBjYXNlcy4KLSAg
ICBkZWYgdGVzdF9zaXplb2ZfdHlwZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdzaXplb2YoaW50KTsnLAotICAgICAgICAgICAgJ1VzaW5nIHNpemVvZih0
eXBlKS4gIFVzZSBzaXplb2YodmFybmFtZSkgaW5zdGVhZCBpZiBwb3NzaWJsZScKLSAgICAgICAg
ICAgICcgIFtydW50aW1lL3NpemVvZl0gWzFdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdzaXplb2YoaW50ICopOycsCi0gICAgICAgICAgICAnVXNpbmcgc2l6ZW9m
KHR5cGUpLiAgVXNlIHNpemVvZih2YXJuYW1lKSBpbnN0ZWFkIGlmIHBvc3NpYmxlJwotICAgICAg
ICAgICAgJyAgW3J1bnRpbWUvc2l6ZW9mXSBbMV0nKQotCi0gICAgIyBUZXN0IHR5cGVkZWYgY2Fz
ZXMuICBUaGVyZSB3YXMgYSBidWcgdGhhdCBjcHBsaW50IG1pc2lkZW50aWZpZWQKLSAgICAjIHR5
cGVkZWYgZm9yIHBvaW50ZXIgdG8gZnVuY3Rpb24gYXMgQy1zdHlsZSBjYXN0IGFuZCBwcm9kdWNl
ZAotICAgICMgZmFsc2UtcG9zaXRpdmUgZXJyb3IgbWVzc2FnZXMuCi0gICAgZGVmIHRlc3RfdHlw
ZWRlZl9mb3JfcG9pbnRlcl90b19mdW5jdGlvbihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICd0eXBlZGVmIHZvaWQgKCpGdW5jKShpbnQgeCk7JywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3R5cGVk
ZWYgdm9pZCAoKkZ1bmMpKGludCAqeCk7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ3R5cGVkZWYgdm9pZCBGdW5jKGludCB4KTsnLAot
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAn
dHlwZWRlZiB2b2lkIEZ1bmMoaW50ICp4KTsnLAotICAgICAgICAgICAgJycpCi0KLSAgICBkZWYg
dGVzdF9pbmNsdWRlX3doYXRfeW91X3VzZV9ub19pbXBsZW1lbnRhdGlvbl9maWxlcyhzZWxmKToK
LSAgICAgICAgY29kZSA9ICdzdGQ6OnZlY3RvcjxpbnQ+IGZvbzsnCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKCdBZGQgI2luY2x1ZGUgPHZlY3Rvcj4gZm9yIHZlY3Rvcjw+JwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3Vz
ZShjb2RlLCAnZm9vLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYucGVyZm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZShjb2Rl
LCAnZm9vLmNwcCcpKQotCi0gICAgZGVmIHRlc3RfaW5jbHVkZV93aGF0X3lvdV91c2Uoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAg
JycnI2luY2x1ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPGludD4gZm9v
OwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUgPG1hcD4KLSAg
ICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0gICAgICAgICAgICAnJycsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2Uo
Ci0gICAgICAgICAgICAnJycjaW5jbHVkZSA8bXVsdGltYXA+Ci0gICAgICAgICAgICAgICBzdGQ6
OnBhaXI8aW50LGludD4gZm9vOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycn
I2luY2x1ZGUgPGhhc2hfbWFwPgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZv
bzsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx1dGlsaXR5
PgotICAgICAgICAgICAgICAgc3RkOjpwYWlyPGludCxpbnQ+IGZvbzsKLSAgICAgICAgICAgICcn
JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91
X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDx2ZWN0b3I+Ci0gICAgICAgICAgICAgICBE
RUNMQVJFX3N0cmluZyhmb29iYXIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAg
JycnI2luY2x1ZGUgPHZlY3Rvcj4KLSAgICAgICAgICAgICAgIERFRklORV9zdHJpbmcoZm9vYmFy
LCAiIiwgIiIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnI2luY2x1ZGUg
PHZlY3Rvcj4KLSAgICAgICAgICAgICAgIHN0ZDo6cGFpcjxpbnQsaW50PiBmb287Ci0gICAgICAg
ICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDx1dGlsaXR5PiBmb3IgcGFpcjw+
JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNp
bmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8aW50PiBm
b287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDx2ZWN0b3I+
IGZvciB2ZWN0b3I8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3Vz
ZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAg
ICAgICAgICAnJycjaW5jbHVkZSA8dmVjdG9yPgotICAgICAgICAgICAgICAgc3RkOjpzZXQ8aW50
PiBmb287Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxzZXQ+
IGZvciBzZXQ8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0g
WzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAg
ICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAgICAgICAgaGFzaF9tYXA8
aW50LCBpbnQ+IGZvb2JhcjsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2lu
Y2x1ZGUgPGhhc2hfbWFwPiBmb3IgaGFzaF9tYXA8PicKLSAgICAgICAgICAgICcgIFtidWlsZC9p
bmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93
aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAg
ICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0gc3RkOjpsZXNzPGludD4oMCwxKTsKLSAgICAgICAg
ICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUgPGZ1bmN0aW9uYWw+IGZvciBsZXNz
PD4nCi0gICAgICAgICAgICAnICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycn
I2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAgICAgICAgICBib29sIGZvb2JhciA9IG1p
bjxpbnQ+KDAsMSk7Ci0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRl
IDxhbGdvcml0aG0+IGZvciBtaW4gIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAn
dm9pZCBhKGNvbnN0IHN0cmluZyAmZm9vYmFyKTsnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVk
ZSA8c3RyaW5nPiBmb3Igc3RyaW5nICBbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAg
JycnI2luY2x1ZGUgImJhc2UvZm9vYmFyLmgiCi0gICAgICAgICAgICAgICBib29sIGZvb2JhciA9
IHN3YXAoMCwxKTsKLSAgICAgICAgICAgICcnJywKLSAgICAgICAgICAgICdBZGQgI2luY2x1ZGUg
PGFsZ29yaXRobT4gZm9yIHN3YXAgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAn
JycjaW5jbHVkZSAiYmFzZS9mb29iYXIuaCIKLSAgICAgICAgICAgICAgIGJvb2wgZm9vYmFyID0g
dHJhbnNmb3JtKGEuYmVnaW4oKSwgYS5lbmQoKSwgYi5zdGFydCgpLCBGb28pOwotICAgICAgICAg
ICAgJycnLAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3IgdHJhbnNm
b3JtICAnCi0gICAgICAgICAgICAnW2J1aWxkL2luY2x1ZGVfd2hhdF95b3VfdXNlXSBbNF0nKQot
ICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcn
JyNpbmNsdWRlICJiYXNlL2Zvb2Jhci5oIgotICAgICAgICAgICAgICAgYm9vbCBmb29iYXIgPSBt
aW5fZWxlbWVudChhLmJlZ2luKCksIGEuZW5kKCkpOwotICAgICAgICAgICAgJycnLAotICAgICAg
ICAgICAgJ0FkZCAjaW5jbHVkZSA8YWxnb3JpdGhtPiBmb3IgbWluX2VsZW1lbnQgICcKLSAgICAg
ICAgICAgICdbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgJycnZm9vLT5zd2FwKDAs
MSk7Ci0gICAgICAgICAgICAgICBmb28uc3dhcCgwLDEpOwotICAgICAgICAgICAgJycnLAotICAg
ICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAot
ICAgICAgICAgICAgJycnI2luY2x1ZGUgPHN0cmluZz4KLSAgICAgICAgICAgICAgIHZvaWQgYShj
b25zdCBzdGQ6Om11bHRpbWFwPGludCxzdHJpbmc+ICZmb29iYXIpOwotICAgICAgICAgICAgJycn
LAotICAgICAgICAgICAgJ0FkZCAjaW5jbHVkZSA8bWFwPiBmb3IgbXVsdGltYXA8PicKLSAgICAg
ICAgICAgICcgIFtidWlsZC9pbmNsdWRlX3doYXRfeW91X3VzZV0gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfaW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSA8
cXVldWU+Ci0gICAgICAgICAgICAgICB2b2lkIGEoY29uc3Qgc3RkOjpwcmlvcml0eV9xdWV1ZTxp
bnQ+ICZmb29iYXIpOwotICAgICAgICAgICAgJycnLAotICAgICAgICAgICAgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2luY2x1ZGVfd2hhdF95b3VfdXNlKAotICAgICAgICAgICAgICcnJyNpbmNs
dWRlICJiYXNlL2Jhc2ljdHlwZXMuaCIKLSAgICAgICAgICAgICAgICAjaW5jbHVkZSAiYmFzZS9w
b3J0LmgiCi0gICAgICAgICAgICAgICAgI2luY2x1ZGUgPGFzc2VydC5oPgotICAgICAgICAgICAg
ICAgICNpbmNsdWRlIDxzdHJpbmc+Ci0gICAgICAgICAgICAgICAgI2luY2x1ZGUgPHZlY3Rvcj4K
LSAgICAgICAgICAgICAgICB2ZWN0b3I8c3RyaW5nPiBoYWpvYTsnJycsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRl
IDxzdHJpbmc+Ci0gICAgICAgICAgICAgICBpbnQgaSA9IG51bWVyaWNfbGltaXRzPGludD46Om1h
eCgpCi0gICAgICAgICAgICAnJycsCi0gICAgICAgICAgICAnQWRkICNpbmNsdWRlIDxsaW1pdHM+
IGZvciBudW1lcmljX2xpbWl0czw+JwotICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1ZGVfd2hh
dF95b3VfdXNlXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9pbmNsdWRlX3doYXRfeW91X3Vz
ZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlIDxsaW1pdHM+Ci0gICAgICAgICAgICAgICBpbnQg
aSA9IG51bWVyaWNfbGltaXRzPGludD46Om1heCgpCi0gICAgICAgICAgICAnJycsCi0gICAgICAg
ICAgICAnJykKLQotICAgICAgICAjIFRlc3QgdGhlIFVwZGF0ZUluY2x1ZGVTdGF0ZSBjb2RlIHBh
dGguCi0gICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycjaW5jbHVkZSAiYmxhaC9mb28u
aCInLCAnI2luY2x1ZGUgImJsYWgvYmFyLmgiJ10KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVy
Zm9ybV9pbmNsdWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmln
LmgiXG4nCi0gICAgICAgICAgICAnI2luY2x1ZGUgImJsYWgvYS5oIlxuJywKLSAgICAgICAgICAg
IGZpbGVuYW1lPSdibGFoL2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRl
cl9jb250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQotCi0g
ICAgICAgIG1vY2tfaGVhZGVyX2NvbnRlbnRzID0gWycjaW5jbHVkZSA8c2V0PiddCi0gICAgICAg
IG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVkZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAg
ICAnJycjaW5jbHVkZSAiY29uZmlnLmgiCi0gICAgICAgICAgICAgICAjaW5jbHVkZSAiYmxhaC9h
LmgiCi0KLSAgICAgICAgICAgICAgIHN0ZDo6c2V0PGludD4gZm9vOycnJywKLSAgICAgICAgICAg
IGZpbGVuYW1lPSdibGFoL2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRl
cl9jb250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICcnKQotCi0g
ICAgICAgICMgSWYgdGhlcmUncyBqdXN0IGEgLmNwcCBhbmQgdGhlIGhlYWRlciBjYW4ndCBiZSBm
b3VuZCB0aGVuIGl0J3Mgb2suCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1faW5jbHVk
ZV93aGF0X3lvdV91c2UoCi0gICAgICAgICAgICAnJycjaW5jbHVkZSAiY29uZmlnLmgiCi0gICAg
ICAgICAgICAgICAjaW5jbHVkZSAiYmxhaC9hLmgiCi0KLSAgICAgICAgICAgICAgIHN0ZDo6c2V0
PGludD4gZm9vOycnJywKLSAgICAgICAgICAgIGZpbGVuYW1lPSdibGFoL2EuY3BwJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMobWVzc2FnZSwgJycpCi0KLSAgICAgICAgIyBNYWtlIHN1cmUg
d2UgZmluZCB0aGUgaGVhZGVycyB3aXRoIHJlbGF0aXZlIHBhdGhzLgotICAgICAgICBtb2NrX2hl
YWRlcl9jb250ZW50cyA9IFsnJ10KLSAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9ybV9pbmNs
dWRlX3doYXRfeW91X3VzZSgKLSAgICAgICAgICAgICcnJyNpbmNsdWRlICJjb25maWcuaCIKLSAg
ICAgICAgICAgICAgICNpbmNsdWRlICIlcy9hLmgiCi0KLSAgICAgICAgICAgICAgIHN0ZDo6c2V0
PGludD4gZm9vOycnJyAlIG9zLnBhdGguYmFzZW5hbWUob3MuZ2V0Y3dkKCkpLAotICAgICAgICAg
ICAgZmlsZW5hbWU9J2EuY3BwJywKLSAgICAgICAgICAgIGlvPU1vY2tJbyhtb2NrX2hlYWRlcl9j
b250ZW50cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG1lc3NhZ2UsICdBZGQgI2luY2x1
ZGUgPHNldD4gZm9yIHNldDw+ICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdbYnVpbGQvaW5jbHVkZV93aGF0X3lvdV91c2VdIFs0XScpCi0KLSAgICBkZWYgdGVzdF9maWxl
c19iZWxvbmdfdG9fc2FtZV9tb2R1bGUoc2VsZik6Ci0gICAgICAgIGYgPSBjcHBsaW50LmZpbGVz
X2JlbG9uZ190b19zYW1lX21vZHVsZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwg
JycpLCBmKCdhLmNwcCcsICdhLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUs
ICcnKSwgZignYmFzZS9nb29nbGUuY3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoKFRydWUsICcnKSwgZignYmFzZS9nb29nbGVfdGVzdC5jcHAnLCAnYmFz
ZS9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmKCdiYXNlL2dvb2dsZV91bml0dGVzdC5jcHAnLCAnYmFz
ZS9nb29nbGUuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJycpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmKCdiYXNlL2ludGVybmFsL2dvb2dsZV91bml0dGVzdC5j
cHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYXNlL3B1YmxpYy9nb29nbGUuaCcp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJ3h4eC95eXkvJyksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGYoJ3h4eC95eXkvYmFzZS9pbnRlcm5hbC9nb29nbGVfdW5pdHRl
c3QuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFzZS9wdWJsaWMvZ29vZ2xl
LmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFRydWUsICd4eHgveXl5LycpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBmKCd4eHgveXl5L2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNw
cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UvcHVibGljL2dvb2dsZS5oJykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChUcnVlLCAnJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIGYoJ2Jhc2UvZ29vZ2xlX3VuaXR0ZXN0LmNwcCcsICdiYXNlL2dvb2dsZS1pbmwu
aCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoVHJ1ZSwgJy9ob21lL2J1aWxkL2dvb2ds
ZTMvJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGYoJy9ob21lL2J1aWxkL2dvb2dsZTMv
YmFzZS9nb29nbGUuY3BwJywgJ2Jhc2UvZ29vZ2xlLmgnKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscygoRmFsc2UsICcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZignL2hvbWUv
YnVpbGQvZ29vZ2xlMy9iYXNlL2dvb2dsZS5jcHAnLCAnYmFzdS9nb29nbGUuaCcpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygoRmFsc2UsICcnKSwgZignYS5jcHAnLCAnYi5oJykpCi0KLSAg
ICBkZWYgdGVzdF9jbGVhbnNlX2xpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCdpbnQgZm9vID0gMDsgICcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuY2xl
YW5zZV9jb21tZW50cygnaW50IGZvbyA9IDA7ICAvLyBkYW5nZXIhJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKCdpbnQgbyA9IDA7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3Bw
bGludC5jbGVhbnNlX2NvbW1lbnRzKCdpbnQgLyogZm9vICovIG8gPSAwOycpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnZm9vKGludCBhLCBpbnQgYik7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdmb28oaW50IGEgLyogYWJjICovLCBp
bnQgYik7JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2YoYSwgYik7JywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBjcHBsaW50LmNsZWFuc2VfY29tbWVudHMoJ2YoYSwgLyogbmFtZSAq
LyBiKTsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZihhLCBiKTsnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcGxpbnQuY2xlYW5zZV9jb21tZW50cygnZihhIC8qIG5hbWUgKi8s
IGIpOycpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmKGEsIGIpOycsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwbGludC5jbGVhbnNlX2NvbW1lbnRzKCdmKGEsIC8qIG5hbWUgKi9i
KTsnKSkKLQotICAgIGRlZiB0ZXN0X211bHRpX2xpbmVfY29tbWVudHMoc2VsZik6Ci0gICAgICAg
ICMgbWlzc2luZyBleHBsaWNpdCBpcyBiYWQKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgcicnJ2ludCBhID0gMDsKLSAgICAgICAgICAgICAgICAvKiBt
dWx0aS1saW5lcgotICAgICAgICAgICAgICAgIGNsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAg
Rm9vKGludCBmKTsgIC8vIHNob3VsZCBjYXVzZSBhIGxpbnQgd2FybmluZyBpbiBjb2RlCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgKi8gJycnLAotICAgICAgICAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgcicnJy8qIGludCBhID0g
MDsgbXVsdGktbGluZXIKLSAgICAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgYiA9IDA7JycnLAot
ICAgICAgJ0NvdWxkIG5vdCBmaW5kIGVuZCBvZiBtdWx0aS1saW5lIGNvbW1lbnQnCi0gICAgICAn
ICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX2NvbW1lbnRdIFs1XScpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X211bHRpX2xpbmVfbGludChyJycnICAgIC8qIG11bHRpLWxpbmUgY29tbWVudCcnJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2Yg
bXVsdGktbGluZSBjb21tZW50JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQocicnJyAgICAvLyAvKiBjb21tZW50LCBidXQgbm90IG11bHRp
LWxpbmUnJycsICcnKQotCi0gICAgZGVmIHRlc3RfbXVsdGlsaW5lX3N0cmluZ3Moc2VsZik6Ci0g
ICAgICAgIG11bHRpbGluZV9zdHJpbmdfZXJyb3JfbWVzc2FnZSA9ICgKLSAgICAgICAgICAgICdN
dWx0aS1saW5lIHN0cmluZyAoIi4uLiIpIGZvdW5kLiAgVGhpcyBsaW50IHNjcmlwdCBkb2Vzblwn
dCAnCi0gICAgICAgICAgICAnZG8gd2VsbCB3aXRoIHN1Y2ggc3RyaW5ncywgYW5kIG1heSBnaXZl
IGJvZ3VzIHdhcm5pbmdzLiAgVGhleVwncmUgJwotICAgICAgICAgICAgJ3VnbHkgYW5kIHVubmVj
ZXNzYXJ5LCBhbmQgeW91IHNob3VsZCB1c2UgY29uY2F0ZW5hdGlvbiBpbnN0ZWFkIi4nCi0gICAg
ICAgICAgICAnICBbcmVhZGFiaWxpdHkvbXVsdGlsaW5lX3N0cmluZ10gWzVdJykKLQotICAgICAg
ICBmaWxlX3BhdGggPSAnbXlkaXIvZm9vLmNwcCcKLQotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19m
aWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbJ2NvbnN0IGNoYXIqIHN0ciA9ICJUaGlzIGlzIGFcXCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcgbXVsdGlsaW5lIHN0cmluZy4iOyddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoCi0gICAgICAgICAgICAyLCAgIyBPbmUgcGVyIGxpbmUuCi0gICAgICAgICAgICBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudChtdWx0aWxpbmVfc3RyaW5nX2Vycm9y
X21lc3NhZ2UpKQotCi0gICAgIyBUZXN0IG5vbi1leHBsaWNpdCBzaW5nbGUtYXJndW1lbnQgY29u
c3RydWN0b3JzCi0gICAgZGVmIHRlc3RfZXhwbGljaXRfc2luZ2xlX2FyZ3VtZW50X2NvbnN0cnVj
dG9ycyhzZWxmKToKLSAgICAgICAgIyBtaXNzaW5nIGV4cGxpY2l0IGlzIGJhZAotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewot
ICAgICAgICAgICAgICAgICBGb28oaW50IGYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAg
ICAgICAgICAnU2luZ2xlLWFyZ3VtZW50IGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgbWFya2VkIGV4
cGxpY2l0LicKLSAgICAgICAgICAgICcgIFtydW50aW1lL2V4cGxpY2l0XSBbNV0nKQotICAgICAg
ICAjIG1pc3NpbmcgZXhwbGljaXQgaXMgYmFkLCBldmVuIHdpdGggd2hpdGVzcGFjZQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28g
ewotICAgICAgICAgICAgICAgICBGb28gKGludCBmKTsKLSAgICAgICAgICAgICAgIH07JycnLAot
ICAgICAgICAgICAgWydFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hp
dGVzcGFjZS9wYXJlbnNdIFs0XScsCi0gICAgICAgICAgICAgJ1NpbmdsZS1hcmd1bWVudCBjb25z
dHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCi0gICAgICAgICAgICAgJyAgW3J1
bnRpbWUvZXhwbGljaXRdIFs1XSddKQotICAgICAgICAjIG1pc3NpbmcgZXhwbGljaXQsIHdpdGgg
ZGlzdHJhY3RpbmcgY29tbWVudCwgaXMgc3RpbGwgYmFkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAg
ICAgIEZvbyhpbnQgZik7ICAvLyBzaW1wbGVyIHRoYW4gRm9vKGJsYXJnaCwgYmxhcmcpCi0gICAg
ICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0
b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUv
ZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMgbWlzc2luZyBleHBsaWNpdCwgd2l0aCBxdWFsaWZp
ZWQgY2xhc3NuYW1lCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICcnJ2NsYXNzIFF1YWxpZmllcjo6QW5vdGhlck9uZTo6Rm9vIHsKLSAgICAgICAgICAg
ICAgICAgRm9vKGludCBmKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ1Np
bmdsZS1hcmd1bWVudCBjb25zdHJ1Y3RvcnMgc2hvdWxkIGJlIG1hcmtlZCBleHBsaWNpdC4nCi0g
ICAgICAgICAgICAnICBbcnVudGltZS9leHBsaWNpdF0gWzVdJykKLSAgICAgICAgIyBzdHJ1Y3Rz
IGFyZSBjYXVnaHQgYXMgd2VsbC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJycnc3RydWN0IEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyhpbnQg
Zik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdTaW5nbGUtYXJndW1lbnQg
Y29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQuJwotICAgICAgICAgICAgJyAg
W3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMgVGVtcGxhdGl6ZWQgY2xhc3NlcyBh
cmUgY2F1Z2h0IGFzIHdlbGwuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICcnJ3RlbXBsYXRlPHR5cGVuYW1lIFQ+IGNsYXNzIEZvbyB7Ci0gICAgICAg
ICAgICAgICAgIEZvbyhpbnQgZik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAg
ICdTaW5nbGUtYXJndW1lbnQgY29uc3RydWN0b3JzIHNob3VsZCBiZSBtYXJrZWQgZXhwbGljaXQu
JwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvZXhwbGljaXRdIFs1XScpCi0gICAgICAgICMgcHJv
cGVyIHN0eWxlIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgZXhwbGljaXQgRm9v
KGludCBmKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAg
ICMgdHdvIGFyZ3VtZW50IGNvbnN0cnVjdG9yIGlzIG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAg
ICAgICAgRm9vKGludCBmLCBpbnQgYik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICcnKQotICAgICAgICAjIHR3byBhcmd1bWVudCBjb25zdHJ1Y3RvciwgYWNyb3NzIHR3byBs
aW5lcywgaXMgb2theQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBGb28oaW50IGYsCi0gICAg
ICAgICAgICAgICAgICAgICBpbnQgYik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICcnKQotICAgICAgICAjIG5vbi1jb25zdHJ1Y3RvciAoYnV0IHNpbWlsYXIgbmFtZSksIGlz
IG9rYXkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
JycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgYUZvbyhpbnQgZik7Ci0gICAgICAgICAg
ICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICAjIGNvbnN0cnVjdG9yIHdpdGgg
dm9pZCBhcmd1bWVudCBpcyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEZvbyh2b2lk
KTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgICMgc2lu
Z2xlIGFyZ3VtZW50IG1ldGhvZCBpcyBva2F5Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgIEJh
cihpbnQgYik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICAjIGNvbW1lbnRzIHNob3VsZCBiZSBpZ25vcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAv
LyBGb28oaW50IGYpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLSAg
ICAgICAgIyBzaW5nbGUgYXJndW1lbnQgZnVuY3Rpb24gZm9sbG93aW5nIGNsYXNzIGRlZmluaXRp
b24gaXMgb2theQotICAgICAgICAjIChva2F5LCBpdCdzIG5vdCBhY3R1YWxseSB2YWxpZCwgYnV0
IHdlIGRvbid0IHdhbnQgYSBmYWxzZSBwb3NpdGl2ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVs
dGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAg
ICAgRm9vKGludCBmLCBpbnQgYik7Ci0gICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAg
Rm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBzaW5nbGUgYXJndW1l
bnQgZnVuY3Rpb24gaXMgb2theQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnJydzdGF0aWMgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykK
LSAgICAgICAgIyBzaW5nbGUgYXJndW1lbnQgY29weSBjb25zdHJ1Y3RvciBpcyBva2F5LgotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBG
b28gewotICAgICAgICAgICAgICAgICBGb28oY29uc3QgRm9vJik7Ci0gICAgICAgICAgICAgICB9
OycnJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xp
bnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICBGb28oRm9v
Jik7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRl
c3Rfc2xhc2hfc3Rhcl9jb21tZW50X29uX3NpbmdsZV9saW5lKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJycvKiBzdGF0aWMgKi8gRm9v
KGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJycnLyovIHN0YXRpYyAqLyAgRm9vKGludCBmKTsnJycs
Ci0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJycnLyovIHN0YXRpYyBGb28oaW50IGYpOycnJywKLSAgICAgICAgICAgICdD
b3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBjb21tZW50JwotICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBbNV0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJycgICAgLyovIHN0YXRpYyBGb28oaW50
IGYpOycnJywKLSAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBlbmQgb2YgbXVsdGktbGluZSBj
b21tZW50JwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L211bHRpbGluZV9jb21tZW50XSBb
NV0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
JycgICAgLyoqLyBzdGF0aWMgRm9vKGludCBmKTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAg
ICMgVGVzdCBzdXNwaWNpb3VzIHVzYWdlIG9mICJpZiIgbGlrZSB0aGlzOgotICAgICMgaWYgKGEg
PT0gYikgewotICAgICMgICBEb1NvbWV0aGluZygpOwotICAgICMgfSBpZiAoYSA9PSBjKSB7ICAg
Ly8gU2hvdWxkIGJlICJlbHNlIGlmIi4KLSAgICAjICAgRG9Tb21ldGhpbmcoKTsgIC8vIFRoaXMg
Z2V0cyBjYWxsZWQgdHdpY2UgaWYgYSA9PSBiICYmIGEgPT0gYy4KLSAgICAjIH0KLSAgICBkZWYg
dGVzdF9zdXNwaWNpb3VzX3VzYWdlX29mX2lmKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJyAgICBpZiAoYSA9PSBiKSB7JywKLSAgICAgICAgICAgICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICB9IGlmIChhID09IGIp
IHsnLAotICAgICAgICAgICAgJ0RpZCB5b3UgbWVhbiAiZWxzZSBpZiI/IElmIG5vdCwgc3RhcnQg
YSBuZXcgbGluZSBmb3IgImlmIi4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvYnJhY2Vz
XSBbNF0nKQotCi0gICAgIyBUZXN0IHN1c3BpY2lvdXMgdXNhZ2Ugb2YgbWVtc2V0LiBTcGVjaWZp
Y2FsbHksIGEgMAotICAgICMgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFsbW9zdCBjZXJ0YWlu
bHkgYW4gZXJyb3IuCi0gICAgZGVmIHRlc3Rfc3VzcGljaW91c191c2FnZV9vZl9tZW1zZXQoc2Vs
Zik6Ci0gICAgICAgICMgTm9ybWFsIHVzZSBpcyBva2F5LgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJyAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSknLAotICAg
ICAgICAgICAgJycpCi0KLSAgICAgICAgIyBBIDAgYXMgdGhlIGZpbmFsIGFyZ3VtZW50IGlzIGFs
bW9zdCBjZXJ0YWlubHkgYW4gZXJyb3IuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICAnICAgIG1lbXNldChidWYsIHNpemVvZihidWYpLCAwKScsCi0gICAgICAgICAgICAn
RGlkIHlvdSBtZWFuICJtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSkiPycKLSAgICAgICAgICAg
ICcgIFtydW50aW1lL21lbXNldF0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAg
ICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgeHNpemUgKiB5c2l6ZSwgMCknLAotICAgICAgICAg
ICAgJ0RpZCB5b3UgbWVhbiAibWVtc2V0KGJ1ZiwgMCwgeHNpemUgKiB5c2l6ZSkiPycKLSAgICAg
ICAgICAgICcgIFtydW50aW1lL21lbXNldF0gWzRdJykKLQotICAgICAgICAjIFRoZXJlIGlzIGxl
Z2l0aW1hdGUgdGVzdCBjb2RlIHRoYXQgdXNlcyB0aGlzIGZvcm0uCi0gICAgICAgICMgVGhpcyBp
cyBva2F5IHNpbmNlIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgYSBsaXRlcmFsLgotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgIiAgICBtZW1zZXQoYnVmLCAneScsIDApIiwK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
JyAgICBtZW1zZXQoYnVmLCA0LCAwKScsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgKLSAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgLTEsIDApJywKLSAgICAg
ICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBt
ZW1zZXQoYnVmLCAweEYxLCAwKScsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgKLSAgICAgICAgICAgICcgICAgbWVtc2V0KGJ1ZiwgMHhjZCwgMCknLAotICAgICAg
ICAgICAgJycpCi0KLSAgICBkZWYgdGVzdF9jaGVja19wb3NpeF90aHJlYWRpbmcoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3NjdGltZV9yKCknLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnc3RydG9rX3IoKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcg
ICAgc3RydG9rX3IoZm9vLCBiYSwgciknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
YnJhbmQoKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdfcmFuZCgpJywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy5yYW5kKCknLCAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgnPnJhbmQoKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdyYW5kKCkn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyByYW5kX3IoLi4uKSBp
bnN0ZWFkIG9mIHJhbmQoLi4uKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnIGZvciBpbXBy
b3ZlZCB0aHJlYWQgc2FmZXR5LicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGlt
ZS90aHJlYWRzYWZlX2ZuXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJ0b2so
KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIHN0cnRva19yKC4u
LikgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHN0cnRvayguLi4pJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgZm9yIGltcHJvdmVkIHRocmVhZCBzYWZldHkuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtydW50aW1lL3RocmVhZHNhZmVfZm5dIFsyXScp
Ci0KLSAgICAjIFRlc3QgcG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVncyBsaWtlIHByaW50Zihm
b28pLgotICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdHJpbmdzKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdwcmludGYoImZvbyIpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J3ByaW50ZigiZm9vOiAlcyIsIGZvbyknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
RG9jaWRGb3JQcmludGYoZG9jaWQpJywgJycpICAjIFNob3VsZCBub3QgdHJpZ2dlci4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdwcmludGYoZm9vKScsCi0gICAgICAg
ICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBEbyBwcmludGYoIiVzIiwgZm9vKSBp
bnN0ZWFkLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdwcmludGYoZm9vLmNfc3RyKCkpJywKLSAg
ICAgICAgICAgICdQb3RlbnRpYWwgZm9ybWF0IHN0cmluZyBidWcuICcKLSAgICAgICAgICAgICdE
byBwcmludGYoIiVzIiwgZm9vLmNfc3RyKCkpIGluc3RlYWQuJwotICAgICAgICAgICAgJyAgW3J1
bnRpbWUvcHJpbnRmXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJ3ByaW50Zihmb28tPmNfc3RyKCkpJywKLSAgICAgICAgICAgICdQb3RlbnRpYWwgZm9ybWF0
IHN0cmluZyBidWcuICcKLSAgICAgICAgICAgICdEbyBwcmludGYoIiVzIiwgZm9vLT5jX3N0cigp
KSBpbnN0ZWFkLicKLSAgICAgICAgICAgICcgIFtydW50aW1lL3ByaW50Zl0gWzRdJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdTdHJpbmdQcmludGYoZm9vKScsCi0g
ICAgICAgICAgICAnUG90ZW50aWFsIGZvcm1hdCBzdHJpbmcgYnVnLiBEbyBTdHJpbmdQcmludGYo
IiVzIiwgZm9vKSBpbnN0ZWFkLicKLSAgICAgICAgICAgICcnCi0gICAgICAgICAgICAnICBbcnVu
dGltZS9wcmludGZdIFs0XScpCi0KLSAgICAjIFZhcmlhYmxlLWxlbmd0aCBhcnJheXMgYXJlIG5v
dCBwZXJtaXR0ZWQuCi0gICAgZGVmIHRlc3RfdmFyaWFibGVfbGVuZ3RoX2FycmF5X2RldGVjdGlv
bihzZWxmKToKLSAgICAgICAgZXJybXNnID0gKCdEbyBub3QgdXNlIHZhcmlhYmxlLWxlbmd0aCBh
cnJheXMuICBVc2UgYW4gYXBwcm9wcmlhdGVseSBuYW1lZCAnCi0gICAgICAgICAgICAgICAgICAi
KCdrJyBmb2xsb3dlZCBieSBDYW1lbENhc2UpIGNvbXBpbGUtdGltZSBjb25zdGFudCBmb3IgdGhl
IHNpemUuIgotICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvYXJyYXlzXSBbMV0nKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2FueV9vbGRfdmFyaWFibGVdOycsIGVycm1z
ZykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGRvdWJsZXNpemVbc29tZV92YXIgKiAy
XTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2FmdW5jdGlvbigp
XTsnLCBlcnJtc2cpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2Z1bmN0aW9uKGtN
YXhGb29CYXJzKV07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdib29sIGFf
bGlzdFtpdGVtc18tPnNpemUoKV07JywgZXJybXNnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCduYW1lc3BhY2U6OlR5cGUgYnVmZmVyW2xlbisxXTsnLCBlcnJtc2cpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnaW50IGFbNjRdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCdpbnQgYVsweEZGXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGZpcnN0
WzI1Nl0sIHNlY29uZFsyNTZdOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQg
YXJyYXlfbmFtZVtrQ29tcGlsZVRpbWVDb25zdGFudF07JywgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ2NoYXIgYnVmW3NvbWVuYW1lc3BhY2U6OmtCdWZTaXplXTsnLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFycmF5X25hbWVbQUxMX0NBUFNdOycsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdBQ2xhc3MgYXJyYXkxW2Zvbzo6YmFyOjpBTExfQ0FQU107
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhW2tNYXhTdHJMZW4gKyAxXTsn
LCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKGZvbyldOycsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtzaXplb2YoKmZvbyldOycsICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVtzaXplb2YgZm9vXTsnLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbc2l6ZW9mKHN0cnVjdCBGb28pXTsnLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnaW50IGFbMTI4IC0gc2l6ZW9mKGNvbnN0IGJhcildOycs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVsoc2l6ZW9mKGZvbykgKiA0KV07
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBhWyhhcnJheXNpemUoZml4ZWRf
c2l6ZV9hcnJheSkvMikgPDwgMV07JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2Rl
bGV0ZSBhW3NvbWVfdmFyXTsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncmV0dXJu
IGFbc29tZV92YXJdOycsICcnKQotCi0gICAgIyBCcmFjZSB1c2FnZQotICAgIGRlZiB0ZXN0X2Jy
YWNlcyhzZWxmKToKLSAgICAgICAgIyBCcmFjZXMgc2hvdWxkbid0IGJlIGZvbGxvd2VkIGJ5IGEg
OyB1bmxlc3MgdGhleSdyZSBkZWZpbmluZyBhIHN0cnVjdAotICAgICAgICAjIG9yIGluaXRpYWxp
emluZyBhbiBhcnJheQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYVszXSA9IHsgMSwg
MiwgMyB9OycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJycn
Y29uc3QgaW50IGZvb1tdID0KLSAgICAgICAgICAgICAgICAgICB7MSwgMiwgMyB9OycnJywKLSAg
ICAgICAgICAgICcnKQotICAgICAgICAjIEZvciBzaW5nbGUgbGluZSwgdW5tYXRjaGVkICd9JyB3
aXRoIGEgJzsnIGlzIGlnbm9yZWQgKG5vdCBlbm91Z2ggY29udGV4dCkKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnaW50IGFbM10gPSB7IDEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAzIH07JycnLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xp
bmVfbGludCgKLSAgICAgICAgICAgICcnJ2ludCBhWzJdWzNdID0geyB7IDEsIDIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgeyAzLCA0IH0gfTsnJycsCi0gICAgICAgICAgICAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnaW50
IGFbMl1bM10gPQotICAgICAgICAgICAgICAgICAgIHsgeyAxLCAyIH0sCi0gICAgICAgICAgICAg
ICAgICAgICB7IDMsIDQgfSB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgIyBDSEVDSy9F
WFBFQ1RfVFJVRS9FWFBFQ1RfRkFMU0UgcmVwbGFjZW1lbnRzCi0gICAgZGVmIHRlc3RfY2hlY2tf
Y2hlY2soc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKHggPT0gNDIpJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQ0hFQ0tfRVEgaW5zdGVh
ZCBvZiBDSEVDSyhhID09IGIpJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJp
bGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeCAhPSA0
MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBDSEVDS19ORSBp
bnN0ZWFkIG9mIENIRUNLKGEgIT0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3Jl
YWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4
ID49IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNL
X0dFIGluc3RlYWQgb2YgQ0hFQ0soYSA+PSBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NI
RUNLKHggPiA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBD
SEVDS19HVCBpbnN0ZWFkIG9mIENIRUNLKGEgPiBiKScKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J0NIRUNLKHggPD0gNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNp
bmcgQ0hFQ0tfTEUgaW5zdGVhZCBvZiBDSEVDSyhhIDw9IGIpJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnQ0hFQ0soeCA8IDQyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVy
IHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2YgQ0hFQ0soYSA8IGIpJwotICAgICAgICAgICAgICAg
ICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdEQ0hFQ0soeCA9PSA0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAgICdD
b25zaWRlciB1c2luZyBEQ0hFQ0tfRVEgaW5zdGVhZCBvZiBEQ0hFQ0soYSA9PSBiKScKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4ICE9IDQyKScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19ORSBpbnN0ZWFkIG9mIERDSEVDSyhhICE9IGIp
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnRENIRUNLKHggPj0gNDIpJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNLX0dFIGluc3RlYWQgb2YgRENIRUNL
KGEgPj0gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNr
XSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCA+IDQyKScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIERDSEVDS19HVCBpbnN0ZWFkIG9m
IERDSEVDSyhhID4gYiknCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdEQ0hFQ0soeCA8PSA0Mikn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBEQ0hFQ0tfTEUgaW5z
dGVhZCBvZiBEQ0hFQ0soYSA8PSBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcmVh
ZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0RDSEVDSyh4
IDwgNDIpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgRENIRUNL
X0xUIGluc3RlYWQgb2YgRENIRUNLKGEgPCBiKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
ICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgK
LSAgICAgICAgICAgICdFWFBFQ1RfVFJVRSgiNDIiID09IHgpJywKLSAgICAgICAgICAgICdDb25z
aWRlciB1c2luZyBFWFBFQ1RfRVEgaW5zdGVhZCBvZiBFWFBFQ1RfVFJVRShhID09IGIpJwotICAg
ICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFKCI0MiIgIT0geCknLAotICAgICAgICAg
ICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgIT0g
YiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNUX1RSVUUoKzQyID49IHgpJywKLSAg
ICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfR0UgaW5zdGVhZCBvZiBFWFBFQ1RfVFJV
RShhID49IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9UUlVFX00oLTQyID4g
eCknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9HVF9NIGluc3RlYWQgb2Yg
RVhQRUNUX1RSVUVfTShhID4gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2td
IFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNUX1RS
VUVfTSg0MlUgPD0geCknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVYUEVDVF9MRV9N
IGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhIDw9IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAg
ICAgJ0VYUEVDVF9UUlVFX00oNDJMIDwgeCknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5n
IEVYUEVDVF9MVF9NIGluc3RlYWQgb2YgRVhQRUNUX1RSVUVfTShhIDwgYiknCi0gICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdFWFBFQ1RfRkFMU0UoeCA9PSA0MiknLAotICAgICAgICAgICAgJ0Nv
bnNpZGVyIHVzaW5nIEVYUEVDVF9ORSBpbnN0ZWFkIG9mIEVYUEVDVF9GQUxTRShhID09IGIpJwot
ICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgJ0VYUEVDVF9GQUxTRSh4ICE9IDQyKScsCi0gICAgICAg
ICAgICAnQ29uc2lkZXIgdXNpbmcgRVhQRUNUX0VRIGluc3RlYWQgb2YgRVhQRUNUX0ZBTFNFKGEg
IT0gYiknCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnRVhQRUNUX0ZBTFNFKHggPj0gNDIpJywK
LSAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFQgaW5zdGVhZCBvZiBFWFBFQ1Rf
RkFMU0UoYSA+PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdBU1NFUlRfRkFMU0UoeCA+
IDQyKScsCi0gICAgICAgICAgICAnQ29uc2lkZXIgdXNpbmcgQVNTRVJUX0xFIGluc3RlYWQgb2Yg
QVNTRVJUX0ZBTFNFKGEgPiBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10g
WzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdBU1NFUlRfRkFM
U0UoeCA8PSA0MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEFTU0VSVF9HVCBpbnN0
ZWFkIG9mIEFTU0VSVF9GQUxTRShhIDw9IGIpJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ0FT
U0VSVF9GQUxTRV9NKHggPCA0MiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEFTU0VS
VF9HRV9NIGluc3RlYWQgb2YgQVNTRVJUX0ZBTFNFX00oYSA8IGIpJwotICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2NoZWNrXSBbMl0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NI
RUNLKHNvbWVfaXRlcmF0b3IgPT0gb2JqLmVuZCgpKScsICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdFWFBFQ1RfVFJVRShzb21lX2l0ZXJhdG9yID09IG9iai5lbmQoKSknLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnRVhQRUNUX0ZBTFNFKHNvbWVfaXRlcmF0b3IgPT0gb2Jq
LmVuZCgpKScsICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ0NIRUNLKENyZWF0ZVRl
c3RGaWxlKGRpciwgKDEgPDwgMjApKSk7JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQo
J0NIRUNLKENyZWF0ZVRlc3RGaWxlKGRpciwgKDEgPj4gMjApKSk7JywgJycpCi0KLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnQ0hFQ0soeDw0MiknLAotICAgICAgICAgICAgICAgICAgICAgICAg
IFsnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNdJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
J0NvbnNpZGVyIHVzaW5nIENIRUNLX0xUIGluc3RlYWQgb2YgQ0hFQ0soYSA8IGIpJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY2hlY2tdIFsyXSddKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdDSEVDSyh4PjQyKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNLX0dUIGluc3RlYWQgb2YgQ0hFQ0soYSA+IGIpJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJyAgICBFWFBFQ1RfVFJVRSg0MiA8
IHgpICAvLyBSYW5kb20gY29tbWVudC4nLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIEVY
UEVDVF9MVCBpbnN0ZWFkIG9mIEVYUEVDVF9UUlVFKGEgPCBiKScKLSAgICAgICAgICAgICcgIFty
ZWFkYWJpbGl0eS9jaGVja10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAg
ICAgICAgICdFWFBFQ1RfVFJVRSggNDIgPCB4ICknLAotICAgICAgICAgICAgWydFeHRyYSBzcGFj
ZSBhZnRlciAoIGluIGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
cGFyZW5zXSBbNF0nLAotICAgICAgICAgICAgICdDb25zaWRlciB1c2luZyBFWFBFQ1RfTFQgaW5z
dGVhZCBvZiBFWFBFQ1RfVFJVRShhIDwgYiknCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5
L2NoZWNrXSBbMl0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICdD
SEVDSygiZm9vIiA9PSAiZm9vIiknLAotICAgICAgICAgICAgJ0NvbnNpZGVyIHVzaW5nIENIRUNL
X0VRIGluc3RlYWQgb2YgQ0hFQ0soYSA9PSBiKScKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0
eS9jaGVja10gWzJdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdDSEVDS19FUSgiZm9v
IiwgImZvbyIpJywgJycpCi0KLSAgICBkZWYgdGVzdF9icmFjZV9hdF9iZWdpbl9vZl9saW5lKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd7JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyNlbmRpZlxu
JwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAo
Y29uZGl0aW9uKSB7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaW50IGZvbygpIHsnLAotICAgICAgICAgICAgJ1Bs
YWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBbd2hp
dGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdpbnQgZm9vKCkgY29uc3QgeycsCi0gICAgICAgICAgICAnUGxhY2Ug
YnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFt3aGl0ZXNw
YWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ2ludCBmb28oKSBjb25zdFxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAg
ICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uXG4nCi0gICAgICAgICAgICAn
ICAgICYmIGNvbmRpdGlvbjJcbicKLSAgICAgICAgICAgICcgICAgJiYgY29uZGl0aW9uMykge1xu
JwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X21p
c21hdGNoaW5nX3NwYWNlc19pbl9wYXJlbnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2lmIChmb28gKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gaWYnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKCBmb28pIHsnLCAnTWlzbWF0Y2hpbmcgc3Bh
Y2VzIGluc2lkZSAoKSBpbiBzd2l0Y2gnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3do
aXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKGZv
bzsgYmE7IGJhciApIHsnLCAnTWlzbWF0Y2hpbmcgc3BhY2VzIGluc2lkZSAoKSBpbiBmb3InCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0nKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdmb3IgKDsgZm9vOyBiYXIpIHsnLCAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnZm9yICggOyBmb287IGJhcikgeycsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdmb3IgKCA7IGZvbzsgYmFyICkgeycsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdmb3IgKGZvbzsgYmFyOyApIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnZm9yZWFjaCAoZm9vLCBmb29zICkgeycsICdNaXNtYXRjaGluZyBzcGFjZXMgaW5zaWRl
ICgpIGluIGZvcmVhY2gnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
cGFyZW5zXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoICggZm9vLCBm
b29zKSB7JywgJ01pc21hdGNoaW5nIHNwYWNlcyBpbnNpZGUgKCkgaW4gZm9yZWFjaCcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3doaWxlICggIGZvbyAgKSB7JywgJ1Nob3VsZCBoYXZlIHplcm8g
b3Igb25lIHNwYWNlcyBpbnNpZGUnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAoIGFuZCAp
IGluIHdoaWxlICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs1XScpCi0KLSAgICBkZWYgdGVzdF9zcGFj
aW5nX2Zvcl9mbmNhbGwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb28p
IHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9yIChmb287YmFyO2Jheikgeycs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb3JlYWNoIChmb28sIGZvb3MpIHsnLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKGZvbykgeycsICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCdzd2l0Y2ggKGZvbykgeycsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCduZXcgKFJlbmRlckFyZW5hKCkpIFJlbmRlcklubGluZShkb2N1bWVudCgpKScs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb28oIGJhciknLCAnRXh0cmEgc3BhY2Ug
YWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9vYmFy
KCBcXCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmb29iYXIoICAgICBcXCcsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcoIGEgKyBiKScsICdFeHRyYSBzcGFjZSBhZnRl
ciAoJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3BhcmVuc10gWzJd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKChhK2IpKScsICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdmb28gKGZvbyknLCAnRXh0cmEgc3BhY2UgYmVmb3JlICggaW4gZnVuY3Rp
b24gY2FsbCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9wYXJlbnNd
IFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vICgqZm9vKShmb28p
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vICgqZm9vMTJiYXJf
KShmb28pJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgZm9vIChGb286
OipiYXIpKGZvbyknLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZm9vIChGb286Oipi
YXIpKCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSAoIGlu
IGZ1bmN0aW9uIGNhbGwnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uv
cGFyZW5zXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIGZvbyAoRm9v
OjoqYmFyKSgnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKGZvbykoYmFyKScsICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdGb28gKCpmb28pKGJhciknLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnRm9vICgqZm9vKShCYXIgYmFyLCcsICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KCdjaGFyICgqcClbc2l6ZW9mKGZvbyldID0gJmZvbycsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdjaGFyICgmcmVmKVtzaXplb2YoZm9vKV0gPSAmZm9vJywg
JycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2NvbnN0IGNoYXIzMiAoKnRhYmxlW10pWzZd
OycsICcnKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZ19iZWZvcmVfYnJhY2VzKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vKXsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUg
eycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvcnsnLCAnTWlzc2luZyBzcGFjZSBiZWZvcmUg
eycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9icmFjZXNdIFs1XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ZvciB7JywgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJ0VYUEVDVF9ERUJVR19ERUFUSCh7JywgJycpCi0KLSAgICBkZWYgdGVzdF9zcGFj
aW5nX2Fyb3VuZF9lbHNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9ZWxzZSB7
JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIGVsc2UnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
JyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9
IGVsc2V7JywgJ01pc3Npbmcgc3BhY2UgYmVmb3JlIHsnCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJyAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCd9IGVsc2UgeycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd9IGVsc2UgaWYnLCAn
JykKLQotICAgIGRlZiB0ZXN0X3NwYWNpbmdfZm9yX2JpbmFyeV9vcHMoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288PWJhcikgeycsICdNaXNzaW5nIHNwYWNlcyBhcm91
bmQgPD0nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3Jz
XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpZiAoZm9vPGJhcikgeycsICdNaXNz
aW5nIHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChmb288
YmFyLT5iYXopIHsnLCAnTWlzc2luZyBzcGFjZXMgYXJvdW5kIDwnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgJyAgW3doaXRlc3BhY2Uvb3BlcmF0b3JzXSBbM10nKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdpZiAoZm9vPGJhci0+YmFyKSB7JywgJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA8
JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL29wZXJhdG9yc10gWzNd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRlZiBoYXNoX21hcDxGb28sIEJhcics
ICdNaXNzaW5nIHNwYWNlcyBhcm91bmQgPCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBb
d2hpdGVzcGFjZS9vcGVyYXRvcnNdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3R5
cGVkZWYgaGFzaF9tYXA8Rm9vb29vVHlwZSwgQmFhYWFhclR5cGUsJywgJycpCi0KLSAgICBkZWYg
dGVzdF9zcGFjaW5nX2JlZm9yZV9sYXN0X3NlbWljb2xvbihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnY2FsbF9mdW5jdGlvbigpIDsnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdFeHRyYSBzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24uIElmIHRoaXMgc2hvdWxkIGJlIGFu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZW1wdHkgc3RhdGVtZW50LCB1c2UgeyB9IGlu
c3RlYWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL3NlbWljb2xv
bl0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnd2hpbGUgKHRydWUpIDsnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgbGFzdCBzZW1pY29sb24u
IElmIHRoaXMgc2hvdWxkIGJlIGFuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZW1wdHkg
c3RhdGVtZW50LCB1c2UgeyB9IGluc3RlYWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
ZGVmYXVsdDo7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnU2VtaWNvbG9uIGRlZmluaW5n
IGVtcHR5IHN0YXRlbWVudC4gVXNlIHsgfSBpbnN0ZWFkLicKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoJyAgICAgIDsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5z
IG9ubHkgc2VtaWNvbG9uLiBJZiB0aGlzIHNob3VsZCBiZSBhbiBlbXB0eSAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgdXNlIHsgfSBpbnN0ZWFkLicKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ZvciAoaW50IGkgPSAwOyA7JywgJycpCi0KLSAgICAjIFN0YXRpYyBv
ciBnbG9iYWwgU1RMIHN0cmluZ3MuCi0gICAgZGVmIHRlc3Rfc3RhdGljX29yX2dsb2JhbF9zdGxz
dHJpbmdzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgZm9vOycsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0
YW50LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nIGlu
c3RlYWQ6ICJjaGFyIGZvb1tdIi4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3J1bnRp
bWUvc3RyaW5nXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcga0ZvbyA9
ICJoZWxsbyI7ICAvLyBFbmdsaXNoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnRm9yIGEg
c3RhdGljL2dsb2JhbCBzdHJpbmcgY29uc3RhbnQsIHVzZSBhIEMgc3R5bGUgJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICdzdHJpbmcgaW5zdGVhZDogImNoYXIga0Zvb1tdIi4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgJyAgW3J1bnRpbWUvc3RyaW5nXSBbNF0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdzdGF0aWMgc3RyaW5nIGZvbzsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmluZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBpbnN0ZWFkOiAic3RhdGljIGNoYXIg
Zm9vW10iLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0YXRpYyBjb25zdCBzdHJpbmcgZm9vOycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0YXRpYy9nbG9iYWwgc3RyaW5nIGNv
bnN0YW50LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnc3RyaW5n
IGluc3RlYWQ6ICJzdGF0aWMgY29uc3QgY2hhciBmb29bXSIuJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICcgIFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnc3RyaW5nIEZvbzo6YmFyOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0ZvciBhIHN0
YXRpYy9nbG9iYWwgc3RyaW5nIGNvbnN0YW50LCB1c2UgYSBDIHN0eWxlICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnc3RyaW5nIGluc3RlYWQ6ICJjaGFyIEZvbzo6YmFyW10iLicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnICBbcnVudGltZS9zdHJpbmddIFs0XScpCi0gICAgICAgICMg
UmFyZSBjYXNlLgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgZm9vKCJmb29iYXIi
KTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdGb3IgYSBzdGF0aWMvZ2xvYmFsIHN0cmlu
ZyBjb25zdGFudCwgdXNlIGEgQyBzdHlsZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0
cmluZyBpbnN0ZWFkOiAiY2hhciBmb29bXSIuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFtydW50aW1lL3N0cmluZ10gWzRdJykKLSAgICAgICAgIyBTaG91bGQgbm90IGNhdGNoIGxvY2Fs
IG9yIG1lbWJlciB2YXJpYWJsZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAgICBzdHJp
bmcgZm9vJywgJycpCi0gICAgICAgICMgU2hvdWxkIG5vdCBjYXRjaCBmdW5jdGlvbnMuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBFbXB0eVN0cmluZygpIHsgcmV0dXJuICIiOyB9
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3N0cmluZyBFbXB0eVN0cmluZyAoKSB7
IHJldHVybiAiIjsgfScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdzdHJpbmcgVmVy
eUxvbmdOYW1lRnVuY3Rpb25Tb21ldGltZXNFbmRzV2l0aChcbicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnICAgIFZlcnlMb25nTmFtZVR5cGUgdmVyeV9sb25nX25hbWVfdmFyaWFibGUpIHt9
JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3RlbXBsYXRlPD5cbicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnc3RyaW5nIEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbjxT
b21lVHlwZT4oXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGludCB4KSB7IHJl
dHVybiAiIjsgfScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0ZW1wbGF0ZTw+XG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBGdW5jdGlvblRlbXBsYXRlU3BlY2lh
bGl6YXRpb248dmVjdG9yPEE6OkI+KiA+KFxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
ICAgICBpbnQgeCkgeyByZXR1cm4gIiI7IH0nLCAnJykKLQotICAgICAgICAjIHNob3VsZCBub3Qg
Y2F0Y2ggbWV0aG9kcyBvZiB0ZW1wbGF0ZSBjbGFzc2VzLgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZCgpIGNvbnN0XG4nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICByZXR1cm4gIiI7
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicsICcnKQotICAgICAgICBzZWxmLmFz
c2VydF9saW50KCdzdHJpbmcgQ2xhc3M8VHlwZT46Ok1ldGhvZChcbicKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnICAgaW50IGFyZykgY29uc3RcbicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAne1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIHJldHVybiAiIjtcbicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnfVxuJywgJycpCi0KLSAgICBkZWYgdGVzdF9ub19zcGFjZXNf
aW5fZnVuY3Rpb25fY2FsbHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1RlbGxT
dG9yeSgxLCAzKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdUZWxsU3RvcnkoMSwgMyApOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL3BhcmVuc10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnVGVsbFN0
b3J5KDEgLyogd29sZiAqLywgMyAvKiBwaWdzICovKTsnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoJyNlbmRpZlxuICAg
ICk7JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVm
IHRlc3RfdHdvX3NwYWNlc19iZXR3ZWVuX2NvZGVfYW5kX2NvbW1lbnRzKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCd9IC8vIG5hbWVzcGFjZSBmb28nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0d2VlbiBjb2RlIGFuZCBj
b21tZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9jb21tZW50
c10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnfS8vIG5hbWVzcGFjZSBmb28nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICdBdCBsZWFzdCB0d28gc3BhY2VzIGlzIGJlc3QgYmV0
d2VlbiBjb2RlIGFuZCBjb21tZW50cycKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9jb21tZW50c10gWzJdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgncHJpbnRm
KCJmb28iKTsgLy8gT3V0c2lkZSBxdW90ZXMuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAn
QXQgbGVhc3QgdHdvIHNwYWNlcyBpcyBiZXN0IGJldHdlZW4gY29kZSBhbmQgY29tbWVudHMnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFsyXScpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgIC8vIEhhdmluZyB0d28gc3BhY2Vz
IGlzIGZpbmUuJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCBpID0gMDsgICAv
LyBIYXZpbmcgdGhyZWUgc3BhY2VzIGlzIE9LLicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCcvLyBUb3AgbGV2ZWwgY29tbWVudCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KCcgICAgLy8gTGluZSBzdGFydHMgd2l0aCBmb3VyIHNwYWNlcy4nLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnZm9vKCk7XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3sgLy8g
QSBzY29wZSBpcyBvcGVuaW5nLicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAg
Zm9vKCk7XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgICB7IC8vIEFuIGluZGVudGVk
IHNjb3BlIGlzIG9wZW5pbmcuJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2lmIChm
b28pIHsgLy8gbm90IGEgcHVyZSBzY29wZTsgY29tbWVudCBpcyB0b28gY2xvc2UhJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAnQXQgbGVhc3QgdHdvIHNwYWNlcyBpcyBiZXN0IGJldHdlZW4g
Y29kZSBhbmQgY29tbWVudHMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3Bh
Y2UvY29tbWVudHNdIFsyXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiLy8g
SW4gcXVvdGVzLiIpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50ZigiXFwi
JXMgLy8gSW4gcXVvdGVzLiIpJywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ByaW50
ZigiJXMiLCAiLy8gSW4gcXVvdGVzLiIpJywgJycpCi0KLSAgICBkZWYgdGVzdF9zcGFjZV9hZnRl
cl9jb21tZW50X21hcmtlcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8nLCAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy94JywgJ1Nob3VsZCBoYXZlIGEgc3BhY2Ug
YmV0d2VlbiAvLyBhbmQgY29tbWVudCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnICBbd2hp
dGVzcGFjZS9jb21tZW50c10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnLy8geCcs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy0tLS0nLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnLy89PT09JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJy8v
Ly8vLycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8vLy8geCcsICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9saW50KCcvLy8geCcsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KCcvLy8veCcsICdTaG91bGQgaGF2ZSBhIHNwYWNlIGJldHdlZW4gLy8gYW5kIGNvbW1lbnQn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvY29tbWVudHNdIFs0XScp
Ci0KLSAgICBkZWYgdGVzdF9uZXdsaW5lX2F0X2VvZihzZWxmKToKLSAgICAgICAgZGVmIGRvX3Rl
c3Qoc2VsZiwgZGF0YSwgaXNfbWlzc2luZ19lb2YpOgotICAgICAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICAgICAgY3BwbGludC5w
cm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLCBkYXRhLnNwbGl0KCdcbicpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAg
ICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAgICAgaW50KGlzX21pc3NpbmdfZW9mKSwKLSAg
ICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAotICAgICAgICAg
ICAgICAgICAgICAnQ291bGQgbm90IGZpbmQgYSBuZXdsaW5lIGNoYXJhY3RlciBhdCB0aGUgZW5k
IG9mIHRoZSBmaWxlLicKLSAgICAgICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kaW5n
X25ld2xpbmVdIFs1XScpKQotCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJy8vIE5ld2xpbmVcbi8v
IGF0IEVPRlxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwgJy8vIE5vIG5ld2xpbmVc
bi8vIGF0IEVPRicsIFRydWUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX3V0Zjgoc2VsZik6Ci0g
ICAgICAgIGRlZiBkb190ZXN0KHNlbGYsIHJhd19ieXRlcywgaGFzX2ludmFsaWRfdXRmOCk6Ci0g
ICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8p
Ci0gICAgICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKAotICAgICAgICAgICAgICAg
ICdmb28uY3BwJywgJ2NwcCcsCi0gICAgICAgICAgICAgICAgdW5pY29kZShyYXdfYnl0ZXMsICd1
dGY4JywgJ3JlcGxhY2UnKS5zcGxpdCgnXG4nKSwKLSAgICAgICAgICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IpCi0gICAgICAgICAgICAjIFRoZSB3YXJuaW5nIGFwcGVhcnMgb25seSBvbmNlLgotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAgICAgaW50KGhhc19pbnZh
bGlkX3V0ZjgpLAotICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkuY291
bnQoCi0gICAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRhaW5zIGludmFsaWQgVVRGLTgnCi0g
ICAgICAgICAgICAgICAgICAgICcgKG9yIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4n
Ci0gICAgICAgICAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS91dGY4XSBbNV0nKSkKLQotICAg
ICAgICBkb190ZXN0KHNlbGYsICdIZWxsbyB3b3JsZFxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rl
c3Qoc2VsZiwgJ1x4ZTlceDhlXHhiZFxuJywgRmFsc2UpCi0gICAgICAgIGRvX3Rlc3Qoc2VsZiwg
J1x4ZTl4XHg4ZVx4YmRcbicsIFRydWUpCi0gICAgICAgICMgVGhpcyBpcyB0aGUgZW5jb2Rpbmcg
b2YgdGhlIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpdHNlbGYgKHdoaWNoCi0gICAgICAgICMgeW91
IGNhbiBzZWUgYnkgZXZhbHVhdGluZyBjb2RlY3MuZ2V0ZW5jb2RlcigndXRmOCcpKHUnXHVmZmZk
JykpLgotICAgICAgICBkb190ZXN0KHNlbGYsICdceGVmXHhiZlx4YmRcbicsIFRydWUpCi0KLSAg
ICBkZWYgdGVzdF9pc19ibGFua19saW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF8oY3Bw
bGludC5pc19ibGFua19saW5lKCcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKGNwcGxpbnQuaXNf
YmxhbmtfbGluZSgnICcpKQotICAgICAgICBzZWxmLmFzc2VydF8oY3BwbGludC5pc19ibGFua19s
aW5lKCcgXHRcclxuJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0Xyhub3QgY3BwbGludC5pc19ibGFu
a19saW5lKCdpbnQgYTsnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfKG5vdCBjcHBsaW50LmlzX2Js
YW5rX2xpbmUoJ3snKSkKLQotICAgIGRlZiB0ZXN0X2JsYW5rX2xpbmVzX2NoZWNrKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydF9ibGFua19saW5lc19jaGVjayhbJ3tcbicsICdcbicsICdcbics
ICd9XG4nXSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWycg
IGlmIChmb28pIHtcbicsICdcbicsICcgIH1cbiddLCAxLCAxKQotICAgICAgICBzZWxmLmFzc2Vy
dF9ibGFua19saW5lc19jaGVjaygKLSAgICAgICAgICAgIFsnXG4nLCAnLy8ge1xuJywgJ1xuJywg
J1xuJywgJy8vIENvbW1lbnRcbicsICd7XG4nLCAnfVxuJ10sIDAsIDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2JsYW5rX2xpbmVzX2NoZWNrKFsnXG4nLCAncnVuKCJ7Iik7XG4nLCAnXG4nXSwgMCwg
MCkKLSAgICAgICAgc2VsZi5hc3NlcnRfYmxhbmtfbGluZXNfY2hlY2soWydcbicsICcgIGlmIChm
b28pIHsgcmV0dXJuIDA7IH1cbicsICdcbiddLCAwLCAwKQotCi0gICAgZGVmIHRlc3RfYWxsb3df
YmxhbmtfbGluZV9iZWZvcmVfY2xvc2luZ19uYW1lc3BhY2Uoc2VsZik6Ci0gICAgICAgIGVycm9y
X2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGlu
dC5wcm9jZXNzX2ZpbGVfZGF0YSgnZm9vLmNwcCcsICdjcHAnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFsnbmFtZXNwYWNlIHsnLCAnJywgJ30gIC8vIG5hbWVzcGFjZSddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgK
LSAgICAgICAgICAgICdCbGFuayBsaW5lIGF0IHRoZSBlbmQgb2YgYSBjb2RlIGJsb2NrLiAgSXMg
dGhpcyBuZWVkZWQ/JwotICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvYmxhbmtfbGluZV0gWzNd
JykpCi0KLSAgICBkZWYgdGVzdF9hbGxvd19ibGFua19saW5lX2JlZm9yZV9pZl9lbHNlX2NoYWlu
KHNlbGYpOgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFz
c2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3Bw
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsICAjIE5vIHdhcm5pbmcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30gZWxzZSBpZiAocGl5bykgeycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCAgIyBObyB3YXJuaW5nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd9IGVsc2UgaWYgKHBpeW9waXlvKSB7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgaG9nZSA9IHRydWU7JywgICMgTm8g
d2FybmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSBlbHNlIHsnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgICMgV2FybmluZyBvbiB0aGlz
IGxpbmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ30nXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygxLCBlcnJvcl9jb2xsZWN0b3IucmVzdWx0cygpLmNvdW50KAotICAgICAgICAg
ICAgJ0JsYW5rIGxpbmUgYXQgdGhlIGVuZCBvZiBhIGNvZGUgYmxvY2suICBJcyB0aGlzIG5lZWRl
ZD8nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9ibGFua19saW5lXSBbM10nKSkKLQotICAg
IGRlZiB0ZXN0X2Vsc2Vfb25fc2FtZV9saW5lX2FzX2Nsb3NpbmdfYnJhY2VzKHNlbGYpOgotICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAg
ICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoJ2Zvby5jcHAnLCAnY3BwJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbJ2lmIChob2dlKSB7JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd9JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBlbHNlIHsnICAj
IFdhcm5pbmcgb24gdGhpcyBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSddLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoMSwgZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKS5jb3VudCgKLSAgICAgICAg
ICAgICdBbiBlbHNlIHNob3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgcHJlY2Vk
aW5nIH0nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBbNF0nKSkKLQotICAg
IGRlZiB0ZXN0X2Vsc2VfY2xhdXNlX25vdF9vbl9zYW1lX2xpbmVfYXNfZWxzZShzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgnICAgIGVsc2UgRG9Tb21ldGhpbmdFbHNlKCk7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnRWxzZSBjbGF1c2Ugc2hvdWxkIG5ldmVyIGJlIG9uIHNh
bWUgbGluZSBhcyBlbHNlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKHVzZSAyIGxpbmVz
KSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
ICAgIGVsc2UgaWZEb1NvbWV0aGluZ0Vsc2UoKTsnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICdFbHNlIGNsYXVzZSBzaG91bGQgbmV2ZXIgYmUgb24gc2FtZSBsaW5lIGFzIGVsc2UgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICcodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5l
XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgZWxzZSBpZiAoYmxhaCkgeycs
ICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICAgdmFyaWFibGVfZW5kc19pbl9lbHNl
ID0gdHJ1ZTsnLCAnJykKLQotICAgIGRlZiB0ZXN0X2NvbW1hKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdhID0gZigxLDIpOycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ01p
c3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3doaXRlc3BhY2UvY29tbWFdIFszXScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ2ludCB0bXA9YSxhPWIsYj10bXA7JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBbJ01pc3Npbmcgc3BhY2VzIGFyb3VuZCA9ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNd
IFs0XScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIHNwYWNlIGFmdGVyICwg
IFt3aGl0ZXNwYWNlL2NvbW1hXSBbM10nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnZihh
LCAvKiBuYW1lICovIGIpOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdmKGEsIC8q
IG5hbWUgKi9iKTsnLCAnJykKLQotICAgIGRlZiB0ZXN0X2luZGVudChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnc3RhdGljIGludCBub2luZGVudDsnLCAnJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludCgnICAgIGludCBmb3VyX3NwYWNlX2luZGVudDsnLCAnJykKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGludCgnIGludCBvbmVfc3BhY2VfaW5kZW50OycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgJ1dlaXJkIG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAg
W3doaXRlc3BhY2UvaW5kZW50XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgICBp
bnQgdGhyZWVfc3BhY2VfaW5kZW50OycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1dlaXJk
IG51bWJlciBvZiBzcGFjZXMgYXQgbGluZS1zdGFydC4gICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAnQXJlIHlvdSB1c2luZyBhIDQtc3BhY2UgaW5kZW50PyAgW3doaXRlc3BhY2UvaW5kZW50
XSBbM10nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgY2hhciogb25lX3NwYWNlX2luZGVu
dCA9ICJwdWJsaWM6IjsnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdXZWlyZCBudW1iZXIg
b2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0Fy
ZSB5b3UgdXNpbmcgYSA0LXNwYWNlIGluZGVudD8gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzNdJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgnICBwdWJsaWM6JywgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJyAg
IHB1YmxpYzonLCAnJykKLQotICAgIGRlZiB0ZXN0X2xhYmVsKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydF9saW50KCdwdWJsaWM6JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnTGFiZWxz
IHNob3VsZCBhbHdheXMgYmUgaW5kZW50ZWQgYXQgbGVhc3Qgb25lIHNwYWNlLiAgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICdJZiB0aGlzIGlzIGEgbWVtYmVyLWluaXRpYWxpemVyIGxpc3Qg
aW4gYSBjb25zdHJ1Y3RvciwgJwotICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgY29sb24g
c2hvdWxkIGJlIG9uIHRoZSBsaW5lIGFmdGVyIHRoZSBkZWZpbml0aW9uICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnaGVhZGVyLiAgW3doaXRlc3BhY2UvbGFiZWxzXSBbNF0nKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgnICAgcHVibGljOicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgcHVibGlj
OicsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcgIHB1YmxpYzonLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgnICAgcHVibGljOicsICcnKQotCi0gICAgZGVmIHRlc3Rfbm90
X2FsYWJlbChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnTXlWZXJ5TG9uZ05hbWVz
cGFjZTo6TXlWZXJ5TG9uZ0NsYXNzTmFtZTo6JywgJycpCi0KLSAgICBkZWYgdGVzdF90YWIoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ1x0aW50IGE7JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAnVGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcyAgW3doaXRlc3BhY2Uv
dGFiXSBbMV0nKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYSA9IDU7XHRcdC8vIHNl
dCBhIHRvIDUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0
byB1c2Ugc3BhY2VzICBbd2hpdGVzcGFjZS90YWJdIFsxXScpCi0KLSAgICBkZWYgdGVzdF9wYXJz
ZV9hcmd1bWVudHMoc2VsZik6Ci0gICAgICAgIG9sZF91c2FnZSA9IGNwcGxpbnQuX1VTQUdFCi0g
ICAgICAgIG9sZF9lcnJvcl9jYXRlZ29yaWVzID0gY3BwbGludC5fRVJST1JfQ0FURUdPUklFUwot
ICAgICAgICBvbGRfb3V0cHV0X2Zvcm1hdCA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUub3V0cHV0
X2Zvcm1hdAotICAgICAgICBvbGRfdmVyYm9zZV9sZXZlbCA9IGNwcGxpbnQuX2NwcGxpbnRfc3Rh
dGUudmVyYm9zZV9sZXZlbAotICAgICAgICBvbGRfZmlsdGVycyA9IGNwcGxpbnQuX2NwcGxpbnRf
c3RhdGUuZmlsdGVycwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIERvbid0IHByaW50IHVz
YWdlIGR1cmluZyB0aGUgdGVzdHMsIG9yIGZpbHRlciBjYXRlZ29yaWVzCi0gICAgICAgICAgICBj
cHBsaW50Ll9VU0FHRSA9ICcnCi0gICAgICAgICAgICBjcHBsaW50Ll9FUlJPUl9DQVRFR09SSUVT
ID0gJycKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwbGlu
dC5wYXJzZV9hcmd1bWVudHMsIFsnLS1iYWRvcHQnXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFN5c3RlbUV4aXQsIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0taGVscCddKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3lzdGVtRXhpdCwgY3BwbGludC5wYXJzZV9h
cmd1bWVudHMsIFsnLS1maWx0ZXI9J10pCi0gICAgICAgICAgICAjIFRoaXMgaXMgaWxsZWdhbCBi
ZWNhdXNlIGFsbCBmaWx0ZXJzIG11c3Qgc3RhcnQgd2l0aCArIG9yIC0KLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBbJy0t
ZmlsdGVyPWZvbyddKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwg
Y3BwbGludC5wYXJzZV9hcmd1bWVudHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
Jy0tZmlsdGVyPSthLGIsLWMnXSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsn
Zm9vLmNwcCddLCB7fSksIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNwcCddKSkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9sZF9vdXRwdXRfZm9ybWF0LCBjcHBsaW50Ll9j
cHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhvbGRfdmVyYm9zZV9sZXZlbCwgY3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVs
KQotCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoW10sIHt9KSwgY3BwbGludC5wYXJz
ZV9hcmd1bWVudHMoW10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFtdLCB7fSks
IGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnLS12PTAnXSkpCi0KLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMoWyctLXY9MScsICdmb28uY3BwJ10pKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgY3BwbGludC5fY3BwbGludF9zdGF0ZS52ZXJi
b3NlX2xldmVsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmgnXSwge30p
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMo
WyctLXY9MycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDMsIGNw
cGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9sZXZlbCkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMoWyctLXZlcmJvc2U9NScsICdmb28uY3BwJ10pKQot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNSwgY3BwbGludC5fY3BwbGludF9zdGF0ZS52
ZXJib3NlX2xldmVsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzLCBb
Jy0tdj1mJywgJ2Zvby5jcHAnXSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsn
Zm9vLmNwcCddLCB7fSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBh
cnNlX2FyZ3VtZW50cyhbJy0tb3V0cHV0PWVtYWNzJywgJ2Zvby5jcHAnXSkpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygnZW1hY3MnLCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1
dF9mb3JtYXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhb
Jy0tb3V0cHV0PXZzNycsICdmb28uaCddKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCd2czcnLCBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLm91dHB1dF9mb3JtYXQpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMsIFsnLS1vdXRwdXQ9YmxhaCcsICdmb28uY3Bw
J10pCi0KLSAgICAgICAgICAgIGZpbHQgPSAnLSwrd2hpdGVzcGFjZSwtd2hpdGVzcGFjZS9pbmRl
bnQnCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uaCddLCB7fSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhbJy0tZmls
dGVyPScrZmlsdCwgJ2Zvby5oJ10pKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWyct
JywgJyt3aGl0ZXNwYWNlJywgJy13aGl0ZXNwYWNlL2luZGVudCddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5maWx0ZXJzKQotCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygoWydmb28uY3BwJywgJ2Zvby5oJ10sIHt9KSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQucGFyc2VfYXJndW1lbnRzKFsnZm9vLmNw
cCcsICdmb28uaCddKSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKFsnZm9vLmNw
cCddLCB7Jy0tZm9vJzogJyd9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxp
bnQucGFyc2VfYXJndW1lbnRzKFsnLS1mb28nLCAnZm9vLmNwcCddLCBbJ2ZvbyddKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwgeyctLWZvbyc6ICdiYXInfSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cyhb
Jy0tZm9vPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKSkKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKChbJ2Zvby5jcHAnXSwge30pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3BwbGludC5wYXJzZV9hcmd1bWVudHMoWydmb28uY3BwJ10sIFsnZm9vPSddKSkKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjcHBsaW50LnBhcnNlX2FyZ3VtZW50cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnLS1mb290eXBvPWJhcicsICdmb28uY3BwJ10sIFsnZm9vPSddKQotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgY3BwbGludC5fVVNBR0UgPSBvbGRfdXNhZ2UKLSAgICAg
ICAgICAgIGNwcGxpbnQuX0VSUk9SX0NBVEVHT1JJRVMgPSBvbGRfZXJyb3JfY2F0ZWdvcmllcwot
ICAgICAgICAgICAgY3BwbGludC5fY3BwbGludF9zdGF0ZS5vdXRwdXRfZm9ybWF0ID0gb2xkX291
dHB1dF9mb3JtYXQKLSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9s
ZXZlbCA9IG9sZF92ZXJib3NlX2xldmVsCi0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0
YXRlLmZpbHRlcnMgPSBvbGRfZmlsdGVycwotCi0gICAgZGVmIHRlc3RfZmlsdGVyKHNlbGYpOgot
ICAgICAgICBvbGRfZmlsdGVycyA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycwotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnNldF9maWx0ZXJz
KCctLCt3aGl0ZXNwYWNlLC13aGl0ZXNwYWNlL2luZGVudCcpCi0gICAgICAgICAgICBzZWxmLmFz
c2VydF9saW50KAotICAgICAgICAgICAgICAgICcvLyBIZWxsbyB0aGVyZSAnLAotICAgICAgICAg
ICAgICAgICdMaW5lIGVuZHMgaW4gd2hpdGVzcGFjZS4gIENvbnNpZGVyIGRlbGV0aW5nIHRoZXNl
IGV4dHJhIHNwYWNlcy4nCi0gICAgICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvZW5kX29mX2xp
bmVdIFs0XScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydF9saW50KCdpbnQgYSA9IChpbnQpMS4w
OycsICcnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdlaXJkIG9wZW5pbmcgc3Bh
Y2UnLCAnJykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNwcGxpbnQuX2NwcGxpbnRf
c3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCi0KLSAgICBkZWYgdGVzdF9kZWZhdWx0X2ZpbHRl
cihzZWxmKToKLSAgICAgICAgZGVmYXVsdF9maWx0ZXJzID0gY3BwbGludC5fREVGQVVMVF9GSUxU
RVJTCi0gICAgICAgIG9sZF9maWx0ZXJzID0gY3BwbGludC5fY3BwbGludF9zdGF0ZS5maWx0ZXJz
Ci0gICAgICAgIGNwcGxpbnQuX0RFRkFVTFRfRklMVEVSUyA9IFsgJy13aGl0ZXNwYWNlJyBdCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgICMgUmVzZXQgZmlsdGVycwotICAgICAgICAgICAgY3Bw
bGludC5fY3BwbGludF9zdGF0ZS5zZXRfZmlsdGVycygnJykKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0X2xpbnQoJy8vIEhlbGxvIHRoZXJlICcsICcnKQotICAgICAgICAgICAgY3BwbGludC5fY3Bw
bGludF9zdGF0ZS5zZXRfZmlsdGVycygnK3doaXRlc3BhY2UvZW5kX29mX2xpbmUnKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgICAgICAnLy8gSGVsbG8gdGhlcmUg
JywKLSAgICAgICAgICAgICAgICAnTGluZSBlbmRzIGluIHdoaXRlc3BhY2UuICBDb25zaWRlciBk
ZWxldGluZyB0aGVzZSBleHRyYSBzcGFjZXMuJwotICAgICAgICAgICAgICAgICcgIFt3aGl0ZXNw
YWNlL2VuZF9vZl9saW5lXSBbNF0nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnIHdl
aXJkIG9wZW5pbmcgc3BhY2UnLCAnJykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNw
cGxpbnQuX2NwcGxpbnRfc3RhdGUuZmlsdGVycyA9IG9sZF9maWx0ZXJzCi0gICAgICAgICAgICBj
cHBsaW50Ll9ERUZBVUxUX0ZJTFRFUlMgPSBkZWZhdWx0X2ZpbHRlcnMKLQotICAgIGRlZiB0ZXN0
X3VubmFtZWRfbmFtZXNwYWNlc19pbl9oZWFkZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dF9sYW5ndWFnZV9ydWxlc19jaGVjaygKLSAgICAgICAgICAgICdmb28uaCcsICduYW1lc3BhY2Ug
eycsCi0gICAgICAgICAgICAnRG8gbm90IHVzZSB1bm5hbWVkIG5hbWVzcGFjZXMgaW4gaGVhZGVy
IGZpbGVzLiAgU2VlJwotICAgICAgICAgICAgJyBodHRwOi8vZ29vZ2xlLXN0eWxlZ3VpZGUuZ29v
Z2xlY29kZS5jb20vc3ZuL3RydW5rL2NwcGd1aWRlLnhtbCNOYW1lc3BhY2VzJwotICAgICAgICAg
ICAgJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIFtidWlsZC9uYW1lc3BhY2VzXSBbNF0nKQotICAg
ICAgICAjIG5hbWVzcGFjZSByZWdpc3RyYXRpb24gbWFjcm9zIGFyZSBPSy4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywgJ25hbWVzcGFjZSB7ICBcXCcs
ICcnKQotICAgICAgICAjIG5hbWVkIG5hbWVzcGFjZXMgYXJlIE9LLgotICAgICAgICBzZWxmLmFz
c2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmgnLCAnbmFtZXNwYWNlIGZvbyB7JywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsICduYW1l
c3BhY2UgZm9vbmFtZXNwYWNlIHsnLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2Vf
cnVsZXNfY2hlY2soJ2Zvby5jcHAnLCAnbmFtZXNwYWNlIHsnLCAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLCAnbmFtZXNwYWNlIGZvbyB7Jywg
JycpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9jbGFzcyhzZWxmKToKLSAgICAgICAgIyBUZXN0IHRo
YXQgdGhlIGxpbnRlciBjYW4gcGFyc2UgdG8gdGhlIGVuZCBvZiBjbGFzcyBkZWZpbml0aW9ucywK
LSAgICAgICAgIyBhbmQgdGhhdCBpdCB3aWxsIHJlcG9ydCB3aGVuIGl0IGNhbid0LgotICAgICAg
ICAjIFVzZSBtdWx0aS1saW5lIGxpbnRlciBiZWNhdXNlIGl0IHBlcmZvcm1zIHRoZSBDbGFzc1N0
YXRlIGNoZWNrLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnY2xhc3MgRm9vIHsnLAotICAgICAgICAgICAgJ0ZhaWxlZCB0byBmaW5kIGNvbXBsZXRl
IGRlY2xhcmF0aW9uIG9mIGNsYXNzIEZvbycKLSAgICAgICAgICAgICcgIFtidWlsZC9jbGFzc10g
WzVdJykKLSAgICAgICAgIyBEb24ndCB3YXJuIG9uIGZvcndhcmQgZGVjbGFyYXRpb25zIG9mIHZh
cmlvdXMgdHlwZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICdjbGFzcyBGb287JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydzdHJ1Y3QgRm9vKgotICAgICAgICAg
ICAgICAgICBmb28gPSBOZXdGb28oKTsnJycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBI
ZXJlIGlzIGFuIGV4YW1wbGUgd2hlcmUgdGhlIGxpbnRlciBnZXRzIGNvbmZ1c2VkLCBldmVuIHRo
b3VnaAotICAgICAgICAjIHRoZSBjb2RlIGRvZXNuJ3QgdmlvbGF0ZSB0aGUgc3R5bGUgZ3VpZGUu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcnJ2Ns
YXNzIEZvbwotICAgICAgICAgICAgI2lmZGVmIERFUklWRV9GUk9NX0dPTwotICAgICAgICAgICAg
ICA6IHB1YmxpYyBHb28gewotICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAgICAgICAgOiBwdWJs
aWMgSG9vIHsKLSAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgICB9OycnJywKLSAgICAg
ICAgICAgICdGYWlsZWQgdG8gZmluZCBjb21wbGV0ZSBkZWNsYXJhdGlvbiBvZiBjbGFzcyBGb28n
Ci0gICAgICAgICAgICAnICBbYnVpbGQvY2xhc3NdIFs1XScpCi0KLSAgICBkZWYgdGVzdF9idWls
ZF9lbmRfY29tbWVudChzZWxmKToKLSAgICAgICAgIyBUaGUgY3Jvc3N0b29sIGNvbXBpbGVyIHdl
IGN1cnJlbnRseSB1c2Ugd2lsbCBmYWlsIHRvIGNvbXBpbGUgdGhlCi0gICAgICAgICMgY29kZSBp
biB0aGlzIHRlc3QsIHNvIHdlIG1pZ2h0IGNvbnNpZGVyIHJlbW92aW5nIHRoZSBsaW50IGNoZWNr
LgotICAgICAgICBzZWxmLmFzc2VydF9saW50KCcjZW5kaWYgTm90IGEgY29tbWVudCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ1VuY29tbWVudGVkIHRleHQgYWZ0ZXIgI2VuZGlmIGlzIG5v
bi1zdGFuZGFyZC4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgVXNlIGEgY29tbWVudC4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2VuZGlmX2NvbW1lbnRdIFs1XScp
Ci0KLSAgICBkZWYgdGVzdF9idWlsZF9mb3J3YXJkX2RlY2woc2VsZik6Ci0gICAgICAgICMgVGhl
IGNyb3NzdG9vbCBjb21waWxlciB3ZSBjdXJyZW50bHkgdXNlIHdpbGwgZmFpbCB0byBjb21waWxl
IHRoZQotICAgICAgICAjIGNvZGUgaW4gdGhpcyB0ZXN0LCBzbyB3ZSBtaWdodCBjb25zaWRlciBy
ZW1vdmluZyB0aGUgbGludCBjaGVjay4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnY2xhc3Mg
Rm9vOjpHb287JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnSW5uZXItc3R5bGUgZm9yd2Fy
ZCBkZWNsYXJhdGlvbnMgYXJlIGludmFsaWQuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcg
IFJlbW92ZSB0aGlzIGxpbmUuJwotICAgICAgICAgICAgICAgICAgICAgICAgICcgIFtidWlsZC9m
b3J3YXJkX2RlY2xdIFs1XScpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9oZWFkZXJfZ3VhcmQoc2Vs
Zik6Ci0gICAgICAgIGZpbGVfcGF0aCA9ICdteWRpci9mb28uaCcKLQotICAgICAgICAjIFdlIGNh
bid0IHJlbHkgb24gb3VyIGludGVybmFsIHN0dWZmIHRvIGdldCBhIHNhbmUgcGF0aCBvbiB0aGUg
b3BlbiBzb3VyY2UKLSAgICAgICAgIyBzaWRlIG9mIHRoaW5ncywgc28ganVzdCBwYXJzZSBvdXQg
dGhlIHN1Z2dlc3RlZCBoZWFkZXIgZ3VhcmQuIFRoaXMKLSAgICAgICAgIyBkb2Vzbid0IGFsbG93
IHVzIHRvIHRlc3QgdGhlIHN1Z2dlc3RlZCBoZWFkZXIgZ3VhcmQsIGJ1dCBpdCBkb2VzIGxldCB1
cwotICAgICAgICAjIHRlc3QgYWxsIHRoZSBvdGhlciBoZWFkZXIgdGVzdHMuCi0gICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3Bw
bGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3BhdGgsICdoJywgW10sIGVycm9yX2NvbGxlY3Rv
cikKLSAgICAgICAgZXhwZWN0ZWRfZ3VhcmQgPSAnJwotICAgICAgICBtYXRjaGVyID0gcmUuY29t
cGlsZSgKLSAgICAgICAgICAgICdObyBcI2lmbmRlZiBoZWFkZXIgZ3VhcmQgZm91bmRcLCBzdWdn
ZXN0ZWQgQ1BQIHZhcmlhYmxlIGlzXDogKFtBLVpfMC05XSspICcpCi0gICAgICAgIGZvciBlcnJv
ciBpbiBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKLSAgICAgICAgICAgIG1hdGNoZXMg
PSBtYXRjaGVyLm1hdGNoKGVycm9yKQotICAgICAgICAgICAgaWYgbWF0Y2hlczoKLSAgICAgICAg
ICAgICAgICBleHBlY3RlZF9ndWFyZCA9IG1hdGNoZXMuZ3JvdXAoMSkKLSAgICAgICAgICAgICAg
ICBicmVhawotCi0gICAgICAgICMgTWFrZSBzdXJlIHdlIGV4dHJhY3RlZCBzb21ldGhpbmcgZm9y
IG91ciBoZWFkZXIgZ3VhcmQuCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhwZWN0ZWRf
Z3VhcmQsICcnKQotCi0gICAgICAgICMgV3JvbmcgZ3VhcmQKLSAgICAgICAgZXJyb3JfY29sbGVj
dG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nl
c3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFsnI2lmbmRlZiBGT09fSCcsICcjZGVmaW5lIEZPT19IJ10sIGVycm9yX2NvbGxlY3Rv
cikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAg
ICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCi0gICAgICAgICAgICAgICAg
JyNpZm5kZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxlYXNlIHVzZTogJXMnCi0g
ICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1
YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAg
ICAgICMgTm8gZGVmaW5lCi0gICAgICAgIGVycm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9y
KHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0YShmaWxlX3Bh
dGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJyNpZm5kZWYgJXMn
ICUgZXhwZWN0ZWRfZ3VhcmRdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICdObyAjaWZuZGVmIGhlYWRlciBndWFy
ZCBmb3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBpczogJXMnCi0gICAgICAgICAgICAgICAg
JyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAg
ICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAgICAgICMgTWlzbWF0Y2hl
ZCBkZWZpbmUKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5h
c3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBl
Y3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUg
Rk9PX0gnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0
b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAg
ICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAg
ICdObyAjaWZuZGVmIGhlYWRlciBndWFyZCBmb3VuZCwgc3VnZ2VzdGVkIENQUCB2YXJpYWJsZSBp
czogJXMnCi0gICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4
cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgp
KQotCi0gICAgICAgICMgTm8gZW5kaWYKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JD
b2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRh
KGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lm
bmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNkZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoCi0gICAgICAgICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9s
aXN0KCkuY291bnQoCi0gICAgICAgICAgICAgICAgJyNlbmRpZiBsaW5lIHNob3VsZCBiZSAiI2Vu
ZGlmICAvLyAlcyInCi0gICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVd
JyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRf
bGlzdCgpKQotCi0gICAgICAgICMgQ29tbWVudGxlc3MgZW5kaWYKLSAgICAgICAgZXJyb3JfY29s
bGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnBy
b2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFsnI2lmbmRlZiAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMnICUgZXhwZWN0ZWRfZ3VhcmQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1
bHRfbGlzdCgpLmNvdW50KAotICAgICAgICAgICAgICAgICcjZW5kaWYgbGluZSBzaG91bGQgYmUg
IiNlbmRpZiAgLy8gJXMiJwotICAgICAgICAgICAgICAgICcgIFtidWlsZC9oZWFkZXJfZ3VhcmRd
IFs1XScgJSBleHBlY3RlZF9ndWFyZCksCi0gICAgICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVz
dWx0X2xpc3QoKSkKLQotICAgICAgICAjIENvbW1lbnRsZXNzIGVuZGlmIGZvciBvbGQtc3R5bGUg
Z3VhcmQKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Ioc2VsZi5hc3Nl
cnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0aCwgJ2gnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnI2lmbmRlZiAlc18nICUgZXhwZWN0
ZWRfZ3VhcmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZGVmaW5lICVz
XycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyNlbmRpZiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxl
Y3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAgICAxLAotICAgICAg
ICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCi0gICAgICAgICAgICAg
ICAgJyNlbmRpZiBsaW5lIHNob3VsZCBiZSAiI2VuZGlmICAvLyAlcyInCi0gICAgICAgICAgICAg
ICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVdJyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAg
ICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotCi0gICAgICAgICMgTm8gaGVh
ZGVyIGd1YXJkIGVycm9ycwotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9w
YXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycjaWZuZGVmICVz
JyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
I2RlZmluZSAlcycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyNlbmRpZiAgLy8gJXMnICUgZXhwZWN0ZWRfZ3VhcmRdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgZm9yIGxpbmUg
aW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6Ci0gICAgICAgICAgICBpZiBsaW5lLmZp
bmQoJ2J1aWxkL2hlYWRlcl9ndWFyZCcpICE9IC0xOgotICAgICAgICAgICAgICAgIHNlbGYuZmFp
bCgnVW5leHBlY3RlZCBlcnJvcjogJXMnICUgbGluZSkKLQotICAgICAgICAjIE5vIGhlYWRlciBn
dWFyZCBlcnJvcnMgZm9yIG9sZC1zdHlsZSBndWFyZAotICAgICAgICBlcnJvcl9jb2xsZWN0b3Ig
PSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19m
aWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWycjaWZuZGVmICVzXycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNkZWZpbmUgJXNfJyAlIGV4cGVjdGVkX2d1YXJkLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmICAvLyAlc18nICUgZXhwZWN0ZWRfZ3Vh
cmRdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikK
LSAgICAgICAgZm9yIGxpbmUgaW4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCk6Ci0gICAg
ICAgICAgICBpZiBsaW5lLmZpbmQoJ2J1aWxkL2hlYWRlcl9ndWFyZCcpICE9IC0xOgotICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBlcnJvcjogJXMnICUgbGluZSkKLQotICAg
ICAgICBvbGRfdmVyYm9zZV9sZXZlbCA9IGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUudmVyYm9zZV9s
ZXZlbAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnZl
cmJvc2VfbGV2ZWwgPSAwCi0gICAgICAgICAgICAjIFdhcm4gb24gb2xkLXN0eWxlIGd1YXJkIGlm
IHZlcmJvc2l0eSBpcyAwLgotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xs
ZWN0b3Ioc2VsZi5hc3NlcnRfKQotICAgICAgICAgICAgY3BwbGludC5wcm9jZXNzX2ZpbGVfZGF0
YShmaWxlX3BhdGgsICdoJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
WycjaWZuZGVmICVzXycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICcjZGVmaW5lICVzXycgJSBleHBlY3RlZF9ndWFyZCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYgIC8vICVzXycgJSBleHBlY3Rl
ZF9ndWFyZF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3RvcikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAotICAgICAgICAgICAgICAg
IDEsCi0gICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQo
Ci0gICAgICAgICAgICAgICAgICAgICcjaWZuZGVmIGhlYWRlciBndWFyZCBoYXMgd3Jvbmcgc3R5
bGUsIHBsZWFzZSB1c2U6ICVzJwotICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaGVhZGVy
X2d1YXJkXSBbMF0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAgICAgICAgICAgICAgIGVycm9yX2Nv
bGxlY3Rvci5yZXN1bHRfbGlzdCgpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY3Bw
bGludC5fY3BwbGludF9zdGF0ZS52ZXJib3NlX2xldmVsID0gb2xkX3ZlcmJvc2VfbGV2ZWwKLQot
ICAgICAgICAjIENvbXBsZXRlbHkgaW5jb3JyZWN0IGhlYWRlciBndWFyZAotICAgICAgICBlcnJv
cl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxp
bnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnaCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgWycjaWZuZGVmIEZPTycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjZGVmaW5lIEZPTycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjZW5kaWYgIC8vIEZPTyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0gICAgICAgICAg
ICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkuY291bnQoCi0g
ICAgICAgICAgICAgICAgJyNpZm5kZWYgaGVhZGVyIGd1YXJkIGhhcyB3cm9uZyBzdHlsZSwgcGxl
YXNlIHVzZTogJXMnCi0gICAgICAgICAgICAgICAgJyAgW2J1aWxkL2hlYWRlcl9ndWFyZF0gWzVd
JyAlIGV4cGVjdGVkX2d1YXJkKSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRf
bGlzdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKLSAgICAgICAgICAgIDEsCi0gICAg
ICAgICAgICBlcnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKS5jb3VudCgKLSAgICAgICAgICAg
ICAgICAnI2VuZGlmIGxpbmUgc2hvdWxkIGJlICIjZW5kaWYgIC8vICVzIicKLSAgICAgICAgICAg
ICAgICAnICBbYnVpbGQvaGVhZGVyX2d1YXJkXSBbNV0nICUgZXhwZWN0ZWRfZ3VhcmQpLAotICAg
ICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCkpCi0KLSAgICBkZWYgdGVzdF9i
dWlsZF9wcmludGZfZm9ybWF0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAg
ICAgICAgICAgcidwcmludGYoIlwlJWQiLCB2YWx1ZSk7JywKLSAgICAgICAgICAgICclLCBbLCAo
LCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVzLiAgVW5lc2NhcGUgdGhlbS4n
Ci0gICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0gWzNdJykKLQotICAgICAgICBz
ZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcidzbnByaW50ZihidWZmZXIsIHNpemVvZihi
dWZmZXIpLCAiXFslZCIsIHZhbHVlKTsnLAotICAgICAgICAgICAgJyUsIFssICgsIGFuZCB7IGFy
ZSB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZXMuICBVbmVzY2FwZSB0aGVtLicKLSAgICAgICAg
ICAgICcgIFtidWlsZC9wcmludGZfZm9ybWF0XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
X2xpbnQoCi0gICAgICAgICAgICByJ2ZwcmludGYoZmlsZSwgIlwoJWQiLCB2YWx1ZSk7JywKLSAg
ICAgICAgICAgICclLCBbLCAoLCBhbmQgeyBhcmUgdW5kZWZpbmVkIGNoYXJhY3RlciBlc2NhcGVz
LiAgVW5lc2NhcGUgdGhlbS4nCi0gICAgICAgICAgICAnICBbYnVpbGQvcHJpbnRmX2Zvcm1hdF0g
WzNdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgcid2c25wcmlu
dGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIlxcXHslZCIsIGFwKTsnLAotICAgICAgICAgICAg
JyUsIFssICgsIGFuZCB7IGFyZSB1bmRlZmluZWQgY2hhcmFjdGVyIGVzY2FwZXMuICBVbmVzY2Fw
ZSB0aGVtLicKLSAgICAgICAgICAgICcgIFtidWlsZC9wcmludGZfZm9ybWF0XSBbM10nKQotCi0g
ICAgICAgICMgRG9uJ3Qgd2FybiBpZiBkb3VibGUtc2xhc2ggcHJlY2VkZXMgdGhlIHN5bWJvbAot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KHIncHJpbnRmKCJcXCUlJWQiLCB2YWx1ZSk7JywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X3J1bnRpbWVfcHJpbnRm
X2Zvcm1hdChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgKLSAgICAgICAgICAgIHIn
ZnByaW50ZihmaWxlLCAiJXEiLCB2YWx1ZSk7JywKLSAgICAgICAgICAgICclcSBpbiBmb3JtYXQg
c3RyaW5ncyBpcyBkZXByZWNhdGVkLiAgVXNlICVsbCBpbnN0ZWFkLicKLSAgICAgICAgICAgICcg
IFtydW50aW1lL3ByaW50Zl9mb3JtYXRdIFszXScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgIHInYXByaW50ZihmaWxlLCAiVGhlIG51bWJlciBpcyAlMTJxIiwgdmFs
dWUpOycsCi0gICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4g
IFVzZSAlbGwgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0
XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ3ByaW50
ZihmaWxlLCAiVGhlIG51bWJlciBpcyIgIiUtMTJxIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAn
JXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVhZC4nCi0g
ICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0XSBbM10nKQotCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ3ByaW50ZihmaWxlLCAiVGhlIG51bWJlciBp
cyIgIiUrMTJxIiwgdmFsdWUpOycsCi0gICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3Mg
aXMgZGVwcmVjYXRlZC4gIFVzZSAlbGwgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGlt
ZS9wcmludGZfZm9ybWF0XSBbM10nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICByJ3ByaW50ZihmaWxlLCAiVGhlIG51bWJlciBpcyIgIiUgMTJxIiwgdmFsdWUpOycs
Ci0gICAgICAgICAgICAnJXEgaW4gZm9ybWF0IHN0cmluZ3MgaXMgZGVwcmVjYXRlZC4gIFVzZSAl
bGwgaW5zdGVhZC4nCi0gICAgICAgICAgICAnICBbcnVudGltZS9wcmludGZfZm9ybWF0XSBbM10n
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICByJ3NucHJpbnRmKGZp
bGUsICJOZXZlciBtaXggJWQgYW5kICUxJGQgcGFybWFldGVycyEiLCB2YWx1ZSk7JywKLSAgICAg
ICAgICAgICclTiQgZm9ybWF0cyBhcmUgdW5jb252ZW50aW9uYWwuICBUcnkgcmV3cml0aW5nIHRv
IGF2b2lkIHRoZW0uJwotICAgICAgICAgICAgJyAgW3J1bnRpbWUvcHJpbnRmX2Zvcm1hdF0gWzJd
JykKLQotICAgIGRlZiBhc3NlcnRfbGludExvZ0NvZGVPbkVycm9yKHNlbGYsIGNvZGUsIGV4cGVj
dGVkX21lc3NhZ2UpOgotICAgICAgICAjIFNwZWNpYWwgYXNzZXJ0X2xpbnQgd2hpY2ggbG9ncyB0
aGUgaW5wdXQgY29kZSBvbiBlcnJvci4KLSAgICAgICAgcmVzdWx0ID0gc2VsZi5wZXJmb3JtX3Np
bmdsZV9saW5lX2xpbnQoY29kZSwgJ2Zvby5jcHAnKQotICAgICAgICBpZiByZXN1bHQgIT0gZXhw
ZWN0ZWRfbWVzc2FnZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnRm9yIGNvZGU6ICIlcyJcbkdv
dDogIiVzIlxuRXhwZWN0ZWQ6ICIlcyInCi0gICAgICAgICAgICAgICAgICAgICAgJSAoY29kZSwg
cmVzdWx0LCBleHBlY3RlZF9tZXNzYWdlKSkKLQotICAgIGRlZiB0ZXN0X2J1aWxkX3N0b3JhZ2Vf
Y2xhc3Moc2VsZik6Ci0gICAgICAgIHF1YWxpZmllcnMgPSBbTm9uZSwgJ2NvbnN0JywgJ3ZvbGF0
aWxlJ10KLSAgICAgICAgc2lnbnMgPSBbTm9uZSwgJ3NpZ25lZCcsICd1bnNpZ25lZCddCi0gICAg
ICAgIHR5cGVzID0gWyd2b2lkJywgJ2NoYXInLCAnaW50JywgJ2Zsb2F0JywgJ2RvdWJsZScsCi0g
ICAgICAgICAgICAgICAgICdzY2hhcicsICdpbnQ4JywgJ3VpbnQ4JywgJ2ludDE2JywgJ3VpbnQx
NicsCi0gICAgICAgICAgICAgICAgICdpbnQzMicsICd1aW50MzInLCAnaW50NjQnLCAndWludDY0
J10KLSAgICAgICAgc3RvcmFnZV9jbGFzc2VzID0gWydhdXRvJywgJ2V4dGVybicsICdyZWdpc3Rl
cicsICdzdGF0aWMnLCAndHlwZWRlZiddCi0KLSAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19l
cnJvcl9tZXNzYWdlID0gKAotICAgICAgICAgICAgJ1N0b3JhZ2UgY2xhc3MgKHN0YXRpYywgZXh0
ZXJuLCB0eXBlZGVmLCBldGMpIHNob3VsZCBiZSBmaXJzdC4nCi0gICAgICAgICAgICAnICBbYnVp
bGQvc3RvcmFnZV9jbGFzc10gWzVdJykKLQotICAgICAgICAjIFNvbWUgZXhwbGljaXQgY2FzZXMu
IExlZ2FsIGluIEMrKywgZGVwcmVjYXRlZCBpbiBDOTkuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoJ2NvbnN0IGludCBzdGF0aWMgZm9vID0gNTsnLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJyb3JfbWVzc2FnZSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KCdjaGFyIHN0YXRpYyBmb287JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBidWls
ZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgnZG91YmxlIGNvbnN0IHN0YXRpYyBmb28gPSAyLjA7JywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBidWlsZF9zdG9yYWdlX2NsYXNzX2Vycm9yX21lc3NhZ2UpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgndWludDY0IHR5cGVkZWYgdW5zaWduZWRfbG9uZ19sb25nOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ2ludCByZWdpc3RlciBmb28gPSAwOycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgYnVpbGRfc3RvcmFnZV9jbGFzc19lcnJvcl9tZXNzYWdlKQotCi0g
ICAgICAgICMgU2luY2UgdGhlcmUgYXJlIGEgdmVyeSBsYXJnZSBudW1iZXIgb2YgcG9zc2liaWxp
dGllcywgcmFuZG9tbHkKLSAgICAgICAgIyBjb25zdHJ1Y3QgZGVjbGFyYXRpb25zLgotICAgICAg
ICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBkZWNsYXJhdGlvbiBpcyBsb2dnZWQgaWYgdGhlcmUncyBh
biBlcnJvci4KLSAgICAgICAgIyBTZWVkIGdlbmVyYXRvciB3aXRoIGFuIGludGVnZXIgZm9yIGFi
c29sdXRlIHJlcHJvZHVjaWJpbGl0eS4KLSAgICAgICAgcmFuZG9tLnNlZWQoMjUpCi0gICAgICAg
IGZvciB1bnVzZWRfaSBpbiByYW5nZSgxMCk6Ci0gICAgICAgICAgICAjIEJ1aWxkIHVwIHJhbmRv
bSBsaXN0IG9mIG5vbi1zdG9yYWdlLWNsYXNzIGRlY2xhcmF0aW9uIHNwZWNzLgotICAgICAgICAg
ICAgb3RoZXJfZGVjbF9zcGVjcyA9IFtyYW5kb20uY2hvaWNlKHF1YWxpZmllcnMpLCByYW5kb20u
Y2hvaWNlKHNpZ25zKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tLmNo
b2ljZSh0eXBlcyldCi0gICAgICAgICAgICAjIHJlbW92ZSBOb25lCi0gICAgICAgICAgICBvdGhl
cl9kZWNsX3NwZWNzID0gZmlsdGVyKGxhbWJkYSB4OiB4IGlzIG5vdCBOb25lLCBvdGhlcl9kZWNs
X3NwZWNzKQotCi0gICAgICAgICAgICAjIHNodWZmbGUKLSAgICAgICAgICAgIHJhbmRvbS5zaHVm
ZmxlKG90aGVyX2RlY2xfc3BlY3MpCi0KLSAgICAgICAgICAgICMgaW5zZXJ0IHN0b3JhZ2UgY2xh
c3MgYWZ0ZXIgdGhlIGZpcnN0Ci0gICAgICAgICAgICBzdG9yYWdlX2NsYXNzID0gcmFuZG9tLmNo
b2ljZShzdG9yYWdlX2NsYXNzZXMpCi0gICAgICAgICAgICBpbnNlcnRpb25fcG9pbnQgPSByYW5k
b20ucmFuZGludCgxLCBsZW4ob3RoZXJfZGVjbF9zcGVjcykpCi0gICAgICAgICAgICBkZWNsX3Nw
ZWNzID0gKG90aGVyX2RlY2xfc3BlY3NbMDppbnNlcnRpb25fcG9pbnRdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICsgW3N0b3JhZ2VfY2xhc3NdCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICsgb3RoZXJfZGVjbF9zcGVjc1tpbnNlcnRpb25fcG9pbnQ6XSkKLQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGludExvZ0NvZGVPbkVycm9yKAotICAgICAgICAgICAgICAgICcgJy5qb2luKGRl
Y2xfc3BlY3MpICsgJzsnLAotICAgICAgICAgICAgICAgIGJ1aWxkX3N0b3JhZ2VfY2xhc3NfZXJy
b3JfbWVzc2FnZSkKLQotICAgICAgICAgICAgIyBidXQgbm8gZXJyb3IgaWYgc3RvcmFnZSBjbGFz
cyBpcyBmaXJzdAotICAgICAgICAgICAgc2VsZi5hc3NlcnRfbGludExvZ0NvZGVPbkVycm9yKAot
ICAgICAgICAgICAgICAgIHN0b3JhZ2VfY2xhc3MgKyAnICcgKyAnICcuam9pbihvdGhlcl9kZWNs
X3NwZWNzKSwKLSAgICAgICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2xlZ2FsX2NvcHly
aWdodChzZWxmKToKLSAgICAgICAgbGVnYWxfY29weXJpZ2h0X21lc3NhZ2UgPSAoCi0gICAgICAg
ICAgICAnTm8gY29weXJpZ2h0IG1lc3NhZ2UgZm91bmQuICAnCi0gICAgICAgICAgICAnWW91IHNo
b3VsZCBoYXZlIGEgbGluZTogIkNvcHlyaWdodCBbeWVhcl0gPENvcHlyaWdodCBPd25lcj4iJwot
ICAgICAgICAgICAgJyAgW2xlZ2FsL2NvcHlyaWdodF0gWzVdJykKLQotICAgICAgICBjb3B5cmln
aHRfbGluZSA9ICcvLyBDb3B5cmlnaHQgMjAwOCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLicKLQotICAgICAgICBmaWxlX3BhdGggPSAnbXlkaXIvZ29vZ2xlY2xpZW50L2Zvby5jcHAn
Ci0KLSAgICAgICAgIyBUaGVyZSBzaG91bGQgYmUgYSBjb3B5cmlnaHQgbWVzc2FnZSBpbiB0aGUg
Zmlyc3QgMTAgbGluZXMKLSAgICAgICAgZXJyb3JfY29sbGVjdG9yID0gRXJyb3JDb2xsZWN0b3Io
c2VsZi5hc3NlcnRfKQotICAgICAgICBjcHBsaW50LnByb2Nlc3NfZmlsZV9kYXRhKGZpbGVfcGF0
aCwgJ2NwcCcsIFtdLCBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KAotICAgICAgICAgICAgMSwKLSAgICAgICAgICAgIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRfbGlz
dCgpLmNvdW50KGxlZ2FsX2NvcHlyaWdodF9tZXNzYWdlKSkKLQotICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCi0gICAgICAgIGNwcGxpbnQucHJv
Y2Vzc19maWxlX2RhdGEoCi0gICAgICAgICAgICBmaWxlX3BhdGgsICdjcHAnLAotICAgICAgICAg
ICAgWycnIGZvciB1bnVzZWRfaSBpbiByYW5nZSgxMCldICsgW2NvcHlyaWdodF9saW5lXSwKLSAg
ICAgICAgICAgIGVycm9yX2NvbGxlY3RvcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCi0g
ICAgICAgICAgICAxLAotICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yLnJlc3VsdF9saXN0KCku
Y291bnQobGVnYWxfY29weXJpZ2h0X21lc3NhZ2UpKQotCi0gICAgICAgICMgVGVzdCB0aGF0IHdh
cm5pbmcgaXNuJ3QgaXNzdWVkIGlmIENvcHlyaWdodCBsaW5lIGFwcGVhcnMgZWFybHkgZW5vdWdo
LgotICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8p
Ci0gICAgICAgIGNwcGxpbnQucHJvY2Vzc19maWxlX2RhdGEoZmlsZV9wYXRoLCAnY3BwJywgW2Nv
cHlyaWdodF9saW5lXSwgZXJyb3JfY29sbGVjdG9yKQotICAgICAgICBmb3IgbWVzc2FnZSBpbiBl
cnJvcl9jb2xsZWN0b3IucmVzdWx0X2xpc3QoKToKLSAgICAgICAgICAgIGlmIG1lc3NhZ2UuZmlu
ZCgnbGVnYWwvY29weXJpZ2h0JykgIT0gLTE6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdV
bmV4cGVjdGVkIGVycm9yOiAlcycgJSBtZXNzYWdlKQotCi0gICAgICAgIGVycm9yX2NvbGxlY3Rv
ciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKLSAgICAgICAgY3BwbGludC5wcm9jZXNz
X2ZpbGVfZGF0YSgKLSAgICAgICAgICAgIGZpbGVfcGF0aCwgJ2NwcCcsCi0gICAgICAgICAgICBb
JycgZm9yIHVudXNlZF9pIGluIHJhbmdlKDkpXSArIFtjb3B5cmlnaHRfbGluZV0sCi0gICAgICAg
ICAgICBlcnJvcl9jb2xsZWN0b3IpCi0gICAgICAgIGZvciBtZXNzYWdlIGluIGVycm9yX2NvbGxl
Y3Rvci5yZXN1bHRfbGlzdCgpOgotICAgICAgICAgICAgaWYgbWVzc2FnZS5maW5kKCdsZWdhbC9j
b3B5cmlnaHQnKSAhPSAtMToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0ZWQg
ZXJyb3I6ICVzJyAlIG1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2luY3JlbWVudChz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgnKmNvdW50Kys7JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ2hhbmdpbmcgcG9pbnRlciBpbnN0ZWFkIG9mIHZhbHVlIChvciB1bnVz
ZWQgdmFsdWUgb2YgJwotICAgICAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRvciopLiAgW3J1
bnRpbWUvaW52YWxpZF9pbmNyZW1lbnRdIFs1XScpCi0KLWNsYXNzIENsZWFuc2VkTGluZXNUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgotICAgICAgICBs
aW5lcyA9IFsnTGluZSAxJywKLSAgICAgICAgICAgICAgICAgJ0xpbmUgMicsCi0gICAgICAgICAg
ICAgICAgICdMaW5lIDMgLy8gQ29tbWVudCB0ZXN0JywKLSAgICAgICAgICAgICAgICAgJ0xpbmUg
NCAiZm9vIiddCi0KLSAgICAgICAgY2xlYW5fbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMo
bGluZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxpbmVzLCBjbGVhbl9saW5lcy5yYXdf
bGluZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQsIGNsZWFuX2xpbmVzLm51bV9saW5l
cygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnTGluZSAxJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdMaW5lIDInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xp
bmUgMyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0xpbmUgNCAiZm9vIiddLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGVhbl9saW5lcy5saW5lcykKLQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhbJ0xpbmUgMScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnTGlu
ZSAyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdMaW5lIDMgJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdMaW5lIDQgIiInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xlYW5fbGluZXMuZWxpZGVkKQotCi0gICAgZGVmIHRlc3RfaW5pdF9lbXB0eShzZWxmKToKLSAg
ICAgICAgY2xlYW5fbGluZXMgPSBjcHBsaW50LkNsZWFuc2VkTGluZXMoW10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKFtdLCBjbGVhbl9saW5lcy5yYXdfbGluZXMpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDAsIGNsZWFuX2xpbmVzLm51bV9saW5lcygpKQotCi0gICAgZGVmIHRlc3Rf
Y29sbGFwc2Vfc3RyaW5ncyhzZWxmKToKLSAgICAgICAgY29sbGFwc2UgPSBjcHBsaW50LkNsZWFu
c2VkTGluZXMuY29sbGFwc2Vfc3RyaW5ncwotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIiIn
LCBjb2xsYXBzZSgnIiInKSkgICAgICAgICAgICAgIyAiIiAgICAgKGVtcHR5KQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnIiIiJywgY29sbGFwc2UoJyIiIicpKSAgICAgICAgICAgIyAiIiIg
ICAgKGJhZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29sbGFwc2UoJyJ4eXoi
JykpICAgICAgICAgICMgInh5eiIgIChzdHJpbmcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCciIicsIGNvbGxhcHNlKCciXFxcIiInKSkgICAgICAgICAjICJcIiIgICAoc3RyaW5nKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscygnIiInLCBjb2xsYXBzZSgnIlwnIicpKSAgICAgICAgICAg
IyAiJyIgICAgKHN0cmluZykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyJcIicsIGNvbGxh
cHNlKCciXCInKSkgICAgICAgICAgICMgIlwiICAgIChiYWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCciIicsIGNvbGxhcHNlKCciXFxcXCInKSkgICAgICAgICAjICJcXCIgICAoc3RyaW5n
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnIicsIGNvbGxhcHNlKCciXFxcXFxcIicpKSAg
ICAgICAgIyAiXFxcIiAgKGJhZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyIiJywgY29s
bGFwc2UoJyJcXFxcXFxcXCInKSkgICAgICMgIlxcXFwiIChzdHJpbmcpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdcJycpKSAgICAgICAgICMgJycgICAg
IChlbXB0eSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1wnXCcnLCBjb2xsYXBzZSgnXCdh
XCcnKSkgICAgICAgICMgJ2EnICAgIChjaGFyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygn
XCdcJycsIGNvbGxhcHNlKCdcJ1xcXCdcJycpKSAgICAgIyAnXCcnICAgKGNoYXIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCdcJycsIGNvbGxhcHNlKCdcJ1xcXCcnKSkgICAgICAgICAjICdc
JyAgICAoYmFkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgY29sbGFwc2UoJ1xcMDEy
JykpICAgICAgICAgICAgIyAnXDAxMicgKGNoYXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCcnLCBjb2xsYXBzZSgnXFx4ZkYwJykpICAgICAgICAgICAjICdceGZGMCcgKGNoYXIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBjb2xsYXBzZSgnXFxuJykpICAgICAgICAgICAgICAj
ICdcbicgKGNoYXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcIycsIGNvbGxhcHNlKCdc
XCMnKSkgICAgICAgICAgICAjICdcIycgKGJhZCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cygnU3RyaW5nUmVwbGFjZShib2R5LCAiIiwgIiIpOycsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbGxhcHNlKCdTdHJpbmdSZXBsYWNlKGJvZHksICJcXFxcIiwgIlxcXFxcXFxcIik7Jykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdcJ1wnICIiJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29sbGFwc2UoJ1wnIlwnICJmb28iJykpCi0KLQotY2xhc3MgT3JkZXJPZkluY2x1
ZGVzVGVzdChDcHBsaW50VGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5pbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKLQotICAgICAgICAj
IENoZWF0IG9zLnBhdGguYWJzcGF0aCBjYWxsZWQgaW4gRmlsZUluZm8gY2xhc3MuCi0gICAgICAg
IHNlbGYub3NfcGF0aF9hYnNwYXRoX29yaWcgPSBvcy5wYXRoLmFic3BhdGgKLSAgICAgICAgb3Mu
cGF0aC5hYnNwYXRoID0gbGFtYmRhIHZhbHVlOiB2YWx1ZQotCi0gICAgZGVmIHRlYXJEb3duKHNl
bGYpOgotICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBzZWxmLm9zX3BhdGhfYWJzcGF0aF9vcmln
Ci0KLSAgICBkZWYgdGVzdF90cnlfZHJvcF9jb21tb25fc3VmZml4ZXMoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9mb28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhl
cygnZm9vL2Zvby1pbmwuaCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vYmFyL2Zv
bycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4
ZXMoJ2Zvby9iYXIvZm9vX2lubC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvby9m
b28nLCBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Zvby5jcHAnKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2Zvb191bnVzdWFsaW50ZXJuYWwnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vX3Vu
dXN1YWxpbnRlcm5hbC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3VmZml4ZXMoJ190ZXN0LmNw
cCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0ZXN0JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkKLQotCi1j
bGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcGxpbnRUZXN0QmFzZSk6Ci0gICAgZGVmIHNldFVw
KHNlbGYpOgotICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUgPSBjcHBsaW50Ll9JbmNsdWRlU3Rh
dGUoKQotCi0gICAgICAgICMgQ2hlYXQgb3MucGF0aC5hYnNwYXRoIGNhbGxlZCBpbiBGaWxlSW5m
byBjbGFzcy4KLSAgICAgICAgc2VsZi5vc19wYXRoX2Fic3BhdGhfb3JpZyA9IG9zLnBhdGguYWJz
cGF0aAotICAgICAgICBvcy5wYXRoLmFic3BhdGggPSBsYW1iZGEgdmFsdWU6IHZhbHVlCi0KLSAg
ICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIG9zLnBhdGguYWJzcGF0aCA9IHNlbGYub3Nf
cGF0aF9hYnNwYXRoX29yaWcKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRl
cl9fbm9fY29uZmlnKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWFkZXIgZmls
ZSBzaG91bGQgbm90IGNvbnRhaW4gV2ViQ29yZSBjb25maWcuaC4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3Bw
bGludC5fQ09ORklHX0hFQURFUiwgVHJ1ZSkpCi0KLSAgICBkZWYgdGVzdF9jaGVja19uZXh0X2lu
Y2x1ZGVfb3JkZXJfX25vX3NlbGYoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
YWRlciBmaWxlIHNob3VsZCBub3QgY29udGFpbiBpdHNlbGYuJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcGxp
bnQuX1BSSU1BUllfSEVBREVSLCBUcnVlKSkKLSAgICAgICAgIyBUZXN0IGFjdHVhbCBjb2RlIHRv
IG1ha2Ugc3VyZSB0aGF0IGhlYWRlciB0eXBlcyBhcmUgY29ycmVjdGx5IGFzc2lnbmVkLgotICAg
ICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnRm9vLmgnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgIkZvby5oIlxuJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0hlYWRlciBmaWxlIHNob3Vs
ZCBub3QgY29udGFpbiBpdHNlbGYuIFNob3VsZCBiZTogYWxwaGFiZXRpY2FsbHkgc29ydGVkLicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1aWxkL2luY2x1
ZGVfb3JkZXJdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNr
KCdGb29CYXIuaCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcj
aW5jbHVkZSAiRm9vLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fbGlrZWx5
X3RoZW5fY29uZmlnKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb3VuZCBoZWFk
ZXIgdGhpcyBmaWxlIGltcGxlbWVudHMgYmVmb3JlIFdlYkNvcmUgY29uZmlnLmguJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRl
X29yZGVyKGNwcGxpbnQuX1BSSU1BUllfSEVBREVSLCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ0ZvdW5kIFdlYkNvcmUgY29uZmlnLmggYWZ0ZXIgYSBoZWFkZXIgdGhpcyBmaWxl
IGltcGxlbWVudHMuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfc3Rh
dGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcGxpbnQuX0NPTkZJR19IRUFERVIsIEZhbHNl
KSkKLQotICAgIGRlZiB0ZXN0X2NoZWNrX25leHRfaW5jbHVkZV9vcmRlcl9fb3RoZXJfdGhlbl9j
b25maWcoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIG90aGVyIGhlYWRl
ciBiZWZvcmUgV2ViQ29yZSBjb25maWcuaC4nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0X2luY2x1ZGVfb3JkZXIoY3BwbGludC5fT1RIRVJf
SEVBREVSLCBGYWxzZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIFdlYkNvcmUg
Y29uZmlnLmggYWZ0ZXIgb3RoZXIgaGVhZGVyLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5pbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlcihjcHBsaW50Ll9DT05G
SUdfSEVBREVSLCBGYWxzZSkpCi0KLSAgICBkZWYgdGVzdF9jaGVja19uZXh0X2luY2x1ZGVfb3Jk
ZXJfX2NvbmZpZ190aGVuX290aGVyX3RoZW5fbGlrZWx5KHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCcnLCBzZWxmLmluY2x1ZGVfc3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVy
KGNwcGxpbnQuX0NPTkZJR19IRUFERVIsIEZhbHNlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnRm91bmQgb3RoZXIgaGVhZGVyIGJlZm9yZSBhIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50
cy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaW5jbHVkZV9zdGF0ZS5jaGVja19u
ZXh0X2luY2x1ZGVfb3JkZXIoY3BwbGludC5fT1RIRVJfSEVBREVSLCBGYWxzZSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvdW5kIGhlYWRlciB0aGlzIGZpbGUgaW1wbGVtZW50cyBhZnRl
ciBvdGhlciBoZWFkZXIuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVf
c3RhdGUuY2hlY2tfbmV4dF9pbmNsdWRlX29yZGVyKGNwcGxpbnQuX1BSSU1BUllfSEVBREVSLCBG
YWxzZSkpCi0KLSAgICBkZWYgdGVzdF9jaGVja19hbHBoYWJldGljYWxfaW5jbHVkZV9vcmRlcihz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJhLmgi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
Yy5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1
ZGUgImIuaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdB
bHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVtLiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5oJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJhLmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYi5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImMuaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8YXNzZXJ0Lmg+
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
YmFyLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWxw
aGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWlsZC9pbmNsdWRlX29yZGVyXSBbNF0nKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uaCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmFyLmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8YXNz
ZXJ0Lmg+XG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykK
LQotICAgIGRlZiB0ZXN0X2NoZWNrX2xpbmVfYnJlYWtfYWZ0ZXJfb3duX2hlYWRlcihzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImJhci5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ1lvdSBzaG91bGQgYWRkIGEgYmxhbmsgbGluZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxl
XCdzIG93biBoZWFkZXIuICBbYnVpbGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLQotICAgICAgICBz
ZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXIuaCJcbicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRl
c3RfY2hlY2tfcHJlcHJvY2Vzc29yX2luX2luY2x1ZGVfc2VjdGlvbihzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaWZkZWYgQkFaXG4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmF6LmgiXG4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZWxzZVxuJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvb2Jhci5oIlxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmIlxuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhci5o
IlxuJywgIyBObyBmbGFnIGJlY2F1c2UgcHJldmlvdXMgaXMgaW4gcHJlcHJvY2Vzc29yIHNlY3Rp
b24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5o
IlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaWZkZWYgQkFaXG4nCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmF6LmgiXG4n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjZW5kaWYiXG4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiYmFyLmgi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
YS5oIlxuJywgIyBTaG91bGQgc3RpbGwgZmxhZyB0aGlzLgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4gIFtidWls
ZC9pbmNsdWRlX29yZGVyXSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1
bGVzX2NoZWNrKCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2lmZGVmIEJBWlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnI2luY2x1ZGUgImJhei5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImJhci5oIlxuJyAjU2hvdWxkIHN0aWxsIGZsYWcg
dGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2VuZGlmIlxu
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FscGhhYmV0aWNh
bCBzb3J0aW5nIHByb2JsZW0uICBbYnVpbGQvaW5jbHVkZV9vcmRlcl0gWzRdJykKLQotICAgICAg
ICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiZm9vLmgi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpZmRlZiBCQVpcbicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJiYXouaCJcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRpZiJcbicKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpZmRlZiBGT09CQVJcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJmb29i
YXIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNlbmRp
ZiJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRl
ICJiYXIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNp
bmNsdWRlICJhLmgiXG4nLCAjIFNob3VsZCBzdGlsbCBmbGFnIHRoaXMuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljYWwgc29ydGluZyBwcm9ibGVt
LiAgW2J1aWxkL2luY2x1ZGVfb3JkZXJdIFs0XScpCi0KLSAgICAgICAgIyBDaGVjayB0aGF0IGFm
dGVyIGFuIGFscmVhZHkgaW5jbHVkZWQgZXJyb3IsIHRoZSBzb3J0aW5nIHJ1bGVzIHN0aWxsIHdv
cmsuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdmb28uY3BwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25m
aWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNs
dWRlICJmb28uaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUg
ImZvby5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2lu
Y2x1ZGUgImcuaCJcbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICciZm9vLmgiIGFscmVhZHkgaW5jbHVkZWQgYXQgZm9vLmNwcDoxICBbYnVpbGQvaW5jbHVkZV0g
WzRdJykKLQotICAgIGRlZiB0ZXN0X2NoZWNrX3d0Zl9pbmNsdWRlcyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ2Zvby5jcHAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImNvbmZpZy5oIlxuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnI2luY2x1ZGUgImZvby5oIlxu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD5cbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnKQot
ICAgICAgICBzZWxmLmFzc2VydF9sYW5ndWFnZV9ydWxlc19jaGVjaygnZm9vLmNwcCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgi
XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAi
Zm9vLmgiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbicK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJ3dGYv
QXNzZXJ0aW9ucy5oIlxuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3d0ZiBpbmNsdWRlcyBzaG91bGQgYmUgPHd0Zi9maWxlLmg+IGluc3RlYWQgb2YgInd0Zi9m
aWxlLmgiLicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgW2J1
aWxkL2luY2x1ZGVdIFs0XScpCi0KLSAgICBkZWYgdGVzdF9jbGFzc2lmeV9pbmNsdWRlKHNlbGYp
OgotICAgICAgICBjbGFzc2lmeV9pbmNsdWRlID0gY3BwbGludC5fY2xhc3NpZnlfaW5jbHVkZQot
ICAgICAgICBpbmNsdWRlX3N0YXRlID0gY3BwbGludC5fSW5jbHVkZVN0YXRlKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9DT05GSUdfSEVBREVSLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9mb28uY3BwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb25maWcuaCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY3BwbGludC5fUFJJTUFSWV9IRUFERVIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9wdWJsaWMvZm9vLmgn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UsIGluY2x1
ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcGxpbnQuX1BSSU1BUllfSEVB
REVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9pbnRl
cm5hbC9mb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdmb28vb3RoZXIvcHVibGljL2Zvby5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2xh
c3NpZnlfaW5jbHVkZSgnZm9vL2ludGVybmFsL2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Zvby9vdGhlci9wdWJsaWMvZm9vcC5oJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRl
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9PVEhFUl9IRUFERVIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vL2Zvby5jcHAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZycsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBpbmNsdWRlX3N0YXRlKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBsaW50Ll9QUklNQVJZX0hFQURFUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNsdWRlKCdmb29DdXN0b20uY3BwJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb28uaCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkp
Ci0gICAgICAgICMgVHJpY2t5IGV4YW1wbGUgd2hlcmUgYm90aCBpbmNsdWRlcyBtaWdodCBiZSBj
bGFzc2lmaWVkIGFzIHByaW1hcnkuCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVz
X2NoZWNrKCdTY3JvbGxiYXJUaGVtZVdpbmNlLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiU2Nyb2xsYmFyVGhlbWVXaW5j
ZS5oIlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjaW5jbHVkZSAiU2Nyb2xs
YmFyLmgiXG4nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJykK
LSAgICAgICAgc2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1Njcm9sbGJhclRoZW1l
V2luY2UuY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNp
bmNsdWRlICJjb25maWcuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJyNpbmNsdWRlICJTY3JvbGxiYXIuaCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ1xuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lV2luY2UuaCJcbicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGb3VuZCBoZWFkZXIgdGhpcyBmaWxlIGlt
cGxlbWVudHMgYWZ0ZXIgYSBoZWFkZXIgdGhpcyBmaWxlIGltcGxlbWVudHMuJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIFNob3VsZCBiZTogY29uZmlnLmgsIHBy
aW1hcnkgaGVhZGVyLCBibGFuayBsaW5lLCBhbmQgdGhlbiBhbHBoYWJldGljYWxseSBzb3J0ZWQu
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnICBbYnVpbGQvaW5j
bHVkZV9vcmRlcl0gWzRdJykKLQotICAgIGRlZiB0ZXN0X3RyeV9kcm9wX2NvbW1vbl9zdWZmaXhl
cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcGxpbnQuX2Ry
b3BfY29tbW9uX3N1ZmZpeGVzKCdmb28vZm9vLWlubC5oJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2Zvby9iYXIvZm9vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9k
cm9wX2NvbW1vbl9zdWZmaXhlcygnZm9vL2Jhci9mb29faW5sLmgnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnZm9vL2ZvbycsIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCdmb28v
Zm9vLmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28vZm9vX3VudXN1YWxpbnRl
cm5hbCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY3BwbGludC5fZHJvcF9jb21tb25fc3Vm
Zml4ZXMoJ2Zvby9mb29fdW51c3VhbGludGVybmFsLmgnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9z
dWZmaXhlcygnX3Rlc3QuY3BwJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Rlc3QnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGNwcGxpbnQuX2Ryb3BfY29tbW9uX3N1ZmZpeGVzKCd0
ZXN0LmNwcCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd0ZXN0JywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICBjcHBsaW50Ll9kcm9wX2NvbW1vbl9zdWZmaXhlcygndGVzdC5jcHAnKSkK
LQotY2xhc3MgQ2hlY2tGb3JGdW5jdGlvbkxlbmd0aHNUZXN0KENwcGxpbnRUZXN0QmFzZSk6Ci0g
ICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAjIFJlZHVjaW5nIHRoZXNlIHRocmVzaG9sZHMg
Zm9yIHRoZSB0ZXN0cyBzcGVlZHMgdXAgdGVzdHMgc2lnbmlmaWNhbnRseS4KLSAgICAgICAgc2Vs
Zi5vbGRfbm9ybWFsX3RyaWdnZXIgPSBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9OT1JNQUxfVFJJ
R0dFUgotICAgICAgICBzZWxmLm9sZF90ZXN0X3RyaWdnZXIgPSBjcHBsaW50Ll9GdW5jdGlvblN0
YXRlLl9URVNUX1RSSUdHRVIKLQotICAgICAgICBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9OT1JN
QUxfVFJJR0dFUiA9IDEwCi0gICAgICAgIGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUuX1RFU1RfVFJJ
R0dFUiA9IDI1Ci0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGNwcGxpbnQuX0Z1
bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VSID0gc2VsZi5vbGRfbm9ybWFsX3RyaWdnZXIKLSAg
ICAgICAgY3BwbGludC5fRnVuY3Rpb25TdGF0ZS5fVEVTVF9UUklHR0VSID0gc2VsZi5vbGRfdGVz
dF90cmlnZ2VyCi0KLSAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soc2VsZiwg
Y29kZSwgZXhwZWN0ZWRfbWVzc2FnZSk6Ci0gICAgICAgICIiIkNoZWNrIHdhcm5pbmdzIGZvciBs
b25nIGZ1bmN0aW9uIGJvZGllcyBhcmUgYXMgZXhwZWN0ZWQuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICBjb2RlOiBDKysgc291cmNlIGNvZGUgZXhwZWN0ZWQgdG8gZ2VuZXJhdGUgYSB3YXJu
aW5nIG1lc3NhZ2UuCi0gICAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZTogTWVzc2FnZSBleHBlY3Rl
ZCB0byBiZSBnZW5lcmF0ZWQgYnkgdGhlIEMrKyBjb2RlLgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5wZXJmb3JtX2Z1bmN0aW9uX2xlbmd0aHNfY2hlY2soY29kZSkpCi0KLSAgICBk
ZWYgdHJpZ2dlcl9saW5lcyhzZWxmLCBlcnJvcl9sZXZlbCk6Ci0gICAgICAgICIiIlJldHVybiBu
dW1iZXIgb2YgbGluZXMgbmVlZGVkIHRvIHRyaWdnZXIgYSBmdW5jdGlvbiBsZW5ndGggd2Fybmlu
Zy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYgc2V0dGluZyBm
b3IgY3BwbGludC4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgIE51bWJlciBvZiBsaW5l
cyBuZWVkZWQgdG8gdHJpZ2dlciBhIGZ1bmN0aW9uIGxlbmd0aCB3YXJuaW5nLgotICAgICAgICAi
IiIKLSAgICAgICAgcmV0dXJuIGNwcGxpbnQuX0Z1bmN0aW9uU3RhdGUuX05PUk1BTF9UUklHR0VS
ICogMiAqKiBlcnJvcl9sZXZlbAotCi0gICAgZGVmIHRyaWdnZXJfdGVzdF9saW5lcyhzZWxmLCBl
cnJvcl9sZXZlbCk6Ci0gICAgICAgICIiIlJldHVybiBudW1iZXIgb2YgbGluZXMgbmVlZGVkIHRv
IHRyaWdnZXIgYSB0ZXN0IGZ1bmN0aW9uIGxlbmd0aCB3YXJuaW5nLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgZXJyb3JfbGV2ZWw6IC0tdiBzZXR0aW5nIGZvciBjcHBsaW50LgotCi0gICAg
ICAgIFJldHVybnM6Ci0gICAgICAgICAgTnVtYmVyIG9mIGxpbmVzIG5lZWRlZCB0byB0cmlnZ2Vy
IGEgdGVzdCBmdW5jdGlvbiBsZW5ndGggd2FybmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJl
dHVybiBjcHBsaW50Ll9GdW5jdGlvblN0YXRlLl9URVNUX1RSSUdHRVIgKiAyICoqIGVycm9yX2xl
dmVsCi0KLSAgICBkZWYgYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uKHNl
bGYsIGxpbmVzLCBlcnJvcl9sZXZlbCk6Ci0gICAgICAgICIiIkdlbmVyYXRlIGxvbmcgZnVuY3Rp
b24gZGVmaW5pdGlvbiBhbmQgY2hlY2sgd2FybmluZ3MgYXJlIGFzIGV4cGVjdGVkLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgbGluZXM6IE51bWJlciBvZiBsaW5lcyB0byBnZW5lcmF0ZS4K
LSAgICAgICAgICBlcnJvcl9sZXZlbDogIC0tdiBzZXR0aW5nIGZvciBjcHBsaW50LgotICAgICAg
ICAiIiIKLSAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl9saW5lcyhjcHBsaW50
Ll92ZXJib3NlX2xldmVsKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aHNf
Y2hlY2soCi0gICAgICAgICAgICAndm9pZCB0ZXN0KGludCB4KScgKyBzZWxmLmZ1bmN0aW9uX2Jv
ZHkobGluZXMpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJl
IHByZWZlcnJlZDogJwotICAgICAgICAgICAgICd0ZXN0KCkgaGFzICVkIG5vbi1jb21tZW50IGxp
bmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGlu
ZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScKLSAgICAg
ICAgICAgICAlIChsaW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3JfbGV2ZWwpKSkKLQotICAgIGRl
ZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZiwgbGluZXMp
OgotICAgICAgICAiIiJHZW5lcmF0ZSBzaG9ydGVyIGZ1bmN0aW9uIGRlZmluaXRpb24gYW5kIGNo
ZWNrIG5vIHdhcm5pbmcgaXMgcHJvZHVjZWQuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBs
aW5lczogTnVtYmVyIG9mIGxpbmVzIHRvIGdlbmVyYXRlLgotICAgICAgICAiIiIKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRl
c3QoaW50IHgpJyArIHNlbGYuZnVuY3Rpb25fYm9keShsaW5lcyksCi0gICAgICAgICAgICAnJykK
LQotICAgIGRlZiBhc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKHNl
bGYsIGVycm9yX2xldmVsKToKLSAgICAgICAgIiIiR2VuZXJhdGUgYW5kIGNoZWNrIGZ1bmN0aW9u
IGF0IHRoZSB0cmlnZ2VyIGxldmVsIGZvciAtLXYgc2V0dGluZy4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgIGVycm9yX2xldmVsOiAtLXYgc2V0dGluZyBmb3IgY3BwbGludC4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9u
KHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2xldmVsKQotCi0gICAgZGVmIGFz
c2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJyb3JfbGV2ZWwoc2VsZiwgZXJyb3Jf
bGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgY2hlY2sgZnVuY3Rpb24ganVzdCBiZWxv
dyB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNldHRpbmcuCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCi0gICAgICAgICIi
IgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihz
ZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpIC0gMSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbGV2ZWwgLSAxKQotCi0gICAg
ZGVmIGFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYWJvdmVfZXJyb3JfbGV2ZWwoc2VsZiwg
ZXJyb3JfbGV2ZWwpOgotICAgICAgICAiIiJHZW5lcmF0ZSBhbmQgY2hlY2sgZnVuY3Rpb24ganVz
dCBhYm92ZSB0aGUgdHJpZ2dlciBsZXZlbCBmb3IgLS12IHNldHRpbmcuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICBlcnJvcl9sZXZlbDogLS12IHNldHRpbmcgZm9yIGNwcGxpbnQuCi0gICAg
ICAgICIiIgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5p
dGlvbihzZWxmLnRyaWdnZXJfbGluZXMoZXJyb3JfbGV2ZWwpICsgMSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbGV2ZWwpCi0KLSAg
ICBkZWYgZnVuY3Rpb25fYm9keShzZWxmLCBudW1iZXJfb2ZfbGluZXMpOgotICAgICAgICByZXR1
cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0KCk7XG4nICogbnVtYmVyX29mX2xp
bmVzICsgJ30nCi0KLSAgICBkZWYgZnVuY3Rpb25fYm9keV93aXRoX2JsYW5rX2xpbmVzKHNlbGYs
IG51bWJlcl9vZl9saW5lcyk6Ci0gICAgICAgIHJldHVybiAnIHtcbicgKyAnICAgIHRoaXNfaXNf
anVzdF9hX3Rlc3QoKTtcblxuJyAqIG51bWJlcl9vZl9saW5lcyArICd9JwotCi0gICAgZGVmIGZ1
bmN0aW9uX2JvZHlfd2l0aF9ub19saW50cyhzZWxmLCBudW1iZXJfb2ZfbGluZXMpOgotICAgICAg
ICByZXR1cm4gJyB7XG4nICsgJyAgICB0aGlzX2lzX2p1c3RfYV90ZXN0KCk7ICAvLyBOT0xJTlRc
bicgKiBudW1iZXJfb2ZfbGluZXMgKyAnfScKLQotICAgICMgVGVzdCBsaW5lIGxlbmd0aCBjaGVj
a3MuCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlY2xhcmF0aW9uKHNlbGYp
OgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAg
ICAgJ3ZvaWQgdGVzdCgpOycsICAjIE5vdCBhIGZ1bmN0aW9uIGRlZmluaXRpb24KLSAgICAgICAg
ICAgICcnKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlY2xhcmF0aW9u
X3dpdGhfYmxvY2tfZm9sbG93aW5nKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAgICAgKCd2b2lkIHRlc3QoKTtcbicKLSAgICAgICAg
ICAgICArIHNlbGYuZnVuY3Rpb25fYm9keSg2NikpLCAgIyBOb3QgYSBmdW5jdGlvbiBkZWZpbml0
aW9uCi0gICAgICAgICAgICAnJykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVj
a19jbGFzc19kZWZpbml0aW9uKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9s
ZW5ndGhzX2NoZWNrKCAgIyBOb3QgYSBmdW5jdGlvbiBkZWZpbml0aW9uCi0gICAgICAgICAgICAn
Y2xhc3MgVGVzdCcgKyBzZWxmLmZ1bmN0aW9uX2JvZHkoNjYpICsgJzsnLAotICAgICAgICAgICAg
JycpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfdHJpdmlhbChzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAg
ICd2b2lkIHRlc3QoKSB7fScsICAjIE5vdCBjb3VudGVkCi0gICAgICAgICAgICAnJykKLQotICAg
IGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19lbXB0eShzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICd2b2lkIHRlc3Qo
KSB7XG59JywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkwKHNlbGYpOgotICAgICAgICBvbGRfdmVy
Ym9zaXR5ID0gY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwoMCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fb2soc2VsZi50cmlnZ2VyX2xpbmVz
KDApIC0gMSkKLSAgICAgICAgY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0
eSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3Nl
dmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xkX3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJi
b3NlX2xldmVsKDApCi0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19k
ZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygwKSkKLSAgICAgICAgY3BwbGludC5fc2V0
X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0eSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xl
bmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MChzZWxmKToKLSAgICAgICAgb2xk
X3ZlcmJvc2l0eSA9IGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKDApCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgwKQotICAgICAg
ICBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbChvbGRfdmVyYm9zaXR5KQotCi0gICAgZGVmIHRl
c3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkxdjAoc2Vs
Zik6Ci0gICAgICAgIG9sZF92ZXJib3NpdHkgPSBjcHBsaW50Ll9zZXRfdmVyYm9zZV9sZXZlbCgw
KQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJyb3Jf
bGV2ZWwoMSkKLSAgICAgICAgY3BwbGludC5fc2V0X3ZlcmJvc2VfbGV2ZWwob2xkX3ZlcmJvc2l0
eSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2F0X3Nl
dmVyaXR5MXYwKHNlbGYpOgotICAgICAgICBvbGRfdmVyYm9zaXR5ID0gY3BwbGludC5fc2V0X3Zl
cmJvc2VfbGV2ZWwoMCkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2F0X2Vycm9yX2xldmVsKDEpCi0gICAgICAgIGNwcGxpbnQuX3NldF92ZXJib3NlX2xldmVsKG9s
ZF92ZXJib3NpdHkpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5p
dGlvbl9iZWxvd19zZXZlcml0eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19kZWZpbml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSAtIDEpCi0K
LSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9hdF9zZXZlcml0
eTEoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZp
bml0aW9uX29rKHNlbGYudHJpZ2dlcl9saW5lcygxKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9u
X2xlbmd0aF9jaGVja19kZWZpbml0aW9uX2Fib3ZlX3NldmVyaXR5MShzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2Fib3ZlX2Vycm9yX2xldmVsKDEpCi0K
LSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbl9zZXZlcml0eTFf
cGx1c19ibGFua3Moc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJv
cl9saW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRy
aWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9zZV9sZXZlbCgp
KQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAg
ICAgJ3ZvaWQgdGVzdF9ibGFua3MoaW50IHgpJyArIHNlbGYuZnVuY3Rpb25fYm9keShlcnJvcl9s
aW5lcyksCi0gICAgICAgICAgICAoJ1NtYWxsIGFuZCBmb2N1c2VkIGZ1bmN0aW9ucyBhcmUgcHJl
ZmVycmVkOiAnCi0gICAgICAgICAgICAgJ3Rlc3RfYmxhbmtzKCkgaGFzICVkIG5vbi1jb21tZW50
IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQg
bGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCi0g
ICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3JfbGV2ZWwpKQot
Ci0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2NvbXBsZXhfZGVmaW5pdGlvbl9z
ZXZlcml0eTEoc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9s
aW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0gICAgICAgIHRyaWdn
ZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9zZV9sZXZlbCgpKQot
ICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAgICAgICAgICAg
KCdteV9uYW1lc3BhY2U6Om15X290aGVyX25hbWVzcGFjZTo6TXlWZXJ5TG9uZ1R5cGVOYW1lKlxu
JwotICAgICAgICAgICAgICdteV9uYW1lc3BhY2U6Om15X290aGVyX25hbWVzcGFjZTo6TXlGdW5j
dGlvbihpbnQgYXJnMSwgY2hhciogYXJnMiknCi0gICAgICAgICAgICAgKyBzZWxmLmZ1bmN0aW9u
X2JvZHkoZXJyb3JfbGluZXMpKSwKLSAgICAgICAgICAgICgnU21hbGwgYW5kIGZvY3VzZWQgZnVu
Y3Rpb25zIGFyZSBwcmVmZXJyZWQ6ICcKLSAgICAgICAgICAgICAnbXlfbmFtZXNwYWNlOjpteV9v
dGhlcl9uYW1lc3BhY2U6Ok15RnVuY3Rpb24oKScKLSAgICAgICAgICAgICAnIGhhcyAlZCBub24t
Y29tbWVudCBsaW5lcyAnCi0gICAgICAgICAgICAgJyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVk
aW5nICVkIGxpbmVzKS4nCi0gICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFsl
ZF0nKQotICAgICAgICAgICAgJSAoZXJyb3JfbGluZXMsIHRyaWdnZXJfbGV2ZWwsIGVycm9yX2xl
dmVsKSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0aW9uX3Nl
dmVyaXR5MV9mb3JfdGVzdChzZWxmKToKLSAgICAgICAgZXJyb3JfbGV2ZWwgPSAxCi0gICAgICAg
IGVycm9yX2xpbmVzID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoZXJyb3JfbGV2ZWwpICsgMQot
ICAgICAgICB0cmlnZ2VyX2xldmVsID0gc2VsZi50cmlnZ2VyX3Rlc3RfbGluZXMoY3BwbGludC5f
dmVyYm9zZV9sZXZlbCgpKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2No
ZWNrKAotICAgICAgICAgICAgJ1RFU1RfRihUZXN0LCBNdXRhdG9yKScgKyBzZWxmLmZ1bmN0aW9u
X2JvZHkoZXJyb3JfbGluZXMpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5j
dGlvbnMgYXJlIHByZWZlcnJlZDogJwotICAgICAgICAgICAgICdURVNUX0YoVGVzdCwgTXV0YXRv
cikgaGFzICVkIG5vbi1jb21tZW50IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdn
ZXJlZCBieSBleGNlZWRpbmcgJWQgbGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxp
dHkvZm5fc2l6ZV0gWyVkXScpCi0gICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9s
ZXZlbCwgZXJyb3JfbGV2ZWwpKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNr
X2RlZmluaXRpb25fc2V2ZXJpdHkxX2Zvcl9zcGxpdF9saW5lX3Rlc3Qoc2VsZik6Ci0gICAgICAg
IGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl90ZXN0
X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJpZ2dlcl9sZXZlbCA9IHNlbGYudHJp
Z2dlcl90ZXN0X2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2ZWwoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICgnVEVTVF9GKEdvb2ds
ZVVwZGF0ZVJlY292ZXJ5UmVnaXN0cnlQcm90ZWN0ZWRUZXN0LFxuJwotICAgICAgICAgICAgICcg
ICAgRml4R29vZ2xlVXBkYXRlX0FsbFZhbHVlc19NYWNoaW5lQXBwKScgICMgbm90ZTogNCBzcGFj
ZXMKLSAgICAgICAgICAgICArIHNlbGYuZnVuY3Rpb25fYm9keShlcnJvcl9saW5lcykpLAotICAg
ICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwot
ICAgICAgICAgICAgICdURVNUX0YoR29vZ2xlVXBkYXRlUmVjb3ZlcnlSZWdpc3RyeVByb3RlY3Rl
ZFRlc3QsICcgICMgMSBzcGFjZQotICAgICAgICAgICAgICdGaXhHb29nbGVVcGRhdGVfQWxsVmFs
dWVzX01hY2hpbmVBcHApIGhhcyAlZCBub24tY29tbWVudCBsaW5lcyAnCi0gICAgICAgICAgICAg
JyhlcnJvciB0cmlnZ2VyZWQgYnkgZXhjZWVkaW5nICVkIGxpbmVzKS4nCi0gICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2ZuX3NpemVdIFslZF0nKQotICAgICAgICAgICAgJSAoZXJyb3JfbGlu
ZXMrMSwgdHJpZ2dlcl9sZXZlbCwgZXJyb3JfbGV2ZWwpKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rp
b25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX2Zvcl9iYWRfdGVzdF9kb2VzbnRf
YnJlYWsoc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAgICAgICBlcnJvcl9saW5l
cyA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGVycm9yX2xldmVsKSArIDEKLSAgICAgICAgdHJp
Z2dlcl9sZXZlbCA9IHNlbGYudHJpZ2dlcl90ZXN0X2xpbmVzKGNwcGxpbnQuX3ZlcmJvc2VfbGV2
ZWwoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAg
ICAgICAgICgnVEVTVF9GKCcKLSAgICAgICAgICAgICArIHNlbGYuZnVuY3Rpb25fYm9keShlcnJv
cl9saW5lcykpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBmdW5jdGlvbnMgYXJl
IHByZWZlcnJlZDogJwotICAgICAgICAgICAgICdURVNUX0YgaGFzICVkIG5vbi1jb21tZW50IGxp
bmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNlZWRpbmcgJWQgbGlu
ZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0gWyVkXScpCi0gICAg
ICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3JfbGV2ZWwpKQotCi0g
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fc2V2ZXJpdHkxX3dp
dGhfZW1iZWRkZWRfbm9fbGludHMoc2VsZik6Ci0gICAgICAgIGVycm9yX2xldmVsID0gMQotICAg
ICAgICBlcnJvcl9saW5lcyA9IHNlbGYudHJpZ2dlcl9saW5lcyhlcnJvcl9sZXZlbCkgKyAxCi0g
ICAgICAgIHRyaWdnZXJfbGV2ZWwgPSBzZWxmLnRyaWdnZXJfbGluZXMoY3BwbGludC5fdmVyYm9z
ZV9sZXZlbCgpKQotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAot
ICAgICAgICAgICAgJ3ZvaWQgdGVzdChpbnQgeCknICsgc2VsZi5mdW5jdGlvbl9ib2R5X3dpdGhf
bm9fbGludHMoZXJyb3JfbGluZXMpLAotICAgICAgICAgICAgKCdTbWFsbCBhbmQgZm9jdXNlZCBm
dW5jdGlvbnMgYXJlIHByZWZlcnJlZDogJwotICAgICAgICAgICAgICd0ZXN0KCkgaGFzICVkIG5v
bi1jb21tZW50IGxpbmVzICcKLSAgICAgICAgICAgICAnKGVycm9yIHRyaWdnZXJlZCBieSBleGNl
ZWRpbmcgJWQgbGluZXMpLicKLSAgICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvZm5fc2l6ZV0g
WyVkXScpCi0gICAgICAgICAgICAlIChlcnJvcl9saW5lcywgdHJpZ2dlcl9sZXZlbCwgZXJyb3Jf
bGV2ZWwpKQotCi0gICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25f
c2V2ZXJpdHkxX3dpdGhfbm9fbGludChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rp
b25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICgndm9pZCB0ZXN0KGludCB4KScgKyBzZWxm
LmZ1bmN0aW9uX2JvZHkoc2VsZi50cmlnZ2VyX2xpbmVzKDEpKQotICAgICAgICAgICAgICsgJyAg
Ly8gTk9MSU5UIC0tIGxvbmcgZnVuY3Rpb24nKSwKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkyKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoMikKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDIpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTIoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgyKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHkzKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoMykKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5MyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDMpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCgzKQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHk0KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoNCkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX3NldmVyaXR5NChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Ro
X2NoZWNrX2F0X2Vycm9yX2xldmVsKDQpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5ndGhf
Y2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg0KQotCi0gICAgZGVm
IHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25fYmVsb3dfc2V2ZXJpdHk1KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhfY2hlY2tfYmVsb3dfZXJy
b3JfbGV2ZWwoNSkKLQotICAgIGRlZiB0ZXN0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19kZWZpbml0
aW9uX2F0X3NldmVyaXR5NShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVu
Z3RoX2NoZWNrX2F0X2Vycm9yX2xldmVsKDUpCi0KLSAgICBkZWYgdGVzdF9mdW5jdGlvbl9sZW5n
dGhfY2hlY2tfZGVmaW5pdGlvbl9hYm92ZV9zZXZlcml0eTUoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0X2Z1bmN0aW9uX2xlbmd0aF9jaGVja19hYm92ZV9lcnJvcl9sZXZlbCg1KQotCi0gICAg
ZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX2NoZWNrX2RlZmluaXRpb25faHVnZV9saW5lcyhzZWxm
KToKLSAgICAgICAgIyA1IGlzIHRoZSBsaW1pdAotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlv
bl9sZW5ndGhfY2hlY2tfZGVmaW5pdGlvbihzZWxmLnRyaWdnZXJfbGluZXMoMTApLCA1KQotCi0g
ICAgZGVmIHRlc3RfZnVuY3Rpb25fbGVuZ3RoX25vdF9kZXRlcm1pbmFibGUoc2VsZik6Ci0gICAg
ICAgICMgTWFjcm8gaW52b2NhdGlvbiB3aXRob3V0IHRlcm1pbmF0aW5nIHNlbWljb2xvbi4KLSAg
ICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVjaygKLSAgICAgICAgICAgICdN
QUNSTyhhcmcpJywKLSAgICAgICAgICAgICcnKQotCi0gICAgICAgICMgTWFjcm8gd2l0aCB1bmRl
cnNjb3JlcwotICAgICAgICBzZWxmLmFzc2VydF9mdW5jdGlvbl9sZW5ndGhzX2NoZWNrKAotICAg
ICAgICAgICAgJ01BQ1JPX1dJVEhfVU5ERVJTQ09SRVMoYXJnMSwgYXJnMiwgYXJnMyknLAotICAg
ICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfZnVuY3Rpb25fbGVuZ3Roc19jaGVj
aygKLSAgICAgICAgICAgICdOb25NYWNybyhhcmcpJywKLSAgICAgICAgICAgICdMaW50IGZhaWxl
ZCB0byBmaW5kIHN0YXJ0IG9mIGZ1bmN0aW9uIGJvZHkuJwotICAgICAgICAgICAgJyAgW3JlYWRh
YmlsaXR5L2ZuX3NpemVdIFs1XScpCi0KLQotY2xhc3MgTm9Ob25WaXJ0dWFsRGVzdHJ1Y3RvcnNU
ZXN0KENwcGxpbnRUZXN0QmFzZSk6Ci0KLSAgICBkZWYgdGVzdF9ub19lcnJvcihzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3Mg
Rm9vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIH5Gb28oKTsKLSAgICAgICAgICAgICAg
ICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAg
ICAgICcnKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICcnJ2NsYXNzIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCBpbmxpbmUgfkZv
bygpOwotICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAgICAgICAgICAg
ICAgIH07JycnLAotICAgICAgICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAg
ICBpbmxpbmUgdmlydHVhbCB+Rm9vKCk7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB2b2lk
IGZvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAgICAgICAnJykKLQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb286
OkdvbyB7Ci0gICAgICAgICAgICAgICAgICAgdmlydHVhbCB+R29vKCk7Ci0gICAgICAgICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGdvbygpOwotICAgICAgICAgICAgICAgfTsnJycsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJ2NsYXNzIEZvbyB7IHZvaWQgZm9vKCk7IH07JywKLSAgICAgICAgICAgICdNb3JlIHRoYW4g
b25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRlc3BhY2UvbmV3bGluZV0gWzRdJykK
LQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydj
bGFzcyBRdWFsaWZpZWQ6OkdvbyA6IHB1YmxpYyBGb28gewotICAgICAgICAgICAgICAgICAgIHZp
cnR1YWwgdm9pZCBnb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJycp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgIyBM
aW5lLWVuZGluZyA6Ci0gICAgICAgICAgICAnJydjbGFzcyBHb28gOgotICAgICAgICAgICAgICAg
cHVibGljIEZvbyB7Ci0gICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgdm9pZCBnb28oKTsKLSAg
ICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAgJ0xhYmVscyBzaG91bGQgYWx3YXlzIGJl
IGluZGVudGVkIGF0IGxlYXN0IG9uZSBzcGFjZS4gIElmIHRoaXMgaXMgYSAnCi0gICAgICAgICAg
ICAnbWVtYmVyLWluaXRpYWxpemVyIGxpc3QgaW4gYSBjb25zdHJ1Y3RvciwgdGhlIGNvbG9uIHNo
b3VsZCBiZSBvbiB0aGUgJwotICAgICAgICAgICAgJ2xpbmUgYWZ0ZXIgdGhlIGRlZmluaXRpb24g
aGVhZGVyLiAgW3doaXRlc3BhY2UvbGFiZWxzXSBbNF0nKQotCi0gICAgZGVmIHRlc3Rfbm9fZGVz
dHJ1Y3Rvcl93aGVuX3ZpcnR1YWxfbmVlZGVkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnRfcmUoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAg
ICAgICAgICAgIHZpcnR1YWwgdm9pZCBmb28oKTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAg
ICAgICAgICAgJ1RoZSBjbGFzcyBGb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0
b3InKQotCi0gICAgZGVmIHRlc3RfZGVzdHJ1Y3Rvcl9ub25fdmlydHVhbF93aGVuX3ZpcnR1YWxf
bmVlZGVkKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCi0g
ICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICAgIH5Gb28oKTsKLSAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9Oycn
JywKLSAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRzIGEgdmlydHVhbCBk
ZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0X25vX3dhcm5fd2hlbl9kZXJpdmVkKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFz
cyBGb28gOiBwdWJsaWMgR29vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9v
KCk7Ci0gICAgICAgICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRl
c3RfaW50ZXJuYWxfYnJhY2VzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnRfcmUoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28gewotICAgICAgICAgICAgICAgICAg
IGVudW0gR29vIHsKLSAgICAgICAgICAgICAgICAgICAgICAgR09PCi0gICAgICAgICAgICAgICAg
ICAgfTsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAg
ICAgICB9OycnJywKLSAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRzIGEg
dmlydHVhbCBkZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0X2lubmVyX2NsYXNzX25lZWRzX3Zp
cnR1YWxfZGVzdHJ1Y3RvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9s
aW50X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vIHsKLSAgICAgICAgICAgICAgICAgICBj
bGFzcyBHb28gewotICAgICAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZ29vKCk7Ci0g
ICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgIH07JycnLAotICAgICAgICAgICAg
J1RoZSBjbGFzcyBHb28gcHJvYmFibHkgbmVlZHMgYSB2aXJ0dWFsIGRlc3RydWN0b3InKQotCi0g
ICAgZGVmIHRlc3Rfb3V0ZXJfY2xhc3NfbmVlZHNfdmlydHVhbF9kZXN0cnVjdG9yKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnRfcmUoCi0gICAgICAgICAgICAnJydj
bGFzcyBGb28gewotICAgICAgICAgICAgICAgICAgIGNsYXNzIEdvbyB7Ci0gICAgICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAg
ICAgICAgICB9OycnJywKLSAgICAgICAgICAgICdUaGUgY2xhc3MgRm9vIHByb2JhYmx5IG5lZWRz
IGEgdmlydHVhbCBkZXN0cnVjdG9yJykKLQotICAgIGRlZiB0ZXN0X3F1YWxpZmllZF9jbGFzc19u
ZWVkc192aXJ0dWFsX2Rlc3RydWN0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRp
X2xpbmVfbGludF9yZSgKLSAgICAgICAgICAgICcnJ2NsYXNzIFF1YWxpZmllZDo6Rm9vIHsKLSAg
ICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9Oycn
JywKLSAgICAgICAgICAgICdUaGUgY2xhc3MgUXVhbGlmaWVkOjpGb28gcHJvYmFibHkgbmVlZHMg
YSB2aXJ0dWFsIGRlc3RydWN0b3InKQotCi0gICAgZGVmIHRlc3RfbXVsdGlfbGluZV9kZWNsYXJh
dGlvbl9ub19lcnJvcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
X3JlKAotICAgICAgICAgICAgJycnY2xhc3MgRm9vCi0gICAgICAgICAgICAgICAgICAgOiBwdWJs
aWMgR29vIHsKLSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAg
ICAgICAgICB9OycnJywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfbXVsdGlfbGlu
ZV9kZWNsYXJhdGlvbl93aXRoX2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnJydjbGFzcyBGb28KLSAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgZm9vKCk7Ci0gICAgICAgICAgICAgICB9
OycnJywKLSAgICAgICAgICAgIFsnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBw
cmV2aW91cyBsaW5lICAnCi0gICAgICAgICAgICAgJ1t3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJywK
LSAgICAgICAgICAgICAnVGhlIGNsYXNzIEZvbyBwcm9iYWJseSBuZWVkcyBhIHZpcnR1YWwgZGVz
dHJ1Y3RvciBkdWUgdG8gaGF2aW5nICcKLSAgICAgICAgICAgICAndmlydHVhbCBtZXRob2Qocyks
IG9uZSBkZWNsYXJlZCBhdCBsaW5lIDIuICBbcnVudGltZS92aXJ0dWFsXSBbNF0nXSkKLQotCi1j
bGFzcyBDcHBMaW50U3RhdGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9l
cnJvcl9jb3VudChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgY3BwbGludC5l
cnJvcl9jb3VudCgpKQotICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLmluY3JlbWVudF9l
cnJvcl9jb3VudCgpCi0gICAgICAgIGNwcGxpbnQuX2NwcGxpbnRfc3RhdGUuaW5jcmVtZW50X2Vy
cm9yX2NvdW50KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMiwgY3BwbGludC5lcnJvcl9j
b3VudCgpKQotICAgICAgICBjcHBsaW50Ll9jcHBsaW50X3N0YXRlLnJlc2V0X2Vycm9yX2NvdW50
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgY3BwbGludC5lcnJvcl9jb3VudCgpKQot
Ci0KLWNsYXNzIFdlYktpdFN0eWxlVGVzdChDcHBsaW50VGVzdEJhc2UpOgotCi0gICAgIyBmb3Ig
aHR0cDovL3dlYmtpdC5vcmcvY29kaW5nL2NvZGluZy1zdHlsZS5odG1sCi0gICAgZGVmIHRlc3Rf
aW5kZW50YXRpb24oc2VsZik6Ci0gICAgICAgICMgMS4gVXNlIHNwYWNlcywgbm90IHRhYnMuIFRh
YnMgc2hvdWxkIG9ubHkgYXBwZWFyIGluIGZpbGVzIHRoYXQKLSAgICAgICAgIyAgICByZXF1aXJl
IHRoZW0gZm9yIHNlbWFudGljIG1lYW5pbmcsIGxpa2UgTWFrZWZpbGVzLgotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKLSAg
ICAgICAgICAgICcgICAgaW50IGdvbztcbicKLSAgICAgICAgICAgICd9OycsCi0gICAgICAgICAg
ICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAg
J2NsYXNzIEZvbyB7XG4nCi0gICAgICAgICAgICAnXHRpbnQgZ29vO1xuJwotICAgICAgICAgICAg
J307JywKLSAgICAgICAgICAgICdUYWIgZm91bmQ7IGJldHRlciB0byB1c2Ugc3BhY2VzICBbd2hp
dGVzcGFjZS90YWJdIFsxXScpCi0KLSAgICAgICAgIyAyLiBUaGUgaW5kZW50IHNpemUgaXMgNCBz
cGFjZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICdjbGFzcyBGb28ge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZ29vO1xuJwotICAgICAgICAg
ICAgJ307JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgRm9vIHtcbicKLSAgICAgICAgICAgICcgICBpbnQg
Z29vO1xuJwotICAgICAgICAgICAgJ307JywKLSAgICAgICAgICAgICdXZWlyZCBudW1iZXIgb2Yg
c3BhY2VzIGF0IGxpbmUtc3RhcnQuICBBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBb
d2hpdGVzcGFjZS9pbmRlbnRdIFszXScpCi0gICAgICAgICMgRklYTUU6IE5vIHRlc3RzIGZvciA4
LXNwYWNlcy4KLQotICAgICAgICAjIDMuIEluIGEgaGVhZGVyLCBjb2RlIGluc2lkZSBhIG5hbWVz
cGFjZSBzaG91bGQgYmUgaW5kZW50ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKLSAgICAgICAgICAg
ICcgICAgY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJyAgICAgICAgaW50IG15VmFy
aWFibGU7XG4nCi0gICAgICAgICAgICAnICAgIH07XG4nCi0gICAgICAgICAgICAnfScsCi0gICAg
ICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uaCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgT3V0ZXJOYW1lc3BhY2Uge1xu
JwotICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgSW5uZXJOYW1lc3BhY2Uge1xuJwotICAgICAg
ICAgICAgJyAgICAgICAgY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJyAgICAgICAg
fTtcbicKLSAgICAgICAgICAgICcgICAgfTtcbicKLSAgICAgICAgICAgICd9JywKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgJ2Zvby5oJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcbicKLSAgICAgICAg
ICAgICcjaWYgMFxuJwotICAgICAgICAgICAgJyAgICBjbGFzcyBEb2N1bWVudCB7XG4nCi0gICAg
ICAgICAgICAnICAgIH07XG4nCi0gICAgICAgICAgICAnI2VuZGlmXG4nCi0gICAgICAgICAgICAn
fScsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdmb28uaCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7
XG4nCi0gICAgICAgICAgICAnY2xhc3MgRG9jdW1lbnQge1xuJwotICAgICAgICAgICAgJ307XG4n
Ci0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnSW4gYSBoZWFkZXIsIGNvZGUgaW5zaWRl
IGEgbmFtZXNwYWNlIHNob3VsZCBiZSBpbmRlbnRlZC4nCi0gICAgICAgICAgICAnICBbd2hpdGVz
cGFjZS9pbmRlbnRdIFs0XScsCi0gICAgICAgICAgICAnZm9vLmgnKQotCi0gICAgICAgICMgNC4g
SW4gYW4gaW1wbGVtZW50YXRpb24gZmlsZSAoZmlsZXMgd2l0aCB0aGUgZXh0ZW5zaW9uIC5jcHAs
IC5jCi0gICAgICAgICMgICAgb3IgLm1tKSwgY29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxk
IG5vdCBiZSBpbmRlbnRlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ25hbWVzcGFjZSBXZWJDb3JlIHtcblxuJwotICAgICAgICAgICAgJ0RvY3Vt
ZW50OjpGb28oKVxuJwotICAgICAgICAgICAgJyAgICA6IGZvbyhiYXIpXG4nCi0gICAgICAgICAg
ICAnICAgICwgYm9vKGZhcilcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAg
IHN0dWZmKCk7XG4nCi0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnJywKLSAgICAgICAg
ICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAg
ICAgICAgICAgJ25hbWVzcGFjZSBPdXRlck5hbWVzcGFjZSB7XG4nCi0gICAgICAgICAgICAnbmFt
ZXNwYWNlIElubmVyTmFtZXNwYWNlIHtcbicKLSAgICAgICAgICAgICdEb2N1bWVudDo6Rm9vKCkg
eyB9XG4nCi0gICAgICAgICAgICAnfScsCi0gICAgICAgICAgICAnJywKLSAgICAgICAgICAgICdm
b28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJyAgICBuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKLSAgICAgICAgICAgICdzdGFydDogIC8v
IFBvaW50bGVzcyBjb2RlLCBidXQgdGVzdHMgdGhlIGxhYmVsIHJlZ2V4cC5cbicKLSAgICAgICAg
ICAgICcgICAgZ290byBzdGFydDtcbicKLSAgICAgICAgICAgICcgICAgfScsCi0gICAgICAgICAg
ICAnJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlf
bGluZV9saW50KAotICAgICAgICAgICAgJyAgICBuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbicKLSAg
ICAgICAgICAgICcgICAgdm9pZCBEb2N1bWVudDo6Rm9vKClcbicKLSAgICAgICAgICAgICcgICAg
e1xuJwotICAgICAgICAgICAgJ3N0YXJ0OiAgLy8gaW5maW5pdGUgbG9vcHMgYXJlIGZ1biFcbicK
LSAgICAgICAgICAgICcgICAgICAgIGdvdG8gc3RhcnQ7XG4nCi0gICAgICAgICAgICAnICAgIH0n
LAotICAgICAgICAgICAgJycsCi0gICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICduYW1lc3BhY2UgV2ViQ29yZSB7
XG4nCi0gICAgICAgICAgICAnICAgIERvY3VtZW50OjpGb28oKSB7IH1cbicKLSAgICAgICAgICAg
ICd9JywKLSAgICAgICAgICAgICdJbiBhbiBpbXBsZW1lbnRhdGlvbiBmaWxlLCBjb2RlIGluc2lk
ZSBhIG5hbWVzcGFjZSBzaG91bGQgbm90IGJlIGluZGVudGVkLicKLSAgICAgICAgICAgICcgIFt3
aGl0ZXNwYWNlL2luZGVudF0gWzRdJywKLSAgICAgICAgICAgICdmb28uY3BwJykKLQotICAgICAg
ICAjIDUuIEEgY2FzZSBsYWJlbCBzaG91bGQgbGluZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVt
ZW50LiBUaGUKLSAgICAgICAgIyAgICBjYXNlIHN0YXRlbWVudCBpcyBpbmRlbnRlZC4KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0Y2gg
KGNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicK
LSAgICAgICAgICAgICcgICAgY2FzZSBiYXJDb25kaXRpb246XG4nCi0gICAgICAgICAgICAnICAg
ICAgICBpKys7XG4nCi0gICAgICAgICAgICAnICAgICAgICBicmVhaztcbicKLSAgICAgICAgICAg
ICcgICAgZGVmYXVsdDpcbicKLSAgICAgICAgICAgICcgICAgICAgIGktLTtcbicKLSAgICAgICAg
ICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0
aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7XG4nCi0g
ICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICAg
ICAgc3dpdGNoIChvdGhlckNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICAgICAgZGVm
YXVsdDpcbicKLSAgICAgICAgICAgICcgICAgICAgICAgICByZXR1cm47XG4nCi0gICAgICAgICAg
ICAnICAgICAgICB9XG4nCi0gICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAg
ICAnICAgICAgICBpLS07XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0gICAgICAgICAgICAn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAg
ICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAgICBjYXNlIGZvb0NvbmRp
dGlvbjogYnJlYWs7XG4nCi0gICAgICAgICAgICAnICAgIGRlZmF1bHQ6IHJldHVybjtcbicKLSAg
ICAgICAgICAgICcgICAgfVxuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0aW9uKSB7
XG4nCi0gICAgICAgICAgICAnICAgICAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKLSAgICAgICAg
ICAgICcgICAgICAgIGNhc2UgYmFyQ29uZGl0aW9uOlxuJwotICAgICAgICAgICAgJyAgICAgICAg
ICAgIGkrKztcbicKLSAgICAgICAgICAgICcgICAgICAgICAgICBicmVhaztcbicKLSAgICAgICAg
ICAgICcgICAgICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgaS0tO1xu
JwotICAgICAgICAgICAgJyAgICB9XG4nLAotICAgICAgICAgICAgJ0EgY2FzZSBsYWJlbCBzaG91
bGQgbm90IGJlIGluZGVudGVkLCBidXQgbGluZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50
LicKLSAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRp
dGlvbikge1xuJwotICAgICAgICAgICAgJyAgICAgICAgY2FzZSBmb29Db25kaXRpb246XG4nCi0g
ICAgICAgICAgICAnICAgICAgICAgICAgYnJlYWs7XG4nCi0gICAgICAgICAgICAnICAgIGRlZmF1
bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgaS0tO1xuJwotICAgICAgICAgICAgJyAg
ICB9XG4nLAotICAgICAgICAgICAgJ0EgY2FzZSBsYWJlbCBzaG91bGQgbm90IGJlIGluZGVudGVk
LCBidXQgbGluZSB1cCB3aXRoIGl0cyBzd2l0Y2ggc3RhdGVtZW50LicKLSAgICAgICAgICAgICcg
IFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJyAgICBzd2l0Y2ggKGNvbmRpdGlvbikge1xuJwotICAgICAg
ICAgICAgJyAgICBjYXNlIGZvb0NvbmRpdGlvbjpcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBi
YXJDb25kaXRpb246XG4nCi0gICAgICAgICAgICAnICAgICAgICBzd2l0Y2ggKG90aGVyQ29uZGl0
aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgICAgICAgICAgZGVmYXVsdDpcbicKLSAgICAgICAg
ICAgICcgICAgICAgICAgICByZXR1cm47XG4nCi0gICAgICAgICAgICAnICAgICAgICB9XG4nCi0g
ICAgICAgICAgICAnICAgIGRlZmF1bHQ6XG4nCi0gICAgICAgICAgICAnICAgICAgICBpLS07XG4n
Ci0gICAgICAgICAgICAnICAgIH1cbicsCi0gICAgICAgICAgICAnQSBjYXNlIGxhYmVsIHNob3Vs
ZCBub3QgYmUgaW5kZW50ZWQsIGJ1dCBsaW5lIHVwIHdpdGggaXRzIHN3aXRjaCBzdGF0ZW1lbnQu
JwotICAgICAgICAgICAgJyAgW3doaXRlc3BhY2UvaW5kZW50XSBbNF0nKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAgIHN3aXRjaCAoY29uZGl0
aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGNhc2UgZm9vQ29uZGl0aW9uOlxuJwotICAgICAg
ICAgICAgJyAgICBjYXNlIGJhckNvbmRpdGlvbjpcbicKLSAgICAgICAgICAgICcgICAgaSsrO1xu
JwotICAgICAgICAgICAgJyAgICBicmVhaztcblxuJwotICAgICAgICAgICAgJyAgICBkZWZhdWx0
OlxuJwotICAgICAgICAgICAgJyAgICBpLS07XG4nCi0gICAgICAgICAgICAnICAgIH1cbicsCi0g
ICAgICAgICAgICAnTm9uLWxhYmVsIGNvZGUgaW5zaWRlIHN3aXRjaCBzdGF0ZW1lbnRzIHNob3Vs
ZCBiZSBpbmRlbnRlZC4nCi0gICAgICAgICAgICAnICBbd2hpdGVzcGFjZS9pbmRlbnRdIFs0XScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAg
c3dpdGNoIChjb25kaXRpb24pIHtcbicKLSAgICAgICAgICAgICcgICAgY2FzZSBmb29Db25kaXRp
b246XG4nCi0gICAgICAgICAgICAnICAgIGNhc2UgYmFyQ29uZGl0aW9uOlxuJwotICAgICAgICAg
ICAgJyAgICAgICAgc3dpdGNoIChvdGhlckNvbmRpdGlvbikge1xuJwotICAgICAgICAgICAgJyAg
ICAgICAgZGVmYXVsdDpcbicKLSAgICAgICAgICAgICcgICAgICAgIHJldHVybjtcbicKLSAgICAg
ICAgICAgICcgICAgICAgIH1cbicKLSAgICAgICAgICAgICcgICAgZGVmYXVsdDpcbicKLSAgICAg
ICAgICAgICcgICAgICAgIGktLTtcbicKLSAgICAgICAgICAgICcgICAgfVxuJywKLSAgICAgICAg
ICAgICdOb24tbGFiZWwgY29kZSBpbnNpZGUgc3dpdGNoIHN0YXRlbWVudHMgc2hvdWxkIGJlIGlu
ZGVudGVkLicKLSAgICAgICAgICAgICcgIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdJykKLQotICAg
ICAgICAjIDYuIEJvb2xlYW4gZXhwcmVzc2lvbnMgYXQgdGhlIHNhbWUgbmVzdGluZyBsZXZlbCB0
aGF0IHNwYW4KLSAgICAgICAgIyAgIG11bHRpcGxlIGxpbmVzIHNob3VsZCBoYXZlIHRoZWlyIG9w
ZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mCi0gICAgICAgICMgICB0aGUgbGluZSBpbnN0ZWFk
IG9mIHRoZSByaWdodCBzaWRlLgotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnICAgIHJldHVybiBhdHRyLT5uYW1lKCkgPT0gc3JjQXR0clxuJwotICAg
ICAgICAgICAgJyAgICAgICAgfHwgYXR0ci0+bmFtZSgpID09IGxvd3NyY0F0dHI7XG4nLAotICAg
ICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAg
ICAgICAgICcgICAgcmV0dXJuIGF0dHItPm5hbWUoKSA9PSBzcmNBdHRyIHx8XG4nCi0gICAgICAg
ICAgICAnICAgICAgICBhdHRyLT5uYW1lKCkgPT0gbG93c3JjQXR0cjtcbicsCi0gICAgICAgICAg
ICAnQm9vbGVhbiBleHByZXNzaW9ucyB0aGF0IHNwYW4gbXVsdGlwbGUgbGluZXMgc2hvdWxkIGhh
dmUgdGhlaXIgJwotICAgICAgICAgICAgJ29wZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRlIG9mIHRo
ZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpZGUuJwotICAgICAgICAgICAgJyAgW3doaXRl
c3BhY2Uvb3BlcmF0b3JzXSBbNF0nKQotCi0gICAgZGVmIHRlc3Rfc3BhY2luZyhzZWxmKToKLSAg
ICAgICAgIyAxLiBEbyBub3QgcGxhY2Ugc3BhY2VzIGFyb3VuZCB1bmFyeSBvcGVyYXRvcnMuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpKys7JywK
LSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0g
ICAgICAgICAgICAnaSArKzsnLAotICAgICAgICAgICAgJ0V4dHJhIHNwYWNlIGZvciBvcGVyYXRv
ciAgKys7ICBbd2hpdGVzcGFjZS9vcGVyYXRvcnNdIFs0XScpCi0KLSAgICAgICAgIyAyLiBEbyBw
bGFjZSBzcGFjZXMgYXJvdW5kIGJpbmFyeSBhbmQgdGVybmFyeSBvcGVyYXRvcnMuCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd5ID0gbSAqIHggKyBi
OycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50
KAotICAgICAgICAgICAgJ2YoYSwgYik7JywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnYyA9IGEgfCBiOycsCi0gICAg
ICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ3JldHVybiBjb25kaXRpb24gPyAxIDogMDsnLAotICAgICAgICAgICAgJycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd5PW0qeCtiOycs
Ci0gICAgICAgICAgICAnTWlzc2luZyBzcGFjZXMgYXJvdW5kID0gIFt3aGl0ZXNwYWNlL29wZXJh
dG9yc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2YoYSxiKTsnLAotICAgICAgICAgICAgJ01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCAgW3do
aXRlc3BhY2UvY29tbWFdIFszXScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdjID0gYXxiOycsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgIyBG
SVhNRTogV2UgY2Fubm90IGNhdGNoIHRoaXMgbGludCBlcnJvci4KLSAgICAgICAgIyBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICMgICAgICdyZXR1cm4gY29uZGl0aW9uID8g
MTowOycsCi0gICAgICAgICMgICAgICcnKQotCi0gICAgICAgICMgMy4gUGxhY2Ugc3BhY2VzIGJl
dHdlZW4gY29udHJvbCBzdGF0ZW1lbnRzIGFuZCB0aGVpciBwYXJlbnRoZXNlcy4KLSAgICAgICAg
c2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICBpZiAoY29uZGl0
aW9uKVxuJwotICAgICAgICAgICAgJyAgICAgICAgZG9JdCgpO1xuJywKLSAgICAgICAgICAgICcn
KQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnICAg
IGlmKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgICAgIGRvSXQoKTtcbicsCi0gICAg
ICAgICAgICAnTWlzc2luZyBzcGFjZSBiZWZvcmUgKCBpbiBpZiggIFt3aGl0ZXNwYWNlL3BhcmVu
c10gWzVdJykKLQotICAgICAgICAjIDQuIERvIG5vdCBwbGFjZSBzcGFjZXMgYmV0d2VlbiBhIGZ1
bmN0aW9uIGFuZCBpdHMgcGFyZW50aGVzZXMsCi0gICAgICAgICMgICAgb3IgYmV0d2VlbiBhIHBh
cmVudGhlc2lzIGFuZCBpdHMgY29udGVudC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ2YoYSwgYik7JywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZiAoYSwgYik7JywK
LSAgICAgICAgICAgICdFeHRyYSBzcGFjZSBiZWZvcmUgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hp
dGVzcGFjZS9wYXJlbnNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdmKCBhLCBiICk7JywKLSAgICAgICAgICAgIFsnRXh0cmEgc3BhY2Ug
YWZ0ZXIgKCBpbiBmdW5jdGlvbiBjYWxsICBbd2hpdGVzcGFjZS9wYXJlbnNdIFs0XScsCi0gICAg
ICAgICAgICAgJ0V4dHJhIHNwYWNlIGJlZm9yZSApICBbd2hpdGVzcGFjZS9wYXJlbnNdIFsyXSdd
KQotCi0gICAgZGVmIHRlc3RfbGluZV9icmVha2luZyhzZWxmKToKLSAgICAgICAgIyAxLiBFYWNo
IHN0YXRlbWVudCBzaG91bGQgZ2V0IGl0cyBvd24gbGluZS4KLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJyAgICB4Kys7XG4nCi0gICAgICAgICAgICAn
ICAgIHkrKztcbicKLSAgICAgICAgICAgICcgICAgaWYgKGNvbmRpdGlvbik7XG4nCi0gICAgICAg
ICAgICAnICAgICAgICBkb0l0KCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICcgICAgeCsrOyB5Kys7JywKLSAg
ICAgICAgICAgICdNb3JlIHRoYW4gb25lIGNvbW1hbmQgb24gdGhlIHNhbWUgbGluZSAgW3doaXRl
c3BhY2UvbmV3bGluZV0gWzRdJykKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0g
ICAgICAgICMgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnICAg
IGlmIChjb25kaXRpb24pIGRvSXQoKTtcbicsCi0gICAgICAgICMgICAgICcnKQotCi0gICAgICAg
ICMgMi4gQW4gZWxzZSBzdGF0ZW1lbnQgc2hvdWxkIGdvIG9uIHRoZSBzYW1lIGxpbmUgYXMgYSBw
cmVjZWRpbmcKLSAgICAgICAgIyAgIGNsb3NlIGJyYWNlIGlmIG9uZSBpcyBwcmVzZW50LCBlbHNl
IGl0IHNob3VsZCBsaW5lIHVwIHdpdGggdGhlCi0gICAgICAgICMgICBpZiBzdGF0ZW1lbnQuCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29u
ZGl0aW9uKSB7XG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4nCi0gICAgICAg
ICAgICAnICAgIGRvU29tZXRoaW5nQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9IGVsc2Uge1xu
JwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAgICAgICAgICcg
ICAgZG9Tb21ldGhpbmdFbHNlQWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAg
ICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xu
JwotICAgICAgICAgICAgJ2Vsc2VcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNl
KCk7XG4nLAotICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVf
bGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJyAgICBk
b1NvbWV0aGluZygpO1xuJwotICAgICAgICAgICAgJ2Vsc2Uge1xuJwotICAgICAgICAgICAgJyAg
ICBkb1NvbWV0aGluZ0Vsc2UoKTtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNl
QWdhaW4oKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJycpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRp
b24pIHtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAg
ICcgICAgZG9Tb21ldGhpbmdBZ2FpbigpO1xuJwotICAgICAgICAgICAgJ31cbicKLSAgICAgICAg
ICAgICdlbHNlIHtcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmdFbHNlKCk7XG4nCi0g
ICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZUFnYWluKCk7XG4nCi0gICAgICAgICAgICAn
fVxuJywKLSAgICAgICAgICAgICdBbiBlbHNlIHNob3VsZCBhcHBlYXIgb24gdGhlIHNhbWUgbGlu
ZSBhcyB0aGUgcHJlY2VkaW5nIH0gIFt3aGl0ZXNwYWNlL25ld2xpbmVdIFs0XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAoY29uZGl0aW9u
KSBkb1NvbWV0aGluZygpOyBlbHNlIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKLSAgICAgICAgICAg
IFsnTW9yZSB0aGFuIG9uZSBjb21tYW5kIG9uIHRoZSBzYW1lIGxpbmUgIFt3aGl0ZXNwYWNlL25l
d2xpbmVdIFs0XScsCi0gICAgICAgICAgICAgJ0Vsc2UgY2xhdXNlIHNob3VsZCBuZXZlciBiZSBv
biBzYW1lIGxpbmUgYXMgZWxzZSAodXNlIDIgbGluZXMpICBbd2hpdGVzcGFjZS9uZXdsaW5lXSBb
NF0nXSkKLSAgICAgICAgIyBGSVhNRTogTWFrZSB0aGlzIGZhaWwuCi0gICAgICAgICMgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAjICAgICAnaWYgKGNvbmRpdGlvbikgZG9T
b21ldGhpbmcoKTsgZWxzZSB7XG4nCi0gICAgICAgICMgICAgICcgICAgZG9Tb21ldGhpbmdFbHNl
KCk7XG4nCi0gICAgICAgICMgICAgICd9XG4nLAotICAgICAgICAjICAgICAnJykKLQotICAgICAg
ICAjIDMuIEFuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0
YXRlbWVudAotICAgICAgICAjICAgIHdoZW4gdGhlIHByaW9yIGlmIGNvbmNsdWRlcyB3aXRoIGEg
cmV0dXJuIHN0YXRlbWVudC4KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ2lmIChtb3RpdmF0ZWQpIHtcbicKLSAgICAgICAgICAgICcgICAgaWYgKGxp
cXVpZClcbicKLSAgICAgICAgICAgICcgICAgICAgIHJldHVybiBtb25leTtcbicKLSAgICAgICAg
ICAgICd9IGVsc2UgaWYgKHRpcmVkKVxuJwotICAgICAgICAgICAgJyAgICBicmVhaztcbicsCi0g
ICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAg
ICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5n
KCk7XG4nCi0gICAgICAgICAgICAnZWxzZSBpZiAob3RoZXJDb25kaXRpb24pXG4nCi0gICAgICAg
ICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAg
ICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlv
bilcbicKLSAgICAgICAgICAgICcgICAgZG9Tb21ldGhpbmcoKTtcbicKLSAgICAgICAgICAgICdl
bHNlXG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nRWxzZSgpO1xuJywKLSAgICAgICAg
ICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAg
ICAnaWYgKGNvbmRpdGlvbilcbicKLSAgICAgICAgICAgICcgICAgcmV0dXJuVmFsdWUgPSBmb287
XG4nCi0gICAgICAgICAgICAnZWxzZSBpZiAob3RoZXJDb25kaXRpb24pXG4nCi0gICAgICAgICAg
ICAnICAgIHJldHVyblZhbHVlID0gYmFyO1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBz
ZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGNvbmRpdGlvbilc
bicKLSAgICAgICAgICAgICcgICAgcmV0dXJuVmFsdWUgPSBmb287XG4nCi0gICAgICAgICAgICAn
ZWxzZVxuJwotICAgICAgICAgICAgJyAgICByZXR1cm5WYWx1ZSA9IGJhcjtcbicsCi0gICAgICAg
ICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAg
ICAgJ2lmIChjb25kaXRpb24pXG4nCi0gICAgICAgICAgICAnICAgIGRvU29tZXRoaW5nKCk7XG4n
Ci0gICAgICAgICAgICAnZWxzZSBpZiAobGlxdWlkKVxuJwotICAgICAgICAgICAgJyAgICByZXR1
cm4gbW9uZXk7XG4nCi0gICAgICAgICAgICAnZWxzZSBpZiAoYnJva2UpXG4nCi0gICAgICAgICAg
ICAnICAgIHJldHVybiBmYXZvcjtcbicKLSAgICAgICAgICAgICdlbHNlXG4nCi0gICAgICAgICAg
ICAnICAgIHNsZWVwKDI4ODAwKTtcbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5h
c3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChsaXF1aWQpIHtcbicKLSAg
ICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJwotICAgICAgICAgICAgJyAgICByZXR1cm4gbW9u
ZXk7XG4nCi0gICAgICAgICAgICAnfSBlbHNlIGlmIChncmVlZHkpIHtcbicKLSAgICAgICAgICAg
ICcgICAga2VlcCgpO1xuJwotICAgICAgICAgICAgJyAgICByZXR1cm4gbm90aGluZztcbicKLSAg
ICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3Vs
ZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVuIHRoZSAnCi0gICAgICAgICAgICAn
cHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdv
dG8gc3RhdGVtZW50LicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3dd
IFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAg
ICcgICAgaWYgKHN0dXBpZCkge1xuJwotICAgICAgICAgICAgJ2luZmluaXRlTG9vcDpcbicKLSAg
ICAgICAgICAgICcgICAgICAgIGdvdG8gaW5maW5pdGVMb29wO1xuJwotICAgICAgICAgICAgJyAg
ICB9IGVsc2UgaWYgKGV2aWwpXG4nCi0gICAgICAgICAgICAnICAgICAgICBnb3RvIGhlbGw7XG4n
LAotICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNob3VsZCBiZSB3cml0dGVuIGFz
IGFuIGlmIHN0YXRlbWVudCB3aGVuIHRoZSAnCi0gICAgICAgICAgICAncHJpb3IgImlmIiBjb25j
bHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9yIGdvdG8gc3RhdGVtZW50LicK
LSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zsb3ddIFs0XScpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpZiAobGlxdWlkKVxu
JwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJwotICAg
ICAgICAgICAgJyAgICByZXR1cm4gbW9uZXk7XG4nCi0gICAgICAgICAgICAnfVxuJwotICAgICAg
ICAgICAgJ2Vsc2UgaWYgKGdyZWVkeSlcbicKLSAgICAgICAgICAgICcgICAga2VlcCgpO1xuJywK
LSAgICAgICAgICAgIFsnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScsCi0gICAgICAgICAgICAnQW4gZWxzZSBz
aG91bGQgYXBwZWFyIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIHByZWNlZGluZyB9ICBbd2hpdGVz
cGFjZS9uZXdsaW5lXSBbNF0nLAotICAgICAgICAgICAgJ0FuIGVsc2UgaWYgc3RhdGVtZW50IHNo
b3VsZCBiZSB3cml0dGVuIGFzIGFuIGlmIHN0YXRlbWVudCB3aGVuIHRoZSAnCi0gICAgICAgICAg
ICAncHJpb3IgImlmIiBjb25jbHVkZXMgd2l0aCBhIHJldHVybiwgYnJlYWssIGNvbnRpbnVlIG9y
IGdvdG8gc3RhdGVtZW50LicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9jb250cm9sX2Zs
b3ddIFs0XSddKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAg
ICAgICAnaWYgKGdvbmUpXG4nCi0gICAgICAgICAgICAnICAgIHJldHVybjtcbicKLSAgICAgICAg
ICAgICdlbHNlIGlmIChoZXJlKVxuJwotICAgICAgICAgICAgJyAgICBnbygpO1xuJywKLSAgICAg
ICAgICAgICdBbiBlbHNlIGlmIHN0YXRlbWVudCBzaG91bGQgYmUgd3JpdHRlbiBhcyBhbiBpZiBz
dGF0ZW1lbnQgd2hlbiB0aGUgJwotICAgICAgICAgICAgJ3ByaW9yICJpZiIgY29uY2x1ZGVzIHdp
dGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51ZSBvciBnb3RvIHN0YXRlbWVudC4nCi0gICAgICAg
ICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJvbF9mbG93XSBbNF0nKQotICAgICAgICBzZWxmLmFz
c2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKGdvbmUpXG4nCi0gICAgICAg
ICAgICAnICAgIHJldHVybjtcbicKLSAgICAgICAgICAgICdlbHNlXG4nCi0gICAgICAgICAgICAn
ICAgIGdvKCk7XG4nLAotICAgICAgICAgICAgJ0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1v
dmVkIHdoZW4gdGhlIHByaW9yICJpZiIgY29uY2x1ZGVzICcKLSAgICAgICAgICAgICd3aXRoIGEg
cmV0dXJuLCBicmVhaywgY29udGludWUgb3IgZ290byBzdGF0ZW1lbnQuJwotICAgICAgICAgICAg
JyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxvd10gWzRdJykKLSAgICAgICAgc2VsZi5hc3NlcnRf
bXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChtb3RpdmF0ZWQpIHtcbicKLSAgICAg
ICAgICAgICcgICAgcHJlcGFyZSgpO1xuJwotICAgICAgICAgICAgJyAgICBjb250aW51ZTtcbicK
LSAgICAgICAgICAgICd9IGVsc2Uge1xuJwotICAgICAgICAgICAgJyAgICBjbGVhblVwKCk7XG4n
Ci0gICAgICAgICAgICAnICAgIGJyZWFrO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAg
ICAgICAnQW4gZWxzZSBzdGF0ZW1lbnQgY2FuIGJlIHJlbW92ZWQgd2hlbiB0aGUgcHJpb3IgImlm
IiBjb25jbHVkZXMgJwotICAgICAgICAgICAgJ3dpdGggYSByZXR1cm4sIGJyZWFrLCBjb250aW51
ZSBvciBnb3RvIHN0YXRlbWVudC4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29udHJv
bF9mbG93XSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnaWYgKHRpcmVkKVxuJwotICAgICAgICAgICAgJyAgICBicmVhaztcbicKLSAgICAg
ICAgICAgICdlbHNlIHtcbicKLSAgICAgICAgICAgICcgICAgcHJlcGFyZSgpO1xuJwotICAgICAg
ICAgICAgJyAgICBjb250aW51ZTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAg
J0FuIGVsc2Ugc3RhdGVtZW50IGNhbiBiZSByZW1vdmVkIHdoZW4gdGhlIHByaW9yICJpZiIgY29u
Y2x1ZGVzICcKLSAgICAgICAgICAgICd3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3Ig
Z290byBzdGF0ZW1lbnQuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L2NvbnRyb2xfZmxv
d10gWzRdJykKLQotICAgIGRlZiB0ZXN0X2JyYWNlcyhzZWxmKToKLSAgICAgICAgIyAxLiBGdW5j
dGlvbiBkZWZpbml0aW9uczogcGxhY2UgZWFjaCBicmFjZSBvbiBpdHMgb3duIGxpbmUuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdpbnQgbWFpbigp
XG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xu
JwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2ludCBtYWluKCkge1xuJwotICAgICAg
ICAgICAgJyAgICBkb1NvbWV0aGluZygpO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAg
ICAgICAnUGxhY2UgYnJhY2Ugb24gaXRzIG93biBsaW5lIGZvciBmdW5jdGlvbiBkZWZpbml0aW9u
cy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICAjIDIuIE90aGVyIGJyYWNl
czogcGxhY2UgdGhlIG9wZW4gYnJhY2Ugb24gdGhlIGxpbmUgcHJlY2VkaW5nIHRoZQotICAgICAg
ICAjICAgIGNvZGUgYmxvY2s7IHBsYWNlIHRoZSBjbG9zZSBicmFjZSBvbiBpdHMgb3duIGxpbmUu
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdjbGFz
cyBNeUNsYXNzIHtcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAg
ICd9O1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5l
X2xpbnQoCi0gICAgICAgICAgICAnbmFtZXNwYWNlIFdlYkNvcmUge1xuJwotICAgICAgICAgICAg
JyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ307XG4nLAotICAgICAgICAgICAgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKGlu
dCBpID0gMDsgaSA8IDEwOyBpKyspIHtcbicKLSAgICAgICAgICAgICcgICAgRG9Tb21ldGhpbmco
KTtcbicKLSAgICAgICAgICAgICd9O1xuJywKLSAgICAgICAgICAgICcnKQotICAgICAgICBzZWxm
LmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnY2xhc3MgTXlDbGFzc1xuJwot
ICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAg
ICAgICd9O1xuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2lmIChjb25kaXRpb24pXG4n
Ci0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAg
ICAgICAgJ31cbicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9m
IHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdmb3IgKGludCBpID0gMDsg
aSA8IDEwOyBpKyspXG4nCi0gICAgICAgICAgICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBi
ZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0
XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd3
aGlsZSAodHJ1ZSlcbicKLSAgICAgICAgICAgICd7XG4nCi0gICAgICAgICAgICAnICAgIGludCBm
b287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJl
IGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Zv
cmVhY2ggKEZvbyogZm9vLCBmb29zKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAg
ICcgICAgaW50IGJhcjtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ1RoaXMg
eyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRlc3BhY2Uv
YnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAg
ICAgICAgICAnc3dpdGNoICh0eXBlKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAgICAgICAg
ICdjYXNlIGZvbzogcmV0dXJuO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAn
VGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lICBbd2hpdGVz
cGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgK
LSAgICAgICAgICAgICdpZiAoY29uZGl0aW9uKVxuJwotICAgICAgICAgICAgJ3tcbicKLSAgICAg
ICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAg
J1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZSAgW3doaXRl
c3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQo
Ci0gICAgICAgICAgICAnZm9yIChpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKVxuJwotICAgICAgICAg
ICAgJ3tcbicKLSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4n
LAotICAgICAgICAgICAgJ1RoaXMgeyBzaG91bGQgYmUgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlv
dXMgbGluZSAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRydWUpXG4nCi0gICAgICAgICAg
ICAne1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ31cbics
Ci0gICAgICAgICAgICAnVGhpcyB7IHNob3VsZCBiZSBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X211
bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICdzd2l0Y2ggKHR5cGUpXG4nCi0gICAgICAgICAg
ICAne1xuJwotICAgICAgICAgICAgJ2Nhc2UgZm9vOiByZXR1cm47XG4nCi0gICAgICAgICAgICAn
fVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHBy
ZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ2Vsc2UgaWYgKHR5cGUpXG4nCi0gICAg
ICAgICAgICAne1xuJwotICAgICAgICAgICAgJ2Nhc2UgZm9vOiByZXR1cm47XG4nCi0gICAgICAg
ICAgICAnfVxuJywKLSAgICAgICAgICAgICdUaGlzIHsgc2hvdWxkIGJlIGF0IHRoZSBlbmQgb2Yg
dGhlIHByZXZpb3VzIGxpbmUgIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICAj
IDMuIE9uZS1saW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMgdW5sZXNz
Ci0gICAgICAgICMgICAgY29tbWVudHMgYXJlIGluY2x1ZGVkIG9yIGEgc2luZ2xlIHN0YXRlbWVu
dCBzcGFucyBtdWx0aXBsZQotICAgICAgICAjICAgIGxpbmVzLgotICAgICAgICBzZWxmLmFzc2Vy
dF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKHRydWUpIHtcbicKLSAgICAgICAg
ICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAgICAgJ09u
ZSBsaW5lIGNvbnRyb2wgY2xhdXNlcyBzaG91bGQgbm90IHVzZSBicmFjZXMuICBbd2hpdGVzcGFj
ZS9icmFjZXNdIFs0XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAot
ICAgICAgICAgICAgJ2ZvciAoOyBmb287IGJhcikge1xuJwotICAgICAgICAgICAgJyAgICBpbnQg
Zm9vO1xuJwotICAgICAgICAgICAgJ31cbicsCi0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJv
bCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJyYWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRd
JykKLQotICAgICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAn
Zm9yZWFjaCAoZm9vLCBmb29zKSB7XG4nCi0gICAgICAgICAgICAnICAgIGludCBiYXI7XG4nCi0g
ICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdPbmUgbGluZSBjb250cm9sIGNsYXVzZXMg
c2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2VzXSBbNF0nKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAgICAgICd3aGlsZSAodHJ1
ZSkge1xuJwotICAgICAgICAgICAgJyAgICBpbnQgZm9vO1xuJwotICAgICAgICAgICAgJ31cbics
Ci0gICAgICAgICAgICAnT25lIGxpbmUgY29udHJvbCBjbGF1c2VzIHNob3VsZCBub3QgdXNlIGJy
YWNlcy4gIFt3aGl0ZXNwYWNlL2JyYWNlc10gWzRdJykKLQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnaWYgKHRydWUpXG4nCi0gICAgICAgICAgICAn
ICAgIGludCBmb287XG4nCi0gICAgICAgICAgICAnZWxzZSB7XG4nCi0gICAgICAgICAgICAnICAg
IGludCBmb287XG4nCi0gICAgICAgICAgICAnfVxuJywKLSAgICAgICAgICAgICdPbmUgbGluZSBj
b250cm9sIGNsYXVzZXMgc2hvdWxkIG5vdCB1c2UgYnJhY2VzLiAgW3doaXRlc3BhY2UvYnJhY2Vz
XSBbNF0nKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGludCgKLSAgICAgICAg
ICAgICdpZiAodHJ1ZSkge1xuJwotICAgICAgICAgICAgJyAgICAvLyBTb21lIGNvbW1lbnRcbicK
LSAgICAgICAgICAgICcgICAgaW50IGZvbztcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAg
ICAgICAgJycpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAg
ICAgICAgJ2lmICh0cnVlKSB7XG4nCi0gICAgICAgICAgICAnICAgIG15RnVuY3Rpb24ocmVhbGx5
TG9uZ1BhcmFtMSwgcmVhbGx5TG9uZ1BhcmFtMixcbicKLSAgICAgICAgICAgICcgICAgICAgICAg
ICAgICByZWFsbHlMb25nUGFyYW0zKTtcbicKLSAgICAgICAgICAgICd9XG4nLAotICAgICAgICAg
ICAgJycpCi0KLSAgICAgICAgIyA0LiBDb250cm9sIGNsYXVzZXMgd2l0aG91dCBhIGJvZHkgc2hv
dWxkIHVzZSBlbXB0eSBicmFjZXMuCi0gICAgICAgIHNlbGYuYXNzZXJ0X211bHRpX2xpbmVfbGlu
dCgKLSAgICAgICAgICAgICdmb3IgKCA7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0
KSB7IH1cbicsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlfbGlu
ZV9saW50KAotICAgICAgICAgICAgJ2ZvciAoIDsgY3VycmVudDtcbicKLSAgICAgICAgICAgICcg
ICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KSB7fVxuJywKLSAgICAgICAgICAgICcnKQotICAg
ICAgICBzZWxmLmFzc2VydF9tdWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnZm9yICggOyBj
dXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCk7XG4nLAotICAgICAgICAgICAgJ1NlbWlj
b2xvbiBkZWZpbmluZyBlbXB0eSBzdGF0ZW1lbnQgZm9yIHRoaXMgbG9vcC4gVXNlIHsgfSBpbnN0
ZWFkLiAgW3doaXRlc3BhY2Uvc2VtaWNvbG9uXSBbNV0nKQotICAgICAgICBzZWxmLmFzc2VydF9t
dWx0aV9saW5lX2xpbnQoCi0gICAgICAgICAgICAnd2hpbGUgKHRydWUpO1xuJywKLSAgICAgICAg
ICAgICdTZW1pY29sb24gZGVmaW5pbmcgZW1wdHkgc3RhdGVtZW50IGZvciB0aGlzIGxvb3AuIFVz
ZSB7IH0gaW5zdGVhZC4gIFt3aGl0ZXNwYWNlL3NlbWljb2xvbl0gWzVdJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRfbXVsdGlfbGluZV9saW50KAotICAgICAgICAgICAgJ30gd2hpbGUgKHRydWUpO1xu
JywKLSAgICAgICAgICAgICcnKQotCi0gICAgZGVmIHRlc3RfbnVsbF9mYWxzZV96ZXJvKHNlbGYp
OgotICAgICAgICAjIDEuIEluIEMrKywgdGhlIG51bGwgcG9pbnRlciB2YWx1ZSBzaG91bGQgYmUg
d3JpdHRlbiBhcyAwLiBJbiBDLAotICAgICAgICAjICAgIGl0IHNob3VsZCBiZSB3cml0dGVuIGFz
IE5VTEwuIEluIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrLAotICAgICAgICAjICAgIGZv
bGxvdyB0aGUgZ3VpZGVsaW5lIGZvciBDIG9yIEMrKywgcmVzcGVjdGl2ZWx5LCBidXQgdXNlIG5p
bCB0bwotICAgICAgICAjICAgIHJlcHJlc2VudCBhIG51bGwgT2JqZWN0aXZlLUMgb2JqZWN0Lgot
ICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2Z1bmN0aW9uQ2FsbChOVUxM
KScsCi0gICAgICAgICAgICAnVXNlIDAgaW5zdGVhZCBvZiBOVUxMLicKLSAgICAgICAgICAgICcg
IFtyZWFkYWJpbGl0eS9udWxsXSBbNV0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAg
ICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAgIi8vIERvbid0IHVzZSBOVUxMIGluIGNv
bW1lbnRzIHNpbmNlIGl0IGlzbid0IGluIGNvZGUuIiwKLSAgICAgICAgICAgICdVc2UgMCBpbnN0
ZWFkIG9mIE5VTEwuJwotICAgICAgICAgICAgJyAgW3JlYWRhYmlsaXR5L251bGxdIFs0XScsCi0g
ICAgICAgICAgICAnZm9vLmNwcCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnIkEgc3RyaW5nIHdpdGggTlVMTCIgIC8vIGFuZCBhIGNvbW1lbnQgd2l0aCBOVUxMIGlz
IHRyaWNreSB0byBmbGFnIGNvcnJlY3RseSBpbiBjcHBsaW50LicsCi0gICAgICAgICAgICAnVXNl
IDAgaW5zdGVhZCBvZiBOVUxMLicKLSAgICAgICAgICAgICcgIFtyZWFkYWJpbGl0eS9udWxsXSBb
NF0nLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAot
ICAgICAgICAgICAgJyJBIHN0cmluZyBjb250YWluaW5nIE5VTEwgaXMgb2siJywKLSAgICAgICAg
ICAgICcnLAotICAgICAgICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50
KAotICAgICAgICAgICAgJ2lmIChhYm91dE5VTEwpJywKLSAgICAgICAgICAgICcnLAotICAgICAg
ICAgICAgJ2Zvby5jcHAnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KAotICAgICAgICAgICAg
J215VmFyaWFibGUgPSBOVUxMaWZ5JywKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAgJ2Zv
by5jcHAnKQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBOVUxMIGNoZWNrIGRvZXMgbm90
IGFwcGx5IHRvIEMgYW5kIE9iamVjdGl2ZS1DIGZpbGVzLgotICAgICAgICBzZWxmLmFzc2VydF9s
aW50KAotICAgICAgICAgICAgJ2Z1bmN0aW9uQ2FsbChOVUxMKScsCi0gICAgICAgICAgICAnJywK
LSAgICAgICAgICAgICdmb28uYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnZnVuY3Rpb25DYWxsKE5VTEwpJywKLSAgICAgICAgICAgICcnLAotICAgICAgICAgICAg
J2Zvby5tJykKLQotICAgICAgICAjIDIuIEMrKyBhbmQgQyBib29sIHZhbHVlcyBzaG91bGQgYmUg
d3JpdHRlbiBhcyB0cnVlIGFuZAotICAgICAgICAjICAgIGZhbHNlLiBPYmplY3RpdmUtQyBCT09M
IHZhbHVlcyBzaG91bGQgYmUgd3JpdHRlbiBhcyBZRVMgYW5kIE5PLgotICAgICAgICAjIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KLQotICAgICAgICAjIDMuIFRlc3RzIGZvciB0cnVlL2ZhbHNlLCBu
dWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91bGQKLSAgICAgICAgIyAgICBhbGwg
YmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLgotICAgICAgICBzZWxmLmFzc2Vy
dF9saW50KAotICAgICAgICAgICAgJ2lmIChjb3VudCA9PSAwKScsCi0gICAgICAgICAgICAnVGVz
dHMgZm9yIHRydWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3Vs
ZCBhbGwgYmUgZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAg
ICcgIFtyZWFkYWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1XScpCi0gICAgICAgIHNlbGYu
YXNzZXJ0X2xpbnRfb25lX29mX21hbnlfZXJyb3JzX3JlKAotICAgICAgICAgICAgJ2lmIChzdHJp
bmcgIT0gTlVMTCknLAotICAgICAgICAgICAgcidUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9u
b24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1
YWxpdHkgY29tcGFyaXNvbnNcLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAg
ICAgICAnaWYgKGNvbmRpdGlvbiA9PSB0cnVlKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRy
dWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUg
ZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1XScpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xp
bnQoCi0gICAgICAgICAgICAnaWYgKG15VmFyaWFibGUgIT0gLyogV2h5IHdvdWxkIGFueW9uZSBw
dXQgYSBjb21tZW50IGhlcmU/ICovIGZhbHNlKScsCi0gICAgICAgICAgICAnVGVzdHMgZm9yIHRy
dWUvZmFsc2UsIG51bGwvbm9uLW51bGwsIGFuZCB6ZXJvL25vbi16ZXJvIHNob3VsZCBhbGwgYmUg
ZG9uZSB3aXRob3V0IGVxdWFsaXR5IGNvbXBhcmlzb25zLicKLSAgICAgICAgICAgICcgIFtyZWFk
YWJpbGl0eS9jb21wYXJpc29uX3RvX3plcm9dIFs1XScpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgKLSAgICAgICAgICAgICdpZiAoMCAvKiBUaGlzIGNvbW1lbnQgYWxzbyBsb29rcyBvZGQg
dG8gbWUuICovICE9IGFMb25nZXJWYXJpYWJsZU5hbWUpJywKLSAgICAgICAgICAgICdUZXN0cyBm
b3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFs
bCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJwotICAgICAgICAgICAgJyAg
W3JlYWRhYmlsaXR5L2NvbXBhcmlzb25fdG9femVyb10gWzVdJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRfbGludF9vbmVfb2ZfbWFueV9lcnJvcnNfcmUoCi0gICAgICAgICAgICAnaWYgKE5VTEwgPT0g
dGhpc01heUJlTnVsbCknLAotICAgICAgICAgICAgcidUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVs
bC9ub24tbnVsbCwgYW5kIHplcm8vbm9uLXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQg
ZXF1YWxpdHkgY29tcGFyaXNvbnNcLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAg
ICAgICAgICAnaWYgKHRydWUgIT0gYW5vdGhlckNvbmRpdGlvbiknLAotICAgICAgICAgICAgJ1Rl
c3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVyby9ub24temVybyBzaG91
bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29ucy4nCi0gICAgICAgICAg
ICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0nKQotICAgICAgICBzZWxm
LmFzc2VydF9saW50KAotICAgICAgICAgICAgJ2lmIChmYWxzZSA9PSBteUJvb2xWYWx1ZSknLAot
ICAgICAgICAgICAgJ1Rlc3RzIGZvciB0cnVlL2ZhbHNlLCBudWxsL25vbi1udWxsLCBhbmQgemVy
by9ub24temVybyBzaG91bGQgYWxsIGJlIGRvbmUgd2l0aG91dCBlcXVhbGl0eSBjb21wYXJpc29u
cy4nCi0gICAgICAgICAgICAnICBbcmVhZGFiaWxpdHkvY29tcGFyaXNvbl90b196ZXJvXSBbNV0n
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoCi0gICAgICAgICAgICAnaWYgKGZvbnRUeXBl
ID09IHRydWVUeXBlKScsCi0gICAgICAgICAgICAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRfbGlu
dCgKLSAgICAgICAgICAgICdpZiAob3RoZXJ0cnVlID09IGZvbnRUeXBlKScsCi0gICAgICAgICAg
ICAnJykKLQotICAgIGRlZiB0ZXN0X25hbWVzKHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcy4KLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRlc3Rfb3RoZXIoc2VsZik6Ci0g
ICAgICAgICMgRklYTUU6IEltcGxlbWVudCB0aGlzLgotICAgICAgICBwYXNzCi0KLQotZGVmIHRl
YXJEb3duKCk6Ci0gICAgIiIiQSBnbG9iYWwgY2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBlcnJvci1j
YXRlZ29yaWVzIGhhdmUgYmVlbiB0ZXN0ZWQuCi0KLSAgICBUaGUgbWFpbiB0ZWFyRG93bigpIHJv
dXRpbmUgaXMgdGhlIG9ubHkgY29kZSB3ZSBjYW4gZ3VhcmFudGVlIHdpbGwgYmUKLSAgICBydW4g
YWZ0ZXIgYWxsIG90aGVyIHRlc3RzIGhhdmUgYmVlbiBleGVjdXRlZC4KLSAgICAiIiIKLSAgICB0
cnk6Ci0gICAgICAgIGlmIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW46Ci0gICAgICAgICAg
ICBFcnJvckNvbGxlY3RvcihOb25lKS52ZXJpZnlfYWxsX2NhdGVnb3JpZXNfYXJlX3NlZW4oKQot
ICAgIGV4Y2VwdCBOYW1lRXJyb3I6Ci0gICAgICAgICMgSWYgbm9ib2R5IHNldCB0aGUgZ2xvYmFs
IF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW4sIHRoZW4KLSAgICAgICAgIyB3ZSBhc3N1bWUg
d2Ugc2hvdWxkbid0IHJ1biB0aGUgdGVzdAotICAgICAgICBwYXNzCi0KLWlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgaW1wb3J0IHN5cwotICAgICMgV2UgZG9uJ3Qgd2FudCB0byBydW4g
dGhlIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19hcmVfc2VlbigpIHRlc3QgdW5sZXNzCi0gICAgIyB3
ZSdyZSBydW5uaW5nIHRoZSBmdWxsIHRlc3Qgc3VpdGU6IGlmIHdlIG9ubHkgcnVuIG9uZSB0ZXN0
LAotICAgICMgb2J2aW91c2x5IHdlJ3JlIG5vdCBnb2luZyB0byBzZWUgYWxsIHRoZSBlcnJvciBj
YXRlZ29yaWVzLiAgU28gd2UKLSAgICAjIG9ubHkgcnVuIHZlcmlmeV9hbGxfY2F0ZWdvcmllc19h
cmVfc2VlbigpIHdoZW4gbm8gY29tbWFuZGxpbmUgZmxhZ3MKLSAgICAjIGFyZSBwYXNzZWQgaW4u
Ci0gICAgZ2xvYmFsIF9ydW5fdmVyaWZ5YWxsY2F0ZWdvcmllc3NlZW4KLSAgICBfcnVuX3Zlcmlm
eWFsbGNhdGVnb3JpZXNzZWVuID0gKGxlbihzeXMuYXJndikgPT0gMSkKLQotICAgIHVuaXR0ZXN0
Lm1haW4oKQo=
</data>
<flag name="review"
          id="17847"
          type_id="1"
          status="+"
          setter="manyoso"
    />
          </attachment>
      

    </bug>

</bugzilla>