<?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>34379</bug_id>
          
          <creation_ts>2010-01-30 13:48:21 -0800</creation_ts>
          <short_desc>check-webkit-style: Break the style error handlers out into a separate class</short_desc>
          <delta_ts>2010-01-31 23:06:24 -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>
          
          <blocked>34260</blocked>
          <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>186129</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-30 13:48:21 -0800</bug_when>
    <thetext>This is a precursor to--

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

and will also allow for unit testing of the patch style error handler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186247</commentid>
    <comment_count>1</comment_count>
      <attachid>47802</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 15:11:29 -0800</bug_when>
    <thetext>Created attachment 47802
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186301</commentid>
    <comment_count>2</comment_count>
      <attachid>47802</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-31 22:05:15 -0800</bug_when>
    <thetext>Comment on attachment 47802
Proposed patch

&gt; -            handle_style_error = self._default_style_error_handler(file_path)
&gt; -
&gt; +            handle_style_error = DefaultStyleErrorHandler(file_path,
&gt; +                                     self.options,
&gt; +                                     self._increment_error_count,
&gt; +                                     self._stderr_write)

I&apos;m not sure if we usually break lines in this way.

handle_style_error = DefaultStyleErrorHandler(file_path,
                                              self.options,
                                              self._increment_error_count,
                                              self._stderr_write)

or

handle_style_error = DefaultStyleErrorHandler(file_path, self.options, self._increment_error_count, self._stderr_write)

?

&gt; +        if line_number not in self._get_line_numbers():
&gt; +            # Then the error is not reportable.
&gt; +            return
&gt; +
&gt; +        self._default_error_handler(line_number, category, confidence,
&gt; +                                    message)
&gt; +

Did we fix this FIXME?

# FIXME: Make sure errors having line number zero are
#        logged -- like carriage-return errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186302</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 22:28:36 -0800</bug_when>
    <thetext>(In reply to comment #2)

Thanks for the quick review, Shinichiro!

&gt; (From update of attachment 47802 [details])
&gt; &gt; -            handle_style_error = self._default_style_error_handler(file_path)
&gt; &gt; -
&gt; &gt; +            handle_style_error = DefaultStyleErrorHandler(file_path,
&gt; &gt; +                                     self.options,
&gt; &gt; +                                     self._increment_error_count,
&gt; &gt; +                                     self._stderr_write)
&gt; 
&gt; I&apos;m not sure if we usually break lines in this way.

No, we haven&apos;t been, but we recently started wanting to abide by the 79 character line limit. The first alternative below runs into that limit.

The only other option I thought might make sense is indenting four characters over from handle_style_error, but this didn&apos;t look as good as what I submitted (since the arguments with that indenting would be so far away from the right side).

Is your second alternative a single long line?  (I&apos;m not 100% sure since Bugzilla might be throwing off your wrapping.)

&gt; handle_style_error = DefaultStyleErrorHandler(file_path,
&gt;                                               self.options,
&gt;                                               self._increment_error_count,
&gt;                                               self._stderr_write)
&gt; 
&gt; or
&gt; 
&gt; handle_style_error = DefaultStyleErrorHandler(file_path, self.options,
&gt; self._increment_error_count, self._stderr_write)
&gt; 
&gt; ?
&gt; 
&gt; &gt; +        if line_number not in self._get_line_numbers():
&gt; &gt; +            # Then the error is not reportable.
&gt; &gt; +            return
&gt; &gt; +
&gt; &gt; +        self._default_error_handler(line_number, category, confidence,
&gt; &gt; +                                    message)
&gt; &gt; +
&gt; 
&gt; Did we fix this FIXME?
&gt; 
&gt; # FIXME: Make sure errors having line number zero are
&gt; #        logged -- like carriage-return errors.

No, but the same FIXME appears elsewhere (it wasn&apos;t clear to me at the time where the eventual fix would lie):

&gt; if carriage_return_found and os.linesep != &apos;\r\n&apos;:
&gt;     # FIXME: Make sure this error also shows up when checking
&gt;     #        patches, if appropriate.
&gt;     #
&gt;     # Use 0 for line_number since outputting only one error for
&gt;     # potentially several lines.
&gt;     handle_style_error(file_path, 0, &apos;whitespace/newline&apos;, 1,
&gt;                        &apos;One or more unexpected \\r (^M) found;&apos;
&gt;                        &apos;better to use only a \\n&apos;)

I decided to keep just the FIXME near the actual carriage return check instead of having both.  I&apos;ll be addressing this FIXME shortly in bug 34260 which this report currently blocks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186303</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 22:35:18 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +        if line_number not in self._get_line_numbers():
&gt; &gt; +            # Then the error is not reportable.
&gt; &gt; +            return
&gt; &gt; +
&gt; &gt; +        self._default_error_handler(line_number, category, confidence,
&gt; &gt; +                                    message)
&gt; &gt; +
&gt; 
&gt; Did we fix this FIXME?
&gt; 
&gt; # FIXME: Make sure errors having line number zero are
&gt; #        logged -- like carriage-return errors.

Also, I decided to fix this using an approach different from having a &quot;line zero&quot;, so keeping a FIXME in this location made less sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186306</commentid>
    <comment_count>5</comment_count>
      <attachid>47802</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-31 22:45:30 -0800</bug_when>
    <thetext>Comment on attachment 47802
Proposed patch

&gt; No, we haven&apos;t been, but we recently started wanting to abide by the 79
&gt; character line limit. The first alternative below runs into that limit.
&gt; 
&gt; The only other option I thought might make sense is indenting four characters
&gt; over from handle_style_error, but this didn&apos;t look as good as what I submitted
&gt; (since the arguments with that indenting would be so far away from the right
&gt; side).

OK. So, I think we want a rule for line breaking. For now, let&apos;s go ahead with
current code.

&gt; I decided to keep just the FIXME near the actual carriage return check instead
&gt; of having both.  I&apos;ll be addressing this FIXME shortly in bug 34260 which this
&gt; report currently blocks.

I see. Thanks for the clarification!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186311</commentid>
    <comment_count>6</comment_count>
      <attachid>47802</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 23:04:16 -0800</bug_when>
    <thetext>Comment on attachment 47802
Proposed patch

cq- to use webkit-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186312</commentid>
    <comment_count>7</comment_count>
      <attachid>47802</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 23:06:17 -0800</bug_when>
    <thetext>Comment on attachment 47802
Proposed patch

Clearing flags on attachment: 47802

Committed r54126: &lt;http://trac.webkit.org/changeset/54126&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186313</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-31 23:06:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47802</attachid>
            <date>2010-01-31 15:11:29 -0800</date>
            <delta_ts>2010-01-31 23:06:16 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34379-1.txt</filename>
            <type>text/plain</type>
            <size>25831</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjYmE0ODBkLi4xNDhjZDAwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDEt
MzEgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZWQgc3R5bGUgZXJyb3IgaGFu
ZGxlciBjb2RlIHRvIHRoZWlyIG93biBjbGFzc2VzLCBhbmQKKyAgICAgICAgcmVsYXRlZCByZWZh
Y3RvcmluZy4gSW5jcmVhc2VkIHVuaXQgdGVzdCBjb2RlIGNvdmVyYWdlIG9mCisgICAgICAgIHN0
eWxlIGVycm9yIGhhbmRsaW5nLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNDM3OQorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5
bGU6CisgICAgICAgICAgLSBNaW5vciBjaGFuZ2U6IGFkZGVkIGVycm9yX2NvdW50IHZhcmlhYmxl
LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OgorICAgICAg
ICAgIC0gUmVuYW1lZCBQcm9jZXNzb3JPcHRpb25zLnNob3VsZF9yZXBvcnRfZXJyb3IoKSB0byBp
c19yZXBvcnRhYmxlKCkuCisgICAgICAgICAgLSBJbiB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLS0K
KyAgICAgICAgICAgIC0gUmVtb3ZlZCBfZGVmYXVsdF9zdHlsZV9lcnJvcl9oYW5kbGVyKCkuCisg
ICAgICAgICAgICAtIEFkZGVkIF9pbmNyZW1lbnRfZXJyb3JfY291bnQoKS4KKyAgICAgICAgICAg
IC0gUmVmYWN0b3JlZCB0byB1c2UgRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyIGFuZAorICAgICAg
ICAgICAgICBQYXRjaFN0eWxlRXJyb3JIYW5kbGVyIGNvbnN0cnVjdG9ycy4KKworICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weToKKyAgICAgICAgICAt
IEluIHRoZSBTdHlsZVN0eWxlQ2hlY2tlclRlc3QgY2xhc3MtLQorICAgICAgICAgICAgLSBSZW1v
dmVkIHdyaXRlX3NhbXBsZV9lcnJvcigpLgorICAgICAgICAgICAgLSBSZW1vdmVkIHRlc3RfZGVm
YXVsdF9zdHlsZV9lcnJvcl9oYW5kbGVyKCkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5OiBBZGRlZC4KKyAgICAgICAgICAtIEFkZGVkIERlZmF1
bHRTdHlsZUVycm9ySGFuZGxlciBjbGFzcy4KKyAgICAgICAgICAtIEFkZGVkIFBhdGNoU3R5bGVF
cnJvckhhbmRsZXIgY2xhc3MuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vy
cm9yX2hhbmRsZXJzX3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgICAtIEFkZGVkIHVuaXQg
dGVzdHMgZm9yIERlZmF1bHRTdHlsZUVycm9ySGFuZGxlciBhbmQKKyAgICAgICAgICAgIFBhdGNo
U3R5bGVFcnJvckhhbmRsZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Vu
aXR0ZXN0cy5weToKKyAgICAgICAgICAtIEFkZGVkIGVycm9yX2hhbmRsZXJzIHVuaXQgdGVzdHMu
CisKIDIwMTAtMDEtMjkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBTdGVwaGFuaWUgTGV3aXMuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlCmluZGV4IDI0NWQ4MzQuLjUwMTI2NGIgMTAwNzU1Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlCkBAIC04Niw4ICs4Niw5IEBAIGRlZiBtYWluKCk6CiAgICAgICAg
ICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQogICAgICAgICBzdHlsZV9jaGVja2VyLmNo
ZWNrX3BhdGNoKHBhdGNoKQogCi0gICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZv
dW5kOiAlZFxuJyAlIHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQpCi0gICAgc3lzLmV4aXQoc3R5
bGVfY2hlY2tlci5lcnJvcl9jb3VudCA+IDApCisgICAgZXJyb3JfY291bnQgPSBzdHlsZV9jaGVj
a2VyLmVycm9yX2NvdW50CisgICAgc3lzLnN0ZGVyci53cml0ZSgnVG90YWwgZXJyb3JzIGZvdW5k
OiAlZFxuJyAlIGVycm9yX2NvdW50KQorICAgIHN5cy5leGl0KGVycm9yX2NvdW50ID4gMCkKIAog
CiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDZhMDdhZGEuLmZhZjk1NGYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTM1LDYgKzM1LDgg
QEAgaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKIAogZnJvbSAuLiBzdHlsZV9yZWZlcmVuY2Vz
IGltcG9ydCBwYXJzZV9wYXRjaAorZnJvbSBlcnJvcl9oYW5kbGVycyBpbXBvcnQgRGVmYXVsdFN0
eWxlRXJyb3JIYW5kbGVyCitmcm9tIGVycm9yX2hhbmRsZXJzIGltcG9ydCBQYXRjaFN0eWxlRXJy
b3JIYW5kbGVyCiBmcm9tIHByb2Nlc3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20g
cHJvY2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0UHJvY2Vzc29yCiAKQEAgLTMzMiwxMCArMzM0LDEw
IEBAIGNsYXNzIFByb2Nlc3Nvck9wdGlvbnMob2JqZWN0KToKICAgICAgICAgIyBQeXRob24gZG9l
cyBub3QgYXV0b21hdGljYWxseSBkZWR1Y2UgZnJvbSBfX2VxX18oKS4KICAgICAgICAgcmV0dXJu
IG5vdCAoc2VsZiA9PSBvdGhlcikKIAotICAgIGRlZiBzaG91bGRfcmVwb3J0X2Vycm9yKHNlbGYs
IGNhdGVnb3J5LCBjb25maWRlbmNlX2luX2Vycm9yKToKLSAgICAgICAgIiIiUmV0dXJuIHdoZXRo
ZXIgYW4gZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkLgorICAgIGRlZiBpc19yZXBvcnRhYmxlKHNl
bGYsIGNhdGVnb3J5LCBjb25maWRlbmNlX2luX2Vycm9yKToKKyAgICAgICAgIiIiUmV0dXJuIHdo
ZXRoZXIgYW4gZXJyb3IgaXMgcmVwb3J0YWJsZS4KIAotICAgICAgICBBbiBlcnJvciBzaG91bGQg
YmUgcmVwb3J0ZWQgaWYgdGhlIGNvbmZpZGVuY2UgaW4gdGhlIGVycm9yCisgICAgICAgIEFuIGVy
cm9yIGlzIHJlcG9ydGFibGUgaWYgdGhlIGNvbmZpZGVuY2UgaW4gdGhlIGVycm9yCiAgICAgICAg
IGlzIGF0IGxlYXN0IHRoZSBjdXJyZW50IHZlcmJvc2l0eSBsZXZlbCwgYW5kIGlmIHRoZSBjdXJy
ZW50CiAgICAgICAgIGZpbHRlciBzYXlzIHRoYXQgdGhlIGNhdGVnb3J5IHNob3VsZCBiZSBjaGVj
a2VkLgogCkBAIC03MDEsNDkgKzcwMyw5IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgog
ICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMAogICAgICAgICBzZWxmLm9wdGlvbnMgPSBvcHRp
b25zCiAKLSAgICBkZWYgX2RlZmF1bHRfc3R5bGVfZXJyb3JfaGFuZGxlcihzZWxmLCBmaWxlX3Bh
dGgpOgotICAgICAgICAiIiJSZXR1cm4gYSBkZWZhdWx0IHN0eWxlIGVycm9yIGhhbmRsZXIgZm9y
IHRoZSBnaXZlbiBwYXRoLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgZmlsZV9wYXRoOiBU
aGUgcGF0aCB0byB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBlcnJvci4gVGhpcwotICAgICAgICAg
ICAgICAgICAgICAgaXMgbWVhbnQgZm9yIHJlcG9ydGluZyB0byB0aGUgdXNlci4KLQotICAgICAg
ICAiIiIKLSAgICAgICAgZGVmIGhhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgY2F0ZWdv
cnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpOgotICAgICAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1
cnJlbmNlIG9mIGEgc3R5bGUgZXJyb3IuCi0KLSAgICAgICAgICAgIENoZWNrIHdoZXRoZXIgYW4g
ZXJyb3Igc2hvdWxkIGJlIHJlcG9ydGVkLiBJZiBzbywgaW5jcmVtZW50IHRoZQotICAgICAgICAg
ICAgZ2xvYmFsIGVycm9yIGNvdW50IGFuZCByZXBvcnQgdGhlIGVycm9yIGRldGFpbHMuCi0KLSAg
ICAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbnVtYmVyIG9m
IHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGVycm9yLgotICAgICAgICAgICAgICBjYXRlZ29yeTog
QSBzdHJpbmcgdXNlZCB0byBkZXNjcmliZSB0aGUgImNhdGVnb3J5IiB0aGlzIGJ1ZwotICAgICAg
ICAgICAgICAgICAgICAgICAgZmFsbHMgdW5kZXI6ICJ3aGl0ZXNwYWNlIiwgc2F5LCBvciAicnVu
dGltZSIuCi0gICAgICAgICAgICAgICAgICAgICAgICBDYXRlZ29yaWVzIG1heSBoYXZlIGEgaGll
cmFyY2h5IHNlcGFyYXRlZCBieSBzbGFzaGVzOgotICAgICAgICAgICAgICAgICAgICAgICAgIndo
aXRlc3BhY2UvaW5kZW50Ii4KLSAgICAgICAgICAgICAgY29uZmlkZW5jZTogQSBudW1iZXIgZnJv
bSAxLTUgcmVwcmVzZW50aW5nIGEgY29uZmlkZW5jZSBzY29yZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgdGhlIGVycm9yLCB3aXRoIDUgbWVhbmluZyB0aGF0IHdlIGFyZSBjZXJ0YWlu
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBwcm9ibGVtLCBhbmQgMSBtZWFuaW5n
IHRoYXQgaXQgY291bGQgYmUgYQotICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdpdGltYXRl
IGNvbnN0cnVjdC4KLSAgICAgICAgICAgICAgbWVzc2FnZTogVGhlIGVycm9yIG1lc3NhZ2UuCi0K
LSAgICAgICAgICAgICIiIgotICAgICAgICAgICAgaWYgbm90IHNlbGYub3B0aW9ucy5zaG91bGRf
cmVwb3J0X2Vycm9yKGNhdGVnb3J5LCBjb25maWRlbmNlKToKLSAgICAgICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICAgICAgc2VsZi5lcnJvcl9jb3VudCArPSAxCi0KLSAgICAgICAgICAgIGlm
IHNlbGYub3B0aW9ucy5vdXRwdXRfZm9ybWF0ID09ICd2czcnOgotICAgICAgICAgICAgICAgIGZv
cm1hdF9zdHJpbmcgPSAiJXMoJXMpOiAgJXMgIFslc10gWyVkXVxuIgotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gIiVzOiVzOiAgJXMgIFslc10gWyVk
XVxuIgotCi0gICAgICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUoZm9ybWF0X3N0cmluZyAlIChm
aWxlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lX251bWJlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjYXRlZ29yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbmZpZGVuY2UpKQotICAgICAgICByZXR1cm4gaGFuZGxlX3N0eWxlX2Vycm9y
CisgICAgZGVmIF9pbmNyZW1lbnRfZXJyb3JfY291bnQoc2VsZik6CisgICAgICAgICIiIkluY3Jl
bWVudCB0aGUgdG90YWwgY291bnQgb2YgcmVwb3J0ZWQgZXJyb3JzLiIiIgorICAgICAgICBzZWxm
LmVycm9yX2NvdW50ICs9IDEKIAogICAgIGRlZiBfcHJvY2Vzc19maWxlKHNlbGYsIHByb2Nlc3Nv
ciwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgogICAgICAgICAiIiJQcm9jZXNzIHRo
ZSBmaWxlIHVzaW5nIHRoZSBnaXZlbiBwcm9jZXNzb3IuIiIiCkBAIC03OTUsMTYgKzc1NywxOCBA
QCBjbGFzcyBTdHlsZUNoZWNrZXIob2JqZWN0KToKICAgICAgICAgICBmaWxlX3BhdGg6IEEgc3Ry
aW5nIHRoYXQgaXMgdGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcHJvY2Vzcy4KICAgICAgICAgICBo
YW5kbGVfc3R5bGVfZXJyb3I6IFRoZSBmdW5jdGlvbiB0byBjYWxsIHdoZW4gYSBzdHlsZSBlcnJv
cgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2NjdXJzLiBUaGlzIHBhcmFtZXRlciBp
cyBtZWFudCBmb3IgaW50ZXJuYWwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB3
aXRoaW4gdGhpcyBjbGFzcy4gRGVmYXVsdHMgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHlsZSBlcnJvciBoYW5kbGluZyBtZXRob2Qgb2YgdGhpcyBjbGFzcy4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVzZSB3aXRoaW4gdGhpcyBjbGFzcy4gRGVmYXVsdHMg
dG8gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFN0eWxlRXJyb3JIYW5k
bGVyIGluc3RhbmNlLgogICAgICAgICAgIHByb2Nlc3NfZmlsZTogVGhlIGZ1bmN0aW9uIHRvIGNh
bGwgdG8gcHJvY2VzcyB0aGUgZmlsZS4gVGhpcwogICAgICAgICAgICAgICAgICAgICAgICAgcGFy
YW1ldGVyIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIHVuaXQgdGVzdHMuCiAgICAgICAgICAgICAg
ICAgICAgICAgICBEZWZhdWx0cyB0byB0aGUgZmlsZSBwcm9jZXNzaW5nIG1ldGhvZCBvZiB0aGlz
IGNsYXNzLgogCiAgICAgICAgICIiIgogICAgICAgICBpZiBoYW5kbGVfc3R5bGVfZXJyb3IgaXMg
Tm9uZToKLSAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvciA9IHNlbGYuX2RlZmF1bHRfc3R5
bGVfZXJyb3JfaGFuZGxlcihmaWxlX3BhdGgpCi0KKyAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9l
cnJvciA9IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcihmaWxlX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vcHRpb25zLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2luY3JlbWVudF9lcnJvcl9jb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUpCiAgICAgICAg
IGlmIHByb2Nlc3NfZmlsZSBpcyBOb25lOgogICAgICAgICAgICAgcHJvY2Vzc19maWxlID0gc2Vs
Zi5fcHJvY2Vzc19maWxlCiAKQEAgLTgzNSwyOSArNzk5LDExIEBAIGNsYXNzIFN0eWxlQ2hlY2tl
cihvYmplY3QpOgogICAgICAgICAiIiIKICAgICAgICAgcGF0Y2hfZmlsZXMgPSBwYXJzZV9wYXRj
aChwYXRjaF9zdHJpbmcpCiAgICAgICAgIGZvciBmaWxlX3BhdGgsIGRpZmYgaW4gcGF0Y2hfZmls
ZXMuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBsaW5lX251bWJlcnMgPSBzZXQoKQotCi0gICAg
ICAgICAgICBoYW5kbGVfc3R5bGVfZXJyb3IgPSBzZWxmLl9kZWZhdWx0X3N0eWxlX2Vycm9yX2hh
bmRsZXIoZmlsZV9wYXRoKQotCi0gICAgICAgICAgICBkZWYgaGFuZGxlX3BhdGNoX3N0eWxlX2Vy
cm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgIiIiV3Jh
cHBlciBmdW5jdGlvbiBvZiBjcHBfc3R5bGUuZXJyb3IgZm9yIHBhdGNoZXMuCi0KLSAgICAgICAg
ICAgICAgICBUaGlzIGZ1bmN0aW9uIG91dHB1dHMgZXJyb3JzIG9ubHkgaWYgdGhlIGxpbmUgbnVt
YmVyCi0gICAgICAgICAgICAgICAgY29ycmVzcG9uZHMgdG8gbGluZXMgd2hpY2ggYXJlIG1vZGlm
aWVkIG9yIGFkZGVkLgotCi0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgaWYg
bm90IGxpbmVfbnVtYmVyczoKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gZGlmZi5s
aW5lczoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgV2hlbiBkZWxldGVkIGxpbmUgaXMgbm90
IHNldCwgaXQgbWVhbnMgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGUgbGluZSBp
cyBuZXdseSBhZGRlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lWzBdOgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycy5hZGQobGluZVsxXSkKLQot
ICAgICAgICAgICAgICAgICMgRklYTUU6IE1ha2Ugc3VyZSBlcnJvcnMgaGF2aW5nIGxpbmUgbnVt
YmVyIHplcm8gYXJlCi0gICAgICAgICAgICAgICAgIyAgICAgICAgbG9nZ2VkIC0tIGxpa2UgY2Fy
cmlhZ2UtcmV0dXJuIGVycm9ycy4KLSAgICAgICAgICAgICAgICBpZiBsaW5lX251bWJlciBpbiBs
aW5lX251bWJlcnM6Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvcihsaW5l
X251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgICAgICBzdHls
ZV9lcnJvcl9oYW5kbGVyID0gUGF0Y2hTdHlsZUVycm9ySGFuZGxlcihkaWZmLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5faW5jcmVtZW50X2Vycm9yX2NvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUpCiAKLSAgICAg
ICAgICAgIHNlbGYuY2hlY2tfZmlsZShmaWxlX3BhdGgsIGhhbmRsZV9wYXRjaF9zdHlsZV9lcnJv
cikKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmlsZShmaWxlX3BhdGgsIHN0eWxlX2Vycm9yX2hh
bmRsZXIpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcl91bml0dGVzdC5weQppbmRleCA4YWFiZWZmLi40ZDZiMmU3IDEwMDc1NQotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5
CkBAIC0xNTksMTggKzE1OSwxOCBAQCBjbGFzcyBQcm9jZXNzb3JPcHRpb25zVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICMgY29kZSBkZWZpbmVzIF9fbmVfXy4KICAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShQcm9jZXNzb3JPcHRpb25zKCkgIT0gUHJvY2Vzc29yT3B0aW9ucygpKQog
Ci0gICAgZGVmIHRlc3Rfc2hvdWxkX3JlcG9ydF9lcnJvcihzZWxmKToKLSAgICAgICAgIiIiVGVz
dCBzaG91bGRfcmVwb3J0X2Vycm9yKCkuIiIiCisgICAgZGVmIHRlc3RfaXNfcmVwb3J0YWJsZShz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCBpc19yZXBvcnRhYmxlKCkuIiIiCiAgICAgICAgIGZpbHRl
ciA9IENhdGVnb3J5RmlsdGVyKFsiLXh5eiJdKQogICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29y
T3B0aW9ucyhmaWx0ZXI9ZmlsdGVyLCB2ZXJib3NpdHk9MykKIAogICAgICAgICAjIFRlc3QgdmVy
Ym9zaXR5Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLnNob3VsZF9yZXBvcnRfZXJy
b3IoImFiYyIsIDMpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuc2hvdWxkX3Jl
cG9ydF9lcnJvcigiYWJjIiwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmlz
X3JlcG9ydGFibGUoImFiYyIsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMu
aXNfcmVwb3J0YWJsZSgiYWJjIiwgMikpCiAKICAgICAgICAgIyBUZXN0IGZpbHRlcgotICAgICAg
ICBzZWxmLmFzc2VydFRydWUob3B0aW9ucy5zaG91bGRfcmVwb3J0X2Vycm9yKCJ4eSIsIDMpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuc2hvdWxkX3JlcG9ydF9lcnJvcigieHl6
IiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zLmlzX3JlcG9ydGFibGUoInh5
IiwgMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucy5pc19yZXBvcnRhYmxlKCJ4
eXoiLCAzKSkKIAogCiBjbGFzcyBXZWJLaXRBcmd1bWVudERlZmF1bHRzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6CkBAIC01MjYsNjYgKzUyNiwyMCBAQCBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIgogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLmVycm9yX21lc3NhZ2VzID0gIiIKLQotICAgIGRlZiBtb2NrX3N0ZGVycl93cml0
ZShzZWxmLCBlcnJvcl9tZXNzYWdlKToKLSAgICAgICAgIiIiQSBtb2NrIHN5cy5zdGRlcnIud3Jp
dGUuIiIiCi0gICAgICAgIHNlbGYuZXJyb3JfbWVzc2FnZXMgPSBlcnJvcl9tZXNzYWdlCi0gICAg
ICAgIHBhc3MKLQotICAgIGRlZiBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKKyAgICBk
ZWYgX21vY2tfc3RkZXJyX3dyaXRlKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICBwYXNzCiAKLSAg
ICBkZWYgc3R5bGVfY2hlY2tlcihzZWxmLCBvcHRpb25zKToKLSAgICAgICAgcmV0dXJuIFN0eWxl
Q2hlY2tlcihvcHRpb25zLCBzZWxmLm1vY2tfc3RkZXJyX3dyaXRlKQorICAgIGRlZiBfc3R5bGVf
Y2hlY2tlcihzZWxmLCBvcHRpb25zKToKKyAgICAgICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihvcHRp
b25zLCBzZWxmLl9tb2NrX3N0ZGVycl93cml0ZSkKIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6
CiAgICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCiAgICAgICAgIG9wdGlv
bnMgPSBQcm9jZXNzb3JPcHRpb25zKCkKLSAgICAgICAgc3R5bGVfY2hlY2tlciA9IHNlbGYuc3R5
bGVfY2hlY2tlcihvcHRpb25zKQorICAgICAgICBzdHlsZV9jaGVja2VyID0gc2VsZi5fc3R5bGVf
Y2hlY2tlcihvcHRpb25zKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNr
ZXIuZXJyb3JfY291bnQsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNr
ZXIub3B0aW9ucywgb3B0aW9ucykKIAotICAgIGRlZiB3cml0ZV9zYW1wbGVfZXJyb3Ioc2VsZiwg
c3R5bGVfY2hlY2tlciwgZXJyb3JfY29uZmlkZW5jZSk6Ci0gICAgICAgICIiIldyaXRlIGFuIGVy
cm9yIHRvIHRoZSBnaXZlbiBzdHlsZSBjaGVja2VyLiIiIgotICAgICAgICBoYW5kbGVfc3R5bGVf
ZXJyb3IgPSAoCi0gICAgICAgICAgICBzdHlsZV9jaGVja2VyLl9kZWZhdWx0X3N0eWxlX2Vycm9y
X2hhbmRsZXIoImZpbGVuYW1lIikpCi0KLSAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVf
bnVtYmVyPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeT0iY2F0ZWdvcnki
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlkZW5jZT1lcnJvcl9jb25maWRlbmNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0ibWVzc2FnZSIpCi0KLSAgICBk
ZWYgdGVzdF9kZWZhdWx0X3N0eWxlX2Vycm9yX2hhbmRsZXIoc2VsZik6Ci0gICAgICAgICIiIlRl
c3QgX2hhbmRsZV9zdHlsZV9lcnJvcigpIGZ1bmN0aW9uLiIiIgotICAgICAgICBvcHRpb25zID0g
UHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0zKQotICAgICAgICBzdHlsZV9jaGVja2VyID0g
c2VsZi5zdHlsZV9jaGVja2VyKG9wdGlvbnMpCi0KLSAgICAgICAgIyBWZXJpZnkgaW5pdGlhbGl6
ZWQgcHJvcGVybHkuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNrZXIuZXJy
b3JfY291bnQsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2Fn
ZXMsICIiKQotCi0gICAgICAgICMgQ2hlY2sgdGhhdCBzaG91bGRfcHJpbnRfZXJyb3IgaXMgZ2V0
dGluZyBjYWxsZWQgYXBwcm9wcmlhdGVseS4KLSAgICAgICAgc2VsZi53cml0ZV9zYW1wbGVfZXJy
b3Ioc3R5bGVfY2hlY2tlciwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hl
Y2tlci5lcnJvcl9jb3VudCwgMCkgIyBFcnJvciBjb25maWRlbmNlIHRvbyBsb3cuCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3JfbWVzc2FnZXMsICIiKQotCi0gICAgICAgIHNl
bGYud3JpdGVfc2FtcGxlX2Vycm9yKHN0eWxlX2NoZWNrZXIsIDMpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHN0eWxlX2NoZWNrZXIuZXJyb3JfY291bnQsIDEpICMgRXJyb3IgY29uZmlkZW5j
ZSBqdXN0IGhpZ2ggZW5vdWdoLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLmVycm9y
X21lc3NhZ2VzLCAiZmlsZW5hbWU6MTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQotCi0g
ICAgICAgICMgQ2xlYXIgcHJldmlvdXMgZXJyb3JzLgotICAgICAgICBzZWxmLmVycm9yX21lc3Nh
Z2VzID0gIiIKLQotICAgICAgICAjIENoZWNrICJ2czciIG91dHB1dCBmb3JtYXQuCi0gICAgICAg
IHN0eWxlX2NoZWNrZXIub3B0aW9ucy5vdXRwdXRfZm9ybWF0ID0gInZzNyIKLSAgICAgICAgc2Vs
Zi53cml0ZV9zYW1wbGVfZXJyb3Ioc3R5bGVfY2hlY2tlciwgMykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc3R5bGVfY2hlY2tlci5lcnJvcl9jb3VudCwgMikgIyBFcnJvciBjb25maWRlbmNl
IGp1c3QgaGlnaCBlbm91Z2guCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuZXJyb3Jf
bWVzc2FnZXMsICJmaWxlbmFtZSgxKTogIG1lc3NhZ2UgIFtjYXRlZ29yeV0gWzNdXG4iKQotCiAK
IGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRs
ZXJzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVy
cy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGIxZDc2Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5k
bGVycy5weQpAQCAtMCwwICsxLDE1NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVy
ZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisiIiJEZWZpbmVzIHN0eWxlIGVycm9yIGhhbmRsZXIgY2xhc3Nlcy4K
KworQSBzdHlsZSBlcnJvciBoYW5kbGVyIGlzIGEgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEgc3R5
bGUgZXJyb3IgaXMKK2ZvdW5kLiBTdHlsZSBlcnJvciBoYW5kbGVycyBjYW4gYWxzbyBoYXZlIHN0
YXRlLiBBIGNsYXNzIHRoYXQgcmVwcmVzZW50cworYSBzdHlsZSBlcnJvciBoYW5kbGVyIHNob3Vs
ZCBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBtZXRob2RzLgorCitNZXRob2RzOgorCisgIF9fY2Fs
bF9fKHNlbGYsIGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6CisK
KyAgICBIYW5kbGUgdGhlIG9jY3VycmVuY2Ugb2YgYSBzdHlsZSBlcnJvci4KKworICAgIENoZWNr
IHdoZXRoZXIgdGhlIGVycm9yIGlzIHJlcG9ydGFibGUuIElmIHNvLCByZXBvcnQgdGhlIGRldGFp
bHMuCisKKyAgICBBcmdzOgorICAgICAgbGluZV9udW1iZXI6IFRoZSBpbnRlZ2VyIGxpbmUgbnVt
YmVyIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGVycm9yLgorICAgICAgY2F0ZWdvcnk6IFRo
ZSBuYW1lIG9mIHRoZSBjYXRlZ29yeSBvZiB0aGUgZXJyb3IsIGZvciBleGFtcGxlCisgICAgICAg
ICAgICAgICAgIndoaXRlc3BhY2UvbmV3bGluZSIuCisgICAgICBjb25maWRlbmNlOiBBbiBpbnRl
Z2VyIGJldHdlZW4gMS01IHRoYXQgcmVwcmVzZW50cyB0aGUgbGV2ZWwgb2YKKyAgICAgICAgICAg
ICAgICAgIGNvbmZpZGVuY2UgaW4gdGhlIGVycm9yLiBUaGUgdmFsdWUgNSBtZWFucyB0aGF0IHdl
IGFyZQorICAgICAgICAgICAgICAgICAgY2VydGFpbiBvZiB0aGUgcHJvYmxlbSwgYW5kIHRoZSB2
YWx1ZSAxIG1lYW5zIHRoYXQgaXQKKyAgICAgICAgICAgICAgICAgIGNvdWxkIGJlIGEgbGVnaXRp
bWF0ZSBjb25zdHJ1Y3QuCisgICAgICBtZXNzYWdlOiBUaGUgZXJyb3IgbWVzc2FnZSB0byByZXBv
cnQuCisKKyIiIgorCisKK2ltcG9ydCBzeXMKKworCitjbGFzcyBEZWZhdWx0U3R5bGVFcnJvckhh
bmRsZXIob2JqZWN0KToKKworICAgICIiIlRoZSBkZWZhdWx0IHN0eWxlIGVycm9yIGhhbmRsZXIu
IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZV9wYXRoLCBvcHRpb25zLCBpbmNyZW1l
bnRfZXJyb3JfY291bnQsCisgICAgICAgICAgICAgICAgIHN0ZGVycl93cml0ZT1Ob25lKToKKyAg
ICAgICAgIiIiQ3JlYXRlIGEgZGVmYXVsdCBzdHlsZSBlcnJvciBoYW5kbGVyLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgZmlsZV9wYXRoOiBUaGUgcGF0aCB0byB0aGUgZmlsZSBjb250YWlu
aW5nIHRoZSBlcnJvci4gVGhpcworICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCBmb3IgcmVw
b3J0aW5nIHRvIHRoZSB1c2VyLgorICAgICAgICAgIG9wdGlvbnM6IEEgUHJvY2Vzc29yT3B0aW9u
cyBpbnN0YW5jZS4KKyAgICAgICAgICBpbmNyZW1lbnRfZXJyb3JfY291bnQ6IEEgZnVuY3Rpb24g
dGhhdCB0YWtlcyBubyBhcmd1bWVudHMgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmNyZW1lbnRzIHRoZSB0b3RhbCBjb3VudCBvZiByZXBvcnRhYmxlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMuCisgICAgICAgICAgc3RkZXJyX3dyaXRlOiBB
IGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBzdHJpbmcgYXMgYSBwYXJhbWV0ZXIKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZCB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgc3R5bGUgZXJyb3Igb2NjdXJz
LgorICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gc3lzLnN0ZGVyci53cml0ZS4g
VGhpcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgb25seSBmb3IgdW5p
dCB0ZXN0cy4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgc3RkZXJyX3dyaXRlIGlzIE5vbmU6
CisgICAgICAgICAgICBzdGRlcnJfd3JpdGUgPSBzeXMuc3RkZXJyLndyaXRlCisKKyAgICAgICAg
c2VsZi5fZmlsZV9wYXRoID0gZmlsZV9wYXRoCisgICAgICAgIHNlbGYuX2luY3JlbWVudF9lcnJv
cl9jb3VudCA9IGluY3JlbWVudF9lcnJvcl9jb3VudAorICAgICAgICBzZWxmLl9vcHRpb25zID0g
b3B0aW9ucworICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUgPSBzdGRlcnJfd3JpdGUKKworICAg
IGRlZiBfX2NhbGxfXyhzZWxmLCBsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1l
c3NhZ2UpOgorICAgICAgICAiIiJIYW5kbGUgdGhlIG9jY3VycmVuY2Ugb2YgYSBzdHlsZSBlcnJv
ci4KKworICAgICAgICBTZWUgdGhlIGRvY3N0cmluZyBvZiB0aGlzIG1vZHVsZSBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4KKworICAgICAgICAiIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMu
aXNfcmVwb3J0YWJsZShjYXRlZ29yeSwgY29uZmlkZW5jZSk6CisgICAgICAgICAgICByZXR1cm4K
KworICAgICAgICBzZWxmLl9pbmNyZW1lbnRfZXJyb3JfY291bnQoKQorCisgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMub3V0cHV0X2Zvcm1hdCA9PSAndnM3JzoKKyAgICAgICAgICAgIGZvcm1hdF9z
dHJpbmcgPSAiJXMoJXMpOiAgJXMgIFslc10gWyVkXVxuIgorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZm9ybWF0X3N0cmluZyA9ICIlczolczogICVzICBbJXNdIFslZF1cbiIKKworICAgICAg
ICBzZWxmLl9zdGRlcnJfd3JpdGUoZm9ybWF0X3N0cmluZyAlIChzZWxmLl9maWxlX3BhdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlkZW5jZSkpCisKKwor
Y2xhc3MgUGF0Y2hTdHlsZUVycm9ySGFuZGxlcihvYmplY3QpOgorCisgICAgIiIiVGhlIHN0eWxl
IGVycm9yIGZ1bmN0aW9uIGZvciBwYXRjaCBmaWxlcy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBkaWZmLCBmaWxlX3BhdGgsIG9wdGlvbnMsIGluY3JlbWVudF9lcnJvcl9jb3VudCwKKyAg
ICAgICAgICAgICAgICAgc3RkZXJyX3dyaXRlKToKKyAgICAgICAgIiIiQ3JlYXRlIGEgcGF0Y2gg
c3R5bGUgZXJyb3IgaGFuZGxlciBmb3IgdGhlIGdpdmVuIHBhdGguCisKKyAgICAgICAgQXJnczoK
KyAgICAgICAgICBkaWZmOiBBIERpZmZGaWxlIGluc3RhbmNlLgorICAgICAgICAgIE90aGVyIGFy
Z3VtZW50czogc2VlIHRoZSBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIuX19pbml0X18oKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG90aGVyIGFyZ3Vt
ZW50cy4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fZGlmZiA9IGRpZmYKKyAgICAgICAg
c2VsZi5fZGVmYXVsdF9lcnJvcl9oYW5kbGVyID0gRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyKGZp
bGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlv
bnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRf
ZXJyb3JfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRlcnJfd3JpdGUpCisKKyAgICAgICAgIyBUaGUgbGluZSBudW1iZXJzIG9mIHRoZSBtb2RpZmll
ZCBsaW5lcy4gVGhpcyBpcyBzZXQgbGF6aWx5LgorICAgICAgICBzZWxmLl9saW5lX251bWJlcnMg
PSBzZXQoKQorCisgICAgZGVmIF9nZXRfbGluZV9udW1iZXJzKHNlbGYpOgorICAgICAgICAiIiJS
ZXR1cm4gdGhlIGxpbmUgbnVtYmVycyBvZiB0aGUgbW9kaWZpZWQgbGluZXMuIiIiCisgICAgICAg
IGlmIG5vdCBzZWxmLl9saW5lX251bWJlcnM6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxm
Ll9kaWZmLmxpbmVzOgorICAgICAgICAgICAgICAgICMgV2hlbiBkZWxldGVkIGxpbmUgaXMgbm90
IHNldCwgaXQgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAgICMgdGhlIGxpbmUgaXMgbmV3bHkg
YWRkZWQuCisgICAgICAgICAgICAgICAgaWYgbm90IGxpbmVbMF06CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2xpbmVfbnVtYmVycy5hZGQobGluZVsxXSkKKworICAgICAgICByZXR1cm4gc2Vs
Zi5fbGluZV9udW1iZXJzCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgbGluZV9udW1iZXIsIGNh
dGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKToKKyAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1
cnJlbmNlIG9mIGEgc3R5bGUgZXJyb3IuCisKKyAgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5v
dCByZXBvcnQgZXJyb3JzIG9jY3VycmluZyBpbiBsaW5lcyBub3QKKyAgICAgICAgbW9kaWZpZWQg
b3IgYWRkZWQuCisKKyAgICAgICAgQXJnczogc2VlIHRoZSBEZWZhdWx0U3R5bGVFcnJvckhhbmRs
ZXIuX19jYWxsX18oKSBkb2N1bWVudGF0aW9uLgorCisgICAgICAgICIiIgorICAgICAgICBpZiBs
aW5lX251bWJlciBub3QgaW4gc2VsZi5fZ2V0X2xpbmVfbnVtYmVycygpOgorICAgICAgICAgICAg
IyBUaGVuIHRoZSBlcnJvciBpcyBub3QgcmVwb3J0YWJsZS4KKyAgICAgICAgICAgIHJldHVybgor
CisgICAgICAgIHNlbGYuX2RlZmF1bHRfZXJyb3JfaGFuZGxlcihsaW5lX251bWJlciwgY2F0ZWdv
cnksIGNvbmZpZGVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlKQorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vy
cm9yX2hhbmRsZXJzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9lcnJvcl9oYW5kbGVyc191bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42YTkxZmYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVyc191bml0dGVzdC5weQpAQCAtMCwwICsxLDE2
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJr
aXQub3JnKQorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJV
bml0IHRlc3RzIGZvciBlcnJvcl9oYW5kbGVycy5weS4iIiIKKworCitpbXBvcnQgdW5pdHRlc3QK
KworZnJvbSAuLiBzdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBwYXJzZV9wYXRjaAorZnJvbSBjaGVj
a2VyIGltcG9ydCBQcm9jZXNzb3JPcHRpb25zCitmcm9tIGVycm9yX2hhbmRsZXJzIGltcG9ydCBE
ZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIKK2Zyb20gZXJyb3JfaGFuZGxlcnMgaW1wb3J0IFBhdGNo
U3R5bGVFcnJvckhhbmRsZXIKKworCitjbGFzcyBTdHlsZUVycm9ySGFuZGxlclRlc3RCYXNlKHVu
aXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5f
ZXJyb3JfbWVzc2FnZXMgPSAiIgorICAgICAgICBzZWxmLl9lcnJvcl9jb3VudCA9IDAKKworICAg
IGRlZiBfbW9ja19pbmNyZW1lbnRfZXJyb3JfY291bnQoc2VsZik6CisgICAgICAgIHNlbGYuX2Vy
cm9yX2NvdW50ICs9IDEKKworICAgIGRlZiBfbW9ja19zdGRlcnJfd3JpdGUoc2VsZiwgbWVzc2Fn
ZSk6CisgICAgICAgIHNlbGYuX2Vycm9yX21lc3NhZ2VzICs9IG1lc3NhZ2UKKworCitjbGFzcyBE
ZWZhdWx0U3R5bGVFcnJvckhhbmRsZXJUZXN0KFN0eWxlRXJyb3JIYW5kbGVyVGVzdEJhc2UpOgor
CisgICAgIiIiVGVzdHMgRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyIGNsYXNzLiIiIgorCisgICAg
X2NhdGVnb3J5ID0gIndoaXRlc3BhY2UvdGFiIgorCisgICAgZGVmIF9vcHRpb25zKHNlbGYsIG91
dHB1dF9mb3JtYXQpOgorICAgICAgICByZXR1cm4gUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9
Mywgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0KQorCisgICAgZGVmIF9lcnJvcl9oYW5kbGVy
KHNlbGYsIG9wdGlvbnMpOgorICAgICAgICBmaWxlX3BhdGggPSAiZm9vLmgiCisgICAgICAgIHJl
dHVybiBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIoZmlsZV9wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19pbmNyZW1lbnRfZXJyb3JfY291bnQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19zdGRlcnJfd3Jp
dGUpCisKKyAgICBkZWYgX3ByZXBhcmVfY2FsbChzZWxmLCBvdXRwdXRfZm9ybWF0PSJlbWFjcyIp
OgorICAgICAgICAiIiJSZXR1cm4gb3B0aW9ucyBhZnRlciBpbml0aWFsaXppbmcuIiIiCisgICAg
ICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zKG91dHB1dF9mb3JtYXQpCisKKyAgICAgICAgIyBU
ZXN0IHRoYXQgY291bnQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4KKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoMCwgc2VsZi5fZXJyb3JfY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KCIiLCBzZWxmLl9lcnJvcl9tZXNzYWdlcykKKworICAgICAgICByZXR1cm4gb3B0aW9ucworCisg
ICAgZGVmIF9jYWxsX2Vycm9yX2hhbmRsZXIoc2VsZiwgb3B0aW9ucywgY29uZmlkZW5jZSk6Cisg
ICAgICAgICIiIkhhbmRsZSBhbiBlcnJvciB3aXRoIGdpdmVuIGNvbmZpZGVuY2UuIiIiCisgICAg
ICAgIGhhbmRsZV9lcnJvciA9IHNlbGYuX2Vycm9yX2hhbmRsZXIob3B0aW9ucykKKworICAgICAg
ICBsaW5lX251bWJlciA9IDEwMAorICAgICAgICBtZXNzYWdlID0gIm1lc3NhZ2UiCisKKyAgICAg
ICAgaGFuZGxlX2Vycm9yKGxpbmVfbnVtYmVyLCBzZWxmLl9jYXRlZ29yeSwgY29uZmlkZW5jZSwg
bWVzc2FnZSkKKworICAgIGRlZiB0ZXN0X2NhbGxfbm9uX3JlcG9ydGFibGUoc2VsZik6CisgICAg
ICAgICIiIlRlc3QgX19jYWxsX18oKSBtZXRob2Qgd2l0aCBhIG5vbi1yZXBvcnRhYmxlIGVycm9y
LiIiIgorICAgICAgICBjb25maWRlbmNlID0gMQorICAgICAgICBvcHRpb25zID0gc2VsZi5fcHJl
cGFyZV9jYWxsKCkKKworICAgICAgICAjIENvbmZpcm0gdGhlIGVycm9yIGlzIG5vdCByZXBvcnRh
YmxlLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMuaXNfcmVwb3J0YWJsZShzZWxm
Ll9jYXRlZ29yeSwgY29uZmlkZW5jZSkpCisKKyAgICAgICAgc2VsZi5fY2FsbF9lcnJvcl9oYW5k
bGVyKG9wdGlvbnMsIGNvbmZpZGVuY2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwg
c2VsZi5fZXJyb3JfY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCIiLCBzZWxmLl9l
cnJvcl9tZXNzYWdlcykKKworICAgIGRlZiB0ZXN0X2NhbGxfcmVwb3J0YWJsZV9lbWFjcyhzZWxm
KToKKyAgICAgICAgIiIiVGVzdCBfX2NhbGxfXygpIG1ldGhvZCB3aXRoIGEgcmVwb3J0YWJsZSBl
cnJvciBhbmQgZW1hY3MgZm9ybWF0LiIiIgorICAgICAgICBjb25maWRlbmNlID0gNQorICAgICAg
ICBvcHRpb25zID0gc2VsZi5fcHJlcGFyZV9jYWxsKCJlbWFjcyIpCisKKyAgICAgICAgc2VsZi5f
Y2FsbF9lcnJvcl9oYW5kbGVyKG9wdGlvbnMsIGNvbmZpZGVuY2UpCisKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoMSwgc2VsZi5fZXJyb3JfY291bnQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuX2Vycm9yX21lc3NhZ2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9v
Lmg6MTAwOiAgbWVzc2FnZSAgW3doaXRlc3BhY2UvdGFiXSBbNV1cbiIpCisKKyAgICBkZWYgdGVz
dF9jYWxsX3JlcG9ydGFibGVfdnM3KHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9fY2FsbF9fKCkg
bWV0aG9kIHdpdGggYSByZXBvcnRhYmxlIGVycm9yIGFuZCB2czcgZm9ybWF0LiIiIgorICAgICAg
ICBjb25maWRlbmNlID0gNQorICAgICAgICBvcHRpb25zID0gc2VsZi5fcHJlcGFyZV9jYWxsKCJ2
czciKQorCisgICAgICAgIHNlbGYuX2NhbGxfZXJyb3JfaGFuZGxlcihvcHRpb25zLCBjb25maWRl
bmNlKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHNlbGYuX2Vycm9yX2NvdW50KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9lcnJvcl9tZXNzYWdlcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgImZvby5oKDEwMCk6ICBtZXNzYWdlICBbd2hpdGVzcGFjZS90YWJd
IFs1XVxuIikKKworCitjbGFzcyBQYXRjaFN0eWxlRXJyb3JIYW5kbGVyVGVzdChTdHlsZUVycm9y
SGFuZGxlclRlc3RCYXNlKToKKworICAgICIiIlRlc3RzIFBhdGNoU3R5bGVFcnJvckhhbmRsZXIg
Y2xhc3MuIiIiCisKKyAgICBmaWxlX3BhdGggPSAiX19pbml0X18ucHkiCisKKyAgICBwYXRjaF9z
dHJpbmcgPSAiIiJkaWZmIC0tZ2l0IGEvX19pbml0X18ucHkgYi9fX2luaXRfXy5weQoraW5kZXgg
ZWY2NWJlZS4uZTNkYjcwZSAxMDA2NDQKKy0tLSBhL19faW5pdF9fLnB5CisrKysgYi9fX2luaXRf
Xy5weQorQEAgLTEgKzEsMiBAQAorICMgUmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhp
cyBkaXJlY3RvcnkgZm9yIG1vZHVsZSBmaWxlcworKyMgTmV3IGxpbmUKKworIiIiCisKKyAgICBk
ZWYgdGVzdF9jYWxsKHNlbGYpOgorICAgICAgICBwYXRjaF9maWxlcyA9IHBhcnNlX3BhdGNoKHNl
bGYucGF0Y2hfc3RyaW5nKQorICAgICAgICBkaWZmID0gcGF0Y2hfZmlsZXNbc2VsZi5maWxlX3Bh
dGhdCisKKyAgICAgICAgb3B0aW9ucyA9IFByb2Nlc3Nvck9wdGlvbnModmVyYm9zaXR5PTMpCisK
KyAgICAgICAgaGFuZGxlX2Vycm9yID0gUGF0Y2hTdHlsZUVycm9ySGFuZGxlcihkaWZmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9wYXRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9j
a19pbmNyZW1lbnRfZXJyb3JfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fbW9ja19zdGRlcnJfd3JpdGUpCisKKyAgICAgICAgY2F0ZWdv
cnkgPSAid2hpdGVzcGFjZS90YWIiCisgICAgICAgIGNvbmZpZGVuY2UgPSA1CisgICAgICAgIG1l
c3NhZ2UgPSAibWVzc2FnZSIKKworICAgICAgICAjIENvbmZpcm0gZXJyb3IgaXMgcmVwb3J0YWJs
ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMuaXNfcmVwb3J0YWJsZShjYXRlZ29y
eSwgY29uZmlkZW5jZSkpCisKKyAgICAgICAgIyBDb25maXJtIGVycm9yIGNvdW50IGluaXRpYWxp
emVkIHRvIHplcm8uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDAsIHNlbGYuX2Vycm9yX2Nv
dW50KQorCisgICAgICAgICMgVGVzdCBlcnJvciBpbiB1bm1vZGlmaWVkIGxpbmUgKGVycm9yIGNv
dW50IGRvZXMgbm90IGluY3JlbWVudCkuCisgICAgICAgIGhhbmRsZV9lcnJvcigxLCBjYXRlZ29y
eSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgc2Vs
Zi5fZXJyb3JfY291bnQpCisKKyAgICAgICAgIyBUZXN0IGVycm9yIGluIG1vZGlmaWVkIGxpbmUg
KGVycm9yIGNvdW50IGluY3JlbWVudHMpLgorICAgICAgICBoYW5kbGVfZXJyb3IoMiwgY2F0ZWdv
cnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIHNl
bGYuX2Vycm9yX2NvdW50KQorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL3VuaXR0ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvdW5pdHRlc3RzLnB5CmluZGV4IGFhNTRmMDMuLjExYzEwZTcgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdW5pdHRlc3RzLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvdW5pdHRlc3RzLnB5CkBAIC0zNiw1ICszNiw2IEBA
IGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIGNoZWNrZXJfdW5pdHRlc3QgaW1w
b3J0ICoKK2Zyb20gZXJyb3JfaGFuZGxlcnNfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gcHJvY2Vz
c29ycy5jcHBfdW5pdHRlc3QgaW1wb3J0ICoKIGZyb20gcHJvY2Vzc29ycy50ZXh0X3VuaXR0ZXN0
IGltcG9ydCAqCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>