<?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>81659</bug_id>
          
          <creation_ts>2012-03-20 06:53:25 -0700</creation_ts>
          <short_desc>[GTK] crash log reports support</short_desc>
          <delta_ts>2012-04-03 08:23:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583025</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-20 06:53:25 -0700</bug_when>
    <thetext>When a test crash the &quot;crash log&quot; link in the results page should provide the stacktrace and state of all the running threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583116</commentid>
    <comment_count>1</comment_count>
      <attachid>132836</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-20 09:02:55 -0700</bug_when>
    <thetext>Created attachment 132836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583192</commentid>
    <comment_count>2</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-20 10:25:57 -0700</bug_when>
    <thetext>I&apos;m not sure about the move of the CrashLog logic to the Port infrastructure, I can undo this change if needed but I&apos;d need the new crashmon/daemontools code to be called only in GTK for now and I don&apos;t see how to reliably test this (sys.platform == &quot;linux2&quot; won&apos;t work, other ports run on Linux).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583391</commentid>
    <comment_count>3</comment_count>
      <attachid>132836</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-20 13:08:59 -0700</bug_when>
    <thetext>Comment on attachment 132836
Patch

I am a bit of two minds as to whether these routines belong on the Port object or under common/system somewhere. I think I agree that figuring out what the right crash log is is a property of the Port and not the operating system, since, for example, chromium uses different mechanisms than apple on the mac or Gtk on Linux.

Adam, Eric, any thoughts?

Apart from that, this approach seems reasonable but we need to merge it with the clean up I&apos;m doing in bugs 81600 and 81603. Also, you might care about the change in bug 81575. 


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

&gt; Tools/Scripts/webkitpy/common/system/executive.py:264
&gt; +                return e.errno == errno.EPERM

Why is this change needed? I don&apos;t understand what was failing before or is fixed now ...

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:65
&gt; +            writer.write_crash_report(crashed_driver_output.crashed_process_name, crashed_driver_output.error, driver_output.pid)

We should coordinate this change with my patches in bug 81603 and 81600 - the driver should return the crash log and the test result writer should just use that.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:166
&gt; +        fs.write_text_file(filename, log if log else error.decode(&quot;utf-8&quot;))

see above.

&gt; Tools/Scripts/webkitpy/layout_tests/port/driver.py:67
&gt; +            test_time=0, timeout=False, error=&apos;&apos;, crashed_process_name=None, pid=None):

see above; I think this should be crashed_pid, not pid.

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:146
&gt; +        return process_name == &apos;gdb-dump&apos;

This function goes away w/ the patch in bug 81600 ...

&gt; Tools/Scripts/webkitpy/tool/commands/queries.py:375
&gt; +        for port_name in tool.port_factory.all_port_names():

You probably don&apos;t want to iterate across all_port_names(), since that could presumably get you the same crash log multiple times.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583936</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-21 02:41:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 132836 [details])
&gt; I am a bit of two minds as to whether these routines belong on the Port object or under common/system somewhere. I think I agree that figuring out what the right crash log is is a property of the Port and not the operating system, since, for example, chromium uses different mechanisms than apple on the mac or Gtk on Linux.
&gt; 
&gt; Adam, Eric, any thoughts?
&gt; 
&gt; Apart from that, this approach seems reasonable but we need to merge it with the clean up I&apos;m doing in bugs 81600 and 81603. Also, you might care about the change in bug 81575. 
&gt; 

Ok I&apos;ll hold my horse on these bugs then :)

&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132836&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/executive.py:264
&gt; &gt; +                return e.errno == errno.EPERM
&gt; 
&gt; Why is this change needed? I don&apos;t understand what was failing before or is fixed now ...
&gt; 

When I was testing our crashmon script and running it as root I was hitting this issue. Running the tests as a normal user I wasn&apos;t able to send the 0 signal to the crashmon process executed by root.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:65
&gt; &gt; +            writer.write_crash_report(crashed_driver_output.crashed_process_name, crashed_driver_output.error, driver_output.pid)
&gt; 
&gt; We should coordinate this change with my patches in bug 81603 and 81600 - the driver should return the crash log and the test result writer should just use that.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:166
&gt; &gt; +        fs.write_text_file(filename, log if log else error.decode(&quot;utf-8&quot;))
&gt; 
&gt; see above.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/driver.py:67
&gt; &gt; +            test_time=0, timeout=False, error=&apos;&apos;, crashed_process_name=None, pid=None):
&gt; 
&gt; see above; I think this should be crashed_pid, not pid.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:146
&gt; &gt; +        return process_name == &apos;gdb-dump&apos;
&gt; 
&gt; This function goes away w/ the patch in bug 81600 ...
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/tool/commands/queries.py:375
&gt; &gt; +        for port_name in tool.port_factory.all_port_names():
&gt; 
&gt; You probably don&apos;t want to iterate across all_port_names(), since that could presumably get you the same crash log multiple times.

So when I find the first, print it and exit early?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>584575</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-21 13:37:17 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; &gt; Tools/Scripts/webkitpy/common/system/executive.py:264
&gt; &gt; &gt; +                return e.errno == errno.EPERM
&gt; &gt; 
&gt; &gt; Why is this change needed? I don&apos;t understand what was failing before or is fixed now ...
&gt; &gt; 
&gt; 
&gt; When I was testing our crashmon script and running it as root I was hitting this issue. Running the tests as a normal user I wasn&apos;t able to send the 0 signal to the crashmon process executed by root.
&gt;

OK.
 
&gt; &gt; &gt; Tools/Scripts/webkitpy/tool/commands/queries.py:375
&gt; &gt; &gt; +        for port_name in tool.port_factory.all_port_names():
&gt; &gt; 
&gt; &gt; You probably don&apos;t want to iterate across all_port_names(), since that could presumably get you the same crash log multiple times.
&gt; 
&gt; So when I find the first, print it and exit early?

That&apos;s probably as good as anything else I can think of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589013</commentid>
    <comment_count>6</comment_count>
      <attachid>134094</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-27 10:20:35 -0700</bug_when>
    <thetext>Created attachment 134094
Path</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589316</commentid>
    <comment_count>7</comment_count>
      <attachid>134094</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-03-27 14:52:14 -0700</bug_when>
    <thetext>Comment on attachment 134094
Path

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

Looks good, but I&apos;d rather someone more familiar with the crash dumping code do the final review. I have left some comments below.

&gt; Tools/BuildSlaveSupport/gtk/README:-23
&gt; -==============================================
&gt; - Running a GTK+ build slave under daemontools
&gt; -==============================================
&gt; -
&gt; -This directory contains several scripts which can be used to run a WebKitGTK+
&gt; -build slave under daemontools [1]. This is convenient because daemontools
&gt; -will automatically restart services when they die, and that means less human
&gt; -intervention is needed.
&gt; -
&gt; -
&gt; -Dependencies
&gt; -============
&gt; -
&gt; -In order to use the provided service control files, you will need the
&gt; -following:
&gt; -
&gt; -* The GNU Bash shell (the scripts contain some bash-isms)
&gt; -
&gt; -* The daemontools package (or one of its drop-in replacements, like runit
&gt; -  or freedt; but only daemontools has been tested so far).
&gt; -
&gt; -* The crash dump monitor also uses &quot;inotifywait&quot; (part of inotify-tools [2])
&gt; -

Did you mean to remove all of this README? Not all of it deals with crashmon.

&gt; Tools/Scripts/new-run-webkit-tests:61
&gt; +        jhbuild = os.path.join(script_dir, &apos;..&apos;, &apos;gtk&apos;, &apos;run-with-jhbuild&apos;)
&gt; +        cmd.insert(1, jhbuild)

This can be one line.

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:156
&gt; +        name_str = name or &apos;&lt;unknown process name&gt;&apos;
&gt; +        pid_str = str(pid or &apos;&lt;unknown&gt;&apos;)

Okay, just a nit but you should use full words, unless the abbreviation would be more canonical. So IMO pid is good and str is bad.

In what cases is pid == None? If pid can be None and name can be None shouldn&apos;t you handle that case explicitly and do an early return?

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:164
&gt; +        expected_crash_dump_filename = &quot;core-pid_%s-_-process_%s&quot; % (pid_str, name_str)
&gt; +        if pid:
&gt; +            match_filename = lambda name: name == expected_crash_dump_filename
&gt; +        else:
&gt; +            match_filename = lambda name: name.find(name_str) &gt; -1

I think would be more clear as:

def match_filename(name):
    if pid:
        return name == expected_crash_dump_filename
    return name.find(name_str) &gt; -1

If it&apos;s frequent that pid is None, wouldn&apos;t it be better to simply find the dump with the most recent timestamp?

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:166
&gt; +        for path in reversed(sorted(dumps)):

Perhaps the sorting here ensures that the most recent dump is selected? I&apos;m just guessing, so maybe it deserves a comment.

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:170
&gt; +        stderr_lines = errors + (stderr or &apos;&lt;empty&gt;&apos;).decode(&apos;utf8&apos;).splitlines()

What guarantee do we have that stderr is in UTF-8 format?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589594</commentid>
    <comment_count>8</comment_count>
      <attachid>134094</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-27 19:12:36 -0700</bug_when>
    <thetext>Comment on attachment 134094
Path

The patch generally looks pretty good to me, just a few nits ...

&gt;&gt; Tools/Scripts/new-run-webkit-tests:61
&gt;&gt; +        cmd.insert(1, jhbuild)
&gt; 
&gt; This can be one line.

Ew, this feels like a hack; then again, so is much of this file :(

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:156
&gt;&gt; +        pid_str = str(pid or &apos;&lt;unknown&gt;&apos;)
&gt; 
&gt; Okay, just a nit but you should use full words, unless the abbreviation would be more canonical. So IMO pid is good and str is bad.
&gt; 
&gt; In what cases is pid == None? If pid can be None and name can be None shouldn&apos;t you handle that case explicitly and do an early return?

pid is None if WebProcess crashes but we&apos;re not told the pid of the WebProcess (which I think is currently always on the GTk, and will be until you add support for that). name is probably never None now.

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:165
&gt; +        dumps = self._filesystem.files_under(log_directory)

note that you can pass match_filename as a filter to files_under() directly.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:170
&gt;&gt; +        stderr_lines = errors + (stderr or &apos;&lt;empty&gt;&apos;).decode(&apos;utf8&apos;).splitlines()
&gt; 
&gt; What guarantee do we have that stderr is in UTF-8 format?

I&apos;m not actually sure that it&apos;s always (or even ever) in UTF-8; I saw a crash earlier today on the chromium mac 10.6 bot when we failed to decode something as utf-8, so we might want to trap a codec error here and try it the other way as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589731</commentid>
    <comment_count>9</comment_count>
      <attachid>134234</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-28 01:13:10 -0700</bug_when>
    <thetext>Created attachment 134234
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590252</commentid>
    <comment_count>10</comment_count>
      <attachid>134234</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-28 12:15:53 -0700</bug_when>
    <thetext>Comment on attachment 134234
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/gtk.py:173
&gt; +        stderr_lines = errors + (stderr or &apos;&lt;empty&gt;&apos;).decode(&apos;utf8&apos;, errors=&apos;ignore&apos;).splitlines()

errors=&apos;ignore&apos;, huh? didn&apos;t know about that ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591941</commentid>
    <comment_count>11</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-30 01:12:03 -0700</bug_when>
    <thetext>Thanks for the review! However I think I&apos;ll upload a new iteration of the patch, removing the --coredump-dir command line and using an environment variable instead. It should ease deployment on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591999</commentid>
    <comment_count>12</comment_count>
      <attachid>134760</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-30 02:58:02 -0700</bug_when>
    <thetext>Created attachment 134760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594502</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-04-03 08:23:30 -0700</bug_when>
    <thetext>Committed r113037: &lt;http://trac.webkit.org/changeset/113037&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132836</attachid>
            <date>2012-03-20 09:02:55 -0700</date>
            <delta_ts>2012-03-27 10:20:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>48257</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBhN2JiMDA4MTA5YzJhYzMwNTU4NmUxZGVjY2YxZmM2ZjdjZmRkNmQ0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDIwIE1hciAyMDEyIDE1OjM3OjA2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9u
ICAgICAgfCAgIDU5ICsrKystLS0tLS0tCiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jh
c2htb24vZ2RiLWR1bXAgICAgICB8ICAgIDQgKwogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3Rr
L2NyYXNobW9uL3J1biAgICAgICAgICAgfCAgIDQ0ICsrLS0tLS0tCiAuLi4vZ3RrL2RhZW1vbnRv
b2xzLWJ1aWxkYm90LmNvbmYgICAgICAgICAgICAgICAgICB8ICAgMzAgKy0tLS0tCiBUb29scy9D
aGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNTkgKysrKysr
KysrKysKIFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMgICAgICAgICAgICAgICAg
IHwgICAgOCArKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9n
cy5weSAgfCAgIDcyIC0tLS0tLS0tLS0tLS0KIC4uLi93ZWJraXRweS9jb21tb24vc3lzdGVtL2Ny
YXNobG9nc191bml0dGVzdC5weSAgIHwgIDEwOCAtLS0tLS0tLS0tLS0tLS0tLS0tLQogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZS5weSAgfCAgICA1ICstCiAu
Li4vbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weSB8ICAgMTIg
Ky0tCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5ICB8
ICAgMzIgKysrKysrCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkgICB8ICAgIDMgKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9kcml2ZXIucHkgfCAgICAzICstCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0ay5weSAgICB8ICAgMzUgKysrKysrLQogLi4uL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0a191bml0dGVzdC5weSAgICAgfCAgIDgyICsrKysrKysrKysrKysrKwogLi4uL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSAgICAgfCAgIDgyICsrKysr
KysrKysrKysrKy0KIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vi
a2l0LnB5IHwgICAgMiArLQogLi4uL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
ICAgICAgICAgICAgfCAgICAyICstCiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvcXVlcmllcy5weSAgICB8ICAgIDggKy0KIDE5IGZpbGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRp
b25zKCspLCAyOTUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA3NTUgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2dkYi1kdW1wCiBkZWxldGUgbW9kZSAxMDA2NDQgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQogZGVsZXRlIG1v
ZGUgMTAwNjQ0IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3Nf
dW5pdHRlc3QucHkKCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jh
c2htb24vY3Jhc2htb24gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vY3Jh
c2htb24KaW5kZXggNDE3MDVhMi4uNjBhOTVlZSAxMDA3NTUKLS0tIGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2d0ay9jcmFzaG1vbi9jcmFzaG1vbgpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vYmFzaAog
IwotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2FybG9zIExvcGV6IDxjbG9wZXpAaWdhbGlhLmNvbT4s
IElnYWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiAgSWdhbGlhIFMuTC4KICMK
ICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMTksNiArMTksMTAgQEAKIAogc2V0IC1lCiAKK1sgIiR7cmVwb3J0
c2Rpcn0iIF0gfHwgeworICAgIGVjaG8gIkVudiB2YXIgJ1wke3JlcG9ydHNkaXJ9JyBub3QgZGVm
aW5lZCEiID4mMgorICAgIGV4aXQgMTExCit9CiBbICIke2NvcmVkaXJ9IiBdIHx8IHsKICAgICBl
Y2hvICJFbnYgdmFyICdcJHtjb3JlZGlyfScgbm90IGRlZmluZWQhIiA+JjIKICAgICBleGl0IDEx
MQpAQCAtMjcsNDcgKzMxLDI4IEBAIHNldCAtZQogICAgIGVjaG8gIkVudiB2YXIgJ1wke3Byb2dy
YW1wYXRofScgbm90IGRlZmluZWQiID4mMgogICAgIGV4aXQgMTExCiB9Ci1bICIke2FyY2h9IiBd
IHx8IHsKLSAgICBlY2hvICJFbnYgdmFyICdcJHthcmNofScgbm90IGRlZmluZWQiID4mMgotICAg
IGV4aXQgMTExCi19Ci1bICIke21haWx0b30iIF0gfHwgewotICAgIGVjaG8gIkVudiB2YXIgJ1wk
e21haWx0b30nIG5vdCBkZWZpbmVkIiA+JjIKLSAgICBleGl0IDExMQotfQogCisjIGh0dHA6Ly9z
dGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTk4OTUvY2FuLWEtYmFzaC1zY3JpcHQtdGVsbC13
aGF0LWRpcmVjdG9yeS1pdHMtc3RvcmVkLWluCitTT1VSQ0U9IiR7QkFTSF9TT1VSQ0VbMF19Igor
d2hpbGUgWyAtaCAiJFNPVVJDRSIgXSA7IGRvIFNPVVJDRT0iJChyZWFkbGluayAiJFNPVVJDRSIp
IjsgZG9uZQorYmFzZWRpcj0iJCggY2QgLVAgIiQoIGRpcm5hbWUgIiRTT1VSQ0UiICkiICYmIHB3
ZCApIgogCi1pbm90aWZ5d2FpdCAtcSAtbSAtLWZvcm1hdCAnJWYnIC0tZXhjbHVkZSAnLnRyYWNl
Lmh0bWwkJyAtZSBjbG9zZV93cml0ZSAiJHtjb3JlZGlyfSIgfCBcCitpbm90aWZ5d2FpdCAtcSAt
bSAtLWZvcm1hdCAnJWYnIC1lIGNsb3NlX3dyaXRlICIke2NvcmVkaXJ9IiB8IFwKIHdoaWxlIHJl
YWQgLXIgY29yZWR1bXAKIGRvCi0JaWYgZ3JlcCAtcUUgJ15jb3JlLXdoZW5fW1s6ZGlnaXQ6XV17
MTBcLDEyfS1fLXdob19bWzpwcmludDpdXSstXy13aHlfJyA8PDwgIiR7Y29yZWR1bXB9IgotCXRo
ZW4KLQkJIyBHZXQgcmV2aXNpb24gbnVtYmVyIGZyb20gU3VidmVyc2lvbiBzb3VyY2VzCi0JCXJl
dj0kKGNkICIke2NyYXNobW9uX3NyY19wYXRofSIgJiYgc3ZuIGluZm8gfCBzZWQgLWUgJy9eUmV2
aXNpb246L3MvUmV2aXNpb246IC8vcCcgLWUgZCkKKwljb3JlZHVtcF9hYnNvbHV0ZV9wYXRoPSIk
e2NvcmVkaXJ9LyR7Y29yZWR1bXB9IgogCi0JCSMgR2V0IHRoZSB3aG8gZnJvbSB0aGUgY29yZWR1
bXAgbmFtZQotCQlwcm9ncmFtZmlsZT0kKGVjaG8gIiR7Y29yZWR1bXB9IiAgXAorCSMgR2V0IHRo
ZSB3aG8gZnJvbSB0aGUgY29yZWR1bXAgbmFtZQorCXByb2dyYW1maWxlPSQoZWNobyAiJHtjb3Jl
ZHVtcF9hYnNvbHV0ZV9wYXRofSIgIFwKIAkJCXwgYXdrIC1GJy1fLXdob18nICd7IHByaW50ICQy
IH0nXAogCQkJfCBhd2sgLUYnLV8td2h5XycgJ3sgcHJpbnQgJDEgfScpCi0KLQkJIyBTb21ldGlt
ZXMgcHJvZ3JhbWZpbGUgZ2V0cyBjdXQgd2hlbiBpdCBpcyBhIGxvbmcgbmFtZToKLQkJIyBTZWFy
Y2ggdXNpbmcgd2lsZGNhcmRzCi0JCWZ1bGxwcm9ncmFtcGF0aD0kKGZpbmQgIiR7cHJvZ3JhbXBh
dGh9IiAtZXhlY3V0YWJsZSAtbmFtZSAiJHtwcm9ncmFtZmlsZX0iXCogfCBoZWFkIC1uMSkKLQot
CQkoIHByaW50ZiAiPGh0bWw+PGhlYWQ+PHRpdGxlPlN0YWNrVHJhY2UgZm9yICR7cHJvZ3JhbWZp
bGV9IGZyb20gc3ZuIgotCQkJcHJpbnRmICIgcmV2ICR7cmV2fTwvdGl0bGU+PC9oZWFkPlxuPGJv
ZHk+Q29yZSBkdW1wIGZpbGU6ICIKLQkJCXByaW50ZiAiPGEgaHJlZj1cImNvcmVzLyR7Y29yZWR1
bXB9XCI+JHtjb3JlZHVtcH08L2E+PGJyLz5cbiIKLQkJCXByaW50ZiAiPHByZT5FeGVjdXRhYmxl
IGNyYXNoZWQ6ICR7ZnVsbHByb2dyYW1wYXRofTwvcHJlPlxuIgotCQkJcHJpbnRmICI8YnIvPjxo
cj48Yj5TdGFjayBUcmFjZTo8L2I+PGhyPjxici8+XG48cHJlPiIKLQotCQkJZ2RiIC1leCAidGhy
ZWFkIGFwcGx5IGFsbCBidCIgLS1iYXRjaCAiJHtmdWxscHJvZ3JhbXBhdGh9IiAiJHtjb3JlZHVt
cH0iIDI+JjEgXAotCQkJCXwgc2VkIC1lICdzL1wmL1wmYW1wL2c7cy88L1wmbHQ7L2c7cy8+L1wm
Z3Q7L2c7cy9cIi9cJnF1b3Q7L2cnIC1lICJzLycvXCZcIzAzOTsvZyIKLQotCQkJcHJpbnRmICI8
L3ByZT48L2JvZHk+PC9odG1sPlxuIgotCQkpID4gIi92YXIvd3d3L3N2bl8ke3Jldn0uJHtjb3Jl
ZHVtcH0udHJhY2UuaHRtbCIKLQotCQkjIE1ha2Ugc3VyZSB0aGUgd2ViIHNlcnZlciBjYW4gcmVh
ZCBpdAotCQljaG1vZCA2NDQgIiR7Y29yZWR1bXB9IgotCWZpCisJcGlkPSQoZWNobyAiJHtjb3Jl
ZHVtcF9hYnNvbHV0ZV9wYXRofSIgIFwKKwkJCXwgYXdrIC1GJy1waWRfJyAneyBwcmludCAkMiB9
J1wKKwkJCXwgYXdrIC1GJy1fLXdob18nICd7IHByaW50ICQxIH0nKQorCSMgU29tZXRpbWVzIHBy
b2dyYW1maWxlIGdldHMgY3V0IHdoZW4gaXQgaXMgYSBsb25nIG5hbWU6CisJIyBTZWFyY2ggdXNp
bmcgd2lsZGNhcmRzCisJZnVsbHByb2dyYW1wYXRoPSQoZmluZCAiJHtwcm9ncmFtcGF0aH0iIC1l
eGVjdXRhYmxlIC1uYW1lICIke3Byb2dyYW1maWxlfSJcKiB8IGhlYWQgLW4xKQorCisJcmVwb3J0
cGF0aD0iJHtyZXBvcnRzZGlyfS8ke3BpZH0uJHtwcm9ncmFtZmlsZX0uZHVtcCIKKwkke2Jhc2Vk
aXJ9L2dkYi1kdW1wICIke2Z1bGxwcm9ncmFtcGF0aH0iICIke2NvcmVkdW1wX2Fic29sdXRlX3Bh
dGh9IiAiJHtyZXBvcnRwYXRofSIKIGRvbmUKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2dkYi1kdW1wIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL2NyYXNobW9uL2dkYi1kdW1wCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAu
LjRlNzI0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsv
Y3Jhc2htb24vZ2RiLWR1bXAKQEAgLTAsMCArMSw0IEBACisjIS9iaW4vc2gKKworZ2RiIC1leCAi
dGhyZWFkIGFwcGx5IGFsbCBidCIgLS1iYXRjaCAiJDEiICIkMiIgPiAiJDMiCitzeW5jCmRpZmYg
LS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vcnVuIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1bgppbmRleCAzOGJlM2ZlLi5kODQxNWUy
IDEwMDc1NQotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vcnVuCisr
KyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9ydW4KQEAgLTEsNiArMSw2
IEBACiAjISAvYmluL2Jhc2gKICMKLSMgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBJZ2FsaWEgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw1MCArMjUsMzAg
QEAgZXhlYyAyPiYxCiBbIC1yICIke0JVSUxEQk9UX0NPTkZJR30iIF0gJiYgLiAiJHtCVUlMREJP
VF9DT05GSUd9IgogCiA6ICR7YnVpbGRib3RfdXNlcjo9JHtVU0VSOi0ke0xPR05BTUV9fX0KLTog
JHtjcmFzaG1vbl9vdXRwdXQ6PScnfQorOiAke2NyYXNobW9uX2NvcmVkdW1wc19vdXRwdXQ6PScn
fQorOiAke2NyYXNobW9uX3JlcG9ydHNfb3V0cHV0Oj0nJ30KIAogIyBFeHBhbmQgYWxsICJlbnZf
KiIgZW52aXJvbm1lbnQgdmFyaWFibGVzCiBmb3IgdmFybmFtZSBpbiAkeyFlbnZfKn0gOyBkbwog
CWV2YWwgImV4cG9ydCAke3Zhcm5hbWUjZW52X309XCR7JHt2YXJuYW1lfX0iCiBkb25lCiAKK2Vj
aG8gIiR7Y3Jhc2htb25fY29yZWR1bXBzX291dHB1dH0vY29yZS1waWRfJXAtXy13aG9fJWUtXy13
aHlfJXMiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KIAotaWYgWyAhIC1kICIke2Ny
YXNobW9uX291dHB1dH0iIF0KLXRoZW4KLQlpZiAhIFsgIiR7Y3Jhc2htb25fb3V0cHV0fSIgXQot
CXRoZW4KLQkJZWNobyAiRHVtcCBkaXJlY3RvcnkgJyR7Y3Jhc2htb25fb3V0cHV0fScgZG9lcyBu
b3QgZXhpc3QgKHNsZWVwaW5nKSIKLQlmaQotCXNsZWVwICQoKCA2MCAqIDYwICogNCApKQotCWV4
aXQgMTExCi1maQorbWtkaXIgLXAgIiR7Y3Jhc2htb25fcmVwb3J0c19vdXRwdXR9IgorbWtkaXIg
LXAgIiR7Y3Jhc2htb25fY29yZWR1bXBzX291dHB1dH0iCiAKK2Nob3duIC1SICIke2J1aWxkYm90
X3VzZXJ9IiAiJHtjcmFzaG1vbl9jb3JlZHVtcHNfb3V0cHV0fSIKK2Nob3duIC1SICIke2J1aWxk
Ym90X3VzZXJ9IiAiJHtjcmFzaG1vbl9yZXBvcnRzX291dHB1dH0iCiAKLWlmICEgWyAiJHtidWls
ZGJvdF9iaXRzfSIgXQotdGhlbgotCSMgR3Vlc3MgYml0cyAoMzIvNjQpIGZyb20gdW5hbWUgLW0K
LQltYWNoaW5lPSQodW5hbWUgLW0pCi0JY2FzZSAke21hY2hpbmV9IGluCi0JCXg4Nl82NCB8IGFt
ZDY0IHwgaWE2NCB8IHBwYzY0KQotCQkJYnVpbGRib3RfYml0cz0iNjQiIDs7Ci0JCSopCi0JCQli
dWlsZGJvdF9iaXRzPSIzMiIgOzsKLQllc2FjCi1maQotCi06ICR7Y3Jhc2htb25fYmluX3BhdGg6
PSIke2J1aWxkYm90X3BhdGh9L2d0ay1saW51eC0ke2J1aWxkYm90X2JpdHN9LWRlYnVnL2J1aWxk
L1dlYktpdEJ1aWxkL0RlYnVnL1Byb2dyYW1zIn0KLQotCi1jZCAiJHtjcmFzaG1vbl9vdXRwdXR9
IgogZXhlYyAvdXNyL2Jpbi9lbnYgLSAgICAgICAgICAgXAogCQlQQVRIPSIke1BBVEh9IiAgICAg
ICAgICAgICBcCiAJCVNIRUxMPSIvYmluL2Jhc2giICAgICAgICAgICBcCiAJCVVTRVI9IiR7YnVp
bGRib3RfdXNlcn0iICAgICAgXAotCQlhcmNoPSIke2J1aWxkYm90X2JpdHN9IiAgICAgICBcCiAJ
CUxPR05BTUU9IiR7YnVpbGRib3RfdXNlcn0iICAgICBcCi0JCWNvcmVkaXI9IiR7Y3Jhc2htb25f
b3V0cHV0fSIgICAgXAogCQlIT01FPSIvaG9tZS8ke2J1aWxkYm90X3VzZXJ9IiAgICBcCi0JCW1h
aWx0bz0iJHtjcmFzaG1vbl9tYWlsdG86LScnfSIgICBcCi0JCXByb2dyYW1wYXRoPSIke2NyYXNo
bW9uX2Jpbl9wYXRofSIgXAotCS91c3IvYmluL3NldHVpZGdpZCAiJHtidWlsZGJvdF91c2VyfSIg
IiQocHdkKS9jcmFzaG1vbiIKKwkJcHJvZ3JhbXBhdGg9IiR7Y3Jhc2htb25fcHJvZ3JhbXNfcGF0
aH0iIFwKKwkJY29yZWRpcj0iJHtjcmFzaG1vbl9jb3JlZHVtcHNfb3V0cHV0fSIgXAorCQlyZXBv
cnRzZGlyPSIke2NyYXNobW9uX3JlcG9ydHNfb3V0cHV0fSIgXAorCS91c3IvYmluL3NldHVpZGdp
ZCAiJHtidWlsZGJvdF91c2VyfSIgJHtidWlsZGJvdF9wYXRofS9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ndGsvY3Jhc2htb24vY3Jhc2htb24KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZ3RrL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmYgYi9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ndGsvZGFlbW9udG9vbHMtYnVpbGRib3QuY29uZgppbmRleCA1OWMxYzBiLi5kNWYx
YmNmIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvZGFlbW9udG9vbHMt
YnVpbGRib3QuY29uZgorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvZGFlbW9udG9v
bHMtYnVpbGRib3QuY29uZgpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEln
YWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MiBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
OCwyNCArMjgsMTEgQEAgYnVpbGRib3RfdXNlcj0ic2xhdmUiCiAjCiBidWlsZGJvdF9sb2dfcGF0
aD0iL3Zhci9sb2cvYnVpbGRib3QiCiAKLQotIyBEaXNwbGF5IG51bWJlciB1bmRlciB3aGljaCBY
dmZiIHdpbGwgcnVuCi0jCi14dmZiX2Rpc3BsYXk9IjoxMCIKLQotIyBHcmFwaGljYWwgbW9kZSB3
aGljaCBYdmZiIHdpbGwgcmVwb3J0IHRvIGFwcGxpY2F0aW9ucwotIwoteHZmYl9tb2RlPSIxMDI0
eDc2OHgyNCIKLQotIyBQYXRoIHRvIGEgZGlyZWN0b3J5IHdoZXJlIHRvIGxvZyBYdmZiIGVycm9y
IG91dHB1dAotIwoteHZmYl9sb2dfcGF0aD0iL3Zhci9sb2cveHZmYiIKLQotCiAjIE91dHB1dCBk
aXJlY3RvcnkgZm9yIGNvcmUgZHVtcHMuIFNldCB0aGlzIHRvIGFuIGVtcHR5IHN0cmluZyB0bwog
IyBkaXNhYmxlIHJlY29yZGluZyB0aGVtLgogIwotY3Jhc2htb25fb3V0cHV0PSIvdmFyL3d3dy93
ZWJraXRndGstY29yZWR1bXBzIgorY3Jhc2htb25fY29yZWR1bXBzX291dHB1dD0iL3Zhci93d3cv
d2Via2l0Z3RrLWNvcmVkdW1wcyIKK2NyYXNobW9uX3JlcG9ydHNfb3V0cHV0PSIvaG9tZS8ke2J1
aWxkYm90X3VzZXJ9L2NyYXNoLXJlcG9ydHMiCiAKICMgTWF4aW11bSBzaXplIG9mIGNvcmUgZHVt
cHMuIFdpdGggdGhlIGRlZmF1bHQgInVubGltaXRlZCIgc2V0dGluZwogIyBpdCBpcyByZWNvbW1l
bmRlZCB0byBoYXZlIH4yMEdCIGZvciBjb3JlcyBpbiA2NC1iaXQgbWFjaGluZXMuCkBAIC01Nywx
OCArNDQsMTAgQEAgY3Jhc2htb25fbWF4X3NpemU9InVubGltaXRlZCIKICMKIGNyYXNobW9uX2xv
Z19wYXRoPSIvdmFyL2xvZy9jcmFzaG1vbiIKIAotIyBBIGxpc3Qgb2YgZS1tYWlsIGFkZHJlc3Nl
cyB3aGVyZSB0byBzZW5kIG5vdGlmaWNhdGlvbnMgb2YgY29yZSBkdW1wcy4KLSMgTGVhdmUgZW1w
dHkgdG8gZGlzYWJsZSBtYWlsIG5vdGlmaWNhdGlvbnMuCi0jCi0jIFdBUk5JTkc6IEUtbWFpbCBh
ZGRyZXNzZXMgd2lsbCBiZSBmbG9vZGVkIHdpdGggbWVzc2FnZXMhCi0jCi1jcmFzaG1vbl9tYWls
dG89IiIKLQogIyBCYXNlIGRpcmVjdG9yeSB3aGVyZSB0byBmaW5kIHNvdXJjZXMgYW5kIGJ1aWx0
IGJpbmFyaWVzIG9mIHdoaWNoCiAjIGNyYXNoIGR1bXBzIGFyZSB0byBiZSBjYXRjaGVkLiBVc3Vh
bGx5IHlvdSB3aWxsIG5vdCBuZWVkIHRvIGNoYW5nZSB0aGlzLgogIwotY3Jhc2htb25fc3JjX3Bh
dGg9IiR7YnVpbGRib3RfcGF0aH0vZ3RrLWxpbnV4LSR7YnVpbGRib3RfYml0c30tZGVidWcvYnVp
bGQiCi1jcmFzaG1vbl9iaW5fcGF0aD0iJHtjcmFzaG1vbl9zcmNfcGF0aH0vV2ViS2l0QnVpbGQv
RGVidWcvUHJvZ3JhbXMiCitjcmFzaG1vbl9wcm9ncmFtc19wYXRoPSIvaG9tZS8ke2J1aWxkYm90
X3VzZXJ9L2J1aWxkL1dlYktpdEJ1aWxkL0RlYnVnL1Byb2dyYW1zIgogCiAKICMgSWYgeW91IHdh
bnQgdG8gdXNlIGNjYWNoZSwgc2V0IGEgcGF0aCB0byB3aGVyZSBzeW5saW5rcyB3aXRoIHRvb2wK
QEAgLTgyLDYgKzYxLDUgQEAgY2NhY2hlX3BhdGg9Ii91c3IvbGliL2NjYWNoZSIKICMKIGVudl9D
RkxBR1M9Ii1waXBlIgogZW52X0NYWEZMQUdTPSItcGlwZSIKLWVudl9XZWJLaXRNYWtlQXJndW1l
bnRzPSItajMiCiBlbnZfV0VCS0lUX1RFU1RGT05UUz0iL2hvbWUvJHtidWlsZGJvdF91c2VyfS90
ZXN0Zm9udHMiCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBkOTNmZjkzMS4uMmZhN2YxYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEyLTAzLTIwICBQaGlsaXBw
ZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBjcmFzaCBs
b2cgcmVwb3J0cyBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD04MTY1OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENyYXNoIGxvZyByZXBvcnQgdXBsb2FkIHN1cHBvcnQgZm9yIHRoZSBHVEsrIHBv
cnQuIE90aGVyIHBvcnRzCisgICAgICAgIHJ1bm5pbmcgb24gTGludXggY291bGQgcmV1c2UgdGhp
cyBhcHByb2FjaCB1c2luZyB0aGUgY3Jhc2htb24KKyAgICAgICAgc2NyaXB0IHByb3ZpZGVkIGlu
IEJ1aWxkU2xhdmVTdXBwb3J0LiBUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYQorICAgICAgICBy
ZWZhY3RvcmluZyBvZiB0aGUgd2Via2l0cHkgQ3Jhc2hMb2cgY2xhc3MgZnJvbSBpdHMgbW9kdWxl
IHRvIHRoZQorICAgICAgICBQb3J0IGNsYXNzLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBv
cnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uOgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0
ay9jcmFzaG1vbi9nZGItZHVtcDogQWRkZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL2NyYXNobW9uL3J1bjoKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ndGsvZGFlbW9u
dG9vbHMtYnVpbGRib3QuY29uZjoKKyAgICAgICAgKiBTY3JpcHRzL25ldy1ydW4td2Via2l0LXRl
c3RzOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3Mu
cHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2Ny
YXNobG9nc191bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5OgorICAgICAgICAoRXhlY3V0aXZlLmNoZWNrX3J1
bm5pbmdfcGlkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHk6CisgICAgICAgICh3cml0ZV90ZXN0X3Jlc3Vs
dCk6CisgICAgICAgIChUZXN0UmVzdWx0V3JpdGVyLndyaXRlX2NyYXNoX3JlcG9ydCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9hcHBsZS5weToKKyAgICAg
ICAgKEFwcGxlUG9ydC5fZ2VuZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMpOgorICAgICAg
ICAoQXBwbGVQb3J0KToKKyAgICAgICAgKEFwcGxlUG9ydC5fbG9nX2RpcmVjdG9yeSk6CisgICAg
ICAgIChBcHBsZVBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nKToKKyAgICAgICAgKEFwcGxlUG9y
dC5maW5kX25ld2VzdF9jcmFzaF9sb2cuaXNfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0LnRvLmZp
bmRfbmV3ZXN0X2NyYXNoX2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9kcml2ZXIucHk6CisgICAgICAgIChEcml2ZXJPdXRwdXQuX19pbml0X18pOgor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5OgorICAg
ICAgICAoR3RrRHJpdmVyLnN0b3ApOgorICAgICAgICAoR3RrUG9ydC5zaG93X3Jlc3VsdHNfaHRt
bF9maWxlKToKKyAgICAgICAgKEd0a1BvcnQpOgorICAgICAgICAoR3RrUG9ydC5pc19jcmFzaF9y
ZXBvcnRlcik6CisgICAgICAgIChHdGtQb3J0Ll9sb2dfZGlyZWN0b3J5KToKKyAgICAgICAgKEd0
a1BvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weToKKyAgICAgICAgKG1ha2VfbW9ja19j
cmFzaF9yZXBvcnRfbGludXgpOgorICAgICAgICAoR3RrUG9ydFRlc3QudGVzdF9zaG93X3Jlc3Vs
dHNfaHRtbF9maWxlKToKKyAgICAgICAgKEd0a1BvcnRUZXN0KToKKyAgICAgICAgKEd0a1BvcnRU
ZXN0LmFzc2VydExpbmVzRXF1YWwpOgorICAgICAgICAoR3RrUG9ydFRlc3QudGVzdF9maW5kX2xv
Z19saW51eCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgIChtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2Rhcndpbik6
CisgICAgICAgICh0ZXN0X2RlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKToKKyAgICAgICAgKGFzc2Vy
dExpbmVzRXF1YWwpOgorICAgICAgICAodGVzdF9maW5kX2xvZ19kYXJ3aW4pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAo
V2ViS2l0RHJpdmVyLnJ1bl90ZXN0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weToKKyAgICAgICAgKGV4ZWN1
dGUpOgorCiAyMDEyLTAzLTIwICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbQ2hyb21pdW1dIFVwZGF0ZSB0byBBbmRyb2lkIE5ESyByN2IKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMgYi9Ub29scy9TY3JpcHRzL25l
dy1ydW4td2Via2l0LXRlc3RzCmluZGV4IDhmN2NkMDQuLmM3MmM2MzQgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMKKysrIGIvVG9vbHMvU2NyaXB0cy9uZXct
cnVuLXdlYmtpdC10ZXN0cwpAQCAtNTIsNiArNTIsMTQgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKICAgICAgICAgZW52WydQWVRIT05QQVRIJ10gPSBzY3JpcHRfZGlyCiAgICAgbW9kdWxl
X3BhdGggPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2RpciwgJ3dlYmtpdHB5JywgJ2xheW91dF90ZXN0
cycsICdydW5fd2Via2l0X3Rlc3RzLnB5JykKICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsIG1v
ZHVsZV9wYXRoXSArIHN5cy5hcmd2WzE6XQorCisgICAgIyBXcmFwIHRoZSBOUldUIHByb2Nlc3Mg
aW4gdGhlIGpoYnVpbGQgZW52aXJvbm1lbnQgc28gRFJUIG9yIFdLVFIKKyAgICAjIGRvZXNuJ3Qg
bmVlZCB0byBkbyBpdCBhbmQgdGhlaXIgcHJvY2VzcyBpZCBhcyByZXBvcnRlZCBieQorICAgICMg
c3VicHJvY2Vzcy5Qb3BlbiBpcyBub3QgamhidWlsZCdzLgorICAgIGlmICctLWd0aycgaW4gc3lz
LmFyZ3ZbMTpdOgorICAgICAgICBqaGJ1aWxkID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICcu
LicsICdndGsnLCAncnVuLXdpdGgtamhidWlsZCcpCisgICAgICAgIGNtZC5pbnNlcnQoMSwgamhi
dWlsZCkKKwogICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgZW52PWVudikKICAgICB0
cnk6CiAgICAgICAgIHByb2Mud2FpdCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL2NyYXNobG9ncy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YzY0NzJkNi4uMDAwMDAwMAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vY3Jhc2hsb2dzLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotIyBDb3B5cmln
aHQgKGMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHN5cwotCi0KLWNsYXNzIENy
YXNoTG9ncyhvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlc3lzdGVtKToKLSAg
ICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KLQotICAgIGRlZiBmaW5kX25ld2Vz
dF9sb2coc2VsZiwgcHJvY2Vzc19uYW1lLCBwaWQ9Tm9uZSwgaW5jbHVkZV9lcnJvcnM9RmFsc2Up
OgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6Ci0gICAgICAgICAgICByZXR1
cm4gc2VsZi5fZmluZF9uZXdlc3RfbG9nX2Rhcndpbihwcm9jZXNzX25hbWUsIHBpZCwgaW5jbHVk
ZV9lcnJvcnMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgX2xvZ19kaXJlY3Rvcnlf
ZGFyd2luKHNlbGYpOgotICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5l
eHBhbmR1c2VyKCJ+IikKLSAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihsb2dfZGlyZWN0b3J5LCAiTGlicmFyeSIsICJMb2dzIikKLSAgICAgICAgaWYgc2VsZi5f
ZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJE
aWFnbm9zdGljUmVwb3J0cyIpKToKLSAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9m
aWxlc3lzdGVtLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpv
aW4obG9nX2RpcmVjdG9yeSwgIkNyYXNoUmVwb3J0ZXIiKQotICAgICAgICByZXR1cm4gbG9nX2Rp
cmVjdG9yeQotCi0gICAgZGVmIF9maW5kX25ld2VzdF9sb2dfZGFyd2luKHNlbGYsIHByb2Nlc3Nf
bmFtZSwgcGlkLCBpbmNsdWRlX2Vycm9ycyk6Ci0gICAgICAgIGRlZiBpc19jcmFzaF9sb2coZnMs
IGRpcnBhdGgsIGJhc2VuYW1lKToKLSAgICAgICAgICAgIHJldHVybiBiYXNlbmFtZS5zdGFydHN3
aXRoKHByb2Nlc3NfbmFtZSArICJfIikgYW5kIGJhc2VuYW1lLmVuZHN3aXRoKCIuY3Jhc2giKQot
Ci0gICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9sb2dfZGlyZWN0b3J5X2RhcndpbigpCi0g
ICAgICAgIGxvZ3MgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19kaXJlY3Rvcnks
IGZpbGVfZmlsdGVyPWlzX2NyYXNoX2xvZykKLSAgICAgICAgZmlyc3RfbGluZV9yZWdleCA9IHJl
LmNvbXBpbGUocideUHJvY2VzczpccysoP1A8cHJvY2Vzc19uYW1lPi4qKSBcWyg/UDxwaWQ+XGQr
KVxdJCcpCi0gICAgICAgIGVycm9ycyA9ICcnCi0gICAgICAgIGZvciBwYXRoIGluIHJldmVyc2Vk
KHNvcnRlZChsb2dzKSk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZiA9IHNl
bGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKLSAgICAgICAgICAgICAgICBtYXRj
aCA9IGZpcnN0X2xpbmVfcmVnZXgubWF0Y2goZlswOmYuZmluZCgnXG4nKV0pCi0gICAgICAgICAg
ICAgICAgaWYgbWF0Y2ggYW5kIG1hdGNoLmdyb3VwKCdwcm9jZXNzX25hbWUnKSA9PSBwcm9jZXNz
X25hbWUgYW5kIChwaWQgaXMgTm9uZSBvciBpbnQobWF0Y2guZ3JvdXAoJ3BpZCcpKSA9PSBwaWQp
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JzICsgZgotICAgICAgICAgICAgZXhj
ZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9lcnJvcnM6Ci0gICAg
ICAgICAgICAgICAgICAgIGVycm9ycyArPSAiRVJST1I6IEZhaWxlZCB0byByZWFkICclcyc6ICVz
XG4iICUgKHBhdGgsIHN0cihlKSkKLQotICAgICAgICBpZiBpbmNsdWRlX2Vycm9ycyBhbmQgZXJy
b3JzOgotICAgICAgICAgICAgcmV0dXJuIGVycm9ycwotICAgICAgICByZXR1cm4gTm9uZQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9nc191
bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxv
Z3NfdW5pdHRlc3QucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUxMmIyMGQuLjAw
MDAwMDAKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9n
c191bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKLQotZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNyYXNobG9ncyBpbXBvcnQgKgotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KLWZy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi0KLQotZGVmIG1ha2VfbW9j
a19jcmFzaF9yZXBvcnRfZGFyd2luKHByb2Nlc3NfbmFtZSwgcGlkKToKLSAgICByZXR1cm4gIiIi
UHJvY2VzczogICAgICAgICB7cHJvY2Vzc19uYW1lfSBbe3BpZH1dCi1QYXRoOiAgICAgICAgICAg
IC9Wb2x1bWVzL0RhdGEvc2xhdmUvc25vd2xlb3BhcmQtaW50ZWwtcmVsZWFzZS10ZXN0cy9idWls
ZC9XZWJLaXRCdWlsZC9SZWxlYXNlL3twcm9jZXNzX25hbWV9Ci1JZGVudGlmaWVyOiAgICAgIHtw
cm9jZXNzX25hbWV9Ci1WZXJzaW9uOiAgICAgICAgID8/PyAoPz8/KQotQ29kZSBUeXBlOiAgICAg
ICBYODYtNjQgKE5hdGl2ZSkKLVBhcmVudCBQcm9jZXNzOiAgUHl0aG9uIFsyNTc4XQotCi1EYXRl
L1RpbWU6ICAgICAgIDIwMTEtMTItMDcgMTM6Mjc6MzQuODE2IC0wODAwCi1PUyBWZXJzaW9uOiAg
ICAgIE1hYyBPUyBYIDEwLjYuOCAoMTBLNTQ5KQotUmVwb3J0IFZlcnNpb246ICA2Ci0KLUludGVy
dmFsIFNpbmNlIExhc3QgUmVwb3J0OiAgICAgICAgICAxNjYwIHNlYwotQ3Jhc2hlcyBTaW5jZSBM
YXN0IFJlcG9ydDogICAgICAgICAgIDEKLVBlci1BcHAgQ3Jhc2hlcyBTaW5jZSBMYXN0IFJlcG9y
dDogICAxCi1Bbm9ueW1vdXMgVVVJRDogICAgICAgICAgICAgICAgICAgICAgNTA3RDRFRUItOUQ3
MC00RTJFLUIzMjItMkQyRjBBQkZFREMwCi0KLUV4Y2VwdGlvbiBUeXBlOiAgRVhDX0JSRUFLUE9J
TlQgKFNJR1RSQVApCi1FeGNlcHRpb24gQ29kZXM6IDB4MDAwMDAwMDAwMDAwMDAwMiwgMHgwMDAw
MDAwMDAwMDAwMDAwCi1DcmFzaGVkIFRocmVhZDogIDAKLQotRHlsZCBFcnJvciBNZXNzYWdlOgot
ICBMaWJyYXJ5IG5vdCBsb2FkZWQ6IC9Wb2x1bWVzL0RhdGEvV2ViS2l0LUJ1aWxkU2xhdmUvc25v
d2xlb3BhcmQtaW50ZWwtcmVsZWFzZS9idWlsZC9XZWJLaXRCdWlsZC9SZWxlYXNlL1dlYkNvcmUu
ZnJhbWV3b3JrL1ZlcnNpb25zL0EvV2ViQ29yZQotICBSZWZlcmVuY2VkIGZyb206IC9Wb2x1bWVz
L0RhdGEvc2xhdmUvc25vd2xlb3BhcmQtaW50ZWwtcmVsZWFzZS9idWlsZC9XZWJLaXRCdWlsZC9S
ZWxlYXNlL1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJLaXQKLSAgUmVhc29uOiBpbWFn
ZSBub3QgZm91bmQKLQotQmluYXJ5IEltYWdlczoKLSAgICAweDdmZmY1ZmMwMDAwMCAtICAgICAw
eDdmZmY1ZmMzYmUwZiAgZHlsZCAxMzIuMSAoPz8/KSA8MjlERUNCMTktMDE5My0yNTc1LUQ4Mzgt
Q0Y3NDNGMDQwMEIyPiAvdXNyL2xpYi9keWxkCi0KLVN5c3RlbSBQcm9maWxlOgotTW9kZWw6IFhz
ZXJ2ZTMsMSwgQm9vdFJPTSBYUzMxLjAwODEuQjA0LCA4IHByb2Nlc3NvcnMsIFF1YWQtQ29yZSBJ
bnRlbCBYZW9uLCAyLjI2IEdIeiwgNiBHQiwgU01DIDEuNDNmNAotR3JhcGhpY3M6IE5WSURJQSBH
ZUZvcmNlIEdUIDEyMCwgTlZJRElBIEdlRm9yY2UgR1QgMTIwLCBQQ0llLCAyNTYgTUIKLU1lbW9y
eSBNb2R1bGU6IGdsb2JhbF9uYW1lCi1OZXR3b3JrIFNlcnZpY2U6IEV0aGVybmV0IDIsIEV0aGVy
bmV0LCBlbjEKLVBDSSBDYXJkOiBOVklESUEgR2VGb3JjZSBHVCAxMjAsIHNwcGNpX2Rpc3BsYXlj
b250cm9sbGVyLCBNWE0tU2xvdAotU2VyaWFsIEFUQSBEZXZpY2U6IE9QVElBUkMgRFZEIFJXIEFE
LTU2NzBTCi0iIiIuZm9ybWF0KHByb2Nlc3NfbmFtZT1wcm9jZXNzX25hbWUsIHBpZD1waWQpCi0K
LWNsYXNzIENyYXNoTG9nc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRM
aW5lc0VxdWFsKHNlbGYsIGEsIGIpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdhc3NlcnRN
dWx0aUxpbmVFcXVhbCcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChh
LCBiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLnNwbGl0
bGluZXMoKSwgYi5zcGxpdGxpbmVzKCkpCi0KLSAgICBkZWYgdGVzdF9maW5kX2xvZ19kYXJ3aW4o
c2VsZik6Ci0gICAgICAgIGlmIHN5cy5wbGF0Zm9ybSAhPSAiZGFyd2luIjoKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIG9sZGVyX21vY2tfY3Jhc2hfcmVwb3J0ID0gbWFrZV9tb2NrX2Ny
YXNoX3JlcG9ydF9kYXJ3aW4oJ0R1bXBSZW5kZXJUcmVlJywgMjg1MjgpCi0gICAgICAgIG1vY2tf
Y3Jhc2hfcmVwb3J0ID0gbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4oJ0R1bXBSZW5kZXJU
cmVlJywgMjg1MzApCi0gICAgICAgIG5ld2VyX21vY2tfY3Jhc2hfcmVwb3J0ID0gbWFrZV9tb2Nr
X2NyYXNoX3JlcG9ydF9kYXJ3aW4oJ0R1bXBSZW5kZXJUcmVlJywgMjg1MjkpCi0gICAgICAgIG90
aGVyX3Byb2Nlc3NfbW9ja19jcmFzaF9yZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2Rh
cndpbignRm9vUHJvY2VzcycsIDI4NTI3KQotICAgICAgICBtaXNmb3JtYXR0ZWRfbW9ja19jcmFz
aF9yZXBvcnQgPSAnSnVuayB0aGF0IHNob3VsZCBub3QgYXBwZWFyIGluIGEgY3Jhc2ggcmVwb3J0
JyArIG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJlZScsIDI4NTI2
KVsyMDA6XQotICAgICAgICBmaWxlcyA9IHt9Ci0gICAgICAgIGZpbGVzWycvVXNlcnMvbW9jay9M
aWJyYXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0x
NTA3MThfcXVhZHplbi5jcmFzaCddID0gb2xkZXJfbW9ja19jcmFzaF9yZXBvcnQKLSAgICAgICAg
ZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVu
ZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcxOV9xdWFkemVuLmNyYXNoJ10gPSBtb2NrX2NyYXNoX3Jl
cG9ydAotICAgICAgICBmaWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNS
ZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIwX3F1YWR6ZW4uY3Jhc2gnXSA9
IG5ld2VyX21vY2tfY3Jhc2hfcmVwb3J0Ci0gICAgICAgIGZpbGVzWycvVXNlcnMvbW9jay9MaWJy
YXJ5L0xvZ3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3
MjFfcXVhZHplbi5jcmFzaCddID0gTm9uZQotICAgICAgICBmaWxlc1snL1VzZXJzL21vY2svTGli
cmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUw
NzIyX3F1YWR6ZW4uY3Jhc2gnXSA9IG90aGVyX3Byb2Nlc3NfbW9ja19jcmFzaF9yZXBvcnQKLSAg
ICAgICAgZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9E
dW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcyM19xdWFkemVuLmNyYXNoJ10gPSBtaXNmb3Jt
YXR0ZWRfbW9ja19jcmFzaF9yZXBvcnQKLSAgICAgICAgZmlsZXN5c3RlbSA9IE1vY2tGaWxlU3lz
dGVtKGZpbGVzKQotICAgICAgICBjcmFzaF9sb2dzID0gQ3Jhc2hMb2dzKGZpbGVzeXN0ZW0pCi0g
ICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3RfbG9nKCJEdW1wUmVuZGVyVHJlZSIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0TGluZXNFcXVhbChsb2csIG5ld2VyX21vY2tfY3Jhc2hfcmVw
b3J0KQotICAgICAgICBsb2cgPSBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0X2xvZygiRHVtcFJlbmRl
clRyZWUiLCAyODUyOSkKLSAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0VxdWFsKGxvZywgbmV3ZXJf
bW9ja19jcmFzaF9yZXBvcnQpCi0gICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdlc3Rf
bG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMwKQotICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1
YWwobG9nLCBtb2NrX2NyYXNoX3JlcG9ydCkKLSAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5k
X25ld2VzdF9sb2coIkR1bXBSZW5kZXJUcmVlIiwgMjg1MzEpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobG9nLCBOb25lKQotCi0gICAgICAgIGVycm9ycyA9ICJFUlJPUjogRmFpbGVkIHRvIHJl
YWQgJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVy
VHJlZV8yMDExLTA2LTEzLTE1MDcyMV9xdWFkemVuLmNyYXNoJzogW0Vycm5vIDJdIC9Vc2Vycy9t
b2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8yMDExLTA2
LTEzLTE1MDcyMV9xdWFkemVuLmNyYXNoOiAnTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSdcbiIK
LSAgICAgICAgbG9nID0gY3Jhc2hfbG9ncy5maW5kX25ld2VzdF9sb2coIkR1bXBSZW5kZXJUcmVl
IiwgMjg1MzAsIGluY2x1ZGVfZXJyb3JzPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0TGluZXNF
cXVhbChsb2csIGVycm9ycyArIG1vY2tfY3Jhc2hfcmVwb3J0KQotICAgICAgICBsb2cgPSBjcmFz
aF9sb2dzLmZpbmRfbmV3ZXN0X2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUzMSwgaW5jbHVkZV9l
cnJvcnM9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2csIGVycm9ycykKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmUucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlLnB5CmluZGV4
IDA2Zjg3MGMuLjY4ZGQ3MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL3N5c3RlbS9leGVjdXRpdmUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vc3lzdGVtL2V4ZWN1dGl2ZS5weQpAQCAtMjU5LDggKzI1OSw5IEBAIGNsYXNzIEV4ZWN1dGl2
ZShvYmplY3QpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIG9zLmtpbGwocGlk
LCAwKQogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICBleGNlcHQgT1NF
cnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBP
U0Vycm9yLCBlOgorICAgICAgICAgICAgICAgICMgVGhlIHByb2Nlc3MgbWlnaHQgYmUgZXhlY3V0
ZWQgYnkgYSBzdXBlci11c2VyLgorICAgICAgICAgICAgICAgIHJldHVybiBlLmVycm5vID09IGVy
cm5vLkVQRVJNCiAgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5fd2luMzJfY2hlY2tfcnVubmluZ19waWQocGlkKQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy90ZXN0
X3Jlc3VsdF93cml0ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy90ZXN0X3Jlc3VsdF93cml0ZXIucHkKaW5kZXggNzVkNTI3OC4uYzRlYWZkYSAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvdGVzdF9yZXN1bHRfd3JpdGVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3Rlc3RfcmVzdWx0X3dyaXRlci5weQpAQCAtMjksNyArMjks
NiBAQAogCiBpbXBvcnQgbG9nZ2luZwogCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uY3Jh
c2hsb2dzIGltcG9ydCBDcmFzaExvZ3MKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogCiAKQEAgLTYzLDcgKzYyLDcgQEAgZGVmIHdyaXRlX3Rl
c3RfcmVzdWx0KGZpbGVzeXN0ZW0sIHBvcnQsIHRlc3RfbmFtZSwgZHJpdmVyX291dHB1dCwKICAg
ICAgICAgICAgIHdyaXRlci53cml0ZV9hdWRpb19maWxlcyhkcml2ZXJfb3V0cHV0LmF1ZGlvLCBl
eHBlY3RlZF9kcml2ZXJfb3V0cHV0LmF1ZGlvKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmFp
bHVyZSwgdGVzdF9mYWlsdXJlcy5GYWlsdXJlQ3Jhc2gpOgogICAgICAgICAgICAgY3Jhc2hlZF9k
cml2ZXJfb3V0cHV0ID0gZXhwZWN0ZWRfZHJpdmVyX291dHB1dCBpZiBmYWlsdXJlLmlzX3JlZnRl
c3QgZWxzZSBkcml2ZXJfb3V0cHV0Ci0gICAgICAgICAgICB3cml0ZXIud3JpdGVfY3Jhc2hfcmVw
b3J0KGNyYXNoZWRfZHJpdmVyX291dHB1dC5jcmFzaGVkX3Byb2Nlc3NfbmFtZSwgY3Jhc2hlZF9k
cml2ZXJfb3V0cHV0LmVycm9yKQorICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NyYXNoX3JlcG9y
dChjcmFzaGVkX2RyaXZlcl9vdXRwdXQuY3Jhc2hlZF9wcm9jZXNzX25hbWUsIGNyYXNoZWRfZHJp
dmVyX291dHB1dC5lcnJvciwgZHJpdmVyX291dHB1dC5waWQpCiAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShmYWlsdXJlLCB0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVSZWZ0ZXN0TWlzbWF0Y2gpOgogICAg
ICAgICAgICAgd3JpdGVyLndyaXRlX2ltYWdlX2ZpbGVzKGRyaXZlcl9vdXRwdXQuaW1hZ2UsIGV4
cGVjdGVkX2RyaXZlcl9vdXRwdXQuaW1hZ2UpCiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlzIHdv
cmsgc2hvdWxkIGJlIGRvbmUgZWFybGllciBpbiB0aGUgcGlwZWxpbmUgKGUuZy4sIHdoZW4gd2Ug
Y29tcGFyZSBpbWFnZXMgZm9yIG5vbi1yZWYgdGVzdHMpLgpAQCAtMTU3LDE1ICsxNTYsMTQgQEAg
Y2xhc3MgVGVzdFJlc3VsdFdyaXRlcihvYmplY3QpOgogICAgICAgICBmcy5tYXliZV9tYWtlX2Rp
cmVjdG9yeShmcy5kaXJuYW1lKGZpbGVuYW1lKSkKICAgICAgICAgZnMud3JpdGVfYmluYXJ5X2Zp
bGUoZmlsZW5hbWUsIGVycm9yKQogCi0gICAgZGVmIHdyaXRlX2NyYXNoX3JlcG9ydChzZWxmLCBj
cmFzaGVkX3Byb2Nlc3NfbmFtZSwgZXJyb3IpOgorICAgIGRlZiB3cml0ZV9jcmFzaF9yZXBvcnQo
c2VsZiwgY3Jhc2hlZF9wcm9jZXNzX25hbWUsIGVycm9yLCBwaWQ9Tm9uZSk6CiAgICAgICAgIGZz
ID0gc2VsZi5fZmlsZXN5c3RlbQogICAgICAgICBmaWxlbmFtZSA9IHNlbGYub3V0cHV0X2ZpbGVu
YW1lKHNlbGYuRklMRU5BTUVfU1VGRklYX0NSQVNIX0xPRyArICIudHh0IikKICAgICAgICAgZnMu
bWF5YmVfbWFrZV9kaXJlY3RvcnkoZnMuZGlybmFtZShmaWxlbmFtZSkpCi0gICAgICAgIGNyYXNo
X2xvZ3MgPSBDcmFzaExvZ3MoZnMpCi0gICAgICAgIGxvZyA9IGNyYXNoX2xvZ3MuZmluZF9uZXdl
c3RfbG9nKGNyYXNoZWRfcHJvY2Vzc19uYW1lKQotICAgICAgICAjIENyYXNoTG9ncyBkb2Vzbid0
IHN1cHBvcnQgZXZlcnkgcGxhdGZvcm0sIHNvIHdlIGZhbGwgYmFjayB0bworICAgICAgICBsb2cg
PSBzZWxmLl9wb3J0LmZpbmRfbmV3ZXN0X2NyYXNoX2xvZyhjcmFzaGVkX3Byb2Nlc3NfbmFtZSwg
cGlkKQorICAgICAgICAjIHBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nIGlzbid0IGltcGxlbWVu
dGVkIGZvciBldmVyeSBwbGF0Zm9ybSwgc28gd2UgZmFsbCBiYWNrIHRvCiAgICAgICAgICMgaW5j
bHVkaW5nIHRoZSBzdGRlcnIgb3V0cHV0LCB3aGljaCBpcyBhZG1pdHRlZGx5IHNvbWV3aGF0IHJl
ZHVuZGFudC4KLSAgICAgICAgZnMud3JpdGVfdGV4dF9maWxlKGZpbGVuYW1lLCBsb2cgaWYgbG9n
IGVsc2UgZXJyb3IpCisgICAgICAgIGZzLndyaXRlX3RleHRfZmlsZShmaWxlbmFtZSwgbG9nIGlm
IGxvZyBlbHNlIGVycm9yLmRlY29kZSgidXRmLTgiKSkKIAogICAgIGRlZiB3cml0ZV90ZXh0X2Zp
bGVzKHNlbGYsIGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KToKICAgICAgICAgc2VsZi53cml0
ZV9vdXRwdXRfZmlsZXMoIi50eHQiLCBhY3R1YWxfdGV4dCwgZXhwZWN0ZWRfdGV4dCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2FwcGxlLnB5CmluZGV4
IGI2ZTNiMWQuLjk1NjQ3NmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvYXBwbGUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9hcHBsZS5weQpAQCAtMjcsNiArMjcsNyBAQAogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
CiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnBvcnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgpAQCAt
OTMsMyArOTQsMzQgQEAgY2xhc3MgQXBwbGVQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAgICAg
ICAgICMgQnV0IGF0IHNvbWUgbGF0ZXIgcG9pbnQgd2UgbWF5IG5lZWQgdG8gbWFrZSB0aGVzZSBj
b25maWd1cmFibGUgYnkgdGhlIE1hY1BvcnQgYW5kIFdpblBvcnQgc3ViY2xhc3Nlcy4KICAgICAg
ICAgICAgICAgICBjb25maWd1cmF0aW9ucy5hcHBlbmQoVGVzdENvbmZpZ3VyYXRpb24odmVyc2lv
bj12ZXJzaW9uLCBhcmNoaXRlY3R1cmU9J3g4NicsIGJ1aWxkX3R5cGU9YnVpbGRfdHlwZSkpCiAg
ICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucworCisgICAgZGVmIF9sb2dfZGlyZWN0b3J5KHNl
bGYpOgorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5leHBhbmR1c2Vy
KCJ+IikKKyAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2df
ZGlyZWN0b3J5LCAiTGlicmFyeSIsICJMb2dzIikKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3Rl
bS5leGlzdHMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJEaWFnbm9zdGlj
UmVwb3J0cyIpKToKKyAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVt
LmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9nX2Rp
cmVjdG9yeSwgIkNyYXNoUmVwb3J0ZXIiKQorICAgICAgICByZXR1cm4gbG9nX2RpcmVjdG9yeQor
CisgICAgZGVmIGZpbmRfbmV3ZXN0X2NyYXNoX2xvZyhzZWxmLCBwcm9jZXNzX25hbWUsIHBpZD1O
b25lLCBpbmNsdWRlX2Vycm9ycz1GYWxzZSk6CisgICAgICAgIGRlZiBpc19jcmFzaF9sb2coZnMs
IGRpcnBhdGgsIGJhc2VuYW1lKToKKyAgICAgICAgICAgIHJldHVybiBiYXNlbmFtZS5zdGFydHN3
aXRoKHByb2Nlc3NfbmFtZSArICJfIikgYW5kIGJhc2VuYW1lLmVuZHN3aXRoKCIuY3Jhc2giKQor
CisgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9sb2dfZGlyZWN0b3J5KCkKKyAgICAgICAg
bG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9m
aWx0ZXI9aXNfY3Jhc2hfbG9nKQorICAgICAgICBmaXJzdF9saW5lX3JlZ2V4ID0gcmUuY29tcGls
ZShyJ15Qcm9jZXNzOlxzKyg/UDxwcm9jZXNzX25hbWU+LiopIFxbKD9QPHBpZD5cZCspXF0kJykK
KyAgICAgICAgZXJyb3JzID0gJycKKyAgICAgICAgZm9yIHBhdGggaW4gcmV2ZXJzZWQoc29ydGVk
KGxvZ3MpKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmID0gc2VsZi5fZmls
ZXN5c3RlbS5yZWFkX3RleHRfZmlsZShwYXRoKQorICAgICAgICAgICAgICAgIG1hdGNoID0gZmly
c3RfbGluZV9yZWdleC5tYXRjaChmWzA6Zi5maW5kKCdcbicpXSkKKyAgICAgICAgICAgICAgICBp
ZiBtYXRjaCBhbmQgbWF0Y2guZ3JvdXAoJ3Byb2Nlc3NfbmFtZScpID09IHByb2Nlc3NfbmFtZSBh
bmQgKHBpZCBpcyBOb25lIG9yIGludChtYXRjaC5ncm91cCgncGlkJykpID09IHBpZCk6CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnMgKyBmCisgICAgICAgICAgICBleGNlcHQgSU9F
cnJvciwgZToKKyAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX2Vycm9yczoKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3JzICs9ICJFUlJPUjogRmFpbGVkIHRvIHJlYWQgJyVzJzogJXNcbiIgJSAo
cGF0aCwgc3RyKGUpKQorCisgICAgICAgIGlmIGluY2x1ZGVfZXJyb3JzIGFuZCBlcnJvcnM6Cisg
ICAgICAgICAgICByZXR1cm4gZXJyb3JzCisgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggZTI2MmE5
ZC4uOTk3YzcwZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9iYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQpAQCAtODE2LDYgKzgxNiw5IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICAgICAgIyBEb24ndCB0dXJuIGJvdHMgcmVkIGZvciBmbGFreSBmYWlsdXJlcywgdW5leHBlY3Rl
ZCBwYXNzZXMsIGFuZCBtaXNzaW5nIHJlc3VsdHMuCiAgICAgICAgIHJldHVybiB1bmV4cGVjdGVk
X3Jlc3VsdHNbJ251bV9yZWdyZXNzaW9ucyddCiAKKyAgICBkZWYgZmluZF9uZXdlc3RfY3Jhc2hf
bG9nKHNlbGYsIHByb2Nlc3NfbmFtZSwgcGlkPU5vbmUsIGluY2x1ZGVfZXJyb3JzPUZhbHNlKToK
KyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgICMKICAgICAjIFRFU1QgRVhQRUNUQVRJT04tUkVM
QVRFRCBNRVRIT0RTCiAgICAgIwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9kcml2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2RyaXZlci5weQppbmRleCBmYTZlODFiLi45OGIwNjU5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2RyaXZlci5weQpAQCAt
NjQsNyArNjQsNyBAQCBjbGFzcyBEcml2ZXJPdXRwdXQob2JqZWN0KToKICAgICBzdHJpcF9wYXR0
ZXJucy5hcHBlbmQoKHJlLmNvbXBpbGUoJ3Njcm9sbEhlaWdodCBbMC05XSsnKSwgJ3Njcm9sbEhl
aWdodCcpKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQsIGltYWdlLCBpbWFnZV9oYXNo
LCBhdWRpbywgY3Jhc2g9RmFsc2UsCi0gICAgICAgICAgICB0ZXN0X3RpbWU9MCwgdGltZW91dD1G
YWxzZSwgZXJyb3I9JycsIGNyYXNoZWRfcHJvY2Vzc19uYW1lPU5vbmUpOgorICAgICAgICAgICAg
dGVzdF90aW1lPTAsIHRpbWVvdXQ9RmFsc2UsIGVycm9yPScnLCBjcmFzaGVkX3Byb2Nlc3NfbmFt
ZT1Ob25lLCBwaWQ9Tm9uZSk6CiAgICAgICAgICMgRklYTUU6IEFyZ3MgY291bGQgYmUgcmVuYW1l
ZCB0byBiZXR0ZXIgY2xhcmlmeSB3aGF0IHRoZXkgZG8uCiAgICAgICAgIHNlbGYudGV4dCA9IHRl
eHQKICAgICAgICAgc2VsZi5pbWFnZSA9IGltYWdlICAjIE1heSBiZSBlbXB0eS1zdHJpbmcgaWYg
dGhlIHRlc3QgY3Jhc2hlcy4KQEAgLTc2LDYgKzc2LDcgQEAgY2xhc3MgRHJpdmVyT3V0cHV0KG9i
amVjdCk6CiAgICAgICAgIHNlbGYudGVzdF90aW1lID0gdGVzdF90aW1lCiAgICAgICAgIHNlbGYu
dGltZW91dCA9IHRpbWVvdXQKICAgICAgICAgc2VsZi5lcnJvciA9IGVycm9yICAjIHN0ZGVyciBv
dXRwdXQKKyAgICAgICAgc2VsZi5waWQgPSBwaWQKIAogICAgIGRlZiBoYXNfc3RkZXJyKHNlbGYp
OgogICAgICAgICByZXR1cm4gYm9vbChzZWxmLmVycm9yKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQppbmRleCAyZjVmZDQ5Li42YTI4YjdkIDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQpA
QCAtNjQsMTAgKzY0LDYgQEAgY2xhc3MgR3RrRHJpdmVyKFdlYktpdERyaXZlcik6CiAgICAgICAg
ICAgICBzZWxmLl94dmZiX3Byb2Nlc3Mud2FpdCgpCiAgICAgICAgICAgICBzZWxmLl94dmZiX3By
b2Nlc3MgPSBOb25lCiAKLSAgICBkZWYgY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90
ZXN0X2FyZ3MpOgotICAgICAgICB3cmFwcGVyX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93
ZWJraXRfYmFzZSgiVG9vbHMiLCAiZ3RrIiwgInJ1bi13aXRoLWpoYnVpbGQiKQotICAgICAgICBy
ZXR1cm4gW3dyYXBwZXJfcGF0aF0gKyBXZWJLaXREcml2ZXIuY21kX2xpbmUoc2VsZiwgcGl4ZWxf
dGVzdHMsIHBlcl90ZXN0X2FyZ3MpCi0KIAogY2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0KToKICAg
ICBwb3J0X25hbWUgPSAiZ3RrIgpAQCAtMTQ1LDMgKzE0MSwzNCBAQCBjbGFzcyBHdGtQb3J0KFdl
YktpdFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBvbGQtcnVuLXdlYmtpdC10ZXN0cyBhbHNvIGFk
ZGVkIFsiLWdyYXBoaWNzc3lzdGVtIiwgInJhc3RlciIsICItc3R5bGUiLCAid2luZG93cyJdCiAg
ICAgICAgICMgRklYTUU6IG9sZC1ydW4td2Via2l0LXRlc3RzIGNvbnZlcnRlZCByZXN1bHRzX2Zp
bGVuYW1lIHBhdGggZm9yIGN5Z3dpbi4KICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLWxh
dW5jaGVyIiwgcnVuX2xhdW5jaGVyX2FyZ3MpCisKKyAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIo
c2VsZiwgcHJvY2Vzc19uYW1lKToKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NfbmFtZSA9PSAnZ2Ri
LWR1bXAnCisKKyAgICBkZWYgX2xvZ19kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgIGYgPSBzZWxm
Ll9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKCIvZXRjL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNv
bmYiKQorICAgICAgICByZXBvcnRzX291dHB1dF9saW5lID0gW2xpbmUgZm9yIGxpbmUgaW4gZi5z
cGxpdGxpbmVzKCkgaWYgbGluZS5zdGFydHN3aXRoKCJjcmFzaG1vbl9yZXBvcnRzX291dHB1dCIp
XVswXQorICAgICAgICB2YWx1ZSA9IHJlcG9ydHNfb3V0cHV0X2xpbmUuc3BsaXQoIj0iKVsxXS5z
dHJpcCgpCisgICAgICAgIHJldHVybiB2YWx1ZVsxOi0xXQorCisgICAgZGVmIGZpbmRfbmV3ZXN0
X2NyYXNoX2xvZyhzZWxmLCBwcm9jZXNzX25hbWUsIHBpZD1Ob25lLCBpbmNsdWRlX2Vycm9ycz1G
YWxzZSk6CisgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9sb2dfZGlyZWN0b3J5KCkKKyAg
ICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmlsZXNfdW5kZXIobG9nX2RpcmVjdG9yeSkK
KyAgICAgICAgZXJyb3JzID0gJycKKyAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFt
ZSA9ICIlcy4lcy5kdW1wIiAlIChwaWQsIHByb2Nlc3NfbmFtZSkKKyAgICAgICAgaWYgcGlkOgor
ICAgICAgICAgICAgbWF0Y2hfZmlsZW5hbWUgPSBsYW1iZGEgbmFtZTogbmFtZSA9PSBleHBlY3Rl
ZF9jcmFzaF9kdW1wX2ZpbGVuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYXRjaF9m
aWxlbmFtZSA9IGxhbWJkYSBuYW1lOiBuYW1lLmVuZHN3aXRoKCIlcy5kdW1wIiAlIHByb2Nlc3Nf
bmFtZSkKKyAgICAgICAgZm9yIHBhdGggaW4gcmV2ZXJzZWQoc29ydGVkKGxvZ3MpKToKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjcmFzaF9kYXRhID0gc2VsZi5fZmlsZXN5c3Rl
bS5yZWFkX3RleHRfZmlsZShwYXRoKQorICAgICAgICAgICAgICAgIGlmIG1hdGNoX2ZpbGVuYW1l
KG9zLnBhdGguYmFzZW5hbWUocGF0aCkpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3JzICsgY3Jhc2hfZGF0YQorICAgICAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6CisgICAgICAg
ICAgICAgICAgaWYgaW5jbHVkZV9lcnJvcnM6CisgICAgICAgICAgICAgICAgICAgIGVycm9ycyAr
PSAiRVJST1I6IEZhaWxlZCB0byByZWFkICclcyc6ICVzXG4iICUgKHBhdGgsIHN0cihlKSkKKwor
ICAgICAgICBpZiBpbmNsdWRlX2Vycm9ycyBhbmQgZXJyb3JzOgorICAgICAgICAgICAgcmV0dXJu
IGVycm9ycworICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQppbmRleCA5ZWUwNzRm
Li40Y2QxZDY5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0a191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQpAQCAtMjcsMTEgKzI3LDUzIEBACiAjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMucG9ydC5ndGsgaW1wb3J0IEd0a1BvcnQKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQorZnJvbSB3ZWJr
aXRweS50aGlyZHBhcnR5Lm1vY2sgaW1wb3J0IE1vY2sKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCisKKworZGVmIG1ha2Vf
bW9ja19jcmFzaF9yZXBvcnRfbGludXgoKToKKyAgICByZXR1cm4gIiIiW1RocmVhZCBkZWJ1Z2dp
bmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJsZWRdCitVc2luZyBob3N0IGxpYnRocmVhZF9kYiBs
aWJyYXJ5ICIvbGliL3g4Nl82NC1saW51eC1nbnUvbGlidGhyZWFkX2RiLnNvLjEiLgorQ29yZSB3
YXMgZ2VuZXJhdGVkIGJ5IGAvaG9tZS9waGlsL2dzdC9qaGJ1aWxkL2J1aWxkL1dlYktpdC9XZWJL
aXRCdWlsZC8vRGVidWcvUHJvZ3JhbXMvRHVtcFJlbmRlclRyZWUnLgorUHJvZ3JhbSB0ZXJtaW5h
dGVkIHdpdGggc2lnbmFsIDExLCBTZWdtZW50YXRpb24gZmF1bHQuCisjMCAgMHgwMDAwN2ZhYjNk
OGRiZmUwIGluIFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6anNGdW5jdGlvbiAodGhpcz0weDdm
YWFkMDE2MDZkMCwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dD0weDdmYWFkMDBhNDE2OCkgYXQgLi4v
Li4vU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmg6ODQKKzg0ICAg
ICAgICAgICAgICBBU1NFUlQobV93cmFwcGVyIHx8ICFtX2pzRnVuY3Rpb24pOworCitUaHJlYWQg
MzMgKFRocmVhZCAweDdmYWFlNmU4NDcwMCAoTFdQIDI5NDcyKSk6CisjMCAgcHRocmVhZF9jb25k
X3dhaXRAQEdMSUJDXzIuMy4yICgpIGF0IC4uL25wdGwvc3lzZGVwcy91bml4L3N5c3YvbGludXgv
eDg2XzY0L3B0aHJlYWRfY29uZF93YWl0LlM6MTYyCisjMSAgMHgwMDAwN2ZhYjNiYTMyNzRmIGlu
IGdfY29uZF93YWl0IChjb25kPTB4N2ZhYWQwMTc2NjYwLCBtdXRleD08b3B0aW1pemVkIG91dD4p
IGF0IGd0aHJlYWQtcG9zaXguYzo3NDYKKyMyICAweDAwMDA3ZmFiMzcxN2YzOGYgaW4gZ3N0X2Jh
c2Vfc2lua193YWl0X3ByZXJvbGwgKCkgZnJvbSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xp
YmdzdGJhc2UtMC4xMC5zby4wCisjMyAgMHgwMDAwN2ZhYjM3YzJmYjE4IGluID8/ICgpIGZyb20g
L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnc3RhdWRpby0wLjEwLnNvLjAKKyM0ICAweDAw
MDA3ZmFiMzcxODBlNmIgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xp
YmdzdGJhc2UtMC4xMC5zby4wCisjNSAgMHgwMDAwN2ZhYjM3MTgzNTdmIGluID8/ICgpIGZyb20g
L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnc3RiYXNlLTAuMTAuc28uMAorIzYgIDB4MDAw
MDdmYWIzNzE4MzhlNyBpbiA/PyAoKSBmcm9tIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGli
Z3N0YmFzZS0wLjEwLnNvLjAKKyM3ICAweDAwMDA3ZmFiMzcxODNjY2YgaW4gPz8gKCkgZnJvbSAv
dXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdzdGJhc2UtMC4xMC5zby4wCisjOCAgMHgwMDAw
N2ZhYjM2ZWQ1YmRhIGluIGdzdF9wYWRfcHVzaCAoKSBmcm9tIC91c3IvbGliL3g4Nl82NC1saW51
eC1nbnUvbGliZ3N0cmVhbWVyLTAuMTAuc28uMAorIzkgIDB4MDAwMDdmYWIzNmVkNWJkYSBpbiBn
c3RfcGFkX3B1c2ggKCkgZnJvbSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdzdHJlYW1l
ci0wLjEwLnNvLjAKKyMxMCAweDAwMDA3ZmFiMzZlZDViZGEgaW4gZ3N0X3BhZF9wdXNoICgpIGZy
b20gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJnc3RyZWFtZXItMC4xMC5zby4wCisjMTEg
MHgwMDAwN2ZhYjM3MTkxOWVmIGluID8/ICgpIGZyb20gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdu
dS9saWJnc3RiYXNlLTAuMTAuc28uMAorIzEyIDB4MDAwMDdmYWIzNmVkNWJkYSBpbiBnc3RfcGFk
X3B1c2ggKCkgZnJvbSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYmdzdHJlYW1lci0wLjEw
LnNvLjAKKyMxMyAweDAwMDA3ZmFiMzcxOTE5ZWYgaW4gPz8gKCkgZnJvbSAvdXNyL2xpYi94ODZf
NjQtbGludXgtZ251L2xpYmdzdGJhc2UtMC4xMC5zby4wCisjMTQgMHgwMDAwN2ZhYjM2ZWQ1YmRh
IGluIGdzdF9wYWRfcHVzaCAoKSBmcm9tIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ3N0
cmVhbWVyLTAuMTAuc28uMAorIzE1IDB4MDAwMDdmYWIzNzE5MTllZiBpbiA/PyAoKSBmcm9tIC91
c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ3N0YmFzZS0wLjEwLnNvLjAKKyMxNiAweDAwMDA3
ZmFiMzZlZDViZGEgaW4gZ3N0X3BhZF9wdXNoICgpIGZyb20gL3Vzci9saWIveDg2XzY0LWxpbnV4
LWdudS9saWJnc3RyZWFtZXItMC4xMC5zby4wCisjMTcgMHgwMDAwN2ZhYjM2ZWQ1YmRhIGluIGdz
dF9wYWRfcHVzaCAoKSBmcm9tIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGliZ3N0cmVhbWVy
LTAuMTAuc28uMAorIzE4IDB4MDAwMDdmYWFlNjE0OTAxMiBpbiA/PyAoKSBmcm9tIC91c3IvbGli
L3g4Nl82NC1saW51eC1nbnUvZ3N0cmVhbWVyLTAuMTAvbGliZ3N0Y29yZWVsZW1lbnRzLnNvCisj
MTkgMHgwMDAwN2ZhYjM2ZWZjYjI0IGluID8/ICgpIGZyb20gL3Vzci9saWIveDg2XzY0LWxpbnV4
LWdudS9saWJnc3RyZWFtZXItMC4xMC5zby4wCisjMjAgMHgwMDAwN2ZhYjNiYTE5MmE4IGluIGdf
dGhyZWFkX3Bvb2xfdGhyZWFkX3Byb3h5IChkYXRhPTxvcHRpbWl6ZWQgb3V0PikgYXQgZ3RocmVh
ZHBvb2wuYzozMDkKKyMyMSAweDAwMDA3ZmFiM2JhMThhNDUgaW4gZ190aHJlYWRfcHJveHkgKGRh
dGE9MHgzNDA2ZDkwKSBhdCBndGhyZWFkLmM6ODAxCisjMjIgMHgwMDAwN2ZhYjM2NDJmMzU0IGlu
ID8/ICgpIGZyb20gL3Vzci9saWIvbGliR0wuc28uMQorIzIzIDB4MDAwMDdmYWIzYTcxOGI1MCBp
biBzdGFydF90aHJlYWQgKGFyZz08b3B0aW1pemVkIG91dD4pIGF0IHB0aHJlYWRfY3JlYXRlLmM6
MzA0CisjMjQgMHgwMDAwN2ZhYjNhNDYzOTBkIGluIGNsb25lICgpIGF0IC4uL3N5c2RlcHMvdW5p
eC9zeXN2L2xpbnV4L3g4Nl82NC9jbG9uZS5TOjExMgorIzI1IDB4MDAwMDAwMDAwMDAwMDAwMCBp
biA/PyAoKQorCisiIiIKIAogCiBjbGFzcyBHdGtQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRU
ZXN0Q2FzZSk6CkBAIC00MywzICs4NSw0MyBAQCBjbGFzcyBHdGtQb3J0VGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRp
dmUoc2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiTU9DSyBydW5f
Y29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcicsICctLXJlbGVhc2UnLCAnLS1n
dGsnLCAnZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIKICAgICAgICAg
T3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2hvd19yZXN1bHRzX2h0
bWxfZmlsZSwgWyJ0ZXN0Lmh0bWwiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikK
KworICAgIGRlZiBhc3NlcnRMaW5lc0VxdWFsKHNlbGYsIGEsIGIpOgorICAgICAgICBpZiBoYXNh
dHRyKHNlbGYsICdhc3NlcnRNdWx0aUxpbmVFcXVhbCcpOgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRNdWx0aUxpbmVFcXVhbChhLCBiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChhLnNwbGl0bGluZXMoKSwgYi5zcGxpdGxpbmVzKCkpCisKKyAgICBkZWYgdGVz
dF9maW5kX2xvZ19saW51eChzZWxmKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICJsaW51
eDIiOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgb2xkZXJfbW9ja19jcmFzaF9yZXBv
cnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2xpbnV4KCkKKyAgICAgICAgbW9ja19jcmFzaF9y
ZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2xpbnV4KCkKKyAgICAgICAgbmV3ZXJfbW9j
a19jcmFzaF9yZXBvcnQgPSBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2xpbnV4KCkKKyAgICAgICAg
b3RoZXJfcHJvY2Vzc19tb2NrX2NyYXNoX3JlcG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRf
bGludXgoKQorICAgICAgICBtaXNmb3JtYXR0ZWRfbW9ja19jcmFzaF9yZXBvcnQgPSAnSnVuayB0
aGF0IHNob3VsZCBub3QgYXBwZWFyIGluIGEgY3Jhc2ggcmVwb3J0JyArIG1ha2VfbW9ja19jcmFz
aF9yZXBvcnRfbGludXgoKVsyMDA6XQorICAgICAgICBmaWxlcyA9IHt9CisgICAgICAgIGZpbGVz
WycvZXRjL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmYnXSA9ICdjcmFzaG1vbl9yZXBvcnRzX291
dHB1dD0iL3BhdGgvdG8vZHVtcHMiJworICAgICAgICBmaWxlc1snL3BhdGgvdG8vZHVtcHMvMjg1
MjguRHVtcFJlbmRlclRyZWUuZHVtcCddID0gb2xkZXJfbW9ja19jcmFzaF9yZXBvcnQKKyAgICAg
ICAgZmlsZXNbJy9wYXRoL3RvL2R1bXBzLzI4NTMwLkR1bXBSZW5kZXJUcmVlLmR1bXAnXSA9IG1v
Y2tfY3Jhc2hfcmVwb3J0CisgICAgICAgIGZpbGVzWycvcGF0aC90by9kdW1wcy8yODUyOS5EdW1w
UmVuZGVyVHJlZS5kdW1wJ10gPSBuZXdlcl9tb2NrX2NyYXNoX3JlcG9ydAorICAgICAgICBmaWxl
c1snL3BhdGgvdG8vZHVtcHMvMjg1MzMuRHVtcFJlbmRlclRyZWUuZHVtcCddID0gTm9uZQorICAg
ICAgICBmaWxlc1snL3BhdGgvdG8vZHVtcHMvMjg1MjcuRm9vUHJvY2Vzcy5kdW1wJ10gPSBvdGhl
cl9wcm9jZXNzX21vY2tfY3Jhc2hfcmVwb3J0CisgICAgICAgIGZpbGVzWycvcGF0aC90by9kdW1w
cy9pLmFtLm1pc2Zvcm1hdGVkLmR1bXAnXSA9IG1pc2Zvcm1hdHRlZF9tb2NrX2NyYXNoX3JlcG9y
dAorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBwb3J0Ll9maWxlc3lz
dGVtID0gTW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIGxvZyA9IHBvcnQuZmluZF9uZXdl
c3RfY3Jhc2hfbG9nKCJEdW1wUmVuZGVyVHJlZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0TGluZXNF
cXVhbChsb2csIG5ld2VyX21vY2tfY3Jhc2hfcmVwb3J0KQorICAgICAgICBsb2cgPSBwb3J0LmZp
bmRfbmV3ZXN0X2NyYXNoX2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUyOSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRMaW5lc0VxdWFsKGxvZywgbmV3ZXJfbW9ja19jcmFzaF9yZXBvcnQpCisgICAgICAg
IGxvZyA9IHBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMw
KQorICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwobG9nLCBtb2NrX2NyYXNoX3JlcG9ydCkK
KyAgICAgICAgbG9nID0gcG9ydC5maW5kX25ld2VzdF9jcmFzaF9sb2coIkR1bXBSZW5kZXJUcmVl
IiwgMjg1MzEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLCBOb25lKQorCisgICAgICAg
IGVycm9ycyA9ICJFUlJPUjogRmFpbGVkIHRvIHJlYWQgJy9wYXRoL3RvL2R1bXBzLzI4NTMzLkR1
bXBSZW5kZXJUcmVlLmR1bXAnOiBbRXJybm8gMl0gL3BhdGgvdG8vZHVtcHMvMjg1MzMuRHVtcFJl
bmRlclRyZWUuZHVtcDogJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknXG4iCisgICAgICAgIGxv
ZyA9IHBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMwLCBp
bmNsdWRlX2Vycm9ycz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwobG9nLCBl
cnJvcnMgKyBtb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAgICAgbG9nID0gcG9ydC5maW5kX25ld2Vz
dF9jcmFzaF9sb2coIkR1bXBSZW5kZXJUcmVlIiwgMjg1MzEsIGluY2x1ZGVfZXJyb3JzPVRydWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nLCBlcnJvcnMpCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5Cmlu
ZGV4IDFjODViNDcuLjVlN2VjZTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBAIC0yNiw2ICsyNiw4IEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCitpbXBvcnQgc3lzCisKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubWFjIGltcG9ydCBNYWNQb3J0CiBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3RjYXNlCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQpAQCAtMzMs
NyArMzUsNDYgQEAgZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1w
b3J0IE91dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9j
a09wdGlvbnMKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBv
cnQgTW9ja0V4ZWN1dGl2ZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3Rf
bW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QKLQorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5Lm1v
Y2sgaW1wb3J0IE1vY2sKKworCitkZWYgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4ocHJv
Y2Vzc19uYW1lLCBwaWQpOgorICAgIHJldHVybiAiIiJQcm9jZXNzOiAgICAgICAgIHtwcm9jZXNz
X25hbWV9IFt7cGlkfV0KK1BhdGg6ICAgICAgICAgICAgL1ZvbHVtZXMvRGF0YS9zbGF2ZS9zbm93
bGVvcGFyZC1pbnRlbC1yZWxlYXNlLXRlc3RzL2J1aWxkL1dlYktpdEJ1aWxkL1JlbGVhc2Uve3By
b2Nlc3NfbmFtZX0KK0lkZW50aWZpZXI6ICAgICAge3Byb2Nlc3NfbmFtZX0KK1ZlcnNpb246ICAg
ICAgICAgPz8/ICg/Pz8pCitDb2RlIFR5cGU6ICAgICAgIFg4Ni02NCAoTmF0aXZlKQorUGFyZW50
IFByb2Nlc3M6ICBQeXRob24gWzI1NzhdCisKK0RhdGUvVGltZTogICAgICAgMjAxMS0xMi0wNyAx
MzoyNzozNC44MTYgLTA4MDAKK09TIFZlcnNpb246ICAgICAgTWFjIE9TIFggMTAuNi44ICgxMEs1
NDkpCitSZXBvcnQgVmVyc2lvbjogIDYKKworSW50ZXJ2YWwgU2luY2UgTGFzdCBSZXBvcnQ6ICAg
ICAgICAgIDE2NjAgc2VjCitDcmFzaGVzIFNpbmNlIExhc3QgUmVwb3J0OiAgICAgICAgICAgMQor
UGVyLUFwcCBDcmFzaGVzIFNpbmNlIExhc3QgUmVwb3J0OiAgIDEKK0Fub255bW91cyBVVUlEOiAg
ICAgICAgICAgICAgICAgICAgICA1MDdENEVFQi05RDcwLTRFMkUtQjMyMi0yRDJGMEFCRkVEQzAK
KworRXhjZXB0aW9uIFR5cGU6ICBFWENfQlJFQUtQT0lOVCAoU0lHVFJBUCkKK0V4Y2VwdGlvbiBD
b2RlczogMHgwMDAwMDAwMDAwMDAwMDAyLCAweDAwMDAwMDAwMDAwMDAwMDAKK0NyYXNoZWQgVGhy
ZWFkOiAgMAorCitEeWxkIEVycm9yIE1lc3NhZ2U6CisgIExpYnJhcnkgbm90IGxvYWRlZDogL1Zv
bHVtZXMvRGF0YS9XZWJLaXQtQnVpbGRTbGF2ZS9zbm93bGVvcGFyZC1pbnRlbC1yZWxlYXNlL2J1
aWxkL1dlYktpdEJ1aWxkL1JlbGVhc2UvV2ViQ29yZS5mcmFtZXdvcmsvVmVyc2lvbnMvQS9XZWJD
b3JlCisgIFJlZmVyZW5jZWQgZnJvbTogL1ZvbHVtZXMvRGF0YS9zbGF2ZS9zbm93bGVvcGFyZC1p
bnRlbC1yZWxlYXNlL2J1aWxkL1dlYktpdEJ1aWxkL1JlbGVhc2UvV2ViS2l0LmZyYW1ld29yay9W
ZXJzaW9ucy9BL1dlYktpdAorICBSZWFzb246IGltYWdlIG5vdCBmb3VuZAorCitCaW5hcnkgSW1h
Z2VzOgorICAgIDB4N2ZmZjVmYzAwMDAwIC0gICAgIDB4N2ZmZjVmYzNiZTBmICBkeWxkIDEzMi4x
ICg/Pz8pIDwyOURFQ0IxOS0wMTkzLTI1NzUtRDgzOC1DRjc0M0YwNDAwQjI+IC91c3IvbGliL2R5
bGQKKworU3lzdGVtIFByb2ZpbGU6CitNb2RlbDogWHNlcnZlMywxLCBCb290Uk9NIFhTMzEuMDA4
MS5CMDQsIDggcHJvY2Vzc29ycywgUXVhZC1Db3JlIEludGVsIFhlb24sIDIuMjYgR0h6LCA2IEdC
LCBTTUMgMS40M2Y0CitHcmFwaGljczogTlZJRElBIEdlRm9yY2UgR1QgMTIwLCBOVklESUEgR2VG
b3JjZSBHVCAxMjAsIFBDSWUsIDI1NiBNQgorTWVtb3J5IE1vZHVsZTogZ2xvYmFsX25hbWUKK05l
dHdvcmsgU2VydmljZTogRXRoZXJuZXQgMiwgRXRoZXJuZXQsIGVuMQorUENJIENhcmQ6IE5WSURJ
QSBHZUZvcmNlIEdUIDEyMCwgc3BwY2lfZGlzcGxheWNvbnRyb2xsZXIsIE1YTS1TbG90CitTZXJp
YWwgQVRBIERldmljZTogT1BUSUFSQyBEVkQgUlcgQUQtNTY3MFMKKyIiIi5mb3JtYXQocHJvY2Vz
c19uYW1lPXByb2Nlc3NfbmFtZSwgcGlkPXBpZCkKIAogY2xhc3MgTWFjVGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgb3NfbmFtZSA9ICdtYWMnCkBAIC0xODgsMyArMjI5LDQy
IEBAIGphdmEvCiAgICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiQ2Fubm90IHJ1biB0ZXN0cyBpbiBw
YXJhbGxlbCBvbiBTbm93IExlb3BhcmQgZHVlIHRvIHJkYXI6Ly9wcm9ibGVtLzEwNjIxNTI1Llxu
IgogICAgICAgICBjaGlsZF9wcm9jZXNzZXMgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgcG9ydC5kZWZhdWx0X2NoaWxkX3Byb2Nlc3NlcywgKCksIGV4cGVjdGVkX2xvZ3M9
ZXhwZWN0ZWRfbG9ncykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZF9wcm9jZXNzZXMs
IDEpCisKKyAgICBkZWYgYXNzZXJ0TGluZXNFcXVhbChzZWxmLCBhLCBiKToKKyAgICAgICAgaWYg
aGFzYXR0cihzZWxmLCAnYXNzZXJ0TXVsdGlMaW5lRXF1YWwnKToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0TXVsdGlMaW5lRXF1YWwoYSwgYikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoYS5zcGxpdGxpbmVzKCksIGIuc3BsaXRsaW5lcygpKQorCisgICAgZGVm
IHRlc3RfZmluZF9sb2dfZGFyd2luKHNlbGYpOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0g
ImRhcndpbiI6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBvbGRlcl9tb2NrX2NyYXNo
X3JlcG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJlZScs
IDI4NTI4KQorICAgICAgICBtb2NrX2NyYXNoX3JlcG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBv
cnRfZGFyd2luKCdEdW1wUmVuZGVyVHJlZScsIDI4NTMwKQorICAgICAgICBuZXdlcl9tb2NrX2Ny
YXNoX3JlcG9ydCA9IG1ha2VfbW9ja19jcmFzaF9yZXBvcnRfZGFyd2luKCdEdW1wUmVuZGVyVHJl
ZScsIDI4NTI5KQorICAgICAgICBvdGhlcl9wcm9jZXNzX21vY2tfY3Jhc2hfcmVwb3J0ID0gbWFr
ZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4oJ0Zvb1Byb2Nlc3MnLCAyODUyNykKKyAgICAgICAg
bWlzZm9ybWF0dGVkX21vY2tfY3Jhc2hfcmVwb3J0ID0gJ0p1bmsgdGhhdCBzaG91bGQgbm90IGFw
cGVhciBpbiBhIGNyYXNoIHJlcG9ydCcgKyBtYWtlX21vY2tfY3Jhc2hfcmVwb3J0X2Rhcndpbign
RHVtcFJlbmRlclRyZWUnLCAyODUyNilbMjAwOl0KKyAgICAgICAgZmlsZXMgPSB7fQorICAgICAg
ICBmaWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBS
ZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzE4X3F1YWR6ZW4uY3Jhc2gnXSA9IG9sZGVyX21vY2tf
Y3Jhc2hfcmVwb3J0CisgICAgICAgIGZpbGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xvZ3MvRGlh
Z25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MTlfcXVhZHplbi5j
cmFzaCddID0gbW9ja19jcmFzaF9yZXBvcnQKKyAgICAgICAgZmlsZXNbJy9Vc2Vycy9tb2NrL0xp
YnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVuZGVyVHJlZV8yMDExLTA2LTEzLTE1
MDcyMF9xdWFkemVuLmNyYXNoJ10gPSBuZXdlcl9tb2NrX2NyYXNoX3JlcG9ydAorICAgICAgICBm
aWxlc1snL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5k
ZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIxX3F1YWR6ZW4uY3Jhc2gnXSA9IE5vbmUKKyAgICAgICAg
ZmlsZXNbJy9Vc2Vycy9tb2NrL0xpYnJhcnkvTG9ncy9EaWFnbm9zdGljUmVwb3J0cy9EdW1wUmVu
ZGVyVHJlZV8yMDExLTA2LTEzLTE1MDcyMl9xdWFkemVuLmNyYXNoJ10gPSBvdGhlcl9wcm9jZXNz
X21vY2tfY3Jhc2hfcmVwb3J0CisgICAgICAgIGZpbGVzWycvVXNlcnMvbW9jay9MaWJyYXJ5L0xv
Z3MvRGlhZ25vc3RpY1JlcG9ydHMvRHVtcFJlbmRlclRyZWVfMjAxMS0wNi0xMy0xNTA3MjNfcXVh
ZHplbi5jcmFzaCddID0gbWlzZm9ybWF0dGVkX21vY2tfY3Jhc2hfcmVwb3J0CisgICAgICAgIGZp
bGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbShmaWxlcykKKyAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKKyAgICAgICAgbG9nID0gcG9ydC5maW5kX25ld2VzdF9jcmFzaF9sb2coIkR1bXBS
ZW5kZXJUcmVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRMaW5lc0VxdWFsKGxvZywgbmV3ZXJfbW9j
a19jcmFzaF9yZXBvcnQpCisgICAgICAgIGxvZyA9IHBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9n
KCJEdW1wUmVuZGVyVHJlZSIsIDI4NTI5KQorICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwo
bG9nLCBuZXdlcl9tb2NrX2NyYXNoX3JlcG9ydCkKKyAgICAgICAgbG9nID0gcG9ydC5maW5kX25l
d2VzdF9jcmFzaF9sb2coIkR1bXBSZW5kZXJUcmVlIiwgMjg1MzApCisgICAgICAgIHNlbGYuYXNz
ZXJ0TGluZXNFcXVhbChsb2csIG1vY2tfY3Jhc2hfcmVwb3J0KQorICAgICAgICBsb2cgPSBwb3J0
LmZpbmRfbmV3ZXN0X2NyYXNoX2xvZygiRHVtcFJlbmRlclRyZWUiLCAyODUzMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChsb2csIE5vbmUpCisKKyAgICAgICAgZXJyb3JzID0gIkVSUk9SOiBG
YWlsZWQgdG8gcmVhZCAnL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRz
L0R1bXBSZW5kZXJUcmVlXzIwMTEtMDYtMTMtMTUwNzIxX3F1YWR6ZW4uY3Jhc2gnOiBbRXJybm8g
Ml0gL1VzZXJzL21vY2svTGlicmFyeS9Mb2dzL0RpYWdub3N0aWNSZXBvcnRzL0R1bXBSZW5kZXJU
cmVlXzIwMTEtMDYtMTMtMTUwNzIxX3F1YWR6ZW4uY3Jhc2g6ICdObyBzdWNoIGZpbGUgb3IgZGly
ZWN0b3J5J1xuIgorICAgICAgICBsb2cgPSBwb3J0LmZpbmRfbmV3ZXN0X2NyYXNoX2xvZygiRHVt
cFJlbmRlclRyZWUiLCAyODUzMCwgaW5jbHVkZV9lcnJvcnM9VHJ1ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRMaW5lc0VxdWFsKGxvZywgZXJyb3JzICsgbW9ja19jcmFzaF9yZXBvcnQpCisgICAgICAg
IGxvZyA9IHBvcnQuZmluZF9uZXdlc3RfY3Jhc2hfbG9nKCJEdW1wUmVuZGVyVHJlZSIsIDI4NTMx
LCBpbmNsdWRlX2Vycm9ycz1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZywgZXJy
b3JzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dl
YmtpdC5weQppbmRleCA2ZTRhMTZiLi4yZGI4NWZlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNTY1LDcgKzU2NSw3IEBA
IGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICByZXR1cm4gRHJpdmVyT3V0cHV0
KHRleHQsIGltYWdlLCBhY3R1YWxfaW1hZ2VfaGFzaCwgYXVkaW8sCiAgICAgICAgICAgICBjcmFz
aD1zZWxmLl9kZXRlY3RlZF9jcmFzaCgpLCB0ZXN0X3RpbWU9dGltZS50aW1lKCkgLSBzdGFydF90
aW1lLAogICAgICAgICAgICAgdGltZW91dD1zZWxmLl9zZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQs
IGVycm9yPXNlbGYuZXJyb3JfZnJvbV90ZXN0LAotICAgICAgICAgICAgY3Jhc2hlZF9wcm9jZXNz
X25hbWU9c2VsZi5fY3Jhc2hlZF9wcm9jZXNzX25hbWUoKSkKKyAgICAgICAgICAgIGNyYXNoZWRf
cHJvY2Vzc19uYW1lPXNlbGYuX2NyYXNoZWRfcHJvY2Vzc19uYW1lKCksIHBpZD1zZWxmLl9zZXJ2
ZXJfcHJvY2Vzcy5waWQoKSkKIAogICAgIGRlZiBfcmVhZF9oZWFkZXIoc2VsZiwgYmxvY2ssIGxp
bmUsIGhlYWRlcl90ZXh0LCBoZWFkZXJfYXR0ciwgaGVhZGVyX2ZpbHRlcj1Ob25lKToKICAgICAg
ICAgaWYgbGluZS5zdGFydHN3aXRoKGhlYWRlcl90ZXh0KSBhbmQgZ2V0YXR0cihibG9jaywgaGVh
ZGVyX2F0dHIpIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250
ZXN0LnB5CmluZGV4IGQ1YjVhMmMuLmIxMmQ2M2YgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5CkBAIC00OSw3ICs0OSw3IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogU0hPVUxEX1RFU1RfUFJPQ0VTU0VTID0gc3lzLnBsYXRm
b3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3aW4zMicpCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbSBpbXBvcnQgb3V0cHV0Y2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmNy
YXNobG9nc191bml0dGVzdCBpbXBvcnQgbWFrZV9tb2NrX2NyYXNoX3JlcG9ydF9kYXJ3aW4KK2Zy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubWFjX3VuaXR0ZXN0IGltcG9ydCBtYWtlX21v
Y2tfY3Jhc2hfcmVwb3J0X2RhcndpbgogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGlt
cG9ydCBNb2NrSG9zdAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3F1ZXJpZXMu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcXVlcmllcy5weQppbmRl
eCA5MTQ2NmNkLi5jYTFiMzhmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvcXVlcmllcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvcXVlcmllcy5weQpAQCAtMzcsNyArMzcsNiBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyTGlzdAogaW1wb3J0IHdlYmtpdHB5
LmNvbW1vbi5jb25maWcudXJscyBhcyBjb25maWdfdXJscwogZnJvbSB3ZWJraXRweS5jb21tb24u
bmV0LmJ1aWxkYm90IGltcG9ydCBCdWlsZEJvdAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LnJl
Z3Jlc3Npb253aW5kb3cgaW1wb3J0IFJlZ3Jlc3Npb25XaW5kb3cKLWZyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5jcmFzaGxvZ3MgaW1wb3J0IENyYXNoTG9ncwogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnVzZXIgaW1wb3J0IFVzZXIKIGZyb20gd2Via2l0cHkudG9vbC5ncmFtbWFyIGlt
cG9ydCBwbHVyYWxpemUKIGZyb20gd2Via2l0cHkudG9vbC5tdWx0aWNvbW1hbmR0b29sIGltcG9y
dCBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZApAQCAtMzcwLDExICszNjksMTQgQEAgYW5kIFBJ
RCBhbmQgcHJpbnRzIGl0IHRvIHN0ZG91dC4iIiIKICAgICBhcmd1bWVudF9uYW1lcyA9ICJQUk9D
RVNTX05BTUUgW1BJRF0iCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0
b29sKToKLSAgICAgICAgY3Jhc2hfbG9ncyA9IENyYXNoTG9ncyh0b29sLmZpbGVzeXN0ZW0pCiAg
ICAgICAgIHBpZCA9IE5vbmUKICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKICAgICAgICAgICAg
IHBpZCA9IGludChhcmdzWzFdKQotICAgICAgICBwcmludCBjcmFzaF9sb2dzLmZpbmRfbmV3ZXN0
X2xvZyhhcmdzWzBdLCBwaWQpCisgICAgICAgIGZvciBwb3J0X25hbWUgaW4gdG9vbC5wb3J0X2Zh
Y3RvcnkuYWxsX3BvcnRfbmFtZXMoKToKKyAgICAgICAgICAgIHBvcnRfb2JqZWN0ID0gdG9vbC5w
b3J0X2ZhY3RvcnkuZ2V0KHBvcnRfbmFtZSkKKyAgICAgICAgICAgIGxvZyA9IHBvcnRfb2JqZWN0
LmZpbmRfbmV3ZXN0X2NyYXNoX2xvZyhhcmdzWzBdLCBwaWQpCisgICAgICAgICAgICBpZiBsb2c6
CisgICAgICAgICAgICAgICAgcHJpbnQgbG9nCiAKIAogY2xhc3MgU2tpcHBlZFBvcnRzKEFic3Ry
YWN0RGVjbGFyYXRpdmVDb21tYW5kKToKLS0gCjEuNy45LjE=
</data>
<flag name="review"
          id="136614"
          type_id="1"
          status="-"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134094</attachid>
            <date>2012-03-27 10:20:35 -0700</date>
            <delta_ts>2012-03-28 01:13:10 -0700</delta_ts>
            <desc>Path</desc>
            <filename>Path.patch</filename>
            <type>text/plain</type>
            <size>18247</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBkM2JiN2ExNGQ2MDkzOWYyZjljNjA5ZDY0Zjg0YjdjNDNkY2ZiMGVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDI3IE1hciAyMDEyIDE5OjIwOjM0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0aAoKLS0tCiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvUkVBRE1FICAgICAgICAgICAg
ICAgICB8ICAgNTIgLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9j
cmFzaG1vbi9jcmFzaG1vbiAgICAgIHwgICA3MyAtLS0tLS0tLS0tLS0tLS0tLS0tCiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vbG9nL3J1biAgICAgICB8ICAgMzggLS0tLS0t
LS0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1biAgICAgICAgICAg
fCAgIDc0IC0tLS0tLS0tLS0tLS0tLS0tLS0tCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzQgKysrKysrKysrCiBUb29scy9TY3JpcHRzL25l
dy1ydW4td2Via2l0LXRlc3RzICAgICAgICAgICAgICAgICB8ICAgIDggKysKIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5ICAgIHwgICA0NSArKysrKysrKysr
Ky0KIC4uLi93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkgICAgIHwg
ICAyOSArKysrKysrKwogLi4uL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3Rz
LnB5ICAgICAgfCAgICA1ICsrCiA5IGZpbGVzIGNoYW5nZWQsIDExNyBpbnNlcnRpb25zKCspLCAy
NDEgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZ3RrL1JFQURNRQogZGVsZXRlIG1vZGUgMTAwNzU1IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2d0ay9jcmFzaG1vbi9jcmFzaG1vbgogZGVsZXRlIG1vZGUgMTAwNzU1IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuCiBkZWxldGUgbW9kZSAxMDA3NTUgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1bgoKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUUgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsv
UkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTU4YWUyLi4wMDAwMDAwCi0t
LSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAt
MSw1MiArMCwwIEBACi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0gUnVubmluZyBhIEdUSysgYnVpbGQgc2xhdmUgdW5kZXIgZGFlbW9udG9vbHMKLT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhpcyBkaXJlY3Rv
cnkgY29udGFpbnMgc2V2ZXJhbCBzY3JpcHRzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJ1biBhIFdl
YktpdEdUSysKLWJ1aWxkIHNsYXZlIHVuZGVyIGRhZW1vbnRvb2xzIFsxXS4gVGhpcyBpcyBjb252
ZW5pZW50IGJlY2F1c2UgZGFlbW9udG9vbHMKLXdpbGwgYXV0b21hdGljYWxseSByZXN0YXJ0IHNl
cnZpY2VzIHdoZW4gdGhleSBkaWUsIGFuZCB0aGF0IG1lYW5zIGxlc3MgaHVtYW4KLWludGVydmVu
dGlvbiBpcyBuZWVkZWQuCi0KLQotRGVwZW5kZW5jaWVzCi09PT09PT09PT09PT0KLQotSW4gb3Jk
ZXIgdG8gdXNlIHRoZSBwcm92aWRlZCBzZXJ2aWNlIGNvbnRyb2wgZmlsZXMsIHlvdSB3aWxsIG5l
ZWQgdGhlCi1mb2xsb3dpbmc6Ci0KLSogVGhlIEdOVSBCYXNoIHNoZWxsICh0aGUgc2NyaXB0cyBj
b250YWluIHNvbWUgYmFzaC1pc21zKQotCi0qIFRoZSBkYWVtb250b29scyBwYWNrYWdlIChvciBv
bmUgb2YgaXRzIGRyb3AtaW4gcmVwbGFjZW1lbnRzLCBsaWtlIHJ1bml0Ci0gIG9yIGZyZWVkdDsg
YnV0IG9ubHkgZGFlbW9udG9vbHMgaGFzIGJlZW4gdGVzdGVkIHNvIGZhcikuCi0KLSogVGhlIGNy
YXNoIGR1bXAgbW9uaXRvciBhbHNvIHVzZXMgImlub3RpZnl3YWl0IiAocGFydCBvZiBpbm90aWZ5
LXRvb2xzIFsyXSkKLQotSW4gc2hvcnQsIGluIGEgRGViaWFuLWJhc2VkIHN5c3RlbSB5b3UgY2Fu
IGVuc3VyZSB5b3UgaGF2ZSB0aGUgbmVlZGVkIGJpdHMKLXdpdGggdGhlIGZvbGxvd2luZyBjb21t
YW5kOgotCi0gIGFwdC1nZXQgaW5zdGFsbCBpbm90aWZ5LXRvb2xzIGRhZW1vbnRvb2xzLXJ1bgot
Ci0KLVNldHVwCi09PT09PQotCi0xLiBGb2xsb3cgdGhlIGluc3RydWN0aW9ucyBhdCBodHRwOi8v
dHJhYy53ZWJraXQub3JnL3dpa2kvQnVpbGRCb3QKLQotMi4gSW5zdGFsbCB0aGUgZGVwZW5kZW5j
aWVzIG91dGxpbmVkIGFib3ZlLgotCi0zLiBDb3B5ICJkYWVtb250b29scy1idWlsZGJvdC5jb25m
IiB0byAiL2V0Yy9kYWVtb250b29scy1idWlsZGJvdC5jb25mIgotCi00LiBFZGl0IHRoZSBjb25m
aWd1cmF0aW9uIGZpbGUgdG8gc3VpdCB5b3VyIG5lZWRzLCB0aGUgY29tbWVudHMgc2hvdWxkCi0g
ICBiZSBzZWxmLWV4cGxhbmF0b3J5LgotCi01LiBEcm9wIHRoZSAiYnVpbGRib3QiLCAicHVsc2Vh
dWRpbyIgYW5kICJ4dmZiIiBkaXJlY3RvcmllcyAocGx1cwotICAgImNyYXNobW9uIiwgaWYgZGVz
aXJlZCkgdG8gdGhlIHNlcnZpY2UgY29udHJvbCBkaXJlY3Rvcnkgb2YKLSAgIGRhZW1vbnRvb2xz
OyBmb3IgRGViaWFuLWJhc2VkIHNldHVwcyB0aGF0IHdvdWxkIGJlICIvZXRjL3NlcnZpY2UiCi0K
LQotUmVmZXJlbmNlcwotPT09PT09PT09PQotCi1bMV0gaHR0cDovL2NyLnlwLnRvL2RhZW1vbnRv
b2xzLmh0bWwKLVsyXSBodHRwOi8vd2lraS5naXRodWIuY29tL3J2b2ljaWxhcy9pbm90aWZ5LXRv
b2xzLwotCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24v
Y3Jhc2htb24gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vY3Jhc2htb24K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDQxNzA1YTIuLjAwMDAwMDAKLS0tIGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uCisrKyAvZGV2L251bGwK
QEAgLTEsNzMgKzAsMCBAQAotIyEgL2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMCBD
YXJsb3MgTG9wZXogPGNsb3BlekBpZ2FsaWEuY29tPiwgSWdhbGlhIFMuTC4KLSMKLSMgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
IyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
LSMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0j
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSMgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0KLXNldCAtZQotCi1bICIke2NvcmVkaXJ9IiBdIHx8IHsK
LSAgICBlY2hvICJFbnYgdmFyICdcJHtjb3JlZGlyfScgbm90IGRlZmluZWQhIiA+JjIKLSAgICBl
eGl0IDExMQotfQotWyAiJHtwcm9ncmFtcGF0aH0iIF0gfHwgewotICAgIGVjaG8gIkVudiB2YXIg
J1wke3Byb2dyYW1wYXRofScgbm90IGRlZmluZWQiID4mMgotICAgIGV4aXQgMTExCi19Ci1bICIk
e2FyY2h9IiBdIHx8IHsKLSAgICBlY2hvICJFbnYgdmFyICdcJHthcmNofScgbm90IGRlZmluZWQi
ID4mMgotICAgIGV4aXQgMTExCi19Ci1bICIke21haWx0b30iIF0gfHwgewotICAgIGVjaG8gIkVu
diB2YXIgJ1wke21haWx0b30nIG5vdCBkZWZpbmVkIiA+JjIKLSAgICBleGl0IDExMQotfQotCi0K
LWlub3RpZnl3YWl0IC1xIC1tIC0tZm9ybWF0ICclZicgLS1leGNsdWRlICcudHJhY2UuaHRtbCQn
IC1lIGNsb3NlX3dyaXRlICIke2NvcmVkaXJ9IiB8IFwKLXdoaWxlIHJlYWQgLXIgY29yZWR1bXAK
LWRvCi0JaWYgZ3JlcCAtcUUgJ15jb3JlLXdoZW5fW1s6ZGlnaXQ6XV17MTBcLDEyfS1fLXdob19b
WzpwcmludDpdXSstXy13aHlfJyA8PDwgIiR7Y29yZWR1bXB9IgotCXRoZW4KLQkJIyBHZXQgcmV2
aXNpb24gbnVtYmVyIGZyb20gU3VidmVyc2lvbiBzb3VyY2VzCi0JCXJldj0kKGNkICIke2NyYXNo
bW9uX3NyY19wYXRofSIgJiYgc3ZuIGluZm8gfCBzZWQgLWUgJy9eUmV2aXNpb246L3MvUmV2aXNp
b246IC8vcCcgLWUgZCkKLQotCQkjIEdldCB0aGUgd2hvIGZyb20gdGhlIGNvcmVkdW1wIG5hbWUK
LQkJcHJvZ3JhbWZpbGU9JChlY2hvICIke2NvcmVkdW1wfSIgIFwKLQkJCXwgYXdrIC1GJy1fLXdo
b18nICd7IHByaW50ICQyIH0nXAotCQkJfCBhd2sgLUYnLV8td2h5XycgJ3sgcHJpbnQgJDEgfScp
Ci0KLQkJIyBTb21ldGltZXMgcHJvZ3JhbWZpbGUgZ2V0cyBjdXQgd2hlbiBpdCBpcyBhIGxvbmcg
bmFtZToKLQkJIyBTZWFyY2ggdXNpbmcgd2lsZGNhcmRzCi0JCWZ1bGxwcm9ncmFtcGF0aD0kKGZp
bmQgIiR7cHJvZ3JhbXBhdGh9IiAtZXhlY3V0YWJsZSAtbmFtZSAiJHtwcm9ncmFtZmlsZX0iXCog
fCBoZWFkIC1uMSkKLQotCQkoIHByaW50ZiAiPGh0bWw+PGhlYWQ+PHRpdGxlPlN0YWNrVHJhY2Ug
Zm9yICR7cHJvZ3JhbWZpbGV9IGZyb20gc3ZuIgotCQkJcHJpbnRmICIgcmV2ICR7cmV2fTwvdGl0
bGU+PC9oZWFkPlxuPGJvZHk+Q29yZSBkdW1wIGZpbGU6ICIKLQkJCXByaW50ZiAiPGEgaHJlZj1c
ImNvcmVzLyR7Y29yZWR1bXB9XCI+JHtjb3JlZHVtcH08L2E+PGJyLz5cbiIKLQkJCXByaW50ZiAi
PHByZT5FeGVjdXRhYmxlIGNyYXNoZWQ6ICR7ZnVsbHByb2dyYW1wYXRofTwvcHJlPlxuIgotCQkJ
cHJpbnRmICI8YnIvPjxocj48Yj5TdGFjayBUcmFjZTo8L2I+PGhyPjxici8+XG48cHJlPiIKLQot
CQkJZ2RiIC1leCAidGhyZWFkIGFwcGx5IGFsbCBidCIgLS1iYXRjaCAiJHtmdWxscHJvZ3JhbXBh
dGh9IiAiJHtjb3JlZHVtcH0iIDI+JjEgXAotCQkJCXwgc2VkIC1lICdzL1wmL1wmYW1wL2c7cy88
L1wmbHQ7L2c7cy8+L1wmZ3Q7L2c7cy9cIi9cJnF1b3Q7L2cnIC1lICJzLycvXCZcIzAzOTsvZyIK
LQotCQkJcHJpbnRmICI8L3ByZT48L2JvZHk+PC9odG1sPlxuIgotCQkpID4gIi92YXIvd3d3L3N2
bl8ke3Jldn0uJHtjb3JlZHVtcH0udHJhY2UuaHRtbCIKLQotCQkjIE1ha2Ugc3VyZSB0aGUgd2Vi
IHNlcnZlciBjYW4gcmVhZCBpdAotCQljaG1vZCA2NDQgIiR7Y29yZWR1bXB9IgotCWZpCi1kb25l
Ci0KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cv
cnVuIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2xvZy9ydW4KZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDRkY2Q3MWYuLjAwMDAwMDAKLS0tIGEvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2xvZy9ydW4KKysrIC9kZXYvbnVsbApAQCAtMSwz
OCArMCwwIEBACi0jISAvYmluL2Jhc2gKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBT
LkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0j
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgotCi06ICR7QlVJTERCT1RfQ09ORklHOj0vZXRjL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmZ9
Ci0KLSMgUmVhZCBjb25maWd1cmF0aW9uIGZpbGUKLVsgLXIgIiR7QlVJTERCT1RfQ09ORklHfSIg
XSAmJiAuICIke0JVSUxEQk9UX0NPTkZJR30iCi0KLTogJHtidWlsZGJvdF91c2VyOj0ke0hPTUV9
fQotOiAke2NyYXNobW9uX2xvZ19wYXRoOj0vdmFyL2xvZy9jcmFzaG1vbn0KLQotIyBFeHBhbmQg
YWxsICJlbnZfKiIgZW52aXJvbm1lbnQgdmFyaWFibGVzCi1mb3IgdmFybmFtZSBpbiAkeyFlbnZf
Kn0gOyBkbwotCWV2YWwgImV4cG9ydCAke3Zhcm5hbWUjZW52X309XCR7JHt2YXJuYW1lfX0iCi1k
b25lCi0KLW1rZGlyIC1wICIke2NyYXNobW9uX2xvZ19wYXRofSIKLWNob3duICIke2J1aWxkYm90
X3VzZXJ9IiAiJHtjcmFzaG1vbl9sb2dfcGF0aH0iCi0KLWV4ZWMgL3Vzci9iaW4vc2V0dWlkZ2lk
ICIke2J1aWxkYm90X3VzZXJ9IiBcCi0gICAgIC91c3IvYmluL211bHRpbG9nIHQgIiR7Y3Jhc2ht
b25fbG9nX3BhdGh9IgotCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsv
Y3Jhc2htb24vcnVuIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1bgpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMzhiZTNmZS4uMDAwMDAwMAotLS0gYS9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vcnVuCisrKyAvZGV2L251bGwKQEAgLTEs
NzQgKzAsMCBAQAotIyEgL2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot
IyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYg
bm90LCB3cml0ZSB0bwotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KLQotZXhlYyAyPiYxCi0KLTogJHtCVUlMREJPVF9DT05GSUc6PS9ldGMvZGFlbW9udG9vbHMt
YnVpbGRib3QuY29uZn0KLQotIyBSZWFkIGNvbmZpZ3VyYXRpb24gZmlsZQotWyAtciAiJHtCVUlM
REJPVF9DT05GSUd9IiBdICYmIC4gIiR7QlVJTERCT1RfQ09ORklHfSIKLQotOiAke2J1aWxkYm90
X3VzZXI6PSR7VVNFUjotJHtMT0dOQU1FfX19Ci06ICR7Y3Jhc2htb25fb3V0cHV0Oj0nJ30KLQot
IyBFeHBhbmQgYWxsICJlbnZfKiIgZW52aXJvbm1lbnQgdmFyaWFibGVzCi1mb3IgdmFybmFtZSBp
biAkeyFlbnZfKn0gOyBkbwotCWV2YWwgImV4cG9ydCAke3Zhcm5hbWUjZW52X309XCR7JHt2YXJu
YW1lfX0iCi1kb25lCi0KLQotaWYgWyAhIC1kICIke2NyYXNobW9uX291dHB1dH0iIF0KLXRoZW4K
LQlpZiAhIFsgIiR7Y3Jhc2htb25fb3V0cHV0fSIgXQotCXRoZW4KLQkJZWNobyAiRHVtcCBkaXJl
Y3RvcnkgJyR7Y3Jhc2htb25fb3V0cHV0fScgZG9lcyBub3QgZXhpc3QgKHNsZWVwaW5nKSIKLQlm
aQotCXNsZWVwICQoKCA2MCAqIDYwICogNCApKQotCWV4aXQgMTExCi1maQotCi0KLWlmICEgWyAi
JHtidWlsZGJvdF9iaXRzfSIgXQotdGhlbgotCSMgR3Vlc3MgYml0cyAoMzIvNjQpIGZyb20gdW5h
bWUgLW0KLQltYWNoaW5lPSQodW5hbWUgLW0pCi0JY2FzZSAke21hY2hpbmV9IGluCi0JCXg4Nl82
NCB8IGFtZDY0IHwgaWE2NCB8IHBwYzY0KQotCQkJYnVpbGRib3RfYml0cz0iNjQiIDs7Ci0JCSop
Ci0JCQlidWlsZGJvdF9iaXRzPSIzMiIgOzsKLQllc2FjCi1maQotCi06ICR7Y3Jhc2htb25fYmlu
X3BhdGg6PSIke2J1aWxkYm90X3BhdGh9L2d0ay1saW51eC0ke2J1aWxkYm90X2JpdHN9LWRlYnVn
L2J1aWxkL1dlYktpdEJ1aWxkL0RlYnVnL1Byb2dyYW1zIn0KLQotCi1jZCAiJHtjcmFzaG1vbl9v
dXRwdXR9IgotZXhlYyAvdXNyL2Jpbi9lbnYgLSAgICAgICAgICAgXAotCQlQQVRIPSIke1BBVEh9
IiAgICAgICAgICAgICBcCi0JCVNIRUxMPSIvYmluL2Jhc2giICAgICAgICAgICBcCi0JCVVTRVI9
IiR7YnVpbGRib3RfdXNlcn0iICAgICAgXAotCQlhcmNoPSIke2J1aWxkYm90X2JpdHN9IiAgICAg
ICBcCi0JCUxPR05BTUU9IiR7YnVpbGRib3RfdXNlcn0iICAgICBcCi0JCWNvcmVkaXI9IiR7Y3Jh
c2htb25fb3V0cHV0fSIgICAgXAotCQlIT01FPSIvaG9tZS8ke2J1aWxkYm90X3VzZXJ9IiAgICBc
Ci0JCW1haWx0bz0iJHtjcmFzaG1vbl9tYWlsdG86LScnfSIgICBcCi0JCXByb2dyYW1wYXRoPSIk
e2NyYXNobW9uX2Jpbl9wYXRofSIgXAotCS91c3IvYmluL3NldHVpZGdpZCAiJHtidWlsZGJvdF91
c2VyfSIgIiQocHdkKS9jcmFzaG1vbiIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGRiYmM4YmMuLjQzNmU1NjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMi0w
My0yNyAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAg
W0dUS10gY3Jhc2ggbG9nIHJlcG9ydHMgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE2NTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmVkIHRoZSBkYWVtb250b29scy9jcmFzaG1vbiBz
Y3JpcHRzIGFuZCBpbXBsZW1lbnRlZCB0aGUgY3Jhc2gKKyAgICAgICAgbG9nIHJlcG9ydGluZyBp
biB0aGUgTlJXVCBHdGsgcG9ydC4gVG8gZ2V0IHByb3BlciBjcmFzaCBsb2dzIG9uZQorICAgICAg
ICBuZWVkcyB0byBzZXQgdGhlIGNvcmUgcGF0dGVybiBsaWtlIHRoaXM6CisgICAgICAgIGVjaG8g
Ii9wYXRoL3RvL2NvcmVzL2NvcmUtcGlkXyVwLV8tcHJvY2Vzc18lZSIgPiAvcHJvYy9zeXMva2Vy
bmVsL2NvcmVfcGF0dGVybgorICAgICAgICBUaGVuIGVuYWJsZSBjb3JlZHVtcHMgd2l0aCAidWxp
bWl0IC1jIHVubGltaXRlZCIgYW5kIGNhbGw6CisgICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1n
dGsgLS1jb3JlZHVtcC1kaXI9L3BhdGgvdG8vY29yZXMKKworICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2d0ay9SRUFETUU6IFJlbW92ZWQuCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL2NyYXNobW9uL2NyYXNobW9uOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBw
b3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuOiBSZW1vdmVkLgorICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2d0ay9jcmFzaG1vbi9ydW46IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy9uZXct
cnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a0RyaXZlci5zdG9wKToKKyAgICAgICAgKEd0a1Bv
cnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChHdGtQb3J0KToKKyAgICAgICAg
KEd0a1BvcnQuX2dldF9nZGJfb3V0cHV0KToKKyAgICAgICAgKEd0a1BvcnQuX2dldF9jcmFzaF9s
b2cpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3Vu
aXR0ZXN0LnB5OgorICAgICAgICAoR3RrUG9ydFRlc3QpOgorICAgICAgICAodGVzdF9zaG93X3Jl
c3VsdHNfaHRtbF9maWxlKToKKyAgICAgICAgKGFzc2VydExpbmVzRXF1YWwpOgorICAgICAgICAo
X21vY2tfZ2RiX291dHB1dCk6CisgICAgICAgICh0ZXN0X2dldF9jcmFzaF9sb2cpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6Cisg
ICAgICAgIChwYXJzZV9hcmdzKToKKwogMjAxMi0wMy0yNyAgQ2FybG9zIEdhcmNpYSBDYW1wb3Mg
IDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gVW5za2lwIGFsbCBH
VEsrIHVuaXQgdGVzdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQt
dGVzdHMgYi9Ub29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRlc3RzCmluZGV4IDhmN2NkMDQu
LmM3MmM2MzQgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cwpAQCAtNTIsNiArNTIsMTQg
QEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICAgICAgZW52WydQWVRIT05QQVRIJ10g
PSBzY3JpcHRfZGlyCiAgICAgbW9kdWxlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2NyaXB0X2Rpciwg
J3dlYmtpdHB5JywgJ2xheW91dF90ZXN0cycsICdydW5fd2Via2l0X3Rlc3RzLnB5JykKICAgICBj
bWQgPSBbc3lzLmV4ZWN1dGFibGUsIG1vZHVsZV9wYXRoXSArIHN5cy5hcmd2WzE6XQorCisgICAg
IyBXcmFwIHRoZSBOUldUIHByb2Nlc3MgaW4gdGhlIGpoYnVpbGQgZW52aXJvbm1lbnQgc28gRFJU
IG9yIFdLVFIKKyAgICAjIGRvZXNuJ3QgbmVlZCB0byBkbyBpdCBhbmQgdGhlaXIgcHJvY2VzcyBp
ZCBhcyByZXBvcnRlZCBieQorICAgICMgc3VicHJvY2Vzcy5Qb3BlbiBpcyBub3QgamhidWlsZCdz
LgorICAgIGlmICctLWd0aycgaW4gc3lzLmFyZ3ZbMTpdOgorICAgICAgICBqaGJ1aWxkID0gb3Mu
cGF0aC5qb2luKHNjcmlwdF9kaXIsICcuLicsICdndGsnLCAncnVuLXdpdGgtamhidWlsZCcpCisg
ICAgICAgIGNtZC5pbnNlcnQoMSwgamhidWlsZCkKKwogICAgIHByb2MgPSBzdWJwcm9jZXNzLlBv
cGVuKGNtZCwgZW52PWVudikKICAgICB0cnk6CiAgICAgICAgIHByb2Mud2FpdCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5CmluZGV4IDVlOWQ4
MWEuLmUzMTg5MTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZ3RrLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvZ3RrLnB5CkBAIC02NiwxMCArNjYsNiBAQCBjbGFzcyBHdGtEcml2ZXIoV2ViS2l0RHJp
dmVyKToKICAgICAgICAgICAgIHNlbGYuX3h2ZmJfcHJvY2Vzcy53YWl0KCkKICAgICAgICAgICAg
IHNlbGYuX3h2ZmJfcHJvY2VzcyA9IE5vbmUKIAotICAgIGRlZiBjbWRfbGluZShzZWxmLCBwaXhl
bF90ZXN0cywgcGVyX3Rlc3RfYXJncyk6Ci0gICAgICAgIHdyYXBwZXJfcGF0aCA9IHNlbGYuX3Bv
cnQucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCJUb29scyIsICJndGsiLCAicnVuLXdpdGgtamhidWls
ZCIpCi0gICAgICAgIHJldHVybiBbd3JhcHBlcl9wYXRoXSArIFdlYktpdERyaXZlci5jbWRfbGlu
ZShzZWxmLCBwaXhlbF90ZXN0cywgcGVyX3Rlc3RfYXJncykKLQogCiBjbGFzcyBHdGtQb3J0KFdl
YktpdFBvcnQpOgogICAgIHBvcnRfbmFtZSA9ICJndGsiCkBAIC0xNDcsMyArMTQzLDQ0IEBAIGNs
YXNzIEd0a1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgRklYTUU6IG9sZC1ydW4td2Via2l0
LXRlc3RzIGFsc28gYWRkZWQgWyItZ3JhcGhpY3NzeXN0ZW0iLCAicmFzdGVyIiwgIi1zdHlsZSIs
ICJ3aW5kb3dzIl0KICAgICAgICAgIyBGSVhNRTogb2xkLXJ1bi13ZWJraXQtdGVzdHMgY29udmVy
dGVkIHJlc3VsdHNfZmlsZW5hbWUgcGF0aCBmb3IgY3lnd2luLgogICAgICAgICBzZWxmLl9ydW5f
c2NyaXB0KCJydW4tbGF1bmNoZXIiLCBydW5fbGF1bmNoZXJfYXJncykKKworICAgIGRlZiBfZ2V0
X2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1bXBfcGF0aCk6CisgICAgICAgIGNtZCA9IFsnZ2RiJywg
Jy1leCcsICd0aHJlYWQgYXBwbHkgYWxsIGJ0JywgJy0tYmF0Y2gnLCBzdHIoc2VsZi5fcGF0aF90
b19kcml2ZXIoKSksIHBhdGhdCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwg
c3RkaW49Tm9uZSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQ
RSkKKyAgICAgICAgcHJvYy53YWl0KCkKKyAgICAgICAgZXJyb3JzID0gW2wuc3RyaXAoKSBmb3Ig
bCBpbiBwcm9jLnN0ZGVyci5yZWFkbGluZXMoKV0KKyAgICAgICAgcmV0dXJuIChwcm9jLnN0ZG91
dC5yZWFkKCksIGVycm9ycykKKworICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhzZWxmLCBuYW1lLCBw
aWQsIHN0ZG91dCwgc3RkZXJyKToKKyAgICAgICAgbmFtZV9zdHIgPSBuYW1lIG9yICc8dW5rbm93
biBwcm9jZXNzIG5hbWU+JworICAgICAgICBwaWRfc3RyID0gc3RyKHBpZCBvciAnPHVua25vd24+
JykKKyAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuZ2V0X29wdGlvbignY29yZWR1bXBzX2Rp
cmVjdG9yeScpCisgICAgICAgIGVycm9ycyA9IFtdCisgICAgICAgIGNyYXNoX2xvZyA9ICcnCisg
ICAgICAgIGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUgPSAiY29yZS1waWRfJXMtXy1wcm9j
ZXNzXyVzIiAlIChwaWRfc3RyLCBuYW1lX3N0cikKKyAgICAgICAgaWYgcGlkOgorICAgICAgICAg
ICAgbWF0Y2hfZmlsZW5hbWUgPSBsYW1iZGEgbmFtZTogbmFtZSA9PSBleHBlY3RlZF9jcmFzaF9k
dW1wX2ZpbGVuYW1lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtYXRjaF9maWxlbmFtZSA9
IGxhbWJkYSBuYW1lOiBuYW1lLmZpbmQobmFtZV9zdHIpID4gLTEKKyAgICAgICAgZHVtcHMgPSBz
ZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19kaXJlY3RvcnkpCisgICAgICAgIGZvciBw
YXRoIGluIHJldmVyc2VkKHNvcnRlZChkdW1wcykpOgorICAgICAgICAgICAgaWYgbWF0Y2hfZmls
ZW5hbWUob3MucGF0aC5iYXNlbmFtZShwYXRoKSk6CisgICAgICAgICAgICAgICAgY3Jhc2hfbG9n
LCBlcnJvcnMgPSBzZWxmLl9nZXRfZ2RiX291dHB1dChwYXRoKQorICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgIHN0ZGVycl9saW5lcyA9IGVycm9ycyArIChzdGRlcnIgb3IgJzxlbXB0eT4n
KS5kZWNvZGUoJ3V0ZjgnKS5zcGxpdGxpbmVzKCkKKyAgICAgICAgZXJyb3JzX3N0ciA9ICdcbicu
am9pbigoJ1NUREVSUjogJyArIGwpIGZvciBsIGluIHN0ZGVycl9saW5lcykKKyAgICAgICAgaWYg
bm90IGNyYXNoX2xvZzoKKyAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihs
b2dfZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgICAgIGNy
YXNoX2xvZyA9ICIiIlwKK0NvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSlz
IG5vdCBmb3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBh
cyBzdXBlci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwv
Y29yZV9wYXR0ZXJuCistIHJ1biB0aGlzIGNvbW1hbmQgYmVmb3JlIHN0YXJ0aW5nIHJ1bi13ZWJr
aXQtdGVzdHM6IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKworIiIiICUgbG9jYWxzKCkKKworICAgICAg
ICByZXR1cm4gIiIiXAorQ3Jhc2ggbG9nIGZvciAlKG5hbWVfc3RyKXMgKHBpZCAlKHBpZF9zdHIp
cyk6CisKKyUoY3Jhc2hfbG9nKXMKKyUoZXJyb3JzX3N0cilzIiIiICUgbG9jYWxzKCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5p
dHRlc3QucHkKaW5kZXggOWVlMDc0Zi4uY2RmMWQyNSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkKQEAgLTI3
LDE5ICsyNyw0OCBAQAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBz
eXMKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQuZ3RrIGltcG9ydCBH
dGtQb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCBwb3J0X3Rlc3Rj
YXNlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1v
Y2tFeGVjdXRpdmUKK2Zyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmls
ZVN5c3RlbQorZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwog
CiAKIGNsYXNzIEd0a1BvcnRUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RDYXNlKToKICAgICBw
b3J0X25hbWUgPSAnZ3RrJwogICAgIHBvcnRfbWFrZXIgPSBHdGtQb3J0CisgICAgX21vY2tfY3Jh
c2hfbG9nID0gIiIiXAorQ3Jhc2ggbG9nIGZvciAyODUyOSAocGlkIER1bXBSZW5kZXJUcmVlKToK
KworQ29yZWR1bXAgY29yZS1waWRfRHVtcFJlbmRlclRyZWUtXy1wcm9jZXNzXzI4NTI5IG5vdCBm
b3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBl
ci11c2VyOiBlY2hvICIvcGF0aC90by9kdW1wcy9jb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiID4g
L3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KKy0gcnVuIHRoaXMgY29tbWFuZCBiZWZvcmUg
c3RhcnRpbmcgcnVuLXdlYmtpdC10ZXN0czogdWxpbWl0IC1jIHVubGltaXRlZAorCisKK1NUREVS
UjogPGVtcHR5PiIiIgogCiAgICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxm
KToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgcG9ydC5fZXhlY3V0
aXZlID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCiAgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1NjcmlwdHMvcnVuLWxhdW5jaGVyJywg
Jy0tcmVsZWFzZScsICctLWd0aycsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVj
a291dFxuIgogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9y
dC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlLCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9zdGRlcnI9
ZXhwZWN0ZWRfc3RkZXJyKQorCisgICAgZGVmIGFzc2VydExpbmVzRXF1YWwoc2VsZiwgYSwgYik6
CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ2Fzc2VydE11bHRpTGluZUVxdWFsJyk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGEsIGIpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEuc3BsaXRsaW5lcygpLCBiLnNwbGl0bGluZXMo
KSkKKworICAgIGRlZiBfbW9ja19nZGJfb3V0cHV0KHNlbGYsIGNvcmVkdW1wX3BhdGgpOgorICAg
ICAgICByZXR1cm4gKHNlbGYuX21vY2tfY3Jhc2hfbG9nLCBbXSkKKworICAgIGRlZiB0ZXN0X2dl
dF9jcmFzaF9sb2coc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydChvcHRpb25z
PU1vY2tPcHRpb25zKGNvcmVkdW1wc19kaXJlY3Rvcnk9Jy9wYXRoL3RvL2R1bXBzJywgY29uZmln
dXJhdGlvbj0nUmVsZWFzZScpKQorICAgICAgICBwb3J0Ll9nZXRfZ2RiX291dHB1dCA9IHNlbGYu
X21vY2tfZ2RiX291dHB1dAorICAgICAgICBsb2cgPSBwb3J0Ll9nZXRfY3Jhc2hfbG9nKDI4NTI5
LCAiRHVtcFJlbmRlclRyZWUiLCAiIiwgIiIpCisgICAgICAgIHNlbGYuYXNzZXJ0TGluZXNFcXVh
bChsb2csIHNlbGYuX21vY2tfY3Jhc2hfbG9nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggNzQ2YTU0NS4u
N2ZkNjQ5MyAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC0yNjMsNiArMjYzLDExIEBAIGRlZiBwYXJzZV9h
cmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgICAgICBoZWxwPSJBcmd1bWVudHMgcGFyc2VkIHRvIEFu
ZHJvaWQgYWRiLCB0byBzZWxlY3QgZGV2aWNlLCBldGMuIiksCiAgICAgXSkpCiAKKyAgICBvcHRp
b25fZ3JvdXBfZGVmaW5pdGlvbnMuYXBwZW5kKCgiR1RLKyBPcHRpb25zIiwgWworICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS1jb3JlZHVtcC1kaXIiLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0iY29yZWR1bXBzX2RpcmVjdG9yeSIsCisgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIHRoZSBk
aXJlY3Rvcnkgc3RvcmluZyB0aGUgY29yZWR1bXAgZmlsZXMgZm9yIGNyYXNoaW5nIHRlc3RzLiIp
LAorICAgIF0pKQorCiAgICAgb3B0aW9uX2dyb3VwX2RlZmluaXRpb25zLmFwcGVuZCgoIldlYktp
dCBPcHRpb25zIiwgWwogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1nYy1iZXR3ZWVu
LXRlc3RzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAg
IGhlbHA9IkZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBiZXR3ZWVuIGVhY2ggdGVzdCIpLAotLSAK
MS43LjkuMQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134234</attachid>
            <date>2012-03-28 01:13:10 -0700</date>
            <delta_ts>2012-03-30 02:58:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>23597</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAzMDQ0ZmNkYzhlMTMzYTRmNWFjZjNjZWVjNzIzYmQ4NTRlMDVjMjNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI4IE1hciAyMDEyIDEwOjEwOjUzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL1JFQURNRSAgICAgICAgICAg
ICAgICAgfCAgICA4ICstLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2Ny
YXNobW9uICAgICAgfCAgIDczIC0tLS0tLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuICAgICAgIHwgICAzOCAtLS0tLS0tLS0tCiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vcnVuICAgICAgICAgICB8ICAgNzQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9ndGsvZGFlbW9udG9vbHMtYnVpbGRib3QuY29uZiAgICAg
ICAgICAgICAgICAgIHwgICA0MyAtLS0tLS0tLS0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL3h2ZmIvbG9nL3J1biAgICAgICAgICAgfCAgIDM3IC0tLS0tLS0tLS0KIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2d0ay94dmZiL3J1biAgICAgICAgICAgICAgIHwgICA0MSAtLS0tLS0tLS0t
LQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDM4ICsrKysrKysrKysKIFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMgICAgICAg
ICAgICAgICAgIHwgICAgNyArKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHkgICAgfCAgIDUxICsrKysrKysrKysrKy0KIC4uLi93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkgICAgIHwgICAzMSArKysrKysrKy0KIC4uLi93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSAgICAgIHwgICAgNSArKwogMTIg
ZmlsZXMgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDMxNyBkZWxldGlvbnMoLSkKIGRlbGV0
ZSBtb2RlIDEwMDc1NSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vY3Jhc2ht
b24KIGRlbGV0ZSBtb2RlIDEwMDc1NSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2ht
b24vbG9nL3J1bgogZGVsZXRlIG1vZGUgMTAwNzU1IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0
ay9jcmFzaG1vbi9ydW4KIGRlbGV0ZSBtb2RlIDEwMDc1NSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ndGsveHZmYi9sb2cvcnVuCiBkZWxldGUgbW9kZSAxMDA3NTUgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZ3RrL3h2ZmIvcnVuCgpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL1JFQURNRSBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUUKaW5kZXggOWU1
OGFlMi4uMTZmYTllNyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL1JF
QURNRQorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvUkVBRE1FCkBAIC0xOSwxMiAr
MTksMTAgQEAgZm9sbG93aW5nOgogKiBUaGUgZGFlbW9udG9vbHMgcGFja2FnZSAob3Igb25lIG9m
IGl0cyBkcm9wLWluIHJlcGxhY2VtZW50cywgbGlrZSBydW5pdAogICBvciBmcmVlZHQ7IGJ1dCBv
bmx5IGRhZW1vbnRvb2xzIGhhcyBiZWVuIHRlc3RlZCBzbyBmYXIpLgogCi0qIFRoZSBjcmFzaCBk
dW1wIG1vbml0b3IgYWxzbyB1c2VzICJpbm90aWZ5d2FpdCIgKHBhcnQgb2YgaW5vdGlmeS10b29s
cyBbMl0pCi0KIEluIHNob3J0LCBpbiBhIERlYmlhbi1iYXNlZCBzeXN0ZW0geW91IGNhbiBlbnN1
cmUgeW91IGhhdmUgdGhlIG5lZWRlZCBiaXRzCiB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZDoK
IAotICBhcHQtZ2V0IGluc3RhbGwgaW5vdGlmeS10b29scyBkYWVtb250b29scy1ydW4KKyAgYXB0
LWdldCBpbnN0YWxsIGRhZW1vbnRvb2xzLXJ1bgogCiAKIFNldHVwCkBAIC0zOSw4ICszNyw3IEBA
IFNldHVwCiA0LiBFZGl0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gc3VpdCB5b3VyIG5lZWRz
LCB0aGUgY29tbWVudHMgc2hvdWxkCiAgICBiZSBzZWxmLWV4cGxhbmF0b3J5LgogCi01LiBEcm9w
IHRoZSAiYnVpbGRib3QiLCAicHVsc2VhdWRpbyIgYW5kICJ4dmZiIiBkaXJlY3RvcmllcyAocGx1
cwotICAgImNyYXNobW9uIiwgaWYgZGVzaXJlZCkgdG8gdGhlIHNlcnZpY2UgY29udHJvbCBkaXJl
Y3Rvcnkgb2YKKzUuIERyb3AgdGhlICJidWlsZGJvdCIgYW5kICJwdWxzZWF1ZGlvIiBkaXJlY3Rv
cmllcyB0byB0aGUgc2VydmljZSBjb250cm9sIGRpcmVjdG9yeSBvZgogICAgZGFlbW9udG9vbHM7
IGZvciBEZWJpYW4tYmFzZWQgc2V0dXBzIHRoYXQgd291bGQgYmUgIi9ldGMvc2VydmljZSIKIAog
CkBAIC00OCw1ICs0NSw0IEBAIFJlZmVyZW5jZXMKID09PT09PT09PT0KIAogWzFdIGh0dHA6Ly9j
ci55cC50by9kYWVtb250b29scy5odG1sCi1bMl0gaHR0cDovL3dpa2kuZ2l0aHViLmNvbS9ydm9p
Y2lsYXMvaW5vdGlmeS10b29scy8KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2Ny
YXNobW9uL2NyYXNobW9uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0MTcwNWEyLi4w
MDAwMDAwCi0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9jcmFzaG1v
bgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLSMhIC9iaW4vYmFzaAotIwotIyBDb3B5
cmlnaHQgKEMpIDIwMTAgQ2FybG9zIExvcGV6IDxjbG9wZXpAaWdhbGlhLmNvbT4sIElnYWxpYSBT
LkwuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCi0jIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0jIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotCi1zZXQgLWUKLQotWyAiJHtj
b3JlZGlyfSIgXSB8fCB7Ci0gICAgZWNobyAiRW52IHZhciAnXCR7Y29yZWRpcn0nIG5vdCBkZWZp
bmVkISIgPiYyCi0gICAgZXhpdCAxMTEKLX0KLVsgIiR7cHJvZ3JhbXBhdGh9IiBdIHx8IHsKLSAg
ICBlY2hvICJFbnYgdmFyICdcJHtwcm9ncmFtcGF0aH0nIG5vdCBkZWZpbmVkIiA+JjIKLSAgICBl
eGl0IDExMQotfQotWyAiJHthcmNofSIgXSB8fCB7Ci0gICAgZWNobyAiRW52IHZhciAnXCR7YXJj
aH0nIG5vdCBkZWZpbmVkIiA+JjIKLSAgICBleGl0IDExMQotfQotWyAiJHttYWlsdG99IiBdIHx8
IHsKLSAgICBlY2hvICJFbnYgdmFyICdcJHttYWlsdG99JyBub3QgZGVmaW5lZCIgPiYyCi0gICAg
ZXhpdCAxMTEKLX0KLQotCi1pbm90aWZ5d2FpdCAtcSAtbSAtLWZvcm1hdCAnJWYnIC0tZXhjbHVk
ZSAnLnRyYWNlLmh0bWwkJyAtZSBjbG9zZV93cml0ZSAiJHtjb3JlZGlyfSIgfCBcCi13aGlsZSBy
ZWFkIC1yIGNvcmVkdW1wCi1kbwotCWlmIGdyZXAgLXFFICdeY29yZS13aGVuX1tbOmRpZ2l0Ol1d
ezEwXCwxMn0tXy13aG9fW1s6cHJpbnQ6XV0rLV8td2h5XycgPDw8ICIke2NvcmVkdW1wfSIKLQl0
aGVuCi0JCSMgR2V0IHJldmlzaW9uIG51bWJlciBmcm9tIFN1YnZlcnNpb24gc291cmNlcwotCQly
ZXY9JChjZCAiJHtjcmFzaG1vbl9zcmNfcGF0aH0iICYmIHN2biBpbmZvIHwgc2VkIC1lICcvXlJl
dmlzaW9uOi9zL1JldmlzaW9uOiAvL3AnIC1lIGQpCi0KLQkJIyBHZXQgdGhlIHdobyBmcm9tIHRo
ZSBjb3JlZHVtcCBuYW1lCi0JCXByb2dyYW1maWxlPSQoZWNobyAiJHtjb3JlZHVtcH0iICBcCi0J
CQl8IGF3ayAtRictXy13aG9fJyAneyBwcmludCAkMiB9J1wKLQkJCXwgYXdrIC1GJy1fLXdoeV8n
ICd7IHByaW50ICQxIH0nKQotCi0JCSMgU29tZXRpbWVzIHByb2dyYW1maWxlIGdldHMgY3V0IHdo
ZW4gaXQgaXMgYSBsb25nIG5hbWU6Ci0JCSMgU2VhcmNoIHVzaW5nIHdpbGRjYXJkcwotCQlmdWxs
cHJvZ3JhbXBhdGg9JChmaW5kICIke3Byb2dyYW1wYXRofSIgLWV4ZWN1dGFibGUgLW5hbWUgIiR7
cHJvZ3JhbWZpbGV9IlwqIHwgaGVhZCAtbjEpCi0KLQkJKCBwcmludGYgIjxodG1sPjxoZWFkPjx0
aXRsZT5TdGFja1RyYWNlIGZvciAke3Byb2dyYW1maWxlfSBmcm9tIHN2biIKLQkJCXByaW50ZiAi
IHJldiAke3Jldn08L3RpdGxlPjwvaGVhZD5cbjxib2R5PkNvcmUgZHVtcCBmaWxlOiAiCi0JCQlw
cmludGYgIjxhIGhyZWY9XCJjb3Jlcy8ke2NvcmVkdW1wfVwiPiR7Y29yZWR1bXB9PC9hPjxici8+
XG4iCi0JCQlwcmludGYgIjxwcmU+RXhlY3V0YWJsZSBjcmFzaGVkOiAke2Z1bGxwcm9ncmFtcGF0
aH08L3ByZT5cbiIKLQkJCXByaW50ZiAiPGJyLz48aHI+PGI+U3RhY2sgVHJhY2U6PC9iPjxocj48
YnIvPlxuPHByZT4iCi0KLQkJCWdkYiAtZXggInRocmVhZCBhcHBseSBhbGwgYnQiIC0tYmF0Y2gg
IiR7ZnVsbHByb2dyYW1wYXRofSIgIiR7Y29yZWR1bXB9IiAyPiYxIFwKLQkJCQl8IHNlZCAtZSAn
cy9cJi9cJmFtcC9nO3MvPC9cJmx0Oy9nO3MvPi9cJmd0Oy9nO3MvXCIvXCZxdW90Oy9nJyAtZSAi
cy8nL1wmXCMwMzk7L2ciCi0KLQkJCXByaW50ZiAiPC9wcmU+PC9ib2R5PjwvaHRtbD5cbiIKLQkJ
KSA+ICIvdmFyL3d3dy9zdm5fJHtyZXZ9LiR7Y29yZWR1bXB9LnRyYWNlLmh0bWwiCi0KLQkJIyBN
YWtlIHN1cmUgdGhlIHdlYiBzZXJ2ZXIgY2FuIHJlYWQgaXQKLQkJY2htb2QgNjQ0ICIke2NvcmVk
dW1wfSIKLQlmaQotZG9uZQotCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9n
dGsvY3Jhc2htb24vbG9nL3J1biBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1v
bi9sb2cvcnVuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA0ZGNkNzFmLi4wMDAwMDAw
Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuCisrKyAv
ZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotIyEgL2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdodCAo
QykgMjAxMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
Ci0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIyBCb3N0b24sIE1B
IDAyMTEwLTEzMDEsIFVTQS4KLQotOiAke0JVSUxEQk9UX0NPTkZJRzo9L2V0Yy9kYWVtb250b29s
cy1idWlsZGJvdC5jb25mfQotCi0jIFJlYWQgY29uZmlndXJhdGlvbiBmaWxlCi1bIC1yICIke0JV
SUxEQk9UX0NPTkZJR30iIF0gJiYgLiAiJHtCVUlMREJPVF9DT05GSUd9IgotCi06ICR7YnVpbGRi
b3RfdXNlcjo9JHtIT01FfX0KLTogJHtjcmFzaG1vbl9sb2dfcGF0aDo9L3Zhci9sb2cvY3Jhc2ht
b259Ci0KLSMgRXhwYW5kIGFsbCAiZW52XyoiIGVudmlyb25tZW50IHZhcmlhYmxlcwotZm9yIHZh
cm5hbWUgaW4gJHshZW52Xyp9IDsgZG8KLQlldmFsICJleHBvcnQgJHt2YXJuYW1lI2Vudl99PVwk
eyR7dmFybmFtZX19IgotZG9uZQotCi1ta2RpciAtcCAiJHtjcmFzaG1vbl9sb2dfcGF0aH0iCi1j
aG93biAiJHtidWlsZGJvdF91c2VyfSIgIiR7Y3Jhc2htb25fbG9nX3BhdGh9IgotCi1leGVjIC91
c3IvYmluL3NldHVpZGdpZCAiJHtidWlsZGJvdF91c2VyfSIgXAotICAgICAvdXNyL2Jpbi9tdWx0
aWxvZyB0ICIke2NyYXNobW9uX2xvZ19wYXRofSIKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1biBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0
ay9jcmFzaG1vbi9ydW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDM4YmUzZmUuLjAw
MDAwMDAKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL3J1bgorKysg
L2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLSMhIC9iaW4vYmFzaAotIwotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSMgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0KLWV4ZWMgMj4mMQotCi06ICR7QlVJTERCT1RfQ09ORklHOj0v
ZXRjL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmZ9Ci0KLSMgUmVhZCBjb25maWd1cmF0aW9uIGZp
bGUKLVsgLXIgIiR7QlVJTERCT1RfQ09ORklHfSIgXSAmJiAuICIke0JVSUxEQk9UX0NPTkZJR30i
Ci0KLTogJHtidWlsZGJvdF91c2VyOj0ke1VTRVI6LSR7TE9HTkFNRX19fQotOiAke2NyYXNobW9u
X291dHB1dDo9Jyd9Ci0KLSMgRXhwYW5kIGFsbCAiZW52XyoiIGVudmlyb25tZW50IHZhcmlhYmxl
cwotZm9yIHZhcm5hbWUgaW4gJHshZW52Xyp9IDsgZG8KLQlldmFsICJleHBvcnQgJHt2YXJuYW1l
I2Vudl99PVwkeyR7dmFybmFtZX19IgotZG9uZQotCi0KLWlmIFsgISAtZCAiJHtjcmFzaG1vbl9v
dXRwdXR9IiBdCi10aGVuCi0JaWYgISBbICIke2NyYXNobW9uX291dHB1dH0iIF0KLQl0aGVuCi0J
CWVjaG8gIkR1bXAgZGlyZWN0b3J5ICcke2NyYXNobW9uX291dHB1dH0nIGRvZXMgbm90IGV4aXN0
IChzbGVlcGluZykiCi0JZmkKLQlzbGVlcCAkKCggNjAgKiA2MCAqIDQgKSkKLQlleGl0IDExMQot
ZmkKLQotCi1pZiAhIFsgIiR7YnVpbGRib3RfYml0c30iIF0KLXRoZW4KLQkjIEd1ZXNzIGJpdHMg
KDMyLzY0KSBmcm9tIHVuYW1lIC1tCi0JbWFjaGluZT0kKHVuYW1lIC1tKQotCWNhc2UgJHttYWNo
aW5lfSBpbgotCQl4ODZfNjQgfCBhbWQ2NCB8IGlhNjQgfCBwcGM2NCkKLQkJCWJ1aWxkYm90X2Jp
dHM9IjY0IiA7OwotCQkqKQotCQkJYnVpbGRib3RfYml0cz0iMzIiIDs7Ci0JZXNhYwotZmkKLQot
OiAke2NyYXNobW9uX2Jpbl9wYXRoOj0iJHtidWlsZGJvdF9wYXRofS9ndGstbGludXgtJHtidWls
ZGJvdF9iaXRzfS1kZWJ1Zy9idWlsZC9XZWJLaXRCdWlsZC9EZWJ1Zy9Qcm9ncmFtcyJ9Ci0KLQot
Y2QgIiR7Y3Jhc2htb25fb3V0cHV0fSIKLWV4ZWMgL3Vzci9iaW4vZW52IC0gICAgICAgICAgIFwK
LQkJUEFUSD0iJHtQQVRIfSIgICAgICAgICAgICAgXAotCQlTSEVMTD0iL2Jpbi9iYXNoIiAgICAg
ICAgICAgXAotCQlVU0VSPSIke2J1aWxkYm90X3VzZXJ9IiAgICAgIFwKLQkJYXJjaD0iJHtidWls
ZGJvdF9iaXRzfSIgICAgICAgXAotCQlMT0dOQU1FPSIke2J1aWxkYm90X3VzZXJ9IiAgICAgXAot
CQljb3JlZGlyPSIke2NyYXNobW9uX291dHB1dH0iICAgIFwKLQkJSE9NRT0iL2hvbWUvJHtidWls
ZGJvdF91c2VyfSIgICAgXAotCQltYWlsdG89IiR7Y3Jhc2htb25fbWFpbHRvOi0nJ30iICAgXAot
CQlwcm9ncmFtcGF0aD0iJHtjcmFzaG1vbl9iaW5fcGF0aH0iIFwKLQkvdXNyL2Jpbi9zZXR1aWRn
aWQgIiR7YnVpbGRib3RfdXNlcn0iICIkKHB3ZCkvY3Jhc2htb24iCi0KZGlmZiAtLWdpdCBhL1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9kYWVtb250b29scy1idWlsZGJvdC5jb25mIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmYKaW5kZXgg
NTljMWMwYi4uMzFhNmQ2MyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3Rr
L2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmYKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmYKQEAgLTI5LDQ4ICsyOSw2IEBAIGJ1aWxkYm90
X3VzZXI9InNsYXZlIgogYnVpbGRib3RfbG9nX3BhdGg9Ii92YXIvbG9nL2J1aWxkYm90IgogCiAK
LSMgRGlzcGxheSBudW1iZXIgdW5kZXIgd2hpY2ggWHZmYiB3aWxsIHJ1bgotIwoteHZmYl9kaXNw
bGF5PSI6MTAiCi0KLSMgR3JhcGhpY2FsIG1vZGUgd2hpY2ggWHZmYiB3aWxsIHJlcG9ydCB0byBh
cHBsaWNhdGlvbnMKLSMKLXh2ZmJfbW9kZT0iMTAyNHg3Njh4MjQiCi0KLSMgUGF0aCB0byBhIGRp
cmVjdG9yeSB3aGVyZSB0byBsb2cgWHZmYiBlcnJvciBvdXRwdXQKLSMKLXh2ZmJfbG9nX3BhdGg9
Ii92YXIvbG9nL3h2ZmIiCi0KLQotIyBPdXRwdXQgZGlyZWN0b3J5IGZvciBjb3JlIGR1bXBzLiBT
ZXQgdGhpcyB0byBhbiBlbXB0eSBzdHJpbmcgdG8KLSMgZGlzYWJsZSByZWNvcmRpbmcgdGhlbS4K
LSMKLWNyYXNobW9uX291dHB1dD0iL3Zhci93d3cvd2Via2l0Z3RrLWNvcmVkdW1wcyIKLQotIyBN
YXhpbXVtIHNpemUgb2YgY29yZSBkdW1wcy4gV2l0aCB0aGUgZGVmYXVsdCAidW5saW1pdGVkIiBz
ZXR0aW5nCi0jIGl0IGlzIHJlY29tbWVuZGVkIHRvIGhhdmUgfjIwR0IgZm9yIGNvcmVzIGluIDY0
LWJpdCBtYWNoaW5lcy4KLSMgRm9yIDMyLWJpdCBib3RzLCBsZXNzIHNwYWNlIGlzIG5lZWRlZC4K
LSMKLWNyYXNobW9uX21heF9zaXplPSJ1bmxpbWl0ZWQiCi0KLSMgUGF0aCB0byBhIGRpcmVjdG9y
eSB3aGVyZSB0byBsb2cgY3Jhc2htb24gb3V0cHV0Ci0jCi1jcmFzaG1vbl9sb2dfcGF0aD0iL3Zh
ci9sb2cvY3Jhc2htb24iCi0KLSMgQSBsaXN0IG9mIGUtbWFpbCBhZGRyZXNzZXMgd2hlcmUgdG8g
c2VuZCBub3RpZmljYXRpb25zIG9mIGNvcmUgZHVtcHMuCi0jIExlYXZlIGVtcHR5IHRvIGRpc2Fi
bGUgbWFpbCBub3RpZmljYXRpb25zLgotIwotIyBXQVJOSU5HOiBFLW1haWwgYWRkcmVzc2VzIHdp
bGwgYmUgZmxvb2RlZCB3aXRoIG1lc3NhZ2VzIQotIwotY3Jhc2htb25fbWFpbHRvPSIiCi0KLSMg
QmFzZSBkaXJlY3Rvcnkgd2hlcmUgdG8gZmluZCBzb3VyY2VzIGFuZCBidWlsdCBiaW5hcmllcyBv
ZiB3aGljaAotIyBjcmFzaCBkdW1wcyBhcmUgdG8gYmUgY2F0Y2hlZC4gVXN1YWxseSB5b3Ugd2ls
bCBub3QgbmVlZCB0byBjaGFuZ2UgdGhpcy4KLSMKLWNyYXNobW9uX3NyY19wYXRoPSIke2J1aWxk
Ym90X3BhdGh9L2d0ay1saW51eC0ke2J1aWxkYm90X2JpdHN9LWRlYnVnL2J1aWxkIgotY3Jhc2ht
b25fYmluX3BhdGg9IiR7Y3Jhc2htb25fc3JjX3BhdGh9L1dlYktpdEJ1aWxkL0RlYnVnL1Byb2dy
YW1zIgotCi0KICMgSWYgeW91IHdhbnQgdG8gdXNlIGNjYWNoZSwgc2V0IGEgcGF0aCB0byB3aGVy
ZSBzeW5saW5rcyB3aXRoIHRvb2wKICMgbmFtZXMgcG9pbnRpbmcgdG8gY2NhY2hlIGFyZSBpbnN0
YWxsZWQuIEluIERlYmlhbiBzeXN0ZW1zIHRoaXMKICMgd291bGQgYmUgL3Vzci9saWIvY2NhY2hl
LiBTZXQgdG8gZW1wdHkgdG8gZGlzYWJsZS4KQEAgLTgyLDYgKzQwLDUgQEAgY2NhY2hlX3BhdGg9
Ii91c3IvbGliL2NjYWNoZSIKICMKIGVudl9DRkxBR1M9Ii1waXBlIgogZW52X0NYWEZMQUdTPSIt
cGlwZSIKLWVudl9XZWJLaXRNYWtlQXJndW1lbnRzPSItajMiCiBlbnZfV0VCS0lUX1RFU1RGT05U
Uz0iL2hvbWUvJHtidWlsZGJvdF91c2VyfS90ZXN0Zm9udHMiCiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2d0ay94dmZiL2xvZy9ydW4gYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ndGsveHZmYi9sb2cvcnVuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxYzgz
OTIyLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay94dmZiL2xvZy9y
dW4KKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jISAvYmluL2Jhc2gKLSMKLSMgQ29w
eXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCi0jIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
IwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotCi06ICR7QlVJTERCT1RfQ09ORklHOj0vZXRjL2Rh
ZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmZ9Ci0KLSMgUmVhZCBjb25maWd1cmF0aW9uIGZpbGUKLVsg
LXIgIiR7QlVJTERCT1RfQ09ORklHfSIgXSAmJiAuICIke0JVSUxEQk9UX0NPTkZJR30iCi0KLTog
JHtidWlsZGJvdF91c2VyOj0ke0hPTUV9fQotOiAke3h2ZmJfbG9nX3BhdGg6PS92YXIvbG9nL3h2
ZmJ9Ci0KLSMgRXhwYW5kIGFsbCAiZW52XyoiIGVudmlyb25tZW50IHZhcmlhYmxlcwotZm9yIHZh
cm5hbWUgaW4gJHshZW52Xyp9IDsgZG8KLQlldmFsICJleHBvcnQgJHt2YXJuYW1lI2Vudl99PVwk
eyR7dmFybmFtZX19IgotZG9uZQotCi1ta2RpciAtcCAiJHt4dmZiX2xvZ19wYXRofSIKLWNob3du
ICIke2J1aWxkYm90X3VzZXJ9IiAiJHt4dmZiX2xvZ19wYXRofSIKLQotZXhlYyAvdXNyL2Jpbi9z
ZXR1aWRnaWQgIiR7YnVpbGRib3RfdXNlcn0iIFwKLSAgICAgL3Vzci9iaW4vbXVsdGlsb2cgdCAi
JHt4dmZiX2xvZ19wYXRofSIKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0
ay94dmZiL3J1biBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay94dmZiL3J1bgpkZWxldGVk
IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODljZDMwMS4uMDAwMDAwMAotLS0gYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9ydW4KKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBA
Ci0jISAvYmluL2Jhc2gKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotCi1leGVj
IDI+JjEKLQotOiAke0JVSUxEQk9UX0NPTkZJRzo9L2V0Yy9kYWVtb250b29scy1idWlsZGJvdC5j
b25mfQotCi0jIFJlYWQgY29uZmlndXJhdGlvbiBmaWxlCi1bIC1yICIke0JVSUxEQk9UX0NPTkZJ
R30iIF0gJiYgLiAiJHtCVUlMREJPVF9DT05GSUd9IgotCi06ICR7eHZmYl9kaXNwbGF5Oj0nOjEw
J30KLTogJHt4dmZiX21vZGU6PScxMDI0eDc2OHgyNCd9Ci0KLSMgRXhwYW5kIGFsbCAiZW52Xyoi
IGVudmlyb25tZW50IHZhcmlhYmxlcwotZm9yIHZhcm5hbWUgaW4gJHshZW52Xyp9IDsgZG8KLQll
dmFsICJleHBvcnQgJHt2YXJuYW1lI2Vudl99PVwkeyR7dmFybmFtZX19IgotZG9uZQotCi1ta2Rp
ciAtcCAieHZmYiR7eHZmYl9kaXNwbGF5fSIKLWV4ZWMgL3Vzci9iaW4vWHZmYiAiJHt4dmZiX2Rp
c3BsYXl9IiBcCi0JLWZiZGlyICJ4dmZiJHt4dmZiX2Rpc3BsYXl9IiBcCi0JLXNjcmVlbiAwICIk
e3h2ZmJfbW9kZX0iIFwKLQktbm9saXN0ZW4gaW5ldDYgXAotCS1ub2xpc3RlbiBpbmV0Ci0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNTNjZmE0
Li40NGI5NDI0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDMtMjcgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9y
bWFuZEBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIGNyYXNoIGxvZyByZXBvcnRzIHN1cHBv
cnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxNjU5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3Zl
ZCB0aGUgZGFlbW9udG9vbHMgY3Jhc2htb24veHZmYiBzY3JpcHRzIGFuZCBpbXBsZW1lbnRlZCB0
aGUgY3Jhc2gKKyAgICAgICAgbG9nIHJlcG9ydGluZyBpbiB0aGUgTlJXVCBHdGsgcG9ydC4gVG8g
Z2V0IHByb3BlciBjcmFzaCBsb2dzIG9uZQorICAgICAgICBuZWVkcyB0byBzZXQgdGhlIGNvcmUg
cGF0dGVybiBsaWtlIHRoaXM6CisgICAgICAgIGVjaG8gIi9wYXRoL3RvL2NvcmVzL2NvcmUtcGlk
XyVwLV8tcHJvY2Vzc18lZSIgPiAvcHJvYy9zeXMva2VybmVsL2NvcmVfcGF0dGVybgorICAgICAg
ICBUaGVuIGVuYWJsZSBjb3JlZHVtcHMgd2l0aCAidWxpbWl0IC1jIHVubGltaXRlZCIgYW5kIGNh
bGw6CisgICAgICAgIHJ1bi13ZWJraXQtdGVzdHMgLS1ndGsgLS1jb3JlZHVtcC1kaXI9L3BhdGgv
dG8vY29yZXMKKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUU6CisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uOiBSZW1vdmVkLgor
ICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuOiBSZW1vdmVk
LgorICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9ydW46IFJlbW92ZWQu
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNv
bmY6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL3h2ZmIvbG9nL3J1bjogUmVtb3Zl
ZC4KKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9ydW46IFJlbW92ZWQuCisg
ICAgICAgICogU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a0RyaXZlci5z
dG9wKToKKyAgICAgICAgKEd0a1BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSk6CisgICAgICAg
IChHdGtQb3J0KToKKyAgICAgICAgKEd0a1BvcnQuX2dldF9nZGJfb3V0cHV0KToKKyAgICAgICAg
KEd0a1BvcnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICAoR3RrUG9ydC5fZ2V0X2NyYXNoX2xv
Zy5tYXRjaF9maWxlbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9ndGtfdW5pdHRlc3QucHk6CisgICAgICAgIChHdGtQb3J0VGVzdCk6CisgICAgICAg
ICh0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUpOgorICAgICAgICAoYXNzZXJ0TGluZXNFcXVh
bCk6CisgICAgICAgIChfbW9ja19nZGJfb3V0cHV0KToKKyAgICAgICAgKHRlc3RfZ2V0X2NyYXNo
X2xvZyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOgorCiAyMDEyLTAzLTI4ICBIYW8gWmhl
bmcgIDx6aGVuZ2hhb0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWFrZSBDaHJvbWl1bSBwb3J0
IGZvciBBbmRyb2lkIHVzZSBoYXJkd2FyZSBncHUgcGF0aCBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cyBiL1Rvb2xzL1NjcmlwdHMvbmV3LXJ1
bi13ZWJraXQtdGVzdHMKaW5kZXggOGY3Y2QwNC4uYjAzZDZiOSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cworKysgYi9Ub29scy9TY3JpcHRzL25ldy1ydW4t
d2Via2l0LXRlc3RzCkBAIC01Miw2ICs1MiwxMyBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgogICAgICAgICBlbnZbJ1BZVEhPTlBBVEgnXSA9IHNjcmlwdF9kaXIKICAgICBtb2R1bGVfcGF0
aCA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCAnd2Via2l0cHknLCAnbGF5b3V0X3Rlc3RzJywg
J3J1bl93ZWJraXRfdGVzdHMucHknKQogICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgbW9kdWxl
X3BhdGhdICsgc3lzLmFyZ3ZbMTpdCisKKyAgICAjIFdyYXAgdGhlIE5SV1QgcHJvY2VzcyBpbiB0
aGUgamhidWlsZCBlbnZpcm9ubWVudCBzbyBEUlQgb3IgV0tUUgorICAgICMgZG9lc24ndCBuZWVk
IHRvIGRvIGl0IGFuZCB0aGVpciBwcm9jZXNzIGlkIGFzIHJlcG9ydGVkIGJ5CisgICAgIyBzdWJw
cm9jZXNzLlBvcGVuIGlzIG5vdCBqaGJ1aWxkJ3MuCisgICAgaWYgJy0tZ3RrJyBpbiBzeXMuYXJn
dlsxOl06CisgICAgICAgIGNtZC5pbnNlcnQoMSwgb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICcu
LicsICdndGsnLCAncnVuLXdpdGgtamhidWlsZCcpKQorCiAgICAgcHJvYyA9IHN1YnByb2Nlc3Mu
UG9wZW4oY21kLCBlbnY9ZW52KQogICAgIHRyeToKICAgICAgICAgcHJvYy53YWl0KCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggNWU5
ZDgxYS4uZWI4M2M0MiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9ndGsucHkKQEAgLTY2LDEwICs2Niw2IEBAIGNsYXNzIEd0a0RyaXZlcihXZWJLaXRE
cml2ZXIpOgogICAgICAgICAgICAgc2VsZi5feHZmYl9wcm9jZXNzLndhaXQoKQogICAgICAgICAg
ICAgc2VsZi5feHZmYl9wcm9jZXNzID0gTm9uZQogCi0gICAgZGVmIGNtZF9saW5lKHNlbGYsIHBp
eGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKToKLSAgICAgICAgd3JhcHBlcl9wYXRoID0gc2VsZi5f
cG9ydC5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoIlRvb2xzIiwgImd0ayIsICJydW4td2l0aC1qaGJ1
aWxkIikKLSAgICAgICAgcmV0dXJuIFt3cmFwcGVyX3BhdGhdICsgV2ViS2l0RHJpdmVyLmNtZF9s
aW5lKHNlbGYsIHBpeGVsX3Rlc3RzLCBwZXJfdGVzdF9hcmdzKQotCiAKIGNsYXNzIEd0a1BvcnQo
V2ViS2l0UG9ydCk6CiAgICAgcG9ydF9uYW1lID0gImd0ayIKQEAgLTE0NywzICsxNDMsNTAgQEAg
Y2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgIyBGSVhNRTogb2xkLXJ1bi13ZWJr
aXQtdGVzdHMgYWxzbyBhZGRlZCBbIi1ncmFwaGljc3N5c3RlbSIsICJyYXN0ZXIiLCAiLXN0eWxl
IiwgIndpbmRvd3MiXQogICAgICAgICAjIEZJWE1FOiBvbGQtcnVuLXdlYmtpdC10ZXN0cyBjb252
ZXJ0ZWQgcmVzdWx0c19maWxlbmFtZSBwYXRoIGZvciBjeWd3aW4uCiAgICAgICAgIHNlbGYuX3J1
bl9zY3JpcHQoInJ1bi1sYXVuY2hlciIsIHJ1bl9sYXVuY2hlcl9hcmdzKQorCisgICAgZGVmIF9n
ZXRfZ2RiX291dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKKyAgICAgICAgY21kID0gWydnZGIn
LCAnLWV4JywgJ3RocmVhZCBhcHBseSBhbGwgYnQnLCAnLS1iYXRjaCcsIHN0cihzZWxmLl9wYXRo
X3RvX2RyaXZlcigpKSwgY29yZWR1bXBfcGF0aF0KKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3Mu
UG9wZW4oY21kLCBzdGRpbj1Ob25lLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3Vi
cHJvY2Vzcy5QSVBFKQorICAgICAgICBwcm9jLndhaXQoKQorICAgICAgICBlcnJvcnMgPSBbbC5z
dHJpcCgpIGZvciBsIGluIHByb2Muc3RkZXJyLnJlYWRsaW5lcygpXQorICAgICAgICByZXR1cm4g
KHByb2Muc3Rkb3V0LnJlYWQoKSwgZXJyb3JzKQorCisgICAgZGVmIF9nZXRfY3Jhc2hfbG9nKHNl
bGYsIG5hbWUsIHBpZCwgc3Rkb3V0LCBzdGRlcnIpOgorICAgICAgICBwaWRfcmVwcmVzZW50YXRp
b24gPSBzdHIocGlkIG9yICc8dW5rbm93bj4nKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2Vs
Zi5nZXRfb3B0aW9uKCdjb3JlZHVtcHNfZGlyZWN0b3J5JykKKyAgICAgICAgZXJyb3JzID0gW10K
KyAgICAgICAgY3Jhc2hfbG9nID0gJycKKyAgICAgICAgZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxl
bmFtZSA9ICJjb3JlLXBpZF8lcy1fLXByb2Nlc3NfJXMiICUgKHBpZF9yZXByZXNlbnRhdGlvbiwg
bmFtZSkKKworICAgICAgICBkZWYgbWF0Y2hfZmlsZW5hbWUoZmlsZXN5c3RlbSwgZGlyZWN0b3J5
LCBmaWxlbmFtZSk6CisgICAgICAgICAgICBpZiBwaWQ6CisgICAgICAgICAgICAgICAgcmV0dXJu
IGZpbGVuYW1lID09IGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5hbWUKKyAgICAgICAgICAgIHJl
dHVybiBmaWxlbmFtZS5maW5kKG5hbWUpID4gLTEKKworICAgICAgICBpZiBsb2dfZGlyZWN0b3J5
OgorICAgICAgICAgICAgZHVtcHMgPSBzZWxmLl9maWxlc3lzdGVtLmZpbGVzX3VuZGVyKGxvZ19k
aXJlY3RvcnksIGZpbGVfZmlsdGVyPW1hdGNoX2ZpbGVuYW1lKQorICAgICAgICAgICAgaWYgZHVt
cHM6CisgICAgICAgICAgICAgICAgIyBHZXQgdGhlIG1vc3QgcmVjZW50IGNvcmVkdW1wIG1hdGNo
aW5nIHRoZSBwaWQgYW5kL29yIHByb2Nlc3MgbmFtZS4KKyAgICAgICAgICAgICAgICBjb3JlZHVt
cF9wYXRoID0gbGlzdChyZXZlcnNlZChzb3J0ZWQoZHVtcHMpKSlbMF0KKyAgICAgICAgICAgICAg
ICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF9nZGJfb3V0cHV0KGNvcmVkdW1wX3BhdGgp
CisKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgKHN0ZGVyciBvciAnPGVtcHR5Picp
LmRlY29kZSgndXRmOCcsIGVycm9ycz0naWdub3JlJykuc3BsaXRsaW5lcygpCisgICAgICAgIGVy
cm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6ICcgKyBsKSBmb3IgbCBpbiBzdGRlcnJfbGlu
ZXMpCisgICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6CisgICAgICAgICAgICBpZiBub3QgbG9nX2Rp
cmVjdG9yeToKKyAgICAgICAgICAgICAgICBsb2dfZGlyZWN0b3J5ID0gIi9wYXRoL3RvL2NvcmVk
dW1wcyIKKyAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBhdGguam9pbihsb2dfZGlyZWN0
b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAgICAgICAgIGNyYXNoX2xvZyA9
ICIiIlwKK0NvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSlzIG5vdCBmb3Vu
ZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMgY29tbWFuZCBhcyBzdXBlci11
c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0
ZXJuCistIHJ1biB0aGlzIGNvbW1hbmQgYmVmb3JlIHN0YXJ0aW5nIHJ1bi13ZWJraXQtdGVzdHM6
IHVsaW1pdCAtYyB1bmxpbWl0ZWQKKy0gcnVuIHRoZSB0ZXN0cyBsaWtlIHRoaXM6IHJ1bi13ZWJr
aXQtdGVzdHMgLS1ndGsgLS1jb3JlZHVtcC1kaXI9JShsb2dfZGlyZWN0b3J5KXMKKworIiIiICUg
bG9jYWxzKCkKKworICAgICAgICByZXR1cm4gIiIiXAorQ3Jhc2ggbG9nIGZvciAlKG5hbWUpcyAo
cGlkICUocGlkX3JlcHJlc2VudGF0aW9uKXMpOgorCislKGNyYXNoX2xvZylzCislKGVycm9yc19z
dHIpcyIiIiAlIGxvY2FscygpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvZ3RrX3VuaXR0ZXN0LnB5CmluZGV4IDllZTA3NGYuLmJlMmRiN2Eg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3Rr
X3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ3RrX3VuaXR0ZXN0LnB5CkBAIC0yNywxOSArMjcsNDggQEAKICMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAog
aW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgc3lzCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5wb3J0Lmd0ayBpbXBvcnQgR3RrUG9ydAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCi0KK2Zyb20gd2Via2l0cHkudGhp
cmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmls
ZXN5c3RlbV9tb2NrIGltcG9ydCBNb2NrRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwogCiBjbGFzcyBHdGtQb3J0VGVzdChwb3J0X3Rlc3Rj
YXNlLlBvcnRUZXN0Q2FzZSk6CiAgICAgcG9ydF9uYW1lID0gJ2d0aycKICAgICBwb3J0X21ha2Vy
ID0gR3RrUG9ydAorICAgIF9tb2NrX2NyYXNoX2xvZyA9ICIiIlwKK0NyYXNoIGxvZyBmb3IgRHVt
cFJlbmRlclRyZWUgKHBpZCAyODUyOSk6CisKK0NvcmVkdW1wIGNvcmUtcGlkXzI4NTI5LV8tcHJv
Y2Vzc19EdW1wUmVuZGVyVHJlZSBub3QgZm91bmQuIFRvIGVuYWJsZSBjcmFzaCBsb2dzOgorCist
IHJ1biB0aGlzIGNvbW1hbmQgYXMgc3VwZXItdXNlcjogZWNobyAiL3BhdGgvdG8vZHVtcHMvY29y
ZS1waWRfJXAtXy1wcm9jZXNzXyVlIiA+IC9wcm9jL3N5cy9rZXJuZWwvY29yZV9wYXR0ZXJuCist
IHJ1biB0aGlzIGNvbW1hbmQgYmVmb3JlIHN0YXJ0aW5nIHJ1bi13ZWJraXQtdGVzdHM6IHVsaW1p
dCAtYyB1bmxpbWl0ZWQKKy0gcnVuIHRoZSB0ZXN0cyBsaWtlIHRoaXM6IHJ1bi13ZWJraXQtdGVz
dHMgLS1ndGsgLS1jb3JlZHVtcC1kaXI9L3BhdGgvdG8vZHVtcHMKKworCitTVERFUlI6IDxlbXB0
eT4iIiIKIAogICAgIGRlZiB0ZXN0X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUoc2VsZik6CiAgICAg
ICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoc2hvdWxkX2xvZz1UcnVlKQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAi
TU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcicsICctLXJlbGVh
c2UnLCAnLS1ndGsnLCAnZmlsZTovL3Rlc3QuaHRtbCddLCBjd2Q9L21vY2stY2hlY2tvdXRcbiIK
ICAgICAgICAgT3V0cHV0Q2FwdHVyZSgpLmFzc2VydF9vdXRwdXRzKHNlbGYsIHBvcnQuc2hvd19y
ZXN1bHRzX2h0bWxfZmlsZSwgWyJ0ZXN0Lmh0bWwiXSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVk
X3N0ZGVycikKKworICAgIGRlZiBhc3NlcnRMaW5lc0VxdWFsKHNlbGYsIGEsIGIpOgorICAgICAg
ICBpZiBoYXNhdHRyKHNlbGYsICdhc3NlcnRNdWx0aUxpbmVFcXVhbCcpOgorICAgICAgICAgICAg
c2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChhLCBiKQorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChhLnNwbGl0bGluZXMoKSwgYi5zcGxpdGxpbmVzKCkpCisKKyAg
ICBkZWYgX21vY2tfZ2RiX291dHB1dChzZWxmLCBjb3JlZHVtcF9wYXRoKToKKyAgICAgICAgcmV0
dXJuIChzZWxmLl9tb2NrX2NyYXNoX2xvZywgW10pCisKKyAgICBkZWYgdGVzdF9nZXRfY3Jhc2hf
bG9nKHNlbGYpOgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0
aW9ucyhjb3JlZHVtcHNfZGlyZWN0b3J5PScvcGF0aC90by9kdW1wcycsIGNvbmZpZ3VyYXRpb249
J1JlbGVhc2UnKSkKKyAgICAgICAgcG9ydC5fZ2V0X2dkYl9vdXRwdXQgPSBzZWxmLl9tb2NrX2dk
Yl9vdXRwdXQKKyAgICAgICAgbG9nID0gcG9ydC5fZ2V0X2NyYXNoX2xvZygiRHVtcFJlbmRlclRy
ZWUiLCAyODUyOSwgIiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwobG9nLCBz
ZWxmLl9tb2NrX2NyYXNoX2xvZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDc0NmE1NDUuLjdmZDY0OTMg
MTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0cy5weQpAQCAtMjYzLDYgKzI2MywxMSBAQCBkZWYgcGFyc2VfYXJncyhhcmdz
PU5vbmUpOgogICAgICAgICAgICAgaGVscD0iQXJndW1lbnRzIHBhcnNlZCB0byBBbmRyb2lkIGFk
YiwgdG8gc2VsZWN0IGRldmljZSwgZXRjLiIpLAogICAgIF0pKQogCisgICAgb3B0aW9uX2dyb3Vw
X2RlZmluaXRpb25zLmFwcGVuZCgoIkdUSysgT3B0aW9ucyIsIFsKKyAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oIi0tY29yZWR1bXAtZGlyIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImNvcmVk
dW1wc19kaXJlY3RvcnkiLAorICAgICAgICAgICAgaGVscD0iUGF0aCB0byB0aGUgZGlyZWN0b3J5
IHN0b3JpbmcgdGhlIGNvcmVkdW1wIGZpbGVzIGZvciBjcmFzaGluZyB0ZXN0cy4iKSwKKyAgICBd
KSkKKwogICAgIG9wdGlvbl9ncm91cF9kZWZpbml0aW9ucy5hcHBlbmQoKCJXZWJLaXQgT3B0aW9u
cyIsIFsKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZ2MtYmV0d2Vlbi10ZXN0cyIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBoZWxwPSJG
b3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gYmV0d2VlbiBlYWNoIHRlc3QiKSwKLS0gCjEuNy45LjE=
</data>
<flag name="review"
          id="138447"
          type_id="1"
          status="+"
          setter="dpranke"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134760</attachid>
            <date>2012-03-30 02:58:02 -0700</date>
            <delta_ts>2012-04-02 13:18:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>22487</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0ZjBhMDM1ZDQxOWRhMmYyNWZlY2RmODI0ZTVlYWUzYzllMzg0YWEwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBXZWQsIDI4IE1hciAyMDEyIDEwOjEwOjUzICswMjAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL1JFQURNRSAgICAgICAgICAg
ICAgICAgfCAgICA4ICstLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2Ny
YXNobW9uICAgICAgfCAgIDczIC0tLS0tLS0tLS0tLS0tLS0tLS0KIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuICAgICAgIHwgICAzOCAtLS0tLS0tLS0tCiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vcnVuICAgICAgICAgICB8ICAgNzQgLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIC4uLi9ndGsvZGFlbW9udG9vbHMtYnVpbGRib3QuY29uZiAgICAg
ICAgICAgICAgICAgIHwgICA0MyAtLS0tLS0tLS0tLQogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL3h2ZmIvbG9nL3J1biAgICAgICAgICAgfCAgIDM3IC0tLS0tLS0tLS0KIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2d0ay94dmZiL3J1biAgICAgICAgICAgICAgIHwgICA0MSAtLS0tLS0tLS0t
LQogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDM2ICsrKysrKysrKysKIFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMgICAgICAg
ICAgICAgICAgIHwgICAgNyArKwogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHkgICAgfCAgIDUxICsrKysrKysrKysrKy0KIC4uLi93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkgICAgIHwgICAzMSArKysrKysrKy0KIDExIGZpbGVz
IGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCAzMTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k
ZSAxMDA3NTUgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uCiBk
ZWxldGUgbW9kZSAxMDA3NTUgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2xv
Zy9ydW4KIGRlbGV0ZSBtb2RlIDEwMDc1NSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jh
c2htb24vcnVuCiBkZWxldGUgbW9kZSAxMDA3NTUgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3Rr
L3h2ZmIvbG9nL3J1bgogZGVsZXRlIG1vZGUgMTAwNzU1IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2d0ay94dmZiL3J1bgoKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9S
RUFETUUgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvUkVBRE1FCmluZGV4IDllNThhZTIu
LjE2ZmE5ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUUK
KysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL1JFQURNRQpAQCAtMTksMTIgKzE5LDEw
IEBAIGZvbGxvd2luZzoKICogVGhlIGRhZW1vbnRvb2xzIHBhY2thZ2UgKG9yIG9uZSBvZiBpdHMg
ZHJvcC1pbiByZXBsYWNlbWVudHMsIGxpa2UgcnVuaXQKICAgb3IgZnJlZWR0OyBidXQgb25seSBk
YWVtb250b29scyBoYXMgYmVlbiB0ZXN0ZWQgc28gZmFyKS4KIAotKiBUaGUgY3Jhc2ggZHVtcCBt
b25pdG9yIGFsc28gdXNlcyAiaW5vdGlmeXdhaXQiIChwYXJ0IG9mIGlub3RpZnktdG9vbHMgWzJd
KQotCiBJbiBzaG9ydCwgaW4gYSBEZWJpYW4tYmFzZWQgc3lzdGVtIHlvdSBjYW4gZW5zdXJlIHlv
dSBoYXZlIHRoZSBuZWVkZWQgYml0cwogd2l0aCB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6CiAKLSAg
YXB0LWdldCBpbnN0YWxsIGlub3RpZnktdG9vbHMgZGFlbW9udG9vbHMtcnVuCisgIGFwdC1nZXQg
aW5zdGFsbCBkYWVtb250b29scy1ydW4KIAogCiBTZXR1cApAQCAtMzksOCArMzcsNyBAQCBTZXR1
cAogNC4gRWRpdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIHN1aXQgeW91ciBuZWVkcywgdGhl
IGNvbW1lbnRzIHNob3VsZAogICAgYmUgc2VsZi1leHBsYW5hdG9yeS4KIAotNS4gRHJvcCB0aGUg
ImJ1aWxkYm90IiwgInB1bHNlYXVkaW8iIGFuZCAieHZmYiIgZGlyZWN0b3JpZXMgKHBsdXMKLSAg
ICJjcmFzaG1vbiIsIGlmIGRlc2lyZWQpIHRvIHRoZSBzZXJ2aWNlIGNvbnRyb2wgZGlyZWN0b3J5
IG9mCis1LiBEcm9wIHRoZSAiYnVpbGRib3QiIGFuZCAicHVsc2VhdWRpbyIgZGlyZWN0b3JpZXMg
dG8gdGhlIHNlcnZpY2UgY29udHJvbCBkaXJlY3Rvcnkgb2YKICAgIGRhZW1vbnRvb2xzOyBmb3Ig
RGViaWFuLWJhc2VkIHNldHVwcyB0aGF0IHdvdWxkIGJlICIvZXRjL3NlcnZpY2UiCiAKIApAQCAt
NDgsNSArNDUsNCBAQCBSZWZlcmVuY2VzCiA9PT09PT09PT09CiAKIFsxXSBodHRwOi8vY3IueXAu
dG8vZGFlbW9udG9vbHMuaHRtbAotWzJdIGh0dHA6Ly93aWtpLmdpdGh1Yi5jb20vcnZvaWNpbGFz
L2lub3RpZnktdG9vbHMvCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0
ay9jcmFzaG1vbi9jcmFzaG1vbiBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1v
bi9jcmFzaG1vbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNDE3MDVhMi4uMDAwMDAw
MAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vY3Jhc2htb24KKysr
IC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jISAvYmluL2Jhc2gKLSMKLSMgQ29weXJpZ2h0
IChDKSAyMDEwIENhcmxvcyBMb3BleiA8Y2xvcGV6QGlnYWxpYS5jb20+LCBJZ2FsaWEgUy5MLgot
IwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot
IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLQotc2V0IC1lCi0KLVsgIiR7Y29yZWRp
cn0iIF0gfHwgewotICAgIGVjaG8gIkVudiB2YXIgJ1wke2NvcmVkaXJ9JyBub3QgZGVmaW5lZCEi
ID4mMgotICAgIGV4aXQgMTExCi19Ci1bICIke3Byb2dyYW1wYXRofSIgXSB8fCB7Ci0gICAgZWNo
byAiRW52IHZhciAnXCR7cHJvZ3JhbXBhdGh9JyBub3QgZGVmaW5lZCIgPiYyCi0gICAgZXhpdCAx
MTEKLX0KLVsgIiR7YXJjaH0iIF0gfHwgewotICAgIGVjaG8gIkVudiB2YXIgJ1wke2FyY2h9JyBu
b3QgZGVmaW5lZCIgPiYyCi0gICAgZXhpdCAxMTEKLX0KLVsgIiR7bWFpbHRvfSIgXSB8fCB7Ci0g
ICAgZWNobyAiRW52IHZhciAnXCR7bWFpbHRvfScgbm90IGRlZmluZWQiID4mMgotICAgIGV4aXQg
MTExCi19Ci0KLQotaW5vdGlmeXdhaXQgLXEgLW0gLS1mb3JtYXQgJyVmJyAtLWV4Y2x1ZGUgJy50
cmFjZS5odG1sJCcgLWUgY2xvc2Vfd3JpdGUgIiR7Y29yZWRpcn0iIHwgXAotd2hpbGUgcmVhZCAt
ciBjb3JlZHVtcAotZG8KLQlpZiBncmVwIC1xRSAnXmNvcmUtd2hlbl9bWzpkaWdpdDpdXXsxMFws
MTJ9LV8td2hvX1tbOnByaW50Ol1dKy1fLXdoeV8nIDw8PCAiJHtjb3JlZHVtcH0iCi0JdGhlbgot
CQkjIEdldCByZXZpc2lvbiBudW1iZXIgZnJvbSBTdWJ2ZXJzaW9uIHNvdXJjZXMKLQkJcmV2PSQo
Y2QgIiR7Y3Jhc2htb25fc3JjX3BhdGh9IiAmJiBzdm4gaW5mbyB8IHNlZCAtZSAnL15SZXZpc2lv
bjovcy9SZXZpc2lvbjogLy9wJyAtZSBkKQotCi0JCSMgR2V0IHRoZSB3aG8gZnJvbSB0aGUgY29y
ZWR1bXAgbmFtZQotCQlwcm9ncmFtZmlsZT0kKGVjaG8gIiR7Y29yZWR1bXB9IiAgXAotCQkJfCBh
d2sgLUYnLV8td2hvXycgJ3sgcHJpbnQgJDIgfSdcCi0JCQl8IGF3ayAtRictXy13aHlfJyAneyBw
cmludCAkMSB9JykKLQotCQkjIFNvbWV0aW1lcyBwcm9ncmFtZmlsZSBnZXRzIGN1dCB3aGVuIGl0
IGlzIGEgbG9uZyBuYW1lOgotCQkjIFNlYXJjaCB1c2luZyB3aWxkY2FyZHMKLQkJZnVsbHByb2dy
YW1wYXRoPSQoZmluZCAiJHtwcm9ncmFtcGF0aH0iIC1leGVjdXRhYmxlIC1uYW1lICIke3Byb2dy
YW1maWxlfSJcKiB8IGhlYWQgLW4xKQotCi0JCSggcHJpbnRmICI8aHRtbD48aGVhZD48dGl0bGU+
U3RhY2tUcmFjZSBmb3IgJHtwcm9ncmFtZmlsZX0gZnJvbSBzdm4iCi0JCQlwcmludGYgIiByZXYg
JHtyZXZ9PC90aXRsZT48L2hlYWQ+XG48Ym9keT5Db3JlIGR1bXAgZmlsZTogIgotCQkJcHJpbnRm
ICI8YSBocmVmPVwiY29yZXMvJHtjb3JlZHVtcH1cIj4ke2NvcmVkdW1wfTwvYT48YnIvPlxuIgot
CQkJcHJpbnRmICI8cHJlPkV4ZWN1dGFibGUgY3Jhc2hlZDogJHtmdWxscHJvZ3JhbXBhdGh9PC9w
cmU+XG4iCi0JCQlwcmludGYgIjxici8+PGhyPjxiPlN0YWNrIFRyYWNlOjwvYj48aHI+PGJyLz5c
bjxwcmU+IgotCi0JCQlnZGIgLWV4ICJ0aHJlYWQgYXBwbHkgYWxsIGJ0IiAtLWJhdGNoICIke2Z1
bGxwcm9ncmFtcGF0aH0iICIke2NvcmVkdW1wfSIgMj4mMSBcCi0JCQkJfCBzZWQgLWUgJ3MvXCYv
XCZhbXAvZztzLzwvXCZsdDsvZztzLz4vXCZndDsvZztzL1wiL1wmcXVvdDsvZycgLWUgInMvJy9c
JlwjMDM5Oy9nIgotCi0JCQlwcmludGYgIjwvcHJlPjwvYm9keT48L2h0bWw+XG4iCi0JCSkgPiAi
L3Zhci93d3cvc3ZuXyR7cmV2fS4ke2NvcmVkdW1wfS50cmFjZS5odG1sIgotCi0JCSMgTWFrZSBz
dXJlIHRoZSB3ZWIgc2VydmVyIGNhbiByZWFkIGl0Ci0JCWNobW9kIDY0NCAiJHtjb3JlZHVtcH0i
Ci0JZmkKLWRvbmUKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2Ny
YXNobW9uL2xvZy9ydW4gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vbG9n
L3J1bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNGRjZDcxZi4uMDAwMDAwMAotLS0g
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jhc2htb24vbG9nL3J1bgorKysgL2Rldi9u
dWxsCkBAIC0xLDM4ICswLDAgQEAKLSMhIC9iaW4vYmFzaAotIwotIyBDb3B5cmlnaHQgKEMpIDIw
MTAgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIyBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSMgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSMgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSMgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0KLTogJHtCVUlMREJPVF9DT05GSUc6PS9ldGMvZGFlbW9udG9vbHMtYnVp
bGRib3QuY29uZn0KLQotIyBSZWFkIGNvbmZpZ3VyYXRpb24gZmlsZQotWyAtciAiJHtCVUlMREJP
VF9DT05GSUd9IiBdICYmIC4gIiR7QlVJTERCT1RfQ09ORklHfSIKLQotOiAke2J1aWxkYm90X3Vz
ZXI6PSR7SE9NRX19Ci06ICR7Y3Jhc2htb25fbG9nX3BhdGg6PS92YXIvbG9nL2NyYXNobW9ufQot
Ci0jIEV4cGFuZCBhbGwgImVudl8qIiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLWZvciB2YXJuYW1l
IGluICR7IWVudl8qfSA7IGRvCi0JZXZhbCAiZXhwb3J0ICR7dmFybmFtZSNlbnZffT1cJHske3Zh
cm5hbWV9fSIKLWRvbmUKLQotbWtkaXIgLXAgIiR7Y3Jhc2htb25fbG9nX3BhdGh9IgotY2hvd24g
IiR7YnVpbGRib3RfdXNlcn0iICIke2NyYXNobW9uX2xvZ19wYXRofSIKLQotZXhlYyAvdXNyL2Jp
bi9zZXR1aWRnaWQgIiR7YnVpbGRib3RfdXNlcn0iIFwKLSAgICAgL3Vzci9iaW4vbXVsdGlsb2cg
dCAiJHtjcmFzaG1vbl9sb2dfcGF0aH0iCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2d0ay9jcmFzaG1vbi9ydW4gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsvY3Jh
c2htb24vcnVuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAzOGJlM2ZlLi4wMDAwMDAw
Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9ydW4KKysrIC9kZXYv
bnVsbApAQCAtMSw3NCArMCwwIEBACi0jISAvYmluL2Jhc2gKLSMKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSMgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIwotIyBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0jIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotCi1leGVjIDI+JjEKLQotOiAke0JVSUxEQk9UX0NPTkZJRzo9L2V0Yy9k
YWVtb250b29scy1idWlsZGJvdC5jb25mfQotCi0jIFJlYWQgY29uZmlndXJhdGlvbiBmaWxlCi1b
IC1yICIke0JVSUxEQk9UX0NPTkZJR30iIF0gJiYgLiAiJHtCVUlMREJPVF9DT05GSUd9IgotCi06
ICR7YnVpbGRib3RfdXNlcjo9JHtVU0VSOi0ke0xPR05BTUV9fX0KLTogJHtjcmFzaG1vbl9vdXRw
dXQ6PScnfQotCi0jIEV4cGFuZCBhbGwgImVudl8qIiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLWZv
ciB2YXJuYW1lIGluICR7IWVudl8qfSA7IGRvCi0JZXZhbCAiZXhwb3J0ICR7dmFybmFtZSNlbnZf
fT1cJHske3Zhcm5hbWV9fSIKLWRvbmUKLQotCi1pZiBbICEgLWQgIiR7Y3Jhc2htb25fb3V0cHV0
fSIgXQotdGhlbgotCWlmICEgWyAiJHtjcmFzaG1vbl9vdXRwdXR9IiBdCi0JdGhlbgotCQllY2hv
ICJEdW1wIGRpcmVjdG9yeSAnJHtjcmFzaG1vbl9vdXRwdXR9JyBkb2VzIG5vdCBleGlzdCAoc2xl
ZXBpbmcpIgotCWZpCi0Jc2xlZXAgJCgoIDYwICogNjAgKiA0ICkpCi0JZXhpdCAxMTEKLWZpCi0K
LQotaWYgISBbICIke2J1aWxkYm90X2JpdHN9IiBdCi10aGVuCi0JIyBHdWVzcyBiaXRzICgzMi82
NCkgZnJvbSB1bmFtZSAtbQotCW1hY2hpbmU9JCh1bmFtZSAtbSkKLQljYXNlICR7bWFjaGluZX0g
aW4KLQkJeDg2XzY0IHwgYW1kNjQgfCBpYTY0IHwgcHBjNjQpCi0JCQlidWlsZGJvdF9iaXRzPSI2
NCIgOzsKLQkJKikKLQkJCWJ1aWxkYm90X2JpdHM9IjMyIiA7OwotCWVzYWMKLWZpCi0KLTogJHtj
cmFzaG1vbl9iaW5fcGF0aDo9IiR7YnVpbGRib3RfcGF0aH0vZ3RrLWxpbnV4LSR7YnVpbGRib3Rf
Yml0c30tZGVidWcvYnVpbGQvV2ViS2l0QnVpbGQvRGVidWcvUHJvZ3JhbXMifQotCi0KLWNkICIk
e2NyYXNobW9uX291dHB1dH0iCi1leGVjIC91c3IvYmluL2VudiAtICAgICAgICAgICBcCi0JCVBB
VEg9IiR7UEFUSH0iICAgICAgICAgICAgIFwKLQkJU0hFTEw9Ii9iaW4vYmFzaCIgICAgICAgICAg
IFwKLQkJVVNFUj0iJHtidWlsZGJvdF91c2VyfSIgICAgICBcCi0JCWFyY2g9IiR7YnVpbGRib3Rf
Yml0c30iICAgICAgIFwKLQkJTE9HTkFNRT0iJHtidWlsZGJvdF91c2VyfSIgICAgIFwKLQkJY29y
ZWRpcj0iJHtjcmFzaG1vbl9vdXRwdXR9IiAgICBcCi0JCUhPTUU9Ii9ob21lLyR7YnVpbGRib3Rf
dXNlcn0iICAgIFwKLQkJbWFpbHRvPSIke2NyYXNobW9uX21haWx0bzotJyd9IiAgIFwKLQkJcHJv
Z3JhbXBhdGg9IiR7Y3Jhc2htb25fYmluX3BhdGh9IiBcCi0JL3Vzci9iaW4vc2V0dWlkZ2lkICIk
e2J1aWxkYm90X3VzZXJ9IiAiJChwd2QpL2NyYXNobW9uIgotCmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ndGsvZGFlbW9udG9vbHMtYnVpbGRib3QuY29uZiBiL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2d0ay9kYWVtb250b29scy1idWlsZGJvdC5jb25mCmluZGV4IDU5YzFj
MGIuLjMxYTZkNjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9kYWVt
b250b29scy1idWlsZGJvdC5jb25mCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2d0ay9k
YWVtb250b29scy1idWlsZGJvdC5jb25mCkBAIC0yOSw0OCArMjksNiBAQCBidWlsZGJvdF91c2Vy
PSJzbGF2ZSIKIGJ1aWxkYm90X2xvZ19wYXRoPSIvdmFyL2xvZy9idWlsZGJvdCIKIAogCi0jIERp
c3BsYXkgbnVtYmVyIHVuZGVyIHdoaWNoIFh2ZmIgd2lsbCBydW4KLSMKLXh2ZmJfZGlzcGxheT0i
OjEwIgotCi0jIEdyYXBoaWNhbCBtb2RlIHdoaWNoIFh2ZmIgd2lsbCByZXBvcnQgdG8gYXBwbGlj
YXRpb25zCi0jCi14dmZiX21vZGU9IjEwMjR4NzY4eDI0IgotCi0jIFBhdGggdG8gYSBkaXJlY3Rv
cnkgd2hlcmUgdG8gbG9nIFh2ZmIgZXJyb3Igb3V0cHV0Ci0jCi14dmZiX2xvZ19wYXRoPSIvdmFy
L2xvZy94dmZiIgotCi0KLSMgT3V0cHV0IGRpcmVjdG9yeSBmb3IgY29yZSBkdW1wcy4gU2V0IHRo
aXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvCi0jIGRpc2FibGUgcmVjb3JkaW5nIHRoZW0uCi0jCi1j
cmFzaG1vbl9vdXRwdXQ9Ii92YXIvd3d3L3dlYmtpdGd0ay1jb3JlZHVtcHMiCi0KLSMgTWF4aW11
bSBzaXplIG9mIGNvcmUgZHVtcHMuIFdpdGggdGhlIGRlZmF1bHQgInVubGltaXRlZCIgc2V0dGlu
ZwotIyBpdCBpcyByZWNvbW1lbmRlZCB0byBoYXZlIH4yMEdCIGZvciBjb3JlcyBpbiA2NC1iaXQg
bWFjaGluZXMuCi0jIEZvciAzMi1iaXQgYm90cywgbGVzcyBzcGFjZSBpcyBuZWVkZWQuCi0jCi1j
cmFzaG1vbl9tYXhfc2l6ZT0idW5saW1pdGVkIgotCi0jIFBhdGggdG8gYSBkaXJlY3Rvcnkgd2hl
cmUgdG8gbG9nIGNyYXNobW9uIG91dHB1dAotIwotY3Jhc2htb25fbG9nX3BhdGg9Ii92YXIvbG9n
L2NyYXNobW9uIgotCi0jIEEgbGlzdCBvZiBlLW1haWwgYWRkcmVzc2VzIHdoZXJlIHRvIHNlbmQg
bm90aWZpY2F0aW9ucyBvZiBjb3JlIGR1bXBzLgotIyBMZWF2ZSBlbXB0eSB0byBkaXNhYmxlIG1h
aWwgbm90aWZpY2F0aW9ucy4KLSMKLSMgV0FSTklORzogRS1tYWlsIGFkZHJlc3NlcyB3aWxsIGJl
IGZsb29kZWQgd2l0aCBtZXNzYWdlcyEKLSMKLWNyYXNobW9uX21haWx0bz0iIgotCi0jIEJhc2Ug
ZGlyZWN0b3J5IHdoZXJlIHRvIGZpbmQgc291cmNlcyBhbmQgYnVpbHQgYmluYXJpZXMgb2Ygd2hp
Y2gKLSMgY3Jhc2ggZHVtcHMgYXJlIHRvIGJlIGNhdGNoZWQuIFVzdWFsbHkgeW91IHdpbGwgbm90
IG5lZWQgdG8gY2hhbmdlIHRoaXMuCi0jCi1jcmFzaG1vbl9zcmNfcGF0aD0iJHtidWlsZGJvdF9w
YXRofS9ndGstbGludXgtJHtidWlsZGJvdF9iaXRzfS1kZWJ1Zy9idWlsZCIKLWNyYXNobW9uX2Jp
bl9wYXRoPSIke2NyYXNobW9uX3NyY19wYXRofS9XZWJLaXRCdWlsZC9EZWJ1Zy9Qcm9ncmFtcyIK
LQotCiAjIElmIHlvdSB3YW50IHRvIHVzZSBjY2FjaGUsIHNldCBhIHBhdGggdG8gd2hlcmUgc3lu
bGlua3Mgd2l0aCB0b29sCiAjIG5hbWVzIHBvaW50aW5nIHRvIGNjYWNoZSBhcmUgaW5zdGFsbGVk
LiBJbiBEZWJpYW4gc3lzdGVtcyB0aGlzCiAjIHdvdWxkIGJlIC91c3IvbGliL2NjYWNoZS4gU2V0
IHRvIGVtcHR5IHRvIGRpc2FibGUuCkBAIC04Miw2ICs0MCw1IEBAIGNjYWNoZV9wYXRoPSIvdXNy
L2xpYi9jY2FjaGUiCiAjCiBlbnZfQ0ZMQUdTPSItcGlwZSIKIGVudl9DWFhGTEFHUz0iLXBpcGUi
Ci1lbnZfV2ViS2l0TWFrZUFyZ3VtZW50cz0iLWozIgogZW52X1dFQktJVF9URVNURk9OVFM9Ii9o
b21lLyR7YnVpbGRib3RfdXNlcn0vdGVzdGZvbnRzIgogCmRpZmYgLS1naXQgYS9Ub29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9sb2cvcnVuIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
Z3RrL3h2ZmIvbG9nL3J1bgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMWM4MzkyMi4u
MDAwMDAwMAotLS0gYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9sb2cvcnVuCisr
KyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyEgL2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdo
dCAoQykgMjAxMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0j
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQot
IyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSMKLSMg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIyBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLQotOiAke0JVSUxEQk9UX0NPTkZJRzo9L2V0Yy9kYWVtb250
b29scy1idWlsZGJvdC5jb25mfQotCi0jIFJlYWQgY29uZmlndXJhdGlvbiBmaWxlCi1bIC1yICIk
e0JVSUxEQk9UX0NPTkZJR30iIF0gJiYgLiAiJHtCVUlMREJPVF9DT05GSUd9IgotCi06ICR7YnVp
bGRib3RfdXNlcjo9JHtIT01FfX0KLTogJHt4dmZiX2xvZ19wYXRoOj0vdmFyL2xvZy94dmZifQot
Ci0jIEV4cGFuZCBhbGwgImVudl8qIiBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLWZvciB2YXJuYW1l
IGluICR7IWVudl8qfSA7IGRvCi0JZXZhbCAiZXhwb3J0ICR7dmFybmFtZSNlbnZffT1cJHske3Zh
cm5hbWV9fSIKLWRvbmUKLQotbWtkaXIgLXAgIiR7eHZmYl9sb2dfcGF0aH0iCi1jaG93biAiJHti
dWlsZGJvdF91c2VyfSIgIiR7eHZmYl9sb2dfcGF0aH0iCi0KLWV4ZWMgL3Vzci9iaW4vc2V0dWlk
Z2lkICIke2J1aWxkYm90X3VzZXJ9IiBcCi0gICAgIC91c3IvYmluL211bHRpbG9nIHQgIiR7eHZm
Yl9sb2dfcGF0aH0iCmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsveHZm
Yi9ydW4gYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9ydW4KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDg5Y2QzMDEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZ3RrL3h2ZmIvcnVuCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotIyEg
L2Jpbi9iYXNoCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0jIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KLSMKLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwot
IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotIyBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLQotZXhlYyAyPiYx
Ci0KLTogJHtCVUlMREJPVF9DT05GSUc6PS9ldGMvZGFlbW9udG9vbHMtYnVpbGRib3QuY29uZn0K
LQotIyBSZWFkIGNvbmZpZ3VyYXRpb24gZmlsZQotWyAtciAiJHtCVUlMREJPVF9DT05GSUd9IiBd
ICYmIC4gIiR7QlVJTERCT1RfQ09ORklHfSIKLQotOiAke3h2ZmJfZGlzcGxheTo9JzoxMCd9Ci06
ICR7eHZmYl9tb2RlOj0nMTAyNHg3Njh4MjQnfQotCi0jIEV4cGFuZCBhbGwgImVudl8qIiBlbnZp
cm9ubWVudCB2YXJpYWJsZXMKLWZvciB2YXJuYW1lIGluICR7IWVudl8qfSA7IGRvCi0JZXZhbCAi
ZXhwb3J0ICR7dmFybmFtZSNlbnZffT1cJHske3Zhcm5hbWV9fSIKLWRvbmUKLQotbWtkaXIgLXAg
Inh2ZmIke3h2ZmJfZGlzcGxheX0iCi1leGVjIC91c3IvYmluL1h2ZmIgIiR7eHZmYl9kaXNwbGF5
fSIgXAotCS1mYmRpciAieHZmYiR7eHZmYl9kaXNwbGF5fSIgXAotCS1zY3JlZW4gMCAiJHt4dmZi
X21vZGV9IiBcCi0JLW5vbGlzdGVuIGluZXQ2IFwKLQktbm9saXN0ZW4gaW5ldAotCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMThmMDNiZi4uOWU4
ZGQzMCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM5IEBACisyMDEyLTAzLTI3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRA
aWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBjcmFzaCBsb2cgcmVwb3J0cyBzdXBwb3J0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTY1OQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdGhl
IGRhZW1vbnRvb2xzIGNyYXNobW9uL3h2ZmIgc2NyaXB0cyBhbmQgaW1wbGVtZW50ZWQgdGhlIGNy
YXNoCisgICAgICAgIGxvZyByZXBvcnRpbmcgaW4gdGhlIE5SV1QgR3RrIHBvcnQuIFRvIGdldCBw
cm9wZXIgY3Jhc2ggbG9ncyBvbmUKKyAgICAgICAgbmVlZHMgdG8gc2V0IHRoZSBjb3JlIHBhdHRl
cm4gbGlrZSB0aGlzOgorICAgICAgICBlY2hvICIvcGF0aC90by9jb3Jlcy9jb3JlLXBpZF8lcC1f
LXByb2Nlc3NfJWUiID4gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4KKyAgICAgICAgVGhl
biBlbmFibGUgY29yZWR1bXBzIHdpdGggInVsaW1pdCAtYyB1bmxpbWl0ZWQiIGFuZCBzZXQgdGhl
IFdFQktJVF9DT1JFX0RVTVBTX0RJUkVDVE9SWQorICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJs
ZS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9SRUFETUU6CisgICAgICAgICog
QnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2NyYXNobW9uL2NyYXNobW9uOiBSZW1vdmVkLgorICAgICAg
ICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9sb2cvcnVuOiBSZW1vdmVkLgorICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2d0ay9jcmFzaG1vbi9ydW46IFJlbW92ZWQuCisgICAg
ICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL2RhZW1vbnRvb2xzLWJ1aWxkYm90LmNvbmY6Cisg
ICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvZ3RrL3h2ZmIvbG9nL3J1bjogUmVtb3ZlZC4KKyAg
ICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9ndGsveHZmYi9ydW46IFJlbW92ZWQuCisgICAgICAg
ICogU2NyaXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0czoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weToKKyAgICAgICAgKEd0a0RyaXZlci5zdG9wKToK
KyAgICAgICAgKEd0a1BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmlsZSk6CisgICAgICAgIChHdGtQ
b3J0KToKKyAgICAgICAgKEd0a1BvcnQuX2dldF9nZGJfb3V0cHV0KToKKyAgICAgICAgKEd0a1Bv
cnQuX2dldF9jcmFzaF9sb2cpOgorICAgICAgICAoR3RrUG9ydC5fZ2V0X2NyYXNoX2xvZy5tYXRj
aF9maWxlbmFtZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGtfdW5pdHRlc3QucHk6CisgICAgICAgIChHdGtQb3J0VGVzdCk6CisgICAgICAgICh0ZXN0
X3Nob3dfcmVzdWx0c19odG1sX2ZpbGUpOgorICAgICAgICAoYXNzZXJ0TGluZXNFcXVhbCk6Cisg
ICAgICAgIChfbW9ja19nZGJfb3V0cHV0KToKKyAgICAgICAgKHRlc3RfZ2V0X2NyYXNoX2xvZyk6
CisKIDIwMTItMDMtMjkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmVkIOKAnEludGVs4oCdIGZyb20gdGhlIExpb24gYnVpbGRlcnPigJkgbmFtZXMuCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRlc3RzIGIvVG9vbHMvU2Ny
aXB0cy9uZXctcnVuLXdlYmtpdC10ZXN0cwppbmRleCA4ZjdjZDA0Li5iMDNkNmI5IDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXRlc3RzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvbmV3LXJ1bi13ZWJraXQtdGVzdHMKQEAgLTUyLDYgKzUyLDEzIEBAIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CiAgICAgICAgIGVudlsnUFlUSE9OUEFUSCddID0gc2NyaXB0X2RpcgogICAg
IG1vZHVsZV9wYXRoID0gb3MucGF0aC5qb2luKHNjcmlwdF9kaXIsICd3ZWJraXRweScsICdsYXlv
dXRfdGVzdHMnLCAncnVuX3dlYmtpdF90ZXN0cy5weScpCiAgICAgY21kID0gW3N5cy5leGVjdXRh
YmxlLCBtb2R1bGVfcGF0aF0gKyBzeXMuYXJndlsxOl0KKworICAgICMgV3JhcCB0aGUgTlJXVCBw
cm9jZXNzIGluIHRoZSBqaGJ1aWxkIGVudmlyb25tZW50IHNvIERSVCBvciBXS1RSCisgICAgIyBk
b2Vzbid0IG5lZWQgdG8gZG8gaXQgYW5kIHRoZWlyIHByb2Nlc3MgaWQgYXMgcmVwb3J0ZWQgYnkK
KyAgICAjIHN1YnByb2Nlc3MuUG9wZW4gaXMgbm90IGpoYnVpbGQncy4KKyAgICBpZiAnLS1ndGsn
IGluIHN5cy5hcmd2WzE6XToKKyAgICAgICAgY21kLmluc2VydCgxLCBvcy5wYXRoLmpvaW4oc2Ny
aXB0X2RpciwgJy4uJywgJ2d0aycsICdydW4td2l0aC1qaGJ1aWxkJykpCisKICAgICBwcm9jID0g
c3VicHJvY2Vzcy5Qb3BlbihjbWQsIGVudj1lbnYpCiAgICAgdHJ5OgogICAgICAgICBwcm9jLndh
aXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGsucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5w
eQppbmRleCA1ZTlkODFhLi4wNTU2ODFjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2d0ay5weQpAQCAtNjYsMTAgKzY2LDYgQEAgY2xhc3MgR3RrRHJp
dmVyKFdlYktpdERyaXZlcik6CiAgICAgICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3Mud2FpdCgp
CiAgICAgICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3MgPSBOb25lCiAKLSAgICBkZWYgY21kX2xp
bmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpOgotICAgICAgICB3cmFwcGVyX3Bh
dGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiVG9vbHMiLCAiZ3RrIiwgInJ1
bi13aXRoLWpoYnVpbGQiKQotICAgICAgICByZXR1cm4gW3dyYXBwZXJfcGF0aF0gKyBXZWJLaXRE
cml2ZXIuY21kX2xpbmUoc2VsZiwgcGl4ZWxfdGVzdHMsIHBlcl90ZXN0X2FyZ3MpCi0KIAogY2xh
c3MgR3RrUG9ydChXZWJLaXRQb3J0KToKICAgICBwb3J0X25hbWUgPSAiZ3RrIgpAQCAtMTQ3LDMg
KzE0Myw1MCBAQCBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBv
bGQtcnVuLXdlYmtpdC10ZXN0cyBhbHNvIGFkZGVkIFsiLWdyYXBoaWNzc3lzdGVtIiwgInJhc3Rl
ciIsICItc3R5bGUiLCAid2luZG93cyJdCiAgICAgICAgICMgRklYTUU6IG9sZC1ydW4td2Via2l0
LXRlc3RzIGNvbnZlcnRlZCByZXN1bHRzX2ZpbGVuYW1lIHBhdGggZm9yIGN5Z3dpbi4KICAgICAg
ICAgc2VsZi5fcnVuX3NjcmlwdCgicnVuLWxhdW5jaGVyIiwgcnVuX2xhdW5jaGVyX2FyZ3MpCisK
KyAgICBkZWYgX2dldF9nZGJfb3V0cHV0KHNlbGYsIGNvcmVkdW1wX3BhdGgpOgorICAgICAgICBj
bWQgPSBbJ2dkYicsICctZXgnLCAndGhyZWFkIGFwcGx5IGFsbCBidCcsICctLWJhdGNoJywgc3Ry
KHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkpLCBjb3JlZHVtcF9wYXRoXQorICAgICAgICBwcm9jID0g
c3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZGluPU5vbmUsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIHByb2Mud2FpdCgpCisgICAgICAgIGVy
cm9ycyA9IFtsLnN0cmlwKCkgZm9yIGwgaW4gcHJvYy5zdGRlcnIucmVhZGxpbmVzKCldCisgICAg
ICAgIHJldHVybiAocHJvYy5zdGRvdXQucmVhZCgpLCBlcnJvcnMpCisKKyAgICBkZWYgX2dldF9j
cmFzaF9sb2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVycik6CisgICAgICAgIHBpZF9y
ZXByZXNlbnRhdGlvbiA9IHN0cihwaWQgb3IgJzx1bmtub3duPicpCisgICAgICAgIGxvZ19kaXJl
Y3RvcnkgPSBvcy5lbnZpcm9uLmdldCgiV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIikKKyAg
ICAgICAgZXJyb3JzID0gW10KKyAgICAgICAgY3Jhc2hfbG9nID0gJycKKyAgICAgICAgZXhwZWN0
ZWRfY3Jhc2hfZHVtcF9maWxlbmFtZSA9ICJjb3JlLXBpZF8lcy1fLXByb2Nlc3NfJXMiICUgKHBp
ZF9yZXByZXNlbnRhdGlvbiwgbmFtZSkKKworICAgICAgICBkZWYgbWF0Y2hfZmlsZW5hbWUoZmls
ZXN5c3RlbSwgZGlyZWN0b3J5LCBmaWxlbmFtZSk6CisgICAgICAgICAgICBpZiBwaWQ6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lID09IGV4cGVjdGVkX2NyYXNoX2R1bXBfZmlsZW5h
bWUKKyAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5maW5kKG5hbWUpID4gLTEKKworICAgICAg
ICBpZiBsb2dfZGlyZWN0b3J5OgorICAgICAgICAgICAgZHVtcHMgPSBzZWxmLl9maWxlc3lzdGVt
LmZpbGVzX3VuZGVyKGxvZ19kaXJlY3RvcnksIGZpbGVfZmlsdGVyPW1hdGNoX2ZpbGVuYW1lKQor
ICAgICAgICAgICAgaWYgZHVtcHM6CisgICAgICAgICAgICAgICAgIyBHZXQgdGhlIG1vc3QgcmVj
ZW50IGNvcmVkdW1wIG1hdGNoaW5nIHRoZSBwaWQgYW5kL29yIHByb2Nlc3MgbmFtZS4KKyAgICAg
ICAgICAgICAgICBjb3JlZHVtcF9wYXRoID0gbGlzdChyZXZlcnNlZChzb3J0ZWQoZHVtcHMpKSlb
MF0KKyAgICAgICAgICAgICAgICBjcmFzaF9sb2csIGVycm9ycyA9IHNlbGYuX2dldF9nZGJfb3V0
cHV0KGNvcmVkdW1wX3BhdGgpCisKKyAgICAgICAgc3RkZXJyX2xpbmVzID0gZXJyb3JzICsgKHN0
ZGVyciBvciAnPGVtcHR5PicpLmRlY29kZSgndXRmOCcsIGVycm9ycz0naWdub3JlJykuc3BsaXRs
aW5lcygpCisgICAgICAgIGVycm9yc19zdHIgPSAnXG4nLmpvaW4oKCdTVERFUlI6ICcgKyBsKSBm
b3IgbCBpbiBzdGRlcnJfbGluZXMpCisgICAgICAgIGlmIG5vdCBjcmFzaF9sb2c6CisgICAgICAg
ICAgICBpZiBub3QgbG9nX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICBsb2dfZGlyZWN0b3J5
ID0gIi9wYXRoL3RvL2NvcmVkdW1wcyIKKyAgICAgICAgICAgIGNvcmVfcGF0dGVybiA9IG9zLnBh
dGguam9pbihsb2dfZGlyZWN0b3J5LCAiY29yZS1waWRfJXAtXy1wcm9jZXNzXyVlIikKKyAgICAg
ICAgICAgIGNyYXNoX2xvZyA9ICIiIlwKK0NvcmVkdW1wICUoZXhwZWN0ZWRfY3Jhc2hfZHVtcF9m
aWxlbmFtZSlzIG5vdCBmb3VuZC4gVG8gZW5hYmxlIGNyYXNoIGxvZ3M6CisKKy0gcnVuIHRoaXMg
Y29tbWFuZCBhcyBzdXBlci11c2VyOiBlY2hvICIlKGNvcmVfcGF0dGVybilzIiA+IC9wcm9jL3N5
cy9rZXJuZWwvY29yZV9wYXR0ZXJuCistIGVuYWJsZSBjb3JlIGR1bXBzOiB1bGltaXQgLWMgdW5s
aW1pdGVkCistIHNldCB0aGUgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZIGVudmlyb25tZW50
IHZhcmlhYmxlOiBleHBvcnQgV0VCS0lUX0NPUkVfRFVNUFNfRElSRUNUT1JZPSUobG9nX2RpcmVj
dG9yeSlzCisKKyIiIiAlIGxvY2FscygpCisKKyAgICAgICAgcmV0dXJuICIiIlwKK0NyYXNoIGxv
ZyBmb3IgJShuYW1lKXMgKHBpZCAlKHBpZF9yZXByZXNlbnRhdGlvbilzKToKKworJShjcmFzaF9s
b2cpcworJShlcnJvcnNfc3RyKXMiIiIgJSBsb2NhbHMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGtfdW5pdHRlc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQppbmRleCA5
ZWUwNzRmLi5kN2U4OTdlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2d0a191bml0dGVzdC5weQpAQCAtMjcsMTkgKzI3LDQ4IEBACiAj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAKIGltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cwogCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5ndGsgaW1wb3J0IEd0a1BvcnQKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmVfbW9jayBpbXBvcnQgTW9ja0V4ZWN1dGl2ZQotCitm
cm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jaworZnJvbSB3ZWJraXRweS5j
b21tb24uc3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KK2Zyb20g
d2Via2l0cHkudG9vbC5tb2NrdG9vbCBpbXBvcnQgTW9ja09wdGlvbnMKIAogY2xhc3MgR3RrUG9y
dFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAgIHBvcnRfbmFtZSA9ICdndGsn
CiAgICAgcG9ydF9tYWtlciA9IEd0a1BvcnQKKyAgICBfbW9ja19jcmFzaF9sb2cgPSAiIiJcCitD
cmFzaCBsb2cgZm9yIER1bXBSZW5kZXJUcmVlIChwaWQgMjg1MjkpOgorCitDb3JlZHVtcCBjb3Jl
LXBpZF8yODUyOS1fLXByb2Nlc3NfRHVtcFJlbmRlclRyZWUgbm90IGZvdW5kLiBUbyBlbmFibGUg
Y3Jhc2ggbG9nczoKKworLSBydW4gdGhpcyBjb21tYW5kIGFzIHN1cGVyLXVzZXI6IGVjaG8gIi9w
YXRoL3RvL2NvcmVkdW1wcy9jb3JlLXBpZF8lcC1fLXByb2Nlc3NfJWUiID4gL3Byb2Mvc3lzL2tl
cm5lbC9jb3JlX3BhdHRlcm4KKy0gZW5hYmxlIGNvcmUgZHVtcHM6IHVsaW1pdCAtYyB1bmxpbWl0
ZWQKKy0gc2V0IHRoZSBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlkgZW52aXJvbm1lbnQgdmFy
aWFibGU6IGV4cG9ydCBXRUJLSVRfQ09SRV9EVU1QU19ESVJFQ1RPUlk9L3BhdGgvdG8vY29yZWR1
bXBzCisKKworU1RERVJSOiA8ZW1wdHk+IiIiCiAKICAgICBkZWYgdGVzdF9zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKHNlbGYpOgogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAg
ICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAg
ICAgZXhwZWN0ZWRfc3RkZXJyID0gIk1PQ0sgcnVuX2NvbW1hbmQ6IFsnVG9vbHMvU2NyaXB0cy9y
dW4tbGF1bmNoZXInLCAnLS1yZWxlYXNlJywgJy0tZ3RrJywgJ2ZpbGU6Ly90ZXN0Lmh0bWwnXSwg
Y3dkPS9tb2NrLWNoZWNrb3V0XG4iCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0
cHV0cyhzZWxmLCBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUsIFsidGVzdC5odG1sIl0sIGV4
cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisKKyAgICBkZWYgYXNzZXJ0TGluZXNFcXVh
bChzZWxmLCBhLCBiKToKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnYXNzZXJ0TXVsdGlMaW5l
RXF1YWwnKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoYSwgYikKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5zcGxpdGxpbmVzKCks
IGIuc3BsaXRsaW5lcygpKQorCisgICAgZGVmIF9tb2NrX2dkYl9vdXRwdXQoc2VsZiwgY29yZWR1
bXBfcGF0aCk6CisgICAgICAgIHJldHVybiAoc2VsZi5fbW9ja19jcmFzaF9sb2csIFtdKQorCisg
ICAgZGVmIHRlc3RfZ2V0X2NyYXNoX2xvZyhzZWxmKToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFr
ZV9wb3J0KCkKKyAgICAgICAgcG9ydC5fZ2V0X2dkYl9vdXRwdXQgPSBzZWxmLl9tb2NrX2dkYl9v
dXRwdXQKKyAgICAgICAgbG9nID0gcG9ydC5fZ2V0X2NyYXNoX2xvZygiRHVtcFJlbmRlclRyZWUi
LCAyODUyOSwgIiIsICIiKQorICAgICAgICBzZWxmLmFzc2VydExpbmVzRXF1YWwobG9nLCBzZWxm
Ll9tb2NrX2NyYXNoX2xvZykKLS0gCjEuNy45LjE=
</data>
<flag name="review"
          id="139085"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>