<?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>234568</bug_id>
          
          <creation_ts>2021-12-21 10:37:38 -0800</creation_ts>
          <short_desc>[WebIDL] document.body.onerror setter should setup a five-parameter listener</short_desc>
          <delta_ts>2023-05-17 21:28:55 -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>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://github.com/web-platform-tests/wpt/pull/32164</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BrowserCompat, InRadar, WPTImpact</keywords>
          <priority>P2</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Shvayka">ashvayka</reporter>
          <assigned_to name="Alexey Shvayka">ashvayka</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1826044</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 10:37:38 -0800</bug_when>
    <thetext>[WebIDL] document.body.onerror setter should setup a five-parameter listener</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826046</commentid>
    <comment_count>1</comment_count>
      <attachid>447733</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 10:41:54 -0800</bug_when>
    <thetext>Created attachment 447733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826047</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-12-21 10:43:27 -0800</bug_when>
    <thetext>This patch modifies the imported WPT tests. Please ensure that any changes on the tests (not coming from a WPT import) are exported to WPT. Please see https://trac.webkit.org/wiki/WPTExportProcess</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826050</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 10:44:11 -0800</bug_when>
    <thetext>Hey Darin, this change follows-up your FIXME added in https://bugs.webkit.org/show_bug.cgi?id=142282. I would appreciate a feedback!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826075</commentid>
    <comment_count>4</comment_count>
      <attachid>447733</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 11:50:15 -0800</bug_when>
    <thetext>Comment on attachment 447733
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5437
&gt; +        my $isOnErrorEventHandler = $attribute-&gt;name eq &quot;onerror&quot; &amp;&amp; ($interface-&gt;type-&gt;name eq &quot;DOMWindow&quot; || $interface-&gt;type-&gt;name eq &quot;WorkerGlobalScope&quot; || $attribute-&gt;extendedAttributes-&gt;{WindowEventHandler});

I still would like to do this by using OnErrorEventHandler and OnBeforeUnloadEventHandler in the IDL files rather than hard-coding the attribute and class names here.

This change looks great to me, but I think we should do it by adding an understanding of the names OnErrorEventHandler and OnBeforeUnloadEventHandler. There are only four places in the entire code generator where the name EventHandler appears, so that is the maximum number of call sites we’d have to change to use a shared function that understands these three different EventHandler names that exist, or special case all type names with that end with an EventHandler suffix instead of comparing the whole type name. Then, I would still suggest we keep the rest of the code you wrote the same; this one line of code would be different.

&gt; Source/WebCore/dom/GlobalEventHandlers.idl:55
&gt; +    attribute EventHandler onerror; // OnErrorEventHandler semantics is added in GenerateAttributeSetterBodyDefinition

We should write OnErrorEventHandler here in the IDL file and fix the code generator to understand what it means. Is there a good reason not to do that? If it’s really helpful to not write OnErrorEventHandler as the type, we could consider an extended attribute named [OnErrorEventHandler] instead, but that seems unnecessary.

One of the ways you can tell this is a good idea is that we end up without having to write a comment explaining ourselves!

&gt; Source/WebCore/page/WindowEventHandlers.idl:31
&gt; +    [WindowEventHandler] attribute EventHandler onbeforeunload; // OnBeforeUnloadEventHandler semantics is added in JSEventListener::handleEvent()

Ditto.

&gt; Source/WebCore/workers/WorkerGlobalScope.idl:38
&gt; +    attribute EventHandler onerror; // OnErrorEventHandler semantics is added in GenerateAttributeSetterBodyDefinition

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826090</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 12:41:31 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; We should write OnErrorEventHandler here in the IDL file and fix the code
&gt; generator to understand what it means. Is there a good reason not to do
&gt; that?

I would say it&apos;s not practical to do that considering the necessary changes to functions like ProcessInterfaceSupplementalDependencies.
Let&apos;s consider the changes for suggested approach:

1. Add attribute `OnErrorEventHandler onerror` to the DOMWindow.idl. We can&apos;t just amend the type of `onerror` in GlobalEventHandlers (like the spec does) because other receivers other than Window / Worker / &lt;body&gt; / &lt;frameset&gt; should setup single-parameter listener. This is fine though.

2. Teach code generator to support type names ending with EventHandler suffix =&gt; also neat and fine.

Now we get a compilation error because there are two `onerror` accessors on DOMWindow. 

3. We now need to teach ProcessInterfaceSupplementalDependencies to ignore an `ErrorHandler onerror` attribute from supplemental interface if there is a `OnErrorEventHandler onerror`.

That won&apos;t be neat and I would rather prefer a hard-coded type name check, especially since it&apos;s nicely matches the spec, then somewhat weird merging.
Same effort would be needed for using an [OnErrorEventHandler] extended attribute rather than a return type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826107</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 13:59:49 -0800</bug_when>
    <thetext>How do the WebIDL specification and the other specifications deal with this conflict between onerror in GlobalEventhandlers and in DOMWindow with two different types?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826114</commentid>
    <comment_count>7</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 14:19:44 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; How do the WebIDL specification and the other specifications deal with this
&gt; conflict between onerror in GlobalEventhandlers and in DOMWindow with two
&gt; different types?

`onerror` in GlobalEventHandlers has a OnErrorEventHandler type, expecting a five-parameter function, which is pretty confusing given that a regular listener is invoked for most receivers.

WebIDL has no mechanism of validating / rejecting a user land function by signature, so that OnErrorEventHandler accepts a regular listener.

However, when any event handler is called, if it&apos;s an ErrorEvent with &quot;error&quot; type fired on Window / Worker (step 3 of https://html.spec.whatwg.org/#the-event-handler-processing-algorithm), it&apos;s called with 5 arguments instead of 1.

Unlike the spec, WebKit attempts to do less work in runtime, hence the JSErrorHandler and the additional code generation efforts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826118</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 14:41:19 -0800</bug_when>
    <thetext>Given this history, I suggest we specify OnErrorEventHandler in both places, do the 1-argument version for efficiency by default and use an extended attribute on the interfaces that want the full 5-argument form.

This won’t be hard to do. If you prefer to have me make that change I will be happy to. I think it’s even better to do it that way than the way you’ve done it here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826122</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 14:52:30 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #8)
&gt; Given this history, I suggest we specify OnErrorEventHandler in both places,
&gt; do the 1-argument version for efficiency by default and use an extended
&gt; attribute on the interfaces that want the full 5-argument form.

Hmm, I don&apos;t see how that saves us from implementing the weird attribute merging. Unless we put an extended attribute on the Window / Worker / &lt;body&gt; / &lt;frameset&gt; interfaces itself, which doesn&apos;t seem better than hardcoding their names.

I&apos;m happy do the change myself!

===

As for OnBeforeUnloadEventHandler, there is no conflict of signatures for it. It&apos;s handled in JSEventListener::handleEvent() only for convenience. We can put a OnBeforeUnloadEventHandler type to the IDL, and make a subclass of JSEventListener, but is there a practical benefit to such a change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826124</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-21 14:54:00 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #9)
&gt; Unless we put an extended attribute on the Window / Worker / &lt;body&gt;
&gt; / &lt;frameset&gt; interfaces itself, which doesn&apos;t seem better than hardcoding
&gt; their names.

Aha, we have found it, this the key point on which we differ. I do think that putting the extended attribute on these 4 interfaces is better than hard-coding their names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826144</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 15:48:25 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Aha, we have found it, this the key point on which we differ. I do think
&gt; that putting the extended attribute on these 4 interfaces is better than
&gt; hard-coding their names.

Seems like I came up with a solution we both will be happy with.

Exporting the WPT while it compiles...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1826156</commentid>
    <comment_count>12</comment_count>
      <attachid>447762</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-21 16:21:33 -0800</bug_when>
    <thetext>Created attachment 447762
Patch

Introduce IsEventHandlerType helper, remove the hard-coding of interface names, and align IDLs with the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827107</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-28 10:38:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/86959987&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829064</commentid>
    <comment_count>14</comment_count>
      <attachid>447762</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2022-01-07 14:01:00 -0800</bug_when>
    <thetext>Comment on attachment 447762
Patch

Hey Darin,

Does the updated patch look to you like something we can land w/o a follow-up?

I appreciate all your feedback!


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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:5437
&gt; +        my $eventListenerType = $attribute-&gt;type-&gt;name eq &quot;OnErrorEventHandler&quot; &amp;&amp; (IsDOMGlobalObject($interface) || $attribute-&gt;extendedAttributes-&gt;{WindowEventHandler}) ? &quot;JSErrorHandler&quot; : &quot;JSEventListener&quot;;

Usage of IsDOMGlobalObject here is forward-compatible &amp; safe because there will be no EventHandler&apos;s introduced in new specs, as those are considered legacy, especially the ones of OnErrorEventHandler type.
I will make sure to note this in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1829134</commentid>
    <comment_count>15</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-07 16:31:42 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #14)
&gt; Does the updated patch look to you like something we can land w/o a
&gt; follow-up?

Yes.

&gt; I appreciate all your feedback!

Thanks; I find it fun to try to tame the code generation code a bit and make it simpler over time. Cutting down special cases. And also, relying a bit more on C++ techniques that were not available when it was originally written.

Separately, maybe someone should port it to Python at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1954986</commentid>
    <comment_count>16</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2023-05-12 08:24:42 -0700</bug_when>
    <thetext>*** Bug 256484 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1956007</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2023-05-17 13:43:46 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/13983</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1956112</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-05-17 21:28:49 -0700</bug_when>
    <thetext>Committed 264190@main (cf847edd8255): &lt;https://commits.webkit.org/264190@main&gt;

Reviewed commits have been landed. Closing PR #13983 and removing active labels.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447733</attachid>
            <date>2021-12-21 10:41:54 -0800</date>
            <delta_ts>2021-12-21 16:21:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234568-20211221184152.patch</filename>
            <type>text/plain</type>
            <size>21463</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIxLTEyLTIxICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBkb2N1bWVu
dC5ib2R5Lm9uZXJyb3Igc2V0dGVyIHNob3VsZCBzZXR1cCBhIGZpdmUtcGFyYW1ldGVyIGxpc3Rl
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGls
ZSBpdCdzIGluZGVlZCBwb3NzaWJsZSB0byByZW1vdmUgdGhlIHNwZWNpYWwtY2FzaW5nIG9mICJv
bmVycm9yIiBldmVudCBoYW5kbGVyIGZyb20gdGhlCisgICAgICAgIGJpbmRpbmdzIGdlbmVyYXRv
ciwgdGhhdCB3b3VsZCBjb21lIHdpdGggYSBodWdlIGNvc3QuICJvbmVycm9yIiBpcyBhIGdsb2Jh
bCBldmVudCBoYW5kbGVyIHRoYXQKKyAgICAgICAgc2hvdWxkIHNldHVwIEpTRXJyb3JIYW5kbGVy
IG9uIFdpbmRvdyAvIFdvcmtlciAvIDxib2R5PiAvIDxmcmFtZXNldD4sIGJ1dCBub3Qgb24gb3Ro
ZXIgcmVjZWl2ZXJzLgorCisgICAgICAgIFdlIGNhbid0IGdldCB0aGUgY29kZSBnZW5lcmF0b3Ig
dG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRob3NlIHdpdGhvdXQgaW1wbGljaXRseSBvdmVycmlk
aW5nCisgICAgICAgICh2aWEgYGluY2x1ZGVzYCBvcmRlcikgYW4gYEV2ZW50SGFuZGxlciBvbmVy
cm9yYCB3aXRoIGBPbkVycm9yRXZlbnRIYW5kbGVyIG9uZXJyb3JgLAorICAgICAgICBBTkQgaW1w
bGVtZW50aW5nIHNvbWUgc29ydCBvZiBtZXJnaW5nIGZvciB0aGVzZSBwYXJ0aWN1bGFyIGF0dHJp
YnV0ZXM7CisgICAgICAgIG90aGVyd2lzZSwgYSBzZXQgb2YgdHdvIGFjY2Vzc29ycyBnZXRzIGNy
ZWF0ZWQsIGNhdXNpbmcgYSBjb21waWxlIGVycm9yLgorCisgICAgICAgIEluc3RlYWQsIHRoaXMg
cGF0Y2ggZml4ZXMgIm9uZXJyb3IiIHNwZWNpYWwtY2FzaW5nIHRvIGFsc28gaW5jbHVkZSA8Ym9k
eT4gLyA8ZnJhbWVzZXQ+IGVsZW1lbnRzCisgICAgICAgIHNvIGEgZml2ZS1wYXJhbWV0ZXIgKGlu
c3RlYWQgb2YgYSBzaW5nbGUtcGFyYW1ldGVyKSBsaXN0ZW5lciBpcyBjcmVhdGVkIGFuZCBmb3J3
YXJkZWQgdG8gV2luZG93LgorICAgICAgICBBbm90aGVyIGJlbmVmaXQgb2YgdGhpcyBhcHByb2Fj
aCBpcyBob3cgY2xvc2VseSBvdXIgY29kZSBtYXRjaGVzIHRoZSBzcGVjIFsxXS4KKworICAgICAg
ICBBbGlnbnMgV2ViS2l0IHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgIFsxXSBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFs
Z29yaXRobSAoc3RlcCAzKQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXIt
cHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2
ZW50Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5n
LWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0bWwKKyAgICAg
ICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlz
L3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJv
ci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50Lmh0bWwKKyAgICAgICAgICAg
ICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFt
ZXNldC1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0
dGVyQm9keURlZmluaXRpb24pOgorICAgICAgICAqIGRvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlk
bDoKKyAgICAgICAgKiBwYWdlL1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsOgorICAgICAgICBTaW1p
bGFybHkgdG8gT25FcnJvckV2ZW50SGFuZGxlciwgdGhlcmUgaXMgbm8gcHJhY3RpY2FsIGJlbmVm
aXQgdG8gaGF2ZSBPbkJlZm9yZVVubG9hZEV2ZW50SGFuZGxlciBpbiB0aGUgSURMLgorICAgICAg
ICBBZGRzIGEgY29tbWVudCBvbiBob3cgaXRzIHNlbWFudGljcyBpcyBpbXBsZW1lbnRlZC4KKwor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorCiAyMDIxLTEyLTIwICBB
bGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViSURMXSBj
b252ZXJ0VmFyaWFkaWNBcmd1bWVudHMoKSBzaG91bGQgcmV0dXJuIGEgRml4ZWRWZWN0b3IKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAyODcyOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtNTQzMywxNyArNTQzMywx
MyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvCiAgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICB0aGlzT2JqZWN0LnNldCR7aW1wbFNldHRlckZ1bmN0aW9u
TmFtZX0obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpO1xuIik7CiAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwogICAgIH0gZWxzaWYgKCRpc0V2ZW50
SGFuZGxlcikgewotICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNFdmVudExpc3RlbmVyLmgi
LCAkY29uZGl0aW9uYWwpOwogICAgICAgICBteSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0
cmlidXRlRXZlbnROYW1lKCRhdHRyaWJ1dGUpOwotICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5
IHRvIGRvIHRoaXMgc3BlY2lhbCBjYXNlIHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5k
IGF0dHJpYnV0ZSBuYW1lcyBoZXJlLgotICAgICAgICBpZiAoKCRpbnRlcmZhY2UtPnR5cGUtPm5h
bWUgZXEgIkRPTVdpbmRvdyIgb3IgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2VyR2xv
YmFsU2NvcGUiKSBhbmQgJGF0dHJpYnV0ZS0+bmFtZSBlcSAib25lcnJvciIpIHsKLSAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0Vycm9ySGFuZGxlci5oIiwgJGNvbmRpdGlvbmFsKTsK
LSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzZXRFdmVudEhhbmRsZXJBdHRy
aWJ1dGU8SlNFcnJvckhhbmRsZXI+KHRoaXNPYmplY3Qud3JhcHBlZCgpLCAke2V2ZW50TmFtZX0s
IHZhbHVlLCB0aGlzT2JqZWN0KTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIkpTRXZlbnRMaXN0ZW5lci5oIiwgJGNvbmRpdGlvbmFsKTsKLSAg
ICAgICAgICAgIG15ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntX
aW5kb3dFdmVudEhhbmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIgOiAi
c2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAkc2V0dGVyPEpTRXZlbnRMaXN0ZW5lcj4odGhpc09iamVjdC53cmFwcGVkKCksICR7
ZXZlbnROYW1lfSwgdmFsdWUsIHRoaXNPYmplY3QpO1xuIik7Ci0gICAgICAgIH0KKyAgICAgICAg
bXkgJGlzT25FcnJvckV2ZW50SGFuZGxlciA9ICRhdHRyaWJ1dGUtPm5hbWUgZXEgIm9uZXJyb3Ii
ICYmICgkaW50ZXJmYWNlLT50eXBlLT5uYW1lIGVxICJET01XaW5kb3ciIHx8ICRpbnRlcmZhY2Ut
PnR5cGUtPm5hbWUgZXEgIldvcmtlckdsb2JhbFNjb3BlIiB8fCAkYXR0cmlidXRlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntXaW5kb3dFdmVudEhhbmRsZXJ9KTsKKyAgICAgICAgbXkgJGV2ZW50TGlz
dGVuZXJUeXBlID0gJGlzT25FcnJvckV2ZW50SGFuZGxlciA/ICJKU0Vycm9ySGFuZGxlciIgOiAi
SlNFdmVudExpc3RlbmVyIjsKKyAgICAgICAgbXkgJHNldHRlciA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1dpbmRvd0V2ZW50SGFuZGxlcn0gPyAic2V0V2luZG93RXZlbnRIYW5k
bGVyQXR0cmlidXRlIiA6ICJzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGUiOworCisgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCIke2V2ZW50TGlzdGVuZXJUeXBlfS5oIiwgJGNvbmRpdGlvbmFsKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICR7c2V0dGVyfTwke2V2ZW50TGlzdGVu
ZXJUeXBlfT4odGhpc09iamVjdC53cmFwcGVkKCksICR7ZXZlbnROYW1lfSwgdmFsdWUsIHRoaXNP
YmplY3QpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICB2bS53cml0ZUJh
cnJpZXIoJnRoaXNPYmplY3QsIHZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUodmFsdWUpO1xuXG4iKTsKICAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiB0cnVlO1xuIik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCShyZXZpc2lvbiAyODcyOTQpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDggKzUyLDcgQEAgaW50ZXJmYWNlIG1peGluIEdsb2JhbEV2ZW50SGFuZGxlcnMgewog
ICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25kdXJhdGlvbmNoYW5nZTsKICAgICBhdHRyaWJ1
dGUgRXZlbnRIYW5kbGVyIG9uZW1wdGllZDsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
ZW5kZWQ7Ci0gICAgLy8gRklYTUU6IFRoZSBzcGVjICdvbmVycm9yJyBzaG91bGQgYmUgb2YgdHlw
ZSAnT25FcnJvckV2ZW50SGFuZGxlcicuCi0gICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVy
cm9yOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJvcjsgLy8gT25FcnJvckV2ZW50
SGFuZGxlciBzZW1hbnRpY3MgaXMgYWRkZWQgaW4gR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5
RGVmaW5pdGlvbgogICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25mb2N1czsKICAgICBhdHRy
aWJ1dGUgRXZlbnRIYW5kbGVyIG9uZm9ybWRhdGE7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmlucHV0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9XaW5kb3dFdmVudEhhbmRsZXJz
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0V2ZW50SGFuZGxl
cnMuaWRsCShyZXZpc2lvbiAyODcyOTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1dpbmRvd0V2
ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiBpbnRlcmZh
Y2UgbWl4aW4gV2luZG93RXZlbnRIYW5kbGVycyB7CiAgICAgW1dpbmRvd0V2ZW50SGFuZGxlcl0g
YXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFmdGVycHJpbnQ7CiAgICAgW1dpbmRvd0V2ZW50SGFu
ZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJlZm9yZXByaW50OwotICAgIC8vIEZJWE1F
OiBUaGUgc3BlYyBzYXlzIHRoYXQgb25iZWZvcmV1bmxvYWQgc2hvdWxkIGJlIG9mIHR5cGUgT25C
ZWZvcmVVbmxvYWRFdmVudEhhbmRsZXIsIG5vdCBFdmVudEhhbmRsZXIuCi0gICAgW1dpbmRvd0V2
ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJlZm9yZXVubG9hZDsKKyAgICBb
V2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYmVmb3JldW5sb2Fk
OyAvLyBPbkJlZm9yZVVubG9hZEV2ZW50SGFuZGxlciBzZW1hbnRpY3MgaXMgYWRkZWQgaW4gSlNF
dmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCgpCiAgICAgW1dpbmRvd0V2ZW50SGFuZGxlcl0gYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbmhhc2hjaGFuZ2U7CiAgICAgW1dpbmRvd0V2ZW50SGFuZGxl
cl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmxhbmd1YWdlY2hhbmdlOwogICAgIFtXaW5kb3dF
dmVudEhhbmRsZXJdIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25tZXNzYWdlOwpJbmRleDogU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHJldmlzaW9uIDI4
NzI5NCkKKysrIFNvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw4ICszNSw3IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFdv
cmtlck5hdmlnYXRvciBuYXZpZ2F0b3I7CiAgICAgdW5kZWZpbmVkIGltcG9ydFNjcmlwdHMoVVNW
U3RyaW5nLi4uIHVybHMpOwogCi0gICAgLy8gRklYTUU6IFRoZSBzcGVjICdvbmVycm9yJyBzaG91
bGQgYmUgb2YgdHlwZSAnT25FcnJvckV2ZW50SGFuZGxlcicuCi0gICAgYXR0cmlidXRlIEV2ZW50
SGFuZGxlciBvbmVycm9yOworICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJvcjsgLy8g
T25FcnJvckV2ZW50SGFuZGxlciBzZW1hbnRpY3MgaXMgYWRkZWQgaW4gR2VuZXJhdGVBdHRyaWJ1
dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgJ29ubGFuZ3Vh
Z2VjaGFuZ2UnLgogICAgIC8vIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25sYW5ndWFnZWNoYW5n
ZTsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ub2ZmbGluZTsKSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwkocmV2aXNpb24gMjg3MzIzKQorKysgTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDIx
LTEyLTIxICBBbGV4ZXkgU2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBb
V2ViSURMXSBkb2N1bWVudC5ib2R5Lm9uZXJyb3Igc2V0dGVyIHNob3VsZCBzZXR1cCBhIGZpdmUt
cGFyYW1ldGVyIGxpc3RlbmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzQ1NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5n
L2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxl
bWVudC1zeW50aGV0aWMtZXJyb3JldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVu
dC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0
aWMtZXJyb3JldmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5n
LWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWV2ZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9z
Y3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3Iv
Ym9keS1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFu
ZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRp
Yy1lcnJvcmV2ZW50LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJv
Y2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXJyb3Jl
dmVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRo
bS1lcnJvci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0
aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1l
c2V0LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHdlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5k
bGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL3Jlc291cmNlcy9mcmFtZXNldC1mcmFtZS5o
dG1sOiBBZGRlZC4KKwogMjAyMS0xMi0yMSAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgog
CiAgICAgICAgIDxkaWFsb2c+IHNob3VsZCBnZW5lcmF0ZSBpbXBsaWVkIGVuZCB0YWdzCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0t
ZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0
bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1h
bGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50LWV4cGVjdGVk
LnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXIt
cHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2
ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQgQEAKKworUEFTUyBl
cnJvciBldmVudCBpcyB3ZWlyZCAocmV0dXJuIHRydWUgY2FuY2VsczsgbWFueSBhcmdzKSBvbiBX
aW5kb3csIHdpdGggYSBzeW50aGV0aWMgRXJyb3JFdmVudAorUEFTUyBlcnJvciBldmVudCBoYXMg
dGhlIHJpZ2h0IDUgYXJncyBvbiBXaW5kb3csIHdpdGggYSBzeW50aGV0aWMgRXJyb3JFdmVudAor
CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwv
d2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdv
cml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1s
L3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxn
b3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXJyb3JldmVudC5odG1sCShub25l
eGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
aHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5n
LWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWVycm9yZXZlbnQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNo
YXJzZXQ9InV0Zi04Ij4KKzx0aXRsZT5FdmVudCBoYW5kbGVycyBwcm9jZXNzaW5nIGFsZ29yaXRo
bTogZXJyb3IgZXZlbnRzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvI3RoZS1ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxn
b3JpdGhtIj4KKworPGRpdiBpZD0ibG9nIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0
IjsKK3NldHVwKHsgYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uOiB0cnVlIH0pOworCitwcm9taXNl
X3Rlc3QodCA9PiB7CisgIGRvY3VtZW50LmJvZHkub25lcnJvciA9IHQuc3RlcF9mdW5jKCguLi5h
cmdzKSA9PiB7CisgICAgYXNzZXJ0X2dyZWF0ZXJfdGhhbihhcmdzLmxlbmd0aCwgMSk7CisgICAg
cmV0dXJuIHRydWU7CisgIH0pOworCisgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdh
dGNoZXIodCwgd2luZG93LCAiZXJyb3IiKTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0Y2hl
ci53YWl0X2ZvcigiZXJyb3IiKS50aGVuKGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZS5kZWZh
dWx0UHJldmVudGVkLCB0cnVlKTsKKyAgfSk7CisKKyAgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2
ZW50KG5ldyBFcnJvckV2ZW50KCJlcnJvciIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTog
dHJ1ZSB9KSk7CisKKyAgcmV0dXJuIHByb21pc2U7Cit9LCAiZXJyb3IgZXZlbnQgaXMgd2VpcmQg
KHJldHVybiB0cnVlIGNhbmNlbHM7IG1hbnkgYXJncykgb24gV2luZG93LCB3aXRoIGEgc3ludGhl
dGljIEVycm9yRXZlbnQiKTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0aGVFcnJv
ciA9IHsgdGhlOiAiZXJyb3Igb2JqZWN0IiB9OworCisgIGRvY3VtZW50LmJvZHkub25lcnJvciA9
IHQuc3RlcF9mdW5jKGZ1bmN0aW9uIChtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBjb2xubywg
ZXJyb3IpIHsKKyAgICBhc3NlcnRfZXF1YWxzKGFyZ3VtZW50cy5sZW5ndGgsIDUsICJUaGVyZSBt
dXN0IGJlIGV4YWN0bHkgNSBhcmd1bWVudHMiKTsKKyAgICBhc3NlcnRfZXF1YWxzKG1lc3NhZ2Us
ICJtZXNzYWdlIik7CisgICAgYXNzZXJ0X2VxdWFscyhmaWxlbmFtZSwgImZpbGVuYW1lIik7Cisg
ICAgYXNzZXJ0X2VxdWFscyhsaW5lbm8sIDEpOworICAgIGFzc2VydF9lcXVhbHMoY29sbm8sIDIp
OworICAgIGFzc2VydF9lcXVhbHMoZXJyb3IsIHRoZUVycm9yKTsKKyAgICByZXR1cm4gdHJ1ZTsK
KyAgfSk7CisKKyAgY29uc3QgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCB3aW5k
b3csICJlcnJvciIpOworICBjb25zdCBwcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCJl
cnJvciIpOworCisgIGRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudChuZXcgRXJyb3JFdmVudCgi
ZXJyb3IiLCB7CisgICAgYnViYmxlczogdHJ1ZSwKKyAgICBtZXNzYWdlOiAibWVzc2FnZSIsCisg
ICAgZmlsZW5hbWU6ICJmaWxlbmFtZSIsCisgICAgbGluZW5vOiAxLAorICAgIGNvbG5vOiAyLAor
ICAgIGVycm9yOiB0aGVFcnJvcgorICB9KSk7CisKKyAgcmV0dXJuIHByb21pc2U7Cit9LCAiZXJy
b3IgZXZlbnQgaGFzIHRoZSByaWdodCA1IGFyZ3Mgb24gV2luZG93LCB3aXRoIGEgc3ludGhldGlj
IEVycm9yRXZlbnQiKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVu
dC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0
aWMtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMv
ZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3lu
dGhldGljLWV2ZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
ZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVt
ZW50LXN5bnRoZXRpYy1ldmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSwzIEBACisKK1BBU1MgZXJyb3IgZXZlbnQgaXMgbm9ybWFsIChyZXR1cm4gdHJ1ZSBkb2VzIG5v
dCBjYW5jZWw7IG9uZSBhcmcpIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBFdmVudAorCklu
ZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0
aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBh
cGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1l
cnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysg
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFw
aXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVy
cm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDI5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKzx0
aXRsZT5FdmVudCBoYW5kbGVycyBwcm9jZXNzaW5nIGFsZ29yaXRobTogZXJyb3IgZXZlbnRzPC90
aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2UvI3RoZS1ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtIj4KKworPGRpdiBp
ZD0ibG9nIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3NldHVwKHsgYWxsb3df
dW5jYXVnaHRfZXhjZXB0aW9uOiB0cnVlIH0pOworCitwcm9taXNlX3Rlc3QodCA9PiB7CisgIGRv
Y3VtZW50LmJvZHkub25lcnJvciA9IHQuc3RlcF9mdW5jKCguLi5hcmdzKSA9PiB7CisgICAgYXNz
ZXJ0X2VxdWFscyhhcmdzLmxlbmd0aCwgMSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0pOworCisg
IGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgd2luZG93LCAiZXJyb3Ii
KTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigiZXJyb3IiKS50aGVu
KGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZS5kZWZhdWx0UHJldmVudGVkLCBmYWxzZSk7Cisg
IH0pOworCisgIGRvY3VtZW50LmJvZHkuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoImVycm9yIiwg
eyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0cnVlIH0pKTsKKworICByZXR1cm4gcHJvbWlz
ZTsKK30sICJlcnJvciBldmVudCBpcyBub3JtYWwgKHJldHVybiB0cnVlIGRvZXMgbm90IGNhbmNl
bDsgb25lIGFyZykgb24gV2luZG93LCB3aXRoIGEgc3ludGhldGljIEV2ZW50Iik7Cis8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFs
Z29yaXRobS1lcnJvci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXIt
cHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXJy
b3JldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50
cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1l
bnQtc3ludGhldGljLWVycm9yZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsNSBAQAorCisKK1BBU1MgZXJyb3IgZXZlbnQgaXMgd2VpcmQgKHJldHVybiB0cnVlIGNh
bmNlbHM7IG1hbnkgYXJncykgb24gV2luZG93LCB3aXRoIGEgc3ludGhldGljIEVycm9yRXZlbnQK
K1BBU1MgZXJyb3IgZXZlbnQgaGFzIHRoZSByaWdodCA1IGFyZ3Mgb24gV2luZG93LCB3aXRoIGEg
c3ludGhldGljIEVycm9yRXZlbnQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1o
YW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQtc3ludGhl
dGljLWVycm9yZXZlbnQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2
ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1z
eW50aGV0aWMtZXJyb3JldmVudC5odG1sCShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9l
dmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNldC1l
bGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw2NCBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+
RXZlbnQgaGFuZGxlcnMgcHJvY2Vzc2luZyBhbGdvcml0aG06IGVycm9yIGV2ZW50czwvdGl0bGU+
Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdl
LyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobSI+CisKKzxpZnJhbWUgbmFt
ZT0iZnJhbWVzZXRXaW5kb3ciIHNyYz0icmVzb3VyY2VzL2ZyYW1lc2V0LWZyYW1lLmh0bWwiPjwv
aWZyYW1lPgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsK
K3NldHVwKHsgYWxsb3dfdW5jYXVnaHRfZXhjZXB0aW9uOiB0cnVlIH0pOworCit3aW5kb3cub25s
b2FkID0gKCkgPT4geworCitjb25zdCBmcmFtZXNldCA9IGZyYW1lc2V0V2luZG93LmRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoImZyYW1lc2V0Iik7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgZnJh
bWVzZXQub25lcnJvciA9IHQuc3RlcF9mdW5jKCguLi5hcmdzKSA9PiB7CisgICAgYXNzZXJ0X2dy
ZWF0ZXJfdGhhbihhcmdzLmxlbmd0aCwgMSk7CisgICAgcmV0dXJuIHRydWU7CisgIH0pOworCisg
IGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgZnJhbWVzZXRXaW5kb3cs
ICJlcnJvciIpOworICBjb25zdCBwcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCJlcnJv
ciIpLnRoZW4oZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhlLmRlZmF1bHRQcmV2ZW50ZWQsIHRy
dWUpOworICB9KTsKKworICBmcmFtZXNldC5kaXNwYXRjaEV2ZW50KG5ldyBFcnJvckV2ZW50KCJl
cnJvciIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7CisKKyAgcmV0dXJu
IHByb21pc2U7Cit9LCAiZXJyb3IgZXZlbnQgaXMgd2VpcmQgKHJldHVybiB0cnVlIGNhbmNlbHM7
IG1hbnkgYXJncykgb24gV2luZG93LCB3aXRoIGEgc3ludGhldGljIEVycm9yRXZlbnQiKTsKKwor
cHJvbWlzZV90ZXN0KHQgPT4geworICBjb25zdCB0aGVFcnJvciA9IHsgdGhlOiAiZXJyb3Igb2Jq
ZWN0IiB9OworCisgIGZyYW1lc2V0Lm9uZXJyb3IgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbiAobWVz
c2FnZSwgZmlsZW5hbWUsIGxpbmVubywgY29sbm8sIGVycm9yKSB7CisgICAgYXNzZXJ0X2VxdWFs
cyhhcmd1bWVudHMubGVuZ3RoLCA1LCAiVGhlcmUgbXVzdCBiZSBleGFjdGx5IDUgYXJndW1lbnRz
Iik7CisgICAgYXNzZXJ0X2VxdWFscyhtZXNzYWdlLCAibWVzc2FnZSIpOworICAgIGFzc2VydF9l
cXVhbHMoZmlsZW5hbWUsICJmaWxlbmFtZSIpOworICAgIGFzc2VydF9lcXVhbHMobGluZW5vLCAx
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGNvbG5vLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9y
LCB0aGVFcnJvcik7CisgICAgcmV0dXJuIHRydWU7CisgIH0pOworCisgIGNvbnN0IGV2ZW50V2F0
Y2hlciA9IG5ldyBFdmVudFdhdGNoZXIodCwgZnJhbWVzZXRXaW5kb3csICJlcnJvciIpOworICBj
b25zdCBwcm9taXNlID0gZXZlbnRXYXRjaGVyLndhaXRfZm9yKCJlcnJvciIpOworCisgIGZyYW1l
c2V0LmRpc3BhdGNoRXZlbnQobmV3IEVycm9yRXZlbnQoImVycm9yIiwgeworICAgIGJ1YmJsZXM6
IHRydWUsCisgICAgbWVzc2FnZTogIm1lc3NhZ2UiLAorICAgIGZpbGVuYW1lOiAiZmlsZW5hbWUi
LAorICAgIGxpbmVubzogMSwKKyAgICBjb2xubzogMiwKKyAgICBlcnJvcjogdGhlRXJyb3IKKyAg
fSkpOworCisgIHJldHVybiBwcm9taXNlOworfSwgImVycm9yIGV2ZW50IGhhcyB0aGUgcmlnaHQg
NSBhcmdzIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBFcnJvckV2ZW50Iik7CisKK307Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNz
aW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVy
LXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWV2
ZW50LWV4cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2
ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1z
eW50aGV0aWMtZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBA
QAorCisKK1BBU1MgZXJyb3IgZXZlbnQgaXMgbm9ybWFsIChyZXR1cm4gdHJ1ZSBkb2VzIG5vdCBj
YW5jZWw7IG9uZSBhcmcpIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBFdmVudAorCkluZGV4
OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0t
ZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0t
ZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2Vi
YXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0
aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRtbAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDM2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKzx0aXRsZT5FdmVudCBoYW5kbGVycyBwcm9jZXNzaW5nIGFsZ29yaXRobTogZXJyb3Ig
ZXZlbnRzPC90aXRsZT4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48
L3NjcmlwdD4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2UvI3RoZS1ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtIj4K
KworPGlmcmFtZSBuYW1lPSJmcmFtZXNldFdpbmRvdyIgc3JjPSJyZXNvdXJjZXMvZnJhbWVzZXQt
ZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorCis8c2NyaXB0Pgor
InVzZSBzdHJpY3QiOworc2V0dXAoeyBhbGxvd191bmNhdWdodF9leGNlcHRpb246IHRydWUgfSk7
CisKK3dpbmRvdy5vbmxvYWQgPSAoKSA9PiB7CisKK2NvbnN0IGZyYW1lc2V0ID0gZnJhbWVzZXRX
aW5kb3cuZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZnJhbWVzZXQiKTsKKworcHJvbWlzZV90ZXN0
KHQgPT4geworICBmcmFtZXNldC5vbmVycm9yID0gdC5zdGVwX2Z1bmMoKC4uLmFyZ3MpID0+IHsK
KyAgICBhc3NlcnRfZXF1YWxzKGFyZ3MubGVuZ3RoLCAxKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAg
fSk7CisKKyAgY29uc3QgZXZlbnRXYXRjaGVyID0gbmV3IEV2ZW50V2F0Y2hlcih0LCBmcmFtZXNl
dFdpbmRvdywgImVycm9yIik7CisgIGNvbnN0IHByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9m
b3IoImVycm9yIikudGhlbihlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUuZGVmYXVsdFByZXZl
bnRlZCwgZmFsc2UpOworICB9KTsKKworICBmcmFtZXNldC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVu
dCgiZXJyb3IiLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUgfSkpOworCisgIHJl
dHVybiBwcm9taXNlOworfSwgImVycm9yIGV2ZW50IGlzIG5vcm1hbCAocmV0dXJuIHRydWUgZG9l
cyBub3QgY2FuY2VsOyBvbmUgYXJnKSBvbiBXaW5kb3csIHdpdGggYSBzeW50aGV0aWMgRXZlbnQi
KTsKKworfTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5k
bGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL3Jlc291cmNlcy9mcmFtZXNldC1mcmFtZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9j
ZXNzaW5nLWFsZ29yaXRobS1lcnJvci9yZXNvdXJjZXMvZnJhbWVzZXQtZnJhbWUuaHRtbAkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2lu
Zy1hbGdvcml0aG0tZXJyb3IvcmVzb3VyY2VzL2ZyYW1lc2V0LWZyYW1lLmh0bWwJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxtZXRhIGNoYXJzZXQ9InV0
Zi04Ij4KKworPGZyYW1lc2V0PjwvZnJhbWVzZXQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447762</attachid>
            <date>2021-12-21 16:21:33 -0800</date>
            <delta_ts>2021-12-21 16:35:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234568-20211222002131.patch</filename>
            <type>text/plain</type>
            <size>25868</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzMyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDIxLTEyLTIxICBBbGV4ZXkg
U2h2YXlrYSAgPGFzaHZheWthQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViSURMXSBkb2N1bWVu
dC5ib2R5Lm9uZXJyb3Igc2V0dGVyIHNob3VsZCBzZXR1cCBhIGZpdmUtcGFyYW1ldGVyIGxpc3Rl
bmVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQ1
NjgKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBXaGlsZSBp
dCdzIGluZGVlZCBwb3NzaWJsZSB0byByZW1vdmUgdGhlIHNwZWNpYWwtY2FzaW5nIG9mICJvbmVy
cm9yIiBldmVudCBoYW5kbGVyIGZyb20gdGhlCisgICAgICAgIGJpbmRpbmdzIGdlbmVyYXRvciwg
dGhhdCB3b3VsZCBjb21lIHdpdGggYSBodWdlIGNvc3QuICJvbmVycm9yIiBpcyBhIGdsb2JhbCBl
dmVudCBoYW5kbGVyIHRoYXQKKyAgICAgICAgc2hvdWxkIHNldHVwIEpTRXJyb3JIYW5kbGVyIG9u
IFdpbmRvdyAvIFdvcmtlciAvIDxib2R5PiAvIDxmcmFtZXNldD4sIGJ1dCBub3Qgb24gb3RoZXIg
cmVjZWl2ZXJzLgorCisgICAgICAgIFdlIGNhbid0IGdldCB0aGUgY29kZSBnZW5lcmF0b3IgdG8g
ZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHRob3NlIHdpdGhvdXQgaW1wbGljaXRseSBvdmVycmlkaW5n
CisgICAgICAgICh2aWEgYGluY2x1ZGVzYCBvcmRlcikgYW4gYEV2ZW50SGFuZGxlciBvbmVycm9y
YCB3aXRoIGBPbkVycm9yRXZlbnRIYW5kbGVyIG9uZXJyb3JgLAorICAgICAgICBBTkQgaW1wbGVt
ZW50aW5nIHNvbWUgc29ydCBvZiBtZXJnaW5nIGZvciB0aGVzZSBwYXJ0aWN1bGFyIGF0dHJpYnV0
ZXM7CisgICAgICAgIG90aGVyd2lzZSwgYSBzZXQgb2YgdHdvIGFjY2Vzc29ycyBnZXRzIGNyZWF0
ZWQsIGNhdXNpbmcgYSBjb21waWxlIGVycm9yLgorCisgICAgICAgIEluc3RlYWQsIHRoaXMgcGF0
Y2ggZml4ZXMgIm9uZXJyb3IiIHNwZWNpYWwtY2FzaW5nIHRvIGFsc28gaW5jbHVkZSA8Ym9keT4g
LyA8ZnJhbWVzZXQ+IGVsZW1lbnRzCisgICAgICAgIHNvIGEgZml2ZS1wYXJhbWV0ZXIgKGluc3Rl
YWQgb2YgYSBzaW5nbGUtcGFyYW1ldGVyKSBsaXN0ZW5lciBpcyBjcmVhdGVkIGFuZCBmb3J3YXJk
ZWQgdG8gV2luZG93LgorICAgICAgICBBbm90aGVyIGJlbmVmaXQgb2YgdGhpcyBhcHByb2FjaCBp
cyBob3cgY2xvc2VseSBvdXIgY29kZSBtYXRjaGVzIHRoZSBzcGVjIFsxXS4KKworICAgICAgICBB
bGlnbnMgV2ViS2l0IHdpdGggQmxpbmsgYW5kIEdlY2tvLgorCisgICAgICAgIFsxXSBodHRwczov
L2h0bWwuc3BlYy53aGF0d2cub3JnLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29y
aXRobSAoc3RlcCAzKQorCisgICAgICAgIFRlc3RzOiBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJv
Y2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50
Lmh0bWwKKyAgICAgICAgICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFs
Z29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0bWwKKyAgICAgICAg
ICAgICAgIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Nj
cmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9m
cmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50Lmh0bWwKKyAgICAgICAgICAgICAg
IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNl
dC1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0dGVy
Qm9keURlZmluaXRpb24pOgorICAgICAgICAqIGRvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbDoK
KyAgICAgICAgKiBwYWdlL1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsOgorICAgICAgICBTaW1pbGFy
bHkgdG8gT25FcnJvckV2ZW50SGFuZGxlciwgdGhlcmUgaXMgbm8gcHJhY3RpY2FsIGJlbmVmaXQg
dG8gaGF2ZSBPbkJlZm9yZVVubG9hZEV2ZW50SGFuZGxlciBpbiB0aGUgSURMLgorICAgICAgICBB
ZGRzIGEgY29tbWVudCBvbiBob3cgaXRzIHNlbWFudGljcyBpcyBpbXBsZW1lbnRlZC4KKworICAg
ICAgICAqIHdvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaWRsOgorCiAyMDIxLTEyLTIxICBNaWNo
YWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBzeW1saW5rcyBm
b3IgYWx0ZXJuYXRlIHJvb3QgZnJhbWV3b3JrIGxvY2F0aW9ucwpJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjg3
MzI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
CSh3b3JraW5nIGNvcHkpCkBAIC05MDUsNiArOTA1LDE1IEBAIHN1YiBJc0NvbnN0cnVjdG9yVHlw
ZQogICAgIHJldHVybiAkdHlwZS0+bmFtZSA9fiAvQ29uc3RydWN0b3IkLzsKIH0KIAorc3ViIElz
RXZlbnRIYW5kbGVyVHlwZQoreworICAgIG15ICgkb2JqZWN0LCAkdHlwZSkgPSBAXzsKKworICAg
IGFzc2VydCgiTm90IGEgdHlwZSIpIGlmIHJlZigkdHlwZSkgbmUgIklETFR5cGUiOworCisgICAg
cmV0dXJuICR0eXBlLT5uYW1lID1+IC9FdmVudEhhbmRsZXIkLzsKK30KKwogc3ViIElzU2VxdWVu
Y2VUeXBlCiB7CiAgICAgbXkgKCRvYmplY3QsICR0eXBlKSA9IEBfOwpAQCAtMTIzNCw3ICsxMjQz
LDcgQEAgc3ViIElzSlNPTlR5cGUKIAogICAgIGlmICgkb2JqZWN0LT5Jc0ludGVyZmFjZVR5cGUo
JHR5cGUpKSB7CiAgICAgICAgICMgU3BlY2lhbCBjYXNlIEV2ZW50SGFuZGxlciwgc2luY2UgdGhl
cmUgaXMgbm8gcmVhbCBJREwgZm9yIGl0LgotICAgICAgICByZXR1cm4gMCBpZiAkdHlwZS0+bmFt
ZSBlcSAiRXZlbnRIYW5kbGVyIjsKKyAgICAgICAgcmV0dXJuIDAgaWYgJG9iamVjdC0+SXNFdmVu
dEhhbmRsZXJUeXBlKCR0eXBlKTsKIAogICAgICAgICBteSAkaW50ZXJmYWNlID0gJG9iamVjdC0+
R2V0SW50ZXJmYWNlRm9yVHlwZSgkaW50ZXJmYWNlLCAkdHlwZSk7CiAgICAgICAgIGlmICgkb2Jq
ZWN0LT5JbnRlcmZhY2VIYXNSZWd1bGFyVG9KU09OT3BlcmF0aW9uKCRpbnRlcmZhY2UpKSB7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbQkocmV2aXNpb24gMjg3MzI2KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTUyMTIsNyArNTIxMiw3
IEBAIHN1YiBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXQKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJ7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGlj
IGNvbnN0ZXhwciBzdGQ6OnBhaXI8ZGVjbHR5cGUoSFRNTE5hbWVzOjphbHRBdHRyKSYsIGNvbnN0
IEF0b21TdHJpbmcgRXZlbnROYW1lczo6Kj4gdGFibGVbXSA9IHtcbiIpOwogICAgIGZvcmVhY2gg
bXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfSkgewotICAgICAgICBpZiAo
JGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIiAmJiAoIWRlZmluZWQgJGV2
ZW50SGFuZGxlckV4dGVuZGVkQXR0cmlidXRlTmFtZSB8fCAkYXR0cmlidXRlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnskZXZlbnRIYW5kbGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1lfSkpIHsKKyAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0V2ZW50SGFuZGxlclR5cGUoJGF0dHJpYnV0ZS0+dHlw
ZSkgJiYgKCFkZWZpbmVkICRldmVudEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0ZU5hbWUgfHwgJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57JGV2ZW50SGFuZGxlckV4dGVuZGVkQXR0cmli
dXRlTmFtZX0pKSB7CiAgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUt
Pm5hbWU7CiAgICAgICAgICAgICBteSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRl
U2hvcnRFdmVudE5hbWUoJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHsgSFRNTE5hbWVzOjoke2F0dHJpYnV0ZU5hbWV9QXR0ciwgJkV2ZW50TmFt
ZXM6OiR7ZXZlbnROYW1lfSB9LFxuIik7CkBAIC01MjM2LDcgKzUyMzYsNyBAQCBzdWIgR2VuZXJh
dGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvCiAKICAgICBteSAkbmVlZFNlY3VyaXR5Q2hl
Y2sgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJiAh
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAh
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5T25HZXR0
ZXJ9OwogICAgIG15ICRoYXNDdXN0b21HZXR0ZXIgPSBIYXNDdXN0b21HZXR0ZXIoJGF0dHJpYnV0
ZSk7Ci0gICAgbXkgJGlzRXZlbnRIYW5kbGVyID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAi
RXZlbnRIYW5kbGVyIjsKKyAgICBteSAkaXNFdmVudEhhbmRsZXIgPSAkY29kZUdlbmVyYXRvci0+
SXNFdmVudEhhbmRsZXJUeXBlKCRhdHRyaWJ1dGUtPnR5cGUpOwogICAgIG15ICRpc0NvbnN0cnVj
dG9yID0gJGNvZGVHZW5lcmF0b3ItPklzQ29uc3RydWN0b3JUeXBlKCRhdHRyaWJ1dGUtPnR5cGUp
OwogCiAgICAgbXkgJG5lZWRUaHJvd1Njb3BlID0gJG5lZWRTZWN1cml0eUNoZWNrIHx8ICghJGhh
c0N1c3RvbUdldHRlciAmJiAhJGlzRXZlbnRIYW5kbGVyICYmICEkaXNDb25zdHJ1Y3Rvcik7CkBA
IC01NDAyLDcgKzU0MDIsNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5p
dGlvCiAKICAgICBteSAkbmVlZFNlY3VyaXR5Q2hlY2sgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSAmJiAhJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5T25TZXR0ZXJ9OwogICAgIG15ICRoYXNDdXN0b21TZXR0
ZXIgPSBIYXNDdXN0b21TZXR0ZXIoJGF0dHJpYnV0ZSk7Ci0gICAgbXkgJGlzRXZlbnRIYW5kbGVy
ID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiRXZlbnRIYW5kbGVyIjsKKyAgICBteSAkaXNF
dmVudEhhbmRsZXIgPSAkY29kZUdlbmVyYXRvci0+SXNFdmVudEhhbmRsZXJUeXBlKCRhdHRyaWJ1
dGUtPnR5cGUpOwogICAgIG15ICRpc1JlcGxhY2VhYmxlID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57UmVwbGFjZWFibGV9OwogCiAgICAgbXkgJG5lZWRUaHJvd1Njb3BlID0gJG5l
ZWRTZWN1cml0eUNoZWNrIHx8ICghJGhhc0N1c3RvbVNldHRlciAmJiAhJGlzRXZlbnRIYW5kbGVy
ICYmICEkaXNSZXBsYWNlYWJsZSk7CkBAIC01NDMzLDE3ICs1NDMzLDEyIEBAIHN1YiBHZW5lcmF0
ZUF0dHJpYnV0ZVNldHRlckJvZHlEZWZpbml0aW8KICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIHRoaXNPYmplY3Quc2V0JHtpbXBsU2V0dGVyRnVuY3Rpb25OYW1lfShsZXhpY2FsR2xv
YmFsT2JqZWN0LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IHJldHVybiB0cnVlO1xuIik7CiAgICAgfSBlbHNpZiAoJGlzRXZlbnRIYW5kbGVyKSB7Ci0gICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0V2ZW50TGlzdGVuZXIuaCIsICRjb25kaXRpb25hbCk7
CisgICAgICAgIG15ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntX
aW5kb3dFdmVudEhhbmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIgOiAi
c2V0RXZlbnRIYW5kbGVyQXR0cmlidXRlIjsKKyAgICAgICAgbXkgJGV2ZW50TGlzdGVuZXJUeXBl
ID0gJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiT25FcnJvckV2ZW50SGFuZGxlciIgJiYgKElz
RE9NR2xvYmFsT2JqZWN0KCRpbnRlcmZhY2UpIHx8ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e1dpbmRvd0V2ZW50SGFuZGxlcn0pID8gIkpTRXJyb3JIYW5kbGVyIiA6ICJKU0V2ZW50
TGlzdGVuZXIiOwogICAgICAgICBteSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRl
RXZlbnROYW1lKCRhdHRyaWJ1dGUpOwotICAgICAgICAjIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRv
IHRoaXMgc3BlY2lhbCBjYXNlIHdpdGhvdXQgaGFyZGNvZGluZyB0aGUgY2xhc3MgYW5kIGF0dHJp
YnV0ZSBuYW1lcyBoZXJlLgotICAgICAgICBpZiAoKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEg
IkRPTVdpbmRvdyIgb3IgJGludGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiV29ya2VyR2xvYmFsU2Nv
cGUiKSBhbmQgJGF0dHJpYnV0ZS0+bmFtZSBlcSAib25lcnJvciIpIHsKLSAgICAgICAgICAgIEFk
ZFRvSW1wbEluY2x1ZGVzKCJKU0Vycm9ySGFuZGxlci5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzZXRFdmVudEhhbmRsZXJBdHRyaWJ1dGU8
SlNFcnJvckhhbmRsZXI+KHRoaXNPYmplY3Qud3JhcHBlZCgpLCAke2V2ZW50TmFtZX0sIHZhbHVl
LCB0aGlzT2JqZWN0KTtcbiIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkpTRXZlbnRMaXN0ZW5lci5oIiwgJGNvbmRpdGlvbmFsKTsKLSAgICAgICAg
ICAgIG15ICRzZXR0ZXIgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntXaW5kb3dF
dmVudEhhbmRsZXJ9ID8gInNldFdpbmRvd0V2ZW50SGFuZGxlckF0dHJpYnV0ZSIgOiAic2V0RXZl
bnRIYW5kbGVyQXR0cmlidXRlIjsKLSAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAkc2V0dGVyPEpTRXZlbnRMaXN0ZW5lcj4odGhpc09iamVjdC53cmFwcGVkKCksICR7ZXZlbnRO
YW1lfSwgdmFsdWUsIHRoaXNPYmplY3QpO1xuIik7Ci0gICAgICAgIH0KKworICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiJHtldmVudExpc3RlbmVyVHlwZX0uaCIsICRjb25kaXRpb25hbCk7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke3NldHRlcn08JHtldmVudExpc3RlbmVy
VHlwZX0+KHRoaXNPYmplY3Qud3JhcHBlZCgpLCAke2V2ZW50TmFtZX0sIHZhbHVlLCB0aGlzT2Jq
ZWN0KTtcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm0ud3JpdGVCYXJy
aWVyKCZ0aGlzT2JqZWN0LCB2YWx1ZSk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgIGVuc3VyZVN0aWxsQWxpdmVIZXJlKHZhbHVlKTtcblxuIik7CiAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICByZXR1cm4gdHJ1ZTtcbiIpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9HbG9iYWxFdmVudEhhbmRsZXJzLmlkbAkocmV2aXNpb24gMjg3MzI2KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL0dsb2JhbEV2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw4ICs1Miw3IEBAIGludGVyZmFjZSBtaXhpbiBHbG9iYWxFdmVudEhhbmRsZXJzIHsKICAg
ICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZHVyYXRpb25jaGFuZ2U7CiAgICAgYXR0cmlidXRl
IEV2ZW50SGFuZGxlciBvbmVtcHRpZWQ7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmVu
ZGVkOwotICAgIC8vIEZJWE1FOiBUaGUgc3BlYyAnb25lcnJvcicgc2hvdWxkIGJlIG9mIHR5cGUg
J09uRXJyb3JFdmVudEhhbmRsZXInLgotICAgIGF0dHJpYnV0ZSBFdmVudEhhbmRsZXIgb25lcnJv
cjsKKyAgICBhdHRyaWJ1dGUgT25FcnJvckV2ZW50SGFuZGxlciBvbmVycm9yOwogICAgIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb25mb2N1czsKICAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9u
Zm9ybWRhdGE7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmlucHV0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAkocmV2aXNpb24gMjg3MzI2KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw3ICszMSw3IEBACiAKICAgICAvLyBOb24tc3RhbmRhcmQKICAgICBbTm90RW51bWVyYWJs
ZSwgV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYmx1cjsKLSAg
ICBbTm90RW51bWVyYWJsZSwgV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9uZXJyb3I7CisgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0
cmlidXRlIE9uRXJyb3JFdmVudEhhbmRsZXIgb25lcnJvcjsKICAgICBbTm90RW51bWVyYWJsZSwg
V2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZm9jdXM7CiAgICAg
W05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxl
ciBvbmZvY3VzaW47CiAgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0
cmlidXRlIEV2ZW50SGFuZGxlciBvbmZvY3Vzb3V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCShyZXZpc2lvbiAyODczMjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0y
Niw3ICsyNiw3IEBACiAKICAgICAvLyBOb24tc3RhbmRhcmQKICAgICBbTm90RW51bWVyYWJsZSwg
V2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uYmx1cjsKLSAgICBb
Tm90RW51bWVyYWJsZSwgV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uZXJyb3I7CisgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmli
dXRlIE9uRXJyb3JFdmVudEhhbmRsZXIgb25lcnJvcjsKICAgICBbTm90RW51bWVyYWJsZSwgV2lu
ZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZm9jdXM7CiAgICAgW05v
dEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBv
bmZvY3VzaW47CiAgICAgW05vdEVudW1lcmFibGUsIFdpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbmZvY3Vzb3V0OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9X
aW5kb3dFdmVudEhhbmRsZXJzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsCShyZXZpc2lvbiAyODczMjYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1dpbmRvd0V2ZW50SGFuZGxlcnMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4
ICsyOCw3IEBACiBpbnRlcmZhY2UgbWl4aW4gV2luZG93RXZlbnRIYW5kbGVycyB7CiAgICAgW1dp
bmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmFmdGVycHJpbnQ7CiAg
ICAgW1dpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJlZm9yZXBy
aW50OwotICAgIC8vIEZJWE1FOiBUaGUgc3BlYyBzYXlzIHRoYXQgb25iZWZvcmV1bmxvYWQgc2hv
dWxkIGJlIG9mIHR5cGUgT25CZWZvcmVVbmxvYWRFdmVudEhhbmRsZXIsIG5vdCBFdmVudEhhbmRs
ZXIuCi0gICAgW1dpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbmJl
Zm9yZXVubG9hZDsKKyAgICBbV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgT25CZWZvcmVV
bmxvYWRFdmVudEhhbmRsZXIgb25iZWZvcmV1bmxvYWQ7IC8vIE9uQmVmb3JlVW5sb2FkRXZlbnRI
YW5kbGVyIHNlbWFudGljcyBpcyBpbXBsZW1lbnRlZCBpbiBKU0V2ZW50TGlzdGVuZXI6OmhhbmRs
ZUV2ZW50KCkKICAgICBbV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVy
IG9uaGFzaGNoYW5nZTsKICAgICBbV2luZG93RXZlbnRIYW5kbGVyXSBhdHRyaWJ1dGUgRXZlbnRI
YW5kbGVyIG9ubGFuZ3VhZ2VjaGFuZ2U7CiAgICAgW1dpbmRvd0V2ZW50SGFuZGxlcl0gYXR0cmli
dXRlIEV2ZW50SGFuZGxlciBvbm1lc3NhZ2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckdsb2JhbFNjb3BlLmlkbAkocmV2aXNpb24gMjg3MzI2KQorKysgU291cmNlL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM1
LDggKzM1LDcgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgV29ya2VyTmF2aWdhdG9yIG5hdmln
YXRvcjsKICAgICB1bmRlZmluZWQgaW1wb3J0U2NyaXB0cyhVU1ZTdHJpbmcuLi4gdXJscyk7CiAK
LSAgICAvLyBGSVhNRTogVGhlIHNwZWMgJ29uZXJyb3InIHNob3VsZCBiZSBvZiB0eXBlICdPbkVy
cm9yRXZlbnRIYW5kbGVyJy4KLSAgICBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9uZXJyb3I7Cisg
ICAgYXR0cmlidXRlIE9uRXJyb3JFdmVudEhhbmRsZXIgb25lcnJvcjsKICAgICAvLyBGSVhNRTog
SW1wbGVtZW50ICdvbmxhbmd1YWdlY2hhbmdlJy4KICAgICAvLyBhdHRyaWJ1dGUgRXZlbnRIYW5k
bGVyIG9ubGFuZ3VhZ2VjaGFuZ2U7CiAgICAgYXR0cmlidXRlIEV2ZW50SGFuZGxlciBvbm9mZmxp
bmU7CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NzMyNikK
KysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAyMS0xMi0yMSAgQWxleGV5IFNodmF5a2EgIDxhc2h2YXlrYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgW1dlYklETF0gZG9jdW1lbnQuYm9keS5vbmVycm9yIHNldHRlciBz
aG91bGQgc2V0dXAgYSBmaXZlLXBhcmFtZXRlciBsaXN0ZW5lcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0NTY4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJh
cHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRo
bS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWVycm9yZXZlbnQtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9ib2R5
LWVsZW1lbnQtc3ludGhldGljLWVycm9yZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhh
bmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1l
dmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9o
dG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3Npbmct
YWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRtbDogQWRkZWQu
CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcv
ZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQt
ZWxlbWVudC1zeW50aGV0aWMtZXJyb3JldmVudC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9l
dmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQt
c3ludGhldGljLWVycm9yZXZlbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogd2ViLXBsYXRmb3Jt
LXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJv
Y2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXZlbnQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93
ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29y
aXRobS1lcnJvci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9l
dmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9yZXNvdXJjZXMv
ZnJhbWVzZXQtZnJhbWUuaHRtbDogQWRkZWQuCisKIDIwMjEtMTItMjEgIFRpbSBOZ3V5ZW4gIDxu
dGltQGFwcGxlLmNvbT4KIAogICAgICAgICA8ZGlhbG9nPiBzaG91bGQgZ2VuZXJhdGUgaW1wbGll
ZCBlbmQgdGFncwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nl
c3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXJyb3JldmVudC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5k
bGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXJy
b3JldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50
cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1z
eW50aGV0aWMtZXJyb3JldmVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCAr
MSw0IEBACisKK1BBU1MgZXJyb3IgZXZlbnQgaXMgd2VpcmQgKHJldHVybiB0cnVlIGNhbmNlbHM7
IG1hbnkgYXJncykgb24gV2luZG93LCB3aXRoIGEgc3ludGhldGljIEVycm9yRXZlbnQKK1BBU1Mg
ZXJyb3IgZXZlbnQgaGFzIHRoZSByaWdodCA1IGFyZ3Mgb24gV2luZG93LCB3aXRoIGEgc3ludGhl
dGljIEVycm9yRXZlbnQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVy
LXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXJyb3Jl
dmVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxl
ci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWVycm9y
ZXZlbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhh
bmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1l
cnJvcmV2ZW50Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1NyBAQAorPCFET0NUWVBF
IGh0bWw+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RXZlbnQgaGFuZGxlcnMgcHJv
Y2Vzc2luZyBhbGdvcml0aG06IGVycm9yIGV2ZW50czwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZXZlbnQtaGFuZGxl
ci1wcm9jZXNzaW5nLWFsZ29yaXRobSI+CisKKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3Jp
cHQ+CisidXNlIHN0cmljdCI7CitzZXR1cCh7IGFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjogdHJ1
ZSB9KTsKKworcHJvbWlzZV90ZXN0KHQgPT4geworICBkb2N1bWVudC5ib2R5Lm9uZXJyb3IgPSB0
LnN0ZXBfZnVuYygoLi4uYXJncykgPT4geworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYXJncy5s
ZW5ndGgsIDEpOworICAgIHJldHVybiB0cnVlOworICB9KTsKKworICBjb25zdCBldmVudFdhdGNo
ZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIHdpbmRvdywgImVycm9yIik7CisgIGNvbnN0IHByb21p
c2UgPSBldmVudFdhdGNoZXIud2FpdF9mb3IoImVycm9yIikudGhlbihlID0+IHsKKyAgICBhc3Nl
cnRfZXF1YWxzKGUuZGVmYXVsdFByZXZlbnRlZCwgdHJ1ZSk7CisgIH0pOworCisgIGRvY3VtZW50
LmJvZHkuZGlzcGF0Y2hFdmVudChuZXcgRXJyb3JFdmVudCgiZXJyb3IiLCB7IGJ1YmJsZXM6IHRy
dWUsIGNhbmNlbGFibGU6IHRydWUgfSkpOworCisgIHJldHVybiBwcm9taXNlOworfSwgImVycm9y
IGV2ZW50IGlzIHdlaXJkIChyZXR1cm4gdHJ1ZSBjYW5jZWxzOyBtYW55IGFyZ3MpIG9uIFdpbmRv
dywgd2l0aCBhIHN5bnRoZXRpYyBFcnJvckV2ZW50Iik7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsK
KyAgY29uc3QgdGhlRXJyb3IgPSB7IHRoZTogImVycm9yIG9iamVjdCIgfTsKKworICBkb2N1bWVu
dC5ib2R5Lm9uZXJyb3IgPSB0LnN0ZXBfZnVuYyhmdW5jdGlvbiAobWVzc2FnZSwgZmlsZW5hbWUs
IGxpbmVubywgY29sbm8sIGVycm9yKSB7CisgICAgYXNzZXJ0X2VxdWFscyhhcmd1bWVudHMubGVu
Z3RoLCA1LCAiVGhlcmUgbXVzdCBiZSBleGFjdGx5IDUgYXJndW1lbnRzIik7CisgICAgYXNzZXJ0
X2VxdWFscyhtZXNzYWdlLCAibWVzc2FnZSIpOworICAgIGFzc2VydF9lcXVhbHMoZmlsZW5hbWUs
ICJmaWxlbmFtZSIpOworICAgIGFzc2VydF9lcXVhbHMobGluZW5vLCAxKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGNvbG5vLCAyKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yLCB0aGVFcnJvcik7Cisg
ICAgcmV0dXJuIHRydWU7CisgIH0pOworCisgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVu
dFdhdGNoZXIodCwgd2luZG93LCAiZXJyb3IiKTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0
Y2hlci53YWl0X2ZvcigiZXJyb3IiKTsKKworICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQo
bmV3IEVycm9yRXZlbnQoImVycm9yIiwgeworICAgIGJ1YmJsZXM6IHRydWUsCisgICAgbWVzc2Fn
ZTogIm1lc3NhZ2UiLAorICAgIGZpbGVuYW1lOiAiZmlsZW5hbWUiLAorICAgIGxpbmVubzogMSwK
KyAgICBjb2xubzogMiwKKyAgICBlcnJvcjogdGhlRXJyb3IKKyAgfSkpOworCisgIHJldHVybiBw
cm9taXNlOworfSwgImVycm9yIGV2ZW50IGhhcyB0aGUgcmlnaHQgNSBhcmdzIG9uIFdpbmRvdywg
d2l0aCBhIHN5bnRoZXRpYyBFcnJvckV2ZW50Iik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3Njcmlw
dGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9ib2R5
LWVsZW1lbnQtc3ludGhldGljLWV2ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9z
Y3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3Iv
Ym9keS1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQor
KysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFw
cGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGht
LWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXZlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMyBAQAorCitQQVNTIGVycm9yIGV2ZW50IGlzIG5vcm1hbCAocmV0
dXJuIHRydWUgZG9lcyBub3QgY2FuY2VsOyBvbmUgYXJnKSBvbiBXaW5kb3csIHdpdGggYSBzeW50
aGV0aWMgRXZlbnQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXBy
b2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2JvZHktZWxlbWVudC1zeW50aGV0aWMtZXZlbnQuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vz
c2luZy1hbGdvcml0aG0tZXJyb3IvYm9keS1lbGVtZW50LXN5bnRoZXRpYy1ldmVudC5odG1sCShu
b25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNz
aW5nLWFsZ29yaXRobS1lcnJvci9ib2R5LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8bWV0YSBjaGFy
c2V0PSJ1dGYtOCI+Cis8dGl0bGU+RXZlbnQgaGFuZGxlcnMgcHJvY2Vzc2luZyBhbGdvcml0aG06
IGVycm9yIGV2ZW50czwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29y
aXRobSI+CisKKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+CisidXNlIHN0cmljdCI7
CitzZXR1cCh7IGFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjogdHJ1ZSB9KTsKKworcHJvbWlzZV90
ZXN0KHQgPT4geworICBkb2N1bWVudC5ib2R5Lm9uZXJyb3IgPSB0LnN0ZXBfZnVuYygoLi4uYXJn
cykgPT4geworICAgIGFzc2VydF9lcXVhbHMoYXJncy5sZW5ndGgsIDEpOworICAgIHJldHVybiB0
cnVlOworICB9KTsKKworICBjb25zdCBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQs
IHdpbmRvdywgImVycm9yIik7CisgIGNvbnN0IHByb21pc2UgPSBldmVudFdhdGNoZXIud2FpdF9m
b3IoImVycm9yIikudGhlbihlID0+IHsKKyAgICBhc3NlcnRfZXF1YWxzKGUuZGVmYXVsdFByZXZl
bnRlZCwgZmFsc2UpOworICB9KTsKKworICBkb2N1bWVudC5ib2R5LmRpc3BhdGNoRXZlbnQobmV3
IEV2ZW50KCJlcnJvciIsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7CisK
KyAgcmV0dXJuIHByb21pc2U7Cit9LCAiZXJyb3IgZXZlbnQgaXMgbm9ybWFsIChyZXR1cm4gdHJ1
ZSBkb2VzIG5vdCBjYW5jZWw7IG9uZSBhcmcpIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBF
dmVudCIpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRs
ZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMt
ZXJyb3JldmVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50
cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1l
bnQtc3ludGhldGljLWVycm9yZXZlbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlz
L3NjcmlwdGluZy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJv
ci9mcmFtZXNldC1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDUgQEAKKworCitQQVNTIGVycm9yIGV2ZW50IGlzIHdlaXJk
IChyZXR1cm4gdHJ1ZSBjYW5jZWxzOyBtYW55IGFyZ3MpIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRo
ZXRpYyBFcnJvckV2ZW50CitQQVNTIGVycm9yIGV2ZW50IGhhcyB0aGUgcmlnaHQgNSBhcmdzIG9u
IFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBFcnJvckV2ZW50CisKSW5kZXg6IExheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGlu
Zy9ldmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNl
dC1lbGVtZW50LXN5bnRoZXRpYy1lcnJvcmV2ZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2Ny
aXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2Zy
YW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWVycm9yZXZlbnQuaHRtbAkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBw
YXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0t
ZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50aGV0aWMtZXJyb3JldmVudC5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNjQgQEAKKzwhRE9DVFlQRSBodG1sPgorPG1ldGEgY2hhcnNldD0i
dXRmLTgiPgorPHRpdGxlPkV2ZW50IGhhbmRsZXJzIHByb2Nlc3NpbmcgYWxnb3JpdGhtOiBlcnJv
ciBldmVudHM8L3RpdGxlPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS8jdGhlLWV2ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0i
PgorCis8aWZyYW1lIG5hbWU9ImZyYW1lc2V0V2luZG93IiBzcmM9InJlc291cmNlcy9mcmFtZXNl
dC1mcmFtZS5odG1sIj48L2lmcmFtZT4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CisKKzxzY3JpcHQ+
CisidXNlIHN0cmljdCI7CitzZXR1cCh7IGFsbG93X3VuY2F1Z2h0X2V4Y2VwdGlvbjogdHJ1ZSB9
KTsKKword2luZG93Lm9ubG9hZCA9ICgpID0+IHsKKworY29uc3QgZnJhbWVzZXQgPSBmcmFtZXNl
dFdpbmRvdy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJmcmFtZXNldCIpOworCitwcm9taXNlX3Rl
c3QodCA9PiB7CisgIGZyYW1lc2V0Lm9uZXJyb3IgPSB0LnN0ZXBfZnVuYygoLi4uYXJncykgPT4g
eworICAgIGFzc2VydF9ncmVhdGVyX3RoYW4oYXJncy5sZW5ndGgsIDEpOworICAgIHJldHVybiB0
cnVlOworICB9KTsKKworICBjb25zdCBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQs
IGZyYW1lc2V0V2luZG93LCAiZXJyb3IiKTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0Y2hl
ci53YWl0X2ZvcigiZXJyb3IiKS50aGVuKGUgPT4geworICAgIGFzc2VydF9lcXVhbHMoZS5kZWZh
dWx0UHJldmVudGVkLCB0cnVlKTsKKyAgfSk7CisKKyAgZnJhbWVzZXQuZGlzcGF0Y2hFdmVudChu
ZXcgRXJyb3JFdmVudCgiZXJyb3IiLCB7IGJ1YmJsZXM6IHRydWUsIGNhbmNlbGFibGU6IHRydWUg
fSkpOworCisgIHJldHVybiBwcm9taXNlOworfSwgImVycm9yIGV2ZW50IGlzIHdlaXJkIChyZXR1
cm4gdHJ1ZSBjYW5jZWxzOyBtYW55IGFyZ3MpIG9uIFdpbmRvdywgd2l0aCBhIHN5bnRoZXRpYyBF
cnJvckV2ZW50Iik7CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgY29uc3QgdGhlRXJyb3IgPSB7
IHRoZTogImVycm9yIG9iamVjdCIgfTsKKworICBmcmFtZXNldC5vbmVycm9yID0gdC5zdGVwX2Z1
bmMoZnVuY3Rpb24gKG1lc3NhZ2UsIGZpbGVuYW1lLCBsaW5lbm8sIGNvbG5vLCBlcnJvcikgewor
ICAgIGFzc2VydF9lcXVhbHMoYXJndW1lbnRzLmxlbmd0aCwgNSwgIlRoZXJlIG11c3QgYmUgZXhh
Y3RseSA1IGFyZ3VtZW50cyIpOworICAgIGFzc2VydF9lcXVhbHMobWVzc2FnZSwgIm1lc3NhZ2Ui
KTsKKyAgICBhc3NlcnRfZXF1YWxzKGZpbGVuYW1lLCAiZmlsZW5hbWUiKTsKKyAgICBhc3NlcnRf
ZXF1YWxzKGxpbmVubywgMSk7CisgICAgYXNzZXJ0X2VxdWFscyhjb2xubywgMik7CisgICAgYXNz
ZXJ0X2VxdWFscyhlcnJvciwgdGhlRXJyb3IpOworICAgIHJldHVybiB0cnVlOworICB9KTsKKwor
ICBjb25zdCBldmVudFdhdGNoZXIgPSBuZXcgRXZlbnRXYXRjaGVyKHQsIGZyYW1lc2V0V2luZG93
LCAiZXJyb3IiKTsKKyAgY29uc3QgcHJvbWlzZSA9IGV2ZW50V2F0Y2hlci53YWl0X2ZvcigiZXJy
b3IiKTsKKworICBmcmFtZXNldC5kaXNwYXRjaEV2ZW50KG5ldyBFcnJvckV2ZW50KCJlcnJvciIs
IHsKKyAgICBidWJibGVzOiB0cnVlLAorICAgIG1lc3NhZ2U6ICJtZXNzYWdlIiwKKyAgICBmaWxl
bmFtZTogImZpbGVuYW1lIiwKKyAgICBsaW5lbm86IDEsCisgICAgY29sbm86IDIsCisgICAgZXJy
b3I6IHRoZUVycm9yCisgIH0pKTsKKworICByZXR1cm4gcHJvbWlzZTsKK30sICJlcnJvciBldmVu
dCBoYXMgdGhlIHJpZ2h0IDUgYXJncyBvbiBXaW5kb3csIHdpdGggYSBzeW50aGV0aWMgRXJyb3JF
dmVudCIpOworCit9OworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2ZW50
LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvZnJhbWVzZXQtZWxlbWVudC1zeW50
aGV0aWMtZXZlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9ldmVu
dHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9mcmFtZXNldC1lbGVt
ZW50LXN5bnRoZXRpYy1ldmVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2Ny
aXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2Zy
YW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWV2ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDQgQEAKKworCitQQVNTIGVycm9yIGV2ZW50IGlzIG5vcm1hbCAocmV0dXJu
IHRydWUgZG9lcyBub3QgY2FuY2VsOyBvbmUgYXJnKSBvbiBXaW5kb3csIHdpdGggYSBzeW50aGV0
aWMgRXZlbnQKKwpJbmRleDogTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nl
c3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXByb2Nl
c3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWV2ZW50Lmh0
bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1oYW5kbGVyLXBy
b2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL2ZyYW1lc2V0LWVsZW1lbnQtc3ludGhldGljLWV2ZW50
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8dGl0bGU+RXZlbnQgaGFuZGxlcnMgcHJvY2Vzc2luZyBh
bGdvcml0aG06IGVycm9yIGV2ZW50czwvdGl0bGU+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlLyN0aGUtZXZlbnQtaGFuZGxlci1wcm9jZXNz
aW5nLWFsZ29yaXRobSI+CisKKzxpZnJhbWUgbmFtZT0iZnJhbWVzZXRXaW5kb3ciIHNyYz0icmVz
b3VyY2VzL2ZyYW1lc2V0LWZyYW1lLmh0bWwiPjwvaWZyYW1lPgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KKworPHNjcmlwdD4KKyJ1c2Ugc3RyaWN0IjsKK3NldHVwKHsgYWxsb3dfdW5jYXVnaHRfZXhj
ZXB0aW9uOiB0cnVlIH0pOworCit3aW5kb3cub25sb2FkID0gKCkgPT4geworCitjb25zdCBmcmFt
ZXNldCA9IGZyYW1lc2V0V2luZG93LmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImZyYW1lc2V0Iik7
CisKK3Byb21pc2VfdGVzdCh0ID0+IHsKKyAgZnJhbWVzZXQub25lcnJvciA9IHQuc3RlcF9mdW5j
KCguLi5hcmdzKSA9PiB7CisgICAgYXNzZXJ0X2VxdWFscyhhcmdzLmxlbmd0aCwgMSk7CisgICAg
cmV0dXJuIHRydWU7CisgIH0pOworCisgIGNvbnN0IGV2ZW50V2F0Y2hlciA9IG5ldyBFdmVudFdh
dGNoZXIodCwgZnJhbWVzZXRXaW5kb3csICJlcnJvciIpOworICBjb25zdCBwcm9taXNlID0gZXZl
bnRXYXRjaGVyLndhaXRfZm9yKCJlcnJvciIpLnRoZW4oZSA9PiB7CisgICAgYXNzZXJ0X2VxdWFs
cyhlLmRlZmF1bHRQcmV2ZW50ZWQsIGZhbHNlKTsKKyAgfSk7CisKKyAgZnJhbWVzZXQuZGlzcGF0
Y2hFdmVudChuZXcgRXZlbnQoImVycm9yIiwgeyBidWJibGVzOiB0cnVlLCBjYW5jZWxhYmxlOiB0
cnVlIH0pKTsKKworICByZXR1cm4gcHJvbWlzZTsKK30sICJlcnJvciBldmVudCBpcyBub3JtYWwg
KHJldHVybiB0cnVlIGRvZXMgbm90IGNhbmNlbDsgb25lIGFyZykgb24gV2luZG93LCB3aXRoIGEg
c3ludGhldGljIEV2ZW50Iik7CisKK307Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC93ZWJhcHBhcGlzL3NjcmlwdGluZy9l
dmVudHMvZXZlbnQtaGFuZGxlci1wcm9jZXNzaW5nLWFsZ29yaXRobS1lcnJvci9yZXNvdXJjZXMv
ZnJhbWVzZXQtZnJhbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvd2ViYXBwYXBpcy9zY3JpcHRpbmcvZXZlbnRzL2V2
ZW50LWhhbmRsZXItcHJvY2Vzc2luZy1hbGdvcml0aG0tZXJyb3IvcmVzb3VyY2VzL2ZyYW1lc2V0
LWZyYW1lLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy9odG1sL3dlYmFwcGFwaXMvc2NyaXB0aW5nL2V2ZW50cy9ldmVudC1o
YW5kbGVyLXByb2Nlc3NpbmctYWxnb3JpdGhtLWVycm9yL3Jlc291cmNlcy9mcmFtZXNldC1mcmFt
ZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisKKzxmcmFtZXNldD48L2ZyYW1lc2V0Pgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>