<?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>100563</bug_id>
          
          <creation_ts>2012-10-26 14:32:41 -0700</creation_ts>
          <short_desc>garden-o-matic should support gardening a single port and specifying how to deal with overwritten baselines</short_desc>
          <delta_ts>2012-10-31 12:34:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>100562</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>kadam</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752413</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-26 14:32:41 -0700</bug_when>
    <thetext>garden-o-matic should support gardening a single port and specifying how to deal with overwritten baselines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752421</commentid>
    <comment_count>1</comment_count>
      <attachid>171014</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-26 14:36:20 -0700</bug_when>
    <thetext>Created attachment 171014
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752423</commentid>
    <comment_count>2</comment_count>
      <attachid>171014</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-26 14:37:04 -0700</bug_when>
    <thetext>Comment on attachment 171014
Patch

patch isn&apos;t quite ready for review yet; the basic idea is implemented but I need to change the way I did things in the UI / JS code, and then update all of the unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752439</commentid>
    <comment_count>3</comment_count>
      <attachid>171014</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-26 14:49:40 -0700</bug_when>
    <thetext>Comment on attachment 171014
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:172
&gt; +        // FIXME: If currentBuilder is set, we want to limit any place that iterates over
&gt; +        // a list of builders to just use the currentBuilder. instead of the full list of 
&gt; +        // builders for the current platform.

Maybe also add a FIXME to add UI to pick a builder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753695</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-29 13:01:55 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 171014 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171014&amp;action=review
&gt; 
&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:172
&gt; &gt; +        // FIXME: If currentBuilder is set, we want to limit any place that iterates over
&gt; &gt; +        // a list of builders to just use the currentBuilder. instead of the full list of 
&gt; &gt; +        // builders for the current platform.
&gt; 
&gt; Maybe also add a FIXME to add UI to pick a builder?

Yup, that was my intent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754728</commentid>
    <comment_count>5</comment_count>
      <attachid>171533</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 15:31:58 -0700</bug_when>
    <thetext>Created attachment 171533
rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754863</commentid>
    <comment_count>6</comment_count>
      <attachid>171564</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 18:50:43 -0700</bug_when>
    <thetext>Created attachment 171564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754927</commentid>
    <comment_count>7</comment_count>
      <attachid>171564</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-30 21:05:58 -0700</bug_when>
    <thetext>Comment on attachment 171564
Patch

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:151
&gt; +            if (config.currentBuilder)
&gt; +                return builderName == config.currentBuilder;
&gt; +            

Lets not have this logic in this function. Lets instead have a helper function that is the sole caller of builderApplies and make builderApplies private perhaps.

&gt; Tools/Scripts/webkitpy/tool/commands/gardenomatic.py:46
&gt; +            # FIXME: This assumes that the implementation is the first part of options.platform.

I&apos;m not sure what you mean by &quot;implementation&quot; here.

&gt; Tools/Scripts/webkitpy/tool/servers/gardeningserver.py:66
&gt; +            arg_string = &apos;?&apos; + &apos;&amp;&apos;.join(&quot;%s=%s&quot; % (key, urllib.quote(value)) for (key, value) in args.items())

Can you just use urllib.urlencode(args) or something like that here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>754936</commentid>
    <comment_count>8</comment_count>
      <attachid>171564</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-30 21:23:45 -0700</bug_when>
    <thetext>Comment on attachment 171564
Patch

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:151
&gt;&gt; +            
&gt; 
&gt; Lets not have this logic in this function. Lets instead have a helper function that is the sole caller of builderApplies and make builderApplies private perhaps.

Sounds good.

&gt;&gt; Tools/Scripts/webkitpy/tool/commands/gardenomatic.py:46
&gt;&gt; +            # FIXME: This assumes that the implementation is the first part of options.platform.
&gt; 
&gt; I&apos;m not sure what you mean by &quot;implementation&quot; here.

&quot;implementation&quot; is what I call the &quot;chromium-&quot; or &quot;gtk-&quot; part of the full port name, but it&apos;s not a widely used term (in fact, it may not actually show up anywhere in the code, I&apos;m not sure). I&apos;ll rework the comment.

&gt;&gt; Tools/Scripts/webkitpy/tool/servers/gardeningserver.py:66
&gt;&gt; +            arg_string = &apos;?&apos; + &apos;&amp;&apos;.join(&quot;%s=%s&quot; % (key, urllib.quote(value)) for (key, value) in args.items())
&gt; 
&gt; Can you just use urllib.urlencode(args) or something like that here?

Oh, yeah. I&apos;ll do that. I&apos;m not that familiar w/ urllib and forgot about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755512</commentid>
    <comment_count>9</comment_count>
      <attachid>171697</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 11:54:35 -0700</bug_when>
    <thetext>Created attachment 171697
update w/ review feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755514</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 11:55:40 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt;&gt; Tools/Scripts/webkitpy/tool/servers/gardeningserver.py:66
&gt; &gt;&gt; +            arg_string = &apos;?&apos; + &apos;&amp;&apos;.join(&quot;%s=%s&quot; % (key, urllib.quote(value)) for (key, value) in args.items())
&gt; &gt; 
&gt; &gt; Can you just use urllib.urlencode(args) or something like that here?
&gt; 
&gt; Oh, yeah. I&apos;ll do that. I&apos;m not that familiar w/ urllib and forgot about that.

Sigh. Turns out urllib.urlencode encodes spaces as plus signs, and the buildbots choke on that. I added a comment to note this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755529</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 12:12:33 -0700</bug_when>
    <thetext>Please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755546</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-10-31 12:34:24 -0700</bug_when>
    <thetext>Committed r133060: &lt;http://trac.webkit.org/changeset/133060&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171014</attachid>
            <date>2012-10-26 14:36:20 -0700</date>
            <delta_ts>2012-10-30 15:31:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100563-20121026143451.patch</filename>
            <type>text/plain</type>
            <size>20546</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyNTMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdmZjFkYTk0YWRiYWQ1ODdmYmQ2MWYzYmNlMTIyODA1
MmUxYmMwYi4uYzhlMDIxMzdlYmQ0OTY3MGJjYTc5YmQ0ZTg0NzU4YWM0OTJiNWUzNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUx
IEBACiAyMDEyLTEwLTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBzdXBwb3J0IGdhcmRlbmluZyBhIHNpbmdsZSBw
b3J0IGFuZCBzcGVjaWZ5aW5nIGhvdyB0byBkZWFsIHdpdGggb3ZlcndyaXR0ZW4gYmFzZWxpbmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgZ2FyZGVuLW8tbWF0aWMgbW9yZSB1c2Vm
dWwgZm9yCisgICAgICAgIGJyaW5naW5nIHVwIGEgc2luZ2xlIG5ldyBwb3J0IGluIHR3byB3YXlz
LiBUaGUgZ29hbCBpcyB0byBmdWxseQorICAgICAgICBvYnNvbGV0ZSB3ZWJraXQtcGF0Y2ggcmVi
YXNlbGluZS1zZXJ2ZXIuCisgICAgICAgIAorICAgICAgICBGaXJzdCwgaXQgYWRkcyBzdXBwb3J0
IGZvciB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudHMgdG8gZ2FyZGVuLW8tbWF0aWMKKyAgICAgICAg
KHNvIHRoYXQgdGhlIFVJIHdpbGwgZGVmYXVsdCB0byB0aGUgcmlnaHQgY2x1c3RlciBvZiBib3Rz
KSwgYW5kIGlmIHRoZSBwbGF0Zm9ybSBhcmcKKyAgICAgICAgc3BlY2lmaWVzIGEgc2luZ2xlIGJv
dCwgZmlsdGVycyB0aGUgcmVzdWx0cyBkb3duIHRvIGp1c3QgdGhhdCBib3QuCisKKyAgICAgICAg
U2Vjb25kLCBpdCBhZGRzIHN1cHBvcnQgZm9yIC0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMg
YW5kIGNoYW5nZXMKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcyBzZXR0aW5nIGluIGJ1aWxkZXJzLnB5CisgICAgICAgIHNvIHRoYXQg
aXQgaXMgb25seSB1c2VkIGlmIHRoaXMgZmxhZyBpcyBwcm92aWRlZC4KKworICAgICAgICBGdXR1
cmUgcGF0Y2hlcyB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGxvY2FsIGNvcGllcyBvZiB0
aGUgYnVpbGQKKyAgICAgICAgcmVzdWx0cyAocmF0aGVyIHRoYW4gZ29pbmcgdG8gdGhlIGJvdHMp
IGFuZCBvdGhlciBvcHRpbWl6YXRpb25zIHRvIG1ha2UKKyAgICAgICAgaXQgZmFzdGVyIHRvIHJl
dmlldyBsb3RzIG9mIGNoYW5nZXMgb24gYSBzaW5nbGUgYm90LgorCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL2dhcmRlbi1vLW1hdGljLmh0bWw6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29u
ZmlnLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgIChwb3J0X29wdGlvbnMpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHk6CisgICAg
ICAgIChHYXJkZW5PTWF0aWMpOgorICAgICAgICAoR2FyZGVuT01hdGljLmV4ZWN1dGUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorICAg
ICAgICAoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKKyAgICAgICAgKEFic3RyYWN0UmVi
YXNlbGluaW5nQ29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdCk6Cisg
ICAgICAgIChPcHRpbWl6ZUJhc2VsaW5lcyk6CisgICAgICAgIChBbmFseXplQmFzZWxpbmVzKToK
KyAgICAgICAgKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6CisgICAgICAgIChB
YnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQuX3JlYmFzZWxpbmVfY29tbWFuZHMpOgor
ICAgICAgICAoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kLl9yZWJhc2VsaW5lKToK
KyAgICAgICAgKFJlYmFzZWxpbmUuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToKKyAgICAgICAgKEdhcmRlbmluZ0hU
VFBTZXJ2ZXIudXJsKToKKyAgICAgICAgKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlci5yZWJh
c2VsaW5lYWxsKToKKworMjAxMi0xMC0yNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggcmViYXNlbGluZSo6IGFkZCBtb3JlIGhlbHBm
dWwgbG9nZ2luZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNTYyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5o
dG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKaW5kZXggOTA0ZTVlZGQw
ZTE4MjlkZjMzYmM2NDA1NjVlZjdjZGE0M2UyZjY0My4uMmMyOGZiZTgzNWYxYmUzOTI4ZjMwYmIz
N2I3YTM0NjVlN2NiY2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1h
dGljLmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKQEAgLTUw
LDggKzUwLDggQEAgSmFtZXMsIGEgd2ViIGRldmVsb3BlciBmcm9tIEJpcm1pbmdoYW0sIFVLLgog
PGJvZHk+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGli
cy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjguMTUvanF1ZXJ5
LXVpLm1pbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMv
bmV0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvY29uZmlnLmpzCmluZGV4IDkyZmEwM2EwMGMxNTMyZjJjY2JjY2YwMzNhMmFlNGUxNWMx
ZDBiZTIuLjBhMWYzMjkxZjY1OGQxYWUxYWIzMDVjZjJmNzU2NWU0OTA0ZmFlNDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9jb25maWcuanMKQEAgLTg1LDYgKzg1LDkgQEAgY29uZmlnLmtQbGF0Zm9ybXMg
PSB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGROdW1iZXI7CiAgICAgICAgIH0sCiAgICAgICAg
IGJ1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgaWYg
KGNvbmZpZy5jdXJyZW50QnVpbGRlcikgeworICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVy
TmFtZSA9PSBjb25maWcuY3VycmVudEJ1aWxkZXI7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIGdhcmRlbi1vLW1hdGljIHNob3cgdGhlc2U/IEkgY2FuIGltYWdp
bmUgc2hvd2luZyB0aGUgZGVwcyBib3RzIGJlaW5nIHVzZWZ1bCBhdCBsZWFzdCBzbwogICAgICAg
ICAgICAgLy8gdGhhdCB0aGUgZ2FyZGVuZXIgb25seSBuZWVkIHRvIGxvb2sgYXQgZ2FyZGVuLW8t
bWF0aWMgYW5kIG5ldmVyIGF0IHRoZSB3YXRlcmZhbGwuIE5vdCByZWFsbHkgc3VyZSB3aG8KICAg
ICAgICAgICAgIC8vIHdhdGNoZXMgdGhlIEdQVSBib3RzLgpAQCAtMTU5LDcgKzE2MiwyMiBAQCBj
b25maWcua1JlbGF0aXZlVGltZVVwZGF0ZUZyZXF1ZW5jeSA9IDEwMDAgKiA2MDsKIAogY29uZmln
LmtFeHBlcmltZW50YWxGZWF0dXJlcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2VhcmNoKCdl
bmFibGVFeHBlcmltZW50cz0xJykgIT0gLTE7CiAKLWNvbmZpZy5jdXJyZW50UGxhdGZvcm0gPSAn
Y2hyb21pdW0nOworY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IGJhc2UuZ2V0VVJMUGFyYW1ldGVy
KCdwbGF0Zm9ybScpIHx8ICdjaHJvbWl1bSc7Citjb25maWcuY3VycmVudEJ1aWxkZXIgPSBiYXNl
LmdldFVSTFBhcmFtZXRlcignYnVpbGRlcicpOworCitjb25maWcuc2V0QnVpbGRlcnMgPSBmdW5j
dGlvbigpIHsKKyAgICBpZiAoY29uZmlnLmN1cnJlbnRCdWlsZGVyKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJZiBjdXJyZW50QnVpbGRlciBpcyBzZXQsIHdlIHdhbnQgdG8gbGltaXQgYW55IHBsYWNl
IHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgICAvLyBhIGxpc3Qgb2YgYnVpbGRlcnMgdG8ganVz
dCB1c2UgdGhlIGN1cnJlbnRCdWlsZGVyLiBpbnN0ZWFkIG9mIHRoZSBmdWxsIGxpc3Qgb2YgCisg
ICAgICAgIC8vIGJ1aWxkZXJzIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKyAgICAgICAgZm9y
IChidWlsZGVyIGluIGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1
aWxkZXJzKSB7CisgICAgICAgICAgICBpZiAoYnVpbGRlciAhPSBjb25maWcuY3VycmVudEJ1aWxk
ZXIpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1
cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnNbYnVpbGRlcl07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9Citjb25maWcuc2V0QnVpbGRlcnMoKTsKIAogY29uZmlnLnNldFBsYXRmb3Jt
ID0gZnVuY3Rpb24ocGxhdGZvcm0pCiB7CkBAIC0xNjgsNiArMTg2LDcgQEAgY29uZmlnLnNldFBs
YXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IHBsYXRmb3JtOworICAgIGNvbmZpZy5zZXRCdWlsZGVy
cygpOwogfTsKIAogfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2J1aWxkZXJzLnB5CmluZGV4IGMyYWI4ZDIxMmMzNGNmZWI4ZDEyNzdkNzhh
MjJiMDQyMTdjMjExZDQuLjE1NWFjODk4Yjk0NTUwOGQ0Y2FiZDNiNjVjM2M1YzBiYmRhNGRlZjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVp
bGRlcnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
dWlsZGVycy5weQpAQCAtNTgsNyArNTgsOCBAQCBfZXhhY3RfbWF0Y2hlcyA9IHsKICAgICAiV2Vi
S2l0IE1hYzEwLjYgKGRiZykiOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtc25vd2xlb3Bh
cmQiLCAic3BlY2lmaWVycyI6IHNldChbInNub3dsZW9wYXJkIiwgImRlYnVnIl0pfSwKICAgICAi
V2ViS2l0IE1hYzEwLjciOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtbGlvbiIsICJzcGVj
aWZpZXJzIjogc2V0KFsibGlvbiIsICJyZWxlYXNlIl0pfSwKICAgICAiV2ViS2l0IE1hYzEwLjcg
KGRiZykiOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtbGlvbiIsICJzcGVjaWZpZXJzIjog
c2V0KFsibGlvbiIsICJkZWJ1ZyJdKX0sCi0gICAgIldlYktpdCBNYWMxMC44IjogeyJwb3J0X25h
bWUiOiAiY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbiIsICJzcGVjaWZpZXJzIjogc2V0KFsibW91
bnRhaW5saW9uIiwgInJlbGVhc2UiXSl9LAorICAgICJXZWJLaXQgTWFjMTAuOCI6IHsicG9ydF9u
YW1lIjogImNocm9taXVtLW1hYy1tb3VudGFpbmxpb24iLCAic3BlY2lmaWVycyI6IHNldChbIm1v
dW50YWlubGlvbiIsICJyZWxlYXNlIl0pLAorICAgICAgICAgICAgICAgICAgICAgICAibW92ZV9v
dmVyd3JpdHRlbl9iYXNlbGluZXNfdG8iOiBbImNocm9taXVtLW1hYy1saW9uIl19LAogCiAgICAg
IyBUaGVzZSBidWlsZGVycyBhcmUgb24gYnVpbGQud2Via2l0Lm9yZy4KICAgICAiQXBwbGUgTW91
bnRhaW5MaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiOiB7InBvcnRfbmFtZSI6ICJtYWMtbW91bnRh
aW5saW9uIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb3VudGFpbmxpb24iXSksICJyZWJhc2VsaW5l
X292ZXJyaWRlX2RpciI6ICJtYWMifSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRleCA3ZTQ3NTAyMTkwOGE1ZmQ2ZjI2MDgy
YjdmOTcxNDc4YjdjYmI0ZDI4Li5lYzI0ZjQ2YjExZjNlNmU2YzdhNzgxOWNiYTY1NWJjMGQ1NTY5
OWIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2ZhY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9mYWN0b3J5LnB5CkBAIC0zNSwxNSArMzUsMTggQEAgaW1wb3J0IHJlCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWlsZGVycwogCiAKLWRlZiBwb3J0X29wdGlvbnMo
KipoZWxwX3N0cmluZ3MpOgotICAgIHJldHVybiBbCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItdCIsICItLXRhcmdldCIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAg
aGVscD0iKERFUFJFQ0FURUQpIiksCitkZWYgcG9ydF9vcHRpb25zKGluY2x1ZGVfY29uZmlndXJh
dGlvbl9vcHRpb25zPVRydWUsICoqaGVscF9zdHJpbmdzKToKKyAgICBjb25maWd1cmF0aW9uX29w
dGlvbnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItdCIsICItLXRhcmdldCIs
IGRlc3Q9ImNvbmZpZ3VyYXRpb24iLCBoZWxwPSIoREVQUkVDQVRFRCkiKSwKICAgICAgICAgIyBG
SVhNRTogLS1oZWxwIHNob3VsZCBkaXNwbGF5IHdoaWNoIGNvbmZpZ3VyYXRpb24gaXMgZGVmYXVs
dC4KICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZGVidWcnLCBhY3Rpb249J3N0b3Jl
X2NvbnN0JywgY29uc3Q9J0RlYnVnJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAg
ICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcnKSwKICAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oJy0tcmVsZWFzZScsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0n
UmVsZWFzZScsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgaGVscD0nU2V0IHRo
ZSBjb25maWd1cmF0aW9uIHRvIFJlbGVhc2UnKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oJy0tMzItYml0JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSd4ODYnLCBkZWZhdWx0
PU5vbmUsIGRlc3Q9ImFyY2hpdGVjdHVyZSIsCisgICAgICAgICAgICBoZWxwPSd1c2UgMzItYml0
IGJpbmFyaWVzIGJ5IGRlZmF1bHQgKHg4NiBpbnN0ZWFkIG9mIHg4Nl82NCknKSwKKyAgICAgICAg
XQorICAgIHBsYXRmb3JtX29wdGlvbnMgPSBbCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCctLXBsYXRmb3JtJywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICBoZWxwPWhlbHBfc3Ry
aW5ncy5nZXQoJ3BsYXRmb3JtJywgJ1BsYXRmb3JtL1BvcnQgYmVpbmcgdGVzdGVkIChlLmcuLCAi
bWFjLWxpb24iKScpKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tY2hyb21pdW0n
LCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J2Nocm9taXVtJywgZGVzdD0ncGxhdGZvcm0n
LApAQCAtNTYsOCArNTksMTEgQEAgZGVmIHBvcnRfb3B0aW9ucygqKmhlbHBfc3RyaW5ncyk6CiAg
ICAgICAgICAgICBoZWxwPSdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1ndGsnKSwKICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oJy0tcXQnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J3F0
JywgZGVzdD0icGxhdGZvcm0iLAogICAgICAgICAgICAgaGVscD0nQWxpYXMgZm9yIC0tcGxhdGZv
cm09cXQnKSwKLSAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tMzItYml0JywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsIGNvbnN0PSd4ODYnLCBkZWZhdWx0PU5vbmUsIGRlc3Q9ImFyY2hpdGVj
dHVyZSIsCi0gICAgICAgICAgICBoZWxwPSd1c2UgMzItYml0IGJpbmFyaWVzIGJ5IGRlZmF1bHQg
KHg4NiBpbnN0ZWFkIG9mIHg4Nl82NCknKV0KKyAgICAgICAgXQorICAgIGlmIGluY2x1ZGVfY29u
ZmlndXJhdGlvbl9vcHRpb25zOgorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbl9vcHRpb25z
ICsgcGxhdGZvcm1fb3B0aW9ucworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBwbGF0Zm9ybV9v
cHRpb25zCiAKIAogZGVmIF9idWlsZGVyX29wdGlvbnMoYnVpbGRlcl9uYW1lKToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5Cmlu
ZGV4IDY2YjlmYWVmOGIyNjYwMzAzZTc1MzI4OTUxZjE2YzhjNWIzYjBkNWEuLjEwY2I1YjVjNmJl
NDA3OGM1ZTgxN2U4NmI3ZmFmYjZlZWY0NjFhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQpAQCAtMjIsMjAgKzIyLDMy
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdHB5LnRvb2wu
bXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCitmcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMucmViYXNlbGluZSBpbXBvcnQgQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21t
YW5kCiBmcm9tIHdlYmtpdHB5LnRvb2wuc2VydmVycy5nYXJkZW5pbmdzZXJ2ZXIgaW1wb3J0IEdh
cmRlbmluZ0hUVFBTZXJ2ZXIKIAogCi1jbGFzcyBHYXJkZW5PTWF0aWMoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgorIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGp1c3Qgcm9sbCB0aGlz
IGNvbW1hbmQgaW50byByZWJhc2VsaW5lLnB5LgorCisKK2NsYXNzIEdhcmRlbk9NYXRpYyhBYnN0
cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgIG5hbWUgPSAiZ2FyZGVuLW8tbWF0aWMiCi0g
ICAgaGVscF90ZXh0ID0gIkV4cGVyaW1lbnRhbCBjb21tYW5kIGZvciBnYXJkZW5pbmcgdGhlIFdl
YktpdCB0cmVlLiIKKyAgICBoZWxwX3RleHQgPSAiQ29tbWFuZCBmb3IgZ2FyZGVuaW5nIHRoZSBX
ZWJLaXQgdHJlZS4iCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29s
KToKICAgICAgICAgcHJpbnQgIlRoaXMgY29tbWFuZCBydW5zIGEgbG9jYWwgSFRUUCBzZXJ2ZXIg
dGhhdCBjaGFuZ2VzIHlvdXIgd29ya2luZyBjb3B5IgogICAgICAgICBwcmludCAiYmFzZWQgb24g
dGhlIGFjdGlvbnMgeW91IHRha2UgaW4gdGhlIHdlYi1iYXNlZCBVSS4iCiAKKyAgICAgICAgYXJn
cyA9IHt9CisgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CisgICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGZpcnN0IHBhcnQg
b2Ygb3B0aW9ucy5wbGF0Zm9ybS4KKyAgICAgICAgICAgIGFyZ3NbJ3BsYXRmb3JtJ10gPSBvcHRp
b25zLnBsYXRmb3JtLnNwbGl0KCctJylbMF0KKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVy
cy5idWlsZGVyX25hbWVfZm9yX3BvcnRfbmFtZShvcHRpb25zLnBsYXRmb3JtKQorICAgICAgICAg
ICAgaWYgYnVpbGRlcjoKKyAgICAgICAgICAgICAgICBhcmdzWydidWlsZGVyJ10gPSBidWlsZGVy
CisKICAgICAgICAgaHR0cGQgPSBHYXJkZW5pbmdIVFRQU2VydmVyKGh0dHBkX3BvcnQ9ODEyNywg
Y29uZmlnPXsndG9vbCc6IHRvb2wsICdvcHRpb25zJzogb3B0aW9uc30pCi0gICAgICAgIHNlbGYu
X3Rvb2wudXNlci5vcGVuX3VybChodHRwZC51cmwoKSkKKyAgICAgICAgc2VsZi5fdG9vbC51c2Vy
Lm9wZW5fdXJsKGh0dHBkLnVybChhcmdzKSkKIAogICAgICAgICBwcmludCAiTG9jYWwgSFRUUCBz
ZXJ2ZXIgc3RhcnRlZC4iCiAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCA0
NDI2MGVhNWU0ZGMzY2I0Y2Q2YWQxMzhmODc2MmU4YTY2ODJlZDVhLi5iMGE4ZTM0ODk1ODI5Zjc1
ODExMTNhNzYxZjdmNzllZDBiOGRlODNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpAQCAtNDYsMjMgKzQ2LDM5IEBAIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVz
dENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4
cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucywgQkFTRUxJTkVfU1VGRklYX0xJU1QK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCitmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRv
b2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21t
YW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIAogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogIyBGSVhNRTogU2hvdWxkIFRlc3RSZXN1bHRX
cml0ZXIga25vdyBob3cgdG8gY29tcHV0ZSB0aGlzIHN0cmluZz8KIGRlZiBfYmFzZWxpbmVfbmFt
ZShmcywgdGVzdF9uYW1lLCBzdWZmaXgpOgogICAgIHJldHVybiBmcy5zcGxpdGV4dCh0ZXN0X25h
bWUpWzBdICsgVGVzdFJlc3VsdFdyaXRlci5GSUxFTkFNRV9TVUZGSVhfRVhQRUNURUQgKyAiLiIg
KyBzdWZmaXgKIAogCiBjbGFzcyBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQoQWJzdHJhY3RE
ZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIGluY2x1ZGVfcGxhdGZvcm1fb3B0aW9ucyA9IFRydWUK
KyAgICBpbmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiA9IFRydWUKKyAg
ICBpbmNsdWRlX25vX29wdGltaXplX29wdGlvbiA9IFRydWUKKyAgICBpbmNsdWRlX3N1ZmZpeGVz
X29wdGlvbiA9IFRydWUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5vbmUpOgog
ICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBbXQotICAgICAgICBvcHRpb25zLmV4dGVuZChb
Ci0gICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1zdWZmaXhlcycsIGRlZmF1bHQ9
JywnLmpvaW4oQkFTRUxJTkVfU1VGRklYX0xJU1QpLCBhY3Rpb249J3N0b3JlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdHlwZXMgdG8gcmViYXNlbGluZScp
XSkKKyAgICAgICAgaWYgc2VsZi5pbmNsdWRlX3BsYXRmb3JtX29wdGlvbnM6CisgICAgICAgICAg
ICBvcHRpb25zLmV4dGVuZChmYWN0b3J5LnBvcnRfb3B0aW9ucyhpbmNsdWRlX2NvbmZpZ3VyYXRp
b25fb3B0aW9ucz1GYWxzZSkpCisgICAgICAgIGlmIHNlbGYuaW5jbHVkZV9zdWZmaXhlc19vcHRp
b246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1zdWZmaXhlcyIsIGRlZmF1bHQ9JywnLmpvaW4oQkFTRUxJTkVfU1VG
RklYX0xJU1QpLCBhY3Rpb249InN0b3JlIiwgaGVscD0iQ29tbWEtc2VwYXJhdGVkLWxpc3Qgb2Yg
ZmlsZSB0eXBlcyB0byByZWJhc2VsaW5lIikpCisgICAgICAgIGlmIHNlbGYuaW5jbHVkZV9tb3Zl
X292ZXJ3cml0dGVuX2Jhc2VsaW5lc19vcHRpb246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVu
ZChvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgaGVscD0i
TW92ZSBvdmVyd3JpdHRlbiBiYXNlbGluZXMgZWxzZXdoZXJlIGluIHRoZSBiYXNlbGluZSBwYXRo
LiBUaGlzIGlzIGZvciBicmluZ2luZyB1cCBuZXcgcG9ydHMuIikpCisgICAgICAgIGlmIHNlbGYu
aW5jbHVkZV9ub19vcHRpbWl6ZV9vcHRpb246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVuZChv
cHRwYXJzZS5tYWtlX29wdGlvbignLS1uby1vcHRpbWl6ZScsIGRlc3Q9J29wdGltaXplJywgYWN0
aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICBoZWxwPSgn
RG8gbm90IG9wdGltaXplL2RlLWR1cCB0aGUgZXhwZWN0YXRpb25zIGFmdGVyIHJlYmFzZWxpbmlu
ZyAoZGVmYXVsdCBpcyB0byBkZS1kdXAgYXV0b21hdGljYWxseSkuICcKKyAgICAgICAgICAgICAg
ICAgICAgICAnWW91IGNhbiB1c2UgIndlYmtpdC1wYXRjaCBvcHRpbWl6ZS1iYXNlbGluZXMiIHRv
IG9wdGltaXplIHNlcGFyYXRlbHkuJykpKQogICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29t
bWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHNlbGYuX2Jhc2Vs
aW5lX3N1ZmZpeF9saXN0ID0gQkFTRUxJTkVfU1VGRklYX0xJU1QKIApAQCAtNzAsNiArODYsOCBA
QCBjbGFzcyBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNv
bW1hbmQpOgogY2xhc3MgUmViYXNlbGluZVRlc3QoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5k
KToKICAgICBuYW1lID0gInJlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCIKICAgICBoZWxwX3RleHQg
PSAiUmViYXNlbGluZSBhIHNpbmdsZSB0ZXN0IGZyb20gYSBidWlsZGJvdC4gT25seSBpbnRlbmRl
ZCBmb3IgdXNlIGJ5IG90aGVyIHdlYmtpdC1wYXRjaCBjb21tYW5kcy4iCisgICAgaW5jbHVkZV9w
bGF0Zm9ybV9vcHRpb25zID0gRmFsc2UKKyAgICBpbmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFz
ZWxpbmVzX29wdGlvbiA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAg
IG9wdGlvbnMgPSBbCkBAIC0xODAsNiArMTk4LDggQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJz
dHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKIGNsYXNzIE9wdGltaXplQmFzZWxpbmVzKEFic3Ry
YWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJvcHRpbWl6ZS1iYXNlbGluZXMi
CiAgICAgaGVscF90ZXh0ID0gIlJlc2h1ZmZsZXMgdGhlIGJhc2VsaW5lcyBmb3IgdGhlIGdpdmVu
IHRlc3RzIHRvIHVzZSBhcyBsaXR0ZSBzcGFjZSBvbiBkaXNrIGFzIHBvc3NpYmxlLiIKKyAgICBp
bmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiA9IEZhbHNlCisgICAgaW5j
bHVkZV9ub19vcHRpbWl6ZV9vcHRpb24gPSBGYWxzZQogICAgIGFyZ3VtZW50X25hbWVzID0gIlRF
U1RfTkFNRVMiCiAKICAgICBkZWYgX29wdGltaXplX2Jhc2VsaW5lKHNlbGYsIHRlc3RfbmFtZSk6
CkBAIC0yMDEsNiArMjIxLDggQEAgY2xhc3MgT3B0aW1pemVCYXNlbGluZXMoQWJzdHJhY3RSZWJh
c2VsaW5pbmdDb21tYW5kKToKIGNsYXNzIEFuYWx5emVCYXNlbGluZXMoQWJzdHJhY3RSZWJhc2Vs
aW5pbmdDb21tYW5kKToKICAgICBuYW1lID0gImFuYWx5emUtYmFzZWxpbmVzIgogICAgIGhlbHBf
dGV4dCA9ICJBbmFseXplcyB0aGUgYmFzZWxpbmVzIGZvciB0aGUgZ2l2ZW4gdGVzdHMgYW5kIHBy
aW50cyByZXN1bHRzIHRoYXQgYXJlIGlkZW50aWNhbC4iCisgICAgaW5jbHVkZV9tb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lc19vcHRpb24gPSBGYWxzZQorICAgIGluY2x1ZGVfbm9fb3B0aW1pemVf
b3B0aW9uID0gRmFsc2UKICAgICBhcmd1bWVudF9uYW1lcyA9ICJURVNUX05BTUVTIgogCiAgICAg
ZGVmIF9wcmludChzZWxmLCBiYXNlbGluZV9uYW1lLCBkaXJlY3Rvcmllc19ieV9yZXN1bHQpOgpA
QCAtMjI1LDE1ICsyNDcsNyBAQCBjbGFzcyBBbmFseXplQmFzZWxpbmVzKEFic3RyYWN0UmViYXNl
bGluaW5nQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLl9hbmFseXplX2Jhc2VsaW5lKHRlc3Rf
bmFtZSkKIAogCi1jbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJh
Y3REZWNsYXJhdGl2ZUNvbW1hbmQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5v
bmUpOgotICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBbXQotICAgICAgICBvcHRpb25zLmV4
dGVuZChbCi0gICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1uby1vcHRpbWl6ZScs
IGRlc3Q9J29wdGltaXplJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKLSAg
ICAgICAgICAgICAgICBoZWxwPSgnRG8gbm90IG9wdGltaXplL2RlLWR1cCB0aGUgZXhwZWN0YXRp
b25zIGFmdGVyIHJlYmFzZWxpbmluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0
IGlzIHRvIGRlLWR1cCBhdXRvbWF0aWNhbGx5KS4gJwotICAgICAgICAgICAgICAgICAgICAgICdZ
b3UgY2FuIHVzZSAid2Via2l0LXBhdGNoIG9wdGltaXplLWJhc2VsaW5lcyIgdG8gb3B0aW1pemUg
c2VwYXJhdGVseS4nKSldKQotICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2lu
aXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCitjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNl
bGluZUNvbW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKIAogICAgIGRlZiBfcnVu
X3dlYmtpdF9wYXRjaChzZWxmLCBhcmdzLCB2ZXJib3NlKToKICAgICAgICAgdHJ5OgpAQCAtMjY1
LDcgKzI3OSw3IEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZChBYnN0
cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgYnVpbGRlcnNfdG9fZmFs
bGJhY2tfcGF0aHNbYnVpbGRlcl0gPSBmYWxsYmFja19wYXRoCiAgICAgICAgIHJldHVybiBidWls
ZGVyc190b19mYWxsYmFja19wYXRocy5rZXlzKCkKIAotICAgIGRlZiBfcmViYXNlbGluZV9jb21t
YW5kcyhzZWxmLCB0ZXN0X2xpc3QsIHZlcmJvc2U9RmFsc2UpOgorICAgIGRlZiBfcmViYXNlbGlu
ZV9jb21tYW5kcyhzZWxmLCB0ZXN0X2xpc3QsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZh
bHNlLCB2ZXJib3NlPUZhbHNlKToKIAogICAgICAgICBwYXRoX3RvX3dlYmtpdF9wYXRjaCA9IHNl
bGYuX3Rvb2wucGF0aCgpCiAgICAgICAgIGN3ZCA9IHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRf
cm9vdApAQCAtMjc0LDkgKzI4OCwxMCBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGlu
ZUNvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgZm9yIGJ1
aWxkZXIgaW4gc2VsZi5fYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbSh0ZXN0X2xpc3RbdGVzdF0pOgog
ICAgICAgICAgICAgICAgIHN1ZmZpeGVzID0gJywnLmpvaW4odGVzdF9saXN0W3Rlc3RdW2J1aWxk
ZXJdKQogICAgICAgICAgICAgICAgIGNtZF9saW5lID0gW3BhdGhfdG9fd2Via2l0X3BhdGNoLCAn
cmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCBzdWZmaXhlcywgJy0tYnVp
bGRlcicsIGJ1aWxkZXIsICctLXRlc3QnLCB0ZXN0XQotICAgICAgICAgICAgICAgIG1vdmVfb3Zl
cndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGlu
ZXNfdG8oYnVpbGRlcikKLSAgICAgICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gbW92ZV9vdmVy
d3JpdHRlbl9iYXNlbGluZXNfdG86Ci0gICAgICAgICAgICAgICAgICAgIGNtZF9saW5lLmV4dGVu
ZChbJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMtdG8nLCBwbGF0Zm9ybV0pCisgICAgICAg
ICAgICAgICAgaWYgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAgICAgICAgICAg
ICAgIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3Jp
dHRlbl9iYXNlbGluZXNfdG8oYnVpbGRlcikKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBsYXRm
b3JtIGluIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY21kX2xpbmUuZXh0ZW5kKFsnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10bycs
IHBsYXRmb3JtXSkKICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAg
ICAgICBjbWRfbGluZS5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAgICAgICAgICAgY29tbWFu
ZHMuYXBwZW5kKHR1cGxlKFtjbWRfbGluZSwgY3dkXSkpCkBAIC0zMTQsNyArMzI5LDcgQEAgY2xh
c3MgQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0RGVjbGFyYXRpdmVD
b21tYW5kKToKICAgICAgICAgICAgIGZvciBidWlsZGVyLCBzdWZmaXhlcyBpbiBzb3J0ZWQoYnVp
bGRlcnMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUg
KGJ1aWxkZXIsICIsIi5qb2luKHN1ZmZpeGVzKSkpCiAKLSAgICAgICAgY29tbWFuZHMgPSBzZWxm
Ll9yZWJhc2VsaW5lX2NvbW1hbmRzKHRlc3RfbGlzdCwgb3B0aW9ucy52ZXJib3NlKQorICAgICAg
ICBjb21tYW5kcyA9IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVzdF9saXN0LCBvcHRpb25z
Lm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzLCBvcHRpb25zLnZlcmJvc2UpCiAgICAgICAgIGNv
bW1hbmRfcmVzdWx0cyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21t
YW5kcykKIAogICAgICAgICBsb2dfb3V0cHV0ID0gJ1xuJy5qb2luKHJlc3VsdFsyXSBmb3IgcmVz
dWx0IGluIGNvbW1hbmRfcmVzdWx0cykucmVwbGFjZSgnXG5cbicsICdcbicpCkBAIC0zOTQsNyAr
NDA5LDYgQEAgY2xhc3MgUmViYXNlbGluZShBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1h
bmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKICAgICAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkZXJzIiwgZGVmYXVsdD1Ob25lLCBh
Y3Rpb249ImFwcGVuZCIsIGhlbHA9IkNvbW1hLXNlcGFyYXRlZC1saXN0IG9mIGJ1aWxkZXJzIHRv
IHB1bGwgbmV3IGJhc2VsaW5lcyBmcm9tIChjYW4gYWxzbyBiZSBwcm92aWRlZCBtdWx0aXBsZSB0
aW1lcykiKSwKLSAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXN1ZmZpeGVzIiwg
ZGVmYXVsdD1CQVNFTElORV9TVUZGSVhfTElTVCwgYWN0aW9uPSJhcHBlbmQiLCBoZWxwPSJDb21t
YS1zZXBhcmF0ZWQtbGlzdCBvZiBmaWxlIHR5cGVzIHRvIHJlYmFzZWxpbmUgKGNhbiBhbHNvIGJl
IHByb3ZpZGVkIG11bHRpcGxlIHRpbWVzKSIpLAogICAgICAgICBdCiAgICAgICAgIEFic3RyYWN0
UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMp
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRl
bmluZ3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRl
bmluZ3NlcnZlci5weQppbmRleCBkZTY5OWNmN2Q4ZjE2ZWIzMGRiMjdhODkwMjg4ZTZhNGIzYmYz
ODA2Li40NDI4NzExY2FhYWEwNzQ2MTIxZGExMzkwZjk3YzYzZmRiN2RiM2RkIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVy
LnB5CkBAIC0yNyw2ICsyNyw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQganNvbgogaW1wb3J0
IG9zCiBpbXBvcnQgc3lzCitpbXBvcnQgdXJsbGliCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1l
bW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS50b29sLnNlcnZlcnMucmVmbGVj
dGlvbmhhbmRsZXIgaW1wb3J0IFJlZmxlY3Rpb25IYW5kbGVyCkBAIC01OCw4ICs1OSwxMiBAQCBj
bGFzcyBHYXJkZW5pbmdIVFRQU2VydmVyKEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAg
ICAgICBzZWxmLm9wdGlvbnMgPSBjb25maWdbJ29wdGlvbnMnXQogICAgICAgICBCYXNlSFRUUFNl
cnZlci5IVFRQU2VydmVyLl9faW5pdF9fKHNlbGYsIChzZXJ2ZXJfbmFtZSwgaHR0cGRfcG9ydCks
IEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlcikKIAotICAgIGRlZiB1cmwoc2VsZik6Ci0gICAg
ICAgIHJldHVybiAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oR2FyZGVuaW5nSFRUUFJlcXVlc3RI
YW5kbGVyLlNUQVRJQ19GSUxFX0RJUkVDVE9SWSwgJ2dhcmRlbi1vLW1hdGljLmh0bWwnKQorICAg
IGRlZiB1cmwoc2VsZiwgYXJncz1Ob25lKToKKyAgICAgICAgYXJncyA9IGFyZ3Mgb3Ige30KKyAg
ICAgICAgYXJnX3N0cmluZyA9ICcnCisgICAgICAgIGlmIGFyZ3M6CisgICAgICAgICAgICBhcmdf
c3RyaW5nID0gJz8nICsgJyYnLmpvaW4oIiVzPSVzIiAlIChrZXksIHVybGxpYi5xdW90ZSh2YWx1
ZSkpIGZvciAoa2V5LCB2YWx1ZSkgaW4gYXJncy5pdGVtcygpKQorICAgICAgICByZXR1cm4gJ2Zp
bGU6Ly8nICsgb3MucGF0aC5qb2luKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlci5TVEFUSUNf
RklMRV9ESVJFQ1RPUlksICdnYXJkZW4tby1tYXRpYy5odG1sJyArIGFyZ19zdHJpbmcpCiAKIAog
Y2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxlY3Rpb25IYW5kbGVyKToKQEAg
LTEwNiw2ICsxMTEsMTAgQEAgY2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxl
Y3Rpb25IYW5kbGVyKToKIAogICAgIGRlZiByZWJhc2VsaW5lYWxsKHNlbGYpOgogICAgICAgICBj
b21tYW5kID0gWydyZWJhc2VsaW5lLWpzb24nXQorICAgICAgICBpZiBzZWxmLnNlcnZlci5vcHRp
b25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzOgorICAgICAgICAgICAgY29tbWFuZC5hcHBl
bmQoJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMnKQorICAgICAgICBpZiBub3Qgc2VsZi5z
ZXJ2ZXIub3B0aW9ucy5vcHRpbWl6ZToKKyAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCctLW5v
LW9wdGltaXplJykKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIub3B0aW9ucy52ZXJib3NlOgogICAg
ICAgICAgICAgY29tbWFuZC5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAgIGpzb25faW5wdXQg
PSBzZWxmLnJlYWRfZW50aXR5X2JvZHkoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171533</attachid>
            <date>2012-10-30 15:31:58 -0700</date>
            <delta_ts>2012-10-30 18:50:40 -0700</delta_ts>
            <desc>rebasing</desc>
            <filename>bug-100563-20121030153022.patch</filename>
            <type>text/plain</type>
            <size>22612</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTM2MGMzYmVhODFkNzhjMTIxNGUwM2FjM2RmYzczYjRj
YzRiNGNiNi4uYzNlYWVmNDhkNjRkMDdjMzc1OTNmMDcwMTIwY2FjZWJhN2E4ZGVlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUx
IEBACiAyMDEyLTEwLTMwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBzdXBwb3J0IGdhcmRlbmluZyBhIHNpbmdsZSBw
b3J0IGFuZCBzcGVjaWZ5aW5nIGhvdyB0byBkZWFsIHdpdGggb3ZlcndyaXR0ZW4gYmFzZWxpbmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgZ2FyZGVuLW8tbWF0aWMgbW9yZSB1c2Vm
dWwgZm9yCisgICAgICAgIGJyaW5naW5nIHVwIGEgc2luZ2xlIG5ldyBwb3J0IGluIHR3byB3YXlz
LiBUaGUgZ29hbCBpcyB0byBmdWxseQorICAgICAgICBvYnNvbGV0ZSB3ZWJraXQtcGF0Y2ggcmVi
YXNlbGluZS1zZXJ2ZXIuCisgICAgICAgIAorICAgICAgICBGaXJzdCwgaXQgYWRkcyBzdXBwb3J0
IGZvciB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudHMgdG8gZ2FyZGVuLW8tbWF0aWMKKyAgICAgICAg
KHNvIHRoYXQgdGhlIFVJIHdpbGwgZGVmYXVsdCB0byB0aGUgcmlnaHQgY2x1c3RlciBvZiBib3Rz
KSwgYW5kIGlmIHRoZSBwbGF0Zm9ybSBhcmcKKyAgICAgICAgc3BlY2lmaWVzIGEgc2luZ2xlIGJv
dCwgZmlsdGVycyB0aGUgcmVzdWx0cyBkb3duIHRvIGp1c3QgdGhhdCBib3QuCisKKyAgICAgICAg
U2Vjb25kLCBpdCBhZGRzIHN1cHBvcnQgZm9yIC0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMg
YW5kIGNoYW5nZXMKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcyBzZXR0aW5nIGluIGJ1aWxkZXJzLnB5CisgICAgICAgIHNvIHRoYXQg
aXQgaXMgb25seSB1c2VkIGlmIHRoaXMgZmxhZyBpcyBwcm92aWRlZC4KKworICAgICAgICBGdXR1
cmUgcGF0Y2hlcyB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGxvY2FsIGNvcGllcyBvZiB0
aGUgYnVpbGQKKyAgICAgICAgcmVzdWx0cyAocmF0aGVyIHRoYW4gZ29pbmcgdG8gdGhlIGJvdHMp
IGFuZCBvdGhlciBvcHRpbWl6YXRpb25zIHRvIG1ha2UKKyAgICAgICAgaXQgZmFzdGVyIHRvIHJl
dmlldyBsb3RzIG9mIGNoYW5nZXMgb24gYSBzaW5nbGUgYm90LgorCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL2dhcmRlbi1vLW1hdGljLmh0bWw6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29u
ZmlnLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2ZhY3RvcnkucHk6CisgICAgICAgIChwb3J0X29wdGlvbnMpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHk6CisgICAg
ICAgIChHYXJkZW5PTWF0aWMpOgorICAgICAgICAoR2FyZGVuT01hdGljLmV4ZWN1dGUpOgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5OgorICAg
ICAgICAoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKKyAgICAgICAgKEFic3RyYWN0UmVi
YXNlbGluaW5nQ29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChSZWJhc2VsaW5lVGVzdCk6Cisg
ICAgICAgIChPcHRpbWl6ZUJhc2VsaW5lcyk6CisgICAgICAgIChBbmFseXplQmFzZWxpbmVzKToK
KyAgICAgICAgKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6CisgICAgICAgIChB
YnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQuX3JlYmFzZWxpbmVfY29tbWFuZHMpOgor
ICAgICAgICAoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kLl9yZWJhc2VsaW5lKToK
KyAgICAgICAgKFJlYmFzZWxpbmUuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToKKyAgICAgICAgKEdhcmRlbmluZ0hU
VFBTZXJ2ZXIudXJsKToKKyAgICAgICAgKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFuZGxlci5yZWJh
c2VsaW5lYWxsKToKKworMjAxMi0xMC0zMCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggcmViYXNlbGluZSo6IGFkZCBtb3JlIGhlbHBm
dWwgbG9nZ2luZwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAwNTYyCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5o
dG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKaW5kZXggOTA0ZTVlZGQw
ZTE4MjlkZjMzYmM2NDA1NjVlZjdjZGE0M2UyZjY0My4uMmMyOGZiZTgzNWYxYmUzOTI4ZjMwYmIz
N2I3YTM0NjVlN2NiY2Y2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1h
dGljLmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKQEAgLTUw
LDggKzUwLDggQEAgSmFtZXMsIGEgd2ViIGRldmVsb3BlciBmcm9tIEJpcm1pbmdoYW0sIFVLLgog
PGJvZHk+CiA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGli
cy9qcXVlcnkvMS42LjIvanF1ZXJ5Lm1pbi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9hamF4Lmdvb2dsZWFwaXMuY29tL2FqYXgvbGlicy9qcXVlcnl1aS8xLjguMTUvanF1ZXJ5
LXVpLm1pbi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwv
c2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0ic2NyaXB0cy9jb25maWcuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMv
bmV0LmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvY29uZmlnLmpzCmluZGV4IDkyZmEwM2EwMGMxNTMyZjJjY2JjY2YwMzNhMmFlNGUxNWMx
ZDBiZTIuLjBhMWYzMjkxZjY1OGQxYWUxYWIzMDVjZjJmNzU2NWU0OTA0ZmFlNDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5qcworKysgYi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9jb25maWcuanMKQEAgLTg1LDYgKzg1LDkgQEAgY29uZmlnLmtQbGF0Zm9ybXMg
PSB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGROdW1iZXI7CiAgICAgICAgIH0sCiAgICAgICAg
IGJ1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgaWYg
KGNvbmZpZy5jdXJyZW50QnVpbGRlcikgeworICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVy
TmFtZSA9PSBjb25maWcuY3VycmVudEJ1aWxkZXI7CisgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAvLyBGSVhNRTogU2hvdWxkIGdhcmRlbi1vLW1hdGljIHNob3cgdGhlc2U/IEkgY2FuIGltYWdp
bmUgc2hvd2luZyB0aGUgZGVwcyBib3RzIGJlaW5nIHVzZWZ1bCBhdCBsZWFzdCBzbwogICAgICAg
ICAgICAgLy8gdGhhdCB0aGUgZ2FyZGVuZXIgb25seSBuZWVkIHRvIGxvb2sgYXQgZ2FyZGVuLW8t
bWF0aWMgYW5kIG5ldmVyIGF0IHRoZSB3YXRlcmZhbGwuIE5vdCByZWFsbHkgc3VyZSB3aG8KICAg
ICAgICAgICAgIC8vIHdhdGNoZXMgdGhlIEdQVSBib3RzLgpAQCAtMTU5LDcgKzE2MiwyMiBAQCBj
b25maWcua1JlbGF0aXZlVGltZVVwZGF0ZUZyZXF1ZW5jeSA9IDEwMDAgKiA2MDsKIAogY29uZmln
LmtFeHBlcmltZW50YWxGZWF0dXJlcyA9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2VhcmNoKCdl
bmFibGVFeHBlcmltZW50cz0xJykgIT0gLTE7CiAKLWNvbmZpZy5jdXJyZW50UGxhdGZvcm0gPSAn
Y2hyb21pdW0nOworY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IGJhc2UuZ2V0VVJMUGFyYW1ldGVy
KCdwbGF0Zm9ybScpIHx8ICdjaHJvbWl1bSc7Citjb25maWcuY3VycmVudEJ1aWxkZXIgPSBiYXNl
LmdldFVSTFBhcmFtZXRlcignYnVpbGRlcicpOworCitjb25maWcuc2V0QnVpbGRlcnMgPSBmdW5j
dGlvbigpIHsKKyAgICBpZiAoY29uZmlnLmN1cnJlbnRCdWlsZGVyKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJZiBjdXJyZW50QnVpbGRlciBpcyBzZXQsIHdlIHdhbnQgdG8gbGltaXQgYW55IHBsYWNl
IHRoYXQgaXRlcmF0ZXMgb3ZlcgorICAgICAgICAvLyBhIGxpc3Qgb2YgYnVpbGRlcnMgdG8ganVz
dCB1c2UgdGhlIGN1cnJlbnRCdWlsZGVyLiBpbnN0ZWFkIG9mIHRoZSBmdWxsIGxpc3Qgb2YgCisg
ICAgICAgIC8vIGJ1aWxkZXJzIGZvciB0aGUgY3VycmVudCBwbGF0Zm9ybS4KKyAgICAgICAgZm9y
IChidWlsZGVyIGluIGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1
aWxkZXJzKSB7CisgICAgICAgICAgICBpZiAoYnVpbGRlciAhPSBjb25maWcuY3VycmVudEJ1aWxk
ZXIpIHsKKyAgICAgICAgICAgICAgICBkZWxldGUgY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1
cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnNbYnVpbGRlcl07CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9Cit9Citjb25maWcuc2V0QnVpbGRlcnMoKTsKIAogY29uZmlnLnNldFBsYXRmb3Jt
ID0gZnVuY3Rpb24ocGxhdGZvcm0pCiB7CkBAIC0xNjgsNiArMTg2LDcgQEAgY29uZmlnLnNldFBs
YXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
Y29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9IHBsYXRmb3JtOworICAgIGNvbmZpZy5zZXRCdWlsZGVy
cygpOwogfTsKIAogfSkoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2J1aWxkZXJzLnB5CmluZGV4IGMyYWI4ZDIxMmMzNGNmZWI4ZDEyNzdkNzhh
MjJiMDQyMTdjMjExZDQuLjE1NWFjODk4Yjk0NTUwOGQ0Y2FiZDNiNjVjM2M1YzBiYmRhNGRlZjcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVp
bGRlcnMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9i
dWlsZGVycy5weQpAQCAtNTgsNyArNTgsOCBAQCBfZXhhY3RfbWF0Y2hlcyA9IHsKICAgICAiV2Vi
S2l0IE1hYzEwLjYgKGRiZykiOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtc25vd2xlb3Bh
cmQiLCAic3BlY2lmaWVycyI6IHNldChbInNub3dsZW9wYXJkIiwgImRlYnVnIl0pfSwKICAgICAi
V2ViS2l0IE1hYzEwLjciOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtbGlvbiIsICJzcGVj
aWZpZXJzIjogc2V0KFsibGlvbiIsICJyZWxlYXNlIl0pfSwKICAgICAiV2ViS2l0IE1hYzEwLjcg
KGRiZykiOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtbGlvbiIsICJzcGVjaWZpZXJzIjog
c2V0KFsibGlvbiIsICJkZWJ1ZyJdKX0sCi0gICAgIldlYktpdCBNYWMxMC44IjogeyJwb3J0X25h
bWUiOiAiY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbiIsICJzcGVjaWZpZXJzIjogc2V0KFsibW91
bnRhaW5saW9uIiwgInJlbGVhc2UiXSl9LAorICAgICJXZWJLaXQgTWFjMTAuOCI6IHsicG9ydF9u
YW1lIjogImNocm9taXVtLW1hYy1tb3VudGFpbmxpb24iLCAic3BlY2lmaWVycyI6IHNldChbIm1v
dW50YWlubGlvbiIsICJyZWxlYXNlIl0pLAorICAgICAgICAgICAgICAgICAgICAgICAibW92ZV9v
dmVyd3JpdHRlbl9iYXNlbGluZXNfdG8iOiBbImNocm9taXVtLW1hYy1saW9uIl19LAogCiAgICAg
IyBUaGVzZSBidWlsZGVycyBhcmUgb24gYnVpbGQud2Via2l0Lm9yZy4KICAgICAiQXBwbGUgTW91
bnRhaW5MaW9uIFJlbGVhc2UgV0sxIChUZXN0cykiOiB7InBvcnRfbmFtZSI6ICJtYWMtbW91bnRh
aW5saW9uIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb3VudGFpbmxpb24iXSksICJyZWJhc2VsaW5l
X292ZXJyaWRlX2RpciI6ICJtYWMifSwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZmFjdG9yeS5weQppbmRleCA3ZTQ3NTAyMTkwOGE1ZmQ2ZjI2MDgy
YjdmOTcxNDc4YjdjYmI0ZDI4Li5lYzI0ZjQ2YjExZjNlNmU2YzdhNzgxOWNiYTY1NWJjMGQ1NTY5
OWIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2ZhY3RvcnkucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9mYWN0b3J5LnB5CkBAIC0zNSwxNSArMzUsMTggQEAgaW1wb3J0IHJlCiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBidWlsZGVycwogCiAKLWRlZiBwb3J0X29wdGlvbnMo
KipoZWxwX3N0cmluZ3MpOgotICAgIHJldHVybiBbCi0gICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItdCIsICItLXRhcmdldCIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAotICAgICAgICAgICAg
aGVscD0iKERFUFJFQ0FURUQpIiksCitkZWYgcG9ydF9vcHRpb25zKGluY2x1ZGVfY29uZmlndXJh
dGlvbl9vcHRpb25zPVRydWUsICoqaGVscF9zdHJpbmdzKToKKyAgICBjb25maWd1cmF0aW9uX29w
dGlvbnMgPSBbCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItdCIsICItLXRhcmdldCIs
IGRlc3Q9ImNvbmZpZ3VyYXRpb24iLCBoZWxwPSIoREVQUkVDQVRFRCkiKSwKICAgICAgICAgIyBG
SVhNRTogLS1oZWxwIHNob3VsZCBkaXNwbGF5IHdoaWNoIGNvbmZpZ3VyYXRpb24gaXMgZGVmYXVs
dC4KICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZGVidWcnLCBhY3Rpb249J3N0b3Jl
X2NvbnN0JywgY29uc3Q9J0RlYnVnJywgZGVzdD0iY29uZmlndXJhdGlvbiIsCiAgICAgICAgICAg
ICBoZWxwPSdTZXQgdGhlIGNvbmZpZ3VyYXRpb24gdG8gRGVidWcnKSwKICAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oJy0tcmVsZWFzZScsIGFjdGlvbj0nc3RvcmVfY29uc3QnLCBjb25zdD0n
UmVsZWFzZScsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iLAogICAgICAgICAgICAgaGVscD0nU2V0IHRo
ZSBjb25maWd1cmF0aW9uIHRvIFJlbGVhc2UnKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oJy0tMzItYml0JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNvbnN0PSd4ODYnLCBkZWZhdWx0
PU5vbmUsIGRlc3Q9ImFyY2hpdGVjdHVyZSIsCisgICAgICAgICAgICBoZWxwPSd1c2UgMzItYml0
IGJpbmFyaWVzIGJ5IGRlZmF1bHQgKHg4NiBpbnN0ZWFkIG9mIHg4Nl82NCknKSwKKyAgICAgICAg
XQorICAgIHBsYXRmb3JtX29wdGlvbnMgPSBbCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCctLXBsYXRmb3JtJywgYWN0aW9uPSdzdG9yZScsCiAgICAgICAgICAgICBoZWxwPWhlbHBfc3Ry
aW5ncy5nZXQoJ3BsYXRmb3JtJywgJ1BsYXRmb3JtL1BvcnQgYmVpbmcgdGVzdGVkIChlLmcuLCAi
bWFjLWxpb24iKScpKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tY2hyb21pdW0n
LCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J2Nocm9taXVtJywgZGVzdD0ncGxhdGZvcm0n
LApAQCAtNTYsOCArNTksMTEgQEAgZGVmIHBvcnRfb3B0aW9ucygqKmhlbHBfc3RyaW5ncyk6CiAg
ICAgICAgICAgICBoZWxwPSdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1ndGsnKSwKICAgICAgICAgb3B0
cGFyc2UubWFrZV9vcHRpb24oJy0tcXQnLCBhY3Rpb249J3N0b3JlX2NvbnN0JywgY29uc3Q9J3F0
JywgZGVzdD0icGxhdGZvcm0iLAogICAgICAgICAgICAgaGVscD0nQWxpYXMgZm9yIC0tcGxhdGZv
cm09cXQnKSwKLSAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tMzItYml0JywgYWN0aW9u
PSdzdG9yZV9jb25zdCcsIGNvbnN0PSd4ODYnLCBkZWZhdWx0PU5vbmUsIGRlc3Q9ImFyY2hpdGVj
dHVyZSIsCi0gICAgICAgICAgICBoZWxwPSd1c2UgMzItYml0IGJpbmFyaWVzIGJ5IGRlZmF1bHQg
KHg4NiBpbnN0ZWFkIG9mIHg4Nl82NCknKV0KKyAgICAgICAgXQorICAgIGlmIGluY2x1ZGVfY29u
ZmlndXJhdGlvbl9vcHRpb25zOgorICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbl9vcHRpb25z
ICsgcGxhdGZvcm1fb3B0aW9ucworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBwbGF0Zm9ybV9v
cHRpb25zCiAKIAogZGVmIF9idWlsZGVyX29wdGlvbnMoYnVpbGRlcl9uYW1lKToKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5Cmlu
ZGV4IDY2YjlmYWVmOGIyNjYwMzAzZTc1MzI4OTUxZjE2YzhjNWIzYjBkNWEuLjEwY2I1YjVjNmJl
NDA3OGM1ZTgxN2U4NmI3ZmFmYjZlZWY0NjFhN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQpAQCAtMjIsMjAgKzIyLDMy
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIHdlYmtpdHB5LnRvb2wu
bXVsdGljb21tYW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKK2Zyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCitmcm9tIHdlYmtpdHB5
LnRvb2wuY29tbWFuZHMucmViYXNlbGluZSBpbXBvcnQgQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21t
YW5kCiBmcm9tIHdlYmtpdHB5LnRvb2wuc2VydmVycy5nYXJkZW5pbmdzZXJ2ZXIgaW1wb3J0IEdh
cmRlbmluZ0hUVFBTZXJ2ZXIKIAogCi1jbGFzcyBHYXJkZW5PTWF0aWMoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgorIyBGSVhNRTogV2Ugc2hvdWxkIHByb2JhYmx5IGp1c3Qgcm9sbCB0aGlz
IGNvbW1hbmQgaW50byByZWJhc2VsaW5lLnB5LgorCisKK2NsYXNzIEdhcmRlbk9NYXRpYyhBYnN0
cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgIG5hbWUgPSAiZ2FyZGVuLW8tbWF0aWMiCi0g
ICAgaGVscF90ZXh0ID0gIkV4cGVyaW1lbnRhbCBjb21tYW5kIGZvciBnYXJkZW5pbmcgdGhlIFdl
YktpdCB0cmVlLiIKKyAgICBoZWxwX3RleHQgPSAiQ29tbWFuZCBmb3IgZ2FyZGVuaW5nIHRoZSBX
ZWJLaXQgdHJlZS4iCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29s
KToKICAgICAgICAgcHJpbnQgIlRoaXMgY29tbWFuZCBydW5zIGEgbG9jYWwgSFRUUCBzZXJ2ZXIg
dGhhdCBjaGFuZ2VzIHlvdXIgd29ya2luZyBjb3B5IgogICAgICAgICBwcmludCAiYmFzZWQgb24g
dGhlIGFjdGlvbnMgeW91IHRha2UgaW4gdGhlIHdlYi1iYXNlZCBVSS4iCiAKKyAgICAgICAgYXJn
cyA9IHt9CisgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06CisgICAgICAgICAgICAjIEZJWE1F
OiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGZpcnN0IHBhcnQg
b2Ygb3B0aW9ucy5wbGF0Zm9ybS4KKyAgICAgICAgICAgIGFyZ3NbJ3BsYXRmb3JtJ10gPSBvcHRp
b25zLnBsYXRmb3JtLnNwbGl0KCctJylbMF0KKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVy
cy5idWlsZGVyX25hbWVfZm9yX3BvcnRfbmFtZShvcHRpb25zLnBsYXRmb3JtKQorICAgICAgICAg
ICAgaWYgYnVpbGRlcjoKKyAgICAgICAgICAgICAgICBhcmdzWydidWlsZGVyJ10gPSBidWlsZGVy
CisKICAgICAgICAgaHR0cGQgPSBHYXJkZW5pbmdIVFRQU2VydmVyKGh0dHBkX3BvcnQ9ODEyNywg
Y29uZmlnPXsndG9vbCc6IHRvb2wsICdvcHRpb25zJzogb3B0aW9uc30pCi0gICAgICAgIHNlbGYu
X3Rvb2wudXNlci5vcGVuX3VybChodHRwZC51cmwoKSkKKyAgICAgICAgc2VsZi5fdG9vbC51c2Vy
Lm9wZW5fdXJsKGh0dHBkLnVybChhcmdzKSkKIAogICAgICAgICBwcmludCAiTG9jYWwgSFRUUCBz
ZXJ2ZXIgc3RhcnRlZC4iCiAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCA0
NDI2MGVhNWU0ZGMzY2I0Y2Q2YWQxMzhmODc2MmU4YTY2ODJlZDVhLi5iMGE4ZTM0ODk1ODI5Zjc1
ODExMTNhNzYxZjdmNzllZDBiOGRlODNjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQpAQCAtNDYsMjMgKzQ2LDM5IEBAIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVz
dENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4
cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucywgQkFTRUxJTkVfU1VGRklYX0xJU1QK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IGJ1aWxkZXJzCitmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBmYWN0b3J5CiBmcm9tIHdlYmtpdHB5LnRv
b2wuZ3JhbW1hciBpbXBvcnQgcGx1cmFsaXplCiBmcm9tIHdlYmtpdHB5LnRvb2wubXVsdGljb21t
YW5kdG9vbCBpbXBvcnQgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQKIAogCiBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKKwogIyBGSVhNRTogU2hvdWxkIFRlc3RSZXN1bHRX
cml0ZXIga25vdyBob3cgdG8gY29tcHV0ZSB0aGlzIHN0cmluZz8KIGRlZiBfYmFzZWxpbmVfbmFt
ZShmcywgdGVzdF9uYW1lLCBzdWZmaXgpOgogICAgIHJldHVybiBmcy5zcGxpdGV4dCh0ZXN0X25h
bWUpWzBdICsgVGVzdFJlc3VsdFdyaXRlci5GSUxFTkFNRV9TVUZGSVhfRVhQRUNURUQgKyAiLiIg
KyBzdWZmaXgKIAogCiBjbGFzcyBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQoQWJzdHJhY3RE
ZWNsYXJhdGl2ZUNvbW1hbmQpOgorICAgIGluY2x1ZGVfcGxhdGZvcm1fb3B0aW9ucyA9IFRydWUK
KyAgICBpbmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiA9IFRydWUKKyAg
ICBpbmNsdWRlX25vX29wdGltaXplX29wdGlvbiA9IFRydWUKKyAgICBpbmNsdWRlX3N1ZmZpeGVz
X29wdGlvbiA9IFRydWUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5vbmUpOgog
ICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBbXQotICAgICAgICBvcHRpb25zLmV4dGVuZChb
Ci0gICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1zdWZmaXhlcycsIGRlZmF1bHQ9
JywnLmpvaW4oQkFTRUxJTkVfU1VGRklYX0xJU1QpLCBhY3Rpb249J3N0b3JlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2ZpbGUgdHlwZXMgdG8gcmViYXNlbGluZScp
XSkKKyAgICAgICAgaWYgc2VsZi5pbmNsdWRlX3BsYXRmb3JtX29wdGlvbnM6CisgICAgICAgICAg
ICBvcHRpb25zLmV4dGVuZChmYWN0b3J5LnBvcnRfb3B0aW9ucyhpbmNsdWRlX2NvbmZpZ3VyYXRp
b25fb3B0aW9ucz1GYWxzZSkpCisgICAgICAgIGlmIHNlbGYuaW5jbHVkZV9zdWZmaXhlc19vcHRp
b246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBvcHRwYXJz
ZS5tYWtlX29wdGlvbigiLS1zdWZmaXhlcyIsIGRlZmF1bHQ9JywnLmpvaW4oQkFTRUxJTkVfU1VG
RklYX0xJU1QpLCBhY3Rpb249InN0b3JlIiwgaGVscD0iQ29tbWEtc2VwYXJhdGVkLWxpc3Qgb2Yg
ZmlsZSB0eXBlcyB0byByZWJhc2VsaW5lIikpCisgICAgICAgIGlmIHNlbGYuaW5jbHVkZV9tb3Zl
X292ZXJ3cml0dGVuX2Jhc2VsaW5lc19vcHRpb246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVu
ZChvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgaGVscD0i
TW92ZSBvdmVyd3JpdHRlbiBiYXNlbGluZXMgZWxzZXdoZXJlIGluIHRoZSBiYXNlbGluZSBwYXRo
LiBUaGlzIGlzIGZvciBicmluZ2luZyB1cCBuZXcgcG9ydHMuIikpCisgICAgICAgIGlmIHNlbGYu
aW5jbHVkZV9ub19vcHRpbWl6ZV9vcHRpb246CisgICAgICAgICAgICBvcHRpb25zLmFwcGVuZChv
cHRwYXJzZS5tYWtlX29wdGlvbignLS1uby1vcHRpbWl6ZScsIGRlc3Q9J29wdGltaXplJywgYWN0
aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICBoZWxwPSgn
RG8gbm90IG9wdGltaXplL2RlLWR1cCB0aGUgZXhwZWN0YXRpb25zIGFmdGVyIHJlYmFzZWxpbmlu
ZyAoZGVmYXVsdCBpcyB0byBkZS1kdXAgYXV0b21hdGljYWxseSkuICcKKyAgICAgICAgICAgICAg
ICAgICAgICAnWW91IGNhbiB1c2UgIndlYmtpdC1wYXRjaCBvcHRpbWl6ZS1iYXNlbGluZXMiIHRv
IG9wdGltaXplIHNlcGFyYXRlbHkuJykpKQogICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29t
bWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCiAgICAgICAgIHNlbGYuX2Jhc2Vs
aW5lX3N1ZmZpeF9saXN0ID0gQkFTRUxJTkVfU1VGRklYX0xJU1QKIApAQCAtNzAsNiArODYsOCBA
QCBjbGFzcyBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNv
bW1hbmQpOgogY2xhc3MgUmViYXNlbGluZVRlc3QoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5k
KToKICAgICBuYW1lID0gInJlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCIKICAgICBoZWxwX3RleHQg
PSAiUmViYXNlbGluZSBhIHNpbmdsZSB0ZXN0IGZyb20gYSBidWlsZGJvdC4gT25seSBpbnRlbmRl
ZCBmb3IgdXNlIGJ5IG90aGVyIHdlYmtpdC1wYXRjaCBjb21tYW5kcy4iCisgICAgaW5jbHVkZV9w
bGF0Zm9ybV9vcHRpb25zID0gRmFsc2UKKyAgICBpbmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFz
ZWxpbmVzX29wdGlvbiA9IEZhbHNlCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAg
IG9wdGlvbnMgPSBbCkBAIC0xODAsNiArMTk4LDggQEAgY2xhc3MgUmViYXNlbGluZVRlc3QoQWJz
dHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKIGNsYXNzIE9wdGltaXplQmFzZWxpbmVzKEFic3Ry
YWN0UmViYXNlbGluaW5nQ29tbWFuZCk6CiAgICAgbmFtZSA9ICJvcHRpbWl6ZS1iYXNlbGluZXMi
CiAgICAgaGVscF90ZXh0ID0gIlJlc2h1ZmZsZXMgdGhlIGJhc2VsaW5lcyBmb3IgdGhlIGdpdmVu
IHRlc3RzIHRvIHVzZSBhcyBsaXR0ZSBzcGFjZSBvbiBkaXNrIGFzIHBvc3NpYmxlLiIKKyAgICBp
bmNsdWRlX21vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiA9IEZhbHNlCisgICAgaW5j
bHVkZV9ub19vcHRpbWl6ZV9vcHRpb24gPSBGYWxzZQogICAgIGFyZ3VtZW50X25hbWVzID0gIlRF
U1RfTkFNRVMiCiAKICAgICBkZWYgX29wdGltaXplX2Jhc2VsaW5lKHNlbGYsIHRlc3RfbmFtZSk6
CkBAIC0yMDEsNiArMjIxLDggQEAgY2xhc3MgT3B0aW1pemVCYXNlbGluZXMoQWJzdHJhY3RSZWJh
c2VsaW5pbmdDb21tYW5kKToKIGNsYXNzIEFuYWx5emVCYXNlbGluZXMoQWJzdHJhY3RSZWJhc2Vs
aW5pbmdDb21tYW5kKToKICAgICBuYW1lID0gImFuYWx5emUtYmFzZWxpbmVzIgogICAgIGhlbHBf
dGV4dCA9ICJBbmFseXplcyB0aGUgYmFzZWxpbmVzIGZvciB0aGUgZ2l2ZW4gdGVzdHMgYW5kIHBy
aW50cyByZXN1bHRzIHRoYXQgYXJlIGlkZW50aWNhbC4iCisgICAgaW5jbHVkZV9tb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lc19vcHRpb24gPSBGYWxzZQorICAgIGluY2x1ZGVfbm9fb3B0aW1pemVf
b3B0aW9uID0gRmFsc2UKICAgICBhcmd1bWVudF9uYW1lcyA9ICJURVNUX05BTUVTIgogCiAgICAg
ZGVmIF9wcmludChzZWxmLCBiYXNlbGluZV9uYW1lLCBkaXJlY3Rvcmllc19ieV9yZXN1bHQpOgpA
QCAtMjI1LDE1ICsyNDcsNyBAQCBjbGFzcyBBbmFseXplQmFzZWxpbmVzKEFic3RyYWN0UmViYXNl
bGluaW5nQ29tbWFuZCk6CiAgICAgICAgICAgICBzZWxmLl9hbmFseXplX2Jhc2VsaW5lKHRlc3Rf
bmFtZSkKIAogCi1jbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJh
Y3REZWNsYXJhdGl2ZUNvbW1hbmQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zPU5v
bmUpOgotICAgICAgICBvcHRpb25zID0gb3B0aW9ucyBvciBbXQotICAgICAgICBvcHRpb25zLmV4
dGVuZChbCi0gICAgICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1uby1vcHRpbWl6ZScs
IGRlc3Q9J29wdGltaXplJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwKLSAg
ICAgICAgICAgICAgICBoZWxwPSgnRG8gbm90IG9wdGltaXplL2RlLWR1cCB0aGUgZXhwZWN0YXRp
b25zIGFmdGVyIHJlYmFzZWxpbmluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0
IGlzIHRvIGRlLWR1cCBhdXRvbWF0aWNhbGx5KS4gJwotICAgICAgICAgICAgICAgICAgICAgICdZ
b3UgY2FuIHVzZSAid2Via2l0LXBhdGNoIG9wdGltaXplLWJhc2VsaW5lcyIgdG8gb3B0aW1pemUg
c2VwYXJhdGVseS4nKSldKQotICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2lu
aXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCitjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNl
bGluZUNvbW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKIAogICAgIGRlZiBfcnVu
X3dlYmtpdF9wYXRjaChzZWxmLCBhcmdzLCB2ZXJib3NlKToKICAgICAgICAgdHJ5OgpAQCAtMjY1
LDcgKzI3OSw3IEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZChBYnN0
cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgICAgICAgICAgYnVpbGRlcnNfdG9fZmFs
bGJhY2tfcGF0aHNbYnVpbGRlcl0gPSBmYWxsYmFja19wYXRoCiAgICAgICAgIHJldHVybiBidWls
ZGVyc190b19mYWxsYmFja19wYXRocy5rZXlzKCkKIAotICAgIGRlZiBfcmViYXNlbGluZV9jb21t
YW5kcyhzZWxmLCB0ZXN0X2xpc3QsIHZlcmJvc2U9RmFsc2UpOgorICAgIGRlZiBfcmViYXNlbGlu
ZV9jb21tYW5kcyhzZWxmLCB0ZXN0X2xpc3QsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZh
bHNlLCB2ZXJib3NlPUZhbHNlKToKIAogICAgICAgICBwYXRoX3RvX3dlYmtpdF9wYXRjaCA9IHNl
bGYuX3Rvb2wucGF0aCgpCiAgICAgICAgIGN3ZCA9IHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRf
cm9vdApAQCAtMjc0LDkgKzI4OCwxMCBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGlu
ZUNvbW1hbmQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICAgICAgZm9yIGJ1
aWxkZXIgaW4gc2VsZi5fYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbSh0ZXN0X2xpc3RbdGVzdF0pOgog
ICAgICAgICAgICAgICAgIHN1ZmZpeGVzID0gJywnLmpvaW4odGVzdF9saXN0W3Rlc3RdW2J1aWxk
ZXJdKQogICAgICAgICAgICAgICAgIGNtZF9saW5lID0gW3BhdGhfdG9fd2Via2l0X3BhdGNoLCAn
cmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCBzdWZmaXhlcywgJy0tYnVp
bGRlcicsIGJ1aWxkZXIsICctLXRlc3QnLCB0ZXN0XQotICAgICAgICAgICAgICAgIG1vdmVfb3Zl
cndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGlu
ZXNfdG8oYnVpbGRlcikKLSAgICAgICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gbW92ZV9vdmVy
d3JpdHRlbl9iYXNlbGluZXNfdG86Ci0gICAgICAgICAgICAgICAgICAgIGNtZF9saW5lLmV4dGVu
ZChbJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMtdG8nLCBwbGF0Zm9ybV0pCisgICAgICAg
ICAgICAgICAgaWYgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAgICAgICAgICAg
ICAgIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3Jp
dHRlbl9iYXNlbGluZXNfdG8oYnVpbGRlcikKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBsYXRm
b3JtIGluIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY21kX2xpbmUuZXh0ZW5kKFsnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10bycs
IHBsYXRmb3JtXSkKICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAg
ICAgICBjbWRfbGluZS5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAgICAgICAgICAgY29tbWFu
ZHMuYXBwZW5kKHR1cGxlKFtjbWRfbGluZSwgY3dkXSkpCkBAIC0zMTQsNyArMzI5LDcgQEAgY2xh
c3MgQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0RGVjbGFyYXRpdmVD
b21tYW5kKToKICAgICAgICAgICAgIGZvciBidWlsZGVyLCBzdWZmaXhlcyBpbiBzb3J0ZWQoYnVp
bGRlcnMuaXRlbXMoKSk6CiAgICAgICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUg
KGJ1aWxkZXIsICIsIi5qb2luKHN1ZmZpeGVzKSkpCiAKLSAgICAgICAgY29tbWFuZHMgPSBzZWxm
Ll9yZWJhc2VsaW5lX2NvbW1hbmRzKHRlc3RfbGlzdCwgb3B0aW9ucy52ZXJib3NlKQorICAgICAg
ICBjb21tYW5kcyA9IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVzdF9saXN0LCBvcHRpb25z
Lm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzLCBvcHRpb25zLnZlcmJvc2UpCiAgICAgICAgIGNv
bW1hbmRfcmVzdWx0cyA9IHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21t
YW5kcykKIAogICAgICAgICBsb2dfb3V0cHV0ID0gJ1xuJy5qb2luKHJlc3VsdFsyXSBmb3IgcmVz
dWx0IGluIGNvbW1hbmRfcmVzdWx0cykucmVwbGFjZSgnXG5cbicsICdcbicpCkBAIC0zOTQsNyAr
NDA5LDYgQEAgY2xhc3MgUmViYXNlbGluZShBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1h
bmQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKICAgICAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkZXJzIiwgZGVmYXVsdD1Ob25lLCBh
Y3Rpb249ImFwcGVuZCIsIGhlbHA9IkNvbW1hLXNlcGFyYXRlZC1saXN0IG9mIGJ1aWxkZXJzIHRv
IHB1bGwgbmV3IGJhc2VsaW5lcyBmcm9tIChjYW4gYWxzbyBiZSBwcm92aWRlZCBtdWx0aXBsZSB0
aW1lcykiKSwKLSAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXN1ZmZpeGVzIiwg
ZGVmYXVsdD1CQVNFTElORV9TVUZGSVhfTElTVCwgYWN0aW9uPSJhcHBlbmQiLCBoZWxwPSJDb21t
YS1zZXBhcmF0ZWQtbGlzdCBvZiBmaWxlIHR5cGVzIHRvIHJlYmFzZWxpbmUgKGNhbiBhbHNvIGJl
IHByb3ZpZGVkIG11bHRpcGxlIHRpbWVzKSIpLAogICAgICAgICBdCiAgICAgICAgIEFic3RyYWN0
UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMp
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJh
c2VsaW5lX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKaW5kZXggM2EwN2Y5ZjE0MmU0NzllZmEwNWRjOWY0Nzcx
MWQwOWI2NDdiNDY1Mi4uZWU4YmNmMDQ2NTUxYmNmZDk4YWNmYjQ3MGU3ZmQ0YWM5YzQ2ZjkwYyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxp
bmVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKQEAgLTIyMyw3ICsyMjMsNyBAQCBjbGFzcyBUZXN0UmVi
YXNlbGluZUpzb24oX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgIHN1cGVyKFRlc3RSZWJhc2VsaW5l
SnNvbiwgc2VsZikudGVhckRvd24oKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9hbGwoc2Vs
Zik6Ci0gICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3Nl
PVRydWUpCisgICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJi
b3NlPVRydWUsIG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzPUZhbHNlKQogICAgICAgICBzZWxm
LmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9ucywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXItdGVz
dC5odG1sIjogeyJNT0NLIGJ1aWxkZXIiOiBbInR4dCIsICJwbmciXX19KQogCiAgICAgICAgICMg
Tm90ZSB0aGF0IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwgZm9sbG93ZWQgYnkg
YSBydW5fY29tbWFuZCgpCkBAIC0yMzIsNyArMjMyLDcgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVK
c29uKF9CYXNlVGVzdENhc2UpOgogICAgICAgICAgICAgIFsnZWNobycsICctLXZlcmJvc2UnLCAn
b3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICd1c2VyLXNjcmlw
dHMvYW5vdGhlci10ZXN0Lmh0bWwnXV0pCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2RlYnVn
KHNlbGYpOgotICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVy
Ym9zZT1UcnVlKQorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwg
dmVyYm9zZT1UcnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSkKICAgICAgICAg
c2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9hbm90aGVy
LXRlc3QuaHRtbCI6IHsiTU9DSyBidWlsZGVyIChEZWJ1ZykiOiBbInR4dCIsICJwbmciXX19KQog
CiAgICAgICAgICMgTm90ZSB0aGF0IHdlIGhhdmUgb25lIHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwg
Zm9sbG93ZWQgYnkgYSBydW5fY29tbWFuZCgpCkBAIC0yOTIsNyArMjkyLDcgQEAgY2xhc3MgVGVz
dFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYudG9v
bC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKICAgICAgICAgc2VsZi5jb21tYW5kLl90
ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsndXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwnOiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJzogc2V0KFsn
cG5nJ10pfQotICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9ucyhvcHRpbWl6
ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCisgICAgICAgIHNlbGYuY29t
bWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCB2ZXJib3NlPUZhbHNlLCBt
b3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCiAKICAgICAg
ICAgIyBGSVhNRTogY2hhbmdlIHRoaXMgdG8gdXNlIHRoZSB0ZXN0LSBwb3J0cy4KICAgICAgICAg
Y2FsbHMgPSBmaWx0ZXIobGFtYmRhIHg6IHggIT0gWydxbWFrZScsICctdiddLCBzZWxmLnRvb2wu
ZXhlY3V0aXZlLmNhbGxzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CmluZGV4IGRlNjk5Y2Y3ZDhmMTZlYjMwZGIyN2E4
OTAyODhlNmE0YjNiZjM4MDYuLjQ0Mjg3MTFjYWFhYTA3NDYxMjFkYTEzOTBmOTdjNjNmZGI3ZGIz
ZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRl
bmluZ3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9n
YXJkZW5pbmdzZXJ2ZXIucHkKQEAgLTI3LDYgKzI3LDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9y
dCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1cmxsaWIKIAogZnJvbSB3ZWJr
aXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LnRvb2wu
c2VydmVycy5yZWZsZWN0aW9uaGFuZGxlciBpbXBvcnQgUmVmbGVjdGlvbkhhbmRsZXIKQEAgLTU4
LDggKzU5LDEyIEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBTZXJ2ZXIoQmFzZUhUVFBTZXJ2ZXIuSFRU
UFNlcnZlcik6CiAgICAgICAgIHNlbGYub3B0aW9ucyA9IGNvbmZpZ1snb3B0aW9ucyddCiAgICAg
ICAgIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKHNlcnZlcl9uYW1l
LCBodHRwZF9wb3J0KSwgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKQogCi0gICAgZGVmIHVy
bChzZWxmKToKLSAgICAgICAgcmV0dXJuICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihHYXJkZW5p
bmdIVFRQUmVxdWVzdEhhbmRsZXIuU1RBVElDX0ZJTEVfRElSRUNUT1JZLCAnZ2FyZGVuLW8tbWF0
aWMuaHRtbCcpCisgICAgZGVmIHVybChzZWxmLCBhcmdzPU5vbmUpOgorICAgICAgICBhcmdzID0g
YXJncyBvciB7fQorICAgICAgICBhcmdfc3RyaW5nID0gJycKKyAgICAgICAgaWYgYXJnczoKKyAg
ICAgICAgICAgIGFyZ19zdHJpbmcgPSAnPycgKyAnJicuam9pbigiJXM9JXMiICUgKGtleSwgdXJs
bGliLnF1b3RlKHZhbHVlKSkgZm9yIChrZXksIHZhbHVlKSBpbiBhcmdzLml0ZW1zKCkpCisgICAg
ICAgIHJldHVybiAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oR2FyZGVuaW5nSFRUUFJlcXVlc3RI
YW5kbGVyLlNUQVRJQ19GSUxFX0RJUkVDVE9SWSwgJ2dhcmRlbi1vLW1hdGljLmh0bWwnICsgYXJn
X3N0cmluZykKIAogCiBjbGFzcyBHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIoUmVmbGVjdGlv
bkhhbmRsZXIpOgpAQCAtMTA2LDYgKzExMSwxMCBAQCBjbGFzcyBHYXJkZW5pbmdIVFRQUmVxdWVz
dEhhbmRsZXIoUmVmbGVjdGlvbkhhbmRsZXIpOgogCiAgICAgZGVmIHJlYmFzZWxpbmVhbGwoc2Vs
Zik6CiAgICAgICAgIGNvbW1hbmQgPSBbJ3JlYmFzZWxpbmUtanNvbiddCisgICAgICAgIGlmIHNl
bGYuc2VydmVyLm9wdGlvbnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAgICAg
ICBjb21tYW5kLmFwcGVuZCgnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcycpCisgICAgICAg
IGlmIG5vdCBzZWxmLnNlcnZlci5vcHRpb25zLm9wdGltaXplOgorICAgICAgICAgICAgY29tbWFu
ZC5hcHBlbmQoJy0tbm8tb3B0aW1pemUnKQogICAgICAgICBpZiBzZWxmLnNlcnZlci5vcHRpb25z
LnZlcmJvc2U6CiAgICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgnLS12ZXJib3NlJykKICAgICAg
ICAganNvbl9pbnB1dCA9IHNlbGYucmVhZF9lbnRpdHlfYm9keSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171564</attachid>
            <date>2012-10-30 18:50:43 -0700</date>
            <delta_ts>2012-10-31 11:54:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-100563-20121030184907.patch</filename>
            <type>text/plain</type>
            <size>25807</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMyODQyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzQ0Nzc5NWE2OWJlOTlmZDZkY2RiYWI4NDk0YTQ1ZmFi
Nzc4OTkzNS4uOTNkNWM3ZWNmNmI0NjRkNzg4MWYwNjc3MmNiNGM3NjRiYjEwNWUzYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5
IEBACiAyMDEyLTEwLTMwICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBzdXBwb3J0IGdhcmRlbmluZyBhIHNpbmdsZSBw
b3J0IGFuZCBzcGVjaWZ5aW5nIGhvdyB0byBkZWFsIHdpdGggb3ZlcndyaXR0ZW4gYmFzZWxpbmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgZ2FyZGVuLW8tbWF0aWMgbW9yZSB1c2Vm
dWwgZm9yCisgICAgICAgIGJyaW5naW5nIHVwIGEgc2luZ2xlIG5ldyBwb3J0IGluIHR3byB3YXlz
LiBUaGUgZ29hbCBpcyB0byBmdWxseQorICAgICAgICBvYnNvbGV0ZSB3ZWJraXQtcGF0Y2ggcmVi
YXNlbGluZS1zZXJ2ZXIuCisgICAgICAgIAorICAgICAgICBGaXJzdCwgaXQgYWRkcyBzdXBwb3J0
IGZvciB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudHMgdG8gZ2FyZGVuLW8tbWF0aWMKKyAgICAgICAg
KHNvIHRoYXQgdGhlIFVJIHdpbGwgZGVmYXVsdCB0byB0aGUgcmlnaHQgY2x1c3RlciBvZiBib3Rz
KSwgYW5kIGlmIHRoZSBwbGF0Zm9ybSBhcmcKKyAgICAgICAgc3BlY2lmaWVzIGEgc2luZ2xlIGJv
dCwgZmlsdGVycyB0aGUgcmVzdWx0cyBkb3duIHRvIGp1c3QgdGhhdCBib3QuCisKKyAgICAgICAg
U2Vjb25kLCBpdCBhZGRzIHN1cHBvcnQgZm9yIC0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMg
YW5kIGNoYW5nZXMKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcyBzZXR0aW5nIGluIGJ1aWxkZXJzLnB5CisgICAgICAgIHNvIHRoYXQg
aXQgaXMgb25seSB1c2VkIGlmIHRoaXMgZmxhZyBpcyBwcm92aWRlZC4KKworICAgICAgICBGdXR1
cmUgcGF0Y2hlcyB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGxvY2FsIGNvcGllcyBvZiB0
aGUgYnVpbGQKKyAgICAgICAgcmVzdWx0cyAocmF0aGVyIHRoYW4gZ29pbmcgdG8gdGhlIGJvdHMp
IGFuZCBvdGhlciBvcHRpbWl6YXRpb25zIHRvIG1ha2UKKyAgICAgICAgaXQgZmFzdGVyIHRvIHJl
dmlldyBsb3RzIG9mIGNoYW5nZXMgb24gYSBzaW5nbGUgYm90LgorCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL2dhcmRlbi1vLW1hdGljLmh0bWw6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29u
ZmlnLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZ2FyZGVub21hdGljLnB5OgorICAgICAgICAoR2FyZGVuT01hdGljKToKKyAgICAg
ICAgKEdhcmRlbk9NYXRpYy5leGVjdXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZS5weToKKyAgICAgICAgKEFic3RyYWN0UmViYXNlbGluaW5n
Q29tbWFuZCk6CisgICAgICAgIChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQuX19pbml0X18p
OgorICAgICAgICAoUmViYXNlbGluZVRlc3QpOgorICAgICAgICAoT3B0aW1pemVCYXNlbGluZXMp
OgorICAgICAgICAoQW5hbHl6ZUJhc2VsaW5lcyk6CisgICAgICAgIChBYnN0cmFjdFBhcmFsbGVs
UmViYXNlbGluZUNvbW1hbmQpOgorICAgICAgICAoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVD
b21tYW5kLl9yZWJhc2VsaW5lX2NvbW1hbmRzKToKKyAgICAgICAgKEFic3RyYWN0UGFyYWxsZWxS
ZWJhc2VsaW5lQ29tbWFuZC5fcmViYXNlbGluZSk6CisgICAgICAgIChSZWJhc2VsaW5lLl9faW5p
dF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdz
ZXJ2ZXIucHk6CisgICAgICAgIChHYXJkZW5pbmdIVFRQU2VydmVyLnVybCk6CisgICAgICAgIChH
YXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIucmViYXNlbGluZWFsbCk6CisKKzIwMTItMTAtMzAg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6
IHJlZmFjdG9yIGNvbW1vbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciAtLXBsYXRmb3JtLCBy
ZWJhc2VsaW5lIGNvbW1hbmRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA4MDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1v
LW1hdGljLmh0bWwgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAppbmRleCA5
MDRlNWVkZDBlMTgyOWRmMzNiYzY0MDU2NWVmN2NkYTQzZTJmNjQzLi4yYzI4ZmJlODM1ZjFiZTM5
MjhmMzBiYjM3YjdhMzQ2NWU3Y2JjZjZmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2Fy
ZGVuLW8tbWF0aWMuaHRtbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRt
bApAQCAtNTAsOCArNTAsOCBAQCBKYW1lcywgYSB3ZWIgZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hh
bSwgVUsuCiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20v
YWpheC9saWJzL2pxdWVyeS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeXVpLzEuOC4x
NS9qcXVlcnktdWkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZp
Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
c2NyaXB0cy9uZXQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvVHJhYy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbAppbmRleCBjZTJlNmNkOWRhYjEwZjRhNGFjZjZhNzhk
NGM3MmVkYTM1OGZmOTEwLi4yY2U2ZTcxZDM5MzMyNTkyOGJkYWZhYjBmNzNhNzc4NTA4ZDRkNmYy
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCisrKyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWwKQEAgLTM5LDggKzM5LDggQEAgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InN0eWxlcy9yZXN1bHRzLmNzcyI+CiAKLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0
cy9iYXNlX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0X3VuaXR0ZXN0cy5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMKaW5kZXggOTJmYTAzYTAwYzE1MzJmMmNj
YmNjZjAzM2EyYWU0ZTE1YzFkMGJlMi4uODM0OGI3MDU2OWE3YzA2ZDM4ZmY2YzRmNjgxN2E2MzA5
M2VhYTY3YyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzCisr
KyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5qcwpAQCAtNTMsNiArNTMsOSBAQCBj
b25maWcua1BsYXRmb3JtcyA9IHsKICAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25l
bnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGROdW1iZXIgKyAnKScpOwogICAgICAgICB9
LAogICAgICAgICBidWlsZGVyQXBwbGllczogZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKKyAgICAg
ICAgICAgIGlmIChjb25maWcuY3VycmVudEJ1aWxkZXIpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGJ1aWxkZXJOYW1lID09IGNvbmZpZy5jdXJyZW50QnVpbGRlcjsKKyAgICAgICAgICAgIAogICAg
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ0FwcGxlJykgIT0gLTE7CiAgICAg
ICAgIH0sCiAgICAgfSwKQEAgLTg1LDYgKzg4LDkgQEAgY29uZmlnLmtQbGF0Zm9ybXMgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gYnVpbGROdW1iZXI7CiAgICAgICAgIH0sCiAgICAgICAgIGJ1aWxk
ZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgaWYgKGNvbmZp
Zy5jdXJyZW50QnVpbGRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUgPT0g
Y29uZmlnLmN1cnJlbnRCdWlsZGVyOworICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBGSVhN
RTogU2hvdWxkIGdhcmRlbi1vLW1hdGljIHNob3cgdGhlc2U/IEkgY2FuIGltYWdpbmUgc2hvd2lu
ZyB0aGUgZGVwcyBib3RzIGJlaW5nIHVzZWZ1bCBhdCBsZWFzdCBzbwogICAgICAgICAgICAgLy8g
dGhhdCB0aGUgZ2FyZGVuZXIgb25seSBuZWVkIHRvIGxvb2sgYXQgZ2FyZGVuLW8tbWF0aWMgYW5k
IG5ldmVyIGF0IHRoZSB3YXRlcmZhbGwuIE5vdCByZWFsbHkgc3VyZSB3aG8KICAgICAgICAgICAg
IC8vIHdhdGNoZXMgdGhlIEdQVSBib3RzLgpAQCAtMTE2LDYgKzEyMiw5IEBAIGNvbmZpZy5rUGxh
dGZvcm1zID0gewogICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCgncicgKyBy
ZXZpc2lvbiArICcgKCcgKyBidWlsZE51bWJlciArICcpJyk7CiAgICAgICAgIH0sCiAgICAgICAg
IGJ1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICAgICAgaWYg
KGNvbmZpZy5jdXJyZW50QnVpbGRlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYnVpbGRlck5h
bWUgPT0gY29uZmlnLmN1cnJlbnRCdWlsZGVyOworICAgICAgICAgICAgCiAgICAgICAgICAgICBy
ZXR1cm4gYnVpbGRlck5hbWUuaW5kZXhPZignR1RLJykgIT0gLTE7CiAgICAgICAgIH0sCiAgICAg
fSwKQEAgLTEzNyw2ICsxNDYsOSBAQCBjb25maWcua1BsYXRmb3JtcyA9IHsKICAgICAgICAgICAg
IHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGRO
dW1iZXIgKyAnKScpOwogICAgICAgICB9LAogICAgICAgICBidWlsZGVyQXBwbGllczogZnVuY3Rp
b24oYnVpbGRlck5hbWUpIHsKKyAgICAgICAgICAgIGlmIChjb25maWcuY3VycmVudEJ1aWxkZXIp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lID09IGNvbmZpZy5jdXJyZW50QnVp
bGRlcjsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4
T2YoJ1F0JykgIT0gLTE7CiAgICAgICAgIH0sCiAgICAgfSwKQEAgLTE1OSwxMCArMTcxLDIzIEBA
IGNvbmZpZy5rUmVsYXRpdmVUaW1lVXBkYXRlRnJlcXVlbmN5ID0gMTAwMCAqIDYwOwogCiBjb25m
aWcua0V4cGVyaW1lbnRhbEZlYXR1cmVzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zZWFyY2go
J2VuYWJsZUV4cGVyaW1lbnRzPTEnKSAhPSAtMTsKIAotY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9
ICdjaHJvbWl1bSc7Citjb25maWcuY3VycmVudFBsYXRmb3JtID0gYmFzZS5nZXRVUkxQYXJhbWV0
ZXIoJ3BsYXRmb3JtJykgfHwgJ2Nocm9taXVtJzsKIAotY29uZmlnLnNldFBsYXRmb3JtID0gZnVu
Y3Rpb24ocGxhdGZvcm0pCi17CisvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBhIHdheSB0byByZXN0
cmljdCB0aGUgcmVzdWx0cyB0byBhIHN1YnNldCBvZiB0aGUgYnVpbGRlcnMKKy8vIChvciBtYXli
ZSBqdXN0IGEgc2luZ2xlIGJ1aWxkZXIpIGluIHRoZSBVSSBhcyB3ZWxsIGFzIHZpYSBhbiBVUkwg
cGFyYW1ldGVyLgorY29uZmlnLmN1cnJlbnRCdWlsZGVyID0gYmFzZS5nZXRVUkxQYXJhbWV0ZXIo
J2J1aWxkZXInKTsKKworY29uZmlnLmN1cnJlbnRCdWlsZGVycyA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBjdXJyZW50X2J1aWxkZXJzID0ge307CisgICAgaWYgKGNvbmZpZy5jdXJyZW50QnVpbGRl
cikgeworICAgICAgICBjdXJyZW50X2J1aWxkZXJzW2NvbmZpZy5jdXJyZW50QnVpbGRlcl0gPSBj
b25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5idWlsZGVyc1tjb25maWcu
Y3VycmVudEJ1aWxkZXJdOworICAgICAgICByZXR1cm4gY3VycmVudF9idWlsZGVyczsKKyAgICB9
IGVsc2UgeworICAgICAgICByZXR1cm4gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQ
bGF0Zm9ybV0uYnVpbGRlcnM7CisgICAgfQorfTsKKworY29uZmlnLnNldFBsYXRmb3JtID0gZnVu
Y3Rpb24ocGxhdGZvcm0pIHsKICAgICBpZiAoIXRoaXMua1BsYXRmb3Jtc1twbGF0Zm9ybV0pIHsK
ICAgICAgICAgd2luZG93LmNvbnNvbGUubG9nKHBsYXRmb3JtICsgJyBpcyBub3QgYSByZWNvZ25p
emVkIHBsYXRmb3JtJyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL2dhcmRlbi1vLW1hdGljLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
Z2FyZGVuLW8tbWF0aWMuanMKaW5kZXggZGFiMmI4MDJkODM5YTExZGM0NDZhZGM5ODIwMTdjNTRj
M2ExNTNhZi4uZWJkNGQ1ZDMyMzMzODFhYWRhMWY3MzhlYzBhZDJjZDlmYjBjMWFmZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMKKysrIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMKQEAgLTc3LDcgKzc3LDcgQEAg
ZnVuY3Rpb24gdXBkYXRlKCkKICAgICAgICAgICAgIHVwZGF0ZVBhcnR5VGltZSgpOwogICAgICAg
ICAgICAgZ191bmV4cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyLnB1cmdlKCk7CiAKLSAgICAgICAg
ICAgIE9iamVjdC5rZXlzKGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1d
LmJ1aWxkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7CisgICAgICAgICAgICBP
YmplY3Qua2V5cyhjb25maWcuY3VycmVudEJ1aWxkZXJzKCkpLmZvckVhY2goZnVuY3Rpb24oYnVp
bGRlck5hbWUpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1
aWxkZXJbYnVpbGRlck5hbWVdKQogICAgICAgICAgICAgICAgICAgICBnX2luZm8uYWRkKG5ldyB1
aS5ub3RpZmljYXRpb25zLkluZm8oJ0NvdWxkIG5vdCBmaW5kIHRlc3QgcmVzdWx0cyBmb3IgJyAr
IGJ1aWxkZXJOYW1lICsgJyBpbiB0aGUgbGFzdCAnICsgY29uZmlnLmtCdWlsZE51bWJlckxpbWl0
ICsgJyBydW5zLicpKTsgICAgICAgICAgICAKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbW9kZWwuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9tb2RlbC5qcwppbmRleCA0NzZlOTRlMWQ5NDkxZWEwZDQ0ZTc5NTRhYTNmYWU5ZmRkNDAyMTRh
Li4zYzNmODUyNDM1YTdjMzViYmRlMDQzMzE0Mjk0NGU2YmU5YTJjZjA5IDEwMDY0NAotLS0gYS9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbC5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9tb2RlbC5qcwpAQCAtMTU4LDcgKzE1OCw3IEBAIG1vZGVsLmxhdGVzdFJldmlzaW9uV2l0
aE5vQnVpbGRlcnNJbkZsaWdodCA9IGZ1bmN0aW9uKCkKIAogbW9kZWwudXBkYXRlUmVzdWx0c0J5
QnVpbGRlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKQogewotICAgIHZhciBwbGF0Zm9ybUJ1aWxkZXJz
ID0gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnM7Cisg
ICAgdmFyIHBsYXRmb3JtQnVpbGRlcnMgPSBjb25maWcuY3VycmVudEJ1aWxkZXJzKCk7CiAgICAg
cmVzdWx0cy5mZXRjaFJlc3VsdHNCeUJ1aWxkZXIoT2JqZWN0LmtleXMocGxhdGZvcm1CdWlsZGVy
cyksIGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpIHsKICAgICAgICAgbW9kZWwuc3RhdGUucmVz
dWx0c0J5QnVpbGRlciA9IHJlc3VsdHNCeUJ1aWxkZXI7CiAgICAgICAgIGNhbGxiYWNrKCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMgYi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMKaW5kZXggNWU3MzJjZjI1NzkzZjA4
NzIyZjE5ZTE4MmYxMTA3NzQ2Njg1YTY3ZC4uZWIzYzJhMmExMjZiNGQ1MmE4YjE1ZjAwY2M5MTA5
ZjFmYTk5Mzg4YSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS1t
b2NrLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3N1bW1hcnktbW9jay5qcwpAQCAt
OTYsNyArOTYsNyBAQCB2YXIgdGVzdE5hbWVzID0gbmV3IEN5Y2xlcihbCiAgICAgJ3RhYmxlcy9t
b3ppbGxhL2J1Z3MvYnVnNTI1MDUuaHRtbCcKIF0pOwogCi12YXIgYnVpbGRlcnMgPSBuZXcgQ3lj
bGVyKE9iamVjdC5rZXlzKGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1d
LmJ1aWxkZXJzKSwgMyk7Cit2YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNv
bmZpZy5jdXJyZW50QnVpbGRlcnMoKSksIDMpOwogCiB2YXIgZXhwZWN0YXRpb25zID0gbmV3IEN5
Y2xlcihbCiAgICAgJ1RFWFQnLApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
dWkvZmFpbHVyZXMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5qcwpp
bmRleCA3N2VjZGEzYzJhOWVlMjBjZGU1NmZhZGY1NDdlOWUxMTg4MTUwNWNmLi5iNDk0OGIyOGMz
NzM2ZjUxMzFkZDdmM2Q5NTQzYWE0MzkxNDIwODRkIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91
aS9mYWlsdXJlcy5qcwpAQCAtMzMsNyArMzMsNyBAQCB2YXIga0J1aWxkaW5nUmVzdWx0ID0gJ0JV
SUxESU5HJzsKIHVpLmZhaWx1cmVzLkJ1aWxkZXIgPSBiYXNlLmV4dGVuZHMoJ2EnLCB7CiAgICAg
aW5pdDogZnVuY3Rpb24oYnVpbGRlck5hbWUsIGZhaWx1cmVzKQogICAgIHsKLSAgICAgICAgdmFy
IHBsYXRmb3JtQnVpbGRlcnMgPSBjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRm
b3JtXS5idWlsZGVyczsKKyAgICAgICAgdmFyIHBsYXRmb3JtQnVpbGRlcnMgPSBjb25maWcuY3Vy
cmVudEJ1aWxkZXJzKCk7CiAgICAgICAgIHZhciBjb25maWd1cmF0aW9uID0gcGxhdGZvcm1CdWls
ZGVyc1tidWlsZGVyTmFtZV07CiAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7CiAgICAgICAg
ICAgICBpZiAoY29uZmlndXJhdGlvbi52ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVycy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYnVpbGRlcnMucHkKaW5kZXggYzJhYjhkMjEyYzM0
Y2ZlYjhkMTI3N2Q3OGEyMmIwNDIxN2MyMTFkNC4uMTU1YWM4OThiOTQ1NTA4ZDRjYWJkM2I2NWMz
YzVjMGJiZGE0ZGVmNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2J1aWxkZXJzLnB5CkBAIC01OCw3ICs1OCw4IEBAIF9leGFjdF9tYXRjaGVz
ID0gewogICAgICJXZWJLaXQgTWFjMTAuNiAoZGJnKSI6IHsicG9ydF9uYW1lIjogImNocm9taXVt
LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJzIjogc2V0KFsic25vd2xlb3BhcmQiLCAiZGVi
dWciXSl9LAogICAgICJXZWJLaXQgTWFjMTAuNyI6IHsicG9ydF9uYW1lIjogImNocm9taXVtLW1h
Yy1saW9uIiwgInNwZWNpZmllcnMiOiBzZXQoWyJsaW9uIiwgInJlbGVhc2UiXSl9LAogICAgICJX
ZWJLaXQgTWFjMTAuNyAoZGJnKSI6IHsicG9ydF9uYW1lIjogImNocm9taXVtLW1hYy1saW9uIiwg
InNwZWNpZmllcnMiOiBzZXQoWyJsaW9uIiwgImRlYnVnIl0pfSwKLSAgICAiV2ViS2l0IE1hYzEw
LjgiOiB7InBvcnRfbmFtZSI6ICJjaHJvbWl1bS1tYWMtbW91bnRhaW5saW9uIiwgInNwZWNpZmll
cnMiOiBzZXQoWyJtb3VudGFpbmxpb24iLCAicmVsZWFzZSJdKX0sCisgICAgIldlYktpdCBNYWMx
MC44IjogeyJwb3J0X25hbWUiOiAiY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbiIsICJzcGVjaWZp
ZXJzIjogc2V0KFsibW91bnRhaW5saW9uIiwgInJlbGVhc2UiXSksCisgICAgICAgICAgICAgICAg
ICAgICAgICJtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byI6IFsiY2hyb21pdW0tbWFjLWxp
b24iXX0sCiAKICAgICAjIFRoZXNlIGJ1aWxkZXJzIGFyZSBvbiBidWlsZC53ZWJraXQub3JnLgog
ICAgICJBcHBsZSBNb3VudGFpbkxpb24gUmVsZWFzZSBXSzEgKFRlc3RzKSI6IHsicG9ydF9uYW1l
IjogIm1hYy1tb3VudGFpbmxpb24iLCAic3BlY2lmaWVycyI6IHNldChbIm1vdW50YWlubGlvbiJd
KSwgInJlYmFzZWxpbmVfb3ZlcnJpZGVfZGlyIjogIm1hYyJ9LApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKaW5kZXggNjZiOWZh
ZWY4YjI2NjAzMDNlNzUzMjg5NTFmMTZjOGM1YjNiMGQ1YS4uMTMwMDhhY2VlZDQzNTllYzQ0NTY1
YzgwNTFiMTdiM2ZjYTNlMGMyZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvZ2FyZGVub21hdGljLnB5CkBAIC0yMiwyMCArMjIsMzUgQEAKICMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1h
bmR0b29sIGltcG9ydCBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZAorZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMucG9ydCBpbXBvcnQgYnVpbGRlcnMKK2Zyb20gd2Via2l0cHkudG9vbC5jb21t
YW5kcy5yZWJhc2VsaW5lIGltcG9ydCBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQKIGZyb20g
d2Via2l0cHkudG9vbC5zZXJ2ZXJzLmdhcmRlbmluZ3NlcnZlciBpbXBvcnQgR2FyZGVuaW5nSFRU
UFNlcnZlcgogCiAKLWNsYXNzIEdhcmRlbk9NYXRpYyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFu
ZCk6CitjbGFzcyBHYXJkZW5PTWF0aWMoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAg
ICBuYW1lID0gImdhcmRlbi1vLW1hdGljIgotICAgIGhlbHBfdGV4dCA9ICJFeHBlcmltZW50YWwg
Y29tbWFuZCBmb3IgZ2FyZGVuaW5nIHRoZSBXZWJLaXQgdHJlZS4iCisgICAgaGVscF90ZXh0ID0g
IkNvbW1hbmQgZm9yIGdhcmRlbmluZyB0aGUgV2ViS2l0IHRyZWUuIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc3VwZXIoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21t
YW5kLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPShzZWxmLnBsYXRmb3JtX29wdGlvbnMgKyBbCisg
ICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiwKKyAgICAg
ICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAorICAgICAgICAgICAgXSkpCiAKICAgICBk
ZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgcHJpbnQgIlRo
aXMgY29tbWFuZCBydW5zIGEgbG9jYWwgSFRUUCBzZXJ2ZXIgdGhhdCBjaGFuZ2VzIHlvdXIgd29y
a2luZyBjb3B5IgogICAgICAgICBwcmludCAiYmFzZWQgb24gdGhlIGFjdGlvbnMgeW91IHRha2Ug
aW4gdGhlIHdlYi1iYXNlZCBVSS4iCiAKKyAgICAgICAgYXJncyA9IHt9CisgICAgICAgIGlmIG9w
dGlvbnMucGxhdGZvcm06CisgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGFzc3VtZXMgdGhhdCB0
aGUgaW1wbGVtZW50YXRpb24gaXMgdGhlIGZpcnN0IHBhcnQgb2Ygb3B0aW9ucy5wbGF0Zm9ybS4K
KyAgICAgICAgICAgIGFyZ3NbJ3BsYXRmb3JtJ10gPSBvcHRpb25zLnBsYXRmb3JtLnNwbGl0KCct
JylbMF0KKyAgICAgICAgICAgIGJ1aWxkZXIgPSBidWlsZGVycy5idWlsZGVyX25hbWVfZm9yX3Bv
cnRfbmFtZShvcHRpb25zLnBsYXRmb3JtKQorICAgICAgICAgICAgaWYgYnVpbGRlcjoKKyAgICAg
ICAgICAgICAgICBhcmdzWydidWlsZGVyJ10gPSBidWlsZGVyCisKICAgICAgICAgaHR0cGQgPSBH
YXJkZW5pbmdIVFRQU2VydmVyKGh0dHBkX3BvcnQ9ODEyNywgY29uZmlnPXsndG9vbCc6IHRvb2ws
ICdvcHRpb25zJzogb3B0aW9uc30pCi0gICAgICAgIHNlbGYuX3Rvb2wudXNlci5vcGVuX3VybCho
dHRwZC51cmwoKSkKKyAgICAgICAgc2VsZi5fdG9vbC51c2VyLm9wZW5fdXJsKGh0dHBkLnVybChh
cmdzKSkKIAogICAgICAgICBwcmludCAiTG9jYWwgSFRUUCBzZXJ2ZXIgc3RhcnRlZC4iCiAgICAg
ICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmUucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weQppbmRleCA3MTA2ODUzY2NhNGNjYWJkODI2MWI2
NTRiMDFkOTY1NTZjYjM3NDcwLi5hMWQ0YmFlNzc5YmE5NmJiNWIzMGNiODI3OGM4Y2IwZTRhZDVh
MTA5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZS5weQpAQCAtMjc0LDcgKzI3NCw3IEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJh
c2VsaW5lQ29tbWFuZChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgICAgICAgICAg
ICAgIGJ1aWxkZXJzX3RvX2ZhbGxiYWNrX3BhdGhzW2J1aWxkZXJdID0gZmFsbGJhY2tfcGF0aAog
ICAgICAgICByZXR1cm4gYnVpbGRlcnNfdG9fZmFsbGJhY2tfcGF0aHMua2V5cygpCiAKLSAgICBk
ZWYgX3JlYmFzZWxpbmVfY29tbWFuZHMoc2VsZiwgdGVzdF9saXN0LCB2ZXJib3NlPUZhbHNlKToK
KyAgICBkZWYgX3JlYmFzZWxpbmVfY29tbWFuZHMoc2VsZiwgdGVzdF9saXN0LCBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSwgdmVyYm9zZT1GYWxzZSk6CiAKICAgICAgICAgcGF0aF90
b193ZWJraXRfcGF0Y2ggPSBzZWxmLl90b29sLnBhdGgoKQogICAgICAgICBjd2QgPSBzZWxmLl90
b29sLnNjbSgpLmNoZWNrb3V0X3Jvb3QKQEAgLTI4Myw5ICsyODMsMTAgQEAgY2xhc3MgQWJzdHJh
Y3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFuZCk6
CiAgICAgICAgICAgICBmb3IgYnVpbGRlciBpbiBzZWxmLl9idWlsZGVyc190b19mZXRjaF9mcm9t
KHRlc3RfbGlzdFt0ZXN0XSk6CiAgICAgICAgICAgICAgICAgc3VmZml4ZXMgPSAnLCcuam9pbih0
ZXN0X2xpc3RbdGVzdF1bYnVpbGRlcl0pCiAgICAgICAgICAgICAgICAgY21kX2xpbmUgPSBbcGF0
aF90b193ZWJraXRfcGF0Y2gsICdyZWJhc2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhl
cycsIHN1ZmZpeGVzLCAnLS1idWlsZGVyJywgYnVpbGRlciwgJy0tdGVzdCcsIHRlc3RdCi0gICAg
ICAgICAgICAgICAgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8gPSBidWlsZGVycy5tb3Zl
X292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byhidWlsZGVyKQotICAgICAgICAgICAgICAgIGZvciBw
bGF0Zm9ybSBpbiBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190bzoKLSAgICAgICAgICAgICAg
ICAgICAgY21kX2xpbmUuZXh0ZW5kKFsnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10bycs
IHBsYXRmb3JtXSkKKyAgICAgICAgICAgICAgICBpZiBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5l
czoKKyAgICAgICAgICAgICAgICAgICAgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8gPSBi
dWlsZGVycy5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc190byhidWlsZGVyKQorICAgICAgICAg
ICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG86
CisgICAgICAgICAgICAgICAgICAgICAgICBjbWRfbGluZS5leHRlbmQoWyctLW1vdmUtb3Zlcndy
aXR0ZW4tYmFzZWxpbmVzLXRvJywgcGxhdGZvcm1dKQogICAgICAgICAgICAgICAgIGlmIHZlcmJv
c2U6CiAgICAgICAgICAgICAgICAgICAgIGNtZF9saW5lLmFwcGVuZCgnLS12ZXJib3NlJykKICAg
ICAgICAgICAgICAgICBjb21tYW5kcy5hcHBlbmQodHVwbGUoW2NtZF9saW5lLCBjd2RdKSkKQEAg
LTMxNSw2ICszMTYsNyBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQo
QWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgIGFsbF9zdWZmaXhlcyA9
IHNldCgpCiAgICAgICAgICAgICBmb3IgYnVpbGRlciBpbiBzZWxmLl9idWlsZGVyc190b19mZXRj
aF9mcm9tKHRlc3RfbGlzdFt0ZXN0XSk6CiAgICAgICAgICAgICAgICAgYWxsX3N1ZmZpeGVzLnVw
ZGF0ZSh0ZXN0X2xpc3RbdGVzdF1bYnVpbGRlcl0pCisgICAgICAgICAgICAjIEZJWE1FOiBXZSBz
aG91bGQgcHJvcGFnYXRlIHRoZSBwbGF0Zm9ybSBvcHRpb25zIGFzIHdlbGwuCiAgICAgICAgICAg
ICBzZWxmLl9ydW5fd2Via2l0X3BhdGNoKFsnb3B0aW1pemUtYmFzZWxpbmVzJywgJy0tc3VmZml4
ZXMnLCAnLCcuam9pbihhbGxfc3VmZml4ZXMpLCB0ZXN0XSwgdmVyYm9zZSkKIAogICAgIGRlZiBf
cmViYXNlbGluZShzZWxmLCBvcHRpb25zLCB0ZXN0X2xpc3QpOgpAQCAtMzIzLDcgKzMyNSw3IEBA
IGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZChBYnN0cmFjdFJlYmFzZWxp
bmluZ0NvbW1hbmQpOgogICAgICAgICAgICAgZm9yIGJ1aWxkZXIsIHN1ZmZpeGVzIGluIHNvcnRl
ZChidWlsZGVycy5pdGVtcygpKToKICAgICAgICAgICAgICAgICBfbG9nLmRlYnVnKCIgICVzOiAl
cyIgJSAoYnVpbGRlciwgIiwiLmpvaW4oc3VmZml4ZXMpKSkKIAotICAgICAgICBjb21tYW5kcyA9
IHNlbGYuX3JlYmFzZWxpbmVfY29tbWFuZHModGVzdF9saXN0LCBvcHRpb25zLnZlcmJvc2UpCisg
ICAgICAgIGNvbW1hbmRzID0gc2VsZi5fcmViYXNlbGluZV9jb21tYW5kcyh0ZXN0X2xpc3QsIG9w
dGlvbnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXMsIG9wdGlvbnMudmVyYm9zZSkKICAgICAg
ICAgY29tbWFuZF9yZXN1bHRzID0gc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2luX3BhcmFsbGVs
KGNvbW1hbmRzKQogCiAgICAgICAgIGxvZ19vdXRwdXQgPSAnXG4nLmpvaW4ocmVzdWx0WzJdIGZv
ciByZXN1bHQgaW4gY29tbWFuZF9yZXN1bHRzKS5yZXBsYWNlKCdcblxuJywgJ1xuJykKQEAgLTM0
Myw4ICszNDUsMTEgQEAgY2xhc3MgUmViYXNlbGluZUpzb24oQWJzdHJhY3RQYXJhbGxlbFJlYmFz
ZWxpbmVDb21tYW5kKToKICAgICBuYW1lID0gInJlYmFzZWxpbmUtanNvbiIKICAgICBoZWxwX3Rl
eHQgPSAiUmViYXNlbGluZSBiYXNlZCBvZmYgSlNPTiBwYXNzZWQgdG8gc3RkaW4uIEludGVuZGVk
IHRvIG9ubHkgYmUgY2FsbGVkIGZyb20gb3RoZXIgc2NyaXB0cy4iCiAKLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdXBlcihSZWJhc2VsaW5lSnNvbiwgc2VsZikuX19p
bml0X18ob3B0aW9ucz1bc2VsZi5ub19vcHRpbWl6ZV9vcHRpb25dKQorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCk6CisgICAgICAgIHJldHVybiBzdXBlcihSZWJhc2VsaW5lSnNvbiwgc2VsZikuX19p
bml0X18ob3B0aW9ucz1bCisgICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxp
bmVzX29wdGlvbiwKKyAgICAgICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAorICAgICAg
ICAgICAgXSkKIAogICAgIGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgog
ICAgICAgICBzZWxmLl9yZWJhc2VsaW5lKG9wdGlvbnMsIGpzb24ubG9hZHMoc3lzLnN0ZGluLnJl
YWQoKSkpCkBAIC0zNTUsNyArMzYwLDExIEBAIGNsYXNzIFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMo
QWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKToKICAgICBoZWxwX3RleHQgPSAiUmVi
YXNlbGluZXMgdGhlIHRlc3RzIGluZGljYXRlZCBpbiBUZXN0RXhwZWN0YXRpb25zLiIKIAogICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN1cGVyKFJlYmFzZWxpbmVFeHBl
Y3RhdGlvbnMsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9W3NlbGYubm9fb3B0aW1pemVfb3B0aW9u
XSkKKyAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIGFsc28gc3VwcG9ydCBwbGF0Zm9ybV9vcHRp
b25zIGhlcmUgc28gdGhhdCB3ZSBvbmx5IGxvb2sgYXQgc29tZSBUZXN0RXhwZWN0YXRpb25zIGZp
bGVzIGluc3RlYWQgb2YgYWxsIG9mIHRoZW0uCisgICAgICAgIHJldHVybiBzdXBlcihSZWJhc2Vs
aW5lRXhwZWN0YXRpb25zLCBzZWxmKS5fX2luaXRfXyhvcHRpb25zPVsKKyAgICAgICAgICAgIHNl
bGYubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfb3B0aW9uLAorICAgICAgICAgICAgc2VsZi5u
b19vcHRpbWl6ZV9vcHRpb24sCisgICAgICAgICAgICBdKQogCiAgICAgZGVmIF91cGRhdGVfZXhw
ZWN0YXRpb25zX2ZpbGVzKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAgIHBvcnQgPSBzZWxmLl90
b29sLnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lKQpAQCAtNDA4LDYgKzQxNyw3IEBAIGNsYXNz
IFJlYmFzZWxpbmUoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKToKIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc3VwZXIoUmViYXNlbGluZSwgc2VsZikuX19pbml0
X18ob3B0aW9ucz1bCisgICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVz
X29wdGlvbiwKICAgICAgICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAogICAgICAgICAg
ICAgIyBGSVhNRTogc2hvdWxkIHdlIHN1cHBvcnQgdGhlIHBsYXRmb3JtIG9wdGlvbnMgaW4gYWRk
aXRpb24gdG8gKG9yIGluc3RlYWQgb2YpIC0tYnVpbGRlcnM/CiAgICAgICAgICAgICBzZWxmLnN1
ZmZpeGVzX29wdGlvbiwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKaW5kZXggNTkzYTc4MzNlYWQ3ODM3
YzlkYmE3MmEyNjg3MGEwMzM0MmExZmVjOC4uODY1MTgzNDhjNDdhODQyYTM5M2ZhN2UzYmU1ZmQ2
YmY4YjkwODgwNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKQEAgLTIxNCw4ICsyMTQsOSBAQCBj
bGFzcyBUZXN0UmViYXNlbGluZUpzb24oX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYudG9v
bC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAgICAgICAgIHNlbGYub2xkX2V4YWN0X21h
dGNoZXMgPSBidWlsZGVycy5fZXhhY3RfbWF0Y2hlcwogICAgICAgICBidWlsZGVycy5fZXhhY3Rf
bWF0Y2hlcyA9IHsKLSAgICAgICAgICAgICJNT0NLIGJ1aWxkZXIiOiB7InBvcnRfbmFtZSI6ICJ0
ZXN0LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciJdKX0s
Ci0gICAgICAgICAgICAiTU9DSyBidWlsZGVyIChEZWJ1ZykiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0
LW1hYy1sZW9wYXJkIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciIsICJkZWJ1
ZyJdKX0sCisgICAgICAgICAgICAiTU9DSyBidWlsZGVyIjogeyJwb3J0X25hbWUiOiAidGVzdC1t
YWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIl0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNf
dG8iOiBbInRlc3QtbWFjLWxlb3BhcmQiXX0sCisgICAgICAgICAgICAiTU9DSyBidWlsZGVyIChE
ZWJ1ZykiOiB7InBvcnRfbmFtZSI6ICJ0ZXN0LW1hYy1zbm93bGVvcGFyZCIsICJzcGVjaWZpZXJz
Ijogc2V0KFsibW9jay1zcGVjaWZpZXIiLCAiZGVidWciXSl9LAogICAgICAgICB9CiAKICAgICBk
ZWYgdGVhckRvd24oc2VsZik6CkBAIC0yMjMsNyArMjI0LDcgQEAgY2xhc3MgVGVzdFJlYmFzZWxp
bmVKc29uKF9CYXNlVGVzdENhc2UpOgogICAgICAgICBzdXBlcihUZXN0UmViYXNlbGluZUpzb24s
IHNlbGYpLnRlYXJEb3duKCkKIAogICAgIGRlZiB0ZXN0X3JlYmFzZWxpbmVfYWxsKHNlbGYpOgot
ICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1UcnVl
KQorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlvbnMob3B0aW1pemU9VHJ1ZSwgdmVyYm9zZT1U
cnVlLCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSkKICAgICAgICAgc2VsZi5jb21t
YW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCI6IHsiTU9DSyBidWlsZGVyIjogWyJ0eHQiLCAicG5nIl19fSkKIAogICAgICAgICAjIE5vdGUg
dGhhdCB3ZSBoYXZlIG9uZSBydW5faW5fcGFyYWxsZWwoKSBjYWxsIGZvbGxvd2VkIGJ5IGEgcnVu
X2NvbW1hbmQoKQpAQCAtMjMyLDcgKzIzMyw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihf
QmFzZVRlc3RDYXNlKToKICAgICAgICAgICAgICBbJ2VjaG8nLCAnLS12ZXJib3NlJywgJ29wdGlt
aXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAndXNlci1zY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ11dKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9kZWJ1ZyhzZWxm
KToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJvc2U9
VHJ1ZSkKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJv
c2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UpCiAgICAgICAgIHNlbGYu
Y29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciAoRGVidWcpIjogWyJ0eHQiLCAicG5nIl19fSkKIAogICAg
ICAgICAjIE5vdGUgdGhhdCB3ZSBoYXZlIG9uZSBydW5faW5fcGFyYWxsZWwoKSBjYWxsIGZvbGxv
d2VkIGJ5IGEgcnVuX2NvbW1hbmQoKQpAQCAtMjQwLDYgKzI0MSwyMyBAQCBjbGFzcyBUZXN0UmVi
YXNlbGluZUpzb24oX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgICAgICBbW1snZWNobycsICdyZWJh
c2VsaW5lLXRlc3QtaW50ZXJuYWwnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJy0tYnVpbGRl
cicsICdNT0NLIGJ1aWxkZXIgKERlYnVnKScsICctLXRlc3QnLCAndXNlci1zY3JpcHRzL2Fub3Ro
ZXItdGVzdC5odG1sJywgJy0tdmVyYm9zZSddXSwKICAgICAgICAgICAgICBbJ2VjaG8nLCAnLS12
ZXJib3NlJywgJ29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAn
dXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJ11dKQogCisgICAgZGVmIHRlc3RfbW92ZV9v
dmVyd3JpdHRlbihzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRpb25zKG9wdGltaXpl
PVRydWUsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9VHJ1ZSkKKyAg
ICAgICAgc2VsZi5jb21tYW5kLl9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9h
bm90aGVyLXRlc3QuaHRtbCI6IHsiTU9DSyBidWlsZGVyIjogWyJ0eHQiLCAicG5nIl19fSkKKwor
ICAgICAgICAjIE5vdGUgdGhhdCB3ZSBoYXZlIG9uZSBydW5faW5fcGFyYWxsZWwoKSBjYWxsIGZv
bGxvd2VkIGJ5IGEgcnVuX2NvbW1hbmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxm
LnRvb2wuZXhlY3V0aXZlLmNhbGxzLAorICAgICAgICAgICAgW1tbJ2VjaG8nLCAncmViYXNlbGlu
ZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAndHh0LHBuZycsICctLWJ1aWxkZXInLCAn
TU9DSyBidWlsZGVyJywgJy0tdGVzdCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwn
LCAnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10bycsICd0ZXN0LW1hYy1sZW9wYXJkJywg
Jy0tdmVyYm9zZSddXSwKKyAgICAgICAgICAgICBbJ2VjaG8nLCAnLS12ZXJib3NlJywgJ29wdGlt
aXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAndXNlci1zY3JpcHRzL2Fu
b3RoZXItdGVzdC5odG1sJ11dKQorCisgICAgZGVmIHRlc3Rfbm9fb3B0aW1pemUoc2VsZik6Cisg
ICAgICAgIG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1UcnVl
LCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSkKKyAgICAgICAgc2VsZi5jb21tYW5k
Ll9yZWJhc2VsaW5lKG9wdGlvbnMsICB7InVzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6
IHsiTU9DSyBidWlsZGVyIChEZWJ1ZykiOiBbInR4dCIsICJwbmciXX19KQorCisgICAgICAgICMg
Tm90ZSB0aGF0IHdlIGhhdmUgb25seSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbAorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzLAorICAgICAgICAg
ICAgW1tbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCAn
dHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyIChEZWJ1ZyknLCAnLS10ZXN0Jywg
J3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcsICctLXZlcmJvc2UnXV1dKQorCiAKIGNs
YXNzIFRlc3RSZWJhc2VsaW5lKF9CYXNlVGVzdENhc2UpOgogICAgICMgVGhpcyBjb21tYW5kIHNo
YXJlcyBtb3N0IG9mIGl0cyBsb2dpYyB3aXRoIFJlYmFzZWxpbmVKc29uLCBzbyB0aGVzZSB0ZXN0
cyBqdXN0IHRlc3Qgd2hhdCBpcyBkaWZmZXJlbnQuCkBAIC0yOTIsNyArMzEwLDcgQEAgY2xhc3Mg
VGVzdFJlYmFzZWxpbmVFeHBlY3RhdGlvbnMoX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYu
dG9vbC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMigpCiAKICAgICAgICAgc2VsZi5jb21tYW5k
Ll90ZXN0c190b19yZWJhc2VsaW5lID0gbGFtYmRhIHBvcnQ6IHsndXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0Lmh0bWwnOiBzZXQoWyd0eHQnXSksICd1c2Vyc2NyaXB0cy9pbWFnZXMuc3ZnJzogc2V0
KFsncG5nJ10pfQotICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9ucyhvcHRp
bWl6ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCisgICAgICAgIHNlbGYu
Y29tbWFuZC5leGVjdXRlKE1vY2tPcHRpb25zKG9wdGltaXplPUZhbHNlLCB2ZXJib3NlPUZhbHNl
LCBtb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lcz1GYWxzZSksIFtdLCBzZWxmLnRvb2wpCiAKICAg
ICAgICAgIyBGSVhNRTogY2hhbmdlIHRoaXMgdG8gdXNlIHRoZSB0ZXN0LSBwb3J0cy4KICAgICAg
ICAgY2FsbHMgPSBmaWx0ZXIobGFtYmRhIHg6IHggIT0gWydxbWFrZScsICctdiddLCBzZWxmLnRv
b2wuZXhlY3V0aXZlLmNhbGxzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CmluZGV4IGRlNjk5Y2Y3ZDhmMTZlYjMwZGIy
N2E4OTAyODhlNmE0YjNiZjM4MDYuLjQ0Mjg3MTFjYWFhYTA3NDYxMjFkYTEzOTBmOTdjNjNmZGI3
ZGIzZGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dh
cmRlbmluZ3NlcnZlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVy
cy9nYXJkZW5pbmdzZXJ2ZXIucHkKQEAgLTI3LDYgKzI3LDcgQEAgaW1wb3J0IGxvZ2dpbmcKIGlt
cG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKK2ltcG9ydCB1cmxsaWIKIAogZnJvbSB3
ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LnRv
b2wuc2VydmVycy5yZWZsZWN0aW9uaGFuZGxlciBpbXBvcnQgUmVmbGVjdGlvbkhhbmRsZXIKQEAg
LTU4LDggKzU5LDEyIEBAIGNsYXNzIEdhcmRlbmluZ0hUVFBTZXJ2ZXIoQmFzZUhUVFBTZXJ2ZXIu
SFRUUFNlcnZlcik6CiAgICAgICAgIHNlbGYub3B0aW9ucyA9IGNvbmZpZ1snb3B0aW9ucyddCiAg
ICAgICAgIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIuX19pbml0X18oc2VsZiwgKHNlcnZlcl9u
YW1lLCBodHRwZF9wb3J0KSwgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKQogCi0gICAgZGVm
IHVybChzZWxmKToKLSAgICAgICAgcmV0dXJuICdmaWxlOi8vJyArIG9zLnBhdGguam9pbihHYXJk
ZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIuU1RBVElDX0ZJTEVfRElSRUNUT1JZLCAnZ2FyZGVuLW8t
bWF0aWMuaHRtbCcpCisgICAgZGVmIHVybChzZWxmLCBhcmdzPU5vbmUpOgorICAgICAgICBhcmdz
ID0gYXJncyBvciB7fQorICAgICAgICBhcmdfc3RyaW5nID0gJycKKyAgICAgICAgaWYgYXJnczoK
KyAgICAgICAgICAgIGFyZ19zdHJpbmcgPSAnPycgKyAnJicuam9pbigiJXM9JXMiICUgKGtleSwg
dXJsbGliLnF1b3RlKHZhbHVlKSkgZm9yIChrZXksIHZhbHVlKSBpbiBhcmdzLml0ZW1zKCkpCisg
ICAgICAgIHJldHVybiAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oR2FyZGVuaW5nSFRUUFJlcXVl
c3RIYW5kbGVyLlNUQVRJQ19GSUxFX0RJUkVDVE9SWSwgJ2dhcmRlbi1vLW1hdGljLmh0bWwnICsg
YXJnX3N0cmluZykKIAogCiBjbGFzcyBHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIoUmVmbGVj
dGlvbkhhbmRsZXIpOgpAQCAtMTA2LDYgKzExMSwxMCBAQCBjbGFzcyBHYXJkZW5pbmdIVFRQUmVx
dWVzdEhhbmRsZXIoUmVmbGVjdGlvbkhhbmRsZXIpOgogCiAgICAgZGVmIHJlYmFzZWxpbmVhbGwo
c2VsZik6CiAgICAgICAgIGNvbW1hbmQgPSBbJ3JlYmFzZWxpbmUtanNvbiddCisgICAgICAgIGlm
IHNlbGYuc2VydmVyLm9wdGlvbnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAg
ICAgICBjb21tYW5kLmFwcGVuZCgnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcycpCisgICAg
ICAgIGlmIG5vdCBzZWxmLnNlcnZlci5vcHRpb25zLm9wdGltaXplOgorICAgICAgICAgICAgY29t
bWFuZC5hcHBlbmQoJy0tbm8tb3B0aW1pemUnKQogICAgICAgICBpZiBzZWxmLnNlcnZlci5vcHRp
b25zLnZlcmJvc2U6CiAgICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgnLS12ZXJib3NlJykKICAg
ICAgICAganNvbl9pbnB1dCA9IHNlbGYucmVhZF9lbnRpdHlfYm9keSgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171697</attachid>
            <date>2012-10-31 11:54:35 -0700</date>
            <delta_ts>2012-10-31 12:32:12 -0700</delta_ts>
            <desc>update w/ review feedback</desc>
            <filename>bug-100563-20121031115258.patch</filename>
            <type>text/plain</type>
            <size>28139</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMDUxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmY3MDhiYTE1ZWM0ZTRkYWQ3MThkZTNmNzJiMDFmNjg2
YzQzMTQzYy4uNTM3ODU4YjYzZjVmYjE4Y2MxNTYxNDkxMWFiNmI1YTY3ZjQ1MzZhYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5
IEBACiAyMDEyLTEwLTMxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIGdhcmRlbi1vLW1hdGljIHNob3VsZCBzdXBwb3J0IGdhcmRlbmluZyBhIHNpbmdsZSBw
b3J0IGFuZCBzcGVjaWZ5aW5nIGhvdyB0byBkZWFsIHdpdGggb3ZlcndyaXR0ZW4gYmFzZWxpbmVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1NjMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIHN0YXJ0cyB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgZ2FyZGVuLW8tbWF0aWMgbW9yZSB1c2Vm
dWwgZm9yCisgICAgICAgIGJyaW5naW5nIHVwIGEgc2luZ2xlIG5ldyBwb3J0IGluIHR3byB3YXlz
LiBUaGUgZ29hbCBpcyB0byBmdWxseQorICAgICAgICBvYnNvbGV0ZSB3ZWJraXQtcGF0Y2ggcmVi
YXNlbGluZS1zZXJ2ZXIuCisgICAgICAgIAorICAgICAgICBGaXJzdCwgaXQgYWRkcyBzdXBwb3J0
IGZvciB0aGUgLS1wbGF0Zm9ybSBhcmd1bWVudHMgdG8gZ2FyZGVuLW8tbWF0aWMKKyAgICAgICAg
KHNvIHRoYXQgdGhlIFVJIHdpbGwgZGVmYXVsdCB0byB0aGUgcmlnaHQgY2x1c3RlciBvZiBib3Rz
KSwgYW5kIGlmIHRoZSBwbGF0Zm9ybSBhcmcKKyAgICAgICAgc3BlY2lmaWVzIGEgc2luZ2xlIGJv
dCwgZmlsdGVycyB0aGUgcmVzdWx0cyBkb3duIHRvIGp1c3QgdGhhdCBib3QuCisKKyAgICAgICAg
U2Vjb25kLCBpdCBhZGRzIHN1cHBvcnQgZm9yIC0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMg
YW5kIGNoYW5nZXMKKyAgICAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lcyBzZXR0aW5nIGluIGJ1aWxkZXJzLnB5CisgICAgICAgIHNvIHRoYXQg
aXQgaXMgb25seSB1c2VkIGlmIHRoaXMgZmxhZyBpcyBwcm92aWRlZC4KKworICAgICAgICBGdXR1
cmUgcGF0Y2hlcyB3aWxsIG1ha2UgaXQgcG9zc2libGUgdG8gdXNlIGxvY2FsIGNvcGllcyBvZiB0
aGUgYnVpbGQKKyAgICAgICAgcmVzdWx0cyAocmF0aGVyIHRoYW4gZ29pbmcgdG8gdGhlIGJvdHMp
IGFuZCBvdGhlciBvcHRpbWl6YXRpb25zIHRvIG1ha2UKKyAgICAgICAgaXQgZmFzdGVyIHRvIHJl
dmlldyBsb3RzIG9mIGNoYW5nZXMgb24gYSBzaW5nbGUgYm90LgorCisgICAgICAgICogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL2dhcmRlbi1vLW1hdGljLmh0bWw6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29u
ZmlnLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZ2FyZGVub21hdGljLnB5OgorICAgICAgICAoR2FyZGVuT01hdGljKToKKyAgICAg
ICAgKEdhcmRlbk9NYXRpYy5leGVjdXRlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcmViYXNlbGluZS5weToKKyAgICAgICAgKEFic3RyYWN0UmViYXNlbGluaW5n
Q29tbWFuZCk6CisgICAgICAgIChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQuX19pbml0X18p
OgorICAgICAgICAoUmViYXNlbGluZVRlc3QpOgorICAgICAgICAoT3B0aW1pemVCYXNlbGluZXMp
OgorICAgICAgICAoQW5hbHl6ZUJhc2VsaW5lcyk6CisgICAgICAgIChBYnN0cmFjdFBhcmFsbGVs
UmViYXNlbGluZUNvbW1hbmQpOgorICAgICAgICAoQWJzdHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVD
b21tYW5kLl9yZWJhc2VsaW5lX2NvbW1hbmRzKToKKyAgICAgICAgKEFic3RyYWN0UGFyYWxsZWxS
ZWJhc2VsaW5lQ29tbWFuZC5fcmViYXNlbGluZSk6CisgICAgICAgIChSZWJhc2VsaW5lLl9faW5p
dF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdz
ZXJ2ZXIucHk6CisgICAgICAgIChHYXJkZW5pbmdIVFRQU2VydmVyLnVybCk6CisgICAgICAgIChH
YXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIucmViYXNlbGluZWFsbCk6CisKKzIwMTItMTAtMzEg
IERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgd2Via2l0cHk6
IHJlZmFjdG9yIGNvbW1vbiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIGZvciAtLXBsYXRmb3JtLCBy
ZWJhc2VsaW5lIGNvbW1hbmRzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDA4MDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1v
LW1hdGljLmh0bWwgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRtbAppbmRleCA5
MDRlNWVkZDBlMTgyOWRmMzNiYzY0MDU2NWVmN2NkYTQzZTJmNjQzLi4yYzI4ZmJlODM1ZjFiZTM5
MjhmMzBiYjM3YjdhMzQ2NWU3Y2JjZjZmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2Fy
ZGVuLW8tbWF0aWMuaHRtbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZ2FyZGVuLW8tbWF0aWMuaHRt
bApAQCAtNTAsOCArNTAsOCBAQCBKYW1lcywgYSB3ZWIgZGV2ZWxvcGVyIGZyb20gQmlybWluZ2hh
bSwgVUsuCiA8Ym9keT4KIDxzY3JpcHQgc3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20v
YWpheC9saWJzL2pxdWVyeS8xLjYuMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQg
c3JjPSJodHRwczovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeXVpLzEuOC4x
NS9qcXVlcnktdWkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZp
Zy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
c2NyaXB0cy9uZXQuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvVHJhYy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3J1bi11bml0dGVzdHMuaHRtbAppbmRleCBjZTJlNmNkOWRhYjEwZjRhNGFjZjZhNzhk
NGM3MmVkYTM1OGZmOTEwLi4yY2U2ZTcxZDM5MzMyNTkyOGJkYWZhYjBmNzNhNzc4NTA4ZDRkNmYy
IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVuLXVuaXR0ZXN0cy5odG1sCisrKyBiL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRlc3RzLmh0bWwKQEAgLTM5LDggKzM5LDggQEAgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
InN0eWxlcy9yZXN1bHRzLmNzcyI+CiAKLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+
PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0
cy9iYXNlX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0X3VuaXR0ZXN0cy5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVycy5qcyBi
L1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzLmpzCmluZGV4IGI2NTg5NWFmYTdlOWMy
NjA3ZTk4YmMyZmM2ZDczMDVjMzVhOTk2ZDUuLjdmNWIzNmMyMWRiMDFkZGQ5NTJlNTMyYTM4MTZi
YTBmMWQ4NjU2NDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJz
LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzLmpzCkBAIC05Nyw3ICs5
Nyw3IEBAIGZ1bmN0aW9uIGZldGNoTW9zdFJlY2VudEJ1aWxkSW5mb0J5QnVpbGRlcihwbGF0Zm9y
bSwgY2FsbGJhY2spCiAgICAgICAgIHZhciBidWlsZGVyTmFtZXMgPSBPYmplY3Qua2V5cyhidWls
ZGVyU3RhdHVzKTsKICAgICAgICAgdmFyIHJlcXVlc3RUcmFja2VyID0gbmV3IGJhc2UuUmVxdWVz
dFRyYWNrZXIoYnVpbGRlck5hbWVzLmxlbmd0aCwgY2FsbGJhY2ssIFtidWlsZEluZm9CeUJ1aWxk
ZXJdKTsKICAgICAgICAgYnVpbGRlck5hbWVzLmZvckVhY2goZnVuY3Rpb24oYnVpbGRlck5hbWUp
IHsKLSAgICAgICAgICAgIGlmICghY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0
Zm9ybV0uYnVpbGRlckFwcGxpZXMoYnVpbGRlck5hbWUpKSB7CisgICAgICAgICAgICBpZiAoIWNv
bmZpZy5idWlsZGVyQXBwbGllcyhidWlsZGVyTmFtZSkpIHsKICAgICAgICAgICAgICAgICByZXF1
ZXN0VHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcu
anMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jb25maWcuanMKaW5kZXggOTJmYTAzYTAwYzE1
MzJmMmNjYmNjZjAzM2EyYWU0ZTE1YzFkMGJlMi4uMWY4MDc0NDIwZGUxMjcxOWQ0NTU0OWNkODcy
MzcyOTYwNmNmYzcxNCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29uZmln
LmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbmZpZy5qcwpAQCAtNTIsNyArNTIs
NyBAQCBjb25maWcua1BsYXRmb3JtcyA9IHsKICAgICAgICAgcmVzdWx0c0RpcmVjdG9yeUZvckJ1
aWxkTnVtYmVyOiBmdW5jdGlvbihidWlsZE51bWJlciwgcmV2aXNpb24pIHsKICAgICAgICAgICAg
IHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGRO
dW1iZXIgKyAnKScpOwogICAgICAgICB9LAotICAgICAgICBidWlsZGVyQXBwbGllczogZnVuY3Rp
b24oYnVpbGRlck5hbWUpIHsKKyAgICAgICAgX2J1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWls
ZGVyTmFtZSkgewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ0FwcGxl
JykgIT0gLTE7CiAgICAgICAgIH0sCiAgICAgfSwKQEAgLTg0LDcgKzg0LDcgQEAgY29uZmlnLmtQ
bGF0Zm9ybXMgPSB7CiAgICAgICAgIHJlc3VsdHNEaXJlY3RvcnlGb3JCdWlsZE51bWJlcjogZnVu
Y3Rpb24oYnVpbGROdW1iZXIsIHJldmlzaW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRO
dW1iZXI7CiAgICAgICAgIH0sCi0gICAgICAgIGJ1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWls
ZGVyTmFtZSkgeworICAgICAgICBfYnVpbGRlckFwcGxpZXM6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1l
KSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGdhcmRlbi1vLW1hdGljIHNob3cgdGhl
c2U/IEkgY2FuIGltYWdpbmUgc2hvd2luZyB0aGUgZGVwcyBib3RzIGJlaW5nIHVzZWZ1bCBhdCBs
ZWFzdCBzbwogICAgICAgICAgICAgLy8gdGhhdCB0aGUgZ2FyZGVuZXIgb25seSBuZWVkIHRvIGxv
b2sgYXQgZ2FyZGVuLW8tbWF0aWMgYW5kIG5ldmVyIGF0IHRoZSB3YXRlcmZhbGwuIE5vdCByZWFs
bHkgc3VyZSB3aG8KICAgICAgICAgICAgIC8vIHdhdGNoZXMgdGhlIEdQVSBib3RzLgpAQCAtMTE1
LDcgKzExNSw3IEBAIGNvbmZpZy5rUGxhdGZvcm1zID0gewogICAgICAgICByZXN1bHRzRGlyZWN0
b3J5Rm9yQnVpbGROdW1iZXI6IGZ1bmN0aW9uKGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgewogICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudCgncicgKyByZXZpc2lvbiArICcgKCcg
KyBidWlsZE51bWJlciArICcpJyk7CiAgICAgICAgIH0sCi0gICAgICAgIGJ1aWxkZXJBcHBsaWVz
OiBmdW5jdGlvbihidWlsZGVyTmFtZSkgeworICAgICAgICBfYnVpbGRlckFwcGxpZXM6IGZ1bmN0
aW9uKGJ1aWxkZXJOYW1lKSB7CiAgICAgICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUuaW5kZXhP
ZignR1RLJykgIT0gLTE7CiAgICAgICAgIH0sCiAgICAgfSwKQEAgLTEzNiw3ICsxMzYsNyBAQCBj
b25maWcua1BsYXRmb3JtcyA9IHsKICAgICAgICAgcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxkTnVt
YmVyOiBmdW5jdGlvbihidWlsZE51bWJlciwgcmV2aXNpb24pIHsKICAgICAgICAgICAgIHJldHVy
biBlbmNvZGVVUklDb21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGROdW1iZXIg
KyAnKScpOwogICAgICAgICB9LAotICAgICAgICBidWlsZGVyQXBwbGllczogZnVuY3Rpb24oYnVp
bGRlck5hbWUpIHsKKyAgICAgICAgX2J1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFt
ZSkgewogICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ1F0JykgIT0gLTE7
CiAgICAgICAgIH0sCiAgICAgfSwKQEAgLTE1OSwxMCArMTU5LDI5IEBAIGNvbmZpZy5rUmVsYXRp
dmVUaW1lVXBkYXRlRnJlcXVlbmN5ID0gMTAwMCAqIDYwOwogCiBjb25maWcua0V4cGVyaW1lbnRh
bEZlYXR1cmVzID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zZWFyY2goJ2VuYWJsZUV4cGVyaW1l
bnRzPTEnKSAhPSAtMTsKIAotY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSA9ICdjaHJvbWl1bSc7Citj
b25maWcuY3VycmVudFBsYXRmb3JtID0gYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ3BsYXRmb3JtJykg
fHwgJ2Nocm9taXVtJzsKIAotY29uZmlnLnNldFBsYXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0p
Ci17CisvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBhIHdheSB0byByZXN0cmljdCB0aGUgcmVzdWx0
cyB0byBhIHN1YnNldCBvZiB0aGUgYnVpbGRlcnMKKy8vIChvciBtYXliZSBqdXN0IGEgc2luZ2xl
IGJ1aWxkZXIpIGluIHRoZSBVSSBhcyB3ZWxsIGFzIHZpYSBhbiBVUkwgcGFyYW1ldGVyLgorY29u
ZmlnLmN1cnJlbnRCdWlsZGVyID0gYmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ2J1aWxkZXInKTsKKwor
Y29uZmlnLmN1cnJlbnRCdWlsZGVycyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciBjdXJyZW50X2J1
aWxkZXJzID0ge307CisgICAgaWYgKGNvbmZpZy5jdXJyZW50QnVpbGRlcikgeworICAgICAgICBj
dXJyZW50X2J1aWxkZXJzW2NvbmZpZy5jdXJyZW50QnVpbGRlcl0gPSBjb25maWcua1BsYXRmb3Jt
c1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5idWlsZGVyc1tjb25maWcuY3VycmVudEJ1aWxkZXJd
OworICAgICAgICByZXR1cm4gY3VycmVudF9idWlsZGVyczsKKyAgICB9IGVsc2UgeworICAgICAg
ICByZXR1cm4gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uYnVpbGRl
cnM7CisgICAgfQorfTsKKworY29uZmlnLmJ1aWxkZXJBcHBsaWVzID0gZnVuY3Rpb24oYnVpbGRl
ck5hbWUpIHsKKyAgICBpZiAoY29uZmlnLmN1cnJlbnRCdWlsZGVyKQorICAgICAgICByZXR1cm4g
YnVpbGRlck5hbWUgPT0gY29uZmlnLmN1cnJlbnRCdWlsZGVyOworICAgIHJldHVybiBjb25maWcu
a1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5fYnVpbGRlckFwcGxpZXMoYnVpbGRl
ck5hbWUpOworfTsKKworY29uZmlnLnNldFBsYXRmb3JtID0gZnVuY3Rpb24ocGxhdGZvcm0pIHsK
ICAgICBpZiAoIXRoaXMua1BsYXRmb3Jtc1twbGF0Zm9ybV0pIHsKICAgICAgICAgd2luZG93LmNv
bnNvbGUubG9nKHBsYXRmb3JtICsgJyBpcyBub3QgYSByZWNvZ25pemVkIHBsYXRmb3JtJyk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2dhcmRl
bi1vLW1hdGljLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMK
aW5kZXggZGFiMmI4MDJkODM5YTExZGM0NDZhZGM5ODIwMTdjNTRjM2ExNTNhZi4uZWJkNGQ1ZDMy
MzMzODFhYWRhMWY3MzhlYzBhZDJjZDlmYjBjMWFmZiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvZ2FyZGVuLW8tbWF0aWMuanMKQEAgLTc3LDcgKzc3LDcgQEAgZnVuY3Rpb24gdXBkYXRlKCkK
ICAgICAgICAgICAgIHVwZGF0ZVBhcnR5VGltZSgpOwogICAgICAgICAgICAgZ191bmV4cGVjdGVk
RmFpbHVyZXNDb250cm9sbGVyLnB1cmdlKCk7CiAKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGNv
bmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1aWxkZXJzKS5mb3JFYWNo
KGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7CisgICAgICAgICAgICBPYmplY3Qua2V5cyhjb25maWcu
Y3VycmVudEJ1aWxkZXJzKCkpLmZvckVhY2goZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIW1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXJbYnVpbGRlck5hbWVd
KQogICAgICAgICAgICAgICAgICAgICBnX2luZm8uYWRkKG5ldyB1aS5ub3RpZmljYXRpb25zLklu
Zm8oJ0NvdWxkIG5vdCBmaW5kIHRlc3QgcmVzdWx0cyBmb3IgJyArIGJ1aWxkZXJOYW1lICsgJyBp
biB0aGUgbGFzdCAnICsgY29uZmlnLmtCdWlsZE51bWJlckxpbWl0ICsgJyBydW5zLicpKTsgICAg
ICAgICAgICAKICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvbW9kZWwuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbC5qcwppbmRleCA0
NzZlOTRlMWQ5NDkxZWEwZDQ0ZTc5NTRhYTNmYWU5ZmRkNDAyMTRhLi4zYzNmODUyNDM1YTdjMzVi
YmRlMDQzMzE0Mjk0NGU2YmU5YTJjZjA5IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9tb2RlbC5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9tb2RlbC5qcwpAQCAt
MTU4LDcgKzE1OCw3IEBAIG1vZGVsLmxhdGVzdFJldmlzaW9uV2l0aE5vQnVpbGRlcnNJbkZsaWdo
dCA9IGZ1bmN0aW9uKCkKIAogbW9kZWwudXBkYXRlUmVzdWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9u
KGNhbGxiYWNrKQogewotICAgIHZhciBwbGF0Zm9ybUJ1aWxkZXJzID0gY29uZmlnLmtQbGF0Zm9y
bXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uYnVpbGRlcnM7CisgICAgdmFyIHBsYXRmb3JtQnVp
bGRlcnMgPSBjb25maWcuY3VycmVudEJ1aWxkZXJzKCk7CiAgICAgcmVzdWx0cy5mZXRjaFJlc3Vs
dHNCeUJ1aWxkZXIoT2JqZWN0LmtleXMocGxhdGZvcm1CdWlsZGVycyksIGZ1bmN0aW9uKHJlc3Vs
dHNCeUJ1aWxkZXIpIHsKICAgICAgICAgbW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlciA9IHJl
c3VsdHNCeUJ1aWxkZXI7CiAgICAgICAgIGNhbGxiYWNrKCk7CmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9zdW1tYXJ5LW1vY2suanMKaW5kZXggNWU3MzJjZjI1NzkzZjA4NzIyZjE5ZTE4MmYxMTA3NzQ2
Njg1YTY3ZC4uZWIzYzJhMmExMjZiNGQ1MmE4YjE1ZjAwY2M5MTA5ZjFmYTk5Mzg4YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvc3VtbWFyeS1tb2NrLmpzCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL3N1bW1hcnktbW9jay5qcwpAQCAtOTYsNyArOTYsNyBAQCB2YXIg
dGVzdE5hbWVzID0gbmV3IEN5Y2xlcihbCiAgICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1
MDUuaHRtbCcKIF0pOwogCi12YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNv
bmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1aWxkZXJzKSwgMyk7Cit2
YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNvbmZpZy5jdXJyZW50QnVpbGRl
cnMoKSksIDMpOwogCiB2YXIgZXhwZWN0YXRpb25zID0gbmV3IEN5Y2xlcihbCiAgICAgJ1RFWFQn
LApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFpbHVyZXMuanMgYi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5qcwppbmRleCA3N2VjZGEzYzJhOWVl
MjBjZGU1NmZhZGY1NDdlOWUxMTg4MTUwNWNmLi5iNDk0OGIyOGMzNzM2ZjUxMzFkZDdmM2Q5NTQz
YWE0MzkxNDIwODRkIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWls
dXJlcy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5qcwpAQCAt
MzMsNyArMzMsNyBAQCB2YXIga0J1aWxkaW5nUmVzdWx0ID0gJ0JVSUxESU5HJzsKIHVpLmZhaWx1
cmVzLkJ1aWxkZXIgPSBiYXNlLmV4dGVuZHMoJ2EnLCB7CiAgICAgaW5pdDogZnVuY3Rpb24oYnVp
bGRlck5hbWUsIGZhaWx1cmVzKQogICAgIHsKLSAgICAgICAgdmFyIHBsYXRmb3JtQnVpbGRlcnMg
PSBjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5idWlsZGVyczsKKyAg
ICAgICAgdmFyIHBsYXRmb3JtQnVpbGRlcnMgPSBjb25maWcuY3VycmVudEJ1aWxkZXJzKCk7CiAg
ICAgICAgIHZhciBjb25maWd1cmF0aW9uID0gcGxhdGZvcm1CdWlsZGVyc1tidWlsZGVyTmFtZV07
CiAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKSB7CiAgICAgICAgICAgICBpZiAoY29uZmlndXJh
dGlvbi52ZXJzaW9uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9idWlsZGVycy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvYnVpbGRlcnMucHkKaW5kZXggYzJhYjhkMjEyYzM0Y2ZlYjhkMTI3N2Q3OGEyMmIw
NDIxN2MyMTFkNC4uMTU1YWM4OThiOTQ1NTA4ZDRjYWJkM2I2NWMzYzVjMGJiZGE0ZGVmNyAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9idWlsZGVy
cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2J1aWxk
ZXJzLnB5CkBAIC01OCw3ICs1OCw4IEBAIF9leGFjdF9tYXRjaGVzID0gewogICAgICJXZWJLaXQg
TWFjMTAuNiAoZGJnKSI6IHsicG9ydF9uYW1lIjogImNocm9taXVtLW1hYy1zbm93bGVvcGFyZCIs
ICJzcGVjaWZpZXJzIjogc2V0KFsic25vd2xlb3BhcmQiLCAiZGVidWciXSl9LAogICAgICJXZWJL
aXQgTWFjMTAuNyI6IHsicG9ydF9uYW1lIjogImNocm9taXVtLW1hYy1saW9uIiwgInNwZWNpZmll
cnMiOiBzZXQoWyJsaW9uIiwgInJlbGVhc2UiXSl9LAogICAgICJXZWJLaXQgTWFjMTAuNyAoZGJn
KSI6IHsicG9ydF9uYW1lIjogImNocm9taXVtLW1hYy1saW9uIiwgInNwZWNpZmllcnMiOiBzZXQo
WyJsaW9uIiwgImRlYnVnIl0pfSwKLSAgICAiV2ViS2l0IE1hYzEwLjgiOiB7InBvcnRfbmFtZSI6
ICJjaHJvbWl1bS1tYWMtbW91bnRhaW5saW9uIiwgInNwZWNpZmllcnMiOiBzZXQoWyJtb3VudGFp
bmxpb24iLCAicmVsZWFzZSJdKX0sCisgICAgIldlYktpdCBNYWMxMC44IjogeyJwb3J0X25hbWUi
OiAiY2hyb21pdW0tbWFjLW1vdW50YWlubGlvbiIsICJzcGVjaWZpZXJzIjogc2V0KFsibW91bnRh
aW5saW9uIiwgInJlbGVhc2UiXSksCisgICAgICAgICAgICAgICAgICAgICAgICJtb3ZlX292ZXJ3
cml0dGVuX2Jhc2VsaW5lc190byI6IFsiY2hyb21pdW0tbWFjLWxpb24iXX0sCiAKICAgICAjIFRo
ZXNlIGJ1aWxkZXJzIGFyZSBvbiBidWlsZC53ZWJraXQub3JnLgogICAgICJBcHBsZSBNb3VudGFp
bkxpb24gUmVsZWFzZSBXSzEgKFRlc3RzKSI6IHsicG9ydF9uYW1lIjogIm1hYy1tb3VudGFpbmxp
b24iLCAic3BlY2lmaWVycyI6IHNldChbIm1vdW50YWlubGlvbiJdKSwgInJlYmFzZWxpbmVfb3Zl
cnJpZGVfZGlyIjogIm1hYyJ9LApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2dhcmRlbm9tYXRpYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9nYXJkZW5vbWF0aWMucHkKaW5kZXggNjZiOWZhZWY4YjI2NjAzMDNlNzUzMjg5
NTFmMTZjOGM1YjNiMGQ1YS4uMjRkMzBhN2ZkNjFkY2U4ZTJhODQ2YmE5M2E3ZGFlYjdlY2M5YzNj
MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2dhcmRl
bm9tYXRpYy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZ2Fy
ZGVub21hdGljLnB5CkBAIC0yMiwyMCArMjIsMzUgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKLWZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9ydCBBYnN0
cmFjdERlY2xhcmF0aXZlQ29tbWFuZAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydCBp
bXBvcnQgYnVpbGRlcnMKK2Zyb20gd2Via2l0cHkudG9vbC5jb21tYW5kcy5yZWJhc2VsaW5lIGlt
cG9ydCBBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQKIGZyb20gd2Via2l0cHkudG9vbC5zZXJ2
ZXJzLmdhcmRlbmluZ3NlcnZlciBpbXBvcnQgR2FyZGVuaW5nSFRUUFNlcnZlcgogCiAKLWNsYXNz
IEdhcmRlbk9NYXRpYyhBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CitjbGFzcyBHYXJkZW5P
TWF0aWMoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICBuYW1lID0gImdhcmRlbi1v
LW1hdGljIgotICAgIGhlbHBfdGV4dCA9ICJFeHBlcmltZW50YWwgY29tbWFuZCBmb3IgZ2FyZGVu
aW5nIHRoZSBXZWJLaXQgdHJlZS4iCisgICAgaGVscF90ZXh0ID0gIkNvbW1hbmQgZm9yIGdhcmRl
bmluZyB0aGUgV2ViS2l0IHRyZWUuIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAg
ICByZXR1cm4gc3VwZXIoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kLCBzZWxmKS5fX2luaXRf
XyhvcHRpb25zPShzZWxmLnBsYXRmb3JtX29wdGlvbnMgKyBbCisgICAgICAgICAgICBzZWxmLm1v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX29wdGlvbiwKKyAgICAgICAgICAgIHNlbGYubm9fb3B0
aW1pemVfb3B0aW9uLAorICAgICAgICAgICAgXSkpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBv
cHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgcHJpbnQgIlRoaXMgY29tbWFuZCBydW5zIGEg
bG9jYWwgSFRUUCBzZXJ2ZXIgdGhhdCBjaGFuZ2VzIHlvdXIgd29ya2luZyBjb3B5IgogICAgICAg
ICBwcmludCAiYmFzZWQgb24gdGhlIGFjdGlvbnMgeW91IHRha2UgaW4gdGhlIHdlYi1iYXNlZCBV
SS4iCiAKKyAgICAgICAgYXJncyA9IHt9CisgICAgICAgIGlmIG9wdGlvbnMucGxhdGZvcm06Cisg
ICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgcG9ydCBpbXBsZW1lbnRh
dGlvbiAoY2hyb21pdW0tLCBndGstLCBldGMuKSBpcyB0aGUgZmlyc3QgcGFydCBvZiBvcHRpb25z
LnBsYXRmb3JtLgorICAgICAgICAgICAgYXJnc1sncGxhdGZvcm0nXSA9IG9wdGlvbnMucGxhdGZv
cm0uc3BsaXQoJy0nKVswXQorICAgICAgICAgICAgYnVpbGRlciA9IGJ1aWxkZXJzLmJ1aWxkZXJf
bmFtZV9mb3JfcG9ydF9uYW1lKG9wdGlvbnMucGxhdGZvcm0pCisgICAgICAgICAgICBpZiBidWls
ZGVyOgorICAgICAgICAgICAgICAgIGFyZ3NbJ2J1aWxkZXInXSA9IGJ1aWxkZXIKKwogICAgICAg
ICBodHRwZCA9IEdhcmRlbmluZ0hUVFBTZXJ2ZXIoaHR0cGRfcG9ydD04MTI3LCBjb25maWc9eyd0
b29sJzogdG9vbCwgJ29wdGlvbnMnOiBvcHRpb25zfSkKLSAgICAgICAgc2VsZi5fdG9vbC51c2Vy
Lm9wZW5fdXJsKGh0dHBkLnVybCgpKQorICAgICAgICBzZWxmLl90b29sLnVzZXIub3Blbl91cmwo
aHR0cGQudXJsKGFyZ3MpKQogCiAgICAgICAgIHByaW50ICJMb2NhbCBIVFRQIHNlcnZlciBzdGFy
dGVkLiIKICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lLnB5CmluZGV4IGIxMjlhNDg3YTg5
MzU3YjAzNjFmMTEyMDAzMTk3NGM4YTMwODFjNWYuLmExZDRiYWU3NzliYTk2YmI1YjMwY2I4Mjc4
YzhjYjBlNGFkNWExMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9yZWJhc2VsaW5lLnB5CkBAIC02MCwxMCArNjAsMTUgQEAgZGVmIF9iYXNlbGluZV9u
YW1lKGZzLCB0ZXN0X25hbWUsIHN1ZmZpeCk6CiAKIAogY2xhc3MgQWJzdHJhY3RSZWJhc2VsaW5p
bmdDb21tYW5kKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKKyAgICBtb3ZlX292ZXJ3cml0
dGVuX2Jhc2VsaW5lc19vcHRpb24gPSBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1tb3ZlLW92ZXJ3
cml0dGVuLWJhc2VsaW5lcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisg
ICAgICAgIGhlbHA9Ik1vdmUgb3ZlcndyaXR0ZW4gYmFzZWxpbmVzIGVsc2V3aGVyZSBpbiB0aGUg
YmFzZWxpbmUgcGF0aC4gVGhpcyBpcyBmb3IgYnJpbmdpbmcgdXAgbmV3IHBvcnRzLiIpCisKICAg
ICBub19vcHRpbWl6ZV9vcHRpb24gPSBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1uby1vcHRpbWl6
ZScsIGRlc3Q9J29wdGltaXplJywgYWN0aW9uPSdzdG9yZV9mYWxzZScsIGRlZmF1bHQ9VHJ1ZSwK
ICAgICAgICAgaGVscD0oJ0RvIG5vdCBvcHRpbWl6ZS9kZS1kdXAgdGhlIGV4cGVjdGF0aW9ucyBh
ZnRlciByZWJhc2VsaW5pbmcgKGRlZmF1bHQgaXMgdG8gZGUtZHVwIGF1dG9tYXRpY2FsbHkpLiAn
CiAgICAgICAgICAgICAgICdZb3UgY2FuIHVzZSAid2Via2l0LXBhdGNoIG9wdGltaXplLWJhc2Vs
aW5lcyIgdG8gb3B0aW1pemUgc2VwYXJhdGVseS4nKSkKIAorICAgIHBsYXRmb3JtX29wdGlvbnMg
PSBmYWN0b3J5LnBsYXRmb3JtX29wdGlvbnMoKQorCiAgICAgc3VmZml4ZXNfb3B0aW9uID0gb3B0
cGFyc2UubWFrZV9vcHRpb24oIi0tc3VmZml4ZXMiLCBkZWZhdWx0PScsJy5qb2luKEJBU0VMSU5F
X1NVRkZJWF9MSVNUKSwgYWN0aW9uPSJzdG9yZSIsCiAgICAgICAgIGhlbHA9IkNvbW1hLXNlcGFy
YXRlZC1saXN0IG9mIGZpbGUgdHlwZXMgdG8gcmViYXNlbGluZSIpCiAKQEAgLTI2OSw3ICsyNzQs
NyBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmViYXNlbGluZUNvbW1hbmQoQWJzdHJhY3RSZWJh
c2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAgICAgICBidWlsZGVyc190b19mYWxsYmFja19w
YXRoc1tidWlsZGVyXSA9IGZhbGxiYWNrX3BhdGgKICAgICAgICAgcmV0dXJuIGJ1aWxkZXJzX3Rv
X2ZhbGxiYWNrX3BhdGhzLmtleXMoKQogCi0gICAgZGVmIF9yZWJhc2VsaW5lX2NvbW1hbmRzKHNl
bGYsIHRlc3RfbGlzdCwgdmVyYm9zZT1GYWxzZSk6CisgICAgZGVmIF9yZWJhc2VsaW5lX2NvbW1h
bmRzKHNlbGYsIHRlc3RfbGlzdCwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM9RmFsc2UsIHZl
cmJvc2U9RmFsc2UpOgogCiAgICAgICAgIHBhdGhfdG9fd2Via2l0X3BhdGNoID0gc2VsZi5fdG9v
bC5wYXRoKCkKICAgICAgICAgY3dkID0gc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290CkBA
IC0yNzgsOSArMjgzLDEwIEBAIGNsYXNzIEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFu
ZChBYnN0cmFjdFJlYmFzZWxpbmluZ0NvbW1hbmQpOgogICAgICAgICAgICAgZm9yIGJ1aWxkZXIg
aW4gc2VsZi5fYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbSh0ZXN0X2xpc3RbdGVzdF0pOgogICAgICAg
ICAgICAgICAgIHN1ZmZpeGVzID0gJywnLmpvaW4odGVzdF9saXN0W3Rlc3RdW2J1aWxkZXJdKQog
ICAgICAgICAgICAgICAgIGNtZF9saW5lID0gW3BhdGhfdG9fd2Via2l0X3BhdGNoLCAncmViYXNl
bGluZS10ZXN0LWludGVybmFsJywgJy0tc3VmZml4ZXMnLCBzdWZmaXhlcywgJy0tYnVpbGRlcics
IGJ1aWxkZXIsICctLXRlc3QnLCB0ZXN0XQotICAgICAgICAgICAgICAgIG1vdmVfb3ZlcndyaXR0
ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXNfdG8o
YnVpbGRlcikKLSAgICAgICAgICAgICAgICBmb3IgcGxhdGZvcm0gaW4gbW92ZV9vdmVyd3JpdHRl
bl9iYXNlbGluZXNfdG86Ci0gICAgICAgICAgICAgICAgICAgIGNtZF9saW5lLmV4dGVuZChbJy0t
bW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMtdG8nLCBwbGF0Zm9ybV0pCisgICAgICAgICAgICAg
ICAgaWYgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGluZXM6CisgICAgICAgICAgICAgICAgICAgIG1v
dmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvID0gYnVpbGRlcnMubW92ZV9vdmVyd3JpdHRlbl9i
YXNlbGluZXNfdG8oYnVpbGRlcikKKyAgICAgICAgICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGlu
IG1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvOgorICAgICAgICAgICAgICAgICAgICAgICAg
Y21kX2xpbmUuZXh0ZW5kKFsnLS1tb3ZlLW92ZXJ3cml0dGVuLWJhc2VsaW5lcy10bycsIHBsYXRm
b3JtXSkKICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBj
bWRfbGluZS5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAgICAgICAgICAgY29tbWFuZHMuYXBw
ZW5kKHR1cGxlKFtjbWRfbGluZSwgY3dkXSkpCkBAIC0zMTAsNiArMzE2LDcgQEAgY2xhc3MgQWJz
dHJhY3RQYXJhbGxlbFJlYmFzZWxpbmVDb21tYW5kKEFic3RyYWN0UmViYXNlbGluaW5nQ29tbWFu
ZCk6CiAgICAgICAgICAgICBhbGxfc3VmZml4ZXMgPSBzZXQoKQogICAgICAgICAgICAgZm9yIGJ1
aWxkZXIgaW4gc2VsZi5fYnVpbGRlcnNfdG9fZmV0Y2hfZnJvbSh0ZXN0X2xpc3RbdGVzdF0pOgog
ICAgICAgICAgICAgICAgIGFsbF9zdWZmaXhlcy51cGRhdGUodGVzdF9saXN0W3Rlc3RdW2J1aWxk
ZXJdKQorICAgICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHByb3BhZ2F0ZSB0aGUgcGxhdGZv
cm0gb3B0aW9ucyBhcyB3ZWxsLgogICAgICAgICAgICAgc2VsZi5fcnVuX3dlYmtpdF9wYXRjaChb
J29wdGltaXplLWJhc2VsaW5lcycsICctLXN1ZmZpeGVzJywgJywnLmpvaW4oYWxsX3N1ZmZpeGVz
KSwgdGVzdF0sIHZlcmJvc2UpCiAKICAgICBkZWYgX3JlYmFzZWxpbmUoc2VsZiwgb3B0aW9ucywg
dGVzdF9saXN0KToKQEAgLTMxOCw3ICszMjUsNyBAQCBjbGFzcyBBYnN0cmFjdFBhcmFsbGVsUmVi
YXNlbGluZUNvbW1hbmQoQWJzdHJhY3RSZWJhc2VsaW5pbmdDb21tYW5kKToKICAgICAgICAgICAg
IGZvciBidWlsZGVyLCBzdWZmaXhlcyBpbiBzb3J0ZWQoYnVpbGRlcnMuaXRlbXMoKSk6CiAgICAg
ICAgICAgICAgICAgX2xvZy5kZWJ1ZygiICAlczogJXMiICUgKGJ1aWxkZXIsICIsIi5qb2luKHN1
ZmZpeGVzKSkpCiAKLSAgICAgICAgY29tbWFuZHMgPSBzZWxmLl9yZWJhc2VsaW5lX2NvbW1hbmRz
KHRlc3RfbGlzdCwgb3B0aW9ucy52ZXJib3NlKQorICAgICAgICBjb21tYW5kcyA9IHNlbGYuX3Jl
YmFzZWxpbmVfY29tbWFuZHModGVzdF9saXN0LCBvcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFz
ZWxpbmVzLCBvcHRpb25zLnZlcmJvc2UpCiAgICAgICAgIGNvbW1hbmRfcmVzdWx0cyA9IHNlbGYu
X3Rvb2wuZXhlY3V0aXZlLnJ1bl9pbl9wYXJhbGxlbChjb21tYW5kcykKIAogICAgICAgICBsb2df
b3V0cHV0ID0gJ1xuJy5qb2luKHJlc3VsdFsyXSBmb3IgcmVzdWx0IGluIGNvbW1hbmRfcmVzdWx0
cykucmVwbGFjZSgnXG5cbicsICdcbicpCkBAIC0zMzgsOCArMzQ1LDExIEBAIGNsYXNzIFJlYmFz
ZWxpbmVKc29uKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5lQ29tbWFuZCk6CiAgICAgbmFtZSA9
ICJyZWJhc2VsaW5lLWpzb24iCiAgICAgaGVscF90ZXh0ID0gIlJlYmFzZWxpbmUgYmFzZWQgb2Zm
IEpTT04gcGFzc2VkIHRvIHN0ZGluLiBJbnRlbmRlZCB0byBvbmx5IGJlIGNhbGxlZCBmcm9tIG90
aGVyIHNjcmlwdHMuIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICByZXR1cm4g
c3VwZXIoUmViYXNlbGluZUpzb24sIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9W3NlbGYubm9fb3B0
aW1pemVfb3B0aW9uXSkKKyAgICBkZWYgX19pbml0X18oc2VsZiwpOgorICAgICAgICByZXR1cm4g
c3VwZXIoUmViYXNlbGluZUpzb24sIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9WworICAgICAgICAg
ICAgc2VsZi5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc19vcHRpb24sCisgICAgICAgICAgICBz
ZWxmLm5vX29wdGltaXplX29wdGlvbiwKKyAgICAgICAgICAgIF0pCiAKICAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgc2VsZi5fcmViYXNlbGluZShv
cHRpb25zLCBqc29uLmxvYWRzKHN5cy5zdGRpbi5yZWFkKCkpKQpAQCAtMzUwLDcgKzM2MCwxMSBA
QCBjbGFzcyBSZWJhc2VsaW5lRXhwZWN0YXRpb25zKEFic3RyYWN0UGFyYWxsZWxSZWJhc2VsaW5l
Q29tbWFuZCk6CiAgICAgaGVscF90ZXh0ID0gIlJlYmFzZWxpbmVzIHRoZSB0ZXN0cyBpbmRpY2F0
ZWQgaW4gVGVzdEV4cGVjdGF0aW9ucy4iCiAKICAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzdXBlcihSZWJhc2VsaW5lRXhwZWN0YXRpb25zLCBzZWxmKS5fX2luaXRfXyhv
cHRpb25zPVtzZWxmLm5vX29wdGltaXplX29wdGlvbl0pCisgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBhbHNvIHN1cHBvcnQgcGxhdGZvcm1fb3B0aW9ucyBoZXJlIHNvIHRoYXQgd2Ugb25seSBs
b29rIGF0IHNvbWUgVGVzdEV4cGVjdGF0aW9ucyBmaWxlcyBpbnN0ZWFkIG9mIGFsbCBvZiB0aGVt
LgorICAgICAgICByZXR1cm4gc3VwZXIoUmViYXNlbGluZUV4cGVjdGF0aW9ucywgc2VsZikuX19p
bml0X18ob3B0aW9ucz1bCisgICAgICAgICAgICBzZWxmLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxp
bmVzX29wdGlvbiwKKyAgICAgICAgICAgIHNlbGYubm9fb3B0aW1pemVfb3B0aW9uLAorICAgICAg
ICAgICAgXSkKIAogICAgIGRlZiBfdXBkYXRlX2V4cGVjdGF0aW9uc19maWxlcyhzZWxmLCBwb3J0
X25hbWUpOgogICAgICAgICBwb3J0ID0gc2VsZi5fdG9vbC5wb3J0X2ZhY3RvcnkuZ2V0KHBvcnRf
bmFtZSkKQEAgLTQwMyw2ICs0MTcsNyBAQCBjbGFzcyBSZWJhc2VsaW5lKEFic3RyYWN0UGFyYWxs
ZWxSZWJhc2VsaW5lQ29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAg
IHN1cGVyKFJlYmFzZWxpbmUsIHNlbGYpLl9faW5pdF9fKG9wdGlvbnM9WworICAgICAgICAgICAg
c2VsZi5tb3ZlX292ZXJ3cml0dGVuX2Jhc2VsaW5lc19vcHRpb24sCiAgICAgICAgICAgICBzZWxm
Lm5vX29wdGltaXplX29wdGlvbiwKICAgICAgICAgICAgICMgRklYTUU6IHNob3VsZCB3ZSBzdXBw
b3J0IHRoZSBwbGF0Zm9ybSBvcHRpb25zIGluIGFkZGl0aW9uIHRvIChvciBpbnN0ZWFkIG9mKSAt
LWJ1aWxkZXJzPwogICAgICAgICAgICAgc2VsZi5zdWZmaXhlc19vcHRpb24sCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVz
dC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3Vu
aXR0ZXN0LnB5CmluZGV4IDk0YzJmMjA5MDMyMWUyZjA0YmZmYTA5YTk5MGNkYmFiYjU2YTkzMGQu
LmQwYTFmMzY0NGQ0Yzc0ODdlNTgxNjE4NGE0MTI2ODRmNGE4ZTc3MzUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3Vu
aXR0ZXN0LnB5CkBAIC0yMTQsOCArMjE0LDkgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVKc29uKF9C
YXNlVGVzdENhc2UpOgogICAgICAgICBzZWxmLnRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2
ZTIoKQogICAgICAgICBzZWxmLm9sZF9leGFjdF9tYXRjaGVzID0gYnVpbGRlcnMuX2V4YWN0X21h
dGNoZXMKICAgICAgICAgYnVpbGRlcnMuX2V4YWN0X21hdGNoZXMgPSB7Ci0gICAgICAgICAgICAi
TU9DSyBidWlsZGVyIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZp
ZXJzIjogc2V0KFsibW9jay1zcGVjaWZpZXIiXSl9LAotICAgICAgICAgICAgIk1PQ0sgYnVpbGRl
ciAoRGVidWcpIjogeyJwb3J0X25hbWUiOiAidGVzdC1tYWMtbGVvcGFyZCIsICJzcGVjaWZpZXJz
Ijogc2V0KFsibW9jay1zcGVjaWZpZXIiLCAiZGVidWciXSl9LAorICAgICAgICAgICAgIk1PQ0sg
YnVpbGRlciI6IHsicG9ydF9uYW1lIjogInRlc3QtbWFjLXNub3dsZW9wYXJkIiwgInNwZWNpZmll
cnMiOiBzZXQoWyJtb2NrLXNwZWNpZmllciJdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzX3RvIjogWyJ0ZXN0LW1hYy1sZW9wYXJkIl19
LAorICAgICAgICAgICAgIk1PQ0sgYnVpbGRlciAoRGVidWcpIjogeyJwb3J0X25hbWUiOiAidGVz
dC1tYWMtc25vd2xlb3BhcmQiLCAic3BlY2lmaWVycyI6IHNldChbIm1vY2stc3BlY2lmaWVyIiwg
ImRlYnVnIl0pfSwKICAgICAgICAgfQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgpAQCAtMjIz
LDcgKzIyNCw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lSnNvbihfQmFzZVRlc3RDYXNlKToKICAg
ICAgICAgc3VwZXIoVGVzdFJlYmFzZWxpbmVKc29uLCBzZWxmKS50ZWFyRG93bigpCiAKICAgICBk
ZWYgdGVzdF9yZWJhc2VsaW5lX2FsbChzZWxmKToKLSAgICAgICAgb3B0aW9ucyA9IE1vY2tPcHRp
b25zKG9wdGltaXplPVRydWUsIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgb3B0aW9ucyA9IE1vY2tP
cHRpb25zKG9wdGltaXplPVRydWUsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNl
bGluZXM9RmFsc2UpCiAgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAg
eyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciI6IFsidHh0
IiwgInBuZyJdfX0pCiAKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaGF2ZSBvbmUgcnVuX2luX3Bh
cmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5kKCkKQEAgLTIzMiw3ICsyMzMs
NyBAQCBjbGFzcyBUZXN0UmViYXNlbGluZUpzb24oX0Jhc2VUZXN0Q2FzZSk6CiAgICAgICAgICAg
ICAgWydlY2hvJywgJy0tdmVyYm9zZScsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhl
cycsICd0eHQscG5nJywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKIAogICAg
IGRlZiB0ZXN0X3JlYmFzZWxpbmVfZGVidWcoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMgPSBNb2Nr
T3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUpCisgICAgICAgIG9wdGlvbnMgPSBN
b2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUsIG1vdmVfb3ZlcndyaXR0ZW5f
YmFzZWxpbmVzPUZhbHNlKQogICAgICAgICBzZWxmLmNvbW1hbmQuX3JlYmFzZWxpbmUob3B0aW9u
cywgIHsidXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogeyJNT0NLIGJ1aWxkZXIgKERl
YnVnKSI6IFsidHh0IiwgInBuZyJdfX0pCiAKICAgICAgICAgIyBOb3RlIHRoYXQgd2UgaGF2ZSBv
bmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5kKCkKQEAg
LTI0MCw2ICsyNDEsMjMgQEAgY2xhc3MgVGVzdFJlYmFzZWxpbmVKc29uKF9CYXNlVGVzdENhc2Up
OgogICAgICAgICAgICAgW1tbJ2VjaG8nLCAncmViYXNlbGluZS10ZXN0LWludGVybmFsJywgJy0t
c3VmZml4ZXMnLCAndHh0LHBuZycsICctLWJ1aWxkZXInLCAnTU9DSyBidWlsZGVyIChEZWJ1Zykn
LCAnLS10ZXN0JywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcsICctLXZlcmJvc2Un
XV0sCiAgICAgICAgICAgICAgWydlY2hvJywgJy0tdmVyYm9zZScsICdvcHRpbWl6ZS1iYXNlbGlu
ZXMnLCAnLS1zdWZmaXhlcycsICd0eHQscG5nJywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCddXSkKIAorICAgIGRlZiB0ZXN0X21vdmVfb3ZlcndyaXR0ZW4oc2VsZik6CisgICAgICAg
IG9wdGlvbnMgPSBNb2NrT3B0aW9ucyhvcHRpbWl6ZT1UcnVlLCB2ZXJib3NlPVRydWUsIG1vdmVf
b3ZlcndyaXR0ZW5fYmFzZWxpbmVzPVRydWUpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNl
bGluZShvcHRpb25zLCAgeyJ1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sg
YnVpbGRlciI6IFsidHh0IiwgInBuZyJdfX0pCisKKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgaGF2
ZSBvbmUgcnVuX2luX3BhcmFsbGVsKCkgY2FsbCBmb2xsb3dlZCBieSBhIHJ1bl9jb21tYW5kKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscywKKyAg
ICAgICAgICAgIFtbWydlY2hvJywgJ3JlYmFzZWxpbmUtdGVzdC1pbnRlcm5hbCcsICctLXN1ZmZp
eGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01PQ0sgYnVpbGRlcicsICctLXRlc3QnLCAn
dXNlci1zY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJywgJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNl
bGluZXMtdG8nLCAndGVzdC1tYWMtbGVvcGFyZCcsICctLXZlcmJvc2UnXV0sCisgICAgICAgICAg
ICAgWydlY2hvJywgJy0tdmVyYm9zZScsICdvcHRpbWl6ZS1iYXNlbGluZXMnLCAnLS1zdWZmaXhl
cycsICd0eHQscG5nJywgJ3VzZXItc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCddXSkKKworICAg
IGRlZiB0ZXN0X25vX29wdGltaXplKHNlbGYpOgorICAgICAgICBvcHRpb25zID0gTW9ja09wdGlv
bnMob3B0aW1pemU9RmFsc2UsIHZlcmJvc2U9VHJ1ZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGlu
ZXM9RmFsc2UpCisgICAgICAgIHNlbGYuY29tbWFuZC5fcmViYXNlbGluZShvcHRpb25zLCAgeyJ1
c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ik1PQ0sgYnVpbGRlciAoRGVidWcpIjog
WyJ0eHQiLCAicG5nIl19fSkKKworICAgICAgICAjIE5vdGUgdGhhdCB3ZSBoYXZlIG9ubHkgb25l
IHJ1bl9pbl9wYXJhbGxlbCgpIGNhbGwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50
b29sLmV4ZWN1dGl2ZS5jYWxscywKKyAgICAgICAgICAgIFtbWydlY2hvJywgJ3JlYmFzZWxpbmUt
dGVzdC1pbnRlcm5hbCcsICctLXN1ZmZpeGVzJywgJ3R4dCxwbmcnLCAnLS1idWlsZGVyJywgJ01P
Q0sgYnVpbGRlciAoRGVidWcpJywgJy0tdGVzdCcsICd1c2VyLXNjcmlwdHMvYW5vdGhlci10ZXN0
Lmh0bWwnLCAnLS12ZXJib3NlJ11dXSkKKwogCiBjbGFzcyBUZXN0UmViYXNlbGluZShfQmFzZVRl
c3RDYXNlKToKICAgICAjIFRoaXMgY29tbWFuZCBzaGFyZXMgbW9zdCBvZiBpdHMgbG9naWMgd2l0
aCBSZWJhc2VsaW5lSnNvbiwgc28gdGhlc2UgdGVzdHMganVzdCB0ZXN0IHdoYXQgaXMgZGlmZmVy
ZW50LgpAQCAtMjkyLDcgKzMxMCw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lRXhwZWN0YXRpb25z
KF9CYXNlVGVzdENhc2UpOgogICAgICAgICBzZWxmLnRvb2wuZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGl2ZTIoKQogCiAgICAgICAgIHNlbGYuY29tbWFuZC5fdGVzdHNfdG9fcmViYXNlbGluZSA9IGxh
bWJkYSBwb3J0OiB7J3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJzogc2V0KFsndHh0J10p
LCAndXNlcnNjcmlwdHMvaW1hZ2VzLnN2Zyc6IHNldChbJ3BuZyddKX0KLSAgICAgICAgc2VsZi5j
b21tYW5kLmV4ZWN1dGUoTW9ja09wdGlvbnMob3B0aW1pemU9RmFsc2UsIHZlcmJvc2U9RmFsc2Up
LCBbXSwgc2VsZi50b29sKQorICAgICAgICBzZWxmLmNvbW1hbmQuZXhlY3V0ZShNb2NrT3B0aW9u
cyhvcHRpbWl6ZT1GYWxzZSwgdmVyYm9zZT1GYWxzZSwgbW92ZV9vdmVyd3JpdHRlbl9iYXNlbGlu
ZXM9RmFsc2UpLCBbXSwgc2VsZi50b29sKQogCiAgICAgICAgICMgRklYTUU6IGNoYW5nZSB0aGlz
IHRvIHVzZSB0aGUgdGVzdC0gcG9ydHMuCiAgICAgICAgIGNhbGxzID0gZmlsdGVyKGxhbWJkYSB4
OiB4ICE9IFsncW1ha2UnLCAnLXYnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5jYWxscykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZl
ci5weQppbmRleCBkZTY5OWNmN2Q4ZjE2ZWIzMGRiMjdhODkwMjg4ZTZhNGIzYmYzODA2Li5lYzA3
ODkzMTAyODVmMTdiYjkxYTNjZTZmZmMzNWY1YTQ3ZTljZmUzIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5CkBAIC0y
Nyw2ICsyNyw3IEBAIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBv
cnQgc3lzCitpbXBvcnQgdXJsbGliCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGlt
cG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS50b29sLnNlcnZlcnMucmVmbGVjdGlvbmhhbmRs
ZXIgaW1wb3J0IFJlZmxlY3Rpb25IYW5kbGVyCkBAIC01OCw4ICs1OSwxMCBAQCBjbGFzcyBHYXJk
ZW5pbmdIVFRQU2VydmVyKEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgogICAgICAgICBzZWxm
Lm9wdGlvbnMgPSBjb25maWdbJ29wdGlvbnMnXQogICAgICAgICBCYXNlSFRUUFNlcnZlci5IVFRQ
U2VydmVyLl9faW5pdF9fKHNlbGYsIChzZXJ2ZXJfbmFtZSwgaHR0cGRfcG9ydCksIEdhcmRlbmlu
Z0hUVFBSZXF1ZXN0SGFuZGxlcikKIAotICAgIGRlZiB1cmwoc2VsZik6Ci0gICAgICAgIHJldHVy
biAnZmlsZTovLycgKyBvcy5wYXRoLmpvaW4oR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyLlNU
QVRJQ19GSUxFX0RJUkVDVE9SWSwgJ2dhcmRlbi1vLW1hdGljLmh0bWwnKQorICAgIGRlZiB1cmwo
c2VsZiwgYXJncz1Ob25lKToKKyAgICAgICAgIyBXZSBjYW4ndCB1c2UgdXJsbGliLmVuY29kZSgp
IGhlcmUgYmVjYXVzZSB0aGF0IGVuY29kZXMgc3BhY2VzIGFzIHBsdXMgc2lnbnMgYW5kIHRoZSBi
dWlsZGJvdHMgZG9uJ3QgZGVjb2RlIHRob3NlIHByb3Blcmx5LgorICAgICAgICBhcmdfc3RyaW5n
ID0gKCc/JyArICcmJy5qb2luKCIlcz0lcyIgJSAoa2V5LCB1cmxsaWIucXVvdGUodmFsdWUpKSBm
b3IgKGtleSwgdmFsdWUpIGluIGFyZ3MuaXRlbXMoKSkpIGlmIGFyZ3MgZWxzZSAnJworICAgICAg
ICByZXR1cm4gJ2ZpbGU6Ly8nICsgb3MucGF0aC5qb2luKEdhcmRlbmluZ0hUVFBSZXF1ZXN0SGFu
ZGxlci5TVEFUSUNfRklMRV9ESVJFQ1RPUlksICdnYXJkZW4tby1tYXRpYy5odG1sJyArIGFyZ19z
dHJpbmcpCiAKIAogY2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxlY3Rpb25I
YW5kbGVyKToKQEAgLTEwNiw2ICsxMDksMTAgQEAgY2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RI
YW5kbGVyKFJlZmxlY3Rpb25IYW5kbGVyKToKIAogICAgIGRlZiByZWJhc2VsaW5lYWxsKHNlbGYp
OgogICAgICAgICBjb21tYW5kID0gWydyZWJhc2VsaW5lLWpzb24nXQorICAgICAgICBpZiBzZWxm
LnNlcnZlci5vcHRpb25zLm1vdmVfb3ZlcndyaXR0ZW5fYmFzZWxpbmVzOgorICAgICAgICAgICAg
Y29tbWFuZC5hcHBlbmQoJy0tbW92ZS1vdmVyd3JpdHRlbi1iYXNlbGluZXMnKQorICAgICAgICBp
ZiBub3Qgc2VsZi5zZXJ2ZXIub3B0aW9ucy5vcHRpbWl6ZToKKyAgICAgICAgICAgIGNvbW1hbmQu
YXBwZW5kKCctLW5vLW9wdGltaXplJykKICAgICAgICAgaWYgc2VsZi5zZXJ2ZXIub3B0aW9ucy52
ZXJib3NlOgogICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoJy0tdmVyYm9zZScpCiAgICAgICAg
IGpzb25faW5wdXQgPSBzZWxmLnJlYWRfZW50aXR5X2JvZHkoKQo=
</data>
<flag name="review"
          id="185702"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>