<?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>187319</bug_id>
          
          <creation_ts>2018-07-04 02:43:06 -0700</creation_ts>
          <short_desc>document.open and document.write must throw while the HTML parser is synchronously constructing a custom element</short_desc>
          <delta_ts>2018-08-13 09:14:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=187802</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=187907</see_also>
          <bug_file_loc>https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#throw-on-dynamic-markup-insertion-counter</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>188336</dependson>
    
    <dependson>188390</dependson>
          <blocked>154907</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dkadu</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>timothygu99</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1439172</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-07-04 02:43:06 -0700</bug_when>
    <thetext>&quot;Document objects have a throw-on-dynamic-markup-insertion counter, which is used in conjunction with the create an element for the token algorithm to prevent custom element constructors from being able to use document.open(type, replace), document.close(), and document.write() when they are invoked by the parser. Initially, the counter must be set to zero.&quot;

We have FIXMEs comments but no throw-on-dynamic-markup-insertion counter and the calls are always allowed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442755</commentid>
    <comment_count>1</comment_count>
    <who name="Timothy Gu">timothygu99</who>
    <bug_when>2018-07-17 12:22:32 -0700</bug_when>
    <thetext>WPT is available after https://github.com/web-platform-tests/wpt/pull/12037.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1444274</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-07-23 08:57:21 -0700</bug_when>
    <thetext>Additional note: We don&apos;t follow steps 6 and 9 of https://html.spec.whatwg.org/#create-an-element-for-the-token so the throw-on-dynamic-markup-insertion counter is always zero anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447187</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-01 22:42:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/42843012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448336</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-06 20:08:33 -0700</bug_when>
    <thetext>Also see https://github.com/whatwg/html/pull/1673</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448359</commentid>
    <comment_count>5</comment_count>
      <attachid>346686</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-06 22:38:43 -0700</bug_when>
    <thetext>Created attachment 346686
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448360</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-08-06 22:40:16 -0700</bug_when>
    <thetext>Attachment 346686 did not pass style-queue:


ERROR: Source/WebCore/dom/ThrowOnDynamicMarkupInsertionCountIncrementer.h:36:  Wrong number of spaces before statement. (expected: 8)  [whitespace/indent] [4]
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>1448361</commentid>
    <comment_count>7</comment_count>
      <attachid>346687</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-06 22:41:25 -0700</bug_when>
    <thetext>Created attachment 346687
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448383</commentid>
    <comment_count>8</comment_count>
      <attachid>346687</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-08-07 01:24:37 -0700</bug_when>
    <thetext>Comment on attachment 346687
Fixes the bug

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

&gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:215
&gt; +            // Prevent document.open/write during reactions by allocating the incrementer before the reactions stack.

I would have put the comment before the incrementer variable.

&gt; LayoutTests/ChangeLog:10
&gt; +        doesn&apos;t test nearly as many edge cases.

I think it would be nice to export the new tests to upstream WPT (nice set of tests BTW!)

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html:1
&gt; +&lt;!DOCTYPE html&gt;

I think content was copied from throw-on-dynamic-markup-insertion-counter-reactions.html so see my review comments in the other file, since they apply here too.

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html:114
&gt; +async function custom_element_reactions_in_parser(test, call_function)

This function does not belong to that file, right?

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:61
&gt; +}, &apos;document.open(&quot;about:blank&quot;) must NOT throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);

I don&apos;t understand that test without investigating more the spec. Can you please explain?

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:73
&gt; +}, &apos;document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);

Maybe you want to use parenthesis or specify arguments in the text, for consistency with other cases? (same for writeln below)

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:76
&gt; +    const result = await custom_element_reactions_in_parser(this, (document) =&gt; document.write(&apos;&lt;b&gt;some text&lt;/b&gt;&apos;));

Should be writeln I guess.

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:105
&gt; +}, &apos;document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);

must not throw and for another document

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:109
&gt; +    const result = await custom_element_reactions_in_parser(this, (document) =&gt; another_window.document.write(&apos;&lt;b&gt;some text&lt;/b&gt;&apos;));

Again, I guess it&apos;s writeln

&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:112
&gt; +}, &apos;document.writeln must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);

must not throw and for another document</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448556</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 13:58:55 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #8)
&gt; Comment on attachment 346687 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=346687&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLDocumentParser.cpp:215
&gt; &gt; +            // Prevent document.open/write during reactions by allocating the incrementer before the reactions stack.
&gt; 
&gt; I would have put the comment before the incrementer variable.

Fixed.

&gt; &gt; LayoutTests/ChangeLog:10
&gt; &gt; +        doesn&apos;t test nearly as many edge cases.
&gt; 
&gt; I think it would be nice to export the new tests to upstream WPT (nice set
&gt; of tests BTW!)

Fixed.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html:1
&gt; &gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; I think content was copied from
&gt; throw-on-dynamic-markup-insertion-counter-reactions.html so see my review
&gt; comments in the other file, since they apply here too.
&gt; 
&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-construct.html:114
&gt; &gt; +async function custom_element_reactions_in_parser(test, call_function)
&gt; 
&gt; This function does not belong to that file, right?

Oops, removed.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:61
&gt; &gt; +}, &apos;document.open(&quot;about:blank&quot;) must NOT throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);
&gt; 
&gt; I don&apos;t understand that test without investigating more the spec. Can you
&gt; please explain?

Oh, oops, this should read as &quot;document.open(URL)&quot; since I&apos;m not using about:blank anymore. This is a version of document.open which behaves like window.open:
https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open-window

Added a comment above this test case.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:73
&gt; &gt; +}, &apos;document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);
&gt; 
&gt; Maybe you want to use parenthesis or specify arguments in the text, for
&gt; consistency with other cases? (same for writeln below)

I only put () to other test cases because they&apos;re two variants of document.open. The one which takes optional type argument and the one which takes URL, target, and features. That&apos;s not the case here for document.write.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:76
&gt; &gt; +    const result = await custom_element_reactions_in_parser(this, (document) =&gt; document.write(&apos;&lt;b&gt;some text&lt;/b&gt;&apos;));
&gt; 
&gt; Should be writeln I guess.

Oops, fixed.

&gt; 
&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:105
&gt; &gt; +}, &apos;document.write must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);
&gt; 
&gt; must not throw and for another document

Fixed.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:109
&gt; &gt; +    const result = await custom_element_reactions_in_parser(this, (document) =&gt; another_window.document.write(&apos;&lt;b&gt;some text&lt;/b&gt;&apos;));
&gt; 
&gt; Again, I guess it&apos;s writeln

Fixed.

&gt; &gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:112
&gt; &gt; +}, &apos;document.writeln must throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);
&gt; 
&gt; must not throw and for another document

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448560</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:02:49 -0700</bug_when>
    <thetext>Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448564</commentid>
    <comment_count>11</comment_count>
      <attachid>346729</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:04:18 -0700</bug_when>
    <thetext>Created attachment 346729
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448567</commentid>
    <comment_count>12</comment_count>
      <attachid>346729</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-07 14:05:30 -0700</bug_when>
    <thetext>Comment on attachment 346729
Patch for landing

Rejecting attachment 346729 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 346729, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/8791153</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448574</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:10:10 -0700</bug_when>
    <thetext>Ugh... git is a fucking nightmare.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448576</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:13:09 -0700</bug_when>
    <thetext>Committed r234669: &lt;https://trac.webkit.org/changeset/234669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448578</commentid>
    <comment_count>15</comment_count>
    <who name="Timothy Gu">timothygu99</who>
    <bug_when>2018-08-07 14:16:52 -0700</bug_when>
    <thetext>Is it just me or does https://trac.webkit.org/changeset/234669/webkit not contain any changes to Source/WebCore/ besides the ChangeLog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448579</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:18:38 -0700</bug_when>
    <thetext>No, you&apos;re right :( Sigh... WTF.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448581</commentid>
    <comment_count>17</comment_count>
      <attachid>346729</attachid>
    <who name="Timothy Gu">timothygu99</who>
    <bug_when>2018-08-07 14:19:46 -0700</bug_when>
    <thetext>Comment on attachment 346729
Patch for landing

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

&gt; Source/WebCore/dom/Document.cpp:2615
&gt;      // FIXME: This should also throw if &quot;document&apos;s throw-on-dynamic-markup-insertion counter is greater than 0&quot;.

This FIXME should be removed also. Ditto elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448582</commentid>
    <comment_count>18</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:20:03 -0700</bug_when>
    <thetext>Git needs to burn in hell.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448584</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-07 14:20:56 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 188390</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448587</commentid>
    <comment_count>20</comment_count>
      <attachid>346729</attachid>
    <who name="Timothy Gu">timothygu99</who>
    <bug_when>2018-08-07 14:21:07 -0700</bug_when>
    <thetext>Comment on attachment 346729
Patch for landing

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

&gt;&gt; Source/WebCore/dom/Document.cpp:2615
&gt;&gt;      // FIXME: This should also throw if &quot;document&apos;s throw-on-dynamic-markup-insertion counter is greater than 0&quot;.
&gt; 
&gt; This FIXME should be removed also. Ditto elsewhere.

This FIXME should be removed also. Ditto elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448588</commentid>
    <comment_count>21</comment_count>
    <who name="Timothy Gu">timothygu99</who>
    <bug_when>2018-08-07 14:21:39 -0700</bug_when>
    <thetext>Oops double commenting… First time using Bugzilla&apos;s Review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448595</commentid>
    <comment_count>22</comment_count>
      <attachid>346735</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:47:26 -0700</bug_when>
    <thetext>Created attachment 346735
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448596</commentid>
    <comment_count>23</comment_count>
      <attachid>346735</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 14:47:39 -0700</bug_when>
    <thetext>Comment on attachment 346735
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448636</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-07 16:54:28 -0700</bug_when>
    <thetext>Committed r234680: &lt;https://trac.webkit.org/changeset/234680&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448701</commentid>
    <comment_count>25</comment_count>
      <attachid>346687</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2018-08-08 00:29:18 -0700</bug_when>
    <thetext>Comment on attachment 346687
Fixes the bug

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

&gt;&gt;&gt; LayoutTests/ChangeLog:10
&gt;&gt;&gt; +        doesn&apos;t test nearly as many edge cases.
&gt;&gt; 
&gt;&gt; I think it would be nice to export the new tests to upstream WPT (nice set of tests BTW!)
&gt; 
&gt; Fixed.

What do you mean by &apos;Fixed&apos;? I can&apos;t find any PR to export tests to the WPT repo on your GitHub activity nor any change in the git history.

&gt;&gt;&gt; LayoutTests/fast/custom-elements/throw-on-dynamic-markup-insertion-counter-reactions.html:61
&gt;&gt;&gt; +}, &apos;document.open(&quot;about:blank&quot;) must NOT throw an InvalidStateError when processing custom element reactions for a synchronous constructed custom element&apos;);
&gt;&gt; 
&gt;&gt; I don&apos;t understand that test without investigating more the spec. Can you please explain?
&gt; 
&gt; Oh, oops, this should read as &quot;document.open(URL)&quot; since I&apos;m not using about:blank anymore. This is a version of document.open which behaves like window.open:
&gt; https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open-window
&gt; 
&gt; Added a comment above this test case.

Ah OK I was confused by the about:blank. Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448811</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-08-08 12:49:26 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #25)
&gt; Comment on attachment 346687 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=346687&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; LayoutTests/ChangeLog:10
&gt; &gt;&gt;&gt; +        doesn&apos;t test nearly as many edge cases.
&gt; &gt;&gt; 
&gt; &gt;&gt; I think it would be nice to export the new tests to upstream WPT (nice set of tests BTW!)
&gt; &gt; 
&gt; &gt; Fixed.
&gt; 
&gt; What do you mean by &apos;Fixed&apos;? I can&apos;t find any PR to export tests to the WPT
&gt; repo on your GitHub activity nor any change in the git history.

Oh, that was meant for something else. Feel free to create a WPT PR. I&apos;m not going to get to it anytime soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1449646</commentid>
    <comment_count>27</comment_count>
    <who name="darshan">dkadu</who>
    <bug_when>2018-08-13 09:14:24 -0700</bug_when>
    <thetext>Submitted web-platform-tests pull request: https://github.com/web-platform-tests/wpt/pull/12447</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346686</attachid>
            <date>2018-08-06 22:38:43 -0700</date>
            <delta_ts>2018-08-06 22:41:23 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-187319-20180806223842.patch</filename>
            <type>text/plain</type>
            <size>33284</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlkYTlmZDIzOGE4Mjlh
NzBmOTg5YTRhMWExZTQxZmI5NGQ5NGY0OC4uNjkwNGQ0MWVkZDIwYWE3MDdmMzA3MmVmYTY0ZTY0
YTBhM2U5YTBjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA4LTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50Lm9wZW4gYW5k
IGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwgcGFyc2VyIGlzIHN5bmNo
cm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBkb2N1bWVudC5vcGVuLCBkb2N1bWVudC53cml0ZSwgZG9jdW1lbnQud3Jp
dGVsbiwgYW5kIGRvY3VtZW50LmNsb3NlIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGR1cmluZwor
ICAgICAgICBhIHN5bmNocm9ub3VzIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdGlvbiBhcyBzcGVj
aWZpZWQ6CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Bh
cnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCisgICAgICAgIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlv
bi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWlu
c2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3Rv
bS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFj
dGlvbnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6b3BlbkZvckJpbmRpbmdzKTogVGhyb3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBtX3Rocm93
T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQgaXMgbm9uLXplcm8uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y2xvc2VGb3JCaW5kaW5ncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndyaXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d3JpdGVsbik6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRv
bS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5j
cmVtZW50ZXIpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRocm93T25EeW5hbWljTWFya3Vw
SW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcjo6VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25D
b3VudEluY3JlbWVudGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRocm93T25EeW5hbWljTWFya3Vw
SW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcjo6flRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9u
Q291bnRJbmNyZW1lbnRlcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0
c0ZvclBhdXNlZFRyZWVCdWlsZGVyKTogSW5zdGFudGlhdGUgVGhyb3dPbkR5bmFtaWNNYXJrdXBJ
bnNlcnRpb25Db3VudEluY3JlbWVudGVyLgorCiAyMDE4LTA4LTA1ICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEhUTUwgcGFyc2VyIHNob3VsZCBleGVjdXRlIGN1
c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Igc2V0dGluZyBhdHRyaWJ1dGVzIGltbWVkaWF0ZWx5
IGFmdGVyIGNyZWF0aW5nIGEgY3VzdG9tIGVsZW1lbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjZWU4ZDdlZjdjMzM2ZTI1NTY0
ZTlhMjE3Y2RhMDAyODQxOTk5ODQ5Li4zM2NmNDEyNjAwOTkyMjc4YTgyY2Q1YzgzYzhkNmU5OWFi
NTVjNjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDg1MSw2ICsxMDg1MSw3IEBACiAJCTlCMzJDREE4MTNERjdGQTkwMEYz
NEQxMyAvKiBSZW5kZXJlZFBvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFJlbmRlcmVkUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjQxNzA2MjEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29t
bWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2MzEyNTY2MkIzMDA2
QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCNDM3NkVGMjExN0U4NzIwMDlEMDNBMCAvKiBUaHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTBCMURDMTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFt
ZWRJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1OYW1lZEl0ZW0u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1MzJFQTExQkE5Mjg1NzAwMzhBODI3
IC8qIFNsb3RBc3NpZ25tZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNsb3RBc3NpZ25tZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1
MzJFQTIxQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNsb3RBc3NpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yNjYxNCw2ICsyNjYxNSw3IEBACiAJCQkJMEYyNkE3QUMyMDU1QzhENzAwOTBB
MTQxIC8qIFhNTERvY3VtZW50LmNwcCAqLywKIAkJCQk4MzA3ODRCMTFDNTJFRTE5MDAxMDREMUQg
LyogWE1MRG9jdW1lbnQuaCAqLywKIAkJCQk4MzA3ODRCMDFDNTJFRTE5MDAxMDREMUQgLyogWE1M
RG9jdW1lbnQuaWRsICovLAorCQkJCTlCNDM3NkVGMjExN0U4NzIwMDlEMDNBMCAvKiBUaHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCAqLywKIAkJCSk7CiAJCQlw
YXRoID0gZG9tOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCmluZGV4IGQwZWJlNmZmN2Y5ODRlNzIzNzcyZmUxNGYzYzUxNDQwODRmYmU0NmIuLjUyMDMy
NTdhYjY0NzYyZjk5NWVlNTg2Yzg1ODAyNDdmNDcxYjhhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcApAQCAtMjYwOSw3ICsyNjA5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5
Pj4gRG9jdW1lbnQ6Om9wZW5Gb3JCaW5kaW5ncyhET01XaW5kb3cmIGFjdGl2ZVdpbmQKIC8vIEZJ
WE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhlICd0eXBlJyBhbmQgJ3JlcGxhY2UnIHBhcmFtZXRlcnMu
CiBFeGNlcHRpb25PcjxEb2N1bWVudCY+IERvY3VtZW50OjpvcGVuRm9yQmluZGluZ3MoRG9jdW1l
bnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7
Ci0gICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8
fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hv
dWxkIGFsc28gdGhyb3cgaWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5z
ZXJ0aW9uIGNvdW50ZXIgaXMgZ3JlYXRlciB0aGFuIDAiLgpAQCAtMjc1Myw3ICsyNzUzLDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OmNsb3NlRm9yQmluZGluZ3MoKQogICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgZm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2VseToKICAg
ICAvLyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jZG9tLWRvY3VtZW50LWNsb3NlCiAKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisg
ICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRp
b25Db3VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07
CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0
aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4g
MCIuCkBAIC0yOTg0LDcgKzI5ODQsNyBAQCB2b2lkIERvY3VtZW50Ojp3cml0ZShEb2N1bWVudCog
cmVzcG9uc2libGVEb2N1bWVudCwgU2VnbWVudGVkU3RyaW5nJiYgdGV4dCkKIAogRXhjZXB0aW9u
T3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50LCBW
ZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7Ci0gICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpKQor
ICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0
aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9
OwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cgaWYgImRvY3VtZW50J3Mg
dGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIgaXMgZ3JlYXRlciB0aGFu
IDAiLgpAQCAtMzAwMSw3ICszMDAxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6Ondy
aXRlKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYKIAogRXhj
ZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9j
dW1lbnQsIFZlY3RvcjxTdHJpbmc+JiYgc3RyaW5ncykKIHsKLSAgICBpZiAoIWlzSFRNTERvY3Vt
ZW50KCkpCisgICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJr
dXBJbnNlcnRpb25Db3VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yIH07CiAKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9j
dW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVh
dGVyIHRoYW4gMCIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDgzYjA4ODljMDk5ODQ5ODRmYTI2
ODM1NGE4ZjQ3MTQ1YmU3YzI4MmIuLmYwZGUwMWE0MmQyYTU4YTczNzdkY2Q1ZWI5OGZlMjIyZTgw
ZGFjYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xNDgwLDggKzE0ODAsOSBAQCBwcm90ZWN0
ZWQ6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudFBhcnNlcllpZWxkVG9rZW47
CiAgICAgZnJpZW5kIGNsYXNzIE5vZGU7Ci0gICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOworICAgIGZyaWVuZCBjbGFzcyBUaHJvd09uRHluYW1p
Y01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXI7CiAgICAgZnJpZW5kIGNsYXNzIElnbm9y
ZU9wZW5zRHVyaW5nVW5sb2FkQ291bnRJbmNyZW1lbnRlcjsKKyAgICBmcmllbmQgY2xhc3MgSWdu
b3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKICAgICBib29sIHNob3VsZElu
aGVyaXRDb250ZW50U2VjdXJpdHlQb2xpY3lGcm9tT3duZXIoKSBjb25zdDsKIApAQCAtMTg1NCwx
MiArMTg1NSwxNSBAQCBwcml2YXRlOgogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQgeyAw
IH07CiAgICAgdW5zaWduZWQgbV9sYXN0U3R5bGVVcGRhdGVTaXplRm9yVGVzdGluZyB7IDAgfTsK
IAotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFw
aXMuaHRtbCNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKLSAgICB1bnNpZ25lZCBt
X2lnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudCB7IDAgfTsKKyAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCN0
aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlcgorICAgIHVuc2lnbmVkIG1f
dGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCB7IDAgfTsKIAotICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpZ25vcmUt
b3BlbnMtZHVyaW5nLXVubG9hZC1jb3VudGVyCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjaWdub3JlLW9w
ZW5zLWR1cmluZy11bmxvYWQtY291bnRlcgogICAgIHVuc2lnbmVkIG1faWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudCB7IDAgfTsKIAorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2lnbm9yZS1kZXN0cnVj
dGl2ZS13cml0ZXMtY291bnRlcgorICAgIHVuc2lnbmVkIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0
ZUNvdW50IHsgMCB9OworCiAgICAgdW5zaWduZWQgbV9hY3RpdmVQYXJzZXJDb3VudCB7IDAgfTsK
ICAgICB1bnNpZ25lZCBtX3N0eWxlUmVjYWxjQ291bnQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVt
ZW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlv
bkNvdW50SW5jcmVtZW50ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTdmOWE5NjZiNzMxNDg3MWMyMzJkNzVl
NWM5MTYxNDlmYWFiNTRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ro
cm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNl
cnRpb25Db3VudEluY3JlbWVudGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIpOworcHVibGljOgorICAgIGV4
cGxpY2l0IFRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcihEb2N1
bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAgIHsKKyAgICAg
ICAgKytkb2N1bWVudC5tX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQ7CisgICAg
fQorCisgICAgflRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcigp
CisgICAgeworICAgICAgICBBU1NFUlQobV9kb2N1bWVudC0+bV90aHJvd09uRHluYW1pY01hcmt1
cEluc2VydGlvbkNvdW50KTsKKyAgICAgICAgLS1tX2RvY3VtZW50LT5tX3Rocm93T25EeW5hbWlj
TWFya3VwSW5zZXJ0aW9uQ291bnQ7CisgICAgfQorCitwcml2YXRlOgorICAgIFJlZjxEb2N1bWVu
dD4gbV9kb2N1bWVudDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAz
ZjNlNzk5M2VkOWM3MzUzODFjMzE0ZTg5N2E3Yjg1OWUxZTYzNGI5Li5jZDA5NmQ4OGZlY2EyMWM3
NTVhNTYwOGI5NTFkNDA5NjRhOTJiOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRl
ICJMaW5rTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1
ZGUgIlNjcmlwdEVsZW1lbnQuaCIKKyNpbmNsdWRlICJUaHJvd09uRHluYW1pY01hcmt1cEluc2Vy
dGlvbkNvdW50SW5jcmVtZW50ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yMTAs
NiArMjExLDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRU
cmVlQnVpbGRlcigpCiAKICAgICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8j
Y3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10b2tlbgogICAgICAgICB7CisgICAgICAgICAgICBU
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIgaW5jcmVtZW50ZXIo
KmRvY3VtZW50KCkpOworICAgICAgICAgICAgLy8gUHJldmVudCBkb2N1bWVudC5vcGVuL3dyaXRl
IGR1cmluZyByZWFjdGlvbnMgYnkgYWxsb2NhdGluZyB0aGUgaW5jcmVtZW50ZXIgYmVmb3JlIHRo
ZSByZWFjdGlvbnMgc3RhY2suCiAgICAgICAgICAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFj
ayByZWFjdGlvblN0YWNrKGRvY3VtZW50KCktPmV4ZWNTdGF0ZSgpKTsKICAgICAgICAgICAgIGF1
dG8mIGVsZW1lbnRJbnRlcmZhY2UgPSBjb25zdHJ1Y3Rpb25EYXRhLT5lbGVtZW50SW50ZXJmYWNl
LmdldCgpOwogICAgICAgICAgICAgYXV0byBuZXdFbGVtZW50ID0gZWxlbWVudEludGVyZmFjZS5j
b25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKCpkb2N1bWVudCgpLCBjb25zdHJ1Y3Rpb25EYXRh
LT5uYW1lKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCA5ODFjYTQ1ZTM0MTI3YWU2Y2UxZWI4Yjc5OTk2YTY0YjI1ZjRhMGEw
Li40MDhmMmJjNWQ0NDk2NTBlYTUwZjM3YzlkZjRhOTQ4M2I1NTVhMTUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTgtMDgtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgZG9jdW1lbnQub3BlbiBhbmQgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyB3aGls
ZSB0aGUgSFRNTCBwYXJzZXIgaXMgc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20g
ZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg3MzE5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Mjg0MzAxMj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBXM0Mgc3R5bGUgdGVzdGhh
cm5lc3MuanMgdGVzdHMuIFRoZSBXUFQgdGVzdCBhZGRlZCBieSBodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9wdWxsLzEyMDM3CisgICAgICAgIGRvZXNuJ3QgdGVzdCBu
ZWFybHkgYXMgbWFueSBlZGdlIGNhc2VzLgorCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVu
dHMvcmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9u
LWNvdW50ZXItY29uc3RydWN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9j
dXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIt
Y29uc3RydWN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Ro
cm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5
bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sOiBBZGRlZC4KKwog
MjAxOC0wOC0wNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW01lZGlhQ2FwYWJpbGl0aWVzXSBQbGF0Zm9ybSBpbnRlZ3JhdGlvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL25hdmlnYXRpb24t
ZGVzdGluYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291
cmNlcy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWRlOGQyYzZlYjEz
ZWEwZDhiNjMzNzgwMTYwODExNTU5ZTI4Mzk1MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9u
Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8
cD5OYXZpZ2F0ZWQhPC9wPgorPHNjcmlwdD4KK3BhcmVudC5wb3N0TWVzc2FnZSgnZGlkTmF2aWdh
dGUnLCAnKicpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNl
cnRpb24tY291bnRlci1jb25zdHJ1Y3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIt
Y29uc3RydWN0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42OTgwODA0MDQxYTZjYTdlY2MzMDk5
OWM3ZGIwYmQ5YmJhMmQyMjNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
dXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIt
Y29uc3RydWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACisKK1BBU1MgZG9jdW1lbnQu
b3BlbigpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5
IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJ0ZXh0
L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNs
eSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQub3BlbigiYWJv
dXQ6YmxhbmsiKSBtdXN0IE5PVCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNo
cm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LmNs
b3NlKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkg
Y29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LndyaXRlIG11c3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGlu
ZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3Rv
bSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0
IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3Ry
dWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIp
IG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
d2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBk
b2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBl
bGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4g
c3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJr
dXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1j
b25zdHJ1Y3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjQ4YzJjYzUzNmVjOGI3YTU4YjVmNDUzMDI5Y2Jm
NDczZTkwZmQyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0
Lmh0bWwKQEAgLTAsMCArMSwxNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IGNyZWF0ZSBhbiBlbGVtZW50IGZvciBhIHRva2VuIG11
c3QgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZG9jdW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1h
cmt1cC1pbnNlcnRpb24gY291bnRlcjwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxl
PSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5h
bWU9ImFzc2VydCIgY29udGVudD0iSW52b2tpbmcgZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3Jp
dGUsIGRvY3VtZW50LndyaXRlbG4sIGFuZCBkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIGV4
Y2VwdGlvbiB3aGVuIHRoZSBIVE1MIHBhcnNlciBpcyBjcmVhdGluZyBhIGN1c3RvbSBlbGVtZW50
IGZvciBhIHRva2VuIj4KKzxtZXRhIG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1m
b3ItdGhlLXRva2VuIj4KKzxtZXRhIG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5z
cGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI3Ro
cm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyIj4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMv
cmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9u
IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGVzdCwgY2FsbF9mdW5jdGlvbikK
K3sKKyAgICBjb25zdCB3aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGVzdCk7
CisgICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CisKKyAgICBkb2N1bWVudC5v
cGVuKCk7CisKKyAgICBsZXQgZXhlY3V0ZWQgPSBmYWxzZTsKKyAgICBsZXQgZXhjZXB0aW9uID0g
bnVsbDsKKyAgICBjbGFzcyBDdXN0b21FbGVtZW50IGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50
IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7CisgICAgICAgICAgICBzdXBlcigpOworICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjYWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3aW5k
b3cpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBleGNl
cHRpb24gPSBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1
ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdz
b21lLWVsZW1lbnQnLCBDdXN0b21FbGVtZW50KTsKKworICAgIGRvY3VtZW50LndyaXRlKCc8IURP
Q1RZUEUgaHRtbD48aHRtbD48Ym9keT48c29tZS1lbGVtZW50Pjwvc29tZS1lbGVtZW50PjwvYm9k
eT48L2h0bWw+Jyk7CisgICAgZG9jdW1lbnQuY2xvc2UoKTsKKworICAgIGFzc2VydF90cnVlKGV4
ZWN1dGVkLCAnTXVzdCBzeW5jaHJvbm91c2x5IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQn
KTsKKyAgICByZXR1cm4ge3dpbmRvdywgZG9jdW1lbnQsIGV4Y2VwdGlvbn07Cit9CisKK3Byb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29u
c3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3Vt
ZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9y
J30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVs
ZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBy
ZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChk
b2N1bWVudCkgPT4gZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOworICAgIGFzc2VydF90aHJv
d3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNl
cHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1l
bnQub3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVu
IHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgbG9hZF9wcm9taXNlID0gbmV3IFBy
b21pc2UoKHJlc29sdmUpID0+IHdpbmRvdy5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IHJlc29sdmUo
ZXZlbnQuZGF0YSkpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21f
ZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50LCB3aW5kb3cpID0+IGRvY3VtZW50Lm9w
ZW4oJ3Jlc291cmNlcy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWwnLCAnX3NlbGYnLCAnJykp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0
X2VxdWFscyhhd2FpdCBsb2FkX3Byb21pc2UsICdkaWROYXZpZ2F0ZScpOworfSwgJ2RvY3VtZW50
Lm9wZW4oImFib3V0OmJsYW5rIikgbXVzdCBOT1QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Ig
d2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3By
b21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQg
Y29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRv
Y3VtZW50LmNsb3NlKCkpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVF
cnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQuY2xvc2UoKSBtdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0
b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNv
bnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhp
cywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAg
ICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJv
dyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicp
OworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwg
bnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9mYWxzZShy
ZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0
ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVudC53cml0
ZSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25z
dHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rp
b24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVu
dF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0
ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3In
fSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAg
IGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5p
bmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30s
ICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBz
eW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2Vf
dGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2Fp
dCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQg
Y29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFu
b3RoZXJfd2luZG93LmRvY3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1bWVu
dCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkg
Y29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1
bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5k
b3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3Vz
dG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cu
ZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4
Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgb2YgYW5vdGhl
ciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNo
cm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNy
ZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25z
dHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhl
cl93aW5kb3cuZG9jdW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhj
ZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQg
bXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNv
bnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5j
dGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93
X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3Rv
bV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRv
Y3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF9lcXVhbHMocmVz
dWx0LmV4Y2VwdGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyX3dpbmRvdy5k
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJykub3V0ZXJIVE1MLCAnPGI+c29tZSB0ZXh0PC9iPicp
OworfSwgJ2RvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBh
d2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGFub3RoZXJfd2luZG93LmRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFs
cyhhbm90aGVyX3dpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJykub3V0ZXJIVE1MLCAn
PGI+c29tZSB0ZXh0PC9iPicpOworfSwgJ2RvY3VtZW50LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9t
IGVsZW1lbnQnKTsKKworYXN5bmMgZnVuY3Rpb24gY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2lu
X3BhcnNlcih0ZXN0LCBjYWxsX2Z1bmN0aW9uKQoreworICAgIGNvbnN0IHdpbmRvdyA9IGF3YWl0
IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0ZXN0KTsKKyAgICBjb25zdCBkb2N1bWVudCA9IHdpbmRv
dy5kb2N1bWVudDsKKworICAgIGRvY3VtZW50Lm9wZW4oKTsKKworICAgIGxldCBleGVjdXRlZCA9
IGZhbHNlOworICAgIGxldCBleGNlcHRpb24gPSBudWxsOworICAgIGNsYXNzIEN1c3RvbUVsZW1l
bnQgZXh0ZW5kcyB3aW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICBhdHRyaWJ1dGVDaGFuZ2Vk
Q2FsbGJhY2sobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSB7CisgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgIGNhbGxfZnVuY3Rpb24oZG9jdW1lbnQsIHdpbmRvdyk7CisgICAgICAg
ICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGVycm9y
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhlY3V0ZWQgPSB0cnVlOworICAgICAgICB9
CisgICAgfQorICAgIEN1c3RvbUVsZW1lbnQuYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrID0gWyd0
aXRsZSddOworICAgIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ3NvbWUtZWxlbWVudCcs
IEN1c3RvbUVsZW1lbnQpOworCisgICAgZG9jdW1lbnQud3JpdGUoJzwhRE9DVFlQRSBodG1sPjxo
dG1sPjxib2R5Pjxzb21lLWVsZW1lbnQ+PC9zb21lLWVsZW1lbnQ+PC9ib2R5PjwvaHRtbD4nKTsK
KyAgICBkb2N1bWVudC5jbG9zZSgpOworCisgICAgYXNzZXJ0X3RydWUoZXhlY3V0ZWQsICdNdXN0
IHN5bmNocm9ub3VzbHkgaW5zdGFudGlhdGUgYSBjdXN0b20gZWxlbWVudCcpOworICAgIHJldHVy
biB7ZnJhbWVFbGVtZW50LCB3aW5kb3csIGRvY3VtZW50LCBleGNlcHRpb259OworfQorCis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Vz
dG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJl
YWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90
aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBmZWI5ZDQxZjQxZmRjZWI2OWFhNDA4OWYwNDdlZWNmOWU5MzY2
M2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90
aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworUEFTUyBkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVh
Y3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFT
UyBkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hy
b25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oImFi
b3V0OmJsYW5rIikgbXVzdCBOT1QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9j
ZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1
Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQuY2xvc2UoKSBtdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlv
bnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRv
Y3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNz
aW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3Rl
ZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMg
Zm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3Vt
ZW50Lm9wZW4oKSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEg
c3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9w
ZW4oInRleHQvaHRtbCIpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBm
b3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1l
bnQuY2xvc2UoKSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEg
c3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lndy
aXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3Rv
bSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20g
ZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3lu
Y2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2Vy
dGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25z
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTdhZmJmMGMyOTBmOWVhMjEwM2NhNTcxOGYzMDJmMDVjMWI2MmI2
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Ro
cm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCkBA
IC0wLDAgKzEsMTE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q3VzdG9tIEVsZW1lbnRzOiBjcmVhdGUgYW4gZWxlbWVudCBmb3IgYSB0b2tlbiBtdXN0IGluY3Jl
bWVudCBhbmQgZGVjcmVtZW50IGRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5z
ZXJ0aW9uIGNvdW50ZXI8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3Vr
ZSBOaXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3Nl
cnQiIGNvbnRlbnQ9Ikludm9raW5nIGRvY3VtZW50Lm9wZW4sIGRvY3VtZW50LndyaXRlLCBkb2N1
bWVudC53cml0ZWxuLCBhbmQgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBleGNlcHRpb24g
d2hlbiB0aGUgSFRNTCBwYXJzZXIgaXMgY3JlYXRpbmcgYSBjdXN0b20gZWxlbWVudCBmb3IgYSB0
b2tlbiI+Cis8bWV0YSBuYW1lPSJoZWxwIiBjb250ZW50PSJodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10
b2tlbiI+Cis8bWV0YSBuYW1lPSJoZWxwIiBjb250ZW50PSJodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCN0aHJvdy1vbi1k
eW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlciI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNl
cy9jdXN0b20tZWxlbWVudHMtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxkaXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBjdXN0b21f
ZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRlc3QsIGNhbGxfZnVuY3Rpb24pCit7CisgICAg
Y29uc3Qgd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRlc3QpOworICAgIGNv
bnN0IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OworCisgICAgZG9jdW1lbnQub3BlbigpOwor
CisgICAgbGV0IGV4ZWN1dGVkID0gZmFsc2U7CisgICAgbGV0IGV4Y2VwdGlvbiA9IG51bGw7Cisg
ICAgY2xhc3MgQ3VzdG9tRWxlbWVudCBleHRlbmRzIHdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAg
ICAgIGF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayhuYW1lLCBvbGRWYWx1ZSwgbmV3VmFsdWUpIHsK
KyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY2FsbF9mdW5jdGlvbihkb2N1bWVu
dCwgd2luZG93KTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICAg
ICAgZXhjZXB0aW9uID0gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleGVjdXRl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgQ3VzdG9tRWxlbWVudC5vYnNlcnZlZEF0
dHJpYnV0ZXMgPSBbJ3RpdGxlJ107CisgICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgn
c29tZS1lbGVtZW50JywgQ3VzdG9tRWxlbWVudCk7CisKKyAgICBkb2N1bWVudC53cml0ZSgnPCFE
T0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PHNvbWUtZWxlbWVudCB0aXRsZT0ic29tZSB0aXRsZSI+
PC9zb21lLWVsZW1lbnQ+PC9ib2R5PjwvaHRtbD4nKTsKKyAgICBkb2N1bWVudC5jbG9zZSgpOwor
CisgICAgYXNzZXJ0X3RydWUoZXhlY3V0ZWQsICdNdXN0IGltbWVkaWF0ZWx5IHByb2Nlc3MgY3Vz
dG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBzZXR0aW5nIGF0dHJpYnV0ZXMnKTsKKyAgICByZXR1
cm4ge2ZyYW1lRWxlbWVudCwgd2luZG93LCBkb2N1bWVudCwgZXhjZXB0aW9ufTsKK30KKworcHJv
bWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBj
dXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9j
dW1lbnQub3BlbigpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvcicpOworfSwgJ2RvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMg
Zm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlz
ZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0
b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1l
bnQub3BlbigndGV4dC9odG1sJykpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlk
U3RhdGVFcnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1s
IikgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9t
IGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBl
bGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgbGV0IGxv
YWRfcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB3aW5kb3cub25tZXNzYWdlID0g
KGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEpKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2Fp
dCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCwgd2lu
ZG93KSA9PiBkb2N1bWVudC5vcGVuKCdyZXNvdXJjZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5o
dG1sJywgJ19zZWxmJywgJycpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24s
IG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYXdhaXQgbG9hZF9wcm9taXNlLCAnZGlkTmF2aWdh
dGUnKTsKK30sICdkb2N1bWVudC5vcGVuKCJhYm91dDpibGFuayIpIG11c3QgTk9UIHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlv
bnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBj
dXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9j
dW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVy
cm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4g
SW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9u
cyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1
c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1
bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1l
OiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9
LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2Vy
dCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNl
cnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9y
IGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21f
ZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQu
d3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0lu
dmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011
c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3
IGNvbnRlbnQnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5l
dyBjb250ZW50Jyk7Cit9LCAnZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEg
c3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0
KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNy
ZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0
b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhl
cl93aW5kb3cuZG9jdW1lbnQub3BlbigpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNl
cHRpb24sIG51bGwpOworfSwgJ2RvY3VtZW50Lm9wZW4oKSBvZiBhbm90aGVyIGRvY3VtZW50IG11
c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20g
ZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVs
ZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBh
bm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBj
b25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRo
aXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQub3BlbigndGV4dC9odG1s
JykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9j
dW1lbnQub3BlbigidGV4dC9odG1sIikgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVh
Y3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5k
b3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0
ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1l
bnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50LmNsb3NlKCkpOworICAgIGFzc2VydF9lcXVh
bHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQuY2xvc2UoKSBvZiBhbm90
aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJv
Y2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3Ry
dWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgp
IHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVz
dCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlv
bnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQu
d3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhj
ZXB0aW9uLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFub3RoZXJfd2luZG93LmRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ2InKS5vdXRlckhUTUwsICc8Yj5zb21lIHRleHQ8L2I+Jyk7Cit9LCAn
ZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nl
c3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVj
dGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7
CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3Qo
dGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25z
X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50Lndy
aXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2Vw
dGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyX3dpbmRvdy5kb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCdiJykub3V0ZXJIVE1MLCAnPGI+c29tZSB0ZXh0PC9iPicpOworfSwgJ2Rv
Y3VtZW50LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nl
c3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVj
dGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346687</attachid>
            <date>2018-08-06 22:41:25 -0700</date>
            <delta_ts>2018-08-07 14:04:16 -0700</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-187319-20180806224124.patch</filename>
            <type>text/plain</type>
            <size>33501</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlkYTlmZDIzOGE4Mjlh
NzBmOTg5YTRhMWExZTQxZmI5NGQ5NGY0OC4uYzIyZTE4MjE0YmI2NmIzYmQ5ZDg3ODU5ZjcyNDM0
ODNmMzE2Y2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA4LTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50Lm9wZW4gYW5k
IGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwgcGFyc2VyIGlzIHN5bmNo
cm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBkb2N1bWVudC5vcGVuLCBkb2N1bWVudC53cml0ZSwgZG9jdW1lbnQud3Jp
dGVsbiwgYW5kIGRvY3VtZW50LmNsb3NlIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGR1cmluZwor
ICAgICAgICBhIHN5bmNocm9ub3VzIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdGlvbiBhcyBzcGVj
aWZpZWQ6CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Bh
cnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCisgICAgICAgIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlv
bi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWlu
c2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3Rv
bS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFj
dGlvbnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6b3BlbkZvckJpbmRpbmdzKTogVGhyb3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBtX3Rocm93
T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQgaXMgbm9uLXplcm8uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y2xvc2VGb3JCaW5kaW5ncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndyaXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d3JpdGVsbik6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBSZS1vcmRlcmVkIHRo
ZSByZWxhdGVkIGluc3RhbmNlIHZhcmlhYmxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4g
dGhlIHNwZWMsIGFuZCB1cGRhdGVkIHNwZWMgVVJMcy4KKyAgICAgICAgKiBkb20vVGhyb3dPbkR5
bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNv
dW50SW5jcmVtZW50ZXI6OlRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1l
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNv
dW50SW5jcmVtZW50ZXI6On5UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVt
ZW50ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRU
cmVlQnVpbGRlcik6IEluc3RhbnRpYXRlIFRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291
bnRJbmNyZW1lbnRlci4KKwogMjAxOC0wOC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgZXhlY3V0ZSBjdXN0b20gZWxlbWVu
dCByZWFjdGlvbnMgZm9yIHNldHRpbmcgYXR0cmlidXRlcyBpbW1lZGlhdGVseSBhZnRlciBjcmVh
dGluZyBhIGN1c3RvbSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2VlOGQ3ZWY3YzMzNmUyNTU2NGU5YTIxN2NkYTAw
Mjg0MTk5OTg0OS4uMTk5NDUxMDMzOWQyNzA5OTVkNTE2Nzk0MmYxZjk0YTgzYzZmYjFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA4NTEsNiArMTA4NTEsNyBAQAogCQk5QjMyQ0RBODEzREY3RkE5MDBGMzREMTMgLyogUmVu
ZGVyZWRQb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJlZFBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcw
NjIxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QjQzNzZFRjIxMTdFODcyMDA5RDAzQTAgLyogVGhyb3dPbkR5bmFtaWNNYXJr
dXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93T25EeW5h
bWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtTmFtZWRJdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTMyRUExMUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNz
aWdubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90QXNz
aWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTMyRUEyMUJBOTI4
NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbG90QXNzaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjY1NjMsNiArMjY1NjQsNyBAQAogCQkJCUE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0
RXZlbnRJbnB1dFR5cGUuaCAqLywKIAkJCQlFNEQ5ODhCNTE3QkZFQjIxMDA4NEZCODggLyogVGV4
dE5vZGVUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0RDk4OEIzMTdCRkQxRjYwMDg0RkI4OCAvKiBU
ZXh0Tm9kZVRyYXZlcnNhbC5oICovLAorCQkJCTlCNDM3NkVGMjExN0U4NzIwMDlEMDNBMCAvKiBU
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCAqLywKIAkJCQkw
RjU0REQwNTE4ODFENUY1MDAzRUVEQkIgLyogVG91Y2guaCAqLywKIAkJCQkwRjU0REQwNjE4ODFE
NUY1MDAzRUVEQkIgLyogVG91Y2hFdmVudC5oICovLAogCQkJCTBGNTRERDA3MTg4MUQ1RjUwMDNF
RURCQiAvKiBUb3VjaExpc3QuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQwZWJl
NmZmN2Y5ODRlNzIzNzcyZmUxNGYzYzUxNDQwODRmYmU0NmIuLjUyMDMyNTdhYjY0NzYyZjk5NWVl
NTg2Yzg1ODAyNDdmNDcxYjhhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjYwOSw3
ICsyNjA5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRG9jdW1lbnQ6Om9w
ZW5Gb3JCaW5kaW5ncyhET01XaW5kb3cmIGFjdGl2ZVdpbmQKIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgdGhlICd0eXBlJyBhbmQgJ3JlcGxhY2UnIHBhcmFtZXRlcnMuCiBFeGNlcHRpb25PcjxE
b2N1bWVudCY+IERvY3VtZW50OjpvcGVuRm9yQmluZGluZ3MoRG9jdW1lbnQqIHJlc3BvbnNpYmxl
RG9jdW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgaWYgKCFpc0hU
TUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5h
bWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cg
aWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIg
aXMgZ3JlYXRlciB0aGFuIDAiLgpAQCAtMjc1Myw3ICsyNzUzLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gRG9jdW1lbnQ6OmNsb3NlRm9yQmluZGluZ3MoKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Zm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2VseToKICAgICAvLyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLWRvY3Vt
ZW50LWNsb3NlCiAKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKCFpc0hUTUxE
b2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0aHJvdy1vbi1keW5hbWlj
LW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4gMCIuCkBAIC0yOTg0LDcg
KzI5ODQsNyBAQCB2b2lkIERvY3VtZW50Ojp3cml0ZShEb2N1bWVudCogcmVzcG9uc2libGVEb2N1
bWVudCwgU2VnbWVudGVkU3RyaW5nJiYgdGV4dCkKIAogRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1l
bnQ6OndyaXRlKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYm
IHN0cmluZ3MpCiB7Ci0gICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1M
RG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cgaWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIgaXMgZ3JlYXRlciB0aGFuIDAiLgpAQCAtMzAwMSw3
ICszMDAxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiBy
ZXNwb25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYKIAogRXhjZXB0aW9uT3I8dm9pZD4g
RG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQsIFZlY3RvcjxT
dHJpbmc+JiYgc3RyaW5ncykKIHsKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisgICAgaWYg
KCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0aHJvdy1v
bi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4gMCIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDgzYjA4ODljMDk5ODQ5ODRmYTI2ODM1NGE4ZjQ3MTQ1YmU3
YzI4MmIuLmYwZGUwMWE0MmQyYTU4YTczNzdkY2Q1ZWI5OGZlMjIyZTgwZGFjYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xNDgwLDggKzE0ODAsOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudFBhcnNlcllpZWxkVG9rZW47CiAgICAgZnJpZW5kIGNs
YXNzIE5vZGU7Ci0gICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudElu
Y3JlbWVudGVyOworICAgIGZyaWVuZCBjbGFzcyBUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlv
bkNvdW50SW5jcmVtZW50ZXI7CiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZU9wZW5zRHVyaW5nVW5s
b2FkQ291bnRJbmNyZW1lbnRlcjsKKyAgICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKICAgICBib29sIHNob3VsZEluaGVyaXRDb250ZW50U2Vj
dXJpdHlQb2xpY3lGcm9tT3duZXIoKSBjb25zdDsKIApAQCAtMTg1NCwxMiArMTg1NSwxNSBAQCBw
cml2YXRlOgogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9sYXN0U3R5bGVVcGRhdGVTaXplRm9yVGVzdGluZyB7IDAgfTsKIAotICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpZ25vcmUt
ZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKLSAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudCB7IDAgfTsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCN0aHJvdy1vbi1keW5hbWlj
LW1hcmt1cC1pbnNlcnRpb24tY291bnRlcgorICAgIHVuc2lnbmVkIG1fdGhyb3dPbkR5bmFtaWNN
YXJrdXBJbnNlcnRpb25Db3VudCB7IDAgfTsKIAotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpZ25vcmUtb3BlbnMtZHVyaW5nLXVu
bG9hZC1jb3VudGVyCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjaWdub3JlLW9wZW5zLWR1cmluZy11bmxv
YWQtY291bnRlcgogICAgIHVuc2lnbmVkIG1faWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudCB7
IDAgfTsKIAorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5
bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2lnbm9yZS1kZXN0cnVjdGl2ZS13cml0ZXMtY291
bnRlcgorICAgIHVuc2lnbmVkIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50IHsgMCB9Owor
CiAgICAgdW5zaWduZWQgbV9hY3RpdmVQYXJzZXJDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBt
X3N0eWxlUmVjYWxjQ291bnQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44M2U3MWZhMzcxZjFhNmYzMGZiNGE1ZmFmODVmOGI3NzRiOGExZGY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rocm93T25EeW5hbWljTWFy
a3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3Jl
bWVudGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJvd09uRHluYW1pY01hcmt1cElu
c2VydGlvbkNvdW50SW5jcmVtZW50ZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFRocm93T25E
eW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQp
CisgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICB7CisgICAgICAgICsrZG9jdW1l
bnQubV90aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50OworICAgIH0KKworICAgIH5U
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPm1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25D
b3VudCk7CisgICAgICAgIC0tbV9kb2N1bWVudC0+bV90aHJvd09uRHluYW1pY01hcmt1cEluc2Vy
dGlvbkNvdW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggM2YzZTc5OTNlZDlj
NzM1MzgxYzMxNGU4OTdhN2I4NTllMWU2MzRiOS4uY2QwOTZkODhmZWNhMjFjNzU1YTU2MDhiOTUx
ZDQwOTY0YTkyYjk3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTGlua0xvYWRl
ci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
bGVtZW50LmgiCisjaW5jbHVkZSAiVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudElu
Y3JlbWVudGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjEwLDYgKzIxMSw4IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIo
KQogCiAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2NyZWF0ZS1hbi1l
bGVtZW50LWZvci10aGUtdG9rZW4KICAgICAgICAgeworICAgICAgICAgICAgVGhyb3dPbkR5bmFt
aWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyIGluY3JlbWVudGVyKCpkb2N1bWVudCgp
KTsKKyAgICAgICAgICAgIC8vIFByZXZlbnQgZG9jdW1lbnQub3Blbi93cml0ZSBkdXJpbmcgcmVh
Y3Rpb25zIGJ5IGFsbG9jYXRpbmcgdGhlIGluY3JlbWVudGVyIGJlZm9yZSB0aGUgcmVhY3Rpb25z
IHN0YWNrLgogICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgcmVhY3Rpb25T
dGFjayhkb2N1bWVudCgpLT5leGVjU3RhdGUoKSk7CiAgICAgICAgICAgICBhdXRvJiBlbGVtZW50
SW50ZXJmYWNlID0gY29uc3RydWN0aW9uRGF0YS0+ZWxlbWVudEludGVyZmFjZS5nZXQoKTsKICAg
ICAgICAgICAgIGF1dG8gbmV3RWxlbWVudCA9IGVsZW1lbnRJbnRlcmZhY2UuY29uc3RydWN0RWxl
bWVudFdpdGhGYWxsYmFjaygqZG9jdW1lbnQoKSwgY29uc3RydWN0aW9uRGF0YS0+bmFtZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOTgxY2E0NWUzNDEyN2FlNmNlMWViOGI3OTk5NmE2NGIyNWY0YTBhMC4uNDA4ZjJiYzVk
NDQ5NjUwZWE1MGYzN2M5ZGY0YTk0ODNiNTU1YTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE4LTA4LTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRv
Y3VtZW50Lm9wZW4gYW5kIGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwg
cGFyc2VyIGlzIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRlc3RoYXJuZXNzLmpzIHRl
c3RzLiBUaGUgV1BUIHRlc3QgYWRkZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvcHVsbC8xMjAzNworICAgICAgICBkb2Vzbid0IHRlc3QgbmVhcmx5IGFzIG1h
bnkgZWRnZSBjYXNlcy4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNl
cy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNv
bnN0cnVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1
cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTgtMDgtMDUg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNZWRp
YUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50ZWdyYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvbmF2aWdh
dGlvbi1kZXN0aW5hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZThkMmM2ZWIxM2VhMGQ4YjYzMzc4
MDE2MDgxMTU1OWUyODM5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sCkBAIC0w
LDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+TmF2aWdhdGVk
ITwvcD4KKzxzY3JpcHQ+CitwYXJlbnQucG9zdE1lc3NhZ2UoJ2RpZE5hdmlnYXRlJywgJyonKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50
ZXItY29uc3RydWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjk4MDgwNDA0MWE2Y2E3ZWNjMzA5OTljN2RiMGJkOWJi
YTJkMjIzZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitQQVNTIGRvY3VtZW50Lm9wZW4oKSBtdXN0
IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3Rp
bmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgbXVz
dCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0
aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oImFib3V0OmJsYW5rIikg
bXVzdCBOT1QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNv
bnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5jbG9zZSgpIG11c3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGlu
ZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIElu
dmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20g
ZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAK
K1BBU1MgZG9jdW1lbnQub3BlbigpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1
c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBvZiBhbm90aGVy
IGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hy
b25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQuY2xv
c2UoKSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5
bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50
LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlv
bi1jb3VudGVyLWNvbnN0cnVjdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVu
dHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2I0OGMyY2M1MzZlYzhiN2E1OGI1ZjQ1MzAyOWNiZjQ3M2U5MGZkMgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93
LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCkBAIC0w
LDAgKzEsMTQ1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q3Vz
dG9tIEVsZW1lbnRzOiBjcmVhdGUgYW4gZWxlbWVudCBmb3IgYSB0b2tlbiBtdXN0IGluY3JlbWVu
dCBhbmQgZGVjcmVtZW50IGRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0
aW9uIGNvdW50ZXI8L3RpdGxlPgorPG1ldGEgbmFtZT0iYXV0aG9yIiB0aXRsZT0iUnlvc3VrZSBO
aXdhIiBocmVmPSJtYWlsdG86cm5pd2FAd2Via2l0Lm9yZyI+Cis8bWV0YSBuYW1lPSJhc3NlcnQi
IGNvbnRlbnQ9Ikludm9raW5nIGRvY3VtZW50Lm9wZW4sIGRvY3VtZW50LndyaXRlLCBkb2N1bWVu
dC53cml0ZWxuLCBhbmQgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBleGNlcHRpb24gd2hl
biB0aGUgSFRNTCBwYXJzZXIgaXMgY3JlYXRpbmcgYSBjdXN0b20gZWxlbWVudCBmb3IgYSB0b2tl
biI+Cis8bWV0YSBuYW1lPSJoZWxwIiBjb250ZW50PSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10b2tl
biI+Cis8bWV0YSBuYW1lPSJoZWxwIiBjb250ZW50PSJodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCN0aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlciI+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNlcy9j
dXN0b20tZWxlbWVudHMtaGVscGVycy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxk
aXYgaWQ9ImxvZyI+PC9kaXY+Cis8c2NyaXB0PgorCithc3luYyBmdW5jdGlvbiBjb25zdHJ1Y3Rf
Y3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRlc3QsIGNhbGxfZnVuY3Rpb24pCit7CisgICAgY29u
c3Qgd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRlc3QpOworICAgIGNvbnN0
IGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OworCisgICAgZG9jdW1lbnQub3BlbigpOworCisg
ICAgbGV0IGV4ZWN1dGVkID0gZmFsc2U7CisgICAgbGV0IGV4Y2VwdGlvbiA9IG51bGw7CisgICAg
Y2xhc3MgQ3VzdG9tRWxlbWVudCBleHRlbmRzIHdpbmRvdy5IVE1MRWxlbWVudCB7CisgICAgICAg
IGNvbnN0cnVjdG9yKCkgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgY2FsbF9mdW5jdGlvbihkb2N1bWVudCwgd2luZG93KTsKKyAgICAg
ICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gZXJy
b3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleGVjdXRlZCA9IHRydWU7CisgICAgICAg
IH0KKyAgICB9CisgICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgnc29tZS1lbGVtZW50
JywgQ3VzdG9tRWxlbWVudCk7CisKKyAgICBkb2N1bWVudC53cml0ZSgnPCFET0NUWVBFIGh0bWw+
PGh0bWw+PGJvZHk+PHNvbWUtZWxlbWVudD48L3NvbWUtZWxlbWVudD48L2JvZHk+PC9odG1sPicp
OworICAgIGRvY3VtZW50LmNsb3NlKCk7CisKKyAgICBhc3NlcnRfdHJ1ZShleGVjdXRlZCwgJ011
c3Qgc3luY2hyb25vdXNseSBpbnN0YW50aWF0ZSBhIGN1c3RvbSBlbGVtZW50Jyk7CisgICAgcmV0
dXJuIHt3aW5kb3csIGRvY3VtZW50LCBleGNlcHRpb259OworfQorCitwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0
b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCkp
OworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7
IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGRvY3VtZW50Lm9wZW4oJ3RleHQvaHRtbCcpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAn
SW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAn
TXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworfSwgJ2RvY3VtZW50Lm9wZW4oInRl
eHQvaHRtbCIpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91
c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyBmdW5jdGlvbiAoKSB7CisgICAgbGV0IGxvYWRfcHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNv
bHZlKSA9PiB3aW5kb3cub25tZXNzYWdlID0gKGV2ZW50KSA9PiByZXNvbHZlKGV2ZW50LmRhdGEp
KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5f
cGFyc2VyKHRoaXMsIChkb2N1bWVudCwgd2luZG93KSA9PiBkb2N1bWVudC5vcGVuKCdyZXNvdXJj
ZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sJywgJ19zZWxmJywgJycpKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYXdh
aXQgbG9hZF9wcm9taXNlLCAnZGlkTmF2aWdhdGUnKTsKK30sICdkb2N1bWVudC5vcGVuKCJhYm91
dDpibGFuayIpIG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hy
b25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3Qo
YXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9j
dXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5jbG9z
ZSgpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkg
PT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvcicpOworfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQn
KTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQg
PSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVu
dCkgPT4gZG9jdW1lbnQud3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X3Ro
cm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4
Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0
IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVz
dCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7Cit9LCAnZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEg
Y3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAg
ICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2Vy
KHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7
CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsg
dGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdi
JyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKKyAgICBhc3NlcnRfZmFs
c2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3Nv
bWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7Cit9LCAnZG9jdW1lbnQu
d3JpdGVsbiBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNs
eSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
ZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dp
bmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9j
dXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRv
dy5kb2N1bWVudC5vcGVuKCkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwg
bnVsbCk7Cit9LCAnZG9jdW1lbnQub3BlbigpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGlu
ZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7
CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3Qo
dGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50
X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50Lm9w
ZW4oJ3RleHQvaHRtbCcpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51
bGwpOworfSwgJ2RvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG9mIGFub3RoZXIgZG9jdW1lbnQg
bXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNv
bnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5j
dGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93
X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3Rv
bV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRv
Y3VtZW50LmNsb3NlKCkpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVs
bCk7Cit9LCAnZG9jdW1lbnQuY2xvc2UoKSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3Rpbmcg
YSBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewor
ICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRo
aXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9p
bl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1bWVudC53cml0
ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRp
b24sIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignYicpLm91dGVySFRNTCwgJzxiPnNvbWUgdGV4dDwvYj4nKTsKK30sICdkb2N1
bWVudC53cml0ZSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25v
dXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRl
X3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGNvbnN0cnVj
dF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dp
bmRvdy5kb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfZXF1
YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlcl93
aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLm91dGVySFRNTCwgJzxiPnNvbWUgdGV4
dDwvYj4nKTsKK30sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7
CisKK2FzeW5jIGZ1bmN0aW9uIGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGVz
dCwgY2FsbF9mdW5jdGlvbikKK3sKKyAgICBjb25zdCB3aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2lu
ZG93X2luX3Rlc3QodGVzdCk7CisgICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7
CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisKKyAgICBsZXQgZXhlY3V0ZWQgPSBmYWxzZTsKKyAg
ICBsZXQgZXhjZXB0aW9uID0gbnVsbDsKKyAgICBjbGFzcyBDdXN0b21FbGVtZW50IGV4dGVuZHMg
d2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgYXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5h
bWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICBjYWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3aW5kb3cpOworICAgICAgICAgICAgfSBjYXRj
aCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlcnJvcjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAg
ICBDdXN0b21FbGVtZW50LmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayA9IFsndGl0bGUnXTsKKyAg
ICB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBDdXN0b21FbGVt
ZW50KTsKKworICAgIGRvY3VtZW50LndyaXRlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48
c29tZS1lbGVtZW50Pjwvc29tZS1lbGVtZW50PjwvYm9keT48L2h0bWw+Jyk7CisgICAgZG9jdW1l
bnQuY2xvc2UoKTsKKworICAgIGFzc2VydF90cnVlKGV4ZWN1dGVkLCAnTXVzdCBzeW5jaHJvbm91
c2x5IGluc3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICByZXR1cm4ge2ZyYW1lRWxl
bWVudCwgd2luZG93LCBkb2N1bWVudCwgZXhjZXB0aW9ufTsKK30KKworPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHlu
YW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZmViOWQ0MWY0MWZkY2ViNjlhYTQwODlmMDQ3ZWVjZjllOTM2NjNhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHlu
YW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACisKK1BBU1MgZG9jdW1lbnQub3BlbigpIG11c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Ig
YSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQu
b3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHBy
b2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0
cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJhYm91dDpibGFuayIp
IG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0
b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9t
IGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5
bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0
ZSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20g
ZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVs
ZW1lbnQgCitQQVNTIGRvY3VtZW50LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNo
cm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCkg
b2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3
aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3Vz
IGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0
bWwiKSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hy
b25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LmNsb3NlKCkg
b2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3
aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3Vz
IGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZSBtdXN0IHRo
cm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCBy
ZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQ
QVNTIGRvY3VtZW50LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVu
IHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNv
bnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRl
ci1yZWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93
LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLXJlYWN0aW9ucy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjk3YWZiZjBjMjkwZjllYTIxMDNjYTU3MThmMzAyZjA1YzFiNjJiNmIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRtbApAQCAtMCwwICsxLDEx
NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkN1c3RvbSBFbGVt
ZW50czogY3JlYXRlIGFuIGVsZW1lbnQgZm9yIGEgdG9rZW4gbXVzdCBpbmNyZW1lbnQgYW5kIGRl
Y3JlbWVudCBkb2N1bWVudCdzIHRocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbiBjb3Vu
dGVyPC90aXRsZT4KKzxtZXRhIG5hbWU9ImF1dGhvciIgdGl0bGU9IlJ5b3N1a2UgTml3YSIgaHJl
Zj0ibWFpbHRvOnJuaXdhQHdlYmtpdC5vcmciPgorPG1ldGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50
PSJJbnZva2luZyBkb2N1bWVudC5vcGVuLCBkb2N1bWVudC53cml0ZSwgZG9jdW1lbnQud3JpdGVs
biwgYW5kIGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gdGhlIEhU
TUwgcGFyc2VyIGlzIGNyZWF0aW5nIGEgY3VzdG9tIGVsZW1lbnQgZm9yIGEgdG9rZW4iPgorPG1l
dGEgbmFtZT0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvcGFyc2luZy5odG1sI2NyZWF0ZS1hbi1lbGVtZW50LWZvci10aGUtdG9rZW4iPgorPG1l
dGEgbmFtZT0iaGVscCIgY29udGVudD0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjdGhyb3ctb24tZHluYW1pYy1tYXJr
dXAtaW5zZXJ0aW9uLWNvdW50ZXIiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2N1c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvY3VzdG9tLWVs
ZW1lbnRzLWhlbHBlcnMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2IGlkPSJs
b2ciPjwvZGl2PgorPHNjcmlwdD4KKworYXN5bmMgZnVuY3Rpb24gY3VzdG9tX2VsZW1lbnRfcmVh
Y3Rpb25zX2luX3BhcnNlcih0ZXN0LCBjYWxsX2Z1bmN0aW9uKQoreworICAgIGNvbnN0IHdpbmRv
dyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0ZXN0KTsKKyAgICBjb25zdCBkb2N1bWVu
dCA9IHdpbmRvdy5kb2N1bWVudDsKKworICAgIGRvY3VtZW50Lm9wZW4oKTsKKworICAgIGxldCBl
eGVjdXRlZCA9IGZhbHNlOworICAgIGxldCBleGNlcHRpb24gPSBudWxsOworICAgIGNsYXNzIEN1
c3RvbUVsZW1lbnQgZXh0ZW5kcyB3aW5kb3cuSFRNTEVsZW1lbnQgeworICAgICAgICBhdHRyaWJ1
dGVDaGFuZ2VkQ2FsbGJhY2sobmFtZSwgb2xkVmFsdWUsIG5ld1ZhbHVlKSB7CisgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgIGNhbGxfZnVuY3Rpb24oZG9jdW1lbnQsIHdpbmRvdyk7
CisgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlv
biA9IGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhlY3V0ZWQgPSB0cnVlOwor
ICAgICAgICB9CisgICAgfQorICAgIEN1c3RvbUVsZW1lbnQub2JzZXJ2ZWRBdHRyaWJ1dGVzID0g
Wyd0aXRsZSddOworICAgIHdpbmRvdy5jdXN0b21FbGVtZW50cy5kZWZpbmUoJ3NvbWUtZWxlbWVu
dCcsIEN1c3RvbUVsZW1lbnQpOworCisgICAgZG9jdW1lbnQud3JpdGUoJzwhRE9DVFlQRSBodG1s
PjxodG1sPjxib2R5Pjxzb21lLWVsZW1lbnQgdGl0bGU9InNvbWUgdGl0bGUiPjwvc29tZS1lbGVt
ZW50PjwvYm9keT48L2h0bWw+Jyk7CisgICAgZG9jdW1lbnQuY2xvc2UoKTsKKworICAgIGFzc2Vy
dF90cnVlKGV4ZWN1dGVkLCAnTXVzdCBpbW1lZGlhdGVseSBwcm9jZXNzIGN1c3RvbSBlbGVtZW50
IHJlYWN0aW9ucyBmb3Igc2V0dGluZyBhdHRyaWJ1dGVzJyk7CisgICAgcmV0dXJuIHtmcmFtZUVs
ZW1lbnQsIHdpbmRvdywgZG9jdW1lbnQsIGV4Y2VwdGlvbn07Cit9CisKK3Byb21pc2VfdGVzdChh
c3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1l
bnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4o
KSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+
IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3InKTsKK30sICdkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNo
cm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3lu
YyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRf
cmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oJ3Rl
eHQvaHRtbCcpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3In
fSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZh
bGlkU3RhdGVFcnJvcicpOworfSwgJ2RvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG11c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJl
YWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOwor
Citwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGxldCBsb2FkX3Byb21pc2Ug
PSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gd2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkgPT4g
cmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2Vs
ZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQsIHdpbmRvdykgPT4gZG9j
dW1lbnQub3BlbigncmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCcsICdfc2Vs
ZicsICcnKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsKKyAg
ICBhc3NlcnRfZXF1YWxzKGF3YWl0IGxvYWRfcHJvbWlzZSwgJ2RpZE5hdmlnYXRlJyk7Cit9LCAn
ZG9jdW1lbnQub3BlbigiYWJvdXQ6YmxhbmsiKSBtdXN0IE5PVCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5
bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChh
c3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1l
bnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LmNsb3Nl
KCkpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9
PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQuY2xvc2UoKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3lu
Y2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVu
dF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGUo
JzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRT
dGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCdiJyksIG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRl
bnQnKTsKKyAgICBhc3NlcnRfZmFsc2UocmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5p
bm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUgdGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250
ZW50Jyk7Cit9LCAnZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9u
b3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBm
dW5jdGlvbiAoKSB7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVh
Y3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50LndyaXRlKCc8Yj5z
b21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVF
cnJvcid9LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yJyk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignYicpLCBudWxsLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7
CisgICAgYXNzZXJ0X2ZhbHNlKHJlc3VsdC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuaW5uZXJI
VE1MLmluY2x1ZGVzKCdzb21lIHRleHQnKSwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcp
OworfSwgJ2RvY3VtZW50LndyaXRlbG4gbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3
aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3Vz
IGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5j
dGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93
X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRf
cmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRv
Y3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxs
KTsKK30sICdkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVh
Y3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50Jyk7CisK
K3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5k
b3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0
ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1l
bnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50Lm9wZW4oJ3RleHQvaHRtbCcpKTsKKyAgICBh
c3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwpOworfSwgJ2RvY3VtZW50Lm9wZW4o
InRleHQvaHRtbCIpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Ig
YSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQg
Y3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1
c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90
aGVyX3dpbmRvdy5kb2N1bWVudC5jbG9zZSgpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5l
eGNlcHRpb24sIG51bGwpOworfSwgJ2RvY3VtZW50LmNsb3NlKCkgb2YgYW5vdGhlciBkb2N1bWVu
dCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3Vz
dG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3Rv
bSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29u
c3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7Cisg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50LndyaXRlKCc8Yj5z
b21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVs
bCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyX3dpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVj
dG9yKCdiJykub3V0ZXJIVE1MLCAnPGI+c29tZSB0ZXh0PC9iPicpOworfSwgJ2RvY3VtZW50Lndy
aXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3Rv
bSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20g
ZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0
IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAg
IGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIo
dGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1bWVudC53cml0ZSgnPGI+c29t
ZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwp
OworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignYicpLm91dGVySFRNTCwgJzxiPnNvbWUgdGV4dDwvYj4nKTsKK30sICdkb2N1bWVudC53cml0
ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3Rv
bSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20g
ZWxlbWVudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346729</attachid>
            <date>2018-08-07 14:04:18 -0700</date>
            <delta_ts>2018-08-07 14:47:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187319-20180807140417.patch</filename>
            <type>text/plain</type>
            <size>32907</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM0NTgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDlkYTlmZDIzOGE4Mjlh
NzBmOTg5YTRhMWExZTQxZmI5NGQ5NGY0OC4uYzIyZTE4MjE0YmI2NmIzYmQ5ZDg3ODU5ZjcyNDM0
ODNmMzE2Y2E3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA4LTA2ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50Lm9wZW4gYW5k
IGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwgcGFyc2VyIGlzIHN5bmNo
cm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFrZSBkb2N1bWVudC5vcGVuLCBkb2N1bWVudC53cml0ZSwgZG9jdW1lbnQud3Jp
dGVsbiwgYW5kIGRvY3VtZW50LmNsb3NlIHRocm93IEludmFsaWRTdGF0ZUVycm9yIGR1cmluZwor
ICAgICAgICBhIHN5bmNocm9ub3VzIGN1c3RvbSBlbGVtZW50IGNvbnN0cnVjdGlvbiBhcyBzcGVj
aWZpZWQ6CisgICAgICAgIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3Bh
cnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuCisgICAgICAgIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlv
bi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyCisKKyAgICAg
ICAgVGVzdHM6IGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWlu
c2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2N1c3Rv
bS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFj
dGlvbnMuaHRtbAorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6b3BlbkZvckJpbmRpbmdzKTogVGhyb3cgSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBtX3Rocm93
T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQgaXMgbm9uLXplcm8uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y2xvc2VGb3JCaW5kaW5ncyk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndyaXRlKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
d3JpdGVsbik6IERpdHRvLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBSZS1vcmRlcmVkIHRo
ZSByZWxhdGVkIGluc3RhbmNlIHZhcmlhYmxlcyBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXIgaW4g
dGhlIHNwZWMsIGFuZCB1cGRhdGVkIHNwZWMgVVJMcy4KKyAgICAgICAgKiBkb20vVGhyb3dPbkR5
bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyKTog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNv
dW50SW5jcmVtZW50ZXI6OlRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1l
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNv
dW50SW5jcmVtZW50ZXI6On5UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVt
ZW50ZXIpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnJ1blNjcmlwdHNGb3JQYXVzZWRU
cmVlQnVpbGRlcik6IEluc3RhbnRpYXRlIFRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291
bnRJbmNyZW1lbnRlci4KKwogMjAxOC0wOC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0
Lm9yZz4KIAogICAgICAgICBIVE1MIHBhcnNlciBzaG91bGQgZXhlY3V0ZSBjdXN0b20gZWxlbWVu
dCByZWFjdGlvbnMgZm9yIHNldHRpbmcgYXR0cmlidXRlcyBpbW1lZGlhdGVseSBhZnRlciBjcmVh
dGluZyBhIGN1c3RvbSBlbGVtZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggY2VlOGQ3ZWY3YzMzNmUyNTU2NGU5YTIxN2NkYTAw
Mjg0MTk5OTg0OS4uMTk5NDUxMDMzOWQyNzA5OTVkNTE2Nzk0MmYxZjk0YTgzYzZmYjFkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMTA4NTEsNiArMTA4NTEsNyBAQAogCQk5QjMyQ0RBODEzREY3RkE5MDBGMzREMTMgLyogUmVu
ZGVyZWRQb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZW5kZXJlZFBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcw
NjIxMjU2NjJCMzAwNkIyOEZDIC8qIEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI0MTcwNjMxMjU2NjJCMzAwNkIyOEZDIC8qIEFw
cGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBcHBseUJsb2NrRWxlbWVudENvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5QjQzNzZFRjIxMTdFODcyMDA5RDAzQTAgLyogVGhyb3dPbkR5bmFtaWNNYXJr
dXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocm93T25EeW5h
bWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5QjUwQjFEQzE3Q0Q0QzBGMDA4N0Y2M0MgLyogRm9ybU5hbWVkSXRlbS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb3JtTmFtZWRJdGVtLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTMyRUExMUJBOTI4NTcwMDM4QTgyNyAvKiBTbG90QXNz
aWdubWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTbG90QXNz
aWdubWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCNTMyRUEyMUJBOTI4
NTcwMDM4QTgyNyAvKiBTbG90QXNzaWdubWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTbG90QXNzaWdubWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjY1NjMsNiArMjY1NjQsNyBAQAogCQkJCUE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0
RXZlbnRJbnB1dFR5cGUuaCAqLywKIAkJCQlFNEQ5ODhCNTE3QkZFQjIxMDA4NEZCODggLyogVGV4
dE5vZGVUcmF2ZXJzYWwuY3BwICovLAogCQkJCUU0RDk4OEIzMTdCRkQxRjYwMDg0RkI4OCAvKiBU
ZXh0Tm9kZVRyYXZlcnNhbC5oICovLAorCQkJCTlCNDM3NkVGMjExN0U4NzIwMDlEMDNBMCAvKiBU
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCAqLywKIAkJCQkw
RjU0REQwNTE4ODFENUY1MDAzRUVEQkIgLyogVG91Y2guaCAqLywKIAkJCQkwRjU0REQwNjE4ODFE
NUY1MDAzRUVEQkIgLyogVG91Y2hFdmVudC5oICovLAogCQkJCTBGNTRERDA3MTg4MUQ1RjUwMDNF
RURCQiAvKiBUb3VjaExpc3QuaCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGQwZWJl
NmZmN2Y5ODRlNzIzNzcyZmUxNGYzYzUxNDQwODRmYmU0NmIuLjUyMDMyNTdhYjY0NzYyZjk5NWVl
NTg2Yzg1ODAyNDdmNDcxYjhhMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjYwOSw3
ICsyNjA5LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4gRG9jdW1lbnQ6Om9w
ZW5Gb3JCaW5kaW5ncyhET01XaW5kb3cmIGFjdGl2ZVdpbmQKIC8vIEZJWE1FOiBBZGQgc3VwcG9y
dCBmb3IgdGhlICd0eXBlJyBhbmQgJ3JlcGxhY2UnIHBhcmFtZXRlcnMuCiBFeGNlcHRpb25PcjxE
b2N1bWVudCY+IERvY3VtZW50OjpvcGVuRm9yQmluZGluZ3MoRG9jdW1lbnQqIHJlc3BvbnNpYmxl
RG9jdW1lbnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCiB7Ci0gICAgaWYgKCFpc0hU
TUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5h
bWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZh
bGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cg
aWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIg
aXMgZ3JlYXRlciB0aGFuIDAiLgpAQCAtMjc1Myw3ICsyNzUzLDcgQEAgRXhjZXB0aW9uT3I8dm9p
ZD4gRG9jdW1lbnQ6OmNsb3NlRm9yQmluZGluZ3MoKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
Zm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2VseToKICAgICAvLyAgICAgICAgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jZG9tLWRvY3Vt
ZW50LWNsb3NlCiAKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKCFpc0hUTUxE
b2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0aHJvdy1vbi1keW5hbWlj
LW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4gMCIuCkBAIC0yOTg0LDcg
KzI5ODQsNyBAQCB2b2lkIERvY3VtZW50Ojp3cml0ZShEb2N1bWVudCogcmVzcG9uc2libGVEb2N1
bWVudCwgU2VnbWVudGVkU3RyaW5nJiYgdGV4dCkKIAogRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1l
bnQ6OndyaXRlKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYm
IHN0cmluZ3MpCiB7Ci0gICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1M
RG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OwogCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cgaWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIgaXMgZ3JlYXRlciB0aGFuIDAiLgpAQCAtMzAwMSw3
ICszMDAxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiBy
ZXNwb25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYKIAogRXhjZXB0aW9uT3I8dm9pZD4g
RG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQsIFZlY3RvcjxT
dHJpbmc+JiYgc3RyaW5ncykKIHsKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisgICAgaWYg
KCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0aHJvdy1v
bi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4gMCIuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCmluZGV4IDgzYjA4ODljMDk5ODQ5ODRmYTI2ODM1NGE4ZjQ3MTQ1YmU3
YzI4MmIuLmYwZGUwMWE0MmQyYTU4YTczNzdkY2Q1ZWI5OGZlMjIyZTgwZGFjYTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCkBAIC0xNDgwLDggKzE0ODAsOSBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgog
ICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudFBhcnNlcllpZWxkVG9rZW47CiAgICAgZnJpZW5kIGNs
YXNzIE5vZGU7Ci0gICAgZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudElu
Y3JlbWVudGVyOworICAgIGZyaWVuZCBjbGFzcyBUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlv
bkNvdW50SW5jcmVtZW50ZXI7CiAgICAgZnJpZW5kIGNsYXNzIElnbm9yZU9wZW5zRHVyaW5nVW5s
b2FkQ291bnRJbmNyZW1lbnRlcjsKKyAgICBmcmllbmQgY2xhc3MgSWdub3JlRGVzdHJ1Y3RpdmVX
cml0ZUNvdW50SW5jcmVtZW50ZXI7CiAKICAgICBib29sIHNob3VsZEluaGVyaXRDb250ZW50U2Vj
dXJpdHlQb2xpY3lGcm9tT3duZXIoKSBjb25zdDsKIApAQCAtMTg1NCwxMiArMTg1NSwxNSBAQCBw
cml2YXRlOgogICAgIGludCBtX2xvYWRFdmVudERlbGF5Q291bnQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbV9sYXN0U3R5bGVVcGRhdGVTaXplRm9yVGVzdGluZyB7IDAgfTsKIAotICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpZ25vcmUt
ZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKLSAgICB1bnNpZ25lZCBtX2lnbm9yZURlc3RydWN0
aXZlV3JpdGVDb3VudCB7IDAgfTsKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRtbCN0aHJvdy1vbi1keW5hbWlj
LW1hcmt1cC1pbnNlcnRpb24tY291bnRlcgorICAgIHVuc2lnbmVkIG1fdGhyb3dPbkR5bmFtaWNN
YXJrdXBJbnNlcnRpb25Db3VudCB7IDAgfTsKIAotICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndo
YXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNpZ25vcmUtb3BlbnMtZHVyaW5nLXVu
bG9hZC1jb3VudGVyCisgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjaWdub3JlLW9wZW5zLWR1cmluZy11bmxv
YWQtY291bnRlcgogICAgIHVuc2lnbmVkIG1faWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudCB7
IDAgfTsKIAorICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5
bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI2lnbm9yZS1kZXN0cnVjdGl2ZS13cml0ZXMtY291
bnRlcgorICAgIHVuc2lnbmVkIG1faWdub3JlRGVzdHJ1Y3RpdmVXcml0ZUNvdW50IHsgMCB9Owor
CiAgICAgdW5zaWduZWQgbV9hY3RpdmVQYXJzZXJDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBt
X3N0eWxlUmVjYWxjQ291bnQgeyAwIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44M2U3MWZhMzcxZjFhNmYzMGZiNGE1ZmFmODVmOGI3NzRiOGExZGY4
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Rocm93T25EeW5hbWljTWFy
a3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3Jl
bWVudGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaHJvd09uRHluYW1pY01hcmt1cElu
c2VydGlvbkNvdW50SW5jcmVtZW50ZXIpOworcHVibGljOgorICAgIGV4cGxpY2l0IFRocm93T25E
eW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcihEb2N1bWVudCYgZG9jdW1lbnQp
CisgICAgICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICB7CisgICAgICAgICsrZG9jdW1l
bnQubV90aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50OworICAgIH0KKworICAgIH5U
aHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fZG9jdW1lbnQtPm1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25D
b3VudCk7CisgICAgICAgIC0tbV9kb2N1bWVudC0+bV90aHJvd09uRHluYW1pY01hcmt1cEluc2Vy
dGlvbkNvdW50OworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1l
bnQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggM2YzZTc5OTNlZDlj
NzM1MzgxYzMxNGU4OTdhN2I4NTllMWU2MzRiOS4uYWQyYWI2Y2RiOTc0YjI3MGQ1M2U2NjQ2NmU5
NDU0MTljNzAwNzI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiTGlua0xvYWRl
ci5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25TY2hlZHVsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRF
bGVtZW50LmgiCisjaW5jbHVkZSAiVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudElu
Y3JlbWVudGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjEwLDYgKzIxMSw4IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJlZUJ1aWxkZXIo
KQogCiAgICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvI2NyZWF0ZS1hbi1l
bGVtZW50LWZvci10aGUtdG9rZW4KICAgICAgICAgeworICAgICAgICAgICAgLy8gUHJldmVudCBk
b2N1bWVudC5vcGVuL3dyaXRlIGR1cmluZyByZWFjdGlvbnMgYnkgYWxsb2NhdGluZyB0aGUgaW5j
cmVtZW50ZXIgYmVmb3JlIHRoZSByZWFjdGlvbnMgc3RhY2suCisgICAgICAgICAgICBUaHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIgaW5jcmVtZW50ZXIoKmRvY3Vt
ZW50KCkpOwogICAgICAgICAgICAgQ3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2sgcmVhY3Rpb25T
dGFjayhkb2N1bWVudCgpLT5leGVjU3RhdGUoKSk7CiAgICAgICAgICAgICBhdXRvJiBlbGVtZW50
SW50ZXJmYWNlID0gY29uc3RydWN0aW9uRGF0YS0+ZWxlbWVudEludGVyZmFjZS5nZXQoKTsKICAg
ICAgICAgICAgIGF1dG8gbmV3RWxlbWVudCA9IGVsZW1lbnRJbnRlcmZhY2UuY29uc3RydWN0RWxl
bWVudFdpdGhGYWxsYmFjaygqZG9jdW1lbnQoKSwgY29uc3RydWN0aW9uRGF0YS0+bmFtZSk7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggOTgxY2E0NWUzNDEyN2FlNmNlMWViOGI3OTk5NmE2NGIyNWY0YTBhMC4uNDA4ZjJiYzVk
NDQ5NjUwZWE1MGYzN2M5ZGY0YTk0ODNiNTU1YTE1MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDE4LTA4LTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRv
Y3VtZW50Lm9wZW4gYW5kIGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwg
cGFyc2VyIGlzIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgVzNDIHN0eWxlIHRlc3RoYXJuZXNzLmpzIHRl
c3RzLiBUaGUgV1BUIHRlc3QgYWRkZWQgYnkgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQvcHVsbC8xMjAzNworICAgICAgICBkb2Vzbid0IHRlc3QgbmVhcmx5IGFzIG1h
bnkgZWRnZSBjYXNlcy4KKworICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNl
cy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3Vz
dG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNv
bnN0cnVjdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1
cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRtbDogQWRkZWQuCisKIDIwMTgtMDgtMDUg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtNZWRp
YUNhcGFiaWxpdGllc10gUGxhdGZvcm0gaW50ZWdyYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNlcy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvbmF2aWdh
dGlvbi1kZXN0aW5hdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVkZThkMmM2ZWIxM2VhMGQ4YjYzMzc4
MDE2MDgxMTU1OWUyODM5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy9yZXNvdXJjZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sCkBAIC0w
LDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+TmF2aWdhdGVk
ITwvcD4KKzxzY3JpcHQ+CitwYXJlbnQucG9zdE1lc3NhZ2UoJ2RpZE5hdmlnYXRlJywgJyonKTsK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50
ZXItY29uc3RydWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk3NmZlNzcwNDc5ZWRlYmM4Njc0NDliZmUxODk2MGE3
YzMxODM5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1l
bnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyLWNvbnN0cnVjdC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorCitQQVNTIGRvY3VtZW50Lm9wZW4oKSBtdXN0
IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3Rp
bmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgbXVz
dCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0
aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oVVJMKSBtdXN0IE5PVCB0
aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5n
IGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9t
IGVsZW1lbnQgCitQQVNTIGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAor
UEFTUyBkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1
bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1l
bnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oInRleHQvaHRtbCIpIG9mIGFub3RoZXIgZG9jdW1lbnQg
bXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNv
bnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5jbG9zZSgpIG9mIGFu
b3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBz
eW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVu
dC53cml0ZSBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0
ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAK
K1BBU1MgZG9jdW1lbnQud3JpdGVsbiBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBj
dXN0b20gZWxlbWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxl
bWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWlj
LW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1jb25zdHJ1Y3QuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTRj
N2IwZGJmZTZkMTNlNGYwMzQ0OTg2MmMxNzQxNDc3NzYwMzNjCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKQEAgLTAsMCArMSwxMTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IGNyZWF0
ZSBhbiBlbGVtZW50IGZvciBhIHRva2VuIG11c3QgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZG9j
dW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlcjwvdGl0bGU+
Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpy
bml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iSW52b2tpbmcg
ZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3JpdGUsIGRvY3VtZW50LndyaXRlbG4sIGFuZCBkb2N1
bWVudC53cml0ZSBtdXN0IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBIVE1MIHBhcnNlciBp
cyBjcmVhdGluZyBhIGN1c3RvbSBlbGVtZW50IGZvciBhIHRva2VuIj4KKzxtZXRhIG5hbWU9Imhl
bHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNp
bmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuIj4KKzxtZXRhIG5hbWU9Imhl
bHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFt
aWMtbWFya3VwLWluc2VydGlvbi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlv
bi1jb3VudGVyIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxw
ZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9w
YXJzZXIodGVzdCwgY2FsbF9mdW5jdGlvbikKK3sKKyAgICBjb25zdCB3aW5kb3cgPSBhd2FpdCBj
cmVhdGVfd2luZG93X2luX3Rlc3QodGVzdCk7CisgICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cu
ZG9jdW1lbnQ7CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisKKyAgICBsZXQgZXhlY3V0ZWQgPSBm
YWxzZTsKKyAgICBsZXQgZXhjZXB0aW9uID0gbnVsbDsKKyAgICBjbGFzcyBDdXN0b21FbGVtZW50
IGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBj
YWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3aW5kb3cpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlcnJvcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3aW5k
b3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBDdXN0b21FbGVtZW50KTsK
KworICAgIGRvY3VtZW50LndyaXRlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48c29tZS1l
bGVtZW50Pjwvc29tZS1lbGVtZW50PjwvYm9keT48L2h0bWw+Jyk7CisgICAgZG9jdW1lbnQuY2xv
c2UoKTsKKworICAgIGFzc2VydF90cnVlKGV4ZWN1dGVkLCAnTXVzdCBzeW5jaHJvbm91c2x5IGlu
c3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICByZXR1cm4ge3dpbmRvdywgZG9jdW1l
bnQsIGV4Y2VwdGlvbn07Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7Cisg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVu
dC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9t
X2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQub3BlbigndGV4
dC9odG1sJykpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEg
Y3VzdG9tIGVsZW1lbnQnKTsKKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2lu
ZG93Citwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGxldCBsb2FkX3Byb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gd2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkg
PT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3Ry
dWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQsIHdpbmRvdykgPT4g
ZG9jdW1lbnQub3BlbigncmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCcsICdf
c2VsZicsICcnKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGxvYWRfcHJvbWlzZSwgJ2RpZE5hdmlnYXRlJyk7Cit9
LCAnZG9jdW1lbnQub3BlbihVUkwpIG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
IHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0
IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBk
b2N1bWVudC5jbG9zZSgpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRl
RXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvcicpOworfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3Vz
dG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBj
b25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRo
aXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7Cisg
ICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhy
b3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3In
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJyks
IG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKKyAgICBhc3NlcnRfZmFsc2Uo
cmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUg
dGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7Cit9LCAnZG9jdW1lbnQud3Jp
dGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29u
c3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1l
bnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbignPGI+c29t
ZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwor
ICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRN
TC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsK
K30sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBh
d2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGFub3RoZXJfd2luZG93LmRvY3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQuZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1
bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93
aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3Rf
Y3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5k
b3cuZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgb2YgYW5v
dGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5
bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0
IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBj
b25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5v
dGhlcl93aW5kb3cuZG9jdW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1l
bnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5
IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBm
dW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2lu
ZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1
c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93
LmRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyX3dpbmRv
dy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJykub3V0ZXJIVE1MLCAnPGI+c29tZSB0ZXh0PC9i
PicpOworfSwgJ2RvY3VtZW50LndyaXRlIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7Cisg
ICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhp
cyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2lu
X3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50LndyaXRl
bG4oJzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0
aW9uLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFub3RoZXJfd2luZG93LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2InKS5vdXRlckhUTUwsICc8Yj5zb21lIHRleHQ8L2I+Jyk7Cit9LCAnZG9j
dW1lbnQud3JpdGVsbiBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxl
bWVudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2Vy
dGlvbi1jb3VudGVyLXJlYWN0aW9ucy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1y
ZWFjdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxOWVkMTE5NDViZDY5MDEzYzc0YWE1
YjA5YmZlMmZkYjI2MzRjZjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2N1
c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1y
ZWFjdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKKworUEFTUyBkb2N1bWVudC5v
cGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3Vz
dG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3Rv
bSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlv
bnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRv
Y3VtZW50Lm9wZW4oVVJMKSBtdXN0IE5PVCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVu
IHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNv
bnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5jbG9zZSgpIG11c3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJl
YWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHBy
b2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0
cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0
aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1Mg
ZG9jdW1lbnQub3BlbigpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBm
b3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1l
bnQub3BlbigidGV4dC9odG1sIikgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rp
b25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBk
b2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBm
b3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1l
bnQud3JpdGUgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3Rh
dGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5
bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0
ZWxuIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJv
bm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9u
LWNvdW50ZXItcmVhY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50
cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1yZWFjdGlvbnMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jNmNkN2M2MGU3MDUzNGI1YWE0OTk3YjNmNmVjZTU1N2E0YmNjODE4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ct
b24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKQEAgLTAs
MCArMSwxMTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0
b20gRWxlbWVudHM6IGNyZWF0ZSBhbiBlbGVtZW50IGZvciBhIHRva2VuIG11c3QgaW5jcmVtZW50
IGFuZCBkZWNyZW1lbnQgZG9jdW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRp
b24gY291bnRlcjwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5p
d2EiIGhyZWY9Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIg
Y29udGVudD0iSW52b2tpbmcgZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3JpdGUsIGRvY3VtZW50
LndyaXRlbG4sIGFuZCBkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVu
IHRoZSBIVE1MIHBhcnNlciBpcyBjcmVhdGluZyBhIGN1c3RvbSBlbGVtZW50IGZvciBhIHRva2Vu
Ij4KKzxtZXRhIG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2Vu
Ij4KKzxtZXRhIG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI3Rocm93LW9uLWR5bmFt
aWMtbWFya3VwLWluc2VydGlvbi1jb3VudGVyIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1
c3RvbS1lbGVtZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRp
diBpZD0ibG9nIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGN1c3RvbV9lbGVt
ZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGVzdCwgY2FsbF9mdW5jdGlvbikKK3sKKyAgICBjb25z
dCB3aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGVzdCk7CisgICAgY29uc3Qg
ZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQ7CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisKKyAg
ICBsZXQgZXhlY3V0ZWQgPSBmYWxzZTsKKyAgICBsZXQgZXhjZXB0aW9uID0gbnVsbDsKKyAgICBj
bGFzcyBDdXN0b21FbGVtZW50IGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAg
YXR0cmlidXRlQ2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgeworICAg
ICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjYWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3
aW5kb3cpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBl
eGNlcHRpb24gPSBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4ZWN1dGVkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBDdXN0b21FbGVtZW50Lm9ic2VydmVkQXR0cmli
dXRlcyA9IFsndGl0bGUnXTsKKyAgICB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdzb21l
LWVsZW1lbnQnLCBDdXN0b21FbGVtZW50KTsKKworICAgIGRvY3VtZW50LndyaXRlKCc8IURPQ1RZ
UEUgaHRtbD48aHRtbD48Ym9keT48c29tZS1lbGVtZW50IHRpdGxlPSJzb21lIHRpdGxlIj48L3Nv
bWUtZWxlbWVudD48L2JvZHk+PC9odG1sPicpOworICAgIGRvY3VtZW50LmNsb3NlKCk7CisKKyAg
ICBhc3NlcnRfdHJ1ZShleGVjdXRlZCwgJ011c3QgaW1tZWRpYXRlbHkgcHJvY2VzcyBjdXN0b20g
ZWxlbWVudCByZWFjdGlvbnMgZm9yIHNldHRpbmcgYXR0cmlidXRlcycpOworICAgIHJldHVybiB7
ZnJhbWVFbGVtZW50LCB3aW5kb3csIGRvY3VtZW50LCBleGNlcHRpb259OworfQorCitwcm9taXNl
X3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3Rv
bV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVu
dC5vcGVuKCkpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigpIG11c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Ig
YSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9l
bGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5v
cGVuKCd0ZXh0L2h0bWwnKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0
ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBt
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxl
bWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1l
bnQnKTsKKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2luZG93Citwcm9taXNl
X3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGxldCBsb2FkX3Byb21pc2UgPSBuZXcgUHJv
bWlzZSgocmVzb2x2ZSkgPT4gd2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShl
dmVudC5kYXRhKSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVh
Y3Rpb25zX2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQsIHdpbmRvdykgPT4gZG9jdW1lbnQub3Bl
bigncmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCcsICdfc2VsZicsICcnKSk7
CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGF3YWl0IGxvYWRfcHJvbWlzZSwgJ2RpZE5hdmlnYXRlJyk7Cit9LCAnZG9jdW1lbnQu
b3BlbihVUkwpIG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vz
c2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0
ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsK
KyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFy
c2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X3Ro
cm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4
Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1
bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNz
aW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3Rl
ZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgewor
ICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJz
ZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicp
KTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4g
eyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvcicpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
J2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9m
YWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygn
c29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVu
dC53cml0ZSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBj
dXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3Vz
dG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBj
b25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRo
aXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbignPGI+c29tZSB0ZXh0PC9iPicpKTsK
KyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0
aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
cicpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2In
KSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9mYWxz
ZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29t
ZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVudC53
cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1
c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0
b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNv
bnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOwor
ICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJz
ZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1bWVudC5vcGVuKCkpOwor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQu
b3BlbigpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5j
aHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRl
X3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9l
bGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dp
bmRvdy5kb2N1bWVudC5vcGVuKCd0ZXh0L2h0bWwnKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQuZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBvZiBh
bm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4g
cHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29u
c3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9u
ICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5f
dGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFj
dGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1l
bnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsK
K30sICdkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cg
YW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0
aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93
ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9
IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50
KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsK
KyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwpOworICAgIGFzc2VydF9l
cXVhbHMoYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLm91dGVySFRN
TCwgJzxiPnNvbWUgdGV4dDwvYj4nKTsKK30sICdkb2N1bWVudC53cml0ZSBvZiBhbm90aGVyIGRv
Y3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2lu
ZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQg
Y3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAg
ICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlz
KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5f
cGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQud3JpdGVs
bignPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRp
b24sIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignYicpLm91dGVySFRNTCwgJzxiPnNvbWUgdGV4dDwvYj4nKTsKK30sICdkb2N1
bWVudC53cml0ZWxuIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Ig
YSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCis8L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346735</attachid>
            <date>2018-08-07 14:47:26 -0700</date>
            <delta_ts>2018-08-07 16:44:14 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187319-20180807144725.patch</filename>
            <type>text/plain</type>
            <size>32801</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDY3MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA4LTA3ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIGRvY3VtZW50Lm9wZW4gYW5kIGRv
Y3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUgdGhlIEhUTUwgcGFyc2VyIGlzIHN5bmNocm9u
b3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRnLDqWTDqXJpYyBXYW5nLgorCisg
ICAgICAgIE1ha2UgZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3JpdGUsIGRvY3VtZW50LndyaXRl
bG4sIGFuZCBkb2N1bWVudC5jbG9zZSB0aHJvdyBJbnZhbGlkU3RhdGVFcnJvciBkdXJpbmcKKyAg
ICAgICAgYSBzeW5jaHJvbm91cyBjdXN0b20gZWxlbWVudCBjb25zdHJ1Y3Rpb24gYXMgc3BlY2lm
aWVkOgorICAgICAgICBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJz
aW5nLmh0bWwjY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10b2tlbgorICAgICAgICBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24u
aHRtbCN0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlcgorCisgICAgICAg
IFRlc3RzOiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNl
cnRpb24tY291bnRlci1jb25zdHJ1Y3QuaHRtbAorICAgICAgICAgICAgICAgZmFzdC9jdXN0b20t
ZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rp
b25zLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om9wZW5Gb3JCaW5kaW5ncyk6IFRocm93IEludmFsaWRTdGF0ZUVycm9yIHdoZW4gbV90aHJvd09u
RHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50IGlzIG5vbi16ZXJvLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNsb3NlRm9yQmluZGluZ3MpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3cml0ZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondy
aXRlbG4pOiBEaXR0by4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogUmUtb3JkZXJlZCB0aGUg
cmVsYXRlZCBpbnN0YW5jZSB2YXJpYWJsZXMgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRo
ZSBzcGVjLCBhbmQgdXBkYXRlZCBzcGVjIFVSTHMuCisgICAgICAgICogZG9tL1Rocm93T25EeW5h
bWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlcik6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dEluY3JlbWVudGVyOjpUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3Vu
dEluY3JlbWVudGVyOjp+VGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVu
dGVyKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpydW5TY3JpcHRzRm9yUGF1c2VkVHJl
ZUJ1aWxkZXIpOiBJbnN0YW50aWF0ZSBUaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50
SW5jcmVtZW50ZXIuCisKIDIwMTgtMDgtMDYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgZG9jdW1lbnQub3BlbiBhbmQgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJv
dyB3aGlsZSB0aGUgSFRNTCBwYXJzZXIgaXMgc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBj
dXN0b20gZWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM0NjczKQorKysgU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg1
OSw2ICsxMDg1OSw3IEBACiAJCTlCMzJDREE4MTNERjdGQTkwMEYzNEQxMyAvKiBSZW5kZXJlZFBv
c2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlcmVk
UG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2MjEyNTY2
MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9ja0VsZW1lbnRDb21tYW5kLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5QjQxNzA2MzEyNTY2MkIzMDA2QjI4RkMgLyogQXBwbHlCbG9j
a0VsZW1lbnRDb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFwcGx5QmxvY2tFbGVtZW50Q29tbWFuZC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTlCNDM3NkVGMjExN0U4NzIwMDlEMDNBMCAvKiBUaHJvd09uRHluYW1pY01hcmt1cEluc2Vy
dGlvbkNvdW50SW5jcmVtZW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyb3dPbkR5bmFtaWNNYXJr
dXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCNTBCMURDMTdDRDRDMEYwMDg3RjYzQyAvKiBGb3JtTmFtZWRJdGVtLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZvcm1OYW1lZEl0ZW0uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI1MzJFQTExQkE5Mjg1NzAwMzhBODI3IC8qIFNsb3RBc3NpZ25tZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNsb3RBc3NpZ25tZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI1MzJFQTIxQkE5Mjg1NzAwMzhB
ODI3IC8qIFNsb3RBc3NpZ25tZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNsb3RBc3NpZ25tZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjU3NSw2
ICsyNjU3Niw3IEBACiAJCQkJQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElu
cHV0VHlwZS5oICovLAogCQkJCUU0RDk4OEI1MTdCRkVCMjEwMDg0RkI4OCAvKiBUZXh0Tm9kZVRy
YXZlcnNhbC5jcHAgKi8sCiAJCQkJRTREOTg4QjMxN0JGRDFGNjAwODRGQjg4IC8qIFRleHROb2Rl
VHJhdmVyc2FsLmggKi8sCisJCQkJOUI0Mzc2RUYyMTE3RTg3MjAwOUQwM0EwIC8qIFRocm93T25E
eW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oICovLAogCQkJCTBGNTRERDA1
MTg4MUQ1RjUwMDNFRURCQiAvKiBUb3VjaC5oICovLAogCQkJCTBGNTRERDA2MTg4MUQ1RjUwMDNF
RURCQiAvKiBUb3VjaEV2ZW50LmggKi8sCiAJCQkJMEY1NEREMDcxODgxRDVGNTAwM0VFREJCIC8q
IFRvdWNoTGlzdC5oICovLApJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAy
MzQ2NzMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjA5LDEyICsyNjA5LDkgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1Byb3h5Pj4g
RG9jdW1lbgogLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgJ3R5cGUnIGFuZCAncmVwbGFj
ZScgcGFyYW1ldGVycy4KIEV4Y2VwdGlvbk9yPERvY3VtZW50Jj4gRG9jdW1lbnQ6Om9wZW5Gb3JC
aW5kaW5ncyhEb2N1bWVudCogcmVzcG9uc2libGVEb2N1bWVudCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKCFpc0hU
TUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudCkKICAg
ICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKLSAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1lbnQncyB0aHJvdy1vbi1keW5h
bWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVyIHRoYW4gMCIuCi0gICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzMxOQotCiAgICAgb3Bl
bihyZXNwb25zaWJsZURvY3VtZW50KTsKICAgICByZXR1cm4gKnRoaXM7CiB9CkBAIC0yNzUzLDEy
ICsyNzUwLDkgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OmNsb3NlRm9yQmluZAogICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgZm9sbG93IHRoZSBzcGVjaWZpY2F0aW9uIG1vcmUgY2xvc2Vs
eToKICAgICAvLyAgICAgICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1
cnJlbnQtd29yay8jZG9tLWRvY3VtZW50LWNsb3NlCiAKLSAgICBpZiAoIWlzSFRNTERvY3VtZW50
KCkpCisgICAgaWYgKCFpc0hUTUxEb2N1bWVudCgpIHx8IG1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJ
bnNlcnRpb25Db3VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVy
cm9yIH07CiAKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYWxzbyB0aHJvdyBpZiAiZG9jdW1l
bnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlciBpcyBncmVhdGVy
IHRoYW4gMCIuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4NzMxOQotCiAgICAgY2xvc2UoKTsKICAgICByZXR1cm4geyB9OwogfQpAQCAtMjk4NCwxMiAr
Mjk3OCw5IEBAIHZvaWQgRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiByZXNwb25zaWIKIAogRXhj
ZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlKERvY3VtZW50KiByZXNwb25zaWJsZURvY3Vt
ZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7Ci0gICAgaWYgKCFpc0hUTUxEb2N1bWVu
dCgpKQorICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25EeW5hbWljTWFya3Vw
SW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciB9OwogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFsc28gdGhyb3cgaWYgImRvY3Vt
ZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50ZXIgaXMgZ3JlYXRl
ciB0aGFuIDAiLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODczMTkKLQogICAgIFNlZ21lbnRlZFN0cmluZyB0ZXh0OwogICAgIGZvciAoYXV0byYgc3Ry
aW5nIDogc3RyaW5ncykKICAgICAgICAgdGV4dC5hcHBlbmQoV1RGTW92ZShzdHJpbmcpKTsKQEAg
LTMwMDEsMTIgKzI5OTIsOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEb2N1bWVudDo6d3JpdGUoRG9j
dW1lCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZWxuKERvY3VtZW50KiByZXNw
b25zaWJsZURvY3VtZW50LCBWZWN0b3I8U3RyaW5nPiYmIHN0cmluZ3MpCiB7Ci0gICAgaWYgKCFp
c0hUTUxEb2N1bWVudCgpKQorICAgIGlmICghaXNIVE1MRG9jdW1lbnQoKSB8fCBtX3Rocm93T25E
eW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciB9OwogCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGFsc28gdGhy
b3cgaWYgImRvY3VtZW50J3MgdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uIGNvdW50
ZXIgaXMgZ3JlYXRlciB0aGFuIDAiLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODczMTkKLQogICAgIFNlZ21lbnRlZFN0cmluZyB0ZXh0OwogICAgIGZv
ciAoYXV0byYgc3RyaW5nIDogc3RyaW5ncykKICAgICAgICAgdGV4dC5hcHBlbmQoV1RGTW92ZShz
dHJpbmcpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyMzQ2NzMpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ4MCw4ICsx
NDgwLDkgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnRQ
YXJzZXJZaWVsZFRva2VuOwogICAgIGZyaWVuZCBjbGFzcyBOb2RlOwotICAgIGZyaWVuZCBjbGFz
cyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKKyAgICBmcmllbmQgY2xh
c3MgVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyOwogICAgIGZy
aWVuZCBjbGFzcyBJZ25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXI7CisgICAg
ZnJpZW5kIGNsYXNzIElnbm9yZURlc3RydWN0aXZlV3JpdGVDb3VudEluY3JlbWVudGVyOwogCiAg
ICAgYm9vbCBzaG91bGRJbmhlcml0Q29udGVudFNlY3VyaXR5UG9saWN5RnJvbU93bmVyKCkgY29u
c3Q7CiAKQEAgLTE4NTQsMTIgKzE4NTUsMTUgQEAgcHJpdmF0ZToKICAgICBpbnQgbV9sb2FkRXZl
bnREZWxheUNvdW50IHsgMCB9OwogICAgIHVuc2lnbmVkIG1fbGFzdFN0eWxlVXBkYXRlU2l6ZUZv
clRlc3RpbmcgeyAwIH07CiAKLSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211
bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjaWdub3JlLWRlc3RydWN0aXZlLXdyaXRlcy1jb3VudGVy
Ci0gICAgdW5zaWduZWQgbV9pZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnQgeyAwIH07CisgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uLmh0bWwjdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXIK
KyAgICB1bnNpZ25lZCBtX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnQgeyAwIH07
CiAKLSAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBh
cGlzLmh0bWwjaWdub3JlLW9wZW5zLWR1cmluZy11bmxvYWQtY291bnRlcgorICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlv
bi5odG1sI2lnbm9yZS1vcGVucy1kdXJpbmctdW5sb2FkLWNvdW50ZXIKICAgICB1bnNpZ25lZCBt
X2lnbm9yZU9wZW5zRHVyaW5nVW5sb2FkQ291bnQgeyAwIH07CiAKKyAgICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9keW5hbWljLW1hcmt1cC1pbnNlcnRpb24uaHRt
bCNpZ25vcmUtZGVzdHJ1Y3RpdmUtd3JpdGVzLWNvdW50ZXIKKyAgICB1bnNpZ25lZCBtX2lnbm9y
ZURlc3RydWN0aXZlV3JpdGVDb3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fYWN0aXZlUGFy
c2VyQ291bnQgeyAwIH07CiAgICAgdW5zaWduZWQgbV9zdHlsZVJlY2FsY0NvdW50IHsgMCB9Owog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25D
b3VudEluY3JlbWVudGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Rocm93
T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1lbnRlci5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9UaHJvd09uRHluYW1pY01hcmt1cEluc2VydGlvbkNvdW50
SW5jcmVtZW50ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIFRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNyZW1l
bnRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNl
cnRpb25Db3VudEluY3JlbWVudGVyKTsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBUaHJvd09uRHlu
YW1pY01hcmt1cEluc2VydGlvbkNvdW50SW5jcmVtZW50ZXIoRG9jdW1lbnQmIGRvY3VtZW50KQor
ICAgICAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQpCisgICAgeworICAgICAgICArK2RvY3VtZW50
Lm1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudDsKKyAgICB9CisKKyAgICB+VGhy
b3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRpb25Db3VudEluY3JlbWVudGVyKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChtX2RvY3VtZW50LT5tX3Rocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291
bnQpOworICAgICAgICAtLW1fZG9jdW1lbnQtPm1fdGhyb3dPbkR5bmFtaWNNYXJrdXBJbnNlcnRp
b25Db3VudDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gMjM0
NjczKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIkxpbmtMb2FkZXIu
aCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RWxl
bWVudC5oIgorI2luY2x1ZGUgIlRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0aW9uQ291bnRJbmNy
ZW1lbnRlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTIxMCw2ICsyMTEsOCBAQCB2
b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cnVuU2NyaXB0c0ZvclBhCiAKICAgICAgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy8jY3JlYXRlLWFuLWVsZW1lbnQtZm9yLXRoZS10b2tl
bgogICAgICAgICB7CisgICAgICAgICAgICAvLyBQcmV2ZW50IGRvY3VtZW50Lm9wZW4vd3JpdGUg
ZHVyaW5nIHJlYWN0aW9ucyBieSBhbGxvY2F0aW5nIHRoZSBpbmNyZW1lbnRlciBiZWZvcmUgdGhl
IHJlYWN0aW9ucyBzdGFjay4KKyAgICAgICAgICAgIFRocm93T25EeW5hbWljTWFya3VwSW5zZXJ0
aW9uQ291bnRJbmNyZW1lbnRlciBpbmNyZW1lbnRlcigqZG9jdW1lbnQoKSk7CiAgICAgICAgICAg
ICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayByZWFjdGlvblN0YWNrKGRvY3VtZW50KCktPmV4
ZWNTdGF0ZSgpKTsKICAgICAgICAgICAgIGF1dG8mIGVsZW1lbnRJbnRlcmZhY2UgPSBjb25zdHJ1
Y3Rpb25EYXRhLT5lbGVtZW50SW50ZXJmYWNlLmdldCgpOwogICAgICAgICAgICAgYXV0byBuZXdF
bGVtZW50ID0gZWxlbWVudEludGVyZmFjZS5jb25zdHJ1Y3RFbGVtZW50V2l0aEZhbGxiYWNrKCpk
b2N1bWVudCgpLCBjb25zdHJ1Y3Rpb25EYXRhLT5uYW1lKTsKSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
NDY3MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDIwIEBACisyMDE4LTA4LTA3ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisg
ICAgICAgIGRvY3VtZW50Lm9wZW4gYW5kIGRvY3VtZW50LndyaXRlIG11c3QgdGhyb3cgd2hpbGUg
dGhlIEhUTUwgcGFyc2VyIGlzIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVs
ZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
NzMxOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDI4NDMwMTI+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRnLDqWTDqXJpYyBXYW5nLgorCisgICAgICAgIEFkZGVkIFczQyBzdHlsZSB0ZXN0aGFy
bmVzcy5qcyB0ZXN0cy4gVGhlIFdQVCB0ZXN0IGFkZGVkIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0L3B1bGwvMTIwMzcKKyAgICAgICAgZG9lc24ndCB0ZXN0IG5l
YXJseSBhcyBtYW55IGVkZ2UgY2FzZXMuCisKKyAgICAgICAgKiBmYXN0L2N1c3RvbS1lbGVtZW50
cy9yZXNvdXJjZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24t
Y291bnRlci1jb25zdHJ1Y3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2N1
c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291bnRlci1j
b25zdHJ1Y3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvdGhy
b3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHlu
YW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWw6IEFkZGVkLgorCiAy
MDE4LTA4LTA3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM0NjY5LgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNv
dW50ZXItY29uc3RydWN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24tY291
bnRlci1jb25zdHJ1Y3QtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1j
b3VudGVyLWNvbnN0cnVjdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MyBAQAorCitQQVNTIGRvY3VtZW50Lm9wZW4oKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BB
U1MgZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQ
QVNTIGRvY3VtZW50Lm9wZW4oVVJMKSBtdXN0IE5PVCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNT
IGRvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5
bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50
LndyaXRlIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5
IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZWxuIG11
c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVj
dGluZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBk
b2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9u
b3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4o
InRleHQvaHRtbCIpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVt
ZW50IAorUEFTUyBkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGlu
ZyBhIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC53cml0ZSBvZiBhbm90aGVyIGRvY3Vt
ZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNs
eSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGVsbiBv
ZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdo
ZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCAKKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uLWNvdW50ZXItY29uc3RydWN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9u
LWNvdW50ZXItY29uc3RydWN0Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvZmFz
dC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50
ZXItY29uc3RydWN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcgQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVudHM6IGNyZWF0
ZSBhbiBlbGVtZW50IGZvciBhIHRva2VuIG11c3QgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZG9j
dW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRlcjwvdGl0bGU+
Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9Im1haWx0bzpy
bml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0iSW52b2tpbmcg
ZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3JpdGUsIGRvY3VtZW50LndyaXRlbG4sIGFuZCBkb2N1
bWVudC53cml0ZSBtdXN0IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBIVE1MIHBhcnNlciBp
cyBjcmVhdGluZyBhIGN1c3RvbSBlbGVtZW50IGZvciBhIHRva2VuIj4KKzxtZXRhIG5hbWU9Imhl
bHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3BhcnNp
bmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuIj4KKzxtZXRhIG5hbWU9Imhl
bHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL2R5bmFt
aWMtbWFya3VwLWluc2VydGlvbi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlv
bi1jb3VudGVyIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVtZW50cy1oZWxw
ZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4K
KzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9w
YXJzZXIodGVzdCwgY2FsbF9mdW5jdGlvbikKK3sKKyAgICBjb25zdCB3aW5kb3cgPSBhd2FpdCBj
cmVhdGVfd2luZG93X2luX3Rlc3QodGVzdCk7CisgICAgY29uc3QgZG9jdW1lbnQgPSB3aW5kb3cu
ZG9jdW1lbnQ7CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisKKyAgICBsZXQgZXhlY3V0ZWQgPSBm
YWxzZTsKKyAgICBsZXQgZXhjZXB0aW9uID0gbnVsbDsKKyAgICBjbGFzcyBDdXN0b21FbGVtZW50
IGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgY29uc3RydWN0b3IoKSB7Cisg
ICAgICAgICAgICBzdXBlcigpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBj
YWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3aW5kb3cpOworICAgICAgICAgICAgfSBjYXRjaCAoZXJy
b3IpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBlcnJvcjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICB3aW5k
b3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdzb21lLWVsZW1lbnQnLCBDdXN0b21FbGVtZW50KTsK
KworICAgIGRvY3VtZW50LndyaXRlKCc8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48c29tZS1l
bGVtZW50Pjwvc29tZS1lbGVtZW50PjwvYm9keT48L2h0bWw+Jyk7CisgICAgZG9jdW1lbnQuY2xv
c2UoKTsKKworICAgIGFzc2VydF90cnVlKGV4ZWN1dGVkLCAnTXVzdCBzeW5jaHJvbm91c2x5IGlu
c3RhbnRpYXRlIGEgY3VzdG9tIGVsZW1lbnQnKTsKKyAgICByZXR1cm4ge3dpbmRvdywgZG9jdW1l
bnQsIGV4Y2VwdGlvbn07Cit9CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7Cisg
ICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNl
cih0aGlzLCAoZG9jdW1lbnQpID0+IGRvY3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X3Rocm93
cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2Vw
dGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVu
dC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9t
X2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQub3BlbigndGV4
dC9odG1sJykpOworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9
LCAoKSA9PiB7IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgbXVzdCB0aHJv
dyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEg
Y3VzdG9tIGVsZW1lbnQnKTsKKworLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2lu
ZG93Citwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGxldCBsb2FkX3Byb21p
c2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gd2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkg
PT4gcmVzb2x2ZShldmVudC5kYXRhKSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3Ry
dWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQsIHdpbmRvdykgPT4g
ZG9jdW1lbnQub3BlbigncmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCcsICdf
c2VsZicsICcnKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsK
KyAgICBhc3NlcnRfZXF1YWxzKGF3YWl0IGxvYWRfcHJvbWlzZSwgJ2RpZE5hdmlnYXRlJyk7Cit9
LCAnZG9jdW1lbnQub3BlbihVUkwpIG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
IHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxlbWVudCcpOworCitw
cm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0
IGNvbnN0cnVjdF9jdXN0b21fZWxlbWVudF9pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBk
b2N1bWVudC5jbG9zZSgpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRl
RXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvcicpOworfSwgJ2RvY3VtZW50LmNsb3NlKCkgbXVzdCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3Vz
dG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBj
b25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRo
aXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGUoJzxiPnNvbWUgdGV4dDwvYj4nKSk7Cisg
ICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhy
b3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3In
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJyks
IG51bGwsICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKKyAgICBhc3NlcnRfZmFsc2Uo
cmVzdWx0LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5pbm5lckhUTUwuaW5jbHVkZXMoJ3NvbWUg
dGV4dCcpLCAnTXVzdCBub3QgaW5zZXJ0IG5ldyBjb250ZW50Jyk7Cit9LCAnZG9jdW1lbnQud3Jp
dGUgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3VzbHkgY29u
c3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0
aW9uICgpIHsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3RfY3VzdG9tX2VsZW1l
bnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbignPGI+c29t
ZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJy
b3InfSwgKCkgPT4geyB0aHJvdyByZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvcicpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOwor
ICAgIGFzc2VydF9mYWxzZShyZXN1bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRN
TC5pbmNsdWRlcygnc29tZSB0ZXh0JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsK
K30sICdkb2N1bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21p
c2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBh
d2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdh
aXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+
IGFub3RoZXJfd2luZG93LmRvY3VtZW50Lm9wZW4oKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1
bHQuZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5vcGVuKCkgb2YgYW5vdGhlciBkb2N1
bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5bmNocm9ub3Vz
bHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5j
IGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93
aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjb25zdHJ1Y3Rf
Y3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5k
b3cuZG9jdW1lbnQub3BlbigndGV4dC9odG1sJykpOworICAgIGFzc2VydF9lcXVhbHMocmVzdWx0
LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgb2YgYW5v
dGhlciBkb2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHN5
bmNocm9ub3VzbHkgY29uc3RydWN0aW5nIGEgY3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0
IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBj
b25zdHJ1Y3RfY3VzdG9tX2VsZW1lbnRfaW5fcGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5v
dGhlcl93aW5kb3cuZG9jdW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQu
ZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1l
bnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5
IGNvbnN0cnVjdGluZyBhIGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBm
dW5jdGlvbiAoKSB7CisgICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2lu
ZG93X2luX3Rlc3QodGhpcyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1
c3RvbV9lbGVtZW50X2luX3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93
LmRvY3VtZW50LndyaXRlKCc8Yj5zb21lIHRleHQ8L2I+JykpOworICAgIGFzc2VydF9lcXVhbHMo
cmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7CisgICAgYXNzZXJ0X2VxdWFscyhhbm90aGVyX3dpbmRv
dy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiJykub3V0ZXJIVE1MLCAnPGI+c29tZSB0ZXh0PC9i
PicpOworfSwgJ2RvY3VtZW50LndyaXRlIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhy
b3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBzeW5jaHJvbm91c2x5IGNvbnN0cnVjdGluZyBh
IGN1c3RvbSBlbGVtZW50Jyk7CisKK3Byb21pc2VfdGVzdChhc3luYyBmdW5jdGlvbiAoKSB7Cisg
ICAgY29uc3QgYW5vdGhlcl93aW5kb3cgPSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGhp
cyk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY29uc3RydWN0X2N1c3RvbV9lbGVtZW50X2lu
X3BhcnNlcih0aGlzLCAoZG9jdW1lbnQpID0+IGFub3RoZXJfd2luZG93LmRvY3VtZW50LndyaXRl
bG4oJzxiPnNvbWUgdGV4dDwvYj4nKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0
aW9uLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGFub3RoZXJfd2luZG93LmRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJ2InKS5vdXRlckhUTUwsICc8Yj5zb21lIHRleHQ8L2I+Jyk7Cit9LCAnZG9j
dW1lbnQud3JpdGVsbiBvZiBhbm90aGVyIGRvY3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFs
aWRTdGF0ZUVycm9yIHdoZW4gc3luY2hyb25vdXNseSBjb25zdHJ1Y3RpbmcgYSBjdXN0b20gZWxl
bWVudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Rocm93LW9uLWR5bmFtaWMtbWFya3VwLWluc2VydGlvbi1j
b3VudGVyLXJlYWN0aW9ucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0aW9uLWNv
dW50ZXItcmVhY3Rpb25zLWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2N1c3RvbS1lbGVtZW50cy90aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24t
Y291bnRlci1yZWFjdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTMgQEAKKworUEFTUyBkb2N1bWVudC5vcGVuKCkgbXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVF
cnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNo
cm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5vcGVuKCJ0
ZXh0L2h0bWwiKSBtdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2lu
ZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQg
Y3VzdG9tIGVsZW1lbnQgCitQQVNTIGRvY3VtZW50Lm9wZW4oVVJMKSBtdXN0IE5PVCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rp
b25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBk
b2N1bWVudC5jbG9zZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9j
ZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1
Y3RlZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGUgbXVzdCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25z
IGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1
bWVudC53cml0ZWxuIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNz
aW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3Rl
ZCBjdXN0b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQub3BlbigpIG9mIGFub3RoZXIgZG9jdW1l
bnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1
c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0
b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQub3BlbigidGV4dC9odG1sIikgb2YgYW5vdGhlciBk
b2N1bWVudCBtdXN0IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3Np
bmcgY3VzdG9tIGVsZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVk
IGN1c3RvbSBlbGVtZW50IAorUEFTUyBkb2N1bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1l
bnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1
c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0
b20gZWxlbWVudCAKK1BBU1MgZG9jdW1lbnQud3JpdGUgb2YgYW5vdGhlciBkb2N1bWVudCBtdXN0
IG5vdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciB3aGVuIHByb2Nlc3NpbmcgY3VzdG9tIGVs
ZW1lbnQgcmVhY3Rpb25zIGZvciBhIHN5bmNocm9ub3VzIGNvbnN0cnVjdGVkIGN1c3RvbSBlbGVt
ZW50IAorUEFTUyBkb2N1bWVudC53cml0ZWxuIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3Qg
dGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50
IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCAK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1p
Yy1tYXJrdXAtaW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9jdXN0b20tZWxlbWVudHMvdGhyb3ctb24tZHluYW1pYy1tYXJrdXAtaW5zZXJ0
aW9uLWNvdW50ZXItcmVhY3Rpb25zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMTcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DdXN0b20gRWxlbWVu
dHM6IGNyZWF0ZSBhbiBlbGVtZW50IGZvciBhIHRva2VuIG11c3QgaW5jcmVtZW50IGFuZCBkZWNy
ZW1lbnQgZG9jdW1lbnQncyB0aHJvdy1vbi1keW5hbWljLW1hcmt1cC1pbnNlcnRpb24gY291bnRl
cjwvdGl0bGU+Cis8bWV0YSBuYW1lPSJhdXRob3IiIHRpdGxlPSJSeW9zdWtlIE5pd2EiIGhyZWY9
Im1haWx0bzpybml3YUB3ZWJraXQub3JnIj4KKzxtZXRhIG5hbWU9ImFzc2VydCIgY29udGVudD0i
SW52b2tpbmcgZG9jdW1lbnQub3BlbiwgZG9jdW1lbnQud3JpdGUsIGRvY3VtZW50LndyaXRlbG4s
IGFuZCBkb2N1bWVudC53cml0ZSBtdXN0IHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIHRoZSBIVE1M
IHBhcnNlciBpcyBjcmVhdGluZyBhIGN1c3RvbSBlbGVtZW50IGZvciBhIHRva2VuIj4KKzxtZXRh
IG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL3BhcnNpbmcuaHRtbCNjcmVhdGUtYW4tZWxlbWVudC1mb3ItdGhlLXRva2VuIj4KKzxtZXRh
IG5hbWU9ImhlbHAiIGNvbnRlbnQ9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlw
YWdlL2R5bmFtaWMtbWFya3VwLWluc2VydGlvbi5odG1sI3Rocm93LW9uLWR5bmFtaWMtbWFya3Vw
LWluc2VydGlvbi1jb3VudGVyIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL2N1c3RvbS1lbGVt
ZW50cy1oZWxwZXJzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0ibG9n
Ij48L2Rpdj4KKzxzY3JpcHQ+CisKK2FzeW5jIGZ1bmN0aW9uIGN1c3RvbV9lbGVtZW50X3JlYWN0
aW9uc19pbl9wYXJzZXIodGVzdCwgY2FsbF9mdW5jdGlvbikKK3sKKyAgICBjb25zdCB3aW5kb3cg
PSBhd2FpdCBjcmVhdGVfd2luZG93X2luX3Rlc3QodGVzdCk7CisgICAgY29uc3QgZG9jdW1lbnQg
PSB3aW5kb3cuZG9jdW1lbnQ7CisKKyAgICBkb2N1bWVudC5vcGVuKCk7CisKKyAgICBsZXQgZXhl
Y3V0ZWQgPSBmYWxzZTsKKyAgICBsZXQgZXhjZXB0aW9uID0gbnVsbDsKKyAgICBjbGFzcyBDdXN0
b21FbGVtZW50IGV4dGVuZHMgd2luZG93LkhUTUxFbGVtZW50IHsKKyAgICAgICAgYXR0cmlidXRl
Q2hhbmdlZENhbGxiYWNrKG5hbWUsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgeworICAgICAgICAgICAg
dHJ5IHsKKyAgICAgICAgICAgICAgICBjYWxsX2Z1bmN0aW9uKGRvY3VtZW50LCB3aW5kb3cpOwor
ICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBleGNlcHRpb24g
PSBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGV4ZWN1dGVkID0gdHJ1ZTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBDdXN0b21FbGVtZW50Lm9ic2VydmVkQXR0cmlidXRlcyA9IFsn
dGl0bGUnXTsKKyAgICB3aW5kb3cuY3VzdG9tRWxlbWVudHMuZGVmaW5lKCdzb21lLWVsZW1lbnQn
LCBDdXN0b21FbGVtZW50KTsKKworICAgIGRvY3VtZW50LndyaXRlKCc8IURPQ1RZUEUgaHRtbD48
aHRtbD48Ym9keT48c29tZS1lbGVtZW50IHRpdGxlPSJzb21lIHRpdGxlIj48L3NvbWUtZWxlbWVu
dD48L2JvZHk+PC9odG1sPicpOworICAgIGRvY3VtZW50LmNsb3NlKCk7CisKKyAgICBhc3NlcnRf
dHJ1ZShleGVjdXRlZCwgJ011c3QgaW1tZWRpYXRlbHkgcHJvY2VzcyBjdXN0b20gZWxlbWVudCBy
ZWFjdGlvbnMgZm9yIHNldHRpbmcgYXR0cmlidXRlcycpOworICAgIHJldHVybiB7ZnJhbWVFbGVt
ZW50LCB3aW5kb3csIGRvY3VtZW50LCBleGNlcHRpb259OworfQorCitwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50
X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCkp
OworICAgIGFzc2VydF90aHJvd3Moe25hbWU6ICdJbnZhbGlkU3RhdGVFcnJvcid9LCAoKSA9PiB7
IHRocm93IHJlc3VsdC5leGNlcHRpb247IH0sICdNdXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVy
cm9yJyk7Cit9LCAnZG9jdW1lbnQub3BlbigpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJv
bm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMg
ZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3Jl
YWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBkb2N1bWVudC5vcGVuKCd0ZXh0
L2h0bWwnKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFtZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30s
ICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsgfSwgJ011c3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBtdXN0IHRocm93
IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxlbWVudCByZWFj
dGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1lbnQnKTsKKwor
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvZHluYW1pYy1tYXJrdXAt
aW5zZXJ0aW9uLmh0bWwjZG9tLWRvY3VtZW50LW9wZW4td2luZG93Citwcm9taXNlX3Rlc3QoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIGxldCBsb2FkX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVz
b2x2ZSkgPT4gd2luZG93Lm9ubWVzc2FnZSA9IChldmVudCkgPT4gcmVzb2x2ZShldmVudC5kYXRh
KSk7CisgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgY3VzdG9tX2VsZW1lbnRfcmVhY3Rpb25zX2lu
X3BhcnNlcih0aGlzLCAoZG9jdW1lbnQsIHdpbmRvdykgPT4gZG9jdW1lbnQub3BlbigncmVzb3Vy
Y2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRtbCcsICdfc2VsZicsICcnKSk7CisgICAgYXNz
ZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsKKyAgICBhc3NlcnRfZXF1YWxzKGF3
YWl0IGxvYWRfcHJvbWlzZSwgJ2RpZE5hdmlnYXRlJyk7Cit9LCAnZG9jdW1lbnQub3BlbihVUkwp
IG11c3QgTk9UIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0
b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9t
IGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25z
dCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMs
IChkb2N1bWVudCkgPT4gZG9jdW1lbnQuY2xvc2UoKSk7CisgICAgYXNzZXJ0X3Rocm93cyh7bmFt
ZTogJ0ludmFsaWRTdGF0ZUVycm9yJ30sICgpID0+IHsgdGhyb3cgcmVzdWx0LmV4Y2VwdGlvbjsg
fSwgJ011c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3InKTsKK30sICdkb2N1bWVudC5jbG9z
ZSgpIG11c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3Rv
bSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20g
ZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0
IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywg
KGRvY3VtZW50KSA9PiBkb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBh
c3NlcnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyBy
ZXN1bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOwor
ICAgIGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVs
bCwgJ011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9mYWxzZShyZXN1
bHQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0
JyksICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVudC53cml0ZSBt
dXN0IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20gZWxl
bWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVsZW1l
bnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCByZXN1
bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRoaXMsIChkb2N1
bWVudCkgPT4gZG9jdW1lbnQud3JpdGVsbignPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3Nl
cnRfdGhyb3dzKHtuYW1lOiAnSW52YWxpZFN0YXRlRXJyb3InfSwgKCkgPT4geyB0aHJvdyByZXN1
bHQuZXhjZXB0aW9uOyB9LCAnTXVzdCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvcicpOworICAg
IGFzc2VydF9lcXVhbHMocmVzdWx0LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2InKSwgbnVsbCwg
J011c3Qgbm90IGluc2VydCBuZXcgY29udGVudCcpOworICAgIGFzc2VydF9mYWxzZShyZXN1bHQu
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmlubmVySFRNTC5pbmNsdWRlcygnc29tZSB0ZXh0Jyks
ICdNdXN0IG5vdCBpbnNlcnQgbmV3IGNvbnRlbnQnKTsKK30sICdkb2N1bWVudC53cml0ZWxuIG11
c3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVt
ZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVu
dCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3Ro
ZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0
IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywg
KGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1bWVudC5vcGVuKCkpOworICAgIGFzc2Vy
dF9lcXVhbHMocmVzdWx0LmV4Y2VwdGlvbiwgbnVsbCk7Cit9LCAnZG9jdW1lbnQub3BlbigpIG9m
IGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3Igd2hl
biBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJvbm91cyBj
b25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgZnVuY3Rp
b24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQgY3JlYXRlX3dpbmRvd19p
bl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1c3RvbV9lbGVtZW50X3Jl
YWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90aGVyX3dpbmRvdy5kb2N1
bWVudC5vcGVuKCd0ZXh0L2h0bWwnKSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0
aW9uLCBudWxsKTsKK30sICdkb2N1bWVudC5vcGVuKCJ0ZXh0L2h0bWwiKSBvZiBhbm90aGVyIGRv
Y3VtZW50IG11c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2lu
ZyBjdXN0b20gZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQg
Y3VzdG9tIGVsZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAg
ICBjb25zdCBhbm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlz
KTsKKyAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5f
cGFyc2VyKHRoaXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQuY2xvc2Uo
KSk7CisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHQuZXhjZXB0aW9uLCBudWxsKTsKK30sICdkb2N1
bWVudC5jbG9zZSgpIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxp
ZFN0YXRlRXJyb3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3Ig
YSBzeW5jaHJvbm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgZnVuY3Rpb24gKCkgeworICAgIGNvbnN0IGFub3RoZXJfd2luZG93ID0gYXdhaXQg
Y3JlYXRlX3dpbmRvd19pbl90ZXN0KHRoaXMpOworICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGN1
c3RvbV9lbGVtZW50X3JlYWN0aW9uc19pbl9wYXJzZXIodGhpcywgKGRvY3VtZW50KSA9PiBhbm90
aGVyX3dpbmRvdy5kb2N1bWVudC53cml0ZSgnPGI+c29tZSB0ZXh0PC9iPicpKTsKKyAgICBhc3Nl
cnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwpOworICAgIGFzc2VydF9lcXVhbHMoYW5v
dGhlcl93aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYicpLm91dGVySFRNTCwgJzxiPnNv
bWUgdGV4dDwvYj4nKTsKK30sICdkb2N1bWVudC53cml0ZSBvZiBhbm90aGVyIGRvY3VtZW50IG11
c3Qgbm90IHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIHdoZW4gcHJvY2Vzc2luZyBjdXN0b20g
ZWxlbWVudCByZWFjdGlvbnMgZm9yIGEgc3luY2hyb25vdXMgY29uc3RydWN0ZWQgY3VzdG9tIGVs
ZW1lbnQnKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jIGZ1bmN0aW9uICgpIHsKKyAgICBjb25zdCBh
bm90aGVyX3dpbmRvdyA9IGF3YWl0IGNyZWF0ZV93aW5kb3dfaW5fdGVzdCh0aGlzKTsKKyAgICBj
b25zdCByZXN1bHQgPSBhd2FpdCBjdXN0b21fZWxlbWVudF9yZWFjdGlvbnNfaW5fcGFyc2VyKHRo
aXMsIChkb2N1bWVudCkgPT4gYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQud3JpdGVsbignPGI+c29t
ZSB0ZXh0PC9iPicpKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJlc3VsdC5leGNlcHRpb24sIG51bGwp
OworICAgIGFzc2VydF9lcXVhbHMoYW5vdGhlcl93aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignYicpLm91dGVySFRNTCwgJzxiPnNvbWUgdGV4dDwvYj4nKTsKK30sICdkb2N1bWVudC53cml0
ZWxuIG9mIGFub3RoZXIgZG9jdW1lbnQgbXVzdCBub3QgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJy
b3Igd2hlbiBwcm9jZXNzaW5nIGN1c3RvbSBlbGVtZW50IHJlYWN0aW9ucyBmb3IgYSBzeW5jaHJv
bm91cyBjb25zdHJ1Y3RlZCBjdXN0b20gZWxlbWVudCcpOworCis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvY3VzdG9tLWVsZW1lbnRzL3Jlc291cmNl
cy9uYXZpZ2F0aW9uLWRlc3RpbmF0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9jdXN0b20tZWxlbWVudHMvcmVzb3VyY2VzL25hdmlnYXRpb24tZGVzdGluYXRpb24uaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2N1c3RvbS1lbGVtZW50cy9yZXNv
dXJjZXMvbmF2aWdhdGlvbi1kZXN0aW5hdGlvbi5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+TmF2aWdhdGVkITwv
cD4KKzxzY3JpcHQ+CitwYXJlbnQucG9zdE1lc3NhZ2UoJ2RpZE5hdmlnYXRlJywgJyonKTsKKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="commit-queue"
          id="364576"
          type_id="3"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>