<?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>183744</bug_id>
          
          <creation_ts>2018-03-19 10:42:18 -0700</creation_ts>
          <short_desc>Add some tests for lldb_webkit.py</short_desc>
          <delta_ts>2018-06-28 10:47:56 -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>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=185801</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>186240</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>lforschler</cc>
    
    <cc>msaboff</cc>
    
    <cc>realdawei</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407386</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-19 10:42:18 -0700</bug_when>
    <thetext>Tools/lldb/lldb_webkit.py adds various data formatters to LLDB to pretty-print common WTF and WebCore data structures (e.g. WTF::String) as well as exposes other helpful debugging functions in an LLDB session. The script lldb_webkit.py is fragile and can break when the memory layout of these pretty-printable data structures change among other code changes. People that make changes to these data structures may not be using lldb_webkit.py, be aware of its existence, or may not notice the breakage they cause to lldb_webkit.py. We should add tests for lldb_webkit.py to help identify changes that may break it as well as allow developers extending lldb_webkit.py to write correctness tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407392</commentid>
    <comment_count>1</comment_count>
      <attachid>336054</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-19 10:57:09 -0700</bug_when>
    <thetext>Created attachment 336054
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407393</commentid>
    <comment_count>2</comment_count>
      <attachid>336055</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-19 10:58:36 -0700</bug_when>
    <thetext>Created attachment 336055
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407394</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-19 10:59:37 -0700</bug_when>
    <thetext>Attachment 336055 did not pass style-queue:


ERROR: Tools/lldb/lldbWebKitTester/main.cpp:26:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407398</commentid>
    <comment_count>4</comment_count>
      <attachid>336057</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-19 11:08:47 -0700</bug_when>
    <thetext>Created attachment 336057
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407399</commentid>
    <comment_count>5</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-03-19 11:12:14 -0700</bug_when>
    <thetext>Attachment 336057 did not pass style-queue:


ERROR: Tools/lldb/lldbWebKitTester/main.cpp:26:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407410</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-03-19 11:36:11 -0700</bug_when>
    <thetext>I did not mark this patch for review since it add ~15 seconds to building and testing :( On my 2.9 GHz Intel Core i7 MacBook Pro (15-inch, 2017) building lldbWebKitTester takes ~6 seconds and running the LLDB tests take ~9 seconds; =&gt; test-webkitpy (without --all) now takes ~16 seconds to run. The reason the LLDB tests take so long is because they run serially. If I do not run them serially then I see error output that has the form:

objc[76794]: +[__MDQuery initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead.

Without the LLDB tests, test-webkitpy (without --all) takes ~7 seconds to run.

I am open to ideas/suggestions on how to decreases the build and test time to make it viable to run these tests on the bots by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425747</commentid>
    <comment_count>7</comment_count>
      <attachid>340870</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-21 12:16:48 -0700</bug_when>
    <thetext>Created attachment 340870
Patch

Updated patch that runs the lldb tests in a new Python process to avoid the +[__MDQuery initialize] issue. This allows us to run the lldb tests in parallel. Although this approach speeds up the tests ~20%, running &quot;test-webkitpy&quot; takes a little more than double the amount of time it takes today: ~12.978666666666667s with the lldb tests vs ~7s without the lldb tests. I am open to ideas/suggestions on how we can further speed the lldb tests up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425748</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-21 12:17:38 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #7)
&gt; [...] Although this approach speeds up the tests ~20%, running
&gt; &quot;test-webkitpy&quot; takes a little more than double the amount of time it takes
*a little less than double</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425749</commentid>
    <comment_count>9</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-21 12:19:22 -0700</bug_when>
    <thetext>Attachment 340870 did not pass style-queue:


ERROR: Tools/lldb/lldbWebKitTester/main.cpp:26:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425759</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-21 12:51:36 -0700</bug_when>
    <thetext>Do you know what makes these lldb tests take so much time? Is it launching lldb many times over?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425909</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-21 15:53:15 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #10)
&gt; Do you know what makes these lldb tests take so much time? Is it launching
&gt; lldb many times over?

Yes, it is launching lldb and the target app many times over.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425911</commentid>
    <comment_count>12</comment_count>
      <attachid>340913</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-21 15:58:27 -0700</bug_when>
    <thetext>Created attachment 340913
Patch and unit tests

Add missing file stateless_process_runner.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425914</commentid>
    <comment_count>13</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-21 16:01:04 -0700</bug_when>
    <thetext>Attachment 340913 did not pass style-queue:


ERROR: Tools/lldb/lldbWebKitTester/main.cpp:26:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1425919</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-21 16:04:23 -0700</bug_when>
    <thetext>Would it be reasonable to run the tests in a single lldb instance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426377</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-22 16:24:55 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #14)
&gt; Would it be reasonable to run the tests in a single lldb instance?

This is what we were doing when we ran them serially in earlier iterations of this patch (e.g. attachment #336057).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426605</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-23 09:16:58 -0700</bug_when>
    <thetext>That brings me back to question 10 - what&apos;s making the tests so slow? If they are slow regardless of whether they start lldb many times, then it&apos;s probably something else.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426651</commentid>
    <comment_count>17</comment_count>
      <attachid>341110</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-23 11:21:13 -0700</bug_when>
    <thetext>Created attachment 341110
[Patch] Instrument unti tests to dump timing info

Apply this diff on top of the patch (attachment #340913). Ensure you debug built lldbWebKitTester. (You can do this by running ` make debug -C Tools/lldb/lldbWebKitTester` from the top-level WebKit checkout). Then run test-webkitpy.

On my MacBook Pro (Retina, 15-inch, Early 2013) running macOS High Sierra 10.13.3 (17D47) here are my results:

[[
$ Tools/Scripts/test-webkitpy -p -v
Skipping QueueStatusServer tests; the Google AppEngine Python SDK is not installed.
Suppressing most webkitpy logging while running unit tests.
Skipping tests in the following modules or packages because they are really, really, slow:
    webkitpy.common.checkout.scm.scm_unittest
    (https://bugs.webkit.org/show_bug.cgi?id=31818; use --all to include)

[1/13] webkit.messages_unittest.UnsupportedPrecompilerDirectiveTest.test_error_at_elif passed
[2/13] webkit.messages_unittest.UnsupportedPrecompilerDirectiveTest.test_error_at_else passed
[3/13] webkit.messages_unittest.ParsingTest.test_receiver passed     
[4/13] webkit.messages_unittest.HeaderTest.test_receiver_headers passed
[5/13] webkit.messages_unittest.ReceiverImplementationTest.test_receiver_implementations passed
[5/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_16bit_string
	[serial_test_WTFStringImpl_SummaryProvider_16bit_string] Took 0.197887420654ms to find variable
	[serial_test_WTFStringImpl_SummaryProvider_16bit_string] Took 349.189043045ms to run WTFStringImpl_SummaryProvider
[6/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_16bit_string passed
[6/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_16bit_string
	[serial_test_WTFString_SummaryProvider_16bit_string] Took 0.0581741333008ms to find variable
	[serial_test_WTFString_SummaryProvider_16bit_string] Took 6.78706169128ms to run WTFString_SummaryProvider
[7/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_16bit_string passed
[7/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_null_string
	[serial_test_WTFStringImpl_SummaryProvider_null_string] Took 0.0638961791992ms to find variable
	[serial_test_WTFStringImpl_SummaryProvider_null_string] Took 1.42097473145ms to run WTFStringImpl_SummaryProvider
[8/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_null_string passed
[8/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_empty_string
	[serial_test_WTFString_SummaryProvider_empty_string] Took 0.0629425048828ms to find variable
	[serial_test_WTFString_SummaryProvider_empty_string] Took 1.49893760681ms to run WTFString_SummaryProvider
[9/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_empty_string passed
[9/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_null_string
	[serial_test_WTFString_SummaryProvider_null_string] Took 0.0629425048828ms to find variable
	[serial_test_WTFString_SummaryProvider_null_string] Took 1.52897834778ms to run WTFString_SummaryProvider
[10/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_null_string passed
[10/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_empty_string
	[serial_test_WTFStringImpl_SummaryProvider_empty_string] Took 0.0650882720947ms to find variable
	[serial_test_WTFStringImpl_SummaryProvider_empty_string] Took 1.46508216858ms to run WTFStringImpl_SummaryProvider
[11/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_empty_string passed
[11/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_8bit_string
	[serial_test_WTFString_SummaryProvider_8bit_string] Took 0.0619888305664ms to find variable
	[serial_test_WTFString_SummaryProvider_8bit_string] Took 2.22396850586ms to run WTFString_SummaryProvider
[12/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_8bit_string passed
[12/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_8bit_string
	[serial_test_WTFStringImpl_SummaryProvider_8bit_string] Took 0.0631809234619ms to find variable
	[serial_test_WTFStringImpl_SummaryProvider_8bit_string] Took 1.48797035217ms to run WTFStringImpl_SummaryProvider
[13/13] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_8bit_string passed
Ran 13 tests in 9.402s

OK
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426653</commentid>
    <comment_count>18</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-23 11:24:07 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #17)
&gt; lldb_webkit_unittest.TestSummaryProviders.
&gt; serial_test_WTFStringImpl_SummaryProvider_16bit_string
&gt; 	[serial_test_WTFStringImpl_SummaryProvider_16bit_string] Took
&gt; 0.197887420654ms to find variable
&gt; 	[serial_test_WTFStringImpl_SummaryProvider_16bit_string] Took
&gt; 349.189043045ms to run WTFStringImpl_SummaryProvider

For some reason the first time we call code in Tools/lldb/lldb_webkit.py it takes ~349.189043045ms. That is, 349.189043045ms is not specific to the test serial_test_WTFStringImpl_SummaryProvider_16bit_string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426656</commentid>
    <comment_count>19</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-23 11:32:10 -0700</bug_when>
    <thetext>Here is the output when parallelizing the lldb unit tests:

[[
$ Tools/Scripts/test-webkitpy -p -v
Skipping QueueStatusServer tests; the Google AppEngine Python SDK is not installed.
Suppressing most webkitpy logging while running unit tests.
Skipping tests in the following modules or packages because they are really, really, slow:
    webkitpy.common.checkout.scm.scm_unittest
    (https://bugs.webkit.org/show_bug.cgi?id=31818; use --all to include)

[1/5] webkit.messages_unittest.UnsupportedPrecompilerDirectiveTest.test_error_at_elif passed
[2/5] webkit.messages_unittest.UnsupportedPrecompilerDirectiveTest.test_error_at_else passed
[3/5] webkit.messages_unittest.ParsingTest.test_receiver passed     
[4/5] webkit.messages_unittest.HeaderTest.test_receiver_headers passed
[5/5] webkit.messages_unittest.ReceiverImplementationTest.test_receiver_implementations passed
[5/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFString_SummaryProvider_null_string (+7)
	[stateless_process_test_WTFStringImpl_SummaryProvider_16bit_string] Took 0.221014022827ms to find variable

	[stateless_process_test_WTFString_SummaryProvider_8bit_string] Took 0.229120254517ms to find variable

	[stateless_process_test_WTFStringImpl_SummaryProvider_empty_string] Took 0.221967697144ms to find variable

	[stateless_process_test_WTFString_SummaryProvider_null_string] Took 0.21505355835ms to find variable

	[stateless_process_test_WTFString_SummaryProvider_16bit_string] Took 0.209808349609ms to find variable


	[stateless_process_test_WTFStringImpl_SummaryProvider_null_string] Took 0.21505355835ms to find variable	[stateless_process_test_WTFStringImpl_SummaryProvider_8bit_string] Took 0.197172164917ms to find variable


	[stateless_process_test_WTFString_SummaryProvider_empty_string] Took 0.226020812988ms to find variable
	[stateless_process_test_WTFStringImpl_SummaryProvider_16bit_string] Took 564.28194046ms to run WTFStringImpl_SummaryProvider
	[stateless_process_test_WTFString_SummaryProvider_8bit_string] Took 566.425085068ms to run WTFString_SummaryProvider
	[stateless_process_test_WTFString_SummaryProvider_null_string] Took 566.066980362ms to run WTFString_SummaryProvider
	[stateless_process_test_WTFStringImpl_SummaryProvider_empty_string] Took 578.790903091ms to run WTFStringImpl_SummaryProvider
	[stateless_process_test_WTFStringImpl_SummaryProvider_8bit_string] Took 570.056915283ms to run WTFStringImpl_SummaryProvider
	[stateless_process_test_WTFString_SummaryProvider_16bit_string] Took 577.664136887ms to run WTFString_SummaryProvider
	[stateless_process_test_WTFStringImpl_SummaryProvider_null_string] Took 578.140974045ms to run WTFStringImpl_SummaryProvider
	[stateless_process_test_WTFString_SummaryProvider_empty_string] Took 577.935218811ms to run WTFString_SummaryProvider
[6/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFStringImpl_SummaryProvider_16bit_string passed
[7/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFString_SummaryProvider_8bit_string passed
[8/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFString_SummaryProvider_null_string passed
[9/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFStringImpl_SummaryProvider_null_string passed
[10/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFStringImpl_SummaryProvider_8bit_string passed
[11/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFString_SummaryProvider_16bit_string passed
[12/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFStringImpl_SummaryProvider_empty_string passed
[13/5] lldb_webkit_unittest.TestSummaryProviders.stateless_process_test_WTFString_SummaryProvider_empty_string passed
Ran 13 tests in 5.345s

OK
]]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426787</commentid>
    <comment_count>20</comment_count>
      <attachid>340913</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-23 16:53:22 -0700</bug_when>
    <thetext>Comment on attachment 340913
Patch and unit tests

Clearing review flag for further investigation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426992</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-24 11:03:51 -0700</bug_when>
    <thetext>As it turns out the way we support test parallelism in test-webkitpy does not permit using class and module fixtures (i.e. using setUpClass()/setUpModule()). This is because we achieve parallelism by breaking down the structure of test classes into a listing of test methods and then have each worker run exactly one test method at a time. This reorganization of test methods is non-standard and explicitly not supported by the Python 2.7 unittest module: &quot;Shared fixtures are not intended to work with suites with non-standard ordering&quot; [1]. As a result of our non-standard ordering (one test method per TestSuite), we invoke setUpClass()/setUpModule() for each test method. 

[1] &lt;https://docs.python.org/2/library/unittest.html#class-and-module-fixtures&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426993</commentid>
    <comment_count>22</comment_count>
      <attachid>341210</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-24 11:06:43 -0700</bug_when>
    <thetext>Created attachment 341210
Patch and unit tests that run fast

Cache the LLDB debug session to avoid creating the target and launching the process each time we run a test method. Using this patch, it takes ~2.5 seconds to run just the LLDB tests included in the patch and ~9.5 seconds to run all tests with the default invocatino of &quot;test-webkitpy&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426995</commentid>
    <comment_count>23</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-05-24 11:07:56 -0700</bug_when>
    <thetext>Attachment 341210 did not pass style-queue:


ERROR: Tools/lldb/lldbWebKitTester/main.cpp:26:  Streams are highly discouraged.  [readability/streams] [3]
Total errors found: 1 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1426999</commentid>
    <comment_count>24</comment_count>
      <attachid>341210</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-05-24 11:34:52 -0700</bug_when>
    <thetext>Comment on attachment 341210
Patch and unit tests that run fast

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

&gt; Tools/Scripts/webkitpy/common/system/systemhost.py:55
&gt; +        return self.filesystem.abspath(self.filesystem.join(xcode_developer_directory, &apos;..&apos;, &apos;SharedFrameworks&apos;, &apos;LLDB.framework&apos;, &apos;Versions&apos;, &apos;A&apos;, &apos;Resources&apos;, &apos;Python&apos;))

Is it documented anywhere that LLDB.framework can be used from this location? https://lldb.llvm.org says that the framework is exposed as a public on on macOS, but I don&apos;t see it in /S/L/F. And https://lldb.llvm.org/python-reference.html says that it&apos;s in /S/L/PF, which doesn&apos;t seem correct either.

&gt; Tools/Scripts/webkitpy/test/main.py:60
&gt; +        _log.info(&quot;Skipping lldb_webkit tests; could not find &apos;{}&apos;.&quot;.format(lldb_webkit_tester_executable))

This seems fairly dangerous, given that only &quot;make&quot; builds build the tool. So one may run the tests and not realize that they are not testing lldb.

Do you intend to add it to all other build scenarios?

&gt; Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig:1
&gt; +// Copyright (C) 2015-2018 Apple Inc. All rights reserved.

It may be useful to compare config files to some project that&apos;s more actively maintained (perhaps WebCore). I don&apos;t see anything that is an obvious problem, but there aren&apos;t a lot of xcconfig problems that I can readily notice.

&gt; Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig:68
&gt; +HEADER_SEARCH_PATHS = ${BUILT_PRODUCTS_DIR}/usr/local/include;

What are we including from here?

&gt; Tools/lldb/lldbWebKitTester/main.cpp:28
&gt; +#include &lt;iostream&gt;
&gt; +#include &lt;wtf/text/StringBuilder.h&gt;
&gt; +#include &lt;wtf/text/WTFString.h&gt;

This is an unusual mix of headers. Do we have to use iostream here?

&gt; Tools/lldb/lldbWebKitTester/main.cpp:33
&gt; +// From Tools/TestWebKitAPI/WTFStringUtilities.h

I&apos;m not sure what useful information this line adds. Is it a FIXME: Find a way to share implementation with TestWebKitAPI?

&gt; Tools/lldb/lldb_webkit_unittest.py:2
&gt; +# -*- coding: utf-8 -*-

I see that we have this line in a few source files, but that&apos;s rare, and last it was discussed on webkit-dev, I think that the consensus was that we don&apos;t add editor specific markup of any kind.

&gt; Tools/lldb/lldb_webkit_unittest.py:85
&gt; +        cls.sbProcess.Kill()

Is it not a child process that will be killed automatically?

&gt; Tools/lldb/lldb_webkit_unittest.py:86
&gt; +        cls.sbTarget.DeleteAllBreakpoints()

Given that this is only called on exit, not sure what benefit this provides.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427679</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-25 21:55:32 -0700</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #24)
&gt; Comment on attachment 341210 [details]
&gt; Patch and unit tests that run fast
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341210&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/common/system/systemhost.py:55
&gt; &gt; +        return self.filesystem.abspath(self.filesystem.join(xcode_developer_directory, &apos;..&apos;, &apos;SharedFrameworks&apos;, &apos;LLDB.framework&apos;, &apos;Versions&apos;, &apos;A&apos;, &apos;Resources&apos;, &apos;Python&apos;))
&gt; 
&gt; Is it documented anywhere that LLDB.framework can be used from this
&gt; location? https://lldb.llvm.org says that the framework is exposed as a
&gt; public on on macOS, but I don&apos;t see it in /S/L/F. And
&gt; https://lldb.llvm.org/python-reference.html says that it&apos;s in /S/L/PF, which
&gt; doesn&apos;t seem correct either.
&gt; 

Modified the function that contained this code to now query lldb for the path to the directory that contains lldb.py:

[[
    def path_to_lldb_python_directory(self):
        if not self.platform.is_mac():
            return &apos;&apos;
        return self.executive.run_command([&apos;xcrun&apos;, &apos;lldb&apos;, &apos;--python-path&apos;], return_stderr=False).rstrip()
]]


&gt; &gt; Tools/Scripts/webkitpy/test/main.py:60
&gt; &gt; +        _log.info(&quot;Skipping lldb_webkit tests; could not find &apos;{}&apos;.&quot;.format(lldb_webkit_tester_executable))
&gt; 
&gt; This seems fairly dangerous, given that only &quot;make&quot; builds build the tool.
&gt; So one may run the tests and not realize that they are not testing lldb.
&gt; 
&gt; Do you intend to add it to all other build scenarios?
&gt; 

Will add logic to check if lldbWebKitTester was built for Release or Debug. If neither exists then will build lldbWebKitTester for Debug.

&gt; &gt; Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig:1
&gt; &gt; +// Copyright (C) 2015-2018 Apple Inc. All rights reserved.
&gt; 
&gt; It may be useful to compare config files to some project that&apos;s more
&gt; actively maintained (perhaps WebCore). I don&apos;t see anything that is an
&gt; obvious problem, but there aren&apos;t a lot of xcconfig problems that I can
&gt; readily notice.
&gt; 

Will update the xcconfig files in this patch  using WebCore&apos;s xccconfig files as a template.

&gt; &gt; Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig:68
&gt; &gt; +HEADER_SEARCH_PATHS = ${BUILT_PRODUCTS_DIR}/usr/local/include;
&gt; 
&gt; What are we including from here?
&gt; 

Nothing. Will remove.

&gt; &gt; Tools/lldb/lldbWebKitTester/main.cpp:28
&gt; &gt; +#include &lt;iostream&gt;
&gt; &gt; +#include &lt;wtf/text/StringBuilder.h&gt;
&gt; &gt; +#include &lt;wtf/text/WTFString.h&gt;
&gt; 
&gt; This is an unusual mix of headers. Do we have to use iostream here?
&gt; 

No, we do not need to use iostream. Will switch to using stdio.h.

&gt; &gt; Tools/lldb/lldbWebKitTester/main.cpp:33
&gt; &gt; +// From Tools/TestWebKitAPI/WTFStringUtilities.h
&gt; 
&gt; I&apos;m not sure what useful information this line adds. Is it a FIXME: Find a
&gt; way to share implementation with TestWebKitAPI?
&gt; 

Will remove this comment.

&gt; &gt; Tools/lldb/lldb_webkit_unittest.py:2
&gt; &gt; +# -*- coding: utf-8 -*-
&gt; 
&gt; I see that we have this line in a few source files, but that&apos;s rare, and
&gt; last it was discussed on webkit-dev, I think that the consensus was that we
&gt; don&apos;t add editor specific markup of any kind.
&gt; 

This line is required to tell Python that the source is UTF-8 encoded so that string literals with UTF-8 encoded characters are interpreted correctly. Otherwise, Python interprets source files as ASCII. See &lt;https://www.python.org/dev/peps/pep-0263/&gt; for more details. 

&gt; &gt; Tools/lldb/lldb_webkit_unittest.py:85
&gt; &gt; +        cls.sbProcess.Kill()
&gt; 
&gt; Is it not a child process that will be killed automatically?
&gt; 

I am going to leave this as-is.

It does not seem like good programming practice to depend on program termination/the OS to clean up resources, including child processes, when we can clean them up earlier in the program lifecycle. The lldb_webkit tests are not the only serial tests that we have. I do not see the need to keep the child process around longer than necessary.

On another note, I hope that one day we can reconcile how test-webkitpy runs unit tests such that we can use setUpClass(). When we reconcile this issue then the code in LLDBDebugSession.setup() and LLDBDebugSession.tearDown() can be moved as-is to setUpClass() and tearDownClass(), respectively.

&gt; &gt; Tools/lldb/lldb_webkit_unittest.py:86
&gt; &gt; +        cls.sbTarget.DeleteAllBreakpoints()
&gt; 
&gt; Given that this is only called on exit, not sure what benefit this provides.

Will remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427682</commentid>
    <comment_count>26</comment_count>
      <attachid>341388</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-25 21:59:42 -0700</bug_when>
    <thetext>Created attachment 341388
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427683</commentid>
    <comment_count>27</comment_count>
      <attachid>341210</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-25 22:01:09 -0700</bug_when>
    <thetext>Comment on attachment 341210
Patch and unit tests that run fast

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

&gt; Tools/lldb/lldb_webkit_unittest.py:65
&gt; +        cls.sbTarget = cls.sbDebugger.CreateTargetWithFileAndArch(str(cls.lldbWebKitTesterExecutable), lldb.LLDB_ARCH_DEFAULT)

Hit a bug with CreateTargetWithFileAndArch(). Switched to CreateTarget(). See &lt;rdar://problem/39960149&gt; for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429000</commentid>
    <comment_count>28</comment_count>
      <attachid>341691</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 14:16:10 -0700</bug_when>
    <thetext>Created attachment 341691
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429072</commentid>
    <comment_count>29</comment_count>
      <attachid>341712</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 17:15:25 -0700</bug_when>
    <thetext>Created attachment 341712
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429076</commentid>
    <comment_count>30</comment_count>
      <attachid>341714</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 17:23:41 -0700</bug_when>
    <thetext>Created attachment 341714
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429081</commentid>
    <comment_count>31</comment_count>
      <attachid>341716</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 17:32:40 -0700</bug_when>
    <thetext>Created attachment 341716
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429136</commentid>
    <comment_count>32</comment_count>
      <attachid>341731</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 21:08:54 -0700</bug_when>
    <thetext>Created attachment 341731
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429139</commentid>
    <comment_count>33</comment_count>
      <attachid>341733</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-05-31 21:29:23 -0700</bug_when>
    <thetext>Created attachment 341733
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429376</commentid>
    <comment_count>34</comment_count>
      <attachid>341791</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-01 15:08:28 -0700</bug_when>
    <thetext>Created attachment 341791
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429381</commentid>
    <comment_count>35</comment_count>
      <attachid>341794</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-01 15:18:19 -0700</bug_when>
    <thetext>Created attachment 341794
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429398</commentid>
    <comment_count>36</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-01 15:54:40 -0700</bug_when>
    <thetext>Committed r232421: &lt;https://trac.webkit.org/changeset/232421&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429403</commentid>
    <comment_count>37</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-01 16:08:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/40737972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429606</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-02 15:44:20 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 186240</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437249</commentid>
    <comment_count>39</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-27 20:40:07 -0700</bug_when>
    <thetext>I had to add -framework Security to OTHER_LDFLAGS to get lldbWebKitTester to link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437251</commentid>
    <comment_count>40</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-27 20:48:08 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #39)
&gt; I had to add -framework Security to OTHER_LDFLAGS to get lldbWebKitTester to
&gt; link.

Are you able to share what linker errors or insight led you to add this dependency?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437252</commentid>
    <comment_count>41</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-27 20:54:35 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #40)
&gt; (In reply to Simon Fraser (smfr) from comment #39)
&gt; &gt; I had to add -framework Security to OTHER_LDFLAGS to get lldbWebKitTester to
&gt; &gt; link.
&gt; 
&gt; Are you able to share what linker errors or insight led you to add this
&gt; dependency?

Never mind.

$ Tools/Scripts/build-lldbwebkittester --debug
...
Ld /Volumes/Data/WebKitDev/OpenSource/WebKitBuild/Debug/lldbWebKitTester normal x86_64
...
Undefined symbols for architecture x86_64:
  &quot;_SecTaskCopyValueForEntitlement&quot;, referenced from:
      WTF::processHasEntitlement(char const*) in libWTF.a(Entitlements.o)
  &quot;_SecTaskCreateFromSelf&quot;, referenced from:
      WTF::processHasEntitlement(char const*) in libWTF.a(Entitlements.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437258</commentid>
    <comment_count>42</comment_count>
      <attachid>341794</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-27 21:16:08 -0700</bug_when>
    <thetext>Comment on attachment 341794
For EWS

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

&gt; Tools/Scripts/webkitpy/test/main.py:67
&gt; +    return _host.executive.run_command([build_lldbwebkittester, config.flag_for_configuration(config.default_configuration())], return_exit_code=True) == 0

I am going to change this line to emit the full output on failure:

try:
    _host.executive.run_and_throw_if_fail([build_lldbwebkittester, config.flag_for_configuration(config.default_configuration())], quiet=True)
except ScriptError as e:
    _log.error(e.message_with_output(output_limit=None))
    return False
return True

This will help diagnose the cause of the lldbWebKitTester compile-time error that led to this patch being rolled out in bug #186240. I will re-land this patch with the above change and add -framework Security to OTHER_LDFLAGS[sdk=macosx*] in file Tools/lldb/lldbWebKitTester/Configurations/lldbWebKitTester.xcconfig. I will watch the commit-queue for failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437259</commentid>
    <comment_count>43</comment_count>
      <attachid>343791</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-27 21:17:40 -0700</bug_when>
    <thetext>Created attachment 343791
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437260</commentid>
    <comment_count>44</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-27 21:19:52 -0700</bug_when>
    <thetext>Committed r233299: &lt;https://trac.webkit.org/changeset/233299&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437291</commentid>
    <comment_count>45</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-28 00:29:46 -0700</bug_when>
    <thetext>On Mac Developer Tools Access is required in order for the lldb tests to be able to debug the lldbWebKitTester process. Running the lldb tests will prompt for administrator credentials to enable such access. You can change you system-wide security authorization policy to avoid such prompts by running `/usr/sbin/DevToolsSecurity -enable`. See DevToolsSecurity(1) for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437340</commentid>
    <comment_count>46</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-06-28 08:28:43 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #42)
&gt; Comment on attachment 341794 [details]
&gt; For EWS
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=341794&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/test/main.py:67
&gt; &gt; +    return _host.executive.run_command([build_lldbwebkittester, config.flag_for_configuration(config.default_configuration())], return_exit_code=True) == 0
&gt; 
&gt; I am going to change this line to emit the full output on failure:
&gt; 
&gt; try:
&gt;     _host.executive.run_and_throw_if_fail([build_lldbwebkittester,
&gt; config.flag_for_configuration(config.default_configuration())], quiet=True)
&gt; except ScriptError as e:
&gt;     _log.error(e.message_with_output(output_limit=None))
&gt;     return False
&gt; return True
&gt; 
&gt; This will help diagnose the cause of the lldbWebKitTester compile-time error
&gt; that led to this patch being rolled out in bug #186240. I will re-land this
&gt; patch with the above change and add -framework Security to
&gt; OTHER_LDFLAGS[sdk=macosx*] in file
&gt; Tools/lldb/lldbWebKitTester/Configurations/lldbWebKitTester.xcconfig. I will
&gt; watch the commit-queue for failure.

Nice. I discovered it by building lldbWebKitTester.xcconfig by hand in Xcode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437392</commentid>
    <comment_count>47</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-28 09:56:02 -0700</bug_when>
    <thetext>This may have broken iOS build:
Ld /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release-iphoneos/lldbWebKitTester normal arm64
    cd /Volumes/Data/WebKit/OpenSource/Tools/lldb/lldbWebKitTester
    /Applications/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/usr/bin/clang++ -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.Internal.sdk -L/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release-iphoneos -F/Volumes/Data/WebKit/OpenSource/WebKitBuild/Release-iphoneos -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS12.0.Internal.sdk/System/Library/PrivateFrameworks -filelist /Volumes/Data/WebKit/OpenSource/WebKitBuild/lldbWebKitTester.build/Release-iphoneos/lldbWebKitTester.build/Objects-normal/arm64/lldbWebKitTester.LinkFileList -miphoneos-version-min=12.0 -Xlinker -object_path_lto -Xlinker /Volumes/Data/WebKit/OpenSource/WebKitBuild/lldbWebKitTester.build/Release-iphoneos/lldbWebKitTester.build/Objects-normal/arm64/lldbWebKitTester_lto.o -Xlinker -no_deduplicate -stdlib=libc++ -licucore -lWTF -Xlinker -dependency_info -Xlinker /Volumes/Data/WebKit/OpenSource/WebKitBuild/lldbWebKitTester.build/Release-iphoneos/lldbWebKitTester.build/Objects-normal/arm64/lldbWebKitTester_dependency_info.dat -o /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release-iphoneos/lldbWebKitTester
Undefined symbols for architecture arm64:
  &quot;_CFAllocatorCreate&quot;, referenced from:
      WTF::StringImpl::createCFString() in libWTF.a(StringImplCF.o)
  &quot;_CFArrayGetCount&quot;, referenced from:
      WTF::currentSearchLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFArrayGetValueAtIndex&quot;, referenced from:
      WTF::currentSearchLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFGetTypeID&quot;, referenced from:
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFLocaleCopyPreferredLanguages&quot;, referenced from:
      WTF::currentSearchLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFLocaleCreateCanonicalLanguageIdentifierFromString&quot;, referenced from:
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFPreferencesCopyValue&quot;, referenced from:
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFRelease&quot;, referenced from:
      WTF::createWithFormatAndArguments(char const*, char*) in libWTF.a(WTFString.o)
      vprintf_stderr_common(char const*, char*) in libWTF.a(Assertions.o)
      WTF::timerFired(__CFRunLoopTimer*, void*) in libWTF.a(MainThreadMac.o)
      WTF::currentSearchLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
      WTF::currentTextBreakLocaleID() in libWTF.a(TextBreakIteratorInternalICUMac.o)
  &quot;_CFRetain&quot;, referenced from:


At least I cannot link anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437403</commentid>
    <comment_count>48</comment_count>
    <who name="Dawei Fenton (:realdawei)">realdawei</who>
    <bug_when>2018-06-28 10:13:21 -0700</bug_when>
    <thetext>This is causing timeouts on Sierra

https://build.webkit.org/builders/Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/10215/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437412</commentid>
    <comment_count>49</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-28 10:41:40 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #47)
&gt; This may have broken iOS build:
&gt; Ld
&gt; /Volumes/Data/WebKit/OpenSource/WebKitBuild/Release-iphoneos/
&gt; lldbWebKitTester normal arm64
&gt;     cd /Volumes/Data/WebKit/OpenSource/Tools/lldb/lldbWebKitTester
&gt;    
&gt; /Applications/Xcode.app/Contents/Developer/Toolchains/iOS12.0.xctoolchain/
&gt; [...]
&gt; libWTF.a(TextBreakIteratorInternalICUMac.o)
&gt;   &quot;_CFRetain&quot;, referenced from:
&gt; 
&gt; 
&gt; At least I cannot link anymore.

We should only build lldbWebKitTester for Mac. Committed fix in &lt;https://trac.webkit.org/changeset/233313&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437415</commentid>
    <comment_count>50</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-28 10:44:25 -0700</bug_when>
    <thetext>(In reply to David Fenton (:realdawei) from comment #48)
&gt; This is causing timeouts on Sierra
&gt; 
&gt; https://build.webkit.org/builders/
&gt; Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/10215/steps/webkitpy-
&gt; test/logs/stdio

Needed to run `sudo /usr/sbin/DevToolsSecurity -enable` on the bot{164, 199}, which services this queue, to allow debugging. See comment 45 for more details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437416</commentid>
    <comment_count>51</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-28 10:45:48 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #50)
&gt; (In reply to David Fenton (:realdawei) from comment #48)
&gt; &gt; This is causing timeouts on Sierra
&gt; &gt; 
&gt; &gt; https://build.webkit.org/builders/
&gt; &gt; Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/10215/steps/webkitpy-
&gt; &gt; test/logs/stdio
&gt; 
&gt; Needed to run `sudo /usr/sbin/DevToolsSecurity -enable` on the bot{164,
&gt; 199}, which services this queue, to allow debugging. See comment 45 for more
&gt; details.

We will need to enable Developer Tool Access on all Mac and iOS bots that run test-webkitpy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1437421</commentid>
    <comment_count>52</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2018-06-28 10:47:56 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #51)
&gt; (In reply to Daniel Bates from comment #50)
&gt; &gt; (In reply to David Fenton (:realdawei) from comment #48)
&gt; &gt; &gt; This is causing timeouts on Sierra
&gt; &gt; &gt; 
&gt; &gt; &gt; https://build.webkit.org/builders/
&gt; &gt; &gt; Apple%20Sierra%20Release%20WK2%20%28Tests%29/builds/10215/steps/webkitpy-
&gt; &gt; &gt; test/logs/stdio
&gt; &gt; 
&gt; &gt; Needed to run `sudo /usr/sbin/DevToolsSecurity -enable` on the bot{164,
&gt; &gt; 199}, which services this queue, to allow debugging. See comment 45 for more
&gt; &gt; details.
&gt; 
&gt; We will need to enable Developer Tool Access on all Mac and iOS bots that
&gt; run test-webkitpy.

err, I meant to write:

We will need to enable Developer Tool Access on all Mac test bots that run test-webkitpy.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336054</attachid>
            <date>2018-03-19 10:57:09 -0700</date>
            <delta_ts>2018-03-19 10:58:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183744-20180319105708.patch</filename>
            <type>text/plain</type>
            <size>34905</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ZhYWFhNTU4MDRlNTA1ZDhlMWM5MDZiYThlZGIxNjY2
MWI3NzIwYS4uZjY3YTczYzUzYWI3NmY0ZDUyYzllM2RmYTY5ODg2YWU1M2YwMTA4MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDE4LTAzLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gRm9yIG5vdywg
d2UgYnVpbGQgYW5kIHJ1biB0aGUgdGhlc2UgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAg
KiBNYWtlZmlsZTogQnVpbGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBv
biBNYWMuIEFsdGhvdWdoIHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcg
dGhlIHRvb2wgZm9yIGVpdGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVu
bmluZyB0aGUgdGVzdHMKKyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxk
YldlYktpdFRlc3Rlci4gV2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAg
ICAgICAgY29uZmlndXJhdGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0
ZXIgZm9yIERlYnVnLgorICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJh
Y3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisg
ICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVt
aG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQg
YW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1v
ZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBv
ZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24K
KyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNl
bGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMg
aW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZv
a2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25p
ZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAor
ICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
ICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVy
X2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMpOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOiBDYWxsIG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMoKSB0byBjb25kaXRp
b25hbGx5IGFkZCB0aGUgbGxkYl93ZWJraXQgdGVzdHMKKyAgICAgICAgdG8gdGhlIHRlc3Qgc2Vh
cmNoIHBhdGguCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9D
b25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcDogQWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAg
ICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy50ZWFyRG93bkNsYXNzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlk
ZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1h
cnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19T
dW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wMy0xNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdC13ZWJraXRweSBubyBsb25nZXIg
cnVucyBXZWJLaXQyIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9NYWtlZmlsZSBiL1Rvb2xzL01h
a2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0NzY4MjUzNzMwMDQ1YjkyNDMuLmNh
MDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQCBNT0RVTEVTID0g
RHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5pQnJvd3NlciAuLi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkpCiAJaWZlcSAoLCQoZmluZHN0cmlu
ZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRU
ZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkK
KwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIK
IAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9uZSwkKFNES1JPT1QpKSkKIAkJTU9E
VUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kdW1w
LWNsYXNzLWxheW91dCBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKaW5kZXggMDM3
NDQ3ZTZjOGJhOTM2OTYxZTdlYjVlNGM2ZDAwNmM1NDlkZTM3MS4uNGY0MmEzOTc5ZmM5OTRjYzcw
YTlkNzg1YzNjZGY4NGViYzQ0NzI5NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kdW1wLWNs
YXNzLWxheW91dAorKysgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CkBAIC0zMSw2
ICszMSw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gc2V0cyBpbXBvcnQg
U2V0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0
ZW1Ib3N0CitzeXMucGF0aC5hcHBlbmQoU3lzdGVtSG9zdCgpLnBhdGhfdG9fbGxkYl9weXRob25f
ZGlyZWN0b3J5KCkpCitpbXBvcnQgbGxkYgogCiBmcmFtZXdvcmsgPSAiV2ViQ29yZSIKIGJ1aWxk
X2RpcmVjdG9yeSA9ICIiCkBAIC00MSwyMSArNDQsNiBAQCBkZWYgd2Via2l0X2J1aWxkX2Rpcigp
OgogICAgIHNjcmlwdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2Zp
bGVfXykpCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtvcy5wYXRoLmpvaW4o
c2NyaXB0cGF0aCwgIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKSwgIi0tdG9wLWxldmVsIl0pLnN0
cmlwKCkKIAotZGVmIGRldmVsb3Blcl9kaXIoKToKLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVj
a19vdXRwdXQoWyJ4Y29kZS1zZWxlY3QiLCAiLS1wcmludC1wYXRoIl0pCi0KLWRlZiBpbXBvcnRf
bGxkYigpOgotICAgIHhjb2RlX2NvbnRlbnRzX3BhdGggPSBvcy5wYXRoLnNwbGl0KGRldmVsb3Bl
cl9kaXIoKSlbMF0KLSAgICBsbGRiX2ZyYW1ld29ya19wYXRoID0gb3MucGF0aC5qb2luKHhjb2Rl
X2NvbnRlbnRzX3BhdGgsICJTaGFyZWRGcmFtZXdvcmtzIiwgIkxMREIuZnJhbWV3b3JrIiwgIlJl
c291cmNlcyIsICJQeXRob24iKQotICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX2ZyYW1ld29ya19w
YXRoKQotCi0gICAgTExEQl9NT0RVTEVfTkFNRSA9ICJsbGRiIgotICAgIHRyeToKLSAgICAgICAg
Z2xvYmFscygpW0xMREJfTU9EVUxFX05BTUVdID0gX19pbXBvcnRfXyhMTERCX01PRFVMRV9OQU1F
KQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBpbXBv
cnQge30gZnJvbSB7fSIuZm9ybWF0KExMREJfTU9EVUxFX05BTUUsIGxsZGJfZnJhbWV3b3JrX3Bh
dGgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KIGRlZiB2ZXJpZnlfdHlwZSh0YXJnZXQsIHR5cGUp
OgogICAgIHR5cGVuYW1lID0gdHlwZS5HZXROYW1lKCkKICAgICBzZWVuQmVmb3JlID0gU2V0KCkK
QEAgLTE5Niw3ICsxODQsNiBAQCBkZWYgbWFpbigpOgogICAgICAgICBidWlsZF9kaXIgPSBhcmdz
LmJ1aWxkX2RpcmVjdG9yeQogCiAgICAgdGFyZ2V0X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRf
ZGlyLCBhcmdzLmNvbmZpZywgYXJncy5mcmFtZXdvcmsgKyAiLmZyYW1ld29yayIsIGFyZ3MuZnJh
bWV3b3JrKTsKLSAgICBpbXBvcnRfbGxkYigpCiAgICAgZHVtcF9jbGFzcyh0YXJnZXRfcGF0aCwg
YXJncy5jbGFzc25hbWUsIGFyZ3MuYXJjaCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1o
b3N0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3Qu
cHkKaW5kZXggYTE1MzQyMjAxZDgzMzQxNDczMWViZDBmNzZmNzE3OWE2ZjBiZDZlMy4uNDNkNmQ3
OWZjNDcyMzk0MDAxZmM5NGY5NDJiMTk5YTRhOWNkZjhiMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkKQEAgLTQ3LDMgKzQ3LDkg
QEAgY2xhc3MgU3lzdGVtSG9zdChvYmplY3QpOgogCiAgICAgZGVmIHN5bWJvbGljYXRlX2NyYXNo
X2xvZ19pZl9uZWVkZWQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKKworICAgIGRlZiBwYXRoX3RvX2xsZGJfcHl0aG9uX2Rp
cmVjdG9yeShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgeGNvZGVfZGV2ZWxvcGVyX2RpcmVjdG9yeSA9
IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsneGNvZGUtc2VsZWN0JywgJy0tcHJpbnQtcGF0
aCddLCByZXR1cm5fc3RkZXJyPUZhbHNlKS5yc3RyaXAoKQorICAgICAgICByZXR1cm4gc2VsZi5m
aWxlc3lzdGVtLmFic3BhdGgoc2VsZi5maWxlc3lzdGVtLmpvaW4oeGNvZGVfZGV2ZWxvcGVyX2Rp
cmVjdG9yeSwgJy4uJywgJ1NoYXJlZEZyYW1ld29ya3MnLCAnTExEQi5mcmFtZXdvcmsnLCAnVmVy
c2lvbnMnLCAnQScsICdSZXNvdXJjZXMnLCAnUHl0aG9uJykpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5CmluZGV4IGQ4MTEzNzIwNjFkNjNhMDdjYzQzZDk0NjNhYTgwNDU4MGFmNzA3NTIu
LjdlODlmMzZmMGMyOGNhODc0YzA0ZmUxOWI5ZGQ5MmYwMDllODM2MzMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdC9tYWluLnB5CkBAIC0zNiw3ICszNiw5IEBAIGltcG9ydCB0aW1lCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmln
IGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRlcgog
ZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHku
dGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTQ0LDYgKzQ2LDI5
IEBAIGZyb20gd2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25h
bWUKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCitkZWYgbWF5X2JlX2Fk
ZF9sbGRiX3dlYmtpdF90ZXN0cyh0ZXN0ZXIsIHdlYmtpdF9yb290KToKKyAgICBob3N0ID0gU3lz
dGVtSG9zdCgpCisgICAgaWYgbm90IGhvc3QucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgIHJl
dHVybgorCisgICAgYnVpbGRfZGlyZWN0b3J5ID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0
LmZpbGVzeXN0ZW0pLmJ1aWxkX2RpcmVjdG9yeSgnRGVidWcnKQorICAgIGxsZGJfd2Via2l0X3Rl
c3Rlcl9leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpcmVjdG9yeSwgJ2xsZGJXZWJL
aXRUZXN0ZXInKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsbGRiX3dlYmtpdF90ZXN0ZXJf
ZXhlY3V0YWJsZSk6CisgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVz
dHM7IGNvdWxkIG5vdCBmaW5kIHt9LicuZm9ybWF0KGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRh
YmxlKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBob3N0
LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhs
bGRiX3B5dGhvbl9kaXJlY3RvcnkpOgorICAgICAgICBpZiBub3QgbGxkYl9weXRob25fZGlyZWN0
b3J5IGluIHN5cy5wYXRoOgorICAgICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9u
X2RpcmVjdG9yeSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdWZmaXhfbWVz
c2FnZSA9ICcuJworICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeToKKyAgICAgICAgc3VmZml4
X21lc3NhZ2UgPSAnIGF0IHt9LicuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICBf
bG9nLmluZm8oJ1NraXBwaW5nIGxsZGJfd2Via2l0IHRlc3RzOyBjb3VsZCBub3QgZmluZCBMTERC
IFB5dGhvbiBtb2R1bGV7fScuZm9ybWF0KHN1ZmZpeF9tZXNzYWdlKSkKKwogZGVmIG1haW4oKToK
ICAgICB1cCA9IG9zLnBhdGguZGlybmFtZQogICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAo
dXAob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCkBAIC01NSw2ICs4MCw5IEBAIGRlZiBt
YWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lz
LnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0
JykKIAorICAgIHRlc3RlciA9IFRlc3RlcigpCisgICAgbWF5X2JlX2FkZF9sbGRiX3dlYmtpdF90
ZXN0cyh0ZXN0ZXIsIHdlYmtpdF9yb290KQorCiAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHksIHJlYWxseSwg
c2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAg
ICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Via2l0cHku
Y29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9uIHdpbjMy
JywgNTQ1MjYpCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMGJjNWQ3NzRmZjMxMDQwMzBi
ZWIzY2RmZTIwZmQxOTU2NzIwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDkwIEBA
CisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8g
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
Ky8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiLi4v
Li4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUludGVybmFsU0RLLnhjY29uZmln
IgorCitVU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJOQUxfU0RLXyQoQ09ORklHVVJBVElP
TikpOworVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVTOworVVNFX0lOVEVSTkFMX1NE
S19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworVVNFX0lOVEVSTkFMX1NES19SZWxlYXNl
ID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CisKK0NMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9
IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKK0NMQU5HX1dBUk5fQk9PTF9D
T05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwor
Q0xBTkdfV0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CitDTEFOR19XQVJOX0VNUFRZX0JPRFkg
PSBZRVM7CitDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5U
X0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0g
WUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKK0dDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGRlZmF1
bHQ7CitHQ0NfRU5BQkxFX0NQUF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJ
ID0gWUVTOworR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZ
TUJPTF9TRVBBUkFUSU9OID0gTk87CitHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOworR0ND
X0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOworR0NDX09CSkNfQ0FMTF9DWFhfQ0RU
T1JTID0gWUVTOworR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKK0dDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoaW5oZXJpdGVkKTsKK0dD
Q19TVFJJQ1RfQUxJQVNJTkcgPSBZRVM7CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitH
Q0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05fID0gWUVTOworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMg
PSBOTzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTOworR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJO
X1NJR05fQ09NUEFSRSA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7
CitHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZV
TkNUSU9OID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NG
TEFHUyA9IC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcGFja2VkIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVm
IC1Xd3JpdGUtc3RyaW5ncyAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1
Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitI
RUFERVJfU0VBUkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNs
dWRlOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmll
cikpOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTAgPSAxMDEwMDA7CitUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMSA9IDEwMTEwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SXzEyID0gMTAxMjAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTMg
PSAxMDEzMDA7CisKKy8vIERFQlVHX0RFRklORVMsIEdDQ19PUFRJTUlaQVRJT05fTEVWRUwsIFNU
UklQX0lOU1RBTExFRF9QUk9EVUNUIGFuZCBERUFEX0NPREVfU1RSSVBQSU5HIHZhcnkgYmV0d2Vl
biB0aGUgZGVidWcgYW5kIG5vcm1hbCB2YXJpYW50cy4KKy8vIFdlIHNldCB1cCB0aGUgdmFsdWVz
IGZvciBlYWNoIHZhcmlhbnQgaGVyZSwgYW5kIGhhdmUgdGhlIERlYnVnIGNvbmZpZ3VyYXRpb24g
aW4gdGhlIFhjb2RlIHByb2plY3QgdXNlIHRoZSBfZGVidWcgdmFyaWFudC4KK0RFQlVHX0RFRklO
RVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVTX25vcm1hbCA9IE5ERUJVRzsKK0RFQlVHX0RFRklO
RVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJSRU5UX1ZBUklBTlQpKTsKKworR0NDX09QVElNSVpB
VElPTl9MRVZFTCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF8kKENVUlJFTlRfVkFSSUFOVCkp
OworR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWwgPSAzOworR0NDX09QVElNSVpBVElPTl9M
RVZFTF9kZWJ1ZyA9IDA7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisKK09USEVSX0NG
TEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFT
QU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoQVNBTl9PVEhFUl9M
REZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1
cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0
ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWRl
OWMxY2FlMzc5YTNlZTE5MjA4Yjc5N2RmY2MxMTJhNzU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhj
Y29uZmlnCkBAIC0wLDAgKzEsNDEgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitPTkxZX0FDVElWRV9BUkNIID0g
WUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQoTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
UikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEwMDAgPSAxMC4xMDsKK01B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gMTAuMTE7CitNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IDEwLjEyOworTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUX21hY29zeF8xMDEzMDAgPSAxMC4xMzsKKworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRF
RF9GVU5DVElPTlMgPSBZRVM7CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwor
U0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9TREspKTsKK1NES1JPT1RfID0gbWFj
b3N4OworU0RLUk9PVF9ZRVMgPSBtYWNvc3guaW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2Nv
bmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NjYwMDBkMWFmZGQ3ZGQxY2U1ZmZjMWIy
ZDFmZTEwNTIzZDVlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpAQCAtMCwwICsx
LDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6Cisv
LyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
Ky8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisv
LyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitQUk9EVUNU
X05BTUUgPSAkKFRBUkdFVF9OQU1FKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9NYWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0NDRjMzgwZWVjNzllZGU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCkBAIC0w
LDAgKzEsMiBAQAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2NyaXB0cworaW5jbHVkZSAuLi8uLi8u
Li9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmMxZTYxMjc1Y2Y3MGU5YjM2ZWY0ZjQ0NDlmODg3NDU4MjQzZjgwYjgK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktp
dFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjAyIEBACisvLyAh
JCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlv
YmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCNjg0NEExQUZBNzk3
ODAwMkIzMDVDIC8qIG1haW4uY3BwICovOyB9OworCQlDRTNGNDQyNjIwNUM2QTAxMDA3MTk1QjMg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UzRjQ0MjIyMDVDNjY5QzAwNzE5NUIzIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUYx
QUYwMjc2QzAwM0ZDOEQxIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0
aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MTsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTdDMjIyNzUxMUFGQzREOUMwMDhD
MzMzOCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRi
V2ViS2l0VGVzdGVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUzMUFGQzREOUMwMDhD
MzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRBQjNBMTFBRjAyNzZD
MDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWFpbi5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0UzRjQ0MjIyMDVDNjY5QzAwNzE5NUIzIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQ0UzRjQ0MjYyMDVDNkEwMTAwNzE5NUIzIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAq
LworCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUxMUFGQzREOUMw
MDhDMzMzOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMz
OCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUzMUFGQzREOUMw
MDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9IENv
bmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIz
OTgxQUYwMjc2QzAwM0ZDOEQxID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3
b3JrICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVy
ICovLAorCQkJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLywK
KwkJCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkJQ0UzRjQ0
MjUyMDVDNkEwMTAwNzE5NUIzIC8qIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1
Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzRB
QjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCQlu
YW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNG
NDQyNDIwNUM2NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVD
IC8qIG1haW4uY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIz
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCisJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2Vi
S2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQk3QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNl
cyAqLywKKwkJCQk3QzRBQjM5RTFBRjAyNzZDMDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1
aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUg
PSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdE5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2Vi
S2l0VGVzdGVyICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50
b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFBy
b2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMg
PSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5n
bGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0g
KAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhE
MTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9k
dWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOwor
CQkJdGFyZ2V0cyA9ICgKKwkJCQk3QzRBQjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktp
dFRlc3RlciAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYw
Mjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8q
IEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERl
YnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVh
c2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURFQlVHX0RFRklORVMg
PSAiJChERUJVR19ERUZJTkVTX2RlYnVnKSI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9
ICIkKEdDQ19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0My
MjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0
QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTIx
QUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCisJCTdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFCM0E3
MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIzQUEx
QUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJv
b3RPYmplY3QgPSA3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi87
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVhNDY0ZTQ4
Y2MxOWIyNjFmYmI3NWUyZjdkZmE4NGMzYjRhNzk4OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworZXh0ZXJuIHZvaWQgYnJl
YWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwordm9pZCBicmVha0ZvclRlc3RpbmdTdW1t
YXJ5UHJvdmlkZXJzKCkgeyByZXR1cm47IH0KKworLy8gRnJvbSBUb29scy9UZXN0V2ViS2l0QVBJ
L1dURlN0cmluZ1V0aWxpdGllcy5oCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgorc3RhdGljIFN0
cmluZyB1dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAoJnN0cmluZylbbGVuZ3RoXSkKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVu
Z3RoIC0gMSk7CisgICAgZm9yIChhdXRvIGMgOiBzdHJpbmcpCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQoreworICAgIFN0cmlu
ZyBhTnVsbFN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYU51bGxTdHJpbmdJbXBsID0g
YU51bGxTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuRW1wdHlTdHJpbmcgeyAiIiB9Owor
ICAgIFN0cmluZ0ltcGwqIGFuRW1wdHlTdHJpbmdJbXBsID0gYW5FbXB0eVN0cmluZy5pbXBsKCk7
CisKKyAgICBTdHJpbmcgYW44Qml0U3RyaW5nIHsgInLDqXN1bcOpIiB9OworICAgIFN0cmluZ0lt
cGwqIGFuOEJpdFN0cmluZ0ltcGwgPSBhbjhCaXRTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5n
IGExNkJpdFN0cmluZyA9IHV0ZjE2U3RyaW5nKHUiXHUxNjgwQ2FwcHVjY2lub1x1MTY4MCIpOwor
ICAgIFN0cmluZ0ltcGwqIGExNkJpdFN0cmluZ0ltcGwgPSBhMTZCaXRTdHJpbmcuaW1wbCgpOwor
CisgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAgIHRlc3RTdW1tYXJ5UHJvdmlkZXJz
KCk7CisgICAgc3RkOjpjZXJyIDw8ICJUaGlzIGV4ZWN1dGFibGUgZG9lcyBub3RoaW5nIGFuZCBp
cyBvbmx5IG1lYW50IGZvciBkZWJ1Z2dpbmcgbGxkYl93ZWJraXQucHkuIiA8PCBzdGQ6OmVuZGw7
CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MTA1MjAxODkyYTk4MmUzMTU4OGQ0NWRmMDFmOGU0ODgwOTk2ZWM4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpAQCAtMCwwICsxLDExMSBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbGxkYgoraW1wb3J0
IGxsZGJfd2Via2l0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAor
ZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCisKKworY2xhc3MgVGVzdFN1
bW1hcnlQcm92aWRlcnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FID0g
J2xsZGJXZWJLaXRUZXN0ZXInCisgICAgICAgIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05B
TUUgPSAnYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycKKworICAgICAgICBjbHMuc2JE
ZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgICAgICBjbHMuc2JEZWJ1Z2dl
ci5TZXRBc3luYyhGYWxzZSkKKworICAgICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAg
IGNvbmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgaG9zdC5maWxlc3lzdGVtKQorICAgICAg
ICBjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihj
b25maWcuYnVpbGRfZGlyZWN0b3J5KCdEZWJ1ZycpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkK
KworICAgICAgICBjbHMuc2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXRXaXRo
RmlsZUFuZEFyY2goc3RyKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSksIGxsZGIuTExE
Ql9BUkNIX0RFRkFVTFQpCisgICAgICAgIGFzc2VydCBjbHMuc2JUYXJnZXQKKyAgICAgICAgY2xz
LnNiVGFyZ2V0LkJyZWFrcG9pbnRDcmVhdGVCeU5hbWUoQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJ
T05fTkFNRSwgY2xzLnNiVGFyZ2V0LkdldEV4ZWN1dGFibGUoKS5HZXRGaWxlbmFtZSgpKQorCisg
ICAgICAgIGFyZ3YgPSBOb25lCisgICAgICAgIGVudnAgPSBOb25lCisgICAgICAgIGNscy5zYlBy
b2Nlc3MgPSBjbHMuc2JUYXJnZXQuTGF1bmNoU2ltcGxlKGFyZ3YsIGVudnAsIG9zLmdldGN3ZCgp
KQorICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2VzcworICAgICAgICBhc3NlcnQgY2xzLnNiUHJv
Y2Vzcy5HZXRTdGF0ZSgpID09IGxsZGIuZVN0YXRlU3RvcHBlZAorCisgICAgICAgIGNscy5zYlRo
cmVhZCA9IGNscy5zYlByb2Nlc3MuR2V0VGhyZWFkQXRJbmRleCgwKQorICAgICAgICBhc3NlcnQg
Y2xzLnNiVGhyZWFkCisKKyAgICAgICAgIyBGcmFtZSAwIGlzIHRoZSBmdW5jdGlvbiB3aXRoIG5h
bWUgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRS4gV2Ugd2FudCB0aGUgZnJhbWUgb2Yg
dGhlIGNhbGxlciBvZgorICAgICAgICAjIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUg
YmVjYXVzZSBpdCBoYXMgYWxsIHRoZSBpbnRlcmVzdGluZyBsb2NhbCB2YXJpYWJsZXMgd2Ugd2Fu
dCB0byB0ZXN0LgorICAgICAgICBjbHMuc2JGcmFtZSA9IGNscy5zYlRocmVhZC5HZXRGcmFtZUF0
SW5kZXgoMSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYkZyYW1lCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMuc2JQcm9jZXNzLktpbGwo
KQorICAgICAgICBjbHMuc2JUYXJnZXQuRGVsZXRlQWxsQnJlYWtwb2ludHMoKQorCisgICAgIyBU
aGUgTExEQiBQeXRob24gbW9kdWxlIGRvZXMgbm90IHdvcmsgd2l0aCBQeXRob24gbXVsdGlwcm9j
ZXNzaW5nIGFuZCBjYXVzZXMgZXJyb3JzIG9mIHRoZSBmb3JtOgorICAgICMgICAgIG9iamNbNzY3
OTRdOiArW19fTURRdWVyeSBpbml0aWFsaXplXSBtYXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGlu
IGFub3RoZXIgdGhyZWFkIHdoZW4gZm9yaygpIHdhcyBjYWxsZWQuCisgICAgIyAgICAgICAgICAg
ICAgICAgIFdlIGNhbm5vdCBzYWZlbHkgY2FsbCBpdCBvciBpZ25vcmUgaXQgaW4gdGhlIGZvcmso
KSBjaGlsZCBwcm9jZXNzLiBDcmFzaGluZyBpbnN0ZWFkLgorICAgICMgU28sIHdlIHJ1biB0aGUg
Zm9sbG93aW5nIHRlc3RzIHNlcmlhbGx5LgorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdJbXBsX1N1
bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5n
SW1wbF9TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkg
PSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUu
RmluZFZhcmlhYmxlKCdhTnVsbFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9
IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9l
bXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5
U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBs
ZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlh
bF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgor
ICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlk
ZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAx
LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAg
ICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2Vs
Zi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGlzOGJpdCA9IDAsIGNv
bnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikKKworICAgICMgTUFS
SzogV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFs
X3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAg
ICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAg
IGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhz
ZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJv
dmlkZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZycpLCB7fSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9
ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJf
OGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmlu
ZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4
LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFt
ZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNj
aW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336055</attachid>
            <date>2018-03-19 10:58:36 -0700</date>
            <delta_ts>2018-03-19 11:08:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183744-20180319105836.patch</filename>
            <type>text/plain</type>
            <size>34905</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2ZhYWFhNTU4MDRlNTA1ZDhlMWM5MDZiYThlZGIxNjY2
MWI3NzIwYS4uZjY3YTczYzUzYWI3NmY0ZDUyYzllM2RmYTY5ODg2YWU1M2YwMTA4MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDE4LTAzLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gRm9yIG5vdywg
d2UgYnVpbGQgYW5kIHJ1biB0aGUgdGhlc2UgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAg
KiBNYWtlZmlsZTogQnVpbGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBv
biBNYWMuIEFsdGhvdWdoIHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcg
dGhlIHRvb2wgZm9yIGVpdGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVu
bmluZyB0aGUgdGVzdHMKKyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxk
YldlYktpdFRlc3Rlci4gV2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAg
ICAgICAgY29uZmlndXJhdGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0
ZXIgZm9yIERlYnVnLgorICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJh
Y3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisg
ICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVt
aG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQg
YW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1v
ZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBv
ZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24K
KyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNl
bGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMg
aW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZv
a2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25p
ZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAor
ICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
ICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVy
X2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMpOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOiBDYWxsIG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMoKSB0byBjb25kaXRp
b25hbGx5IGFkZCB0aGUgbGxkYl93ZWJraXQgdGVzdHMKKyAgICAgICAgdG8gdGhlIHRlc3Qgc2Vh
cmNoIHBhdGguCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9D
b25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcDogQWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAg
ICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy50ZWFyRG93bkNsYXNzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlk
ZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1h
cnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19T
dW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wMy0xNyAgRGFuaWVsIEJhdGVz
ICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgdGVzdC13ZWJraXRweSBubyBsb25nZXIg
cnVucyBXZWJLaXQyIHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9NYWtlZmlsZSBiL1Rvb2xzL01h
a2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0NzY4MjUzNzMwMDQ1YjkyNDMuLmNh
MDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQCBNT0RVTEVTID0g
RHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5pQnJvd3NlciAuLi9Tb3VyY2UvVGhp
cmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkpCiAJaWZlcSAoLCQoZmluZHN0cmlu
ZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRU
ZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkK
KwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1Ro
aXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIK
IAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9uZSwkKFNES1JPT1QpKSkKIAkJTU9E
VUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kdW1w
LWNsYXNzLWxheW91dCBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKaW5kZXggMDM3
NDQ3ZTZjOGJhOTM2OTYxZTdlYjVlNGM2ZDAwNmM1NDlkZTM3MS4uNGY0MmEzOTc5ZmM5OTRjYzcw
YTlkNzg1YzNjZGY4NGViYzQ0NzI5NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kdW1wLWNs
YXNzLWxheW91dAorKysgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CkBAIC0zMSw2
ICszMSw5IEBAIGltcG9ydCBvcwogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gc2V0cyBpbXBvcnQg
U2V0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0
ZW1Ib3N0CitzeXMucGF0aC5hcHBlbmQoU3lzdGVtSG9zdCgpLnBhdGhfdG9fbGxkYl9weXRob25f
ZGlyZWN0b3J5KCkpCitpbXBvcnQgbGxkYgogCiBmcmFtZXdvcmsgPSAiV2ViQ29yZSIKIGJ1aWxk
X2RpcmVjdG9yeSA9ICIiCkBAIC00MSwyMSArNDQsNiBAQCBkZWYgd2Via2l0X2J1aWxkX2Rpcigp
OgogICAgIHNjcmlwdHBhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2Zp
bGVfXykpCiAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtvcy5wYXRoLmpvaW4o
c2NyaXB0cGF0aCwgIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKSwgIi0tdG9wLWxldmVsIl0pLnN0
cmlwKCkKIAotZGVmIGRldmVsb3Blcl9kaXIoKToKLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVj
a19vdXRwdXQoWyJ4Y29kZS1zZWxlY3QiLCAiLS1wcmludC1wYXRoIl0pCi0KLWRlZiBpbXBvcnRf
bGxkYigpOgotICAgIHhjb2RlX2NvbnRlbnRzX3BhdGggPSBvcy5wYXRoLnNwbGl0KGRldmVsb3Bl
cl9kaXIoKSlbMF0KLSAgICBsbGRiX2ZyYW1ld29ya19wYXRoID0gb3MucGF0aC5qb2luKHhjb2Rl
X2NvbnRlbnRzX3BhdGgsICJTaGFyZWRGcmFtZXdvcmtzIiwgIkxMREIuZnJhbWV3b3JrIiwgIlJl
c291cmNlcyIsICJQeXRob24iKQotICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX2ZyYW1ld29ya19w
YXRoKQotCi0gICAgTExEQl9NT0RVTEVfTkFNRSA9ICJsbGRiIgotICAgIHRyeToKLSAgICAgICAg
Z2xvYmFscygpW0xMREJfTU9EVUxFX05BTUVdID0gX19pbXBvcnRfXyhMTERCX01PRFVMRV9OQU1F
KQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBpbXBv
cnQge30gZnJvbSB7fSIuZm9ybWF0KExMREJfTU9EVUxFX05BTUUsIGxsZGJfZnJhbWV3b3JrX3Bh
dGgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KIGRlZiB2ZXJpZnlfdHlwZSh0YXJnZXQsIHR5cGUp
OgogICAgIHR5cGVuYW1lID0gdHlwZS5HZXROYW1lKCkKICAgICBzZWVuQmVmb3JlID0gU2V0KCkK
QEAgLTE5Niw3ICsxODQsNiBAQCBkZWYgbWFpbigpOgogICAgICAgICBidWlsZF9kaXIgPSBhcmdz
LmJ1aWxkX2RpcmVjdG9yeQogCiAgICAgdGFyZ2V0X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRf
ZGlyLCBhcmdzLmNvbmZpZywgYXJncy5mcmFtZXdvcmsgKyAiLmZyYW1ld29yayIsIGFyZ3MuZnJh
bWV3b3JrKTsKLSAgICBpbXBvcnRfbGxkYigpCiAgICAgZHVtcF9jbGFzcyh0YXJnZXRfcGF0aCwg
YXJncy5jbGFzc25hbWUsIGFyZ3MuYXJjaCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1o
b3N0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3Qu
cHkKaW5kZXggYTE1MzQyMjAxZDgzMzQxNDczMWViZDBmNzZmNzE3OWE2ZjBiZDZlMy4uNDNkNmQ3
OWZjNDcyMzk0MDAxZmM5NGY5NDJiMTk5YTRhOWNkZjhiMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkKQEAgLTQ3LDMgKzQ3LDkg
QEAgY2xhc3MgU3lzdGVtSG9zdChvYmplY3QpOgogCiAgICAgZGVmIHN5bWJvbGljYXRlX2NyYXNo
X2xvZ19pZl9uZWVkZWQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0
ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkKKworICAgIGRlZiBwYXRoX3RvX2xsZGJfcHl0aG9uX2Rp
cmVjdG9yeShzZWxmKToKKyAgICAgICAgaWYgbm90IHNlbGYucGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgeGNvZGVfZGV2ZWxvcGVyX2RpcmVjdG9yeSA9
IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsneGNvZGUtc2VsZWN0JywgJy0tcHJpbnQtcGF0
aCddLCByZXR1cm5fc3RkZXJyPUZhbHNlKS5yc3RyaXAoKQorICAgICAgICByZXR1cm4gc2VsZi5m
aWxlc3lzdGVtLmFic3BhdGgoc2VsZi5maWxlc3lzdGVtLmpvaW4oeGNvZGVfZGV2ZWxvcGVyX2Rp
cmVjdG9yeSwgJy4uJywgJ1NoYXJlZEZyYW1ld29ya3MnLCAnTExEQi5mcmFtZXdvcmsnLCAnVmVy
c2lvbnMnLCAnQScsICdSZXNvdXJjZXMnLCAnUHl0aG9uJykpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5CmluZGV4IGQ4MTEzNzIwNjFkNjNhMDdjYzQzZDk0NjNhYTgwNDU4MGFmNzA3NTIu
LjdlODlmMzZmMGMyOGNhODc0YzA0ZmUxOWI5ZGQ5MmYwMDllODM2MzMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGVzdC9tYWluLnB5CkBAIC0zNiw3ICszNiw5IEBAIGltcG9ydCB0aW1lCiBpbXBvcnQg
dHJhY2ViYWNrCiBpbXBvcnQgdW5pdHRlc3QKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVt
LnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmln
IGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVzdC5maW5kZXIgaW1wb3J0IEZpbmRlcgog
ZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0IFByaW50ZXIKIGZyb20gd2Via2l0cHku
dGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25hbWUKQEAgLTQ0LDYgKzQ2LDI5
IEBAIGZyb20gd2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90ZXN0X25h
bWUKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCitkZWYgbWF5X2JlX2Fk
ZF9sbGRiX3dlYmtpdF90ZXN0cyh0ZXN0ZXIsIHdlYmtpdF9yb290KToKKyAgICBob3N0ID0gU3lz
dGVtSG9zdCgpCisgICAgaWYgbm90IGhvc3QucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgIHJl
dHVybgorCisgICAgYnVpbGRfZGlyZWN0b3J5ID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0
LmZpbGVzeXN0ZW0pLmJ1aWxkX2RpcmVjdG9yeSgnRGVidWcnKQorICAgIGxsZGJfd2Via2l0X3Rl
c3Rlcl9leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpcmVjdG9yeSwgJ2xsZGJXZWJL
aXRUZXN0ZXInKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsbGRiX3dlYmtpdF90ZXN0ZXJf
ZXhlY3V0YWJsZSk6CisgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVz
dHM7IGNvdWxkIG5vdCBmaW5kIHt9LicuZm9ybWF0KGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRh
YmxlKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBob3N0
LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhs
bGRiX3B5dGhvbl9kaXJlY3RvcnkpOgorICAgICAgICBpZiBub3QgbGxkYl9weXRob25fZGlyZWN0
b3J5IGluIHN5cy5wYXRoOgorICAgICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9u
X2RpcmVjdG9yeSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBzdWZmaXhfbWVz
c2FnZSA9ICcuJworICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeToKKyAgICAgICAgc3VmZml4
X21lc3NhZ2UgPSAnIGF0IHt9LicuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICBf
bG9nLmluZm8oJ1NraXBwaW5nIGxsZGJfd2Via2l0IHRlc3RzOyBjb3VsZCBub3QgZmluZCBMTERC
IFB5dGhvbiBtb2R1bGV7fScuZm9ybWF0KHN1ZmZpeF9tZXNzYWdlKSkKKwogZGVmIG1haW4oKToK
ICAgICB1cCA9IG9zLnBhdGguZGlybmFtZQogICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAo
dXAob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCkBAIC01NSw2ICs4MCw5IEBAIGRlZiBt
YWluKCk6CiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lz
LnBsYXRmb3JtID09ICdjeWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0
JykKIAorICAgIHRlc3RlciA9IFRlc3RlcigpCisgICAgbWF5X2JlX2FkZF9sbGRiX3dlYmtpdF90
ZXN0cyh0ZXN0ZXIsIHdlYmtpdF9yb290KQorCiAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5j
b21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHksIHJlYWxseSwg
c2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKICAg
ICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQnLCAnd2Via2l0cHku
Y29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWlsIGhvcnJpYmx5IG9uIHdpbjMy
JywgNTQ1MjYpCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmln
dXJhdGlvbnMvQmFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMGJjNWQ3NzRmZjMxMDQwMzBi
ZWIzY2RmZTIwZmQxOTU2NzIwN2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDkwIEBA
CisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8g
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
Ky8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiLi4v
Li4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUludGVybmFsU0RLLnhjY29uZmln
IgorCitVU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJOQUxfU0RLXyQoQ09ORklHVVJBVElP
TikpOworVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVTOworVVNFX0lOVEVSTkFMX1NE
S19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworVVNFX0lOVEVSTkFMX1NES19SZWxlYXNl
ID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CisKK0NMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9
IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFSWSA9IGxpYmMrKzsKK0NMQU5HX1dBUk5fQk9PTF9D
T05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOwor
Q0xBTkdfV0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CitDTEFOR19XQVJOX0VNUFRZX0JPRFkg
PSBZRVM7CitDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5U
X0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0g
WUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKK0dDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGRlZmF1
bHQ7CitHQ0NfRU5BQkxFX0NQUF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJ
ID0gWUVTOworR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZ
TUJPTF9TRVBBUkFUSU9OID0gTk87CitHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOworR0ND
X0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOworR0NDX09CSkNfQ0FMTF9DWFhfQ0RU
T1JTID0gWUVTOworR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKK0dDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoaW5oZXJpdGVkKTsKK0dD
Q19TVFJJQ1RfQUxJQVNJTkcgPSBZRVM7CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitH
Q0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT05fID0gWUVTOworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMg
PSBOTzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTOworR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJO
X1NJR05fQ09NUEFSRSA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7
CitHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZV
TkNUSU9OID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NG
TEFHUyA9IC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9y
bWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5v
cmV0dXJuIC1XcGFja2VkIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVm
IC1Xd3JpdGUtc3RyaW5ncyAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1
Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitI
RUFERVJfU0VBUkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNs
dWRlOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1IkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmll
cikpOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTAgPSAxMDEwMDA7CitUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMSA9IDEwMTEwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SXzEyID0gMTAxMjAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTMg
PSAxMDEzMDA7CisKKy8vIERFQlVHX0RFRklORVMsIEdDQ19PUFRJTUlaQVRJT05fTEVWRUwsIFNU
UklQX0lOU1RBTExFRF9QUk9EVUNUIGFuZCBERUFEX0NPREVfU1RSSVBQSU5HIHZhcnkgYmV0d2Vl
biB0aGUgZGVidWcgYW5kIG5vcm1hbCB2YXJpYW50cy4KKy8vIFdlIHNldCB1cCB0aGUgdmFsdWVz
IGZvciBlYWNoIHZhcmlhbnQgaGVyZSwgYW5kIGhhdmUgdGhlIERlYnVnIGNvbmZpZ3VyYXRpb24g
aW4gdGhlIFhjb2RlIHByb2plY3QgdXNlIHRoZSBfZGVidWcgdmFyaWFudC4KK0RFQlVHX0RFRklO
RVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVTX25vcm1hbCA9IE5ERUJVRzsKK0RFQlVHX0RFRklO
RVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJSRU5UX1ZBUklBTlQpKTsKKworR0NDX09QVElNSVpB
VElPTl9MRVZFTCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF8kKENVUlJFTlRfVkFSSUFOVCkp
OworR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWwgPSAzOworR0NDX09QVElNSVpBVElPTl9M
RVZFTF9kZWJ1ZyA9IDA7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisKK09USEVSX0NG
TEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFT
QU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoQVNBTl9PVEhFUl9M
REZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1
cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0
ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllYWRl
OWMxY2FlMzc5YTNlZTE5MjA4Yjc5N2RmY2MxMTJhNzU3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhj
Y29uZmlnCkBAIC0wLDAgKzEsNDEgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitPTkxZX0FDVElWRV9BUkNIID0g
WUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQoTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
UikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEwMDAgPSAxMC4xMDsKK01B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMTAwID0gMTAuMTE7CitNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTIwMCA9IDEwLjEyOworTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUX21hY29zeF8xMDEzMDAgPSAxMC4xMzsKKworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRF
RF9GVU5DVElPTlMgPSBZRVM7CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKwor
U0RLUk9PVCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9TREspKTsKK1NES1JPT1RfID0gbWFj
b3N4OworU0RLUk9PVF9ZRVMgPSBtYWNvc3guaW50ZXJuYWw7CmRpZmYgLS1naXQgYS9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2Nv
bmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2NjYwMDBkMWFmZGQ3ZGQxY2U1ZmZjMWIy
ZDFmZTEwNTIzZDVlM2UKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpAQCAtMCwwICsx
LDI0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6Cisv
LyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
Ky8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisv
LyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitQUk9EVUNU
X05BTUUgPSAkKFRBUkdFVF9OQU1FKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9NYWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0NDRjMzgwZWVjNzllZGU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCkBAIC0w
LDAgKzEsMiBAQAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2NyaXB0cworaW5jbHVkZSAuLi8uLi8u
Li9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjRkMzQ3NDhjNzVlY2Y1MTc0NzM5N2UxZTVhNWM3MGI4OTBjNzA1MDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktp
dFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjAyIEBACisvLyAh
JCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlv
YmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCNjg0NEExQUZBNzk3
ODAwMkIzMDVDIC8qIG1haW4uY3BwICovOyB9OworCQlDRTNGNDQyNjIwNUM2QTAxMDA3MTk1QjMg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UzRjQ0MjIyMDVDNjY5QzAwNzE5NUIzIC8qIEphdmFTY3Jp
cHRDb3JlLmZyYW1ld29yayAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUYx
QUYwMjc2QzAwM0ZDOEQxIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0
aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MTsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTdDMjIyNzUxMUFGQzREOUMwMDhD
MzMzOCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRi
V2ViS2l0VGVzdGVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUzMUFGQzREOUMwMDhD
MzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNl
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRBQjNBMTFBRjAyNzZD
MDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWFpbi5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0UzRjQ0MjIyMDVDNjY5QzAwNzE5NUIzIC8qIEphdmFT
Y3JpcHRDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrOyBwYXRoID0gU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9KYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQ0UzRjQ0MjYyMDVDNkEwMTAwNzE5NUIzIC8qIEph
dmFTY3JpcHRDb3JlLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAq
LworCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUxMUFGQzREOUMw
MDhDMzMzOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUzMUFGQzREOUMwMDhDMzMz
OCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMz
MzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9IENv
bmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIz
OTgxQUYwMjc2QzAwM0ZDOEQxID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9
ICgKKwkJCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8sCisJ
CQkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIzIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQ0UzRjQ0
MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkJN0M0QUIzQTIx
QUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICovLAorCQkJCUNFM0Y0NDIyMjA1QzY2OUMwMDcx
OTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8sCisJCQkpOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1
Y3RzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzRB
QjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCQlu
YW1lID0gUHJvZHVjdHM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNG
NDQyNDIwNUM2NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVD
IC8qIG1haW4uY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIz
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCisJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2Vi
S2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQk3QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNl
cyAqLywKKwkJCQk3QzRBQjM5RTFBRjAyNzZDMDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJ
CQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1
aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUg
PSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdE5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2Vi
S2l0VGVzdGVyICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50
b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdp
biBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFBy
b2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMg
PSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5n
bGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0g
KAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhE
MTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9k
dWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOwor
CQkJdGFyZ2V0cyA9ICgKKwkJCQk3QzRBQjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktp
dFRlc3RlciAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYw
Mjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8q
IEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERl
YnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVh
c2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURFQlVHX0RFRklORVMg
PSAiJChERUJVR19ERUZJTkVTX2RlYnVnKSI7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9
ICIkKEdDQ19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0My
MjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0
QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTIx
QUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCisJCTdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovID0gewor
CQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAo
CisJCQkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFCM0E3
MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVh
c2U7CisJCX07CisJCTdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIzQUEx
QUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJv
b3RPYmplY3QgPSA3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi87
Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmVhNDY0ZTQ4
Y2MxOWIyNjFmYmI3NWUyZjdkZmE4NGMzYjRhNzk4OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtMCwwICsxLDY2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgPGlvc3RyZWFtPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworZXh0ZXJuIHZvaWQgYnJl
YWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwordm9pZCBicmVha0ZvclRlc3RpbmdTdW1t
YXJ5UHJvdmlkZXJzKCkgeyByZXR1cm47IH0KKworLy8gRnJvbSBUb29scy9UZXN0V2ViS2l0QVBJ
L1dURlN0cmluZ1V0aWxpdGllcy5oCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgorc3RhdGljIFN0
cmluZyB1dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAoJnN0cmluZylbbGVuZ3RoXSkKK3sKKyAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVu
Z3RoIC0gMSk7CisgICAgZm9yIChhdXRvIGMgOiBzdHJpbmcpCisgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmco
KTsKK30KKworc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQoreworICAgIFN0cmlu
ZyBhTnVsbFN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYU51bGxTdHJpbmdJbXBsID0g
YU51bGxTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuRW1wdHlTdHJpbmcgeyAiIiB9Owor
ICAgIFN0cmluZ0ltcGwqIGFuRW1wdHlTdHJpbmdJbXBsID0gYW5FbXB0eVN0cmluZy5pbXBsKCk7
CisKKyAgICBTdHJpbmcgYW44Qml0U3RyaW5nIHsgInLDqXN1bcOpIiB9OworICAgIFN0cmluZ0lt
cGwqIGFuOEJpdFN0cmluZ0ltcGwgPSBhbjhCaXRTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5n
IGExNkJpdFN0cmluZyA9IHV0ZjE2U3RyaW5nKHUiXHUxNjgwQ2FwcHVjY2lub1x1MTY4MCIpOwor
ICAgIFN0cmluZ0ltcGwqIGExNkJpdFN0cmluZ0ltcGwgPSBhMTZCaXRTdHJpbmcuaW1wbCgpOwor
CisgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOworfQorCitpbnQgbWFpbihp
bnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAgIHRlc3RTdW1tYXJ5UHJvdmlkZXJz
KCk7CisgICAgc3RkOjpjZXJyIDw8ICJUaGlzIGV4ZWN1dGFibGUgZG9lcyBub3RoaW5nIGFuZCBp
cyBvbmx5IG1lYW50IGZvciBkZWJ1Z2dpbmcgbGxkYl93ZWJraXQucHkuIiA8PCBzdGQ6OmVuZGw7
CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpuZXcgZmlsZSBt
b2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40MTA1MjAxODkyYTk4MmUzMTU4OGQ0NWRmMDFmOGU0ODgwOTk2ZWM4Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpAQCAtMCwwICsxLDExMSBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgbGxkYgoraW1wb3J0
IGxsZGJfd2Via2l0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAor
ZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCisKKworY2xhc3MgVGVzdFN1
bW1hcnlQcm92aWRlcnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAg
IGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FID0g
J2xsZGJXZWJLaXRUZXN0ZXInCisgICAgICAgIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05B
TUUgPSAnYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycKKworICAgICAgICBjbHMuc2JE
ZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgICAgICBjbHMuc2JEZWJ1Z2dl
ci5TZXRBc3luYyhGYWxzZSkKKworICAgICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAg
IGNvbmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwgaG9zdC5maWxlc3lzdGVtKQorICAgICAg
ICBjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihj
b25maWcuYnVpbGRfZGlyZWN0b3J5KCdEZWJ1ZycpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkK
KworICAgICAgICBjbHMuc2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXRXaXRo
RmlsZUFuZEFyY2goc3RyKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSksIGxsZGIuTExE
Ql9BUkNIX0RFRkFVTFQpCisgICAgICAgIGFzc2VydCBjbHMuc2JUYXJnZXQKKyAgICAgICAgY2xz
LnNiVGFyZ2V0LkJyZWFrcG9pbnRDcmVhdGVCeU5hbWUoQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJ
T05fTkFNRSwgY2xzLnNiVGFyZ2V0LkdldEV4ZWN1dGFibGUoKS5HZXRGaWxlbmFtZSgpKQorCisg
ICAgICAgIGFyZ3YgPSBOb25lCisgICAgICAgIGVudnAgPSBOb25lCisgICAgICAgIGNscy5zYlBy
b2Nlc3MgPSBjbHMuc2JUYXJnZXQuTGF1bmNoU2ltcGxlKGFyZ3YsIGVudnAsIG9zLmdldGN3ZCgp
KQorICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2VzcworICAgICAgICBhc3NlcnQgY2xzLnNiUHJv
Y2Vzcy5HZXRTdGF0ZSgpID09IGxsZGIuZVN0YXRlU3RvcHBlZAorCisgICAgICAgIGNscy5zYlRo
cmVhZCA9IGNscy5zYlByb2Nlc3MuR2V0VGhyZWFkQXRJbmRleCgwKQorICAgICAgICBhc3NlcnQg
Y2xzLnNiVGhyZWFkCisKKyAgICAgICAgIyBGcmFtZSAwIGlzIHRoZSBmdW5jdGlvbiB3aXRoIG5h
bWUgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRS4gV2Ugd2FudCB0aGUgZnJhbWUgb2Yg
dGhlIGNhbGxlciBvZgorICAgICAgICAjIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUg
YmVjYXVzZSBpdCBoYXMgYWxsIHRoZSBpbnRlcmVzdGluZyBsb2NhbCB2YXJpYWJsZXMgd2Ugd2Fu
dCB0byB0ZXN0LgorICAgICAgICBjbHMuc2JGcmFtZSA9IGNscy5zYlRocmVhZC5HZXRGcmFtZUF0
SW5kZXgoMSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYkZyYW1lCisKKyAgICBAY2xhc3NtZXRob2QK
KyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMuc2JQcm9jZXNzLktpbGwo
KQorICAgICAgICBjbHMuc2JUYXJnZXQuRGVsZXRlQWxsQnJlYWtwb2ludHMoKQorCisgICAgIyBU
aGUgTExEQiBQeXRob24gbW9kdWxlIGRvZXMgbm90IHdvcmsgd2l0aCBQeXRob24gbXVsdGlwcm9j
ZXNzaW5nIGFuZCBjYXVzZXMgZXJyb3JzIG9mIHRoZSBmb3JtOgorICAgICMgICAgIG9iamNbNzY3
OTRdOiArW19fTURRdWVyeSBpbml0aWFsaXplXSBtYXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGlu
IGFub3RoZXIgdGhyZWFkIHdoZW4gZm9yaygpIHdhcyBjYWxsZWQuCisgICAgIyAgICAgICAgICAg
ICAgICAgIFdlIGNhbm5vdCBzYWZlbHkgY2FsbCBpdCBvciBpZ25vcmUgaXQgaW4gdGhlIGZvcmso
KSBjaGlsZCBwcm9jZXNzLiBDcmFzaGluZyBpbnN0ZWFkLgorICAgICMgU28sIHdlIHJ1biB0aGUg
Zm9sbG93aW5nIHRlc3RzIHNlcmlhbGx5LgorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdJbXBsX1N1
bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5n
SW1wbF9TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkg
PSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUu
RmluZFZhcmlhYmxlKCdhTnVsbFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9
IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9l
bXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5
U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBs
ZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlh
bF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgor
ICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlk
ZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAx
LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAg
ICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2Vs
Zi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGlzOGJpdCA9IDAsIGNv
bnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikKKworICAgICMgTUFS
SzogV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFs
X3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAg
ICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAg
IGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhz
ZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJv
dmlkZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZycpLCB7fSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9
ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJf
OGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmlu
ZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4
LCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFt
ZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNj
aW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336057</attachid>
            <date>2018-03-19 11:08:47 -0700</date>
            <delta_ts>2018-05-21 12:16:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183744-20180319110846.patch</filename>
            <type>text/plain</type>
            <size>34916</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI5NjQxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWYzZjIzNDc2OTI4NjBlYzBlNDlhYzM2Y2QzYWRlOTFj
NmE4MDY4Mi4uZDQzZGQ3NzZlN2M4NzBhNDFkZWJiMjEyYzJlYjEzMWM2ZDBkZjM3NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYy
IEBACisyMDE4LTAzLTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gRm9yIG5vdywg
d2UgYnVpbGQgYW5kIHJ1biB0aGUgdGhlc2UgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAg
KiBNYWtlZmlsZTogQnVpbGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBv
biBNYWMuIEFsdGhvdWdoIHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcg
dGhlIHRvb2wgZm9yIGVpdGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVu
bmluZyB0aGUgdGVzdHMKKyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxk
YldlYktpdFRlc3Rlci4gV2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAg
ICAgICAgY29uZmlndXJhdGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0
ZXIgZm9yIERlYnVnLgorICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJh
Y3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisg
ICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVt
aG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQg
YW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1v
ZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBv
ZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24K
KyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNl
bGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMg
aW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZv
a2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25p
ZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAor
ICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
ICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVy
X2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMpOiBBZGRlZC4KKyAgICAg
ICAgKG1haW4pOiBDYWxsIG1heV9iZV9hZGRfbGxkYl93ZWJraXRfdGVzdHMoKSB0byBjb25kaXRp
b25hbGx5IGFkZCB0aGUgbGxkYl93ZWJraXQgdGVzdHMKKyAgICAgICAgdG8gdGhlIHRlc3Qgc2Vh
cmNoIHBhdGguCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9D
b25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcDogQWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAg
ICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy50ZWFyRG93bkNsYXNzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlk
ZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1h
cnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0
cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19T
dW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wMy0xNSAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TIFdLMl0gSGl0LXRlc3Rp
bmcgZmFpbHMgd2hlbiBzcGVjaWZ5aW5nIGEgbGFyZ2UgdG9wIGNvbnRlbnQgaW5zZXQKZGlmZiAt
LWdpdCBhL1Rvb2xzL01ha2VmaWxlIGIvVG9vbHMvTWFrZWZpbGUKaW5kZXggNmExZjc3Y2U2MzU3
M2U1ZmU4OTEwMzQ3NjgyNTM3MzAwNDViOTI0My4uY2EwN2YxODgxYmM5MWZlOGU1MjJkNjZlM2Rm
N2I4MWY3NTgwZjQ0YyAxMDA2NDQKLS0tIGEvVG9vbHMvTWFrZWZpbGUKKysrIGIvVG9vbHMvTWFr
ZWZpbGUKQEAgLTIsNyArMiw3IEBAIE1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0
UnVubmVyIE1pbmlCcm93c2VyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0CiAKIGlmbmVxICgs
JChTREtST09UKSkKIAlpZmVxICgsJChmaW5kc3RyaW5nIG1hY29zeCwkKFNES1JPT1QpKSkKLQkJ
TU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSQorCQlNT0RVTEVTID0gRHVtcFJlbmRlclRy
ZWUgV2ViS2l0VGVzdFJ1bm5lciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZSBUZXN0
V2ViS2l0QVBJIGxsZGIvbGxkYldlYktpdFRlc3RlcgogCWVuZGlmCiAJaWZuZXEgKCwkKGZpbmRz
dHJpbmcgaXBob25lLCQoU0RLUk9PVCkpKQogCQlNT0RVTEVTICs9IE1vYmlsZU1pbmlCcm93c2Vy
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0IGIvVG9vbHMvU2Ny
aXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCAwMzc0NDdlNmM4YmE5MzY5NjFlN2ViNWU0YzZk
MDA2YzU0OWRlMzcxLi40ZjQyYTM5NzlmYzk5NGNjNzBhOWQ3ODVjM2NkZjg0ZWJjNDQ3Mjk2IDEw
MDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1wb3J0IG9zCiBpbXBv
cnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5wYXRoLmFwcGVuZChT
eXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkKK2ltcG9ydCBsbGRi
CiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0gIiIKQEAgLTQxLDIx
ICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0cGF0aCA9IG9zLnBh
dGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICByZXR1cm4gc3VicHJv
Y2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAid2Via2l0LWJ1aWxk
LWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYgZGV2ZWxvcGVyX2Rp
cigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhjb2RlLXNlbGVjdCIs
ICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAgeGNvZGVfY29udGVu
dHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQotICAgIGxsZGJfZnJh
bWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0aCwgIlNoYXJlZEZy
YW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5dGhvbiIpCi0gICAg
c3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBMTERCX01PRFVMRV9O
QU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExEQl9NT0RVTEVfTkFN
RV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0IEltcG9ydEVycm9y
OgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9Ii5mb3JtYXQoTExE
Ql9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAgc3lzLmV4aXQoMSkK
LQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5hbWUgPSB0eXBlLkdl
dE5hbWUoKQogICAgIHNlZW5CZWZvcmUgPSBTZXQoKQpAQCAtMTk2LDcgKzE4NCw2IEBAIGRlZiBt
YWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0b3J5CiAKICAgICB0
YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29uZmlnLCBhcmdzLmZy
YW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAgIGltcG9ydF9sbGRi
KCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFtZSwgYXJncy5hcmNo
KQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIyMDFkODMzNDE0
NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi40M2Q2ZDc5ZmM0NzIzOTQwMDFmYzk0Zjk0MmIxOTlh
NGE5Y2RmOGIxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOSBAQCBjbGFzcyBTeXN0ZW1Ib3N0KG9iamVj
dCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChzZWxmLCBwYXRo
KToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShwYXRoKQor
CisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBp
ZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVybiAnJworICAg
ICAgICB4Y29kZV9kZXZlbG9wZXJfZGlyZWN0b3J5ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1h
bmQoWyd4Y29kZS1zZWxlY3QnLCAnLS1wcmludC1wYXRoJ10sIHJldHVybl9zdGRlcnI9RmFsc2Up
LnJzdHJpcCgpCisgICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0ZW0uYWJzcGF0aChzZWxmLmZp
bGVzeXN0ZW0uam9pbih4Y29kZV9kZXZlbG9wZXJfZGlyZWN0b3J5LCAnLi4nLCAnU2hhcmVkRnJh
bWV3b3JrcycsICdMTERCLmZyYW1ld29yaycsICdWZXJzaW9ucycsICdBJywgJ1Jlc291cmNlcycs
ICdQeXRob24nKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggMjJhYzU4OTlj
NmYzNzQ4OTdlZjNkYjk4YjVlZTdmMzk1OTc2N2Q5Ni4uYWJhYmY0Zjc1NzcwN2U1OTgxNDRmOWJi
YzA4M2JmYzlhNGRjOWZiZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0
L21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTM2
LDcgKzM2LDkgQEAgaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVt
SG9zdAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVT
eXN0ZW0KK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IENvbmZpZwogZnJvbSB3ZWJr
aXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRl
ciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVy
LCB1bml0X3Rlc3RfbmFtZQpAQCAtNDQsNiArNDYsMjkgQEAgZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQogCiAKK2RlZiBtYXlfYmVfYWRkX2xsZGJfd2Via2l0X3Rlc3RzKHRlc3Rl
ciwgd2Via2l0X3Jvb3QpOgorICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkKKyAgICBpZiBub3QgaG9z
dC5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgcmV0dXJuCisKKyAgICBidWlsZF9kaXJlY3Rv
cnkgPSBDb25maWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkuYnVpbGRfZGlyZWN0
b3J5KCdEZWJ1ZycpCisgICAgbGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRo
LmpvaW4oYnVpbGRfZGlyZWN0b3J5LCAnbGxkYldlYktpdFRlc3RlcicpCisgICAgaWYgbm90IG9z
LnBhdGguZXhpc3RzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKToKKyAgICAgICAgX2xv
Zy5pbmZvKCdTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQge30uJy5m
b3JtYXQobGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpKQorICAgICAgICByZXR1cm4KKwor
ICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJl
Y3RvcnkoKQorICAgIGlmIG9zLnBhdGguZXhpc3RzKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Cisg
ICAgICAgIGlmIG5vdCBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgaW4gc3lzLnBhdGg6CisgICAgICAg
ICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0ZXN0
ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMnLCAnbGxkYicpKQor
ICAgICAgICByZXR1cm4KKworICAgIHN1ZmZpeF9tZXNzYWdlID0gJy4nCisgICAgaWYgbGxkYl9w
eXRob25fZGlyZWN0b3J5OgorICAgICAgICBzdWZmaXhfbWVzc2FnZSA9ICcgYXQge30uJy5mb3Jt
YXQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgbGxkYl93
ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5kIExMREIgUHl0aG9uIG1vZHVsZXt9Jy5mb3JtYXQo
c3VmZml4X21lc3NhZ2UpKQorCiBkZWYgbWFpbigpOgogICAgIHVwID0gb3MucGF0aC5kaXJuYW1l
CiAgICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19maWxl
X18pKSkpKSkKQEAgLTU1LDYgKzgwLDggQEAgZGVmIG1haW4oKToKICAgICBpZiBub3QgKHN5cy5w
bGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgog
ICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNl
JywgJ1dlYktpdDInLCAnU2NyaXB0cycpLCAnd2Via2l0MicpCiAKKyAgICBtYXlfYmVfYWRkX2xs
ZGJfd2Via2l0X3Rlc3RzKHRlc3Rlciwgd2Via2l0X3Jvb3QpCisKICAgICB0ZXN0ZXIuc2tpcCgo
J3dlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20uc2NtX3VuaXR0ZXN0JywpLCAnYXJlIHJlYWxs
eSwgcmVhbGx5LCBzbG93JywgMzE4MTgpCiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpOgogICAgICAgICB0ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291dCcs
ICd3ZWJraXRweS5jb21tb24uY29uZmlnJywgJ3dlYmtpdHB5LnRvb2wnKSwgJ2ZhaWwgaG9ycmli
bHkgb24gd2luMzInLCA1NDUyNikKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwYmM1ZDc3
NGZmMzEwNDAzMGJlYjNjZGZlMjBmZDE5NTY3MjA3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0w
LDAgKzEsOTAgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1l
dDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8g
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICIuLi8uLi8uLi8uLi9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxT
REsueGNjb25maWciCisKK1VTRV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChD
T05GSUdVUkFUSU9OKSk7CitVU0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0Vf
SU5URVJOQUxfU0RLX0RlYnVnID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxf
U0RLX1JlbGVhc2UgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKKworQ0xBTkdfQ1hYX0xBTkdVQUdF
X1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOworQ0xBTkdf
V0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJ
T04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5f
RU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xB
TkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRI
T0RfTUFUQ0ggPSBZRVM7CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRz
eW07CitHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVHR0lOR19TWU1C
T0xTID0gZGVmYXVsdDsKK0dDQ19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsKK0dDQ19FTkFC
TEVfQ1BQX1JUVEkgPSBZRVM7CitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dD
Q19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJT04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0gg
PSBZRVM7CitHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfT0JKQ19D
QUxMX0NYWF9DRFRPUlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVT
OworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChpbmhl
cml0ZWQpOworR0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKK0dDQ19USFJFQURTQUZFX1NUQVRJ
Q1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTl8gPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVE
X0ZVTkNUSU9OUyA9IE5POworR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0gWUVTOwor
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworR0NDX1dBUk5fQUJPVVRf
UkVUVVJOX1RZUEUgPSBZRVM7CitHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVT
OworR0NDX1dBUk5fU0lHTl9DT01QQVJFID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKK0dDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CitHQ0NfV0FS
Tl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBOTzsK
K1dBUk5JTkdfQ0ZMQUdTID0gLVdjYXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRyYS10
b2tlbnMgLVdmb3JtYXQ9MiAtV2luaXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAt
V21pc3Npbmctbm9yZXR1cm4gLVdwYWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50LWRl
Y2xzIC1XdW5kZWYgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XZ2xv
YmFsLWNvbnN0cnVjdG9ycyAtV3RhdXRvbG9naWNhbC1jb21wYXJlIC1XaW1wbGljaXQtZmFsbHRo
cm91Z2g7CisKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNy
L2xvY2FsL2luY2x1ZGU7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUOnN1ZmZp
eDppZGVudGlmaWVyKSk7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMCA9IDEwMTAw
MDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01B
Q19PU19YX1ZFUlNJT05fTUFKT1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUl8xMyA9IDEwMTMwMDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElP
Tl9MRVZFTCwgU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcg
dmFyeSBiZXR3ZWVuIHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVw
IHRoZSB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29u
ZmlndXJhdGlvbiBpbiB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50Lgor
REVCVUdfREVGSU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOwor
REVCVUdfREVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVO
VF9WQVJJQU5UKSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbCA9IDM7CitHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMX2RlYnVnID0gMDsKKworU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsK
KworT1RIRVJfQ0ZMQUdTID0gJChBU0FOX09USEVSX0NGTEFHUyk7CitPVEhFUl9DUExVU1BMVVNG
TEFHUyA9ICQoQVNBTl9PVEhFUl9DUExVU1BMVVNGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChB
U0FOX09USEVSX0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOWVhZGU5YzFjYWUzNzlhM2VlMTkyMDhiNzk3ZGZjYzExMmE3NTc0NQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWcKQEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
Ly8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgIkJhc2UueGNjb25maWciCisKK09OTFlfQUNU
SVZFX0FSQ0ggPSBZRVM7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNf
T1NfWF9WRVJTSU9OX01BSk9SKTsKKworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChNQUNP
U1hfREVQTE9ZTUVOVF9UQVJHRVRfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9W
RVJTSU9OX01BSk9SKSk7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTAwMCA9
IDEwLjEwOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsK
K01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworCitHQ0NfV0FSTl9BQk9V
VF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9
IGR3YXJmOworCitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOworU0RL
Uk9PVF8gPSBtYWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0
VGVzdGVyLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRp
b25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NjAwMGQxYWZkZDdk
ZDFjZTVmZmMxYjJkMWZlMTA1MjNkNWUzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmln
CkBAIC0wLDAgKzEsMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK1BST0RVQ1RfTkFNRSA9ICQoVEFSR0VUX05BTUUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3
OWVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFr
ZWZpbGUKQEAgLTAsMCArMSwyIEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitpbmNs
dWRlIC4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGQzNDc0OGM3NWVjZjUxNzQ3Mzk3ZTFlNWE1Yzcw
Yjg5MGM3MDUwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwy
MDIgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9
IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFp
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2
ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFM0Y0NDI2MjA1QzZB
MDEwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAxOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTEx
QUZDNEQ5QzAwOEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMz
MzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGxkYldlYktp
dFRlc3Rlci54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTMx
QUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBE
ZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEFC
M0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMg
LyogbWFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYWluLmNw
cDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1
QjMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDRTNGNDQyNjIwNUM2QTAxMDA3
MTk1QjMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBF
bmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91
cCBzZWN0aW9uICovCisJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9u
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3
NTExQUZDNEQ5QzAwOEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTMxQUZD
NEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MjFB
RkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLywKKwkJCSk7CisJ
CQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQk3QzRBQjM5ODFBRjAyNzZDMDAzRkM4RDEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0
aW9ucyAqLywKKwkJCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLywK
KwkJCQlDRTNGNDQyNDIwNUM2NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJ
CQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkJQ0UzRjQ0MjIy
MDVDNjY5QzAwNzE5NUIzIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCSk7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4
RDEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAor
CQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3
OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRU
ZXN0ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2
QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVz
dGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhE
MSAvKiBTb3VyY2VzICovLAorCQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdv
cmtzICovLAorCQkJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJ
CQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkp
OworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJL
aXRUZXN0ZXI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJv
ZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAz
RkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJ
YXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87
CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93
blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYw
Mjc2QzAwM0ZDOEQxOworCQkJcHJvZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZD
OEQxIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAv
KiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3
QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAz
RkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVC
VUdfREVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJCQlHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMID0gIiQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJfTsKKwkJ
CW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVh
c2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1
cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFz
ZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZl
cmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2Nv
bmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworCQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2Ug
PSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAq
LzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07
CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0Nv
bmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3Rl
ciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJ
CQkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVy
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLywKKwkJ
CQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5h
bWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LworCX07CisJcm9vdE9iamVjdCA9IDdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9t
YWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iZWE0NjRlNDhjYzE5YjI2MWZiYjc1ZTJmN2RmYTg0YzNiNGE3OTg5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC0wLDAgKzEsNjYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRl
cm4gdm9pZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9y
VGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKSB7IHJldHVybjsgfQorCisvLyBGcm9tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgKK3RlbXBsYXRlPHNpemVfdCBsZW5ndGg+
CitzdGF0aWMgU3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmc3RyaW5nKVtsZW5n
dGhdKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVD
YXBhY2l0eShsZW5ndGggLSAxKTsKKyAgICBmb3IgKGF1dG8gYyA6IHN0cmluZykKKyAgICAgICAg
YnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKKyAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCit7
CisgICAgU3RyaW5nIGFOdWxsU3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhTnVsbFN0
cmluZ0ltcGwgPSBhTnVsbFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW5FbXB0eVN0cmlu
ZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYW5FbXB0eVN0cmluZ0ltcGwgPSBhbkVtcHR5U3Ry
aW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhbjhCaXRTdHJpbmcgeyAicsOpc3Vtw6kiIH07Cisg
ICAgU3RyaW5nSW1wbCogYW44Qml0U3RyaW5nSW1wbCA9IGFuOEJpdFN0cmluZy5pbXBsKCk7CisK
KyAgICBTdHJpbmcgYTE2Qml0U3RyaW5nID0gdXRmMTZTdHJpbmcodSJcdTE2ODBDYXBwdWNjaW5v
XHUxNjgwIik7CisgICAgU3RyaW5nSW1wbCogYTE2Qml0U3RyaW5nSW1wbCA9IGExNkJpdFN0cmlu
Zy5pbXBsKCk7CisKKyAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit9CisK
K2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgdGVzdFN1bW1h
cnlQcm92aWRlcnMoKTsKKyAgICBzdGQ6OmNlcnIgPDwgIlRoaXMgZXhlY3V0YWJsZSBkb2VzIG5v
dGhpbmcgYW5kIGlzIG9ubHkgbWVhbnQgZm9yIGRlYnVnZ2luZyBsbGRiX3dlYmtpdC5weS4iIDw8
IHN0ZDo6ZW5kbDsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxk
Yl93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5
Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQxMDUyMDE4OTJhOTgyZTMxNTg4ZDQ1ZGYwMWY4ZTQ4ODA5OTZlYzgKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0w
LDAgKzEsMTExIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzogdXRmLTgg
LSotCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMg
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBs
bGRiCitpbXBvcnQgbGxkYl93ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVu
aXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBT
eXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKKworCitj
bGFzcyBUZXN0U3VtbWFyeVByb3ZpZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgTExEQl9XRUJLSVRfVEVT
VEVSX05BTUUgPSAnbGxkYldlYktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RFU1RJTkdf
RlVOQ1RJT05fTkFNRSA9ICdicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJworCisgICAg
ICAgIGNscy5zYkRlYnVnZ2VyID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAgICAgIGNs
cy5zYkRlYnVnZ2VyLlNldEFzeW5jKEZhbHNlKQorCisgICAgICAgIGhvc3QgPSBTeXN0ZW1Ib3N0
KCkKKyAgICAgICAgY29uZmlnID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0
ZW0pCisgICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhvc3QuZmlsZXN5
c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksIExMREJfV0VCS0lUX1RF
U1RFUl9OQU1FKQorCisgICAgICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVnZ2VyLkNyZWF0
ZVRhcmdldFdpdGhGaWxlQW5kQXJjaChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxl
KSwgbGxkYi5MTERCX0FSQ0hfREVGQVVMVCkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAor
ICAgICAgICBjbHMuc2JUYXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVT
VElOR19GVU5DVElPTl9OQU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVu
YW1lKCkpCisKKyAgICAgICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAg
ICAgY2xzLnNiUHJvY2VzcyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwg
b3MuZ2V0Y3dkKCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAgIGFzc2Vy
dCBjbHMuc2JQcm9jZXNzLkdldFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAg
ICAgY2xzLnNiVGhyZWFkID0gY2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAg
ICAgIGFzc2VydCBjbHMuc2JUaHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0
aW9uIHdpdGggbmFtZSBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRo
ZSBmcmFtZSBvZiB0aGUgY2FsbGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVO
Q1RJT05fTkFNRSBiZWNhdXNlIGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlh
YmxlcyB3ZSB3YW50IHRvIHRlc3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFk
LkdldEZyYW1lQXRJbmRleCgxKQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5zYlBy
b2Nlc3MuS2lsbCgpCisgICAgICAgIGNscy5zYlRhcmdldC5EZWxldGVBbGxCcmVha3BvaW50cygp
CisKKyAgICAjIFRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZG9lcyBub3Qgd29yayB3aXRoIFB5dGhv
biBtdWx0aXByb2Nlc3NpbmcgYW5kIGNhdXNlcyBlcnJvcnMgb2YgdGhlIGZvcm06CisgICAgIyAg
ICAgb2JqY1s3Njc5NF06ICtbX19NRFF1ZXJ5IGluaXRpYWxpemVdIG1heSBoYXZlIGJlZW4gaW4g
cHJvZ3Jlc3MgaW4gYW5vdGhlciB0aHJlYWQgd2hlbiBmb3JrKCkgd2FzIGNhbGxlZC4KKyAgICAj
ICAgICAgICAgICAgICAgICAgV2UgY2Fubm90IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBp
biB0aGUgZm9yaygpIGNoaWxkIHByb2Nlc3MuIENyYXNoaW5nIGluc3RlYWQuCisgICAgIyBTbywg
d2UgcnVuIHRoZSBmb2xsb3dpbmcgdGVzdHMgc2VyaWFsbHkuCisKKyAgICAjIE1BUks6IFdURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVz
dF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAg
ICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNl
bGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250
ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFy
eVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Vi
a2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2FuRW1wdHlTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1
bW1hcnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCisKKyAg
ICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJp
bmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1
bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmdJbXBs
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgs
IGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2Vs
Zik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQ
cm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmdJbXBsJyksIHt9
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgaXM4
Yml0ID0gMCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQor
CisgICAgIyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKKworICAg
IGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNl
bGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92
aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhTnVsbFN0cmluZycpLCB7fSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcn
IH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1w
dHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5n
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAs
IGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1h
cnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Vi
a2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgn
YW44Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7
IGxlbmd0aCA9IDgsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToK
KyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIo
c2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgY29udGVudHMgPSAnXFx1
MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340870</attachid>
            <date>2018-05-21 12:16:48 -0700</date>
            <delta_ts>2018-05-21 15:58:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-183744-20180521121647.patch</filename>
            <type>text/plain</type>
            <size>47241</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTkxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjU2OWYzYjFhMmFkNjVhNjFkZDVlMzg4ZTk2ZjA5ZTA1
YjhhZGIwMi4uODFmZWIzNjZhMjA4ODFjZTE4ZGQxNzYzZGYyOTY2YzE1NTUyYmZkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk2
IEBACiAyMDE4LTA1LTIxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gRm9yIG5vdywg
d2UgYnVpbGQgYW5kIHJ1biB0aGUgdGhlc2UgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAg
KiBNYWtlZmlsZTogQnVpbGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBv
biBNYWMuIEFsdGhvdWdoIHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcg
dGhlIHRvb2wgZm9yIGVpdGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVu
bmluZyB0aGUgdGVzdHMKKyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxk
YldlYktpdFRlc3Rlci4gV2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAg
ICAgICAgY29uZmlndXJhdGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0
ZXIgZm9yIERlYnVnLgorICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJh
Y3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisg
ICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVt
aG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQg
YW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1v
ZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBv
ZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24K
KyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNl
bGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMg
aW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZv
a2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25p
ZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAor
ICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
ICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVy
X2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heWJlX2FkZF9sbGRiX3dlYmtpdF90ZXN0cyk6IEFkZGVkLgorICAgICAg
ICAobWFpbik6IENhbGwgbWF5YmVfYWRkX2xsZGJfd2Via2l0X3Rlc3RzKCkgdG8gY29uZGl0aW9u
YWxseSBhZGQgdGhlIGxsZGJfd2Via2l0IHRlc3RzCisgICAgICAgIHRvIHRoZSB0ZXN0IHNlYXJj
aCBwYXRoLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBVcGRhdGUgY29kZSBhcyBuZWVk
ZWQgZm9yIGNoYW5nZSBiZWxvdy4KKyAgICAgICAgKFRlc3Rlci5fdGVzdF9uYW1lcyk6IE1vZGlm
aWVkIHRvIGxvb2sgZm9yIGEgbmV3IHRlc3QgbWV0aG9kIHByZWZpeCwgJ3N0YXRlbGVzc19wcm9j
ZXNzX3Rlc3RfJworICAgICAgICBhbmQgY29sbGVjdCBzdWNoIG1ldGhvZHMuIE1ldGhvZHMgd2l0
aCB0aGlzIG5hbWUgcHJlZml4IHdpbGwgcnVuIGluIGEgbmV3IFB5dGhvbiBwcm9jZXNzIChpLmUu
CisgICAgICAgIG5vdCBhIGZvcmsoKSBvZiB0ZXN0LXdlYmtpdHB5KS4gCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RTdHVi
cy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X2VtcHR5KToKKyAgICAgICAgKFRlc3RTdHVicyk6Cisg
ICAgICAgIChUZXN0U3R1YnMuc3RhdGVsZXNzX3Byb2Nlc3NfaW50ZWdyYXRpb25fdGVzdF9lbXB0
eSk6CisgICAgICAgIChUZXN0ZXJUZXN0LnRlc3RfaW5kaXZpZHVhbF9uYW1lc19hcmVfbm90X3J1
bl90d2ljZSk6CisgICAgICAgIChUZXN0ZXJUZXN0LnRlc3RfaW50ZWdyYXRpb25fdGVzdHNfYXJl
X25vdF9mb3VuZF9ieV9kZWZhdWx0KToKKyAgICAgICAgKFRlc3RlclRlc3QudGVzdF9pbnRlZ3Jh
dGlvbl90ZXN0c19hcmVfZm91bmQpOgorICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3IgdGVzdCBt
ZXRob2RzIHRoYXQgYXJlIHByZWZpeGVkIHdpdGggJ3N0YXRlbGVzc19wcm9jZXNzX3Rlc3RfJy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXIucHk6CisgICAgICAgICh3
cml0ZV9waWNrbGVkX3Rlc3RfcmVzdWx0X21vZGlmeWluZ190ZXN0X3Jlc3VsdCk6IENvbnZlbmll
bmNlIGZ1bmN0aW9uIHRoYXQgbnVsbGlmaWVzIGZpbGUtbGlrZQorICAgICAgICBhdHRyaWJ1dGVz
IG9mIHRoZSBzcGVjaWZpZWQgdW5pdHRlc3QuVGVzdFJlc3VsdCBvYmplY3QgYW5kIHBpY2tsZXMg
aXQuIFRoZSBudWxsaWZpY2F0aW9uIGlzIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHdlIGNhbm5v
dCBwaWNrbGUgZmlsZS1saWtlIG9iamVjdHMuCisgICAgICAgIChSdW5uZXIuX19pbml0X18pOiBT
dWJzdGl0dXRlICdzZWxmLl9zdGF0ZWZ1bF93b3JrZXJfZmFjdG9yeScgZm9yICdzZWxmLndvcmtl
cl9mYWN0b3J5JyB0byBiZXR0ZXIKKyAgICAgICAgZGVzY3JpYmUgdGhhdCB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgYSBuZXcgc3RhdGVmdWwgV29ya2VyIGluc3RhbmNlIChpLmUuIGEgd29ya2VyIHRo
YXQgZXhlY3V0ZXMgaW4KKyAgICAgICAgYSBmb3JrKCkgb2YgdGVzdC13ZWJraXRweSkuCisgICAg
ICAgIChSdW5uZXIucnVuKTogTW9kaWZpZWQgdG8gdGFrZSBhbiBvcHRpb25hbCBwYXJhbWV0ZXIs
IHVzZV9zdGF0ZWxlc3NfcHJvY2VzcywgYXMgdG8gd2hldGhlciB0byB1c2UKKyAgICAgICAgYSBu
ZXcgUHl0aG9uIHByb2Nlc3MgdG8gZXhlY3V0ZSB0aGUgdGVzdC4KKyAgICAgICAgKF9TdGF0ZWxl
c3NXb3JrZXIpOiBBZGRlZC4KKyAgICAgICAgKF9TdGF0ZWxlc3NXb3JrZXIuX19pbml0X18pOiBB
ZGRlZC4KKyAgICAgICAgKF9TdGF0ZWxlc3NXb3JrZXIuaGFuZGxlKTogTGF1bmNoZXMgYSBuZXcg
UHl0aG9uIHByb2Nlc3MgdGhhdCBleGVjdXRlcyBzY3JpcHQgc3RhdGVsZXNzX3Byb2Nlc3NfcnVu
bmVyLnB5LgorICAgICAgICBUaGlzIG5ldyBwcm9jZXNzIGV4cGVjdHMgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgbWV0aG9kIHRvIHJ1biB0byBiZSBwYXNzZWQgdG8gaXQgYXMgaXRzIG9ubHkgY29tbWFu
ZC1saW5lCisgICAgICAgIGFyZ3VtZW50IGFuZCByZWFkcyB0aGUgcGlja2xlZCB1bml0dGVzdC5U
ZXN0UmVzdWx0KCkgb2JqZWN0IHBhc3NlZCB0byBpdCB2aWEgc3RhbmRhcmQgaW5wdXQuIEl0IHNp
Z25hbHMKKyAgICAgICAgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHRlc3QgdmlhIGhhcmRjb2Rl
ZCAnIyMgU3RhcnQgIyMnIGFuZCAnIyMgRW5kICMjJyBzdHJpbmdzIHdyaXR0ZW4gdG8gc3RhbmRh
cmQgb3V0cHV0LgorICAgICAgICBUaGVuIGl0IHBhc3NlcyBiYWNrIHRoZSB1bml0dGVzdC5UZXN0
UmVzdWx0KCkgaXQgb3JpZ2luYWxseSByZWNlaXZlZCB2aWEgc3RhbmRhcmQgaW5wdXQgdG8gaXRz
IHBhcmVudCBieQorICAgICAgICBwaWNrbGluZyBpdCBhbmQgd3JpdGluZyBpdCB0byBzdGFuZGFy
ZCBvdXRwdXQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9D
b25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcDogQWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAg
ICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy50ZWFyRG93bkNsYXNzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlk
ZXJzLnN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJf
bnVsbF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc3RhdGVsZXNzX3By
b2Nlc3NfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgor
ICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZT
dHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFy
eVByb3ZpZGVyXzE2Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5z
dGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJp
bmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc3RhdGVsZXNzX3Byb2Nlc3NfdGVz
dF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0
U3VtbWFyeVByb3ZpZGVycy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXJfOGJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc3Rh
dGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmlu
Zyk6CisKKworMjAxOC0wNS0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CisK
ICAgICAgICAgdGVzdC13ZWJraXRweSBtZXNzYWdlcyBsb2dnZWQgdXNpbmcgX19tYWluX18gbG9n
Z2VyIGFyZSBub3QgZGlzcGxheWVkCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODU4MjMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWFrZWZpbGUgYi9Ub29s
cy9NYWtlZmlsZQppbmRleCA2YTFmNzdjZTYzNTczZTVmZTg5MTAzNDc2ODI1MzczMDA0NWI5MjQz
Li5jYTA3ZjE4ODFiYzkxZmU4ZTUyMmQ2NmUzZGY3YjgxZjc1ODBmNDRjIDEwMDY0NAotLS0gYS9U
b29scy9NYWtlZmlsZQorKysgYi9Ub29scy9NYWtlZmlsZQpAQCAtMiw3ICsyLDcgQEAgTU9EVUxF
UyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgTWluaUJyb3dzZXIgLi4vU291cmNl
L1RoaXJkUGFydHkvZ3Rlc3QKIAogaWZuZXEgKCwkKFNES1JPT1QpKQogCWlmZXEgKCwkKGZpbmRz
dHJpbmcgbWFjb3N4LCQoU0RLUk9PVCkpKQotCQlNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2Vi
S2l0VGVzdFJ1bm5lciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZSBUZXN0V2ViS2l0
QVBJCisJCU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJj
ZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkgbGxkYi9sbGRiV2ViS2l0VGVz
dGVyCiAJZW5kaWYKIAlpZm5lcSAoLCQoZmluZHN0cmluZyBpcGhvbmUsJChTREtST09UKSkpCiAJ
CU1PRFVMRVMgKz0gTW9iaWxlTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
ZHVtcC1jbGFzcy1sYXlvdXQgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CmluZGV4
IGQ0MTg2NDQ1NTgzNmUzYjBlMmIwNjU0NmI5YmFiNjI2Njg1ODZlYzUuLjZmNmViYTQyZGU4MTc1
MzYyYjJjMjE5Nzc5MTZkODc0YjU1MDRjZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZHVt
cC1jbGFzcy1sYXlvdXQKKysrIGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dApAQCAt
MzEsNiArMzEsOSBAQCBpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHNldHMgaW1w
b3J0IFNldAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAorc3lzLnBhdGguYXBwZW5kKFN5c3RlbUhvc3QoKS5wYXRoX3RvX2xsZGJfcHl0
aG9uX2RpcmVjdG9yeSgpKQoraW1wb3J0IGxsZGIKIAogZnJhbWV3b3JrID0gIldlYkNvcmUiCiBi
dWlsZF9kaXJlY3RvcnkgPSAiIgpAQCAtNDEsMjEgKzQ0LDYgQEAgZGVmIHdlYmtpdF9idWlsZF9k
aXIoKToKICAgICBzY3JpcHRwYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgo
X19maWxlX18pKQogICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb3MucGF0aC5q
b2luKHNjcmlwdHBhdGgsICJ3ZWJraXQtYnVpbGQtZGlyZWN0b3J5IiksICItLXRvcC1sZXZlbCJd
KS5zdHJpcCgpCiAKLWRlZiBkZXZlbG9wZXJfZGlyKCk6Ci0gICAgcmV0dXJuIHN1YnByb2Nlc3Mu
Y2hlY2tfb3V0cHV0KFsieGNvZGUtc2VsZWN0IiwgIi0tcHJpbnQtcGF0aCJdKQotCi1kZWYgaW1w
b3J0X2xsZGIoKToKLSAgICB4Y29kZV9jb250ZW50c19wYXRoID0gb3MucGF0aC5zcGxpdChkZXZl
bG9wZXJfZGlyKCkpWzBdCi0gICAgbGxkYl9mcmFtZXdvcmtfcGF0aCA9IG9zLnBhdGguam9pbih4
Y29kZV9jb250ZW50c19wYXRoLCAiU2hhcmVkRnJhbWV3b3JrcyIsICJMTERCLmZyYW1ld29yayIs
ICJSZXNvdXJjZXMiLCAiUHl0aG9uIikKLSAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9mcmFtZXdv
cmtfcGF0aCkKLQotICAgIExMREJfTU9EVUxFX05BTUUgPSAibGxkYiIKLSAgICB0cnk6Ci0gICAg
ICAgIGdsb2JhbHMoKVtMTERCX01PRFVMRV9OQU1FXSA9IF9faW1wb3J0X18oTExEQl9NT0RVTEVf
TkFNRSkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHByaW50ICJGYWlsZWQgdG8g
aW1wb3J0IHt9IGZyb20ge30iLmZvcm1hdChMTERCX01PRFVMRV9OQU1FLCBsbGRiX2ZyYW1ld29y
a19wYXRoKQotICAgICAgICBzeXMuZXhpdCgxKQotCiBkZWYgdmVyaWZ5X3R5cGUodGFyZ2V0LCB0
eXBlKToKICAgICB0eXBlbmFtZSA9IHR5cGUuR2V0TmFtZSgpCiAgICAgc2Vlbk9mZnNldCA9IFNl
dCgpCkBAIC0xOTYsNyArMTg0LDYgQEAgZGVmIG1haW4oKToKICAgICAgICAgYnVpbGRfZGlyID0g
YXJncy5idWlsZF9kaXJlY3RvcnkKIAogICAgIHRhcmdldF9wYXRoID0gb3MucGF0aC5qb2luKGJ1
aWxkX2RpciwgYXJncy5jb25maWcsIGFyZ3MuZnJhbWV3b3JrICsgIi5mcmFtZXdvcmsiLCBhcmdz
LmZyYW1ld29yayk7Ci0gICAgaW1wb3J0X2xsZGIoKQogICAgIGR1bXBfY2xhc3ModGFyZ2V0X3Bh
dGgsIGFyZ3MuY2xhc3NuYW1lLCBhcmdzLmFyY2gpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lz
dGVtaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1o
b3N0LnB5CmluZGV4IGExNTM0MjIwMWQ4MzM0MTQ3MzFlYmQwZjc2ZjcxNzlhNmYwYmQ2ZTMuLjQz
ZDZkNzlmYzQ3MjM5NDAwMWZjOTRmOTQyYjE5OWE0YTljZGY4YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CkBAIC00NywzICs0
Nyw5IEBAIGNsYXNzIFN5c3RlbUhvc3Qob2JqZWN0KToKIAogICAgIGRlZiBzeW1ib2xpY2F0ZV9j
cmFzaF9sb2dfaWZfbmVlZGVkKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5maWxl
c3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisKKyAgICBkZWYgcGF0aF90b19sbGRiX3B5dGhv
bl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnBsYXRmb3JtLmlzX21hYygp
OgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAgIHhjb2RlX2RldmVsb3Blcl9kaXJlY3Rv
cnkgPSBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ3hjb2RlLXNlbGVjdCcsICctLXByaW50
LXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuZmlsZXN5c3RlbS5hYnNwYXRoKHNlbGYuZmlsZXN5c3RlbS5qb2luKHhjb2RlX2RldmVsb3Bl
cl9kaXJlY3RvcnksICcuLicsICdTaGFyZWRGcmFtZXdvcmtzJywgJ0xMREIuZnJhbWV3b3JrJywg
J1ZlcnNpb25zJywgJ0EnLCAnUmVzb3VyY2VzJywgJ1B5dGhvbicpKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rlc3QvbWFpbi5weQppbmRleCA1ZmFjYWE1NDZkZWU5NjU4YmFjOTg0OGVhMDJlMWZjNDgyYTBm
MmVmLi44MDZmZmJiOWRhNGRmNzIwMTI5ZjM2MmZkYmMxY2Y0OWMzMDdmOTE5IDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSwgSW5jLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNq
ZXJkb25la0B3ZWJraXQub3JnKQorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICsz
OSw4IEBAIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9n
dXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25m
aWcgaW1wb3J0IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVy
CiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRw
eS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQpAQCAtNDUsNiArNDgs
MjEgQEAgZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3Rf
bmFtZQogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK2RlZiBtYXliZV9h
ZGRfbGxkYl93ZWJraXRfdGVzdHModGVzdGVyLCB3ZWJraXRfcm9vdCk6CisgICAgaG9zdCA9IFN5
c3RlbUhvc3QoKQorICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19sbGRi
X3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6CisgICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVz
dHM7IGNvdWxkIG5vdCBmaW5kIExMREIgUHl0aG9uIG1vZHVsZSBkaXJlY3RvcnkgJ3t9Jy4iLmZv
cm1hdChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4KKyAgICBidWlsZF9k
aXJlY3RvcnkgPSBDb25maWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkuYnVpbGRf
ZGlyZWN0b3J5KCdEZWJ1ZycpCisgICAgbGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUgPSBv
cy5wYXRoLmpvaW4oYnVpbGRfZGlyZWN0b3J5LCAnbGxkYldlYktpdFRlc3RlcicpCisgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKToKKyAgICAg
ICAgX2xvZy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQg
J3t9Jy4iLmZvcm1hdChsbGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSkpCisgICAgICAgIHJl
dHVybgorICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAg
ICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpCisgICAgdGVzdGVyLmFk
ZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKwogZGVm
IG1haW4oKToKICAgICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIApAQCAtNTgsNiAr
NzYsOCBAQCBkZWYgbWFpbigpOgogICAgIGlmIG5vdCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3lnd2luJyk6CiAgICAgICAgIHRlc3Rlci5hZGRf
dHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1Njcmlw
dHMnKSwgJ3dlYmtpdCcpCiAKKyAgICBtYXliZV9hZGRfbGxkYl93ZWJraXRfdGVzdHModGVzdGVy
LCB3ZWJraXRfcm9vdCkKKwogICAgIHRlc3Rlci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNr
b3V0LnNjbS5zY21fdW5pdHRlc3QnLCksICdhcmUgcmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgx
OCkKICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgIHRlc3Rl
ci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0JywgJ3dlYmtpdHB5LmNvbW1vbi5jb25m
aWcnLCAnd2Via2l0cHkudG9vbCcpLCAnZmFpbCBob3JyaWJseSBvbiB3aW4zMicsIDU0NTI2KQpA
QCAtMTY4LDEzICsxODgsMTQgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAKICAgICAgICAgc2Vs
Zi5wcmludGVyLndyaXRlX3VwZGF0ZSgiRmluZGluZyB0aGUgaW5kaXZpZHVhbCB0ZXN0IG1ldGhv
ZHMgLi4uIikKICAgICAgICAgbG9hZGVyID0gX0xvYWRlcigpCi0gICAgICAgIHBhcmFsbGVsX3Rl
c3RzLCBzZXJpYWxfdGVzdHMgPSBzZWxmLl90ZXN0X25hbWVzKGxvYWRlciwgbmFtZXMpCisgICAg
ICAgIHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMsIHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0
cyA9IHNlbGYuX3Rlc3RfbmFtZXMobG9hZGVyLCBuYW1lcykKIAogICAgICAgICBzZWxmLnByaW50
ZXIud3JpdGVfdXBkYXRlKCJSdW5uaW5nIHRoZSB0ZXN0cyAuLi4iKQogICAgICAgICBzZWxmLnBy
aW50ZXIubnVtX3Rlc3RzID0gbGVuKHBhcmFsbGVsX3Rlc3RzKSArIGxlbihzZXJpYWxfdGVzdHMp
CiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKICAgICAgICAgdGVzdF9ydW5uZXIgPSBSdW5u
ZXIoc2VsZi5wcmludGVyLCBsb2FkZXIpCiAgICAgICAgIHRlc3RfcnVubmVyLnJ1bihwYXJhbGxl
bF90ZXN0cywgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpCisgICAgICAgIHRlc3RfcnVu
bmVyLnJ1bihzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMsIHNlbGYuX29wdGlvbnMuY2hpbGRfcHJv
Y2Vzc2VzLCB1c2Vfc3RhdGVsZXNzX3Byb2Nlc3M9VHJ1ZSkKICAgICAgICAgdGVzdF9ydW5uZXIu
cnVuKHNlcmlhbF90ZXN0cywgMSkKIAogICAgICAgICBzZWxmLnByaW50ZXIucHJpbnRfcmVzdWx0
KHRpbWUudGltZSgpIC0gc3RhcnQpCkBAIC0yMTEsOSArMjMyLDExIEBAIGNsYXNzIFRlc3Rlcihv
YmplY3QpOgogICAgIGRlZiBfdGVzdF9uYW1lcyhzZWxmLCBsb2FkZXIsIG5hbWVzKToKICAgICAg
ICAgcGFyYWxsZWxfdGVzdF9tZXRob2RfcHJlZml4ZXMgPSBbJ3Rlc3RfJ10KICAgICAgICAgc2Vy
aWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzID0gWydzZXJpYWxfdGVzdF8nXQorICAgICAgICBzdGF0
ZWxlc3NfcGFyYWxsZWxfdGVzdF9tZXRob2RfcHJlZml4ZXMgPSBbJ3N0YXRlbGVzc19wcm9jZXNz
X3Rlc3RfJ10KICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5pbnRlZ3JhdGlvbl90ZXN0czoKICAg
ICAgICAgICAgIHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVuZCgnaW50ZWdyYXRp
b25fdGVzdF8nKQogICAgICAgICAgICAgc2VyaWFsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFwcGVu
ZCgnc2VyaWFsX2ludGVncmF0aW9uX3Rlc3RfJykKKyAgICAgICAgICAgIHN0YXRlbGVzc19wYXJh
bGxlbF90ZXN0X21ldGhvZF9wcmVmaXhlcy5hcHBlbmQoJ3N0YXRlbGVzc19wcm9jZXNzX2ludGVn
cmF0aW9uX3Rlc3RfJykKIAogICAgICAgICBwYXJhbGxlbF90ZXN0cyA9IFtdCiAgICAgICAgIGxv
YWRlci50ZXN0X21ldGhvZF9wcmVmaXhlcyA9IHBhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVz
CkBAIC0yMjUsMTIgKzI0OCwxOSBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgZm9y
IG5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBzZXJpYWxfdGVzdHMuZXh0ZW5kKHNlbGYuX2Fs
bF90ZXN0X25hbWVzKGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZShuYW1lLCBOb25lKSkpCiAKKyAg
ICAgICAgc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzID0gW10KKyAgICAgICAgbG9hZGVyLnRlc3Rf
bWV0aG9kX3ByZWZpeGVzID0gc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVz
CisgICAgICAgIGZvciBuYW1lIGluIG5hbWVzOgorICAgICAgICAgICAgc3RhdGVsZXNzX3BhcmFs
bGVsX3Rlc3RzLmV4dGVuZChzZWxmLl9hbGxfdGVzdF9uYW1lcyhsb2FkZXIubG9hZFRlc3RzRnJv
bU5hbWUobmFtZSwgTm9uZSkpKQorCiAgICAgICAgICMgbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1l
KCkgd2lsbCBub3QgdmVyaWZ5IHRoYXQgbmFtZXMgYmVnaW4gd2l0aCBvbmUgb2YgdGhlIHRlc3Rf
bWV0aG9kX3ByZWZpeGVzCiAgICAgICAgICMgaWYgdGhlIG5hbWVzIHdlcmUgZXhwbGljaXRseSBw
cm92aWRlZCAoZS5nLiwgTWFpblRlc3QudGVzdF9iYXNpYyksIHNvIHRoaXMgbWVhbnMgdGhhdCBh
bnkgaW5kaXZpZHVhbAotICAgICAgICAjIHRlc3RzIHdpbGwgYmUgaW5jbHVkZWQgaW4gYm90aCBw
YXJhbGxlbF90ZXN0cyBhbmQgc2VyaWFsX3Rlc3RzLCBhbmQgd2UgbmVlZCB0byBkZS1kdXAgdGhl
bS4KLSAgICAgICAgc2VyaWFsX3Rlc3RzID0gbGlzdChzZXQoc2VyaWFsX3Rlc3RzKS5kaWZmZXJl
bmNlKHNldChwYXJhbGxlbF90ZXN0cykpKQorICAgICAgICAjIHRlc3RzIHdpbGwgYmUgaW5jbHVk
ZWQgaW4gcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cywgYW5kIHN0YXRlbGVzc19wYXJhbGxl
bF90ZXN0cyBhbmQgd2UgbmVlZAorICAgICAgICAjIHRvIGRlLWR1cCB0aGVtLgorICAgICAgICBz
ZXJpYWxfdGVzdHMgPSBsaXN0KHNldChzZXJpYWxfdGVzdHMpLmRpZmZlcmVuY2Uoc2V0KHBhcmFs
bGVsX3Rlc3RzKSkuZGlmZmVyZW5jZShzZXQoc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzKSkpCisg
ICAgICAgIHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0cyA9IGxpc3Qoc2V0KHN0YXRlbGVzc19wYXJh
bGxlbF90ZXN0cykuZGlmZmVyZW5jZShzZXQocGFyYWxsZWxfdGVzdHMpKS5kaWZmZXJlbmNlKHNl
dChzZXJpYWxfdGVzdHMpKSkKIAotICAgICAgICByZXR1cm4gKHBhcmFsbGVsX3Rlc3RzLCBzZXJp
YWxfdGVzdHMpCisgICAgICAgIHJldHVybiAocGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cywg
c3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzKQogCiAgICAgZGVmIF9hbGxfdGVzdF9uYW1lcyhzZWxm
LCBzdWl0ZSk6CiAgICAgICAgIG5hbWVzID0gW10KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGVzdC9tYWluX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L21haW5fdW5pdHRlc3QucHkKaW5kZXggMmE0ODI0M2RlNzZmYWE4NTMwN2UzZWNmYTdhMjI4
MGVkNDM3ZTZiNy4uN2M2NWM4YWMyNTkwNjFkN2ZlMTlhZjZiNWM1MmJjOWVhMTNmZTY1NSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3QucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3QucHkKQEAgLTEsNCAr
MSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KKyMgQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNDcsNiArNDgsMTIgQEAgY2xhc3MgVGVzdFN0dWJzKHVuaXR0ZXN0LlRl
c3RDYXNlKToKICAgICBkZWYgc2VyaWFsX2ludGVncmF0aW9uX3Rlc3RfZW1wdHkoc2VsZik6CiAg
ICAgICAgIHBhc3MKIAorICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X2VtcHR5KHNlbGYp
OgorICAgICAgICBwYXNzCisKKyAgICBkZWYgc3RhdGVsZXNzX3Byb2Nlc3NfaW50ZWdyYXRpb25f
dGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIFRlc3RlclRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCkBAIC04MCwyMSArODcsMjUgQEAgY2xhc3MgVGVzdGVyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9pbmRpdmlkdWFsX25hbWVzX2FyZV9u
b3RfcnVuX3R3aWNlKHNlbGYpOgogICAgICAgICBhcmdzID0gW1NUVUJTX0NMQVNTICsgJy50ZXN0
X2VtcHR5J10KLSAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyA9IHNlbGYuX2Zp
bmRfdGVzdF9uYW1lcyhhcmdzKQorICAgICAgICBwYXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3Rz
LCBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMgPSBzZWxmLl9maW5kX3Rlc3RfbmFtZXMoYXJncykK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbGxlbF90ZXN0cywgYXJncykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZXJpYWxfdGVzdHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0cywgW10pCiAKICAgICBkZWYgdGVzdF9pbnRlZ3Jh
dGlvbl90ZXN0c19hcmVfbm90X2ZvdW5kX2J5X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIHBhcmFs
bGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMgPSBzZWxmLl9maW5kX3Rlc3RfbmFtZXMoW1NUVUJTX0NM
QVNTXSkKKyAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cywgc3RhdGVsZXNzX3Bh
cmFsbGVsX3Rlc3RzID0gc2VsZi5fZmluZF90ZXN0X25hbWVzKFtTVFVCU19DTEFTU10pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYWxsZWxfdGVzdHMsIFsKICAgICAgICAgICAgIFNUVUJT
X0NMQVNTICsgJy50ZXN0X2VtcHR5JywKICAgICAgICAgICAgIF0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VyaWFsX3Rlc3RzLCBbCiAgICAgICAgICAgICBTVFVCU19DTEFTUyArICcuc2Vy
aWFsX3Rlc3RfZW1wdHknLAogICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMsIFsKKyAgICAgICAgICAgIFNUVUJTX0NMQVNTICsg
Jy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X2VtcHR5JywKKyAgICAgICAgICAgIF0pCiAKICAgICBk
ZWYgdGVzdF9pbnRlZ3JhdGlvbl90ZXN0c19hcmVfZm91bmQoc2VsZik6Ci0gICAgICAgIHBhcmFs
bGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMgPSBzZWxmLl9maW5kX3Rlc3RfbmFtZXMoWyctLWludGVn
cmF0aW9uLXRlc3RzJywgU1RVQlNfQ0xBU1NdKQorICAgICAgICBwYXJhbGxlbF90ZXN0cywgc2Vy
aWFsX3Rlc3RzLCBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMgPSBzZWxmLl9maW5kX3Rlc3RfbmFt
ZXMoWyctLWludGVncmF0aW9uLXRlc3RzJywgU1RVQlNfQ0xBU1NdKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBhcmFsbGVsX3Rlc3RzLCBbCiAgICAgICAgICAgICBTVFVCU19DTEFTUyArICcu
aW50ZWdyYXRpb25fdGVzdF9lbXB0eScsCiAgICAgICAgICAgICBTVFVCU19DTEFTUyArICcudGVz
dF9lbXB0eScsCkBAIC0xMDMsNiArMTE0LDEwIEBAIGNsYXNzIFRlc3RlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgICAgICAgICAgU1RVQlNfQ0xBU1MgKyAnLnNlcmlhbF9pbnRlZ3JhdGlv
bl90ZXN0X2VtcHR5JywKICAgICAgICAgICAgIFNUVUJTX0NMQVNTICsgJy5zZXJpYWxfdGVzdF9l
bXB0eScsCiAgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlbGVz
c19wYXJhbGxlbF90ZXN0cywgWworICAgICAgICAgICAgU1RVQlNfQ0xBU1MgKyAnLnN0YXRlbGVz
c19wcm9jZXNzX2ludGVncmF0aW9uX3Rlc3RfZW1wdHknLAorICAgICAgICAgICAgU1RVQlNfQ0xB
U1MgKyAnLnN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfZW1wdHknLAorICAgICAgICAgICAgXSkKIAog
ICAgIGRlZiBpbnRlZ3JhdGlvbl90ZXN0X2NvdmVyYWdlX3dvcmtzKHNlbGYpOgogICAgICAgICBm
aWxlc3lzdGVtID0gRmlsZVN5c3RlbSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rlc3QvcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lci5w
eQppbmRleCAzYzI1YTE2YjY2M2Q0MTAwNjQ1NzhjNTQxNDI4MjA3YmMzYjAwNDZjLi5lMWI5NGNl
OTYwYTNlYjM2NmUwOThkNWY5OWYzZTA5ZTIwOGEyNzAzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGVzdC9ydW5uZXIucHkKQEAgLTIyLDcgKzIyLDExIEBACiAKICIiImNvZGUgdG8gYWN0dWFsbHkg
cnVuIGEgbGlzdCBvZiBweXRob24gdGVzdHMuIiIiCiAKK2ltcG9ydCBvcworaW1wb3J0IHBpY2ts
ZQogaW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUK
IGltcG9ydCB1bml0dGVzdAogCkBAIC0zMSw2ICszNSwxMyBAQCBmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgbWVzc2FnZV9wb29sCiBfdGVzdF9kZXNjcmlwdGlvbiA9IHJlLmNvbXBpbGUoIihc
dyspIFwoKFtcdy5dKylcKSIpCiAKIAorZGVmIHdyaXRlX3BpY2tsZWRfdGVzdF9yZXN1bHRfbW9k
aWZ5aW5nX3Rlc3RfcmVzdWx0KHRlc3RfcmVzdWx0LCBmaWxlX29iamVjdCk6CisgICAgIyBGcm9t
IDxodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNzQ1OTQ2NC9ob3ctdG8tc2F2
ZS11bml0dGVzdC10ZXN0cmVzdWx0PgorICAgIGZvciBrZXksIHZhbHVlIGluIHZhcnModGVzdF9y
ZXN1bHQpLml0ZW1zKCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIGZpbGUpOgorICAg
ICAgICAgICAgc2V0YXR0cih0ZXN0X3Jlc3VsdCwga2V5LCBOb25lKQorICAgIHBpY2tsZS5kdW1w
KHRlc3RfcmVzdWx0LCBmaWxlX29iamVjdCwgcGlja2xlLkhJR0hFU1RfUFJPVE9DT0wpCisKIGRl
ZiB1bml0X3Rlc3RfbmFtZSh0ZXN0KToKICAgICBtID0gX3Rlc3RfZGVzY3JpcHRpb24ubWF0Y2go
c3RyKHRlc3QpKQogICAgIHJldHVybiAiJXMuJXMiICUgKG0uZ3JvdXAoMiksIG0uZ3JvdXAoMSkp
CkBAIC00MywxMyArNTQsMTYgQEAgY2xhc3MgUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYu
dGVzdHNfcnVuID0gMAogICAgICAgICBzZWxmLmVycm9ycyA9IFtdCiAgICAgICAgIHNlbGYuZmFp
bHVyZXMgPSBbXQotICAgICAgICBzZWxmLndvcmtlcl9mYWN0b3J5ID0gbGFtYmRhIGNhbGxlcjog
X1dvcmtlcihjYWxsZXIsIHNlbGYubG9hZGVyKQorICAgICAgICBzZWxmLl9zdGF0ZWZ1bF93b3Jr
ZXJfZmFjdG9yeSA9IGxhbWJkYSBjYWxsZXI6IF9Xb3JrZXIoY2FsbGVyLCBzZWxmLmxvYWRlcikK
IAotICAgIGRlZiBydW4oc2VsZiwgdGVzdF9uYW1lcywgbnVtX3dvcmtlcnMpOgorICAgIGRlZiBy
dW4oc2VsZiwgdGVzdF9uYW1lcywgbnVtX3dvcmtlcnMsIHVzZV9zdGF0ZWxlc3NfcHJvY2Vzcz1G
YWxzZSk6CiAgICAgICAgIGlmIG5vdCB0ZXN0X25hbWVzOgogICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIHdvcmtlcl9mYWN0b3J5X3RvX3VzZSA9IHNlbGYuX3N0YXRlZnVsX3dvcmtlcl9mYWN0
b3J5CisgICAgICAgIGlmIHVzZV9zdGF0ZWxlc3NfcHJvY2VzczoKKyAgICAgICAgICAgIHdvcmtl
cl9mYWN0b3J5X3RvX3VzZSA9IGxhbWJkYSBjYWxsZXI6IF9TdGF0ZWxlc3NXb3JrZXIoY2FsbGVy
LCBzZWxmLmxvYWRlcikKICAgICAgICAgbnVtX3dvcmtlcnMgPSBtaW4obnVtX3dvcmtlcnMsIGxl
bih0ZXN0X25hbWVzKSkKLSAgICAgICAgd2l0aCBtZXNzYWdlX3Bvb2wuZ2V0KHNlbGYsIHNlbGYu
d29ya2VyX2ZhY3RvcnksIG51bV93b3JrZXJzKSBhcyBwb29sOgorICAgICAgICB3aXRoIG1lc3Nh
Z2VfcG9vbC5nZXQoc2VsZiwgd29ya2VyX2ZhY3RvcnlfdG9fdXNlLCBudW1fd29ya2VycykgYXMg
cG9vbDoKICAgICAgICAgICAgIHBvb2wucnVuKCgndGVzdCcsIHRlc3RfbmFtZSkgZm9yIHRlc3Rf
bmFtZSBpbiB0ZXN0X25hbWVzKQogCiAgICAgZGVmIGhhbmRsZShzZWxmLCBtZXNzYWdlX25hbWUs
IHNvdXJjZSwgdGVzdF9uYW1lPU5vbmUsIGRlbGF5PU5vbmUsIGZhaWx1cmVzPU5vbmUsIGVycm9y
cz1Ob25lKToKQEAgLTgzLDMgKzk3LDQxIEBAIGNsYXNzIF9Xb3JrZXIob2JqZWN0KToKICAgICAg
ICAgc2VsZi5fbG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKHRlc3RfbmFtZSwgTm9uZSkucnVuKHJl
c3VsdCkKICAgICAgICAgc2VsZi5fY2FsbGVyLnBvc3QoJ2ZpbmlzaGVkX3Rlc3QnLCB0ZXN0X25h
bWUsIHRpbWUudGltZSgpIC0gc3RhcnQsCiAgICAgICAgICAgICBbZmFpbHVyZVsxXSBmb3IgZmFp
bHVyZSBpbiByZXN1bHQuZmFpbHVyZXNdLCBbZXJyb3JbMV0gZm9yIGVycm9yIGluIHJlc3VsdC5l
cnJvcnNdKQorCisKK2NsYXNzIF9TdGF0ZWxlc3NXb3JrZXIob2JqZWN0KToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgY2FsbGVyLCBsb2FkZXIpOgorICAgICAgICBzZWxmLl9jYWxsZXIgPSBjYWxs
ZXIKKyAgICAgICAgc2VsZi5fbG9hZGVyID0gbG9hZGVyCisKKyAgICBkZWYgaGFuZGxlKHNlbGYs
IG1lc3NhZ2VfbmFtZSwgc291cmNlLCB0ZXN0X25hbWUpOgorICAgICAgICBhc3NlcnQgbWVzc2Fn
ZV9uYW1lID09ICd0ZXN0JworCisgICAgICAgICMgV2Ugd2lsbCBuZWVkIHRvIHJld29yayB0aGlz
IGlmIGEgdGVzdF9uYW1lIHJlc3VsdHMgaW4gbXVsdGlwbGUgdGVzdHMuCisgICAgICAgIGFzc2Vy
dCBzeXMuZXhlY3V0YWJsZQorICAgICAgICBzdGF0ZWxlc3NfcHJvY2Vzc19ydW5uZXIgPSBvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpLCAnc3Rh
dGVsZXNzX3Byb2Nlc3NfcnVubmVyLnB5JykKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJs
ZSwgc3RhdGVsZXNzX3Byb2Nlc3NfcnVubmVyLCB0ZXN0X25hbWVdCisgICAgICAgIGNoaWxkX3By
b2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwgZW52PXsnUFlUSE9OUEFUSCc6ICc6Jy5qb2luKHN5cy5wYXRo
KX0sIGNsb3NlX2Zkcz1UcnVlKQorICAgICAgICB3cml0ZV9waWNrbGVkX3Rlc3RfcmVzdWx0X21v
ZGlmeWluZ190ZXN0X3Jlc3VsdCh1bml0dGVzdC5UZXN0UmVzdWx0KCksIGNoaWxkX3Byb2Nlc3Mu
c3RkaW4pCisKKyAgICAgICAgdGltZV9lbGFwc2VkID0gMAorICAgICAgICB3aGlsZSBUcnVlOgor
ICAgICAgICAgICAgb3V0cHV0X2xpbmUgPSBjaGlsZF9wcm9jZXNzLnN0ZG91dC5yZWFkbGluZSgp
LnJzdHJpcCgpCisgICAgICAgICAgICBpZiBvdXRwdXRfbGluZSA9PSAnIyMgU3RhcnQgIyMnOgor
ICAgICAgICAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICAgICBzZWxm
Ll9jYWxsZXIucG9zdCgnc3RhcnRlZF90ZXN0JywgdGVzdF9uYW1lKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlCisgICAgICAgICAgICBpZiBvdXRwdXRfbGluZSA9PSAnJyBhbmQgY2hpbGRfcHJv
Y2Vzcy5wb2xsKCkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGlmIG91dHB1dF9saW5lID09ICcjIyBFbmQgIyMnOgorICAgICAgICAgICAgICAgIHRpbWVf
ZWxhcHNlZCA9IHRpbWUudGltZSgpIC0gc3RhcnQKKyAgICAgICAgICAgICAgICBicmVhaworCisg
ICAgICAgIHJlc3VsdCA9IHBpY2tsZS5sb2FkKGNoaWxkX3Byb2Nlc3Muc3Rkb3V0KQorICAgICAg
ICBleGl0X2NvZGUgPSBjaGlsZF9wcm9jZXNzLndhaXQoKQorCisgICAgICAgIGlmIGV4aXRfY29k
ZToKKyAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigne30gZXhpdGVkIHdpdGggbm9uLXpl
cm8gZXhpdCBjb2RlIHt9Jy5mb3JtYXQoJyAnLmpvaW4oYXJncyksIHRlc3RfbmFtZSwgZXhpdF9j
b2RlKSkKKworICAgICAgICBzZWxmLl9jYWxsZXIucG9zdCgnZmluaXNoZWRfdGVzdCcsIHRlc3Rf
bmFtZSwgdGltZV9lbGFwc2VkLAorICAgICAgICAgICAgW2ZhaWx1cmVbMV0gZm9yIGZhaWx1cmUg
aW4gcmVzdWx0LmZhaWx1cmVzXSwgW2Vycm9yWzFdIGZvciBlcnJvciBpbiByZXN1bHQuZXJyb3Jz
XSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9u
cy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwYmM1ZDc3NGZmMzEwNDAzMGJlYjNjZGZl
MjBmZDE5NTY3MjA3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsOTAgQEAKKy8vIENv
cHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICIuLi8uLi8uLi8u
Li9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25maWciCisKK1VT
RV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFUSU9OKSk7CitV
U0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0VfSU5URVJOQUxfU0RLX0RlYnVn
ID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxfU0RLX1JlbGVhc2UgPSAkKEhB
VkVfSU5URVJOQUxfU0RLKTsKKworQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251Kysx
NDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJ
T04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19X
QVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsK
K0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTlRfQ09OVkVS
U0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0ggPSBZRVM7CitE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitHQ0NfQ19MQU5HVUFH
RV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZGVmYXVsdDsKK0dD
Q19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsKK0dDQ19FTkFCTEVfQ1BQX1JUVEkgPSBZRVM7
CitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NF
UEFSQVRJT04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJB
VEVfREVCVUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfT0JKQ19DQUxMX0NYWF9DRFRPUlMgPSBZ
RVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChpbmhlcml0ZWQpOworR0NDX1NUUklD
VF9BTElBU0lORyA9IFlFUzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVB
VF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTl8gPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IE5POwor
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0gWUVTOworR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOworR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CitHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVTOworR0NDX1dBUk5fU0lHTl9D
T01QQVJFID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKK0dDQ19X
QVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04g
PSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBOTzsKK1dBUk5JTkdfQ0ZMQUdTID0g
LVdjYXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRyYS10b2tlbnMgLVdmb3JtYXQ9MiAt
V2luaXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21pc3Npbmctbm9yZXR1cm4g
LVdwYWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50LWRlY2xzIC1XdW5kZWYgLVd3cml0
ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XZ2xvYmFsLWNvbnN0cnVjdG9ycyAt
V3RhdXRvbG9naWNhbC1jb21wYXJlIC1XaW1wbGljaXQtZmFsbHRocm91Z2g7CisKK0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2luY2x1ZGU7CisK
K1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChUQVJHRVRfTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUiQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUOnN1ZmZpeDppZGVudGlmaWVyKSk7CitU
QVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMCA9IDEwMTAwMDsKK1RBUkdFVF9NQUNfT1Nf
WF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFK
T1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMyA9IDEwMTMw
MDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZFTCwgU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcgdmFyeSBiZXR3ZWVuIHRoZSBk
ZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2YWx1ZXMgZm9yIGVh
Y2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlvbiBpbiB0aGUg
WGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgorREVCVUdfREVGSU5FU19kZWJ1
ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdfREVGSU5FUyA9ICQo
REVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1JWkFUSU9OX0xF
VkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CitHQ0Nf
T1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbCA9IDM7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX2Rl
YnVnID0gMDsKKworU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKKworT1RIRVJfQ0ZMQUdTID0g
JChBU0FOX09USEVSX0NGTEFHUyk7CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQoQVNBTl9PVEhF
Ul9DUExVU1BMVVNGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVSX0xERkxBR1Mp
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVhZGU5YzFjYWUz
NzlhM2VlMTkyMDhiNzk3ZGZjYzExMmE3NTc0NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcK
QEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBh
cmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworI2luY2x1ZGUgIkJhc2UueGNjb25maWciCisKK09OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisK
K1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJTSU9OX01BSk9S
KTsKKworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVRfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SKSk7CitN
QUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDEwLjEwOworTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRf
bWFjb3N4XzEwMTMwMCA9IDEwLjEzOworCitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNU
SU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOworCitTREtST09U
ID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOworU0RLUk9PVF8gPSBtYWNvc3g7CitT
REtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnIGIv
VG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0
ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NjAwMGQxYWZkZDdkZDFjZTVmZmMxYjJkMWZlMTA1
MjNkNWUzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9D
b25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAgKzEsMjQgQEAK
Ky8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
Ly8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RVQ1RfTkFNRSA9
ICQoVEFSR0VUX05BTUUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3OWVkZTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKQEAgLTAsMCArMSwy
IEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitpbmNsdWRlIC4uLy4uLy4uL01ha2Vm
aWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJX
ZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNGQzNDc0OGM3NWVjZjUxNzQ3Mzk3ZTFlNWE1YzcwYjg5MGM3MDUwMAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwyMDIgQEAKKy8vICEkKlVURjgq
JCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZl
cnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMw
NUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFM0Y0NDI2MjA1QzZBMDEwMDcxOTVCMyAvKiBKYXZh
U2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RjFBRjAyNzZD
MDAzRkM4RDEgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vz
ci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9
OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTExQUZDNEQ5QzAwOEMzMzM4IC8q
IEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRU
ZXN0ZXIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZzsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2UueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEFCM0ExMUFGMDI3NkMwMDNGQzhE
MSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYWluLmNwcDsgc291cmNlVHJlZSA9IFNP
VVJDRV9ST09UOyB9OworCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNjcmlwdENv
cmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcms7
IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0phdmFTY3JpcHRDb3JlLmZyYW1ld29y
azsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
N0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCQlDRTNGNDQyNjIwNUM2QTAxMDA3MTk1QjMgLyogSmF2YVNjcmlw
dENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTdD
MjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTExQUZDNEQ5QzAwOEMzMzM4
IC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERl
YnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyog
bGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJh
dGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjM5ODFBRjAy
NzZDMDAzRkM4RDEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCQlDRTNG
NDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlDRTNGNDQyNDIwNUM2
NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCQk3QzRBQjNBMjFBRjAyNzZD
MDAzRkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkJQ0UzRjQ0MjIyMDVDNjY5QzAwNzE5NUIzIC8q
IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNEFCM0ExMUFG
MDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJCW5hbWUgPSBQ
cm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNFM0Y0NDI0MjA1
QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFp
bi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJh
bWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkp
OworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0
ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLzsKKwkJCWJ1aWxk
UGhhc2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2VzICovLAor
CQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovLAorCQkJCTdDNEFC
MzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxsZGJX
ZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9k
dWN0UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0
ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwor
CQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBv
YmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJ
CQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQljb21wYXRpYmlsaXR5
VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOwor
CQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJ
ZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYwMjc2QzAwM0ZDOEQxOworCQkJ
cHJvZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICov
OworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJn
ZXRzID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVy
ICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RDFBRjAyNzZDMDAz
RkM4RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTdDQjY4
NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBC
WFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9u
UmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2Nv
bmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVCVUdfREVGSU5FUyA9ICIkKERF
QlVHX0RFRklORVNfZGVidWcpIjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gIiQoR0ND
X09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
N0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTdD
NEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MjFB
RkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBQTFB
RjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlD
MDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENv
bmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KKwkJN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk3
QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIzQTcxQUYwMjc2
QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25J
c1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdD
NEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNBQTFBRjAyNzZD
MDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9
OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVj
dCA9IDdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWE0NjRlNDhjYzE5YjI2
MWZiYjc1ZTJmN2RmYTg0YzNiNGE3OTg5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRlcm4gdm9pZCBicmVha0ZvclRl
c3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92
aWRlcnMoKSB7IHJldHVybjsgfQorCisvLyBGcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvV1RGU3Ry
aW5nVXRpbGl0aWVzLmgKK3RlbXBsYXRlPHNpemVfdCBsZW5ndGg+CitzdGF0aWMgU3RyaW5nIHV0
ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmc3RyaW5nKVtsZW5ndGhdKQoreworICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGggLSAx
KTsKKyAgICBmb3IgKGF1dG8gYyA6IHN0cmluZykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3Rh
dGljX2Nhc3Q8VUNoYXI+KGMpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQor
CitzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCit7CisgICAgU3RyaW5nIGFOdWxs
U3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhTnVsbFN0cmluZ0ltcGwgPSBhTnVsbFN0
cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW5FbXB0eVN0cmluZyB7ICIiIH07CisgICAgU3Ry
aW5nSW1wbCogYW5FbXB0eVN0cmluZ0ltcGwgPSBhbkVtcHR5U3RyaW5nLmltcGwoKTsKKworICAg
IFN0cmluZyBhbjhCaXRTdHJpbmcgeyAicsOpc3Vtw6kiIH07CisgICAgU3RyaW5nSW1wbCogYW44
Qml0U3RyaW5nSW1wbCA9IGFuOEJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYTE2Qml0
U3RyaW5nID0gdXRmMTZTdHJpbmcodSJcdTE2ODBDYXBwdWNjaW5vXHUxNjgwIik7CisgICAgU3Ry
aW5nSW1wbCogYTE2Qml0U3RyaW5nSW1wbCA9IGExNkJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBi
cmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit9CisKK2ludCBtYWluKGludCBhcmdj
LCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgdGVzdFN1bW1hcnlQcm92aWRlcnMoKTsKKyAg
ICBzdGQ6OmNlcnIgPDwgIlRoaXMgZXhlY3V0YWJsZSBkb2VzIG5vdGhpbmcgYW5kIGlzIG9ubHkg
bWVhbnQgZm9yIGRlYnVnZ2luZyBsbGRiX3dlYmtpdC5weS4iIDw8IHN0ZDo6ZW5kbDsKKyAgICBy
ZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3Qu
cHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdhNTYy
OGQ0NTA4YTRkZDE4OTc4NWUyOTUzYmRhOGI1YmRiNjdhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTExIEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
IyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsbGRiCitpbXBvcnQgbGxkYl93
ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdl
YmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKKworCitjbGFzcyBUZXN0U3VtbWFyeVBy
b3ZpZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNl
dFVwQ2xhc3MoY2xzKToKKyAgICAgICAgTExEQl9XRUJLSVRfVEVTVEVSX05BTUUgPSAnbGxkYldl
YktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSA9ICdi
cmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJworCisgICAgICAgIGNscy5zYkRlYnVnZ2Vy
ID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAgICAgIGNscy5zYkRlYnVnZ2VyLlNldEFz
eW5jKEZhbHNlKQorCisgICAgICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkKKyAgICAgICAgY29uZmln
ID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIGNscy5s
bGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhvc3QuZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5i
dWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FKQorCisgICAg
ICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVnZ2VyLkNyZWF0ZVRhcmdldFdpdGhGaWxlQW5k
QXJjaChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSwgbGxkYi5MTERCX0FSQ0hf
REVGQVVMVCkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAorICAgICAgICBjbHMuc2JUYXJn
ZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1F
LCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVuYW1lKCkpCisKKyAgICAgICAg
YXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAgICAgY2xzLnNiUHJvY2VzcyA9
IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwgb3MuZ2V0Y3dkKCkpCisgICAg
ICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzLkdl
dFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAgICAgY2xzLnNiVGhyZWFkID0g
Y2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAgICAgIGFzc2VydCBjbHMuc2JU
aHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0aW9uIHdpdGggbmFtZSBCUkVB
S19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRoZSBmcmFtZSBvZiB0aGUgY2Fs
bGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSBiZWNhdXNl
IGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlhYmxlcyB3ZSB3YW50IHRvIHRl
c3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFkLkdldEZyYW1lQXRJbmRleCgx
KQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5zYlByb2Nlc3MuS2lsbCgpCisgICAg
ICAgIGNscy5zYlRhcmdldC5EZWxldGVBbGxCcmVha3BvaW50cygpCisKKyAgICAjIFRoZSBMTERC
IFB5dGhvbiBtb2R1bGUgZG9lcyBub3Qgd29yayB3aXRoIFB5dGhvbiBtdWx0aXByb2Nlc3Npbmcg
YW5kIGNhdXNlcyBlcnJvcnMgb2YgdGhlIGZvcm06CisgICAgIyAgICAgb2JqY1s3Njc5NF06ICtb
X19NRFF1ZXJ5IGluaXRpYWxpemVdIG1heSBoYXZlIGJlZW4gaW4gcHJvZ3Jlc3MgaW4gYW5vdGhl
ciB0aHJlYWQgd2hlbiBmb3JrKCkgd2FzIGNhbGxlZC4KKyAgICAjICAgICAgICAgICAgICAgICAg
V2UgY2Fubm90IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBpbiB0aGUgZm9yaygpIGNoaWxk
IHByb2Nlc3MuIENyYXNoaW5nIGluc3RlYWQuCisgICAgIyBTbywgd2UgcnVuIHRoZSBmb2xsb3dp
bmcgdGVzdHMgc2VyaWFsbHkuCisKKyAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxfU3VtbWFyeVBy
b3ZpZGVyIHRlc3QgY2FzZXMKKworICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1t
YXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5zYkZy
YW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0g
JycgfSIpCisKKyAgICBkZWYgc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZTdHJpbmdJbXBsX1N1
bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRi
X3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZh
cmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQor
CisgICAgZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJv
dmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdh
bjhCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnks
ICJ7IGxlbmd0aCA9IDgsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5JyB9
IikKKworICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFy
eVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Vi
a2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2ExNkJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vt
bWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9ICdcXHUxNjgwQ2Fw
cHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCisKKyAgICAjIE1BUks6IFdURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RG
U3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFy
eSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5zYkZyYW1lLkZp
bmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzdGF0
ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5n
KHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQ
cm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJyksIHt9KQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRz
ID0gJycgfSIpCisKKyAgICBkZWYgc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93
ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxl
KCdhbjhCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
InsgbGVuZ3RoID0gOCwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQorCisgICAgZGVm
IHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9z
dHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7
fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGNv
bnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>340913</attachid>
            <date>2018-05-21 15:58:27 -0700</date>
            <delta_ts>2018-05-24 11:06:40 -0700</delta_ts>
            <desc>Patch and unit tests</desc>
            <filename>bug-183744-20180521155827.patch</filename>
            <type>text/plain</type>
            <size>49644</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTkxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjU2OWYzYjFhMmFkNjVhNjFkZDVlMzg4ZTk2ZjA5ZTA1
YjhhZGIwMi4uZjUzNDhiN2ZlNjFhNGRhZTNkYjlhNzAxM2M4OTUwOGQ0ZDg2OTJmMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk4
IEBACiAyMDE4LTA1LTIxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAorICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gRm9yIG5vdywg
d2UgYnVpbGQgYW5kIHJ1biB0aGUgdGhlc2UgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAg
KiBNYWtlZmlsZTogQnVpbGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBv
biBNYWMuIEFsdGhvdWdoIHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcg
dGhlIHRvb2wgZm9yIGVpdGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVu
bmluZyB0aGUgdGVzdHMKKyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxk
YldlYktpdFRlc3Rlci4gV2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAg
ICAgICAgY29uZmlndXJhdGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0
ZXIgZm9yIERlYnVnLgorICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJh
Y3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisg
ICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVt
aG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQg
YW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1v
ZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBv
ZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24K
KyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNl
bGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMg
aW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZv
a2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25p
ZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAor
ICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAg
ICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVy
X2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heWJlX2FkZF9sbGRiX3dlYmtpdF90ZXN0cyk6IEFkZGVkLgorICAgICAg
ICAobWFpbik6IENhbGwgbWF5YmVfYWRkX2xsZGJfd2Via2l0X3Rlc3RzKCkgdG8gY29uZGl0aW9u
YWxseSBhZGQgdGhlIGxsZGJfd2Via2l0IHRlc3RzCisgICAgICAgIHRvIHRoZSB0ZXN0IHNlYXJj
aCBwYXRoLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBVcGRhdGUgY29kZSBhcyBuZWVk
ZWQgZm9yIGNoYW5nZSBiZWxvdy4KKyAgICAgICAgKFRlc3Rlci5fdGVzdF9uYW1lcyk6IE1vZGlm
aWVkIHRvIGxvb2sgZm9yIGEgbmV3IHRlc3QgbWV0aG9kIHByZWZpeCwgJ3N0YXRlbGVzc19wcm9j
ZXNzX3Rlc3RfJworICAgICAgICBhbmQgY29sbGVjdCBzdWNoIG1ldGhvZHMuIE1ldGhvZHMgd2l0
aCB0aGlzIG5hbWUgcHJlZml4IHdpbGwgcnVuIGluIGEgbmV3IFB5dGhvbiBwcm9jZXNzIChpLmUu
CisgICAgICAgIG5vdCBhIGZvcmsoKSBvZiB0ZXN0LXdlYmtpdHB5KS4gCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RTdHVi
cy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X2VtcHR5KToKKyAgICAgICAgKFRlc3RTdHVicyk6Cisg
ICAgICAgIChUZXN0U3R1YnMuc3RhdGVsZXNzX3Byb2Nlc3NfaW50ZWdyYXRpb25fdGVzdF9lbXB0
eSk6CisgICAgICAgIChUZXN0ZXJUZXN0LnRlc3RfaW5kaXZpZHVhbF9uYW1lc19hcmVfbm90X3J1
bl90d2ljZSk6CisgICAgICAgIChUZXN0ZXJUZXN0LnRlc3RfaW50ZWdyYXRpb25fdGVzdHNfYXJl
X25vdF9mb3VuZF9ieV9kZWZhdWx0KToKKyAgICAgICAgKFRlc3RlclRlc3QudGVzdF9pbnRlZ3Jh
dGlvbl90ZXN0c19hcmVfZm91bmQpOgorICAgICAgICBBZGQgdW5pdCB0ZXN0cyBmb3IgdGVzdCBt
ZXRob2RzIHRoYXQgYXJlIHByZWZpeGVkIHdpdGggJ3N0YXRlbGVzc19wcm9jZXNzX3Rlc3RfJy4K
KworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXIucHk6CisgICAgICAgICh3
cml0ZV9waWNrbGVkX3Rlc3RfcmVzdWx0X21vZGlmeWluZ190ZXN0X3Jlc3VsdCk6IENvbnZlbmll
bmNlIGZ1bmN0aW9uIHRoYXQgbnVsbGlmaWVzIGZpbGUtbGlrZQorICAgICAgICBhdHRyaWJ1dGVz
IG9mIHRoZSBzcGVjaWZpZWQgdW5pdHRlc3QuVGVzdFJlc3VsdCBvYmplY3QgYW5kIHBpY2tsZXMg
aXQuIFRoZSBudWxsaWZpY2F0aW9uIGlzIG5lZWRlZAorICAgICAgICBiZWNhdXNlIHdlIGNhbm5v
dCBwaWNrbGUgZmlsZS1saWtlIG9iamVjdHMuCisgICAgICAgIChSdW5uZXIuX19pbml0X18pOiBT
dWJzdGl0dXRlICdzZWxmLl9zdGF0ZWZ1bF93b3JrZXJfZmFjdG9yeScgZm9yICdzZWxmLndvcmtl
cl9mYWN0b3J5JyB0byBiZXR0ZXIKKyAgICAgICAgZGVzY3JpYmUgdGhhdCB0aGlzIGZ1bmN0aW9u
IHJldHVybnMgYSBuZXcgc3RhdGVmdWwgV29ya2VyIGluc3RhbmNlIChpLmUuIGEgd29ya2VyIHRo
YXQgZXhlY3V0ZXMgaW4KKyAgICAgICAgYSBmb3JrKCkgb2YgdGVzdC13ZWJraXRweSkuCisgICAg
ICAgIChSdW5uZXIucnVuKTogTW9kaWZpZWQgdG8gdGFrZSBhbiBvcHRpb25hbCBwYXJhbWV0ZXIs
IHVzZV9zdGF0ZWxlc3NfcHJvY2VzcywgYXMgdG8gd2hldGhlciB0byB1c2UKKyAgICAgICAgYSBu
ZXcgUHl0aG9uIHByb2Nlc3MgdG8gZXhlY3V0ZSB0aGUgdGVzdC4KKyAgICAgICAgKF9TdGF0ZWxl
c3NXb3JrZXIpOiBBZGRlZC4KKyAgICAgICAgKF9TdGF0ZWxlc3NXb3JrZXIuX19pbml0X18pOiBB
ZGRlZC4KKyAgICAgICAgKF9TdGF0ZWxlc3NXb3JrZXIuaGFuZGxlKTogTGF1bmNoZXMgYSBuZXcg
UHl0aG9uIHByb2Nlc3MgdGhhdCBleGVjdXRlcyBzY3JpcHQgc3RhdGVsZXNzX3Byb2Nlc3NfcnVu
bmVyLnB5LgorICAgICAgICBUaGlzIG5ldyBwcm9jZXNzIGV4cGVjdHMgdGhlIG5hbWUgb2YgdGhl
IHRlc3QgbWV0aG9kIHRvIHJ1biB0byBiZSBwYXNzZWQgdG8gaXQgYXMgaXRzIG9ubHkgY29tbWFu
ZC1saW5lCisgICAgICAgIGFyZ3VtZW50IGFuZCByZWFkcyB0aGUgcGlja2xlZCB1bml0dGVzdC5U
ZXN0UmVzdWx0KCkgb2JqZWN0IHBhc3NlZCB0byBpdCB2aWEgc3RhbmRhcmQgaW5wdXQuIEl0IHNp
Z25hbHMKKyAgICAgICAgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHRlc3QgdmlhIGhhcmRjb2Rl
ZCAnIyMgU3RhcnQgIyMnIGFuZCAnIyMgRW5kICMjJyBzdHJpbmdzIHdyaXR0ZW4gdG8gc3RhbmRh
cmQgb3V0cHV0LgorICAgICAgICBUaGVuIGl0IHBhc3NlcyBiYWNrIHRoZSB1bml0dGVzdC5UZXN0
UmVzdWx0KCkgaXQgb3JpZ2luYWxseSByZWNlaXZlZCB2aWEgc3RhbmRhcmQgaW5wdXQgdG8gaXRz
IHBhcmVudCBieQorICAgICAgICBwaWNrbGluZyBpdCBhbmQgd3JpdGluZyBpdCB0byBzdGFuZGFy
ZCBvdXRwdXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90ZXN0L3N0YXRlbGVzc19wcm9j
ZXNzX3J1bm5lci5weTogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZzogQWRkZWQuCisgICAg
ICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54
Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3Vy
YXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIv
bGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZTogQWRkZWQuCisgICAgICAgICogbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRk
ZWQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwOiBBZGRlZC4KKyAg
ICAgICAgKGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAodXRmMTZT
dHJpbmcpOgorICAgICAgICAodGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAg
IChUZXN0U3VtbWFyeVByb3ZpZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5z
ZXRVcENsYXNzKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnRlYXJEb3duQ2xhc3Mp
OgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0
U3VtbWFyeVByb3ZpZGVycy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0ltcGxfU3Vt
bWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVy
cy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhi
aXRfc3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnN0YXRlbGVzc19wcm9j
ZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKyAg
ICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVBy
b3ZpZGVycy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJf
ZW1wdHlfc3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnN0YXRlbGVzc19w
cm9jZXNzX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyk6CisgICAg
ICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKworCisyMDE4LTA1LTIxICBEYW5pZWwg
QmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKwogICAgICAgICB0ZXN0LXdlYmtpdHB5IG1lc3Nh
Z2VzIGxvZ2dlZCB1c2luZyBfX21haW5fXyBsb2dnZXIgYXJlIG5vdCBkaXNwbGF5ZWQKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTgyMwogCmRpZmYg
LS1naXQgYS9Ub29scy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1
NzNlNWZlODkxMDM0NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNk
ZjdiODFmNzU4MGY0NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01h
a2VmaWxlCkBAIC0yLDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVz
dFJ1bm5lciBNaW5pQnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAo
LCQoU0RLUk9PVCkpCiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0J
CU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJU
cmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVz
dFdlYktpdEFQSSBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5k
c3RyaW5nIGlwaG9uZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3Nl
cgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dCBiL1Rvb2xzL1Nj
cmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKaW5kZXggZDQxODY0NDU1ODM2ZTNiMGUyYjA2NTQ2Yjli
YWI2MjY2ODU4NmVjNS4uNmY2ZWJhNDJkZTgxNzUzNjJiMmMyMTk3NzkxNmQ4NzRiNTUwNGNkNSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAorKysgYi9Ub29scy9T
Y3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CkBAIC0zMSw2ICszMSw5IEBAIGltcG9ydCBvcwogaW1w
b3J0IHN1YnByb2Nlc3MKIGZyb20gc2V0cyBpbXBvcnQgU2V0CiAKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0CitzeXMucGF0aC5hcHBlbmQo
U3lzdGVtSG9zdCgpLnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkpCitpbXBvcnQgbGxk
YgogCiBmcmFtZXdvcmsgPSAiV2ViQ29yZSIKIGJ1aWxkX2RpcmVjdG9yeSA9ICIiCkBAIC00MSwy
MSArNDQsNiBAQCBkZWYgd2Via2l0X2J1aWxkX2RpcigpOgogICAgIHNjcmlwdHBhdGggPSBvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCiAgICAgcmV0dXJuIHN1YnBy
b2Nlc3MuY2hlY2tfb3V0cHV0KFtvcy5wYXRoLmpvaW4oc2NyaXB0cGF0aCwgIndlYmtpdC1idWls
ZC1kaXJlY3RvcnkiKSwgIi0tdG9wLWxldmVsIl0pLnN0cmlwKCkKIAotZGVmIGRldmVsb3Blcl9k
aXIoKToKLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJ4Y29kZS1zZWxlY3Qi
LCAiLS1wcmludC1wYXRoIl0pCi0KLWRlZiBpbXBvcnRfbGxkYigpOgotICAgIHhjb2RlX2NvbnRl
bnRzX3BhdGggPSBvcy5wYXRoLnNwbGl0KGRldmVsb3Blcl9kaXIoKSlbMF0KLSAgICBsbGRiX2Zy
YW1ld29ya19wYXRoID0gb3MucGF0aC5qb2luKHhjb2RlX2NvbnRlbnRzX3BhdGgsICJTaGFyZWRG
cmFtZXdvcmtzIiwgIkxMREIuZnJhbWV3b3JrIiwgIlJlc291cmNlcyIsICJQeXRob24iKQotICAg
IHN5cy5wYXRoLmFwcGVuZChsbGRiX2ZyYW1ld29ya19wYXRoKQotCi0gICAgTExEQl9NT0RVTEVf
TkFNRSA9ICJsbGRiIgotICAgIHRyeToKLSAgICAgICAgZ2xvYmFscygpW0xMREJfTU9EVUxFX05B
TUVdID0gX19pbXBvcnRfXyhMTERCX01PRFVMRV9OQU1FKQotICAgIGV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBpbXBvcnQge30gZnJvbSB7fSIuZm9ybWF0KExM
REJfTU9EVUxFX05BTUUsIGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0gICAgICAgIHN5cy5leGl0KDEp
Ci0KIGRlZiB2ZXJpZnlfdHlwZSh0YXJnZXQsIHR5cGUpOgogICAgIHR5cGVuYW1lID0gdHlwZS5H
ZXROYW1lKCkKICAgICBzZWVuT2Zmc2V0ID0gU2V0KCkKQEAgLTE5Niw3ICsxODQsNiBAQCBkZWYg
bWFpbigpOgogICAgICAgICBidWlsZF9kaXIgPSBhcmdzLmJ1aWxkX2RpcmVjdG9yeQogCiAgICAg
dGFyZ2V0X3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZGlyLCBhcmdzLmNvbmZpZywgYXJncy5m
cmFtZXdvcmsgKyAiLmZyYW1ld29yayIsIGFyZ3MuZnJhbWV3b3JrKTsKLSAgICBpbXBvcnRfbGxk
YigpCiAgICAgZHVtcF9jbGFzcyh0YXJnZXRfcGF0aCwgYXJncy5jbGFzc25hbWUsIGFyZ3MuYXJj
aCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkKaW5kZXggYTE1MzQyMjAxZDgzMzQx
NDczMWViZDBmNzZmNzE3OWE2ZjBiZDZlMy4uNDNkNmQ3OWZjNDcyMzk0MDAxZmM5NGY5NDJiMTk5
YTRhOWNkZjhiMSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3N5c3RlbWhvc3QucHkKQEAgLTQ3LDMgKzQ3LDkgQEAgY2xhc3MgU3lzdGVtSG9zdChvYmpl
Y3QpOgogCiAgICAgZGVmIHN5bWJvbGljYXRlX2NyYXNoX2xvZ19pZl9uZWVkZWQoc2VsZiwgcGF0
aCk6CiAgICAgICAgIHJldHVybiBzZWxmLmZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUocGF0aCkK
KworICAgIGRlZiBwYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeShzZWxmKToKKyAgICAgICAg
aWYgbm90IHNlbGYucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgICAgICByZXR1cm4gJycKKyAg
ICAgICAgeGNvZGVfZGV2ZWxvcGVyX2RpcmVjdG9yeSA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFsneGNvZGUtc2VsZWN0JywgJy0tcHJpbnQtcGF0aCddLCByZXR1cm5fc3RkZXJyPUZhbHNl
KS5yc3RyaXAoKQorICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLmFic3BhdGgoc2VsZi5m
aWxlc3lzdGVtLmpvaW4oeGNvZGVfZGV2ZWxvcGVyX2RpcmVjdG9yeSwgJy4uJywgJ1NoYXJlZEZy
YW1ld29ya3MnLCAnTExEQi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCAnQScsICdSZXNvdXJjZXMn
LCAnUHl0aG9uJykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFp
bi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CmluZGV4IDVmYWNhYTU0
NmRlZTk2NThiYWM5ODQ4ZWEwMmUxZmM0ODJhMGYyZWYuLjgwNmZmYmI5ZGE0ZGY3MjAxMjlmMzYy
ZmRiYzFjZjQ5YzMwN2Y5MTkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVz
dC9tYWluLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5CkBAIC0x
LDUgKzEsNiBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlLCBJbmMuCiAjIENvcHlyaWdo
dCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCisjIENvcHly
aWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTM4LDYgKzM5LDggQEAgaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgY29uZmlndXJlX2xvZ2dp
bmcKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lz
dGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVt
SG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9tIHdlYmtp
dHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5wcmludGVy
IGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBSdW5uZXIs
IHVuaXRfdGVzdF9uYW1lCkBAIC00NSw2ICs0OCwyMSBAQCBmcm9tIHdlYmtpdHB5LnRlc3QucnVu
bmVyIGltcG9ydCBSdW5uZXIsIHVuaXRfdGVzdF9uYW1lCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCiAKIAorZGVmIG1heWJlX2FkZF9sbGRiX3dlYmtpdF90ZXN0cyh0ZXN0ZXIs
IHdlYmtpdF9yb290KToKKyAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgbGxkYl9weXRob25f
ZGlyZWN0b3J5ID0gaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpCisgICAgaWYg
bm90IG9zLnBhdGguaXNkaXIobGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgX2xvZy5p
bmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgTExEQiBQeXRo
b24gbW9kdWxlIGRpcmVjdG9yeSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkp
CisgICAgICAgIHJldHVybgorICAgIGJ1aWxkX2RpcmVjdG9yeSA9IENvbmZpZyhob3N0LmV4ZWN1
dGl2ZSwgaG9zdC5maWxlc3lzdGVtKS5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJykKKyAgICBsbGRi
X3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihidWlsZF9kaXJlY3Rvcnks
ICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGxkYl93ZWJr
aXRfdGVzdGVyX2V4ZWN1dGFibGUpOgorICAgICAgICBfbG9nLmluZm8oIlNraXBwaW5nIGxsZGJf
d2Via2l0IHRlc3RzOyBjb3VsZCBub3QgZmluZCAne30nLiIuZm9ybWF0KGxsZGJfd2Via2l0X3Rl
c3Rlcl9leGVjdXRhYmxlKSkKKyAgICAgICAgcmV0dXJuCisgICAgaWYgbGxkYl9weXRob25fZGly
ZWN0b3J5IG5vdCBpbiBzeXMucGF0aDoKKyAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0
aG9uX2RpcmVjdG9yeSkKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9y
b290LCAnVG9vbHMnLCAnbGxkYicpKQorCiBkZWYgbWFpbigpOgogICAgIGNvbmZpZ3VyZV9sb2dn
aW5nKGxvZ2dlcj1fbG9nKQogCkBAIC01OCw2ICs3Niw4IEBAIGRlZiBtYWluKCk6CiAgICAgaWYg
bm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdj
eWd3aW4nKToKICAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9v
dCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykKIAorICAgIG1heWJl
X2FkZF9sbGRiX3dlYmtpdF90ZXN0cyh0ZXN0ZXIsIHdlYmtpdF9yb290KQorCiAgICAgdGVzdGVy
LnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2Fy
ZSByZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFy
dHN3aXRoKCd3aW4nKToKICAgICAgICAgdGVzdGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQnLCAnd2Via2l0cHkuY29tbW9uLmNvbmZpZycsICd3ZWJraXRweS50b29sJyksICdmYWls
IGhvcnJpYmx5IG9uIHdpbjMyJywgNTQ1MjYpCkBAIC0xNjgsMTMgKzE4OCwxNCBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKIAogICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJGaW5k
aW5nIHRoZSBpbmRpdmlkdWFsIHRlc3QgbWV0aG9kcyAuLi4iKQogICAgICAgICBsb2FkZXIgPSBf
TG9hZGVyKCkKLSAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyA9IHNlbGYuX3Rl
c3RfbmFtZXMobG9hZGVyLCBuYW1lcykKKyAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90
ZXN0cywgc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzID0gc2VsZi5fdGVzdF9uYW1lcyhsb2FkZXIs
IG5hbWVzKQogCiAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIlJ1bm5pbmcgdGhl
IHRlc3RzIC4uLiIpCiAgICAgICAgIHNlbGYucHJpbnRlci5udW1fdGVzdHMgPSBsZW4ocGFyYWxs
ZWxfdGVzdHMpICsgbGVuKHNlcmlhbF90ZXN0cykKICAgICAgICAgc3RhcnQgPSB0aW1lLnRpbWUo
KQogICAgICAgICB0ZXN0X3J1bm5lciA9IFJ1bm5lcihzZWxmLnByaW50ZXIsIGxvYWRlcikKICAg
ICAgICAgdGVzdF9ydW5uZXIucnVuKHBhcmFsbGVsX3Rlc3RzLCBzZWxmLl9vcHRpb25zLmNoaWxk
X3Byb2Nlc3NlcykKKyAgICAgICAgdGVzdF9ydW5uZXIucnVuKHN0YXRlbGVzc19wYXJhbGxlbF90
ZXN0cywgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMsIHVzZV9zdGF0ZWxlc3NfcHJvY2Vz
cz1UcnVlKQogICAgICAgICB0ZXN0X3J1bm5lci5ydW4oc2VyaWFsX3Rlc3RzLCAxKQogCiAgICAg
ICAgIHNlbGYucHJpbnRlci5wcmludF9yZXN1bHQodGltZS50aW1lKCkgLSBzdGFydCkKQEAgLTIx
MSw5ICsyMzIsMTEgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgZGVmIF90ZXN0X25hbWVz
KHNlbGYsIGxvYWRlciwgbmFtZXMpOgogICAgICAgICBwYXJhbGxlbF90ZXN0X21ldGhvZF9wcmVm
aXhlcyA9IFsndGVzdF8nXQogICAgICAgICBzZXJpYWxfdGVzdF9tZXRob2RfcHJlZml4ZXMgPSBb
J3NlcmlhbF90ZXN0XyddCisgICAgICAgIHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0X21ldGhvZF9w
cmVmaXhlcyA9IFsnc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF8nXQogICAgICAgICBpZiBzZWxmLl9v
cHRpb25zLmludGVncmF0aW9uX3Rlc3RzOgogICAgICAgICAgICAgcGFyYWxsZWxfdGVzdF9tZXRo
b2RfcHJlZml4ZXMuYXBwZW5kKCdpbnRlZ3JhdGlvbl90ZXN0XycpCiAgICAgICAgICAgICBzZXJp
YWxfdGVzdF9tZXRob2RfcHJlZml4ZXMuYXBwZW5kKCdzZXJpYWxfaW50ZWdyYXRpb25fdGVzdF8n
KQorICAgICAgICAgICAgc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RfbWV0aG9kX3ByZWZpeGVzLmFw
cGVuZCgnc3RhdGVsZXNzX3Byb2Nlc3NfaW50ZWdyYXRpb25fdGVzdF8nKQogCiAgICAgICAgIHBh
cmFsbGVsX3Rlc3RzID0gW10KICAgICAgICAgbG9hZGVyLnRlc3RfbWV0aG9kX3ByZWZpeGVzID0g
cGFyYWxsZWxfdGVzdF9tZXRob2RfcHJlZml4ZXMKQEAgLTIyNSwxMiArMjQ4LDE5IEBAIGNsYXNz
IFRlc3RlcihvYmplY3QpOgogICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKICAgICAgICAgICAg
IHNlcmlhbF90ZXN0cy5leHRlbmQoc2VsZi5fYWxsX3Rlc3RfbmFtZXMobG9hZGVyLmxvYWRUZXN0
c0Zyb21OYW1lKG5hbWUsIE5vbmUpKSkKIAorICAgICAgICBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVz
dHMgPSBbXQorICAgICAgICBsb2FkZXIudGVzdF9tZXRob2RfcHJlZml4ZXMgPSBzdGF0ZWxlc3Nf
cGFyYWxsZWxfdGVzdF9tZXRob2RfcHJlZml4ZXMKKyAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6
CisgICAgICAgICAgICBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMuZXh0ZW5kKHNlbGYuX2FsbF90
ZXN0X25hbWVzKGxvYWRlci5sb2FkVGVzdHNGcm9tTmFtZShuYW1lLCBOb25lKSkpCisKICAgICAg
ICAgIyBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWUoKSB3aWxsIG5vdCB2ZXJpZnkgdGhhdCBuYW1l
cyBiZWdpbiB3aXRoIG9uZSBvZiB0aGUgdGVzdF9tZXRob2RfcHJlZml4ZXMKICAgICAgICAgIyBp
ZiB0aGUgbmFtZXMgd2VyZSBleHBsaWNpdGx5IHByb3ZpZGVkIChlLmcuLCBNYWluVGVzdC50ZXN0
X2Jhc2ljKSwgc28gdGhpcyBtZWFucyB0aGF0IGFueSBpbmRpdmlkdWFsCi0gICAgICAgICMgdGVz
dHMgd2lsbCBiZSBpbmNsdWRlZCBpbiBib3RoIHBhcmFsbGVsX3Rlc3RzIGFuZCBzZXJpYWxfdGVz
dHMsIGFuZCB3ZSBuZWVkIHRvIGRlLWR1cCB0aGVtLgotICAgICAgICBzZXJpYWxfdGVzdHMgPSBs
aXN0KHNldChzZXJpYWxfdGVzdHMpLmRpZmZlcmVuY2Uoc2V0KHBhcmFsbGVsX3Rlc3RzKSkpCisg
ICAgICAgICMgdGVzdHMgd2lsbCBiZSBpbmNsdWRlZCBpbiBwYXJhbGxlbF90ZXN0cywgc2VyaWFs
X3Rlc3RzLCBhbmQgc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzIGFuZCB3ZSBuZWVkCisgICAgICAg
ICMgdG8gZGUtZHVwIHRoZW0uCisgICAgICAgIHNlcmlhbF90ZXN0cyA9IGxpc3Qoc2V0KHNlcmlh
bF90ZXN0cykuZGlmZmVyZW5jZShzZXQocGFyYWxsZWxfdGVzdHMpKS5kaWZmZXJlbmNlKHNldChz
dGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMpKSkKKyAgICAgICAgc3RhdGVsZXNzX3BhcmFsbGVsX3Rl
c3RzID0gbGlzdChzZXQoc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzKS5kaWZmZXJlbmNlKHNldChw
YXJhbGxlbF90ZXN0cykpLmRpZmZlcmVuY2Uoc2V0KHNlcmlhbF90ZXN0cykpKQogCi0gICAgICAg
IHJldHVybiAocGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cykKKyAgICAgICAgcmV0dXJuIChw
YXJhbGxlbF90ZXN0cywgc2VyaWFsX3Rlc3RzLCBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMpCiAK
ICAgICBkZWYgX2FsbF90ZXN0X25hbWVzKHNlbGYsIHN1aXRlKToKICAgICAgICAgbmFtZXMgPSBb
XQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW5fdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weQppbmRleCAy
YTQ4MjQzZGU3NmZhYTg1MzA3ZTNlY2ZhN2EyMjgwZWQ0MzdlNmI3Li43YzY1YzhhYzI1OTA2MWQ3
ZmUxOWFmNmI1YzUyYmM5ZWExM2ZlNjU1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rlc3QvbWFpbl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rl
c3QvbWFpbl91bml0dGVzdC5weQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEy
IEdvb2dsZSwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Nyw2ICs0OCwxMiBA
QCBjbGFzcyBUZXN0U3R1YnModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXJpYWxfaW50
ZWdyYXRpb25fdGVzdF9lbXB0eShzZWxmKToKICAgICAgICAgcGFzcwogCisgICAgZGVmIHN0YXRl
bGVzc19wcm9jZXNzX3Rlc3RfZW1wdHkoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBz
dGF0ZWxlc3NfcHJvY2Vzc19pbnRlZ3JhdGlvbl90ZXN0X2VtcHR5KHNlbGYpOgorICAgICAgICBw
YXNzCisKIAogY2xhc3MgVGVzdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgwLDIx
ICs4NywyNSBAQCBjbGFzcyBUZXN0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRl
ZiB0ZXN0X2luZGl2aWR1YWxfbmFtZXNfYXJlX25vdF9ydW5fdHdpY2Uoc2VsZik6CiAgICAgICAg
IGFyZ3MgPSBbU1RVQlNfQ0xBU1MgKyAnLnRlc3RfZW1wdHknXQotICAgICAgICBwYXJhbGxlbF90
ZXN0cywgc2VyaWFsX3Rlc3RzID0gc2VsZi5fZmluZF90ZXN0X25hbWVzKGFyZ3MpCisgICAgICAg
IHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMsIHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0cyA9
IHNlbGYuX2ZpbmRfdGVzdF9uYW1lcyhhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBh
cmFsbGVsX3Rlc3RzLCBhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbF90ZXN0
cywgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3Rz
LCBbXSkKIAogICAgIGRlZiB0ZXN0X2ludGVncmF0aW9uX3Rlc3RzX2FyZV9ub3RfZm91bmRfYnlf
ZGVmYXVsdChzZWxmKToKLSAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyA9IHNl
bGYuX2ZpbmRfdGVzdF9uYW1lcyhbU1RVQlNfQ0xBU1NdKQorICAgICAgICBwYXJhbGxlbF90ZXN0
cywgc2VyaWFsX3Rlc3RzLCBzdGF0ZWxlc3NfcGFyYWxsZWxfdGVzdHMgPSBzZWxmLl9maW5kX3Rl
c3RfbmFtZXMoW1NUVUJTX0NMQVNTXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbGxl
bF90ZXN0cywgWwogICAgICAgICAgICAgU1RVQlNfQ0xBU1MgKyAnLnRlc3RfZW1wdHknLAogICAg
ICAgICAgICAgXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxfdGVzdHMsIFsKICAg
ICAgICAgICAgIFNUVUJTX0NMQVNTICsgJy5zZXJpYWxfdGVzdF9lbXB0eScsCiAgICAgICAgICAg
ICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRlbGVzc19wYXJhbGxlbF90ZXN0cywg
WworICAgICAgICAgICAgU1RVQlNfQ0xBU1MgKyAnLnN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfZW1w
dHknLAorICAgICAgICAgICAgXSkKIAogICAgIGRlZiB0ZXN0X2ludGVncmF0aW9uX3Rlc3RzX2Fy
ZV9mb3VuZChzZWxmKToKLSAgICAgICAgcGFyYWxsZWxfdGVzdHMsIHNlcmlhbF90ZXN0cyA9IHNl
bGYuX2ZpbmRfdGVzdF9uYW1lcyhbJy0taW50ZWdyYXRpb24tdGVzdHMnLCBTVFVCU19DTEFTU10p
CisgICAgICAgIHBhcmFsbGVsX3Rlc3RzLCBzZXJpYWxfdGVzdHMsIHN0YXRlbGVzc19wYXJhbGxl
bF90ZXN0cyA9IHNlbGYuX2ZpbmRfdGVzdF9uYW1lcyhbJy0taW50ZWdyYXRpb24tdGVzdHMnLCBT
VFVCU19DTEFTU10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYWxsZWxfdGVzdHMsIFsK
ICAgICAgICAgICAgIFNUVUJTX0NMQVNTICsgJy5pbnRlZ3JhdGlvbl90ZXN0X2VtcHR5JywKICAg
ICAgICAgICAgIFNUVUJTX0NMQVNTICsgJy50ZXN0X2VtcHR5JywKQEAgLTEwMyw2ICsxMTQsMTAg
QEAgY2xhc3MgVGVzdGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBTVFVC
U19DTEFTUyArICcuc2VyaWFsX2ludGVncmF0aW9uX3Rlc3RfZW1wdHknLAogICAgICAgICAgICAg
U1RVQlNfQ0xBU1MgKyAnLnNlcmlhbF90ZXN0X2VtcHR5JywKICAgICAgICAgICAgIF0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdGVsZXNzX3BhcmFsbGVsX3Rlc3RzLCBbCisgICAgICAg
ICAgICBTVFVCU19DTEFTUyArICcuc3RhdGVsZXNzX3Byb2Nlc3NfaW50ZWdyYXRpb25fdGVzdF9l
bXB0eScsCisgICAgICAgICAgICBTVFVCU19DTEFTUyArICcuc3RhdGVsZXNzX3Byb2Nlc3NfdGVz
dF9lbXB0eScsCisgICAgICAgICAgICBdKQogCiAgICAgZGVmIGludGVncmF0aW9uX3Rlc3RfY292
ZXJhZ2Vfd29ya3Moc2VsZik6CiAgICAgICAgIGZpbGVzeXN0ZW0gPSBGaWxlU3lzdGVtKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXIucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rlc3QvcnVubmVyLnB5CmluZGV4IDNjMjVhMTZiNjYzZDQxMDA2NDU3
OGM1NDE0MjgyMDdiYzNiMDA0NmMuLmUxYjk0Y2U5NjBhM2ViMzY2ZTA5OGQ1Zjk5ZjNlMDllMjA4
YTI3MDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9ydW5uZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L3J1bm5lci5weQpAQCAtMjIsNyArMjIs
MTEgQEAKIAogIiIiY29kZSB0byBhY3R1YWxseSBydW4gYSBsaXN0IG9mIHB5dGhvbiB0ZXN0cy4i
IiIKIAoraW1wb3J0IG9zCitpbXBvcnQgcGlja2xlCiBpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9j
ZXNzCitpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKQEAgLTMxLDYg
KzM1LDEzIEBAIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBtZXNzYWdlX3Bvb2wKIF90ZXN0
X2Rlc2NyaXB0aW9uID0gcmUuY29tcGlsZSgiKFx3KykgXCgoW1x3Ll0rKVwpIikKIAogCitkZWYg
d3JpdGVfcGlja2xlZF90ZXN0X3Jlc3VsdF9tb2RpZnlpbmdfdGVzdF9yZXN1bHQodGVzdF9yZXN1
bHQsIGZpbGVfb2JqZWN0KToKKyAgICAjIEZyb20gPGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20v
cXVlc3Rpb25zLzE3NDU5NDY0L2hvdy10by1zYXZlLXVuaXR0ZXN0LXRlc3RyZXN1bHQ+CisgICAg
Zm9yIGtleSwgdmFsdWUgaW4gdmFycyh0ZXN0X3Jlc3VsdCkuaXRlbXMoKToKKyAgICAgICAgaWYg
aXNpbnN0YW5jZSh2YWx1ZSwgZmlsZSk6CisgICAgICAgICAgICBzZXRhdHRyKHRlc3RfcmVzdWx0
LCBrZXksIE5vbmUpCisgICAgcGlja2xlLmR1bXAodGVzdF9yZXN1bHQsIGZpbGVfb2JqZWN0LCBw
aWNrbGUuSElHSEVTVF9QUk9UT0NPTCkKKwogZGVmIHVuaXRfdGVzdF9uYW1lKHRlc3QpOgogICAg
IG0gPSBfdGVzdF9kZXNjcmlwdGlvbi5tYXRjaChzdHIodGVzdCkpCiAgICAgcmV0dXJuICIlcy4l
cyIgJSAobS5ncm91cCgyKSwgbS5ncm91cCgxKSkKQEAgLTQzLDEzICs1NCwxNiBAQCBjbGFzcyBS
dW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi50ZXN0c19ydW4gPSAwCiAgICAgICAgIHNlbGYu
ZXJyb3JzID0gW10KICAgICAgICAgc2VsZi5mYWlsdXJlcyA9IFtdCi0gICAgICAgIHNlbGYud29y
a2VyX2ZhY3RvcnkgPSBsYW1iZGEgY2FsbGVyOiBfV29ya2VyKGNhbGxlciwgc2VsZi5sb2FkZXIp
CisgICAgICAgIHNlbGYuX3N0YXRlZnVsX3dvcmtlcl9mYWN0b3J5ID0gbGFtYmRhIGNhbGxlcjog
X1dvcmtlcihjYWxsZXIsIHNlbGYubG9hZGVyKQogCi0gICAgZGVmIHJ1bihzZWxmLCB0ZXN0X25h
bWVzLCBudW1fd29ya2Vycyk6CisgICAgZGVmIHJ1bihzZWxmLCB0ZXN0X25hbWVzLCBudW1fd29y
a2VycywgdXNlX3N0YXRlbGVzc19wcm9jZXNzPUZhbHNlKToKICAgICAgICAgaWYgbm90IHRlc3Rf
bmFtZXM6CiAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgd29ya2VyX2ZhY3RvcnlfdG9fdXNl
ID0gc2VsZi5fc3RhdGVmdWxfd29ya2VyX2ZhY3RvcnkKKyAgICAgICAgaWYgdXNlX3N0YXRlbGVz
c19wcm9jZXNzOgorICAgICAgICAgICAgd29ya2VyX2ZhY3RvcnlfdG9fdXNlID0gbGFtYmRhIGNh
bGxlcjogX1N0YXRlbGVzc1dvcmtlcihjYWxsZXIsIHNlbGYubG9hZGVyKQogICAgICAgICBudW1f
d29ya2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKHRlc3RfbmFtZXMpKQotICAgICAgICB3aXRo
IG1lc3NhZ2VfcG9vbC5nZXQoc2VsZiwgc2VsZi53b3JrZXJfZmFjdG9yeSwgbnVtX3dvcmtlcnMp
IGFzIHBvb2w6CisgICAgICAgIHdpdGggbWVzc2FnZV9wb29sLmdldChzZWxmLCB3b3JrZXJfZmFj
dG9yeV90b191c2UsIG51bV93b3JrZXJzKSBhcyBwb29sOgogICAgICAgICAgICAgcG9vbC5ydW4o
KCd0ZXN0JywgdGVzdF9uYW1lKSBmb3IgdGVzdF9uYW1lIGluIHRlc3RfbmFtZXMpCiAKICAgICBk
ZWYgaGFuZGxlKHNlbGYsIG1lc3NhZ2VfbmFtZSwgc291cmNlLCB0ZXN0X25hbWU9Tm9uZSwgZGVs
YXk9Tm9uZSwgZmFpbHVyZXM9Tm9uZSwgZXJyb3JzPU5vbmUpOgpAQCAtODMsMyArOTcsNDEgQEAg
Y2xhc3MgX1dvcmtlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9sb2FkZXIubG9hZFRlc3RzRnJv
bU5hbWUodGVzdF9uYW1lLCBOb25lKS5ydW4ocmVzdWx0KQogICAgICAgICBzZWxmLl9jYWxsZXIu
cG9zdCgnZmluaXNoZWRfdGVzdCcsIHRlc3RfbmFtZSwgdGltZS50aW1lKCkgLSBzdGFydCwKICAg
ICAgICAgICAgIFtmYWlsdXJlWzFdIGZvciBmYWlsdXJlIGluIHJlc3VsdC5mYWlsdXJlc10sIFtl
cnJvclsxXSBmb3IgZXJyb3IgaW4gcmVzdWx0LmVycm9yc10pCisKKworY2xhc3MgX1N0YXRlbGVz
c1dvcmtlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWxsZXIsIGxvYWRlcik6
CisgICAgICAgIHNlbGYuX2NhbGxlciA9IGNhbGxlcgorICAgICAgICBzZWxmLl9sb2FkZXIgPSBs
b2FkZXIKKworICAgIGRlZiBoYW5kbGUoc2VsZiwgbWVzc2FnZV9uYW1lLCBzb3VyY2UsIHRlc3Rf
bmFtZSk6CisgICAgICAgIGFzc2VydCBtZXNzYWdlX25hbWUgPT0gJ3Rlc3QnCisKKyAgICAgICAg
IyBXZSB3aWxsIG5lZWQgdG8gcmV3b3JrIHRoaXMgaWYgYSB0ZXN0X25hbWUgcmVzdWx0cyBpbiBt
dWx0aXBsZSB0ZXN0cy4KKyAgICAgICAgYXNzZXJ0IHN5cy5leGVjdXRhYmxlCisgICAgICAgIHN0
YXRlbGVzc19wcm9jZXNzX3J1bm5lciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUob3Mu
cGF0aC5hYnNwYXRoKF9fZmlsZV9fKSksICdzdGF0ZWxlc3NfcHJvY2Vzc19ydW5uZXIucHknKQor
ICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBzdGF0ZWxlc3NfcHJvY2Vzc19ydW5uZXIs
IHRlc3RfbmFtZV0KKyAgICAgICAgY2hpbGRfcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oYXJn
cywgc3RkaW49c3VicHJvY2Vzcy5QSVBFLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBlbnY9eydQ
WVRIT05QQVRIJzogJzonLmpvaW4oc3lzLnBhdGgpfSwgY2xvc2VfZmRzPVRydWUpCisgICAgICAg
IHdyaXRlX3BpY2tsZWRfdGVzdF9yZXN1bHRfbW9kaWZ5aW5nX3Rlc3RfcmVzdWx0KHVuaXR0ZXN0
LlRlc3RSZXN1bHQoKSwgY2hpbGRfcHJvY2Vzcy5zdGRpbikKKworICAgICAgICB0aW1lX2VsYXBz
ZWQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBvdXRwdXRfbGluZSA9IGNo
aWxkX3Byb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkucnN0cmlwKCkKKyAgICAgICAgICAgIGlmIG91
dHB1dF9saW5lID09ICcjIyBTdGFydCAjIyc6CisgICAgICAgICAgICAgICAgc3RhcnQgPSB0aW1l
LnRpbWUoKQorICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxlci5wb3N0KCdzdGFydGVkX3Rlc3Qn
LCB0ZXN0X25hbWUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGlmIG91
dHB1dF9saW5lID09ICcnIGFuZCBjaGlsZF9wcm9jZXNzLnBvbGwoKSBpcyBub3QgTm9uZToKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgb3V0cHV0X2xpbmUgPT0gJyMjIEVu
ZCAjIyc6CisgICAgICAgICAgICAgICAgdGltZV9lbGFwc2VkID0gdGltZS50aW1lKCkgLSBzdGFy
dAorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmVzdWx0ID0gcGlja2xlLmxvYWQo
Y2hpbGRfcHJvY2Vzcy5zdGRvdXQpCisgICAgICAgIGV4aXRfY29kZSA9IGNoaWxkX3Byb2Nlc3Mu
d2FpdCgpCisKKyAgICAgICAgaWYgZXhpdF9jb2RlOgorICAgICAgICAgICAgcmFpc2UgUnVudGlt
ZUVycm9yKCd7fSBleGl0ZWQgd2l0aCBub24temVybyBleGl0IGNvZGUge30nLmZvcm1hdCgnICcu
am9pbihhcmdzKSwgdGVzdF9uYW1lLCBleGl0X2NvZGUpKQorCisgICAgICAgIHNlbGYuX2NhbGxl
ci5wb3N0KCdmaW5pc2hlZF90ZXN0JywgdGVzdF9uYW1lLCB0aW1lX2VsYXBzZWQsCisgICAgICAg
ICAgICBbZmFpbHVyZVsxXSBmb3IgZmFpbHVyZSBpbiByZXN1bHQuZmFpbHVyZXNdLCBbZXJyb3Jb
MV0gZm9yIGVycm9yIGluIHJlc3VsdC5lcnJvcnNdKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS90ZXN0L3N0YXRlbGVzc19wcm9jZXNzX3J1bm5lci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGVzdC9zdGF0ZWxlc3NfcHJvY2Vzc19ydW5uZXIucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NmNmOGFjODhiYjk3NTVmYTRhMzVhZjQ2NGNkYzUyODY4Yjc3MTIzOQotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9zdGF0ZWxlc3NfcHJvY2Vzc19ydW5uZXIu
cHkKQEAgLTAsMCArMSw1MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisiIiJSdW5zIGEgdGVzdCB3aXRob3V0IGV4aXN0aW5nIHN0YXRlLiIiIgorCitpbXBvcnQg
cGlja2xlCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS50ZXN0
LnJ1bm5lciBpbXBvcnQgd3JpdGVfcGlja2xlZF90ZXN0X3Jlc3VsdF9tb2RpZnlpbmdfdGVzdF9y
ZXN1bHQKKworCitkZWYgbWFpbigpOgorICAgIGlmIGxlbihzeXMuYXJndikgPCAyOgorICAgICAg
ICByZXR1cm4gMQorICAgIHRlc3RfbmFtZSA9IHN5cy5hcmd2WzFdCisKKyAgICBwcmludCAnIyMg
U3RhcnQgIyMnCisgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisKKyAgICB0ZXN0X3Jlc3VsdCA9IHBp
Y2tsZS5sb2FkKHN5cy5zdGRpbikKKyAgICB1bml0dGVzdC5UZXN0TG9hZGVyKCkubG9hZFRlc3Rz
RnJvbU5hbWUodGVzdF9uYW1lLCBOb25lKS5ydW4odGVzdF9yZXN1bHQpCisKKyAgICBwcmludCAn
IyMgRW5kICMjJworICAgIHN5cy5zdGRvdXQuZmx1c2goKQorCisgICAgd3JpdGVfcGlja2xlZF90
ZXN0X3Jlc3VsdF9tb2RpZnlpbmdfdGVzdF9yZXN1bHQodGVzdF9yZXN1bHQsIHN5cy5zdGRvdXQp
CisgICAgcmV0dXJuIDAKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHN5cy5l
eGl0KG1haW4oKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0Nv
bmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTIwYmM1ZDc3NGZmMzEwNDAz
MGJlYjNjZGZlMjBmZDE5NTY3MjA3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsOTAg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisv
LyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICIu
Li8uLi8uLi8uLi9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25m
aWciCisKK1VTRV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFU
SU9OKSk7CitVU0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0VfSU5URVJOQUxf
U0RLX0RlYnVnID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxfU0RLX1JlbGVh
c2UgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKKworQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOworQ0xBTkdfV0FSTl9CT09M
X0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7
CitDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9E
WSA9IFlFUzsKK0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9J
TlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFUQ0gg
PSBZRVM7CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVHR0lOR19TWU1CT0xTID0gZGVm
YXVsdDsKK0dDQ19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsKK0dDQ19FTkFCTEVfQ1BQX1JU
VEkgPSBZRVM7CitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVf
U1lNQk9MX1NFUEFSQVRJT04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitH
Q0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfT0JKQ19DQUxMX0NYWF9D
RFRPUlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOworR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykgJChpbmhlcml0ZWQpOwor
R0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsK
K0dDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTl8gPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9O
UyA9IE5POworR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0gWUVTOworR0NDX1dBUk5f
QUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CitHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0gWUVTOworR0NDX1dB
Uk5fU0lHTl9DT01QQVJFID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlF
UzsKK0dDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURf
RlVOQ1RJT04gPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBOTzsKK1dBUk5JTkdf
Q0ZMQUdTID0gLVdjYXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRyYS10b2tlbnMgLVdm
b3JtYXQ9MiAtV2luaXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0ZSAtV21pc3Npbmct
bm9yZXR1cm4gLVdwYWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50LWRlY2xzIC1XdW5k
ZWYgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1XZ2xvYmFsLWNvbnN0
cnVjdG9ycyAtV3RhdXRvbG9naWNhbC1jb21wYXJlIC1XaW1wbGljaXQtZmFsbHRocm91Z2g7CisK
K0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vdXNyL2xvY2FsL2lu
Y2x1ZGU7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUOnN1ZmZpeDppZGVudGlm
aWVyKSk7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMCA9IDEwMTAwMDsKK1RBUkdF
VF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8x
MyA9IDEwMTMwMDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZFTCwg
U1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcgdmFyeSBiZXR3
ZWVuIHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2YWx1
ZXMgZm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlv
biBpbiB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgorREVCVUdfREVG
SU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdfREVG
SU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1J
WkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5U
KSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbCA9IDM7CitHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMX2RlYnVnID0gMDsKKworU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKKworT1RIRVJf
Q0ZMQUdTID0gJChBU0FOX09USEVSX0NGTEFHUyk7CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQo
QVNBTl9PVEhFUl9DUExVU1BMVVNGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVS
X0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZp
Z3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWVh
ZGU5YzFjYWUzNzlhM2VlMTkyMDhiNzk3ZGZjYzExMmE3NTc0NQotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKQEAgLTAsMCArMSw0MSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8g
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2luY2x1ZGUgIkJhc2UueGNjb25maWciCisKK09OTFlfQUNUSVZFX0FSQ0gg
PSBZRVM7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJT
SU9OX01BSk9SKTsKKworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVRfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SKSk7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTAwMCA9IDEwLjEwOwor
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworCitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNB
VEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmOwor
CitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOworU0RLUk9PVF8gPSBt
YWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKZGlmZiAtLWdpdCBhL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhj
Y29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJX
ZWJLaXRUZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NjAwMGQxYWZkZDdkZDFjZTVmZmMx
YjJkMWZlMTA1MjNkNWUzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAg
KzEsMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoK
Ky8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
Ky8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RV
Q1RfTkFNRSA9ICQoVEFSR0VUX05BTUUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxl
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3OWVkZTkKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKQEAg
LTAsMCArMSwyIEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitpbmNsdWRlIC4uLy4u
Ly4uL01ha2VmaWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNGQzNDc0OGM3NWVjZjUxNzQ3Mzk3ZTFlNWE1YzcwYjg5MGM3MDUw
MAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2Vi
S2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwyMDIgQEAKKy8v
ICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9Owor
CW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZp
bGUgc2VjdGlvbiAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2ODQ0QTFBRkE3
OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFM0Y0NDI2MjA1QzZBMDEwMDcxOTVC
MyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNj
cmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5
RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQ
YXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAxOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTExQUZDNEQ5QzAw
OEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxs
ZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlci54
Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTMxQUZDNEQ5QzAw
OEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVh
c2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEFCM0ExMUFGMDI3
NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OworCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYWluLmNwcDsgc291cmNl
VHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2
YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBKYXZhU2NyaXB0Q29yZS5m
cmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0phdmFTY3JpcHRDb3Jl
LmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJN0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDRTNGNDQyNjIwNUM2QTAxMDA3MTk1QjMgLyog
SmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9u
ICovCisJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTExQUZDNEQ5
QzAwOEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTMxQUZDNEQ5QzAwOEMz
MzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MjFBRkM0RDlDMDA4
QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0g
Q29uZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRB
QjM5ODFBRjAyNzZDMDAzRkM4RDEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLywK
KwkJCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlDRTNG
NDQyNDIwNUM2NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCQk3QzRBQjNB
MjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkJQ0UzRjQ0MjIyMDVDNjY5QzAw
NzE5NUIzIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCSk7CisJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJv
ZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdD
NEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNF
M0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMw
NUMgLyogbWFpbi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1
QjMgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4g
PSAoCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJX
ZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3Vy
Y2VzICovLAorCQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovLAor
CQkJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFt
ZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7
CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJX
ZWJLaXRUZXN0ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBl
LnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyog
UHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRl
cyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQljb21w
YXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBF
bmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMg
PSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYwMjc2QzAwM0ZD
OEQxOworCQkJcHJvZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFBy
b2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7
CisJCQl0YXJnZXRzID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2Vi
S2l0VGVzdGVyICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RDFB
RjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owor
LyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25m
aWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVs
ZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVCVUdfREVGSU5F
UyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gIiQoR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZykiOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3
QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLzsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3
QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1
MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQg
WENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIz
QTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsK
KwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAorCQkJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNB
QTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxl
YXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCX07CisJ
cm9vdE9iamVjdCA9IDdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcCBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZWE0NjRl
NDhjYzE5YjI2MWZiYjc1ZTJmN2RmYTg0YzNiNGE3OTg5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSA8aW9zdHJlYW0+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRlcm4gdm9pZCBi
cmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9yVGVzdGluZ1N1
bW1hcnlQcm92aWRlcnMoKSB7IHJldHVybjsgfQorCisvLyBGcm9tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgKK3RlbXBsYXRlPHNpemVfdCBsZW5ndGg+CitzdGF0aWMg
U3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmc3RyaW5nKVtsZW5ndGhdKQorewor
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShs
ZW5ndGggLSAxKTsKKyAgICBmb3IgKGF1dG8gYyA6IHN0cmluZykKKyAgICAgICAgYnVpbGRlci5h
cHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmlu
ZygpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0U3VtbWFyeVByb3ZpZGVycygpCit7CisgICAgU3Ry
aW5nIGFOdWxsU3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhTnVsbFN0cmluZ0ltcGwg
PSBhTnVsbFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW5FbXB0eVN0cmluZyB7ICIiIH07
CisgICAgU3RyaW5nSW1wbCogYW5FbXB0eVN0cmluZ0ltcGwgPSBhbkVtcHR5U3RyaW5nLmltcGwo
KTsKKworICAgIFN0cmluZyBhbjhCaXRTdHJpbmcgeyAicsOpc3Vtw6kiIH07CisgICAgU3RyaW5n
SW1wbCogYW44Qml0U3RyaW5nSW1wbCA9IGFuOEJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJp
bmcgYTE2Qml0U3RyaW5nID0gdXRmMTZTdHJpbmcodSJcdTE2ODBDYXBwdWNjaW5vXHUxNjgwIik7
CisgICAgU3RyaW5nSW1wbCogYTE2Qml0U3RyaW5nSW1wbCA9IGExNkJpdFN0cmluZy5pbXBsKCk7
CisKKyAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit9CisKK2ludCBtYWlu
KGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7CisgICAgdGVzdFN1bW1hcnlQcm92aWRl
cnMoKTsKKyAgICBzdGQ6OmNlcnIgPDwgIlRoaXMgZXhlY3V0YWJsZSBkb2VzIG5vdGhpbmcgYW5k
IGlzIG9ubHkgbWVhbnQgZm9yIGRlYnVnZ2luZyBsbGRiX3dlYmtpdC5weS4iIDw8IHN0ZDo6ZW5k
bDsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdhNTYyOGQ0NTA4YTRkZDE4OTc4NWUyOTUzYmRhOGI1YmRiNjdhYmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTEx
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisj
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBsbGRiCitpbXBv
cnQgbGxkYl93ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0
Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKKworCitjbGFzcyBUZXN0
U3VtbWFyeVByb3ZpZGVycyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisg
ICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgTExEQl9XRUJLSVRfVEVTVEVSX05BTUUg
PSAnbGxkYldlYktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05f
TkFNRSA9ICdicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJworCisgICAgICAgIGNscy5z
YkRlYnVnZ2VyID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAgICAgIGNscy5zYkRlYnVn
Z2VyLlNldEFzeW5jKEZhbHNlKQorCisgICAgICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkKKyAgICAg
ICAgY29uZmlnID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0ZW0pCisgICAg
ICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhvc3QuZmlsZXN5c3RlbS5qb2lu
KGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1F
KQorCisgICAgICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVnZ2VyLkNyZWF0ZVRhcmdldFdp
dGhGaWxlQW5kQXJjaChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSwgbGxkYi5M
TERCX0FSQ0hfREVGQVVMVCkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAorICAgICAgICBj
bHMuc2JUYXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVTVElOR19GVU5D
VElPTl9OQU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVuYW1lKCkpCisK
KyAgICAgICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAgICAgY2xzLnNi
UHJvY2VzcyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwgb3MuZ2V0Y3dk
KCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAgIGFzc2VydCBjbHMuc2JQ
cm9jZXNzLkdldFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAgICAgY2xzLnNi
VGhyZWFkID0gY2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAgICAgIGFzc2Vy
dCBjbHMuc2JUaHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0aW9uIHdpdGgg
bmFtZSBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRoZSBmcmFtZSBv
ZiB0aGUgY2FsbGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFN
RSBiZWNhdXNlIGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlhYmxlcyB3ZSB3
YW50IHRvIHRlc3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFkLkdldEZyYW1l
QXRJbmRleCgxKQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5zYlByb2Nlc3MuS2ls
bCgpCisgICAgICAgIGNscy5zYlRhcmdldC5EZWxldGVBbGxCcmVha3BvaW50cygpCisKKyAgICAj
IFRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZG9lcyBub3Qgd29yayB3aXRoIFB5dGhvbiBtdWx0aXBy
b2Nlc3NpbmcgYW5kIGNhdXNlcyBlcnJvcnMgb2YgdGhlIGZvcm06CisgICAgIyAgICAgb2JqY1s3
Njc5NF06ICtbX19NRFF1ZXJ5IGluaXRpYWxpemVdIG1heSBoYXZlIGJlZW4gaW4gcHJvZ3Jlc3Mg
aW4gYW5vdGhlciB0aHJlYWQgd2hlbiBmb3JrKCkgd2FzIGNhbGxlZC4KKyAgICAjICAgICAgICAg
ICAgICAgICAgV2UgY2Fubm90IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBpbiB0aGUgZm9y
aygpIGNoaWxkIHByb2Nlc3MuIENyYXNoaW5nIGluc3RlYWQuCisgICAgIyBTbywgd2UgcnVuIHRo
ZSBmb2xsb3dpbmcgdGVzdHMgc2VyaWFsbHkuCisKKyAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxf
U3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKKworICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190
ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAg
ICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIo
c2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmdJbXBsJyksIHt9KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNv
bnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1h
cnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJh
bWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9
ICcnIH0iKQorCisgICAgZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9T
dW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRi
X3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZh
cmlhYmxlKCdhbjhCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJ3JcXHhlOXN1
bVxceGU5JyB9IikKKworICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9
IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5G
aW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9ICdc
XHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCisKKyAgICAjIE1BUks6IFdURlN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHN0YXRlbGVzc19wcm9jZXNz
X3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAg
ICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAg
IGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1w
dHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5n
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAs
IGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc3RhdGVsZXNzX3Byb2Nlc3NfdGVzdF9XVEZT
dHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5
ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmlu
ZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQor
CisgICAgZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRl
cl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZT
dHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0
cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3Ro
ID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341110</attachid>
            <date>2018-05-23 11:21:13 -0700</date>
            <delta_ts>2018-05-24 11:06:42 -0700</delta_ts>
            <desc>[Patch] Instrument unti tests to dump timing info</desc>
            <filename>InstrumentedSerialMeasurements.diff</filename>
            <type>text/plain</type>
            <size>8479</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggODA2ZmZiYjlkYTQuLjcyZTUyOTJi
MjE0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtNzAsNyArNzAsNyBAQCBk
ZWYgbWFpbigpOgogICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3MucGF0aC5hYnNw
YXRoKF9fZmlsZV9fKSkpKSkpCiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIoKQotICAgIHRlc3Rlci5h
ZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3
ZWJraXRweScpCisgICAgI3Rlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3Qs
ICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAKICAgICAjIFRoZXJlIGlzIG5vIFdl
YktpdDIgb24gV2luZG93cywgc28gd2UgZG9uJ3QgbmVlZCB0byBydW4gV2ViS2l0MiB1bml0dGVz
dHMgb24gaXQuCiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykgb3Ig
c3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93
ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cmlu
ZGV4IDdhNTYyOGQ0NTA4Li5lMzc3ZDgzMmI1OSAxMDA3NTUKLS0tIGEvVG9vbHMvbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0
LnB5CkBAIC0yNyw2ICsyNyw3IEBAIGltcG9ydCBsbGRiCiBpbXBvcnQgbGxkYl93ZWJraXQKIGlt
cG9ydCBvcwogaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdApAQCAt
NzYsMzYgKzc3LDg0IEBAIGNsYXNzIFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RD
YXNlKToKIAogICAgICMgTUFSSzogV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBj
YXNlcwogCi0gICAgZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHN1bW1hcnkgPSBsbGRiX3dl
YmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlh
YmxlKCdhTnVsbFN0cmluZ0ltcGwnKSwge30pCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdGFydF90
aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgdGVtcCA9IHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2FOdWxsU3RyaW5nSW1wbCcpCisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICcnCisg
ICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdcdFtzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBs
X1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZ10gVG9vayB7fW1zIHRvIGZpbmQgdmFyaWFibGUn
LmZvcm1hdCgodGltZS50aW1lKCkgLSBzdGFydF90aW1lKSAqIDEwMDAuMCkKKyAgICAgICAgc3Rh
cnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZT
dHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcih0ZW1wLCB7fSkKKyAgICAgICAgcHJpbnQgPj4gc3lz
LnN0ZGVyciwgJ1x0W3NlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251
bGxfc3RyaW5nXSBUb29rIHt9bXMgdG8gcnVuIFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
Jy5mb3JtYXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAwLjApCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVu
dHMgPSAnJyB9IikKIAotICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKLSAgICAgICAgc3VtbWFyeSA9
IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5G
aW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmdJbXBsJyksIHt9KQorICAgIGRlZiBzZXJpYWxfdGVz
dF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAg
ICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0ZW1wID0gc2VsZi5zYkZyYW1l
LkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZ0ltcGwnKQorICAgICAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAnJworICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nXSBUb29rIHt9bXMgdG8g
ZmluZCB2YXJpYWJsZScuZm9ybWF0KCh0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUpICogMTAwMC4w
KQorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgc3VtbWFyeSA9IGxs
ZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHRlbXAsIHt9KQorICAgICAg
ICBwcmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nXSBUb29rIHt9bXMgdG8gcnVuIFdURlN0cmluZ0ltcGxf
U3VtbWFyeVByb3ZpZGVyJy5mb3JtYXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAw
LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4
Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKIAotICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190
ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgotICAg
ICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIo
c2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICBk
ZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmco
c2VsZik6CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0ZW1wID0g
c2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpCisgICAgICAgIHBy
aW50ID4+IHN5cy5zdGRlcnIsICcnCisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdcdFtz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZ10gVG9v
ayB7fW1zIHRvIGZpbmQgdmFyaWFibGUnLmZvcm1hdCgodGltZS50aW1lKCkgLSBzdGFydF90aW1l
KSAqIDEwMDAuMCkKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcih0ZW1wLCB7
fSkKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ1x0W3NlcmlhbF90ZXN0X1dURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nXSBUb29rIHt9bXMgdG8gcnVuIFdURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyJy5mb3JtYXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGlt
ZSkgKiAxMDAwLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3Ro
ID0gOCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQogCi0gICAg
ZGVmIHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJf
MTZiaXRfc3RyaW5nKHNlbGYpOgotICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3Ry
aW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0
U3RyaW5nSW1wbCcpLCB7fSkKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdGFydF90aW1lID0gdGlt
ZS50aW1lKCkKKyAgICAgICAgdGVtcCA9IHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJp
dFN0cmluZ0ltcGwnKQorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnJworICAgICAgICBw
cmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXJfMTZiaXRfc3RyaW5nXSBUb29rIHt9bXMgdG8gZmluZCB2YXJpYWJsZScuZm9ybWF0
KCh0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUpICogMTAwMC4wKQorICAgICAgICBzdGFydF90aW1l
ID0gdGltZS50aW1lKCkKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyKHRlbXAsIHt9KQorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJy
LCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3Ry
aW5nXSBUb29rIHt9bXMgdG8gcnVuIFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyJy5mb3Jt
YXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAwLjApCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9
ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCiAKICAgICAjIE1BUks6IFdURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcwogCi0gICAgZGVmIHN0YXRlbGVzc19wcm9j
ZXNzX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKLSAg
ICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2Vs
Zi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgZGVmIHNlcmlh
bF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAg
ICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0ZW1wID0gc2VsZi5zYkZyYW1l
LkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKQorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJy
LCAnJworICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZ10gVG9vayB7fW1zIHRvIGZpbmQgdmFyaWFi
bGUnLmZvcm1hdCgodGltZS50aW1lKCkgLSBzdGFydF90aW1lKSAqIDEwMDAuMCkKKyAgICAgICAg
c3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHRlbXAsIHt9KQorICAgICAgICBwcmludCA+PiBzeXMu
c3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0
cmluZ10gVG9vayB7fW1zIHRvIHJ1biBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyJy5mb3JtYXQo
KHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAwLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKIAotICAgIGRl
ZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlf
c3RyaW5nKHNlbGYpOgotICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1
bW1hcnlQcm92aWRlcihzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJyks
IHt9KQorICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5
X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAg
IHRlbXAgPSBzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJykKKyAgICAg
ICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJycKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwg
J1x0W3NlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nXSBU
b29rIHt9bXMgdG8gZmluZCB2YXJpYWJsZScuZm9ybWF0KCh0aW1lLnRpbWUoKSAtIHN0YXJ0X3Rp
bWUpICogMTAwMC4wKQorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAg
c3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIodGVtcCwge30p
CisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdcdFtzZXJpYWxfdGVzdF9XVEZTdHJpbmdf
U3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZ10gVG9vayB7fW1zIHRvIHJ1biBXVEZTdHJpbmdf
U3VtbWFyeVByb3ZpZGVyJy5mb3JtYXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAw
LjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29u
dGVudHMgPSAnJyB9IikKIAotICAgIGRlZiBzdGF0ZWxlc3NfcHJvY2Vzc190ZXN0X1dURlN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHN1bW1hcnkgPSBs
bGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFy
aWFibGUoJ2FuOEJpdFN0cmluZycpLCB7fSkKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3RhcnRfdGltZSA9
IHRpbWUudGltZSgpCisgICAgICAgIHRlbXAgPSBzZWxmLnNiRnJhbWUuRmluZFZhcmlhYmxlKCdh
bjhCaXRTdHJpbmcnKQorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnJworICAgICAgICBw
cmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92
aWRlcl84Yml0X3N0cmluZ10gVG9vayB7fW1zIHRvIGZpbmQgdmFyaWFibGUnLmZvcm1hdCgodGlt
ZS50aW1lKCkgLSBzdGFydF90aW1lKSAqIDEwMDAuMCkKKyAgICAgICAgc3RhcnRfdGltZSA9IHRp
bWUudGltZSgpCisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFy
eVByb3ZpZGVyKHRlbXAsIHt9KQorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnXHRbc2Vy
aWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZ10gVG9vayB7fW1z
IHRvIHJ1biBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyJy5mb3JtYXQoKHRpbWUudGltZSgpIC0g
c3RhcnRfdGltZSkgKiAxMDAwLjApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
InsgbGVuZ3RoID0gOCwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQogCi0gICAgZGVm
IHN0YXRlbGVzc19wcm9jZXNzX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9z
dHJpbmcoc2VsZik6Ci0gICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyKHNlbGYuc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7
fSkKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9z
dHJpbmcoc2VsZik6CisgICAgICAgIHN0YXJ0X3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0
ZW1wID0gc2VsZi5zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nJykKKyAgICAgICAg
cHJpbnQgPj4gc3lzLnN0ZGVyciwgJycKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJ1x0
W3NlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nXSBUb29r
IHt9bXMgdG8gZmluZCB2YXJpYWJsZScuZm9ybWF0KCh0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUp
ICogMTAwMC4wKQorICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgc3Vt
bWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIodGVtcCwge30pCisg
ICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdcdFtzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZ10gVG9vayB7fW1zIHRvIHJ1biBXVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyJy5mb3JtYXQoKHRpbWUudGltZSgpIC0gc3RhcnRfdGltZSkgKiAxMDAwLjAp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBjb250
ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341210</attachid>
            <date>2018-05-24 11:06:43 -0700</date>
            <delta_ts>2018-05-25 21:59:40 -0700</delta_ts>
            <desc>Patch and unit tests that run fast</desc>
            <filename>bug-183744-20180524110643.patch</filename>
            <type>text/plain</type>
            <size>38415</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMxOTkxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjU2OWYzYjFhMmFkNjVhNjFkZDVlMzg4ZTk2ZjA5ZTA1
YjhhZGIwMi4uNjI0ZmFiMjkxMzRjNWUyZDdkNzZiYjlkMDQ0NDZlYmJmNjY5ZTUyNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDE4LTA1LTI0ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZHMgc29tZSB0ZXN0cyB0byBlbnN1cmUg
d2UgZG8gbm90IHJlZ3Jlc3MgTExEQiBwcmV0dHktcHJpbnRpbmcgb2YgV1RGOjpTdHJpbmdJbXBs
CisgICAgICAgIGFuZCBXVEY6OlN0cmluZyBvYmplY3RzLgorCisgICAgICAgIFRoZSB0ZXN0cyBt
YWtlIHVzZSBvZiB0aGUgTExEQiBQeXRob24gQVBJIGFuZCBhIHNpbXBsZSBkZWJ1Zy1idWlsdCB0
ZXN0IHByb2dyYW0sCisgICAgICAgIGxsZGJXZWJLaXRUZXN0ZXIsIHRvIHJ1bi4gVGhlIHNjcmlw
dCB0ZXN0LXdlYmtpdHB5IHdpbGwgb25seSBydW4gdGhlIExMREIgdW5pdAorICAgICAgICB0ZXN0
cyBpZiBsbGRiV2ViS2l0VGVzdGVyIGV4aXN0cyBpbiB0aGUgZGVidWcgYnVpbHQgcHJvZHVjdHMg
ZGlyZWN0b3J5IGFuZCB0aGUKKyAgICAgICAgTExEQiBQeXRob24gbW9kdWxlIGNhbiBiZSBmb3Vu
ZC4gRm9yIG5vdywgd2UgYnVpbGQgbGxkYldlYktpdFRlc3RlciBhbmQgcnVuCisgICAgICAgIHRo
ZSBMTERCIHVuaXQgdGVzdHMgb25seSBvbiBNYWMuCisKKyAgICAgICAgKiBNYWtlZmlsZTogQnVp
bGQgdGhlIHNpbXBsZSB0ZXN0IHRvb2wgbGxkYldlYktpdFRlc3RlciBvbiBNYWMuIEFsdGhvdWdo
IHRoaXMgbWFrZWZpbGUKKyAgICAgICAgc3VwcG9ydHMgYnVpbGRpbmcgdGhlIHRvb2wgZm9yIGVp
dGhlciBSZWxlYXNlIGFuZCBEZWJ1ZyB3ZSBvbmx5IHN1cHBvcnQgcnVubmluZyB0aGUgdGVzdHMK
KyAgICAgICAgd2l0aCBhIGRlYnVnLWJ1aWx0IHZlcnNpb24gb2YgbGxkYldlYktpdFRlc3Rlci4g
V2Ugc2hvdWxkIGxvb2sgdG8gb3ZlcnJpZGUgYSBzcGVjaWZpZWQKKyAgICAgICAgY29uZmlndXJh
dGlvbiBzdHlsZSBhbmQgYWx3YXlzIGJ1aWxkIGxsZGJXZWJLaXRUZXN0ZXIgZm9yIERlYnVnLgor
ICAgICAgICAqIFNjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQ6IEV4dHJhY3QgbG9naWMgdG8gY29t
cHV0ZSB0aGUgcGF0aCB0byB0aGUgTExEQiBQeXRob24gbW9kdWxlCisgICAgICAgIGZyb20gaGVy
ZSB0byBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBzbyB0aGF0
IGl0IGNhbiB1c2VkIGJ5IGJvdGgKKyAgICAgICAgdGhpcyBzY3JpcHQgYW5kIGxsZGIvbGxkYl93
ZWJraXRfdW5pdHRlc3QucHkuIEFsc28gaW1wb3J0IHRoZSBsbGRiIG1vZHVsZSBhdCB0aGUgdG9w
IG9mCisgICAgICAgIHRoZSBmaWxlIGFuZCB0YWtlIGFkdmFudGFnZSBvZiBQeXRob24ncyBkZWZh
dWx0IGVycm9yIHNlbWFudGljcyB0byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgaWYgdGhl
IGltcG9ydCBmYWlscyBpbnN0ZWFkIG9mIGhhbmRsaW5nIGl0IG91cnNlbGYuIFRoaXMgaGFzIHRo
ZSBzaWRlIGVmZmVjdCB0aGF0IHdlCisgICAgICAgIG5vdyBhbHdheXMgaW1wb3J0IHRoZSBMTERC
IFB5dGhvbiBtb2R1bGUgZXZlbiBpZiB0aGlzIHNjcmlwdCBpcyBpbnZva2VkIHdpdGggLS1oZWxw
LgorICAgICAgICBJZiB0aGlzIHR1cm5zIG91dCB0byBiZSBhIHNpZ25pZmljYW50IGFubm95YW5j
ZSB0aGVuIHdlIGNhbiBsb29rIHRvIGR5bmFtaWNhbGx5IGltcG9ydAorICAgICAgICB0aGUgbW9k
dWxlIGFzIHdlIGRpZCBiZWZvcmUgdGhpcyBjaGFuZ2UuCisgICAgICAgICh3ZWJraXRfYnVpbGRf
ZGlyKToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZGV2ZWxvcGVyX2Rpcik6IERlbGV0ZWQu
CisgICAgICAgIChpbXBvcnRfbGxkYik6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weTogVXBkYXRlIEZJWE1FIGNv
bW1lbnQgdG8gcmVmbGVjdAorICAgICAgICB0aGF0IGZhY3QgdGhhdCB0ZXN0LXdlYmtpdHB5IGRv
ZXMgbm90IHN1cHBvcnQgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcy4gVGhpcyBpcyBiZWNhdXNl
CisgICAgICAgIHRlc3Qtd2Via2l0cHkgY3VycmVudGx5IGltcGxlbWVudHMgcGFyYWxsZWxpc20g
YnkgYnJlYWtpbmcgZG93biBleGlzdGluZyB0ZXN0IGNsYXNzZXMKKyAgICAgICAgaW50byBpbmRp
dmlkdWFsIHRlc3QgbWV0aG9kcyBpdHNlbGYgYW5kIGhhdmluZyBlYWNoIHdvcmtlciBydW4gZXhh
Y3RseSBvbmUgdGVzdCBtZXRob2QgKHZpYQorICAgICAgICB1bml0dGVzdC5UZXN0TG9hZGVyLmxv
YWRUZXN0c0Zyb21OYW1lKCkpIGF0IGEgdGltZS4gQXMgYSByZXN1bHQgb2YgdGhpcyByZW9yZ2Fu
aXphdGlvbiwKKyAgICAgICAgc2V0VXBNb2R1bGUoKS9zZXRVcENsYXNzKCkgYXJlIGNhbGxlZCBm
b3IgZWFjaCB0ZXN0IG1ldGhvZCBhcyBvcHBvc2VkIHRvIG9uY2UgcGVyIHRlc3QKKyAgICAgICAg
Y2xhc3MvdGVzdCBtb2R1bGUuCisgICAgICAgIChyZW1vdmVfZGlyKTogRGl0dG8uCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAg
IChTeXN0ZW1Ib3N0KToKKyAgICAgICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9k
aXJlY3RvcnkpOiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5w
eToKKyAgICAgICAgKG1heWJlX2FkZF9sbGRiX3dlYmtpdF90ZXN0cyk6IEFkZGVkLgorICAgICAg
ICAobWFpbik6IENhbGwgbWF5YmVfYWRkX2xsZGJfd2Via2l0X3Rlc3RzKCkgdG8gY29uZGl0aW9u
YWxseSBhZGQgdGhlIGxsZGJfd2Via2l0IHRlc3RzCisgICAgICAgIHRvIHRoZSB0ZXN0IHNlYXJj
aCBwYXRoLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29u
ZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZp
ZzogQWRkZWQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVBy
b3ZpZGVycyk6CisgICAgICAgICh1dGYxNlN0cmluZyk6CisgICAgICAgICh0ZXN0U3VtbWFyeVBy
b3ZpZGVycyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGRiL2xsZGJfd2Via2l0X3Vu
aXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKGRlc3Ryb3lfY2FjaGVkX2RlYnVnX3Nlc3Npb24p
OgorICAgICAgICAoTExEQkRlYnVnU2Vzc2lvbik6CisgICAgICAgIChMTERCRGVidWdTZXNzaW9u
LnNldHVwKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24udGVhckRvd24pOgorICAgICAgICAo
VGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0
VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5fc2JGcmFtZSk6CisgICAg
ICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1h
cnlQcm92aWRlcl9udWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5z
ZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgor
ICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9T
dW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRl
cnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5n
KToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19T
dW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRl
cnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgor
ICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1h
cnlQcm92aWRlcl84Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5z
ZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyk6CisKIDIw
MTgtMDUtMjEgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIHRl
c3Qtd2Via2l0cHkgbWVzc2FnZXMgbG9nZ2VkIHVzaW5nIF9fbWFpbl9fIGxvZ2dlciBhcmUgbm90
IGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvVG9vbHMvTWFrZWZpbGUgYi9Ub29scy9NYWtlZmlsZQpp
bmRleCA2YTFmNzdjZTYzNTczZTVmZTg5MTAzNDc2ODI1MzczMDA0NWI5MjQzLi5jYTA3ZjE4ODFi
YzkxZmU4ZTUyMmQ2NmUzZGY3YjgxZjc1ODBmNDRjIDEwMDY0NAotLS0gYS9Ub29scy9NYWtlZmls
ZQorKysgYi9Ub29scy9NYWtlZmlsZQpAQCAtMiw3ICsyLDcgQEAgTU9EVUxFUyA9IER1bXBSZW5k
ZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgTWluaUJyb3dzZXIgLi4vU291cmNlL1RoaXJkUGFydHkv
Z3Rlc3QKIAogaWZuZXEgKCwkKFNES1JPT1QpKQogCWlmZXEgKCwkKGZpbmRzdHJpbmcgbWFjb3N4
LCQoU0RLUk9PVCkpKQotCQlNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5l
ciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZSBUZXN0V2ViS2l0QVBJCisJCU1PRFVM
RVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5
L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkgbGxkYi9sbGRiV2ViS2l0VGVzdGVyCiAJZW5kaWYK
IAlpZm5lcSAoLCQoZmluZHN0cmluZyBpcGhvbmUsJChTREtST09UKSkpCiAJCU1PRFVMRVMgKz0g
TW9iaWxlTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1s
YXlvdXQgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CmluZGV4IGQ0MTg2NDQ1NTgz
NmUzYjBlMmIwNjU0NmI5YmFiNjI2Njg1ODZlYzUuLjZmNmViYTQyZGU4MTc1MzYyYjJjMjE5Nzc5
MTZkODc0YjU1MDRjZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlv
dXQKKysrIGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dApAQCAtMzEsNiArMzEsOSBA
QCBpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHNldHMgaW1wb3J0IFNldAogCitm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAor
c3lzLnBhdGguYXBwZW5kKFN5c3RlbUhvc3QoKS5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9y
eSgpKQoraW1wb3J0IGxsZGIKIAogZnJhbWV3b3JrID0gIldlYkNvcmUiCiBidWlsZF9kaXJlY3Rv
cnkgPSAiIgpAQCAtNDEsMjEgKzQ0LDYgQEAgZGVmIHdlYmtpdF9idWlsZF9kaXIoKToKICAgICBz
Y3JpcHRwYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQog
ICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb3MucGF0aC5qb2luKHNjcmlwdHBh
dGgsICJ3ZWJraXQtYnVpbGQtZGlyZWN0b3J5IiksICItLXRvcC1sZXZlbCJdKS5zdHJpcCgpCiAK
LWRlZiBkZXZlbG9wZXJfZGlyKCk6Ci0gICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0
KFsieGNvZGUtc2VsZWN0IiwgIi0tcHJpbnQtcGF0aCJdKQotCi1kZWYgaW1wb3J0X2xsZGIoKToK
LSAgICB4Y29kZV9jb250ZW50c19wYXRoID0gb3MucGF0aC5zcGxpdChkZXZlbG9wZXJfZGlyKCkp
WzBdCi0gICAgbGxkYl9mcmFtZXdvcmtfcGF0aCA9IG9zLnBhdGguam9pbih4Y29kZV9jb250ZW50
c19wYXRoLCAiU2hhcmVkRnJhbWV3b3JrcyIsICJMTERCLmZyYW1ld29yayIsICJSZXNvdXJjZXMi
LCAiUHl0aG9uIikKLSAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9mcmFtZXdvcmtfcGF0aCkKLQot
ICAgIExMREJfTU9EVUxFX05BTUUgPSAibGxkYiIKLSAgICB0cnk6Ci0gICAgICAgIGdsb2JhbHMo
KVtMTERCX01PRFVMRV9OQU1FXSA9IF9faW1wb3J0X18oTExEQl9NT0RVTEVfTkFNRSkKLSAgICBl
eGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHByaW50ICJGYWlsZWQgdG8gaW1wb3J0IHt9IGZy
b20ge30iLmZvcm1hdChMTERCX01PRFVMRV9OQU1FLCBsbGRiX2ZyYW1ld29ya19wYXRoKQotICAg
ICAgICBzeXMuZXhpdCgxKQotCiBkZWYgdmVyaWZ5X3R5cGUodGFyZ2V0LCB0eXBlKToKICAgICB0
eXBlbmFtZSA9IHR5cGUuR2V0TmFtZSgpCiAgICAgc2Vlbk9mZnNldCA9IFNldCgpCkBAIC0xOTYs
NyArMTg0LDYgQEAgZGVmIG1haW4oKToKICAgICAgICAgYnVpbGRfZGlyID0gYXJncy5idWlsZF9k
aXJlY3RvcnkKIAogICAgIHRhcmdldF9wYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgYXJn
cy5jb25maWcsIGFyZ3MuZnJhbWV3b3JrICsgIi5mcmFtZXdvcmsiLCBhcmdzLmZyYW1ld29yayk7
Ci0gICAgaW1wb3J0X2xsZGIoKQogICAgIGR1bXBfY2xhc3ModGFyZ2V0X3BhdGgsIGFyZ3MuY2xh
c3NuYW1lLCBhcmdzLmFyY2gpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91
bml0dGVzdC5weQppbmRleCA4OTIxY2E5ODI4NjRiNzQxOTQ5YjI2NjQ1OTg4MTBlN2ViNDMzMDBm
Li4yMmViN2NlNGE0NThjZjA3MmJlN2QzMDFkZjI1NDcyODg0ZTgzYmJjIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5p
dHRlc3QucHkKQEAgLTYwLDcgKzYwLDggQEAgZnJvbSAuc3ZuIGltcG9ydCBTVk4KIAogIyBXZSBj
YWNoZSB0aGUgbW9jayBTVk4gcmVwbyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBm
b3IgZWFjaCBjYWxsIHRvIGFuIFNWTlRlc3Qgb3IgR2l0VGVzdCB0ZXN0XyBtZXRob2QuCiAjIFdl
IHN0b3JlIGl0IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSB0aGlz
IGNhY2hlZCByZXBvIG9uIGV4aXQoMykuCi0jIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIG1p
Z3JhdGUgdG8gUHl0aG9uIDIuNy4gVW5pdHRlc3QgaW4gUHl0aG9uIDIuNyBzdXBwb3J0cyBtb2R1
bGUtc3BlY2lmaWMgc2V0dXAgYW5kIHRlYXJkb3duIGZ1bmN0aW9ucy4KKyMgRklYTUU6IFJlbW92
ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1
cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3Rs
eSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgogY2FjaGVkX3N2bl9yZXBvX3BhdGggPSBOb25lCiAK
IApAQCAtNzAsNyArNzEsOCBAQCBkZWYgcmVtb3ZlX2RpcihwYXRoKToKICAgICBzaHV0aWwucm10
cmVlKHBhdGgpCiAKIAotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRlIHRvIFB5
dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNwZWNpZmlj
IHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNl
IHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBz
ZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIg
Y2xhc3MvbW9kdWxlKS4KIEBhdGV4aXQucmVnaXN0ZXIKIGRlZiBkZWxldGVfY2FjaGVkX21vY2tf
cmVwb19hdF9leGl0KCk6CiAgICAgaWYgY2FjaGVkX3N2bl9yZXBvX3BhdGg6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CmluZGV4IGEx
NTM0MjIwMWQ4MzM0MTQ3MzFlYmQwZjc2ZjcxNzlhNmYwYmQ2ZTMuLjQzZDZkNzlmYzQ3MjM5NDAw
MWZjOTRmOTQyYjE5OWE0YTljZGY4YjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CkBAIC00NywzICs0Nyw5IEBAIGNsYXNzIFN5
c3RlbUhvc3Qob2JqZWN0KToKIAogICAgIGRlZiBzeW1ib2xpY2F0ZV9jcmFzaF9sb2dfaWZfbmVl
ZGVkKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLnJlYWRfdGV4
dF9maWxlKHBhdGgpCisKKyAgICBkZWYgcGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rvcnkoc2Vs
Zik6CisgICAgICAgIGlmIG5vdCBzZWxmLnBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICAgICAg
cmV0dXJuICcnCisgICAgICAgIHhjb2RlX2RldmVsb3Blcl9kaXJlY3RvcnkgPSBzZWxmLmV4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbJ3hjb2RlLXNlbGVjdCcsICctLXByaW50LXBhdGgnXSwgcmV0dXJu
X3N0ZGVycj1GYWxzZSkucnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5h
YnNwYXRoKHNlbGYuZmlsZXN5c3RlbS5qb2luKHhjb2RlX2RldmVsb3Blcl9kaXJlY3RvcnksICcu
LicsICdTaGFyZWRGcmFtZXdvcmtzJywgJ0xMREIuZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywgJ0En
LCAnUmVzb3VyY2VzJywgJ1B5dGhvbicpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpp
bmRleCA1ZmFjYWE1NDZkZWU5NjU4YmFjOTg0OGVhMDJlMWZjNDgyYTBmMmVmLi5jYjBjZDBhZjIw
YWUxZTYwMjQxMjE4MWE0MjcxZGM1NmNjYTdmZDdhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
bWFpbi5weQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSwgSW5j
LgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQu
b3JnKQorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw2ICszOSw4IEBAIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNv
bmZpZ3VyZV9sb2dnaW5nCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBp
bXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3Qg
aW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IENvbmZp
ZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdlYmtpdHB5
LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBp
bXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQpAQCAtNDUsNiArNDgsMjEgQEAgZnJvbSB3ZWJr
aXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiAKK2RlZiBtYXliZV9hZGRfbGxkYl93ZWJraXRf
dGVzdHModGVzdGVyLCB3ZWJraXRfcm9vdCk6CisgICAgaG9zdCA9IFN5c3RlbUhvc3QoKQorICAg
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IGhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rv
cnkoKQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6Cisg
ICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBm
aW5kIExMREIgUHl0aG9uIG1vZHVsZSBkaXJlY3RvcnkgJ3t9Jy4iLmZvcm1hdChsbGRiX3B5dGhv
bl9kaXJlY3RvcnkpKQorICAgICAgICByZXR1cm4KKyAgICBidWlsZF9kaXJlY3RvcnkgPSBDb25m
aWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkuYnVpbGRfZGlyZWN0b3J5KCdEZWJ1
ZycpCisgICAgbGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oYnVp
bGRfZGlyZWN0b3J5LCAnbGxkYldlYktpdFRlc3RlcicpCisgICAgaWYgbm90IG9zLnBhdGguZXhp
c3RzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKToKKyAgICAgICAgX2xvZy5pbmZvKCJT
a2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgJ3t9Jy4iLmZvcm1hdChs
bGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSkpCisgICAgICAgIHJldHVybgorICAgIGlmIGxs
ZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgIHN5cy5wYXRoLmFw
cGVuZChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKwogZGVmIG1haW4oKToKICAgICBj
b25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIApAQCAtNTgsNiArNzYsOCBAQCBkZWYgbWFp
bigpOgogICAgIGlmIG5vdCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5w
bGF0Zm9ybSA9PSAnY3lnd2luJyk6CiAgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpv
aW4od2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcp
CiAKKyAgICBtYXliZV9hZGRfbGxkYl93ZWJraXRfdGVzdHModGVzdGVyLCB3ZWJraXRfcm9vdCkK
KwogICAgIHRlc3Rlci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5p
dHRlc3QnLCksICdhcmUgcmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBzeXMu
cGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJyk6CiAgICAgICAgIHRlc3Rlci5za2lwKCgnd2Via2l0
cHkuY29tbW9uLmNoZWNrb3V0JywgJ3dlYmtpdHB5LmNvbW1vbi5jb25maWcnLCAnd2Via2l0cHku
dG9vbCcpLCAnZmFpbCBob3JyaWJseSBvbiB3aW4zMicsIDU0NTI2KQpkaWZmIC0tZ2l0IGEvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lMjBiYzVkNzc0ZmYzMTA0MDMwYmViM2NkZmUyMGZkMTk1NjcyMDdiCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcKQEAgLTAsMCArMSw5MCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1LTIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8g
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8g
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
Ly8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgIi4uLy4uLy4uLy4uL0ludGVybmFsL0NvbmZpZ3Vy
YXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKworVVNFX0lOVEVSTkFMX1NESyA9ICQo
VVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5BTF9TREtfUHJv
ZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVfSU5URVJOQUxf
U0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOwor
CitDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUrKzE0OworQ0xBTkdfQ1hYX0xJQlJB
UlkgPSBsaWJjKys7CitDTEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dB
Uk5fQ09OU1RBTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9O
UyA9IE5POworQ0xBTkdfV0FSTl9FTVBUWV9CT0RZID0gWUVTOworQ0xBTkdfV0FSTl9FTlVNX0NP
TlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdf
V0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9IGR3YXJmLXdpdGgtZHN5bTsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CitHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBkZWZhdWx0OworR0NDX0VOQUJMRV9DUFBfRVhDRVBU
SU9OUyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IFlFUzsKK0dDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworR0NDX0VOQUJMRV9TWU1CT0xfU0VQQVJBVElPTiA9IE5POworR0ND
X0ZBU1RfT0JKQ19ESVNQQVRDSCA9IFlFUzsKK0dDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9M
UyA9IFlFUzsKK0dDQ19PQkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxF
X1BSRUZJWF9IRUFERVIgPSBZRVM7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChE
RUJVR19ERUZJTkVTKSAkKGluaGVyaXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOwor
R0NDX1RIUkVBRFNBRkVfU1RBVElDUyA9IE5POworR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9S
UyA9IFlFUzsKK0dDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OXyA9IFlFUzsKK0dDQ19X
QVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CitHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX05FV0xJTkUgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CitHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKK0dDQ19XQVJOX05PTl9WSVJU
VUFMX0RFU1RSVUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9TSUdOX0NPTVBBUkUgPSBZRVM7CitHQ0Nf
V0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9B
VVRPUyA9IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKK0dDQ19XQVJOX1VO
VVNFRF9WQVJJQUJMRSA9IE5POworV0FSTklOR19DRkxBR1MgPSAtV2Nhc3QtcXVhbCAtV2NoYXIt
c3Vic2NyaXB0cyAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1zZWxmIC1XbWlzc2lu
Zy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BhY2tlZCAtV3BvaW50ZXIt
YXJpdGggLVdyZWR1bmRhbnQtZGVjbHMgLVd1bmRlZiAtV3dyaXRlLXN0cmluZ3MgLVdleGl0LXRp
bWUtZGVzdHJ1Y3RvcnMgLVdnbG9iYWwtY29uc3RydWN0b3JzIC1XdGF1dG9sb2dpY2FsLWNvbXBh
cmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaDsKKworSEVBREVSX1NFQVJDSF9QQVRIUyA9ICR7QlVJ
TFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZTsKKworVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IgPSAkKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SJChNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQ6c3VmZml4OmlkZW50aWZpZXIpKTsKK1RBUkdFVF9NQUNfT1NfWF9WRVJT
SU9OX01BSk9SXzEwID0gMTAxMDAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTEg
PSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMiA9IDEwMTIwMDsKK1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEzID0gMTAxMzAwOworCisvLyBERUJVR19ERUZJ
TkVTLCBHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMLCBTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCBhbmQg
REVBRF9DT0RFX1NUUklQUElORyB2YXJ5IGJldHdlZW4gdGhlIGRlYnVnIGFuZCBub3JtYWwgdmFy
aWFudHMuCisvLyBXZSBzZXQgdXAgdGhlIHZhbHVlcyBmb3IgZWFjaCB2YXJpYW50IGhlcmUsIGFu
ZCBoYXZlIHRoZSBEZWJ1ZyBjb25maWd1cmF0aW9uIGluIHRoZSBYY29kZSBwcm9qZWN0IHVzZSB0
aGUgX2RlYnVnIHZhcmlhbnQuCitERUJVR19ERUZJTkVTX2RlYnVnID0gOworREVCVUdfREVGSU5F
U19ub3JtYWwgPSBOREVCVUc7CitERUJVR19ERUZJTkVTID0gJChERUJVR19ERUZJTkVTXyQoQ1VS
UkVOVF9WQVJJQU5UKSk7CisKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAkKEdDQ19PUFRJTUla
QVRJT05fTEVWRUxfJChDVVJSRU5UX1ZBUklBTlQpKTsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUxf
bm9ybWFsID0gMzsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcgPSAwOworCitTREtST09U
ID0gbWFjb3N4LmludGVybmFsOworCitPVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdT
KTsKK09USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsK
K09USEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVs
ZWFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45ZWFkZTljMWNhZTM3OWEzZWUxOTIwOGI3OTdkZmNj
MTEyYTc1NzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDQxIEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8v
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiQmFzZS54
Y2NvbmZpZyIKKworT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKworVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOworCitNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8kKFBMQVRGT1JNX05BTUUp
XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK01BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVF9tYWNvc3hfMTAxMDAwID0gMTAuMTA7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFj
b3N4XzEwMTEwMCA9IDEwLjExOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEy
MDAgPSAxMC4xMjsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMzAwID0gMTAu
MTM7CisKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdf
SU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0Vf
SU5URVJOQUxfU0RLKSk7CitTREtST09UXyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4
LmludGVybmFsOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZp
Z3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wNjY2MDAwZDFhZmRkN2RkMWNlNWZmYzFiMmQxZmUxMDUyM2Q1ZTNlCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJX
ZWJLaXRUZXN0ZXIueGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworUFJPRFVDVF9OQU1FID0gJChUQVJHRVRfTkFNRSk7CmRp
ZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUgYi9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4YzIxZTFiYTM4N2E4
YmE0ZmM0M2YxNDQ0YzM4MGVlYzc5ZWRlOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpAQCAtMCwwICsxLDIgQEAKK1NDUklQVFNfUEFUSCA9
IC4uLy4uL1NjcmlwdHMKK2luY2x1ZGUgLi4vLi4vLi4vTWFrZWZpbGUuc2hhcmVkCmRpZmYgLS1n
aXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJL
aXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZDM0NzQ4Yzc1
ZWNmNTE3NDczOTdlMWU1YTVjNzBiODkwYzcwNTAwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMCwwICsxLDIwMiBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVWZXJz
aW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9iamVj
dHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTdDQjY4NDRCMUFG
QTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLzsg
fTsKKwkJQ0UzRjQ0MjYyMDVDNkEwMTAwNzE5NUIzIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29y
ayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFM0Y0
NDIyMjA1QzY2OUMwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07Cisv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5Rmls
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsK
KwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CisvKiBFbmQgUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2Vj
dGlvbiAqLworCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0
ZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxsZGJX
ZWJLaXRUZXN0ZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTdDQjY4
NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IG1haW4uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUNF
M0Y0NDIyMjA1QzY2OUMwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1l
d29yazsgbmFtZSA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gU0RL
Uk9PVDsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RTFBRjAyNzZDMDAz
RkM4RDEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJ
CUNFM0Y0NDI2MjA1QzZBMDEwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTAxQUZDNEQwQTAwOEMz
MzM4IC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAq
LywKKwkJCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmln
ICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhj
Y29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMSA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTAxQUZDNEQwQTAw
OEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVC
MyAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRi
V2ViS2l0VGVzdGVyICovLAorCQkJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0
cyAqLywKKwkJCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNjcmlwdENvcmUuZnJh
bWV3b3JrICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdD
NEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdy
b3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxs
ZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxs
ZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLywKKwkJCSk7CisJ
CQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gRnJhbWV3
b3JrczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAg
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk3QzRB
QjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjNBODFB
RjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJN0M0
QUIzOUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8sCisJCQkJN0M0QUIzOUUxQUYwMjc2
QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJN0M0QUIzOUYxQUYwMjc2QzAwM0ZDOEQx
IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRl
cGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXBy
b2R1Y3ROYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA3QzRB
QjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJ
CTdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlz
YSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sg
PSAwNzAwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjM5QzFBRjAy
NzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJs
bGRiV2ViS2l0VGVzdGVyIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMu
MiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5j
b2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQltYWlu
R3JvdXAgPSA3QzRBQjM5ODFBRjAyNzZDMDAzRkM4RDE7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSA3
QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0
aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJN0M0QUIz
QTAxQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQl9Owor
LyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2VzICov
ID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVD
IC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJ
CTdDNEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1
MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1Zyki
OworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAiJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
X2RlYnVnKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBNzFBRjAy
NzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MzFBRkM0RDlDMDA4
QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZD
OEQxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
YXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBs
bGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07
CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBS
ZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5
QzFBRjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9q
ZWN0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E2MUFGMDI3NkMwMDNG
QzhEMSAvKiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFz
ZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBODFBRjAy
NzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgImxsZGJXZWJLaXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZD
OEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNl
ICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1
cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gN0M0QUIzOTkxQUYwMjc2
QzAwM0ZDOEQxIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L21haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYTQ2NGU0OGNjMTliMjYxZmJiNzVlMmY3ZGZhODRjM2I0
YTc5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFp
bi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxpb3N0cmVhbT4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK2V4dGVybiB2b2lkIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRl
cnMoKTsKK3ZvaWQgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpIHsgcmV0dXJuOyB9
CisKKy8vIEZyb20gVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuaAordGVt
cGxhdGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBTdHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hh
cjE2X3QgKCZzdHJpbmcpW2xlbmd0aF0pCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCAtIDEpOworICAgIGZvciAoYXV0byBj
IDogc3RyaW5nKQorICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykp
OworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RT
dW1tYXJ5UHJvdmlkZXJzKCkKK3sKKyAgICBTdHJpbmcgYU51bGxTdHJpbmcgeyAiIiB9OworICAg
IFN0cmluZ0ltcGwqIGFOdWxsU3RyaW5nSW1wbCA9IGFOdWxsU3RyaW5nLmltcGwoKTsKKworICAg
IFN0cmluZyBhbkVtcHR5U3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbkVtcHR5U3Ry
aW5nSW1wbCA9IGFuRW1wdHlTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuOEJpdFN0cmlu
ZyB7ICJyw6lzdW3DqSIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbjhCaXRTdHJpbmdJbXBsID0gYW44
Qml0U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhMTZCaXRTdHJpbmcgPSB1dGYxNlN0cmlu
Zyh1Ilx1MTY4MENhcHB1Y2Npbm9cdTE2ODAiKTsKKyAgICBTdHJpbmdJbXBsKiBhMTZCaXRTdHJp
bmdJbXBsID0gYTE2Qml0U3RyaW5nLmltcGwoKTsKKworICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1h
cnlQcm92aWRlcnMoKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKK3sKKyAgICB0ZXN0U3VtbWFyeVByb3ZpZGVycygpOworICAgIHN0ZDo6Y2VyciA8PCAiVGhp
cyBleGVjdXRhYmxlIGRvZXMgbm90aGluZyBhbmQgaXMgb25seSBtZWFudCBmb3IgZGVidWdnaW5n
IGxsZGJfd2Via2l0LnB5LiIgPDwgc3RkOjplbmRsOworICAgIHJldHVybiAwOworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL2xsZGIvbGxk
Yl93ZWJraXRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzFiZDAyNTM1NjllYTZkNGY5NTQyMTFi
ZTdmNDVmNTkxOWY1MmI3NAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJr
aXRfdW5pdHRlc3QucHkKQEAgLTAsMCArMSwxNDAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworIyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworaW1wb3J0IGF0ZXhpdAoraW1wb3J0IGxsZGIKK2ltcG9ydCBsbGRiX3dlYmtp
dAoraW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0
cHkucG9ydC5jb25maWcgaW1wb3J0IENvbmZpZworCisKKyMgV2UgY2FjaGUgdGhlIGxsZGIgZGVi
dWcgc2Vzc2lvbiBzdGF0ZSBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFj
aCBjYWxsIHRvIGEgc2VyaWFsX3Rlc3RfIG1ldGhvZC4KKyMgV2Ugc3RvcmUgaXQgaW4gYSBnbG9i
YWwgdmFyaWFibGUgc28gdGhhdCB3ZSBjYW4gZGVsZXRlIHRoaXMgY2FjaGVkIHN0YXRlIG9uIGV4
aXQoMykuCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMg
Y2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUo
KQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK2NhY2hlZF9k
ZWJ1Z19zZXNzaW9uID0gTm9uZQorCisKKyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13
ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xh
c3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9t
b2R1bGUpLgorQGF0ZXhpdC5yZWdpc3RlcgorZGVmIGRlc3Ryb3lfY2FjaGVkX2RlYnVnX3Nlc3Np
b24oKToKKyAgICBpZiBjYWNoZWRfZGVidWdfc2Vzc2lvbjoKKyAgICAgICAgY2FjaGVkX2RlYnVn
X3Nlc3Npb24udGVhckRvd24oKQorCisKK2NsYXNzIExMREJEZWJ1Z1Nlc3Npb24ob2JqZWN0KToK
KyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0dXAoY2xzKToKKyAgICAgICAgTExEQl9XRUJL
SVRfVEVTVEVSX05BTUUgPSAnbGxkYldlYktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RF
U1RJTkdfRlVOQ1RJT05fTkFNRSA9ICdicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJwor
CisgICAgICAgIGNscy5zYkRlYnVnZ2VyID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAg
ICAgIGNscy5zYkRlYnVnZ2VyLlNldEFzeW5jKEZhbHNlKQorCisgICAgICAgIGhvc3QgPSBTeXN0
ZW1Ib3N0KCkKKyAgICAgICAgY29uZmlnID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0LmZp
bGVzeXN0ZW0pCisgICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhvc3Qu
ZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksIExMREJfV0VC
S0lUX1RFU1RFUl9OQU1FKQorCisgICAgICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVnZ2Vy
LkNyZWF0ZVRhcmdldFdpdGhGaWxlQW5kQXJjaChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVj
dXRhYmxlKSwgbGxkYi5MTERCX0FSQ0hfREVGQVVMVCkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRh
cmdldAorICAgICAgICBjbHMuc2JUYXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19G
T1JfVEVTVElOR19GVU5DVElPTl9OQU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdl
dEZpbGVuYW1lKCkpCisKKyAgICAgICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUK
KyAgICAgICAgY2xzLnNiUHJvY2VzcyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwg
ZW52cCwgb3MuZ2V0Y3dkKCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAg
IGFzc2VydCBjbHMuc2JQcm9jZXNzLkdldFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisK
KyAgICAgICAgY2xzLnNiVGhyZWFkID0gY2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDAp
CisgICAgICAgIGFzc2VydCBjbHMuc2JUaHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhl
IGZ1bmN0aW9uIHdpdGggbmFtZSBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3
YW50IHRoZSBmcmFtZSBvZiB0aGUgY2FsbGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJ
TkdfRlVOQ1RJT05fTkFNRSBiZWNhdXNlIGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2Fs
IHZhcmlhYmxlcyB3ZSB3YW50IHRvIHRlc3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNi
VGhyZWFkLkdldEZyYW1lQXRJbmRleCgxKQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bihjbHMpOgorICAgICAgICBjbHMuc2JQ
cm9jZXNzLktpbGwoKQorICAgICAgICBjbHMuc2JUYXJnZXQuRGVsZXRlQWxsQnJlYWtwb2ludHMo
KQorCisKK2NsYXNzIFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBnbG9iYWwg
Y2FjaGVkX2RlYnVnX3Nlc3Npb24KKyAgICAgICAgaWYgbm90IGNhY2hlZF9kZWJ1Z19zZXNzaW9u
OgorICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBMTERCRGVidWdTZXNzaW9uKCkK
KyAgICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNldHVwKCkKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBfc2JGcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNhY2hlZF9kZWJ1Z19z
ZXNzaW9uLnNiRnJhbWUKKworICAgICMgVGhlIExMREIgUHl0aG9uIG1vZHVsZSBkb2VzIG5vdCB3
b3JrIHdpdGggUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBhbmQgY2F1c2VzIGVycm9ycyBvZiB0aGUg
Zm9ybToKKyAgICAjICAgICBvYmpjWzc2Nzk0XTogK1tfX01EUXVlcnkgaW5pdGlhbGl6ZV0gbWF5
IGhhdmUgYmVlbiBpbiBwcm9ncmVzcyBpbiBhbm90aGVyIHRocmVhZCB3aGVuIGZvcmsoKSB3YXMg
Y2FsbGVkLgorICAgICMgICAgICAgICAgICAgICAgICBXZSBjYW5ub3Qgc2FmZWx5IGNhbGwgaXQg
b3IgaWdub3JlIGl0IGluIHRoZSBmb3JrKCkgY2hpbGQgcHJvY2Vzcy4gQ3Jhc2hpbmcgaW5zdGVh
ZC4KKyAgICAjIFNvLCB3ZSBydW4gdGhlIGZvbGxvd2luZyB0ZXN0cyBzZXJpYWxseS4KKworICAg
ICMgTUFSSzogV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAg
ZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5n
KHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nSW1wbCcp
LCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBp
czhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3Vt
bWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3Ni
RnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50
cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVBy
b3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQu
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUo
J2FuOEJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFy
eSwgInsgbGVuZ3RoID0gOCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTkn
IH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
XzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZC
aXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUi
eyBsZW5ndGggPSAxMywgaXM4Yml0ID0gMCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9c
XHUxNjgwXFx4MDAnIH0iKQorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVy
IHRlc3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3Zp
ZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RG
U3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxT
dHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3Ro
ID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdf
U3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxs
ZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFy
aWFibGUoJ2FuRW1wdHlTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vt
bWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxf
dGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAg
ICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxc
eGU5JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVy
XzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0
cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3Ro
ID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341388</attachid>
            <date>2018-05-25 21:59:42 -0700</date>
            <delta_ts>2018-05-31 14:16:09 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183744-20180525215941.patch</filename>
            <type>text/plain</type>
            <size>41946</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uM2FkNWNjYTJhNTBlMGQ2NzkzZDQ0MjM1MmQyNjU4ZGExMWQ4ZDM5NCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4
IEBACisyMDE4LTA1LTI1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvZHVt
cC1jbGFzcy1sYXlvdXQ6IEV4dHJhY3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUg
TExEQiBQeXRob24gbW9kdWxlCisgICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgK
KyAgICAgICAgdGhpcyBzY3JpcHQgYW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFs
c28gaW1wb3J0IHRoZSBsbGRiIG1vZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxl
IGFuZCB0YWtlIGFkdmFudGFnZSBvZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0
byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFk
IG9mIGhhbmRsaW5nIGl0IG91cnNlbGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdl
CisgICAgICAgIG5vdyBhbHdheXMgaW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBp
ZiB0aGlzIHNjcmlwdCBpcyBpbnZva2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1
cm5zIG91dCB0byBiZSBhIHNpZ25pZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRv
IGR5bmFtaWNhbGx5IGltcG9ydAorICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUg
dGhpcyBjaGFuZ2UuCisgICAgICAgICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAoZGV2ZWxvcGVyX2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxk
Yik6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3NjbV91bml0dGVzdC5weTogVXBkYXRlIEZJWE1FIGNvbW1lbnQgdG8gcmVmbGVjdAorICAg
ICAgICB0aGF0IGZhY3QgdGhhdCB0ZXN0LXdlYmtpdHB5IGRvZXMgbm90IHN1cHBvcnQgY2xhc3Mg
YW5kIG1vZHVsZSBmaXh0dXJlcy4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgIHRlc3Qtd2Via2l0
cHkgY3VycmVudGx5IGltcGxlbWVudHMgcGFyYWxsZWxpc20gYnkgYnJlYWtpbmcgZG93biBleGlz
dGluZyB0ZXN0IGNsYXNzZXMKKyAgICAgICAgaW50byBpbmRpdmlkdWFsIHRlc3QgbWV0aG9kcyBp
dHNlbGYgYW5kIGhhdmluZyBlYWNoIHdvcmtlciBydW4gZXhhY3RseSBvbmUgdGVzdCBtZXRob2Qg
KHZpYQorICAgICAgICB1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCkpIGF0
IGEgdGltZS4gQXMgYSByZXN1bHQgb2YgdGhpcyByZW9yZ2FuaXphdGlvbiwKKyAgICAgICAgc2V0
VXBNb2R1bGUoKS9zZXRVcENsYXNzKCkgYXJlIGNhbGxlZCBmb3IgZWFjaCB0ZXN0IG1ldGhvZCBh
cyBvcHBvc2VkIHRvIG9uY2UgcGVyIHRlc3QKKyAgICAgICAgY2xhc3MvdGVzdCBtb2R1bGUuCisg
ICAgICAgIChyZW1vdmVfZGlyKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAgIChTeXN0ZW1Ib3N0KToKKyAgICAg
ICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkpOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAgICAgKF9pc19leGVj
dXRhYmxlKTogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gY2hlY2sgaWYgYSBwYXRoIGlzIGFuIGV4
ZWN1dGFibGUgZmlsZS4KKyAgICAgICAgKF9maW5kX2xsZGJfd2Via2l0X3Rlc3Rlcik6IFJldHVy
bnMgd2hldGhlciB0aGVyZSBleGlzdHMgYSBEZWJ1ZyBvciBSZWxlYXNlLWJ1aWx0IGxsZGJXZWJL
aXRUZXN0ZXIuCisgICAgICAgIChfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKTogQnVpbGRzIGxs
ZGJXZWJLaXRUZXN0ZXIuIEZvciBub3csIHdlIG9ubHkgc3VwcG9ydCBidWlsZGluZworICAgICAg
ICBsbGRiV2ViS2l0VGVzdGVyIG9uIE1hYy4KKyAgICAgICAgKG1haW4pOiBBZGQgVG9vbHMvbGxk
YiB0byB0aGUgdGVzdCBzZWFyY2ggcGF0aCBpZiB0aGUgcGxhdGZvcm0gaGFzIGxsZGIucHkuCisg
ICAgICAgIChUZXN0ZXIucnVuKTogUGFzcyBhIGJvb2xlYW4gYXMgdG8gd2hldGhlciB3ZSB3aWxs
IHJ1biB0aGUgbGxkYl93ZWJraXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgKFRlc3Rlci5fcnVuX3Rl
c3RzKTogTW9kaWZpZWQgdG8gdGFrZSBhIGJvb2xlYW4gYXMgdG8gd2hldGhlciB0byBydW4gdGhl
IGxsZGJfd2Via2l0IHVuaXQgdGVzdHMuCisgICAgICAgIElmIHdlIHdpbGwgcnVuIHRoZXNlIHRl
c3RzIHRoZW4gYnVpbGQgbGxkYldlYktpdFRlc3RlciBpZiBpdCBoYXMgbm90IGFscmVhZHkgYmVl
biBidWlsdCBhcyB0aGUKKyAgICAgICAgdW5pdCB0ZXN0cyBkZXBlbmQgb24gdGhpcyBwcm9ncmFt
LgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZzogQWRk
ZWQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIv
bWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVy
cyk6CisgICAgICAgICh1dGYxNlN0cmluZyk6CisgICAgICAgICh0ZXN0U3VtbWFyeVByb3ZpZGVy
cyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0
LnB5OiBBZGRlZC4KKyAgICAgICAgKGRlc3Ryb3lfY2FjaGVkX2RlYnVnX3Nlc3Npb24pOgorICAg
ICAgICAoTExEQkRlYnVnU2Vzc2lvbik6CisgICAgICAgIChMTERCRGVidWdTZXNzaW9uLnNldHVw
KToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24udGVhckRvd24pOgorICAgICAgICAoVGVzdFN1
bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFz
cyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5fc2JGcmFtZSk6CisgICAgICAgIChU
ZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92
aWRlcl9udWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxf
dGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgorICAgICAg
ICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXJfOGJpdF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2Vy
aWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKyAg
ICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXJfbnVsbF9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2Vy
aWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcpOgorICAgICAg
ICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92
aWRlcl84Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxf
dGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyk6CisKIDIwMTgtMDUt
MjUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIERpc3Bs
YXkgZGV0YWlsZWQgZXJyb3IgbG9ncyB3aGVuIGEgc2NyaXB0IGZhaWxzIGluIEVXUwpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWFrZWZpbGUgYi9Ub29scy9NYWtlZmlsZQppbmRleCA2YTFmNzdjZTYzNTcz
ZTVmZTg5MTAzNDc2ODI1MzczMDA0NWI5MjQzLi5jYTA3ZjE4ODFiYzkxZmU4ZTUyMmQ2NmUzZGY3
YjgxZjc1ODBmNDRjIDEwMDY0NAotLS0gYS9Ub29scy9NYWtlZmlsZQorKysgYi9Ub29scy9NYWtl
ZmlsZQpAQCAtMiw3ICsyLDcgQEAgTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RS
dW5uZXIgTWluaUJyb3dzZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QKIAogaWZuZXEgKCwk
KFNES1JPT1QpKQogCWlmZXEgKCwkKGZpbmRzdHJpbmcgbWFjb3N4LCQoU0RLUk9PVCkpKQotCQlN
T0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciAuLi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9ndGVzdC94Y29kZSBUZXN0V2ViS2l0QVBJCisJCU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJl
ZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RX
ZWJLaXRBUEkgbGxkYi9sbGRiV2ViS2l0VGVzdGVyCiAJZW5kaWYKIAlpZm5lcSAoLCQoZmluZHN0
cmluZyBpcGhvbmUsJChTREtST09UKSkpCiAJCU1PRFVMRVMgKz0gTW9iaWxlTWluaUJyb3dzZXIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQgYi9Ub29scy9TY3Jp
cHRzL2R1bXAtY2xhc3MtbGF5b3V0CmluZGV4IGQ0MTg2NDQ1NTgzNmUzYjBlMmIwNjU0NmI5YmFi
NjI2Njg1ODZlYzUuLjZmNmViYTQyZGU4MTc1MzYyYjJjMjE5Nzc5MTZkODc0YjU1MDRjZDUgMTAw
NzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKKysrIGIvVG9vbHMvU2Ny
aXB0cy9kdW1wLWNsYXNzLWxheW91dApAQCAtMzEsNiArMzEsOSBAQCBpbXBvcnQgb3MKIGltcG9y
dCBzdWJwcm9jZXNzCiBmcm9tIHNldHMgaW1wb3J0IFNldAogCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorc3lzLnBhdGguYXBwZW5kKFN5
c3RlbUhvc3QoKS5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVjdG9yeSgpKQoraW1wb3J0IGxsZGIK
IAogZnJhbWV3b3JrID0gIldlYkNvcmUiCiBidWlsZF9kaXJlY3RvcnkgPSAiIgpAQCAtNDEsMjEg
KzQ0LDYgQEAgZGVmIHdlYmtpdF9idWlsZF9kaXIoKToKICAgICBzY3JpcHRwYXRoID0gb3MucGF0
aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKQogICAgIHJldHVybiBzdWJwcm9j
ZXNzLmNoZWNrX291dHB1dChbb3MucGF0aC5qb2luKHNjcmlwdHBhdGgsICJ3ZWJraXQtYnVpbGQt
ZGlyZWN0b3J5IiksICItLXRvcC1sZXZlbCJdKS5zdHJpcCgpCiAKLWRlZiBkZXZlbG9wZXJfZGly
KCk6Ci0gICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsieGNvZGUtc2VsZWN0Iiwg
Ii0tcHJpbnQtcGF0aCJdKQotCi1kZWYgaW1wb3J0X2xsZGIoKToKLSAgICB4Y29kZV9jb250ZW50
c19wYXRoID0gb3MucGF0aC5zcGxpdChkZXZlbG9wZXJfZGlyKCkpWzBdCi0gICAgbGxkYl9mcmFt
ZXdvcmtfcGF0aCA9IG9zLnBhdGguam9pbih4Y29kZV9jb250ZW50c19wYXRoLCAiU2hhcmVkRnJh
bWV3b3JrcyIsICJMTERCLmZyYW1ld29yayIsICJSZXNvdXJjZXMiLCAiUHl0aG9uIikKLSAgICBz
eXMucGF0aC5hcHBlbmQobGxkYl9mcmFtZXdvcmtfcGF0aCkKLQotICAgIExMREJfTU9EVUxFX05B
TUUgPSAibGxkYiIKLSAgICB0cnk6Ci0gICAgICAgIGdsb2JhbHMoKVtMTERCX01PRFVMRV9OQU1F
XSA9IF9faW1wb3J0X18oTExEQl9NT0RVTEVfTkFNRSkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgIHByaW50ICJGYWlsZWQgdG8gaW1wb3J0IHt9IGZyb20ge30iLmZvcm1hdChMTERC
X01PRFVMRV9OQU1FLCBsbGRiX2ZyYW1ld29ya19wYXRoKQotICAgICAgICBzeXMuZXhpdCgxKQot
CiBkZWYgdmVyaWZ5X3R5cGUodGFyZ2V0LCB0eXBlKToKICAgICB0eXBlbmFtZSA9IHR5cGUuR2V0
TmFtZSgpCiAgICAgc2Vlbk9mZnNldCA9IFNldCgpCkBAIC0xOTYsNyArMTg0LDYgQEAgZGVmIG1h
aW4oKToKICAgICAgICAgYnVpbGRfZGlyID0gYXJncy5idWlsZF9kaXJlY3RvcnkKIAogICAgIHRh
cmdldF9wYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkX2RpciwgYXJncy5jb25maWcsIGFyZ3MuZnJh
bWV3b3JrICsgIi5mcmFtZXdvcmsiLCBhcmdzLmZyYW1ld29yayk7Ci0gICAgaW1wb3J0X2xsZGIo
KQogICAgIGR1bXBfY2xhc3ModGFyZ2V0X3BhdGgsIGFyZ3MuY2xhc3NuYW1lLCBhcmdzLmFyY2gp
CiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQppbmRleCA4
OTIxY2E5ODI4NjRiNzQxOTQ5YjI2NjQ1OTg4MTBlN2ViNDMzMDBmLi4yMmViN2NlNGE0NThjZjA3
MmJlN2QzMDFkZjI1NDcyODg0ZTgzYmJjIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKQEAgLTYwLDcg
KzYwLDggQEAgZnJvbSAuc3ZuIGltcG9ydCBTVk4KIAogIyBXZSBjYWNoZSB0aGUgbW9jayBTVk4g
cmVwbyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxsIHRvIGFu
IFNWTlRlc3Qgb3IgR2l0VGVzdCB0ZXN0XyBtZXRob2QuCiAjIFdlIHN0b3JlIGl0IGluIGEgZ2xv
YmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSB0aGlzIGNhY2hlZCByZXBvIG9uIGV4
aXQoMykuCi0jIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHdlIG1pZ3JhdGUgdG8gUHl0aG9uIDIu
Ny4gVW5pdHRlc3QgaW4gUHl0aG9uIDIuNyBzdXBwb3J0cyBtb2R1bGUtc3BlY2lmaWMgc2V0dXAg
YW5kIHRlYXJkb3duIGZ1bmN0aW9ucy4KKyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13
ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xh
c3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9t
b2R1bGUpLgogY2FjaGVkX3N2bl9yZXBvX3BhdGggPSBOb25lCiAKIApAQCAtNzAsNyArNzEsOCBA
QCBkZWYgcmVtb3ZlX2RpcihwYXRoKToKICAgICBzaHV0aWwucm10cmVlKHBhdGgpCiAKIAotIyBG
SVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRlIHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0
IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNwZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93
biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3Vw
cG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBN
b2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KIEBh
dGV4aXQucmVnaXN0ZXIKIGRlZiBkZWxldGVfY2FjaGVkX21vY2tfcmVwb19hdF9leGl0KCk6CiAg
ICAgaWYgY2FjaGVkX3N2bl9yZXBvX3BhdGg6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CmluZGV4IGExNTM0MjIwMWQ4MzM0MTQ3MzFl
YmQwZjc2ZjcxNzlhNmYwYmQ2ZTMuLjFjYTI5Mjg0NDk4MjRjMmYwZmMxZjMwY2FlNWVlMTIxYTgz
NGIzZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9z
eXN0ZW1ob3N0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9z
eXN0ZW1ob3N0LnB5CkBAIC00NywzICs0Nyw4IEBAIGNsYXNzIFN5c3RlbUhvc3Qob2JqZWN0KToK
IAogICAgIGRlZiBzeW1ib2xpY2F0ZV9jcmFzaF9sb2dfaWZfbmVlZGVkKHNlbGYsIHBhdGgpOgog
ICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHBhdGgpCisKKyAg
ICBkZWYgcGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgIGlmIG5v
dCBzZWxmLnBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAgICAg
IHJldHVybiBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ3hjcnVuJywgJ2xsZGInLCAnLS1w
eXRob24tcGF0aCddLCByZXR1cm5fc3RkZXJyPUZhbHNlKS5yc3RyaXAoKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rlc3QvbWFpbi5weQppbmRleCA1ZmFjYWE1NDZkZWU5NjU4YmFjOTg0OGVhMDJlMWZjNDgy
YTBmMmVmLi43YWViMmY4NzdmY2Y3ZWRhZmU0OTA5MzNiYzc1MTQ1YzcwNmU2NWM1IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtMSw1ICsxLDYgQEAKICMgQ29weXJpZ2h0IChD
KSAyMDEyIEdvb2dsZSwgSW5jLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsg
KGNqZXJkb25la0B3ZWJraXQub3JnKQorIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNywy
NiArMzgsNjUgQEAgaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBvcnQgY29uZmlndXJlX2xvZ2dpbmcKK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZQogZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmZpbGVzeXN0ZW0gaW1wb3J0IEZpbGVTeXN0ZW0KK2Zy
b20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citm
cm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKIGZyb20gd2Via2l0cHkudGVz
dC5maW5kZXIgaW1wb3J0IEZpbmRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnByaW50ZXIgaW1wb3J0
IFByaW50ZXIKIGZyb20gd2Via2l0cHkudGVzdC5ydW5uZXIgaW1wb3J0IFJ1bm5lciwgdW5pdF90
ZXN0X25hbWUKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCitfaG9zdCA9
IFN5c3RlbUhvc3QoKQorX3dlYmtpdF9yb290ID0gTm9uZQorCisKK2RlZiBfaXNfZXhlY3V0YWJs
ZShwYXRoKToKKyAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUocGF0aCkgYW5kIG9zLmFjY2Vzcyhw
YXRoLCBvcy5YX09LKQorCisKK2RlZiBfZmluZF9sbGRiX3dlYmtpdF90ZXN0ZXIoKToKKyAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGxs
ZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGNvbmZpZy5idWlsZF9k
aXJlY3RvcnkoJ0RlYnVnJyksICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICBpZiBfaXNfZXhlY3V0
YWJsZShsbGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSk6CisgICAgICAgIHJldHVybiBUcnVl
CisgICAgbGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmln
LmJ1aWxkX2RpcmVjdG9yeSgnUmVsZWFzZScpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAgaWYg
X2lzX2V4ZWN1dGFibGUobGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpOgorICAgICAgICBy
ZXR1cm4gVHJ1ZQorICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfYnVpbGRfbGxkYl93ZWJraXRf
dGVzdGVyKCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICBf
bG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0
Zm9ybS4nKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gX2hvc3QuZXhlY3V0aXZl
LnJ1bl9jb21tYW5kKFsnL3Vzci9iaW4vbWFrZScsICdkZWJ1ZyddLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUsIGN3ZD1vcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnbGxkYicsICds
bGRiV2ViS2l0VGVzdGVyJykpID09IDAKKwogCiBkZWYgbWFpbigpOgorICAgIGdsb2JhbCBfd2Vi
a2l0X3Jvb3QKICAgICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIAogICAgIHVwID0g
b3MucGF0aC5kaXJuYW1lCi0gICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pKSkpKSkKKyAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1
cChvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKSkKIAogICAgIHRlc3RlciA9IFRlc3Rlcigp
Ci0gICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywg
J1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2lu
KF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMg
VGhlcmUgaXMgbm8gV2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBX
ZWJLaXQyIHVuaXR0ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCd3aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgotICAgICAgICB0ZXN0ZXIu
YWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdT
Y3JpcHRzJyksICd3ZWJraXQnKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2lu
KF93ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykK
KworICAgIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0LnBhdGhfdG9fbGxkYl9weXRob25f
ZGlyZWN0b3J5KCkKKyAgICBpZiBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6
CisgICAgICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAg
ICAgICAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0
ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGIn
KSkKKyAgICAgICAgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCisgICAgZWxzZToK
KyAgICAgICAgX2xvZy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90
IGZpbmQgcGF0aCB0byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5
KSkKKyAgICAgICAgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQogCiAgICAgdGVz
dGVyLnNraXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwg
J2FyZSByZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5z
dGFydHN3aXRoKCd3aW4nKToKQEAgLTcxLDExICsxMTEsMTEgQEAgZGVmIG1haW4oKToKICAgICAg
ICAgZnJvbSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAg
IHVzZV9saWJyYXJ5KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhf
c3lzX3BhdGgoKQotICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9y
b290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAgdGVzdGVyLmFkZF90
cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZl
cicpKQogICAgIGVsc2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNT
ZXJ2ZXIgdGVzdHM7IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3Rh
bGxlZC4nKQogCi0gICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKKyAgICByZXR1cm4gbm90IHRl
c3Rlci5ydW4od2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRf
dGVzdHMpCiAKIAogZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9u
YW1lcywgZmFpbHVyZXMsIGVycm9ycyk6CkBAIC0xMzEsNyArMTcxLDcgQEAgY2xhc3MgVGVzdGVy
KG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAg
ICBkZWYgcnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRf
dGVzdHM9RmFsc2UpOgogICAgICAgICBzZWxmLl9vcHRpb25zLCBhcmdzID0gc2VsZi5fcGFyc2Vf
YXJncygpCiAgICAgICAgIHNlbGYucHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKIApA
QCAtMTQyLDkgKzE4Miw5IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgX2xv
Zy5lcnJvcignTm8gdGVzdHMgdG8gcnVuJykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0g
ICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisgICAgICAgIHJldHVybiBzZWxm
Ll9ydW5fdGVzdHMobmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQogCi0gICAgZGVm
IF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVz
LCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIFBZVEhP
TlBBVEggaXMgc2V0IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVy
LmFkZGl0aW9uYWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIApAQCAtMTU0LDYgKzE5NCwx
NCBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBh
cnR5IGltcG9ydCBhdXRvaW5zdGFsbF9ldmVyeXRoaW5nCiAgICAgICAgIGF1dG9pbnN0YWxsX2V2
ZXJ5dGhpbmcoKQogCisgICAgICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgorICAg
ICAgICAgICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tpbmcgbGxkYldlYktpdFRl
c3RlciAuLi4iKQorICAgICAgICAgICAgaWYgbm90IF9maW5kX2xsZGJfd2Via2l0X3Rlc3Rlcigp
OgorICAgICAgICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkJ1aWxkaW5nIGxs
ZGJXZWJLaXRUZXN0ZXIgLi4uIikKKyAgICAgICAgICAgICAgICBpZiBub3QgX2J1aWxkX2xsZGJf
d2Via2l0X3Rlc3RlcigpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQg
dG8gYnVpbGQgbGxkYldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
RmFsc2UKKwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAg
X2xvZy53YXJuaW5nKCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBz
ZXJpYWxseSIpCiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9C
YXNlLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzU2NDhmYTc1MWEzMGU5YTA5YTNhNTdmNmVmZjk2
ZWUxMDY3MjdmNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTA5IEBACisvLyBDb3B5
cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
Ly8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZT8gIi4uLy4uLy4uLy4u
Ly4uL0ludGVybmFsL0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKwor
VVNFX0lOVEVSTkFMX1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsK
K1VTRV9JTlRFUk5BTF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVi
dWcgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQo
SEFWRV9JTlRFUk5BTF9TREspOworCitBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwor
Q0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZ
ID0gbGliYysrOworQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKK0NMQU5HX1dBUk5fQkxP
Q0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJ
T04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19X
QVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsK
K0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTkZJTklURV9S
RUNVUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdf
V0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX09CSkNf
TElURVJBTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lT
ID0gWUVTOworQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKK0NMQU5HX1dBUk5f
U1VTUElDSU9VU19NT1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gTk87
CitDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworR0NDX1dBUk5fVU5E
RUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElfSU1BR0VTID0gTk87CitERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitFTkFCTEVfU1RSSUNUX09C
SkNfTVNHU0VORCA9IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CitHQ0Nf
REVCVUdHSU5HX1NZTUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CitH
Q0NfRU5BQkxFX0NQUF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJID0gTk87
CitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NF
UEFSQVRJT04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJB
VEVfREVCVUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsK
K0dDQ19PQkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxFX1BSRUZJWF9I
RUFERVIgPSBZRVM7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJ
TkVTKSAkKGluaGVyaXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOworR0NDX1NZTUJP
TFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dD
Q19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IE5POworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsKK0dD
Q19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
R0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05fQ09N
UEFSRSA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitHQ0NfV0FS
Tl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0g
WUVTOworR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1X
Y2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdp
bml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1X
cGFja2VkIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUt
c3RyaW5ncyAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0
YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitIRUFERVJfU0VB
UkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlOworCitU
QVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05f
TUFKT1IkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmllcikpOworVEFS
R0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hf
VkVSU0lPTl9NQUpPUl8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
XzEzID0gMTAxMzAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTQgPSAxMDE0MDA7
CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEwMTUwMDsKKworU1VQUE9SVEVE
X1BMQVRGT1JNUyA9IG1hY29zeDsKKworREVCVUdfREVGSU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RF
RklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdfREVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18k
KENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKK0RFQURf
Q09ERV9TVFJJUFBJTkcgPSBOTzsKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CisKK1NE
S1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9D
RkxBR1MpOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxB
R1MpOworT1RIRVJfTERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVi
dWdSZWxlYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1YWE2MGVkYzY5
MDJiODg2Yzk0OWZlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDUg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisv
LyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJC
YXNlLnhjY29uZmlnIgorCitPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCitUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKK01BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9ICQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1f
TkFNRSlfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4
XzEwMTMwMCA9IDEwLjEzOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDE0MDAg
PSAxMC4xNDsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAwID0gMTAuMTU7
CisKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gZHdhcmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5U
RVJOQUxfU0RLKSk7CitTREtST09UXyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4Lmlu
dGVybmFsOworCitXS19DQ0FDSEVfRElSID0gJChTUkNST09UKS8uLi8uLi8uLi9Ub29scy9jY2Fj
aGU7CisjaW5jbHVkZSAiLi4vLi4vLi4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIKZGlmZiAtLWdp
dCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0
VGVzdGVyLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRp
b25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY2NjAwMGQxYWZkZDdk
ZDFjZTVmZmMxYjJkMWZlMTA1MjNkNWUzZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmln
CkBAIC0wLDAgKzEsMjQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8g
YXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK1BST0RVQ1RfTkFNRSA9ICQoVEFSR0VUX05BTUUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3
OWVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFr
ZWZpbGUKQEAgLTAsMCArMSwyIEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitpbmNs
dWRlIC4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY3ZWM2NjU5YWY1ODNkNmIxNjBhNzJkMmJhNGEy
OTU2MTc1ODE5OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwy
MDEgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9
IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQ
QlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFp
bi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2
ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFM0Y0NDI2MjA1QzZB
MDEwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMg
LyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAxOworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTEx
QUZDNEQ5QzAwOEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMz
MzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGxkYldlYktp
dFRlc3Rlci54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTMx
QUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBE
ZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEFC
M0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMg
LyogbWFpbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYWluLmNw
cDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1
QjMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBKYXZhU2Ny
aXB0Q29yZS5mcmFtZXdvcms7IHBhdGggPSBTeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0phdmFT
Y3JpcHRDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDRTNGNDQyNjIwNUM2QTAxMDA3
MTk1QjMgLyogSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBF
bmQgUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91
cCBzZWN0aW9uICovCisJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9u
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3
NTExQUZDNEQ5QzAwOEMzMzM4IC8qIEJhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTMxQUZD
NEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MjFB
RkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLywKKwkJCSk7CisJ
CQlwYXRoID0gQ29uZmlndXJhdGlvbnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQk3QzRBQjM5ODFBRjAyNzZDMDAzRkM4RDEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0
aW9ucyAqLywKKwkJCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLywK
KwkJCQlDRTNGNDQyNDIwNUM2NkQ5MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJ
CQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkJQ0UzRjQ0MjIy
MDVDNjY5QzAwNzE5NUIzIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayAqLywKKwkJCSk7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4
RDEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAor
CQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3
OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRU
ZXN0ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2
QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVz
dGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhE
MSAvKiBTb3VyY2VzICovLAorCQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdv
cmtzICovLAorCQkJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJ
CQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkp
OworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJL
aXRUZXN0ZXI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJv
ZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAz
RkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJ
YXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87
CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93
blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYw
Mjc2QzAwM0ZDOEQxOworCQkJcHJvZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZD
OEQxIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAv
KiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3
QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAz
RkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVC
VUdfREVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
N0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
N0M0QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3
NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5k
IFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0
aW9uTGlzdCBzZWN0aW9uICovCisJCTdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFC
M0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIz
QUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9Owor
CXJvb3RPYmplY3QgPSA3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3Qg
Ki87Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAg
Yi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFmODJm
ZTU4YThiZmUwOTY4NmZjMzNkYWI2ZmI0NmI3MTRjMjkwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRlcm4gdm9pZCBi
cmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9yVGVzdGluZ1N1
bW1hcnlQcm92aWRlcnMoKSB7IHJldHVybjsgfQorCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgor
c3RhdGljIFN0cmluZyB1dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAoJnN0cmluZylbbGVuZ3Ro
XSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2Fw
YWNpdHkobGVuZ3RoIC0gMSk7CisgICAgZm9yIChhdXRvIGMgOiBzdHJpbmcpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQorewor
ICAgIFN0cmluZyBhTnVsbFN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYU51bGxTdHJp
bmdJbXBsID0gYU51bGxTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuRW1wdHlTdHJpbmcg
eyAiIiB9OworICAgIFN0cmluZ0ltcGwqIGFuRW1wdHlTdHJpbmdJbXBsID0gYW5FbXB0eVN0cmlu
Zy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW44Qml0U3RyaW5nIHsgInLDqXN1bcOpIiB9OworICAg
IFN0cmluZ0ltcGwqIGFuOEJpdFN0cmluZ0ltcGwgPSBhbjhCaXRTdHJpbmcuaW1wbCgpOworCisg
ICAgU3RyaW5nIGExNkJpdFN0cmluZyA9IHV0ZjE2U3RyaW5nKHUiXHUxNjgwQ2FwcHVjY2lub1x1
MTY4MCIpOworICAgIFN0cmluZ0ltcGwqIGExNkJpdFN0cmluZ0ltcGwgPSBhMTZCaXRTdHJpbmcu
aW1wbCgpOworCisgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAgIHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKCk7CisgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIGV4ZWN1dGFibGUgZG9lcyBu
b3RoaW5nIGFuZCBpcyBvbmx5IG1lYW50IGZvciBkZWJ1Z2dpbmcgbGxkYl93ZWJraXQucHkuXG4i
KTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmNjNjdmN2Y4ODQ5M2ExZWJlZDJkZWI1ZTI2NTRkNTU4Y2RjNWVjMjIKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTQy
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisj
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhdGV4aXQKK2lt
cG9ydCBsbGRiCitpbXBvcnQgbGxkYl93ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1w
b3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGlt
cG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcK
KworCisjIFdlIGNhY2hlIHRoZSBsbGRiIGRlYnVnIHNlc3Npb24gc3RhdGUgc28gdGhhdCB3ZSBk
b24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVhY2ggY2FsbCB0byBhIHNlcmlhbF90ZXN0XyBtZXRo
b2QuCisjIFdlIHN0b3JlIGl0IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRl
bGV0ZSB0aGlzIGNhY2hlZCBzdGF0ZSBvbiBleGl0KDMpLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMg
b25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGku
ZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2Ug
cGVyIGNsYXNzL21vZHVsZSkuCitjYWNoZWRfZGVidWdfc2Vzc2lvbiA9IE5vbmUKKworCisjIEZJ
WE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1v
ZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2Fs
bGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK0BhdGV4aXQucmVnaXN0ZXIKK2Rl
ZiBkZXN0cm95X2NhY2hlZF9kZWJ1Z19zZXNzaW9uKCk6CisgICAgaWYgY2FjaGVkX2RlYnVnX3Nl
c3Npb246CisgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnRlYXJEb3duKCkKKworCitjbGFz
cyBMTERCRGVidWdTZXNzaW9uKG9iamVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNl
dHVwKGNscyk6CisgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FID0gJ2xsZGJXZWJLaXRU
ZXN0ZXInCisgICAgICAgIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUgPSAnYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycKKworICAgICAgICBjbHMuc2JEZWJ1Z2dlciA9IGxs
ZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgICAgICBjbHMuc2JEZWJ1Z2dlci5TZXRBc3luYyhG
YWxzZSkKKworICAgICAgICAjIEZJWE1FOiBGaW5kIGEgYnVpbHQgbGxkYldlYktpdFRlc3RlciB3
aXRob3V0IGhhcmRjb2RpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMuCisgICAgICAgIGhvc3QgPSBT
eXN0ZW1Ib3N0KCkKKyAgICAgICAgY29uZmlnID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0
LmZpbGVzeXN0ZW0pCisgICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhv
c3QuZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoJ0RlYnVnJyksIExMREJf
V0VCS0lUX1RFU1RFUl9OQU1FKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoY2xzLmxs
ZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSBvciBub3Qgb3MuYWNjZXNzKGNscy5sbGRiV2ViS2l0
VGVzdGVyRXhlY3V0YWJsZSwgb3MuWF9PSyk6CisgICAgICAgICAgICBjbHMubGxkYldlYktpdFRl
c3RlckV4ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0
b3J5KCdSZWxlYXNlJyksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FKQorCisgICAgICAgIGNscy5z
YlRhcmdldCA9IGNscy5zYkRlYnVnZ2VyLkNyZWF0ZVRhcmdldChzdHIoY2xzLmxsZGJXZWJLaXRU
ZXN0ZXJFeGVjdXRhYmxlKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAorICAgICAgICBj
bHMuc2JUYXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVTVElOR19GVU5D
VElPTl9OQU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVuYW1lKCkpCisK
KyAgICAgICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAgICAgY2xzLnNi
UHJvY2VzcyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwgb3MuZ2V0Y3dk
KCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAgIGFzc2VydCBjbHMuc2JQ
cm9jZXNzLkdldFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAgICAgY2xzLnNi
VGhyZWFkID0gY2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAgICAgIGFzc2Vy
dCBjbHMuc2JUaHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0aW9uIHdpdGgg
bmFtZSBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRoZSBmcmFtZSBv
ZiB0aGUgY2FsbGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFN
RSBiZWNhdXNlIGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlhYmxlcyB3ZSB3
YW50IHRvIHRlc3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFkLkdldEZyYW1l
QXRJbmRleCgxKQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiB0ZWFyRG93bihjbHMpOgorICAgICAgICBjbHMuc2JQcm9jZXNzLktpbGwoKQor
CisKK2NsYXNzIFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBnbG9iYWwgY2Fj
aGVkX2RlYnVnX3Nlc3Npb24KKyAgICAgICAgaWYgbm90IGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgor
ICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBMTERCRGVidWdTZXNzaW9uKCkKKyAg
ICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNldHVwKCkKKworICAgIEBwcm9wZXJ0eQor
ICAgIGRlZiBfc2JGcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNhY2hlZF9kZWJ1Z19zZXNz
aW9uLnNiRnJhbWUKKworICAgICMgVGhlIExMREIgUHl0aG9uIG1vZHVsZSBkb2VzIG5vdCB3b3Jr
IHdpdGggUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBhbmQgY2F1c2VzIGVycm9ycyBvZiB0aGUgZm9y
bToKKyAgICAjICAgICBvYmpjWzc2Nzk0XTogK1tfX01EUXVlcnkgaW5pdGlhbGl6ZV0gbWF5IGhh
dmUgYmVlbiBpbiBwcm9ncmVzcyBpbiBhbm90aGVyIHRocmVhZCB3aGVuIGZvcmsoKSB3YXMgY2Fs
bGVkLgorICAgICMgICAgICAgICAgICAgICAgICBXZSBjYW5ub3Qgc2FmZWx5IGNhbGwgaXQgb3Ig
aWdub3JlIGl0IGluIHRoZSBmb3JrKCkgY2hpbGQgcHJvY2Vzcy4gQ3Jhc2hpbmcgaW5zdGVhZC4K
KyAgICAjIFNvLCB3ZSBydW4gdGhlIGZvbGxvd2luZyB0ZXN0cyBzZXJpYWxseS4KKworICAgICMg
TUFSSzogV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVm
IHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNl
bGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nSW1wbCcpLCB7
fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhi
aXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFy
eSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJh
bWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9
ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3Zp
ZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2Fu
OEJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
InsgbGVuZ3RoID0gOCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0i
KQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzE2
Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRT
dHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBs
ZW5ndGggPSAxMywgaXM4Yml0ID0gMCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUx
NjgwXFx4MDAnIH0iKQorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIHRl
c3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVy
X251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJp
bmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0g
MCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJf
d2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2FuRW1wdHlTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFy
eSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVz
dF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBz
dW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZy
YW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5
JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2
Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmlu
ZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0g
MTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341691</attachid>
            <date>2018-05-31 14:16:10 -0700</date>
            <delta_ts>2018-05-31 17:15:23 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531141610.patch</filename>
            <type>text/plain</type>
            <size>42083</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uYzliZTA2OGVjMjIwMmVmNjg1ZmZjNTk2MWY3ODk4NjdiNGRmZjZiMCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvZHVt
cC1jbGFzcy1sYXlvdXQ6IEV4dHJhY3QgbG9naWMgdG8gY29tcHV0ZSB0aGUgcGF0aCB0byB0aGUg
TExEQiBQeXRob24gbW9kdWxlCisgICAgICAgIGZyb20gaGVyZSB0byBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weSBzbyB0aGF0IGl0IGNhbiB1c2VkIGJ5IGJvdGgK
KyAgICAgICAgdGhpcyBzY3JpcHQgYW5kIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkuIEFs
c28gaW1wb3J0IHRoZSBsbGRiIG1vZHVsZSBhdCB0aGUgdG9wIG9mCisgICAgICAgIHRoZSBmaWxl
IGFuZCB0YWtlIGFkdmFudGFnZSBvZiBQeXRob24ncyBkZWZhdWx0IGVycm9yIHNlbWFudGljcyB0
byB0aHJvdyBhbiBleGNlcHRpb24KKyAgICAgICAgaWYgdGhlIGltcG9ydCBmYWlscyBpbnN0ZWFk
IG9mIGhhbmRsaW5nIGl0IG91cnNlbGYuIFRoaXMgaGFzIHRoZSBzaWRlIGVmZmVjdCB0aGF0IHdl
CisgICAgICAgIG5vdyBhbHdheXMgaW1wb3J0IHRoZSBMTERCIFB5dGhvbiBtb2R1bGUgZXZlbiBp
ZiB0aGlzIHNjcmlwdCBpcyBpbnZva2VkIHdpdGggLS1oZWxwLgorICAgICAgICBJZiB0aGlzIHR1
cm5zIG91dCB0byBiZSBhIHNpZ25pZmljYW50IGFubm95YW5jZSB0aGVuIHdlIGNhbiBsb29rIHRv
IGR5bmFtaWNhbGx5IGltcG9ydAorICAgICAgICB0aGUgbW9kdWxlIGFzIHdlIGRpZCBiZWZvcmUg
dGhpcyBjaGFuZ2UuCisgICAgICAgICh3ZWJraXRfYnVpbGRfZGlyKToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAoZGV2ZWxvcGVyX2Rpcik6IERlbGV0ZWQuCisgICAgICAgIChpbXBvcnRfbGxk
Yik6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
c2NtL3NjbV91bml0dGVzdC5weTogVXBkYXRlIEZJWE1FIGNvbW1lbnQgdG8gcmVmbGVjdAorICAg
ICAgICB0aGF0IGZhY3QgdGhhdCB0ZXN0LXdlYmtpdHB5IGRvZXMgbm90IHN1cHBvcnQgY2xhc3Mg
YW5kIG1vZHVsZSBmaXh0dXJlcy4gVGhpcyBpcyBiZWNhdXNlCisgICAgICAgIHRlc3Qtd2Via2l0
cHkgY3VycmVudGx5IGltcGxlbWVudHMgcGFyYWxsZWxpc20gYnkgYnJlYWtpbmcgZG93biBleGlz
dGluZyB0ZXN0IGNsYXNzZXMKKyAgICAgICAgaW50byBpbmRpdmlkdWFsIHRlc3QgbWV0aG9kcyBp
dHNlbGYgYW5kIGhhdmluZyBlYWNoIHdvcmtlciBydW4gZXhhY3RseSBvbmUgdGVzdCBtZXRob2Qg
KHZpYQorICAgICAgICB1bml0dGVzdC5UZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKCkpIGF0
IGEgdGltZS4gQXMgYSByZXN1bHQgb2YgdGhpcyByZW9yZ2FuaXphdGlvbiwKKyAgICAgICAgc2V0
VXBNb2R1bGUoKS9zZXRVcENsYXNzKCkgYXJlIGNhbGxlZCBmb3IgZWFjaCB0ZXN0IG1ldGhvZCBh
cyBvcHBvc2VkIHRvIG9uY2UgcGVyIHRlc3QKKyAgICAgICAgY2xhc3MvdGVzdCBtb2R1bGUuCisg
ICAgICAgIChyZW1vdmVfZGlyKTogRGl0dG8uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHk6CisgICAgICAgIChTeXN0ZW1Ib3N0KToKKyAgICAg
ICAgKFN5c3RlbUhvc3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkpOiBBZGRlZC4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weToKKyAgICAgICAgKF9maW5kX2xs
ZGJfd2Via2l0X3Rlc3Rlcik6IFJldHVybnMgd2hldGhlciB0aGVyZSBleGlzdHMgYSBEZWJ1ZyBv
ciBSZWxlYXNlLWJ1aWx0IGxsZGJXZWJLaXRUZXN0ZXIuCisgICAgICAgIChfYnVpbGRfbGxkYl93
ZWJraXRfdGVzdGVyKTogQnVpbGRzIGxsZGJXZWJLaXRUZXN0ZXIuIEZvciBub3csIHdlIG9ubHkg
c3VwcG9ydCBidWlsZGluZworICAgICAgICBsbGRiV2ViS2l0VGVzdGVyIG9uIE1hYy4KKyAgICAg
ICAgKG1haW4pOiBBZGQgVG9vbHMvbGxkYiB0byB0aGUgdGVzdCBzZWFyY2ggcGF0aCBpZiB0aGUg
cGxhdGZvcm0gaGFzIGxsZGIucHkuCisgICAgICAgIChUZXN0ZXIucnVuKTogUGFzcyBhIGJvb2xl
YW4gYXMgdG8gd2hldGhlciB3ZSB3aWxsIHJ1biB0aGUgbGxkYl93ZWJraXQgdW5pdCB0ZXN0cy4K
KyAgICAgICAgKFRlc3Rlci5fcnVuX3Rlc3RzKTogTW9kaWZpZWQgdG8gdGFrZSBhIGJvb2xlYW4g
YXMgdG8gd2hldGhlciB0byBydW4gdGhlIGxsZGJfd2Via2l0IHVuaXQgdGVzdHMuCisgICAgICAg
IElmIHdlIHdpbGwgcnVuIHRoZXNlIHRlc3RzIHRoZW4gYnVpbGQgbGxkYldlYktpdFRlc3RlciBp
ZiBpdCBoYXMgbm90IGFscmVhZHkgYmVlbiBidWlsdCBhcyB0aGUKKyAgICAgICAgdW5pdCB0ZXN0
cyBkZXBlbmQgb24gdGhpcyBwcm9ncmFtLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldl
YktpdFRlc3Rlci54Y2NvbmZpZzogQWRkZWQuCisgICAgICAgICogbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL01ha2VmaWxlOiBBZGRlZC4KKyAgICAgICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxk
YldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZC4KKyAgICAgICAg
KiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHA6IEFkZGVkLgorICAgICAgICAoYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycyk6CisgICAgICAgICh1dGYxNlN0cmluZyk6CisgICAg
ICAgICh0ZXN0U3VtbWFyeVByb3ZpZGVycyk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBs
bGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5OiBBZGRlZC4KKyAgICAgICAgKGRlc3Ryb3lfY2Fj
aGVkX2RlYnVnX3Nlc3Npb24pOgorICAgICAgICAoTExEQkRlYnVnU2Vzc2lvbik6CisgICAgICAg
IChMTERCRGVidWdTZXNzaW9uLnNldHVwKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24udGVh
ckRvd24pOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMpOgorICAgICAgICAoVGVzdFN1
bW1hcnlQcm92aWRlcnMuc2V0VXBDbGFzcyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVy
cy5fc2JGcmFtZSk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0
U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRl
cl9lbXB0eV9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rl
c3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcpOgorICAgICAgICAo
VGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJv
dmlkZXJfMTZiaXRfc3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlh
bF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcpOgorICAgICAgICAo
VGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRl
cl9lbXB0eV9zdHJpbmcpOgorICAgICAgICAoVGVzdFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rl
c3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0
U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2
Yml0X3N0cmluZyk6CisKIDIwMTgtMDUtMjUgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIERpc3BsYXkgZGV0YWlsZWQgZXJyb3IgbG9ncyB3aGVuIGEgc2Ny
aXB0IGZhaWxzIGluIEVXUwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWFrZWZpbGUgYi9Ub29scy9NYWtl
ZmlsZQppbmRleCA2YTFmNzdjZTYzNTczZTVmZTg5MTAzNDc2ODI1MzczMDA0NWI5MjQzLi5jYTA3
ZjE4ODFiYzkxZmU4ZTUyMmQ2NmUzZGY3YjgxZjc1ODBmNDRjIDEwMDY0NAotLS0gYS9Ub29scy9N
YWtlZmlsZQorKysgYi9Ub29scy9NYWtlZmlsZQpAQCAtMiw3ICsyLDcgQEAgTU9EVUxFUyA9IER1
bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgTWluaUJyb3dzZXIgLi4vU291cmNlL1RoaXJk
UGFydHkvZ3Rlc3QKIAogaWZuZXEgKCwkKFNES1JPT1QpKQogCWlmZXEgKCwkKGZpbmRzdHJpbmcg
bWFjb3N4LCQoU0RLUk9PVCkpKQotCQlNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVz
dFJ1bm5lciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdC94Y29kZSBUZXN0V2ViS2l0QVBJCisJ
CU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGly
ZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkgbGxkYi9sbGRiV2ViS2l0VGVzdGVyCiAJ
ZW5kaWYKIAlpZm5lcSAoLCQoZmluZHN0cmluZyBpcGhvbmUsJChTREtST09UKSkpCiAJCU1PRFVM
RVMgKz0gTW9iaWxlTWluaUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1j
bGFzcy1sYXlvdXQgYi9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CmluZGV4IGQ0MTg2
NDQ1NTgzNmUzYjBlMmIwNjU0NmI5YmFiNjI2Njg1ODZlYzUuLjZmNmViYTQyZGU4MTc1MzYyYjJj
MjE5Nzc5MTZkODc0YjU1MDRjZDUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFz
cy1sYXlvdXQKKysrIGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dApAQCAtMzEsNiAr
MzEsOSBAQCBpbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHNldHMgaW1wb3J0IFNl
dAogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVt
SG9zdAorc3lzLnBhdGguYXBwZW5kKFN5c3RlbUhvc3QoKS5wYXRoX3RvX2xsZGJfcHl0aG9uX2Rp
cmVjdG9yeSgpKQoraW1wb3J0IGxsZGIKIAogZnJhbWV3b3JrID0gIldlYkNvcmUiCiBidWlsZF9k
aXJlY3RvcnkgPSAiIgpAQCAtNDEsMjEgKzQ0LDYgQEAgZGVmIHdlYmtpdF9idWlsZF9kaXIoKToK
ICAgICBzY3JpcHRwYXRoID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxl
X18pKQogICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbb3MucGF0aC5qb2luKHNj
cmlwdHBhdGgsICJ3ZWJraXQtYnVpbGQtZGlyZWN0b3J5IiksICItLXRvcC1sZXZlbCJdKS5zdHJp
cCgpCiAKLWRlZiBkZXZlbG9wZXJfZGlyKCk6Ci0gICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tf
b3V0cHV0KFsieGNvZGUtc2VsZWN0IiwgIi0tcHJpbnQtcGF0aCJdKQotCi1kZWYgaW1wb3J0X2xs
ZGIoKToKLSAgICB4Y29kZV9jb250ZW50c19wYXRoID0gb3MucGF0aC5zcGxpdChkZXZlbG9wZXJf
ZGlyKCkpWzBdCi0gICAgbGxkYl9mcmFtZXdvcmtfcGF0aCA9IG9zLnBhdGguam9pbih4Y29kZV9j
b250ZW50c19wYXRoLCAiU2hhcmVkRnJhbWV3b3JrcyIsICJMTERCLmZyYW1ld29yayIsICJSZXNv
dXJjZXMiLCAiUHl0aG9uIikKLSAgICBzeXMucGF0aC5hcHBlbmQobGxkYl9mcmFtZXdvcmtfcGF0
aCkKLQotICAgIExMREJfTU9EVUxFX05BTUUgPSAibGxkYiIKLSAgICB0cnk6Ci0gICAgICAgIGds
b2JhbHMoKVtMTERCX01PRFVMRV9OQU1FXSA9IF9faW1wb3J0X18oTExEQl9NT0RVTEVfTkFNRSkK
LSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHByaW50ICJGYWlsZWQgdG8gaW1wb3J0
IHt9IGZyb20ge30iLmZvcm1hdChMTERCX01PRFVMRV9OQU1FLCBsbGRiX2ZyYW1ld29ya19wYXRo
KQotICAgICAgICBzeXMuZXhpdCgxKQotCiBkZWYgdmVyaWZ5X3R5cGUodGFyZ2V0LCB0eXBlKToK
ICAgICB0eXBlbmFtZSA9IHR5cGUuR2V0TmFtZSgpCiAgICAgc2Vlbk9mZnNldCA9IFNldCgpCkBA
IC0xOTYsNyArMTg0LDYgQEAgZGVmIG1haW4oKToKICAgICAgICAgYnVpbGRfZGlyID0gYXJncy5i
dWlsZF9kaXJlY3RvcnkKIAogICAgIHRhcmdldF9wYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkX2Rp
ciwgYXJncy5jb25maWcsIGFyZ3MuZnJhbWV3b3JrICsgIi5mcmFtZXdvcmsiLCBhcmdzLmZyYW1l
d29yayk7Ci0gICAgaW1wb3J0X2xsZGIoKQogICAgIGR1bXBfY2xhc3ModGFyZ2V0X3BhdGgsIGFy
Z3MuY2xhc3NuYW1lLCBhcmdzLmFyY2gpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2Nt
X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2Nt
L3NjbV91bml0dGVzdC5weQppbmRleCA4OTIxY2E5ODI4NjRiNzQxOTQ5YjI2NjQ1OTg4MTBlN2Vi
NDMzMDBmLi4yMmViN2NlNGE0NThjZjA3MmJlN2QzMDFkZjI1NDcyODg0ZTgzYmJjIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0
ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9z
Y21fdW5pdHRlc3QucHkKQEAgLTYwLDcgKzYwLDggQEAgZnJvbSAuc3ZuIGltcG9ydCBTVk4KIAog
IyBXZSBjYWNoZSB0aGUgbW9jayBTVk4gcmVwbyBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBh
Z2FpbiBmb3IgZWFjaCBjYWxsIHRvIGFuIFNWTlRlc3Qgb3IgR2l0VGVzdCB0ZXN0XyBtZXRob2Qu
CiAjIFdlIHN0b3JlIGl0IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0
ZSB0aGlzIGNhY2hlZCByZXBvIG9uIGV4aXQoMykuCi0jIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNl
IHdlIG1pZ3JhdGUgdG8gUHl0aG9uIDIuNy4gVW5pdHRlc3QgaW4gUHl0aG9uIDIuNyBzdXBwb3J0
cyBtb2R1bGUtc3BlY2lmaWMgc2V0dXAgYW5kIHRlYXJkb3duIGZ1bmN0aW9ucy4KKyMgRklYTUU6
IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxl
IGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQg
ZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgogY2FjaGVkX3N2bl9yZXBvX3BhdGggPSBO
b25lCiAKIApAQCAtNzAsNyArNzEsOCBAQCBkZWYgcmVtb3ZlX2RpcihwYXRoKToKICAgICBzaHV0
aWwucm10cmVlKHBhdGgpCiAKIAotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIEBhdGV4aXQucmVnaXN0ZXIKIGRlZiBkZWxldGVfY2FjaGVk
X21vY2tfcmVwb19hdF9leGl0KCk6CiAgICAgaWYgY2FjaGVkX3N2bl9yZXBvX3BhdGg6CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5Cmlu
ZGV4IGExNTM0MjIwMWQ4MzM0MTQ3MzFlYmQwZjc2ZjcxNzlhNmYwYmQ2ZTMuLjFjYTI5Mjg0NDk4
MjRjMmYwZmMxZjMwY2FlNWVlMTIxYTgzNGIzZDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5CkBAIC00NywzICs0Nyw4IEBAIGNs
YXNzIFN5c3RlbUhvc3Qob2JqZWN0KToKIAogICAgIGRlZiBzeW1ib2xpY2F0ZV9jcmFzaF9sb2df
aWZfbmVlZGVkKHNlbGYsIHBhdGgpOgogICAgICAgICByZXR1cm4gc2VsZi5maWxlc3lzdGVtLnJl
YWRfdGV4dF9maWxlKHBhdGgpCisKKyAgICBkZWYgcGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3Rv
cnkoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnBsYXRmb3JtLmlzX21hYygpOgorICAgICAg
ICAgICAgcmV0dXJuICcnCisgICAgICAgIHJldHVybiBzZWxmLmV4ZWN1dGl2ZS5ydW5fY29tbWFu
ZChbJ3hjcnVuJywgJ2xsZGInLCAnLS1weXRob24tcGF0aCddLCByZXR1cm5fc3RkZXJyPUZhbHNl
KS5yc3RyaXAoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4u
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQppbmRleCA1ZmFjYWE1NDZk
ZWU5NjU4YmFjOTg0OGVhMDJlMWZjNDgyYTBmMmVmLi41OWJlZTQzMTg5MmRhODEwMzg1NzFlYTE4
YzI2YWEzYWFjNGEzOGI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3Qv
bWFpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3Rlc3QvbWFpbi5weQpAQCAtMSw1
ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSwgSW5jLgogIyBDb3B5cmlnaHQg
KEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIyBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0zNywyNiArMzgsNjggQEAgaW1wb3J0IHRyYWNlYmFjawogaW1w
b3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d1dGlscyBpbXBv
cnQgY29uZmlndXJlX2xvZ2dpbmcKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRp
dmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5
c3RlbS5maWxlc3lzdGVtIGltcG9ydCBGaWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNv
bmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9tIHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5k
ZXIKIGZyb20gd2Via2l0cHkudGVzdC5wcmludGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtp
dHB5LnRlc3QucnVubmVyIGltcG9ydCBSdW5uZXIsIHVuaXRfdGVzdF9uYW1lCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAorX2hvc3QgPSBTeXN0ZW1Ib3N0KCkKK193ZWJr
aXRfcm9vdCA9IE5vbmUKKworCitkZWYgX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAg
Y29uZmlnID0gQ29uZmlnKF9ob3N0LmV4ZWN1dGl2ZSwgX2hvc3QuZmlsZXN5c3RlbSkKKyAgICBs
bGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihjb25maWcuYnVpbGRf
ZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSksICdsbGRiV2ViS2l0VGVz
dGVyJykKKyAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiTG9va2luZyBmb3Ige30iLmZvcm1hdChs
bGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0YWJsZSkKKyAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUo
bGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpIGFuZCBvcy5hY2Nlc3MobGxkYl93ZWJraXRf
dGVzdGVyX2V4ZWN1dGFibGUsIG9zLlhfT0spCisKKworZGVmIF9idWlsZF9sbGRiX3dlYmtpdF90
ZXN0ZXIoKToKKyAgICBpZiBub3QgX2hvc3QucGxhdGZvcm0uaXNfbWFjKCk6CisgICAgICAgIF9s
b2cuZXJyb3IoJ2xsZGJXZWJLaXRUZXN0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRm
b3JtLicpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5l
eGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgdHJ5OgorICAgICAgICBfaG9zdC5leGVj
dXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKFsnL3Vzci9iaW4vbWFrZScsIGNvbmZpZy5kZWZh
dWx0X2NvbmZpZ3VyYXRpb24oKS5sb3dlcigpXSwgY3dkPW9zLnBhdGguam9pbihfd2Via2l0X3Jv
b3QsICdUb29scycsICdsbGRiJywgJ2xsZGJXZWJLaXRUZXN0ZXInKSkKKyAgICAgICAgcmV0dXJu
IFRydWUKKyAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKKyAgICAgICAgcHJpbnQgPj4gc3lz
LnN0ZGVyciwgJ1NjcmlwdEVycm9yOiB7fScuZm9ybWF0KGUpCisgICAgICAgIHByaW50ID4+IHN5
cy5zdGRlcnIsIGUubWVzc2FnZV93aXRoX291dHB1dCgpCisgICAgICAgIHJldHVybiBGYWxzZQor
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwg
c3RyKGUpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIHJldHVybiBGYWxzZQorCiAKIGRlZiBt
YWluKCk6CisgICAgZ2xvYmFsIF93ZWJraXRfcm9vdAogICAgIGNvbmZpZ3VyZV9sb2dnaW5nKGxv
Z2dlcj1fbG9nKQogCiAgICAgdXAgPSBvcy5wYXRoLmRpcm5hbWUKLSAgICB3ZWJraXRfcm9vdCA9
IHVwKHVwKHVwKHVwKHVwKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQorICAgIF93ZWJr
aXRfcm9vdCA9IHVwKHVwKHVwKHVwKHVwKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQog
CiAgICAgdGVzdGVyID0gVGVzdGVyKCkKLSAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2lu
KHdlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycpLCAnd2Via2l0cHknKQorICAgIHRlc3Rl
ci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycp
LCAnd2Via2l0cHknKQogCiAgICAgIyBUaGVyZSBpcyBubyBXZWJLaXQyIG9uIFdpbmRvd3MsIHNv
IHdlIGRvbid0IG5lZWQgdG8gcnVuIFdlYktpdDIgdW5pdHRlc3RzIG9uIGl0LgogICAgIGlmIG5v
dCAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpIG9yIHN5cy5wbGF0Zm9ybSA9PSAnY3ln
d2luJyk6Ci0gICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3Qs
ICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcpCisgICAgICAgIHRlc3Rl
ci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcs
ICdTY3JpcHRzJyksICd3ZWJraXQnKQorCisgICAgbGxkYl9weXRob25fZGlyZWN0b3J5ID0gX2hv
c3QucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKQorICAgIGlmIG9zLnBhdGguaXNkaXIo
bGxkYl9weXRob25fZGlyZWN0b3J5KToKKyAgICAgICAgaWYgbGxkYl9weXRob25fZGlyZWN0b3J5
IG5vdCBpbiBzeXMucGF0aDoKKyAgICAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChsbGRiX3B5dGhv
bl9kaXJlY3RvcnkpCisgICAgICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4oX3dlYmtp
dF9yb290LCAnVG9vbHMnLCAnbGxkYicpKQorICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90
ZXN0cyA9IFRydWUKKyAgICBlbHNlOgorICAgICAgICBfbG9nLmluZm8oIlNraXBwaW5nIGxsZGJf
d2Via2l0IHRlc3RzOyBjb3VsZCBub3QgZmluZCBwYXRoIHRvIGxsZGIucHkgJ3t9Jy4iLmZvcm1h
dChsbGRiX3B5dGhvbl9kaXJlY3RvcnkpKQorICAgICAgICB3aWxsX3J1bl9sbGRiX3dlYmtpdF90
ZXN0cyA9IEZhbHNlCiAKICAgICB0ZXN0ZXIuc2tpcCgoJ3dlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20uc2NtX3VuaXR0ZXN0JywpLCAnYXJlIHJlYWxseSwgcmVhbGx5LCBzbG93JywgMzE4MTgp
CiAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgpAQCAtNzEsMTEgKzExNCwx
MSBAQCBkZWYgbWFpbigpOgogICAgICAgICBmcm9tIGdvb2dsZS5hcHBlbmdpbmUuZGlzdCBpbXBv
cnQgdXNlX2xpYnJhcnkKICAgICAgICAgdXNlX2xpYnJhcnkoJ2RqYW5nbycsICcxLjInKQogICAg
ICAgICBkZXZfYXBwc2VydmVyLmZpeF9zeXNfcGF0aCgpCi0gICAgICAgIHRlc3Rlci5hZGRfdHJl
ZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicp
KQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rv
b2xzJywgJ1F1ZXVlU3RhdHVzU2VydmVyJykpCiAgICAgZWxzZToKICAgICAgICAgX2xvZy5pbmZv
KCdTa2lwcGluZyBRdWV1ZVN0YXR1c1NlcnZlciB0ZXN0czsgdGhlIEdvb2dsZSBBcHBFbmdpbmUg
UHl0aG9uIFNESyBpcyBub3QgaW5zdGFsbGVkLicpCiAKLSAgICByZXR1cm4gbm90IHRlc3Rlci5y
dW4oKQorICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bih3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0
cz13aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKIAogCiBkZWYgX3ByaW50X3Jlc3VsdHNfYXNf
anNvbihzdHJlYW0sIGFsbF90ZXN0X25hbWVzLCBmYWlsdXJlcywgZXJyb3JzKToKQEAgLTEzMSw3
ICsxNzQsNyBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKIAogICAgICAgICByZXR1cm4gcGFyc2Vy
LnBhcnNlX2FyZ3MoYXJndikKIAotICAgIGRlZiBydW4oc2VsZik6CisgICAgZGVmIHJ1bihzZWxm
LCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cz1GYWxzZSk6CiAgICAgICAgIHNlbGYuX29wdGlv
bnMsIGFyZ3MgPSBzZWxmLl9wYXJzZV9hcmdzKCkKICAgICAgICAgc2VsZi5wcmludGVyLmNvbmZp
Z3VyZShzZWxmLl9vcHRpb25zKQogCkBAIC0xNDIsOSArMTg1LDkgQEAgY2xhc3MgVGVzdGVyKG9i
amVjdCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdObyB0ZXN0cyB0byBydW4nKQogICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1l
cykKKyAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl90ZXN0cyhuYW1lcywgd2lsbF9ydW5fbGxkYl93
ZWJraXRfdGVzdHMpCiAKLSAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcyk6CisgICAgZGVm
IF9ydW5fdGVzdHMoc2VsZiwgbmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKToKICAg
ICAgICAgIyBNYWtlIHN1cmUgUFlUSE9OUEFUSCBpcyBzZXQgdXAgcHJvcGVybHkuCiAgICAgICAg
IHN5cy5wYXRoID0gc2VsZi5maW5kZXIuYWRkaXRpb25hbF9wYXRocyhzeXMucGF0aCkgKyBzeXMu
cGF0aAogCkBAIC0xNTQsNiArMTk3LDE0IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAg
ICBmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkgaW1wb3J0IGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcK
ICAgICAgICAgYXV0b2luc3RhbGxfZXZlcnl0aGluZygpCiAKKyAgICAgICAgaWYgd2lsbF9ydW5f
bGxkYl93ZWJraXRfdGVzdHM6CisgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRl
KCJDaGVja2luZyBsbGRiV2ViS2l0VGVzdGVyIC4uLiIpCisgICAgICAgICAgICBpZiBub3QgX2Zp
bmRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgICAgICAgICAgICAgc2VsZi5wcmludGVyLndy
aXRlX3VwZGF0ZSgiQnVpbGRpbmcgbGxkYldlYktpdFRlc3RlciAuLi4iKQorICAgICAgICAgICAg
ICAgIGlmIG5vdCBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBidWlsZCBsbGRiV2ViS2l0VGVzdGVyLicpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
Y292ZXJhZ2U6CiAgICAgICAgICAgICBfbG9nLndhcm5pbmcoIkNoZWNraW5nIGNvZGUgY292ZXJh
Z2UsIHNvIHJ1bm5pbmcgdGhpbmdzIHNlcmlhbGx5IikKICAgICAgICAgICAgIHNlbGYuX29wdGlv
bnMuY2hpbGRfcHJvY2Vzc2VzID0gMQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNTY0OGZh
NzUxYTMwZTlhMDlhM2E1N2Y2ZWZmOTZlZTEwNjcyN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKQEAg
LTAsMCArMSwxMDkgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJl
IG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
Ly8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyNpbmNsdWRlPyAiLi4vLi4vLi4vLi4vLi4vSW50ZXJuYWwvQ29uZmlndXJhdGlvbnMvSGF2ZUlu
dGVybmFsU0RLLnhjY29uZmlnIgorCitVU0VfSU5URVJOQUxfU0RLID0gJChVU0VfSU5URVJOQUxf
U0RLXyQoQ09ORklHVVJBVElPTikpOworVVNFX0lOVEVSTkFMX1NES19Qcm9kdWN0aW9uID0gWUVT
OworVVNFX0lOVEVSTkFMX1NES19EZWJ1ZyA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworVVNFX0lO
VEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CisKK0FMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCitDTEFOR19DWFhfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnUr
KzE0OworQ0xBTkdfQ1hYX0xJQlJBUlkgPSBsaWJjKys7CitDTEFOR19FTkFCTEVfT0JKQ19XRUFL
ID0gWUVTOworQ0xBTkdfV0FSTl9CTE9DS19DQVBUVVJFX0FVVE9SRUxFQVNJTkcgPSBZRVM7CitD
TEFOR19XQVJOX0JPT0xfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fQ09OU1RBTlRfQ09O
VkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fQ1hYMFhfRVhURU5TSU9OUyA9IE5POworQ0xBTkdf
V0FSTl9FTVBUWV9CT0RZID0gWUVTOworQ0xBTkdfV0FSTl9FTlVNX0NPTlZFUlNJT04gPSBZRVM7
CitDTEFOR19XQVJOX0lORklOSVRFX1JFQ1VSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5UX0NP
TlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX05PTl9MSVRFUkFMX05VTExfQ09OVkVSU0lPTiA9
IFlFUzsKK0NMQU5HX1dBUk5fT0JKQ19MSVRFUkFMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19X
QVJOX1JBTkdFX0xPT1BfQU5BTFlTSVMgPSBZRVM7CitDTEFOR19XQVJOX1NUUklDVF9QUk9UT1RZ
UEVTID0gWUVTOworQ0xBTkdfV0FSTl9TVVNQSUNJT1VTX01PVkUgPSBZRVM7CitDTEFOR19XQVJO
X1VOUkVBQ0hBQkxFX0NPREUgPSBOTzsKK0NMQU5HX1dBUk5fX0RVUExJQ0FURV9NRVRIT0RfTUFU
Q0ggPSBZRVM7CitHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworQ09NQklORV9I
SURQSV9JTUFHRVMgPSBOTzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9IGR3YXJmLXdpdGgt
ZHN5bTsKK0VOQUJMRV9TVFJJQ1RfT0JKQ19NU0dTRU5EID0gWUVTOworR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKK0dDQ19ERUJVR0dJTkdfU1lNQk9MUyA9IGRlZmF1bHQ7CitHQ0Nf
RFlOQU1JQ19OT19QSUMgPSBOTzsKK0dDQ19FTkFCTEVfQ1BQX0VYQ0VQVElPTlMgPSBOTzsKK0dD
Q19FTkFCTEVfQ1BQX1JUVEkgPSBOTzsKK0dDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVT
OworR0NDX0VOQUJMRV9TWU1CT0xfU0VQQVJBVElPTiA9IE5POworR0NDX0ZBU1RfT0JKQ19ESVNQ
QVRDSCA9IFlFUzsKK0dDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKK0dDQ19O
T19DT01NT05fQkxPQ0tTID0gWUVTOworR0NDX09CSkNfQ0FMTF9DWFhfQ0RUT1JTID0gWUVTOwor
R0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKK0dDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMgPSAkKERFQlVHX0RFRklORVMpICQoaW5oZXJpdGVkKTsKK0dDQ19TVFJJQ1RfQUxJ
QVNJTkcgPSBZRVM7CitHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworR0NDX1RIUkVB
RFNBRkVfU1RBVElDUyA9IE5POworR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsK
K0dDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKK0dDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CitHQ0NfV0FSTl9BQk9VVF9ERVBSRUNB
VEVEX0ZVTkNUSU9OUyA9IE5POworR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19ORVdMSU5FID0gWUVT
OworR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7CitHQ0NfV0FSTl9OT05fVklSVFVBTF9ERVNUUlVDVE9SID0g
WUVTOworR0NDX1dBUk5fU0lHTl9DT01QQVJFID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9T
RUxFQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVM7CitHQ0Nf
V0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CitHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBO
TzsKK1dBUk5JTkdfQ0ZMQUdTID0gLVdjYXN0LXF1YWwgLVdjaGFyLXN1YnNjcmlwdHMgLVdleHRy
YS10b2tlbnMgLVdmb3JtYXQ9MiAtV2luaXQtc2VsZiAtV21pc3NpbmctZm9ybWF0LWF0dHJpYnV0
ZSAtV21pc3Npbmctbm9yZXR1cm4gLVdwYWNrZWQgLVdwb2ludGVyLWFyaXRoIC1XcmVkdW5kYW50
LWRlY2xzIC1XdW5kZWYgLVd3cml0ZS1zdHJpbmdzIC1XZXhpdC10aW1lLWRlc3RydWN0b3JzIC1X
Z2xvYmFsLWNvbnN0cnVjdG9ycyAtV3RhdXRvbG9naWNhbC1jb21wYXJlIC1XaW1wbGljaXQtZmFs
bHRocm91Z2g7CisKK0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAke0JVSUxUX1BST0RVQ1RTX0RJUn0v
dXNyL2xvY2FsL2luY2x1ZGU7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChU
QVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUOnN1
ZmZpeDppZGVudGlmaWVyKSk7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMSA9IDEw
MTEwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEyID0gMTAxMjAwOworVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTMgPSAxMDEzMDA7CitUQVJHRVRfTUFDX09TX1hfVkVS
U0lPTl9NQUpPUl8xNCA9IDEwMTQwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzE1
ID0gMTAxNTAwOworCitTVVBQT1JURURfUExBVEZPUk1TID0gbWFjb3N4OworCitERUJVR19ERUZJ
TkVTX2RlYnVnID0gOworREVCVUdfREVGSU5FU19ub3JtYWwgPSBOREVCVUc7CitERUJVR19ERUZJ
TkVTID0gJChERUJVR19ERUZJTkVTXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisKK0dDQ19PUFRJTUla
QVRJT05fTEVWRUwgPSAwOworREVBRF9DT0RFX1NUUklQUElORyA9IE5POworU1RSSVBfSU5TVEFM
TEVEX1BST0RVQ1QgPSBOTzsKKworU0RLUk9PVCA9IG1hY29zeC5pbnRlcm5hbDsKKworT1RIRVJf
Q0ZMQUdTID0gJChBU0FOX09USEVSX0NGTEFHUyk7CitPVEhFUl9DUExVU1BMVVNGTEFHUyA9ICQo
QVNBTl9PVEhFUl9DUExVU1BMVVNGTEFHUyk7CitPVEhFUl9MREZMQUdTID0gJChBU0FOX09USEVS
X0xERkxBR1MpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZp
Z3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM0
ZjcxNzAwZWU0YTQzZTVhYTYwZWRjNjkwMmI4ODZjOTQ5ZmVmMAotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2Uu
eGNjb25maWcKQEAgLTAsMCArMSw0NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorLy8gRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8gRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorLy8g
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8gT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworI2luY2x1ZGUgIkJhc2UueGNjb25maWciCisKK09OTFlfQUNUSVZFX0FSQ0gg
PSBZRVM7CisKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SID0gJChNQUNfT1NfWF9WRVJT
SU9OX01BSk9SKTsKKworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gJChNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVRfJChQTEFURk9STV9OQU1FKV8kKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01B
Sk9SKSk7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTEwMCA9IDEwLjExOwor
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEyMDAgPSAxMC4xMjsKK01BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMzAwID0gMTAuMTM7CitNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVRfbWFjb3N4XzEwMTQwMCA9IDEwLjE0OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
X21hY29zeF8xMDE1MDAgPSAxMC4xNTsKKworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5D
VElPTlMgPSBZRVM7CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZjsKKworU0RLUk9P
VCA9ICQoU0RLUk9PVF8kKFVTRV9JTlRFUk5BTF9TREspKTsKK1NES1JPT1RfID0gbWFjb3N4Owor
U0RLUk9PVF9ZRVMgPSBtYWNvc3guaW50ZXJuYWw7CisKK1dLX0NDQUNIRV9ESVIgPSAkKFNSQ1JP
T1QpLy4uLy4uLy4uL1Rvb2xzL2NjYWNoZTsKKyNpbmNsdWRlICIuLi8uLi8uLi9jY2FjaGUvY2Nh
Y2hlLnhjY29uZmlnIgpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0Nv
bmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNjY2MDAwZDFhZmRkN2RkMWNlNWZmYzFiMmQxZmUxMDUyM2Q1ZTNlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xs
ZGJXZWJLaXRUZXN0ZXIueGNjb25maWcKQEAgLTAsMCArMSwyNCBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
Ky8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8K
Ky8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorLy8g
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworUFJPRFVDVF9OQU1FID0gJChUQVJHRVRfTkFNRSk7
CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUgYi9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4YzIxZTFiYTM4
N2E4YmE0ZmM0M2YxNDQ0YzM4MGVlYzc5ZWRlOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpAQCAtMCwwICsxLDIgQEAKK1NDUklQVFNfUEFU
SCA9IC4uLy4uL1NjcmlwdHMKK2luY2x1ZGUgLi4vLi4vLi4vTWFrZWZpbGUuc2hhcmVkCmRpZmYg
LS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJX
ZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjdlYzY2
NTlhZjU4M2Q2YjE2MGE3MmQyYmE0YTI5NTYxNzU4MTk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMCwwICsxLDIwMSBAQAorLy8gISQqVVRGOCokIQoreworCWFyY2hpdmVW
ZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0VmVyc2lvbiA9IDQ2OworCW9i
amVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisJCTdDQjY4NDRC
MUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAq
LzsgfTsKKwkJQ0UzRjQ0MjYyMDVDNkEwMTAwNzE5NUIzIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
M0Y0NDIyMjA1QzY2OUMwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07
CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5
RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4x
LzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CisvKiBFbmQgUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLworCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNj
b25maWc7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhj
Y29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRU
ZXN0ZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxs
ZGJXZWJLaXRUZXN0ZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTdD
QjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IG1haW4uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CUNFM0Y0NDIyMjA1QzY2OUMwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEphdmFTY3JpcHRDb3JlLmZyYW1ld29yazsgcGF0aCA9IFN5c3RlbS9M
aWJyYXJ5L0ZyYW1ld29ya3MvSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0g
U0RLUk9PVDsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RTFBRjAyNzZD
MDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJCUNFM0Y0NDI2MjA1QzZBMDEwMDcxOTVCMyAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTAxQUZDNEQwQTAw
OEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZp
ZyAqLywKKwkJCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29u
ZmlnICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVy
LnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMSA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTAxQUZDNEQw
QTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCUNFM0Y0NDI1MjA1QzZBMDEwMDcx
OTVCMyAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBs
bGRiV2ViS2l0VGVzdGVyICovLAorCQkJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9k
dWN0cyAqLywKKwkJCQlDRTNGNDQyMjIwNUM2NjlDMDA3MTk1QjMgLyogSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8q
IGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8q
IGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLywKKwkJCSk7
CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCSk7CisJCQluYW1lID0gRnJh
bWV3b3JrczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3Jv
dXAgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk3
QzRBQjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjNB
ODFBRjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJ
N0M0QUIzOUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8sCisJCQkJN0M0QUIzOUUxQUYw
Mjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJN0M0QUIzOUYxQUYwMjc2QzAwM0ZD
OEQxIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJ
CWRlcGVuZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJ
CXByb2R1Y3ROYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA3
QzRBQjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICov
CisJCTdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hl
Y2sgPSAwNzAwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjM5QzFB
RjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0
ICJsbGRiV2ViS2l0VGVzdGVyIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2Rl
IDMuMiI7CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9y
RW5jb2RpbmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQlt
YWluR3JvdXAgPSA3QzRBQjM5ODFBRjAyNzZDMDAzRkM4RDE7CisJCQlwcm9kdWN0UmVmR3JvdXAg
PSA3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGly
UGF0aCA9ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJN0M0
QUIzQTAxQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQl9
OworLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJN0NCNjg0NEIxQUZBNzk3ODAwMkIz
MDVDIC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CisJCTdDNEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIy
Mjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1
ZykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQTcxQUYwMjc2QzAw
M0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldl
YktpdFRlc3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJ
bmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFz
ZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRl
c3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwor
CisvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOUMxQUYw
Mjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAi
bGxkYldlYktpdFRlc3RlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEg
LyogRGVidWcgKi8sCisJCQkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTgxQUYwMjc2QzAw
M0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJs
bGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAv
KiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlv
bkxpc3Qgc2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDdDNEFCMzk5MUFGMDI3NkMwMDNG
QzhEMSAvKiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWlu
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41YWY4MmZlNThhOGJmZTA5Njg2ZmMzM2RhYjZmYjQ2YjcxNGMyOTAw
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
CkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK2V4dGVybiB2b2lkIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsK
K3ZvaWQgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpIHsgcmV0dXJuOyB9CisKK3Rl
bXBsYXRlPHNpemVfdCBsZW5ndGg+CitzdGF0aWMgU3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNo
YXIxNl90ICgmc3RyaW5nKVtsZW5ndGhdKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
KyAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGggLSAxKTsKKyAgICBmb3IgKGF1dG8g
YyA6IHN0cmluZykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMp
KTsKKyAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0
U3VtbWFyeVByb3ZpZGVycygpCit7CisgICAgU3RyaW5nIGFOdWxsU3RyaW5nIHsgIiIgfTsKKyAg
ICBTdHJpbmdJbXBsKiBhTnVsbFN0cmluZ0ltcGwgPSBhTnVsbFN0cmluZy5pbXBsKCk7CisKKyAg
ICBTdHJpbmcgYW5FbXB0eVN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYW5FbXB0eVN0
cmluZ0ltcGwgPSBhbkVtcHR5U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhbjhCaXRTdHJp
bmcgeyAicsOpc3Vtw6kiIH07CisgICAgU3RyaW5nSW1wbCogYW44Qml0U3RyaW5nSW1wbCA9IGFu
OEJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYTE2Qml0U3RyaW5nID0gdXRmMTZTdHJp
bmcodSJcdTE2ODBDYXBwdWNjaW5vXHUxNjgwIik7CisgICAgU3RyaW5nSW1wbCogYTE2Qml0U3Ry
aW5nSW1wbCA9IGExNkJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBicmVha0ZvclRlc3RpbmdTdW1t
YXJ5UHJvdmlkZXJzKCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2
W10pCit7CisgICAgdGVzdFN1bW1hcnlQcm92aWRlcnMoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwg
IlRoaXMgZXhlY3V0YWJsZSBkb2VzIG5vdGhpbmcgYW5kIGlzIG9ubHkgbWVhbnQgZm9yIGRlYnVn
Z2luZyBsbGRiX3dlYmtpdC5weS5cbiIpOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJr
aXRfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2M2N2Y3Zjg4NDkzYTFlYmVkMmRlYjVlMjY1NGQ1
NThjZGM1ZWMyMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRfdW5p
dHRlc3QucHkKQEAgLTAsMCArMSwxNDIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyAtKi0g
Y29kaW5nOiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
IyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IGF0ZXhpdAoraW1wb3J0IGxsZGIKK2ltcG9ydCBsbGRiX3dlYmtpdAoraW1w
b3J0IG9zCitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9y
dC5jb25maWcgaW1wb3J0IENvbmZpZworCisKKyMgV2UgY2FjaGUgdGhlIGxsZGIgZGVidWcgc2Vz
c2lvbiBzdGF0ZSBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxs
IHRvIGEgc2VyaWFsX3Rlc3RfIG1ldGhvZC4KKyMgV2Ugc3RvcmUgaXQgaW4gYSBnbG9iYWwgdmFy
aWFibGUgc28gdGhhdCB3ZSBjYW4gZGVsZXRlIHRoaXMgY2FjaGVkIHN0YXRlIG9uIGV4aXQoMyku
CisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3Mg
YW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBh
cmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK2NhY2hlZF9kZWJ1Z19z
ZXNzaW9uID0gTm9uZQorCisKKyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRw
eSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9z
ZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUp
LgorQGF0ZXhpdC5yZWdpc3RlcgorZGVmIGRlc3Ryb3lfY2FjaGVkX2RlYnVnX3Nlc3Npb24oKToK
KyAgICBpZiBjYWNoZWRfZGVidWdfc2Vzc2lvbjoKKyAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Np
b24udGVhckRvd24oKQorCisKK2NsYXNzIExMREJEZWJ1Z1Nlc3Npb24ob2JqZWN0KToKKyAgICBA
Y2xhc3NtZXRob2QKKyAgICBkZWYgc2V0dXAoY2xzKToKKyAgICAgICAgTExEQl9XRUJLSVRfVEVT
VEVSX05BTUUgPSAnbGxkYldlYktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RFU1RJTkdf
RlVOQ1RJT05fTkFNRSA9ICdicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJworCisgICAg
ICAgIGNscy5zYkRlYnVnZ2VyID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAgICAgIGNs
cy5zYkRlYnVnZ2VyLlNldEFzeW5jKEZhbHNlKQorCisgICAgICAgICMgRklYTUU6IEZpbmQgYSBi
dWlsdCBsbGRiV2ViS2l0VGVzdGVyIHdpdGhvdXQgaGFyZGNvZGluZyBidWlsZCBjb25maWd1cmF0
aW9ucy4KKyAgICAgICAgaG9zdCA9IFN5c3RlbUhvc3QoKQorICAgICAgICBjb25maWcgPSBDb25m
aWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgY2xzLmxsZGJXZWJL
aXRUZXN0ZXJFeGVjdXRhYmxlID0gaG9zdC5maWxlc3lzdGVtLmpvaW4oY29uZmlnLmJ1aWxkX2Rp
cmVjdG9yeSgnRGVidWcnKSwgTExEQl9XRUJLSVRfVEVTVEVSX05BTUUpCisgICAgICAgIGlmIG5v
dCBvcy5wYXRoLmlzZmlsZShjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUpIG9yIG5vdCBv
cy5hY2Nlc3MoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlLCBvcy5YX09LKToKKyAgICAg
ICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IGhvc3QuZmlsZXN5c3RlbS5q
b2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoJ1JlbGVhc2UnKSwgTExEQl9XRUJLSVRfVEVTVEVS
X05BTUUpCisKKyAgICAgICAgY2xzLnNiVGFyZ2V0ID0gY2xzLnNiRGVidWdnZXIuQ3JlYXRlVGFy
Z2V0KHN0cihjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUpKQorICAgICAgICBhc3NlcnQg
Y2xzLnNiVGFyZ2V0CisgICAgICAgIGNscy5zYlRhcmdldC5CcmVha3BvaW50Q3JlYXRlQnlOYW1l
KEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUsIGNscy5zYlRhcmdldC5HZXRFeGVjdXRh
YmxlKCkuR2V0RmlsZW5hbWUoKSkKKworICAgICAgICBhcmd2ID0gTm9uZQorICAgICAgICBlbnZw
ID0gTm9uZQorICAgICAgICBjbHMuc2JQcm9jZXNzID0gY2xzLnNiVGFyZ2V0LkxhdW5jaFNpbXBs
ZShhcmd2LCBlbnZwLCBvcy5nZXRjd2QoKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlByb2Nlc3MK
KyAgICAgICAgYXNzZXJ0IGNscy5zYlByb2Nlc3MuR2V0U3RhdGUoKSA9PSBsbGRiLmVTdGF0ZVN0
b3BwZWQKKworICAgICAgICBjbHMuc2JUaHJlYWQgPSBjbHMuc2JQcm9jZXNzLkdldFRocmVhZEF0
SW5kZXgoMCkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRocmVhZAorCisgICAgICAgICMgRnJhbWUg
MCBpcyB0aGUgZnVuY3Rpb24gd2l0aCBuYW1lIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05B
TUUuIFdlIHdhbnQgdGhlIGZyYW1lIG9mIHRoZSBjYWxsZXIgb2YKKyAgICAgICAgIyBCUkVBS19G
T1JfVEVTVElOR19GVU5DVElPTl9OQU1FIGJlY2F1c2UgaXQgaGFzIGFsbCB0aGUgaW50ZXJlc3Rp
bmcgbG9jYWwgdmFyaWFibGVzIHdlIHdhbnQgdG8gdGVzdC4KKyAgICAgICAgY2xzLnNiRnJhbWUg
PSBjbHMuc2JUaHJlYWQuR2V0RnJhbWVBdEluZGV4KDEpCisgICAgICAgIGFzc2VydCBjbHMuc2JG
cmFtZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duKGNscyk6CisgICAgICAg
IGNscy5zYlByb2Nlc3MuS2lsbCgpCisKKworY2xhc3MgVGVzdFN1bW1hcnlQcm92aWRlcnModW5p
dHRlc3QuVGVzdENhc2UpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNs
cyk6CisgICAgICAgIGdsb2JhbCBjYWNoZWRfZGVidWdfc2Vzc2lvbgorICAgICAgICBpZiBub3Qg
Y2FjaGVkX2RlYnVnX3Nlc3Npb246CisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbiA9
IExMREJEZWJ1Z1Nlc3Npb24oKQorICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24uc2V0
dXAoKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9zYkZyYW1lKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gY2FjaGVkX2RlYnVnX3Nlc3Npb24uc2JGcmFtZQorCisgICAgIyBUaGUgTExEQiBQeXRo
b24gbW9kdWxlIGRvZXMgbm90IHdvcmsgd2l0aCBQeXRob24gbXVsdGlwcm9jZXNzaW5nIGFuZCBj
YXVzZXMgZXJyb3JzIG9mIHRoZSBmb3JtOgorICAgICMgICAgIG9iamNbNzY3OTRdOiArW19fTURR
dWVyeSBpbml0aWFsaXplXSBtYXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGluIGFub3RoZXIgdGhy
ZWFkIHdoZW4gZm9yaygpIHdhcyBjYWxsZWQuCisgICAgIyAgICAgICAgICAgICAgICAgIFdlIGNh
bm5vdCBzYWZlbHkgY2FsbCBpdCBvciBpZ25vcmUgaXQgaW4gdGhlIGZvcmsoKSBjaGlsZCBwcm9j
ZXNzLiBDcmFzaGluZyBpbnN0ZWFkLgorICAgICMgU28sIHdlIHJ1biB0aGUgZm9sbG93aW5nIHRl
c3RzIHNlcmlhbGx5LgorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRl
ciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtp
dC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJs
ZSgnYU51bGxTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1h
cnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBk
ZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5n
KHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmdJbXBs
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAs
IGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9z
YkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAxLCBjb250ZW50
cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5n
SW1wbF9TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5
ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFt
ZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9
ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgwMCcgfSIpCisKKyAgICAjIE1BUks6IFdURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHNlcmlhbF90ZXN0X1dU
RlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1h
cnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUu
RmluZFZhcmlhYmxlKCdhTnVsbFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNl
cmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nKHNlbGYpOgor
ICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihz
ZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZycpLCB7fSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcnIH0i
KQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfOGJpdF9z
dHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmcnKSwg
e30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgY29u
dGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5
ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZp
bmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9c
XHUxNjgwXFx4MDAnIH0iKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341712</attachid>
            <date>2018-05-31 17:15:25 -0700</date>
            <delta_ts>2018-05-31 17:23:39 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531171524.patch</filename>
            <type>text/plain</type>
            <size>45210</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uYTFhNDU3NzFkZDIyYWNmMmY5ZjRiOWVkMWJlZGMwNDM0OWFh
NmQ1NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDU4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9t
IHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5w
cmludGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBS
dW5uZXIsIHVuaXRfdGVzdF9uYW1lCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAorX2hvc3QgPSBTeXN0ZW1Ib3N0KCkKK193ZWJraXRfcm9vdCA9IE5vbmUKKworCitkZWYg
X2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgY29uZmlnID0gQ29uZmlnKF9ob3N0LmV4
ZWN1dGl2ZSwgX2hvc3QuZmlsZXN5c3RlbSkKKyAgICBsbGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0
YWJsZSA9IG9zLnBhdGguam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0
X2NvbmZpZ3VyYXRpb24oKSksICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICByZXR1cm4gb3MucGF0
aC5pc2ZpbGUobGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpIGFuZCBvcy5hY2Nlc3MobGxk
Yl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUsIG9zLlhfT0spCisKKworZGVmIF9idWlsZF9sbGRi
X3dlYmtpdF90ZXN0ZXIoKToKKyAgICBpZiBub3QgX2hvc3QucGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgIF9sb2cuZXJyb3IoJ2xsZGJXZWJLaXRUZXN0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLicpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGNvbmZpZyA9IENvbmZp
ZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgYnVpbGRfbGxkYndlYmtp
dHRlc3RlciA9IG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJywg
J2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXInKQorICAgIHJldHVybiBfaG9zdC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoW2J1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1
cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSldLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUpID09IDAKKwogCiBkZWYgbWFpbigpOgorICAgIGdsb2JhbCBfd2Via2l0X3Jvb3QKICAg
ICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIAogICAgIHVwID0gb3MucGF0aC5kaXJu
YW1lCi0gICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSkpKSkKKyAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKSkpKSkKIAogICAgIHRlc3RlciA9IFRlc3RlcigpCi0gICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwg
J3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMgVGhlcmUgaXMgbm8g
V2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJLaXQyIHVuaXR0
ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBv
ciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgotICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3Mu
cGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRzJyksICd3
ZWJraXQnKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykKKworICAgIGxsZGJf
cHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkK
KyAgICBpZiBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6CisgICAgICAgIGlm
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzeXMu
cGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0ZXN0ZXIuYWRkX3Ry
ZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgX2xv
Zy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgcGF0aCB0
byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5KSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQogCiAgICAgdGVzdGVyLnNraXAoKCd3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHks
IHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKQEAgLTcxLDExICsxMDQsMTEgQEAgZGVmIG1haW4oKToKICAgICAgICAgZnJvbSBnb29n
bGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAgIHVzZV9saWJyYXJ5
KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhfc3lzX3BhdGgoKQot
ICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMn
LCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQogICAgIGVs
c2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7
IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0g
ICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKKyAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4od2ls
bF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCiAKIAog
ZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9uYW1lcywgZmFpbHVy
ZXMsIGVycm9ycyk6CkBAIC0xMzEsNyArMTY0LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAK
ICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBkZWYgcnVuKHNl
bGYpOgorICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9RmFsc2Up
OgogICAgICAgICBzZWxmLl9vcHRpb25zLCBhcmdzID0gc2VsZi5fcGFyc2VfYXJncygpCiAgICAg
ICAgIHNlbGYucHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKIApAQCAtMTQyLDkgKzE3
NSw5IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignTm8g
dGVzdHMgdG8gcnVuJykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJldHVy
biBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMo
bmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQogCi0gICAgZGVmIF9ydW5fdGVzdHMo
c2VsZiwgbmFtZXMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxsX3J1bl9s
bGRiX3dlYmtpdF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIFBZVEhPTlBBVEggaXMgc2V0
IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0aW9uYWxf
cGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIApAQCAtMTU0LDYgKzE4NywxNCBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBh
dXRvaW5zdGFsbF9ldmVyeXRoaW5nCiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQog
CisgICAgICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgorICAgICAgICAgICAgc2Vs
Zi5wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tpbmcgbGxkYldlYktpdFRlc3RlciAuLi4iKQor
ICAgICAgICAgICAgaWYgbm90IF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgICAgICAg
ICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0
ZXIgLi4uIikKKyAgICAgICAgICAgICAgICBpZiBub3QgX2J1aWxkX2xsZGJfd2Via2l0X3Rlc3Rl
cigpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gYnVpbGQgbGxk
YldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKZGlmZiAtLWdpdCBh
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmln
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYzU2NDhmYTc1MWEzMGU5YTA5YTNhNTdmNmVmZjk2ZWUxMDY3MjdmNwot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTA5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZT8gIi4uLy4uLy4uLy4uLy4uL0ludGVybmFs
L0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKworVVNFX0lOVEVSTkFM
X1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5B
TF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVf
SU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5B
TF9TREspOworCitBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKworQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwor
Q0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKK0NMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9B
VVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitD
TEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VY
VEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZ
RVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05W
RVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworQ0xB
TkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElDSU9VU19N
T1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gTk87CitDTEFOR19XQVJO
X19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElfSU1BR0VTID0gTk87CitERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CitHQ0NfREVCVUdHSU5HX1NZ
TUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CitHQ0NfRU5BQkxFX0NQ
UF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJID0gTk87CitHQ0NfRU5BQkxF
X09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJT04gPSBO
TzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKK0dDQ19PQkpDX0NB
TExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7
CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAkKGluaGVy
aXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOworR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJO
SU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
R0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsKK0dDQ19XQVJOX0FCT1VU
X01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworR0NDX1dBUk5fTk9O
X1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05fQ09NUEFSRSA9IFlFUzsK
K0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9VTklOSVRJQUxJ
WkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1XY2FzdC1xdWFsIC1X
Y2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNlbGYgLVdt
aXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XcGFja2VkIC1XcG9p
bnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5ncyAtV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwt
Y29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitIRUFERVJfU0VBUkNIX1BBVEhTID0g
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlOworCitUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IkKE1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmllcikpOworVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
Ul8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEzID0gMTAxMzAw
OworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTQgPSAxMDE0MDA7CitUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEwMTUwMDsKKworU1VQUE9SVEVEX1BMQVRGT1JNUyA9
IG1hY29zeDsKKworREVCVUdfREVGSU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFs
ID0gTkRFQlVHOworREVCVUdfREVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFS
SUFOVCkpOworCitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKK0RFQURfQ09ERV9TVFJJUFBJ
TkcgPSBOTzsKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CisKK1NES1JPT1QgPSBtYWNv
c3guaW50ZXJuYWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RI
RVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJf
TERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhj
Y29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1YWE2MGVkYzY5MDJiODg2Yzk0OWZl
ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmln
dXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHly
aWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisv
LyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmln
IgorCitPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9N
QUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9ICQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21h
Y29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAx
MjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEw
LjEzOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDE0MDAgPSAxMC4xNDsKK01B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAwID0gMTAuMTU7CisKK0dDQ19XQVJO
X0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gZHdhcmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7
CitTREtST09UXyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOworCitX
S19DQ0FDSEVfRElSID0gJChTUkNST09UKS8uLi8uLi8uLi9Ub29scy9jY2FjaGU7CisjaW5jbHVk
ZSAiLi4vLi4vLi4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIKZGlmZiAtLWdpdCBhL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJXZWJL
aXRUZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMyZTYwODY1Y2M5MDVkMjZlN2UwOGU4Nzg0
MjZhZDZhZTI4MTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAgKzEs
MjYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8v
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
Ly8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8v
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RVQ1Rf
TkFNRSA9ICQoVEFSR0VUX05BTUUpOworCitPVEhFUl9MREZMQUdTW3Nkaz1tYWNvc3gqXSA9ICQo
aW5oZXJpdGVkKSAtZnJhbWV3b3JrIENvY29hIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvbGliV1RGLmEiOwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3OWVkZTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKQEAgLTAsMCArMSwy
IEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitpbmNsdWRlIC4uLy4uLy4uL01ha2Vm
aWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJX
ZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTk5ZTMwNjU2ODBhNTk0NzY0NjA3YzYyNzExMmM5YjBjMmM0YzFjNgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCArMSwyMDUgQEAKKy8vICEkKlVURjgq
JCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZl
cnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlv
biAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMw
NUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFNkMzQUZGMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJX
VEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENF
NkMzQUZFMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQ0U2QzNCMDEyMEMw
QzQ0NDAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZDM0IwMDIwQzBDNDQzMDAzRTMzRDggLyogbGli
aWN1Y29yZS5keWxpYiAqLzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisv
KiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUYxQUYw
Mjc2QzAwM0ZDOEQxIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9
IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsK
KwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTdDMjIyNzUxMUFGQzREOUMwMDhDMzMz
OCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXIueGNjb25m
aWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUzMUFGQzREOUMwMDhDMzMz
OCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzRBQjNBMTFBRjAyNzZDMDAz
RkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBl
eHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUlu
SW5kZXggPSAwOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gbWFpbi5jcHA7IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0U2QzNBRkUyMEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5h
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2
ZS5hcjsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTZD
M0IwMDIwQzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIi
OyBuYW1lID0gbGliaWN1Y29yZS5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliaWN1Y29yZS5keWxp
Yjsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
N0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEg
aW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDRTZDM0IwMTIwQzBDNDQ0MDAzRTMzRDggLyogbGliaWN1
Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQk3QzIyMjc1
MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhH
cm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUxMUFGQzREOUMwMDhDMzMzOCAvKiBC
YXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1Jl
bGVhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJX
ZWJLaXRUZXN0ZXIueGNjb25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9IENvbmZpZ3VyYXRpb25z
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIzOTgxQUYwMjc2QzAw
M0ZDOEQxID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzIy
Mjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJQ0UzRjQ0MjUy
MDVDNkEwMTAwNzE5NUIzIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQ0UzRjQ0MjQyMDVDNjZEOTAw
NzE5NUIzIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkJN0M0QUIzQTIxQUYwMjc2QzAwM0ZD
OEQxIC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0M0QUIzQTExQUYwMjc2QzAwM0ZD
OEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5
NUIzIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNo
aWxkcmVuID0gKAorCQkJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLywK
KwkJCSk7CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CisJCUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICov
ID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTZDM0IwMDIw
QzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAqLywKKwkJCQlDRTZDM0FGRTIwQzBC
MTdCMDAzRTMzRDggLyogbGliV1RGLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rp
b24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAx
QUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2
QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJsbGRiV2ViS2l0VGVzdGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDNEFCMzlE
MUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2VzICovLAorCQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNG
QzhEMSAvKiBGcmFtZXdvcmtzICovLAorCQkJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBD
b3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0
TmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gN0M0QUIzQTEx
QUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQk3QzRB
QjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQ
QlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcw
MDsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAw
M0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldl
YktpdFRlc3RlciIgKi87CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOwor
CQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5n
cyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3Vw
ID0gN0M0QUIzOTgxQUYwMjc2QzAwM0ZDOEQxOworCQkJcHJvZHVjdFJlZkdyb3VwID0gN0M0QUIz
QTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAi
IjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTdDNEFCM0EwMUFG
MDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJfTsKKy8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQk3QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBt
YWluLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk3QzRB
QjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZD
NEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJREVCVUdfREVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJ
CX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAv
KiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNl
Q29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1
Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0
aW9uUmVmZXJlbmNlID0gN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0
ZXIueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNj
b25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNl
OworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTdDNEFCMzlDMUFGMDI3NkMwMDNG
QzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJL
aXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVn
ICovLAorCQkJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktp
dFRlc3RlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRD
b25maWd1cmF0aW9ucyA9ICgKKwkJCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcg
Ki8sCisJCQkJN0M0QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNl
Y3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSA3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyog
UHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRU
ZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWFmODJmZTU4YThiZmUwOTY4NmZjMzNkYWI2ZmI0NmI3MTRjMjkwMAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgor
CitleHRlcm4gdm9pZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJy
ZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKSB7IHJldHVybjsgfQorCit0ZW1wbGF0ZTxz
aXplX3QgbGVuZ3RoPgorc3RhdGljIFN0cmluZyB1dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAo
JnN0cmluZylbbGVuZ3RoXSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVp
bGRlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoIC0gMSk7CisgICAgZm9yIChhdXRvIGMgOiBzdHJp
bmcpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CisgICAg
cmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQ
cm92aWRlcnMoKQoreworICAgIFN0cmluZyBhTnVsbFN0cmluZyB7ICIiIH07CisgICAgU3RyaW5n
SW1wbCogYU51bGxTdHJpbmdJbXBsID0gYU51bGxTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5n
IGFuRW1wdHlTdHJpbmcgeyAiIiB9OworICAgIFN0cmluZ0ltcGwqIGFuRW1wdHlTdHJpbmdJbXBs
ID0gYW5FbXB0eVN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW44Qml0U3RyaW5nIHsgInLD
qXN1bcOpIiB9OworICAgIFN0cmluZ0ltcGwqIGFuOEJpdFN0cmluZ0ltcGwgPSBhbjhCaXRTdHJp
bmcuaW1wbCgpOworCisgICAgU3RyaW5nIGExNkJpdFN0cmluZyA9IHV0ZjE2U3RyaW5nKHUiXHUx
NjgwQ2FwcHVjY2lub1x1MTY4MCIpOworICAgIFN0cmluZ0ltcGwqIGExNkJpdFN0cmluZ0ltcGwg
PSBhMTZCaXRTdHJpbmcuaW1wbCgpOworCisgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3Zp
ZGVycygpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQorewor
ICAgIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCk7CisgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIGV4
ZWN1dGFibGUgZG9lcyBub3RoaW5nIGFuZCBpcyBvbmx5IG1lYW50IGZvciBkZWJ1Z2dpbmcgbGxk
Yl93ZWJraXQucHkuXG4iKTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xs
ZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0
ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmNjNjdmN2Y4ODQ5M2ExZWJlZDJkZWI1ZTI2NTRkNTU4Y2RjNWVj
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5
CkBAIC0wLDAgKzEsMTQyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzog
dXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2lt
cG9ydCBhdGV4aXQKK2ltcG9ydCBsbGRiCitpbXBvcnQgbGxkYl93ZWJraXQKK2ltcG9ydCBvcwor
aW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmln
IGltcG9ydCBDb25maWcKKworCisjIFdlIGNhY2hlIHRoZSBsbGRiIGRlYnVnIHNlc3Npb24gc3Rh
dGUgc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVhY2ggY2FsbCB0byBhIHNl
cmlhbF90ZXN0XyBtZXRob2QuCisjIFdlIHN0b3JlIGl0IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNv
IHRoYXQgd2UgY2FuIGRlbGV0ZSB0aGlzIGNhY2hlZCBzdGF0ZSBvbiBleGl0KDMpLgorIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1
bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxl
ZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSkuCitjYWNoZWRfZGVidWdfc2Vzc2lvbiA9
IE5vbmUKKworCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9y
dHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1
bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK0BhdGV4
aXQucmVnaXN0ZXIKK2RlZiBkZXN0cm95X2NhY2hlZF9kZWJ1Z19zZXNzaW9uKCk6CisgICAgaWYg
Y2FjaGVkX2RlYnVnX3Nlc3Npb246CisgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnRlYXJE
b3duKCkKKworCitjbGFzcyBMTERCRGVidWdTZXNzaW9uKG9iamVjdCk6CisgICAgQGNsYXNzbWV0
aG9kCisgICAgZGVmIHNldHVwKGNscyk6CisgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1F
ID0gJ2xsZGJXZWJLaXRUZXN0ZXInCisgICAgICAgIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9O
X05BTUUgPSAnYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycKKworICAgICAgICBjbHMu
c2JEZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgICAgICBjbHMuc2JEZWJ1
Z2dlci5TZXRBc3luYyhGYWxzZSkKKworICAgICAgICAjIEZJWE1FOiBGaW5kIGEgYnVpbHQgbGxk
YldlYktpdFRlc3RlciB3aXRob3V0IGhhcmRjb2RpbmcgYnVpbGQgY29uZmlndXJhdGlvbnMuCisg
ICAgICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkKKyAgICAgICAgY29uZmlnID0gQ29uZmlnKGhvc3Qu
ZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVy
RXhlY3V0YWJsZSA9IGhvc3QuZmlsZXN5c3RlbS5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3Rvcnko
J0RlYnVnJyksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FKQorICAgICAgICBpZiBub3Qgb3MucGF0
aC5pc2ZpbGUoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSBvciBub3Qgb3MuYWNjZXNz
KGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSwgb3MuWF9PSyk6CisgICAgICAgICAgICBj
bHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihjb25m
aWcuYnVpbGRfZGlyZWN0b3J5KCdSZWxlYXNlJyksIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FKQor
CisgICAgICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVnZ2VyLkNyZWF0ZVRhcmdldChzdHIo
Y2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRh
cmdldAorICAgICAgICBjbHMuc2JUYXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19G
T1JfVEVTVElOR19GVU5DVElPTl9OQU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdl
dEZpbGVuYW1lKCkpCisKKyAgICAgICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUK
KyAgICAgICAgY2xzLnNiUHJvY2VzcyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwg
ZW52cCwgb3MuZ2V0Y3dkKCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAg
IGFzc2VydCBjbHMuc2JQcm9jZXNzLkdldFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisK
KyAgICAgICAgY2xzLnNiVGhyZWFkID0gY2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDAp
CisgICAgICAgIGFzc2VydCBjbHMuc2JUaHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhl
IGZ1bmN0aW9uIHdpdGggbmFtZSBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3
YW50IHRoZSBmcmFtZSBvZiB0aGUgY2FsbGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJ
TkdfRlVOQ1RJT05fTkFNRSBiZWNhdXNlIGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2Fs
IHZhcmlhYmxlcyB3ZSB3YW50IHRvIHRlc3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNi
VGhyZWFkLkdldEZyYW1lQXRJbmRleCgxKQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKwor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bihjbHMpOgorICAgICAgICBjbHMuc2JQ
cm9jZXNzLktpbGwoKQorCisKK2NsYXNzIFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRl
c3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAg
ICAgICBnbG9iYWwgY2FjaGVkX2RlYnVnX3Nlc3Npb24KKyAgICAgICAgaWYgbm90IGNhY2hlZF9k
ZWJ1Z19zZXNzaW9uOgorICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBMTERCRGVi
dWdTZXNzaW9uKCkKKyAgICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNldHVwKCkKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfc2JGcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNh
Y2hlZF9kZWJ1Z19zZXNzaW9uLnNiRnJhbWUKKworICAgICMgVGhlIExMREIgUHl0aG9uIG1vZHVs
ZSBkb2VzIG5vdCB3b3JrIHdpdGggUHl0aG9uIG11bHRpcHJvY2Vzc2luZyBhbmQgY2F1c2VzIGVy
cm9ycyBvZiB0aGUgZm9ybToKKyAgICAjICAgICBvYmpjWzc2Nzk0XTogK1tfX01EUXVlcnkgaW5p
dGlhbGl6ZV0gbWF5IGhhdmUgYmVlbiBpbiBwcm9ncmVzcyBpbiBhbm90aGVyIHRocmVhZCB3aGVu
IGZvcmsoKSB3YXMgY2FsbGVkLgorICAgICMgICAgICAgICAgICAgICAgICBXZSBjYW5ub3Qgc2Fm
ZWx5IGNhbGwgaXQgb3IgaWdub3JlIGl0IGluIHRoZSBmb3JrKCkgY2hpbGQgcHJvY2Vzcy4gQ3Jh
c2hpbmcgaW5zdGVhZC4KKyAgICAjIFNvLCB3ZSBydW4gdGhlIGZvbGxvd2luZyB0ZXN0cyBzZXJp
YWxseS4KKworICAgICMgTUFSSzogV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBj
YXNlcworCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
X251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3Ry
aW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FOdWxs
U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBs
ZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlh
bF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToK
KyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3Zp
ZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQg
PSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0lt
cGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0g
bGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5G
aW5kVmFyaWFibGUoJ2FuOEJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnclxc
eGU5c3VtXFx4ZTknIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3Vt
bWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJf
d2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZh
cmlhYmxlKCdhMTZCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgaXM4Yml0ID0gMCwgY29udGVudHMgPSAnXFx1MTY4
MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdf
U3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxk
Yl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJp
YWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFy
eSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVz
dF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAg
c3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JG
cmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAg
IGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNl
bGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92
aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44Qml0U3RyaW5nJyksIHt9KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGNvbnRlbnRzID0g
J3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3Vt
bWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJf
d2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2ExNkJpdFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5
LCB1InsgbGVuZ3RoID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxc
eDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341714</attachid>
            <date>2018-05-31 17:23:41 -0700</date>
            <delta_ts>2018-05-31 17:32:38 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531172340.patch</filename>
            <type>text/plain</type>
            <size>45502</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uMjJiZjkxNWFjYTc5ZDNhNmFhZjdmYTk4MzE5ZmM3YzRkNjdl
MGRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDY4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0
IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdl
YmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKK19ob3N0ID0gU3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBO
b25lCisKKworZGVmIF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgIGNvbmZpZyA9IENv
bmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgbGxkYl93ZWJraXRf
dGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShj
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAg
cmV0dXJuIG9zLnBhdGguaXNmaWxlKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKSBhbmQg
b3MuYWNjZXNzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlLCBvcy5YX09LKQorCisKK2Rl
ZiBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgorICAgICAgICBfbG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGJ1
aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICB0cnk6CisgICAgICAg
IF9ob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoW2J1aWxkX2xsZGJ3ZWJraXR0
ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZp
Z3VyYXRpb24oKSldKQorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGV4Y2VwdCBTY3JpcHRFcnJv
ciBhcyBlOgorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnU2NyaXB0RXJyb3I6IHt9Jy5m
b3JtYXQoZSkKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgZS5tZXNzYWdlX3dpdGhfb3V0
cHV0KCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBzdHIoZSkKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgcmV0dXJuIEZhbHNlCisKIAogZGVmIG1haW4oKToKKyAgICBnbG9iYWwgX3dlYmtpdF9y
b290CiAgICAgY29uZmlndXJlX2xvZ2dpbmcobG9nZ2VyPV9sb2cpCiAKICAgICB1cCA9IG9zLnBh
dGguZGlybmFtZQotICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3MucGF0aC5hYnNw
YXRoKF9fZmlsZV9fKSkpKSkpCisgICAgX3dlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3Mu
cGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIoKQotICAg
IHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycsICdTY3Jp
cHRzJyksICd3ZWJraXRweScpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Vi
a2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAKICAgICAjIFRoZXJl
IGlzIG5vIFdlYktpdDIgb24gV2luZG93cywgc28gd2UgZG9uJ3QgbmVlZCB0byBydW4gV2ViS2l0
MiB1bml0dGVzdHMgb24gaXQuCiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKLSAgICAgICAgdGVzdGVyLmFkZF90
cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0
cycpLCAnd2Via2l0JykKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Vi
a2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcpCisKKyAg
ICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVj
dG9yeSgpCisgICAgaWYgb3MucGF0aC5pc2RpcihsbGRiX3B5dGhvbl9kaXJlY3RvcnkpOgorICAg
ICAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICAg
ICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICAgICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCisg
ICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQorICAgIGVsc2U6CisgICAg
ICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5k
IHBhdGggdG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCisg
ICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKIAogICAgIHRlc3Rlci5z
a2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5pdHRlc3QnLCksICdhcmUg
cmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJyk6CkBAIC03MSwxMSArMTE0LDExIEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGZy
b20gZ29vZ2xlLmFwcGVuZ2luZS5kaXN0IGltcG9ydCB1c2VfbGlicmFyeQogICAgICAgICB1c2Vf
bGlicmFyeSgnZGphbmdvJywgJzEuMicpCiAgICAgICAgIGRldl9hcHBzZXJ2ZXIuZml4X3N5c19w
YXRoKCkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwg
J1Rvb2xzJywgJ1F1ZXVlU3RhdHVzU2VydmVyJykpCisgICAgICAgIHRlc3Rlci5hZGRfdHJlZShv
cy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkK
ICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVzU2VydmVy
IHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0YWxsZWQu
JykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bigpCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIu
cnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3Rz
KQogCiAKIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3RfbmFtZXMs
IGZhaWx1cmVzLCBlcnJvcnMpOgpAQCAtMTMxLDcgKzE3NCw3IEBAIGNsYXNzIFRlc3RlcihvYmpl
Y3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVm
IHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3Rz
PUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3Mo
KQogICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE0
Miw5ICsxODUsOSBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAg
ICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X3Rlc3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKIAotICAgIGRlZiBfcnVu
X3Rlc3RzKHNlbGYsIG5hbWVzKToKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcywgd2ls
bF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRI
IGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRp
dGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5wYXRoCiAKQEAgLTE1NCw2ICsxOTcsMTQgQEAg
Y2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBp
bXBvcnQgYXV0b2luc3RhbGxfZXZlcnl0aGluZwogICAgICAgICBhdXRvaW5zdGFsbF9ldmVyeXRo
aW5nKCkKIAorICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKKyAgICAgICAg
ICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5nIGxsZGJXZWJLaXRUZXN0ZXIg
Li4uIikKKyAgICAgICAgICAgIGlmIG5vdCBfZmluZF9sbGRiX3dlYmtpdF90ZXN0ZXIoKToKKyAg
ICAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJCdWlsZGluZyBsbGRiV2Vi
S2l0VGVzdGVyIC4uLiIpCisgICAgICAgICAgICAgICAgaWYgbm90IF9idWlsZF9sbGRiX3dlYmtp
dF90ZXN0ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIGJ1
aWxkIGxsZGJXZWJLaXRUZXN0ZXIuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKICAgICAgICAgICAgIF9sb2cu
d2FybmluZygiQ2hlY2tpbmcgY29kZSBjb3ZlcmFnZSwgc28gcnVubmluZyB0aGluZ3Mgc2VyaWFs
bHkiKQogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAxCmRpZmYg
LS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1NjQ4ZmE3NTFhMzBlOWEwOWEzYTU3ZjZlZmY5NmVlMTA2
NzI3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDEwOSBAQAorLy8gQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
Ly8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGU/ICIuLi8uLi8uLi8uLi8uLi9J
bnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25maWciCisKK1VTRV9J
TlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFUSU9OKSk7CitVU0Vf
SU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0VfSU5URVJOQUxfU0RLX0RlYnVnID0g
JChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxfU0RLX1JlbGVhc2UgPSAkKEhBVkVf
SU5URVJOQUxfU0RLKTsKKworQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisKK0NMQU5H
X0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFSWSA9IGxp
YmMrKzsKK0NMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CitDTEFOR19XQVJOX0JMT0NLX0NB
UFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKK0NMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0g
WUVTOworQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9D
WFgwWF9FWFRFTlNJT05TID0gTk87CitDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CitDTEFO
R19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJT
SU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5f
Tk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9PQkpDX0xJVEVS
QUxfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlF
UzsKK0NMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CitDTEFOR19XQVJOX1NVU1BJ
Q0lPVVNfTU9WRSA9IFlFUzsKK0NMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IE5POworQ0xB
TkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFS
RURfU0VMRUNUT1IgPSBZRVM7CitDT01CSU5FX0hJRFBJX0lNQUdFUyA9IE5POworREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworRU5BQkxFX1NUUklDVF9PQkpDX01T
R1NFTkQgPSBZRVM7CitHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVH
R0lOR19TWU1CT0xTID0gZGVmYXVsdDsKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5POworR0NDX0VO
QUJMRV9DUFBfRVhDRVBUSU9OUyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IE5POworR0ND
X0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZTUJPTF9TRVBBUkFU
SU9OID0gTk87CitHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOworR0NDX0dFTkVSQVRFX0RF
QlVHR0lOR19TWU1CT0xTID0gWUVTOworR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CitHQ0Nf
T0JKQ19DQUxMX0NYWF9DRFRPUlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVS
ID0gWUVTOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykg
JChpbmhlcml0ZWQpOworR0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKK0dDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gTk87CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitHQ0NfVFJF
QVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CitHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BS
T1RPVFlQRVMgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKK0dDQ19X
QVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9TSUdOX0NPTVBBUkUg
PSBZRVM7CitHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworR0NDX1dBUk5fVU5J
TklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsK
K0dDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IE5POworV0FSTklOR19DRkxBR1MgPSAtV2Nhc3Qt
cXVhbCAtV2NoYXItc3Vic2NyaXB0cyAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1z
ZWxmIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BhY2tl
ZCAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQtZGVjbHMgLVd1bmRlZiAtV3dyaXRlLXN0cmlu
Z3MgLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVdnbG9iYWwtY29uc3RydWN0b3JzIC1XdGF1dG9s
b2dpY2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaDsKKworSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZTsKKworVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1IgPSAkKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
JChNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ6c3VmZml4OmlkZW50aWZpZXIpKTsKK1RBUkdFVF9N
QUNfT1NfWF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMyA9
IDEwMTMwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzE0ID0gMTAxNDAwOworVEFS
R0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTUgPSAxMDE1MDA7CisKK1NVUFBPUlRFRF9QTEFU
Rk9STVMgPSBtYWNvc3g7CisKK0RFQlVHX0RFRklORVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVT
X25vcm1hbCA9IE5ERUJVRzsKK0RFQlVHX0RFRklORVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJS
RU5UX1ZBUklBTlQpKTsKKworR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CitERUFEX0NPREVf
U1RSSVBQSU5HID0gTk87CitTVFJJUF9JTlNUQUxMRURfUFJPRFVDVCA9IE5POworCitTREtST09U
ID0gbWFjb3N4LmludGVybmFsOworCitPVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdT
KTsKK09USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsK
K09USEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVs
ZWFzZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzRmNzE3MDBlZTRhNDNlNWFhNjBlZGM2OTAyYjg4
NmM5NDlmZWYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVy
L0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDQ1IEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8v
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiQmFzZS54
Y2NvbmZpZyIKKworT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKworVEFSR0VUX01BQ19PU19YX1ZF
UlNJT05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOworCitNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8kKFBMQVRGT1JNX05BTUUp
XyQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK01BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVF9tYWNvc3hfMTAxMTAwID0gMTAuMTE7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFj
b3N4XzEwMTIwMCA9IDEwLjEyOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEz
MDAgPSAxMC4xMzsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNDAwID0gMTAu
MTQ7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTUwMCA9IDEwLjE1OworCitH
Q0NfV0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFU
SU9OX0ZPUk1BVCA9IGR3YXJmOworCitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFM
X1NESykpOworU0RLUk9PVF8gPSBtYWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5h
bDsKKworV0tfQ0NBQ0hFX0RJUiA9ICQoU1JDUk9PVCkvLi4vLi4vLi4vVG9vbHMvY2NhY2hlOwor
I2luY2x1ZGUgIi4uLy4uLy4uL2NjYWNoZS9jY2FjaGUueGNjb25maWciCmRpZmYgLS1naXQgYS9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rl
ci54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9s
bGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMmU2MDg2NWNjOTA1ZDI2ZTdl
MDhlODc4NDI2YWQ2YWUyODE0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpAQCAt
MCwwICsxLDI2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBt
ZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8v
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitQ
Uk9EVUNUX05BTUUgPSAkKFRBUkdFVF9OQU1FKTsKKworT1RIRVJfTERGTEFHU1tzZGs9bWFjb3N4
Kl0gPSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBDb2NvYSAtZm9yY2VfbG9hZCAiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL2xpYldURi5hIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9NYWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0NDRjMzgwZWVjNzllZGU5Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCkBAIC0w
LDAgKzEsMiBAQAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2NyaXB0cworaW5jbHVkZSAuLi8uLi8u
Li9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmM1MmExNWUxMjgzMzdiMGI2ZTQ4Mzk1MDkwNTRhYzNkYTczMTYyMTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktp
dFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjA1IEBACisvLyAh
JCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlv
YmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCNjg0NEExQUZBNzk3
ODAwMkIzMDVDIC8qIG1haW4uY3BwICovOyB9OworCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDgg
LyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgKi87IH07CisJCUNFNkMz
QjAxMjBDMEM0NDQwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4
IC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFC
MzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRz
dFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOwor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDE7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk3QzIyMjc1MTFBRkM0RDlD
MDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyog
bGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVy
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MzFBRkM0RDlD
MDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVs
ZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0QUIzQTExQUYw
Mjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXI7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWlu
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1haW4uY3BwOyBzb3Vy
Y2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUNFNkMzQUZFMjBDMEIxN0IwMDNFMzNEOCAvKiBs
aWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1v
LmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYmljdWNv
cmUuZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQ0U2QzNCMDEyMEMwQzQ0NDAwM0UzM0Q4IC8qIGxp
YmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDRTZDM0FGRjIwQzBCMTdCMDAz
RTMzRDggLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJ
N0MyMjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMz
MzggLyogQmFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAv
KiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1
cmF0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCMzk4MUFG
MDI3NkMwMDNGQzhEMSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJN0MyMjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCUNF
M0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNFM0Y0NDI0MjA1
QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJCTdDNEFCM0EyMUFGMDI3
NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNEFCM0ExMUFGMDI3
NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9k
dWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNFM0Y0NDI0MjA1QzY2
RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5j
cHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3
b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0U2
QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCisJCQkJQ0U2QzNB
RkUyMEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBGcmFt
ZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91
cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTdD
NEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCM0E4
MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk3
QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLywKKwkJCQk3QzRBQjM5RTFBRjAy
NzZDMDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4
RDEgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJ
ZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJ
cHJvZHVjdE5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdD
NEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovOworCQkJcHJvZHVj
dFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
KwkJN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJ
aXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVj
ayA9IDA3MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCMzlDMUFG
MDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3Qg
ImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUg
My4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JF
bmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1h
aW5Hcm91cCA9IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9
IDdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQ
YXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk3QzRB
QjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCX07
CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMw
NUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
KwkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIy
NzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVn
KSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBNzFBRjAyNzZDMDAz
RkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzgg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29u
ZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQlu
YW1lID0gRGVidWc7CisJCX07CisJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNl
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVz
dGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0g
UmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5QzFBRjAy
NzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJs
bGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAv
KiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBODFBRjAyNzZDMDAz
RkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxs
ZGJXZWJLaXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8q
IERlYnVnICovLAorCQkJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAor
CQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gN0M0QUIzOTkxQUYwMjc2QzAwM0ZD
OEQxIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjVhZjgyZmU1OGE4YmZlMDk2ODZmYzMzZGFiNmZiNDZiNzE0YzI5MDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworZXh0ZXJuIHZvaWQgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwor
dm9pZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCkgeyByZXR1cm47IH0KKwordGVt
cGxhdGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBTdHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hh
cjE2X3QgKCZzdHJpbmcpW2xlbmd0aF0pCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwor
ICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCAtIDEpOworICAgIGZvciAoYXV0byBj
IDogc3RyaW5nKQorICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykp
OworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RT
dW1tYXJ5UHJvdmlkZXJzKCkKK3sKKyAgICBTdHJpbmcgYU51bGxTdHJpbmcgeyAiIiB9OworICAg
IFN0cmluZ0ltcGwqIGFOdWxsU3RyaW5nSW1wbCA9IGFOdWxsU3RyaW5nLmltcGwoKTsKKworICAg
IFN0cmluZyBhbkVtcHR5U3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbkVtcHR5U3Ry
aW5nSW1wbCA9IGFuRW1wdHlTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuOEJpdFN0cmlu
ZyB7ICJyw6lzdW3DqSIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbjhCaXRTdHJpbmdJbXBsID0gYW44
Qml0U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhMTZCaXRTdHJpbmcgPSB1dGYxNlN0cmlu
Zyh1Ilx1MTY4MENhcHB1Y2Npbm9cdTE2ODAiKTsKKyAgICBTdHJpbmdJbXBsKiBhMTZCaXRTdHJp
bmdJbXBsID0gYTE2Qml0U3RyaW5nLmltcGwoKTsKKworICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1h
cnlQcm92aWRlcnMoKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKK3sKKyAgICB0ZXN0U3VtbWFyeVByb3ZpZGVycygpOworICAgIGZwcmludGYoc3RkZXJyLCAi
VGhpcyBleGVjdXRhYmxlIGRvZXMgbm90aGluZyBhbmQgaXMgb25seSBtZWFudCBmb3IgZGVidWdn
aW5nIGxsZGJfd2Via2l0LnB5LlxuIik7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtp
dF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzY3ZjdmODg0OTNhMWViZWQyZGViNWUyNjU0ZDU1
OGNkYzVlYzIyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0
dGVzdC5weQpAQCAtMCwwICsxLDE0MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIC0qLSBj
b2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisj
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitpbXBvcnQgYXRleGl0CitpbXBvcnQgbGxkYgoraW1wb3J0IGxsZGJfd2Via2l0CitpbXBv
cnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0
LmNvbmZpZyBpbXBvcnQgQ29uZmlnCisKKworIyBXZSBjYWNoZSB0aGUgbGxkYiBkZWJ1ZyBzZXNz
aW9uIHN0YXRlIHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGl0IGFnYWluIGZvciBlYWNoIGNhbGwg
dG8gYSBzZXJpYWxfdGVzdF8gbWV0aG9kLgorIyBXZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJp
YWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNoZWQgc3RhdGUgb24gZXhpdCgzKS4K
KyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBh
bmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCisjIGFy
ZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgorY2FjaGVkX2RlYnVnX3Nl
c3Npb24gPSBOb25lCisKKworIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5
IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3Nl
dFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSku
CitAYXRleGl0LnJlZ2lzdGVyCitkZWYgZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbigpOgor
ICAgIGlmIGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lv
bi50ZWFyRG93bigpCisKKworY2xhc3MgTExEQkRlYnVnU2Vzc2lvbihvYmplY3QpOgorICAgIEBj
bGFzc21ldGhvZAorICAgIGRlZiBzZXR1cChjbHMpOgorICAgICAgICBMTERCX1dFQktJVF9URVNU
RVJfTkFNRSA9ICdsbGRiV2ViS2l0VGVzdGVyJworICAgICAgICBCUkVBS19GT1JfVEVTVElOR19G
VU5DVElPTl9OQU1FID0gJ2JyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMnCisKKyAgICAg
ICAgY2xzLnNiRGVidWdnZXIgPSBsbGRiLlNCRGVidWdnZXIuQ3JlYXRlKCkKKyAgICAgICAgY2xz
LnNiRGVidWdnZXIuU2V0QXN5bmMoRmFsc2UpCisKKyAgICAgICAgIyBGSVhNRTogRmluZCBhIGJ1
aWx0IGxsZGJXZWJLaXRUZXN0ZXIgd2l0aG91dCBoYXJkY29kaW5nIGJ1aWxkIGNvbmZpZ3VyYXRp
b25zLgorICAgICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGNvbmZpZyA9IENvbmZp
Zyhob3N0LmV4ZWN1dGl2ZSwgaG9zdC5maWxlc3lzdGVtKQorICAgICAgICBjbHMubGxkYldlYktp
dFRlc3RlckV4ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGly
ZWN0b3J5KCdEZWJ1ZycpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkKKyAgICAgICAgaWYgbm90
IG9zLnBhdGguaXNmaWxlKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSkgb3Igbm90IG9z
LmFjY2VzcyhjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUsIG9zLlhfT0spOgorICAgICAg
ICAgICAgY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlID0gaG9zdC5maWxlc3lzdGVtLmpv
aW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeSgnUmVsZWFzZScpLCBMTERCX1dFQktJVF9URVNURVJf
TkFNRSkKKworICAgICAgICBjbHMuc2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJn
ZXQoc3RyKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSkpCisgICAgICAgIGFzc2VydCBj
bHMuc2JUYXJnZXQKKyAgICAgICAgY2xzLnNiVGFyZ2V0LkJyZWFrcG9pbnRDcmVhdGVCeU5hbWUo
QlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSwgY2xzLnNiVGFyZ2V0LkdldEV4ZWN1dGFi
bGUoKS5HZXRGaWxlbmFtZSgpKQorCisgICAgICAgIGFyZ3YgPSBOb25lCisgICAgICAgIGVudnAg
PSBOb25lCisgICAgICAgIGNscy5zYlByb2Nlc3MgPSBjbHMuc2JUYXJnZXQuTGF1bmNoU2ltcGxl
KGFyZ3YsIGVudnAsIG9zLmdldGN3ZCgpKQorICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2Vzcwor
ICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2Vzcy5HZXRTdGF0ZSgpID09IGxsZGIuZVN0YXRlU3Rv
cHBlZAorCisgICAgICAgIGNscy5zYlRocmVhZCA9IGNscy5zYlByb2Nlc3MuR2V0VGhyZWFkQXRJ
bmRleCgwKQorICAgICAgICBhc3NlcnQgY2xzLnNiVGhyZWFkCisKKyAgICAgICAgIyBGcmFtZSAw
IGlzIHRoZSBmdW5jdGlvbiB3aXRoIG5hbWUgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFN
RS4gV2Ugd2FudCB0aGUgZnJhbWUgb2YgdGhlIGNhbGxlciBvZgorICAgICAgICAjIEJSRUFLX0ZP
Ul9URVNUSU5HX0ZVTkNUSU9OX05BTUUgYmVjYXVzZSBpdCBoYXMgYWxsIHRoZSBpbnRlcmVzdGlu
ZyBsb2NhbCB2YXJpYWJsZXMgd2Ugd2FudCB0byB0ZXN0LgorICAgICAgICBjbHMuc2JGcmFtZSA9
IGNscy5zYlRocmVhZC5HZXRGcmFtZUF0SW5kZXgoMSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYkZy
YW1lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd24oY2xzKToKKyAgICAgICAg
Y2xzLnNiUHJvY2Vzcy5LaWxsKCkKKworCitjbGFzcyBUZXN0U3VtbWFyeVByb3ZpZGVycyh1bml0
dGVzdC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xz
KToKKyAgICAgICAgZ2xvYmFsIGNhY2hlZF9kZWJ1Z19zZXNzaW9uCisgICAgICAgIGlmIG5vdCBj
YWNoZWRfZGVidWdfc2Vzc2lvbjoKKyAgICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uID0g
TExEQkRlYnVnU2Vzc2lvbigpCisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbi5zZXR1
cCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX3NiRnJhbWUoc2VsZik6CisgICAgICAgIHJl
dHVybiBjYWNoZWRfZGVidWdfc2Vzc2lvbi5zYkZyYW1lCisKKyAgICAjIFRoZSBMTERCIFB5dGhv
biBtb2R1bGUgZG9lcyBub3Qgd29yayB3aXRoIFB5dGhvbiBtdWx0aXByb2Nlc3NpbmcgYW5kIGNh
dXNlcyBlcnJvcnMgb2YgdGhlIGZvcm06CisgICAgIyAgICAgb2JqY1s3Njc5NF06ICtbX19NRFF1
ZXJ5IGluaXRpYWxpemVdIG1heSBoYXZlIGJlZW4gaW4gcHJvZ3Jlc3MgaW4gYW5vdGhlciB0aHJl
YWQgd2hlbiBmb3JrKCkgd2FzIGNhbGxlZC4KKyAgICAjICAgICAgICAgICAgICAgICAgV2UgY2Fu
bm90IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBpbiB0aGUgZm9yaygpIGNoaWxkIHByb2Nl
c3MuIENyYXNoaW5nIGluc3RlYWQuCisgICAgIyBTbywgd2UgcnVuIHRoZSBmb2xsb3dpbmcgdGVz
dHMgc2VyaWFsbHkuCisKKyAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
IHRlc3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQ
cm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0
LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxl
KCdhTnVsbFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFy
eSwgInsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRl
ZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmco
c2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1h
cnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZ0ltcGwn
KSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwg
aXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZT
dHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3Vt
bWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3Ni
RnJhbWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGlzOGJpdCA9IDEsIGNvbnRlbnRz
ID0gJ3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJ
bXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkg
PSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1l
LkZpbmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGlzOGJpdCA9IDAsIGNvbnRlbnRzID0g
J1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikKKworICAgICMgTUFSSzogV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RG
U3RyaW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFy
eSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5G
aW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2Vy
aWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6Cisg
ICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNl
bGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJyksIHt9KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIp
CisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0
cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1t
YXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmluZycpLCB7
fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBjb250
ZW50cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkg
PSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmlu
ZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3VtbWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBjb250ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lub1xc
dTE2ODBcXHgwMCcgfSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341716</attachid>
            <date>2018-05-31 17:32:40 -0700</date>
            <delta_ts>2018-05-31 21:08:51 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531173239.patch</filename>
            <type>text/plain</type>
            <size>46120</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uMjJiZjkxNWFjYTc5ZDNhNmFhZjdmYTk4MzE5ZmM3YzRkNjdl
MGRmNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDY4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0
IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdl
YmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKK19ob3N0ID0gU3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBO
b25lCisKKworZGVmIF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgIGNvbmZpZyA9IENv
bmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgbGxkYl93ZWJraXRf
dGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShj
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAg
cmV0dXJuIG9zLnBhdGguaXNmaWxlKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKSBhbmQg
b3MuYWNjZXNzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlLCBvcy5YX09LKQorCisKK2Rl
ZiBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgorICAgICAgICBfbG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGJ1
aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICB0cnk6CisgICAgICAg
IF9ob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoW2J1aWxkX2xsZGJ3ZWJraXR0
ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZp
Z3VyYXRpb24oKSldKQorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGV4Y2VwdCBTY3JpcHRFcnJv
ciBhcyBlOgorICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnU2NyaXB0RXJyb3I6IHt9Jy5m
b3JtYXQoZSkKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgZS5tZXNzYWdlX3dpdGhfb3V0
cHV0KCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgor
ICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBzdHIoZSkKKyAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgcmV0dXJuIEZhbHNlCisKIAogZGVmIG1haW4oKToKKyAgICBnbG9iYWwgX3dlYmtpdF9y
b290CiAgICAgY29uZmlndXJlX2xvZ2dpbmcobG9nZ2VyPV9sb2cpCiAKICAgICB1cCA9IG9zLnBh
dGguZGlybmFtZQotICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3MucGF0aC5hYnNw
YXRoKF9fZmlsZV9fKSkpKSkpCisgICAgX3dlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3Mu
cGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIoKQotICAg
IHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycsICdTY3Jp
cHRzJyksICd3ZWJraXRweScpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Vi
a2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAKICAgICAjIFRoZXJl
IGlzIG5vIFdlYktpdDIgb24gV2luZG93cywgc28gd2UgZG9uJ3QgbmVlZCB0byBydW4gV2ViS2l0
MiB1bml0dGVzdHMgb24gaXQuCiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgn
d2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKLSAgICAgICAgdGVzdGVyLmFkZF90
cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0
cycpLCAnd2Via2l0JykKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Vi
a2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcpCisKKyAg
ICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9uX2RpcmVj
dG9yeSgpCisgICAgaWYgb3MucGF0aC5pc2RpcihsbGRiX3B5dGhvbl9kaXJlY3RvcnkpOgorICAg
ICAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAgICAgICAg
ICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICAgICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRiJykpCisg
ICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQorICAgIGVsc2U6CisgICAg
ICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5vdCBmaW5k
IHBhdGggdG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkpCisg
ICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKIAogICAgIHRlc3Rlci5z
a2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5pdHRlc3QnLCksICdhcmUg
cmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJyk6CkBAIC03MSwxMSArMTE0LDExIEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGZy
b20gZ29vZ2xlLmFwcGVuZ2luZS5kaXN0IGltcG9ydCB1c2VfbGlicmFyeQogICAgICAgICB1c2Vf
bGlicmFyeSgnZGphbmdvJywgJzEuMicpCiAgICAgICAgIGRldl9hcHBzZXJ2ZXIuZml4X3N5c19w
YXRoKCkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwg
J1Rvb2xzJywgJ1F1ZXVlU3RhdHVzU2VydmVyJykpCisgICAgICAgIHRlc3Rlci5hZGRfdHJlZShv
cy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkK
ICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVzU2VydmVy
IHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0YWxsZWQu
JykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bigpCisgICAgcmV0dXJuIG5vdCB0ZXN0ZXIu
cnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3Rz
KQogCiAKIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3RfbmFtZXMs
IGZhaWx1cmVzLCBlcnJvcnMpOgpAQCAtMTMxLDcgKzE3NCw3IEBAIGNsYXNzIFRlc3RlcihvYmpl
Y3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0gICAgZGVm
IHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3Rz
PUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNlX2FyZ3Mo
KQogICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAKQEAgLTE0
Miw5ICsxODUsOSBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgICAg
ICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorICAgICAgICByZXR1cm4gc2VsZi5fcnVu
X3Rlc3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKIAotICAgIGRlZiBfcnVu
X3Rlc3RzKHNlbGYsIG5hbWVzKToKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1lcywgd2ls
bF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRIT05QQVRI
IGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRlci5hZGRp
dGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5wYXRoCiAKQEAgLTE1NCw2ICsxOTcsMTQgQEAg
Y2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRwYXJ0eSBp
bXBvcnQgYXV0b2luc3RhbGxfZXZlcnl0aGluZwogICAgICAgICBhdXRvaW5zdGFsbF9ldmVyeXRo
aW5nKCkKIAorICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKKyAgICAgICAg
ICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5nIGxsZGJXZWJLaXRUZXN0ZXIg
Li4uIikKKyAgICAgICAgICAgIGlmIG5vdCBfZmluZF9sbGRiX3dlYmtpdF90ZXN0ZXIoKToKKyAg
ICAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJCdWlsZGluZyBsbGRiV2Vi
S2l0VGVzdGVyIC4uLiIpCisgICAgICAgICAgICAgICAgaWYgbm90IF9idWlsZF9sbGRiX3dlYmtp
dF90ZXN0ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVkIHRvIGJ1
aWxkIGxsZGJXZWJLaXRUZXN0ZXIuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKICAgICAgICAgICAgIF9sb2cu
d2FybmluZygiQ2hlY2tpbmcgY29kZSBjb3ZlcmFnZSwgc28gcnVubmluZyB0aGluZ3Mgc2VyaWFs
bHkiKQogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAxCmRpZmYg
LS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNl
LnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMGU3ZDgwMzUyNjdiN2ZlN2I0NzJjMmM0MmIwYmY2ZGIz
NjhkNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29u
ZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDExOSBAQAorLy8gQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
Ly8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
Ly8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGU/ICIuLi8uLi8uLi8uLi8uLi9J
bnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25maWciCisKK1VTRV9J
TlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFUSU9OKSk7CitVU0Vf
SU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0VfSU5URVJOQUxfU0RLX0RlYnVnID0g
JChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxfU0RLX1JlbGVhc2UgPSAkKEhBVkVf
SU5URVJOQUxfU0RLKTsKKworQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisKK0NMQU5H
X0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFSWSA9IGxp
YmMrKzsKK0NMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CitDTEFOR19XQVJOX0JMT0NLX0NB
UFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKK0NMQU5HX1dBUk5fQk9PTF9DT05WRVJTSU9OID0g
WUVTOworQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9D
WFgwWF9FWFRFTlNJT05TID0gTk87CitDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7CitDTEFO
R19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5GSU5JVEVfUkVDVVJT
SU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5f
Tk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9PQkpDX0xJVEVS
QUxfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJUyA9IFlF
UzsKK0NMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CitDTEFOR19XQVJOX1NVU1BJ
Q0lPVVNfTU9WRSA9IFlFUzsKK0NMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IE5POworQ0xB
TkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFS
RURfU0VMRUNUT1IgPSBZRVM7CitDT01CSU5FX0hJRFBJX0lNQUdFUyA9IE5POworREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworRU5BQkxFX1NUUklDVF9PQkpDX01T
R1NFTkQgPSBZRVM7CitHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0NDX0RFQlVH
R0lOR19TWU1CT0xTID0gZGVmYXVsdDsKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5POworR0NDX0VO
QUJMRV9DUFBfRVhDRVBUSU9OUyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IE5POworR0ND
X0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZTUJPTF9TRVBBUkFU
SU9OID0gTk87CitHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOworR0NDX0dFTkVSQVRFX0RF
QlVHR0lOR19TWU1CT0xTID0gWUVTOworR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7CitHQ0Nf
T0JKQ19DQUxMX0NYWF9DRFRPUlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVS
ID0gWUVTOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVGSU5FUykg
JChpbmhlcml0ZWQpOworR0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKK0dDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gTk87CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitHQ0NfVFJF
QVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CitHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BS
T1RPVFlQRVMgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKK0dDQ19X
QVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9TSUdOX0NPTVBBUkUg
PSBZRVM7CitHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworR0NDX1dBUk5fVU5J
TklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsK
K0dDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IE5POworV0FSTklOR19DRkxBR1MgPSAtV2Nhc3Qt
cXVhbCAtV2NoYXItc3Vic2NyaXB0cyAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1XaW5pdC1z
ZWxmIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAtV3BhY2tl
ZCAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQtZGVjbHMgLVd1bmRlZiAtV3dyaXRlLXN0cmlu
Z3MgLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVdnbG9iYWwtY29uc3RydWN0b3JzIC1XdGF1dG9s
b2dpY2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaDsKKworSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZTsKKworVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1IgPSAkKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9S
JChNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ6c3VmZml4OmlkZW50aWZpZXIpKTsKK1RBUkdFVF9N
QUNfT1NfWF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMyA9
IDEwMTMwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzE0ID0gMTAxNDAwOworVEFS
R0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTUgPSAxMDE1MDA7CisKK1NVUFBPUlRFRF9QTEFU
Rk9STVMgPSBtYWNvc3g7CisKKy8vIERFQlVHX0RFRklORVMsIEdDQ19PUFRJTUlaQVRJT05fTEVW
RUwsIFNUUklQX0lOU1RBTExFRF9QUk9EVUNUIGFuZCBERUFEX0NPREVfU1RSSVBQSU5HIHZhcnkg
YmV0d2VlbiB0aGUgZGVidWcgYW5kIG5vcm1hbCB2YXJpYW50cy4KKy8vIFdlIHNldCB1cCB0aGUg
dmFsdWVzIGZvciBlYWNoIHZhcmlhbnQgaGVyZSwgYW5kIGhhdmUgdGhlIERlYnVnIGNvbmZpZ3Vy
YXRpb24gaW4gdGhlIFhjb2RlIHByb2plY3QgdXNlIHRoZSBfZGVidWcgdmFyaWFudC4KK0RFQlVH
X0RFRklORVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVTX25vcm1hbCA9IE5ERUJVRzsKK0RFQlVH
X0RFRklORVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJSRU5UX1ZBUklBTlQpKTsKKworR0NDX09Q
VElNSVpBVElPTl9MRVZFTCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF8kKENVUlJFTlRfVkFS
SUFOVCkpOworR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxbc2RrPW1hY29zeCpdID0gMjsK
K0dDQ19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcgPSAwOworCitTVFJJUF9JTlNUQUxMRURfUFJP
RFVDVCA9ICQoU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfJChDVVJSRU5UX1ZBUklBTlQpKTsKK1NU
UklQX0lOU1RBTExFRF9QUk9EVUNUX25vcm1hbCA9IFlFUzsKK1NUUklQX0lOU1RBTExFRF9QUk9E
VUNUX2RlYnVnID0gTk87CisKK0RFQURfQ09ERV9TVFJJUFBJTkdfZGVidWcgPSBOTzsKK0RFQURf
Q09ERV9TVFJJUFBJTkdfbm9ybWFsID0gWUVTOworREVBRF9DT0RFX1NUUklQUElORyA9ICQoREVB
RF9DT0RFX1NUUklQUElOR18kKENVUlJFTlRfVkFSSUFOVCkpOworCitTREtST09UID0gbWFjb3N4
LmludGVybmFsOworCitPVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdTKTsKK09USEVS
X0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsKK09USEVSX0xE
RkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2Nv
bmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YzRmNzE3MDBlZTRhNDNlNWFhNjBlZGM2OTAyYjg4NmM5NDlmZWYw
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3Vy
YXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDQ1IEBACisvLyBDb3B5cmln
aHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8g
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8g
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiQmFzZS54Y2NvbmZpZyIK
KworT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFK
T1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOworCitNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8kKFBMQVRGT1JNX05BTUUpXyQoVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNv
c3hfMTAxMTAwID0gMTAuMTE7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTIw
MCA9IDEwLjEyOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEzMDAgPSAxMC4x
MzsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNDAwID0gMTAuMTQ7CitNQUNP
U1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTUwMCA9IDEwLjE1OworCitHQ0NfV0FSTl9B
Qk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9IGR3YXJmOworCitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NESykpOwor
U0RLUk9PVF8gPSBtYWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsKKworV0tf
Q0NBQ0hFX0RJUiA9ICQoU1JDUk9PVCkvLi4vLi4vLi4vVG9vbHMvY2NhY2hlOworI2luY2x1ZGUg
Ii4uLy4uLy4uL2NjYWNoZS9jY2FjaGUueGNjb25maWciCmRpZmYgLS1naXQgYS9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZp
ZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0
VGVzdGVyLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMmU2MDg2NWNjOTA1ZDI2ZTdlMDhlODc4NDI2
YWQ2YWUyODE0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0
ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpAQCAtMCwwICsxLDI2
IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
Ly8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitQUk9EVUNUX05B
TUUgPSAkKFRBUkdFVF9OQU1FKTsKKworT1RIRVJfTERGTEFHU1tzZGs9bWFjb3N4Kl0gPSAkKGlu
aGVyaXRlZCkgLWZyYW1ld29yayBDb2NvYSAtZm9yY2VfbG9hZCAiJChCVUlMVF9QUk9EVUNUU19E
SVIpL2xpYldURi5hIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9N
YWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0NDRjMzgwZWVjNzllZGU5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBA
QAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2NyaXB0cworaW5jbHVkZSAuLi8uLi8uLi9NYWtlZmls
ZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2Vi
S2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM1MmExNWUxMjgzMzdiMGI2ZTQ4Mzk1MDkwNTRhYzNkYTczMTYyMTcKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjA1IEBACisvLyAhJCpVVEY4KiQh
Cit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJz
aW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVD
IC8qIG1haW4uY3BwICovOyB9OworCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RG
LmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZD
M0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgKi87IH07CisJCUNFNkMzQjAxMjBDMEM0
NDQwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmlj
dWNvcmUuZHlsaWIgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyog
QmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlGMUFGMDI3
NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAv
dXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMg
PSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJ
CX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzgg
LyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktp
dFRlc3Rlci54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmln
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzgg
LyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0QUIzQTExQUYwMjc2QzAwM0ZD
OEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1haW4uY3BwOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCUNFNkMzQUZFMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUu
YXI7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2QzNC
MDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsg
bmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7
IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlv
biAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdD
NEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkJQ0U2QzNCMDEyMEMwQzQ0NDAwM0UzM0Q4IC8qIGxpYmljdWNvcmUu
ZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDggLyog
bGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTAx
QUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0gUEJYR3Jv
dXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFz
ZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxl
YXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2Vi
S2l0VGVzdGVyLnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1cmF0aW9uczsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCMzk4MUFGMDI3NkMwMDNG
QzhEMSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3
NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCUNFM0Y0NDI1MjA1
QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2RDkwMDcx
OTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhE
MSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9
OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNEFCM0ExMUFGMDI3NkMwMDNGQzhE
MSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVC
MyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi8sCisJ
CQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0U2QzNCMDAyMEMw
QzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCisJCQkJQ0U2QzNBRkUyMEMwQjE3
QjAwM0UzM0Q4IC8qIGxpYldURi5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTdDNEFCM0EwMUFG
MDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCM0E4MUFGMDI3NkMw
MDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
bGxkYldlYktpdFRlc3RlciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk3QzRBQjM5RDFB
RjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLywKKwkJCQk3QzRBQjM5RTFBRjAyNzZDMDAzRkM4
RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29w
eUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5j
aWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdE5h
bWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdDNEFCM0ExMUFG
MDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovOworCQkJcHJvZHVjdFR5cGUgPSAi
Y29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJn
ZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJN0M0QUIz
OTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJY
UHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7
CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCMzlDMUFGMDI3NkMwMDNG
QzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJL
aXRUZXN0ZXIiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJ
CWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3Mg
PSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9
IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDdDNEFCM0Ey
MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7
CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk3QzRBQjNBMDFBRjAy
NzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCX07CisvKiBFbmQg
UEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFp
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJN0M0QUIz
QTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzRE
OUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVnKSI7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNv
bmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdS
ZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVy
LnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVy
ZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2lu
IFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5QzFBRjAyNzZDMDAzRkM4
RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsbGRiV2ViS2l0
VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAq
LywKKwkJCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBODFBRjAyNzZDMDAzRkM4RDEgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxsZGJXZWJLaXRU
ZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICov
LAorCQkJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0
aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFBy
b2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjVhZjgyZmU1OGE4YmZlMDk2ODZmYzMzZGFiNmZiNDZiNzE0YzI5MDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAgLTAsMCAr
MSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
ZXh0ZXJuIHZvaWQgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwordm9pZCBicmVh
a0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCkgeyByZXR1cm47IH0KKwordGVtcGxhdGU8c2l6
ZV90IGxlbmd0aD4KK3N0YXRpYyBTdHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hhcjE2X3QgKCZz
dHJpbmcpW2xlbmd0aF0pCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxk
ZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCAtIDEpOworICAgIGZvciAoYXV0byBjIDogc3RyaW5n
KQorICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOworICAgIHJl
dHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJv
dmlkZXJzKCkKK3sKKyAgICBTdHJpbmcgYU51bGxTdHJpbmcgeyAiIiB9OworICAgIFN0cmluZ0lt
cGwqIGFOdWxsU3RyaW5nSW1wbCA9IGFOdWxsU3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBh
bkVtcHR5U3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbkVtcHR5U3RyaW5nSW1wbCA9
IGFuRW1wdHlTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuOEJpdFN0cmluZyB7ICJyw6lz
dW3DqSIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbjhCaXRTdHJpbmdJbXBsID0gYW44Qml0U3RyaW5n
LmltcGwoKTsKKworICAgIFN0cmluZyBhMTZCaXRTdHJpbmcgPSB1dGYxNlN0cmluZyh1Ilx1MTY4
MENhcHB1Y2Npbm9cdTE2ODAiKTsKKyAgICBTdHJpbmdJbXBsKiBhMTZCaXRTdHJpbmdJbXBsID0g
YTE2Qml0U3RyaW5nLmltcGwoKTsKKworICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRl
cnMoKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKK3sKKyAg
ICB0ZXN0U3VtbWFyeVByb3ZpZGVycygpOworICAgIGZwcmludGYoc3RkZXJyLCAiVGhpcyBleGVj
dXRhYmxlIGRvZXMgbm90aGluZyBhbmQgaXMgb25seSBtZWFudCBmb3IgZGVidWdnaW5nIGxsZGJf
d2Via2l0LnB5LlxuIik7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRi
L2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVz
dC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYzY3ZjdmODg0OTNhMWViZWQyZGViNWUyNjU0ZDU1OGNkYzVlYzIy
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpA
QCAtMCwwICsxLDE0MiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIC0qLSBjb2Rpbmc6IHV0
Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBv
cnQgYXRleGl0CitpbXBvcnQgbGxkYgoraW1wb3J0IGxsZGJfd2Via2l0CitpbXBvcnQgb3MKK2lt
cG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0u
c3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBp
bXBvcnQgQ29uZmlnCisKKworIyBXZSBjYWNoZSB0aGUgbGxkYiBkZWJ1ZyBzZXNzaW9uIHN0YXRl
IHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGl0IGFnYWluIGZvciBlYWNoIGNhbGwgdG8gYSBzZXJp
YWxfdGVzdF8gbWV0aG9kLgorIyBXZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0
aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNoZWQgc3RhdGUgb24gZXhpdCgzKS4KKyMgRklYTUU6
IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxl
IGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQg
ZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgorY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBO
b25lCisKKworIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRz
IGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxl
KCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSkuCitAYXRleGl0
LnJlZ2lzdGVyCitkZWYgZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbigpOgorICAgIGlmIGNh
Y2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbi50ZWFyRG93
bigpCisKKworY2xhc3MgTExEQkRlYnVnU2Vzc2lvbihvYmplY3QpOgorICAgIEBjbGFzc21ldGhv
ZAorICAgIGRlZiBzZXR1cChjbHMpOgorICAgICAgICBMTERCX1dFQktJVF9URVNURVJfTkFNRSA9
ICdsbGRiV2ViS2l0VGVzdGVyJworICAgICAgICBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9O
QU1FID0gJ2JyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMnCisKKyAgICAgICAgY2xzLnNi
RGVidWdnZXIgPSBsbGRiLlNCRGVidWdnZXIuQ3JlYXRlKCkKKyAgICAgICAgY2xzLnNiRGVidWdn
ZXIuU2V0QXN5bmMoRmFsc2UpCisKKyAgICAgICAgIyBGSVhNRTogRmluZCBhIGJ1aWx0IGxsZGJX
ZWJLaXRUZXN0ZXIgd2l0aG91dCBoYXJkY29kaW5nIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLgorICAg
ICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGNvbmZpZyA9IENvbmZpZyhob3N0LmV4
ZWN1dGl2ZSwgaG9zdC5maWxlc3lzdGVtKQorICAgICAgICBjbHMubGxkYldlYktpdFRlc3RlckV4
ZWN1dGFibGUgPSBob3N0LmZpbGVzeXN0ZW0uam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KCdE
ZWJ1ZycpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkKKyAgICAgICAgaWYgbm90IG9zLnBhdGgu
aXNmaWxlKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSkgb3Igbm90IG9zLmFjY2Vzcyhj
bHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUsIG9zLlhfT0spOgorICAgICAgICAgICAgY2xz
LmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlID0gaG9zdC5maWxlc3lzdGVtLmpvaW4oY29uZmln
LmJ1aWxkX2RpcmVjdG9yeSgnUmVsZWFzZScpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkKKwor
ICAgICAgICBjbHMuc2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXQoc3RyKGNs
cy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSkpCisgICAgICAgIGFzc2VydCBjbHMuc2JUYXJn
ZXQKKyAgICAgICAgY2xzLnNiVGFyZ2V0LkJyZWFrcG9pbnRDcmVhdGVCeU5hbWUoQlJFQUtfRk9S
X1RFU1RJTkdfRlVOQ1RJT05fTkFNRSwgY2xzLnNiVGFyZ2V0LkdldEV4ZWN1dGFibGUoKS5HZXRG
aWxlbmFtZSgpKQorCisgICAgICAgIGFyZ3YgPSBOb25lCisgICAgICAgIGVudnAgPSBOb25lCisg
ICAgICAgIGNscy5zYlByb2Nlc3MgPSBjbHMuc2JUYXJnZXQuTGF1bmNoU2ltcGxlKGFyZ3YsIGVu
dnAsIG9zLmdldGN3ZCgpKQorICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2VzcworICAgICAgICBh
c3NlcnQgY2xzLnNiUHJvY2Vzcy5HZXRTdGF0ZSgpID09IGxsZGIuZVN0YXRlU3RvcHBlZAorCisg
ICAgICAgIGNscy5zYlRocmVhZCA9IGNscy5zYlByb2Nlc3MuR2V0VGhyZWFkQXRJbmRleCgwKQor
ICAgICAgICBhc3NlcnQgY2xzLnNiVGhyZWFkCisKKyAgICAgICAgIyBGcmFtZSAwIGlzIHRoZSBm
dW5jdGlvbiB3aXRoIG5hbWUgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRS4gV2Ugd2Fu
dCB0aGUgZnJhbWUgb2YgdGhlIGNhbGxlciBvZgorICAgICAgICAjIEJSRUFLX0ZPUl9URVNUSU5H
X0ZVTkNUSU9OX05BTUUgYmVjYXVzZSBpdCBoYXMgYWxsIHRoZSBpbnRlcmVzdGluZyBsb2NhbCB2
YXJpYWJsZXMgd2Ugd2FudCB0byB0ZXN0LgorICAgICAgICBjbHMuc2JGcmFtZSA9IGNscy5zYlRo
cmVhZC5HZXRGcmFtZUF0SW5kZXgoMSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYkZyYW1lCisKKyAg
ICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd24oY2xzKToKKyAgICAgICAgY2xzLnNiUHJv
Y2Vzcy5LaWxsKCkKKworCitjbGFzcyBUZXN0U3VtbWFyeVByb3ZpZGVycyh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAg
ICAgZ2xvYmFsIGNhY2hlZF9kZWJ1Z19zZXNzaW9uCisgICAgICAgIGlmIG5vdCBjYWNoZWRfZGVi
dWdfc2Vzc2lvbjoKKyAgICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uID0gTExEQkRlYnVn
U2Vzc2lvbigpCisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbi5zZXR1cCgpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgX3NiRnJhbWUoc2VsZik6CisgICAgICAgIHJldHVybiBjYWNo
ZWRfZGVidWdfc2Vzc2lvbi5zYkZyYW1lCisKKyAgICAjIFRoZSBMTERCIFB5dGhvbiBtb2R1bGUg
ZG9lcyBub3Qgd29yayB3aXRoIFB5dGhvbiBtdWx0aXByb2Nlc3NpbmcgYW5kIGNhdXNlcyBlcnJv
cnMgb2YgdGhlIGZvcm06CisgICAgIyAgICAgb2JqY1s3Njc5NF06ICtbX19NRFF1ZXJ5IGluaXRp
YWxpemVdIG1heSBoYXZlIGJlZW4gaW4gcHJvZ3Jlc3MgaW4gYW5vdGhlciB0aHJlYWQgd2hlbiBm
b3JrKCkgd2FzIGNhbGxlZC4KKyAgICAjICAgICAgICAgICAgICAgICAgV2UgY2Fubm90IHNhZmVs
eSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBpbiB0aGUgZm9yaygpIGNoaWxkIHByb2Nlc3MuIENyYXNo
aW5nIGluc3RlYWQuCisgICAgIyBTbywgd2UgcnVuIHRoZSBmb2xsb3dpbmcgdGVzdHMgc2VyaWFs
bHkuCisKKyAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2Fz
ZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhTnVsbFN0
cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVu
Z3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxf
dGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6Cisg
ICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRl
cihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZ0ltcGwnKSwge30pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4Yml0ID0g
MSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBs
X1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxs
ZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmlu
ZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJ3JcXHhl
OXN1bVxceGU5JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1h
cnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dl
YmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJp
YWJsZSgnYTE2Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGlzOGJpdCA9IDAsIGNvbnRlbnRzID0gJ1xcdTE2ODBD
YXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikKKworICAgICMgTUFSSzogV1RGU3RyaW5nX1N1bW1h
cnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1
bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJf
d2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFi
bGUoJ2FOdWxsU3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnks
ICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1
bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJh
bWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBk
ZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxm
KToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlk
ZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmluZycpLCB7fSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBjb250ZW50cyA9ICdy
XFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1h
cnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dl
YmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxl
KCdhMTZCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
dSJ7IGxlbmd0aCA9IDEzLCBjb250ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2ODBcXHgw
MCcgfSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341731</attachid>
            <date>2018-05-31 21:08:54 -0700</date>
            <delta_ts>2018-05-31 21:29:21 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531210833.patch</filename>
            <type>text/plain</type>
            <size>45813</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uOWRkMTg2M2IxYjkyMDBjMDhjZWZiOThlMWFhYTFhNzQxNzI0
MmYwNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDU4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0
IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdl
YmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKK19ob3N0ID0gU3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBO
b25lCisKKworZGVmIF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgIGNvbmZpZyA9IENv
bmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgbGxkYl93ZWJraXRf
dGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShj
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAg
cmV0dXJuIG9zLnBhdGguaXNmaWxlKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKSBhbmQg
b3MuYWNjZXNzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlLCBvcy5YX09LKQorCisKK2Rl
ZiBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgorICAgICAgICBfbG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGJ1
aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICByZXR1cm4gX2hvc3Qu
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxh
Z19mb3JfY29uZmlndXJhdGlvbihjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpXSwgcmV0
dXJuX2V4aXRfY29kZT1UcnVlKSA9PSAwCisKIAogZGVmIG1haW4oKToKKyAgICBnbG9iYWwgX3dl
YmtpdF9yb290CiAgICAgY29uZmlndXJlX2xvZ2dpbmcobG9nZ2VyPV9sb2cpCiAKICAgICB1cCA9
IG9zLnBhdGguZGlybmFtZQotICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3MucGF0
aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCisgICAgX3dlYmtpdF9yb290ID0gdXAodXAodXAodXAo
dXAob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIo
KQotICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycs
ICdTY3JpcHRzJyksICd3ZWJraXRweScpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9p
bihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAKICAgICAj
IFRoZXJlIGlzIG5vIFdlYktpdDIgb24gV2luZG93cywgc28gd2UgZG9uJ3QgbmVlZCB0byBydW4g
V2ViS2l0MiB1bml0dGVzdHMgb24gaXQuCiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKLSAgICAgICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAn
U2NyaXB0cycpLCAnd2Via2l0JykKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9p
bihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcp
CisKKyAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSgpCisgICAgaWYgb3MucGF0aC5pc2RpcihsbGRiX3B5dGhvbl9kaXJlY3Rvcnkp
OgorICAgICAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAg
ICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRi
JykpCisgICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQorICAgIGVsc2U6
CisgICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5v
dCBmaW5kIHBhdGggdG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9y
eSkpCisgICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKIAogICAgIHRl
c3Rlci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5pdHRlc3QnLCks
ICdhcmUgcmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBzeXMucGxhdGZvcm0u
c3RhcnRzd2l0aCgnd2luJyk6CkBAIC03MSwxMSArMTA0LDExIEBAIGRlZiBtYWluKCk6CiAgICAg
ICAgIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5kaXN0IGltcG9ydCB1c2VfbGlicmFyeQogICAgICAg
ICB1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMicpCiAgICAgICAgIGRldl9hcHBzZXJ2ZXIuZml4
X3N5c19wYXRoKCkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ1F1ZXVlU3RhdHVzU2VydmVyJykpCisgICAgICAgIHRlc3Rlci5hZGRf
dHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2
ZXInKSkKICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVz
U2VydmVyIHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0
YWxsZWQuJykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bigpCisgICAgcmV0dXJuIG5vdCB0
ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJfd2Via2l0
X3Rlc3RzKQogCiAKIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3Rf
bmFtZXMsIGZhaWx1cmVzLCBlcnJvcnMpOgpAQCAtMTMxLDcgKzE2NCw3IEBAIGNsYXNzIFRlc3Rl
cihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0g
ICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHdpbGxfcnVuX2xsZGJfd2Via2l0
X3Rlc3RzPUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNl
X2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAK
QEAgLTE0Miw5ICsxNzUsOSBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9s
b2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAot
ICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX3Rlc3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKIAotICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1l
cywgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRI
T05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRl
ci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5wYXRoCiAKQEAgLTE1NCw2ICsxODcs
MTQgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eSBpbXBvcnQgYXV0b2luc3RhbGxfZXZlcnl0aGluZwogICAgICAgICBhdXRvaW5zdGFsbF9l
dmVyeXRoaW5nKCkKIAorICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKKyAg
ICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5nIGxsZGJXZWJLaXRU
ZXN0ZXIgLi4uIikKKyAgICAgICAgICAgIGlmIG5vdCBfZmluZF9sbGRiX3dlYmtpdF90ZXN0ZXIo
KToKKyAgICAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJCdWlsZGluZyBs
bGRiV2ViS2l0VGVzdGVyIC4uLiIpCisgICAgICAgICAgICAgICAgaWYgbm90IF9idWlsZF9sbGRi
X3dlYmtpdF90ZXN0ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVk
IHRvIGJ1aWxkIGxsZGJXZWJLaXRUZXN0ZXIuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5jb3ZlcmFnZToKICAgICAgICAgICAg
IF9sb2cud2FybmluZygiQ2hlY2tpbmcgY29kZSBjb3ZlcmFnZSwgc28gcnVubmluZyB0aGluZ3Mg
c2VyaWFsbHkiKQogICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMgPSAx
CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9u
cy9CYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjMGU3ZDgwMzUyNjdiN2ZlN2I0NzJjMmM0MmIw
YmY2ZGIzNjhkNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0
ZXIvQ29uZmlndXJhdGlvbnMvQmFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDExOSBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDE1LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorLy8gRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorLy8gUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKy8vIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorLy8gRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorLy8gUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisvLyBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisvLyBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGU/ICIuLi8uLi8uLi8u
Li8uLi9JbnRlcm5hbC9Db25maWd1cmF0aW9ucy9IYXZlSW50ZXJuYWxTREsueGNjb25maWciCisK
K1VTRV9JTlRFUk5BTF9TREsgPSAkKFVTRV9JTlRFUk5BTF9TREtfJChDT05GSUdVUkFUSU9OKSk7
CitVU0VfSU5URVJOQUxfU0RLX1Byb2R1Y3Rpb24gPSBZRVM7CitVU0VfSU5URVJOQUxfU0RLX0Rl
YnVnID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CitVU0VfSU5URVJOQUxfU0RLX1JlbGVhc2UgPSAk
KEhBVkVfSU5URVJOQUxfU0RLKTsKKworQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisK
K0NMQU5HX0NYWF9MQU5HVUFHRV9TVEFOREFSRCA9IGdudSsrMTQ7CitDTEFOR19DWFhfTElCUkFS
WSA9IGxpYmMrKzsKK0NMQU5HX0VOQUJMRV9PQkpDX1dFQUsgPSBZRVM7CitDTEFOR19XQVJOX0JM
T0NLX0NBUFRVUkVfQVVUT1JFTEVBU0lORyA9IFlFUzsKK0NMQU5HX1dBUk5fQk9PTF9DT05WRVJT
SU9OID0gWUVTOworQ0xBTkdfV0FSTl9DT05TVEFOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdf
V0FSTl9DWFgwWF9FWFRFTlNJT05TID0gTk87CitDTEFOR19XQVJOX0VNUFRZX0JPRFkgPSBZRVM7
CitDTEFOR19XQVJOX0VOVU1fQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fSU5GSU5JVEVf
UkVDVVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTlRfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5H
X1dBUk5fTk9OX0xJVEVSQUxfTlVMTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9PQkpD
X0xJVEVSQUxfQ09OVkVSU0lPTiA9IFlFUzsKK0NMQU5HX1dBUk5fUkFOR0VfTE9PUF9BTkFMWVNJ
UyA9IFlFUzsKK0NMQU5HX1dBUk5fU1RSSUNUX1BST1RPVFlQRVMgPSBZRVM7CitDTEFOR19XQVJO
X1NVU1BJQ0lPVVNfTU9WRSA9IFlFUzsKK0NMQU5HX1dBUk5fVU5SRUFDSEFCTEVfQ09ERSA9IE5P
OworQ0xBTkdfV0FSTl9fRFVQTElDQVRFX01FVEhPRF9NQVRDSCA9IFlFUzsKK0dDQ19XQVJOX1VO
REVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitDT01CSU5FX0hJRFBJX0lNQUdFUyA9IE5POworREVC
VUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmYtd2l0aC1kc3ltOworRU5BQkxFX1NUUklDVF9P
QkpDX01TR1NFTkQgPSBZRVM7CitHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworR0ND
X0RFQlVHR0lOR19TWU1CT0xTID0gZGVmYXVsdDsKK0dDQ19EWU5BTUlDX05PX1BJQyA9IE5POwor
R0NDX0VOQUJMRV9DUFBfRVhDRVBUSU9OUyA9IE5POworR0NDX0VOQUJMRV9DUFBfUlRUSSA9IE5P
OworR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CitHQ0NfRU5BQkxFX1NZTUJPTF9T
RVBBUkFUSU9OID0gTk87CitHQ0NfRkFTVF9PQkpDX0RJU1BBVENIID0gWUVTOworR0NDX0dFTkVS
QVRFX0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOworR0NDX05PX0NPTU1PTl9CTE9DS1MgPSBZRVM7
CitHQ0NfT0JKQ19DQUxMX0NYWF9DRFRPUlMgPSBZRVM7CitHQ0NfUFJFQ09NUElMRV9QUkVGSVhf
SEVBREVSID0gWUVTOworR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICQoREVCVUdfREVG
SU5FUykgJChpbmhlcml0ZWQpOworR0NDX1NUUklDVF9BTElBU0lORyA9IFlFUzsKK0dDQ19TWU1C
T0xTX1BSSVZBVEVfRVhURVJOID0gTk87CitHQ0NfVEhSRUFEU0FGRV9TVEFUSUNTID0gTk87CitH
Q0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOworR0NDX1ZFUlNJT04gPSBjb20uYXBw
bGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gTk87CitH
Q0NfV0FSTl9BQk9VVF9NSVNTSU5HX05FV0xJTkUgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX1BST1RPVFlQRVMgPSBZRVM7CitHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsK
K0dDQ19XQVJOX05PTl9WSVJUVUFMX0RFU1RSVUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9TSUdOX0NP
TVBBUkUgPSBZRVM7CitHQ0NfV0FSTl9VTkRFQ0xBUkVEX1NFTEVDVE9SID0gWUVTOworR0NDX1dB
Uk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9
IFlFUzsKK0dDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IE5POworV0FSTklOR19DRkxBR1MgPSAt
V2Nhc3QtcXVhbCAtV2NoYXItc3Vic2NyaXB0cyAtV2V4dHJhLXRva2VucyAtV2Zvcm1hdD0yIC1X
aW5pdC1zZWxmIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2luZy1ub3JldHVybiAt
V3BhY2tlZCAtV3BvaW50ZXItYXJpdGggLVdyZWR1bmRhbnQtZGVjbHMgLVd1bmRlZiAtV3dyaXRl
LXN0cmluZ3MgLVdleGl0LXRpbWUtZGVzdHJ1Y3RvcnMgLVdnbG9iYWwtY29uc3RydWN0b3JzIC1X
dGF1dG9sb2dpY2FsLWNvbXBhcmUgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaDsKKworSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICR7QlVJTFRfUFJPRFVDVFNfRElSfS91c3IvbG9jYWwvaW5jbHVkZTsKKwor
VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IgPSAkKFRBUkdFVF9NQUNfT1NfWF9WRVJTSU9O
X01BSk9SJChNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ6c3VmZml4OmlkZW50aWZpZXIpKTsKK1RB
UkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzExID0gMTAxMTAwOworVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1JfMTIgPSAxMDEyMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
Ul8xMyA9IDEwMTMwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzE0ID0gMTAxNDAw
OworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTUgPSAxMDE1MDA7CisKK1NVUFBPUlRF
RF9QTEFURk9STVMgPSBtYWNvc3g7CisKKy8vIERFQlVHX0RFRklORVMsIEdDQ19PUFRJTUlaQVRJ
T05fTEVWRUwsIFNUUklQX0lOU1RBTExFRF9QUk9EVUNUIGFuZCBERUFEX0NPREVfU1RSSVBQSU5H
IHZhcnkgYmV0d2VlbiB0aGUgZGVidWcgYW5kIG5vcm1hbCB2YXJpYW50cy4KKy8vIFdlIHNldCB1
cCB0aGUgdmFsdWVzIGZvciBlYWNoIHZhcmlhbnQgaGVyZSwgYW5kIGhhdmUgdGhlIERlYnVnIGNv
bmZpZ3VyYXRpb24gaW4gdGhlIFhjb2RlIHByb2plY3QgdXNlIHRoZSBfZGVidWcgdmFyaWFudC4K
K0RFQlVHX0RFRklORVNfZGVidWcgPSA7CitERUJVR19ERUZJTkVTX25vcm1hbCA9IE5ERUJVRzsK
K0RFQlVHX0RFRklORVMgPSAkKERFQlVHX0RFRklORVNfJChDVVJSRU5UX1ZBUklBTlQpKTsKKwor
R0NDX09QVElNSVpBVElPTl9MRVZFTCA9ICQoR0NDX09QVElNSVpBVElPTl9MRVZFTF8kKENVUlJF
TlRfVkFSSUFOVCkpOworR0NDX09QVElNSVpBVElPTl9MRVZFTF9ub3JtYWxbc2RrPW1hY29zeCpd
ID0gMjsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUxfZGVidWcgPSAwOworCitTVFJJUF9JTlNUQUxM
RURfUFJPRFVDVCA9ICQoU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfJChDVVJSRU5UX1ZBUklBTlQp
KTsKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUX25vcm1hbCA9IFlFUzsKK1NUUklQX0lOU1RBTExF
RF9QUk9EVUNUX2RlYnVnID0gTk87CisKK0RFQURfQ09ERV9TVFJJUFBJTkdfZGVidWcgPSBOTzsK
K0RFQURfQ09ERV9TVFJJUFBJTkdfbm9ybWFsID0gWUVTOworREVBRF9DT0RFX1NUUklQUElORyA9
ICQoREVBRF9DT0RFX1NUUklQUElOR18kKENVUlJFTlRfVkFSSUFOVCkpOworCitTREtST09UID0g
bWFjb3N4LmludGVybmFsOworCitPVEhFUl9DRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ0ZMQUdTKTsK
K09USEVSX0NQTFVTUExVU0ZMQUdTID0gJChBU0FOX09USEVSX0NQTFVTUExVU0ZMQUdTKTsKK09U
SEVSX0xERkxBR1MgPSAkKEFTQU5fT1RIRVJfTERGTEFHUyk7CmRpZmYgLS1naXQgYS9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmln
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFz
ZS54Y2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YzRmNzE3MDBlZTRhNDNlNWFhNjBlZGM2OTAyYjg4NmM5
NDlmZWYwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0Nv
bmZpZ3VyYXRpb25zL0RlYnVnUmVsZWFzZS54Y2NvbmZpZwpAQCAtMCwwICsxLDQ1IEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiQmFzZS54Y2Nv
bmZpZyIKKworT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKworVEFSR0VUX01BQ19PU19YX1ZFUlNJ
T05fTUFKT1IgPSAkKE1BQ19PU19YX1ZFUlNJT05fTUFKT1IpOworCitNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF8kKFBMQVRGT1JNX05BTUUpXyQo
VEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IpKTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VF9tYWNvc3hfMTAxMTAwID0gMTAuMTE7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4
XzEwMTIwMCA9IDEwLjEyOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEzMDAg
PSAxMC4xMzsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNDAwID0gMTAuMTQ7
CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTUwMCA9IDEwLjE1OworCitHQ0Nf
V0FSTl9BQk9VVF9ERVBSRUNBVEVEX0ZVTkNUSU9OUyA9IFlFUzsKK0RFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9IGR3YXJmOworCitTREtST09UID0gJChTREtST09UXyQoVVNFX0lOVEVSTkFMX1NE
SykpOworU0RLUk9PVF8gPSBtYWNvc3g7CitTREtST09UX1lFUyA9IG1hY29zeC5pbnRlcm5hbDsK
KworV0tfQ0NBQ0hFX0RJUiA9ICQoU1JDUk9PVCkvLi4vLi4vLi4vVG9vbHMvY2NhY2hlOworI2lu
Y2x1ZGUgIi4uLy4uLy4uL2NjYWNoZS9jY2FjaGUueGNjb25maWciCmRpZmYgLS1naXQgYS9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54
Y2NvbmZpZyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRi
V2ViS2l0VGVzdGVyLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzMmU2MDg2NWNjOTA1ZDI2ZTdlMDhl
ODc4NDI2YWQ2YWUyODE0ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZwpAQCAtMCww
ICsxLDI2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitQUk9E
VUNUX05BTUUgPSAkKFRBUkdFVF9OQU1FKTsKKworT1RIRVJfTERGTEFHU1tzZGs9bWFjb3N4Kl0g
PSAkKGluaGVyaXRlZCkgLWZyYW1ld29yayBDb2NvYSAtZm9yY2VfbG9hZCAiJChCVUlMVF9QUk9E
VUNUU19ESVIpL2xpYldURi5hIjsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9NYWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0NDRjMzgwZWVjNzllZGU5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCkBAIC0wLDAg
KzEsMiBAQAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2NyaXB0cworaW5jbHVkZSAuLi8uLi8uLi9N
YWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9s
bGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9sbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmM1MmExNWUxMjgzMzdiMGI2ZTQ4Mzk1MDkwNTRhYzNkYTczMTYyMTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRl
c3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0wLDAgKzEsMjA1IEBACisvLyAhJCpV
VEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOworCWNsYXNzZXMgPSB7CisJfTsKKwlvYmpl
Y3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKworLyogQmVnaW4gUEJYQnVpbGRGaWxlIHNl
Y3Rpb24gKi8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0NCNjg0NEExQUZBNzk3ODAw
MkIzMDVDIC8qIG1haW4uY3BwICovOyB9OworCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDggLyog
bGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgKi87IH07CisJCUNFNkMzQjAx
MjBDMEM0NDQwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8q
IGxpYmljdWNvcmUuZHlsaWIgKi87IH07CisvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlG
MUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBh
dGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDE7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCQk3QzIyMjc1MTFBRkM0RDlDMDA4
QzMzMzggLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBCYXNlLnhjY29uZmlnOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxk
YldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyLnhj
Y29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1MzFBRkM0RDlDMDA4
QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IERlYnVnUmVsZWFz
ZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M0QUIzQTExQUYwMjc2
QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXI7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IG1haW4uY3BwOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUNFNkMzQUZFMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJX
VEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFy
Y2hpdmUuYXI7IHBhdGggPSBsaWJXVEYuYTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5
bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBhdGggPSB1c3IvbGliL2xpYmljdWNvcmUu
ZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OworLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQ0U2QzNCMDEyMEMwQzQ0NDAwM0UzM0Q4IC8qIGxpYmlj
dWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMz
RDggLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEdyb3VwIHNlY3Rpb24gKi8KKwkJN0My
MjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzgg
LyogQmFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVi
dWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBs
bGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovLAorCQkJKTsKKwkJCXBhdGggPSBDb25maWd1cmF0
aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCMzk4MUFGMDI3
NkMwMDNGQzhEMSA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
N0MyMjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3VyYXRpb25zICovLAorCQkJCUNFM0Y0
NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2
RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJCTdDNEFCM0EyMUFGMDI3NkMw
MDNGQzhEMSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDNEFCM0ExMUFGMDI3NkMw
MDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNFM0Y0NDI0MjA1QzY2RDkw
MDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAg
Ki8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQ0U2QzNC
MDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi8sCisJCQkJQ0U2QzNBRkUy
MEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5hICovLAorCQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdv
cmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKy8qIEVuZCBQQlhHcm91cCBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTdDNEFC
M0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0geworCQkJaXNhID0g
UEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCM0E4MUFG
MDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQk3QzRB
QjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLywKKwkJCQk3QzRBQjM5RTFBRjAyNzZD
MDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk3QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEg
LyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVw
ZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJv
ZHVjdE5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDdDNEFC
M0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovOworCQkJcHJvZHVjdFR5
cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRp
dmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJ
N0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2plY3Qgb2JqZWN0ICovID0geworCQkJaXNh
ID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9
IDA3MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDdDNEFCMzlDMUFGMDI3
NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxs
ZGJXZWJLaXRUZXN0ZXIiICovOworCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMy4y
IjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlzaDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNv
ZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAorCQkJCWVuLAorCQkJKTsKKwkJCW1haW5H
cm91cCA9IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMTsKKwkJCXByb2R1Y3RSZWZHcm91cCA9IDdD
NEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLzsKKwkJCXByb2plY3REaXJQYXRo
ID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJdGFyZ2V0cyA9ICgKKwkJCQk3QzRBQjNB
MDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCX07Cisv
KiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMg
LyogbWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJ
N0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUz
MUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCURFQlVHX0RFRklORVMgPSAiJChERUJVR19ERUZJTkVTX2RlYnVnKSI7
CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4
RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyog
RGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERl
YnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmln
dXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0
VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlv
blJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVy
LnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5QzFBRjAyNzZD
MDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsbGRi
V2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBE
ZWJ1ZyAqLywKKwkJCQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBODFBRjAyNzZDMDAzRkM4
RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgImxsZGJX
ZWJLaXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERl
YnVnICovLAorCQkJCTdDNEFCM0FBMUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJ
KTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisvKiBFbmQgWENDb25maWd1cmF0aW9uTGlz
dCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0gN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQx
IC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2Vi
S2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVhZjgyZmU1OGE4YmZlMDk2ODZmYzMzZGFiNmZiNDZiNzE0YzI5MDAKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAg
LTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworZXh0ZXJuIHZvaWQgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOwordm9p
ZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCkgeyByZXR1cm47IH0KKwordGVtcGxh
dGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBTdHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hhcjE2
X3QgKCZzdHJpbmcpW2xlbmd0aF0pCit7CisgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOworICAg
IGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCAtIDEpOworICAgIGZvciAoYXV0byBjIDog
c3RyaW5nKQorICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oYykpOwor
ICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRlc3RTdW1t
YXJ5UHJvdmlkZXJzKCkKK3sKKyAgICBTdHJpbmcgYU51bGxTdHJpbmcgeyAiIiB9OworICAgIFN0
cmluZ0ltcGwqIGFOdWxsU3RyaW5nSW1wbCA9IGFOdWxsU3RyaW5nLmltcGwoKTsKKworICAgIFN0
cmluZyBhbkVtcHR5U3RyaW5nIHsgIiIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbkVtcHR5U3RyaW5n
SW1wbCA9IGFuRW1wdHlTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuOEJpdFN0cmluZyB7
ICJyw6lzdW3DqSIgfTsKKyAgICBTdHJpbmdJbXBsKiBhbjhCaXRTdHJpbmdJbXBsID0gYW44Qml0
U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhMTZCaXRTdHJpbmcgPSB1dGYxNlN0cmluZyh1
Ilx1MTY4MENhcHB1Y2Npbm9cdTE2ODAiKTsKKyAgICBTdHJpbmdJbXBsKiBhMTZCaXRTdHJpbmdJ
bXBsID0gYTE2Qml0U3RyaW5nLmltcGwoKTsKKworICAgIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQ
cm92aWRlcnMoKTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkK
K3sKKyAgICB0ZXN0U3VtbWFyeVByb3ZpZGVycygpOworICAgIGZwcmludGYoc3RkZXJyLCAiVGhp
cyBleGVjdXRhYmxlIGRvZXMgbm90aGluZyBhbmQgaXMgb25seSBtZWFudCBmb3IgZGVidWdnaW5n
IGxsZGJfd2Via2l0LnB5LlxuIik7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9Ub29s
cy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5IGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91
bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTRkM2QzNDA2OGFiZGY5ZDVkNmYwMzBlMTVhOTMzOTRj
ZmQ4ZjkxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVz
dC5weQpAQCAtMCwwICsxLDE0MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjIC0qLSBjb2Rp
bmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgYXRleGl0CitpbXBvcnQgbGxkYgoraW1wb3J0IGxsZGJfd2Via2l0CitpbXBvcnQg
b3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNv
bmZpZyBpbXBvcnQgQ29uZmlnCisKKworIyBXZSBjYWNoZSB0aGUgbGxkYiBkZWJ1ZyBzZXNzaW9u
IHN0YXRlIHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGl0IGFnYWluIGZvciBlYWNoIGNhbGwgdG8g
YSBzZXJpYWxfdGVzdF8gbWV0aG9kLgorIyBXZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJs
ZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNoZWQgc3RhdGUgb24gZXhpdCgzKS4KKyMg
RklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBwb3J0cyBjbGFzcyBhbmQg
bW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1vZHVsZSgpCisjIGFyZSBj
YWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgorY2FjaGVkX2RlYnVnX3Nlc3Np
b24gPSBOb25lCisKKworIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1
cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3NldFVw
TW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSkuCitA
YXRleGl0LnJlZ2lzdGVyCitkZWYgZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbigpOgorICAg
IGlmIGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbi50
ZWFyRG93bigpCisKKworY2xhc3MgTExEQkRlYnVnU2Vzc2lvbihvYmplY3QpOgorICAgIEBjbGFz
c21ldGhvZAorICAgIGRlZiBzZXR1cChjbHMpOgorICAgICAgICBMTERCX1dFQktJVF9URVNURVJf
TkFNRSA9ICdsbGRiV2ViS2l0VGVzdGVyJworICAgICAgICBCUkVBS19GT1JfVEVTVElOR19GVU5D
VElPTl9OQU1FID0gJ2JyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMnCisKKyAgICAgICAg
Y2xzLnNiRGVidWdnZXIgPSBsbGRiLlNCRGVidWdnZXIuQ3JlYXRlKCkKKyAgICAgICAgY2xzLnNi
RGVidWdnZXIuU2V0QXN5bmMoRmFsc2UpCisKKyAgICAgICAgaG9zdCA9IFN5c3RlbUhvc3QoKQor
ICAgICAgICBjb25maWcgPSBDb25maWcoaG9zdC5leGVjdXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkK
KyAgICAgICAgY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlID0gb3MucGF0aC5qb2luKGNv
bmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlnLmRlZmF1bHRfY29uZmlndXJhdGlvbigpKSwgTExE
Ql9XRUJLSVRfVEVTVEVSX05BTUUpCisKKyAgICAgICAgY2xzLnNiVGFyZ2V0ID0gY2xzLnNiRGVi
dWdnZXIuQ3JlYXRlVGFyZ2V0KHN0cihjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUpKQor
ICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiIgorICAgICAgICBwcmludCA+PiBzeXMuc3Rk
ZXJyLCAiREVCVUc6IFRhcmdldDoge30iLmZvcm1hdChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJF
eGVjdXRhYmxlKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAorICAgICAgICBjbHMuc2JU
YXJnZXQuQnJlYWtwb2ludENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9O
QU1FLCBjbHMuc2JUYXJnZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVuYW1lKCkpCisKKyAgICAg
ICAgYXJndiA9IE5vbmUKKyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAgICAgY2xzLnNiUHJvY2Vz
cyA9IGNscy5zYlRhcmdldC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwgb3MuZ2V0Y3dkKCkpCisg
ICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzCisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIs
ICJERUJVRzogUHJvY2Vzczoge30iLmZvcm1hdChzdHIoY2xzLnNiUHJvY2VzcykpCisgICAgICAg
IHByaW50ID4+IHN5cy5zdGRlcnIsICJERUJVRzogUHJvY2VzcyBzdGF0ZToge30iLmZvcm1hdChj
bHMuc2JQcm9jZXNzLkdldFN0YXRlKCkpCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzLkdl
dFN0YXRlKCkgPT0gbGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAgICAgY2xzLnNiVGhyZWFkID0g
Y2xzLnNiUHJvY2Vzcy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAgICAgIGFzc2VydCBjbHMuc2JU
aHJlYWQKKworICAgICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0aW9uIHdpdGggbmFtZSBCUkVB
S19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRoZSBmcmFtZSBvZiB0aGUgY2Fs
bGVyIG9mCisgICAgICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSBiZWNhdXNl
IGl0IGhhcyBhbGwgdGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlhYmxlcyB3ZSB3YW50IHRvIHRl
c3QuCisgICAgICAgIGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFkLkdldEZyYW1lQXRJbmRleCgx
KQorICAgICAgICBhc3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiB0ZWFyRG93bihjbHMpOgorICAgICAgICBjbHMuc2JQcm9jZXNzLktpbGwoKQorCisKK2NsYXNz
IFRlc3RTdW1tYXJ5UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRo
b2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBnbG9iYWwgY2FjaGVkX2RlYnVn
X3Nlc3Npb24KKyAgICAgICAgaWYgbm90IGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAgICAg
ICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBMTERCRGVidWdTZXNzaW9uKCkKKyAgICAgICAgICAg
IGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNldHVwKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBf
c2JGcmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNiRnJh
bWUKKworICAgICMgVGhlIExMREIgUHl0aG9uIG1vZHVsZSBkb2VzIG5vdCB3b3JrIHdpdGggUHl0
aG9uIG11bHRpcHJvY2Vzc2luZyBhbmQgY2F1c2VzIGVycm9ycyBvZiB0aGUgZm9ybToKKyAgICAj
ICAgICBvYmpjWzc2Nzk0XTogK1tfX01EUXVlcnkgaW5pdGlhbGl6ZV0gbWF5IGhhdmUgYmVlbiBp
biBwcm9ncmVzcyBpbiBhbm90aGVyIHRocmVhZCB3aGVuIGZvcmsoKSB3YXMgY2FsbGVkLgorICAg
ICMgICAgICAgICAgICAgICAgICBXZSBjYW5ub3Qgc2FmZWx5IGNhbGwgaXQgb3IgaWdub3JlIGl0
IGluIHRoZSBmb3JrKCkgY2hpbGQgcHJvY2Vzcy4gQ3Jhc2hpbmcgaW5zdGVhZC4KKyAgICAjIFNv
LCB3ZSBydW4gdGhlIGZvbGxvd2luZyB0ZXN0cyBzZXJpYWxseS4KKworICAgICMgTUFSSzogV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHNlcmlhbF90
ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAg
ICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIo
c2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nSW1wbCcpLCB7fSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBj
b250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3Vt
bWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJf
d2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZh
cmlhYmxlKCdhbkVtcHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQor
CisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1w
bF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmlu
Z0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3Ro
ID0gOCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQorCisgICAg
ZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmlu
ZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3Vt
bWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmdJbXBs
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5ndGggPSAx
MywgaXM4Yml0ID0gMCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAn
IH0iKQorCisgICAgIyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMK
KworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX251bGxfc3Ry
aW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1h
cnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVu
dHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3Zp
ZGVyX2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldU
RlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1w
dHlTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVu
Z3RoID0gMCwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJp
bmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0g
bGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRW
YXJpYWJsZSgnYW44Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1
bW1hcnksICJ7IGxlbmd0aCA9IDgsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5JyB9IikKKwor
ICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmlu
ZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7fSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGNvbnRl
bnRzID0gJ1xcdTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341733</attachid>
            <date>2018-05-31 21:29:23 -0700</date>
            <delta_ts>2018-06-01 15:08:26 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180531212922.patch</filename>
            <type>text/plain</type>
            <size>46457</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uOGRmNTg0NDQxNjI4Mjk1MzMzZjFkMDZmN2I3NWUxYmE3MjE0
Y2EyMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDU4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5
c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0
IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdl
YmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQgUHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1
bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rlc3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRM
b2dnZXIoX19uYW1lX18pCiAKK19ob3N0ID0gU3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBO
b25lCisKKworZGVmIF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgIGNvbmZpZyA9IENv
bmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgbGxkYl93ZWJraXRf
dGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShj
b25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAg
cmV0dXJuIG9zLnBhdGguaXNmaWxlKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKSBhbmQg
b3MuYWNjZXNzKGxsZGJfd2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlLCBvcy5YX09LKQorCisKK2Rl
ZiBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3Jt
LmlzX21hYygpOgorICAgICAgICBfbG9nLmVycm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4nKQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBj
b25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGJ1
aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMn
LCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Via2l0dGVzdGVyJykKKyAgICByZXR1cm4gX2hvc3Qu
ZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFtidWlsZF9sbGRid2Via2l0dGVzdGVyLCBjb25maWcuZmxh
Z19mb3JfY29uZmlndXJhdGlvbihjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpXSwgcmV0
dXJuX2V4aXRfY29kZT1UcnVlKSA9PSAwCisKIAogZGVmIG1haW4oKToKKyAgICBnbG9iYWwgX3dl
YmtpdF9yb290CiAgICAgY29uZmlndXJlX2xvZ2dpbmcobG9nZ2VyPV9sb2cpCiAKICAgICB1cCA9
IG9zLnBhdGguZGlybmFtZQotICAgIHdlYmtpdF9yb290ID0gdXAodXAodXAodXAodXAob3MucGF0
aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCisgICAgX3dlYmtpdF9yb290ID0gdXAodXAodXAodXAo
dXAob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCiAKICAgICB0ZXN0ZXIgPSBUZXN0ZXIo
KQotICAgIHRlc3Rlci5hZGRfdHJlZShvcy5wYXRoLmpvaW4od2Via2l0X3Jvb3QsICdUb29scycs
ICdTY3JpcHRzJyksICd3ZWJraXRweScpCisgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9p
bihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJyksICd3ZWJraXRweScpCiAKICAgICAj
IFRoZXJlIGlzIG5vIFdlYktpdDIgb24gV2luZG93cywgc28gd2UgZG9uJ3QgbmVlZCB0byBydW4g
V2ViS2l0MiB1bml0dGVzdHMgb24gaXQuCiAgICAgaWYgbm90IChzeXMucGxhdGZvcm0uc3RhcnRz
d2l0aCgnd2luJykgb3Igc3lzLnBsYXRmb3JtID09ICdjeWd3aW4nKToKLSAgICAgICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAn
U2NyaXB0cycpLCAnd2Via2l0JykKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9p
bihfd2Via2l0X3Jvb3QsICdTb3VyY2UnLCAnV2ViS2l0JywgJ1NjcmlwdHMnKSwgJ3dlYmtpdCcp
CisKKyAgICBsbGRiX3B5dGhvbl9kaXJlY3RvcnkgPSBfaG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSgpCisgICAgaWYgb3MucGF0aC5pc2RpcihsbGRiX3B5dGhvbl9kaXJlY3Rvcnkp
OgorICAgICAgICBpZiBsbGRiX3B5dGhvbl9kaXJlY3Rvcnkgbm90IGluIHN5cy5wYXRoOgorICAg
ICAgICAgICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSkKKyAgICAgICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdsbGRi
JykpCisgICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gVHJ1ZQorICAgIGVsc2U6
CisgICAgICAgIF9sb2cuaW5mbygiU2tpcHBpbmcgbGxkYl93ZWJraXQgdGVzdHM7IGNvdWxkIG5v
dCBmaW5kIHBhdGggdG8gbGxkYi5weSAne30nLiIuZm9ybWF0KGxsZGJfcHl0aG9uX2RpcmVjdG9y
eSkpCisgICAgICAgIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzID0gRmFsc2UKIAogICAgIHRl
c3Rlci5za2lwKCgnd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5zY21fdW5pdHRlc3QnLCks
ICdhcmUgcmVhbGx5LCByZWFsbHksIHNsb3cnLCAzMTgxOCkKICAgICBpZiBzeXMucGxhdGZvcm0u
c3RhcnRzd2l0aCgnd2luJyk6CkBAIC03MSwxMSArMTA0LDExIEBAIGRlZiBtYWluKCk6CiAgICAg
ICAgIGZyb20gZ29vZ2xlLmFwcGVuZ2luZS5kaXN0IGltcG9ydCB1c2VfbGlicmFyeQogICAgICAg
ICB1c2VfbGlicmFyeSgnZGphbmdvJywgJzEuMicpCiAgICAgICAgIGRldl9hcHBzZXJ2ZXIuZml4
X3N5c19wYXRoKCkKLSAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRf
cm9vdCwgJ1Rvb2xzJywgJ1F1ZXVlU3RhdHVzU2VydmVyJykpCisgICAgICAgIHRlc3Rlci5hZGRf
dHJlZShvcy5wYXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2
ZXInKSkKICAgICBlbHNlOgogICAgICAgICBfbG9nLmluZm8oJ1NraXBwaW5nIFF1ZXVlU3RhdHVz
U2VydmVyIHRlc3RzOyB0aGUgR29vZ2xlIEFwcEVuZ2luZSBQeXRob24gU0RLIGlzIG5vdCBpbnN0
YWxsZWQuJykKIAotICAgIHJldHVybiBub3QgdGVzdGVyLnJ1bigpCisgICAgcmV0dXJuIG5vdCB0
ZXN0ZXIucnVuKHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzPXdpbGxfcnVuX2xsZGJfd2Via2l0
X3Rlc3RzKQogCiAKIGRlZiBfcHJpbnRfcmVzdWx0c19hc19qc29uKHN0cmVhbSwgYWxsX3Rlc3Rf
bmFtZXMsIGZhaWx1cmVzLCBlcnJvcnMpOgpAQCAtMTMxLDcgKzE2NCw3IEBAIGNsYXNzIFRlc3Rl
cihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmd2KQogCi0g
ICAgZGVmIHJ1bihzZWxmKToKKyAgICBkZWYgcnVuKHNlbGYsIHdpbGxfcnVuX2xsZGJfd2Via2l0
X3Rlc3RzPUZhbHNlKToKICAgICAgICAgc2VsZi5fb3B0aW9ucywgYXJncyA9IHNlbGYuX3BhcnNl
X2FyZ3MoKQogICAgICAgICBzZWxmLnByaW50ZXIuY29uZmlndXJlKHNlbGYuX29wdGlvbnMpCiAK
QEAgLTE0Miw5ICsxNzUsOSBAQCBjbGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgICAgIF9s
b2cuZXJyb3IoJ05vIHRlc3RzIHRvIHJ1bicpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAot
ICAgICAgICByZXR1cm4gc2VsZi5fcnVuX3Rlc3RzKG5hbWVzKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fcnVuX3Rlc3RzKG5hbWVzLCB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0cykKIAotICAgIGRl
ZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzKToKKyAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCBuYW1l
cywgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpOgogICAgICAgICAjIE1ha2Ugc3VyZSBQWVRI
T05QQVRIIGlzIHNldCB1cCBwcm9wZXJseS4KICAgICAgICAgc3lzLnBhdGggPSBzZWxmLmZpbmRl
ci5hZGRpdGlvbmFsX3BhdGhzKHN5cy5wYXRoKSArIHN5cy5wYXRoCiAKQEAgLTE1NCw2ICsxODcs
MjYgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAgICAgICAgIGZyb20gd2Via2l0cHkudGhpcmRw
YXJ0eSBpbXBvcnQgYXV0b2luc3RhbGxfZXZlcnl0aGluZwogICAgICAgICBhdXRvaW5zdGFsbF9l
dmVyeXRoaW5nKCkKIAorICAgICAgICBpZiB3aWxsX3J1bl9sbGRiX3dlYmtpdF90ZXN0czoKKyAg
ICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkNoZWNraW5nIGxsZGJXZWJLaXRU
ZXN0ZXIgLi4uIikKKyAgICAgICAgICAgIGlmIG5vdCBfZmluZF9sbGRiX3dlYmtpdF90ZXN0ZXIo
KToKKyAgICAgICAgICAgICAgICBzZWxmLnByaW50ZXIud3JpdGVfdXBkYXRlKCJCdWlsZGluZyBs
bGRiV2ViS2l0VGVzdGVyIC4uLiIpCisgICAgICAgICAgICAgICAgaWYgbm90IF9idWlsZF9sbGRi
X3dlYmtpdF90ZXN0ZXIoKToKKyAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignRmFpbGVk
IHRvIGJ1aWxkIGxsZGJXZWJLaXRUZXN0ZXIuJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJycKKyAgICAgICAgcHJpbnQg
Pj4gc3lzLnN0ZGVyciwgJ0RFQlVHOiBTYW5pdHkgY2hlY2sgbGF1bmNoaW5nIGxsZGJXZWJLaXRU
ZXN0ZXInCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5l
eGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgICAgICAgICBsbGRiX3dlYmtpdF90ZXN0
ZXJfZXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZp
Zy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSksICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICAgICAg
ICAgIF9ob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93X2lmX2ZhaWwoW2xsZGJfd2Via2l0X3Rl
c3Rlcl9leGVjdXRhYmxlXSkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAg
ICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnREVCVUc6IFNjcmlwdEVycm9yOiB7fScuZm9y
bWF0KGUpCisgICAgICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCBlLm1lc3NhZ2Vfd2l0aF9v
dXRwdXQoKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBwcmlu
dCA+PiBzeXMuc3RkZXJyLCBzdHIoZSkKKwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVy
YWdlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5nKCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBz
byBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNo
aWxkX3Byb2Nlc3NlcyA9IDEKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwZTdkODAzNTI2
N2I3ZmU3YjQ3MmMyYzQyYjBiZjZkYjM2OGQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xs
ZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAg
KzEsMTE5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6
CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5j
bHVkZT8gIi4uLy4uLy4uLy4uLy4uL0ludGVybmFsL0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5h
bFNESy54Y2NvbmZpZyIKKworVVNFX0lOVEVSTkFMX1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18k
KENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5BTF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VT
RV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5B
TF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5BTF9TREspOworCitBTFdBWVNfU0VBUkNIX1VT
RVJfUEFUSFMgPSBOTzsKKworQ0xBTkdfQ1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsK
K0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOworQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlF
UzsKK0NMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdf
V0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJ
T04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5f
RU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xB
TkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJT
SU9OID0gWUVTOworQ0xBTkdfV0FSTl9OT05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7
CitDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9S
QU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9
IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElDSU9VU19NT1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJF
QUNIQUJMRV9DT0RFID0gTk87CitDTEFOR19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0g
WUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxFQ1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElf
SU1BR0VTID0gTk87CitERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07
CitFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5E
QVJEID0gZ251OTk7CitHQ0NfREVCVUdHSU5HX1NZTUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFN
SUNfTk9fUElDID0gTk87CitHQ0NfRU5BQkxFX0NQUF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5B
QkxFX0NQUF9SVFRJID0gTk87CitHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dD
Q19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJT04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0gg
PSBZRVM7CitHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09N
TU9OX0JMT0NLUyA9IFlFUzsKK0dDQ19PQkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19Q
UkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gJChERUJVR19ERUZJTkVTKSAkKGluaGVyaXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5H
ID0gWUVTOworR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZF
X1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0Nf
VkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9G
VU5DVElPTlMgPSBOTzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JF
VFVSTl9UWVBFID0gWUVTOworR0NDX1dBUk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsK
K0dDQ19XQVJOX1NJR05fQ09NUEFSRSA9IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNU
T1IgPSBZRVM7CitHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5f
VU5VU0VEX0ZVTkNUSU9OID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitX
QVJOSU5HX0NGTEFHUyA9IC1XY2FzdC1xdWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9r
ZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNlbGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdt
aXNzaW5nLW5vcmV0dXJuIC1XcGFja2VkIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNs
cyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5ncyAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2Jh
bC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJv
dWdoOworCitIRUFERVJfU0VBUkNIX1BBVEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9s
b2NhbC9pbmNsdWRlOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VU
X01BQ19PU19YX1ZFUlNJT05fTUFKT1IkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6
aWRlbnRpZmllcikpOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7
CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNf
T1NfWF9WRVJTSU9OX01BSk9SXzEzID0gMTAxMzAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05f
TUFKT1JfMTQgPSAxMDE0MDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEw
MTUwMDsKKworU1VQUE9SVEVEX1BMQVRGT1JNUyA9IG1hY29zeDsKKworLy8gREVCVUdfREVGSU5F
UywgR0NDX09QVElNSVpBVElPTl9MRVZFTCwgU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERF
QURfQ09ERV9TVFJJUFBJTkcgdmFyeSBiZXR3ZWVuIHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlh
bnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2YWx1ZXMgZm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQg
aGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlvbiBpbiB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhl
IF9kZWJ1ZyB2YXJpYW50LgorREVCVUdfREVGSU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNf
bm9ybWFsID0gTkRFQlVHOworREVCVUdfREVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJF
TlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25v
cm1hbFtzZGs9bWFjb3N4Kl0gPSAyOworR0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7
CisKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8k
KENVUlJFTlRfVkFSSUFOVCkpOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVT
OworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVidWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQ
UElOR19kZWJ1ZyA9IE5POworREVBRF9DT0RFX1NUUklQUElOR19ub3JtYWwgPSBZRVM7CitERUFE
X0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NPREVfU1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5U
KSk7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJuYWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNB
Tl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BM
VVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWcgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1
YWE2MGVkYzY5MDJiODg2Yzk0OWZlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xs
ZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0w
LDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1l
dDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8g
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNp
bmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCitUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisK
K01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQo
UExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29z
eF8xMDE0MDAgPSAxMC4xNDsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAw
ID0gMTAuMTU7CisKK0dDQ19XQVJOX0FCT1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOwor
REVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdhcmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1Rf
JChVU0VfSU5URVJOQUxfU0RLKSk7CitTREtST09UXyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0g
bWFjb3N4LmludGVybmFsOworCitXS19DQ0FDSEVfRElSID0gJChTUkNST09UKS8uLi8uLi8uLi9U
b29scy9jY2FjaGU7CisjaW5jbHVkZSAiLi4vLi4vLi4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9s
bGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0Nv
bmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTMyZTYw
ODY1Y2M5MDVkMjZlN2UwOGU4Nzg0MjZhZDZhZTI4MTQ4NgotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVy
LnhjY29uZmlnCkBAIC0wLDAgKzEsMjYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8v
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK1BST0RVQ1RfTkFNRSA9ICQoVEFSR0VUX05BTUUpOworCitPVEhFUl9MREZM
QUdTW3Nkaz1tYWNvc3gqXSA9ICQoaW5oZXJpdGVkKSAtZnJhbWV3b3JrIENvY29hIC1mb3JjZV9s
b2FkICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliV1RGLmEiOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
bGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVz
dGVyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OGMyMWUxYmEzODdhOGJhNGZjNDNmMTQ0NGMzODBl
ZWM3OWVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIv
TWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACitTQ1JJUFRTX1BBVEggPSAuLi8uLi9TY3JpcHRzCitp
bmNsdWRlIC4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyYTE1ZTEyODMzN2IwYjZlNDgzOTUwOTA1
NGFjM2RhNzMxNjIxNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTAsMCAr
MSwyMDUgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZlVmVyc2lvbiA9IDE7CisJY2xhc3Nl
cyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlvYmplY3RzID0geworCisvKiBCZWdp
biBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk3Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyog
bWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi87IH07CisJCUNFNkMzQUZGMjBD
MEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENFNkMzQUZFMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSAq
LzsgfTsKKwkJQ0U2QzNCMDEyMEMwQzQ0NDAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZDM0IwMDIw
QzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAqLzsgfTsKKy8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJN0M0QUIzOUYxQUYwMjc2QzAwM0ZDOEQxIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9s
ZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKKy8qIEVuZCBQQlhDb3B5RmlsZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisJCTdD
MjIyNzUxMUFGQzREOUMwMDhDMzMzOCAvKiBCYXNlLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IEJh
c2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUyMUFGQzRE
OUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IGxs
ZGJXZWJLaXRUZXN0ZXIueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdD
MjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBw
YXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzRBQjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5l
eGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlcjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJN0NCNjg0NEExQUZBNzk3ODAw
MkIzMDVDIC8qIG1haW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
bWFpbi5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJQ0U2QzNBRkUyMEMwQjE3
QjAwM0UzM0Q4IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxpYldURi5hOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDRTZDM0IwMDIwQzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5k
eWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliaWN1Y29yZS5keWxpYjsgcGF0aCA9IHVz
ci9saWIvbGliaWN1Y29yZS5keWxpYjsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CisvKiBFbmQg
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUUxQUYwMjc2QzAwM0ZDOEQxIC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQlDRTZDM0IwMTIwQzBDNDQ0
MDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovLAorCQkJCUNFNkMz
QUZGMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSBpbiBGcmFtZXdvcmtzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5k
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYR3JvdXAg
c2VjdGlvbiAqLworCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlvbnMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDMjIyNzUx
MUFGQzREOUMwMDhDMzMzOCAvKiBCYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIyNzUzMUFGQzRE
OUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTIxQUZD
NEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi8sCisJCQkpOworCQkJ
cGF0aCA9IENvbmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsK
KwkJN0M0QUIzOTgxQUYwMjc2QzAwM0ZDOEQxID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQlj
aGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMzMzggLyogQ29uZmlndXJhdGlv
bnMgKi8sCisJCQkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIzIC8qIEZyYW1ld29ya3MgKi8sCisJ
CQkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkJ
N0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICovLAorCQkJKTsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQ
cm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJ
N0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOwor
CQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJ
Q0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdDQjY4NDRBMUFGQTc5NzgwMDJC
MzA1QyAvKiBtYWluLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCUNFM0Y0NDI1MjA1QzZBMDEwMDcx
OTVCMyAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQlDRTZDM0IwMDIwQzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAq
LywKKwkJCQlDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgKi8sCisJCQkpOwor
CQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9Owor
LyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNl
Y3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIg
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLzsKKwkJCWJ1aWxkUGhh
c2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2VzICovLAorCQkJ
CTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdvcmtzICovLAorCQkJCTdDNEFCMzlG
MUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9
ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJL
aXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0
UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIg
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9
OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWFByb2pl
Y3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmpl
Y3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJYXR0cmlidXRlcyA9IHsKKwkJCQlM
YXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQljb21wYXRpYmlsaXR5VmVy
c2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRSZWdpb24gPSBFbmdsaXNoOworCQkJ
aGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93blJlZ2lvbnMgPSAoCisJCQkJZW4s
CisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYwMjc2QzAwM0ZDOEQxOworCQkJcHJv
ZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICovOwor
CQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RSb290ID0gIiI7CisJCQl0YXJnZXRz
ID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICov
LAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KKworLyogQmVnaW4g
UEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RDFBRjAyNzZDMDAzRkM4
RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTdDQjY4NDRC
MUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OworLyogRW5kIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVm
ZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZp
ZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVCVUdfREVGSU5FUyA9ICIkKERFQlVH
X0RFRklORVNfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTdDNEFC
M0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFG
QzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcgKi87CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQk3QzRBQjNBOTFBRjAy
NzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTIxQUZDNEQ5QzAwOEMz
MzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQUExQUYwMjc2QzAwM0ZD
OEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8q
IGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJ
CTdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIzQTYxQUYw
Mjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAv
KiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTdDNEFC
M0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk3QzRBQjNBOTFBRjAy
NzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8q
IFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAw
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBY
Q0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9OworCXJvb3RPYmplY3QgPSA3QzRBQjM5
OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi87Cit9CmRpZmYgLS1naXQgYS9U
b29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAgYi9Ub29scy9sbGRiL2xsZGJXZWJL
aXRUZXN0ZXIvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFmODJmZTU4YThiZmUwOTY4NmZjMzNkYWI2
ZmI0NmI3MTRjMjkwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRl
c3Rlci9tYWluLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPHN0
ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRlcm4gdm9pZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5
UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKSB7IHJl
dHVybjsgfQorCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgorc3RhdGljIFN0cmluZyB1dGYxNlN0
cmluZyhjb25zdCBjaGFyMTZfdCAoJnN0cmluZylbbGVuZ3RoXSkKK3sKKyAgICBTdHJpbmdCdWls
ZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoIC0gMSk7Cisg
ICAgZm9yIChhdXRvIGMgOiBzdHJpbmcpCisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19j
YXN0PFVDaGFyPihjKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworc3Rh
dGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQoreworICAgIFN0cmluZyBhTnVsbFN0cmlu
ZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYU51bGxTdHJpbmdJbXBsID0gYU51bGxTdHJpbmcu
aW1wbCgpOworCisgICAgU3RyaW5nIGFuRW1wdHlTdHJpbmcgeyAiIiB9OworICAgIFN0cmluZ0lt
cGwqIGFuRW1wdHlTdHJpbmdJbXBsID0gYW5FbXB0eVN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJp
bmcgYW44Qml0U3RyaW5nIHsgInLDqXN1bcOpIiB9OworICAgIFN0cmluZ0ltcGwqIGFuOEJpdFN0
cmluZ0ltcGwgPSBhbjhCaXRTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGExNkJpdFN0cmlu
ZyA9IHV0ZjE2U3RyaW5nKHUiXHUxNjgwQ2FwcHVjY2lub1x1MTY4MCIpOworICAgIFN0cmluZ0lt
cGwqIGExNkJpdFN0cmluZ0ltcGwgPSBhMTZCaXRTdHJpbmcuaW1wbCgpOworCisgICAgYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOworfQorCitpbnQgbWFpbihpbnQgYXJnYywgY29u
c3QgY2hhciogYXJndltdKQoreworICAgIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCk7CisgICAgZnBy
aW50ZihzdGRlcnIsICJUaGlzIGV4ZWN1dGFibGUgZG9lcyBub3RoaW5nIGFuZCBpcyBvbmx5IG1l
YW50IGZvciBkZWJ1Z2dpbmcgbGxkYl93ZWJraXQucHkuXG4iKTsKKyAgICByZXR1cm4gMDsKK30K
ZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9s
bGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNGQzZDM0MDY4YWJkZjlk
NWQ2ZjAzMGUxNWE5MzM5NGNmZDhmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xs
ZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTQzIEBACisjIS91c3IvYmluL2VudiBw
eXRob24KKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisjIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
IyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhdGV4aXQKK2ltcG9ydCBsbGRiCitpbXBvcnQgbGxk
Yl93ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGltcG9ydCBTeXN0ZW1Ib3N0Citmcm9t
IHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcKKworCisjIFdlIGNhY2hlIHRoZSBs
bGRiIGRlYnVnIHNlc3Npb24gc3RhdGUgc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4g
Zm9yIGVhY2ggY2FsbCB0byBhIHNlcmlhbF90ZXN0XyBtZXRob2QuCisjIFdlIHN0b3JlIGl0IGlu
IGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRlbGV0ZSB0aGlzIGNhY2hlZCBzdGF0
ZSBvbiBleGl0KDMpLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1
cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3NldFVw
TW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSkuCitj
YWNoZWRfZGVidWdfc2Vzc2lvbiA9IE5vbmUKKworCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNl
IHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBz
ZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIg
Y2xhc3MvbW9kdWxlKS4KK0BhdGV4aXQucmVnaXN0ZXIKK2RlZiBkZXN0cm95X2NhY2hlZF9kZWJ1
Z19zZXNzaW9uKCk6CisgICAgaWYgY2FjaGVkX2RlYnVnX3Nlc3Npb246CisgICAgICAgIGNhY2hl
ZF9kZWJ1Z19zZXNzaW9uLnRlYXJEb3duKCkKKworCitjbGFzcyBMTERCRGVidWdTZXNzaW9uKG9i
amVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldHVwKGNscyk6CisgICAgICAgIExM
REJfV0VCS0lUX1RFU1RFUl9OQU1FID0gJ2xsZGJXZWJLaXRUZXN0ZXInCisgICAgICAgIEJSRUFL
X0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUgPSAnYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3Zp
ZGVycycKKworICAgICAgICBjbHMuc2JEZWJ1Z2dlciA9IGxsZGIuU0JEZWJ1Z2dlci5DcmVhdGUo
KQorICAgICAgICBjbHMuc2JEZWJ1Z2dlci5TZXRBc3luYyhGYWxzZSkKKworICAgICAgICBob3N0
ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGNvbmZpZyA9IENvbmZpZyhob3N0LmV4ZWN1dGl2ZSwg
aG9zdC5maWxlc3lzdGVtKQorICAgICAgICBjbHMubGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUg
PSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShjb25maWcuZGVmYXVsdF9jb25m
aWd1cmF0aW9uKCkpLCBMTERCX1dFQktJVF9URVNURVJfTkFNRSkKKworICAgICAgICBjbHMuc2JU
YXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXQoc3RyKGNscy5sbGRiV2ViS2l0VGVz
dGVyRXhlY3V0YWJsZSkpCisgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICIiCisgICAgICAg
IHByaW50ID4+IHN5cy5zdGRlcnIsICJERUJVRzogVGFyZ2V0OiB7fSIuZm9ybWF0KHN0cihjbHMu
bGxkYldlYktpdFRlc3RlckV4ZWN1dGFibGUpKQorICAgICAgICBhc3NlcnQgY2xzLnNiVGFyZ2V0
CisgICAgICAgIGNscy5zYlRhcmdldC5CcmVha3BvaW50Q3JlYXRlQnlOYW1lKEJSRUFLX0ZPUl9U
RVNUSU5HX0ZVTkNUSU9OX05BTUUsIGNscy5zYlRhcmdldC5HZXRFeGVjdXRhYmxlKCkuR2V0Rmls
ZW5hbWUoKSkKKworICAgICAgICBhcmd2ID0gTm9uZQorICAgICAgICBlbnZwID0gTm9uZQorICAg
ICAgICBjbHMuc2JQcm9jZXNzID0gY2xzLnNiVGFyZ2V0LkxhdW5jaFNpbXBsZShhcmd2LCBlbnZw
LCBvcy5nZXRjd2QoKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlByb2Nlc3MKKyAgICAgICAgcHJp
bnQgPj4gc3lzLnN0ZGVyciwgIkRFQlVHOiBQcm9jZXNzOiB7fSIuZm9ybWF0KHN0cihjbHMuc2JQ
cm9jZXNzKSkKKyAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIkRFQlVHOiBQcm9jZXNzIHN0
YXRlOiB7fSIuZm9ybWF0KGNscy5zYlByb2Nlc3MuR2V0U3RhdGUoKSkKKyAgICAgICAgYXNzZXJ0
IGNscy5zYlByb2Nlc3MuR2V0U3RhdGUoKSA9PSBsbGRiLmVTdGF0ZVN0b3BwZWQKKworICAgICAg
ICBjbHMuc2JUaHJlYWQgPSBjbHMuc2JQcm9jZXNzLkdldFRocmVhZEF0SW5kZXgoMCkKKyAgICAg
ICAgYXNzZXJ0IGNscy5zYlRocmVhZAorCisgICAgICAgICMgRnJhbWUgMCBpcyB0aGUgZnVuY3Rp
b24gd2l0aCBuYW1lIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUuIFdlIHdhbnQgdGhl
IGZyYW1lIG9mIHRoZSBjYWxsZXIgb2YKKyAgICAgICAgIyBCUkVBS19GT1JfVEVTVElOR19GVU5D
VElPTl9OQU1FIGJlY2F1c2UgaXQgaGFzIGFsbCB0aGUgaW50ZXJlc3RpbmcgbG9jYWwgdmFyaWFi
bGVzIHdlIHdhbnQgdG8gdGVzdC4KKyAgICAgICAgY2xzLnNiRnJhbWUgPSBjbHMuc2JUaHJlYWQu
R2V0RnJhbWVBdEluZGV4KDEpCisgICAgICAgIGFzc2VydCBjbHMuc2JGcmFtZQorCisgICAgQGNs
YXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duKGNscyk6CisgICAgICAgIGNscy5zYlByb2Nlc3Mu
S2lsbCgpCisKKworY2xhc3MgVGVzdFN1bW1hcnlQcm92aWRlcnModW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGds
b2JhbCBjYWNoZWRfZGVidWdfc2Vzc2lvbgorICAgICAgICBpZiBub3QgY2FjaGVkX2RlYnVnX3Nl
c3Npb246CisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbiA9IExMREJEZWJ1Z1Nlc3Np
b24oKQorICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24uc2V0dXAoKQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIF9zYkZyYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gY2FjaGVkX2Rl
YnVnX3Nlc3Npb24uc2JGcmFtZQorCisgICAgIyBUaGUgTExEQiBQeXRob24gbW9kdWxlIGRvZXMg
bm90IHdvcmsgd2l0aCBQeXRob24gbXVsdGlwcm9jZXNzaW5nIGFuZCBjYXVzZXMgZXJyb3JzIG9m
IHRoZSBmb3JtOgorICAgICMgICAgIG9iamNbNzY3OTRdOiArW19fTURRdWVyeSBpbml0aWFsaXpl
XSBtYXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGluIGFub3RoZXIgdGhyZWFkIHdoZW4gZm9yaygp
IHdhcyBjYWxsZWQuCisgICAgIyAgICAgICAgICAgICAgICAgIFdlIGNhbm5vdCBzYWZlbHkgY2Fs
bCBpdCBvciBpZ25vcmUgaXQgaW4gdGhlIGZvcmsoKSBjaGlsZCBwcm9jZXNzLiBDcmFzaGluZyBp
bnN0ZWFkLgorICAgICMgU28sIHdlIHJ1biB0aGUgZm9sbG93aW5nIHRlc3RzIHNlcmlhbGx5Lgor
CisgICAgIyBNQVJLOiBXVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisK
KyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfbnVsbF9z
dHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBs
X1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmdJ
bXBsJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9
IDAsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3Rf
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAg
ICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2Vs
Zi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmdJbXBsJyksIHt9KQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNv
bnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1t
YXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dl
YmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJp
YWJsZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dW1tYXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICdyXFx4ZTlzdW1c
XHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJv
dmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQu
V1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUo
J2ExNkJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFy
eSwgdSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9ICdcXHUxNjgwQ2FwcHVj
Y2lub1xcdTE2ODBcXHgwMCcgfSIpCisKKyAgICAjIE1BUks6IFdURlN0cmluZ19TdW1tYXJ5UHJv
dmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtp
dC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdh
TnVsbFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBs
ZW5ndGggPSAwLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5
ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZp
bmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNl
cmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6Cisg
ICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNl
bGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgY29udGVudHMgPSAnclxceGU5
c3VtXFx4ZTknIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJv
dmlkZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQu
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2
Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBs
ZW5ndGggPSAxMywgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0i
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341791</attachid>
            <date>2018-06-01 15:08:28 -0700</date>
            <delta_ts>2018-06-01 15:18:17 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180601150827.patch</filename>
            <type>text/plain</type>
            <size>45670</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uYTFhNDU3NzFkZDIyYWNmMmY5ZjRiOWVkMWJlZGMwNDM0OWFh
NmQ1NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDU4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9t
IHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5w
cmludGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBS
dW5uZXIsIHVuaXRfdGVzdF9uYW1lCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAorX2hvc3QgPSBTeXN0ZW1Ib3N0KCkKK193ZWJraXRfcm9vdCA9IE5vbmUKKworCitkZWYg
X2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgY29uZmlnID0gQ29uZmlnKF9ob3N0LmV4
ZWN1dGl2ZSwgX2hvc3QuZmlsZXN5c3RlbSkKKyAgICBsbGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0
YWJsZSA9IG9zLnBhdGguam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0
X2NvbmZpZ3VyYXRpb24oKSksICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICByZXR1cm4gb3MucGF0
aC5pc2ZpbGUobGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpIGFuZCBvcy5hY2Nlc3MobGxk
Yl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUsIG9zLlhfT0spCisKKworZGVmIF9idWlsZF9sbGRi
X3dlYmtpdF90ZXN0ZXIoKToKKyAgICBpZiBub3QgX2hvc3QucGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgIF9sb2cuZXJyb3IoJ2xsZGJXZWJLaXRUZXN0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLicpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGNvbmZpZyA9IENvbmZp
ZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgYnVpbGRfbGxkYndlYmtp
dHRlc3RlciA9IG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJywg
J2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXInKQorICAgIHJldHVybiBfaG9zdC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoW2J1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1
cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSldLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUpID09IDAKKwogCiBkZWYgbWFpbigpOgorICAgIGdsb2JhbCBfd2Via2l0X3Jvb3QKICAg
ICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIAogICAgIHVwID0gb3MucGF0aC5kaXJu
YW1lCi0gICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSkpKSkKKyAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKSkpKSkKIAogICAgIHRlc3RlciA9IFRlc3RlcigpCi0gICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwg
J3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMgVGhlcmUgaXMgbm8g
V2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJLaXQyIHVuaXR0
ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBv
ciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgotICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3Mu
cGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRzJyksICd3
ZWJraXQnKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykKKworICAgIGxsZGJf
cHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkK
KyAgICBpZiBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6CisgICAgICAgIGlm
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzeXMu
cGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0ZXN0ZXIuYWRkX3Ry
ZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgX2xv
Zy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgcGF0aCB0
byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5KSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQogCiAgICAgdGVzdGVyLnNraXAoKCd3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHks
IHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKQEAgLTcxLDExICsxMDQsMTEgQEAgZGVmIG1haW4oKToKICAgICAgICAgZnJvbSBnb29n
bGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAgIHVzZV9saWJyYXJ5
KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhfc3lzX3BhdGgoKQot
ICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMn
LCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQogICAgIGVs
c2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7
IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0g
ICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKKyAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4od2ls
bF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCiAKIAog
ZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9uYW1lcywgZmFpbHVy
ZXMsIGVycm9ycyk6CkBAIC0xMzEsNyArMTY0LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAK
ICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBkZWYgcnVuKHNl
bGYpOgorICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9RmFsc2Up
OgogICAgICAgICBzZWxmLl9vcHRpb25zLCBhcmdzID0gc2VsZi5fcGFyc2VfYXJncygpCiAgICAg
ICAgIHNlbGYucHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKIApAQCAtMTQyLDkgKzE3
NSw5IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignTm8g
dGVzdHMgdG8gcnVuJykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJldHVy
biBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMo
bmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQogCi0gICAgZGVmIF9ydW5fdGVzdHMo
c2VsZiwgbmFtZXMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxsX3J1bl9s
bGRiX3dlYmtpdF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIFBZVEhPTlBBVEggaXMgc2V0
IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0aW9uYWxf
cGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIApAQCAtMTU0LDYgKzE4NywxNCBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBh
dXRvaW5zdGFsbF9ldmVyeXRoaW5nCiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQog
CisgICAgICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgorICAgICAgICAgICAgc2Vs
Zi5wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tpbmcgbGxkYldlYktpdFRlc3RlciAuLi4iKQor
ICAgICAgICAgICAgaWYgbm90IF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgICAgICAg
ICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0
ZXIgLi4uIikKKyAgICAgICAgICAgICAgICBpZiBub3QgX2J1aWxkX2xsZGJfd2Via2l0X3Rlc3Rl
cigpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gYnVpbGQgbGxk
YldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKZGlmZiAtLWdpdCBh
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmln
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGMwZTdkODAzNTI2N2I3ZmU3YjQ3MmMyYzQyYjBiZjZkYjM2OGQ0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTE5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZT8gIi4uLy4uLy4uLy4uLy4uL0ludGVybmFs
L0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKworVVNFX0lOVEVSTkFM
X1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5B
TF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVf
SU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5B
TF9TREspOworCitBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKworQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwor
Q0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKK0NMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9B
VVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitD
TEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VY
VEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZ
RVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05W
RVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworQ0xB
TkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElDSU9VU19N
T1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gTk87CitDTEFOR19XQVJO
X19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElfSU1BR0VTID0gTk87CitERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CitHQ0NfREVCVUdHSU5HX1NZ
TUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CitHQ0NfRU5BQkxFX0NQ
UF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJID0gTk87CitHQ0NfRU5BQkxF
X09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJT04gPSBO
TzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKK0dDQ19PQkpDX0NB
TExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7
CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAkKGluaGVy
aXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOworR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJO
SU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
R0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsKK0dDQ19XQVJOX0FCT1VU
X01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworR0NDX1dBUk5fTk9O
X1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05fQ09NUEFSRSA9IFlFUzsK
K0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9VTklOSVRJQUxJ
WkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1XY2FzdC1xdWFsIC1X
Y2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNlbGYgLVdt
aXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XcGFja2VkIC1XcG9p
bnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5ncyAtV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwt
Y29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitIRUFERVJfU0VBUkNIX1BBVEhTID0g
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlOworCitUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IkKE1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmllcikpOworVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
Ul8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEzID0gMTAxMzAw
OworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTQgPSAxMDE0MDA7CitUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEwMTUwMDsKKworU1VQUE9SVEVEX1BMQVRGT1JNUyA9
IG1hY29zeDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZFTCwgU1RS
SVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcgdmFyeSBiZXR3ZWVu
IHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2YWx1ZXMg
Zm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlvbiBp
biB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgorREVCVUdfREVGSU5F
U19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdfREVGSU5F
UyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5UKSk7
CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbFtzZGs9bWFjb3N4Kl0gPSAyOworR0NDX09Q
VElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7CisKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0g
JChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8kKENVUlJFTlRfVkFSSUFOVCkpOworU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVTOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVi
dWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POworREVBRF9DT0RFX1NU
UklQUElOR19ub3JtYWwgPSBZRVM7CitERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NPREVf
U1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJu
YWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQ
TFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9
ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1YWE2MGVkYzY5MDJiODg2Yzk0OWZlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMv
RGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitPTkxZ
X0FDVElWRV9BUkNIID0gWUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQo
TUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQo
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEx
MDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAu
MTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDE0MDAgPSAxMC4xNDsKK01BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAwID0gMTAuMTU7CisKK0dDQ19XQVJOX0FCT1VUX0RF
UFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdh
cmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7CitTREtST09U
XyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOworCitXS19DQ0FDSEVf
RElSID0gJChTUkNST09UKS8uLi8uLi8uLi9Ub29scy9jY2FjaGU7CisjaW5jbHVkZSAiLi4vLi4v
Li4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIu
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMGJkN2ZhOGMzOWNkYjcwOTJjNmY5ZTllNTY3ZGQyZTFjMWZm
ZGJmNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAgKzEsMzAgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8g
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RVQ1RfTkFNRSA9ICQo
VEFSR0VUX05BTUUpOworCitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChpbmhlcml0
ZWQpIFJFTEVBU0VfV0lUSE9VVF9PUFRJTUlaQVRJT05TPTE7CitHQ0NfT1BUSU1JWkFUSU9OX0xF
VkVMID0gMDsKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0gTk87CitERUFEX0NPREVfU1RSSVBQ
SU5HID0gTk87CitPVEhFUl9MREZMQUdTW3Nkaz1tYWNvc3gqXSA9ICQoaW5oZXJpdGVkKSAtZnJh
bWV3b3JrIENvY29hIC1mb3JjZV9sb2FkICIkKEJVSUxUX1BST0RVQ1RTX0RJUikvbGliV1RGLmEi
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1OGMyMWUxYmEz
ODdhOGJhNGZjNDNmMTQ0NGMzODBlZWM3OWVkZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9s
bGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKQEAgLTAsMCArMSwyIEBACitTQ1JJUFRTX1BB
VEggPSAuLi8uLi9TY3JpcHRzCitpbmNsdWRlIC4uLy4uLy4uL01ha2VmaWxlLnNoYXJlZApkaWZm
IC0tZ2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRi
V2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzUyYTE1
ZTEyODMzN2IwYjZlNDgzOTUwOTA1NGFjM2RhNzMxNjIxNwotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTAsMCArMSwyMDUgQEAKKy8vICEkKlVURjgqJCEKK3sKKwlhcmNoaXZl
VmVyc2lvbiA9IDE7CisJY2xhc3NlcyA9IHsKKwl9OworCW9iamVjdFZlcnNpb24gPSA0NjsKKwlv
YmplY3RzID0geworCisvKiBCZWdpbiBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCQk3Q0I2ODQ0
QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAg
Ki87IH07CisJCUNFNkMzQUZGMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSBpbiBGcmFtZXdv
cmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkMzQUZFMjBDMEIxN0Iw
MDNFMzNEOCAvKiBsaWJXVEYuYSAqLzsgfTsKKwkJQ0U2QzNCMDEyMEMwQzQ0NDAwM0UzM0Q4IC8q
IGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTZDM0IwMDIwQzBDNDQzMDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAq
LzsgfTsKKy8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUYxQUYwMjc2QzAwM0ZDOEQxIC8q
IENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFu
L21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKKy8qIEVuZCBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYRmlsZVJlZmVy
ZW5jZSBzZWN0aW9uICovCisJCTdDMjIyNzUxMUFGQzREOUMwMDhDMzMzOCAvKiBCYXNlLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IEJhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTdDMjIyNzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29u
ZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC54Y2NvbmZpZzsgcGF0aCA9IGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWc7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVh
c2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gRGVidWdSZWxlYXNlLnhjY29uZmlnOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk3QzRBQjNBMTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldl
YktpdFRlc3RlciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBl
ID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRo
ID0gbGxkYldlYktpdFRlc3Rlcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gbWFpbi5jcHA7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsg
fTsKKwkJQ0U2QzNBRkUyMEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5hICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gYXJjaGl2ZS5hcjsgcGF0aCA9IGxp
YldURi5hOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRTZDM0IwMDIwQzBDNDQzMDAz
RTMzRDggLyogbGliaWN1Y29yZS5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBuYW1lID0gbGliaWN1
Y29yZS5keWxpYjsgcGF0aCA9IHVzci9saWIvbGliaWN1Y29yZS5keWxpYjsgc291cmNlVHJlZSA9
IFNES1JPT1Q7IH07CisvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCisKKy8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUUxQUYwMjc2
QzAwM0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCQlDRTZDM0IwMTIwQzBDNDQ0MDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFt
ZXdvcmtzICovLAorCQkJCUNFNkMzQUZGMjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSBpbiBG
cmFtZXdvcmtzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OworLyogRW5kIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KworLyogQmVnaW4gUEJYR3JvdXAgc2VjdGlvbiAqLworCQk3QzIyMjc1MDFBRkM0RDBBMDA4QzMz
MzggLyogQ29uZmlndXJhdGlvbnMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxk
cmVuID0gKAorCQkJCTdDMjIyNzUxMUFGQzREOUMwMDhDMzMzOCAvKiBCYXNlLnhjY29uZmlnICov
LAorCQkJCTdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25maWcg
Ki8sCisJCQkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNj
b25maWcgKi8sCisJCQkpOworCQkJcGF0aCA9IENvbmZpZ3VyYXRpb25zOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKKwkJN0M0QUIzOTgxQUYwMjc2QzAwM0ZDOEQxID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzIyMjc1MDFBRkM0RDBBMDA4
QzMzMzggLyogQ29uZmlndXJhdGlvbnMgKi8sCisJCQkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIz
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxsZGJX
ZWJLaXRUZXN0ZXIgKi8sCisJCQkJN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3Rz
ICovLAorCQkJKTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJCTdDNEFCM0Ey
MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJL
aXRUZXN0ZXIgKi8sCisJCQkpOworCQkJbmFtZSA9IFByb2R1Y3RzOworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjQyMDVDNjZEOTAwNzE5NUIzIC8qIGxsZGJXZWJL
aXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJ
CTdDQjY4NDRBMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLywKKwkJCSk7CisJCQluYW1l
ID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisJ
CUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0g
UEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDRTZDM0IwMDIwQzBDNDQzMDAzRTMzRDgg
LyogbGliaWN1Y29yZS5keWxpYiAqLywKKwkJCQlDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyog
bGliV1RGLmEgKi8sCisJCQkpOworCQkJbmFtZSA9IEZyYW1ld29ya3M7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OworLyogRW5kIFBCWEdyb3VwIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJN0M0QUIzQTAxQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2ViS2l0VGVz
dGVyIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhE
MSAvKiBTb3VyY2VzICovLAorCQkJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBGcmFtZXdv
cmtzICovLAorCQkJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8sCisJ
CQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkp
OworCQkJbmFtZSA9IGxsZGJXZWJLaXRUZXN0ZXI7CisJCQlwcm9kdWN0TmFtZSA9IGxsZGJXZWJL
aXRUZXN0ZXI7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQx
IC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJv
ZHVjdC10eXBlLnRvb2wiOworCQl9OworLyogRW5kIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisKKy8qIEJlZ2luIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCQk3QzRBQjM5OTFBRjAyNzZDMDAz
RkM4RDEgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7CisJCQlpc2EgPSBQQlhQcm9qZWN0OworCQkJ
YXR0cmlidXRlcyA9IHsKKwkJCQlMYXN0VXBncmFkZUNoZWNrID0gMDcwMDsKKwkJCX07CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gN0M0QUIzOUMxQUYwMjc2QzAwM0ZDOEQxIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldlYktpdFRlc3RlciIgKi87
CisJCQljb21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAzLjIiOworCQkJZGV2ZWxvcG1lbnRS
ZWdpb24gPSBFbmdsaXNoOworCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDA7CisJCQlrbm93
blJlZ2lvbnMgPSAoCisJCQkJZW4sCisJCQkpOworCQkJbWFpbkdyb3VwID0gN0M0QUIzOTgxQUYw
Mjc2QzAwM0ZDOEQxOworCQkJcHJvZHVjdFJlZkdyb3VwID0gN0M0QUIzQTIxQUYwMjc2QzAwM0ZD
OEQxIC8qIFByb2R1Y3RzICovOworCQkJcHJvamVjdERpclBhdGggPSAiIjsKKwkJCXByb2plY3RS
b290ID0gIiI7CisJCQl0YXJnZXRzID0gKAorCQkJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAv
KiBsbGRiV2ViS2l0VGVzdGVyICovLAorCQkJKTsKKwkJfTsKKy8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3
QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNv
dXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OworCQl9OworLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKworLyogQmVn
aW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQk3QzRBQjNBNjFBRjAyNzZDMDAz
RkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8q
IERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJREVC
VUdfREVGSU5FUyA9ICIkKERFQlVHX0RFRklORVNfZGVidWcpIjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTdDNEFCM0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJl
ZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2UueGNjb25m
aWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0g
N0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
N0M0QUIzQUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3
NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJXZWJLaXRUZXN0ZXIueGNjb25maWcgKi87CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5k
IFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKworLyogQmVnaW4gWENDb25maWd1cmF0
aW9uTGlzdCBzZWN0aW9uICovCisJCTdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFC
M0E3MUFGMDI3NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQk3QzRBQjNBOTFBRjAyNzZDMDAzRkM4RDEgLyogRGVidWcgKi8sCisJCQkJN0M0QUIz
QUExQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwl9Owor
CXJvb3RPYmplY3QgPSA3QzRBQjM5OTFBRjAyNzZDMDAzRkM4RDEgLyogUHJvamVjdCBvYmplY3Qg
Ki87Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAg
Yi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWFmODJm
ZTU4YThiZmUwOTY4NmZjMzNkYWI2ZmI0NmI3MTRjMjkwMAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVp
bGRlci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitleHRlcm4gdm9pZCBi
cmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKCk7Cit2b2lkIGJyZWFrRm9yVGVzdGluZ1N1
bW1hcnlQcm92aWRlcnMoKSB7IHJldHVybjsgfQorCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgor
c3RhdGljIFN0cmluZyB1dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAoJnN0cmluZylbbGVuZ3Ro
XSkKK3sKKyAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2Fw
YWNpdHkobGVuZ3RoIC0gMSk7CisgICAgZm9yIChhdXRvIGMgOiBzdHJpbmcpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPihjKSk7CisgICAgcmV0dXJuIGJ1aWxkZXIu
dG9TdHJpbmcoKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFN1bW1hcnlQcm92aWRlcnMoKQorewor
ICAgIFN0cmluZyBhTnVsbFN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYU51bGxTdHJp
bmdJbXBsID0gYU51bGxTdHJpbmcuaW1wbCgpOworCisgICAgU3RyaW5nIGFuRW1wdHlTdHJpbmcg
eyAiIiB9OworICAgIFN0cmluZ0ltcGwqIGFuRW1wdHlTdHJpbmdJbXBsID0gYW5FbXB0eVN0cmlu
Zy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYW44Qml0U3RyaW5nIHsgInLDqXN1bcOpIiB9OworICAg
IFN0cmluZ0ltcGwqIGFuOEJpdFN0cmluZ0ltcGwgPSBhbjhCaXRTdHJpbmcuaW1wbCgpOworCisg
ICAgU3RyaW5nIGExNkJpdFN0cmluZyA9IHV0ZjE2U3RyaW5nKHUiXHUxNjgwQ2FwcHVjY2lub1x1
MTY4MCIpOworICAgIFN0cmluZ0ltcGwqIGExNkJpdFN0cmluZ0ltcGwgPSBhMTZCaXRTdHJpbmcu
aW1wbCgpOworCisgICAgYnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpOworfQorCitp
bnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciogYXJndltdKQoreworICAgIHRlc3RTdW1tYXJ5
UHJvdmlkZXJzKCk7CisgICAgZnByaW50ZihzdGRlcnIsICJUaGlzIGV4ZWN1dGFibGUgZG9lcyBu
b3RoaW5nIGFuZCBpcyBvbmx5IG1lYW50IGZvciBkZWJ1Z2dpbmcgbGxkYl93ZWJraXQucHkuXG4i
KTsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRf
dW5pdHRlc3QucHkgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5Cm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjdmNjJmNDU2MTdjYmQ5NWIyM2I1ZDQ2ZDc4ZDZiYWRlNjU0ZmJmM2QKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsMTM5
IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMgLSotIGNvZGluZzogdXRmLTggLSotCisjCisj
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyMgQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2ltcG9ydCBhdGV4aXQKK2lt
cG9ydCBsbGRiCitpbXBvcnQgbGxkYl93ZWJraXQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1w
b3J0IHVuaXR0ZXN0CisKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0IGlt
cG9ydCBTeXN0ZW1Ib3N0Citmcm9tIHdlYmtpdHB5LnBvcnQuY29uZmlnIGltcG9ydCBDb25maWcK
KworCisjIFdlIGNhY2hlIHRoZSBsbGRiIGRlYnVnIHNlc3Npb24gc3RhdGUgc28gdGhhdCB3ZSBk
b24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVhY2ggY2FsbCB0byBhIHNlcmlhbF90ZXN0XyBtZXRo
b2QuCisjIFdlIHN0b3JlIGl0IGluIGEgZ2xvYmFsIHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIGRl
bGV0ZSB0aGlzIGNhY2hlZCBzdGF0ZSBvbiBleGl0KDMpLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMg
b25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGku
ZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2Ug
cGVyIGNsYXNzL21vZHVsZSkuCitjYWNoZWRfZGVidWdfc2Vzc2lvbiA9IE5vbmUKKworCisjIEZJ
WE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1v
ZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2Fs
bGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK0BhdGV4aXQucmVnaXN0ZXIKK2Rl
ZiBkZXN0cm95X2NhY2hlZF9kZWJ1Z19zZXNzaW9uKCk6CisgICAgaWYgY2FjaGVkX2RlYnVnX3Nl
c3Npb246CisgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnRlYXJEb3duKCkKKworCitjbGFz
cyBMTERCRGVidWdTZXNzaW9uKG9iamVjdCk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNl
dHVwKGNscyk6CisgICAgICAgIExMREJfV0VCS0lUX1RFU1RFUl9OQU1FID0gJ2xsZGJXZWJLaXRU
ZXN0ZXInCisgICAgICAgIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUgPSAnYnJlYWtG
b3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycycKKworICAgICAgICBjbHMuc2JEZWJ1Z2dlciA9IGxs
ZGIuU0JEZWJ1Z2dlci5DcmVhdGUoKQorICAgICAgICBjbHMuc2JEZWJ1Z2dlci5TZXRBc3luYyhG
YWxzZSkKKworICAgICAgICBob3N0ID0gU3lzdGVtSG9zdCgpCisgICAgICAgIGNvbmZpZyA9IENv
bmZpZyhob3N0LmV4ZWN1dGl2ZSwgaG9zdC5maWxlc3lzdGVtKQorICAgICAgICBjbHMubGxkYldl
YktpdFRlc3RlckV4ZWN1dGFibGUgPSBvcy5wYXRoLmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9y
eShjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9uKCkpLCBMTERCX1dFQktJVF9URVNURVJfTkFN
RSkKKworICAgICAgICBjbHMuc2JUYXJnZXQgPSBjbHMuc2JEZWJ1Z2dlci5DcmVhdGVUYXJnZXQo
c3RyKGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSkpCisgICAgICAgIGFzc2VydCBjbHMu
c2JUYXJnZXQKKyAgICAgICAgY2xzLnNiVGFyZ2V0LkJyZWFrcG9pbnRDcmVhdGVCeU5hbWUoQlJF
QUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSwgY2xzLnNiVGFyZ2V0LkdldEV4ZWN1dGFibGUo
KS5HZXRGaWxlbmFtZSgpKQorCisgICAgICAgIGFyZ3YgPSBOb25lCisgICAgICAgIGVudnAgPSBO
b25lCisgICAgICAgIGNscy5zYlByb2Nlc3MgPSBjbHMuc2JUYXJnZXQuTGF1bmNoU2ltcGxlKGFy
Z3YsIGVudnAsIG9zLmdldGN3ZCgpKQorICAgICAgICBhc3NlcnQgY2xzLnNiUHJvY2VzcworICAg
ICAgICBhc3NlcnQgY2xzLnNiUHJvY2Vzcy5HZXRTdGF0ZSgpID09IGxsZGIuZVN0YXRlU3RvcHBl
ZAorCisgICAgICAgIGNscy5zYlRocmVhZCA9IGNscy5zYlByb2Nlc3MuR2V0VGhyZWFkQXRJbmRl
eCgwKQorICAgICAgICBhc3NlcnQgY2xzLnNiVGhyZWFkCisKKyAgICAgICAgIyBGcmFtZSAwIGlz
IHRoZSBmdW5jdGlvbiB3aXRoIG5hbWUgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRS4g
V2Ugd2FudCB0aGUgZnJhbWUgb2YgdGhlIGNhbGxlciBvZgorICAgICAgICAjIEJSRUFLX0ZPUl9U
RVNUSU5HX0ZVTkNUSU9OX05BTUUgYmVjYXVzZSBpdCBoYXMgYWxsIHRoZSBpbnRlcmVzdGluZyBs
b2NhbCB2YXJpYWJsZXMgd2Ugd2FudCB0byB0ZXN0LgorICAgICAgICBjbHMuc2JGcmFtZSA9IGNs
cy5zYlRocmVhZC5HZXRGcmFtZUF0SW5kZXgoMSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYkZyYW1l
CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd24oY2xzKToKKyAgICAgICAgY2xz
LnNiUHJvY2Vzcy5LaWxsKCkKKworCitjbGFzcyBUZXN0U3VtbWFyeVByb3ZpZGVycyh1bml0dGVz
dC5UZXN0Q2FzZSk6CisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToK
KyAgICAgICAgZ2xvYmFsIGNhY2hlZF9kZWJ1Z19zZXNzaW9uCisgICAgICAgIGlmIG5vdCBjYWNo
ZWRfZGVidWdfc2Vzc2lvbjoKKyAgICAgICAgICAgIGNhY2hlZF9kZWJ1Z19zZXNzaW9uID0gTExE
QkRlYnVnU2Vzc2lvbigpCisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbi5zZXR1cCgp
CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgX3NiRnJhbWUoc2VsZik6CisgICAgICAgIHJldHVy
biBjYWNoZWRfZGVidWdfc2Vzc2lvbi5zYkZyYW1lCisKKyAgICAjIFRoZSBMTERCIFB5dGhvbiBt
b2R1bGUgZG9lcyBub3Qgd29yayB3aXRoIFB5dGhvbiBtdWx0aXByb2Nlc3NpbmcgYW5kIGNhdXNl
cyBlcnJvcnMgb2YgdGhlIGZvcm06CisgICAgIyAgICAgb2JqY1s3Njc5NF06ICtbX19NRFF1ZXJ5
IGluaXRpYWxpemVdIG1heSBoYXZlIGJlZW4gaW4gcHJvZ3Jlc3MgaW4gYW5vdGhlciB0aHJlYWQg
d2hlbiBmb3JrKCkgd2FzIGNhbGxlZC4KKyAgICAjICAgICAgICAgICAgICAgICAgV2UgY2Fubm90
IHNhZmVseSBjYWxsIGl0IG9yIGlnbm9yZSBpdCBpbiB0aGUgZm9yaygpIGNoaWxkIHByb2Nlc3Mu
IENyYXNoaW5nIGluc3RlYWQuCisgICAgIyBTbywgd2UgcnVuIHRoZSBmb2xsb3dpbmcgdGVzdHMg
c2VyaWFsbHkuCisKKyAgICAjIE1BUks6IFdURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyIHRl
c3QgY2FzZXMKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92
aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldU
RlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdh
TnVsbFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
InsgbGVuZ3RoID0gMCwgaXM4Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2Vs
Zik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQ
cm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW5FbXB0eVN0cmluZ0ltcGwnKSwg
e30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgaXM4
Yml0ID0gMSwgY29udGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJp
bmdJbXBsX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFy
eSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJh
bWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDgsIGlzOGJpdCA9IDEsIGNvbnRlbnRzID0g
J3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBs
X1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBs
bGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZp
bmRWYXJpYWJsZSgnYTE2Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGlzOGJpdCA9IDAsIGNvbnRlbnRzID0gJ1xc
dTE2ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikKKworICAgICMgTUFSSzogV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3Ry
aW5nX1N1bW1hcnlQcm92aWRlcl9udWxsX3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9
IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5k
VmFyaWFibGUoJ2FOdWxsU3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1
bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFs
X3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9lbXB0eV9zdHJpbmcoc2VsZik6CisgICAg
ICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYu
X3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVtcHR5U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGNvbnRlbnRzID0gJycgfSIpCisK
KyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl84Yml0X3N0cmlu
ZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5
UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmluZycpLCB7fSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSA4LCBjb250ZW50
cyA9ICdyXFx4ZTlzdW1cXHhlOScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5n
X1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBs
bGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZh
cmlhYmxlKCdhMTZCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Vt
bWFyeSwgdSJ7IGxlbmd0aCA9IDEzLCBjb250ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lub1xcdTE2
ODBcXHgwMCcgfSIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341794</attachid>
            <date>2018-06-01 15:18:19 -0700</date>
            <delta_ts>2018-06-27 21:17:38 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-183744-20180601151818.patch</filename>
            <type>text/plain</type>
            <size>45801</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMjIyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGNhZGE0NTdhM2ExZWExZGJhNzAzYjFiMDdkMTFmZWI3
MTI4NTNmZi4uNjU0NTczNDdhZWJmOGRjYThiYzFkYWYwYzYzYTU0ZWNiMzMwZmRhZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA1LTMxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNS0yNSAgQWFrYXNo
IEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzcGxheSBkZXRhaWxl
ZCBlcnJvciBsb2dzIHdoZW4gYSBzY3JpcHQgZmFpbHMgaW4gRVdTCmRpZmYgLS1naXQgYS9Ub29s
cy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxlCmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0
NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0
NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2VmaWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0y
LDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJlbmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5p
QnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkp
CiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNvc3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBE
dW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVubmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0
L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9EVUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRl
c3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFydHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBs
bGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRpZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9u
ZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyArPSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9i
dWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYy
NzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxk
LWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCArMSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAor
CisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6
OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFz
c190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitz
dWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOworCitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAw
OworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsK
K1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlvbnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQg
c3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVh
biAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQgZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9
IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBc
JGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVscCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RE
RVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30KKworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygp
Oworc2V0Q29uZmlndXJhdGlvbigpOworY2hkaXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9u
cyA9IFhjb2RlT3B0aW9ucygpOworCitidWlsZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2Mi
LCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7Citi
dWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJL
aXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJvamVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0
aCwgJHByb2plY3QpID0gQF87CisgICAgY2hkaXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0
ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVP
cHRpb25zLCBAQVJHVikpOworICAgIGV4aXQgJHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGly
V2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0
IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2Iw
ZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3
NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFzcy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1w
b3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcwogZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5w
YXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkK
K2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0g
IiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0
cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICBy
ZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAi
d2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAiLS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYg
ZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhj
b2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgiXSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAg
eGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBhdGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQot
ICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBvcy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0
aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExEQi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5
dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5kKGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBM
TERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0gICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExE
Ql9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9fKExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0
IEltcG9ydEVycm9yOgotICAgICAgICBwcmludCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9
Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwgbGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAg
c3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5h
bWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNlZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4
NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgIGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0
b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9zLnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29u
ZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJhbWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAg
IGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2NsYXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFt
ZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRl
c3QucHkKaW5kZXggODkyMWNhOTgyODY0Yjc0MTk0OWIyNjY0NTk4ODEwZTdlYjQzMzAwZi4uMjJl
YjdjZTRhNDU4Y2YwNzJiZTdkMzAxZGYyNTQ3Mjg4NGU4M2JiYyAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0
LnB5CkBAIC02MCw3ICs2MCw4IEBAIGZyb20gLnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUg
dGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVh
Y2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdpdFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRl
IHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGluIFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNw
ZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhp
cyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAo
aS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25j
ZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hlZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAg
LTcwLDcgKzcxLDggQEAgZGVmIHJlbW92ZV9kaXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShw
YXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24g
Mi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1
cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgorIyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0
LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBD
bGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNz
L21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVyCiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9f
YXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9zdm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIy
MDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZmMGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYz
MGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpAQCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1I
b3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3ltYm9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChz
ZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJuIHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgor
ICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9ybS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVy
biAnJworICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bics
ICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwgcmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4
NDhlYTAyZTFmYzQ4MmEwZjJlZi4uYTFhNDU3NzFkZDIyYWNmMmY5ZjRiOWVkMWJlZGMwNDM0OWFh
NmQ1NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAj
IENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUsIEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMzcsMjYgKzM4LDU4IEBAIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVz
dAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3Vy
ZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBF
eGVjdXRpdmUKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtIGltcG9ydCBG
aWxlU3lzdGVtCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQg
U3lzdGVtSG9zdAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCiBmcm9t
IHdlYmtpdHB5LnRlc3QuZmluZGVyIGltcG9ydCBGaW5kZXIKIGZyb20gd2Via2l0cHkudGVzdC5w
cmludGVyIGltcG9ydCBQcmludGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucnVubmVyIGltcG9ydCBS
dW5uZXIsIHVuaXRfdGVzdF9uYW1lCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAorX2hvc3QgPSBTeXN0ZW1Ib3N0KCkKK193ZWJraXRfcm9vdCA9IE5vbmUKKworCitkZWYg
X2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKCk6CisgICAgY29uZmlnID0gQ29uZmlnKF9ob3N0LmV4
ZWN1dGl2ZSwgX2hvc3QuZmlsZXN5c3RlbSkKKyAgICBsbGRiX3dlYmtpdF90ZXN0ZXJfZXhlY3V0
YWJsZSA9IG9zLnBhdGguam9pbihjb25maWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0
X2NvbmZpZ3VyYXRpb24oKSksICdsbGRiV2ViS2l0VGVzdGVyJykKKyAgICByZXR1cm4gb3MucGF0
aC5pc2ZpbGUobGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUpIGFuZCBvcy5hY2Nlc3MobGxk
Yl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUsIG9zLlhfT0spCisKKworZGVmIF9idWlsZF9sbGRi
X3dlYmtpdF90ZXN0ZXIoKToKKyAgICBpZiBub3QgX2hvc3QucGxhdGZvcm0uaXNfbWFjKCk6Cisg
ICAgICAgIF9sb2cuZXJyb3IoJ2xsZGJXZWJLaXRUZXN0ZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLicpCisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGNvbmZpZyA9IENvbmZp
ZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0LmZpbGVzeXN0ZW0pCisgICAgYnVpbGRfbGxkYndlYmtp
dHRlc3RlciA9IG9zLnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdTY3JpcHRzJywg
J2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXInKQorICAgIHJldHVybiBfaG9zdC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoW2J1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25maWd1
cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSldLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUpID09IDAKKwogCiBkZWYgbWFpbigpOgorICAgIGdsb2JhbCBfd2Via2l0X3Jvb3QKICAg
ICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIAogICAgIHVwID0gb3MucGF0aC5kaXJu
YW1lCi0gICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19m
aWxlX18pKSkpKSkKKyAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKSkpKSkKIAogICAgIHRlc3RlciA9IFRlc3RlcigpCi0gICAgdGVzdGVy
LmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwg
J3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMgVGhlcmUgaXMgbm8g
V2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJLaXQyIHVuaXR0
ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSBv
ciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgotICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3Mu
cGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRzJyksICd3
ZWJraXQnKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9v
dCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykKKworICAgIGxsZGJf
cHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0b3J5KCkK
KyAgICBpZiBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6CisgICAgICAgIGlm
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAgICBzeXMu
cGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0ZXN0ZXIuYWRkX3Ry
ZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCisgICAgZWxzZToKKyAgICAgICAgX2xv
Zy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQgcGF0aCB0
byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5KSkKKyAgICAgICAg
d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQogCiAgICAgdGVzdGVyLnNraXAoKCd3
ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSByZWFsbHks
IHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKToKQEAgLTcxLDExICsxMDQsMTEgQEAgZGVmIG1haW4oKToKICAgICAgICAgZnJvbSBnb29n
bGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAgIHVzZV9saWJyYXJ5
KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhfc3lzX3BhdGgoKQot
ICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnVG9vbHMn
LCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9zLnBhdGgu
am9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQogICAgIGVs
c2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIgdGVzdHM7
IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4nKQogCi0g
ICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKKyAgICByZXR1cm4gbm90IHRlc3Rlci5ydW4od2ls
bF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMpCiAKIAog
ZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9uYW1lcywgZmFpbHVy
ZXMsIGVycm9ycyk6CkBAIC0xMzEsNyArMTY0LDcgQEAgY2xhc3MgVGVzdGVyKG9iamVjdCk6CiAK
ICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBkZWYgcnVuKHNl
bGYpOgorICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9RmFsc2Up
OgogICAgICAgICBzZWxmLl9vcHRpb25zLCBhcmdzID0gc2VsZi5fcGFyc2VfYXJncygpCiAgICAg
ICAgIHNlbGYucHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKIApAQCAtMTQyLDkgKzE3
NSw5IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJvcignTm8g
dGVzdHMgdG8gcnVuJykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAgIHJldHVy
biBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5fdGVzdHMo
bmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQogCi0gICAgZGVmIF9ydW5fdGVzdHMo
c2VsZiwgbmFtZXMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxsX3J1bl9s
bGRiX3dlYmtpdF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIFBZVEhPTlBBVEggaXMgc2V0
IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0aW9uYWxf
cGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIApAQCAtMTU0LDYgKzE4NywxNCBAQCBjbGFzcyBU
ZXN0ZXIob2JqZWN0KToKICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGltcG9ydCBh
dXRvaW5zdGFsbF9ldmVyeXRoaW5nCiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhpbmcoKQog
CisgICAgICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgorICAgICAgICAgICAgc2Vs
Zi5wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tpbmcgbGxkYldlYktpdFRlc3RlciAuLi4iKQor
ICAgICAgICAgICAgaWYgbm90IF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAgICAgICAg
ICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0
ZXIgLi4uIikKKyAgICAgICAgICAgICAgICBpZiBub3QgX2J1aWxkX2xsZGJfd2Via2l0X3Rlc3Rl
cigpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gYnVpbGQgbGxk
YldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxseSIpCiAg
ICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKZGlmZiAtLWdpdCBh
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmln
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25m
aWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOGMwZTdkODAzNTI2N2I3ZmU3YjQ3MmMyYzQyYjBiZjZkYjM2OGQ0ZQot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTE5IEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisvLyBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZT8gIi4uLy4uLy4uLy4uLy4uL0ludGVybmFs
L0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKworVVNFX0lOVEVSTkFM
X1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9JTlRFUk5B
TF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAkKEhBVkVf
SU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9JTlRFUk5B
TF9TREspOworCitBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKworQ0xBTkdfQ1hYX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGliYysrOwor
Q0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKK0NMQU5HX1dBUk5fQkxPQ0tfQ0FQVFVSRV9B
VVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZRVM7CitD
TEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NYWDBYX0VY
VEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5HX1dBUk5f
RU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJT04gPSBZ
RVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9OT05fTElU
RVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX09CSkNfTElURVJBTF9DT05W
RVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVTOworQ0xB
TkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElDSU9VU19N
T1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gTk87CitDTEFOR19XQVJO
X19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJFRF9TRUxF
Q1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElfSU1BR0VTID0gTk87CitERUJVR19JTkZPUk1BVElP
Tl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitFTkFCTEVfU1RSSUNUX09CSkNfTVNHU0VORCA9
IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CitHQ0NfREVCVUdHSU5HX1NZ
TUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CitHQ0NfRU5BQkxFX0NQ
UF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJID0gTk87CitHQ0NfRU5BQkxF
X09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJT04gPSBO
TzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJBVEVfREVCVUdHSU5H
X1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKK0dDQ19PQkpDX0NB
TExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIgPSBZRVM7
CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAkKGluaGVy
aXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOworR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVBVF9XQVJO
SU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
R0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsKK0dDQ19XQVJOX0FCT1VU
X01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworR0NDX1dBUk5fTk9O
X1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05fQ09NUEFSRSA9IFlFUzsK
K0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9VTklOSVRJQUxJ
WkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOworR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1XY2FzdC1xdWFsIC1X
Y2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNlbGYgLVdt
aXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XcGFja2VkIC1XcG9p
bnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5ncyAtV2V4
aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xvZ2ljYWwt
Y29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitIRUFERVJfU0VBUkNIX1BBVEhTID0g
JHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlOworCitUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1IkKE1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmllcikpOworVEFSR0VUX01BQ19PU19Y
X1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
Ul8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEzID0gMTAxMzAw
OworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTQgPSAxMDE0MDA7CitUQVJHRVRfTUFD
X09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEwMTUwMDsKKworU1VQUE9SVEVEX1BMQVRGT1JNUyA9
IG1hY29zeDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZFTCwgU1RS
SVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcgdmFyeSBiZXR3ZWVu
IHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2YWx1ZXMg
Zm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJhdGlvbiBp
biB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgorREVCVUdfREVGSU5F
U19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdfREVGSU5F
UyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BUSU1JWkFU
SU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJQU5UKSk7
CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbFtzZGs9bWFjb3N4Kl0gPSAyOworR0NDX09Q
VElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7CisKK1NUUklQX0lOU1RBTExFRF9QUk9EVUNUID0g
JChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8kKENVUlJFTlRfVkFSSUFOVCkpOworU1RSSVBfSU5T
VEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVTOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1RfZGVi
dWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POworREVBRF9DT0RFX1NU
UklQUElOR19ub3JtYWwgPSBZRVM7CitERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFEX0NPREVf
U1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisKK1NES1JPT1QgPSBtYWNvc3guaW50ZXJu
YWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RIRVJfQ1BMVVNQ
TFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJfTERGTEFHUyA9
ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Ub29scy9sbGRi
L2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1YWE2MGVkYzY5MDJiODg2Yzk0OWZlZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMv
RGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKy8vIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgorCitPTkxZ
X0FDVElWRV9BUkNIID0gWUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQo
TUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9ICQo
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRfTUFDX09T
X1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDEx
MDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAwID0gMTAu
MTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEzOworTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDE0MDAgPSAxMC4xNDsKK01BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAwID0gMTAuMTU7CisKK0dDQ19XQVJOX0FCT1VUX0RF
UFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gZHdh
cmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7CitTREtST09U
XyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOworCitXS19DQ0FDSEVf
RElSID0gJChTUkNST09UKS8uLi8uLi8uLi9Ub29scy9jY2FjaGU7CisjaW5jbHVkZSAiLi4vLi4v
Li4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnIGIvVG9v
bHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRUZXN0ZXIu
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWRhNzBmMDhiZTEwMDg1ZWUwMGMzYmIyYzZmNGEyMWEzYjEy
Y2U1ZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAgKzEsMzQgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8g
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RVQ1RfTkFNRSA9ICQo
VEFSR0VUX05BTUUpOworCitSRUxFQVNFX0RFRklORVNfZGVidWcgPSA7CitSRUxFQVNFX0RFRklO
RVNfbm9ybWFsID0gUkVMRUFTRV9XSVRIT1VUX09QVElNSVpBVElPTlM7CitSRUxFQVNFX0RFRklO
RVMgPSAkKFJFTEVBU0VfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfUFJFUFJP
Q0VTU09SX0RFRklOSVRJT05TID0gJChpbmhlcml0ZWQpICQoUkVMRUFTRV9ERUZJTkVTKTsKK0dD
Q19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgPSBOTzsK
K0RFQURfQ09ERV9TVFJJUFBJTkcgPSBOTzsKK09USEVSX0xERkxBR1Nbc2RrPW1hY29zeCpdID0g
JChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgQ29jb2EgLWZvcmNlX2xvYWQgIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9saWJXVEYuYSI7CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0
ZXIvTWFrZWZpbGUgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGUKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDU4YzIxZTFiYTM4N2E4YmE0ZmM0M2YxNDQ0YzM4MGVlYzc5ZWRlOQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZQpAQCAtMCwwICsx
LDIgQEAKK1NDUklQVFNfUEFUSCA9IC4uLy4uL1NjcmlwdHMKK2luY2x1ZGUgLi4vLi4vLi4vTWFr
ZWZpbGUuc2hhcmVkCmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxk
YldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvbGxkYi9sbGRi
V2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5jNTJhMTVlMTI4MzM3YjBiNmU0ODM5NTA5MDU0YWMzZGE3MzE2MjE3Ci0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL2xsZGJXZWJLaXRUZXN0
ZXIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMCwwICsxLDIwNSBAQAorLy8gISQqVVRG
OCokIQoreworCWFyY2hpdmVWZXJzaW9uID0gMTsKKwljbGFzc2VzID0geworCX07CisJb2JqZWN0
VmVyc2lvbiA9IDQ2OworCW9iamVjdHMgPSB7CisKKy8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCisJCTdDQjY4NDRCMUFGQTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDQjY4NDRBMUFGQTc5NzgwMDJC
MzA1QyAvKiBtYWluLmNwcCAqLzsgfTsKKwkJQ0U2QzNBRkYyMEMwQjE3QjAwM0UzM0Q4IC8qIGxp
YldURi5hIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0U2QzNBRkUyMEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5hICovOyB9OworCQlDRTZDM0IwMTIw
QzBDNDQ0MDAzRTMzRDggLyogbGliaWN1Y29yZS5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNkMzQjAwMjBDMEM0NDMwMDNFMzNEOCAvKiBs
aWJpY3Vjb3JlLmR5bGliICovOyB9OworLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCisK
Ky8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk3QzRBQjM5RjFB
RjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRo
ID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAx
OworCQl9OworLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTExQUZDNEQ5QzAwOEMz
MzM4IC8qIEJhc2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTIxQUZDNEQ5QzAwOEMzMzM4IC8qIGxsZGJX
ZWJLaXRUZXN0ZXIueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gbGxkYldlYktpdFRlc3Rlci54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0MyMjI3NTMxQUZDNEQ5QzAwOEMz
MzM4IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDNEFCM0ExMUFGMDI3NkMw
MDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRl
SW5JbmRleCA9IDA7IHBhdGggPSBsbGRiV2ViS2l0VGVzdGVyOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQk3Q0I2ODQ0QTFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBtYWluLmNwcDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OworCQlDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RG
LmEgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBhcmNo
aXZlLmFyOyBwYXRoID0gbGliV1RGLmE7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNF
NkMzQjAwMjBDMEM0NDMwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5bGliICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5keWxp
YiI7IG5hbWUgPSBsaWJpY3Vjb3JlLmR5bGliOyBwYXRoID0gdXNyL2xpYi9saWJpY3Vjb3JlLmR5
bGliOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKKy8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KKworLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQk3QzRBQjM5RTFBRjAyNzZDMDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCUNFNkMzQjAxMjBDMEM0NDQwMDNFMzNEOCAvKiBsaWJpY3Vj
b3JlLmR5bGliIGluIEZyYW1ld29ya3MgKi8sCisJCQkJQ0U2QzNBRkYyMEMwQjE3QjAwM0UzM0Q4
IC8qIGxpYldURi5hIGluIEZyYW1ld29ya3MgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhHcm91cCBzZWN0aW9uICovCisJCTdDMjIy
NzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTExQUZDNEQ5QzAwOEMzMzM4IC8q
IEJhc2UueGNjb25maWcgKi8sCisJCQkJN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERlYnVn
UmVsZWFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxk
YldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29uZmlndXJhdGlv
bnM7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjM5ODFBRjAyNzZD
MDAzRkM4RDEgPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTdD
MjIyNzUwMUFGQzREMEEwMDhDMzMzOCAvKiBDb25maWd1cmF0aW9ucyAqLywKKwkJCQlDRTNGNDQy
NTIwNUM2QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLywKKwkJCQlDRTNGNDQyNDIwNUM2NkQ5
MDA3MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCQk3QzRBQjNBMjFBRjAyNzZDMDAz
RkM4RDEgLyogUHJvZHVjdHMgKi8sCisJCQkpOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKwkJN0M0QUIzQTIxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2R1Y3RzICovID0geworCQkJ
aXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3QzRBQjNBMTFBRjAyNzZDMDAz
RkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLywKKwkJCSk7CisJCQluYW1lID0gUHJvZHVjdHM7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNDIwNUM2NkQ5MDA3
MTk1QjMgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKKwkJQ0UzRjQ0MjUyMDVDNkEwMTAwNzE5NUIzIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUNFNkMzQjAw
MjBDMEM0NDMwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5bGliICovLAorCQkJCUNFNkMzQUZFMjBD
MEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSAqLywKKwkJCSk7CisJCQluYW1lID0gRnJhbWV3b3Jr
czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CisvKiBFbmQgUEJYR3JvdXAgc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQk3QzRBQjNB
MDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLyA9IHsKKwkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjNBODFBRjAy
NzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJN0M0QUIz
OUQxQUYwMjc2QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8sCisJCQkJN0M0QUIzOUUxQUYwMjc2QzAw
M0ZDOEQxIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJN0M0QUIzOUYxQUYwMjc2QzAwM0ZDOEQxIC8q
IENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVu
ZGVuY2llcyA9ICgKKwkJCSk7CisJCQluYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXByb2R1
Y3ROYW1lID0gbGxkYldlYktpdFRlc3RlcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSA3QzRBQjNB
MTFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRlc3RlciAqLzsKKwkJCXByb2R1Y3RUeXBl
ID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CisvKiBFbmQgUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYUHJvamVjdCBzZWN0aW9uICovCisJCTdD
NEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKKwkJCWlzYSA9
IFBCWFByb2plY3Q7CisJCQlhdHRyaWJ1dGVzID0geworCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAw
NzAwOworCQkJfTsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA3QzRBQjM5QzFBRjAyNzZD
MDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJsbGRi
V2ViS2l0VGVzdGVyIiAqLzsKKwkJCWNvbXBhdGliaWxpdHlWZXJzaW9uID0gIlhjb2RlIDMuMiI7
CisJCQlkZXZlbG9wbWVudFJlZ2lvbiA9IEVuZ2xpc2g7CisJCQloYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMDsKKwkJCWtub3duUmVnaW9ucyA9ICgKKwkJCQllbiwKKwkJCSk7CisJCQltYWluR3Jv
dXAgPSA3QzRBQjM5ODFBRjAyNzZDMDAzRkM4RDE7CisJCQlwcm9kdWN0UmVmR3JvdXAgPSA3QzRB
QjNBMjFBRjAyNzZDMDAzRkM4RDEgLyogUHJvZHVjdHMgKi87CisJCQlwcm9qZWN0RGlyUGF0aCA9
ICIiOworCQkJcHJvamVjdFJvb3QgPSAiIjsKKwkJCXRhcmdldHMgPSAoCisJCQkJN0M0QUIzQTAx
QUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8sCisJCQkpOworCQl9OworLyog
RW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTdDNEFCMzlEMUFGMDI3NkMwMDNGQzhEMSAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJN0NCNjg0NEIxQUZBNzk3ODAwMkIzMDVDIC8q
IG1haW4uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CisvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCisvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTdD
NEFCM0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MzFB
RkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlERUJVR19ERUZJTkVTID0gIiQoREVCVUdfREVGSU5FU19kZWJ1ZykiOwor
CQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQx
IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJh
c2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gN0MyMjI3NTMxQUZDNEQ5QzAwOEMzMzM4IC8qIERl
YnVnUmVsZWFzZS54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJ
bmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRl
c3Rlci54Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25S
ZWZlcmVuY2UgPSA3QzIyMjc1MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54
Y2NvbmZpZyAqLzsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQl9OworCQkJbmFtZSA9IFJlbGVh
c2U7CisJCX07CisvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCisvKiBC
ZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOUMxQUYwMjc2QzAw
M0ZDOEQxIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAibGxkYldl
YktpdFRlc3RlciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQk3QzRBQjNBNjFBRjAyNzZDMDAzRkM4RDEgLyogRGVi
dWcgKi8sCisJCQkJN0M0QUIzQTcxQUYwMjc2QzAwM0ZDOEQxIC8qIFJlbGVhc2UgKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIzQTgxQUYwMjc2QzAwM0ZDOEQx
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJsbGRiV2Vi
S2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFCM0E5MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1
ZyAqLywKKwkJCQk3QzRBQjNBQTFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9OworLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qg
c2VjdGlvbiAqLworCX07CisJcm9vdE9iamVjdCA9IDdDNEFCMzk5MUFGMDI3NkMwMDNGQzhEMSAv
KiBQcm9qZWN0IG9iamVjdCAqLzsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktp
dFRlc3Rlci9tYWluLmNwcCBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41YWY4MmZlNThhOGJmZTA5Njg2ZmMzM2RhYjZmYjQ2YjcxNGMyOTAwCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCkBAIC0w
LDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK2V4dGVybiB2b2lkIGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKK3ZvaWQg
YnJlYWtGb3JUZXN0aW5nU3VtbWFyeVByb3ZpZGVycygpIHsgcmV0dXJuOyB9CisKK3RlbXBsYXRl
PHNpemVfdCBsZW5ndGg+CitzdGF0aWMgU3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90
ICgmc3RyaW5nKVtsZW5ndGhdKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBi
dWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGggLSAxKTsKKyAgICBmb3IgKGF1dG8gYyA6IHN0
cmluZykKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KGMpKTsKKyAg
ICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOworfQorCitzdGF0aWMgdm9pZCB0ZXN0U3VtbWFy
eVByb3ZpZGVycygpCit7CisgICAgU3RyaW5nIGFOdWxsU3RyaW5nIHsgIiIgfTsKKyAgICBTdHJp
bmdJbXBsKiBhTnVsbFN0cmluZ0ltcGwgPSBhTnVsbFN0cmluZy5pbXBsKCk7CisKKyAgICBTdHJp
bmcgYW5FbXB0eVN0cmluZyB7ICIiIH07CisgICAgU3RyaW5nSW1wbCogYW5FbXB0eVN0cmluZ0lt
cGwgPSBhbkVtcHR5U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhbjhCaXRTdHJpbmcgeyAi
csOpc3Vtw6kiIH07CisgICAgU3RyaW5nSW1wbCogYW44Qml0U3RyaW5nSW1wbCA9IGFuOEJpdFN0
cmluZy5pbXBsKCk7CisKKyAgICBTdHJpbmcgYTE2Qml0U3RyaW5nID0gdXRmMTZTdHJpbmcodSJc
dTE2ODBDYXBwdWNjaW5vXHUxNjgwIik7CisgICAgU3RyaW5nSW1wbCogYTE2Qml0U3RyaW5nSW1w
bCA9IGExNkJpdFN0cmluZy5pbXBsKCk7CisKKyAgICBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJv
dmlkZXJzKCk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCit7
CisgICAgdGVzdFN1bW1hcnlQcm92aWRlcnMoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlRoaXMg
ZXhlY3V0YWJsZSBkb2VzIG5vdGhpbmcgYW5kIGlzIG9ubHkgbWVhbnQgZm9yIGRlYnVnZ2luZyBs
bGRiX3dlYmtpdC5weS5cbiIpOworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
bGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weSBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRfdW5p
dHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y2MmY0NTYxN2NiZDk1YjIzYjVkNDZkNzhkNmJhZGU2NTRm
YmYzZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3Qu
cHkKQEAgLTAsMCArMSwxMzkgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyAtKi0gY29kaW5n
OiB1dGYtOCAtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisjIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorIyBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworIyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisjIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorIyBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworIyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
aW1wb3J0IGF0ZXhpdAoraW1wb3J0IGxsZGIKK2ltcG9ydCBsbGRiX3dlYmtpdAoraW1wb3J0IG9z
CitpbXBvcnQgc3lzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zyb20gd2Via2l0cHkucG9ydC5jb25m
aWcgaW1wb3J0IENvbmZpZworCisKKyMgV2UgY2FjaGUgdGhlIGxsZGIgZGVidWcgc2Vzc2lvbiBz
dGF0ZSBzbyB0aGF0IHdlIGRvbid0IGNyZWF0ZSBpdCBhZ2FpbiBmb3IgZWFjaCBjYWxsIHRvIGEg
c2VyaWFsX3Rlc3RfIG1ldGhvZC4KKyMgV2Ugc3RvcmUgaXQgaW4gYSBnbG9iYWwgdmFyaWFibGUg
c28gdGhhdCB3ZSBjYW4gZGVsZXRlIHRoaXMgY2FjaGVkIHN0YXRlIG9uIGV4aXQoMykuCisjIEZJ
WE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9ydHMgY2xhc3MgYW5kIG1v
ZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1bGUoKQorIyBhcmUgY2Fs
bGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KK2NhY2hlZF9kZWJ1Z19zZXNzaW9u
ID0gTm9uZQorCisKKyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJraXRweSBzdXBw
b3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3MoKS9zZXRVcE1v
ZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1bGUpLgorQGF0
ZXhpdC5yZWdpc3RlcgorZGVmIGRlc3Ryb3lfY2FjaGVkX2RlYnVnX3Nlc3Npb24oKToKKyAgICBp
ZiBjYWNoZWRfZGVidWdfc2Vzc2lvbjoKKyAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24udGVh
ckRvd24oKQorCisKK2NsYXNzIExMREJEZWJ1Z1Nlc3Npb24ob2JqZWN0KToKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgc2V0dXAoY2xzKToKKyAgICAgICAgTExEQl9XRUJLSVRfVEVTVEVSX05B
TUUgPSAnbGxkYldlYktpdFRlc3RlcicKKyAgICAgICAgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJ
T05fTkFNRSA9ICdicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzJworCisgICAgICAgIGNs
cy5zYkRlYnVnZ2VyID0gbGxkYi5TQkRlYnVnZ2VyLkNyZWF0ZSgpCisgICAgICAgIGNscy5zYkRl
YnVnZ2VyLlNldEFzeW5jKEZhbHNlKQorCisgICAgICAgIGhvc3QgPSBTeXN0ZW1Ib3N0KCkKKyAg
ICAgICAgY29uZmlnID0gQ29uZmlnKGhvc3QuZXhlY3V0aXZlLCBob3N0LmZpbGVzeXN0ZW0pCisg
ICAgICAgIGNscy5sbGRiV2ViS2l0VGVzdGVyRXhlY3V0YWJsZSA9IG9zLnBhdGguam9pbihjb25m
aWcuYnVpbGRfZGlyZWN0b3J5KGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSksIExMREJf
V0VCS0lUX1RFU1RFUl9OQU1FKQorCisgICAgICAgIGNscy5zYlRhcmdldCA9IGNscy5zYkRlYnVn
Z2VyLkNyZWF0ZVRhcmdldChzdHIoY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVjdXRhYmxlKSkKKyAg
ICAgICAgYXNzZXJ0IGNscy5zYlRhcmdldAorICAgICAgICBjbHMuc2JUYXJnZXQuQnJlYWtwb2lu
dENyZWF0ZUJ5TmFtZShCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FLCBjbHMuc2JUYXJn
ZXQuR2V0RXhlY3V0YWJsZSgpLkdldEZpbGVuYW1lKCkpCisKKyAgICAgICAgYXJndiA9IE5vbmUK
KyAgICAgICAgZW52cCA9IE5vbmUKKyAgICAgICAgY2xzLnNiUHJvY2VzcyA9IGNscy5zYlRhcmdl
dC5MYXVuY2hTaW1wbGUoYXJndiwgZW52cCwgb3MuZ2V0Y3dkKCkpCisgICAgICAgIGFzc2VydCBj
bHMuc2JQcm9jZXNzCisgICAgICAgIGFzc2VydCBjbHMuc2JQcm9jZXNzLkdldFN0YXRlKCkgPT0g
bGxkYi5lU3RhdGVTdG9wcGVkCisKKyAgICAgICAgY2xzLnNiVGhyZWFkID0gY2xzLnNiUHJvY2Vz
cy5HZXRUaHJlYWRBdEluZGV4KDApCisgICAgICAgIGFzc2VydCBjbHMuc2JUaHJlYWQKKworICAg
ICAgICAjIEZyYW1lIDAgaXMgdGhlIGZ1bmN0aW9uIHdpdGggbmFtZSBCUkVBS19GT1JfVEVTVElO
R19GVU5DVElPTl9OQU1FLiBXZSB3YW50IHRoZSBmcmFtZSBvZiB0aGUgY2FsbGVyIG9mCisgICAg
ICAgICMgQlJFQUtfRk9SX1RFU1RJTkdfRlVOQ1RJT05fTkFNRSBiZWNhdXNlIGl0IGhhcyBhbGwg
dGhlIGludGVyZXN0aW5nIGxvY2FsIHZhcmlhYmxlcyB3ZSB3YW50IHRvIHRlc3QuCisgICAgICAg
IGNscy5zYkZyYW1lID0gY2xzLnNiVGhyZWFkLkdldEZyYW1lQXRJbmRleCgxKQorICAgICAgICBh
c3NlcnQgY2xzLnNiRnJhbWUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bihj
bHMpOgorICAgICAgICBjbHMuc2JQcm9jZXNzLktpbGwoKQorCisKK2NsYXNzIFRlc3RTdW1tYXJ5
UHJvdmlkZXJzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYg
c2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBnbG9iYWwgY2FjaGVkX2RlYnVnX3Nlc3Npb24KKyAg
ICAgICAgaWYgbm90IGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAgICAgICAgY2FjaGVkX2Rl
YnVnX3Nlc3Npb24gPSBMTERCRGVidWdTZXNzaW9uKCkKKyAgICAgICAgICAgIGNhY2hlZF9kZWJ1
Z19zZXNzaW9uLnNldHVwKCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBfc2JGcmFtZShzZWxm
KToKKyAgICAgICAgcmV0dXJuIGNhY2hlZF9kZWJ1Z19zZXNzaW9uLnNiRnJhbWUKKworICAgICMg
VGhlIExMREIgUHl0aG9uIG1vZHVsZSBkb2VzIG5vdCB3b3JrIHdpdGggUHl0aG9uIG11bHRpcHJv
Y2Vzc2luZyBhbmQgY2F1c2VzIGVycm9ycyBvZiB0aGUgZm9ybToKKyAgICAjICAgICBvYmpjWzc2
Nzk0XTogK1tfX01EUXVlcnkgaW5pdGlhbGl6ZV0gbWF5IGhhdmUgYmVlbiBpbiBwcm9ncmVzcyBp
biBhbm90aGVyIHRocmVhZCB3aGVuIGZvcmsoKSB3YXMgY2FsbGVkLgorICAgICMgICAgICAgICAg
ICAgICAgICBXZSBjYW5ub3Qgc2FmZWx5IGNhbGwgaXQgb3IgaWdub3JlIGl0IGluIHRoZSBmb3Jr
KCkgY2hpbGQgcHJvY2Vzcy4gQ3Jhc2hpbmcgaW5zdGVhZC4KKyAgICAjIFNvLCB3ZSBydW4gdGhl
IGZvbGxvd2luZyB0ZXN0cyBzZXJpYWxseS4KKworICAgICMgTUFSSzogV1RGU3RyaW5nSW1wbF9T
dW1tYXJ5UHJvdmlkZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmlu
Z0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5
ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFt
ZS5GaW5kVmFyaWFibGUoJ2FOdWxsU3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdW1tYXJ5LCAieyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcn
IH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
X2VtcHR5X3N0cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbkVt
cHR5U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAi
eyBsZW5ndGggPSAwLCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNl
cmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYp
OgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJv
dmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuOEJpdFN0cmluZ0ltcGwnKSwge30p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgaXM4Yml0
ID0gMSwgY29udGVudHMgPSAnclxceGU5c3VtXFx4ZTknIH0iKQorCisgICAgZGVmIHNlcmlhbF90
ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAg
ICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVy
KHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhMTZCaXRTdHJpbmdJbXBsJyksIHt9KQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5ndGggPSAxMywgaXM4Yml0ID0g
MCwgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQorCisgICAg
IyBNQVJLOiBXVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyIHRlc3QgY2FzZXMKKworICAgIGRlZiBz
ZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX251bGxfc3RyaW5nKHNlbGYpOgor
ICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihz
ZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmcnKSwge30pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29udGVudHMgPSAnJyB9IikK
KworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0
cmluZyhzZWxmKToKKyAgICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1t
YXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmcnKSwg
e30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gMCwgY29u
dGVudHMgPSAnJyB9IikKKworICAgIGRlZiBzZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVBy
b3ZpZGVyXzhiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQu
V1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYW44
Qml0U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxl
bmd0aCA9IDgsIGNvbnRlbnRzID0gJ3JcXHhlOXN1bVxceGU5JyB9IikKKworICAgIGRlZiBzZXJp
YWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzE2Yml0X3N0cmluZyhzZWxmKToKKyAg
ICAgICAgc3VtbWFyeSA9IGxsZGJfd2Via2l0LldURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXIoc2Vs
Zi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2ExNkJpdFN0cmluZycpLCB7fSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdW1tYXJ5LCB1InsgbGVuZ3RoID0gMTMsIGNvbnRlbnRzID0gJ1xcdTE2
ODBDYXBwdWNjaW5vXFx1MTY4MFxceDAwJyB9IikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343791</attachid>
            <date>2018-06-27 21:17:40 -0700</date>
            <delta_ts>2018-06-27 21:17:40 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-183744-20180627211739.patch</filename>
            <type>text/plain</type>
            <size>45941</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzMjk4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWYzMzc4Y2ZiYzRlMWU3MDhlMGQyYjdlOWUzOTkyMDFi
M2RmYWIxNC4uZTM3MDk3ZDAxMDc5YmIxZTE4YzFmMjViMDg5YzJiZjM1YmNkMGI1YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc5
IEBACisyMDE4LTA2LTI3ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAg
ICAgICBBZGQgc29tZSB0ZXN0cyBmb3IgbGxkYl93ZWJraXQucHkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4Mzc0NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAgICAgQWRkcyBzb21lIHRlc3RzIHRvIGVu
c3VyZSB3ZSBkbyBub3QgcmVncmVzcyBMTERCIHByZXR0eS1wcmludGluZyBvZiBXVEY6OlN0cmlu
Z0ltcGwKKyAgICAgICAgYW5kIFdURjo6U3RyaW5nIG9iamVjdHMuCisKKyAgICAgICAgVGhlIHRl
c3RzIG1ha2UgdXNlIG9mIHRoZSBMTERCIFB5dGhvbiBBUEkgKGxsZGIucHkpIGFuZCBhIHNpbXBs
ZSBkZWJ1Zy1idWlsdCB0ZXN0CisgICAgICAgIHByb2dyYW0sIGxsZGJXZWJLaXRUZXN0ZXIsIHRv
IHJ1bi4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nIGxsZGJXZWJLaXRUZXN0ZXIK
KyAgICAgICAgb24gTWFjLgorCisgICAgICAgICogTWFrZWZpbGU6IEJ1aWxkIHRoZSBzaW1wbGUg
dGVzdCB0b29sIGxsZGJXZWJLaXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAqIFNjcmlwdHMvYnVp
bGQtbGxkYndlYmtpdHRlc3RlcjogQWRkZWQuCisgICAgICAgIChidWlsZFByb2plY3RPckRpZSk6
CisgICAgICAgICogU2NyaXB0cy9kdW1wLWNsYXNzLWxheW91dDogRXh0cmFjdCBsb2dpYyB0byBj
b21wdXRlIHRoZSBwYXRoIHRvIHRoZSBMTERCIFB5dGhvbiBtb2R1bGUKKyAgICAgICAgZnJvbSBo
ZXJlIHRvIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9zeXN0ZW1ob3N0LnB5IHNvIHRo
YXQgaXQgY2FuIHVzZWQgYnkgYm90aAorICAgICAgICB0aGlzIHNjcmlwdCBhbmQgbGxkYi9sbGRi
X3dlYmtpdF91bml0dGVzdC5weS4gQWxzbyBpbXBvcnQgdGhlIGxsZGIgbW9kdWxlIGF0IHRoZSB0
b3Agb2YKKyAgICAgICAgdGhlIGZpbGUgYW5kIHRha2UgYWR2YW50YWdlIG9mIFB5dGhvbidzIGRl
ZmF1bHQgZXJyb3Igc2VtYW50aWNzIHRvIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiB0
aGUgaW1wb3J0IGZhaWxzIGluc3RlYWQgb2YgaGFuZGxpbmcgaXQgb3Vyc2VsZi4gVGhpcyBoYXMg
dGhlIHNpZGUgZWZmZWN0IHRoYXQgd2UKKyAgICAgICAgbm93IGFsd2F5cyBpbXBvcnQgdGhlIExM
REIgUHl0aG9uIG1vZHVsZSBldmVuIGlmIHRoaXMgc2NyaXB0IGlzIGludm9rZWQgd2l0aCAtLWhl
bHAuCisgICAgICAgIElmIHRoaXMgdHVybnMgb3V0IHRvIGJlIGEgc2lnbmlmaWNhbnQgYW5ub3lh
bmNlIHRoZW4gd2UgY2FuIGxvb2sgdG8gZHluYW1pY2FsbHkgaW1wb3J0CisgICAgICAgIHRoZSBt
b2R1bGUgYXMgd2UgZGlkIGJlZm9yZSB0aGlzIGNoYW5nZS4KKyAgICAgICAgKHdlYmtpdF9idWls
ZF9kaXIpOgorICAgICAgICAobWFpbik6CisgICAgICAgIChkZXZlbG9wZXJfZGlyKTogRGVsZXRl
ZC4KKyAgICAgICAgKGltcG9ydF9sbGRiKTogRGVsZXRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5OiBVcGRhdGUgRklYTUUg
Y29tbWVudCB0byByZWZsZWN0CisgICAgICAgIHRoYXQgZmFjdCB0aGF0IHRlc3Qtd2Via2l0cHkg
ZG9lcyBub3Qgc3VwcG9ydCBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzLiBUaGlzIGlzIGJlY2F1
c2UKKyAgICAgICAgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgaW1wbGVtZW50cyBwYXJhbGxlbGlz
bSBieSBicmVha2luZyBkb3duIGV4aXN0aW5nIHRlc3QgY2xhc3NlcworICAgICAgICBpbnRvIGlu
ZGl2aWR1YWwgdGVzdCBtZXRob2RzIGl0c2VsZiBhbmQgaGF2aW5nIGVhY2ggd29ya2VyIHJ1biBl
eGFjdGx5IG9uZSB0ZXN0IG1ldGhvZCAodmlhCisgICAgICAgIHVuaXR0ZXN0LlRlc3RMb2FkZXIu
bG9hZFRlc3RzRnJvbU5hbWUoKSkgYXQgYSB0aW1lLiBBcyBhIHJlc3VsdCBvZiB0aGlzIHJlb3Jn
YW5pemF0aW9uLAorICAgICAgICBzZXRVcE1vZHVsZSgpL3NldFVwQ2xhc3MoKSBhcmUgY2FsbGVk
IGZvciBlYWNoIHRlc3QgbWV0aG9kIGFzIG9wcG9zZWQgdG8gb25jZSBwZXIgdGVzdAorICAgICAg
ICBjbGFzcy90ZXN0IG1vZHVsZS4KKyAgICAgICAgKHJlbW92ZV9kaXIpOiBEaXR0by4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weToKKyAgICAg
ICAgKFN5c3RlbUhvc3QpOgorICAgICAgICAoU3lzdGVtSG9zdC5wYXRoX3RvX2xsZGJfcHl0aG9u
X2RpcmVjdG9yeSk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGVzdC9tYWlu
LnB5OgorICAgICAgICAoX2ZpbmRfbGxkYl93ZWJraXRfdGVzdGVyKTogUmV0dXJucyB3aGV0aGVy
IHRoZXJlIGV4aXN0cyBhIERlYnVnIG9yIFJlbGVhc2UtYnVpbHQgbGxkYldlYktpdFRlc3Rlci4K
KyAgICAgICAgKF9idWlsZF9sbGRiX3dlYmtpdF90ZXN0ZXIpOiBCdWlsZHMgbGxkYldlYktpdFRl
c3Rlci4gRm9yIG5vdywgd2Ugb25seSBzdXBwb3J0IGJ1aWxkaW5nCisgICAgICAgIGxsZGJXZWJL
aXRUZXN0ZXIgb24gTWFjLgorICAgICAgICAobWFpbik6IEFkZCBUb29scy9sbGRiIHRvIHRoZSB0
ZXN0IHNlYXJjaCBwYXRoIGlmIHRoZSBwbGF0Zm9ybSBoYXMgbGxkYi5weS4KKyAgICAgICAgKFRl
c3Rlci5ydW4pOiBQYXNzIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHdlIHdpbGwgcnVuIHRoZSBs
bGRiX3dlYmtpdCB1bml0IHRlc3RzLgorICAgICAgICAoVGVzdGVyLl9ydW5fdGVzdHMpOiBNb2Rp
ZmllZCB0byB0YWtlIGEgYm9vbGVhbiBhcyB0byB3aGV0aGVyIHRvIHJ1biB0aGUgbGxkYl93ZWJr
aXQgdW5pdCB0ZXN0cy4KKyAgICAgICAgSWYgd2Ugd2lsbCBydW4gdGhlc2UgdGVzdHMgdGhlbiBi
dWlsZCBsbGRiV2ViS2l0VGVzdGVyIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIGJ1aWx0IGFz
IHRoZQorICAgICAgICB1bml0IHRlc3RzIGRlcGVuZCBvbiB0aGlzIHByb2dyYW0uCisgICAgICAg
ICogbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWc6IEFk
ZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1
Z1JlbGVhc2UueGNjb25maWc6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIvTWFrZWZpbGU6IEFkZGVkLgorICAgICAgICAqIGxs
ZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEFkZGVkLgorICAgICAgICAqIGxsZGIvbGxkYldlYktpdFRlc3Rlci9tYWluLmNwcDog
QWRkZWQuCisgICAgICAgIChicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKHV0ZjE2U3RyaW5nKToKKyAgICAgICAgKHRlc3RTdW1tYXJ5UHJvdmlkZXJzKToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIGxsZGIvbGxkYl93ZWJraXRfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoZGVzdHJveV9jYWNoZWRfZGVidWdfc2Vzc2lvbik6CisgICAgICAgIChMTERC
RGVidWdTZXNzaW9uKToKKyAgICAgICAgKExMREJEZWJ1Z1Nlc3Npb24uc2V0dXApOgorICAgICAg
ICAoTExEQkRlYnVnU2Vzc2lvbi50ZWFyRG93bik6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3Zp
ZGVycyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXRVcENsYXNzKToKKyAgICAg
ICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLl9zYkZyYW1lKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5
UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX251bGxf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ0ltcGxfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl84
Yml0X3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcl8xNmJpdF9zdHJpbmcpOgorICAgICAgICAoVGVz
dFN1bW1hcnlQcm92aWRlcnMuc2VyaWFsX3Rlc3RfV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcl9u
dWxsX3N0cmluZyk6CisgICAgICAgIChUZXN0U3VtbWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyX2VtcHR5X3N0cmluZyk6CisgICAgICAgIChUZXN0U3Vt
bWFyeVByb3ZpZGVycy5zZXJpYWxfdGVzdF9XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyXzhiaXRf
c3RyaW5nKToKKyAgICAgICAgKFRlc3RTdW1tYXJ5UHJvdmlkZXJzLnNlcmlhbF90ZXN0X1dURlN0
cmluZ19TdW1tYXJ5UHJvdmlkZXJfMTZiaXRfc3RyaW5nKToKKwogMjAxOC0wNi0yNyAgQWRhbSBC
YXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBGdWNoc2lhIHN1cHBvcnQg
dG8gYnVpbGQtanNjCmRpZmYgLS1naXQgYS9Ub29scy9NYWtlZmlsZSBiL1Rvb2xzL01ha2VmaWxl
CmluZGV4IDZhMWY3N2NlNjM1NzNlNWZlODkxMDM0NzY4MjUzNzMwMDQ1YjkyNDMuLmNhMDdmMTg4
MWJjOTFmZThlNTIyZDY2ZTNkZjdiODFmNzU4MGY0NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01ha2Vm
aWxlCisrKyBiL1Rvb2xzL01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQCBNT0RVTEVTID0gRHVtcFJl
bmRlclRyZWUgV2ViS2l0VGVzdFJ1bm5lciBNaW5pQnJvd3NlciAuLi9Tb3VyY2UvVGhpcmRQYXJ0
eS9ndGVzdAogCiBpZm5lcSAoLCQoU0RLUk9PVCkpCiAJaWZlcSAoLCQoZmluZHN0cmluZyBtYWNv
c3gsJChTREtST09UKSkpCi0JCU1PRFVMRVMgPSBEdW1wUmVuZGVyVHJlZSBXZWJLaXRUZXN0UnVu
bmVyIC4uL1NvdXJjZS9UaGlyZFBhcnR5L2d0ZXN0L3hjb2RlIFRlc3RXZWJLaXRBUEkKKwkJTU9E
VUxFUyA9IER1bXBSZW5kZXJUcmVlIFdlYktpdFRlc3RSdW5uZXIgLi4vU291cmNlL1RoaXJkUGFy
dHkvZ3Rlc3QveGNvZGUgVGVzdFdlYktpdEFQSSBsbGRiL2xsZGJXZWJLaXRUZXN0ZXIKIAllbmRp
ZgogCWlmbmVxICgsJChmaW5kc3RyaW5nIGlwaG9uZSwkKFNES1JPT1QpKSkKIAkJTU9EVUxFUyAr
PSBNb2JpbGVNaW5pQnJvd3NlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRi
d2Via2l0dGVzdGVyIGIvVG9vbHMvU2NyaXB0cy9idWlsZC1sbGRid2Via2l0dGVzdGVyCm5ldyBm
aWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjc5ZDljNmE2ZWM5NTAwZWIwMjBlMjYyNzA3ZDJhMzE1YTU4ZDE2NWUKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9TY3JpcHRzL2J1aWxkLWxsZGJ3ZWJraXR0ZXN0ZXIKQEAgLTAsMCAr
MSw3NiBAQAorIyEvdXNyL2Jpbi9lbnYgcGVybAorCisjIENvcHlyaWdodCAoQykgMjAxNC0yMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIworIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIyAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisjICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisjICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisjIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisjIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisjIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorIyBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCit1c2Ugc3Ry
aWN0OwordXNlIHdhcm5pbmdzOwordXNlIEZpbGU6OkJhc2VuYW1lOwordXNlIEZpbmRCaW47Cit1
c2UgR2V0b3B0OjpMb25nIHF3KDpjb25maWcgcGFzc190aHJvdWdoKTsKK3VzZSBsaWIgJEZpbmRC
aW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOworCitzdWIgYnVpbGRQcm9qZWN0T3JEaWUoJCQpOwor
CitteSAkc2hvd0hlbHA7CitteSAkY2xlYW4gPSAwOworCitteSAkcHJvZ3JhbU5hbWUgPSBiYXNl
bmFtZSgkMCk7CitteSAkdXNhZ2UgPSA8PEVPRjsKK1VzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHRvIHBhc3MgdG8gYnVpbGQgc3lzdGVtXQorICAtLWhlbHAgICAgICAgIFNo
b3cgdGhpcyBoZWxwIG1lc3NhZ2UKKyAgLS1jbGVhbiAgICAgICBDbGVhbiB1cCB0aGUgYnVpbGQg
ZGlyZWN0b3J5CitFT0YKKworbXkgJHJlc3VsdCA9IEdldE9wdGlvbnMoCisgICAgImhlbHAiID0+
IFwkc2hvd0hlbHAsCisgICAgImNsZWFuIiA9PiBcJGNsZWFuLAorKTsKKworaWYgKCRzaG93SGVs
cCB8fCAhJHJlc3VsdCkgeworICAgcHJpbnQgU1RERVJSICR1c2FnZTsKKyAgIGV4aXQgMTsKK30K
KworY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZygpOworc2V0Q29uZmlndXJhdGlvbigpOworY2hk
aXJXZWJLaXQoKTsKKworbXkgQHhjb2RlT3B0aW9ucyA9IFhjb2RlT3B0aW9ucygpOworCitidWls
ZFByb2plY3RPckRpZSgiU291cmNlL2JtYWxsb2MiLCAiYm1hbGxvYyIpOworYnVpbGRQcm9qZWN0
T3JEaWUoIlNvdXJjZS9XVEYiLCAiV1RGIik7CitidWlsZFByb2plY3RPckRpZSgiVG9vbHMvbGxk
Yi9sbGRiV2ViS2l0VGVzdGVyIiwgImxsZGJXZWJLaXRUZXN0ZXIiKTsKKworc3ViIGJ1aWxkUHJv
amVjdE9yRGllKCQkKQoreworICAgIG15ICgkcGF0aCwgJHByb2plY3QpID0gQF87CisgICAgY2hk
aXIoJHBhdGgpIG9yIGRpZTsKKyAgICAkcmVzdWx0ID0gZXhpdFN0YXR1cyhidWlsZFhDb2RlUHJv
amVjdCgkcHJvamVjdCwgJGNsZWFuLCBAeGNvZGVPcHRpb25zLCBAQVJHVikpOworICAgIGV4aXQg
JHJlc3VsdCBpZiAkcmVzdWx0OworICAgIGNoZGlyV2ViS2l0KCk7Cit9CmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0IGIvVG9vbHMvU2NyaXB0cy9kdW1wLWNsYXNz
LWxheW91dAppbmRleCBkNDE4NjQ0NTU4MzZlM2IwZTJiMDY1NDZiOWJhYjYyNjY4NTg2ZWM1Li42
ZjZlYmE0MmRlODE3NTM2MmIyYzIxOTc3OTE2ZDg3NGI1NTA0Y2Q1IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL2R1bXAtY2xhc3MtbGF5b3V0CisrKyBiL1Rvb2xzL1NjcmlwdHMvZHVtcC1jbGFz
cy1sYXlvdXQKQEAgLTMxLDYgKzMxLDkgQEAgaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2Vzcwog
ZnJvbSBzZXRzIGltcG9ydCBTZXQKIAorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3Rl
bWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK3N5cy5wYXRoLmFwcGVuZChTeXN0ZW1Ib3N0KCkucGF0
aF90b19sbGRiX3B5dGhvbl9kaXJlY3RvcnkoKSkKK2ltcG9ydCBsbGRiCiAKIGZyYW1ld29yayA9
ICJXZWJDb3JlIgogYnVpbGRfZGlyZWN0b3J5ID0gIiIKQEAgLTQxLDIxICs0NCw2IEBAIGRlZiB3
ZWJraXRfYnVpbGRfZGlyKCk6CiAgICAgc2NyaXB0cGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5w
YXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRw
dXQoW29zLnBhdGguam9pbihzY3JpcHRwYXRoLCAid2Via2l0LWJ1aWxkLWRpcmVjdG9yeSIpLCAi
LS10b3AtbGV2ZWwiXSkuc3RyaXAoKQogCi1kZWYgZGV2ZWxvcGVyX2RpcigpOgotICAgIHJldHVy
biBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbInhjb2RlLXNlbGVjdCIsICItLXByaW50LXBhdGgi
XSkKLQotZGVmIGltcG9ydF9sbGRiKCk6Ci0gICAgeGNvZGVfY29udGVudHNfcGF0aCA9IG9zLnBh
dGguc3BsaXQoZGV2ZWxvcGVyX2RpcigpKVswXQotICAgIGxsZGJfZnJhbWV3b3JrX3BhdGggPSBv
cy5wYXRoLmpvaW4oeGNvZGVfY29udGVudHNfcGF0aCwgIlNoYXJlZEZyYW1ld29ya3MiLCAiTExE
Qi5mcmFtZXdvcmsiLCAiUmVzb3VyY2VzIiwgIlB5dGhvbiIpCi0gICAgc3lzLnBhdGguYXBwZW5k
KGxsZGJfZnJhbWV3b3JrX3BhdGgpCi0KLSAgICBMTERCX01PRFVMRV9OQU1FID0gImxsZGIiCi0g
ICAgdHJ5OgotICAgICAgICBnbG9iYWxzKClbTExEQl9NT0RVTEVfTkFNRV0gPSBfX2ltcG9ydF9f
KExMREJfTU9EVUxFX05BTUUpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwcmlu
dCAiRmFpbGVkIHRvIGltcG9ydCB7fSBmcm9tIHt9Ii5mb3JtYXQoTExEQl9NT0RVTEVfTkFNRSwg
bGxkYl9mcmFtZXdvcmtfcGF0aCkKLSAgICAgICAgc3lzLmV4aXQoMSkKLQogZGVmIHZlcmlmeV90
eXBlKHRhcmdldCwgdHlwZSk6CiAgICAgdHlwZW5hbWUgPSB0eXBlLkdldE5hbWUoKQogICAgIHNl
ZW5PZmZzZXQgPSBTZXQoKQpAQCAtMTk2LDcgKzE4NCw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAg
IGJ1aWxkX2RpciA9IGFyZ3MuYnVpbGRfZGlyZWN0b3J5CiAKICAgICB0YXJnZXRfcGF0aCA9IG9z
LnBhdGguam9pbihidWlsZF9kaXIsIGFyZ3MuY29uZmlnLCBhcmdzLmZyYW1ld29yayArICIuZnJh
bWV3b3JrIiwgYXJncy5mcmFtZXdvcmspOwotICAgIGltcG9ydF9sbGRiKCkKICAgICBkdW1wX2Ns
YXNzKHRhcmdldF9wYXRoLCBhcmdzLmNsYXNzbmFtZSwgYXJncy5hcmNoKQogCiBpZiBfX25hbWVf
XyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtL3NjbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS9zY21fdW5pdHRlc3QucHkKaW5kZXggZDczMDM5Y2VkN2M1MWQ5
ODc0OGY3OGQ2NTdiMzU2ZTM2MGI0NzljNC4uZGYzMTYxODQ2ZmE5ZjIyZWYyYWQxNDJkNTM4ZTRl
NzFmZTA5NTc2NiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtL3NjbV91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20vc2NtX3VuaXR0ZXN0LnB5CkBAIC02MSw3ICs2MSw4IEBAIGZyb20g
LnN2biBpbXBvcnQgU1ZOCiAKICMgV2UgY2FjaGUgdGhlIG1vY2sgU1ZOIHJlcG8gc28gdGhhdCB3
ZSBkb24ndCBjcmVhdGUgaXQgYWdhaW4gZm9yIGVhY2ggY2FsbCB0byBhbiBTVk5UZXN0IG9yIEdp
dFRlc3QgdGVzdF8gbWV0aG9kLgogIyBXZSBzdG9yZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBz
byB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNoZWQgcmVwbyBvbiBleGl0KDMpLgotIyBGSVhN
RTogUmVtb3ZlIHRoaXMgb25jZSB3ZSBtaWdyYXRlIHRvIFB5dGhvbiAyLjcuIFVuaXR0ZXN0IGlu
IFB5dGhvbiAyLjcgc3VwcG9ydHMgbW9kdWxlLXNwZWNpZmljIHNldHVwIGFuZCB0ZWFyZG93biBm
dW5jdGlvbnMuCisjIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIHRlc3Qtd2Via2l0cHkgc3VwcG9y
dHMgY2xhc3MgYW5kIG1vZHVsZSBmaXh0dXJlcyAoaS5lLiBzZXRVcENsYXNzKCkvc2V0VXBNb2R1
bGUoKQorIyBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBwZXIgY2xhc3MvbW9kdWxlKS4KIGNhY2hl
ZF9zdm5fcmVwb19wYXRoID0gTm9uZQogCiAKQEAgLTcxLDcgKzcyLDggQEAgZGVmIHJlbW92ZV9k
aXIocGF0aCk6CiAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQogCiAKLSMgRklYTUU6IFJlbW92ZSB0
aGlzIG9uY2Ugd2UgbWlncmF0ZSB0byBQeXRob24gMi43LiBVbml0dGVzdCBpbiBQeXRob24gMi43
IHN1cHBvcnRzIG1vZHVsZS1zcGVjaWZpYyBzZXR1cCBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLgor
IyBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFu
ZCBtb2R1bGUgZml4dHVyZXMgKGkuZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJl
IGNhbGxlZCBleGFjdGx5IG9uY2UgcGVyIGNsYXNzL21vZHVsZSkuCiBAYXRleGl0LnJlZ2lzdGVy
CiBkZWYgZGVsZXRlX2NhY2hlZF9tb2NrX3JlcG9fYXRfZXhpdCgpOgogICAgIGlmIGNhY2hlZF9z
dm5fcmVwb19wYXRoOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3N5c3RlbWhvc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0
ZW0vc3lzdGVtaG9zdC5weQppbmRleCBhMTUzNDIyMDFkODMzNDE0NzMxZWJkMGY3NmY3MTc5YTZm
MGJkNmUzLi4xY2EyOTI4NDQ5ODI0YzJmMGZjMWYzMGNhZTVlZTEyMWE4MzRiM2Q5IDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vc3lzdGVtaG9zdC5weQpA
QCAtNDcsMyArNDcsOCBAQCBjbGFzcyBTeXN0ZW1Ib3N0KG9iamVjdCk6CiAKICAgICBkZWYgc3lt
Ym9saWNhdGVfY3Jhc2hfbG9nX2lmX25lZWRlZChzZWxmLCBwYXRoKToKICAgICAgICAgcmV0dXJu
IHNlbGYuZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShwYXRoKQorCisgICAgZGVmIHBhdGhfdG9f
bGxkYl9weXRob25fZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5wbGF0Zm9y
bS5pc19tYWMoKToKKyAgICAgICAgICAgIHJldHVybiAnJworICAgICAgICByZXR1cm4gc2VsZi5l
eGVjdXRpdmUucnVuX2NvbW1hbmQoWyd4Y3J1bicsICdsbGRiJywgJy0tcHl0aG9uLXBhdGgnXSwg
cmV0dXJuX3N0ZGVycj1GYWxzZSkucnN0cmlwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGVzdC9tYWluLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90ZXN0L21haW4u
cHkKaW5kZXggNWZhY2FhNTQ2ZGVlOTY1OGJhYzk4NDhlYTAyZTFmYzQ4MmEwZjJlZi4uNzIzN2E2
MDhiZDE0MWE0NGUwYTZkNjE4MTBhMTQwM2VkMGU0Y2IyYSAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90ZXN0L21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
ZXN0L21haW4ucHkKQEAgLTEsNSArMSw2IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUs
IEluYy4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjamVyZG9uZWtAd2Vi
a2l0Lm9yZykKKyMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsMjYgKzM4LDY0IEBAIGlt
cG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0ubG9ndXRpbHMgaW1wb3J0IGNvbmZpZ3VyZV9sb2dnaW5nCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlwdEVycm9yCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZmlsZXN5c3RlbSBpbXBvcnQgRmlsZVN5c3RlbQorZnJv
bSB3ZWJraXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3QgaW1wb3J0IFN5c3RlbUhvc3QKK2Zy
b20gd2Via2l0cHkucG9ydC5jb25maWcgaW1wb3J0IENvbmZpZwogZnJvbSB3ZWJraXRweS50ZXN0
LmZpbmRlciBpbXBvcnQgRmluZGVyCiBmcm9tIHdlYmtpdHB5LnRlc3QucHJpbnRlciBpbXBvcnQg
UHJpbnRlcgogZnJvbSB3ZWJraXRweS50ZXN0LnJ1bm5lciBpbXBvcnQgUnVubmVyLCB1bml0X3Rl
c3RfbmFtZQogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKK19ob3N0ID0g
U3lzdGVtSG9zdCgpCitfd2Via2l0X3Jvb3QgPSBOb25lCisKKworZGVmIF9maW5kX2xsZGJfd2Vi
a2l0X3Rlc3RlcigpOgorICAgIGNvbmZpZyA9IENvbmZpZyhfaG9zdC5leGVjdXRpdmUsIF9ob3N0
LmZpbGVzeXN0ZW0pCisgICAgbGxkYl93ZWJraXRfdGVzdGVyX2V4ZWN1dGFibGUgPSBvcy5wYXRo
LmpvaW4oY29uZmlnLmJ1aWxkX2RpcmVjdG9yeShjb25maWcuZGVmYXVsdF9jb25maWd1cmF0aW9u
KCkpLCAnbGxkYldlYktpdFRlc3RlcicpCisgICAgcmV0dXJuIG9zLnBhdGguaXNmaWxlKGxsZGJf
d2Via2l0X3Rlc3Rlcl9leGVjdXRhYmxlKSBhbmQgb3MuYWNjZXNzKGxsZGJfd2Via2l0X3Rlc3Rl
cl9leGVjdXRhYmxlLCBvcy5YX09LKQorCisKK2RlZiBfYnVpbGRfbGxkYl93ZWJraXRfdGVzdGVy
KCk6CisgICAgaWYgbm90IF9ob3N0LnBsYXRmb3JtLmlzX21hYygpOgorICAgICAgICBfbG9nLmVy
cm9yKCdsbGRiV2ViS2l0VGVzdGVyIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4n
KQorICAgICAgICByZXR1cm4gRmFsc2UKKyAgICBjb25maWcgPSBDb25maWcoX2hvc3QuZXhlY3V0
aXZlLCBfaG9zdC5maWxlc3lzdGVtKQorICAgIGJ1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIgPSBvcy5w
YXRoLmpvaW4oX3dlYmtpdF9yb290LCAnVG9vbHMnLCAnU2NyaXB0cycsICdidWlsZC1sbGRid2Vi
a2l0dGVzdGVyJykKKyAgICB0cnk6CisgICAgICAgIF9ob3N0LmV4ZWN1dGl2ZS5ydW5fYW5kX3Ro
cm93X2lmX2ZhaWwoW2J1aWxkX2xsZGJ3ZWJraXR0ZXN0ZXIsIGNvbmZpZy5mbGFnX2Zvcl9jb25m
aWd1cmF0aW9uKGNvbmZpZy5kZWZhdWx0X2NvbmZpZ3VyYXRpb24oKSldLCBxdWlldD1UcnVlKQor
ICAgIGV4Y2VwdCBTY3JpcHRFcnJvciBhcyBlOgorICAgICAgICBfbG9nLmVycm9yKGUubWVzc2Fn
ZV93aXRoX291dHB1dChvdXRwdXRfbGltaXQ9Tm9uZSkpCisgICAgICAgIHJldHVybiBGYWxzZQor
ICAgIHJldHVybiBUcnVlCisKKwogCiBkZWYgbWFpbigpOgorICAgIGdsb2JhbCBfd2Via2l0X3Jv
b3QKICAgICBjb25maWd1cmVfbG9nZ2luZyhsb2dnZXI9X2xvZykKIAogICAgIHVwID0gb3MucGF0
aC5kaXJuYW1lCi0gICAgd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3Bh
dGgoX19maWxlX18pKSkpKSkKKyAgICBfd2Via2l0X3Jvb3QgPSB1cCh1cCh1cCh1cCh1cChvcy5w
YXRoLmFic3BhdGgoX19maWxlX18pKSkpKSkKIAogICAgIHRlc3RlciA9IFRlc3RlcigpCi0gICAg
dGVzdGVyLmFkZF90cmVlKG9zLnBhdGguam9pbih3ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ1Njcmlw
dHMnKSwgJ3dlYmtpdHB5JykKKyAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJr
aXRfcm9vdCwgJ1Rvb2xzJywgJ1NjcmlwdHMnKSwgJ3dlYmtpdHB5JykKIAogICAgICMgVGhlcmUg
aXMgbm8gV2ViS2l0MiBvbiBXaW5kb3dzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHJ1biBXZWJLaXQy
IHVuaXR0ZXN0cyBvbiBpdC4KICAgICBpZiBub3QgKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3
aW4nKSBvciBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicpOgotICAgICAgICB0ZXN0ZXIuYWRkX3Ry
ZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAnU291cmNlJywgJ1dlYktpdCcsICdTY3JpcHRz
JyksICd3ZWJraXQnKQorICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJr
aXRfcm9vdCwgJ1NvdXJjZScsICdXZWJLaXQnLCAnU2NyaXB0cycpLCAnd2Via2l0JykKKworICAg
IGxsZGJfcHl0aG9uX2RpcmVjdG9yeSA9IF9ob3N0LnBhdGhfdG9fbGxkYl9weXRob25fZGlyZWN0
b3J5KCkKKyAgICBpZiBvcy5wYXRoLmlzZGlyKGxsZGJfcHl0aG9uX2RpcmVjdG9yeSk6CisgICAg
ICAgIGlmIGxsZGJfcHl0aG9uX2RpcmVjdG9yeSBub3QgaW4gc3lzLnBhdGg6CisgICAgICAgICAg
ICBzeXMucGF0aC5hcHBlbmQobGxkYl9weXRob25fZGlyZWN0b3J5KQorICAgICAgICB0ZXN0ZXIu
YWRkX3RyZWUob3MucGF0aC5qb2luKF93ZWJraXRfcm9vdCwgJ1Rvb2xzJywgJ2xsZGInKSkKKyAg
ICAgICAgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBUcnVlCisgICAgZWxzZToKKyAgICAg
ICAgX2xvZy5pbmZvKCJTa2lwcGluZyBsbGRiX3dlYmtpdCB0ZXN0czsgY291bGQgbm90IGZpbmQg
cGF0aCB0byBsbGRiLnB5ICd7fScuIi5mb3JtYXQobGxkYl9weXRob25fZGlyZWN0b3J5KSkKKyAg
ICAgICAgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMgPSBGYWxzZQogCiAgICAgdGVzdGVyLnNr
aXAoKCd3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtLnNjbV91bml0dGVzdCcsKSwgJ2FyZSBy
ZWFsbHksIHJlYWxseSwgc2xvdycsIDMxODE4KQogICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCd3aW4nKToKQEAgLTcxLDExICsxMTAsMTEgQEAgZGVmIG1haW4oKToKICAgICAgICAgZnJv
bSBnb29nbGUuYXBwZW5naW5lLmRpc3QgaW1wb3J0IHVzZV9saWJyYXJ5CiAgICAgICAgIHVzZV9s
aWJyYXJ5KCdkamFuZ28nLCAnMS4yJykKICAgICAgICAgZGV2X2FwcHNlcnZlci5maXhfc3lzX3Bh
dGgoKQotICAgICAgICB0ZXN0ZXIuYWRkX3RyZWUob3MucGF0aC5qb2luKHdlYmtpdF9yb290LCAn
VG9vbHMnLCAnUXVldWVTdGF0dXNTZXJ2ZXInKSkKKyAgICAgICAgdGVzdGVyLmFkZF90cmVlKG9z
LnBhdGguam9pbihfd2Via2l0X3Jvb3QsICdUb29scycsICdRdWV1ZVN0YXR1c1NlcnZlcicpKQog
ICAgIGVsc2U6CiAgICAgICAgIF9sb2cuaW5mbygnU2tpcHBpbmcgUXVldWVTdGF0dXNTZXJ2ZXIg
dGVzdHM7IHRoZSBHb29nbGUgQXBwRW5naW5lIFB5dGhvbiBTREsgaXMgbm90IGluc3RhbGxlZC4n
KQogCi0gICAgcmV0dXJuIG5vdCB0ZXN0ZXIucnVuKCkKKyAgICByZXR1cm4gbm90IHRlc3Rlci5y
dW4od2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9d2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHMp
CiAKIAogZGVmIF9wcmludF9yZXN1bHRzX2FzX2pzb24oc3RyZWFtLCBhbGxfdGVzdF9uYW1lcywg
ZmFpbHVyZXMsIGVycm9ycyk6CkBAIC0xMzEsNyArMTcwLDcgQEAgY2xhc3MgVGVzdGVyKG9iamVj
dCk6CiAKICAgICAgICAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBkZWYg
cnVuKHNlbGYpOgorICAgIGRlZiBydW4oc2VsZiwgd2lsbF9ydW5fbGxkYl93ZWJraXRfdGVzdHM9
RmFsc2UpOgogICAgICAgICBzZWxmLl9vcHRpb25zLCBhcmdzID0gc2VsZi5fcGFyc2VfYXJncygp
CiAgICAgICAgIHNlbGYucHJpbnRlci5jb25maWd1cmUoc2VsZi5fb3B0aW9ucykKIApAQCAtMTQy
LDkgKzE4MSw5IEBAIGNsYXNzIFRlc3RlcihvYmplY3QpOgogICAgICAgICAgICAgX2xvZy5lcnJv
cignTm8gdGVzdHMgdG8gcnVuJykKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCi0gICAgICAg
IHJldHVybiBzZWxmLl9ydW5fdGVzdHMobmFtZXMpCisgICAgICAgIHJldHVybiBzZWxmLl9ydW5f
dGVzdHMobmFtZXMsIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzKQogCi0gICAgZGVmIF9ydW5f
dGVzdHMoc2VsZiwgbmFtZXMpOgorICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIG5hbWVzLCB3aWxs
X3J1bl9sbGRiX3dlYmtpdF90ZXN0cyk6CiAgICAgICAgICMgTWFrZSBzdXJlIFBZVEhPTlBBVEgg
aXMgc2V0IHVwIHByb3Blcmx5LgogICAgICAgICBzeXMucGF0aCA9IHNlbGYuZmluZGVyLmFkZGl0
aW9uYWxfcGF0aHMoc3lzLnBhdGgpICsgc3lzLnBhdGgKIApAQCAtMTU0LDYgKzE5MywxNCBAQCBj
bGFzcyBUZXN0ZXIob2JqZWN0KToKICAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5IGlt
cG9ydCBhdXRvaW5zdGFsbF9ldmVyeXRoaW5nCiAgICAgICAgIGF1dG9pbnN0YWxsX2V2ZXJ5dGhp
bmcoKQogCisgICAgICAgIGlmIHdpbGxfcnVuX2xsZGJfd2Via2l0X3Rlc3RzOgorICAgICAgICAg
ICAgc2VsZi5wcmludGVyLndyaXRlX3VwZGF0ZSgiQ2hlY2tpbmcgbGxkYldlYktpdFRlc3RlciAu
Li4iKQorICAgICAgICAgICAgaWYgbm90IF9maW5kX2xsZGJfd2Via2l0X3Rlc3RlcigpOgorICAg
ICAgICAgICAgICAgIHNlbGYucHJpbnRlci53cml0ZV91cGRhdGUoIkJ1aWxkaW5nIGxsZGJXZWJL
aXRUZXN0ZXIgLi4uIikKKyAgICAgICAgICAgICAgICBpZiBub3QgX2J1aWxkX2xsZGJfd2Via2l0
X3Rlc3RlcigpOgorICAgICAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gYnVp
bGQgbGxkYldlYktpdFRlc3Rlci4nKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmNvdmVyYWdlOgogICAgICAgICAgICAgX2xvZy53
YXJuaW5nKCJDaGVja2luZyBjb2RlIGNvdmVyYWdlLCBzbyBydW5uaW5nIHRoaW5ncyBzZXJpYWxs
eSIpCiAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyA9IDEKZGlmZiAt
LWdpdCBhL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL0Jhc2Uu
eGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOGMwZTdkODAzNTI2N2I3ZmU3YjQ3MmMyYzQyYjBiZjZkYjM2
OGQ0ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9Db25m
aWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsMTE5IEBACisvLyBDb3B5cmlnaHQg
KEMpIDIwMTUtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKy8vIGFyZSBtZXQ6CisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisvLyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisvLyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorLy8gQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisv
LyBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisvLyBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKy8vIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKy8vIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZT8gIi4uLy4uLy4uLy4uLy4uL0lu
dGVybmFsL0NvbmZpZ3VyYXRpb25zL0hhdmVJbnRlcm5hbFNESy54Y2NvbmZpZyIKKworVVNFX0lO
VEVSTkFMX1NESyA9ICQoVVNFX0lOVEVSTkFMX1NES18kKENPTkZJR1VSQVRJT04pKTsKK1VTRV9J
TlRFUk5BTF9TREtfUHJvZHVjdGlvbiA9IFlFUzsKK1VTRV9JTlRFUk5BTF9TREtfRGVidWcgPSAk
KEhBVkVfSU5URVJOQUxfU0RLKTsKK1VTRV9JTlRFUk5BTF9TREtfUmVsZWFzZSA9ICQoSEFWRV9J
TlRFUk5BTF9TREspOworCitBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKworQ0xBTkdf
Q1hYX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251KysxNDsKK0NMQU5HX0NYWF9MSUJSQVJZID0gbGli
YysrOworQ0xBTkdfRU5BQkxFX09CSkNfV0VBSyA9IFlFUzsKK0NMQU5HX1dBUk5fQkxPQ0tfQ0FQ
VFVSRV9BVVRPUkVMRUFTSU5HID0gWUVTOworQ0xBTkdfV0FSTl9CT09MX0NPTlZFUlNJT04gPSBZ
RVM7CitDTEFOR19XQVJOX0NPTlNUQU5UX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX0NY
WDBYX0VYVEVOU0lPTlMgPSBOTzsKK0NMQU5HX1dBUk5fRU1QVFlfQk9EWSA9IFlFUzsKK0NMQU5H
X1dBUk5fRU5VTV9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9JTkZJTklURV9SRUNVUlNJ
T04gPSBZRVM7CitDTEFOR19XQVJOX0lOVF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9O
T05fTElURVJBTF9OVUxMX0NPTlZFUlNJT04gPSBZRVM7CitDTEFOR19XQVJOX09CSkNfTElURVJB
TF9DT05WRVJTSU9OID0gWUVTOworQ0xBTkdfV0FSTl9SQU5HRV9MT09QX0FOQUxZU0lTID0gWUVT
OworQ0xBTkdfV0FSTl9TVFJJQ1RfUFJPVE9UWVBFUyA9IFlFUzsKK0NMQU5HX1dBUk5fU1VTUElD
SU9VU19NT1ZFID0gWUVTOworQ0xBTkdfV0FSTl9VTlJFQUNIQUJMRV9DT0RFID0gTk87CitDTEFO
R19XQVJOX19EVVBMSUNBVEVfTUVUSE9EX01BVENIID0gWUVTOworR0NDX1dBUk5fVU5ERUNMQVJF
RF9TRUxFQ1RPUiA9IFlFUzsKK0NPTUJJTkVfSElEUElfSU1BR0VTID0gTk87CitERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSBkd2FyZi13aXRoLWRzeW07CitFTkFCTEVfU1RSSUNUX09CSkNfTVNH
U0VORCA9IFlFUzsKK0dDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CitHQ0NfREVCVUdH
SU5HX1NZTUJPTFMgPSBkZWZhdWx0OworR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CitHQ0NfRU5B
QkxFX0NQUF9FWENFUFRJT05TID0gTk87CitHQ0NfRU5BQkxFX0NQUF9SVFRJID0gTk87CitHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKK0dDQ19FTkFCTEVfU1lNQk9MX1NFUEFSQVRJ
T04gPSBOTzsKK0dDQ19GQVNUX09CSkNfRElTUEFUQ0ggPSBZRVM7CitHQ0NfR0VORVJBVEVfREVC
VUdHSU5HX1NZTUJPTFMgPSBZRVM7CitHQ0NfTk9fQ09NTU9OX0JMT0NLUyA9IFlFUzsKK0dDQ19P
QkpDX0NBTExfQ1hYX0NEVE9SUyA9IFlFUzsKK0dDQ19QUkVDT01QSUxFX1BSRUZJWF9IRUFERVIg
PSBZRVM7CitHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChERUJVR19ERUZJTkVTKSAk
KGluaGVyaXRlZCk7CitHQ0NfU1RSSUNUX0FMSUFTSU5HID0gWUVTOworR0NDX1NZTUJPTFNfUFJJ
VkFURV9FWFRFUk4gPSBOTzsKK0dDQ19USFJFQURTQUZFX1NUQVRJQ1MgPSBOTzsKK0dDQ19UUkVB
VF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CitHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21w
aWxlcnMubGx2bS5jbGFuZy4xXzA7CitHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9
IE5POworR0NDX1dBUk5fQUJPVVRfREVQUkVDQVRFRF9GVU5DVElPTlMgPSBOTzsKK0dDQ19XQVJO
X0FCT1VUX01JU1NJTkdfTkVXTElORSA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKK0dDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworR0NDX1dB
Uk5fTk9OX1ZJUlRVQUxfREVTVFJVQ1RPUiA9IFlFUzsKK0dDQ19XQVJOX1NJR05fQ09NUEFSRSA9
IFlFUzsKK0dDQ19XQVJOX1VOREVDTEFSRURfU0VMRUNUT1IgPSBZRVM7CitHQ0NfV0FSTl9VTklO
SVRJQUxJWkVEX0FVVE9TID0gWUVTOworR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOwor
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gTk87CitXQVJOSU5HX0NGTEFHUyA9IC1XY2FzdC1x
dWFsIC1XY2hhci1zdWJzY3JpcHRzIC1XZXh0cmEtdG9rZW5zIC1XZm9ybWF0PTIgLVdpbml0LXNl
bGYgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUgLVdtaXNzaW5nLW5vcmV0dXJuIC1XcGFja2Vk
IC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC1kZWNscyAtV3VuZGVmIC1Xd3JpdGUtc3RyaW5n
cyAtV2V4aXQtdGltZS1kZXN0cnVjdG9ycyAtV2dsb2JhbC1jb25zdHJ1Y3RvcnMgLVd0YXV0b2xv
Z2ljYWwtY29tcGFyZSAtV2ltcGxpY2l0LWZhbGx0aHJvdWdoOworCitIRUFERVJfU0VBUkNIX1BB
VEhTID0gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L3Vzci9sb2NhbC9pbmNsdWRlOworCitUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUiA9ICQoVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1Ik
KE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVDpzdWZmaXg6aWRlbnRpZmllcikpOworVEFSR0VUX01B
Q19PU19YX1ZFUlNJT05fTUFKT1JfMTEgPSAxMDExMDA7CitUQVJHRVRfTUFDX09TX1hfVkVSU0lP
Tl9NQUpPUl8xMiA9IDEwMTIwMDsKK1RBUkdFVF9NQUNfT1NfWF9WRVJTSU9OX01BSk9SXzEzID0g
MTAxMzAwOworVEFSR0VUX01BQ19PU19YX1ZFUlNJT05fTUFKT1JfMTQgPSAxMDE0MDA7CitUQVJH
RVRfTUFDX09TX1hfVkVSU0lPTl9NQUpPUl8xNSA9IDEwMTUwMDsKKworU1VQUE9SVEVEX1BMQVRG
T1JNUyA9IG1hY29zeDsKKworLy8gREVCVUdfREVGSU5FUywgR0NDX09QVElNSVpBVElPTl9MRVZF
TCwgU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1QgYW5kIERFQURfQ09ERV9TVFJJUFBJTkcgdmFyeSBi
ZXR3ZWVuIHRoZSBkZWJ1ZyBhbmQgbm9ybWFsIHZhcmlhbnRzLgorLy8gV2Ugc2V0IHVwIHRoZSB2
YWx1ZXMgZm9yIGVhY2ggdmFyaWFudCBoZXJlLCBhbmQgaGF2ZSB0aGUgRGVidWcgY29uZmlndXJh
dGlvbiBpbiB0aGUgWGNvZGUgcHJvamVjdCB1c2UgdGhlIF9kZWJ1ZyB2YXJpYW50LgorREVCVUdf
REVGSU5FU19kZWJ1ZyA9IDsKK0RFQlVHX0RFRklORVNfbm9ybWFsID0gTkRFQlVHOworREVCVUdf
REVGSU5FUyA9ICQoREVCVUdfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gJChHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMXyQoQ1VSUkVOVF9WQVJJ
QU5UKSk7CitHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMX25vcm1hbFtzZGs9bWFjb3N4Kl0gPSAyOwor
R0NDX09QVElNSVpBVElPTl9MRVZFTF9kZWJ1ZyA9IDA7CisKK1NUUklQX0lOU1RBTExFRF9QUk9E
VUNUID0gJChTVFJJUF9JTlNUQUxMRURfUFJPRFVDVF8kKENVUlJFTlRfVkFSSUFOVCkpOworU1RS
SVBfSU5TVEFMTEVEX1BST0RVQ1Rfbm9ybWFsID0gWUVTOworU1RSSVBfSU5TVEFMTEVEX1BST0RV
Q1RfZGVidWcgPSBOTzsKKworREVBRF9DT0RFX1NUUklQUElOR19kZWJ1ZyA9IE5POworREVBRF9D
T0RFX1NUUklQUElOR19ub3JtYWwgPSBZRVM7CitERUFEX0NPREVfU1RSSVBQSU5HID0gJChERUFE
X0NPREVfU1RSSVBQSU5HXyQoQ1VSUkVOVF9WQVJJQU5UKSk7CisKK1NES1JPT1QgPSBtYWNvc3gu
aW50ZXJuYWw7CisKK09USEVSX0NGTEFHUyA9ICQoQVNBTl9PVEhFUl9DRkxBR1MpOworT1RIRVJf
Q1BMVVNQTFVTRkxBR1MgPSAkKEFTQU5fT1RIRVJfQ1BMVVNQTFVTRkxBR1MpOworT1RIRVJfTERG
TEFHUyA9ICQoQVNBTl9PVEhFUl9MREZMQUdTKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIvbGxk
YldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9EZWJ1Z1JlbGVhc2UueGNjb25maWcgYi9Ub29s
cy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJhdGlvbnMvRGVidWdSZWxlYXNlLnhjY29u
ZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjhjNGY3MTcwMGVlNGE0M2U1YWE2MGVkYzY5MDJiODg2Yzk0OWZlZjAK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvQ29uZmlndXJh
dGlvbnMvRGVidWdSZWxlYXNlLnhjY29uZmlnCkBAIC0wLDAgKzEsNDUgQEAKKy8vIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
Ky8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisvLyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
Ky8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorLy8gT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisvLyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNpbmNsdWRlICJCYXNlLnhjY29uZmlnIgor
CitPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCitUQVJHRVRfTUFDX09TX1hfVkVSU0lPTl9NQUpP
UiA9ICQoTUFDX09TX1hfVkVSU0lPTl9NQUpPUik7CisKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9ICQoTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUXyQoUExBVEZPUk1fTkFNRSlfJChUQVJHRVRf
TUFDX09TX1hfVkVSU0lPTl9NQUpPUikpOworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29z
eF8xMDExMDAgPSAxMC4xMTsKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxMjAw
ID0gMTAuMTI7CitNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVRfbWFjb3N4XzEwMTMwMCA9IDEwLjEz
OworTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUX21hY29zeF8xMDE0MDAgPSAxMC4xNDsKK01BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVF9tYWNvc3hfMTAxNTAwID0gMTAuMTU7CisKK0dDQ19XQVJOX0FC
T1VUX0RFUFJFQ0FURURfRlVOQ1RJT05TID0gWUVTOworREVCVUdfSU5GT1JNQVRJT05fRk9STUFU
ID0gZHdhcmY7CisKK1NES1JPT1QgPSAkKFNES1JPT1RfJChVU0VfSU5URVJOQUxfU0RLKSk7CitT
REtST09UXyA9IG1hY29zeDsKK1NES1JPT1RfWUVTID0gbWFjb3N4LmludGVybmFsOworCitXS19D
Q0FDSEVfRElSID0gJChTUkNST09UKS8uLi8uLi8uLi9Ub29scy9jY2FjaGU7CisjaW5jbHVkZSAi
Li4vLi4vLi4vY2NhY2hlL2NjYWNoZS54Y2NvbmZpZyIKZGlmZiAtLWdpdCBhL1Rvb2xzL2xsZGIv
bGxkYldlYktpdFRlc3Rlci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmln
IGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL0NvbmZpZ3VyYXRpb25zL2xsZGJXZWJLaXRU
ZXN0ZXIueGNjb25maWcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjhmYzkxYTYwYzViNTJkOTEyNGQyNWYwOGM1MTM3
MTA1N2NlOWJmYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rl
ci9Db25maWd1cmF0aW9ucy9sbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnCkBAIC0wLDAgKzEsMzQg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworLy8gYXJlIG1ldDoKKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKy8vIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKy8vIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisv
LyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKy8vIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKy8vIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorLy8gUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorLy8gT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK1BST0RVQ1RfTkFN
RSA9ICQoVEFSR0VUX05BTUUpOworCitSRUxFQVNFX0RFRklORVNfZGVidWcgPSA7CitSRUxFQVNF
X0RFRklORVNfbm9ybWFsID0gUkVMRUFTRV9XSVRIT1VUX09QVElNSVpBVElPTlM7CitSRUxFQVNF
X0RFRklORVMgPSAkKFJFTEVBU0VfREVGSU5FU18kKENVUlJFTlRfVkFSSUFOVCkpOworCitHQ0Nf
UFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gJChpbmhlcml0ZWQpICQoUkVMRUFTRV9ERUZJTkVT
KTsKK0dDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworU1RSSVBfSU5TVEFMTEVEX1BST0RVQ1Qg
PSBOTzsKK0RFQURfQ09ERV9TVFJJUFBJTkcgPSBOTzsKK09USEVSX0xERkxBR1Nbc2RrPW1hY29z
eCpdID0gJChpbmhlcml0ZWQpIC1mcmFtZXdvcmsgQ29jb2EgLWZyYW1ld29yayBTZWN1cml0eSAt
Zm9yY2VfbG9hZCAiJChCVUlMVF9QUk9EVUNUU19ESVIpL2xpYldURi5hIjsKZGlmZiAtLWdpdCBh
L1Rvb2xzL2xsZGIvbGxkYldlYktpdFRlc3Rlci9NYWtlZmlsZSBiL1Rvb2xzL2xsZGIvbGxkYldl
YktpdFRlc3Rlci9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNThjMjFlMWJhMzg3YThiYTRmYzQzZjE0
NDRjMzgwZWVjNzllZGU5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvbGxkYi9sbGRiV2ViS2l0
VGVzdGVyL01ha2VmaWxlCkBAIC0wLDAgKzEsMiBAQAorU0NSSVBUU19QQVRIID0gLi4vLi4vU2Ny
aXB0cworaW5jbHVkZSAuLi8uLi8uLi9NYWtlZmlsZS5zaGFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xz
L2xsZGIvbGxkYldlYktpdFRlc3Rlci9sbGRiV2ViS2l0VGVzdGVyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Ub29scy9sbGRiL2xsZGJXZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM1MmExNWUxMjgzMzdiMGI2ZTQ4
Mzk1MDkwNTRhYzNkYTczMTYyMTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvbGxkYldlYktpdFRlc3Rlci54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0wLDAgKzEsMjA1IEBACisvLyAhJCpVVEY4KiQhCit7CisJYXJjaGl2ZVZlcnNpb24gPSAxOwor
CWNsYXNzZXMgPSB7CisJfTsKKwlvYmplY3RWZXJzaW9uID0gNDY7CisJb2JqZWN0cyA9IHsKKwor
LyogQmVnaW4gUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKwkJN0NCNjg0NEIxQUZBNzk3ODAwMkIz
MDVDIC8qIG1haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0NCNjg0NEExQUZBNzk3ODAwMkIzMDVDIC8qIG1haW4uY3BwICovOyB9OworCQlDRTZD
M0FGRjIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTZDM0FGRTIwQzBCMTdCMDAzRTMzRDggLyogbGli
V1RGLmEgKi87IH07CisJCUNFNkMzQjAxMjBDMEM0NDQwMDNFMzNEOCAvKiBsaWJpY3Vjb3JlLmR5
bGliIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U2
QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgKi87IH07CisvKiBFbmQg
UEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KKworLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTdDNEFCMzlGMUFGMDI3NkMwMDNGQzhEMSAvKiBDb3B5RmlsZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRz
dFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CisvKiBFbmQgUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LworCQk3QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBCYXNlLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzIyMjc1
MjFBRkM0RDlDMDA4QzMzMzggLyogbGxkYldlYktpdFRlc3Rlci54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk3QzIyMjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2Nv
bmZpZzsgcGF0aCA9IERlYnVnUmVsZWFzZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJN0M0QUIzQTExQUYwMjc2QzAwM0ZDOEQxIC8qIGxsZGJXZWJLaXRUZXN0ZXIgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5t
YWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IGxsZGJXZWJLaXRU
ZXN0ZXI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTdDQjY4NDRBMUFG
QTc5NzgwMDJCMzA1QyAvKiBtYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IG1haW4uY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJCUNFNkMzQUZF
MjBDMEIxN0IwMDNFMzNEOCAvKiBsaWJXVEYuYSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJXVEYuYTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmlj
dWNvcmUuZHlsaWIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmR5bGliIjsgbmFtZSA9IGxpYmljdWNvcmUuZHlsaWI7IHBh
dGggPSB1c3IvbGliL2xpYmljdWNvcmUuZHlsaWI7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9Owor
LyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLworCisvKiBCZWdpbiBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTdDNEFCMzlFMUFGMDI3NkMwMDNGQzhEMSAvKiBG
cmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJQ0U2QzNCMDEy
MEMwQzQ0NDAwM0UzM0Q4IC8qIGxpYmljdWNvcmUuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLywKKwkJ
CQlDRTZDM0FGRjIwQzBCMTdCMDAzRTMzRDggLyogbGliV1RGLmEgaW4gRnJhbWV3b3JrcyAqLywK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsK
Ky8qIEVuZCBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBC
WEdyb3VwIHNlY3Rpb24gKi8KKwkJN0MyMjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZpZ3Vy
YXRpb25zICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3
QzIyMjc1MTFBRkM0RDlDMDA4QzMzMzggLyogQmFzZS54Y2NvbmZpZyAqLywKKwkJCQk3QzIyMjc1
MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovLAorCQkJCTdDMjIy
NzUyMUFGQzREOUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovLAorCQkJ
KTsKKwkJCXBhdGggPSBDb25maWd1cmF0aW9uczsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CisJCX07CisJCTdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMSA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJN0MyMjI3NTAxQUZDNEQwQTAwOEMzMzM4IC8qIENvbmZp
Z3VyYXRpb25zICovLAorCQkJCUNFM0Y0NDI1MjA1QzZBMDEwMDcxOTVCMyAvKiBGcmFtZXdvcmtz
ICovLAorCQkJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICov
LAorCQkJCTdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0cyAqLywKKwkJCSk7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQk3QzRBQjNBMjFBRjAyNzZDMDAzRkM4
RDEgLyogUHJvZHVjdHMgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0VGVzdGVyICovLAor
CQkJKTsKKwkJCW5hbWUgPSBQcm9kdWN0czsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CisJCUNFM0Y0NDI0MjA1QzY2RDkwMDcxOTVCMyAvKiBsbGRiV2ViS2l0VGVzdGVyICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk3Q0I2ODQ0QTFBRkE3
OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsZGJXZWJLaXRU
ZXN0ZXI7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OworCQlDRTNGNDQyNTIwNUM2
QTAxMDA3MTk1QjMgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQ0U2QzNCMDAyMEMwQzQ0MzAwM0UzM0Q4IC8qIGxpYmljdWNvcmUu
ZHlsaWIgKi8sCisJCQkJQ0U2QzNBRkUyMEMwQjE3QjAwM0UzM0Q4IC8qIGxpYldURi5hICovLAor
CQkJKTsKKwkJCW5hbWUgPSBGcmFtZXdvcmtzOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
KwkJfTsKKy8qIEVuZCBQQlhHcm91cCBzZWN0aW9uICovCisKKy8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCTdDNEFCM0EwMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0
VGVzdGVyICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDdDNEFCM0E4MUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibGxkYldlYktpdFRlc3RlciIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCQk3QzRBQjM5RDFBRjAyNzZDMDAzRkM4RDEgLyogU291cmNlcyAq
LywKKwkJCQk3QzRBQjM5RTFBRjAyNzZDMDAzRkM4RDEgLyogRnJhbWV3b3JrcyAqLywKKwkJCQk3
QzRBQjM5RjFBRjAyNzZDMDAzRkM4RDEgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJKTsKKwkJCW5hbWUgPSBs
bGRiV2ViS2l0VGVzdGVyOworCQkJcHJvZHVjdE5hbWUgPSBsbGRiV2ViS2l0VGVzdGVyOworCQkJ
cHJvZHVjdFJlZmVyZW5jZSA9IDdDNEFCM0ExMUFGMDI3NkMwMDNGQzhEMSAvKiBsbGRiV2ViS2l0
VGVzdGVyICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29s
IjsKKwkJfTsKKy8qIEVuZCBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCisvKiBCZWdpbiBQ
QlhQcm9qZWN0IHNlY3Rpb24gKi8KKwkJN0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2pl
Y3Qgb2JqZWN0ICovID0geworCQkJaXNhID0gUEJYUHJvamVjdDsKKwkJCWF0dHJpYnV0ZXMgPSB7
CisJCQkJTGFzdFVwZ3JhZGVDaGVjayA9IDA3MDA7CisJCQl9OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDdDNEFCMzlDMUFGMDI3NkMwMDNGQzhEMSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWFByb2plY3QgImxsZGJXZWJLaXRUZXN0ZXIiICovOworCQkJY29tcGF0aWJp
bGl0eVZlcnNpb24gPSAiWGNvZGUgMy4yIjsKKwkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5nbGlz
aDsKKwkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAwOworCQkJa25vd25SZWdpb25zID0gKAor
CQkJCWVuLAorCQkJKTsKKwkJCW1haW5Hcm91cCA9IDdDNEFCMzk4MUFGMDI3NkMwMDNGQzhEMTsK
KwkJCXByb2R1Y3RSZWZHcm91cCA9IDdDNEFCM0EyMUFGMDI3NkMwMDNGQzhEMSAvKiBQcm9kdWN0
cyAqLzsKKwkJCXByb2plY3REaXJQYXRoID0gIiI7CisJCQlwcm9qZWN0Um9vdCA9ICIiOworCQkJ
dGFyZ2V0cyA9ICgKKwkJCQk3QzRBQjNBMDFBRjAyNzZDMDAzRkM4RDEgLyogbGxkYldlYktpdFRl
c3RlciAqLywKKwkJCSk7CisJCX07CisvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCisKKy8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJN0M0QUIzOUQxQUYwMjc2
QzAwM0ZDOEQxIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQk3
Q0I2ODQ0QjFBRkE3OTc4MDAyQjMwNUMgLyogbWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7
CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKKy8qIEVu
ZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJN0M0QUIzQTYxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVn
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQliYXNlQ29uZmlndXJh
dGlvblJlZmVyZW5jZSA9IDdDMjIyNzUzMUFGQzREOUMwMDhDMzMzOCAvKiBEZWJ1Z1JlbGVhc2Uu
eGNjb25maWcgKi87CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCURFQlVHX0RFRklORVMgPSAi
JChERUJVR19ERUZJTkVTX2RlYnVnKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9Owor
CQk3QzRBQjNBNzFBRjAyNzZDMDAzRkM4RDEgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYmFzZUNvbmZpZ3VyYXRpb25SZWZlcmVuY2UgPSA3QzIy
Mjc1MzFBRkM0RDlDMDA4QzMzMzggLyogRGVidWdSZWxlYXNlLnhjY29uZmlnICovOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJN0M0QUIz
QTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzRE
OUMwMDhDMzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTdDNEFCM0FBMUFGMDI3
NkMwMDNGQzhEMSAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQliYXNlQ29uZmlndXJhdGlvblJlZmVyZW5jZSA9IDdDMjIyNzUyMUFGQzREOUMwMDhD
MzMzOCAvKiBsbGRiV2ViS2l0VGVzdGVyLnhjY29uZmlnICovOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKy8qIEVuZCBYQ0J1aWxkQ29uZmln
dXJhdGlvbiBzZWN0aW9uICovCisKKy8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlv
biAqLworCQk3QzRBQjM5QzFBRjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhQcm9qZWN0ICJsbGRiV2ViS2l0VGVzdGVyIiAqLyA9IHsKKwkJCWlzYSA9IFhD
Q29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTdDNEFC
M0E2MUFGMDI3NkMwMDNGQzhEMSAvKiBEZWJ1ZyAqLywKKwkJCQk3QzRBQjNBNzFBRjAyNzZDMDAz
RkM4RDEgLyogUmVsZWFzZSAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlz
aWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBSZWxlYXNlOworCQl9Owor
CQk3QzRBQjNBODFBRjAyNzZDMDAzRkM4RDEgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgImxsZGJXZWJLaXRUZXN0ZXIiICovID0geworCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJN0M0QUIz
QTkxQUYwMjc2QzAwM0ZDOEQxIC8qIERlYnVnICovLAorCQkJCTdDNEFCM0FBMUFGMDI3NkMwMDNG
QzhEMSAvKiBSZWxlYXNlICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFJlbGVhc2U7CisJCX07Cisv
KiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJfTsKKwlyb290T2JqZWN0ID0g
N0M0QUIzOTkxQUYwMjc2QzAwM0ZDOEQxIC8qIFByb2plY3Qgb2JqZWN0ICovOworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvbGxkYi9sbGRiV2ViS2l0VGVzdGVyL21haW4uY3BwIGIvVG9vbHMvbGxkYi9s
bGRiV2ViS2l0VGVzdGVyL21haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhZjgyZmU1OGE4YmZlMDk2ODZm
YzMzZGFiNmZiNDZiNzE0YzI5MDAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9sbGRiL2xsZGJX
ZWJLaXRUZXN0ZXIvbWFpbi5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworZXh0ZXJuIHZvaWQgYnJlYWtGb3JUZXN0aW5n
U3VtbWFyeVByb3ZpZGVycygpOwordm9pZCBicmVha0ZvclRlc3RpbmdTdW1tYXJ5UHJvdmlkZXJz
KCkgeyByZXR1cm47IH0KKwordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBTdHJpbmcg
dXRmMTZTdHJpbmcoY29uc3QgY2hhcjE2X3QgKCZzdHJpbmcpW2xlbmd0aF0pCit7CisgICAgU3Ry
aW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0aCAt
IDEpOworICAgIGZvciAoYXV0byBjIDogc3RyaW5nKQorICAgICAgICBidWlsZGVyLmFwcGVuZChz
dGF0aWNfY2FzdDxVQ2hhcj4oYykpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9
CisKK3N0YXRpYyB2b2lkIHRlc3RTdW1tYXJ5UHJvdmlkZXJzKCkKK3sKKyAgICBTdHJpbmcgYU51
bGxTdHJpbmcgeyAiIiB9OworICAgIFN0cmluZ0ltcGwqIGFOdWxsU3RyaW5nSW1wbCA9IGFOdWxs
U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhbkVtcHR5U3RyaW5nIHsgIiIgfTsKKyAgICBT
dHJpbmdJbXBsKiBhbkVtcHR5U3RyaW5nSW1wbCA9IGFuRW1wdHlTdHJpbmcuaW1wbCgpOworCisg
ICAgU3RyaW5nIGFuOEJpdFN0cmluZyB7ICJyw6lzdW3DqSIgfTsKKyAgICBTdHJpbmdJbXBsKiBh
bjhCaXRTdHJpbmdJbXBsID0gYW44Qml0U3RyaW5nLmltcGwoKTsKKworICAgIFN0cmluZyBhMTZC
aXRTdHJpbmcgPSB1dGYxNlN0cmluZyh1Ilx1MTY4MENhcHB1Y2Npbm9cdTE2ODAiKTsKKyAgICBT
dHJpbmdJbXBsKiBhMTZCaXRTdHJpbmdJbXBsID0gYTE2Qml0U3RyaW5nLmltcGwoKTsKKworICAg
IGJyZWFrRm9yVGVzdGluZ1N1bW1hcnlQcm92aWRlcnMoKTsKK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKK3sKKyAgICB0ZXN0U3VtbWFyeVByb3ZpZGVycygpOwor
ICAgIGZwcmludGYoc3RkZXJyLCAiVGhpcyBleGVjdXRhYmxlIGRvZXMgbm90aGluZyBhbmQgaXMg
b25seSBtZWFudCBmb3IgZGVidWdnaW5nIGxsZGJfd2Via2l0LnB5LlxuIik7CisgICAgcmV0dXJu
IDA7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9sbGRiL2xsZGJfd2Via2l0X3VuaXR0ZXN0LnB5IGIv
VG9vbHMvbGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjYyZjQ1NjE3
Y2JkOTViMjNiNWQ0NmQ3OGQ2YmFkZTY1NGZiZjNkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
bGxkYi9sbGRiX3dlYmtpdF91bml0dGVzdC5weQpAQCAtMCwwICsxLDEzOSBAQAorIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCisjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIworIyBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitpbXBvcnQgYXRleGl0CitpbXBvcnQgbGxkYgoraW1w
b3J0IGxsZGJfd2Via2l0CitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB1bml0dGVzdAor
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdCBpbXBvcnQgU3lzdGVtSG9z
dAorZnJvbSB3ZWJraXRweS5wb3J0LmNvbmZpZyBpbXBvcnQgQ29uZmlnCisKKworIyBXZSBjYWNo
ZSB0aGUgbGxkYiBkZWJ1ZyBzZXNzaW9uIHN0YXRlIHNvIHRoYXQgd2UgZG9uJ3QgY3JlYXRlIGl0
IGFnYWluIGZvciBlYWNoIGNhbGwgdG8gYSBzZXJpYWxfdGVzdF8gbWV0aG9kLgorIyBXZSBzdG9y
ZSBpdCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHdlIGNhbiBkZWxldGUgdGhpcyBjYWNo
ZWQgc3RhdGUgb24gZXhpdCgzKS4KKyMgRklYTUU6IFJlbW92ZSB0aGlzIG9uY2UgdGVzdC13ZWJr
aXRweSBzdXBwb3J0cyBjbGFzcyBhbmQgbW9kdWxlIGZpeHR1cmVzIChpLmUuIHNldFVwQ2xhc3Mo
KS9zZXRVcE1vZHVsZSgpCisjIGFyZSBjYWxsZWQgZXhhY3RseSBvbmNlIHBlciBjbGFzcy9tb2R1
bGUpLgorY2FjaGVkX2RlYnVnX3Nlc3Npb24gPSBOb25lCisKKworIyBGSVhNRTogUmVtb3ZlIHRo
aXMgb25jZSB0ZXN0LXdlYmtpdHB5IHN1cHBvcnRzIGNsYXNzIGFuZCBtb2R1bGUgZml4dHVyZXMg
KGkuZS4gc2V0VXBDbGFzcygpL3NldFVwTW9kdWxlKCkKKyMgYXJlIGNhbGxlZCBleGFjdGx5IG9u
Y2UgcGVyIGNsYXNzL21vZHVsZSkuCitAYXRleGl0LnJlZ2lzdGVyCitkZWYgZGVzdHJveV9jYWNo
ZWRfZGVidWdfc2Vzc2lvbigpOgorICAgIGlmIGNhY2hlZF9kZWJ1Z19zZXNzaW9uOgorICAgICAg
ICBjYWNoZWRfZGVidWdfc2Vzc2lvbi50ZWFyRG93bigpCisKKworY2xhc3MgTExEQkRlYnVnU2Vz
c2lvbihvYmplY3QpOgorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXR1cChjbHMpOgorICAg
ICAgICBMTERCX1dFQktJVF9URVNURVJfTkFNRSA9ICdsbGRiV2ViS2l0VGVzdGVyJworICAgICAg
ICBCUkVBS19GT1JfVEVTVElOR19GVU5DVElPTl9OQU1FID0gJ2JyZWFrRm9yVGVzdGluZ1N1bW1h
cnlQcm92aWRlcnMnCisKKyAgICAgICAgY2xzLnNiRGVidWdnZXIgPSBsbGRiLlNCRGVidWdnZXIu
Q3JlYXRlKCkKKyAgICAgICAgY2xzLnNiRGVidWdnZXIuU2V0QXN5bmMoRmFsc2UpCisKKyAgICAg
ICAgaG9zdCA9IFN5c3RlbUhvc3QoKQorICAgICAgICBjb25maWcgPSBDb25maWcoaG9zdC5leGVj
dXRpdmUsIGhvc3QuZmlsZXN5c3RlbSkKKyAgICAgICAgY2xzLmxsZGJXZWJLaXRUZXN0ZXJFeGVj
dXRhYmxlID0gb3MucGF0aC5qb2luKGNvbmZpZy5idWlsZF9kaXJlY3RvcnkoY29uZmlnLmRlZmF1
bHRfY29uZmlndXJhdGlvbigpKSwgTExEQl9XRUJLSVRfVEVTVEVSX05BTUUpCisKKyAgICAgICAg
Y2xzLnNiVGFyZ2V0ID0gY2xzLnNiRGVidWdnZXIuQ3JlYXRlVGFyZ2V0KHN0cihjbHMubGxkYldl
YktpdFRlc3RlckV4ZWN1dGFibGUpKQorICAgICAgICBhc3NlcnQgY2xzLnNiVGFyZ2V0CisgICAg
ICAgIGNscy5zYlRhcmdldC5CcmVha3BvaW50Q3JlYXRlQnlOYW1lKEJSRUFLX0ZPUl9URVNUSU5H
X0ZVTkNUSU9OX05BTUUsIGNscy5zYlRhcmdldC5HZXRFeGVjdXRhYmxlKCkuR2V0RmlsZW5hbWUo
KSkKKworICAgICAgICBhcmd2ID0gTm9uZQorICAgICAgICBlbnZwID0gTm9uZQorICAgICAgICBj
bHMuc2JQcm9jZXNzID0gY2xzLnNiVGFyZ2V0LkxhdW5jaFNpbXBsZShhcmd2LCBlbnZwLCBvcy5n
ZXRjd2QoKSkKKyAgICAgICAgYXNzZXJ0IGNscy5zYlByb2Nlc3MKKyAgICAgICAgYXNzZXJ0IGNs
cy5zYlByb2Nlc3MuR2V0U3RhdGUoKSA9PSBsbGRiLmVTdGF0ZVN0b3BwZWQKKworICAgICAgICBj
bHMuc2JUaHJlYWQgPSBjbHMuc2JQcm9jZXNzLkdldFRocmVhZEF0SW5kZXgoMCkKKyAgICAgICAg
YXNzZXJ0IGNscy5zYlRocmVhZAorCisgICAgICAgICMgRnJhbWUgMCBpcyB0aGUgZnVuY3Rpb24g
d2l0aCBuYW1lIEJSRUFLX0ZPUl9URVNUSU5HX0ZVTkNUSU9OX05BTUUuIFdlIHdhbnQgdGhlIGZy
YW1lIG9mIHRoZSBjYWxsZXIgb2YKKyAgICAgICAgIyBCUkVBS19GT1JfVEVTVElOR19GVU5DVElP
Tl9OQU1FIGJlY2F1c2UgaXQgaGFzIGFsbCB0aGUgaW50ZXJlc3RpbmcgbG9jYWwgdmFyaWFibGVz
IHdlIHdhbnQgdG8gdGVzdC4KKyAgICAgICAgY2xzLnNiRnJhbWUgPSBjbHMuc2JUaHJlYWQuR2V0
RnJhbWVBdEluZGV4KDEpCisgICAgICAgIGFzc2VydCBjbHMuc2JGcmFtZQorCisgICAgQGNsYXNz
bWV0aG9kCisgICAgZGVmIHRlYXJEb3duKGNscyk6CisgICAgICAgIGNscy5zYlByb2Nlc3MuS2ls
bCgpCisKKworY2xhc3MgVGVzdFN1bW1hcnlQcm92aWRlcnModW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGdsb2Jh
bCBjYWNoZWRfZGVidWdfc2Vzc2lvbgorICAgICAgICBpZiBub3QgY2FjaGVkX2RlYnVnX3Nlc3Np
b246CisgICAgICAgICAgICBjYWNoZWRfZGVidWdfc2Vzc2lvbiA9IExMREJEZWJ1Z1Nlc3Npb24o
KQorICAgICAgICAgICAgY2FjaGVkX2RlYnVnX3Nlc3Npb24uc2V0dXAoKQorCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIF9zYkZyYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gY2FjaGVkX2RlYnVn
X3Nlc3Npb24uc2JGcmFtZQorCisgICAgIyBUaGUgTExEQiBQeXRob24gbW9kdWxlIGRvZXMgbm90
IHdvcmsgd2l0aCBQeXRob24gbXVsdGlwcm9jZXNzaW5nIGFuZCBjYXVzZXMgZXJyb3JzIG9mIHRo
ZSBmb3JtOgorICAgICMgICAgIG9iamNbNzY3OTRdOiArW19fTURRdWVyeSBpbml0aWFsaXplXSBt
YXkgaGF2ZSBiZWVuIGluIHByb2dyZXNzIGluIGFub3RoZXIgdGhyZWFkIHdoZW4gZm9yaygpIHdh
cyBjYWxsZWQuCisgICAgIyAgICAgICAgICAgICAgICAgIFdlIGNhbm5vdCBzYWZlbHkgY2FsbCBp
dCBvciBpZ25vcmUgaXQgaW4gdGhlIGZvcmsoKSBjaGlsZCBwcm9jZXNzLiBDcmFzaGluZyBpbnN0
ZWFkLgorICAgICMgU28sIHdlIHJ1biB0aGUgZm9sbG93aW5nIHRlc3RzIHNlcmlhbGx5LgorCisg
ICAgIyBNQVJLOiBXVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlciB0ZXN0IGNhc2VzCisKKyAg
ICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfbnVsbF9zdHJp
bmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdJbXBsX1N1
bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYU51bGxTdHJpbmdJbXBs
JyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAs
IGlzOGJpdCA9IDEsIGNvbnRlbnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBz
dW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5f
c2JGcmFtZS5GaW5kVmFyaWFibGUoJ2FuRW1wdHlTdHJpbmdJbXBsJyksIHt9KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksICJ7IGxlbmd0aCA9IDAsIGlzOGJpdCA9IDEsIGNvbnRl
bnRzID0gJycgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5
UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtp
dC5XVEZTdHJpbmdJbXBsX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJs
ZSgnYW44Qml0U3RyaW5nSW1wbCcpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1t
YXJ5LCAieyBsZW5ndGggPSA4LCBpczhiaXQgPSAxLCBjb250ZW50cyA9ICdyXFx4ZTlzdW1cXHhl
OScgfSIpCisKKyAgICBkZWYgc2VyaWFsX3Rlc3RfV1RGU3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlk
ZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RG
U3RyaW5nSW1wbF9TdW1tYXJ5UHJvdmlkZXIoc2VsZi5fc2JGcmFtZS5GaW5kVmFyaWFibGUoJ2Ex
NkJpdFN0cmluZ0ltcGwnKSwge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyeSwg
dSJ7IGxlbmd0aCA9IDEzLCBpczhiaXQgPSAwLCBjb250ZW50cyA9ICdcXHUxNjgwQ2FwcHVjY2lu
b1xcdTE2ODBcXHgwMCcgfSIpCisKKyAgICAjIE1BUks6IFdURlN0cmluZ19TdW1tYXJ5UHJvdmlk
ZXIgdGVzdCBjYXNlcworCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJv
dmlkZXJfbnVsbF9zdHJpbmcoc2VsZik6CisgICAgICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5X
VEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYuX3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhTnVs
bFN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJ5LCAieyBsZW5n
dGggPSAwLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmlu
Z19TdW1tYXJ5UHJvdmlkZXJfZW1wdHlfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0g
bGxkYl93ZWJraXQuV1RGU3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRW
YXJpYWJsZSgnYW5FbXB0eVN0cmluZycpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dW1tYXJ5LCAieyBsZW5ndGggPSAwLCBjb250ZW50cyA9ICcnIH0iKQorCisgICAgZGVmIHNlcmlh
bF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlkZXJfOGJpdF9zdHJpbmcoc2VsZik6CisgICAg
ICAgIHN1bW1hcnkgPSBsbGRiX3dlYmtpdC5XVEZTdHJpbmdfU3VtbWFyeVByb3ZpZGVyKHNlbGYu
X3NiRnJhbWUuRmluZFZhcmlhYmxlKCdhbjhCaXRTdHJpbmcnKSwge30pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc3VtbWFyeSwgInsgbGVuZ3RoID0gOCwgY29udGVudHMgPSAnclxceGU5c3Vt
XFx4ZTknIH0iKQorCisgICAgZGVmIHNlcmlhbF90ZXN0X1dURlN0cmluZ19TdW1tYXJ5UHJvdmlk
ZXJfMTZiaXRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzdW1tYXJ5ID0gbGxkYl93ZWJraXQuV1RG
U3RyaW5nX1N1bW1hcnlQcm92aWRlcihzZWxmLl9zYkZyYW1lLkZpbmRWYXJpYWJsZSgnYTE2Qml0
U3RyaW5nJyksIHt9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcnksIHUieyBsZW5n
dGggPSAxMywgY29udGVudHMgPSAnXFx1MTY4MENhcHB1Y2Npbm9cXHUxNjgwXFx4MDAnIH0iKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>