<?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>34249</bug_id>
          
          <creation_ts>2010-01-28 02:07:35 -0800</creation_ts>
          <short_desc>check-webkit-style: Remove filename parameter from all functions where no longer used</short_desc>
          <delta_ts>2010-02-01 21:38:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>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="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185391</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 02:07:35 -0800</bug_when>
    <thetext>This is a follow-up to--

https://bugs.webkit.org/show_bug.cgi?id=34031

In that report, the filename parameter was removed from the style error handler function.  That made it so many functions calls no longer use the filename parameter (so it no longer needs to be passed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185424</commentid>
    <comment_count>1</comment_count>
      <attachid>47606</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 04:31:55 -0800</bug_when>
    <thetext>Created attachment 47606
Proposed patch

cq- since patch file might not apply correctly (since the ChangeLog portion of this git-generated patch file has leading context).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185430</commentid>
    <comment_count>2</comment_count>
      <attachid>47606</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-28 04:53:39 -0800</bug_when>
    <thetext>Comment on attachment 47606
Proposed patch

Looks good except the following nitpicks.

&gt; -    if filename.endswith(&apos;.cpp&apos;):
&gt; +    if file_extension == (&apos;cpp&apos;):

Unnecessary parentheses around &apos;cpp&apos; ?

&gt; -    elif filename.endswith(&apos;.c&apos;):
&gt; +    elif file_extension == (&apos;c&apos;):

Ditto.

&gt; -    error_message = include_state.check_next_include_order(header_type, filename.endswith(&apos;.h&apos;))
&gt; +    error_message = include_state.check_next_include_order(header_type, (file_extension == &quot;h&quot;))

We can remove parentheses around &apos;file_extension == &quot;h&quot;&apos;, but please feel free not to modify this if you prefer this way or you know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185431</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 04:58:37 -0800</bug_when>
    <thetext>(In reply to comment #2)

Thanks a lot for the quick review!

&gt; (From update of attachment 47606 [details])
&gt; Looks good except the following nitpicks.
&gt; 
&gt; &gt; -    if filename.endswith(&apos;.cpp&apos;):
&gt; &gt; +    if file_extension == (&apos;cpp&apos;):
&gt; 
&gt; Unnecessary parentheses around &apos;cpp&apos; ?
&gt; 
&gt; &gt; -    elif filename.endswith(&apos;.c&apos;):
&gt; &gt; +    elif file_extension == (&apos;c&apos;):
&gt; 
&gt; Ditto.

It looks like the unit tests are not catching my carelessness here.  I will investigate whether it is straightforward to get this coverage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185435</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 05:15:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; (From update of attachment 47606 [details] [details])
&gt; &gt; Looks good except the following nitpicks.
&gt; &gt; 
&gt; &gt; &gt; -    if filename.endswith(&apos;.cpp&apos;):
&gt; &gt; &gt; +    if file_extension == (&apos;cpp&apos;):
&gt; &gt; 
&gt; &gt; Unnecessary parentheses around &apos;cpp&apos; ?
&gt; &gt; 
&gt; &gt; &gt; -    elif filename.endswith(&apos;.c&apos;):
&gt; &gt; &gt; +    elif file_extension == (&apos;c&apos;):
&gt; &gt; 
&gt; &gt; Ditto.
&gt; 
&gt; It looks like the unit tests are not catching my carelessness here.  I will
&gt; investigate whether it is straightforward to get this coverage.

I checked and it looks like we do have unit test coverage here.

It&apos;s just that (&apos;c&apos;) is equivalent &apos;c&apos;.  (I didn&apos;t know off-hand.)

It&apos;s only if there is a trailing comma that such notation is interpreted as a 1-tuple (in which case it would not be equivalent).  See, for example--

http://docs.python.org/tutorial/datastructures.html#tuples-and-sequences

It&apos;s some Python quirkiness that the documentation calls &quot;ugly&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185436</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 05:23:46 -0800</bug_when>
    <thetext>Manually committed (via &quot;git svn dcommit&quot;):

http://trac.webkit.org/changeset/53998</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185497</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-28 08:33:42 -0800</bug_when>
    <thetext>&gt; cq- since patch file might not apply correctly (since the ChangeLog portion of
&gt; this git-generated patch file has leading context).

The commit queue is smart enough to deal with this case.  It didn&apos;t used to be, but it is now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186757</commentid>
    <comment_count>7</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-01 18:45:53 -0800</bug_when>
    <thetext>Committed r54192: &lt;http://trac.webkit.org/changeset/54192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186799</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-01 21:38:38 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Committed r54192: &lt;http://trac.webkit.org/changeset/54192&gt;

Thanks a lot for the fix, Shinichiro.  For what it&apos;s worth, this code path becomes unit-tested in the patch corresponding to this report:

https://bugs.webkit.org/show_bug.cgi?id=34260

(in the processors.common.check_no_carriage_return() method).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47606</attachid>
            <date>2010-01-28 04:31:55 -0800</date>
            <delta_ts>2010-01-28 04:53:38 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34249-1.txt</filename>
            <type>text/plain</type>
            <size>33661</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzNTJiNzk2Li5jYWI4N2Q3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjQgQEAKIDIwMTAtMDEt
MjggIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRWxpbWluYXRlZCB0aGUgZmlsZW5h
bWUgcGFyYW1ldGVyIGZyb20gZnVuY3Rpb25zIGluCisgICAgICAgIGNoZWNrLXdlYmtpdC1zdHls
ZSdzIGNwcC5weSB3aGVyZSBpdCBpcyBubyBsb25nZXIgdXNlZC4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQyNDkKKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAucHk6CisgICAgICAgICAgLSBSZWR1Y2Vk
IG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAiZmlsZW5hbWUiIHZhcmlhYmxlIGZyb20KKyAgICAg
ICAgICAgIGFwcHJveGltYXRlbHkgMjAwIHRvIDEyMC4KKworICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBSZWZh
Y3RvcmVkIHVuaXQgdGVzdHMgYXMgbmVjZXNzYXJ5IHRvIGFjY29tbW9kYXRlIGNoYW5nZXMgdG8g
Y3BwLnB5LgorICAgICAgICAgIC0gRml4ZWQgYnVnIGluIENwcFN0eWxlVGVzdEJhc2UucGVyZm9y
bV9pbmNsdWRlX3doYXRfeW91X3VzZSgpCisgICAgICAgICAgICB3aGVyZSB0aGUgaW5jb3JyZWN0
IGZpbGUgZXh0ZW5zaW9uIHdhcyBnZXR0aW5nIHBhc3NlZCB0bworICAgICAgICAgICAgY3BwX3N0
eWxlLmNoZWNrX2xhbmd1YWdlKCkuCisKKzIwMTAtMDEtMjggIENocmlzIEplcmRvbmVrICA8Y2pl
cmRvbmVrQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hpbmljaGlybyBIYW1h
amkuCiAKICAgICAgICAgSW4gY2hlY2std2Via2l0LXN0eWxlLCBlbGltaW5hdGVkIHRoZSBkZXBl
bmRlbmN5IG9mCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L3Byb2Nlc3NvcnMvY3BwLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9w
cm9jZXNzb3JzL2NwcC5weQppbmRleCBmZDMzMmMwLi5lNjlkNTAyIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHAucHkKQEAgLTMw
MCwxMiArMzAwLDExIEBAIGNsYXNzIF9GdW5jdGlvblN0YXRlKG9iamVjdCk6CiAgICAgICAgIGlm
IHNlbGYuaW5fYV9mdW5jdGlvbjoKICAgICAgICAgICAgIHNlbGYubGluZXNfaW5fZnVuY3Rpb24g
Kz0gMQogCi0gICAgZGVmIGNoZWNrKHNlbGYsIGVycm9yLCBmaWxlbmFtZSwgbGluZV9udW1iZXIp
OgorICAgIGRlZiBjaGVjayhzZWxmLCBlcnJvciwgbGluZV9udW1iZXIpOgogICAgICAgICAiIiJS
ZXBvcnQgaWYgdG9vIG1hbnkgbGluZXMgaW4gZnVuY3Rpb24gYm9keS4KIAogICAgICAgICBBcmdz
OgogICAgICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMg
Zm91bmQuCi0gICAgICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUu
CiAgICAgICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2su
CiAgICAgICAgICIiIgogICAgICAgICBpZiBtYXRjaChyJ1QoRVNUfGVzdCknLCBzZWxmLmN1cnJl
bnRfZnVuY3Rpb24pOgpAQCAtMzM1LDYgKzMzNCwxNiBAQCBjbGFzcyBfSW5jbHVkZUVycm9yKEV4
Y2VwdGlvbik6CiAgICAgcGFzcwogCiAKK2RlZiBpc19jX29yX29iamVjdGl2ZV9jKGZpbGVfZXh0
ZW5zaW9uKToKKyAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIGV4dGVuc2lvbiBjb3JyZXNw
b25kcyB0byBDIG9yIE9iamVjdGl2ZS1DLgorCisgICBBcmdzOgorICAgICBmaWxlX2V4dGVuc2lv
bjogVGhlIGZpbGUgZXh0ZW5zaW9uIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LgorCisgICAiIiIK
KyAgIHJldHVybiBmaWxlX2V4dGVuc2lvbiBpbiBbJ2MnLCAnbSddCisKKwogY2xhc3MgRmlsZUlu
Zm86CiAgICAgIiIiUHJvdmlkZXMgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGZpbGVuYW1lcy4KIApA
QCAtNDg4LDcgKzQ5Nyw3IEBAIGRlZiByZW1vdmVfbXVsdGlfbGluZV9jb21tZW50c19mcm9tX3Jh
bmdlKGxpbmVzLCBiZWdpbiwgZW5kKToKICAgICAgICAgbGluZXNbaV0gPSAnLy8gZHVtbXknCiAK
IAotZGVmIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJyb3Ip
OgorZGVmIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGxpbmVzLCBlcnJvcik6CiAgICAgIiIi
UmVtb3ZlcyBtdWx0aWxpbmUgKGMtc3R5bGUpIGNvbW1lbnRzIGZyb20gbGluZXMuIiIiCiAgICAg
bGluZV9pbmRleCA9IDAKICAgICB3aGlsZSBsaW5lX2luZGV4IDwgbGVuKGxpbmVzKToKQEAgLTYw
Nyw3ICs2MTYsNyBAQCBkZWYgY2xvc2VfZXhwcmVzc2lvbihjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIHBvcyk6CiAgICAgcmV0dXJuIChsaW5lLCBsaW5lX251bWJlciwgZW5kcG9zICsgMSkKIAog
Ci1kZWYgY2hlY2tfZm9yX2NvcHlyaWdodChmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKK2RlZiBj
aGVja19mb3JfY29weXJpZ2h0KGxpbmVzLCBlcnJvcik6CiAgICAgIiIiTG9ncyBhbiBlcnJvciBp
ZiBubyBDb3B5cmlnaHQgbWVzc2FnZSBhcHBlYXJzIGF0IHRoZSB0b3Agb2YgdGhlIGZpbGUuIiIi
CiAKICAgICAjIFdlJ2xsIHNheSBpdCBzaG91bGQgb2NjdXIgYnkgbGluZSAxMC4gRG9uJ3QgZm9y
Z2V0IHRoZXJlJ3MgYQpAQCAtNjc4LDcgKzY4Nyw3IEBAIGRlZiBjaGVja19mb3JfaGVhZGVyX2d1
YXJkKGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpOgogICAgICAgICAgICAgICAnI2lmbmRlZiBoZWFk
ZXIgZ3VhcmQgaGFzIHdyb25nIHN0eWxlLCBwbGVhc2UgdXNlOiAlcycgJSBjcHB2YXIpCiAKIAot
ZGVmIGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2NoYXJhY3RlcnMoZmlsZW5hbWUsIGxp
bmVzLCBlcnJvcik6CitkZWYgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVy
cyhsaW5lcywgZXJyb3IpOgogICAgICIiIkxvZ3MgYW4gZXJyb3IgZm9yIGVhY2ggbGluZSBjb250
YWluaW5nIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVycy4KIAogICAgIFRoZXNlIGluZGlj
YXRlIHRoYXQgZWl0aGVyIHRoZSBmaWxlIGNvbnRhaW5lZCBpbnZhbGlkIFVURi04IChsaWtlbHkp
CkBAIC02ODcsNyArNjk2LDYgQEAgZGVmIGNoZWNrX2Zvcl91bmljb2RlX3JlcGxhY2VtZW50X2No
YXJhY3RlcnMoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CiAgICAgVVRGLTggb2NjdXJyZWQgYWRq
YWNlbnQgdG8gYSBuZXdsaW5lLgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFt
ZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3Ms
IGVhY2ggcmVwcmVzZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KICAgICAgIGVycm9yOiBUaGUg
ZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAgIiIiCkBAIC02OTcs
MTEgKzcwNSwxMCBAQCBkZWYgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRfY2hhcmFjdGVy
cyhmaWxlbmFtZSwgbGluZXMsIGVycm9yKToKICAgICAgICAgICAgICAgICAgICdMaW5lIGNvbnRh
aW5zIGludmFsaWQgVVRGLTggKG9yIFVuaWNvZGUgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4nKQog
CiAKLWRlZiBjaGVja19mb3JfbmV3X2xpbmVfYXRfZW9mKGZpbGVuYW1lLCBsaW5lcywgZXJyb3Ip
OgorZGVmIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2YobGluZXMsIGVycm9yKToKICAgICAiIiJM
b2dzIGFuIGVycm9yIGlmIHRoZXJlIGlzIG5vIG5ld2xpbmUgY2hhciBhdCB0aGUgZW5kIG9mIHRo
ZSBmaWxlLgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3Vy
cmVudCBmaWxlLgogICAgICAgbGluZXM6IEFuIGFycmF5IG9mIHN0cmluZ3MsIGVhY2ggcmVwcmVz
ZW50aW5nIGEgbGluZSBvZiB0aGUgZmlsZS4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8g
Y2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAgIiIiCkBAIC03MTUsNyArNzIyLDcgQEAg
ZGVmIGNoZWNrX2Zvcl9uZXdfbGluZV9hdF9lb2YoZmlsZW5hbWUsIGxpbmVzLCBlcnJvcik6CiAg
ICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBhIG5ld2xpbmUgY2hhcmFjdGVyIGF0IHRoZSBl
bmQgb2YgdGhlIGZpbGUuJykKIAogCi1kZWYgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50c19h
bmRfc3RyaW5ncyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6Citk
ZWYgY2hlY2tfZm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhjbGVhbl9saW5lcywg
bGluZV9udW1iZXIsIGVycm9yKToKICAgICAiIiJMb2dzIGFuIGVycm9yIGlmIHdlIHNlZSAvKiAu
Li4gKi8gb3IgIi4uLiIgdGhhdCBleHRlbmQgcGFzdCBvbmUgbGluZS4KIAogICAgIC8qIC4uLiAq
LyBjb21tZW50cyBhcmUgbGVnaXQgaW5zaWRlIG1hY3JvcywgZm9yIG9uZSBsaW5lLgpAQCAtNzI3
LDcgKzczNCw2IEBAIGRlZiBjaGVja19mb3JfbXVsdGlsaW5lX2NvbW1lbnRzX2FuZF9zdHJpbmdz
KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsCiAgICAgaW4gdGhpcyBsaW50IHBy
b2dyYW0sIHNvIHdlIHdhcm4gYWJvdXQgYm90aC4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFt
ZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KICAgICAgIGNsZWFuX2xpbmVzOiBBIENs
ZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KICAgICAgIGxpbmVfbnVt
YmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgogICAgICAgZXJyb3I6IFRoZSBm
dW5jdGlvbiB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KQEAgLTc3MCw3ICs3NzYsNyBA
QCBfVEhSRUFESU5HX0xJU1QgPSAoCiAgICAgKQogCiAKLWRlZiBjaGVja19wb3NpeF90aHJlYWRp
bmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgorZGVmIGNoZWNr
X3Bvc2l4X3RocmVhZGluZyhjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAi
IiJDaGVja3MgZm9yIGNhbGxzIHRvIHRocmVhZC11bnNhZmUgZnVuY3Rpb25zLgogCiAgICAgTXVj
aCBjb2RlIGhhcyBiZWVuIG9yaWdpbmFsbHkgd3JpdHRlbiB3aXRob3V0IGNvbnNpZGVyYXRpb24g
b2YKQEAgLTc4MCw3ICs3ODYsNiBAQCBkZWYgY2hlY2tfcG9zaXhfdGhyZWFkaW5nKGZpbGVuYW1l
LCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICBwb3NpeCBkaXJlY3RseSku
CiAKICAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCiAgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5p
bmcgdGhlIGZpbGUuCiAgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0
byBjaGVjay4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJv
cnMgZm91bmQuCkBAIC04MDMsNyArODA4LDcgQEAgX1JFX1BBVFRFUk5fSU5WQUxJRF9JTkNSRU1F
TlQgPSByZS5jb21waWxlKAogICAgIHInXlxzKlwqXHcrKFwrXCt8LS0pOycpCiAKIAotZGVmIGNo
ZWNrX2ludmFsaWRfaW5jcmVtZW50KGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIs
IGVycm9yKToKK2RlZiBjaGVja19pbnZhbGlkX2luY3JlbWVudChjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGVycm9yKToKICAgICAiIiJDaGVja3MgZm9yIGludmFsaWQgaW5jcmVtZW50ICpjb3Vu
dCsrLgogCiAgICAgRm9yIGV4YW1wbGUgZm9sbG93aW5nIGZ1bmN0aW9uOgpAQCAtODE0LDcgKzgx
OSw2IEBAIGRlZiBjaGVja19pbnZhbGlkX2luY3JlbWVudChmaWxlbmFtZSwgY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgYmUgcmVwbGFjZWQgd2l0aCArKypjb3VudCwgKCpj
b3VudCkrKyBvciAqY291bnQgKz0gMS4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhl
IG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KICAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2Vk
TGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KICAgICAgIGxpbmVfbnVtYmVyOiBU
aGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgogICAgICAgZXJyb3I6IFRoZSBmdW5jdGlv
biB0byBjYWxsIHdpdGggYW55IGVycm9ycyBmb3VuZC4KQEAgLTg1MCwxMiArODU0LDExIEBAIGNs
YXNzIF9DbGFzc1N0YXRlKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAg
ICBzZWxmLmNsYXNzaW5mb19zdGFjayA9IFtdCiAKLSAgICBkZWYgY2hlY2tfZmluaXNoZWQoc2Vs
ZiwgZmlsZW5hbWUsIGVycm9yKToKKyAgICBkZWYgY2hlY2tfZmluaXNoZWQoc2VsZiwgZXJyb3Ip
OgogICAgICAgICAiIiJDaGVja3MgdGhhdCBhbGwgY2xhc3NlcyBoYXZlIGJlZW4gY29tcGxldGVs
eSBwYXJzZWQuCiAKICAgICAgICAgQ2FsbCB0aGlzIHdoZW4gYWxsIGxpbmVzIGluIGEgZmlsZSBo
YXZlIGJlZW4gcHJvY2Vzc2VkLgogICAgICAgICBBcmdzOgotICAgICAgICAgIGZpbGVuYW1lOiBU
aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgICAgIGVycm9yOiBUaGUgZnVuY3Rp
b24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCiAgICAgICAgICIiIgogICAgICAgICBp
ZiBzZWxmLmNsYXNzaW5mb19zdGFjazoKQEAgLTg3Nyw3ICs4ODAsNyBAQCBjbGFzcyBfRmlsZVN0
YXRlKG9iamVjdCk6CiAgICAgZGVmIGRpZF9pbnNpZGVfbmFtZXNwYWNlX2luZGVudF93YXJuaW5n
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZGlkX2luc2lkZV9uYW1lc3BhY2VfaW5kZW50
X3dhcm5pbmcKIAotZGVmIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRfY29uc3RydWN0cyhmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLAorZGVmIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRf
Y29uc3RydWN0cyhjbGVhbl9saW5lcywgbGluZV9udW1iZXIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNsYXNzX3N0YXRlLCBlcnJvcik6CiAgICAgIiIiTG9ncyBhbiBl
cnJvciBpZiB3ZSBzZWUgY2VydGFpbiBub24tQU5TSSBjb25zdHJ1Y3RzIGlnbm9yZWQgYnkgZ2Nj
LTIuCiAKQEAgLTg5OCwxMyArOTAxLDEyIEBAIGRlZiBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2Nv
bnN0cnVjdHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKICAgICBpcyB2ZXJ5
IGNvbnZlbmllbnQgdG8gZG8gc28gd2hpbGUgY2hlY2tpbmcgZm9yIGdjYy0yIGNvbXBsaWFuY2Uu
CiAKICAgICBBcmdzOgotICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZp
bGUuCiAgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5p
bmcgdGhlIGZpbGUuCiAgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0
byBjaGVjay4KICAgICAgIGNsYXNzX3N0YXRlOiBBIF9DbGFzc1N0YXRlIGluc3RhbmNlIHdoaWNo
IG1haW50YWlucyBpbmZvcm1hdGlvbiBhYm91dAogICAgICAgICAgICAgICAgICAgIHRoZSBjdXJy
ZW50IHN0YWNrIG9mIG5lc3RlZCBjbGFzcyBkZWNsYXJhdGlvbnMgYmVpbmcgcGFyc2VkLgotICAg
ICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJyb3JzIGFyZSByZXBvcnRlZCwgd2hpY2gg
dGFrZXMgNCBhcmd1bWVudHM6Ci0gICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBl
cnJvciBsZXZlbCwgYW5kIG1lc3NhZ2UKKyAgICAgIGVycm9yOiBBIGNhbGxhYmxlIHRvIHdoaWNo
IGVycm9ycyBhcmUgcmVwb3J0ZWQsIHdoaWNoIHRha2VzIHBhcmFtZXRlcnM6CisgICAgICAgICAg
ICAgbGluZSBudW1iZXIsIGVycm9yIGxldmVsLCBhbmQgbWVzc2FnZQogICAgICIiIgogCiAgICAg
IyBSZW1vdmUgY29tbWVudHMgZnJvbSB0aGUgbGluZSwgYnV0IGxlYXZlIGluIHN0cmluZ3MgZm9y
IG5vdy4KQEAgLTEwMjgsMTEgKzEwMzAsMTAgQEAgZGVmIGNoZWNrX2Zvcl9ub25fc3RhbmRhcmRf
Y29uc3RydWN0cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLAogICAgICAgICBj
bGFzc2luZm8uYnJhY2VfZGVwdGggPSBicmFjZV9kZXB0aAogCiAKLWRlZiBjaGVja19zcGFjaW5n
X2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBsaW5lLCBsaW5lX251bWJlciwgZXJyb3IpOgor
ZGVmIGNoZWNrX3NwYWNpbmdfZm9yX2Z1bmN0aW9uX2NhbGwobGluZSwgbGluZV9udW1iZXIsIGVy
cm9yKToKICAgICAiIiJDaGVja3MgZm9yIHRoZSBjb3JyZWN0bmVzcyBvZiB2YXJpb3VzIHNwYWNp
bmcgYXJvdW5kIGZ1bmN0aW9uIGNhbGxzLgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBU
aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgbGluZTogVGhlIHRleHQgb2YgdGhl
IGxpbmUgdG8gY2hlY2suCiAgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGlu
ZSB0byBjaGVjay4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBl
cnJvcnMgZm91bmQuCkBAIC0xMTA0LDggKzExMDUsNyBAQCBkZWYgaXNfYmxhbmtfbGluZShsaW5l
KToKICAgICByZXR1cm4gbm90IGxpbmUgb3IgbGluZS5pc3NwYWNlKCkKIAogCi1kZWYgY2hlY2tf
Zm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbl9zdGF0ZSwgZXJyb3IpOgor
ZGVmIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZnVuY3Rpb25fc3RhdGUsIGVycm9yKToKICAgICAiIiJSZXBvcnRzIGZvciBsb25nIGZ1bmN0aW9u
IGJvZGllcy4KIAogICAgIEZvciBhbiBvdmVydmlldyB3aHkgdGhpcyBpcyBkb25lLCBzZWU6CkBA
IC0xMTIxLDcgKzExMjEsNiBAQCBkZWYgY2hlY2tfZm9yX2Z1bmN0aW9uX2xlbmd0aHMoZmlsZW5h
bWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwKICAgICBOT0xJTlQgKm9uIHRoZSBsYXN0IGxp
bmUgb2YgYSBmdW5jdGlvbiogZGlzYWJsZXMgdGhpcyBjaGVjay4KIAogICAgIEFyZ3M6Ci0gICAg
ICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KICAgICAgIGNsZWFuX2xp
bmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZmlsZS4KICAgICAg
IGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9mIHRoZSBsaW5lIHRvIGNoZWNrLgogICAgICAgZnVu
Y3Rpb25fc3RhdGU6IEN1cnJlbnQgZnVuY3Rpb24gbmFtZSBhbmQgbGluZXMgaW4gYm9keSBzbyBm
YXIuCkBAIC0xMTY4LDEzICsxMTY3LDEzIEBAIGRlZiBjaGVja19mb3JfZnVuY3Rpb25fbGVuZ3Ro
cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLAogICAgICAgICAgICAgICAgICAg
J0xpbnQgZmFpbGVkIHRvIGZpbmQgc3RhcnQgb2YgZnVuY3Rpb24gYm9keS4nKQogICAgIGVsaWYg
bWF0Y2gocideXH1ccyokJywgbGluZSk6ICAjIGZ1bmN0aW9uIGVuZAogICAgICAgICBpZiBub3Qg
c2VhcmNoKHInXGJOT0xJTlRcYicsIHJhd19saW5lKToKLSAgICAgICAgICAgIGZ1bmN0aW9uX3N0
YXRlLmNoZWNrKGVycm9yLCBmaWxlbmFtZSwgbGluZV9udW1iZXIpCisgICAgICAgICAgICBmdW5j
dGlvbl9zdGF0ZS5jaGVjayhlcnJvciwgbGluZV9udW1iZXIpCiAgICAgICAgIGZ1bmN0aW9uX3N0
YXRlLmVuZCgpCiAgICAgZWxpZiBub3QgbWF0Y2gocideXHMqJCcsIGxpbmUpOgogICAgICAgICBm
dW5jdGlvbl9zdGF0ZS5jb3VudCgpICAjIENvdW50IG5vbi1ibGFuay9ub24tY29tbWVudCBsaW5l
cy4KIAogCi1kZWYgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcik6CitkZWYgY2hlY2tfc3BhY2luZyhmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgIiIiQ2hlY2tzIGZvciB0aGUgY29ycmVjdG5l
c3Mgb2YgdmFyaW91cyBzcGFjaW5nIGlzc3VlcyBpbiB0aGUgY29kZS4KIAogICAgIFRoaW5ncyB3
ZSBjaGVjayBmb3I6IHNwYWNlcyBhcm91bmQgb3BlcmF0b3JzLCBzcGFjZXMgYWZ0ZXIKQEAgLTEx
ODQsNyArMTE4Myw3IEBAIGRlZiBjaGVja19zcGFjaW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywg
bGluZV9udW1iZXIsIGVycm9yKToKICAgICBibGFuayBsaW5lcyBpbiBhIHJvdy4KIAogICAgIEFy
Z3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZmlsZS4KKyAgICAg
IGZpbGVfZXh0ZW5zaW9uOiBUaGUgY3VycmVudCBmaWxlIGV4dGVuc2lvbiwgd2l0aG91dCB0aGUg
bGVhZGluZyBkb3QuCiAgICAgICBjbGVhbl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNl
IGNvbnRhaW5pbmcgdGhlIGZpbGUuCiAgICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0
aGUgbGluZSB0byBjaGVjay4KICAgICAgIGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRo
IGFueSBlcnJvcnMgZm91bmQuCkBAIC0xMzY2LDE0ICsxMzY1LDE0IEBAIGRlZiBjaGVja19zcGFj
aW5nKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAgICAg
ZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL2NvbW1hJywgMywKICAgICAgICAgICAgICAg
J01pc3Npbmcgc3BhY2UgYWZ0ZXIgLCcpCiAKLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmNw
cCcpOgorICAgIGlmIGZpbGVfZXh0ZW5zaW9uID09ICgnY3BwJyk6CiAgICAgICAgICMgQysrIHNo
b3VsZCBoYXZlIHRoZSAmIG9yICogYmVzaWRlIHRoZSB0eXBlIG5vdCB0aGUgdmFyaWFibGUgbmFt
ZS4KICAgICAgICAgbWF0Y2hlZCA9IG1hdGNoKHInXHMqXHcrKD88IVxicmV0dXJuKVxzKyg/UDxw
b2ludGVyX29wZXJhdG9yPlwqfFwmKVx3KycsIGxpbmUpCiAgICAgICAgIGlmIG1hdGNoZWQ6CiAg
ICAgICAgICAgICBlcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvZGVjbGFyYXRpb24nLCAz
LAogICAgICAgICAgICAgICAgICAgJ0RlY2xhcmF0aW9uIGhhcyBzcGFjZSBiZXR3ZWVuIHR5cGUg
bmFtZSBhbmQgJXMgaW4gJXMnICUgKG1hdGNoZWQuZ3JvdXAoJ3BvaW50ZXJfb3BlcmF0b3InKSwg
bWF0Y2hlZC5ncm91cCgwKS5zdHJpcCgpKSkKIAotICAgIGVsaWYgZmlsZW5hbWUuZW5kc3dpdGgo
Jy5jJyk6CisgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSAoJ2MnKToKICAgICAgICAgIyBDIFBv
aW50ZXIgZGVjbGFyYXRpb24gc2hvdWxkIGhhdmUgdGhlICogYmVzaWRlIHRoZSB2YXJpYWJsZSBu
b3QgdGhlIHR5cGUgbmFtZS4KICAgICAgICAgbWF0Y2hlZCA9IHNlYXJjaChyJ15ccypcdytcKlxz
K1x3KycsIGxpbmUpCiAgICAgICAgIGlmIG1hdGNoZWQ6CkBAIC0xMzgxLDcgKzEzODAsNyBAQCBk
ZWYgY2hlY2tfc3BhY2luZyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJv
cik6CiAgICAgICAgICAgICAgICAgICAnRGVjbGFyYXRpb24gaGFzIHNwYWNlIGJldHdlZW4gKiBh
bmQgdmFyaWFibGUgbmFtZSBpbiAlcycgJSBtYXRjaGVkLmdyb3VwKDApLnN0cmlwKCkpCiAKICAg
ICAjIE5leHQgd2Ugd2lsbCBsb29rIGZvciBpc3N1ZXMgd2l0aCBmdW5jdGlvbiBjYWxscy4KLSAg
ICBjaGVja19zcGFjaW5nX2Zvcl9mdW5jdGlvbl9jYWxsKGZpbGVuYW1lLCBsaW5lLCBsaW5lX251
bWJlciwgZXJyb3IpCisgICAgY2hlY2tfc3BhY2luZ19mb3JfZnVuY3Rpb25fY2FsbChsaW5lLCBs
aW5lX251bWJlciwgZXJyb3IpCiAKICAgICAjIEV4Y2VwdCBhZnRlciBhbiBvcGVuaW5nIHBhcmVu
LCB5b3Ugc2hvdWxkIGhhdmUgc3BhY2VzIGJlZm9yZSB5b3VyIGJyYWNlcy4KICAgICAjIEFuZCBz
aW5jZSB5b3Ugc2hvdWxkIG5ldmVyIGhhdmUgYnJhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBs
aW5lLCB0aGlzIGlzCkBAIC0xNDQ2LDExICsxNDQ1LDEwIEBAIGRlZiBnZXRfcHJldmlvdXNfbm9u
X2JsYW5rX2xpbmUoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyKToKICAgICByZXR1cm4gKCcnLCAt
MSkKIAogCi1kZWYgY2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRlLCBlcnJvcik6Citk
ZWYgY2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAiIiJMb29rcyBmb3IgaW5k
ZW50YXRpb24gZXJyb3JzIGluc2lkZSBvZiBuYW1lc3BhY2VzLgogCiAgICAgQXJnczoKLSAgICAg
IGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgY2xlYW5fbGlu
ZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgogICAgICAg
bGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCiAgICAgICBmaWxl
X2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAoZG90IG5vdCBpbmNsdWRlZCkgb2YgdGhlIGZpbGUu
CkBAIC0xNDk1LDE4ICsxNDkzLDE4IEBAIGRlZiBjaGVja19uYW1lc3BhY2VfaW5kZW50YXRpb24o
ZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpCiAgICAgICAg
IGlmIGN1cnJlbnRfaW5kZW50YXRpb25fbGV2ZWwgPCAwOgogICAgICAgICAgICAgYnJlYWs7CiAK
LWRlZiBjaGVja191c2luZ19zdGQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZXJyb3IpOgorZGVmIGNoZWNrX3VzaW5nX3N0ZChmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgIiIiTG9va3MgZm9yICd1c2luZyBzdGQ6OmZvbzsn
IHN0YXRlbWVudHMgd2hpY2ggc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggJ3VzaW5nIG5hbWVzcGFj
ZSBzdGQ7Jy4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhlIGN1
cnJlbnQgZmlsZS4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIG9mIHRoZSBj
dXJyZW50IGZpbGUsIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LgogICAgICAgY2xlYW5fbGluZXM6
IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgogICAgICAgbGlu
ZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCiAgICAgICBlcnJvcjog
VGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIiIgogCiAg
ICAgIyBUaGlzIGNoZWNrIGRvZXNuJ3QgYXBwbHkgdG8gQyBvciBPYmplY3RpdmUtQyBpbXBsZW1l
bnRhdGlvbiBmaWxlcy4KLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmMnKSBvciBmaWxlbmFt
ZS5lbmRzd2l0aCgnLm0nKToKKyAgICBpZiBpc19jX29yX29iamVjdGl2ZV9jKGZpbGVfZXh0ZW5z
aW9uKToKICAgICAgICAgcmV0dXJuCiAKICAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVkW2xp
bmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCkBAIC0xNTIwLDE4
ICsxNTE4LDE4IEBAIGRlZiBjaGVja191c2luZ19zdGQoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBs
aW5lX251bWJlciwgZXJyb3IpOgogICAgICAgICAgICJVc2UgJ3VzaW5nIG5hbWVzcGFjZSBzdGQ7
JyBpbnN0ZWFkIG9mICd1c2luZyBzdGQ6OiVzOycuIiAlIG1ldGhvZF9uYW1lKQogCiAKLWRlZiBj
aGVja19tYXhfbWluX21hY3JvcyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CitkZWYgY2hlY2tfbWF4X21pbl9tYWNyb3MoZmlsZV9leHRlbnNpb24sIGNsZWFuX2xp
bmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICIiIkxvb2tzIHVzZSBvZiBNQVgoKSBhbmQg
TUlOKCkgbWFjcm9zIHRoYXQgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggc3RkOjptYXgoKSBhbmQg
c3RkOjptaW4oKS4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnQgZmlsZS4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgZXh0ZW5zaW9uIG9mIHRo
ZSBjdXJyZW50IGZpbGUsIHdpdGhvdXQgdGhlIGxlYWRpbmcgZG90LgogICAgICAgY2xlYW5fbGlu
ZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgogICAgICAg
bGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCiAgICAgICBlcnJv
cjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgogICAgICIiIgog
CiAgICAgIyBUaGlzIGNoZWNrIGRvZXNuJ3QgYXBwbHkgdG8gQyBvciBPYmplY3RpdmUtQyBpbXBs
ZW1lbnRhdGlvbiBmaWxlcy4KLSAgICBpZiBmaWxlbmFtZS5lbmRzd2l0aCgnLmMnKSBvciBmaWxl
bmFtZS5lbmRzd2l0aCgnLm0nKToKKyAgICBpZiBpc19jX29yX29iamVjdGl2ZV9jKGZpbGVfZXh0
ZW5zaW9uKToKICAgICAgICAgcmV0dXJuCiAKICAgICBsaW5lID0gY2xlYW5fbGluZXMuZWxpZGVk
W2xpbmVfbnVtYmVyXSAjIEdldCByaWQgb2YgY29tbWVudHMgYW5kIHN0cmluZ3MuCkBAIC0xNTQ3
LDExICsxNTQ1LDEwIEBAIGRlZiBjaGVja19tYXhfbWluX21hY3JvcyhmaWxlbmFtZSwgY2xlYW5f
bGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgICAgICAgJSAobWF4X21pbl9tYWNyb19s
b3dlciwgbWF4X21pbl9tYWNyb19sb3dlciwgbWF4X21pbl9tYWNybykpCiAKIAotZGVmIGNoZWNr
X3N3aXRjaF9pbmRlbnRhdGlvbihmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcik6CitkZWYgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251
bWJlciwgZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciBpbmRlbnRhdGlvbiBlcnJvcnMgaW5zaWRl
IG9mIHN3aXRjaCBzdGF0ZW1lbnRzLgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUg
bmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRM
aW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxlLgogICAgICAgbGluZV9udW1iZXI6IFRo
ZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCiAgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9u
IHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgpAQCAtMTYxOCwxMSArMTYxNSwxMCBAQCBk
ZWYgY2hlY2tfc3dpdGNoX2luZGVudGF0aW9uKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGVycm9yKToKICAgICAgICAgICAgIGJyZWFrCiAKIAotZGVmIGNoZWNrX2JyYWNlcyhm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CitkZWYgY2hlY2tfYnJh
Y2VzKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciBt
aXNwbGFjZWQgYnJhY2VzIChlLmcuIGF0IHRoZSBlbmQgb2YgbGluZSkuCiAKICAgICBBcmdzOgot
ICAgICAgZmlsZW5hbWU6IFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZpbGUuCiAgICAgICBjbGVh
bl9saW5lczogQSBDbGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCiAg
ICAgICBsaW5lX251bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KICAgICAg
IGVycm9yOiBUaGUgZnVuY3Rpb24gdG8gY2FsbCB3aXRoIGFueSBlcnJvcnMgZm91bmQuCkBAIC0x
Njk1LDEzICsxNjkxLDEyIEBAIGRlZiBjaGVja19icmFjZXMoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpOgogICAgICAgICAgICAgICAiWW91IGRvbid0IG5lZWQgYSA7
IGFmdGVyIGEgfSIpCiAKIAotZGVmIGNoZWNrX2V4aXRfc3RhdGVtZW50X3NpbXBsaWZpY2F0aW9u
cyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CitkZWYgY2hlY2tf
ZXhpdF9zdGF0ZW1lbnRfc2ltcGxpZmljYXRpb25zKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwg
ZXJyb3IpOgogICAgICIiIkxvb2tzIGZvciBlbHNlIG9yIGVsc2UtaWYgc3RhdGVtZW50cyB0aGF0
IHNob3VsZCBiZSB3cml0dGVuIGFzIGFuCiAgICAgaWYgc3RhdGVtZW50IHdoZW4gdGhlIHByaW9y
IGlmIGNvbmNsdWRlcyB3aXRoIGEgcmV0dXJuLCBicmVhaywgY29udGludWUgb3IKICAgICBnb3Rv
IHN0YXRlbWVudC4KIAogICAgIEFyZ3M6Ci0gICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnQgZmlsZS4KICAgICAgIGNsZWFuX2xpbmVzOiBBIENsZWFuc2VkTGluZXMgaW5zdGFu
Y2UgY29udGFpbmluZyB0aGUgZmlsZS4KICAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9m
IHRoZSBsaW5lIHRvIGNoZWNrLgogICAgICAgZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdp
dGggYW55IGVycm9ycyBmb3VuZC4KQEAgLTE4MjAsMTEgKzE4MTUsMTAgQEAgZGVmIHJlcGxhY2Vh
YmxlX2NoZWNrKG9wZXJhdG9yLCBtYWNybywgbGluZSk6CiAgICAgcmV0dXJuIG1hdGNoKG1hdGNo
X3RoaXMsIGxpbmUpIGFuZCBub3Qgc2VhcmNoKHInTlVMTHwmJnxcfFx8JywgbGluZSkKIAogCi1k
ZWYgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3Ip
OgorZGVmIGNoZWNrX2NoZWNrKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpOgogICAg
ICIiIkNoZWNrcyB0aGUgdXNlIG9mIENIRUNLIGFuZCBFWFBFQ1QgbWFjcm9zLgogCiAgICAgQXJn
czoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBmaWxlLgogICAgICAg
Y2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBmaWxl
LgogICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUgdG8gY2hlY2suCiAg
ICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZvdW5kLgpA
QCAtMTg1Myw3ICsxODQ3LDcgQEAgZGVmIGNoZWNrX2NoZWNrKGZpbGVuYW1lLCBjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAgICAgICAgIGJyZWFrCiAKIAotZGVmIGNoZWNr
X2Zvcl9jb21wYXJpc29uc190b196ZXJvKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1i
ZXIsIGVycm9yKToKK2RlZiBjaGVja19mb3JfY29tcGFyaXNvbnNfdG9femVybyhjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAjIEdldCB0aGUgbGluZSB3aXRob3V0IGNvbW1l
bnRzIGFuZCBzdHJpbmdzLgogICAgIGxpbmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1i
ZXJdCiAKQEAgLTE4NjMsOSArMTg1Nyw5IEBAIGRlZiBjaGVja19mb3JfY29tcGFyaXNvbnNfdG9f
emVybyhmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcik6CiAgICAgICAg
ICAgICAgICdUZXN0cyBmb3IgdHJ1ZS9mYWxzZSwgbnVsbC9ub24tbnVsbCwgYW5kIHplcm8vbm9u
LXplcm8gc2hvdWxkIGFsbCBiZSBkb25lIHdpdGhvdXQgZXF1YWxpdHkgY29tcGFyaXNvbnMuJykK
IAogCi1kZWYgY2hlY2tfZm9yX251bGwoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJl
ciwgZXJyb3IpOgorZGVmIGNoZWNrX2Zvcl9udWxsKGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5l
cywgbGluZV9udW1iZXIsIGVycm9yKToKICAgICAjIFRoaXMgY2hlY2sgZG9lc24ndCBhcHBseSB0
byBDIG9yIE9iamVjdGl2ZS1DIGltcGxlbWVudGF0aW9uIGZpbGVzLgotICAgIGlmIGZpbGVuYW1l
LmVuZHN3aXRoKCcuYycpIG9yIGZpbGVuYW1lLmVuZHN3aXRoKCcubScpOgorICAgIGlmIGlzX2Nf
b3Jfb2JqZWN0aXZlX2MoZmlsZV9leHRlbnNpb24pOgogICAgICAgICByZXR1cm4KIAogICAgIGxp
bmUgPSBjbGVhbl9saW5lcy5lbGlkZWRbbGluZV9udW1iZXJdCkBAIC0xOTA2LDcgKzE5MDAsNyBA
QCBkZWYgZ2V0X2xpbmVfd2lkdGgobGluZSk6CiAgICAgcmV0dXJuIGxlbihsaW5lKQogCiAKLWRl
ZiBjaGVja19zdHlsZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4
dGVuc2lvbiwgZmlsZV9zdGF0ZSwgZXJyb3IpOgorZGVmIGNoZWNrX3N0eWxlKGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKToKICAgICAi
IiJDaGVja3MgcnVsZXMgZnJvbSB0aGUgJ0MrKyBzdHlsZSBydWxlcycgc2VjdGlvbiBvZiBjcHBn
dWlkZS5odG1sLgogCiAgICAgTW9zdCBvZiB0aGVzZSBydWxlcyBhcmUgaGFyZCB0byB0ZXN0IChu
YW1pbmcsIGNvbW1lbnQgc3R5bGUpLCBidXQgd2UKQEAgLTE5MTQsNyArMTkwOCw2IEBAIGRlZiBj
aGVja19zdHlsZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVu
c2lvbiwgZmlsZV9zdGF0ZSwKICAgICB0YWIgdXNhZ2UsIHNwYWNlcyBpbnNpZGUgY29kZSwgZXRj
LgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0aGUgY3VycmVudCBm
aWxlLgogICAgICAgY2xlYW5fbGluZXM6IEEgQ2xlYW5zZWRMaW5lcyBpbnN0YW5jZSBjb250YWlu
aW5nIHRoZSBmaWxlLgogICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxpbmUg
dG8gY2hlY2suCiAgICAgICBmaWxlX2V4dGVuc2lvbjogVGhlIGV4dGVuc2lvbiAod2l0aG91dCB0
aGUgZG90KSBvZiB0aGUgZmlsZW5hbWUuCkBAIC0xOTg4LDE2ICsxOTgxLDE2IEBAIGRlZiBjaGVj
a19zdHlsZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lv
biwgZmlsZV9zdGF0ZSwKICAgICAgICAgICAgICAgJ29wZXJhdG9ycyBvbiB0aGUgbGVmdCBzaWRl
IG9mIHRoZSBsaW5lIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpZGUuJykKIAogICAgICMgU29tZSBt
b3JlIHN0eWxlIGNoZWNrcwotICAgIGNoZWNrX25hbWVzcGFjZV9pbmRlbnRhdGlvbihmaWxlbmFt
ZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0ZSwg
ZXJyb3IpCi0gICAgY2hlY2tfdXNpbmdfc3RkKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9u
dW1iZXIsIGVycm9yKQotICAgIGNoZWNrX21heF9taW5fbWFjcm9zKGZpbGVuYW1lLCBjbGVhbl9s
aW5lcywgbGluZV9udW1iZXIsIGVycm9yKQotICAgIGNoZWNrX3N3aXRjaF9pbmRlbnRhdGlvbihm
aWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKLSAgICBjaGVja19icmFj
ZXMoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tf
ZXhpdF9zdGF0ZW1lbnRfc2ltcGxpZmljYXRpb25zKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGlu
ZV9udW1iZXIsIGVycm9yKQotICAgIGNoZWNrX3NwYWNpbmcoZmlsZW5hbWUsIGNsZWFuX2xpbmVz
LCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfY2hlY2soZmlsZW5hbWUsIGNsZWFuX2xp
bmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tfZm9yX2NvbXBhcmlzb25zX3RvX3pl
cm8oZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCi0gICAgY2hlY2tf
Zm9yX251bGwoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisgICAg
Y2hlY2tfbmFtZXNwYWNlX2luZGVudGF0aW9uKGNsZWFuX2xpbmVzLCBsaW5lX251bWJlciwgZmls
ZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKQorICAgIGNoZWNrX3VzaW5nX3N0ZChmaWxl
X2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVja19t
YXhfbWluX21hY3JvcyhmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcikKKyAgICBjaGVja19zd2l0Y2hfaW5kZW50YXRpb24oY2xlYW5fbGluZXMsIGxpbmVfbnVt
YmVyLCBlcnJvcikKKyAgICBjaGVja19icmFjZXMoY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBl
cnJvcikKKyAgICBjaGVja19leGl0X3N0YXRlbWVudF9zaW1wbGlmaWNhdGlvbnMoY2xlYW5fbGlu
ZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVja19zcGFjaW5nKGZpbGVfZXh0ZW5zaW9u
LCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGVycm9yKQorICAgIGNoZWNrX2NoZWNrKGNsZWFu
X2xpbmVzLCBsaW5lX251bWJlciwgZXJyb3IpCisgICAgY2hlY2tfZm9yX2NvbXBhcmlzb25zX3Rv
X3plcm8oY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKKyAgICBjaGVja19mb3JfbnVs
bChmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBlcnJvcikKIAogCiBf
UkVfUEFUVEVSTl9JTkNMVURFX05FV19TVFlMRSA9IHJlLmNvbXBpbGUocicjaW5jbHVkZSArIlte
L10rXC5oIicpCkBAIC0yMTE4LDcgKzIxMTEsNyBAQCBkZWYgX2NsYXNzaWZ5X2luY2x1ZGUoZmls
ZW5hbWUsIGluY2x1ZGUsIGlzX3N5c3RlbSwgaW5jbHVkZV9zdGF0ZSk6CiAKIAogCi1kZWYgY2hl
Y2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGluY2x1
ZGVfc3RhdGUsIGVycm9yKToKK2RlZiBjaGVja19pbmNsdWRlX2xpbmUoZmlsZW5hbWUsIGZpbGVf
ZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGluY2x1ZGVfc3RhdGUsIGVycm9y
KToKICAgICAiIiJDaGVjayBydWxlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvICNpbmNsdWRlIGxp
bmVzLgogCiAgICAgU3RyaW5ncyBvbiAjaW5jbHVkZSBsaW5lcyBhcmUgTk9UIHJlbW92ZWQgZnJv
bSBlbGlkZWQgbGluZSwgdG8gbWFrZQpAQCAtMjEyNyw2ICsyMTIwLDcgQEAgZGVmIGNoZWNrX2lu
Y2x1ZGVfbGluZShmaWxlbmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0
YXRlLCBlcnJvcikKIAogICAgIEFyZ3M6CiAgICAgICBmaWxlbmFtZTogVGhlIG5hbWUgb2YgdGhl
IGN1cnJlbnQgZmlsZS4KKyAgICAgIGZpbGVfZXh0ZW5zaW9uOiBUaGUgY3VycmVudCBmaWxlIGV4
dGVuc2lvbiwgd2l0aG91dCB0aGUgbGVhZGluZyBkb3QuCiAgICAgICBjbGVhbl9saW5lczogQSBD
bGVhbnNlZExpbmVzIGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGZpbGUuCiAgICAgICBsaW5lX251
bWJlcjogVGhlIG51bWJlciBvZiB0aGUgbGluZSB0byBjaGVjay4KICAgICAgIGluY2x1ZGVfc3Rh
dGU6IEFuIF9JbmNsdWRlU3RhdGUgaW5zdGFuY2UgaW4gd2hpY2ggdGhlIGhlYWRlcnMgYXJlIGlu
c2VydGVkLgpAQCAtMjE4MSw3ICsyMTc1LDcgQEAgZGVmIGNoZWNrX2luY2x1ZGVfbGluZShmaWxl
bmFtZSwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKICAg
ICAjIDIpIGZvciBoZWFkZXIgZmlsZXM6IGFscGhhYmV0aWNhbGx5IHNvcnRlZAogICAgICMgVGhl
IGluY2x1ZGVfc3RhdGUgb2JqZWN0IGtlZXBzIHRyYWNrIG9mIHRoZSBsYXN0IHR5cGUgc2Vlbgog
ICAgICMgYW5kIGNvbXBsYWlucyBpZiB0aGUgaGVhZGVyIHR5cGVzIGFyZSBvdXQgb2Ygb3JkZXIg
b3IgbWlzc2luZy4KLSAgICBlcnJvcl9tZXNzYWdlID0gaW5jbHVkZV9zdGF0ZS5jaGVja19uZXh0
X2luY2x1ZGVfb3JkZXIoaGVhZGVyX3R5cGUsIGZpbGVuYW1lLmVuZHN3aXRoKCcuaCcpKQorICAg
IGVycm9yX21lc3NhZ2UgPSBpbmNsdWRlX3N0YXRlLmNoZWNrX25leHRfaW5jbHVkZV9vcmRlciho
ZWFkZXJfdHlwZSwgKGZpbGVfZXh0ZW5zaW9uID09ICJoIikpCiAKICAgICAjIENoZWNrIHRvIG1h
a2Ugc3VyZSB3ZSBoYXZlIGEgYmxhbmsgbGluZSBhZnRlciBwcmltYXJ5IGhlYWRlci4KICAgICBp
ZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0gX1BSSU1BUllfSEVBREVSOgpA
QCAtMjIwOCw3ICsyMjAyLDcgQEAgZGVmIGNoZWNrX2luY2x1ZGVfbGluZShmaWxlbmFtZSwgY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKICAgICAgICAgICAg
ICAgICAgICAgICAnQWxwaGFiZXRpY2FsIHNvcnRpbmcgcHJvYmxlbS4nKQogCiAgICAgaWYgZXJy
b3JfbWVzc2FnZToKLSAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5oJyk6CisgICAgICAg
IGlmIGZpbGVfZXh0ZW5zaW9uID09ICdoJzoKICAgICAgICAgICAgIGVycm9yKGxpbmVfbnVtYmVy
LCAnYnVpbGQvaW5jbHVkZV9vcmRlcicsIDQsCiAgICAgICAgICAgICAgICAgICAnJXMgU2hvdWxk
IGJlOiBhbHBoYWJldGljYWxseSBzb3J0ZWQuJyAlCiAgICAgICAgICAgICAgICAgICBlcnJvcl9t
ZXNzYWdlKQpAQCAtMjI0MSw3ICsyMjM1LDcgQEAgZGVmIGNoZWNrX2xhbmd1YWdlKGZpbGVuYW1l
LCBjbGVhbl9saW5lcywgbGluZV9udW1iZXIsIGZpbGVfZXh0ZW5zaW9uLCBpbmNsdWRlX3MKIAog
ICAgIG1hdGNoZWQgPSBfUkVfUEFUVEVSTl9JTkNMVURFLnNlYXJjaChsaW5lKQogICAgIGlmIG1h
dGNoZWQ6Ci0gICAgICAgIGNoZWNrX2luY2x1ZGVfbGluZShmaWxlbmFtZSwgY2xlYW5fbGluZXMs
IGxpbmVfbnVtYmVyLCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKKyAgICAgICAgY2hlY2tfaW5jbHVk
ZV9saW5lKGZpbGVuYW1lLCBmaWxlX2V4dGVuc2lvbiwgY2xlYW5fbGluZXMsIGxpbmVfbnVtYmVy
LCBpbmNsdWRlX3N0YXRlLCBlcnJvcikKICAgICAgICAgcmV0dXJuCiAKICAgICAjIEZJWE1FOiBm
aWd1cmUgb3V0IGlmIHRoZXkncmUgdXNpbmcgZGVmYXVsdCBhcmd1bWVudHMgaW4gZm4gcHJvdG8u
CkBAIC0yMjYyLDEyICsyMjU2LDEyIEBAIGRlZiBjaGVja19sYW5ndWFnZShmaWxlbmFtZSwgY2xl
YW5fbGluZXMsIGxpbmVfbnVtYmVyLCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVkZV9zCiAgICAgICAg
ICAgICAgICAgICAnVXNlIHN0YXRpY19jYXN0PCVzPiguLi4pIGluc3RlYWQnICUKICAgICAgICAg
ICAgICAgICAgIG1hdGNoZWQuZ3JvdXAoMSkpCiAKLSAgICBjaGVja19jX3N0eWxlX2Nhc3QoZmls
ZW5hbWUsIGxpbmVfbnVtYmVyLCBsaW5lLCBjbGVhbl9saW5lcy5yYXdfbGluZXNbbGluZV9udW1i
ZXJdLAorICAgIGNoZWNrX2Nfc3R5bGVfY2FzdChsaW5lX251bWJlciwgbGluZSwgY2xlYW5fbGlu
ZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKICAgICAgICAgICAgICAgICAgICAgICAgJ3N0YXRp
Y19jYXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgcidcKChpbnR8ZmxvYXR8ZG91YmxlfGJv
b2x8Y2hhcnx1P2ludCgxNnwzMnw2NCkpXCknLAogICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cikKICAgICAjIFRoaXMgZG9lc24ndCBjYXRjaCBhbGwgY2FzZXMuICBDb25zaWRlciAoY29uc3Qg
Y2hhciAqIGNvbnN0KSJoZWxsbyIuCi0gICAgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVuYW1lLCBs
aW5lX251bWJlciwgbGluZSwgY2xlYW5fbGluZXMucmF3X2xpbmVzW2xpbmVfbnVtYmVyXSwKKyAg
ICBjaGVja19jX3N0eWxlX2Nhc3QobGluZV9udW1iZXIsIGxpbmUsIGNsZWFuX2xpbmVzLnJhd19s
aW5lc1tsaW5lX251bWJlcl0sCiAgICAgICAgICAgICAgICAgICAgICAgICdyZWludGVycHJldF9j
YXN0JywgcidcKChcdytccz9cKitccz8pXCknLCBlcnJvcikKIAogICAgICMgSW4gYWRkaXRpb24s
IHdlIGxvb2sgZm9yIHBlb3BsZSB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSBjYXN0LiAgVGhpcwpA
QCAtMjUyOSwxNCArMjUyMywxMyBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xh
cmF0aW9uKGZpbGVuYW1lLCBsaW5lX251bWJlciwgbGluZSwgZXJyb3IpOgogICAgICAgICBsaW5l
ID0gbGluZVttYXRjaGVkLmVuZCgpOl0KIAogCi1kZWYgY2hlY2tfY19zdHlsZV9jYXN0KGZpbGVu
YW1lLCBsaW5lX251bWJlciwgbGluZSwgcmF3X2xpbmUsIGNhc3RfdHlwZSwgcGF0dGVybiwKK2Rl
ZiBjaGVja19jX3N0eWxlX2Nhc3QobGluZV9udW1iZXIsIGxpbmUsIHJhd19saW5lLCBjYXN0X3R5
cGUsIHBhdHRlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKToKICAgICAiIiJDaGVj
a3MgZm9yIGEgQy1zdHlsZSBjYXN0IGJ5IGxvb2tpbmcgZm9yIHRoZSBwYXR0ZXJuLgogCiAgICAg
VGhpcyBhbHNvIGhhbmRsZXMgc2l6ZW9mKHR5cGUpIHdhcm5pbmdzLCBkdWUgdG8gc2ltaWxhcml0
eSBvZiBjb250ZW50LgogCiAgICAgQXJnczoKLSAgICAgIGZpbGVuYW1lOiBUaGUgbmFtZSBvZiB0
aGUgY3VycmVudCBmaWxlLgogICAgICAgbGluZV9udW1iZXI6IFRoZSBudW1iZXIgb2YgdGhlIGxp
bmUgdG8gY2hlY2suCiAgICAgICBsaW5lOiBUaGUgbGluZSBvZiBjb2RlIHRvIGNoZWNrLgogICAg
ICAgcmF3X2xpbmU6IFRoZSByYXcgbGluZSBvZiBjb2RlIHRvIGNoZWNrLCB3aXRoIGNvbW1lbnRz
LgpAQCAtMjg0MSwyMiArMjgzNCwyMSBAQCBkZWYgcHJvY2Vzc19saW5lKGZpbGVuYW1lLCBmaWxl
X2V4dGVuc2lvbiwKICAgICAgICAgICAgICAgICAgICB0aGUgY3VycmVudCBzdGFjayBvZiBuZXN0
ZWQgY2xhc3MgZGVjbGFyYXRpb25zIGJlaW5nIHBhcnNlZC4KICAgICAgIGZpbGVfc3RhdGU6IEEg
X0ZpbGVTdGF0ZSBpbnN0YW5jZSB3aGljaCBtYWludGFpbnMgaW5mb3JtYXRpb24gYWJvdXQKICAg
ICAgICAgICAgICAgICAgIHRoZSBzdGF0ZSBvZiB0aGluZ3MgaW4gdGhlIGZpbGUuCi0gICAgICBl
cnJvcjogQSBjYWxsYWJsZSB0byB3aGljaCBlcnJvcnMgYXJlIHJlcG9ydGVkLCB3aGljaCB0YWtl
cyA0IGFyZ3VtZW50czoKLSAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGVycm9y
IGxldmVsLCBhbmQgbWVzc2FnZQorICAgICAgZXJyb3I6IEEgY2FsbGFibGUgdG8gd2hpY2ggZXJy
b3JzIGFyZSByZXBvcnRlZCwgd2hpY2ggdGFrZXMgYXJndW1lbnRzOgorICAgICAgICAgICAgIGxp
bmUgbnVtYmVyLCBlcnJvciBsZXZlbCwgYW5kIG1lc3NhZ2UKIAogICAgICIiIgogICAgIHJhd19s
aW5lcyA9IGNsZWFuX2xpbmVzLnJhd19saW5lcwotICAgIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5n
dGhzKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGluZSwgZnVuY3Rpb25fc3RhdGUsIGVycm9yKQor
ICAgIGNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGNsZWFuX2xpbmVzLCBsaW5lLCBmdW5jdGlv
bl9zdGF0ZSwgZXJyb3IpCiAgICAgaWYgc2VhcmNoKHInXGJOT0xJTlRcYicsIHJhd19saW5lc1ts
aW5lXSk6ICAjIGlnbm9yZSBub2xpbnQgbGluZXMKICAgICAgICAgcmV0dXJuCi0gICAgY2hlY2tf
Zm9yX211bHRpbGluZV9jb21tZW50c19hbmRfc3RyaW5ncyhmaWxlbmFtZSwgY2xlYW5fbGluZXMs
IGxpbmUsIGVycm9yKQotICAgIGNoZWNrX3N0eWxlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgbGlu
ZSwgZmlsZV9leHRlbnNpb24sIGZpbGVfc3RhdGUsIGVycm9yKQorICAgIGNoZWNrX2Zvcl9tdWx0
aWxpbmVfY29tbWVudHNfYW5kX3N0cmluZ3MoY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQorICAg
IGNoZWNrX3N0eWxlKGNsZWFuX2xpbmVzLCBsaW5lLCBmaWxlX2V4dGVuc2lvbiwgZmlsZV9zdGF0
ZSwgZXJyb3IpCiAgICAgY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGNsZWFuX2xpbmVzLCBsaW5l
LCBmaWxlX2V4dGVuc2lvbiwgaW5jbHVkZV9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICBlcnJv
cikKLSAgICBjaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0cnVjdHMoZmlsZW5hbWUsIGNsZWFu
X2xpbmVzLCBsaW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFz
c19zdGF0ZSwgZXJyb3IpCi0gICAgY2hlY2tfcG9zaXhfdGhyZWFkaW5nKGZpbGVuYW1lLCBjbGVh
bl9saW5lcywgbGluZSwgZXJyb3IpCi0gICAgY2hlY2tfaW52YWxpZF9pbmNyZW1lbnQoZmlsZW5h
bWUsIGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKKyAgICBjaGVja19mb3Jfbm9uX3N0YW5kYXJk
X2NvbnN0cnVjdHMoY2xlYW5fbGluZXMsIGxpbmUsIGNsYXNzX3N0YXRlLCBlcnJvcikKKyAgICBj
aGVja19wb3NpeF90aHJlYWRpbmcoY2xlYW5fbGluZXMsIGxpbmUsIGVycm9yKQorICAgIGNoZWNr
X2ludmFsaWRfaW5jcmVtZW50KGNsZWFuX2xpbmVzLCBsaW5lLCBlcnJvcikKIAogCiBkZWYgX3By
b2Nlc3NfbGluZXMoZmlsZW5hbWUsIGZpbGVfZXh0ZW5zaW9uLCBsaW5lcywgZXJyb3IsIHZlcmJv
c2l0eSk6CkBAIC0yODc3LDI1ICsyODY5LDI1IEBAIGRlZiBfcHJvY2Vzc19saW5lcyhmaWxlbmFt
ZSwgZmlsZV9leHRlbnNpb24sIGxpbmVzLCBlcnJvciwgdmVyYm9zaXR5KToKICAgICBjbGFzc19z
dGF0ZSA9IF9DbGFzc1N0YXRlKCkKICAgICBmaWxlX3N0YXRlID0gX0ZpbGVTdGF0ZSgpCiAKLSAg
ICBjaGVja19mb3JfY29weXJpZ2h0KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgY2hlY2tf
Zm9yX2NvcHlyaWdodChsaW5lcywgZXJyb3IpCiAKICAgICBpZiBmaWxlX2V4dGVuc2lvbiA9PSAn
aCc6CiAgICAgICAgIGNoZWNrX2Zvcl9oZWFkZXJfZ3VhcmQoZmlsZW5hbWUsIGxpbmVzLCBlcnJv
cikKIAotICAgIHJlbW92ZV9tdWx0aV9saW5lX2NvbW1lbnRzKGZpbGVuYW1lLCBsaW5lcywgZXJy
b3IpCisgICAgcmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGluZXMsIGVycm9yKQogICAgIGNs
ZWFuX2xpbmVzID0gQ2xlYW5zZWRMaW5lcyhsaW5lcykKICAgICBmb3IgbGluZSBpbiB4cmFuZ2Uo
Y2xlYW5fbGluZXMubnVtX2xpbmVzKCkpOgogICAgICAgICBwcm9jZXNzX2xpbmUoZmlsZW5hbWUs
IGZpbGVfZXh0ZW5zaW9uLCBjbGVhbl9saW5lcywgbGluZSwKICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVfc3RhdGUsIGZ1bmN0aW9uX3N0YXRlLCBjbGFzc19zdGF0ZSwgZmlsZV9zdGF0ZSwg
ZXJyb3IpCi0gICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZmlsZW5hbWUsIGVycm9yKQor
ICAgIGNsYXNzX3N0YXRlLmNoZWNrX2ZpbmlzaGVkKGVycm9yKQogCiAgICAgY2hlY2tfZm9yX2lu
Y2x1ZGVfd2hhdF95b3VfdXNlKGZpbGVuYW1lLCBjbGVhbl9saW5lcywgaW5jbHVkZV9zdGF0ZSwg
ZXJyb3IpCiAKICAgICAjIFdlIGNoZWNrIGhlcmUgcmF0aGVyIHRoYW4gaW5zaWRlIHByb2Nlc3Nf
bGluZSBzbyB0aGF0IHdlIHNlZSByYXcKICAgICAjIGxpbmVzIHJhdGhlciB0aGFuICJjbGVhbmVk
IiBsaW5lcy4KLSAgICBjaGVja19mb3JfdW5pY29kZV9yZXBsYWNlbWVudF9jaGFyYWN0ZXJzKGZp
bGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgY2hlY2tfZm9yX3VuaWNvZGVfcmVwbGFjZW1lbnRf
Y2hhcmFjdGVycyhsaW5lcywgZXJyb3IpCiAKLSAgICBjaGVja19mb3JfbmV3X2xpbmVfYXRfZW9m
KGZpbGVuYW1lLCBsaW5lcywgZXJyb3IpCisgICAgY2hlY2tfZm9yX25ld19saW5lX2F0X2VvZihs
aW5lcywgZXJyb3IpCiAKIAogY2xhc3MgQ3BwUHJvY2Vzc29yKG9iamVjdCk6CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0
ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2Nw
cF91bml0dGVzdC5weQppbmRleCBmYTY3NjMyLi5lNTU2Y2QzIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMvY3BwX3VuaXR0ZXN0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vzc29ycy9jcHBfdW5p
dHRlc3QucHkKQEAgLTEwNSw2ICsxMDUsMTYgQEAgY2xhc3MgTW9ja0lvOgogICAgICAgICByZXR1
cm4gc2VsZi5tb2NrX2ZpbGUKIAogCitjbGFzcyBDcHBGdW5jdGlvbnNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKKworICAgICIiIlN1cHBvcnRzIHRlc3RpbmcgZnVuY3Rpb25zIHRoYXQgZG8gbm90
IG5lZWQgQ3BwU3R5bGVUZXN0QmFzZS4iIiIKKworICAgIGRlZiB0ZXN0X2lzX2Nfb3Jfb2JqZWN0
aXZlX2Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjcHBfc3R5bGUuaXNfY19vcl9v
YmplY3RpdmVfYygiYyIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoY3BwX3N0eWxlLmlzX2Nf
b3Jfb2JqZWN0aXZlX2MoIm0iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjcHBfc3R5bGUu
aXNfY19vcl9vYmplY3RpdmVfYygiY3BwIikpCisKKwogY2xhc3MgQ3BwU3R5bGVUZXN0QmFzZSh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiUHJvdmlkZXMgc29tZSB1c2VmdWwgaGVscGVyIGZ1
bmN0aW9ucyBmb3IgY3BwX3N0eWxlIHRlc3RzLgogCkBAIC0xMjgsNyArMTM4LDcgQEAgY2xhc3Mg
Q3BwU3R5bGVUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHBlcmZvcm1fc2lu
Z2xlX2xpbmVfbGludChzZWxmLCBjb2RlLCBmaWxlX25hbWUpOgogICAgICAgICBlcnJvcl9jb2xs
ZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCiAgICAgICAgIGxpbmVzID0gY29k
ZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVu
dHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQorICAgICAgICBjcHBfc3R5bGUu
cmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGluZXMsIGVycm9yX2NvbGxlY3RvcikKICAgICAg
ICAgY2xlYW5fbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5lcykKICAgICAgICAg
aW5jbHVkZV9zdGF0ZSA9IGNwcF9zdHlsZS5fSW5jbHVkZVN0YXRlKCkKICAgICAgICAgZnVuY3Rp
b25fc3RhdGUgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUoc2VsZi52ZXJib3NpdHkpCkBAIC0x
NDUsMTkgKzE1NSwxOCBAQCBjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgcmV0dXJuIGVycm9yX2NvbGxlY3Rvci5yZXN1bHRzKCkKIAogICAgICMgUGVy
Zm9ybSBsaW50IG92ZXIgbXVsdGlwbGUgbGluZXMgYW5kIHJldHVybiB0aGUgZXJyb3IgbWVzc2Fn
ZS4KLSAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSwgZmlsZV9uYW1l
KToKKyAgICBkZWYgcGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoc2VsZiwgY29kZSwgZmlsZV9leHRl
bnNpb24pOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3RvcihzZWxmLmFz
c2VydF8pCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBfc3R5
bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29s
bGVjdG9yKQorICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGlu
ZXMsIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRM
aW5lcyhsaW5lcykKLSAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgnLicp
ICsgMTpdCiAgICAgICAgIGNsYXNzX3N0YXRlID0gY3BwX3N0eWxlLl9DbGFzc1N0YXRlKCkKICAg
ICAgICAgZmlsZV9zdGF0ZSA9IGNwcF9zdHlsZS5fRmlsZVN0YXRlKCkKICAgICAgICAgZm9yIGkg
aW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVj
a19zdHlsZShmaWxlX25hbWUsIGxpbmVzLCBpLCBleHQsIGZpbGVfc3RhdGUsIGVycm9yX2NvbGxl
Y3RvcikKLSAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19mb3Jfbm9uX3N0YW5kYXJkX2NvbnN0
cnVjdHMoZmlsZV9uYW1lLCBsaW5lcywgaSwgY2xhc3Nfc3RhdGUsCisgICAgICAgICAgICBjcHBf
c3R5bGUuY2hlY2tfc3R5bGUobGluZXMsIGksIGZpbGVfZXh0ZW5zaW9uLCBmaWxlX3N0YXRlLCBl
cnJvcl9jb2xsZWN0b3IpCisgICAgICAgICAgICBjcHBfc3R5bGUuY2hlY2tfZm9yX25vbl9zdGFu
ZGFyZF9jb25zdHJ1Y3RzKGxpbmVzLCBpLCBjbGFzc19zdGF0ZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29sbGVjdG9yKQot
ICAgICAgICBjbGFzc19zdGF0ZS5jaGVja19maW5pc2hlZChmaWxlX25hbWUsIGVycm9yX2NvbGxl
Y3RvcikKKyAgICAgICAgY2xhc3Nfc3RhdGUuY2hlY2tfZmluaXNoZWQoZXJyb3JfY29sbGVjdG9y
KQogICAgICAgICByZXR1cm4gZXJyb3JfY29sbGVjdG9yLnJlc3VsdHMoKQogCiAgICAgIyBTaW1p
bGFyIHRvIHBlcmZvcm1fbXVsdGlfbGluZV9saW50LCBidXQgY2FsbHMgY2hlY2tfbGFuZ3VhZ2Ug
aW5zdGVhZCBvZgpAQCAtMTY2LDcgKzE3NSw3IEBAIGNsYXNzIENwcFN0eWxlVGVzdEJhc2UodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBFcnJvckNvbGxlY3Rv
cihzZWxmLmFzc2VydF8pCiAgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBfc3R5bGUuX0luY2x1
ZGVTdGF0ZSgpCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBf
c3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3Jf
Y29sbGVjdG9yKQorICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMo
bGluZXMsIGVycm9yX2NvbGxlY3RvcikKICAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5z
ZWRMaW5lcyhsaW5lcykKICAgICAgICAgZXh0ID0gZmlsZV9uYW1lW2ZpbGVfbmFtZS5yZmluZCgn
LicpICsgMTpdCiAgICAgICAgIGZvciBpIGluIHhyYW5nZShsaW5lcy5udW1fbGluZXMoKSk6CkBA
IC0xODksMTQgKzE5OCwxMyBAQCBjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgUmV0dXJuczoKICAgICAgICAgICBUaGUgYWNjdW11bGF0ZWQgZXJyb3Jz
LgogICAgICAgICAiIiIKLSAgICAgICAgZmlsZV9uYW1lID0gJ2Zvby5jcHAnCiAgICAgICAgIGVy
cm9yX2NvbGxlY3RvciA9IEVycm9yQ29sbGVjdG9yKHNlbGYuYXNzZXJ0XykKICAgICAgICAgZnVu
Y3Rpb25fc3RhdGUgPSBjcHBfc3R5bGUuX0Z1bmN0aW9uU3RhdGUoc2VsZi52ZXJib3NpdHkpCiAg
ICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQotICAgICAgICBjcHBfc3R5bGUucmVtb3Zl
X211bHRpX2xpbmVfY29tbWVudHMoZmlsZV9uYW1lLCBsaW5lcywgZXJyb3JfY29sbGVjdG9yKQor
ICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMobGluZXMsIGVycm9y
X2NvbGxlY3RvcikKICAgICAgICAgbGluZXMgPSBjcHBfc3R5bGUuQ2xlYW5zZWRMaW5lcyhsaW5l
cykKICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxpbmVzLm51bV9saW5lcygpKToKLSAgICAgICAg
ICAgIGNwcF9zdHlsZS5jaGVja19mb3JfZnVuY3Rpb25fbGVuZ3RocyhmaWxlX25hbWUsIGxpbmVz
LCBpLAorICAgICAgICAgICAgY3BwX3N0eWxlLmNoZWNrX2Zvcl9mdW5jdGlvbl9sZW5ndGhzKGxp
bmVzLCBpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZ1bmN0aW9uX3N0YXRlLCBlcnJvcl9jb2xsZWN0b3IpCiAgICAgICAgIHJldHVybiBlcnJvcl9j
b2xsZWN0b3IucmVzdWx0cygpCiAKQEAgLTIwNSwxMCArMjEzLDExIEBAIGNsYXNzIENwcFN0eWxl
VGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBlcnJvcl9jb2xsZWN0b3IgPSBF
cnJvckNvbGxlY3RvcihzZWxmLmFzc2VydF8pCiAgICAgICAgIGluY2x1ZGVfc3RhdGUgPSBjcHBf
c3R5bGUuX0luY2x1ZGVTdGF0ZSgpCiAgICAgICAgIGxpbmVzID0gY29kZS5zcGxpdCgnXG4nKQot
ICAgICAgICBjcHBfc3R5bGUucmVtb3ZlX211bHRpX2xpbmVfY29tbWVudHMoZmlsZW5hbWUsIGxp
bmVzLCBlcnJvcl9jb2xsZWN0b3IpCisgICAgICAgIGNwcF9zdHlsZS5yZW1vdmVfbXVsdGlfbGlu
ZV9jb21tZW50cyhsaW5lcywgZXJyb3JfY29sbGVjdG9yKQogICAgICAgICBsaW5lcyA9IGNwcF9z
dHlsZS5DbGVhbnNlZExpbmVzKGxpbmVzKQorICAgICAgICBmaWxlX2V4dGVuc2lvbiA9IGZpbGVu
YW1lW2ZpbGVuYW1lLnJmaW5kKCcuJykgKyAxOl0KICAgICAgICAgZm9yIGkgaW4geHJhbmdlKGxp
bmVzLm51bV9saW5lcygpKToKLSAgICAgICAgICAgIGNwcF9zdHlsZS5jaGVja19sYW5ndWFnZShm
aWxlbmFtZSwgbGluZXMsIGksICcuaCcsIGluY2x1ZGVfc3RhdGUsCisgICAgICAgICAgICBjcHBf
c3R5bGUuY2hlY2tfbGFuZ3VhZ2UoZmlsZW5hbWUsIGxpbmVzLCBpLCBmaWxlX2V4dGVuc2lvbiwg
aW5jbHVkZV9zdGF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJv
cl9jb2xsZWN0b3IpCiAgICAgICAgICMgV2UgY291bGQgY2xlYXIgdGhlIGVycm9yX2NvbGxlY3Rv
ciBoZXJlLCBidXQgdGhpcyBzaG91bGQKICAgICAgICAgIyBhbHNvIGJlIGZpbmUsIHNpbmNlIG91
ciBJbmNsdWRlV2hhdFlvdVVzZSB1bml0dGVzdHMgZG8gbm90CkBAIC0yMzIsMTAgKzI0MSwxMiBA
QCBjbGFzcyBDcHBTdHlsZVRlc3RCYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgbWVzc2FnZXMpCiAKICAgICBkZWYgYXNz
ZXJ0X211bHRpX2xpbmVfbGludChzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlLCBmaWxlX25h
bWU9J2Zvby5oJyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX21lc3NhZ2Us
IHNlbGYucGVyZm9ybV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9uYW1lKSkKKyAgICAgICAg
ZmlsZV9leHRlbnNpb24gPSBmaWxlX25hbWVbZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWRfbWVzc2FnZSwgc2VsZi5wZXJmb3JtX211
bHRpX2xpbmVfbGludChjb2RlLCBmaWxlX2V4dGVuc2lvbikpCiAKICAgICBkZWYgYXNzZXJ0X211
bHRpX2xpbmVfbGludF9yZShzZWxmLCBjb2RlLCBleHBlY3RlZF9tZXNzYWdlX3JlLCBmaWxlX25h
bWU9J2Zvby5oJyk6Ci0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLnBlcmZvcm1fbXVsdGlfbGluZV9s
aW50KGNvZGUsIGZpbGVfbmFtZSkKKyAgICAgICAgZmlsZV9leHRlbnNpb24gPSBmaWxlX25hbWVb
ZmlsZV9uYW1lLnJmaW5kKCcuJykgKyAxOl0KKyAgICAgICAgbWVzc2FnZSA9IHNlbGYucGVyZm9y
bV9tdWx0aV9saW5lX2xpbnQoY29kZSwgZmlsZV9leHRlbnNpb24pCiAgICAgICAgIGlmIG5vdCBy
ZS5zZWFyY2goZXhwZWN0ZWRfbWVzc2FnZV9yZSwgbWVzc2FnZSk6CiAgICAgICAgICAgICBzZWxm
LmZhaWwoJ01lc3NhZ2Ugd2FzOlxuJyArIG1lc3NhZ2UgKyAnRXhwZWN0ZWQgbWF0Y2ggdG8gIicg
KyBleHBlY3RlZF9tZXNzYWdlX3JlICsgJyInKQogCg==
</data>
<flag name="review"
          id="30087"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="30088"
          type_id="3"
          status="-"
          setter="cjerdonek"
    />
          </attachment>
      

    </bug>

</bugzilla>