<?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>215852</bug_id>
          
          <creation_ts>2020-08-26 08:57:24 -0700</creation_ts>
          <short_desc>Web Inspector fails to preview response from XHR requests</short_desc>
          <delta_ts>2020-10-07 14:55:41 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>217232</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>bburg</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1682985</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-08-26 08:57:24 -0700</bug_when>
    <thetext>XHR requests fail to preview in the Network tab of the inspector when the server responds with `304 Not Modified`, even if the resource already exists in the local cache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682986</commentid>
    <comment_count>1</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-08-26 08:58:08 -0700</bug_when>
    <thetext>&lt;rdar://66571823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683000</commentid>
    <comment_count>2</comment_count>
      <attachid>407304</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-08-26 09:24:19 -0700</bug_when>
    <thetext>Created attachment 407304
Initial pass at tests to reproduce the issue consistantly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683735</commentid>
    <comment_count>3</comment_count>
      <attachid>407304</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-28 12:09:34 -0700</bug_when>
    <thetext>Comment on attachment 407304
Initial pass at tests to reproduce the issue consistantly.

Clearing r? as this is a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683786</commentid>
    <comment_count>4</comment_count>
      <attachid>407506</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-08-28 15:21:18 -0700</bug_when>
    <thetext>Created attachment 407506
Works around issue; Tests still fail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683787</commentid>
    <comment_count>5</comment_count>
      <attachid>407506</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-08-28 15:22:29 -0700</bug_when>
    <thetext>Comment on attachment 407506
Works around issue; Tests still fail

Clearing r?, still a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684586</commentid>
    <comment_count>6</comment_count>
      <attachid>407704</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-01 12:58:46 -0700</bug_when>
    <thetext>Created attachment 407704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684598</commentid>
    <comment_count>7</comment_count>
      <attachid>407704</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-01 13:22:56 -0700</bug_when>
    <thetext>Comment on attachment 407704
Patch

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

&gt; Source/JavaScriptCore/inspector/IdentifiersFactory.cpp:56
&gt; +        return identifier.substring(2).toUInt64();

I realize now that this is a bad assumption and needs to be changed. `long` and `uint64` are not the same... This will fail on some platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684605</commentid>
    <comment_count>8</comment_count>
      <attachid>407704</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-01 13:43:54 -0700</bug_when>
    <thetext>Comment on attachment 407704
Patch

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

Nice work!  I have some comments/concerns, but I think this is mostly good :)

&gt; Source/WebCore/ChangeLog:10
&gt; +        Tests are implemented as LayoutTests for this change.

NIT: we usually list the test that is changed rather than saying that there are tests
```
    Test: http/tests/inspector/network/fetch-response-body.html
```

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:335
&gt; +    Vector&lt;NetworkResourcesData::ResourceData*&gt; allResources = resources();

NIT: you can have a local variable have the same name as a member variable/method if you prefix that member variable/method with `this-&gt;`
```
    auto resources = this-&gt;resources();
```

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:338
&gt; +        if (!resourceDataURL.isNull() &amp;&amp; resourceDataURL == url &amp;&amp; resourceData-&gt;httpStatusCode() != 304 &amp;&amp; (!mostRecentResourceData || (IdentifiersFactory::identifier(resourceData-&gt;requestId()) &gt; IdentifiersFactory::identifier(mostRecentResourceData-&gt;requestId()))))

NIT: it shouldn&apos;t be necessary to check `!resourceDataURL.isNull()` here as you&apos;re already checking for equality with `url` and we know that `url` is NOT null

This definitely needs a comment here explaining why you&apos;re comparing the identifiers.  I&apos;m guessing that you&apos;re assuming that since identifiers are sequential, the largest identifier must be the newest resource?  I think that&apos;s valid right now, but that seems very fragile.  Perhaps we could save a `WallTime` to `NetworkResourcesData::ResourceData` (just like `CachedResource::m_responseTimestamp`) and compare that instead?

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:544
&gt; +        NetworkResourcesData::ResourceData const* previousResourceData = m_resourcesData-&gt;dataWithout304ForURL(response.url().string());

`auto`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:550
&gt; +                RefPtr&lt;SharedBuffer&gt; previousBuffer = previousResourceData-&gt;buffer();

`auto`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt; +            m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);
&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, emptyString());

Why are we forcibly removing the content and MIME?  Is this needed/wanted?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:161
&gt; +        if (this._resource.mimeType === &quot;&quot; &amp;&amp; this._resource.statusCode === 304) {

NIT: we normally use `!this._resource.mimeType` or `!this._resource.mimeType.length` instead of directly comparing to the empty string

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:162
&gt; +            this._responseContentView = new WI.TextResourceContentView(this._resource);

Are we sure that every 304 response is text?

Also, how is it possible that we have a 304 response which basically means &quot;you already have the content&quot; and not have a MIME type?  Do we not get anything about what is trying to request this 304 response and can&apos;t at least infer the `Page.ResourceType` from that, or at the very least look at the `NetworkResourcesData::ResourceData` and know whether or not it&apos;s `base64Encoded` to show text or non-text?

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:35
&gt; +function createFetchForPhpHttp200() {

NIT: PHP should be capitalized

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:39
&gt; +function createFetchForPhpHttp304() {

NIT: PHP should be capitalized

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:69
&gt; +            name, description, setup,

Style: these really should all be on separate lines :/

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:171
&gt; +        setup(resolve) { InspectorTest.evaluateInPage(`internals.clearMemoryCache()`, resolve); },

Style: please put non-inline-arrow-function bodies on separate lines
```
    async setup() {
        return InspectorTest.evaluateInPage(`interals.clearMemoryCache()`);
    },
```

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:187
&gt; +            InspectorTest.expectEqual(sourceCode.responseHeaders[&quot;Cache-Control&quot;], &quot;public, max-age=31556926&quot;, &quot;Should see caching header `public, max-age=31556926`.&quot;);

NIT: I think just &quot;Should see caching header.&quot; is enough of a description :)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:225
&gt; +        setup(resolve) { InspectorTest.evaluateInPage(`internals.clearMemoryCache()`, resolve); },

Ditto (:171)

&gt; LayoutTests/http/tests/inspector/network/resources/fetch-cachable.php:13
&gt; +echo &quot;Plain text resource.\n&quot;;

NIT: could we drop the `\n` so that the test doesn&apos;t need to include `\n` in the `expectEqual`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684627</commentid>
    <comment_count>9</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-01 14:33:06 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #8)
&gt; Comment on attachment 407704 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=407704&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/NetworkResourcesData.cpp:338
&gt; &gt; +        if (!resourceDataURL.isNull() &amp;&amp; resourceDataURL == url &amp;&amp; resourceData-&gt;httpStatusCode() != 304 &amp;&amp; (!mostRecentResourceData || (IdentifiersFactory::identifier(resourceData-&gt;requestId()) &gt; IdentifiersFactory::identifier(mostRecentResourceData-&gt;requestId()))))
&gt; 
&gt; This definitely needs a comment here explaining why you&apos;re comparing the
&gt; identifiers.  I&apos;m guessing that you&apos;re assuming that since identifiers are
&gt; sequential, the largest identifier must be the newest resource?  I think
&gt; that&apos;s valid right now, but that seems very fragile.  Perhaps we could save
&gt; a `WallTime` to `NetworkResourcesData::ResourceData` (just like
&gt; `CachedResource::m_responseTimestamp`) and compare that instead?

Good idea! Also saves us from the fragile conversion of `resourceId`s back into numbers.

&gt; &gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt; &gt; +            m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);
&gt; &gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, emptyString());
&gt; 
&gt; Why are we forcibly removing the content and MIME?  Is this needed/wanted?

Just double checked, the MIME type removal is not needed, it will already be empty if we end up here.

A 304 shouldn&apos;t have content, but content needs to have been set otherwise in `InspectorNetworkAgent::getResponseBody` we fall through unable to determine that the content was empty because we never assigned the &quot;content&quot; to the ResourceData. Normally the content would be set on the resource data inside `InspectorNetworkAgent::didReceiveData` or it would be part of the cached response (which we don&apos;t have if we haven&apos;t gotten a non-304 yet), but without a cached response we never call `InspectorNetworkAgent::didReceiveData` because we don&apos;t have a cached copy yet.

Open to suggestions on better ways to handle this.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:162
&gt; &gt; +            this._responseContentView = new WI.TextResourceContentView(this._resource);
&gt; 
&gt; Are we sure that every 304 response is text?
&gt; 
&gt; Also, how is it possible that we have a 304 response which basically means
&gt; &quot;you already have the content&quot; and not have a MIME type?  Do we not get
&gt; anything about what is trying to request this 304 response and can&apos;t at
&gt; least infer the `Page.ResourceType` from that, or at the very least look at
&gt; the `NetworkResourcesData::ResourceData` and know whether or not it&apos;s
&gt; `base64Encoded` to show text or non-text?

An actual 304 response won&apos;t have any body content (unless we had cached content for it and are providing that and a proper MIME type). I guess really the correct thing to do would be show some sort of message to that effect (e.g. &quot;Response had no body.&quot;) instead of an empty editor...

And lastly thank you for the style/nit notes! Much appreciated!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684632</commentid>
    <comment_count>10</comment_count>
      <attachid>407704</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-01 14:58:53 -0700</bug_when>
    <thetext>Comment on attachment 407704
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt;&gt;&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, emptyString());
&gt;&gt; 
&gt;&gt; Why are we forcibly removing the content and MIME?  Is this needed/wanted?
&gt; 
&gt; Just double checked, the MIME type removal is not needed, it will already be empty if we end up here.
&gt; 
&gt; A 304 shouldn&apos;t have content, but content needs to have been set otherwise in `InspectorNetworkAgent::getResponseBody` we fall through unable to determine that the content was empty because we never assigned the &quot;content&quot; to the ResourceData. Normally the content would be set on the resource data inside `InspectorNetworkAgent::didReceiveData` or it would be part of the cached response (which we don&apos;t have if we haven&apos;t gotten a non-304 yet), but without a cached response we never call `InspectorNetworkAgent::didReceiveData` because we don&apos;t have a cached copy yet.
&gt; 
&gt; Open to suggestions on better ways to handle this.

I think it may be better to have the frontend &quot;allow&quot; an error returned by `Network.getResponseBody` if the related `WI.Resource` is 304.  This way, there is also some legacy support when inspecting older backends.

My reason for concern here is that now there&apos;s no way of determining whether there was actually content or not (e.g. we could have an existing `CachedResource` matching the 304 which legitimately had empty content (which is not the same as no/missing content), such as for headers or `&lt;img&gt;` &quot;pings&quot;).

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceClusterContentView.js:162
&gt;&gt;&gt; +            this._responseContentView = new WI.TextResourceContentView(this._resource);
&gt;&gt; 
&gt;&gt; Are we sure that every 304 response is text?
&gt;&gt; 
&gt;&gt; Also, how is it possible that we have a 304 response which basically means &quot;you already have the content&quot; and not have a MIME type?  Do we not get anything about what is trying to request this 304 response and can&apos;t at least infer the `Page.ResourceType` from that, or at the very least look at the `NetworkResourcesData::ResourceData` and know whether or not it&apos;s `base64Encoded` to show text or non-text?
&gt; 
&gt; An actual 304 response won&apos;t have any body content (unless we had cached content for it and are providing that and a proper MIME type). I guess really the correct thing to do would be show some sort of message to that effect (e.g. &quot;Response had no body.&quot;) instead of an empty editor...
&gt; 
&gt; And lastly thank you for the style/nit notes! Much appreciated!

Yeah I think some sort of message is better, although I&apos;m not really sure what to say because 304 implies that we have the content already, so I feel like we definitely should be able to show it 😅

Happy to help!  Really good job :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684641</commentid>
    <comment_count>11</comment_count>
      <attachid>407704</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-01 15:28:03 -0700</bug_when>
    <thetext>Comment on attachment 407704
Patch

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

Great work!

&gt; Source/WebCore/ChangeLog:5
&gt; +

Please hard line wrap at ~120 characters.

&gt; Source/WebCore/ChangeLog:13
&gt; +        (WebCore::NetworkResourcesData::responseReceived): Store `mimeType` from response

Nit: end Changelog sentences with period. :)

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:285
&gt; +    return resourceDataWithout304ForURL(url);

Nit: I don&apos;t think the two-level approach is needed.

&gt; Source/WebCore/inspector/NetworkResourcesData.cpp:328
&gt; +NetworkResourcesData::ResourceData* NetworkResourcesData::resourceDataWithout304ForURL(const String&amp; url)

I would drop the &apos;Without304&apos; part of the method name. It seems unnecessary to mention for its callers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684652</commentid>
    <comment_count>12</comment_count>
      <attachid>407704</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2020-09-01 16:04:33 -0700</bug_when>
    <thetext>Comment on attachment 407704
Patch

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

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:185
&gt; +        expression: &quot;createFetchForPhpHttp200()&quot;,

Style: Generally for code strings in our tests we use template strings (e.g. `foo`) instead of double quoted strings. I like that practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684979</commentid>
    <comment_count>13</comment_count>
      <attachid>407809</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-02 14:15:02 -0700</bug_when>
    <thetext>Created attachment 407809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685013</commentid>
    <comment_count>14</comment_count>
      <attachid>407809</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 14:58:50 -0700</bug_when>
    <thetext>Comment on attachment 407809
Patch

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

I think this is mostly good, but I have a few remaining questions (and some Style/NIT comments).

&gt; Source/WebCore/inspector/NetworkResourcesData.h:131
&gt; +        WallTime m_responseTimestamp;

please add `#include &lt;wtf/WallTime.h&gt;`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:542
&gt; +    // FIXME: 304 Not Modified responses for XHR/Fetch do not have all their information from the cache.

please make/link a bug for this

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:543
&gt; +    if (isNotModified &amp;&amp; (type == InspectorPageAgent::XHRResource || type == InspectorPageAgent::FetchResource) &amp;&amp; (!cachedResource || !cachedResource-&gt;encodedSize())) {

I just noticed this, but why do we have the `isNotModified` check earlier in this function?  I would think that if we have a `CachedResource` from a `SubresourceLoader` it would have some content, even if 304.  Is that not correct?  I keep thinking in my mind that the content _must_ exist somewhere, as otherwise 304 responses for JavaScript/CSS files would break (unless I&apos;m fundamentally misunderstanding 304).

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt; +            // This will not be set otherwise, as the cachedResource&apos;s body was not initialized.
&gt; +            m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);

Do we still need this now that the frontend handles content-missing 304?

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:231
&gt; +        if (parameters.sourceCode.statusCode == 304 &amp;&amp; !parameters.sourceCode.content) {
&gt; +            this.showGenericNoContentMessage();
&gt; +            return;
&gt; +        }

nice :)

&gt; LayoutTests/ChangeLog:22
&gt; +        * platform/mac-wk1/http/tests/inspector/network/fetch-response-body-expected.txt: Added. Test does not receive
&gt; +                cache hit information for WK1.

rather than create a separate expected file, it&apos;d probably be better to create a new file for your new test cases (e.g. `http/tests/inspector/network/fetch-response-body-caching.html`) and skip it on WK1

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:35
&gt; +function createFetchForPHPHttp200() {

NIT: you can drop the &quot;Http&quot;

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:39
&gt; +function createFetchForPHPHttp304() {

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:43
&gt; +function createFetchForFileHttp200() {

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:47
&gt; +function createFetchForFileHttp304() {

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:171
&gt; +        name: &quot;Network.getResponseBody.Fetch.PhpHttp304NotCached&quot;,

ditto (:35)

NIT: should capitalize `PHP`

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:175
&gt; +        setup(resolve) {
&gt; +            InspectorTest.evaluateInPage(`internals.clearMemoryCache()`, resolve);
&gt; +        },

NIT: you should be able to make this into an `async` function so that any errors in the `InspectorTest.evaluateInPage` call are properly logged (ideally this won&apos;t happen, but it can help diagnose issues on the bots if it does)
```
    async setup() {
        return InspectorTest.evaluateInPage(`internals.clearMemoryCache()`);
    },
```

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:176
&gt; +        expression: `createFetchForPHPHttp304()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:178
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;&quot;, &quot;MIMEType should be empty.&quot;);

NIT: we normally try to write the message as a regular english sentence, so please use &quot;MIME type&quot;

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:187
&gt; +        name: &quot;Network.getResponseBody.Fetch.PhpHttp200NotCached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:189
&gt; +        expression: `createFetchForPHPHttp200()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:192
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:201
&gt; +        name: &quot;Network.getResponseBody.Fetch.PhpHttp200Cached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:203
&gt; +        expression: `createFetchForPHPHttp200()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:205
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:214
&gt; +        name: &quot;Network.getResponseBody.Fetch.PhpHttp304Cached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:216
&gt; +        expression: `createFetchForPHPHttp304()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:218
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:227
&gt; +        name: &quot;Network.getResponseBody.Fetch.FileHttp304NotCached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:231
&gt; +        setup(resolve) {
&gt; +            InspectorTest.evaluateInPage(`internals.clearMemoryCache()`, resolve);
&gt; +        },

ditto (:173)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:232
&gt; +        expression: `createFetchForFileHttp304()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:234
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;&quot;, &quot;MIMEType should be empty.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:243
&gt; +        name: &quot;Network.getResponseBody.Fetch.FileHttp200NotCached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:245
&gt; +        expression: `createFetchForFileHttp200()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:248
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:257
&gt; +        name: &quot;Network.getResponseBody.Fetch.FileHttp200Cached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:259
&gt; +        expression: `createFetchForFileHttp200()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:261
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:270
&gt; +        name: &quot;Network.getResponseBody.Fetch.FileHttp304Cached&quot;,

ditto (:35)
ditto (:187)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:272
&gt; +        expression: `createFetchForFileHttp304()`,

ditto (:35)

&gt; LayoutTests/http/tests/inspector/network/fetch-response-body.html:274
&gt; +            InspectorTest.expectEqual(sourceCode.mimeType, &quot;text/plain&quot;, &quot;MIMEType should be &apos;text/plain&apos;.&quot;);

ditto (:178)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685037</commentid>
    <comment_count>15</comment_count>
      <attachid>407809</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-02 15:49:07 -0700</bug_when>
    <thetext>Comment on attachment 407809
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:543
&gt;&gt; +    if (isNotModified &amp;&amp; (type == InspectorPageAgent::XHRResource || type == InspectorPageAgent::FetchResource) &amp;&amp; (!cachedResource || !cachedResource-&gt;encodedSize())) {
&gt; 
&gt; I just noticed this, but why do we have the `isNotModified` check earlier in this function?  I would think that if we have a `CachedResource` from a `SubresourceLoader` it would have some content, even if 304.  Is that not correct?  I keep thinking in my mind that the content _must_ exist somewhere, as otherwise 304 responses for JavaScript/CSS files would break (unless I&apos;m fundamentally misunderstanding 304).

The check earlier is related to a fix multiple async xhr requests being in flight at once, in which case

On paper if we get a 304, we should have it cached somewhere because a header we sent would have resulted in the 304. The `CachedResource` from the `SubresourceLoader` as well as from the `InspectorPageAgent::cachedResource` both report an encoded length of -1 for our requests, which I don&apos;t believe should be possible. The crux of the issue is that even if we handle caching just fine, when someone makes a fetch request with a `If-Modified-Since` request header, it is possible we didn&apos;t have it cached to begin with.

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt;&gt; +            m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);
&gt; 
&gt; Do we still need this now that the frontend handles content-missing 304?

In the cases where our cachedResource has an encoded length of -1, the content/data property will never be set on our ResourceResponse. If we were unable to resolve the lack of cached content from our resourcesData cache, we still need to set a value for either content or data on the current resourcesData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685038</commentid>
    <comment_count>16</comment_count>
      <attachid>407809</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-02 15:50:41 -0700</bug_when>
    <thetext>Comment on attachment 407809
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:543
&gt;&gt;&gt; +    if (isNotModified &amp;&amp; (type == InspectorPageAgent::XHRResource || type == InspectorPageAgent::FetchResource) &amp;&amp; (!cachedResource || !cachedResource-&gt;encodedSize())) {
&gt;&gt; 
&gt;&gt; I just noticed this, but why do we have the `isNotModified` check earlier in this function?  I would think that if we have a `CachedResource` from a `SubresourceLoader` it would have some content, even if 304.  Is that not correct?  I keep thinking in my mind that the content _must_ exist somewhere, as otherwise 304 responses for JavaScript/CSS files would break (unless I&apos;m fundamentally misunderstanding 304).
&gt; 
&gt; The check earlier is related to a fix multiple async xhr requests being in flight at once, in which case
&gt; 
&gt; On paper if we get a 304, we should have it cached somewhere because a header we sent would have resulted in the 304. The `CachedResource` from the `SubresourceLoader` as well as from the `InspectorPageAgent::cachedResource` both report an encoded length of -1 for our requests, which I don&apos;t believe should be possible. The crux of the issue is that even if we handle caching just fine, when someone makes a fetch request with a `If-Modified-Since` request header, it is possible we didn&apos;t have it cached to begin with.

Ignore the first sentence. It&apos;s from a long gone train of thought.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685081</commentid>
    <comment_count>17</comment_count>
      <attachid>407840</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-02 17:49:08 -0700</bug_when>
    <thetext>Created attachment 407840
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685200</commentid>
    <comment_count>18</comment_count>
      <attachid>407840</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-02 23:59:48 -0700</bug_when>
    <thetext>Comment on attachment 407840
Patch

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

nice work!  one last question that I messaged you about offline :P

&gt; Source/WebCore/ChangeLog:7
&gt; +        Added workaround for 304 XHR/Fetch requests so that the mimeType and content are correctly set, otherwise the
&gt; +        frontend does not have the information it needs to preview the response.

this should go below the `Reviewed by ...`

&gt; Source/WebInspectorUI/ChangeLog:7
&gt; +        Responses with no content and a status code of 304 now show a `Resource has no cached content` message instead
&gt; +            of a generic error.

this should go below the `Reviewed by ...`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:542
&gt; +    // FIXME: &lt;rdar://68241104&gt; 304 Not Modified responses for XHR/Fetch do not have all their information from the cache.

NIT: I normally like to link to bugzilla (I create one if it doesn&apos;t exist) because then potential open source contributors can know about it and/or fix it :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:563
&gt; +            // This will not be set otherwise, as the cachedResource&apos;s body was not initialized.
&gt; +            m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);

@Patrick Angle i messaged you about this offline for a more in-depth discussion

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:167
&gt; +        this.showMessage(WI.UIString(&quot;Resource has no cached content.&quot;, &quot;No Cached Content @ Resource Preview&quot;, &quot;An error message when there is no cached content for a Not Modified resource.&quot;));

NIT: we normally re-use the format string in the key before the `@`, so &quot;Resource has no cached content. @ Resource Preview&quot;

&gt; LayoutTests/ChangeLog:8
&gt; +        Added new test cases and associated resources to test handling of `304 Not Modified` responses to XHR requests.
&gt; +        We test both XHR for a PHP page as well as for a text file, as they behaved differently (incorrectly) before
&gt; +        this patch.

this should go below the `Reviewed by ...`

&gt; LayoutTests/platform/mac-wk1/TestExpectations:410
&gt; +http/tests/inspector/network/fetch-response-body-304.html [ Failure ]

we should just `[ Skip ]` the test :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685309</commentid>
    <comment_count>19</comment_count>
      <attachid>407888</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 10:00:40 -0700</bug_when>
    <thetext>Created attachment 407888
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685328</commentid>
    <comment_count>20</comment_count>
      <attachid>407888</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 10:31:52 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

r=me, I have some remaining comments and there are a few more issues with the newly added code, but they&apos;re easy enough to resolve that I don&apos;t think it necessitates another review pingpong :)

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:546
&gt; +        auto previousResourceData = m_resourcesData-&gt;dataForURL(response.url().string());
&gt; +        
&gt; +        if (previousResourceData) {

NIT: you can combine these into a single like
```
    if (auto previousResourceData = m_resourcesData-&gt;dataForURL(response.url().string()))
```

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:553
&gt; +            } else
&gt; +                m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);

Do we need this as well?  If the `previousResourceData` doesn&apos;t have any content or buffered data, we shouldn&apos;t show the `requestId` as having any either.

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1033
&gt; +            return this.requestContentFailure.bind(this)();

`bind` isn&apos;t necessary when the function is being invoked

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1039
&gt; +            }).then(WI.SourceCode.prototype.requestContent.bind(this))

Drive-by: while you&apos;re at it I think we can change this to be `super.requestContent.bind(this)`

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1046
&gt; +    requestContentFailure(error)

since this isn&apos;t used outside this class, we should make it &quot;private&quot; by adding a leading `_` and moving it below after the `// Private`

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1051
&gt; +        return Promise.resolve({error: WI.UIString(&quot;An error occurred trying to load the resource.&quot;), message: this._failureReasonText}).then(this._processContent.bind(this));

Do we actually need the `_processContent` call?  I don&apos;t think it would really do anything since `parameters` doesn&apos;t have `content`/`body`/`text`/`scriptSource`/`base64Encoded`/etc..

NIT: `_processContent` is a &quot;private&quot; method of the parent class `WI.SourceCode`, so it&apos;s a layering violation to use it here.

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:160
&gt; -        this.showMessage(WI.UIString(&quot;Resource has no content&quot;));
&gt; +        this.showMessage(WI.UIString(&quot;Resource has no content.&quot;));

ooo nice catch!

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:167
&gt; +        this.showMessage(WI.UIString(&quot;Resource has no cached content.&quot;, &quot;Resource has no cached content. @ Resource Preview&quot;, &quot;An error message when there is no cached content for a Not Modified resource.&quot;));

Grammar: &quot;error message shown when there&quot;

you might also want to say &quot;HTTP 304 Not Modified&quot; so that it&apos;s explicitly clear what you&apos;re talking about :)

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceContentView.js:224
&gt; +            if (parameters.sourceCode.statusCode == 304 &amp;&amp; parameters.message === &quot;Missing content of resource for given requestId&quot;)
&gt; +                this.showNoCachedContentMessage();
&gt; +            else

NIT: i&apos;d make this into an `if (...) { ... return; }` instead of having the `else`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685349</commentid>
    <comment_count>21</comment_count>
      <attachid>407888</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 10:58:01 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:553
&gt;&gt; +                m_resourcesData-&gt;setResourceContent(requestId, emptyString(), false);
&gt; 
&gt; Do we need this as well?  If the `previousResourceData` doesn&apos;t have any content or buffered data, we shouldn&apos;t show the `requestId` as having any either.

Good catch; don&apos;t need this one any more either.

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1051
&gt;&gt; +        return Promise.resolve({error: WI.UIString(&quot;An error occurred trying to load the resource.&quot;), message: this._failureReasonText}).then(this._processContent.bind(this));
&gt; 
&gt; Do we actually need the `_processContent` call?  I don&apos;t think it would really do anything since `parameters` doesn&apos;t have `content`/`body`/`text`/`scriptSource`/`base64Encoded`/etc..
&gt; 
&gt; NIT: `_processContent` is a &quot;private&quot; method of the parent class `WI.SourceCode`, so it&apos;s a layering violation to use it here.

`_processContent` is taking the error and message and bundling it with other information about the response. While we don&apos;t have any content, `_processContent` is also responsible for providing the `sourceCode` property which has general information about the response. This is what lets us have access to things like the status code when we handle the error in `ResourceContentView`&apos;s `_contentAvailable(...)`.

I see three possible solution here solutions here:
1. Move this error handling go one level deeper in `SourceCode` instead - although in SourceCode we can&apos;t set the `_failure` and `_failureReasonText` properties that are unique to `Resource`. The only issue it looks like that could cause is in Script.js `requestScriptSyntaxTree(...)` is handling uncaught exceptions, but we could just check and make sure there is no `error` in `parameters` and do the same thing there. Not sure this is a great answer; I may have missed subtle assumptions that have been made about error handling in `SourceCode` over the years.
2. Mark `_processContent` as protected (and drop the `_` from its name)? Less bad than #1.
3. In `requestContentFailure(...)` we just return a value for `sourceCode` instead of letting `_processContent` do it for us. This kind of seems like the best answer given that we won&apos;t have any content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685380</commentid>
    <comment_count>22</comment_count>
      <attachid>407888</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 11:48:03 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:555
&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, previousResourceData-&gt;mimeType());

I just realized that you should use `setMimeType` for this as it has extra checks to make sure that it&apos;s not called twice

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:557
&gt; +            resourceResponse-&gt;setInteger(&quot;status&quot;_s, previousResourceData-&gt;httpStatusCode());

ditto (:555) with `setStatus`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:558
&gt; +            resourceResponse-&gt;setString(&quot;statusText&quot;_s, previousResourceData-&gt;httpStatusText());

ditto (:555) with `setStatusText`

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:560
&gt; +            resourceResponse-&gt;setString(&quot;source&quot;_s, Inspector::Protocol::InspectorHelpers::getEnumConstantValue(Inspector::Protocol::Network::Response::Source::DiskCache));

ditto (:555) with `setSource`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685384</commentid>
    <comment_count>23</comment_count>
      <attachid>407888</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 11:58:40 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1040
&gt; +            .catch(this.requestContentFailure.bind(this));

Actually, this will likely have issues if `WI.Resource.Event.LoadingDidFail` because the argument in that case will be a `WI.Event`, which doesn&apos;t have a `message` property.  I don&apos;t think it&apos;ll throw any errors, but it&apos;s one of those subtle things that can cause bugs in the future.  I think a better solution to this would be to instead just have this simply be `.then(this.requestContent.bind(this)))` and avoid the `.catch` altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685397</commentid>
    <comment_count>24</comment_count>
      <attachid>407888</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 12:35:34 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:555
&gt;&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, previousResourceData-&gt;mimeType());
&gt; 
&gt; I just realized that you should use `setMimeType` for this as it has extra checks to make sure that it&apos;s not called twice

There actually isn&apos;t a `setMimeType`, `setStatus`, `setStatusText`, or `setSource` for the resource response, the ones you see are builder methods. This pattern is borrowed from line 530 where someone needed to make sure the MIME type was set under specific conditions. What I will say is that looking at it, I should use `Inspector::Protocol::Network::Response::MimeType` and add properties in the protocol for the other strings, instead of hard-coding the strings here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685405</commentid>
    <comment_count>25</comment_count>
      <attachid>407888</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 13:05:39 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:555
&gt;&gt;&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, previousResourceData-&gt;mimeType());
&gt;&gt; 
&gt;&gt; I just realized that you should use `setMimeType` for this as it has extra checks to make sure that it&apos;s not called twice
&gt; 
&gt; There actually isn&apos;t a `setMimeType`, `setStatus`, `setStatusText`, or `setSource` for the resource response, the ones you see are builder methods. This pattern is borrowed from line 530 where someone needed to make sure the MIME type was set under specific conditions. What I will say is that looking at it, I should use `Inspector::Protocol::Network::Response::MimeType` and add properties in the protocol for the other strings, instead of hard-coding the strings here.

It actually won&apos;t be trivial to expose a `Inspector::Protocol::Network::Response::Source` property because that name is already in use to expose the enum representing the possible values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685408</commentid>
    <comment_count>26</comment_count>
      <attachid>407888</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 13:13:11 -0700</bug_when>
    <thetext>Comment on attachment 407888
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:555
&gt;&gt;&gt;&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;_s, previousResourceData-&gt;mimeType());
&gt;&gt;&gt; 
&gt;&gt;&gt; I just realized that you should use `setMimeType` for this as it has extra checks to make sure that it&apos;s not called twice
&gt;&gt; 
&gt;&gt; There actually isn&apos;t a `setMimeType`, `setStatus`, `setStatusText`, or `setSource` for the resource response, the ones you see are builder methods. This pattern is borrowed from line 530 where someone needed to make sure the MIME type was set under specific conditions. What I will say is that looking at it, I should use `Inspector::Protocol::Network::Response::MimeType` and add properties in the protocol for the other strings, instead of hard-coding the strings here.
&gt; 
&gt; It actually won&apos;t be trivial to expose a `Inspector::Protocol::Network::Response::Source` property because that name is already in use to expose the enum representing the possible values.

aaahhh this isn&apos;t the builder.  Yeah i guess this is ... &quot;fine&quot; ¯\_(ツ)_/¯

Yeah `Source` is a bad name and probably should be made more specific, like `ResponseSource`.  I wouldn&apos;t worry about creating things like `Inspector::Protocol::Network::Response::MimeType` (which really should be `MIMEType`) as it&apos;s so rare that it&apos;s probably not worth it (not to mention I personally think we never even should do this in the first place).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685448</commentid>
    <comment_count>27</comment_count>
      <attachid>407915</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 14:46:55 -0700</bug_when>
    <thetext>Created attachment 407915
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685500</commentid>
    <comment_count>28</comment_count>
      <attachid>407915</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-03 17:04:22 -0700</bug_when>
    <thetext>Comment on attachment 407915
Patch

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

r=me, nice work!

&gt; Source/WebInspectorUI/ChangeLog:13
&gt; +        * UserInterface/Models/Resource.js:  More consistant error handling model - previously some paths rejected on

NIT: double space

&gt; Source/WebCore/inspector/agents/InspectorNetworkAgent.cpp:552
&gt; +            resourceResponse-&gt;setString(&quot;mimeType&quot;, previousResourceData-&gt;mimeType());

missing `_s`

&gt; Source/WebInspectorUI/UserInterface/Models/Resource.js:1196
&gt; +            sourceCode: this

Style: please include a trailing comma for any multi-line objects/arrays</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685511</commentid>
    <comment_count>29</comment_count>
      <attachid>407936</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2020-09-03 17:33:49 -0700</bug_when>
    <thetext>Created attachment 407936
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685514</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-03 17:37:01 -0700</bug_when>
    <thetext>pangle@apple.com does not have committer permissions according to https://svn.webkit.org/repository/webkit/trunk/Tools/Scripts/webkitpy/common/config/contributors.json.

Rejecting attachment 407936 from commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1685525</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-03 18:12:00 -0700</bug_when>
    <thetext>Committed r266568: &lt;https://trac.webkit.org/changeset/266568&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407936.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407304</attachid>
            <date>2020-08-26 09:24:19 -0700</date>
            <delta_ts>2020-08-28 15:21:16 -0700</delta_ts>
            <desc>Initial pass at tests to reproduce the issue consistantly.</desc>
            <filename>bug-215852-20200826122418.patch</filename>
            <type>text/plain</type>
            <size>15904</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDgzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWI3ZDdiMDU1NjE4OTRjOGYwMjc5
OGVmMjQ1NzgzZDExZTIwZmYwMi4uMDIzOTM0MDZhOWQyM2U0ZWM5MWUwNWQyNjA2MTViOTFiZDhh
MWJlMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIwLTA4LTI2ICBQYXRyaWNrIEFuZ2xlICA8
cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZhaWxzIHRvIHByZXZp
ZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0IGNh
c2VzIGFuZCBhc3NvY2lhdGVkIHJlc291cmNlcyB0byB0ZXN0IGhhbmRsaW5nIG9mIGAzMDQgTm90
IE1vZGlmaWVkYCByZXNwb25zZXMgdG8gWEhSIHJlcXVlc3RzLgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dDogQWRkZWQgZXhwZWN0ZWQgb3V0
cHV0IGZvciBuZXcgdGVzdCBjYXNlcy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbDogQWRkZWQgbmV3IHRlc3QgY2FzZXMgZm9y
IGAzMDQgTm90IE1vZGlmaWVkYCByZXNwb25zZXMgdG8gYGZldGNoYC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3M6IEFkZGVkLiBQcm92
aWRlcyBgQ2FjaGUtQ29udHJvbGAgaGVhZGVyIGZvciBgZmV0Y2gtY2FjaGFibGUudHh0YC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNo
YWJsZS5waHA6IEFkZGVkLiBQcm92aWRlcyBleHBlY3RlZCBgQ2FjaGUtQ29udHJvbGAgaGVhZGVy
IGFuZCBzdXBwb3J0cyBwcm92aWRpbmcgYSBgMzA0IE5vdCBNb2RpZmllZGAgcmVzcG9uc2UuCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2Fj
aGFibGUudHh0OiBBZGRlZC4gRHVwbGljYXRlIG9mIGBkYXRhLnR4dGAgd2l0aCBgQ2FjaGUtQ29u
dHJvbGAgaGVhZGVyIHByb3ZpZGVkIGJ5IGAuaHRhY2Nlc3NgLgorCiAyMDIwLTA4LTI0ICBIZWN0
b3IgTG9wZXogIDxoZWN0b3JfaV9sb3BlekBhcHBsZS5jb20+CiAKICAgICAgICBbIG1hY09TIHdr
MSBdIGZhc3Qvb3ZlcmZsb3cvaG9yaXpvbnRhbC1zY3JvbGwtYWZ0ZXItYmFjay5odG1sIGlzIGEg
Zmxha3kgdGltZW91dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3Rl
ZC50eHQKaW5kZXggMDM3NzEwOTgxZjBmOGY5NDlhYWQ4ZjFiZmNlMTAwMjlhZTkzYWRkZS4uNWM4
OTFjYjhkZmVhMDUyNTc0NTZlMTRlMTA5MGNkNDM5NDcxMmVlYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ZldGNoLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQudHh0CkBAIC00NCwzICs0NCw3MSBAQCBQQVNT
OiBNSU1FVHlwZSBzaG91bGQgYmUgJ2ltYWdlL3BuZycuCiBQQVNTOiBDb250ZW50IHNob3VsZCBi
ZSBiYXNlNjRFbmNvZGVkLgogUEFTUzogSW1hZ2UgY29udGVudCBzaG91bGQgYmUgYSBCbG9iLgog
CistLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5n
ZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ug
c2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQ
QVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hv
dWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQg
c2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBi
ZSBgdW5kZWZpbmVkYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LkZldGNoLlBocEh0dHAyMDBOb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBi
ZSBGZXRjaCB0eXBlLgorUEFTUzogU2hvdWxkIHNlZSBjYWNoaW5nIGhlYWRlciBgcHVibGljLCBt
YXgtYWdlPTMxNTU2OTI2LgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4K
K1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBz
aG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVu
dCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxk
IGJlIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxuYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5l
dHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAyMDBDYWNoZWQKK1BBU1M6IFJlc291
cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0
L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25z
ZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQ
QVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IEpTT04gY29u
dGVudCBzaG91bGQgYmUgYFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDMwNENhY2hlZAor
UEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91
bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BB
U1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5E
aXNrQ2FjaGUKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFT
UzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKKy0t
IFJ1bm5pbmcgdGVzdCBzZXR1cC4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJl
c3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hv
dWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNT
OiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxk
IGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hv
dWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBg
dW5kZWZpbmVkYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VC
b2R5LkZldGNoLkZpbGVIdHRwMjAwTm90Q2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUg
RmV0Y2ggdHlwZS4KK1BBU1M6IFNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIgYHB1YmxpYywgbWF4
LWFnZT0zMTU1NjkyNi4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQ
QVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hv
dWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQg
c2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBi
ZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDIwMENhY2hlZAorUEFTUzogUmVzb3Vy
Y2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQv
cGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNl
U291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BB
U1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250
ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDMwNENhY2hlZAor
UEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91
bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BB
U1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5E
aXNrQ2FjaGUKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFT
UzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gt
cmVzcG9uc2UtYm9keS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwKaW5kZXggZmRmYzU5M2UyZjBlMGNjMzhiNDFk
Mjk4OTkwM2I4MTNlOTIzNGZkZi4uMGMyNWZkMWU2YWUwNTU0YjU3NTMyMGIzOTI5NTNkYTBiZjhj
YTkzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwKQEAgLTMyLDYgKzMyLDIy
IEBAIGZ1bmN0aW9uIGNyZWF0ZUZldGNoRm9yUE5HKCkgewogICAgIGZldGNoKCIvcmVzb3VyY2Vz
L3NxdWFyZTEwMC5wbmciKTsKIH0KIAorZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQaHBIdHRwMjAw
KCkgeworICAgIGZldGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIiwgeyBoZWFkZXJz
OiB7ICdYLVN0YXR1cy1Db2RlLU5lZWRlZCc6ICcyMDAnIH0gfSk7Cit9CisKK2Z1bmN0aW9uIGNy
ZWF0ZUZldGNoRm9yUGhwSHR0cDMwNCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNh
Y2hhYmxlLnBocCIsIHsgaGVhZGVyczogeyAnWC1TdGF0dXMtQ29kZS1OZWVkZWQnOiAnMzA0JyB9
IH0pOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvckZpbGVIdHRwMjAwKCkgeworICAgIGZl
dGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0
ZUZldGNoRm9yRmlsZUh0dHAzMDQoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNo
YWJsZS50eHQiLCB7IGhlYWRlcnM6IHsgJ0lmLU1vZGlmaWVkLVNpbmNlJzogbmV3IERhdGUoKS50
b1VUQ1N0cmluZygpIH0gfSk7Cit9CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0
ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5nZXRSZXNwb25zZUJv
ZHkuRmV0Y2giKTsKQEAgLTQ4LDkgKzY0LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0p
OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwg
ZXhwcmVzc2lvbiwgY29udGVudEhhbmRsZXJ9KSB7CisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uo
e25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgZXhwcmVzc2lvbiwgY29udGVudEhhbmRsZXJ9KSB7
CiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0
aW9uLAorICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLAogICAgICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24pOwogICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0
RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCkKQEAgLTE0OSw2ICsxNjUsMTE0
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBhZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRw
MzA0Tm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQg
Ym9keSBmb3IgMzA0IHJlc3BvbnNlLCB3aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBz
ZXR1cChyZXNvbHZlKSB7IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5j
bGVhck1lbW9yeUNhY2hlKClgLCByZXNvbHZlKTsgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogImNy
ZWF0ZUZldGNoRm9yUGhwSHR0cDMwNCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9y
LCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUVU
eXBlIHNob3VsZCBiZSBlbXB0eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAzMDQsICJTdGF0dXMgY29kZSBzaG91bGQgYmUg
MzA0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2Rl
LnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrLCBgcmVz
cG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmtg
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2Rl
ZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgdW5kZWZpbmVkLCAiSlNP
TiBjb250ZW50IHNob3VsZCBiZSBgdW5kZWZpbmVkYC4iKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJv
ZHkuRmV0Y2guUGhwSHR0cDIwME5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0
IGJvZHkgZm9yIDIwMCByZXNwb25zZSBmcm9tIG5ldHdvcmsuIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogImNyZWF0ZUZldGNoRm9yUGhwSHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIo
e2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVy
c1siQ2FjaGUtQ29udHJvbCJdLCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBz
ZWUgY2FjaGluZyBoZWFkZXIgYHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNi4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQv
cGxhaW4iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJT
dGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25z
ZVNvdXJjZS5OZXR3b3JrLCBgcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJl
c3BvbnNlU291cmNlLk5ldHdvcmtgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFz
ZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29u
dGVudCwgYFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBg
UGxhaW4gdGV4dCByZXNvdXJjZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aC5QaHBIdHRwMjAwQ2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3Ig
MjAwIHJlc3BvbnNlIGZyb20gY2FjaGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZl
dGNoRm9yUGhwSHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3Vy
Y2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJN
SU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2Rl
IHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRp
c2tDYWNoZSwgYHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNv
dXJjZS5EaXNrQ2FjaGVgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
cmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5j
b2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwg
YFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4g
dGV4dCByZXNvdXJjZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBI
dHRwMzA0Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9y
IDMwNCByZXNwb25zZS4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JQaHBI
dHRwMzA0KCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNv
bnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBlIHNo
b3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJl
IDMwNC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29k
ZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCBg
cmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tD
YWNoZWApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRF
bmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBgUGxhaW4gdGV4
dCByZXNvdXJjZS5cbmAsICJKU09OIGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJlc291
cmNlLlxcbmAuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMzA0Tm90
Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBm
b3IgMzA0IHJlc3BvbnNlLCB3aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBzZXR1cChy
ZXNvbHZlKSB7IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1l
bW9yeUNhY2hlKClgLCByZXNvbHZlKTsgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZl
dGNoRm9yRmlsZUh0dHAzMDQoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291
cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FVHlwZSBz
aG91bGQgYmUgZW1wdHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNw
b25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgYHJlc3BvbnNl
U291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrYCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZh
bHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIkpTT04gY29u
dGVudCBzaG91bGQgYmUgYHVuZGVmaW5lZGAuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZl
dGNoLkZpbGVIdHRwMjAwTm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9k
eSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiAi
Y3JlYXRlRmV0Y2hGb3JGaWxlSHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vy
cm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1si
Q2FjaGUtQ29udHJvbCJdLCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUg
Y2FjaGluZyBoZWFkZXIgYHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNi4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxh
aW4iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0
dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNv
dXJjZS5OZXR3b3JrLCBgcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3Bv
bnNlU291cmNlLk5ldHdvcmtgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0
RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVu
dCwgYFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxh
aW4gdGV4dCByZXNvdXJjZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRU
ZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5G
aWxlSHR0cDIwMENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGJvZHkgZm9yIDIw
MCByZXNwb25zZSBmcm9tIGNhY2hlLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVGZXRj
aEZvckZpbGVIdHRwMjAwKCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJj
ZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1J
TUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUg
c2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
c291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlz
a0NhY2hlLCBgcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291
cmNlLkRpc2tDYWNoZWApOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChy
YXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNv
ZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBg
UGxhaW4gdGV4dCByZXNvdXJjZS5cbmAsICJKU09OIGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0
ZXh0IHJlc291cmNlLlxcbmAuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVI
dHRwMzA0Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9y
IDMwNCByZXNwb25zZS4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JGaWxl
SHR0cDMwNCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBj
b250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBz
aG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBi
ZSAzMDQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwg
YHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNr
Q2FjaGVgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0
RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRl
eHQgcmVzb3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNv
dXJjZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2Fz
ZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmE4ZDEyNjk0OTM5YTI5ODY0M2Q1MDE2YTMwNmRlOTExYmFiMDc4OWEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291
cmNlcy8uaHRhY2Nlc3MKQEAgLTAsMCArMSwzIEBACis8RmlsZXMgZmV0Y2gtY2FjaGFibGUudHh0
PgorCUhlYWRlciBzZXQgQ2FjaGUtQ29udHJvbCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2Igor
PC9GaWxlcz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJs
ZS5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9mZXRjaC1jYWNoYWJsZS5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDQwMzA5Yzg2YjhmOWM5ODViYzM5MDU5
YTVjOGRlOGZiZTA2ZjRjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocApAQCAtMCww
ICsxLDE0IEBACis8P3BocAorJHN0YXR1cyA9ICRfU0VSVkVSWydIVFRQX1hfU1RBVFVTX0NPREVf
TkVFREVEJ107CisKK2lmICgkc3RhdHVzID09ICczMDQnKSB7CisgICAgaGVhZGVyKCJIVFRQLzEu
MSAzMDQgTm90IE1vZGlmaWVkIik7CisgICAgZXhpdDsKK30KKworaGVhZGVyKCdDb250ZW50LVR5
cGU6IHRleHQvcGxhaW4nKTsKK2hlYWRlcigiQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdl
PTMxNTU2OTI2Iik7IC8vIE9uZSB5ZWFyLgorCisKK2VjaG8gIlBsYWluIHRleHQgcmVzb3VyY2Uu
XG4iOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41MTYzZTgyNTM0YjQ5YjExOGI2ZjA5MjU0Y2U4NGVkMTNlMDI5MDZkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvZmV0Y2gtY2FjaGFibGUudHh0CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRleHQgcmVzb3VyY2Uu
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407506</attachid>
            <date>2020-08-28 15:21:18 -0700</date>
            <delta_ts>2020-09-01 12:58:44 -0700</delta_ts>
            <desc>Works around issue; Tests still fail</desc>
            <filename>bug-215852-20200828182117.patch</filename>
            <type>text/plain</type>
            <size>24664</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3YzI3OTc1NjE0Yzdi
NWI3YmU3ZTMwZDYyMmJhNGE1YWQyYmE3NC4uYmVhMWI2MmFiNTUxYjgyNGJjN2EzY2EwYzdhMTQw
NDY3ODRhMmQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTA4LTI4ICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIEFkZGVk
IHdvcmthcm91bmQgZm9yIDMwNCBYSFIvRmV0Y2ggcmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5
cGUgYW5kIGNvbnRlbnQgYXJlIGNvcnJlY3RseSBzZXQsIG90aGVyd2lzZSB0aGUgZnJvbnRlbmQg
ZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gcHJldmlldyB0aGUgcmVz
cG9uc2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdHMgYXJlIGltcGxlbWVudGVkIGFzIExheW91dFRlc3RzIGZvciB0aGlzIGNoYW5nZS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZlZCk6IFN0b3JlIGBt
aW1lVHlwZWAgZnJvbSByZXNwb25zZQorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNl
c0RhdGE6OmRhdGFXaXRob3V0MzA0Rm9yVVJMKToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpyZXNvdXJjZURhdGFXaXRob3V0MzA0Rm9yVVJMKTogU3VwcG9ydCBmb3Ig
ZmluZGluZyBhIHByZXZpb3VzIG5vbi0zMDQgcmVzcG9uc2UgZm9yIGEgVVJMCisgICAgICAgICog
aW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6IEFkZGVkIGBtX21pbWVUeXBlYCBtZW1i
ZXIKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRh
OjpSZXNvdXJjZURhdGE6OnNldE1JTUVUeXBlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEFkZGVkIGNvZGUgcGF0aCB0byB3b3Jr
IGFyb3VuZCB1bmRlcmx5aW5nIGlzc3VlIHdoZXJlIFhIUi9GZXRjaCAzMDRzIGFyZSBub3QgY2Fj
aGVkLCBhbmQgZW5kIHVwIG5vdCBwYXNzaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB0aGUg
ZnJvbnRlbmQgYXMgYSByZXN1bHQuCisKIDIwMjAtMDgtMjggIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBhbG1vc3QgYWxsIHRoZSByZW1haW5pbmcgdXNl
cyBvZiBsaXZlIHJhbmdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05l
dHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3Jr
UmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNzQzMjUwOWVkZTQ0NmU3NzhjNGRmZDQ0MzQ5MDFlZTRl
MzA0YzI1Mi4uZTZiNjVlYmZkNjc1NWU4YTUyOWQxYTJjYWVkZmYxMjkzMTJkMzdiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBA
IC0xNTQsNiArMTU0LDcgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNl
aXZlZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW4KICAgICByZXNvdXJjZURh
dGEtPnNldEhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOwogICAgIHJl
c291cmNlRGF0YS0+c2V0VHlwZSh0eXBlKTsKICAgICByZXNvdXJjZURhdGEtPnNldEZvcmNlQnVm
ZmVyRGF0YShmb3JjZUJ1ZmZlckRhdGEpOworICAgIHJlc291cmNlRGF0YS0+c2V0TUlNRVR5cGUo
cmVzcG9uc2UubWltZVR5cGUoKSk7CiAKICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpz
aG91bGRUcmVhdEFzVGV4dChyZXNwb25zZS5taW1lVHlwZSgpKSkKICAgICAgICAgcmVzb3VyY2VE
YXRhLT5zZXREZWNvZGVyKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIo
cmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpKSk7CkBAIC0y
NzgsNiArMjc5LDExIEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3Qq
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc291
cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogfQogCitOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YVdpdGhvdXQz
MDRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgcmV0dXJuIHJlc291cmNlRGF0YVdp
dGhvdXQzMDRGb3JVUkwodXJsKTsKK30KKwogVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNl
c0RhdGE6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJj
ZSkKIHsKICAgICBWZWN0b3I8U3RyaW5nPiByZXN1bHQ7CkBAIC0zMTgsNiArMzI0LDIyIEBAIE5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpy
ZXNvdXJjZURhdGFGb3JSZXF1ZXN0CiAgICAgcmV0dXJuIG1fcmVxdWVzdElkVG9SZXNvdXJjZURh
dGFNYXAuZ2V0KHJlcXVlc3RJZCk7CiB9CiAKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGEqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZURhdGFXaXRob3V0MzA0Rm9yVVJM
KGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgIAorICAgIC8vIFRPRE86IFtQQ0FdIE1vc3QgcmVjZW50IG1hdGNo
LCBpZGVhbGx5IHRvIHByZXZlbnQgdXMgZnJvbSBnZXR0aW5nIHN0YWxlIGRhdGE/CisgICAgVmVj
dG9yPE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqPiBhbGxSZXNvdXJjZXMgPSBy
ZXNvdXJjZXMoKTsKKyAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IGFsbFJlc291cmNlcykg
eworICAgICAgICBTdHJpbmcgcmVzb3VyY2VEYXRhVVJMID0gcmVzb3VyY2VEYXRhLT51cmwoKTsK
KyAgICAgICAgaWYgKCFyZXNvdXJjZURhdGFVUkwuaXNOdWxsKCkgJiYgcmVzb3VyY2VEYXRhVVJM
ID09IHVybCAmJiByZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkgIT0gMzA0KQorICAgICAg
ICAgICAgcmV0dXJuIHJlc291cmNlRGF0YTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3VyZU5vRGF0YUZvclJlcXVl
c3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKICAgICBhdXRvIHJlc3VsdCA9IG1fcmVx
dWVzdElkVG9SZXNvdXJjZURhdGFNYXAudGFrZShyZXF1ZXN0SWQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCAyOTUwODJhNjhjOWRl
MzM5ZmM2NTM2ZTY0MGQxZGRhYmMyYzlmNmQzLi4yYjM5ZTM0MzgxZjBlYzk1NmJlYzgyYTJmM2E2
OWY3MzAwNTJmM2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaApAQCAtNzcsNiArNzcsOSBAQCBwdWJsaWM6CiAKICAgICAgICAgY29uc3Qg
U3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RW5jb2RpbmdO
YW1lOyB9CiAgICAgICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZTsg
fQorICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWltZVR5cGU7IH0KKyAgICAgICAgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBTdHJpbmcm
IG1pbWVUeXBlKSB7IG1fbWltZVR5cGUgPSBtaW1lVHlwZTsgfQogCiAgICAgICAgIFJlZlB0cjxU
ZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNv
cHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURl
Y29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CkBAIC0x
MDcsNiArMTEwLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0
cmluZyBtX2NvbnRlbnQ7CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAg
ICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rl
cj4gbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwpAQCAtMTMzLDEyICsxMzcs
MTQgQEAgcHVibGljOgogICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiBy
ZXF1ZXN0SWQsIENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1
ZmZlcihjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29u
c3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRh
dGEoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0
YVdpdGhvdXQzMDRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIFZlY3RvcjxTdHJpbmc+
IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKik7CiAgICAgdm9pZCBjbGVhcihP
cHRpb25hbDxTdHJpbmc+IHByZXNlcnZlZExvYWRlcklkID0gV1RGOjpudWxsb3B0KTsKICAgICBW
ZWN0b3I8UmVzb3VyY2VEYXRhKj4gcmVzb3VyY2VzKCk7CiAKIHByaXZhdGU6CiAgICAgUmVzb3Vy
Y2VEYXRhKiByZXNvdXJjZURhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQp
OworICAgIFJlc291cmNlRGF0YSogcmVzb3VyY2VEYXRhV2l0aG91dDMwNEZvclVSTChjb25zdCBT
dHJpbmcmIHVybCk7CiAgICAgdm9pZCBlbnN1cmVOb0RhdGFGb3JSZXF1ZXN0SWQoY29uc3QgU3Ry
aW5nJiByZXF1ZXN0SWQpOwogICAgIGJvb2wgZW5zdXJlRnJlZVNwYWNlKHNpemVfdCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAppbmRleCA4ZDAzODI1OTNkZDlkNGQ0ODM3NmViODA3ZTgwYjY1NGZkMTFk
MWQ0Li44M2U4NmYzMmEzOTgwNjM2YTI3M2Q1MDEzMzc4M2FhMDExNWU5Y2NhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3Jr
QWdlbnQuY3BwCkBAIC01MTUsNiArNTE1LDggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6
OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U+IHJlc291cmNl
UmVzcG9uc2UgPSBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVhbFJlc3BvbnNlID8g
KnJlYWxSZXNwb25zZSA6IHJlc3BvbnNlLCByZXNvdXJjZUxvYWRlcik7CiAKICAgICBib29sIGlz
Tm90TW9kaWZpZWQgPSByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpID09IDMwNDsKKyAgICBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlID0gbV9yZXNvdXJjZXNEYXRhLT5yZXNv
dXJjZVR5cGUocmVxdWVzdElkKTsKKyAgICBib29sIGFwcGx5Tm90TW9kaWZpZWRGaXggPSBpc05v
dE1vZGlmaWVkICYmICh0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UgfHwg
dHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkZldGNoUmVzb3VyY2UpOwogCiAgICAgQ2FjaGVk
UmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gbnVsbHB0cjsKICAgICBpZiAoaXM8U3VicmVzb3Vy
Y2VMb2FkZXI+KHJlc291cmNlTG9hZGVyKSAmJiAhaXNOb3RNb2RpZmllZCkKQEAgLTUyOCw4ICs1
MzAsMjggQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW4KICAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZyhJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6
TWltZVR5cGUsIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgICAg
ICBtX3Jlc291cmNlc0RhdGEtPmFkZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgY2FjaGVkUmVz
b3VyY2UpOwogICAgIH0KKyAgICAKKyAgICAvLyBGSVhNRTogV29ya2luZyBhcm91bmQgdGhlIGZh
Y3QgdGhhdCB3ZSBhcmUgbm90IGdldHRpbmcgYSBwcm9wZXIgY2FjaGUgaGl0IGZvciAzMDQgTm90
IE1vZGlmaWVkLgorICAgIGlmIChhcHBseU5vdE1vZGlmaWVkRml4KSB7CisgICAgICAgIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIHByZXZpb3VzUmVzb3VyY2VEYXRh
ID0gbV9yZXNvdXJjZXNEYXRhLT5kYXRhV2l0aG91dDMwNEZvclVSTChyZXNwb25zZS51cmwoKS5z
dHJpbmcoKSk7CisgICAgICAgIAorICAgICAgICAvLyBUT0RPOiBTaG91bGQgd2UgcmVhbGx5IGNv
cHkgdGhlIGNvbnRlbnQgb3Zlciwgb3Igc2hvdWxkIHdlIGp1c3QgcGFzcyB0aHJvdWdoIGVtcHR5
IGluZm8gb2YgdGhlIGNvcnJlY3QgdHlwZSAoY29udGVudC9kYXRhKT8KKyAgICAgICAgaWYgKHBy
ZXZpb3VzUmVzb3VyY2VEYXRhKSB7CisgICAgICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURh
dGEtPmhhc0NvbnRlbnQoKSkKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJl
c291cmNlQ29udGVudChyZXF1ZXN0SWQsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCks
IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNlNjRFbmNvZGVkKCkpOworICAgICAgICAgICAgZWxz
ZSBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0J1ZmZlcmVkRGF0YSgpKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91c1Jl
c291cmNlRGF0YS0+YnVmZmVyKCk7CisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5t
YXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHByZXZpb3VzQnVmZmVyLT5kYXRhKCksIHBy
ZXZpb3VzQnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAg
ICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCAiIl9zLCBm
YWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0
cmluZyhJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6TWltZVR5cGUsIHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgIiJf
cywgZmFsc2UpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpNaW1lVHlwZSwgIiJfcyk7CisgICAg
ICAgIH0KKyAgICB9CiAKLSAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBl
ID0gbV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVxdWVzdElkKTsKICAgICBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBuZXdUeXBlID0gY2FjaGVkUmVzb3VyY2UgPyBJbnNw
ZWN0b3JQYWdlQWdlbnQ6Omluc3BlY3RvclJlc291cmNlVHlwZSgqY2FjaGVkUmVzb3VyY2UpIDog
dHlwZTsKIAogICAgIC8vIEZJWE1FOiBYSFJSZXNvdXJjZSBpcyByZXR1cm5lZCBmb3IgQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OlJhd1Jlc291cmNlLCBpdCBzaG91bGQgYmUgT3RoZXJSZXNvdXJjZSB1
bmxlc3MgaXQgdHJ1bHkgaXMgYW4gWEhSLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDM3MDlmMTYzYzMyMDY0NjdiOTI0Njg0
YTY1Y2I5Y2JjNTI2ZTI3MGYuLjY1ODQ3NjdhYWU2ZGMxNjQxZjBkYTMxZmYxMzJjOWQ3NjU2NzYw
YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOC0yOCAgUGF0cmljayBBbmdsZSAgPHBh
bmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBwcmV2aWV3
IHJlc3BvbnNlIGZyb20gWEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NTIKKworICAgICAgICBBZGRlZCBuZXcgdGVzdCBjYXNl
cyBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMgdG8gdGVzdCBoYW5kbGluZyBvZiBgMzA0IE5vdCBN
b2RpZmllZGAgcmVzcG9uc2VzIHRvIFhIUiByZXF1ZXN0cy4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQ6IEFkZGVkIGV4cGVjdGVkIG91dHB1
dCBmb3IgbmV3IHRlc3QgY2FzZXMuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWw6IEFkZGVkIG5ldyB0ZXN0IGNhc2VzIGZvciBg
MzA0IE5vdCBNb2RpZmllZGAgcmVzcG9uc2VzIHRvIGBmZXRjaGAuCisgICAgICAgICogaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzOiBBZGRlZC4gUHJvdmlk
ZXMgYENhY2hlLUNvbnRyb2xgIGhlYWRlciBmb3IgYGZldGNoLWNhY2hhYmxlLnR4dGAuCisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUucGhwOiBBZGRlZC4gUHJvdmlkZXMgZXhwZWN0ZWQgYENhY2hlLUNvbnRyb2xgIGhlYWRlciBh
bmQgc3VwcG9ydHMgcHJvdmlkaW5nIGEgYDMwNCBOb3QgTW9kaWZpZWRgIHJlc3BvbnNlLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hh
YmxlLnR4dDogQWRkZWQuIER1cGxpY2F0ZSBvZiBgZGF0YS50eHRgIHdpdGggYENhY2hlLUNvbnRy
b2xgIGhlYWRlciBwcm92aWRlZCBieSBgLmh0YWNjZXNzYC4KKwogMjAyMC0wOC0yOCAgSGVjdG9y
IExvcGV6ICA8aGVjdG9yX2lfbG9wZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgQmlnU3VyKyBd
IGZhc3QvZm9ybXMvaGlkcGktdGV4dGZpZWxkLWJhY2tncm91bmQtYmxlZWRpbmcuaHRtbApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1y
ZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKaW5kZXggMDM3NzEw
OTgxZjBmOGY5NDlhYWQ4ZjFiZmNlMTAwMjlhZTkzYWRkZS4uNWM4OTFjYjhkZmVhMDUyNTc0NTZl
MTRlMTA5MGNkNDM5NDcxMmVlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJv
ZHktZXhwZWN0ZWQudHh0CkBAIC00NCwzICs0NCw3MSBAQCBQQVNTOiBNSU1FVHlwZSBzaG91bGQg
YmUgJ2ltYWdlL3BuZycuCiBQQVNTOiBDb250ZW50IHNob3VsZCBiZSBiYXNlNjRFbmNvZGVkLgog
UEFTUzogSW1hZ2UgY29udGVudCBzaG91bGQgYmUgYSBCbG9iLgogCistLSBSdW5uaW5nIHRlc3Qg
c2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0
Y2guUGhwSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5
cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0dXMgY29kZSBz
aG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNl
NjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgdW5kZWZpbmVkYC4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0
dHAyMDBOb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFT
UzogU2hvdWxkIHNlZSBjYWNoaW5nIGhlYWRlciBgcHVibGljLCBtYXgtYWdlPTMxNTU2OTI2Lgor
UEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2Rl
IHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3Vy
Y2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJh
c2U2NEVuY29kZWQuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJl
c291cmNlLlxuYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VC
b2R5LkZldGNoLlBocEh0dHAyMDBDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRj
aCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0
YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBDb250ZW50IHNob3Vs
ZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IEpTT04gY29udGVudCBzaG91bGQgYmUgYFBs
YWluIHRleHQgcmVzb3VyY2UuXG5gLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5n
ZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDMwNENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hv
dWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4n
LgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291cmNl
IHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6IENv
bnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNo
b3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVzdCBzZXR1
cC4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5G
aWxlSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUu
CitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91
bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJl
c3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRF
bmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgdW5kZWZpbmVkYC4KKworLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRw
MjAwTm90Q2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6
IFNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIgYHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNi4KK1BB
U1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBz
aG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNl
NjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNv
dXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9k
eS5GZXRjaC5GaWxlSHR0cDIwMENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNo
IHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3Rh
dHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBX
SS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6IENvbnRlbnQgc2hvdWxk
IG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxh
aW4gdGV4dCByZXNvdXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdl
dFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDMwNENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hv
dWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4n
LgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291cmNl
IHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6IENv
bnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogSlNPTiBjb250ZW50IHNo
b3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAuCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25z
ZS1ib2R5Lmh0bWwKaW5kZXggZmRmYzU5M2UyZjBlMGNjMzhiNDFkMjk4OTkwM2I4MTNlOTIzNGZk
Zi4uMGMyNWZkMWU2YWUwNTU0YjU3NTMyMGIzOTI5NTNkYTBiZjhjYTkzZCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1i
b2R5Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9m
ZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwKQEAgLTMyLDYgKzMyLDIyIEBAIGZ1bmN0aW9uIGNyZWF0
ZUZldGNoRm9yUE5HKCkgewogICAgIGZldGNoKCIvcmVzb3VyY2VzL3NxdWFyZTEwMC5wbmciKTsK
IH0KIAorZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQaHBIdHRwMjAwKCkgeworICAgIGZldGNoKCJy
ZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIiwgeyBoZWFkZXJzOiB7ICdYLVN0YXR1cy1Db2Rl
LU5lZWRlZCc6ICcyMDAnIH0gfSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yUGhwSHR0
cDMwNCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocCIsIHsgaGVh
ZGVyczogeyAnWC1TdGF0dXMtQ29kZS1OZWVkZWQnOiAnMzA0JyB9IH0pOworfQorCitmdW5jdGlv
biBjcmVhdGVGZXRjaEZvckZpbGVIdHRwMjAwKCkgeworICAgIGZldGNoKCJyZXNvdXJjZXMvZmV0
Y2gtY2FjaGFibGUudHh0Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yRmlsZUh0dHAz
MDQoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS50eHQiLCB7IGhlYWRl
cnM6IHsgJ0lmLU1vZGlmaWVkLVNpbmNlJzogbmV3IERhdGUoKS50b1VUQ1N0cmluZygpIH0gfSk7
Cit9CisKIGZ1bmN0aW9uIHRlc3QoKQogewogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2giKTsKQEAgLTQ4
LDkgKzY0LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIGFkZFRlc3RDYXNlKHtuYW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVzc2lvbiwgY29udGVu
dEhhbmRsZXJ9KSB7CisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9u
LCBzZXR1cCwgZXhwcmVzc2lvbiwgY29udGVudEhhbmRsZXJ9KSB7CiAgICAgICAgIHN1aXRlLmFk
ZFRlc3RDYXNlKHsKLSAgICAgICAgICAgIG5hbWUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAg
bmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLAogICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJl
c3Npb24pOwogICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZl
bnQuUmVzb3VyY2VXYXNBZGRlZCkKQEAgLTE0OSw2ICsxNjUsMTE0IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMzA0Tm90Q2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3Bv
bnNlLCB3aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBzZXR1cChyZXNvbHZlKSB7IElu
c3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKClg
LCByZXNvbHZlKTsgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yUGhwSHR0
cDMwNCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250
ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUVUeXBlIHNob3VsZCBiZSBlbXB0
eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5z
dGF0dXNDb2RlLCAzMDQsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBX
SS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrLCBgcmVzcG9uc2VTb3VyY2Ugc2hvdWxk
IGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmtgKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50
IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoY29udGVudCwgdW5kZWZpbmVkLCAiSlNPTiBjb250ZW50IHNob3VsZCBi
ZSBgdW5kZWZpbmVkYC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDIw
ME5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGJvZHkgZm9yIDIwMCByZXNw
b25zZSBmcm9tIG5ldHdvcmsuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9y
UGhwSHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2Rl
LCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1siQ2FjaGUtQ29udHJvbCJd
LCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIg
YHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNi4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRVR5cGUg
c2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQg
YmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VD
b2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrLCBg
cmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdv
cmtgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5j
b2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQg
cmVzb3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJj
ZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMjAwQ2FjaGVk
IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20g
Y2FjaGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yUGhwSHR0cDIwMCgp
IiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCBy
YXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQgYmUg
J3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9u
c2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgYHJlc3BvbnNl
U291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGVgKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwg
ZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQgcmVzb3Vy
Y2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cXG5g
LiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMzA0Q2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25zZS4iLAor
ICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JQaHBIdHRwMzA0KCkiLAorICAgICAg
ICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVu
Y29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFp
bicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUu
c3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCBgcmVzcG9uc2VTb3VyY2Ugc2hv
dWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZWApOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNv
bnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAsICJK
U09OIGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxcbmAuIik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMzA0Tm90Q2FjaGVkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLCB3
aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBzZXR1cChyZXNvbHZlKSB7IEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKClgLCByZXNv
bHZlKTsgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yRmlsZUh0dHAzMDQo
KSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwg
cmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVz
Q29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVz
b3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgYHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBX
SS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrYCk7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVudCBzaG91
bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIkpTT04gY29udGVudCBzaG91bGQgYmUgYHVu
ZGVmaW5lZGAuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMjAwTm90
Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNl
IGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JGaWxl
SHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBj
b250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1siQ2FjaGUtQ29udHJvbCJdLCAi
cHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIgYHB1
YmxpYywgbWF4LWFnZT0zMTU1NjkyNi4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRVR5cGUgc2hv
dWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUg
MjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2Rl
LnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrLCBgcmVz
cG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmtg
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2Rl
ZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQgcmVz
b3VyY2UuXG5gLCAiSlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5c
XG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDIwMENhY2hlZCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGJvZHkgZm9yIDIwMCByZXNwb25zZSBmcm9tIGNh
Y2hlLiIsCisgICAgICAgIGV4cHJlc3Npb246ICJjcmVhdGVGZXRjaEZvckZpbGVIdHRwMjAwKCki
LAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJh
d0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAn
dGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNv
dXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25z
ZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCBgcmVzcG9uc2VT
b3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZWApOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBm
YWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBgUGxhaW4gdGV4dCByZXNvdXJj
ZS5cbmAsICJKU09OIGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxcbmAu
Iik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMzA0Q2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25zZS4iLAor
ICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JGaWxlSHR0cDMwNCgpIiwKKyAgICAg
ICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRF
bmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VD
b2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxh
aW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2Rl
LnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2Us
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgYHJlc3BvbnNlU291cmNlIHNo
b3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGVgKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJD
b250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLCAi
SlNPTiBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5cXG5gLiIpOworICAg
ICAgICB9CisgICAgfSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0K
IDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4ZDEyNjk0OTM5
YTI5ODY0M2Q1MDE2YTMwNmRlOTExYmFiMDc4OWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3MKQEAg
LTAsMCArMSwzIEBACis8RmlsZXMgZmV0Y2gtY2FjaGFibGUudHh0PgorCUhlYWRlciBzZXQgQ2Fj
aGUtQ29udHJvbCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IgorPC9GaWxlcz4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5w
aHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDQwMzA5Yzg2YjhmOWM5ODViYzM5MDU5YTVjOGRlOGZiZTA2ZjRjYQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocApAQCAtMCwwICsxLDE0IEBACis8P3BocAor
JHN0YXR1cyA9ICRfU0VSVkVSWydIVFRQX1hfU1RBVFVTX0NPREVfTkVFREVEJ107CisKK2lmICgk
c3RhdHVzID09ICczMDQnKSB7CisgICAgaGVhZGVyKCJIVFRQLzEuMSAzMDQgTm90IE1vZGlmaWVk
Iik7CisgICAgZXhpdDsKK30KKworaGVhZGVyKCdDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nKTsK
K2hlYWRlcigiQ2FjaGUtQ29udHJvbDogcHVibGljLCBtYXgtYWdlPTMxNTU2OTI2Iik7IC8vIE9u
ZSB5ZWFyLgorCisKK2VjaG8gIlBsYWluIHRleHQgcmVzb3VyY2UuXG4iOworPz4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2Zl
dGNoLWNhY2hhYmxlLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MTYzZTgyNTM0YjQ5
YjExOGI2ZjA5MjU0Y2U4NGVkMTNlMDI5MDZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUu
dHh0CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRleHQgcmVzb3VyY2UuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407704</attachid>
            <date>2020-09-01 12:58:46 -0700</date>
            <delta_ts>2020-09-02 14:14:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200901155845.patch</filename>
            <type>text/plain</type>
            <size>30710</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MzU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
ZTBhMWE1Y2RjM2U3NzU0MjY1MWJlMDhjOGFhMWJmYjQwM2NmMTZiLi5mOGI1ZGE4ZDA2MWYzM2Y4
YzVhZGY4ZTdlMWVlYThlNGFiY2Y0MDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAyMC0wOS0wMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBwcmV2aWV3IHJlc3BvbnNlIGZyb20g
WEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTU4NTIKKworICAgICAgICBBZGRlZCBhYmlsaXR5IHRvIHJldmVyc2UgYSBgcmVxdWVz
dElkYCBiYWNrIGludG8gYW4gYGlkZW50aWZpZXJgIHNvIHRoYXQgdGhleSBjYW4gYmUgY29tcGFy
ZWQgcmVsYXRpdmUgdG8gZWFjaCBvdGhlci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmlkZW50aWZpZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaDoKKwogMjAyMC0wOC0zMCAgWXVz
dWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEBkZWZhdWx0
UHJvbWlzZVRoZW4gZmFzdCBwYXRoIHNob3VsZCBjaGVjayBzcGVjaWVzIGNvbnN0cnVjdG9yCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggNmY5OTc1ZmRkMTg0NzUzYzkzMWFkZWM2OGE3ZTIxZWY0ZGM3ZmEyNy4uMzZi
OGI2ZDI0NGE0YTgxNmM2ODczNDkxYTliZTQ0OGM1ZjlkMWM0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI3IEBACisyMDIwLTA5LTAxICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yIGZhaWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBY
SFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNTg1MgorCisgICAgICAgIEFkZGVkIHdvcmthcm91bmQgZm9yIDMwNCBYSFIvRmV0Y2gg
cmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5cGUgYW5kIGNvbnRlbnQgYXJlIGNvcnJlY3RseSBz
ZXQsIG90aGVyd2lzZSB0aGUgZnJvbnRlbmQgZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24g
aXQgbmVlZHMgdG8gcHJldmlldyB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgYXJlIGltcGxlbWVudGVkIGFzIExheW91
dFRlc3RzIGZvciB0aGlzIGNoYW5nZS4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVz
b3VyY2VzRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6
cmVzcG9uc2VSZWNlaXZlZCk6IFN0b3JlIGBtaW1lVHlwZWAgZnJvbSByZXNwb25zZQorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGFXaXRob3V0MzA0Rm9yVVJMKToK
KyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZXNvdXJjZURhdGFXaXRo
b3V0MzA0Rm9yVVJMKTogU3VwcG9ydCBmb3IgZmluZGluZyBhIHByZXZpb3VzIG5vbi0zMDQgcmVz
cG9uc2UgZm9yIGEgVVJMCisgICAgICAgICogaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
Lmg6IEFkZGVkIHN0b3JhZ2UgZm9yIG1vcmUgcHJvcGVydGllcyB0aGF0IGFyZSBvZiBpbnRlcmVz
dCBsYXRlciB3aGVuIGhhbmRsaW5nIDMwNCByZXF1ZXN0cyBmb3IgdGhlIHNhbWUgVVJMLgorICAg
ICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6aHR0cFN0
YXR1c1RleHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YTo6c2V0SFRUUFN0YXR1c1RleHQpOgorICAgICAgICAoV2ViQ29yZTo6TmV0
d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6bWltZVR5cGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YTo6c2V0TUlNRVR5
cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KTogRml4ZWQgaXNzdWUgd2hlcmUgaXQgd2FzIHBvc3NpYmxlIHRoYXQgd2Ugd291bGQgaW5m
b3JtIHRoZSBmcm9udGVuZCB0aGF0IGEgcmVxdWVzdCB3YXMgb2YgdHlwZSBgT3RoZXJgIGV2ZW4g
dGhvdWdoIHdlIGhhZCByZXF1ZXN0IGluZm9ybWF0aW9uIGluZGljYXRpbmcgaXQgd2FzIGBYSFJg
IG9yIGBGZXRjaGAuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRp
ZFJlY2VpdmVSZXNwb25zZSk6IEFkZGVkIGNvZGUgcGF0aCB0byB3b3JrIGFyb3VuZCB1bmRlcmx5
aW5nIGlzc3VlIHdoZXJlIFhIUi9GZXRjaCAzMDRzIGFyZSBub3QgY2FjaGVkLCBhbmQgZW5kIHVw
IG5vdCBwYXNzaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byB0aGUgZnJvbnRlbmQgYXMgYSBy
ZXN1bHQuCisKIDIwMjAtMDgtMzEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBNYWtlIEJpZzUgZW5jb2RlciBjb25mb3JtIHRvIHRoZSBzcGVj
aWZpY2F0aW9uIGFuZCBiZWhhdmlvciBvZiBDaHJvbWUgYW5kIEZpcmVmb3gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCmluZGV4IDgzZmNhMTcwMDA0OWQyM2YxZWQ4MTJiYmQ5OTM2ZjFkMTMxOGI1YWUu
LjViYzU3ZDY5ZDdjMzI1NWUzYjU0YzM5ZTcyNTJiMzEzMzIxZGE4NjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTA5LTAxICBQYXRyaWNrIEFuZ2xlICA8
cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZhaWxzIHRvIHByZXZp
ZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIEl0IHdhcyBwb3NzaWJsZSBm
b3IgYSAzMDQgUmVzcG9uc2UgdG8gaGF2ZSBubyBNSU1FIHR5cGUgb3IgYm9keSBmcm9tIHdoaWNo
IHRvIGRldGVybWluZSB3aGljaCBjb250ZW50IHZpZXcgc2hvdWxkIGJlIHNob3duLiBUaGlzIGNo
YW5nZSBhbGxvd3MgZm9yIGZhaWx1cmVzIGR1ZSB0byB0aG9zZSBjaXJjdW1zdGFuY2VzIHRvIHNo
b3cgYW4gZW1wdHkgdGV4dCB2aWV3IGluc3RlYWQgb2YgYW4gZXJyb3IgbWVzc2FnZS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHJlc3BvbnNlQ29udGVudFZpZXcp
OgorCiAyMDIwLTA4LTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBBdWRpdDogc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlL2VkaXQg
aW1wb3J0ZWQgYXVkaXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0lkZW50aWZpZXJzRmFjdG9yeS5jcHAKaW5kZXggOTVjZDg3YjAxYjE1Y2I4NjY3ZTU3YmM1
YmI1MWE3MWYwNmJjMzc2MC4uN2I5ZTY0YmU3MDlkNzVhMTk1Yzc5YjU1ODE1ZWRhMjUxZWY5NGUy
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVy
c0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSWRlbnRp
ZmllcnNGYWN0b3J5LmNwcApAQCAtNTAsNCArNTAsMTIgQEAgU3RyaW5nIElkZW50aWZpZXJzRmFj
dG9yeTo6cmVxdWVzdElkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKICAgICByZXR1cm4gU3Ry
aW5nKCk7CiB9CiAKK3Vuc2lnbmVkIGxvbmcgSWRlbnRpZmllcnNGYWN0b3J5OjppZGVudGlmaWVy
KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoaWRlbnRpZmllci5zdGFydHNX
aXRoKCIwLiJfcykpCisgICAgICAgIHJldHVybiBpZGVudGlmaWVyLnN1YnN0cmluZygyKS50b1VJ
bnQ2NCgpOworCisgICAgcmV0dXJuIDA7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0Zh
Y3RvcnkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSWRlbnRpZmllcnNGYWN0
b3J5LmgKaW5kZXggZWIyNWFlZGVlNGNkOWViZTAwN2UwNmMyNTE1YjM3ZWUwOTViMDZmNC4uNWI3
MWM3NjgyOGI5Mzc5YzhmMjA5Y2EzNzkzYTRhZTRlMzExOTc0MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JZGVudGlmaWVyc0ZhY3RvcnkuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lkZW50aWZpZXJzRmFjdG9yeS5oCkBAIC0zMyw2
ICszMyw3IEBAIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIElkZW50aWZpZXJzRmFjdG9yeSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFN0cmluZyBjcmVhdGVJZGVudGlmaWVyKCk7CiAgICAgc3RhdGlj
IFN0cmluZyByZXF1ZXN0SWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKKyAgICBzdGF0aWMg
dW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNzQzMjUwOWVkZTQ0NmU3NzhjNGRmZDQ0
MzQ5MDFlZTRlMzA0YzI1Mi4uNTM3ZGI1ZjZlNGYxZmVjMDI4MWZjMzEyOThkN2M2NzI5NWFjNDUy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwCkBAIC0xNTIsOCArMTUyLDEwIEBAIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJl
c3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluCiAgICAg
cmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZyYW1lSWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0
VVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAgICByZXNvdXJjZURhdGEtPnNldEhUVFBT
dGF0dXNDb2RlKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIHJlc291cmNlRGF0YS0+
c2V0SFRUUFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7CiAgICAgcmVzb3Vy
Y2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIHJlc291cmNlRGF0YS0+c2V0Rm9yY2VCdWZmZXJE
YXRhKGZvcmNlQnVmZmVyRGF0YSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRNSU1FVHlwZShyZXNw
b25zZS5taW1lVHlwZSgpKTsKIAogICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3Vs
ZFRyZWF0QXNUZXh0KHJlc3BvbnNlLm1pbWVUeXBlKCkpKQogICAgICAgICByZXNvdXJjZURhdGEt
PnNldERlY29kZXIoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNw
b25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50ZXh0RW5jb2RpbmdOYW1lKCkpKTsKQEAgLTI3OCw2
ICsyODAsMTEgQEAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0
d29ya1Jlc291cmNlc0RhdGE6OmRhdGEoY29uc3QgU3RyaW4KICAgICByZXR1cm4gcmVzb3VyY2VE
YXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7CiB9CiAKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhV2l0aG91dDMwNEZv
clVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICByZXR1cm4gcmVzb3VyY2VEYXRhV2l0aG91
dDMwNEZvclVSTCh1cmwpOworfQorCiBWZWN0b3I8U3RyaW5nPiBOZXR3b3JrUmVzb3VyY2VzRGF0
YTo6cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlKQog
ewogICAgIFZlY3RvcjxTdHJpbmc+IHJlc3VsdDsKQEAgLTMxOCw2ICszMjUsMjMgQEAgTmV0d29y
a1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSogTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291
cmNlRGF0YUZvclJlcXVlc3QKICAgICByZXR1cm4gbV9yZXF1ZXN0SWRUb1Jlc291cmNlRGF0YU1h
cC5nZXQocmVxdWVzdElkKTsKIH0KIAorTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0
YSogTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc291cmNlRGF0YVdpdGhvdXQzMDRGb3JVUkwoY29u
c3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKHVybC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgCisgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6OlJlc291cmNlRGF0YSog
bW9zdFJlY2VudFJlc291cmNlRGF0YSA9IG51bGxwdHI7CisgICAgCisgICAgVmVjdG9yPE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqPiBhbGxSZXNvdXJjZXMgPSByZXNvdXJjZXMo
KTsKKyAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IGFsbFJlc291cmNlcykgeworICAgICAg
ICBTdHJpbmcgcmVzb3VyY2VEYXRhVVJMID0gcmVzb3VyY2VEYXRhLT51cmwoKTsKKyAgICAgICAg
aWYgKCFyZXNvdXJjZURhdGFVUkwuaXNOdWxsKCkgJiYgcmVzb3VyY2VEYXRhVVJMID09IHVybCAm
JiByZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkgIT0gMzA0ICYmICghbW9zdFJlY2VudFJl
c291cmNlRGF0YSB8fCAoSWRlbnRpZmllcnNGYWN0b3J5OjppZGVudGlmaWVyKHJlc291cmNlRGF0
YS0+cmVxdWVzdElkKCkpID4gSWRlbnRpZmllcnNGYWN0b3J5OjppZGVudGlmaWVyKG1vc3RSZWNl
bnRSZXNvdXJjZURhdGEtPnJlcXVlc3RJZCgpKSkpKQorICAgICAgICAgICAgbW9zdFJlY2VudFJl
c291cmNlRGF0YSA9IHJlc291cmNlRGF0YTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1vc3RS
ZWNlbnRSZXNvdXJjZURhdGE7Cit9CisKIHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OmVuc3Vy
ZU5vRGF0YUZvclJlcXVlc3RJZChjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKICAgICBhdXRv
IHJlc3VsdCA9IG1fcmVxdWVzdElkVG9SZXNvdXJjZURhdGFNYXAudGFrZShyZXF1ZXN0SWQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRl
eCAyOTUwODJhNjhjOWRlMzM5ZmM2NTM2ZTY0MGQxZGRhYmMyYzlmNmQzLi4zNzExYThjMjk2Nzcz
NDUxZjUzNDhlNzZkOTllOGUwZGQ2MzlmOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNzQsOSArNzQsMTUgQEAgcHVibGljOgog
CiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1
c0NvZGU7IH0KICAgICAgICAgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQgaHR0cFN0YXR1c0Nv
ZGUpIHsgbV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlOyB9CisgICAgICAgIAorICAg
ICAgICBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9odHRw
U3RhdHVzVGV4dDsgfQorICAgICAgICB2b2lkIHNldEhUVFBTdGF0dXNUZXh0KGNvbnN0IFN0cmlu
ZyYgaHR0cFN0YXR1c1RleHQpIHsgbV9odHRwU3RhdHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0OyB9
CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1
cm4gbV90ZXh0RW5jb2RpbmdOYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFt
ZShjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0g
dGV4dEVuY29kaW5nTmFtZTsgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KKyAgICAgICAgdm9pZCBzZXRNSU1F
VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7IG1fbWltZVR5cGUgPSBtaW1lVHlwZTsgfQog
CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVm
UHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3Zl
KGRlY29kZXIpOyB9CkBAIC0xMDcsNiArMTEzLDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcg
bV91cmw7CiAgICAgICAgIFN0cmluZyBtX2NvbnRlbnQ7CiAgICAgICAgIFN0cmluZyBtX3RleHRF
bmNvZGluZ05hbWU7CisgICAgICAgIFN0cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVy
OwpAQCAtMTE0LDYgKzEyMSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1f
Y2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6
UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9
OwogICAgICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKKyAgICAgICAgU3RyaW5nIG1f
aHR0cFN0YXR1c1RleHQ7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRFdmljdGVkIHsgZmFsc2Ug
fTsKICAgICAgICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQgeyBmYWxzZSB9OwogICAgICAgICBib29s
IG1fZm9yY2VCdWZmZXJEYXRhIHsgZmFsc2UgfTsKQEAgLTEzMywxMiArMTQxLDE0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFkZENhY2hlZFJlc291cmNlKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBD
YWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgYWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIoY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYsIGNvbnN0IFN0cmluZyYg
dGV4dEVuY29kaW5nTmFtZSk7CiAgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkKTsKKyAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGFXaXRob3V0MzA0
Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNo
ZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3Ry
aW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPFJlc291
cmNlRGF0YSo+IHJlc291cmNlcygpOwogCiBwcml2YXRlOgogICAgIFJlc291cmNlRGF0YSogcmVz
b3VyY2VEYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKTsKKyAgICBSZXNv
dXJjZURhdGEqIHJlc291cmNlRGF0YVdpdGhvdXQzMDRGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmwp
OwogICAgIHZvaWQgZW5zdXJlTm9EYXRhRm9yUmVxdWVzdElkKGNvbnN0IFN0cmluZyYgcmVxdWVz
dElkKTsKICAgICBib29sIGVuc3VyZUZyZWVTcGFjZShzaXplX3QpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5j
cHAKaW5kZXggOGQwMzgyNTkzZGQ5ZDRkNDgzNzZlYjgwN2U4MGI2NTRmZDExZDFkNC4uMGY5M2E4
M2IyYTQxMmE2M2QzYTVhMTEyYjdiODQ1NTYyYmNiOWFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcApA
QCAtNDM1LDggKzQzNSwxMCBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6d2lsbFNlbmRS
ZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogICAgIFN0cmluZyB0
YXJnZXRJZCA9IHJlcXVlc3QuaW5pdGlhdG9ySWRlbnRpZmllcigpOwogCiAgICAgaWYgKHR5cGUg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNlKSB7Ci0gICAgICAgIGlmIChtX2xv
YWRpbmdYSFJTeW5jaHJvbm91c2x5KQorICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25v
dXNseSB8fCByZXF1ZXN0LnJlcXVlc3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVy
OjpYSFIpCiAgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJj
ZTsKKyAgICAgICAgZWxzZSBpZiAocmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVl
c3Q6OlJlcXVlc3Rlcjo6RmV0Y2gpCisgICAgICAgICAgICB0eXBlID0gSW5zcGVjdG9yUGFnZUFn
ZW50OjpGZXRjaFJlc291cmNlOwogICAgICAgICBlbHNlIGlmIChsb2FkZXIgJiYgZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihyZXF1ZXN0LnVybCgpLCBsb2FkZXItPnVybCgpKSAmJiAh
bG9hZGVyLT5pc0NvbW1pdHRlZCgpKQogICAgICAgICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VB
Z2VudDo6RG9jdW1lbnRSZXNvdXJjZTsKICAgICAgICAgZWxzZSBpZiAobG9hZGVyKSB7CkBAIC01
MzYsNiArNTM4LDMxIEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVz
cG9uc2UodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVuCiAgICAgLy8gUmF3UmVzb3Vy
Y2UgaXMgdXNlZCBmb3IgbG9hZGluZyB3b3JrZXIgc2NyaXB0cywgYW5kIHRob3NlIHNob3VsZCBz
dGF5IGFzIFNjcmlwdFJlc291cmNlIGFuZCBub3QgY2hhbmdlIHRvIFhIUlJlc291cmNlLgogICAg
IGlmICh0eXBlICE9IG5ld1R5cGUgJiYgbmV3VHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OlhI
UlJlc291cmNlICYmIG5ld1R5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhlclJlc291cmNl
KQogICAgICAgICB0eXBlID0gbmV3VHlwZTsKKyAgICAKKyAgICAvLyBGSVhNRTogMzA0IE5vdCBN
b2RpZmllZCByZXNwb25zZXMgZm9yIFhIUi9GZXRjaCBkbyBub3QgaGF2ZSBhbGwgdGhlaXIgaW5m
b3JtYXRpb24gZnJvbSB0aGUgY2FjaGUuCisgICAgaWYgKGlzTm90TW9kaWZpZWQgJiYgKHR5cGUg
PT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSB8fCB0eXBlID09IEluc3BlY3RvclBh
Z2VBZ2VudDo6RmV0Y2hSZXNvdXJjZSkpIHsKKyAgICAgICAgTmV0d29ya1Jlc291cmNlc0RhdGE6
OlJlc291cmNlRGF0YSBjb25zdCogcHJldmlvdXNSZXNvdXJjZURhdGEgPSBtX3Jlc291cmNlc0Rh
dGEtPmRhdGFXaXRob3V0MzA0Rm9yVVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YSkgeworICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCisgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJl
ZERhdGEoKSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHByZXZpb3Vz
QnVmZmVyID0gcHJldmlvdXNSZXNvdXJjZURhdGEtPmJ1ZmZlcigpOworICAgICAgICAgICAgICAg
IG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBwcmV2aW91
c0J1ZmZlci0+ZGF0YSgpLCBwcmV2aW91c0J1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50
KHJlcXVlc3RJZCwgZW1wdHlTdHJpbmcoKSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAg
ICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoIm1pbWVUeXBlIl9zLCBwcmV2aW91c1Jl
c291cmNlRGF0YS0+bWltZVR5cGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291
cmNlUmVzcG9uc2UtPnNldEludGVnZXIoInN0YXR1cyJfcywgcHJldmlvdXNSZXNvdXJjZURhdGEt
Pmh0dHBTdGF0dXNDb2RlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKCJzdGF0dXNUZXh0Il9zLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c1RleHQo
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmlu
Zygic291cmNlIl9zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6
U291cmNlOjpEaXNrQ2FjaGUpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgZW1wdHlTdHJpbmcoKSwg
ZmFsc2UpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKCJtaW1lVHlw
ZSJfcywgZW1wdHlTdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBTdHJpbmcgZnJh
bWVJZCA9IGZyYW1lSWRlbnRpZmllcihsb2FkZXIpOwogICAgIFN0cmluZyBsb2FkZXJJZCA9IGxv
YWRlcklkZW50aWZpZXIobG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcuanMKaW5kZXggYjdmYTJhMTdmN2VmYWE5YjE3OGRlZDljZThjMzIyMDVlNmU5OWIw
MC4uYjYwNDdmZjQ2MDc0NjgxNGRkODljMDViMzJjZmI4ZjE1ZDAzZjE4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVy
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMKQEAgLTE1Nyw2ICsxNTcsMTEgQEAg
V0kuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNsdXN0ZXJDb250
ZW50VmlldyBleHRlbmRzIFdJLkNsdXMKICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlQ29udGVu
dFZpZXcgPSBuZXcgV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcodGhpcy5fcmVzb3VyY2UpOwog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXc7CiAgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLl9yZXNvdXJjZS5taW1lVHlwZSA9PT0gIiIgJiYg
dGhpcy5fcmVzb3VyY2Uuc3RhdHVzQ29kZSA9PT0gMzA0KSB7CisgICAgICAgICAgICB0aGlzLl9y
ZXNwb25zZUNvbnRlbnRWaWV3ID0gbmV3IFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3KHRoaXMu
X3Jlc291cmNlKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUNvbnRlbnRWaWV3
OworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcmVzcG9uc2VDb250ZW50VmlldyA9IG5ldyBX
SS5HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldyh0aGlzLl9yZXNvdXJjZSk7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9yZXNwb25zZUNvbnRlbnRWaWV3OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRkMjVmY2Y3NDhlMmIzZDBl
ZmQ1YzQ2OGY5ZWMyN2Q0OTRkM2FjZDYuLjRlZmU1ZGZlYjNkNjgwNDc4ODRjYmFkOWY4YzgwNTUx
ZDU3OTcwOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOS0wMSAgUGF0cmljayBBbmds
ZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBw
cmV2aWV3IHJlc3BvbnNlIGZyb20gWEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NTIKKworICAgICAgICBBZGRlZCBuZXcgdGVz
dCBjYXNlcyBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMgdG8gdGVzdCBoYW5kbGluZyBvZiBgMzA0
IE5vdCBNb2RpZmllZGAgcmVzcG9uc2VzIHRvIFhIUiByZXF1ZXN0cy4gV2UgdGVzdCBib3RoIFhI
UiBmb3IgYSBQSFAgcGFnZSBhcyB3ZWxsIGFzIGZvciBhIHRleHQgZmlsZSwgYXMgdGhleSBiZWhh
dmVkIGRpZmZlcmVudGx5IChpbmNvcnJlY3RseSkgYmVmb3JlIHRoaXMgcGF0Y2guCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQudHh0OiBBZGRlZCBl
eHBlY3RlZCBvdXRwdXQgZm9yIG5ldyB0ZXN0IGNhc2VzLgorICAgICAgICAqIGh0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1sOiBBZGRlZCBuZXcgdGVz
dCBjYXNlcyBmb3IgYDMwNCBOb3QgTW9kaWZpZWRgIHJlc3BvbnNlcyB0byBgZmV0Y2hgLgorICAg
ICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2Vzczog
QWRkZWQuIFByb3ZpZGVzIGBDYWNoZS1Db250cm9sYCBoZWFkZXIgZm9yIGBmZXRjaC1jYWNoYWJs
ZS50eHRgLgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ZldGNoLWNhY2hhYmxlLnBocDogQWRkZWQuIFByb3ZpZGVzIGV4cGVjdGVkIGBDYWNoZS1Db250
cm9sYCBoZWFkZXIgYW5kIHN1cHBvcnRzIHByb3ZpZGluZyBhIGAzMDQgTm90IE1vZGlmaWVkYCBy
ZXNwb25zZS4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9mZXRjaC1jYWNoYWJsZS50eHQ6IEFkZGVkLiBEdXBsaWNhdGUgb2YgYGRhdGEudHh0YCB3aXRo
IGBDYWNoZS1Db250cm9sYCBoZWFkZXIgcHJvdmlkZWQgYnkgYC5odGFjY2Vzc2AuCisKIDIwMjAt
MDgtMzEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgogCiAgICAgICAgIFtt
YWNPU10gRGF0ZSBpbnB1dHMgc2hvdWxkIGNvbnRhaW4gZWRpdGFibGUgY29tcG9uZW50cwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1y
ZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKaW5kZXggMDM3NzEw
OTgxZjBmOGY5NDlhYWQ4ZjFiZmNlMTAwMjlhZTkzYWRkZS4uNmU1NDU5MWYxNzQ3NjQ1NDBkNGM0
MzYwZTNjMDdjY2FmYmI5NmRiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJv
ZHktZXhwZWN0ZWQudHh0CkBAIC00NCwzICs0NCw3MSBAQCBQQVNTOiBNSU1FVHlwZSBzaG91bGQg
YmUgJ2ltYWdlL3BuZycuCiBQQVNTOiBDb250ZW50IHNob3VsZCBiZSBiYXNlNjRFbmNvZGVkLgog
UEFTUzogSW1hZ2UgY29udGVudCBzaG91bGQgYmUgYSBCbG9iLgogCistLSBSdW5uaW5nIHRlc3Qg
c2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0
Y2guUGhwSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5
cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0dXMgY29kZSBz
aG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNl
NjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSBgdW5kZWZpbmVkYC4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0
dHAyMDBOb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFT
UzogU2hvdWxkIHNlZSBjYWNoaW5nIGhlYWRlciBgcHVibGljLCBtYXgtYWdlPTMxNTU2OTI2YC4K
K1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29k
ZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291
cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBi
YXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCBy
ZXNvdXJjZS5cbmAuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5GZXRjaC5QaHBIdHRwMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0
Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBT
dGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJl
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFTUzogQ29udGVudCBzaG91
bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIGBQ
bGFpbiB0ZXh0IHJlc291cmNlLlxuYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAzMDRDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNo
b3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWlu
Jy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJj
ZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBD
b250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBz
aG91bGQgYmUgYFBsYWluIHRleHQgcmVzb3VyY2UuXG5gLgorCistLSBSdW5uaW5nIHRlc3Qgc2V0
dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gu
RmlsZUh0dHAzMDROb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBl
LgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlIGVtcHR5LgorUEFTUzogU3RhdHVzIGNvZGUgc2hv
dWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5S
ZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0
RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgYHVuZGVmaW5lZGAuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0
cDIwME5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNT
OiBTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyIGBwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjZgLgor
UEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2Rl
IHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3Vy
Y2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJh
c2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJl
c291cmNlLlxuYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VC
b2R5LkZldGNoLkZpbGVIdHRwMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0
Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBT
dGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJl
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFTUzogQ29udGVudCBzaG91
bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIGBQ
bGFpbiB0ZXh0IHJlc291cmNlLlxuYC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMzA0Q2FjaGVkCitQQVNTOiBSZXNvdXJjZSBz
aG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFp
bicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3Vy
Y2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFTUzog
Q29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQg
c2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxuYC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3Bv
bnNlLWJvZHkuaHRtbAppbmRleCBmZGZjNTkzZTJmMGUwY2MzOGI0MWQyOTg5OTAzYjgxM2U5MjM0
ZmRmLi42NDcxYzk2NGNmMjk0NDc2ZTMwMTMwODU5ZTM5ZmY5NDhlZmZkZTdmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNl
LWJvZHkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbApAQCAtMzIsNiArMzIsMjIgQEAgZnVuY3Rpb24gY3Jl
YXRlRmV0Y2hGb3JQTkcoKSB7CiAgICAgZmV0Y2goIi9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIp
OwogfQogCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvclBocEh0dHAyMDAoKSB7CisgICAgZmV0Y2go
InJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAiLCB7IGhlYWRlcnM6IHsgJ1gtU3RhdHVzLUNv
ZGUtTmVlZGVkJzogJzIwMCcgfSB9KTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQaHBI
dHRwMzA0KCkgeworICAgIGZldGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIiwgeyBo
ZWFkZXJzOiB7ICdYLVN0YXR1cy1Db2RlLU5lZWRlZCc6ICczMDQnIH0gfSk7Cit9CisKK2Z1bmN0
aW9uIGNyZWF0ZUZldGNoRm9yRmlsZUh0dHAyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9m
ZXRjaC1jYWNoYWJsZS50eHQiKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JGaWxlSHR0
cDMwNCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCIsIHsgaGVh
ZGVyczogeyAnSWYtTW9kaWZpZWQtU2luY2UnOiBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkgfSB9
KTsKK30KKwogZnVuY3Rpb24gdGVzdCgpCiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaCIpOwpAQCAt
NDgsOSArNjQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAg
ZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBleHByZXNzaW9uLCBjb250
ZW50SGFuZGxlcn0pIHsKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRp
b24sIHNldHVwLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxlcn0pIHsKICAgICAgICAgc3VpdGUu
YWRkVGVzdENhc2UoewotICAgICAgICAgICAgbmFtZSwgZGVzY3JpcHRpb24sCisgICAgICAgICAg
ICBuYW1lLCBkZXNjcmlwdGlvbiwgc2V0dXAsCiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoZXhw
cmVzc2lvbik7CiAgICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChXSS5GcmFtZS5F
dmVudC5SZXNvdXJjZVdhc0FkZGVkKQpAQCAtMTQ5LDYgKzE2NSwxMTQgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFt
ZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAzMDROb3RDYWNoZWQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIlRyeSBhbmQgZ2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVz
cG9uc2UsIHdoaWNoIHdpbGwgbm90IGV4aXN0LiIsCisgICAgICAgIHNldHVwKHJlc29sdmUpIHsg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUo
KWAsIHJlc29sdmUpOyB9LAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JQaHBI
dHRwMzA0KCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNv
bnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICIiLCAiTUlNRVR5cGUgc2hvdWxkIGJlIGVt
cHR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2Rl
LnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2Us
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssIGByZXNwb25zZVNvdXJjZSBzaG91
bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29ya2ApOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRl
bnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChjb250ZW50LCB1bmRlZmluZWQsICJUZXh0IGNvbnRlbnQgc2hvdWxk
IGJlIGB1bmRlZmluZWRgLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2Fz
ZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRw
MjAwTm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJl
c3BvbnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hG
b3JQaHBIdHRwMjAwKCkiLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNv
ZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VIZWFkZXJzWyJDYWNoZS1Db250cm9s
Il0sICJwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYiLCAiU2hvdWxkIHNlZSBjYWNoaW5nIGhlYWRl
ciBgcHVibGljLCBtYXgtYWdlPTMxNTU2OTI2YC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRVR5
cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91
bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3Vy
Y2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3Jr
LCBgcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5l
dHdvcmtgKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0
RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRl
eHQgcmVzb3VyY2UuXG5gLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNv
dXJjZS5cXG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMjAwQ2Fj
aGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZy
b20gY2FjaGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yUGhwSHR0cDIw
MCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50
LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQg
YmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVz
cG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgYHJlc3Bv
bnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGVg
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2Rl
ZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQgcmVz
b3VyY2UuXG5gLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5c
XG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMzA0Q2FjaGVkIiwK
KyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25zZS4i
LAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JQaHBIdHRwMzA0KCkiLAorICAg
ICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2
NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJj
ZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9w
bGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJj
ZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCBgcmVzcG9uc2VTb3VyY2Ug
c2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZWApOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwg
IkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCBgUGxhaW4gdGV4dCByZXNvdXJjZS5cbmAs
ICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxcbmAuIik7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMzA0Tm90Q2FjaGVkIiwKKyAgICAg
ICAgZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNl
LCB3aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBzZXR1cChyZXNvbHZlKSB7IEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKClgLCBy
ZXNvbHZlKTsgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yRmlsZUh0dHAz
MDQoKSIsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVu
dCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHku
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3Rh
dHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0ku
UmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgYHJlc3BvbnNlU291cmNlIHNob3VsZCBi
ZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrYCk7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVudCBz
aG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIlRleHQgY29udGVudCBzaG91bGQgYmUg
YHVuZGVmaW5lZGAuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLkZpbGVIdHRwMjAw
Tm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3Bv
bnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JG
aWxlSHR0cDIwMCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2Rl
LCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1siQ2FjaGUtQ29udHJvbCJd
LCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIg
YHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNmAuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUVUeXBl
IHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxk
IGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNl
Q29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywg
YHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3
b3JrYCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVu
Y29kZWQsIGZhbHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGBQbGFpbiB0ZXh0
IHJlc291cmNlLlxuYCwgIlRleHQgY29udGVudCBzaG91bGQgYmUgYFBsYWluIHRleHQgcmVzb3Vy
Y2UuXFxuYC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAg
ICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guRmlsZUh0dHAyMDBDYWNo
ZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJv
bSBjYWNoZS4iLAorICAgICAgICBleHByZXNzaW9uOiAiY3JlYXRlRmV0Y2hGb3JGaWxlSHR0cDIw
MCgpIiwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50
LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQg
YmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVz
cG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgYHJlc3Bv
bnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGVg
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2Rl
ZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgYFBsYWluIHRleHQgcmVz
b3VyY2UuXG5gLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSBgUGxhaW4gdGV4dCByZXNvdXJjZS5c
XG5gLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDMwNENhY2hlZCIs
CisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2Uu
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogImNyZWF0ZUZldGNoRm9yRmlsZUh0dHAzMDQoKSIsCisg
ICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFz
ZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0
L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNl
Q29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291
cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsIGByZXNwb25zZVNvdXJj
ZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlYCk7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNl
LCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIGBQbGFpbiB0ZXh0IHJlc291cmNlLlxu
YCwgIlRleHQgY29udGVudCBzaG91bGQgYmUgYFBsYWluIHRleHQgcmVzb3VyY2UuXFxuYC4iKTsK
KyAgICAgICAgfQorICAgIH0pOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7
CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGQxMjY5
NDkzOWEyOTg2NDNkNTAxNmEzMDZkZTkxMWJhYjA3ODlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNz
CkBAIC0wLDAgKzEsMyBAQAorPEZpbGVzIGZldGNoLWNhY2hhYmxlLnR4dD4KKwlIZWFkZXIgc2V0
IENhY2hlLUNvbnRyb2wgInB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIKKzwvRmlsZXM+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQ0MDMwOWM4NmI4ZjljOTg1YmMzOTA1OWE1YzhkZThmYmUwNmY0
Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAKQEAgLTAsMCArMSwxNCBAQAorPD9w
aHAKKyRzdGF0dXMgPSAkX1NFUlZFUlsnSFRUUF9YX1NUQVRVU19DT0RFX05FRURFRCddOworCitp
ZiAoJHN0YXR1cyA9PSAnMzA0JykgeworICAgIGhlYWRlcigiSFRUUC8xLjEgMzA0IE5vdCBNb2Rp
ZmllZCIpOworICAgIGV4aXQ7Cit9CisKK2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu
Jyk7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIpOyAv
LyBPbmUgeWVhci4KKworCitlY2hvICJQbGFpbiB0ZXh0IHJlc291cmNlLlxuIjsKKz8+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNl
cy9mZXRjaC1jYWNoYWJsZS50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTE2M2U4MjUz
NGI0OWIxMThiNmYwOTI1NGNlODRlZDEzZTAyOTA2ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hh
YmxlLnR4dApAQCAtMCwwICsxIEBACitQbGFpbiB0ZXh0IHJlc291cmNlLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407809</attachid>
            <date>2020-09-02 14:15:02 -0700</date>
            <delta_ts>2020-09-02 17:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200902171501.patch</filename>
            <type>text/plain</type>
            <size>33536</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JlYTA3Yzk0MTllZTNk
MDcwMjFhNjA1ZTgwNmI3MDdlMDcxNmFjNS4uMzJkYzk5MzA3OWJiM2JhZDRjOTBjNGYxNzI2ZWVl
NDNhMjFiZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA5LTAyICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIEFkZGVk
IHdvcmthcm91bmQgZm9yIDMwNCBYSFIvRmV0Y2ggcmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5
cGUgYW5kIGNvbnRlbnQgYXJlIGNvcnJlY3RseSBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAg
ZnJvbnRlbmQgZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gcHJldmll
dyB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25z
ZS1ib2R5Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YUZvclVS
TCk6IFN1cHBvcnQgZm9yIGZpbmRpbmcgYSBwcmV2aW91cyBub24tMzA0IHJlc3BvbnNlIGZvciBh
IFVSTC4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omh0dHBTdGF0
dXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnNldEhUVFBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldE1JTUVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlc3BvbnNlVGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldFJlc3BvbnNlVGltZXN0YW1wKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6IEZpeGVkIGlz
c3VlIHdoZXJlIGl0IHdhcyBwb3NzaWJsZSB0aGF0IHdlIHdvdWxkIGluZm9ybSB0aGUKKyAgICAg
ICAgICAgIGZyb250ZW5kIHRoYXQgYSByZXF1ZXN0IHdhcyBvZiB0eXBlIGBPdGhlcmAgZXZlbiB0
aG91Z2ggd2UgaGFkIHJlcXVlc3QgaW5mb3JtYXRpb24gaW5kaWNhdGluZyBpdCB3YXMgYFhIUmAK
KyAgICAgICAgICAgIG9yIGBGZXRjaGAuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEFkZGVkIGNvZGUgcGF0aCB0byB3b3JrIGFy
b3VuZCB1bmRlcmx5aW5nIGlzc3VlIHdoZXJlCisgICAgICAgICAgICBYSFIvRmV0Y2ggMzA0cyBh
cmUgbm90IGNhY2hlZCwgYW5kIGVuZCB1cCBub3QgcGFzc2luZyBuZWNlc3NhcnkgaW5mb3JtYXRp
b24gdG8gdGhlIGZyb250ZW5kIGFzIGEgcmVzdWx0LgorCiAyMDIwLTA5LTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxpZ24gVVRGLTE2
IGRlY29kZXIgd2l0aCBDaHJvbWUsIEZpcmVmb3gsIGFuZCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwppbmRleCBjMjBiOTk4YjRkMDdjMzU3NTY5NDk5ZmNjYTFiNDI5NzY3ZjAz
NWJlLi45MzI0NGZkNzNjN2Y5MDM2MWNiZGZmZTAyMmRiYjFkYjk3ZjQwYmVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAyMC0wOS0wMiAgUGF0cmljayBBbmds
ZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBw
cmV2aWV3IHJlc3BvbnNlIGZyb20gWEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NTIKKworICAgICAgICBSZXNwb25zZXMgd2l0
aCBubyBjb250ZW50IGFuZCBhIHN0YXR1cyBjb2RlIG9mIDMwNCBub3cgc2hvdyB0aGUgYFJlc291
cmNlIGhhcyBubyBjb250ZW50YCBtZXNzYWdlIGluc3RlYWQgb2YgYQorICAgICAgICAgICAgZ2Vu
ZXJpYyBlcnJvci4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9jb250ZW50QXZhaWxhYmxlKToK
KwogMjAyMC0wOS0wMSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OKHIyNDMyNjQpOiBXZWIgSW5zcGVjdG9yOiBTdHlsZSBwYW5lIGRv
ZXNuJ3QgdXBkYXRlIGFmdGVyIHRvZ2dsaW5nIENTUyBjbGFzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKaW5kZXggNzQzMjUwOWVkZTQ0
NmU3NzhjNGRmZDQ0MzQ5MDFlZTRlMzA0YzI1Mi4uZWQ3NmVlYmM1NDI3ODMyYjJlMzFlNTNiMGUx
OGY2MWFlOGY4OWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdv
cmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xNTIsOCArMTUyLDExIEBAIHZvaWQgTmV0d29ya1Jlc291
cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIGNvbnN0
IFN0cmluCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZyYW1lSWQpOwogICAgIHJlc291
cmNlRGF0YS0+c2V0VVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKICAgICByZXNvdXJjZURh
dGEtPnNldEhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkpOworICAgIHJl
c291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c1RleHQocmVzcG9uc2UuaHR0cFN0YXR1c1RleHQoKSk7
CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAgIHJlc291cmNlRGF0YS0+c2V0
Rm9yY2VCdWZmZXJEYXRhKGZvcmNlQnVmZmVyRGF0YSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRN
SU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICByZXNvdXJjZURhdGEtPnNldFJlc3Bv
bnNlVGltZXN0YW1wKFdhbGxUaW1lOjpub3coKSk7CiAKICAgICBpZiAoSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNwb25zZS5taW1lVHlwZSgpKSkKICAgICAgICAg
cmVzb3VyY2VEYXRhLT5zZXREZWNvZGVyKEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6Y3JlYXRlVGV4
dERlY29kZXIocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgp
KSk7CkBAIC0yNzgsNiArMjgxLDIyIEBAIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURh
dGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNvbnN0IFN0cmluCiAgICAgcmV0
dXJuIHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQpOwogfQogCitOZXR3b3JrUmVz
b3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0
YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAodXJsLmlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVz
b3VyY2VEYXRhKiBtb3N0UmVjZW50UmVzb3VyY2VEYXRhID0gbnVsbHB0cjsKKyAgICAKKyAgICBm
b3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcygpKSB7CisgICAgICAgIC8vIHJlc3Bv
bnNlVGltZXN0YW1wIGlzIGNoZWNrZWQgc28gdGhhdCB3ZSBvbmx5IGdyYWIgdGhlIG1vc3QgcmVj
ZW50IHJlc3BvbnNlIGZvciB0aGUgVVJMLCBpbnN0ZWFkIG9mIHBvdGVudGlvbmFsbHkgZ2V0dGlu
ZyBhIG1vcmUgc3RhbGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChyZXNvdXJjZURhdGEtPnVybCgp
ID09IHVybCAmJiByZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkgIT0gMzA0ICYmICghbW9z
dFJlY2VudFJlc291cmNlRGF0YSB8fCAocmVzb3VyY2VEYXRhLT5yZXNwb25zZVRpbWVzdGFtcCgp
ID4gbW9zdFJlY2VudFJlc291cmNlRGF0YS0+cmVzcG9uc2VUaW1lc3RhbXAoKSkpKQorICAgICAg
ICAgICAgbW9zdFJlY2VudFJlc291cmNlRGF0YSA9IHJlc291cmNlRGF0YTsKKyAgICB9CisgICAg
CisgICAgcmV0dXJuIG1vc3RSZWNlbnRSZXNvdXJjZURhdGE7Cit9CisKIFZlY3RvcjxTdHJpbmc+
IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVzdWx0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAppbmRleCAyOTUw
ODJhNjhjOWRlMzM5ZmM2NTM2ZTY0MGQxZGRhYmMyYzlmNmQzLi4wOTc5MzBlZTA4OGY3NTE3OTc3
ZjNlNzczYTJjNWFlNmMyZDhiNjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
TmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtNzQsOSArNzQsMTUgQEAgcHVibGljOgogCiAgICAg
ICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1c0NvZGU7
IH0KICAgICAgICAgdm9pZCBzZXRIVFRQU3RhdHVzQ29kZShpbnQgaHR0cFN0YXR1c0NvZGUpIHsg
bV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlOyB9CisgICAgICAgIAorICAgICAgICBj
b25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9odHRwU3RhdHVz
VGV4dDsgfQorICAgICAgICB2b2lkIHNldEhUVFBTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgaHR0
cFN0YXR1c1RleHQpIHsgbV9odHRwU3RhdHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0OyB9CiAKICAg
ICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90
ZXh0RW5jb2RpbmdOYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25z
dCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVu
Y29kaW5nTmFtZTsgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7IH0KKyAgICAgICAgdm9pZCBzZXRNSU1FVHlwZShj
b25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7IG1fbWltZVR5cGUgPSBtaW1lVHlwZTsgfQogCiAgICAg
ICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4g
bV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29k
ZXIpOyB9CkBAIC05Miw2ICs5OCw5IEBAIHB1YmxpYzoKIAogICAgICAgICBib29sIGZvcmNlQnVm
ZmVyRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VCdWZmZXJEYXRhOyB9CiAgICAgICAgIHZv
aWQgc2V0Rm9yY2VCdWZmZXJEYXRhKGJvb2wgZm9yY2UpIHsgbV9mb3JjZUJ1ZmZlckRhdGEgPSBm
b3JjZTsgfQorICAgICAgICAKKyAgICAgICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGltZXN0YW1wOyB9CisgICAgICAgIHZvaWQgc2V0UmVz
cG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGlt
ZTsgfQogCiAgICAgICAgIGJvb2wgaGFzQnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9k
YXRhQnVmZmVyOyB9CiAKQEAgLTEwNyw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmlu
ZyBtX3VybDsKICAgICAgICAgU3RyaW5nIG1fY29udGVudDsKICAgICAgICAgU3RyaW5nIG1fdGV4
dEVuY29kaW5nTmFtZTsKKyAgICAgICAgU3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0
cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZm
ZXI7CkBAIC0xMTQsOSArMTI0LDExIEBAIHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2Uq
IG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZSB9OwogICAgICAgICBpbnQgbV9odHRwU3RhdHVzQ29kZSB7IDAgfTsKKyAgICAgICAgU3RyaW5n
IG1faHR0cFN0YXR1c1RleHQ7CiAgICAgICAgIGJvb2wgbV9pc0NvbnRlbnRFdmljdGVkIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBtX2Jhc2U2NEVuY29kZWQgeyBmYWxzZSB9OwogICAgICAgICBi
b29sIG1fZm9yY2VCdWZmZXJEYXRhIHsgZmFsc2UgfTsKKyAgICAgICAgV2FsbFRpbWUgbV9yZXNw
b25zZVRpbWVzdGFtcDsKICAgICB9OwogCiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGEoKTsKQEAg
LTEzMyw2ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25z
dCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291
cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0
YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7CisgICAgUmVzb3VyY2VEYXRh
IGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5n
PiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIo
T3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CiAgICAg
VmVjdG9yPFJlc291cmNlRGF0YSo+IHJlc291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4
IGUwMzNhYzE3OTk1ZmI1YTIxZTM0NmM3ZTViNzJkYjVmN2E4Yjg5NGQuLjNjNGMwYjY5MGY3NmU5
Y2FkMGY4ZjcwOWQ3OTEzOGY1MmU3NGExODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzNSw4
ICs0MzUsMTAgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1
bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG8KICAgICBTdHJpbmcgdGFyZ2V0SWQg
PSByZXF1ZXN0LmluaXRpYXRvcklkZW50aWZpZXIoKTsKIAogICAgIGlmICh0eXBlID09IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkgewotICAgICAgICBpZiAobV9sb2FkaW5nWEhS
U3luY2hyb25vdXNseSkKKyAgICAgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgfHwg
cmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6WEhSKQog
ICAgICAgICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7CisgICAg
ICAgIGVsc2UgaWYgKHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1
ZXN0ZXI6OkZldGNoKQorICAgICAgICAgICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0
Y2hSZXNvdXJjZTsKICAgICAgICAgZWxzZSBpZiAobG9hZGVyICYmIGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIocmVxdWVzdC51cmwoKSwgbG9hZGVyLT51cmwoKSkgJiYgIWxvYWRlci0+
aXNDb21taXR0ZWQoKSkKICAgICAgICAgICAgIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRv
Y3VtZW50UmVzb3VyY2U7CiAgICAgICAgIGVsc2UgaWYgKGxvYWRlcikgewpAQCAtNTM2LDYgKzUz
OCwzMSBAQCB2b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVu
c2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbgogICAgIC8vIFJhd1Jlc291cmNlIGlzIHVz
ZWQgZm9yIGxvYWRpbmcgd29ya2VyIHNjcmlwdHMsIGFuZCB0aG9zZSBzaG91bGQgc3RheSBhcyBT
Y3JpcHRSZXNvdXJjZSBhbmQgbm90IGNoYW5nZSB0byBYSFJSZXNvdXJjZS4KICAgICBpZiAodHlw
ZSAhPSBuZXdUeXBlICYmIG5ld1R5cGUgIT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJj
ZSAmJiBuZXdUeXBlICE9IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAg
ICAgdHlwZSA9IG5ld1R5cGU7CisgICAgCisgICAgLy8gRklYTUU6IDMwNCBOb3QgTW9kaWZpZWQg
cmVzcG9uc2VzIGZvciBYSFIvRmV0Y2ggZG8gbm90IGhhdmUgYWxsIHRoZWlyIGluZm9ybWF0aW9u
IGZyb20gdGhlIGNhY2hlLgorICAgIGlmIChpc05vdE1vZGlmaWVkICYmICh0eXBlID09IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UgfHwgdHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6
OkZldGNoUmVzb3VyY2UpICYmICghY2FjaGVkUmVzb3VyY2UgfHwgIWNhY2hlZFJlc291cmNlLT5l
bmNvZGVkU2l6ZSgpKSkgeworICAgICAgICBhdXRvIHByZXZpb3VzUmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5kYXRhRm9yVVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YSkgeworICAgICAgICAgICAgaWYg
KHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCisgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBwcmV2aW91c1Jlc291
cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFzZTY0RW5jb2RlZCgp
KTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNCdWZmZXJl
ZERhdGEoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZmZXIgPSBwcmV2aW91
c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7CisgICAgICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHByZXZpb3VzQnVmZmVyLT5kYXRhKCks
IHByZXZpb3VzQnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBlbXB0
eVN0cmluZygpLCBmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZygibWltZVR5cGUiX3MsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1l
VHlwZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0
SW50ZWdlcigic3RhdHVzIl9zLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUo
KSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoInN0YXR1c1RleHQi
X3MsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzVGV4dCgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKCJzb3VyY2UiX3MsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVl
KEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNo
ZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyB3aWxsIG5vdCBiZSBz
ZXQgb3RoZXJ3aXNlLCBhcyB0aGUgY2FjaGVkUmVzb3VyY2UncyBib2R5IHdhcyBub3QgaW5pdGlh
bGl6ZWQuCisgICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChy
ZXF1ZXN0SWQsIGVtcHR5U3RyaW5nKCksIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KIAogICAg
IFN0cmluZyBmcmFtZUlkID0gZnJhbWVJZGVudGlmaWVyKGxvYWRlcik7CiAgICAgU3RyaW5nIGxv
YWRlcklkID0gbG9hZGVySWRlbnRpZmllcihsb2FkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVu
dFZpZXcuanMKaW5kZXggNTkzY2EzMmY3OTg1ODk4YWQ2NjEzMjkyMmY2MzYzYzhkZDgyYjJlNy4u
NGQ1ZDE4ZDI2MmU0YmY4MjEwYmJhNzVhYWM5OGQ5ZDVmY2I0YWUzOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0yMjQsNiArMjI0LDExIEBAIFdJLlJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICAgICAgLy8gY29udGVudCBhcnJpdmVzLiBTb3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhh
bmRsZSB0aGF0LgogICAgICAgICBpZiAodGhpcy5faGFzQ29udGVudCgpKQogICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGF0
dXNDb2RlID09IDMwNCAmJiAhcGFyYW1ldGVycy5zb3VyY2VDb2RlLmNvbnRlbnQpIHsKKyAgICAg
ICAgICAgIHRoaXMuc2hvd0dlbmVyaWNOb0NvbnRlbnRNZXNzYWdlKCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KIAogICAgICAgICAvLyBDb250ZW50IGlzIHJlYWR5IHRvIHNob3cs
IGNhbGwgdGhlIHB1YmxpYyBtZXRob2Qgbm93LgogICAgICAgICBjb25zb2xlLmFzc2VydChwYXJh
bWV0ZXJzLnNvdXJjZUNvZGUgPT09IHRoaXMuX3Jlc291cmNlKTsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAzMTJhZGVlYmEx
MDg1MmQ3YjRkNmE0NGE5NDg0ZmEzZjkzNGUzMzI2Li41MjMzYmNjYTdlYmIyZDYyN2FjNWE1NWFj
YmU4NmVjNDExM2VjNTFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjAtMDktMDIgIFBhdHJp
Y2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgZmFp
bHMgdG8gcHJldmlldyByZXNwb25zZSBmcm9tIFhIUiByZXF1ZXN0cworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1ODUyCisKKyAgICAgICAgQWRkZWQg
bmV3IHRlc3QgY2FzZXMgYW5kIGFzc29jaWF0ZWQgcmVzb3VyY2VzIHRvIHRlc3QgaGFuZGxpbmcg
b2YgYDMwNCBOb3QgTW9kaWZpZWRgIHJlc3BvbnNlcyB0byBYSFIgcmVxdWVzdHMuCisgICAgICAg
IFdlIHRlc3QgYm90aCBYSFIgZm9yIGEgUEhQIHBhZ2UgYXMgd2VsbCBhcyBmb3IgYSB0ZXh0IGZp
bGUsIGFzIHRoZXkgYmVoYXZlZCBkaWZmZXJlbnRseSAoaW5jb3JyZWN0bHkpIGJlZm9yZQorICAg
ICAgICB0aGlzIHBhdGNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1i
b2R5LWV4cGVjdGVkLnR4dDogQWRkZWQgZXhwZWN0ZWQgb3V0cHV0IGZvciBuZXcgdGVzdCBjYXNl
cy4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNl
LWJvZHkuaHRtbDogQWRkZWQgbmV3IHRlc3QgY2FzZXMgZm9yIGAzMDQgTm90IE1vZGlmaWVkYCBy
ZXNwb25zZXMKKyAgICAgICAgICAgICAgICB0byBgZmV0Y2hgLgorICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzczogQWRkZWQuIFByb3ZpZGVz
IGBDYWNoZS1Db250cm9sYCBoZWFkZXIgZm9yCisgICAgICAgICAgICAgICAgYGZldGNoLWNhY2hh
YmxlLnR4dGAuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvZmV0Y2gtY2FjaGFibGUucGhwOiBBZGRlZC4gUHJvdmlkZXMgZXhwZWN0ZWQgYENhY2hlLUNv
bnRyb2xgIGhlYWRlciBhbmQKKyAgICAgICAgICAgICAgICBzdXBwb3J0cyBwcm92aWRpbmcgYSBg
MzA0IE5vdCBNb2RpZmllZGAgcmVzcG9uc2UuCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0OiBBZGRlZC4gRHVwbGljYXRl
IG9mIGBkYXRhLnR4dGAgd2l0aCBgQ2FjaGUtQ29udHJvbGAKKyAgICAgICAgICAgICAgICBoZWFk
ZXIgcHJvdmlkZWQgYnkgYC5odGFjY2Vzc2AuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4gVGVzdCBkb2VzIG5vdCByZWNlaXZlCisgICAgICAgICAgICAgICAgY2FjaGUg
aGl0IGluZm9ybWF0aW9uIGZvciBXSzEuCisKIDIwMjAtMDktMDIgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBbGlnbiBVVEYtMTYgZGVjb2Rl
ciB3aXRoIENocm9tZSwgRmlyZWZveCwgYW5kIHNwZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9k
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ZldGNoLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQudHh0CmluZGV4IDAzNzcxMDk4MWYwZjhmOTQ5
YWFkOGYxYmZjZTEwMDI5YWU5M2FkZGUuLmRjNTljYmJmNzRmYjYwM2JjYWU3YjBkZjU3ODE3NzBi
ZjJlYjM3MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LWV4cGVjdGVk
LnR4dApAQCAtNDQsMyArNDQsNzEgQEAgUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9w
bmcnLgogUEFTUzogQ29udGVudCBzaG91bGQgYmUgYmFzZTY0RW5jb2RlZC4KIFBBU1M6IEltYWdl
IGNvbnRlbnQgc2hvdWxkIGJlIGEgQmxvYi4KIAorLS0gUnVubmluZyB0ZXN0IHNldHVwLgorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAz
MDROb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzog
TUlNRVR5cGUgc2hvdWxkIGJlIGVtcHR5LgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMw
NC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNv
dXJjZS5OZXR3b3JrCitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4K
K1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDIwME5vdENhY2hl
ZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBTaG91bGQgc2Vl
IGNhY2hpbmcgaGVhZGVyLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4K
K1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBz
aG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVu
dCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxk
IGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJj
ZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9w
bGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VT
b3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFT
UzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRl
bnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMzA0Q2FjaGVkCitQQVNT
OiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBi
ZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzog
cmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tD
YWNoZQorUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5p
bmcgdGVzdCBzZXR1cC4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5GZXRjaC5GaWxlSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJl
IEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0
dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJ
LlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5v
dCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSB1bmRlZmlu
ZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aC5GaWxlSHR0cDIwME5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5
cGUuCitQQVNTOiBTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLgorUEFTUzogTUlNRVR5cGUgc2hv
dWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQ
QVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2Uu
TmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNT
OiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDIw
MENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1F
VHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJl
IDIwMC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25z
ZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNv
ZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4n
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gu
RmlsZUh0dHAzMDRDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgor
UEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2Rl
IHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3Vy
Y2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUg
YmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQg
cmVzb3VyY2UuJy4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbAppbmRleCBmZGZj
NTkzZTJmMGUwY2MzOGI0MWQyOTg5OTAzYjgxM2U5MjM0ZmRmLi42ZDUxMDVkMjNiY2Y3NzExMmI3
Nzg0YjhjYzhmOTQ1MDk3YWE4OTZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRt
bApAQCAtMzIsNiArMzIsMjIgQEAgZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQTkcoKSB7CiAgICAg
ZmV0Y2goIi9yZXNvdXJjZXMvc3F1YXJlMTAwLnBuZyIpOwogfQogCitmdW5jdGlvbiBjcmVhdGVG
ZXRjaEZvclBIUEh0dHAyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJs
ZS5waHAiLCB7IGhlYWRlcnM6IHsgJ1gtU3RhdHVzLUNvZGUtTmVlZGVkJzogJzIwMCcgfSB9KTsK
K30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQSFBIdHRwMzA0KCkgeworICAgIGZldGNoKCJy
ZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIiwgeyBoZWFkZXJzOiB7ICdYLVN0YXR1cy1Db2Rl
LU5lZWRlZCc6ICczMDQnIH0gfSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yRmlsZUh0
dHAyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS50eHQiKTsKK30K
KworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JGaWxlSHR0cDMwNCgpIHsKKyAgICBmZXRjaCgicmVz
b3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCIsIHsgaGVhZGVyczogeyAnSWYtTW9kaWZpZWQtU2lu
Y2UnOiBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkgfSB9KTsKK30KKwogZnVuY3Rpb24gdGVzdCgp
CiB7CiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaCIpOwpAQCAtNDgsOSArNjQsMTEgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGFkZFRlc3RDYXNlKHtu
YW1lLCBkZXNjcmlwdGlvbiwgZXhwcmVzc2lvbiwgY29udGVudEhhbmRsZXJ9KSB7CisgICAgZnVu
Y3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgZXhwcmVzc2lvbiwg
Y29udGVudEhhbmRsZXJ9KSB7CiAgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAg
ICAgIG5hbWUsIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uLAorICAgICAgICAgICAgc2V0dXAsCiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
ZXhwcmVzc2lvbik7CiAgICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChXSS5GcmFt
ZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkKQpAQCAtMTQ5LDYgKzE2NywxMTggQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIH0KICAgICB9KTsKIAorICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAg
bmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAzMDROb3RDYWNoZWQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIlRyeSBhbmQgZ2V0IGNhY2hlZCBib2R5IGZvciAzMDQg
cmVzcG9uc2UsIHdoaWNoIHdpbGwgbm90IGV4aXN0LiIsCisgICAgICAgIHNldHVwKHJlc29sdmUp
IHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5j
bGVhck1lbW9yeUNhY2hlKClgLCByZXNvbHZlKTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwcmVz
c2lvbjogYGNyZWF0ZUZldGNoRm9yUEhQSHR0cDMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRs
ZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAi
IiwgIk1JTUVUeXBlIHNob3VsZCBiZSBlbXB0eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAzMDQsICJTdGF0dXMgY29kZSBz
aG91bGQgYmUgMzA0LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3
b3JrLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNl
Lk5ldHdvcmsiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFz
ZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgdW5kZWZp
bmVkLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSB1bmRlZmluZWQuIik7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVz
cG9uc2VCb2R5LkZldGNoLlBocEh0dHAyMDBOb3RDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJvbSBuZXR3b3JrLiIsCisgICAgICAgIGV4
cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvclBIUEh0dHAyMDAoKWAsCisgICAgICAgIGNvbnRlbnRI
YW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25z
ZUhlYWRlcnNbIkNhY2hlLUNvbnRyb2wiXSwgInB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIsICJT
aG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBz
aG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBi
ZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJy
ZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29y
ayIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNv
ZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCBy
ZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4n
LiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5h
bWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMjAwQ2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gY2FjaGUu
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yUEhQSHR0cDIwMCgpYCwKKyAg
ICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNl
NjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3Vy
Y2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQv
cGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VD
b2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3Vy
Y2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgInJlc3BvbnNlU291cmNl
IHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUiKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2Us
ICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3VyY2UuIiwg
IlRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29y
ay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDMwNENhY2hlZCIsCisgICAgICAgIGRlc2Ny
aXB0aW9uOiAiR2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2UuIiwKKyAgICAgICAgZXhw
cmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yUEhQSHR0cDMwNCgpYCwKKyAgICAgICAgY29udGVudEhh
bmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBl
LCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUs
IDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgInJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5S
ZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUiKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3Vs
ZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3VyY2UuIiwgIlRleHQgY29udGVudCBz
aG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJv
ZHkuRmV0Y2guRmlsZUh0dHAzMDROb3RDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIlRy
eSBhbmQgZ2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2UsIHdoaWNoIHdpbGwgbm90IGV4
aXN0LiIsCisgICAgICAgIHNldHVwKHJlc29sdmUpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1lbW9yeUNhY2hlKClgLCByZXNvbHZl
KTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yRmlsZUh0
dHAzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29u
dGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FVHlwZSBzaG91bGQgYmUgZW1w
dHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUu
c3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNlU291cmNlIHNob3Vs
ZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVu
dCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIlRleHQgY29udGVudCBzaG91bGQg
YmUgdW5kZWZpbmVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDIw
ME5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGJvZHkgZm9yIDIwMCByZXNw
b25zZSBmcm9tIG5ldHdvcmsuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9y
RmlsZUh0dHAyMDAoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29k
ZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZUhlYWRlcnNbIkNhY2hlLUNvbnRyb2wi
XSwgInB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIsICJTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVy
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1p
bWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FVHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1
c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJl
c291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hv
dWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50
IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9CisgICAgfSk7
CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5GZXRjaC5GaWxlSHR0cDIwMENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0
IGJvZHkgZm9yIDIwMCByZXNwb25zZSBmcm9tIGNhY2hlLiIsCisgICAgICAgIGV4cHJlc3Npb246
IGBjcmVhdGVGZXRjaEZvckZpbGVIdHRwMjAwKClgLAorICAgICAgICBjb250ZW50SGFuZGxlcih7
ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0
L3BsYWluIiwgIk1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAi
U3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9u
c2VTb3VyY2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBi
ZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBi
ZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aC5GaWxlSHR0cDMwNENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGNhY2hlZCBi
b2R5IGZvciAzMDQgcmVzcG9uc2UuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNo
Rm9yRmlsZUh0dHAzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNl
Q29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlN
RVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBz
aG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNr
Q2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3Vy
Y2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJh
d0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29k
ZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQ
bGFpbiB0ZXh0IHJlc291cmNlLiIsICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0
IHJlc291cmNlLicuIik7CisgICAgICAgIH0KKyAgICB9KTsKKwogICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3MgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3MKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYThkMTI2OTQ5MzlhMjk4NjQzZDUwMTZhMzA2ZGU5MTFiYWIwNzg5YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzLy5odGFjY2VzcwpAQCAtMCwwICsxLDMgQEAKKzxGaWxlcyBmZXRjaC1jYWNoYWJsZS50
eHQ+CisJSGVhZGVyIHNldCBDYWNoZS1Db250cm9sICJwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYi
Cis8L0ZpbGVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hh
YmxlLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3Vy
Y2VzL2ZldGNoLWNhY2hhYmxlLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmE2NGQ0YWUyMTZiZGE1MzgyMTli
Njg2ZjgzNjRhZGMwM2IyM2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwCkBAIC0w
LDAgKzEsMTQgQEAKKzw/cGhwCiskc3RhdHVzID0gJF9TRVJWRVJbJ0hUVFBfWF9TVEFUVVNfQ09E
RV9ORUVERUQnXTsKKworaWYgKCRzdGF0dXMgPT0gJzMwNCcpIHsKKyAgICBoZWFkZXIoIkhUVFAv
MS4xIDMwNCBOb3QgTW9kaWZpZWQiKTsKKyAgICBleGl0OworfQorCitoZWFkZXIoJ0NvbnRlbnQt
VHlwZTogdGV4dC9wbGFpbicpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1h
Z2U9MzE1NTY5MjYiKTsgLy8gT25lIHllYXIuCisKKworZWNobyAiUGxhaW4gdGV4dCByZXNvdXJj
ZS4iOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMmM1ZmExMWU0ZGJiNmRiODc0YjEwMWM5MThhZDE1MmYwNTBjNTk4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvZmV0Y2gtY2FjaGFibGUudHh0CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRleHQgcmVzb3VyY2Uu
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMS9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNl
LWJvZHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ5YjhkZGQ4ZmQ0ODQxMzMyNzU1MTUxYmFkNDYxNDVhYTI1NzVmMmQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMjAgQEAKK1Rlc3RzIGZvciBnZXR0aW5nIHRoZSBjb250ZW50IG9mIEZldGNoIHJlcXVlc3Rz
LgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0
Y2gKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5U
ZXh0CitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBl
IHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFz
ZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgbWF0Y2ggZGF0YS50eHQuCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5IVE1M
CitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNo
b3VsZCBiZSAndGV4dC9odG1sJy4KK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRF
bmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBtYXRjaCBkYXRhLmh0bWwuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5KU09OCitQ
QVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3Vs
ZCBiZSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJy4KK1BBU1M6IENvbnRlbnQgc2hvdWxkIGJl
IGJhc2U2NEVuY29kZWQuCitQQVNTOiBKU09OIGNvbnRlbnQgc2hvdWxkIG1hdGNoIGRhdGEuanNv
bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNo
LkpTT04yCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVU
eXBlIHNob3VsZCBiZSAnYXBwbGljYXRpb24vanNvbicuCitQQVNTOiBDb250ZW50IHNob3VsZCBu
b3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IEpTT04gY29udGVudCBzaG91bGQgbWF0Y2ggc3Bl
Y2lmaWVkIGNvbnRlbnQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3Bv
bnNlQm9keS5GZXRjaC5KU09OMworUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUu
CitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgJ2FwcGxpY2F0aW9uL3ZuZC5hcGkranNvbicuCitQ
QVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IEpTT04gY29u
dGVudCBzaG91bGQgbWF0Y2ggc3BlY2lmaWVkIGNvbnRlbnQuCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5TVkcKK1BBU1M6IFJlc291cmNlIHNo
b3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9zdmcr
eG1sJy4KK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzog
U1ZHIGNvbnRlbnQgc2hvdWxkIGJlIHRleHQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QTkcKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBG
ZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICdpbWFnZS9wbmcnLgorUEFTUzog
Q29udGVudCBzaG91bGQgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IEltYWdlIGNvbnRlbnQgc2hv
dWxkIGJlIGEgQmxvYi4KKworLS0gUnVubmluZyB0ZXN0IHNldHVwLgorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoLlBocEh0dHAzMDROb3RDYWNoZWQK
K1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRVR5cGUgc2hv
dWxkIGJlIGVtcHR5LgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJl
c3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3Jr
CitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQg
Y29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2guUGhwSHR0cDIwME5vdENhY2hlZAorUEFTUzogUmVz
b3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBTaG91bGQgc2VlIGNhY2hpbmcgaGVh
ZGVyLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1
cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0ku
UmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90
IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0
ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3Bv
bnNlQm9keS5GZXRjaC5QaHBIdHRwMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUg
RmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNT
OiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorRkFJTDogcmVzcG9uc2VTb3VyY2Ugc2hvdWxk
IGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorICAgIEV4cGVjdGVkOiBT
eW1ib2woZGlzay1jYWNoZSkKKyAgICBBY3R1YWw6IFN5bWJvbChuZXR3b3JrKQorUEFTUzogQ29u
dGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hv
dWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5QaHBIdHRwMzA0Q2FjaGVkCitQQVNTOiBSZXNv
dXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUVUeXBlIHNob3VsZCBiZSAndGV4
dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorRkFJTDogcmVzcG9u
c2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQor
ICAgIEV4cGVjdGVkOiBTeW1ib2woZGlzay1jYWNoZSkKKyAgICBBY3R1YWw6IFN5bWJvbChuZXR3
b3JrKQorUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5p
bmcgdGVzdCBzZXR1cC4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5GZXRjaC5GaWxlSHR0cDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJl
IEZldGNoIHR5cGUuCitQQVNTOiBNSU1FVHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0
dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJ
LlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5v
dCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSB1bmRlZmlu
ZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aC5GaWxlSHR0cDIwME5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5
cGUuCitQQVNTOiBTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLgorUEFTUzogTUlNRVR5cGUgc2hv
dWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQ
QVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2Uu
TmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNT
OiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaC5GaWxlSHR0cDIw
MENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1F
VHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJl
IDIwMC4KK0ZBSUw6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25z
ZVNvdXJjZS5EaXNrQ2FjaGUKKyAgICBFeHBlY3RlZDogU3ltYm9sKGRpc2stY2FjaGUpCisgICAg
QWN0dWFsOiBTeW1ib2wobmV0d29yaykKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNl
NjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNv
dXJjZS4nLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHku
RmV0Y2guRmlsZUh0dHAzMDRDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0
eXBlLgorUEFTUzogTUlNRVR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1
cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0ku
UmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBDb250ZW50IHNob3VsZCBu
b3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWlu
IHRleHQgcmVzb3VyY2UuJy4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407840</attachid>
            <date>2020-09-02 17:49:08 -0700</date>
            <delta_ts>2020-09-03 10:00:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200902204907.patch</filename>
            <type>text/plain</type>
            <size>30831</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JlYTA3Yzk0MTllZTNk
MDcwMjFhNjA1ZTgwNmI3MDdlMDcxNmFjNS4uMzJkYzk5MzA3OWJiM2JhZDRjOTBjNGYxNzI2ZWVl
NDNhMjFiZDJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA5LTAyICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIEFkZGVk
IHdvcmthcm91bmQgZm9yIDMwNCBYSFIvRmV0Y2ggcmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5
cGUgYW5kIGNvbnRlbnQgYXJlIGNvcnJlY3RseSBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAg
ZnJvbnRlbmQgZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gcHJldmll
dyB0aGUgcmVzcG9uc2UuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25z
ZS1ib2R5Lmh0bWwKKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YUZvclVS
TCk6IFN1cHBvcnQgZm9yIGZpbmRpbmcgYSBwcmV2aW91cyBub24tMzA0IHJlc3BvbnNlIGZvciBh
IFVSTC4KKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omh0dHBTdGF0
dXNUZXh0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpS
ZXNvdXJjZURhdGE6OnNldEhUVFBTdGF0dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldE1JTUVUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnJlc3BvbnNlVGltZXN0YW1wIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldFJlc3BvbnNlVGltZXN0YW1wKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6IEZpeGVkIGlz
c3VlIHdoZXJlIGl0IHdhcyBwb3NzaWJsZSB0aGF0IHdlIHdvdWxkIGluZm9ybSB0aGUKKyAgICAg
ICAgICAgIGZyb250ZW5kIHRoYXQgYSByZXF1ZXN0IHdhcyBvZiB0eXBlIGBPdGhlcmAgZXZlbiB0
aG91Z2ggd2UgaGFkIHJlcXVlc3QgaW5mb3JtYXRpb24gaW5kaWNhdGluZyBpdCB3YXMgYFhIUmAK
KyAgICAgICAgICAgIG9yIGBGZXRjaGAuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEFkZGVkIGNvZGUgcGF0aCB0byB3b3JrIGFy
b3VuZCB1bmRlcmx5aW5nIGlzc3VlIHdoZXJlCisgICAgICAgICAgICBYSFIvRmV0Y2ggMzA0cyBh
cmUgbm90IGNhY2hlZCwgYW5kIGVuZCB1cCBub3QgcGFzc2luZyBuZWNlc3NhcnkgaW5mb3JtYXRp
b24gdG8gdGhlIGZyb250ZW5kIGFzIGEgcmVzdWx0LgorCiAyMDIwLTA5LTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxpZ24gVVRGLTE2
IGRlY29kZXIgd2l0aCBDaHJvbWUsIEZpcmVmb3gsIGFuZCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwppbmRleCBjMjBiOTk4YjRkMDdjMzU3NTY5NDk5ZmNjYTFiNDI5NzY3ZjAz
NWJlLi4yMTkxOTUwZDkzZTQ1OTFmMGQ0MjhmNTY3ZjQ1NzA3NTE0ZDZkYWUxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMC0wOS0wMiAgUGF0cmljayBBbmds
ZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBw
cmV2aWV3IHJlc3BvbnNlIGZyb20gWEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NTIKKworICAgICAgICBSZXNwb25zZXMgd2l0
aCBubyBjb250ZW50IGFuZCBhIHN0YXR1cyBjb2RlIG9mIDMwNCBub3cgc2hvdyBhIGBSZXNvdXJj
ZSBoYXMgbm8gY2FjaGVkIGNvbnRlbnRgIG1lc3NhZ2UgaW5zdGVhZAorICAgICAgICAgICAgb2Yg
YSBnZW5lcmljIGVycm9yLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAg
ICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLnNob3dOb0NhY2hlZENvbnRl
bnRNZXNzYWdlKToKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9j
b250ZW50QXZhaWxhYmxlKToKKwogMjAyMC0wOS0wMSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2ls
eWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDMyNjQpOiBXZWIgSW5zcGVj
dG9yOiBTdHlsZSBwYW5lIGRvZXNuJ3QgdXBkYXRlIGFmdGVyIHRvZ2dsaW5nIENTUyBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
aW5kZXggNzQzMjUwOWVkZTQ0NmU3NzhjNGRmZDQ0MzQ5MDFlZTRlMzA0YzI1Mi4uZWQ3NmVlYmM1
NDI3ODMyYjJlMzFlNTNiMGUxOGY2MWFlOGY4OWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xNTIsOCArMTUyLDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZy
YW1lSWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0VVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygp
KTsKICAgICByZXNvdXJjZURhdGEtPnNldEhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpOworICAgIHJlc291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c1RleHQocmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKSk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAg
IHJlc291cmNlRGF0YS0+c2V0Rm9yY2VCdWZmZXJEYXRhKGZvcmNlQnVmZmVyRGF0YSk7CisgICAg
cmVzb3VyY2VEYXRhLT5zZXRNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICByZXNv
dXJjZURhdGEtPnNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lOjpub3coKSk7CiAKICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNwb25zZS5taW1l
VHlwZSgpKSkKICAgICAgICAgcmVzb3VyY2VEYXRhLT5zZXREZWNvZGVyKEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2Uu
dGV4dEVuY29kaW5nTmFtZSgpKSk7CkBAIC0yNzgsNiArMjgxLDIyIEBAIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNv
bnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogfQogCitOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6ZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAo
dXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKiBtb3N0UmVjZW50UmVzb3VyY2VEYXRhID0gbnVs
bHB0cjsKKyAgICAKKyAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcygpKSB7
CisgICAgICAgIC8vIHJlc3BvbnNlVGltZXN0YW1wIGlzIGNoZWNrZWQgc28gdGhhdCB3ZSBvbmx5
IGdyYWIgdGhlIG1vc3QgcmVjZW50IHJlc3BvbnNlIGZvciB0aGUgVVJMLCBpbnN0ZWFkIG9mIHBv
dGVudGlvbmFsbHkgZ2V0dGluZyBhIG1vcmUgc3RhbGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChy
ZXNvdXJjZURhdGEtPnVybCgpID09IHVybCAmJiByZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2Rl
KCkgIT0gMzA0ICYmICghbW9zdFJlY2VudFJlc291cmNlRGF0YSB8fCAocmVzb3VyY2VEYXRhLT5y
ZXNwb25zZVRpbWVzdGFtcCgpID4gbW9zdFJlY2VudFJlc291cmNlRGF0YS0+cmVzcG9uc2VUaW1l
c3RhbXAoKSkpKQorICAgICAgICAgICAgbW9zdFJlY2VudFJlc291cmNlRGF0YSA9IHJlc291cmNl
RGF0YTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1vc3RSZWNlbnRSZXNvdXJjZURhdGE7Cit9
CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCAyOTUwODJhNjhjOWRlMzM5ZmM2NTM2ZTY0MGQxZGRhYmMyYzlmNmQzLi42
Y2VkYWIzYzU4OThmYTg0ZGQ1OWY2MTFmNzE1MDE4M2MwMmNhZWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc0LDkgKzc1LDE1IEBAIHB1YmxpYzoKIAogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBj
b25zdCB7IHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0SFRUUFN0
YXR1c0NvZGUoaW50IGh0dHBTdGF0dXNDb2RlKSB7IG1faHR0cFN0YXR1c0NvZGUgPSBodHRwU3Rh
dHVzQ29kZTsgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IH0KKyAgICAgICAgdm9pZCBzZXRI
VFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KSB7IG1faHR0cFN0YXR1
c1RleHQgPSBodHRwU3RhdHVzVGV4dDsgfQogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVuY29kaW5nTmFtZTsgfQogICAgICAg
ICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
KSB7IG1fdGV4dEVuY29kaW5nTmFtZSA9IHRleHRFbmNvZGluZ05hbWU7IH0KKyAgICAgICAgCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBl
OyB9CisgICAgICAgIHZvaWQgc2V0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgeyBt
X21pbWVUeXBlID0gbWltZVR5cGU7IH0KIAogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAg
ICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29k
ZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQpAQCAtOTIsNiArOTksOSBAQCBw
dWJsaWM6CiAKICAgICAgICAgYm9vbCBmb3JjZUJ1ZmZlckRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmNlQnVmZmVyRGF0YTsgfQogICAgICAgICB2b2lkIHNldEZvcmNlQnVmZmVyRGF0YShib29s
IGZvcmNlKSB7IG1fZm9yY2VCdWZmZXJEYXRhID0gZm9yY2U7IH0KKyAgICAgICAgCisgICAgICAg
IFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRp
bWVzdGFtcDsgfQorICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRp
bWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAogICAgICAgICBib29sIGhhc0J1
ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogCkBAIC0xMDcsNiAr
MTE3LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBt
X2NvbnRlbnQ7CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwpAQCAtMTE0LDkgKzEyNSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0
ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKICAgICAgICAgaW50IG1faHR0cFN0
YXR1c0NvZGUgeyAwIH07CisgICAgICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgICAg
ICBib29sIG1faXNDb250ZW50RXZpY3RlZCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9iYXNl
NjRFbmNvZGVkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZvcmNlQnVmZmVyRGF0YSB7IGZh
bHNlIH07CisgICAgICAgIFdhbGxUaW1lIG1fcmVzcG9uc2VUaW1lc3RhbXA7CiAgICAgfTsKIAog
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhKCk7CkBAIC0xMzMsNiArMTQ2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hl
ZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YUZvclVSTChjb25zdCBT
dHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFyKE9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVk
TG9hZGVySWQgPSBXVEY6Om51bGxvcHQpOwogICAgIFZlY3RvcjxSZXNvdXJjZURhdGEqPiByZXNv
dXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBlMDMzYWMxNzk5NWZiNWEyMWUzNDZjN2U1
YjcyZGI1ZjdhOGI4OTRkLi5hZjhkZDExZTEwNjM3MmUyYTU4OTZkMTQ2MWVhOWNlNjRlYjk3MTFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00MzUsOCArNDM1LDEwIEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvCiAgICAgU3RyaW5nIHRhcmdldElkID0gcmVxdWVzdC5pbml0aWF0b3JJZGVudGlm
aWVyKCk7CiAKICAgICBpZiAodHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3Vy
Y2UpIHsKLSAgICAgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkpCisgICAgICAgIGlm
IChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8IHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OlhIUikKICAgICAgICAgICAgIHR5cGUgPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlOworICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnJlcXVl
c3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpGZXRjaCkKKyAgICAgICAgICAg
IHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkZldGNoUmVzb3VyY2U7CiAgICAgICAgIGVsc2Ug
aWYgKGxvYWRlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJs
KCksIGxvYWRlci0+dXJsKCkpICYmICFsb2FkZXItPmlzQ29tbWl0dGVkKCkpCiAgICAgICAgICAg
ICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlOwogICAgICAgICBl
bHNlIGlmIChsb2FkZXIpIHsKQEAgLTUzNiw2ICs1MzgsMzEgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW4KICAgICAvLyBSYXdSZXNvdXJjZSBpcyB1c2VkIGZvciBsb2FkaW5nIHdvcmtlciBzY3Jp
cHRzLCBhbmQgdGhvc2Ugc2hvdWxkIHN0YXkgYXMgU2NyaXB0UmVzb3VyY2UgYW5kIG5vdCBjaGFu
Z2UgdG8gWEhSUmVzb3VyY2UuCiAgICAgaWYgKHR5cGUgIT0gbmV3VHlwZSAmJiBuZXdUeXBlICE9
IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UgJiYgbmV3VHlwZSAhPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UpCiAgICAgICAgIHR5cGUgPSBuZXdUeXBlOworICAgIAor
ICAgIC8vIEZJWE1FOiA8cmRhcjovLzY4MjQxMTA0PiAzMDQgTm90IE1vZGlmaWVkIHJlc3BvbnNl
cyBmb3IgWEhSL0ZldGNoIGRvIG5vdCBoYXZlIGFsbCB0aGVpciBpbmZvcm1hdGlvbiBmcm9tIHRo
ZSBjYWNoZS4KKyAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiAodHlwZSA9PSBJbnNwZWN0b3JQYWdl
QWdlbnQ6OlhIUlJlc291cmNlIHx8IHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpGZXRjaFJl
c291cmNlKSAmJiAoIWNhY2hlZFJlc291cmNlIHx8ICFjYWNoZWRSZXNvdXJjZS0+ZW5jb2RlZFNp
emUoKSkpIHsKKyAgICAgICAgYXV0byBwcmV2aW91c1Jlc291cmNlRGF0YSA9IG1fcmVzb3VyY2Vz
RGF0YS0+ZGF0YUZvclVSTChyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIAorICAg
ICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEpIHsKKyAgICAgICAgICAgIGlmIChwcmV2aW91
c1Jlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQorICAgICAgICAgICAgICAgIG1fcmVzb3VyY2Vz
RGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgcHJldmlvdXNSZXNvdXJjZURhdGEt
PmNvbnRlbnQoKSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7CisgICAg
ICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQnVmZmVyZWREYXRhKCkp
IHsKKyAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzQnVmZmVyID0gcHJldmlvdXNSZXNvdXJj
ZURhdGEtPmJ1ZmZlcigpOworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+bWF5YmVB
ZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBwcmV2aW91c0J1ZmZlci0+ZGF0YSgpLCBwcmV2aW91
c0J1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIG1f
cmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgZW1wdHlTdHJpbmco
KSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5z
ZXRTdHJpbmcoIm1pbWVUeXBlIl9zLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+bWltZVR5cGUoKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldEludGVnZXIo
InN0YXR1cyJfcywgcHJldmlvdXNSZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkpOworICAg
ICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKCJzdGF0dXNUZXh0Il9zLCBwcmV2
aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c1RleHQoKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZygic291cmNlIl9zLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJbnNwZWN0
b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUpKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBub3QgYmUgc2V0IG90aGVy
d2lzZSwgYXMgdGhlIGNhY2hlZFJlc291cmNlJ3MgYm9keSB3YXMgbm90IGluaXRpYWxpemVkLgor
ICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElk
LCBlbXB0eVN0cmluZygpLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICBTdHJpbmcg
ZnJhbWVJZCA9IGZyYW1lSWRlbnRpZmllcihsb2FkZXIpOwogICAgIFN0cmluZyBsb2FkZXJJZCA9
IGxvYWRlcklkZW50aWZpZXIobG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpz
CmluZGV4IDNkNmNkOThhZTc0ODM2YjdmOTJkZmJlZWZlYjhlN2U3NDZkNTJjMTguLmRjMmYzNDIy
OGU5NDQ5OGMyYmYxYmFjNzcwMTQzNWJhM2ExNzliMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVk
U3RyaW5ncy5qcwpAQCAtODQxLDYgKzg0MSw4IEBAIGxvY2FsaXplZFN0cmluZ3NbIk5vIEFzc29j
aWF0ZWQgRGF0YSJdID0gIk5vIEFzc29jaWF0ZWQgRGF0YSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJO
byBBdHRyaWJ1dGVzIl0gPSAiTm8gQXR0cmlidXRlcyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJObyBC
b3ggTW9kZWwgSW5mb3JtYXRpb24iXSA9ICJObyBCb3ggTW9kZWwgSW5mb3JtYXRpb24iOwogbG9j
YWxpemVkU3RyaW5nc1siTm8gQ1NTIENoYW5nZXMiXSA9ICJObyBDU1MgQ2hhbmdlcyI7CisvKiBB
biBlcnJvciBtZXNzYWdlIHdoZW4gdGhlcmUgaXMgbm8gY2FjaGVkIGNvbnRlbnQgZm9yIGEgTm90
IE1vZGlmaWVkIHJlc291cmNlLiAqLworbG9jYWxpemVkU3RyaW5nc1siTm8gQ2FjaGVkIENvbnRl
bnQgQCBSZXNvdXJjZSBQcmV2aWV3Il0gPSAiUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50
LiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJObyBDYW52YXMgQ29udGV4dHMiXSA9ICJObyBDYW52YXMg
Q29udGV4dHMiOwogbG9jYWxpemVkU3RyaW5nc1siTm8gQ2FudmFzIFNlbGVjdGVkIl0gPSAiTm8g
Q2FudmFzIFNlbGVjdGVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIk5vIENoYXJ0IEF2YWlsYWJsZSJd
ID0gIk5vIENoYXJ0IEF2YWlsYWJsZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcwpp
bmRleCA1OTNjYTMyZjc5ODU4OThhZDY2MTMyOTIyZjYzNjNjOGRkODJiMmU3Li5jYTg2MzE1OTdk
ODUyNGVhMTMwMTY4M2M0ZDc4ZjRiODFiZjc0ZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVu
dFZpZXcuanMKQEAgLTE2MSw2ICsxNjEsMTMgQEAgV0kuUmVzb3VyY2VDb250ZW50VmlldyA9IGNs
YXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZl
bnQuQ29udGVudEVycm9yKTsKICAgICB9CisgICAgCisgICAgc2hvd05vQ2FjaGVkQ29udGVudE1l
c3NhZ2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93TWVzc2FnZShXSS5VSVN0cmluZygiUmVz
b3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50LiIsICJObyBDYWNoZWQgQ29udGVudCBAIFJlc291
cmNlIFByZXZpZXciLCAiQW4gZXJyb3IgbWVzc2FnZSB3aGVuIHRoZXJlIGlzIG5vIGNhY2hlZCBj
b250ZW50IGZvciBhIE5vdCBNb2RpZmllZCByZXNvdXJjZS4iKSk7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250
ZW50RXJyb3IpOworICAgIH0KIAogICAgIHNob3dHZW5lcmljRXJyb3JNZXNzYWdlKCkKICAgICB7
CkBAIC0yMjQsNiArMjMxLDExIEBAIFdJLlJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBSZXNv
dXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgLy8gY29udGVu
dCBhcnJpdmVzLiBTb3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhhbmRsZSB0aGF0LgogICAgICAg
ICBpZiAodGhpcy5faGFzQ29udGVudCgpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAK
KyAgICAgICAgaWYgKHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGF0dXNDb2RlID09IDMwNCAmJiAh
cGFyYW1ldGVycy5zb3VyY2VDb2RlLmNvbnRlbnQpIHsKKyAgICAgICAgICAgIHRoaXMuc2hvd05v
Q2FjaGVkQ29udGVudE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQog
CiAgICAgICAgIC8vIENvbnRlbnQgaXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUgcHVibGljIG1l
dGhvZCBub3cuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmFtZXRlcnMuc291cmNlQ29kZSA9
PT0gdGhpcy5fcmVzb3VyY2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMxMmFkZWViYTEwODUyZDdiNGQ2YTQ0YTk0ODRm
YTNmOTM0ZTMzMjYuLjIzY2FlZjZlNzBiZTUzZmJlNWRhNTA1MjExMzkxY2IwM2I0ODc1YjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wOS0wMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBwcmV2aWV3IHJlc3Bv
bnNlIGZyb20gWEhSIHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMTU4NTIKKworICAgICAgICBBZGRlZCBuZXcgdGVzdCBjYXNlcyBhbmQg
YXNzb2NpYXRlZCByZXNvdXJjZXMgdG8gdGVzdCBoYW5kbGluZyBvZiBgMzA0IE5vdCBNb2RpZmll
ZGAgcmVzcG9uc2VzIHRvIFhIUiByZXF1ZXN0cy4KKyAgICAgICAgV2UgdGVzdCBib3RoIFhIUiBm
b3IgYSBQSFAgcGFnZSBhcyB3ZWxsIGFzIGZvciBhIHRleHQgZmlsZSwgYXMgdGhleSBiZWhhdmVk
IGRpZmZlcmVudGx5IChpbmNvcnJlY3RseSkgYmVmb3JlCisgICAgICAgIHRoaXMgcGF0Y2guCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNl
LWJvZHktMzA0Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9y
ZXNvdXJjZXMvLmh0YWNjZXNzOiBDYWNoZS1Db250cm9sIGhlYWRlciBmb3IgZmV0Y2gtY2FjaGFi
bGUudHh0CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
ZmV0Y2gtY2FjaGFibGUucGhwOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdv
cmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMt
d2sxL1Rlc3RFeHBlY3RhdGlvbnM6IFRlc3RzIHJlbHkgb24gZGlzay1jYWNoZSB3aGljaCBpcyBu
b3QgcHJlc2VudCBpbiBXSzEKKwogMjAyMC0wOS0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsaWduIFVURi0xNiBkZWNvZGVyIHdpdGgg
Q2hyb21lLCBGaXJlZm94LCBhbmQgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Zl
dGNoLXJlc3BvbnNlLWJvZHktMzA0LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTQ3YzY3NzE4
Yzc2NjU5ODNkN2VlZTRjNzU5NGEzYTljNDZiMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMw
NC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw3MiBAQAorVGVzdHMgZm9yIGdldHRpbmcgdGhlIGNv
bnRlbnQgb2YgRmV0Y2ggcmVxdWVzdHMgd2l0aCB0aGUgIjMwNCBOb3QgTW9kaWZpZWQiIHJlc3Bv
bnNlIHN0YXR1cy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LkZldGNoMzA0CistLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Tm90Q2FjaGVkCitQ
QVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91
bGQgYmUgZW1wdHkuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVz
cG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsK
K1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBj
b250ZW50IHNob3VsZCBiZSB1bmRlZmluZWQuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAyMDBOb3RDYWNoZWQKK1BBU1M6IFJlc291
cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogU2hvdWxkIHNlZSBjYWNoaW5nIGhlYWRl
ci4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVz
IGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5S
ZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBDb250ZW50IHNob3VsZCBub3Qg
YmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRl
eHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LkZldGNoMzA0LlBIUDIwMENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZl
dGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6
IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQg
YmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBDb250ZW50IHNo
b3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUg
J1BsYWluIHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LlBIUDMwNENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hv
dWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWlu
Jy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJj
ZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBD
b250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBz
aG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IHNldHVw
LgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0
LkZpbGUzMDROb3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgor
UEFTUzogTUlNRSB0eXBlIHNob3VsZCBiZSBlbXB0eS4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3Vs
ZCBiZSAzMDQuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVz
cG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVu
Y29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBO
b3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogU2hv
dWxkIHNlZSBjYWNoaW5nIGhlYWRlci4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQv
cGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNl
U291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNT
OiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVu
dCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBDYWNoZWQKK1BBU1M6
IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRSB0eXBlIHNob3VsZCBi
ZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzog
cmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tD
YWNoZQorUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQQVNTOiBU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMzA0Q2Fj
aGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlw
ZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIw
MC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNv
dXJjZS5EaXNrQ2FjaGUKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVk
LgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLgor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2Zl
dGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0
YTc1MWJhMTFhYThjNzllNDFkZDNkOGIwY2ZkNWVkMmI4M2Q0ZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2Ut
Ym9keS0zMDQuaHRtbApAQCAtMCwwICsxLDE2NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRl
RmV0Y2hGb3JQSFAyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5w
aHAiLCB7IGhlYWRlcnM6IHsgJ1gtU3RhdHVzLUNvZGUtTmVlZGVkJzogJzIwMCcgfSB9KTsKK30K
KworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQSFAzMDQoKSB7CisgICAgZmV0Y2goInJlc291cmNl
cy9mZXRjaC1jYWNoYWJsZS5waHAiLCB7IGhlYWRlcnM6IHsgJ1gtU3RhdHVzLUNvZGUtTmVlZGVk
JzogJzMwNCcgfSB9KTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JGaWxlMjAwKCkgewor
ICAgIGZldGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0Iik7Cit9CisKK2Z1bmN0aW9u
IGNyZWF0ZUZldGNoRm9yRmlsZTMwNCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNh
Y2hhYmxlLnR4dCIsIHsgaGVhZGVyczogeyAnSWYtTW9kaWZpZWQtU2luY2UnOiBuZXcgRGF0ZSgp
LnRvVVRDU3RyaW5nKCkgfSB9KTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJOZXR3b3JrLmdldFJlc3BvbnNl
Qm9keS5GZXRjaDMwNCIpOworCisgICAgZnVuY3Rpb24gYWRkVGVzdENhc2Uoe25hbWUsIGRlc2Ny
aXB0aW9uLCBzZXR1cCwgZXhwcmVzc2lvbiwgY29udGVudEhhbmRsZXJ9KSB7CisgICAgICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWUsCisgICAgICAgICAgICBkZXNjcmlw
dGlvbiwKKyAgICAgICAgICAgIHNldHVwLAorICAgICAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJl
c3Npb24pOworICAgICAgICAgICAgICAgIFdJLkZyYW1lLmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZl
bnQuUmVzb3VyY2VXYXNBZGRlZCkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJl
c291cmNlOworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChyZXNvdXJjZS50eXBlLCBXSS5SZXNvdXJjZS5UeXBlLkZldGNoLCAiUmVzb3VyY2Ugc2hvdWxk
IGJlIEZldGNoIHR5cGUuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb3Vy
Y2UucmVxdWVzdENvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgICAg
ICAgICAgICAgLnRoZW4oY29udGVudEhhbmRsZXIpCisgICAgICAgICAgICAgICAgICAgIC50aGVu
KHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKwor
ICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5
LkZldGNoMzA0LlBIUDMwNE5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiVHJ5IGFu
ZCBnZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25zZSwgd2hpY2ggd2lsbCBub3QgZXhpc3Qu
IiwKKyAgICAgICAgYXN5bmMgc2V0dXAocmVzb2x2ZSkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgaW50ZXJuYWxzLmNsZWFyTWVtb3J5Q2FjaGUoKWAsIHJlc29s
dmUpOworICAgICAgICB9LAorICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAz
MDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVu
dCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlIGVtcHR5
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0
YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJ
LlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNvdXJjZSBzaG91bGQg
YmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQg
c2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChjb250ZW50LCB1bmRlZmluZWQsICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJl
IHVuZGVmaW5lZC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMjAwTm90
Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNl
IGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAy
MDAoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVu
dCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZUhlYWRlcnNbIkNhY2hlLUNvbnRyb2wiXSwgInB1Ymxp
YywgbWF4LWFnZT0zMTU1NjkyNiIsICJTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAi
dGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAy
MDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5S
ZXNwb25zZVNvdXJjZS5OZXR3b3JrLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291
cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3Qg
YmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3VyY2UuIiwgIlRleHQgY29udGVudCBzaG91bGQg
YmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0
Y2gzMDQuUEhQMjAwQ2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3Ig
MjAwIHJlc3BvbnNlIGZyb20gY2FjaGUuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZl
dGNoRm9yUEhQMjAwKClgLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNv
ZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUg
dHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNo
b3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNv
dXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tD
YWNoZSwgInJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJj
ZS5EaXNrQ2FjaGUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocmF3
QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2Rl
ZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBs
YWluIHRleHQgcmVzb3VyY2UuIiwgIlRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQg
cmVzb3VyY2UuJy4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2Uoewor
ICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Q2Fj
aGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNw
b25zZS4iLAorICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAzMDQoKWAsCisg
ICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFz
ZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4
dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJj
ZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNv
dXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3Vy
Y2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxz
ZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4i
LCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMzA0Tm90Q2FjaGVkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLCB3
aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBhc3luYyBzZXR1cChyZXNvbHZlKSB7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBpbnRlcm5hbHMuY2xlYXJN
ZW1vcnlDYWNoZSgpYCwgcmVzb2x2ZSk7CisgICAgICAgIH0sCisgICAgICAgIGV4cHJlc3Npb246
IGBjcmVhdGVGZXRjaEZvckZpbGUzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJv
ciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1F
IHR5cGUgc2hvdWxkIGJlIGVtcHR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBi
ZSAzMDQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJy
ZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29y
ayIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNv
ZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCB1bmRlZmluZWQsICJU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4iKTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJv
ZHkuRmV0Y2gzMDQuRmlsZTIwME5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0
IGJvZHkgZm9yIDIwMCByZXNwb25zZSBmcm9tIG5ldHdvcmsuIiwKKyAgICAgICAgZXhwcmVzc2lv
bjogYGNyZWF0ZUZldGNoRm9yRmlsZTIwMCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vy
cm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1si
Q2FjaGUtQ29udHJvbCJdLCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUg
Y2FjaGluZyBoZWFkZXIuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUg
J3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9u
c2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNv
dXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxz
ZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4i
LCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3
b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMjAwQ2FjaGVkIiwKKyAgICAgICAgZGVz
Y3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gY2FjaGUuIiwKKyAgICAg
ICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yRmlsZTIwMCgpYCwKKyAgICAgICAgY29udGVu
dEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVU
eXBlLCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXND
b2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNv
dXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVudCBz
aG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLiIsICJUZXh0IGNvbnRl
bnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LkZldGNoMzA0LkZpbGUzMDRDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdl
dCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLiIsCisgICAgICAgIGV4cHJlc3Npb246IGBj
cmVhdGVGZXRjaEZvckZpbGUzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwg
c291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4i
LCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVz
IGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3Vy
Y2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3Bv
bnNlU291cmNlLkRpc2tDYWNoZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNl
NjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250
ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxh
aW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIGdldHRpbmcgdGhlIGNvbnRlbnQgb2YgRmV0
Y2ggcmVxdWVzdHMgd2l0aCB0aGUgIjMwNCBOb3QgTW9kaWZpZWQiIHJlc3BvbnNlIHN0YXR1cy48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3MgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YThkMTI2OTQ5MzlhMjk4NjQzZDUwMTZhMzA2ZGU5MTFiYWIwNzg5YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5o
dGFjY2VzcwpAQCAtMCwwICsxLDMgQEAKKzxGaWxlcyBmZXRjaC1jYWNoYWJsZS50eHQ+CisJSGVh
ZGVyIHNldCBDYWNoZS1Db250cm9sICJwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYiCis8L0ZpbGVz
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNo
LWNhY2hhYmxlLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmE2NGQ0YWUyMTZiZGE1MzgyMTliNjg2ZjgzNjRh
ZGMwM2IyM2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwCkBAIC0wLDAgKzEsMTQg
QEAKKzw/cGhwCiskc3RhdHVzID0gJF9TRVJWRVJbJ0hUVFBfWF9TVEFUVVNfQ09ERV9ORUVERUQn
XTsKKworaWYgKCRzdGF0dXMgPT0gJzMwNCcpIHsKKyAgICBoZWFkZXIoIkhUVFAvMS4xIDMwNCBO
b3QgTW9kaWZpZWQiKTsKKyAgICBleGl0OworfQorCitoZWFkZXIoJ0NvbnRlbnQtVHlwZTogdGV4
dC9wbGFpbicpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBwdWJsaWMsIG1heC1hZ2U9MzE1NTY5
MjYiKTsgLy8gT25lIHllYXIuCisKKworZWNobyAiUGxhaW4gdGV4dCByZXNvdXJjZS4iOworPz4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVz
b3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMmM1
ZmExMWU0ZGJiNmRiODc0YjEwMWM5MThhZDE1MmYwNTBjNTk4Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gt
Y2FjaGFibGUudHh0CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRleHQgcmVzb3VyY2UuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IDk3MmU1M2I3ZDM1MTEzOTk2MTc4NDA4MDNlMjQ3ODRlYWRhOWYy
MDAuLjlhODRmNTA2MjU1MDFmYWEyZDk4NGJiMjY0YmVmM2E4NGZiYWM1N2MgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTQwNyw2ICs0MDcs
NyBAQCBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxpdHktY2hhbmdlLWluLXN1YmZyYW1l
Lmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvY2FjaGUvZGlzay1jYWNoZQogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25zZS1zb3VyY2UtZGlzay1jYWNoZS5o
dG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXNpemVzLWRpc2stY2Fj
aGUuaHRtbAoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5
LTMwNC5odG1sIFsgRmFpbHVyZSBdCiAKICMgQXN5bmMgaW1hZ2UgZGVjb2RpbmcgaXMgV0syIG9u
bHkKIGZhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLWJhY2tncm91bmQtY2hhbmdlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407888</attachid>
            <date>2020-09-03 10:00:40 -0700</date>
            <delta_ts>2020-09-03 14:46:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200903130039.patch</filename>
            <type>text/plain</type>
            <size>34070</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JlYTA3Yzk0MTllZTNk
MDcwMjFhNjA1ZTgwNmI3MDdlMDcxNmFjNS4uOGVhYThlZjNhZjZmOTQyY2MxYWEzNTU2YmE0NzNj
MTc4NDQ4YTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA5LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS5odG1sCisKKyAgICAgICAgQWRkZWQgd29y
a2Fyb3VuZCBmb3IgMzA0IFhIUi9GZXRjaCByZXF1ZXN0cyBzbyB0aGF0IHRoZSBtaW1lVHlwZSBh
bmQgY29udGVudCBhcmUgY29ycmVjdGx5IHNldCwgb3RoZXJ3aXNlIHRoZQorICAgICAgICBmcm9u
dGVuZCBkb2VzIG5vdCBoYXZlIHRoZSBpbmZvcm1hdGlvbiBpdCBuZWVkcyB0byBwcmV2aWV3IHRo
ZSByZXNwb25zZS4KKworICAgICAgICAqIGluc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNl
aXZlZCk6IFN0b3JpbmcgbmV3IFJlc291cmNlRGF0YSBtZW1iZXJzCisgICAgICAgIChXZWJDb3Jl
OjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6ZGF0YUZvclVSTCk6IFN1cHBvcnQgZm9yIGZpbmRpbmcg
YSBwcmV2aW91cyBub24tMzA0IHJlc3BvbnNlIGZvciBhIFVSTC4KKyAgICAgICAgKiBpbnNwZWN0
b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNv
dXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6Omh0dHBTdGF0dXNUZXh0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldEhUVFBTdGF0
dXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJj
ZURhdGE6Om1pbWVUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGE6OnNldE1JTUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5l
dHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6OnJlc3BvbnNlVGltZXN0YW1wIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGE6
OnNldFJlc3BvbnNlVGltZXN0YW1wKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3Jr
QWdlbnQ6OndpbGxTZW5kUmVxdWVzdCk6IEZpeGVkIGlzc3VlIHdoZXJlIGl0IHdhcyBwb3NzaWJs
ZSB0aGF0IHdlIHdvdWxkIGluZm9ybSB0aGUKKyAgICAgICAgICAgIGZyb250ZW5kIHRoYXQgYSBy
ZXF1ZXN0IHdhcyBvZiB0eXBlIGBPdGhlcmAgZXZlbiB0aG91Z2ggd2UgaGFkIHJlcXVlc3QgaW5m
b3JtYXRpb24gaW5kaWNhdGluZyBpdCB3YXMgYFhIUmAKKyAgICAgICAgICAgIG9yIGBGZXRjaGAu
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNw
b25zZSk6IEFkZGVkIGNvZGUgcGF0aCB0byB3b3JrIGFyb3VuZCB1bmRlcmx5aW5nIGlzc3VlIHdo
ZXJlCisgICAgICAgICAgICBYSFIvRmV0Y2ggMzA0cyBhcmUgbm90IGNhY2hlZCwgYW5kIGVuZCB1
cCBub3QgcGFzc2luZyBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gdGhlIGZyb250ZW5kIGFzIGEg
cmVzdWx0LgorCiAyMDIwLTA5LTAyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWxpZ24gVVRGLTE2IGRlY29kZXIgd2l0aCBDaHJvbWUsIEZp
cmVmb3gsIGFuZCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBjMjBi
OTk4YjRkMDdjMzU3NTY5NDk5ZmNjYTFiNDI5NzY3ZjAzNWJlLi41OGNkMzgyYTAwYWRlNWZhYWI5
MWU1YWEzZTRjMDZkNzg4YzNjMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAyMC0wOS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViIEluc3BlY3RvciBmYWlscyB0byBwcmV2aWV3IHJlc3BvbnNlIGZyb20gWEhS
IHJlcXVlc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTU4NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSZXNwb25zZXMgd2l0aCBhIG5vIGNvbnRlbnQgZXJyb3IgYW5kIGEgc3RhdHVzIGNvZGUgb2Yg
MzA0IG5vdyBzaG93IGEgYFJlc291cmNlIGhhcyBubyBjYWNoZWQgY29udGVudGAgbWVzc2FnZSBp
bnN0ZWFkCisgICAgICAgICAgICBvZiBhIGdlbmVyaWMgZXJyb3IuIEFsc28gcmVzcG9uc2VzIHdp
dGggZW1wdHkgY29udGVudCBhbmQgbm8gbWltZSB0eXBlIG5vdyBzaG93IGEgYFJlc291cmNlIGhh
cyBubyBjb250ZW50YAorICAgICAgICAgICAgbWVzc2FnZS4KKworICAgICAgICAqIExvY2FsaXph
dGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9SZXNvdXJjZS5qczogTW9yZSBjb25zaXN0YW50IGVycm9yIGhhbmRsaW5nIG1v
ZGVsIC0gcHJldmlvdXNseSBzb21lIHBhdGhzIHJlamVjdGVkIG9uCisgICAgICAgICAgICBmYWls
dXJlIGFuZCBzb21lIHJlc29sdmVkIHdpdGggYW4gZXJyb3IgcHJvcGVydHkuCisgICAgICAgIChX
SS5SZXNvdXJjZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV0kuUmVzb3Vy
Y2UucHJvdG90eXBlLnJlcXVlc3RDb250ZW50RmFpbHVyZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzOiBFcnJvciBtZXNzYWdlcworICAgICAg
ICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuYXN5bmMgc2hvd0dlbmVyaWNOb0Nv
bnRlbnRNZXNzYWdlKTogVGV4dCBub3cgY29uc2lzdGVudCB3aXRoIG90aGVyIG1lc3NhZ2VzLgor
ICAgICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd05vQ2FjaGVkQ29u
dGVudE1lc3NhZ2UpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUu
X2NvbnRlbnRBdmFpbGFibGUpOgorCiAyMDIwLTA5LTAxICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFz
aWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0MzI2NCk6IFdlYiBJbnNw
ZWN0b3I6IFN0eWxlIHBhbmUgZG9lc24ndCB1cGRhdGUgYWZ0ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0Rh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNw
cAppbmRleCA3NDMyNTA5ZWRlNDQ2ZTc3OGM0ZGZkNDQzNDkwMWVlNGUzMDRjMjUyLi5lZDc2ZWVi
YzU0Mjc4MzJiMmUzMWU1M2IwZTE4ZjYxYWU4Zjg5ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTE1Miw4ICsxNTIsMTEg
QEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgY29uc3QgU3RyaW4KICAgICByZXNvdXJjZURhdGEtPnNldEZyYW1lSWQo
ZnJhbWVJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRVUkwocmVzcG9uc2UudXJsKCkuc3RyaW5n
KCkpOwogICAgIHJlc291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c0NvZGUocmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRIVFRQU3RhdHVzVGV4dChyZXNwb25z
ZS5odHRwU3RhdHVzVGV4dCgpKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAg
ICAgcmVzb3VyY2VEYXRhLT5zZXRGb3JjZUJ1ZmZlckRhdGEoZm9yY2VCdWZmZXJEYXRhKTsKKyAg
ICByZXNvdXJjZURhdGEtPnNldE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIHJl
c291cmNlRGF0YS0+c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWU6Om5vdygpKTsKIAogICAg
IGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc3BvbnNlLm1p
bWVUeXBlKCkpKQogICAgICAgICByZXNvdXJjZURhdGEtPnNldERlY29kZXIoSW5zcGVjdG9yTmV0
d29ya0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCkpKTsKQEAgLTI3OCw2ICsyODEsMjIgQEAgTmV0d29ya1Jlc291
cmNlc0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEo
Y29uc3QgU3RyaW4KICAgICByZXR1cm4gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJ
ZCk7CiB9CiAKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlm
ICh1cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIE5ldHdv
cmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIG1vc3RSZWNlbnRSZXNvdXJjZURhdGEgPSBu
dWxscHRyOworICAgIAorICAgIGZvciAoYXV0byogcmVzb3VyY2VEYXRhIDogcmVzb3VyY2VzKCkp
IHsKKyAgICAgICAgLy8gcmVzcG9uc2VUaW1lc3RhbXAgaXMgY2hlY2tlZCBzbyB0aGF0IHdlIG9u
bHkgZ3JhYiB0aGUgbW9zdCByZWNlbnQgcmVzcG9uc2UgZm9yIHRoZSBVUkwsIGluc3RlYWQgb2Yg
cG90ZW50aW9uYWxseSBnZXR0aW5nIGEgbW9yZSBzdGFsZSByZXNwb25zZS4KKyAgICAgICAgaWYg
KHJlc291cmNlRGF0YS0+dXJsKCkgPT0gdXJsICYmIHJlc291cmNlRGF0YS0+aHR0cFN0YXR1c0Nv
ZGUoKSAhPSAzMDQgJiYgKCFtb3N0UmVjZW50UmVzb3VyY2VEYXRhIHx8IChyZXNvdXJjZURhdGEt
PnJlc3BvbnNlVGltZXN0YW1wKCkgPiBtb3N0UmVjZW50UmVzb3VyY2VEYXRhLT5yZXNwb25zZVRp
bWVzdGFtcCgpKSkpCisgICAgICAgICAgICBtb3N0UmVjZW50UmVzb3VyY2VEYXRhID0gcmVzb3Vy
Y2VEYXRhOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbW9zdFJlY2VudFJlc291cmNlRGF0YTsK
K30KKwogVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8U3Ry
aW5nPiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29y
a1Jlc291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3Vy
Y2VzRGF0YS5oCmluZGV4IDI5NTA4MmE2OGM5ZGUzMzlmYzY1MzZlNjQwZDFkZGFiYzJjOWY2ZDMu
LjZjZWRhYjNjNTg5OGZhODRkZDU5ZjYxMWY3MTUwMTgzYzAyY2FlZWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtNzQsOSArNzUsMTUgQEAgcHVibGljOgogCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSgp
IGNvbnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1c0NvZGU7IH0KICAgICAgICAgdm9pZCBzZXRIVFRQ
U3RhdHVzQ29kZShpbnQgaHR0cFN0YXR1c0NvZGUpIHsgbV9odHRwU3RhdHVzQ29kZSA9IGh0dHBT
dGF0dXNDb2RlOyB9CisgICAgICAgIAorICAgICAgICBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNU
ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9odHRwU3RhdHVzVGV4dDsgfQorICAgICAgICB2b2lkIHNl
dEhUVFBTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgaHR0cFN0YXR1c1RleHQpIHsgbV9odHRwU3Rh
dHVzVGV4dCA9IGh0dHBTdGF0dXNUZXh0OyB9CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOyB9CiAgICAg
ICAgIHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05h
bWUpIHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZTsgfQorICAgICAgICAK
KyAgICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5
cGU7IH0KKyAgICAgICAgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7
IG1fbWltZVR5cGUgPSBtaW1lVHlwZTsgfQogCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VE
ZWNvZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQog
ICAgICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVj
b2RlcikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CkBAIC05Miw2ICs5OSw5IEBA
IHB1YmxpYzoKIAogICAgICAgICBib29sIGZvcmNlQnVmZmVyRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fZm9yY2VCdWZmZXJEYXRhOyB9CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VCdWZmZXJEYXRhKGJv
b2wgZm9yY2UpIHsgbV9mb3JjZUJ1ZmZlckRhdGEgPSBmb3JjZTsgfQorICAgICAgICAKKyAgICAg
ICAgV2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
VGltZXN0YW1wOyB9CisgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUg
dGltZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCiAgICAgICAgIGJvb2wgaGFz
QnVmZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAKQEAgLTEwNyw2
ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5n
IG1fY29udGVudDsKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICAgICAg
U3RyaW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBt
X2RlY29kZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKICAg
ICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CkBAIC0xMTQsOSArMTI1LDExIEBA
IHB1YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxs
cHRyIH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7
IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwogICAgICAgICBpbnQgbV9odHRw
U3RhdHVzQ29kZSB7IDAgfTsKKyAgICAgICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAg
ICAgIGJvb2wgbV9pc0NvbnRlbnRFdmljdGVkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2Jh
c2U2NEVuY29kZWQgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1fZm9yY2VCdWZmZXJEYXRhIHsg
ZmFsc2UgfTsKKyAgICAgICAgV2FsbFRpbWUgbV9yZXNwb25zZVRpbWVzdGFtcDsKICAgICB9Owog
CiAgICAgTmV0d29ya1Jlc291cmNlc0RhdGEoKTsKQEAgLTEzMyw2ICsxNDYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0
cmluZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRl
eHRFbmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCk7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShD
YWNoZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2
ZWRMb2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPFJlc291cmNlRGF0YSo+IHJl
c291cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGUwMzNhYzE3OTk1ZmI1YTIxZTM0NmM3
ZTViNzJkYjVmN2E4Yjg5NGQuLmVjY2Y1ZWM3OWY5MTRkMTk5YjlhNjA1NTRlODQzNzY3NzU0NDdj
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
TmV0d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzNSw4ICs0MzUsMTAgQEAgdm9pZCBJbnNwZWN0
b3JOZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IERvY3VtZW50TG8KICAgICBTdHJpbmcgdGFyZ2V0SWQgPSByZXF1ZXN0LmluaXRpYXRvcklkZW50
aWZpZXIoKTsKIAogICAgIGlmICh0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNv
dXJjZSkgewotICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSkKKyAgICAgICAg
aWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgfHwgcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBS
ZXNvdXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6WEhSKQogICAgICAgICAgICAgdHlwZSA9IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7CisgICAgICAgIGVsc2UgaWYgKHJlcXVlc3QucmVx
dWVzdGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQorICAgICAgICAg
ICAgdHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0Y2hSZXNvdXJjZTsKICAgICAgICAgZWxz
ZSBpZiAobG9hZGVyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51
cmwoKSwgbG9hZGVyLT51cmwoKSkgJiYgIWxvYWRlci0+aXNDb21taXR0ZWQoKSkKICAgICAgICAg
ICAgIHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2U7CiAgICAgICAg
IGVsc2UgaWYgKGxvYWRlcikgewpAQCAtNTM2LDYgKzUzOCwyOCBAQCB2b2lkIEluc3BlY3Rvck5l
dHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
RG9jdW1lbgogICAgIC8vIFJhd1Jlc291cmNlIGlzIHVzZWQgZm9yIGxvYWRpbmcgd29ya2VyIHNj
cmlwdHMsIGFuZCB0aG9zZSBzaG91bGQgc3RheSBhcyBTY3JpcHRSZXNvdXJjZSBhbmQgbm90IGNo
YW5nZSB0byBYSFJSZXNvdXJjZS4KICAgICBpZiAodHlwZSAhPSBuZXdUeXBlICYmIG5ld1R5cGUg
IT0gSW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSAmJiBuZXdUeXBlICE9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlwZSA9IG5ld1R5cGU7CisgICAg
CisgICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjE2MTI1PiAzMDQgTm90IE1vZGlmaWVkIHJl
c3BvbnNlcyBmb3IgWEhSL0ZldGNoIGRvIG5vdCBoYXZlIGFsbCB0aGVpciBpbmZvcm1hdGlvbiBm
cm9tIHRoZSBjYWNoZS4KKyAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiAodHlwZSA9PSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlIHx8IHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpG
ZXRjaFJlc291cmNlKSAmJiAoIWNhY2hlZFJlc291cmNlIHx8ICFjYWNoZWRSZXNvdXJjZS0+ZW5j
b2RlZFNpemUoKSkpIHsKKyAgICAgICAgYXV0byBwcmV2aW91c1Jlc291cmNlRGF0YSA9IG1fcmVz
b3VyY2VzRGF0YS0+ZGF0YUZvclVSTChyZXNwb25zZS51cmwoKS5zdHJpbmcoKSk7CisgICAgICAg
IAorICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEpIHsKKyAgICAgICAgICAgIGlmIChw
cmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQ29udGVudCgpKQorICAgICAgICAgICAgICAgIG1fcmVz
b3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPmNvbnRlbnQoKSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmJhc2U2NEVuY29kZWQoKSk7
CisgICAgICAgICAgICBlbHNlIGlmIChwcmV2aW91c1Jlc291cmNlRGF0YS0+aGFzQnVmZmVyZWRE
YXRhKCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzQnVmZmVyID0gcHJldmlvdXNS
ZXNvdXJjZURhdGEtPmJ1ZmZlcigpOworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+
bWF5YmVBZGRSZXNvdXJjZURhdGEocmVxdWVzdElkLCBwcmV2aW91c0J1ZmZlci0+ZGF0YSgpLCBw
cmV2aW91c0J1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAg
ICAgIG1fcmVzb3VyY2VzRGF0YS0+c2V0UmVzb3VyY2VDb250ZW50KHJlcXVlc3RJZCwgZW1wdHlT
dHJpbmcoKSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXNvdXJjZVJlc3Bv
bnNlLT5zZXRTdHJpbmcoIm1pbWVUeXBlIl9zLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+bWltZVR5
cGUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldElu
dGVnZXIoInN0YXR1cyJfcywgcHJldmlvdXNSZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2RlKCkp
OworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKCJzdGF0dXNUZXh0Il9z
LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c1RleHQoKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZygic291cmNlIl9zLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShJ
bnNwZWN0b3I6OlByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6U291cmNlOjpEaXNrQ2FjaGUp
KTsKKyAgICAgICAgfQorICAgIH0KIAogICAgIFN0cmluZyBmcmFtZUlkID0gZnJhbWVJZGVudGlm
aWVyKGxvYWRlcik7CiAgICAgU3RyaW5nIGxvYWRlcklkID0gbG9hZGVySWRlbnRpZmllcihsb2Fk
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4u
bHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKaW5kZXggM2Q2Y2Q5OGFlNzQ4MzZi
N2Y5MmRmYmVlZmViOGU3ZTc0NmQ1MmMxOC4uOTdhNzgwZDA4MDEwZDRkYWZiYzM0NmVmYzliMzNh
MDM4YTBmMzE4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0xMDQwLDcg
KzEwNDAsOSBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBTaXplIl0gPSAiUmVzb3VyY2Ug
U2l6ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBUeXBlIl0gPSAiUmVzb3VyY2UgVHlw
ZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBkb2VzIG5vdCBoYXZlIHRpbWluZyBkYXRh
Il0gPSAiUmVzb3VyY2UgZG9lcyBub3QgaGF2ZSB0aW1pbmcgZGF0YSI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJSZXNvdXJjZSBmYWlsZWQgdG8gbG9hZC4iXSA9ICJSZXNvdXJjZSBmYWlsZWQgdG8gbG9h
ZC4iOwotbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2UgaGFzIG5vIGNvbnRlbnQiXSA9ICJSZXNv
dXJjZSBoYXMgbm8gY29udGVudCI7CisvKiBBbiBlcnJvciBtZXNzYWdlIHdoZW4gdGhlcmUgaXMg
bm8gY2FjaGVkIGNvbnRlbnQgZm9yIGEgTm90IE1vZGlmaWVkIHJlc291cmNlLiAqLworbG9jYWxp
emVkU3RyaW5nc1siUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50LiBAIFJlc291cmNlIFBy
ZXZpZXciXSA9ICJSZXNvdXJjZSBoYXMgbm8gY2FjaGVkIGNvbnRlbnQuIjsKK2xvY2FsaXplZFN0
cmluZ3NbIlJlc291cmNlIGhhcyBubyBjb250ZW50LiJdID0gIlJlc291cmNlIGhhcyBubyBjb250
ZW50LiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBoYXMgbm8gdGltaW5nIGRhdGEiXSA9
ICJSZXNvdXJjZSBoYXMgbm8gdGltaW5nIGRhdGEiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3Vy
Y2Ugd2FzIGxvYWRlZCB3aXRoIHRoZSBcdTIwMUNkYXRhXHUyMDFEIHNjaGVtZS4iXSA9ICJSZXNv
dXJjZSB3YXMgbG9hZGVkIHdpdGggdGhlIFx1MjAxQ2RhdGFcdTIwMUQgc2NoZW1lLiI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSB3YXMgc2VydmVkIGZyb20gdGhlIGNhY2hlLiJdID0gIlJl
c291cmNlIHdhcyBzZXJ2ZWQgZnJvbSB0aGUgY2FjaGUuIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwppbmRleCAwZTdm
NmE0YTc4ZjA1ZWU1Y2M4NTljNWUyNjUzM2I3YjQyZTlkNDE2Li42YWQ4NDliMzg1MzczNGZlNWJm
MWIxZDQ0OGQ5ZjgyYjAyNjFlYzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCkBAIC0xMDI3LDIwICsxMDI3LDI5
IEBAIFdJLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAg
ICAgcmVxdWVzdENvbnRlbnQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2ZpbmlzaGVkKQot
ICAgICAgICAgICAgcmV0dXJuIHN1cGVyLnJlcXVlc3RDb250ZW50KCk7CisgICAgICAgICAgICBy
ZXR1cm4gc3VwZXIucmVxdWVzdENvbnRlbnQoKS5jYXRjaCh0aGlzLnJlcXVlc3RDb250ZW50RmFp
bHVyZS5iaW5kKHRoaXMpKTsKIAogICAgICAgICBpZiAodGhpcy5fZmFpbGVkKQotICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZXJyb3I6IFdJLlVJU3RyaW5nKCJBbiBlcnJvciBv
Y2N1cnJlZCB0cnlpbmcgdG8gbG9hZCB0aGUgcmVzb3VyY2UuIil9KTsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLnJlcXVlc3RDb250ZW50RmFpbHVyZS5iaW5kKHRoaXMpKCk7CiAKICAgICAgICAg
aWYgKCF0aGlzLl9maW5pc2hUaGVuUmVxdWVzdENvbnRlbnRQcm9taXNlKSB7CiAgICAgICAgICAg
ICB0aGlzLl9maW5pc2hUaGVuUmVxdWVzdENvbnRlbnRQcm9taXNlID0gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5l
cihXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmluaXNoLCByZXNvbHZlKTsKICAgICAgICAg
ICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0Rp
ZEZhaWwsIHJlamVjdCk7Ci0gICAgICAgICAgICB9KS50aGVuKFdJLlNvdXJjZUNvZGUucHJvdG90
eXBlLnJlcXVlc3RDb250ZW50LmJpbmQodGhpcykpOworICAgICAgICAgICAgfSkudGhlbihXSS5T
b3VyY2VDb2RlLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudC5iaW5kKHRoaXMpKQorICAgICAgICAg
ICAgLmNhdGNoKHRoaXMucmVxdWVzdENvbnRlbnRGYWlsdXJlLmJpbmQodGhpcykpOwogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmlzaFRoZW5SZXF1ZXN0Q29udGVudFByb21p
c2U7CiAgICAgfQorICAgIAorICAgIHJlcXVlc3RDb250ZW50RmFpbHVyZShlcnJvcikKKyAgICB7
CisgICAgICAgIGlmIChlcnJvciAmJiAhdGhpcy5fZmFpbGVkKQorICAgICAgICAgICAgdGhpcy5t
YXJrQXNGYWlsZWQoZmFsc2UsIG51bGwsIGVycm9yLm1lc3NhZ2UgfHwgbnVsbCk7CisgICAgICAg
IAorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtlcnJvcjogV0kuVUlTdHJpbmcoIkFu
IGVycm9yIG9jY3VycmVkIHRyeWluZyB0byBsb2FkIHRoZSByZXNvdXJjZS4iKSwgbWVzc2FnZTog
dGhpcy5fZmFpbHVyZVJlYXNvblRleHR9KS50aGVuKHRoaXMuX3Byb2Nlc3NDb250ZW50LmJpbmQo
dGhpcykpOworICAgIH0KIAogICAgIGFzc29jaWF0ZVdpdGhTY3JpcHQoc2NyaXB0KQogICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IDU5M2NhMzJmNzk4NTg5OGFkNjYx
MzI5MjJmNjM2M2M4ZGQ4MmIyZTcuLjViZWM5YzhiOThhOGZhNmFhMDQ3ZjBhZTkzZDY5ZDY1YjY5
NWQwMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcwpAQCAtMTU3LDcgKzE1Nywx
NCBAQCBXSS5SZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICBzaG93R2VuZXJpY05vQ29udGVudE1lc3NhZ2Uo
KQogICAgIHsKLSAgICAgICAgdGhpcy5zaG93TWVzc2FnZShXSS5VSVN0cmluZygiUmVzb3VyY2Ug
aGFzIG5vIGNvbnRlbnQiKSk7CisgICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmco
IlJlc291cmNlIGhhcyBubyBjb250ZW50LiIpKTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5SZXNvdXJjZUNvbnRlbnRWaWV3LkV2ZW50LkNvbnRlbnRFcnJvcik7
CisgICAgfQorICAgIAorICAgIHNob3dOb0NhY2hlZENvbnRlbnRNZXNzYWdlKCkKKyAgICB7Cisg
ICAgICAgIHRoaXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmcoIlJlc291cmNlIGhhcyBubyBjYWNo
ZWQgY29udGVudC4iLCAiUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50LiBAIFJlc291cmNl
IFByZXZpZXciLCAiQW4gZXJyb3IgbWVzc2FnZSB3aGVuIHRoZXJlIGlzIG5vIGNhY2hlZCBjb250
ZW50IGZvciBhIE5vdCBNb2RpZmllZCByZXNvdXJjZS4iKSk7CiAKICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250ZW50
RXJyb3IpOwogICAgIH0KQEAgLTIxMSw3ICsyMTgsMTIgQEAgV0kuUmVzb3VyY2VDb250ZW50Vmll
dyA9IGNsYXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAg
IF9jb250ZW50QXZhaWxhYmxlKHBhcmFtZXRlcnMpCiAgICAgewogICAgICAgICBpZiAocGFyYW1l
dGVycy5lcnJvcikgewotICAgICAgICAgICAgdGhpcy5fY29udGVudEVycm9yKHBhcmFtZXRlcnMu
ZXJyb3IpOworICAgICAgICAgICAgLy8gQSAzMDQgTm90IE1vZGlmaWVkIHJlcXVlc3QgdGhhdCBp
cyBtaXNzaW5nIGNvbnRlbnQgbWVhbnMgd2UgZGlkbid0IGhhdmUgYSBjYWNoZWQgY29weS4KKyAg
ICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuc3RhdHVzQ29kZSA9PSAzMDQgJiYg
cGFyYW1ldGVycy5tZXNzYWdlID09PSAiTWlzc2luZyBjb250ZW50IG9mIHJlc291cmNlIGZvciBn
aXZlbiByZXF1ZXN0SWQiKQorICAgICAgICAgICAgICAgIHRoaXMuc2hvd05vQ2FjaGVkQ29udGVu
dE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9jb250
ZW50RXJyb3IocGFyYW1ldGVycy5lcnJvcik7CisgICAgICAgICAgICAKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0yMjQsNiArMjM2LDExIEBAIFdJLlJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICAgICAgLy8gY29udGVudCBhcnJpdmVzLiBTb3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhh
bmRsZSB0aGF0LgogICAgICAgICBpZiAodGhpcy5faGFzQ29udGVudCgpKQogICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKCFwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuY29u
dGVudCAmJiAhcGFyYW1ldGVycy5zb3VyY2VDb2RlLm1pbWVUeXBlKSB7CisgICAgICAgICAgICB0
aGlzLnNob3dHZW5lcmljTm9Db250ZW50TWVzc2FnZSgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CiAKICAgICAgICAgLy8gQ29udGVudCBpcyByZWFkeSB0byBzaG93LCBjYWxsIHRo
ZSBwdWJsaWMgbWV0aG9kIG5vdy4KICAgICAgICAgY29uc29sZS5hc3NlcnQocGFyYW1ldGVycy5z
b3VyY2VDb2RlID09PSB0aGlzLl9yZXNvdXJjZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzEyYWRlZWJhMTA4NTJkN2I0
ZDZhNDRhOTQ4NGZhM2Y5MzRlMzMyNi4uOWJlODEwODI1Y2YyY2VmZWQ5ZDc1OWRhMDU3YTYxYTc4
MzRkZDkzYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTA5LTAzICBQYXRyaWNrIEFuZ2xl
ICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZhaWxzIHRvIHBy
ZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0IGNhc2VzIGFuZCBhc3NvY2lh
dGVkIHJlc291cmNlcyB0byB0ZXN0IGhhbmRsaW5nIG9mIGAzMDQgTm90IE1vZGlmaWVkYCByZXNw
b25zZXMgdG8gWEhSIHJlcXVlc3RzLgorICAgICAgICBXZSB0ZXN0IGJvdGggWEhSIGZvciBhIFBI
UCBwYWdlIGFzIHdlbGwgYXMgZm9yIGEgdGV4dCBmaWxlLCBhcyB0aGV5IGJlaGF2ZWQgZGlmZmVy
ZW50bHkgKGluY29ycmVjdGx5KSBiZWZvcmUKKyAgICAgICAgdGhpcyBwYXRjaC4KKworICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0
Y2gtcmVzcG9uc2UtYm9keS0zMDQuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nlc3M6IENhY2hlLUNvbnRyb2wgaGVhZGVyIGZvciBm
ZXRjaC1jYWNoYWJsZS50eHQKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHA6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0OgorICAgICAgICAqIHBs
YXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9uczogVGVzdHMgcmVseSBvbiBkaXNrLWNhY2hl
IHdoaWNoIGlzIG5vdCBwcmVzZW50IGluIFdLMQorCiAyMDIwLTA5LTAyICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxpZ24gVVRGLTE2IGRl
Y29kZXIgd2l0aCBDaHJvbWUsIEZpcmVmb3gsIGFuZCBzcGVjaWZpY2F0aW9uCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNl
LWJvZHktMzA0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdhNDdjNjc3MThjNzY2NTk4M2Q3ZWVlNGM3NTk0YTNhOWM0NmIzNzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3Bv
bnNlLWJvZHktMzA0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcyIEBACitUZXN0cyBmb3IgZ2V0
dGluZyB0aGUgY29udGVudCBvZiBGZXRjaCByZXF1ZXN0cyB3aXRoIHRoZSAiMzA0IE5vdCBNb2Rp
ZmllZCIgcmVzcG9uc2Ugc3RhdHVzLgorCisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTmV0d29y
ay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQKKy0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAzMDRO
b3RDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlN
RSB0eXBlIHNob3VsZCBiZSBlbXB0eS4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQu
CitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3Vy
Y2UuTmV0d29yaworUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuCitQ
QVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LlBIUDIwME5vdENhY2hlZAor
UEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBTaG91bGQgc2VlIGNh
Y2hpbmcgaGVhZGVyLgorUEFTUzogTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQ
QVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hv
dWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IENvbnRlbnQg
c2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBi
ZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29y
ay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJjZSBz
aG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxh
aW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNlU291
cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6
IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4dCBjb250ZW50
IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Q2FjaGVkCitQQVNTOiBS
ZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUg
J3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJl
c3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2Fj
aGUKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzogVGV4
dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLgorCistLSBSdW5uaW5n
IHRlc3Qgc2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJv
ZHkuRmV0Y2gzMDQuRmlsZTMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZl
dGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlIGVtcHR5LgorUEFTUzogU3RhdHVz
IGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5S
ZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBDb250ZW50IHNob3VsZCBub3Qg
YmUgYmFzZTY0RW5jb2RlZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVk
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gz
MDQuRmlsZTIwME5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUu
CitQQVNTOiBTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLgorUEFTUzogTUlNRSB0eXBlIHNob3Vs
ZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFT
UzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5l
dHdvcmsKK1BBU1M6IENvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNvZGVkLgorUEFTUzog
VGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuRmlsZTIwMENh
Y2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5
cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAy
MDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VT
b3VyY2UuRGlza0NhY2hlCitQQVNTOiBDb250ZW50IHNob3VsZCBub3QgYmUgYmFzZTY0RW5jb2Rl
ZC4KK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0
LkZpbGUzMDRDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFT
UzogTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBz
aG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFTUzogQ29udGVudCBzaG91bGQgbm90IGJlIGJh
c2U2NEVuY29kZWQuCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJl
c291cmNlLicuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zMTFmMmUzMThkOTMwNzZmNjk5ZmFkZDEwMzg3NzRkNGM2N2Y5MDJkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRj
aC1yZXNwb25zZS1ib2R5LTMwNC5odG1sCkBAIC0wLDAgKzEsMTY1IEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5j
dGlvbiBjcmVhdGVGZXRjaEZvclBIUDIwMCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNo
LWNhY2hhYmxlLnBocCIsIHsgaGVhZGVyczogeyAnWC1TdGF0dXMtQ29kZS1OZWVkZWQnOiAnMjAw
JyB9IH0pOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvclBIUDMwNCgpIHsKKyAgICBmZXRj
aCgicmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocCIsIHsgaGVhZGVyczogeyAnWC1TdGF0dXMt
Q29kZS1OZWVkZWQnOiAnMzA0JyB9IH0pOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvckZp
bGUyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS50eHQiKTsKK30K
KworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JGaWxlMzA0KCkgeworICAgIGZldGNoKCJyZXNvdXJj
ZXMvZmV0Y2gtY2FjaGFibGUudHh0IiwgeyBoZWFkZXJzOiB7ICdJZi1Nb2RpZmllZC1TaW5jZSc6
IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSB9IH0pOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIk5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0Iik7CisKKyAgICBmdW5jdGlvbiBhZGRUZXN0Q2FzZSh7
bmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCBleHByZXNzaW9uLCBjb250ZW50SGFuZGxlcn0pIHsK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZSwKKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgc2V0dXAsCisgICAgICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgV0kuRnJhbWUuYXdhaXRFdmVudChX
SS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkKQorICAgICAgICAgICAgICAgICAgICAudGhl
bigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXNvdXJjZSA9IGV2
ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHJlc291cmNlLnR5cGUsIFdJLlJlc291cmNlLlR5cGUuRmV0Y2gsICJSZXNv
dXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCgpOworICAgICAgICAgICAgICAgICAgICB9KQor
ICAgICAgICAgICAgICAgICAgICAudGhlbihjb250ZW50SGFuZGxlcikKKyAgICAgICAgICAgICAg
ICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7
CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRS
ZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Tm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLCB3aGljaCB3aWxs
IG5vdCBleGlzdC4iLAorICAgICAgICBhc3luYyBzZXR1cCgpIHsKKyAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBpbnRlcm5hbHMuY2xlYXJNZW1vcnlDYWNo
ZSgpYCk7CisgICAgICAgIH0sCisgICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvclBI
UDMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250
ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgZW1w
dHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUu
c3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNlU291cmNlIHNob3Vs
ZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVu
dCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIlRleHQgY29udGVudCBzaG91bGQg
YmUgdW5kZWZpbmVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAyMDBO
b3RDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9u
c2UgZnJvbSBuZXR3b3JrLiIsCisgICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvclBI
UDIwMCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250
ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1siQ2FjaGUtQ29udHJvbCJdLCAicHVi
bGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUs
ICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUs
IDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVz
b3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChyYXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5v
dCBiZSBiYXNlNjRFbmNvZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3Vs
ZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5G
ZXRjaDMwNC5QSFAyMDBDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBib2R5IGZv
ciAyMDAgcmVzcG9uc2UgZnJvbSBjYWNoZS4iLAorICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRl
RmV0Y2hGb3JQSFAyMDAoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNl
Q29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlN
RSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUg
c2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
c291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlz
a0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291
cmNlLkRpc2tDYWNoZSIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChy
YXdCYXNlNjRFbmNvZGVkLCBmYWxzZSwgIkNvbnRlbnQgc2hvdWxkIG5vdCBiZSBiYXNlNjRFbmNv
ZGVkLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAi
UGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4
dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAzMDRD
YWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJl
c3BvbnNlLiIsCisgICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvclBIUDMwNCgpYCwK
KyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdC
YXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0
ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNl
U291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsICJyZXNwb25zZVNv
dXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZh
bHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNl
LiIsICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7Cisg
ICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5l
dHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUzMDROb3RDYWNoZWQiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIlRyeSBhbmQgZ2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2Us
IHdoaWNoIHdpbGwgbm90IGV4aXN0LiIsCisgICAgICAgIGFzeW5jIHNldHVwKCkgeworICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVh
ck1lbW9yeUNhY2hlKClgKTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0
ZUZldGNoRm9yRmlsZTMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3Vy
Y2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUUgdHlwZSBz
aG91bGQgYmUgZW1wdHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFs
KHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNw
b25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNl
U291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZh
bHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIlRleHQgY29u
dGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBh
ZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRj
aDMwNC5GaWxlMjAwTm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBm
b3IgMjAwIHJlc3BvbnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiBgY3Jl
YXRlRmV0Y2hGb3JGaWxlMjAwKClgLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNv
dXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VIZWFkZXJzWyJDYWNoZS1D
b250cm9sIl0sICJwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYiLCAiU2hvdWxkIHNlZSBjYWNoaW5n
IGhlYWRlci4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNl
Q29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9w
bGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJj
ZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNlU291cmNlIHNo
b3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJhd0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29u
dGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29kZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLiIsICJUZXh0
IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsuZ2V0
UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJvbSBjYWNoZS4iLAorICAgICAgICBleHBy
ZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JGaWxlMjAwKClgLAorICAgICAgICBjb250ZW50SGFuZGxl
cih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0
ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIw
MCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJl
c3BvbnNlU291cmNlLkRpc2tDYWNoZSwgInJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNv
dXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUiKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwocmF3QmFzZTY0RW5jb2RlZCwgZmFsc2UsICJDb250ZW50IHNob3VsZCBu
b3QgYmUgYmFzZTY0RW5jb2RlZC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3VyY2UuIiwgIlRleHQgY29udGVudCBzaG91
bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisg
ICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHku
RmV0Y2gzMDQuRmlsZTMwNENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGNhY2hl
ZCBib2R5IGZvciAzMDQgcmVzcG9uc2UuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZl
dGNoRm9yRmlsZTMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VD
b2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1F
IHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBz
aG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChz
b3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNr
Q2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3Vy
Y2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJh
d0Jhc2U2NEVuY29kZWQsIGZhbHNlLCAiQ29udGVudCBzaG91bGQgbm90IGJlIGJhc2U2NEVuY29k
ZWQuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQ
bGFpbiB0ZXh0IHJlc291cmNlLiIsICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0
IHJlc291cmNlLicuIik7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RD
YXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1
blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgZ2V0dGluZyB0aGUgY29udGVudCBvZiBGZXRjaCByZXF1
ZXN0cyB3aXRoIHRoZSAiMzA0IE5vdCBNb2RpZmllZCIgcmVzcG9uc2Ugc3RhdHVzLjwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGQxMjY5
NDkzOWEyOTg2NDNkNTAxNmEzMDZkZTkxMWJhYjA3ODlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNz
CkBAIC0wLDAgKzEsMyBAQAorPEZpbGVzIGZldGNoLWNhY2hhYmxlLnR4dD4KKwlIZWFkZXIgc2V0
IENhY2hlLUNvbnRyb2wgInB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIKKzwvRmlsZXM+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJmYTY0ZDRhZTIxNmJkYTUzODIxOWI2ODZmODM2NGFkYzAzYjIz
ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAKQEAgLTAsMCArMSwxNCBAQAorPD9w
aHAKKyRzdGF0dXMgPSAkX1NFUlZFUlsnSFRUUF9YX1NUQVRVU19DT0RFX05FRURFRCddOworCitp
ZiAoJHN0YXR1cyA9PSAnMzA0JykgeworICAgIGhlYWRlcigiSFRUUC8xLjEgMzA0IE5vdCBNb2Rp
ZmllZCIpOworICAgIGV4aXQ7Cit9CisKK2hlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu
Jyk7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIpOyAv
LyBPbmUgeWVhci4KKworCitlY2hvICJQbGFpbiB0ZXh0IHJlc291cmNlLiI7Cis/PgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMv
ZmV0Y2gtY2FjaGFibGUudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyYzVmYTExZTRk
YmI2ZGI4NzRiMTAxYzkxOGFkMTUyZjA1MGM1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJs
ZS50eHQKQEAgLTAsMCArMSBAQAorUGxhaW4gdGV4dCByZXNvdXJjZS4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKaW5kZXggOTcyZTUzYjdkMzUxMTM5OTYxNzg0MDgwM2UyNDc4NGVhZGE5ZjIwMC4uMTlj
ZDQ3MzdiNTQ1YWJiNGZiYTAwNWI0Yjk0Yzg4OTE1OWMyYWUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDA3LDYgKzQwNyw3IEBAIGNv
bXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJpbGl0eS1jaGFuZ2UtaW4tc3ViZnJhbWUuaHRtbCBb
IEZhaWx1cmUgXQogaHR0cC90ZXN0cy9jYWNoZS9kaXNrLWNhY2hlCiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3BvbnNlLXNvdXJjZS1kaXNrLWNhY2hlLmh0bWwKIGh0
dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Utc2l6ZXMtZGlzay1jYWNoZS5odG1s
CitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0
bWwgWyBTa2lwIF0KIAogIyBBc3luYyBpbWFnZSBkZWNvZGluZyBpcyBXSzIgb25seQogZmFzdC9p
bWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3VuZC1jaGFuZ2UuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407915</attachid>
            <date>2020-09-03 14:46:55 -0700</date>
            <delta_ts>2020-09-03 17:33:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200903174654.patch</filename>
            <type>text/plain</type>
            <size>32730</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JlYTA3Yzk0MTllZTNk
MDcwMjFhNjA1ZTgwNmI3MDdlMDcxNmFjNS4uNDE1ZTVlMjg5MjY5OTJlMzc0Nzc0YTlhYmUxZmQw
YTMxMTFjZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA5LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbAorCisgICAgICAgIEFkZGVkIHdvcmth
cm91bmQgZm9yIDMwNCBYSFIvRmV0Y2ggcmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5cGUgYW5k
IGNvbnRlbnQgYXJlIGNvcnJlY3RseSBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgZnJvbnRl
bmQgZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gcHJldmlldyB0aGUg
cmVzcG9uc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2
ZWQpOiBTdG9yaW5nIG5ldyBSZXNvdXJjZURhdGEgbWVtYmVycworICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGFGb3JVUkwpOiBTdXBwb3J0IGZvciBmaW5kaW5nIGEg
cHJldmlvdXMgbm9uLTMwNCByZXNwb25zZSBmb3IgYSBVUkwuCisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpodHRwU3RhdHVzVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRIVFRQU3RhdHVz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjptaW1lVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZXNwb25zZVRpbWVzdGFtcCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpz
ZXRSZXNwb25zZVRpbWVzdGFtcCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOiBGaXhlZCBpc3N1ZSB3aGVyZSBpdCB3YXMgcG9zc2libGUg
dGhhdCB3ZSB3b3VsZCBpbmZvcm0gdGhlCisgICAgICAgICAgICBmcm9udGVuZCB0aGF0IGEgcmVx
dWVzdCB3YXMgb2YgdHlwZSBgT3RoZXJgIGV2ZW4gdGhvdWdoIHdlIGhhZCByZXF1ZXN0IGluZm9y
bWF0aW9uIGluZGljYXRpbmcgaXQgd2FzIGBYSFJgCisgICAgICAgICAgICBvciBgRmV0Y2hgLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOiBBZGRlZCBjb2RlIHBhdGggdG8gd29yayBhcm91bmQgdW5kZXJseWluZyBpc3N1ZSB3aGVy
ZQorICAgICAgICAgICAgWEhSL0ZldGNoIDMwNHMgYXJlIG5vdCBjYWNoZWQsIGFuZCBlbmQgdXAg
bm90IHBhc3NpbmcgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHRoZSBmcm9udGVuZCBhcyBhIHJl
c3VsdC4KKwogMjAyMC0wOS0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFsaWduIFVURi0xNiBkZWNvZGVyIHdpdGggQ2hyb21lLCBGaXJl
Zm94LCBhbmQgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYzIwYjk5
OGI0ZDA3YzM1NzU2OTQ5OWZjY2ExYjQyOTc2N2YwMzViZS4uZTU1MGJhYmIzOWYzYTM2YjM3MjEx
YWEzMTJhMmEyYjYyM2Y0Yjg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMjAtMDktMDMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3IgZmFpbHMgdG8gcHJldmlldyByZXNwb25zZSBmcm9tIFhIUiBy
ZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIFJl
c3BvbnNlcyB3aXRoIGEgbm8gY29udGVudCBlcnJvciBhbmQgYSBzdGF0dXMgY29kZSBvZiAzMDQg
bm93IHNob3cgYSBgUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50YCBtZXNzYWdlIGluc3Rl
YWQKKyAgICAgICAgICAgIG9mIGEgZ2VuZXJpYyBlcnJvci4gQWxzbyByZXNwb25zZXMgd2l0aCBl
bXB0eSBjb250ZW50IGFuZCBubyBtaW1lIHR5cGUgbm93IHNob3cgYSBgUmVzb3VyY2UgaGFzIG5v
IGNvbnRlbnRgCisgICAgICAgICAgICBtZXNzYWdlLgorCisgICAgICAgICogTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1Jlc291cmNlLmpzOiAgTW9yZSBjb25zaXN0YW50IGVycm9yIGhhbmRsaW5nIG1vZGVs
IC0gcHJldmlvdXNseSBzb21lIHBhdGhzIHJlamVjdGVkIG9uCisgICAgICAgICAgICBmYWlsdXJl
IGFuZCBzb21lIHJlc29sdmVkIHdpdGggYW4gZXJyb3IgcHJvcGVydHkuCisgICAgICAgIChXSS5S
ZXNvdXJjZS5wcm90b3R5cGUucmVxdWVzdENvbnRlbnQpOgorICAgICAgICAoV0kuUmVzb3VyY2Uu
cHJvdG90eXBlLl9yZXF1ZXN0Q29udGVudEZhaWx1cmUpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qczogRXJyb3IgbWVzc2FnZXMKKyAgICAgICAg
KFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmFzeW5jIHNob3dHZW5lcmljTm9Db250
ZW50TWVzc2FnZSk6IFRleHQgbm93IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBtZXNzYWdlcy4KKyAg
ICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLnNob3dOb0NhY2hlZENvbnRl
bnRNZXNzYWdlKToKKyAgICAgICAgKFdJLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9j
b250ZW50QXZhaWxhYmxlKToKKwogMjAyMC0wOS0wMSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2ls
eWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNDMyNjQpOiBXZWIgSW5zcGVj
dG9yOiBTdHlsZSBwYW5lIGRvZXNuJ3QgdXBkYXRlIGFmdGVyIHRvZ2dsaW5nIENTUyBjbGFzcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAK
aW5kZXggNzQzMjUwOWVkZTQ0NmU3NzhjNGRmZDQ0MzQ5MDFlZTRlMzA0YzI1Mi4uZWQ3NmVlYmM1
NDI3ODMyYjJlMzFlNTNiMGUxOGY2MWFlOGY4OWQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCkBAIC0xNTIsOCArMTUyLDExIEBA
IHZvaWQgTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQsIGNvbnN0IFN0cmluCiAgICAgcmVzb3VyY2VEYXRhLT5zZXRGcmFtZUlkKGZy
YW1lSWQpOwogICAgIHJlc291cmNlRGF0YS0+c2V0VVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygp
KTsKICAgICByZXNvdXJjZURhdGEtPnNldEhUVFBTdGF0dXNDb2RlKHJlc3BvbnNlLmh0dHBTdGF0
dXNDb2RlKCkpOworICAgIHJlc291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c1RleHQocmVzcG9uc2Uu
aHR0cFN0YXR1c1RleHQoKSk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRUeXBlKHR5cGUpOwogICAg
IHJlc291cmNlRGF0YS0+c2V0Rm9yY2VCdWZmZXJEYXRhKGZvcmNlQnVmZmVyRGF0YSk7CisgICAg
cmVzb3VyY2VEYXRhLT5zZXRNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKKyAgICByZXNv
dXJjZURhdGEtPnNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lOjpub3coKSk7CiAKICAgICBp
ZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50OjpzaG91bGRUcmVhdEFzVGV4dChyZXNwb25zZS5taW1l
VHlwZSgpKSkKICAgICAgICAgcmVzb3VyY2VEYXRhLT5zZXREZWNvZGVyKEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6Y3JlYXRlVGV4dERlY29kZXIocmVzcG9uc2UubWltZVR5cGUoKSwgcmVzcG9uc2Uu
dGV4dEVuY29kaW5nTmFtZSgpKSk7CkBAIC0yNzgsNiArMjgxLDIyIEBAIE5ldHdvcmtSZXNvdXJj
ZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpkYXRhKGNv
bnN0IFN0cmluCiAgICAgcmV0dXJuIHJlc291cmNlRGF0YUZvclJlcXVlc3RJZChyZXF1ZXN0SWQp
OwogfQogCitOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhIGNvbnN0KiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6ZGF0YUZvclVSTChjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICBpZiAo
dXJsLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAKKyAgICBOZXR3b3Jr
UmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhKiBtb3N0UmVjZW50UmVzb3VyY2VEYXRhID0gbnVs
bHB0cjsKKyAgICAKKyAgICBmb3IgKGF1dG8qIHJlc291cmNlRGF0YSA6IHJlc291cmNlcygpKSB7
CisgICAgICAgIC8vIHJlc3BvbnNlVGltZXN0YW1wIGlzIGNoZWNrZWQgc28gdGhhdCB3ZSBvbmx5
IGdyYWIgdGhlIG1vc3QgcmVjZW50IHJlc3BvbnNlIGZvciB0aGUgVVJMLCBpbnN0ZWFkIG9mIHBv
dGVudGlvbmFsbHkgZ2V0dGluZyBhIG1vcmUgc3RhbGUgcmVzcG9uc2UuCisgICAgICAgIGlmIChy
ZXNvdXJjZURhdGEtPnVybCgpID09IHVybCAmJiByZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNDb2Rl
KCkgIT0gMzA0ICYmICghbW9zdFJlY2VudFJlc291cmNlRGF0YSB8fCAocmVzb3VyY2VEYXRhLT5y
ZXNwb25zZVRpbWVzdGFtcCgpID4gbW9zdFJlY2VudFJlc291cmNlRGF0YS0+cmVzcG9uc2VUaW1l
c3RhbXAoKSkpKQorICAgICAgICAgICAgbW9zdFJlY2VudFJlc291cmNlRGF0YSA9IHJlc291cmNl
RGF0YTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1vc3RSZWNlbnRSZXNvdXJjZURhdGE7Cit9
CisKIFZlY3RvcjxTdHJpbmc+IE5ldHdvcmtSZXNvdXJjZXNEYXRhOjpyZW1vdmVDYWNoZWRSZXNv
dXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgVmVjdG9yPFN0cmlu
Zz4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNl
c0RhdGEuaAppbmRleCAyOTUwODJhNjhjOWRlMzM5ZmM2NTM2ZTY0MGQxZGRhYmMyYzlmNmQzLi42
Y2VkYWIzYzU4OThmYTg0ZGQ1OWY2MTFmNzE1MDE4M2MwMmNhZWVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuaApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTc0LDkgKzc1LDE1IEBAIHB1YmxpYzoKIAogICAgICAgICBpbnQgaHR0cFN0YXR1c0NvZGUoKSBj
b25zdCB7IHJldHVybiBtX2h0dHBTdGF0dXNDb2RlOyB9CiAgICAgICAgIHZvaWQgc2V0SFRUUFN0
YXR1c0NvZGUoaW50IGh0dHBTdGF0dXNDb2RlKSB7IG1faHR0cFN0YXR1c0NvZGUgPSBodHRwU3Rh
dHVzQ29kZTsgfQorICAgICAgICAKKyAgICAgICAgY29uc3QgU3RyaW5nJiBodHRwU3RhdHVzVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1c1RleHQ7IH0KKyAgICAgICAgdm9pZCBzZXRI
VFRQU3RhdHVzVGV4dChjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0KSB7IG1faHR0cFN0YXR1
c1RleHQgPSBodHRwU3RhdHVzVGV4dDsgfQogCiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGV4dEVu
Y29kaW5nTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dEVuY29kaW5nTmFtZTsgfQogICAgICAg
ICB2b2lkIHNldFRleHRFbmNvZGluZ05hbWUoY29uc3QgU3RyaW5nJiB0ZXh0RW5jb2RpbmdOYW1l
KSB7IG1fdGV4dEVuY29kaW5nTmFtZSA9IHRleHRFbmNvZGluZ05hbWU7IH0KKyAgICAgICAgCisg
ICAgICAgIGNvbnN0IFN0cmluZyYgbWltZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21pbWVUeXBl
OyB9CisgICAgICAgIHZvaWQgc2V0TUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkgeyBt
X21pbWVUeXBlID0gbWltZVR5cGU7IH0KIAogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVj
b2Rlcj4gZGVjb2RlcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVjb2Rlci5jb3B5UmVmKCk7IH0KICAg
ICAgICAgdm9pZCBzZXREZWNvZGVyKFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiYmIGRlY29k
ZXIpIHsgbV9kZWNvZGVyID0gV1RGTW92ZShkZWNvZGVyKTsgfQpAQCAtOTIsNiArOTksOSBAQCBw
dWJsaWM6CiAKICAgICAgICAgYm9vbCBmb3JjZUJ1ZmZlckRhdGEoKSBjb25zdCB7IHJldHVybiBt
X2ZvcmNlQnVmZmVyRGF0YTsgfQogICAgICAgICB2b2lkIHNldEZvcmNlQnVmZmVyRGF0YShib29s
IGZvcmNlKSB7IG1fZm9yY2VCdWZmZXJEYXRhID0gZm9yY2U7IH0KKyAgICAgICAgCisgICAgICAg
IFdhbGxUaW1lIHJlc3BvbnNlVGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZVRp
bWVzdGFtcDsgfQorICAgICAgICB2b2lkIHNldFJlc3BvbnNlVGltZXN0YW1wKFdhbGxUaW1lIHRp
bWUpIHsgbV9yZXNwb25zZVRpbWVzdGFtcCA9IHRpbWU7IH0KIAogICAgICAgICBib29sIGhhc0J1
ZmZlcmVkRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YUJ1ZmZlcjsgfQogCkBAIC0xMDcsNiAr
MTE3LDcgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgbV91cmw7CiAgICAgICAgIFN0cmluZyBt
X2NvbnRlbnQ7CiAgICAgICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05hbWU7CisgICAgICAgIFN0
cmluZyBtX21pbWVUeXBlOwogICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9k
ZWNvZGVyOwogICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBtX2RhdGFCdWZmZXI7CiAgICAg
ICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fYnVmZmVyOwpAQCAtMTE0LDkgKzEyNSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIENhY2hlZFJlc291cmNlKiBtX2NhY2hlZFJlc291cmNlIHsgbnVsbHB0
ciB9OwogICAgICAgICBJbnNwZWN0b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSBtX3R5cGUgeyBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgfTsKICAgICAgICAgaW50IG1faHR0cFN0
YXR1c0NvZGUgeyAwIH07CisgICAgICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0OwogICAgICAg
ICBib29sIG1faXNDb250ZW50RXZpY3RlZCB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgbV9iYXNl
NjRFbmNvZGVkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2ZvcmNlQnVmZmVyRGF0YSB7IGZh
bHNlIH07CisgICAgICAgIFdhbGxUaW1lIG1fcmVzcG9uc2VUaW1lc3RhbXA7CiAgICAgfTsKIAog
ICAgIE5ldHdvcmtSZXNvdXJjZXNEYXRhKCk7CkBAIC0xMzMsNiArMTQ2LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkQ2FjaGVkUmVzb3VyY2UoY29uc3QgU3RyaW5nJiByZXF1ZXN0SWQsIENhY2hl
ZFJlc291cmNlKik7CiAgICAgdm9pZCBhZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihjb25zdCBTdHJp
bmcmIHJlcXVlc3RJZCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiwgY29uc3QgU3RyaW5nJiB0ZXh0
RW5jb2RpbmdOYW1lKTsKICAgICBSZXNvdXJjZURhdGEgY29uc3QqIGRhdGEoY29uc3QgU3RyaW5n
JiByZXF1ZXN0SWQpOworICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YUZvclVSTChjb25zdCBT
dHJpbmcmIHVybCk7CiAgICAgVmVjdG9yPFN0cmluZz4gcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2UqKTsKICAgICB2b2lkIGNsZWFyKE9wdGlvbmFsPFN0cmluZz4gcHJlc2VydmVk
TG9hZGVySWQgPSBXVEY6Om51bGxvcHQpOwogICAgIFZlY3RvcjxSZXNvdXJjZURhdGEqPiByZXNv
dXJjZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yTmV0d29ya0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yTmV0d29ya0FnZW50LmNwcAppbmRleCBlMDMzYWMxNzk5NWZiNWEyMWUzNDZjN2U1
YjcyZGI1ZjdhOGI4OTRkLi40MjdlZTU0MWIzZWM2YWM3OTFkMTI0OTcyOGQ5ODlmYzExMGM2NzE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5l
dHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC00MzUsOCArNDM1LDEwIEBAIHZvaWQgSW5zcGVjdG9y
TmV0d29ya0FnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBE
b2N1bWVudExvCiAgICAgU3RyaW5nIHRhcmdldElkID0gcmVxdWVzdC5pbml0aWF0b3JJZGVudGlm
aWVyKCk7CiAKICAgICBpZiAodHlwZSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3Vy
Y2UpIHsKLSAgICAgICAgaWYgKG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkpCisgICAgICAgIGlm
IChtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5IHx8IHJlcXVlc3QucmVxdWVzdGVyKCkgPT0gUmVz
b3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OlhIUikKICAgICAgICAgICAgIHR5cGUgPSBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlhIUlJlc291cmNlOworICAgICAgICBlbHNlIGlmIChyZXF1ZXN0LnJlcXVl
c3RlcigpID09IFJlc291cmNlUmVxdWVzdDo6UmVxdWVzdGVyOjpGZXRjaCkKKyAgICAgICAgICAg
IHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkZldGNoUmVzb3VyY2U7CiAgICAgICAgIGVsc2Ug
aWYgKGxvYWRlciAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHJlcXVlc3QudXJs
KCksIGxvYWRlci0+dXJsKCkpICYmICFsb2FkZXItPmlzQ29tbWl0dGVkKCkpCiAgICAgICAgICAg
ICB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpEb2N1bWVudFJlc291cmNlOwogICAgICAgICBl
bHNlIGlmIChsb2FkZXIpIHsKQEAgLTUzNiw2ICs1MzgsMjUgQEAgdm9pZCBJbnNwZWN0b3JOZXR3
b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZSh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW4KICAgICAvLyBSYXdSZXNvdXJjZSBpcyB1c2VkIGZvciBsb2FkaW5nIHdvcmtlciBzY3Jp
cHRzLCBhbmQgdGhvc2Ugc2hvdWxkIHN0YXkgYXMgU2NyaXB0UmVzb3VyY2UgYW5kIG5vdCBjaGFu
Z2UgdG8gWEhSUmVzb3VyY2UuCiAgICAgaWYgKHR5cGUgIT0gbmV3VHlwZSAmJiBuZXdUeXBlICE9
IEluc3BlY3RvclBhZ2VBZ2VudDo6WEhSUmVzb3VyY2UgJiYgbmV3VHlwZSAhPSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UpCiAgICAgICAgIHR5cGUgPSBuZXdUeXBlOworICAgIAor
ICAgIC8vIEZJWE1FOiA8d2Via2l0Lm9yZy9iLzIxNjEyNT4gMzA0IE5vdCBNb2RpZmllZCByZXNw
b25zZXMgZm9yIFhIUi9GZXRjaCBkbyBub3QgaGF2ZSBhbGwgdGhlaXIgaW5mb3JtYXRpb24gZnJv
bSB0aGUgY2FjaGUuCisgICAgaWYgKGlzTm90TW9kaWZpZWQgJiYgKHR5cGUgPT0gSW5zcGVjdG9y
UGFnZUFnZW50OjpYSFJSZXNvdXJjZSB8fCB0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0
Y2hSZXNvdXJjZSkgJiYgKCFjYWNoZWRSZXNvdXJjZSB8fCAhY2FjaGVkUmVzb3VyY2UtPmVuY29k
ZWRTaXplKCkpKSB7CisgICAgICAgIGlmIChhdXRvIHByZXZpb3VzUmVzb3VyY2VEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT5kYXRhRm9yVVJMKHJlc3BvbnNlLnVybCgpLnN0cmluZygpKSkgeworICAg
ICAgICAgICAgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRhLT5oYXNDb250ZW50KCkpCisgICAgICAg
ICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZUNvbnRlbnQocmVxdWVzdElkLCBw
cmV2aW91c1Jlc291cmNlRGF0YS0+Y29udGVudCgpLCBwcmV2aW91c1Jlc291cmNlRGF0YS0+YmFz
ZTY0RW5jb2RlZCgpKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByZXZpb3VzUmVzb3VyY2VEYXRh
LT5oYXNCdWZmZXJlZERhdGEoKSkgeworICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNCdWZm
ZXIgPSBwcmV2aW91c1Jlc291cmNlRGF0YS0+YnVmZmVyKCk7CisgICAgICAgICAgICAgICAgbV9y
ZXNvdXJjZXNEYXRhLT5tYXliZUFkZFJlc291cmNlRGF0YShyZXF1ZXN0SWQsIHByZXZpb3VzQnVm
ZmVyLT5kYXRhKCksIHByZXZpb3VzQnVmZmVyLT5zaXplKCkpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgCisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoIm1pbWVU
eXBlIiwgcHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKCJzdGF0dXMiX3MsIHByZXZp
b3VzUmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNl
UmVzcG9uc2UtPnNldFN0cmluZygic3RhdHVzVGV4dCJfcywgcHJldmlvdXNSZXNvdXJjZURhdGEt
Pmh0dHBTdGF0dXNUZXh0KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXNvdXJjZVJl
c3BvbnNlLT5zZXRTdHJpbmcoInNvdXJjZSJfcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVj
dG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoSW5zcGVjdG9yOjpQcm90b2NvbDo6TmV0
d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlKSk7CisgICAgICAgIH0KKyAgICB9CiAK
ICAgICBTdHJpbmcgZnJhbWVJZCA9IGZyYW1lSWRlbnRpZmllcihsb2FkZXIpOwogICAgIFN0cmlu
ZyBsb2FkZXJJZCA9IGxvYWRlcklkZW50aWZpZXIobG9hZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3Mu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzCmluZGV4IDNkNmNkOThhZTc0ODM2YjdmOTJkZmJlZWZlYjhlN2U3NDZkNTJj
MTguLjUwNmFlOTg1ZDc0NjNjYjlmNDhmYmNkNDhjNDBiMTg1YjM1NzI1NTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMTA0MCw3ICsxMDQwLDkgQEAgbG9jYWxpemVkU3Ry
aW5nc1siUmVzb3VyY2UgU2l6ZSJdID0gIlJlc291cmNlIFNpemUiOwogbG9jYWxpemVkU3RyaW5n
c1siUmVzb3VyY2UgVHlwZSJdID0gIlJlc291cmNlIFR5cGUiOwogbG9jYWxpemVkU3RyaW5nc1si
UmVzb3VyY2UgZG9lcyBub3QgaGF2ZSB0aW1pbmcgZGF0YSJdID0gIlJlc291cmNlIGRvZXMgbm90
IGhhdmUgdGltaW5nIGRhdGEiOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2UgZmFpbGVkIHRv
IGxvYWQuIl0gPSAiUmVzb3VyY2UgZmFpbGVkIHRvIGxvYWQuIjsKLWxvY2FsaXplZFN0cmluZ3Nb
IlJlc291cmNlIGhhcyBubyBjb250ZW50Il0gPSAiUmVzb3VyY2UgaGFzIG5vIGNvbnRlbnQiOwor
LyogQW4gZXJyb3IgbWVzc2FnZSBzaG93biB3aGVuIHRoZXJlIGlzIG5vIGNhY2hlZCBjb250ZW50
IGZvciBhIEhUVFAgMzA0IE5vdCBNb2RpZmllZCByZXNvdXJjZSByZXNwb25zZS4gKi8KK2xvY2Fs
aXplZFN0cmluZ3NbIlJlc291cmNlIGhhcyBubyBjYWNoZWQgY29udGVudC4gQCBSZXNvdXJjZSBQ
cmV2aWV3Il0gPSAiUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50LiI7Citsb2NhbGl6ZWRT
dHJpbmdzWyJSZXNvdXJjZSBoYXMgbm8gY29udGVudC4iXSA9ICJSZXNvdXJjZSBoYXMgbm8gY29u
dGVudC4iOwogbG9jYWxpemVkU3RyaW5nc1siUmVzb3VyY2UgaGFzIG5vIHRpbWluZyBkYXRhIl0g
PSAiUmVzb3VyY2UgaGFzIG5vIHRpbWluZyBkYXRhIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlc291
cmNlIHdhcyBsb2FkZWQgd2l0aCB0aGUgXHUyMDFDZGF0YVx1MjAxRCBzY2hlbWUuIl0gPSAiUmVz
b3VyY2Ugd2FzIGxvYWRlZCB3aXRoIHRoZSBcdTIwMUNkYXRhXHUyMDFEIHNjaGVtZS4iOwogbG9j
YWxpemVkU3RyaW5nc1siUmVzb3VyY2Ugd2FzIHNlcnZlZCBmcm9tIHRoZSBjYWNoZS4iXSA9ICJS
ZXNvdXJjZSB3YXMgc2VydmVkIGZyb20gdGhlIGNhY2hlLiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKaW5kZXggMGU3
ZjZhNGE3OGYwNWVlNWNjODU5YzVlMjY1MzNiN2I0MmU5ZDQxNi4uMzBjYWM2ZDQ1NzAyZWIyNGFk
MmVjMWJjMTgxY2RkOWU3MjllZWViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwpAQCAtMTAyNywxNiArMTAyNywx
NiBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQog
ICAgIHJlcXVlc3RDb250ZW50KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9maW5pc2hlZCkK
LSAgICAgICAgICAgIHJldHVybiBzdXBlci5yZXF1ZXN0Q29udGVudCgpOworICAgICAgICAgICAg
cmV0dXJuIHN1cGVyLnJlcXVlc3RDb250ZW50KCkuY2F0Y2godGhpcy5fcmVxdWVzdENvbnRlbnRG
YWlsdXJlLmJpbmQodGhpcykpOwogCiAgICAgICAgIGlmICh0aGlzLl9mYWlsZWQpCi0gICAgICAg
ICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtlcnJvcjogV0kuVUlTdHJpbmcoIkFuIGVycm9y
IG9jY3VycmVkIHRyeWluZyB0byBsb2FkIHRoZSByZXNvdXJjZS4iKX0pOworICAgICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlcXVlc3RDb250ZW50RmFpbHVyZSgpOwogCiAgICAgICAgIGlmICghdGhp
cy5fZmluaXNoVGhlblJlcXVlc3RDb250ZW50UHJvbWlzZSkgewogICAgICAgICAgICAgdGhpcy5f
ZmluaXNoVGhlblJlcXVlc3RDb250ZW50UHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCBy
ZWplY3QpID0+IHsKICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVz
b3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCwgcmVzb2x2ZSk7CiAgICAgICAgICAgICAgICAg
dGhpcy5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGYWlsLCBy
ZWplY3QpOwotICAgICAgICAgICAgfSkudGhlbihXSS5Tb3VyY2VDb2RlLnByb3RvdHlwZS5yZXF1
ZXN0Q29udGVudC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIH0pLnRoZW4odGhpcy5yZXF1ZXN0
Q29udGVudC5iaW5kKHRoaXMpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9m
aW5pc2hUaGVuUmVxdWVzdENvbnRlbnRQcm9taXNlOwpAQCAtMTE4NSw2ICsxMTg1LDE3IEBAIFdJ
LlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAKICAgICAg
ICAgdGhyb3cgZXJyb3JTdHJpbmc7CiAgICAgfQorICAgIAorICAgIC8vIFByaXZhdGUKKyAgICAK
KyAgICBfcmVxdWVzdENvbnRlbnRGYWlsdXJlKGVycm9yKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFByb21pc2UucmVzb2x2ZSh7CisgICAgICAgICAgICBlcnJvcjogV0kuVUlTdHJpbmcoIkFuIGVy
cm9yIG9jY3VycmVkIHRyeWluZyB0byBsb2FkIHRoZSByZXNvdXJjZS4iKSwKKyAgICAgICAgICAg
IHJlYXNvbjogZXJyb3IubWVzc2FnZSB8fCB0aGlzLl9mYWlsdXJlUmVhc29uVGV4dCwKKyAgICAg
ICAgICAgIHNvdXJjZUNvZGU6IHRoaXMKKyAgICAgICAgfSk7CisgICAgfQogfTsKIAogV0kuUmVz
b3VyY2UuVHlwZUlkZW50aWZpZXIgPSAicmVzb3VyY2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVu
dFZpZXcuanMKaW5kZXggNTkzY2EzMmY3OTg1ODk4YWQ2NjEzMjkyMmY2MzYzYzhkZDgyYjJlNy4u
OTg5N2VmNDFkM2U0Y2VmZmU3ZThhZjFkZjIxYjRjYmNhNjY5OTkzZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNv
dXJjZUNvbnRlbnRWaWV3LmpzCkBAIC0xNTcsNyArMTU3LDE0IEBAIFdJLlJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
IAogICAgIHNob3dHZW5lcmljTm9Db250ZW50TWVzc2FnZSgpCiAgICAgewotICAgICAgICB0aGlz
LnNob3dNZXNzYWdlKFdJLlVJU3RyaW5nKCJSZXNvdXJjZSBoYXMgbm8gY29udGVudCIpKTsKKyAg
ICAgICAgdGhpcy5zaG93TWVzc2FnZShXSS5VSVN0cmluZygiUmVzb3VyY2UgaGFzIG5vIGNvbnRl
bnQuIikpOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlJlc291
cmNlQ29udGVudFZpZXcuRXZlbnQuQ29udGVudEVycm9yKTsKKyAgICB9CisgICAgCisgICAgc2hv
d05vQ2FjaGVkQ29udGVudE1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgdGhpcy5zaG93TWVzc2Fn
ZShXSS5VSVN0cmluZygiUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50LiIsICJSZXNvdXJj
ZSBoYXMgbm8gY2FjaGVkIGNvbnRlbnQuIEAgUmVzb3VyY2UgUHJldmlldyIsICJBbiBlcnJvciBt
ZXNzYWdlIHNob3duIHdoZW4gdGhlcmUgaXMgbm8gY2FjaGVkIGNvbnRlbnQgZm9yIGEgSFRUUCAz
MDQgTm90IE1vZGlmaWVkIHJlc291cmNlIHJlc3BvbnNlLiIpKTsKIAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5SZXNvdXJjZUNvbnRlbnRWaWV3LkV2ZW50LkNvbnRl
bnRFcnJvcik7CiAgICAgfQpAQCAtMjExLDYgKzIxOCwxMiBAQCBXSS5SZXNvdXJjZUNvbnRlbnRW
aWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAg
ICAgX2NvbnRlbnRBdmFpbGFibGUocGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIGlmIChwYXJh
bWV0ZXJzLmVycm9yKSB7CisgICAgICAgICAgICAvLyBBIDMwNCBOb3QgTW9kaWZpZWQgcmVxdWVz
dCB0aGF0IGlzIG1pc3NpbmcgY29udGVudCBtZWFucyB3ZSBkaWRuJ3QgaGF2ZSBhIGNhY2hlZCBj
b3B5LgorICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuc291cmNlQ29kZS5zdGF0dXNDb2RlID09
IDMwNCAmJiBwYXJhbWV0ZXJzLnJlYXNvbiA9PT0gIk1pc3NpbmcgY29udGVudCBvZiByZXNvdXJj
ZSBmb3IgZ2l2ZW4gcmVxdWVzdElkIikgeworICAgICAgICAgICAgICAgIHRoaXMuc2hvd05vQ2Fj
aGVkQ29udGVudE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFcnJvcihwYXJhbWV0
ZXJzLmVycm9yKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjI0LDYgKzIz
NywxMSBAQCBXSS5SZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50Vmll
dyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIC8vIGNvbnRlbnQgYXJyaXZlcy4gU291
cmNlQ29kZVRleHRFZGl0b3Igd2lsbCBoYW5kbGUgdGhhdC4KICAgICAgICAgaWYgKHRoaXMuX2hh
c0NvbnRlbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGlmICgh
cGFyYW1ldGVycy5zb3VyY2VDb2RlLmNvbnRlbnQgJiYgIXBhcmFtZXRlcnMuc291cmNlQ29kZS5t
aW1lVHlwZSkgeworICAgICAgICAgICAgdGhpcy5zaG93R2VuZXJpY05vQ29udGVudE1lc3NhZ2Uo
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIC8vIENvbnRlbnQg
aXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUgcHVibGljIG1ldGhvZCBub3cuCiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHBhcmFtZXRlcnMuc291cmNlQ29kZSA9PT0gdGhpcy5fcmVzb3VyY2UpOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDMxMmFkZWViYTEwODUyZDdiNGQ2YTQ0YTk0ODRmYTNmOTM0ZTMzMjYuLmNiZGUwYjhh
MDNhZjRkN2IxNzcxYzIzYWVhZTc1MGNkM2E3Mzg2NzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAor
MjAyMC0wOS0wMyAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvciBmYWlscyB0byBwcmV2aWV3IHJlc3BvbnNlIGZyb20gWEhSIHJlcXVlc3Rz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTU4NTIK
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRkZWQgbmV3
IHRlc3QgY2FzZXMgYW5kIGFzc29jaWF0ZWQgcmVzb3VyY2VzIHRvIHRlc3QgaGFuZGxpbmcgb2Yg
YDMwNCBOb3QgTW9kaWZpZWRgIHJlc3BvbnNlcyB0byBYSFIgcmVxdWVzdHMuCisgICAgICAgIFdl
IHRlc3QgYm90aCBYSFIgZm9yIGEgUEhQIHBhZ2UgYXMgd2VsbCBhcyBmb3IgYSB0ZXh0IGZpbGUs
IGFzIHRoZXkgYmVoYXZlZCBkaWZmZXJlbnRseSAoaW5jb3JyZWN0bHkpIGJlZm9yZQorICAgICAg
ICB0aGlzIHBhdGNoLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9m
ZXRjaC1yZXNwb25zZS1ib2R5LTMwNC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzczogQ2Fj
aGUtQ29udHJvbCBoZWFkZXIgZm9yIGZldGNoLWNhY2hhYmxlLnR4dAorICAgICAgICAqIGh0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNo
YWJsZS50eHQ6CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zOiBU
ZXN0cyByZWx5IG9uIGRpc2stY2FjaGUgd2hpY2ggaXMgbm90IHByZXNlbnQgaW4gV0sxCisKIDIw
MjAtMDktMDIgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBBbGlnbiBVVEYtMTYgZGVjb2RlciB3aXRoIENocm9tZSwgRmlyZWZveCwgYW5kIHNw
ZWNpZmljYXRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjE1YTA5ZWRjMWUzYmE1NGFlNWRlZGVjZWY0OGU4MTZk
ODFlOWNhOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNjQgQEAKK1Rlc3RzIGZvciBnZXR0aW5nIHRoZSBjb250ZW50IG9mIEZldGNoIHJlcXVlc3Rz
IHdpdGggdGhlICIzMDQgTm90IE1vZGlmaWVkIiByZXNwb25zZSBzdGF0dXMuCisKKworPT0gUnVu
bmluZyB0ZXN0IHN1aXRlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNAorLS0gUnVu
bmluZyB0ZXN0IHNldHVwLgorLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9u
c2VCb2R5LkZldGNoMzA0LlBIUDMwNE5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJl
IEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlIGVtcHR5LgorUEFTUzogU3Rh
dHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBiZSBX
SS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hv
dWxkIGJlIHVuZGVmaW5lZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVz
cG9uc2VCb2R5LkZldGNoMzA0LlBIUDIwME5vdENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxk
IGJlIEZldGNoIHR5cGUuCitQQVNTOiBTaG91bGQgc2VlIGNhY2hpbmcgaGVhZGVyLgorUEFTUzog
TUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91
bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJl
c3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWlu
IHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVz
cG9uc2VCb2R5LkZldGNoMzA0LlBIUDIwMENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJl
IEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BB
U1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91
bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBUZXh0IGNv
bnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAzMDRDYWNoZWQKK1BB
U1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRSB0eXBlIHNob3Vs
ZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFT
UzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRp
c2tDYWNoZQorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJj
ZS4nLgorCistLSBSdW5uaW5nIHRlc3Qgc2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuRmlsZTMwNE5vdENhY2hlZAorUEFTUzogUmVz
b3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlIGVt
cHR5LgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4KK1BBU1M6IHJlc3BvbnNlU291
cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBOb3RDYWNoZWQKK1BBU1M6
IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogU2hvdWxkIHNlZSBjYWNoaW5n
IGhlYWRlci4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgorUEFTUzog
U3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNob3VsZCBi
ZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrCitQQVNTOiBUZXh0IGNvbnRlbnQg
c2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMjAwQ2FjaGVkCitQQVNTOiBS
ZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUg
J3RleHQvcGxhaW4nLgorUEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJl
c3BvbnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2Fj
aGUKK1BBU1M6IFRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0
LkZpbGUzMDRDYWNoZWQKK1BBU1M6IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFT
UzogTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBz
aG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNl
LlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZQorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAn
UGxhaW4gdGV4dCByZXNvdXJjZS4nLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkt
MzA0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjdhNjBmZTRmNGFjZGNlNDUwN2EyZDMyN2JiN2ZkYmE5Y2Fk
NWYyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQuaHRtbApAQCAtMCwwICsxLDE1NyBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgY2hhcnNldD0idXRmLTgiPgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQSFAyMDAoKSB7CisgICAgZmV0Y2goInJl
c291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAiLCB7IGhlYWRlcnM6IHsgJ1gtU3RhdHVzLUNvZGUt
TmVlZGVkJzogJzIwMCcgfSB9KTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JQSFAzMDQo
KSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNoYWJsZS5waHAiLCB7IGhlYWRlcnM6
IHsgJ1gtU3RhdHVzLUNvZGUtTmVlZGVkJzogJzMwNCcgfSB9KTsKK30KKworZnVuY3Rpb24gY3Jl
YXRlRmV0Y2hGb3JGaWxlMjAwKCkgeworICAgIGZldGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUudHh0Iik7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZUZldGNoRm9yRmlsZTMwNCgpIHsKKyAgICBm
ZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCIsIHsgaGVhZGVyczogeyAnSWYtTW9k
aWZpZWQtU2luY2UnOiBuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCkgfSB9KTsKK30KKworZnVuY3Rp
b24gdGVzdCgpCit7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1
aXRlKCJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNCIpOworCisgICAgZnVuY3Rpb24g
YWRkVGVzdENhc2Uoe25hbWUsIGRlc2NyaXB0aW9uLCBzZXR1cCwgZXhwcmVzc2lvbiwgY29udGVu
dEhhbmRsZXJ9KSB7CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5h
bWUsCisgICAgICAgICAgICBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgIHNldHVwLAorICAgICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGV4cHJlc3Npb24pOworICAgICAgICAgICAgICAgIFdJLkZyYW1l
LmF3YWl0RXZlbnQoV0kuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCkKKyAgICAgICAgICAg
ICAgICAgICAgLnRoZW4oKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
cmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291cmNlOworICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyZXNvdXJjZS50eXBlLCBXSS5SZXNvdXJjZS5UeXBl
LkZldGNoLCAiUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgfSkKKyAgICAgICAgICAgICAgICAgICAgLnRoZW4oY29udGVudEhhbmRsZXIpCisg
ICAgICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0pOworICAgIH0KKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LlBIUDMwNE5vdENhY2hlZCIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiVHJ5IGFuZCBnZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25z
ZSwgd2hpY2ggd2lsbCBub3QgZXhpc3QuIiwKKyAgICAgICAgYXN5bmMgc2V0dXAoKSB7CisgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgaW50ZXJuYWxzLmNs
ZWFyTWVtb3J5Q2FjaGUoKWApOworICAgICAgICB9LAorICAgICAgICBleHByZXNzaW9uOiBgY3Jl
YXRlRmV0Y2hGb3JQSFAzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291
cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FIHR5cGUg
c2hvdWxkIGJlIGVtcHR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVz
cG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25z
ZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCB1bmRlZmluZWQs
ICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4iKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25z
ZUJvZHkuRmV0Y2gzMDQuUEhQMjAwTm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJH
ZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNz
aW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAyMDAoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtl
cnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZUhlYWRlcnNb
IkNhY2hlLUNvbnRyb2wiXSwgInB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIsICJTaG91bGQgc2Vl
IGNhY2hpbmcgaGVhZGVyLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLm1pbWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJl
ICd0ZXh0L3BsYWluJy4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
c291cmNlQ29kZS5zdGF0dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3Bv
bnNlU291cmNlLCBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrLCAicmVzcG9uc2VT
b3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsiKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQg
cmVzb3VyY2UuIiwgIlRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2Uu
Jy4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMjAwQ2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gY2FjaGUu
IiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yUEhQMjAwKClgLAorICAgICAg
ICBjb250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVu
Y29kZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxh
aW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2Rl
LnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2Us
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgInJlc3BvbnNlU291cmNlIHNo
b3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUiKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3Vy
Y2UuIiwgIlRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsK
KyAgICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
TmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Q2FjaGVkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJHZXQgY2FjaGVkIGJvZHkgZm9yIDMwNCByZXNwb25zZS4iLAorICAgICAg
ICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAzMDQoKWAsCisgICAgICAgIGNvbnRlbnRI
YW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlw
ZSwgInRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29k
ZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3Vy
Y2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJ
LlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4
dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9
CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdl
dFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMzA0Tm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3Jp
cHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLCB3aGljaCB3
aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBhc3luYyBzZXR1cCgpIHsKKyAgICAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBpbnRlcm5hbHMuY2xlYXJNZW1vcnlD
YWNoZSgpYCk7CisgICAgICAgIH0sCisgICAgICAgIGV4cHJlc3Npb246IGBjcmVhdGVGZXRjaEZv
ckZpbGUzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwg
Y29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwgIiIsICJNSU1FIHR5cGUgc2hvdWxkIGJl
IGVtcHR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VD
b2RlLnN0YXR1c0NvZGUsIDMwNCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAzMDQuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3Vy
Y2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNvdXJjZSBz
aG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCB1bmRlZmluZWQsICJUZXh0IGNv
bnRlbnQgc2hvdWxkIGJlIHVuZGVmaW5lZC4iKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAg
YWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0
Y2gzMDQuRmlsZTIwME5vdENhY2hlZCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiR2V0IGJvZHkg
Zm9yIDIwMCByZXNwb25zZSBmcm9tIG5ldHdvcmsuIiwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNy
ZWF0ZUZldGNoRm9yRmlsZTIwMCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBz
b3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVyc1siQ2FjaGUt
Q29udHJvbCJdLCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBzZWUgY2FjaGlu
ZyBoZWFkZXIuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJj
ZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQv
cGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VD
b2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3Vy
Y2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25zZVNvdXJjZSBz
aG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJj
ZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJO
ZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMjAwQ2FjaGVkIiwKKyAgICAgICAg
ZGVzY3JpcHRpb246ICJHZXQgYm9keSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gY2FjaGUuIiwKKyAg
ICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yRmlsZTIwMCgpYCwKKyAgICAgICAgY29u
dGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVk
fSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1p
bWVUeXBlLCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4i
KTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0
dXNDb2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5S
ZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQg
YmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLiIs
ICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7CisgICAg
ICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdv
cmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUzMDRDYWNoZWQiLAorICAgICAgICBkZXNj
cmlwdGlvbjogIkdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLiIsCisgICAgICAgIGV4
cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvckZpbGUzMDQoKWAsCisgICAgICAgIGNvbnRlbnRIYW5k
bGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0RW5jb2RlZH0pIHsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5taW1lVHlwZSwg
InRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuIik7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwg
MjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2Uu
UmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJl
c291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNvdXJjZS4iLCAiVGV4dCBj
b250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIpOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKK30KKzwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVzdHMgZm9yIGdldHRp
bmcgdGhlIGNvbnRlbnQgb2YgRmV0Y2ggcmVxdWVzdHMgd2l0aCB0aGUgIjMwNCBOb3QgTW9kaWZp
ZWQiIHJlc3BvbnNlIHN0YXR1cy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8uaHRhY2Nl
c3MgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy8u
aHRhY2Nlc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYThkMTI2OTQ5MzlhMjk4NjQzZDUwMTZhMzA2ZGU5MTFiYWIw
Nzg5YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L25ldHdvcmsvcmVzb3VyY2VzLy5odGFjY2VzcwpAQCAtMCwwICsxLDMgQEAKKzxGaWxlcyBmZXRj
aC1jYWNoYWJsZS50eHQ+CisJSGVhZGVyIHNldCBDYWNoZS1Db250cm9sICJwdWJsaWMsIG1heC1h
Z2U9MzE1NTY5MjYiCis8L0ZpbGVzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
L2ZldGNoLWNhY2hhYmxlLnBocCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZmE2NGQ0YWUy
MTZiZGE1MzgyMTliNjg2ZjgzNjRhZGMwM2IyM2UwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUucGhwCkBAIC0wLDAgKzEsMTQgQEAKKzw/cGhwCiskc3RhdHVzID0gJF9TRVJWRVJbJ0hUVFBf
WF9TVEFUVVNfQ09ERV9ORUVERUQnXTsKKworaWYgKCRzdGF0dXMgPT0gJzMwNCcpIHsKKyAgICBo
ZWFkZXIoIkhUVFAvMS4xIDMwNCBOb3QgTW9kaWZpZWQiKTsKKyAgICBleGl0OworfQorCitoZWFk
ZXIoJ0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbicpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBw
dWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYiKTsgLy8gT25lIHllYXIuCisKKworZWNobyAiUGxhaW4g
dGV4dCByZXNvdXJjZS4iOworPz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
aW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnR4dCBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxl
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lMmM1ZmExMWU0ZGJiNmRiODc0YjEwMWM5MThhZDE1MmYwNTBjNTk4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0
d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0CkBAIC0wLDAgKzEgQEAKK1BsYWluIHRl
eHQgcmVzb3VyY2UuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDk3MmU1M2I3ZDM1MTEzOTk2
MTc4NDA4MDNlMjQ3ODRlYWRhOWYyMDAuLjE5Y2Q0NzM3YjU0NWFiYjRmYmEwMDViNGI5NGM4ODkx
NTljMmFlMjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4
cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTQwNyw2ICs0MDcsNyBAQCBjb21wb3NpdGluZy92aXNpYmlsaXR5L3Zpc2liaWxp
dHktY2hhbmdlLWluLXN1YmZyYW1lLmh0bWwgWyBGYWlsdXJlIF0KIGh0dHAvdGVzdHMvY2FjaGUv
ZGlzay1jYWNoZQogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZS1yZXNwb25z
ZS1zb3VyY2UtZGlzay1jYWNoZS5odG1sCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jl
c291cmNlLXNpemVzLWRpc2stY2FjaGUuaHRtbAoraHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29y
ay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC5odG1sIFsgU2tpcCBdCiAKICMgQXN5bmMgaW1hZ2Ug
ZGVjb2RpbmcgaXMgV0syIG9ubHkKIGZhc3QvaW1hZ2VzL2FzeW5jLWltYWdlLWJhY2tncm91bmQt
Y2hhbmdlLmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407936</attachid>
            <date>2020-09-03 17:33:49 -0700</date>
            <delta_ts>2020-09-03 18:12:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215852-20200903203348.patch</filename>
            <type>text/plain</type>
            <size>32732</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2NDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2JlYTA3Yzk0MTllZTNk
MDcwMjFhNjA1ZTgwNmI3MDdlMDcxNmFjNS4uNDE1ZTVlMjg5MjY5OTJlMzc0Nzc0YTlhYmUxZmQw
YTMxMTFjZGU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTA5LTAzICBQYXRy
aWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yIGZh
aWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVzdHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1MgorCisgICAgICAgIFJldmll
d2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHkuaHRtbAorCisgICAgICAgIEFkZGVkIHdvcmth
cm91bmQgZm9yIDMwNCBYSFIvRmV0Y2ggcmVxdWVzdHMgc28gdGhhdCB0aGUgbWltZVR5cGUgYW5k
IGNvbnRlbnQgYXJlIGNvcnJlY3RseSBzZXQsIG90aGVyd2lzZSB0aGUKKyAgICAgICAgZnJvbnRl
bmQgZG9lcyBub3QgaGF2ZSB0aGUgaW5mb3JtYXRpb24gaXQgbmVlZHMgdG8gcHJldmlldyB0aGUg
cmVzcG9uc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmV0d29ya1Jlc291cmNlc0RhdGE6OnJlc3BvbnNlUmVjZWl2
ZWQpOiBTdG9yaW5nIG5ldyBSZXNvdXJjZURhdGEgbWVtYmVycworICAgICAgICAoV2ViQ29yZTo6
TmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGFGb3JVUkwpOiBTdXBwb3J0IGZvciBmaW5kaW5nIGEg
cHJldmlvdXMgbm9uLTMwNCByZXNwb25zZSBmb3IgYSBVUkwuCisgICAgICAgICogaW5zcGVjdG9y
L05ldHdvcmtSZXNvdXJjZXNEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3Vy
Y2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpodHRwU3RhdHVzVGV4dCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRIVFRQU3RhdHVz
VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VE
YXRhOjptaW1lVHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2Vz
RGF0YTo6UmVzb3VyY2VEYXRhOjpzZXRNSU1FVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpOZXR3
b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpyZXNwb25zZVRpbWVzdGFtcCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpOZXR3b3JrUmVzb3VyY2VzRGF0YTo6UmVzb3VyY2VEYXRhOjpz
ZXRSZXNwb25zZVRpbWVzdGFtcCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JOZXR3b3JrQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0Fn
ZW50Ojp3aWxsU2VuZFJlcXVlc3QpOiBGaXhlZCBpc3N1ZSB3aGVyZSBpdCB3YXMgcG9zc2libGUg
dGhhdCB3ZSB3b3VsZCBpbmZvcm0gdGhlCisgICAgICAgICAgICBmcm9udGVuZCB0aGF0IGEgcmVx
dWVzdCB3YXMgb2YgdHlwZSBgT3RoZXJgIGV2ZW4gdGhvdWdoIHdlIGhhZCByZXF1ZXN0IGluZm9y
bWF0aW9uIGluZGljYXRpbmcgaXQgd2FzIGBYSFJgCisgICAgICAgICAgICBvciBgRmV0Y2hgLgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yTmV0d29ya0FnZW50OjpkaWRSZWNlaXZlUmVzcG9u
c2UpOiBBZGRlZCBjb2RlIHBhdGggdG8gd29yayBhcm91bmQgdW5kZXJseWluZyBpc3N1ZSB3aGVy
ZQorICAgICAgICAgICAgWEhSL0ZldGNoIDMwNHMgYXJlIG5vdCBjYWNoZWQsIGFuZCBlbmQgdXAg
bm90IHBhc3NpbmcgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIHRoZSBmcm9udGVuZCBhcyBhIHJl
c3VsdC4KKwogMjAyMC0wOS0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEFsaWduIFVURi0xNiBkZWNvZGVyIHdpdGggQ2hyb21lLCBGaXJl
Zm94LCBhbmQgc3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggYzIwYjk5
OGI0ZDA3YzM1NzU2OTQ5OWZjY2ExYjQyOTc2N2YwMzViZS4uYjQ5MGQ3MTUxNjk4ZGJkOTE2MThk
ZWI2MmM0Mjc0MzllZjAyNDA0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjQgQEAKKzIwMjAtMDktMDMgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3IgZmFpbHMgdG8gcHJldmlldyByZXNwb25zZSBmcm9tIFhIUiBy
ZXF1ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE1ODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIFJl
c3BvbnNlcyB3aXRoIGEgbm8gY29udGVudCBlcnJvciBhbmQgYSBzdGF0dXMgY29kZSBvZiAzMDQg
bm93IHNob3cgYSBgUmVzb3VyY2UgaGFzIG5vIGNhY2hlZCBjb250ZW50YCBtZXNzYWdlIGluc3Rl
YWQKKyAgICAgICAgICAgIG9mIGEgZ2VuZXJpYyBlcnJvci4gQWxzbyByZXNwb25zZXMgd2l0aCBl
bXB0eSBjb250ZW50IGFuZCBubyBtaW1lIHR5cGUgbm93IHNob3cgYSBgUmVzb3VyY2UgaGFzIG5v
IGNvbnRlbnRgCisgICAgICAgICAgICBtZXNzYWdlLgorCisgICAgICAgICogTG9jYWxpemF0aW9u
cy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL1Jlc291cmNlLmpzOiBNb3JlIGNvbnNpc3RhbnQgZXJyb3IgaGFuZGxpbmcgbW9kZWwg
LSBwcmV2aW91c2x5IHNvbWUgcGF0aHMgcmVqZWN0ZWQgb24KKyAgICAgICAgICAgIGZhaWx1cmUg
YW5kIHNvbWUgcmVzb2x2ZWQgd2l0aCBhbiBlcnJvciBwcm9wZXJ0eS4KKyAgICAgICAgKFdJLlJl
c291cmNlLnByb3RvdHlwZS5yZXF1ZXN0Q29udGVudCk6CisgICAgICAgIChXSS5SZXNvdXJjZS5w
cm90b3R5cGUuX3JlcXVlc3RDb250ZW50RmFpbHVyZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3LmpzOiBFcnJvciBtZXNzYWdlcworICAgICAgICAo
V0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuYXN5bmMgc2hvd0dlbmVyaWNOb0NvbnRl
bnRNZXNzYWdlKTogVGV4dCBub3cgY29uc2lzdGVudCB3aXRoIG90aGVyIG1lc3NhZ2VzLgorICAg
ICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd05vQ2FjaGVkQ29udGVu
dE1lc3NhZ2UpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2Nv
bnRlbnRBdmFpbGFibGUpOgorCiAyMDIwLTA5LTAxICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5
ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI0MzI2NCk6IFdlYiBJbnNwZWN0
b3I6IFN0eWxlIHBhbmUgZG9lc24ndCB1cGRhdGUgYWZ0ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL05ldHdvcmtSZXNvdXJjZXNEYXRhLmNwcApp
bmRleCA3NDMyNTA5ZWRlNDQ2ZTc3OGM0ZGZkNDQzNDkwMWVlNGUzMDRjMjUyLi5lZDc2ZWViYzU0
Mjc4MzJiMmUzMWU1M2IwZTE4ZjYxYWU4Zjg5ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvTmV0d29ya1Jlc291cmNlc0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5jcHAKQEAgLTE1Miw4ICsxNTIsMTEgQEAg
dm9pZCBOZXR3b3JrUmVzb3VyY2VzRGF0YTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCwgY29uc3QgU3RyaW4KICAgICByZXNvdXJjZURhdGEtPnNldEZyYW1lSWQoZnJh
bWVJZCk7CiAgICAgcmVzb3VyY2VEYXRhLT5zZXRVUkwocmVzcG9uc2UudXJsKCkuc3RyaW5nKCkp
OwogICAgIHJlc291cmNlRGF0YS0+c2V0SFRUUFN0YXR1c0NvZGUocmVzcG9uc2UuaHR0cFN0YXR1
c0NvZGUoKSk7CisgICAgcmVzb3VyY2VEYXRhLT5zZXRIVFRQU3RhdHVzVGV4dChyZXNwb25zZS5o
dHRwU3RhdHVzVGV4dCgpKTsKICAgICByZXNvdXJjZURhdGEtPnNldFR5cGUodHlwZSk7CiAgICAg
cmVzb3VyY2VEYXRhLT5zZXRGb3JjZUJ1ZmZlckRhdGEoZm9yY2VCdWZmZXJEYXRhKTsKKyAgICBy
ZXNvdXJjZURhdGEtPnNldE1JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOworICAgIHJlc291
cmNlRGF0YS0+c2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWU6Om5vdygpKTsKIAogICAgIGlm
IChJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OnNob3VsZFRyZWF0QXNUZXh0KHJlc3BvbnNlLm1pbWVU
eXBlKCkpKQogICAgICAgICByZXNvdXJjZURhdGEtPnNldERlY29kZXIoSW5zcGVjdG9yTmV0d29y
a0FnZW50OjpjcmVhdGVUZXh0RGVjb2RlcihyZXNwb25zZS5taW1lVHlwZSgpLCByZXNwb25zZS50
ZXh0RW5jb2RpbmdOYW1lKCkpKTsKQEAgLTI3OCw2ICsyODEsMjIgQEAgTmV0d29ya1Jlc291cmNl
c0RhdGE6OlJlc291cmNlRGF0YSBjb25zdCogTmV0d29ya1Jlc291cmNlc0RhdGE6OmRhdGEoY29u
c3QgU3RyaW4KICAgICByZXR1cm4gcmVzb3VyY2VEYXRhRm9yUmVxdWVzdElkKHJlcXVlc3RJZCk7
CiB9CiAKK05ldHdvcmtSZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEgY29uc3QqIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpkYXRhRm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICh1
cmwuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIAorICAgIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhOjpSZXNvdXJjZURhdGEqIG1vc3RSZWNlbnRSZXNvdXJjZURhdGEgPSBudWxs
cHRyOworICAgIAorICAgIGZvciAoYXV0byogcmVzb3VyY2VEYXRhIDogcmVzb3VyY2VzKCkpIHsK
KyAgICAgICAgLy8gcmVzcG9uc2VUaW1lc3RhbXAgaXMgY2hlY2tlZCBzbyB0aGF0IHdlIG9ubHkg
Z3JhYiB0aGUgbW9zdCByZWNlbnQgcmVzcG9uc2UgZm9yIHRoZSBVUkwsIGluc3RlYWQgb2YgcG90
ZW50aW9uYWxseSBnZXR0aW5nIGEgbW9yZSBzdGFsZSByZXNwb25zZS4KKyAgICAgICAgaWYgKHJl
c291cmNlRGF0YS0+dXJsKCkgPT0gdXJsICYmIHJlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUo
KSAhPSAzMDQgJiYgKCFtb3N0UmVjZW50UmVzb3VyY2VEYXRhIHx8IChyZXNvdXJjZURhdGEtPnJl
c3BvbnNlVGltZXN0YW1wKCkgPiBtb3N0UmVjZW50UmVzb3VyY2VEYXRhLT5yZXNwb25zZVRpbWVz
dGFtcCgpKSkpCisgICAgICAgICAgICBtb3N0UmVjZW50UmVzb3VyY2VEYXRhID0gcmVzb3VyY2VE
YXRhOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gbW9zdFJlY2VudFJlc291cmNlRGF0YTsKK30K
KwogVmVjdG9yPFN0cmluZz4gTmV0d29ya1Jlc291cmNlc0RhdGE6OnJlbW92ZUNhY2hlZFJlc291
cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsKICAgICBWZWN0b3I8U3RyaW5n
PiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvTmV0d29ya1Jl
c291cmNlc0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2Vz
RGF0YS5oCmluZGV4IDI5NTA4MmE2OGM5ZGUzMzlmYzY1MzZlNjQwZDFkZGFiYzJjOWY2ZDMuLjZj
ZWRhYjNjNTg5OGZhODRkZDU5ZjYxMWY3MTUwMTgzYzAyY2FlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9OZXR3b3JrUmVzb3VyY2VzRGF0YS5oCkBAIC0zMiw2ICszMiw3IEBA
CiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
NzQsOSArNzUsMTUgQEAgcHVibGljOgogCiAgICAgICAgIGludCBodHRwU3RhdHVzQ29kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faHR0cFN0YXR1c0NvZGU7IH0KICAgICAgICAgdm9pZCBzZXRIVFRQU3Rh
dHVzQ29kZShpbnQgaHR0cFN0YXR1c0NvZGUpIHsgbV9odHRwU3RhdHVzQ29kZSA9IGh0dHBTdGF0
dXNDb2RlOyB9CisgICAgICAgIAorICAgICAgICBjb25zdCBTdHJpbmcmIGh0dHBTdGF0dXNUZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9odHRwU3RhdHVzVGV4dDsgfQorICAgICAgICB2b2lkIHNldEhU
VFBTdGF0dXNUZXh0KGNvbnN0IFN0cmluZyYgaHR0cFN0YXR1c1RleHQpIHsgbV9odHRwU3RhdHVz
VGV4dCA9IGh0dHBTdGF0dXNUZXh0OyB9CiAKICAgICAgICAgY29uc3QgU3RyaW5nJiB0ZXh0RW5j
b2RpbmdOYW1lKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0RW5jb2RpbmdOYW1lOyB9CiAgICAgICAg
IHZvaWQgc2V0VGV4dEVuY29kaW5nTmFtZShjb25zdCBTdHJpbmcmIHRleHRFbmNvZGluZ05hbWUp
IHsgbV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29kaW5nTmFtZTsgfQorICAgICAgICAKKyAg
ICAgICAgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWltZVR5cGU7
IH0KKyAgICAgICAgdm9pZCBzZXRNSU1FVHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlKSB7IG1f
bWltZVR5cGUgPSBtaW1lVHlwZTsgfQogCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyKCkgY29uc3QgeyByZXR1cm4gbV9kZWNvZGVyLmNvcHlSZWYoKTsgfQogICAg
ICAgICB2b2lkIHNldERlY29kZXIoUmVmUHRyPFRleHRSZXNvdXJjZURlY29kZXI+JiYgZGVjb2Rl
cikgeyBtX2RlY29kZXIgPSBXVEZNb3ZlKGRlY29kZXIpOyB9CkBAIC05Miw2ICs5OSw5IEBAIHB1
YmxpYzoKIAogICAgICAgICBib29sIGZvcmNlQnVmZmVyRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9yY2VCdWZmZXJEYXRhOyB9CiAgICAgICAgIHZvaWQgc2V0Rm9yY2VCdWZmZXJEYXRhKGJvb2wg
Zm9yY2UpIHsgbV9mb3JjZUJ1ZmZlckRhdGEgPSBmb3JjZTsgfQorICAgICAgICAKKyAgICAgICAg
V2FsbFRpbWUgcmVzcG9uc2VUaW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlVGlt
ZXN0YW1wOyB9CisgICAgICAgIHZvaWQgc2V0UmVzcG9uc2VUaW1lc3RhbXAoV2FsbFRpbWUgdGlt
ZSkgeyBtX3Jlc3BvbnNlVGltZXN0YW1wID0gdGltZTsgfQogCiAgICAgICAgIGJvb2wgaGFzQnVm
ZmVyZWREYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhQnVmZmVyOyB9CiAKQEAgLTEwNyw2ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIFN0cmluZyBtX3VybDsKICAgICAgICAgU3RyaW5nIG1f
Y29udGVudDsKICAgICAgICAgU3RyaW5nIG1fdGV4dEVuY29kaW5nTmFtZTsKKyAgICAgICAgU3Ry
aW5nIG1fbWltZVR5cGU7CiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2Rl
Y29kZXI7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IG1fZGF0YUJ1ZmZlcjsKICAgICAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gbV9idWZmZXI7CkBAIC0xMTQsOSArMTI1LDExIEBAIHB1
YmxpYzoKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fY2FjaGVkUmVzb3VyY2UgeyBudWxscHRy
IH07CiAgICAgICAgIEluc3BlY3RvclBhZ2VBZ2VudDo6UmVzb3VyY2VUeXBlIG1fdHlwZSB7IElu
c3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSB9OwogICAgICAgICBpbnQgbV9odHRwU3Rh
dHVzQ29kZSB7IDAgfTsKKyAgICAgICAgU3RyaW5nIG1faHR0cFN0YXR1c1RleHQ7CiAgICAgICAg
IGJvb2wgbV9pc0NvbnRlbnRFdmljdGVkIHsgZmFsc2UgfTsKICAgICAgICAgYm9vbCBtX2Jhc2U2
NEVuY29kZWQgeyBmYWxzZSB9OwogICAgICAgICBib29sIG1fZm9yY2VCdWZmZXJEYXRhIHsgZmFs
c2UgfTsKKyAgICAgICAgV2FsbFRpbWUgbV9yZXNwb25zZVRpbWVzdGFtcDsKICAgICB9OwogCiAg
ICAgTmV0d29ya1Jlc291cmNlc0RhdGEoKTsKQEAgLTEzMyw2ICsxNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBhZGRDYWNoZWRSZXNvdXJjZShjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgQ2FjaGVk
UmVzb3VyY2UqKTsKICAgICB2b2lkIGFkZFJlc291cmNlU2hhcmVkQnVmZmVyKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmLCBjb25zdCBTdHJpbmcmIHRleHRF
bmNvZGluZ05hbWUpOwogICAgIFJlc291cmNlRGF0YSBjb25zdCogZGF0YShjb25zdCBTdHJpbmcm
IHJlcXVlc3RJZCk7CisgICAgUmVzb3VyY2VEYXRhIGNvbnN0KiBkYXRhRm9yVVJMKGNvbnN0IFN0
cmluZyYgdXJsKTsKICAgICBWZWN0b3I8U3RyaW5nPiByZW1vdmVDYWNoZWRSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZSopOwogICAgIHZvaWQgY2xlYXIoT3B0aW9uYWw8U3RyaW5nPiBwcmVzZXJ2ZWRM
b2FkZXJJZCA9IFdURjo6bnVsbG9wdCk7CiAgICAgVmVjdG9yPFJlc291cmNlRGF0YSo+IHJlc291
cmNlcygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IGUwMzNhYzE3OTk1ZmI1YTIxZTM0NmM3ZTVi
NzJkYjVmN2E4Yjg5NGQuLjRjYmI3N2MxMGMwZDI0YmNhNmNjYjc2ODY1ODA5ZWQwMmZiMjlkZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0
d29ya0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3Rvck5ldHdvcmtBZ2VudC5jcHAKQEAgLTQzNSw4ICs0MzUsMTAgQEAgdm9pZCBJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TG8KICAgICBTdHJpbmcgdGFyZ2V0SWQgPSByZXF1ZXN0LmluaXRpYXRvcklkZW50aWZp
ZXIoKTsKIAogICAgIGlmICh0eXBlID09IEluc3BlY3RvclBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJj
ZSkgewotICAgICAgICBpZiAobV9sb2FkaW5nWEhSU3luY2hyb25vdXNseSkKKyAgICAgICAgaWYg
KG1fbG9hZGluZ1hIUlN5bmNocm9ub3VzbHkgfHwgcmVxdWVzdC5yZXF1ZXN0ZXIoKSA9PSBSZXNv
dXJjZVJlcXVlc3Q6OlJlcXVlc3Rlcjo6WEhSKQogICAgICAgICAgICAgdHlwZSA9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6WEhSUmVzb3VyY2U7CisgICAgICAgIGVsc2UgaWYgKHJlcXVlc3QucmVxdWVz
dGVyKCkgPT0gUmVzb3VyY2VSZXF1ZXN0OjpSZXF1ZXN0ZXI6OkZldGNoKQorICAgICAgICAgICAg
dHlwZSA9IEluc3BlY3RvclBhZ2VBZ2VudDo6RmV0Y2hSZXNvdXJjZTsKICAgICAgICAgZWxzZSBp
ZiAobG9hZGVyICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIocmVxdWVzdC51cmwo
KSwgbG9hZGVyLT51cmwoKSkgJiYgIWxvYWRlci0+aXNDb21taXR0ZWQoKSkKICAgICAgICAgICAg
IHR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2U7CiAgICAgICAgIGVs
c2UgaWYgKGxvYWRlcikgewpAQCAtNTM2LDYgKzUzOCwyNSBAQCB2b2lkIEluc3BlY3Rvck5ldHdv
cmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9j
dW1lbgogICAgIC8vIFJhd1Jlc291cmNlIGlzIHVzZWQgZm9yIGxvYWRpbmcgd29ya2VyIHNjcmlw
dHMsIGFuZCB0aG9zZSBzaG91bGQgc3RheSBhcyBTY3JpcHRSZXNvdXJjZSBhbmQgbm90IGNoYW5n
ZSB0byBYSFJSZXNvdXJjZS4KICAgICBpZiAodHlwZSAhPSBuZXdUeXBlICYmIG5ld1R5cGUgIT0g
SW5zcGVjdG9yUGFnZUFnZW50OjpYSFJSZXNvdXJjZSAmJiBuZXdUeXBlICE9IEluc3BlY3RvclBh
Z2VBZ2VudDo6T3RoZXJSZXNvdXJjZSkKICAgICAgICAgdHlwZSA9IG5ld1R5cGU7CisgICAgCisg
ICAgLy8gRklYTUU6IDx3ZWJraXQub3JnL2IvMjE2MTI1PiAzMDQgTm90IE1vZGlmaWVkIHJlc3Bv
bnNlcyBmb3IgWEhSL0ZldGNoIGRvIG5vdCBoYXZlIGFsbCB0aGVpciBpbmZvcm1hdGlvbiBmcm9t
IHRoZSBjYWNoZS4KKyAgICBpZiAoaXNOb3RNb2RpZmllZCAmJiAodHlwZSA9PSBJbnNwZWN0b3JQ
YWdlQWdlbnQ6OlhIUlJlc291cmNlIHx8IHR5cGUgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpGZXRj
aFJlc291cmNlKSAmJiAoIWNhY2hlZFJlc291cmNlIHx8ICFjYWNoZWRSZXNvdXJjZS0+ZW5jb2Rl
ZFNpemUoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8gcHJldmlvdXNSZXNvdXJjZURhdGEgPSBtX3Jl
c291cmNlc0RhdGEtPmRhdGFGb3JVUkwocmVzcG9uc2UudXJsKCkuc3RyaW5nKCkpKSB7CisgICAg
ICAgICAgICBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEtPmhhc0NvbnRlbnQoKSkKKyAgICAgICAg
ICAgICAgICBtX3Jlc291cmNlc0RhdGEtPnNldFJlc291cmNlQ29udGVudChyZXF1ZXN0SWQsIHBy
ZXZpb3VzUmVzb3VyY2VEYXRhLT5jb250ZW50KCksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5iYXNl
NjRFbmNvZGVkKCkpOworICAgICAgICAgICAgZWxzZSBpZiAocHJldmlvdXNSZXNvdXJjZURhdGEt
Pmhhc0J1ZmZlcmVkRGF0YSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c0J1ZmZl
ciA9IHByZXZpb3VzUmVzb3VyY2VEYXRhLT5idWZmZXIoKTsKKyAgICAgICAgICAgICAgICBtX3Jl
c291cmNlc0RhdGEtPm1heWJlQWRkUmVzb3VyY2VEYXRhKHJlcXVlc3RJZCwgcHJldmlvdXNCdWZm
ZXItPmRhdGEoKSwgcHJldmlvdXNCdWZmZXItPnNpemUoKSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZygibWltZVR5
cGUiX3MsIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0SW50ZWdlcigic3RhdHVzIl9zLCBwcmV2
aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7CisgICAgICAgICAgICByZXNvdXJj
ZVJlc3BvbnNlLT5zZXRTdHJpbmcoInN0YXR1c1RleHQiX3MsIHByZXZpb3VzUmVzb3VyY2VEYXRh
LT5odHRwU3RhdHVzVGV4dCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmVzb3VyY2VS
ZXNwb25zZS0+c2V0U3RyaW5nKCJzb3VyY2UiX3MsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3Bl
Y3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok5l
dHdvcms6OlJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSkpOworICAgICAgICB9CisgICAgfQog
CiAgICAgU3RyaW5nIGZyYW1lSWQgPSBmcmFtZUlkZW50aWZpZXIobG9hZGVyKTsKICAgICBTdHJp
bmcgbG9hZGVySWQgPSBsb2FkZXJJZGVudGlmaWVyKGxvYWRlcik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxp
emVkU3RyaW5ncy5qcwppbmRleCAzZDZjZDk4YWU3NDgzNmI3ZjkyZGZiZWVmZWI4ZTdlNzQ2ZDUy
YzE4Li41MDZhZTk4NWQ3NDYzY2I5ZjQ4ZmJjZDQ4YzQwYjE4NWIzNTcyNTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRT
dHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTEwNDAsNyArMTA0MCw5IEBAIGxvY2FsaXplZFN0
cmluZ3NbIlJlc291cmNlIFNpemUiXSA9ICJSZXNvdXJjZSBTaXplIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlJlc291cmNlIFR5cGUiXSA9ICJSZXNvdXJjZSBUeXBlIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IlJlc291cmNlIGRvZXMgbm90IGhhdmUgdGltaW5nIGRhdGEiXSA9ICJSZXNvdXJjZSBkb2VzIG5v
dCBoYXZlIHRpbWluZyBkYXRhIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlc291cmNlIGZhaWxlZCB0
byBsb2FkLiJdID0gIlJlc291cmNlIGZhaWxlZCB0byBsb2FkLiI7Ci1sb2NhbGl6ZWRTdHJpbmdz
WyJSZXNvdXJjZSBoYXMgbm8gY29udGVudCJdID0gIlJlc291cmNlIGhhcyBubyBjb250ZW50IjsK
Ky8qIEFuIGVycm9yIG1lc3NhZ2Ugc2hvd24gd2hlbiB0aGVyZSBpcyBubyBjYWNoZWQgY29udGVu
dCBmb3IgYSBIVFRQIDMwNCBOb3QgTW9kaWZpZWQgcmVzb3VyY2UgcmVzcG9uc2UuICovCitsb2Nh
bGl6ZWRTdHJpbmdzWyJSZXNvdXJjZSBoYXMgbm8gY2FjaGVkIGNvbnRlbnQuIEAgUmVzb3VyY2Ug
UHJldmlldyJdID0gIlJlc291cmNlIGhhcyBubyBjYWNoZWQgY29udGVudC4iOworbG9jYWxpemVk
U3RyaW5nc1siUmVzb3VyY2UgaGFzIG5vIGNvbnRlbnQuIl0gPSAiUmVzb3VyY2UgaGFzIG5vIGNv
bnRlbnQuIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlc291cmNlIGhhcyBubyB0aW1pbmcgZGF0YSJd
ID0gIlJlc291cmNlIGhhcyBubyB0aW1pbmcgZGF0YSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXNv
dXJjZSB3YXMgbG9hZGVkIHdpdGggdGhlIFx1MjAxQ2RhdGFcdTIwMUQgc2NoZW1lLiJdID0gIlJl
c291cmNlIHdhcyBsb2FkZWQgd2l0aCB0aGUgXHUyMDFDZGF0YVx1MjAxRCBzY2hlbWUuIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIlJlc291cmNlIHdhcyBzZXJ2ZWQgZnJvbSB0aGUgY2FjaGUuIl0gPSAi
UmVzb3VyY2Ugd2FzIHNlcnZlZCBmcm9tIHRoZSBjYWNoZS4iOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmluZGV4IDBl
N2Y2YTRhNzhmMDVlZTVjYzg1OWM1ZTI2NTMzYjdiNDJlOWQ0MTYuLmYxODJlZTU2OTdmYjNmNmNi
NmZkMTJhZTc2YzQwY2QzOGYzZmE4NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTEwMjcsMTYgKzEwMjcs
MTYgQEAgV0kuUmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUK
ICAgICByZXF1ZXN0Q29udGVudCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZmluaXNoZWQp
Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIucmVxdWVzdENvbnRlbnQoKTsKKyAgICAgICAgICAg
IHJldHVybiBzdXBlci5yZXF1ZXN0Q29udGVudCgpLmNhdGNoKHRoaXMuX3JlcXVlc3RDb250ZW50
RmFpbHVyZS5iaW5kKHRoaXMpKTsKIAogICAgICAgICBpZiAodGhpcy5fZmFpbGVkKQotICAgICAg
ICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7ZXJyb3I6IFdJLlVJU3RyaW5nKCJBbiBlcnJv
ciBvY2N1cnJlZCB0cnlpbmcgdG8gbG9hZCB0aGUgcmVzb3VyY2UuIil9KTsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLl9yZXF1ZXN0Q29udGVudEZhaWx1cmUoKTsKIAogICAgICAgICBpZiAoIXRo
aXMuX2ZpbmlzaFRoZW5SZXF1ZXN0Q29udGVudFByb21pc2UpIHsKICAgICAgICAgICAgIHRoaXMu
X2ZpbmlzaFRoZW5SZXF1ZXN0Q29udGVudFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwg
cmVqZWN0KSA9PiB7CiAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdJLlJl
c291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHJlc29sdmUpOwogICAgICAgICAgICAgICAg
IHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCwg
cmVqZWN0KTsKLSAgICAgICAgICAgIH0pLnRoZW4oV0kuU291cmNlQ29kZS5wcm90b3R5cGUucmVx
dWVzdENvbnRlbnQuYmluZCh0aGlzKSk7CisgICAgICAgICAgICB9KS50aGVuKHRoaXMucmVxdWVz
dENvbnRlbnQuYmluZCh0aGlzKSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5f
ZmluaXNoVGhlblJlcXVlc3RDb250ZW50UHJvbWlzZTsKQEAgLTExODUsNiArMTE4NSwxNyBAQCBX
SS5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAg
ICAgIHRocm93IGVycm9yU3RyaW5nOwogICAgIH0KKyAgICAKKyAgICAvLyBQcml2YXRlCisgICAg
CisgICAgX3JlcXVlc3RDb250ZW50RmFpbHVyZShlcnJvcikKKyAgICB7CisgICAgICAgIHJldHVy
biBQcm9taXNlLnJlc29sdmUoeworICAgICAgICAgICAgZXJyb3I6IFdJLlVJU3RyaW5nKCJBbiBl
cnJvciBvY2N1cnJlZCB0cnlpbmcgdG8gbG9hZCB0aGUgcmVzb3VyY2UuIiksCisgICAgICAgICAg
ICByZWFzb246IGVycm9yLm1lc3NhZ2UgfHwgdGhpcy5fZmFpbHVyZVJlYXNvblRleHQsCisgICAg
ICAgICAgICBzb3VyY2VDb2RlOiB0aGlzLAorICAgICAgICB9KTsKKyAgICB9CiB9OwogCiBXSS5S
ZXNvdXJjZS5UeXBlSWRlbnRpZmllciA9ICJyZXNvdXJjZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250
ZW50Vmlldy5qcwppbmRleCA1OTNjYTMyZjc5ODU4OThhZDY2MTMyOTIyZjYzNjNjOGRkODJiMmU3
Li45ODk3ZWY0MWQzZTRjZWZmZTdlOGFmMWRmMjFiNGNiY2E2Njk5OTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlQ29udGVudFZpZXcuanMKQEAgLTE1Nyw3ICsxNTcsMTQgQEAgV0kuUmVzb3VyY2VDb250
ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
dwogCiAgICAgc2hvd0dlbmVyaWNOb0NvbnRlbnRNZXNzYWdlKCkKICAgICB7Ci0gICAgICAgIHRo
aXMuc2hvd01lc3NhZ2UoV0kuVUlTdHJpbmcoIlJlc291cmNlIGhhcyBubyBjb250ZW50IikpOwor
ICAgICAgICB0aGlzLnNob3dNZXNzYWdlKFdJLlVJU3RyaW5nKCJSZXNvdXJjZSBoYXMgbm8gY29u
dGVudC4iKSk7CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuUmVz
b3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250ZW50RXJyb3IpOworICAgIH0KKyAgICAKKyAgICBz
aG93Tm9DYWNoZWRDb250ZW50TWVzc2FnZSgpCisgICAgeworICAgICAgICB0aGlzLnNob3dNZXNz
YWdlKFdJLlVJU3RyaW5nKCJSZXNvdXJjZSBoYXMgbm8gY2FjaGVkIGNvbnRlbnQuIiwgIlJlc291
cmNlIGhhcyBubyBjYWNoZWQgY29udGVudC4gQCBSZXNvdXJjZSBQcmV2aWV3IiwgIkFuIGVycm9y
IG1lc3NhZ2Ugc2hvd24gd2hlbiB0aGVyZSBpcyBubyBjYWNoZWQgY29udGVudCBmb3IgYSBIVFRQ
IDMwNCBOb3QgTW9kaWZpZWQgcmVzb3VyY2UgcmVzcG9uc2UuIikpOwogCiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29u
dGVudEVycm9yKTsKICAgICB9CkBAIC0yMTEsNiArMjE4LDEyIEBAIFdJLlJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICBfY29udGVudEF2YWlsYWJsZShwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgaWYgKHBh
cmFtZXRlcnMuZXJyb3IpIHsKKyAgICAgICAgICAgIC8vIEEgMzA0IE5vdCBNb2RpZmllZCByZXF1
ZXN0IHRoYXQgaXMgbWlzc2luZyBjb250ZW50IG1lYW5zIHdlIGRpZG4ndCBoYXZlIGEgY2FjaGVk
IGNvcHkuCisgICAgICAgICAgICBpZiAocGFyYW1ldGVycy5zb3VyY2VDb2RlLnN0YXR1c0NvZGUg
PT0gMzA0ICYmIHBhcmFtZXRlcnMucmVhc29uID09PSAiTWlzc2luZyBjb250ZW50IG9mIHJlc291
cmNlIGZvciBnaXZlbiByZXF1ZXN0SWQiKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zaG93Tm9D
YWNoZWRDb250ZW50TWVzc2FnZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdGhpcy5fY29udGVudEVycm9yKHBhcmFt
ZXRlcnMuZXJyb3IpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMjQsNiAr
MjM3LDExIEBAIFdJLlJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgLy8gY29udGVudCBhcnJpdmVzLiBT
b3VyY2VDb2RlVGV4dEVkaXRvciB3aWxsIGhhbmRsZSB0aGF0LgogICAgICAgICBpZiAodGhpcy5f
aGFzQ29udGVudCgpKQogICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYg
KCFwYXJhbWV0ZXJzLnNvdXJjZUNvZGUuY29udGVudCAmJiAhcGFyYW1ldGVycy5zb3VyY2VDb2Rl
Lm1pbWVUeXBlKSB7CisgICAgICAgICAgICB0aGlzLnNob3dHZW5lcmljTm9Db250ZW50TWVzc2Fn
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKICAgICAgICAgLy8gQ29udGVu
dCBpcyByZWFkeSB0byBzaG93LCBjYWxsIHRoZSBwdWJsaWMgbWV0aG9kIG5vdy4KICAgICAgICAg
Y29uc29sZS5hc3NlcnQocGFyYW1ldGVycy5zb3VyY2VDb2RlID09PSB0aGlzLl9yZXNvdXJjZSk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzEyYWRlZWJhMTA4NTJkN2I0ZDZhNDRhOTQ4NGZhM2Y5MzRlMzMyNi4uY2JkZTBi
OGEwM2FmNGQ3YjE3NzFjMjNhZWFlNzUwY2QzYTczODY3OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDIwLTA5LTAzICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yIGZhaWxzIHRvIHByZXZpZXcgcmVzcG9uc2UgZnJvbSBYSFIgcmVxdWVz
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTg1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAgICBBZGRlZCBu
ZXcgdGVzdCBjYXNlcyBhbmQgYXNzb2NpYXRlZCByZXNvdXJjZXMgdG8gdGVzdCBoYW5kbGluZyBv
ZiBgMzA0IE5vdCBNb2RpZmllZGAgcmVzcG9uc2VzIHRvIFhIUiByZXF1ZXN0cy4KKyAgICAgICAg
V2UgdGVzdCBib3RoIFhIUiBmb3IgYSBQSFAgcGFnZSBhcyB3ZWxsIGFzIGZvciBhIHRleHQgZmls
ZSwgYXMgdGhleSBiZWhhdmVkIGRpZmZlcmVudGx5IChpbmNvcnJlY3RseSkgYmVmb3JlCisgICAg
ICAgIHRoaXMgcGF0Y2guCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3Jr
L2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rl
c3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0bWw6CisgICAg
ICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzOiBD
YWNoZS1Db250cm9sIGhlYWRlciBmb3IgZmV0Y2gtY2FjaGFibGUudHh0CisgICAgICAgICogaHR0
cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwOgor
ICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzL2ZldGNoLWNh
Y2hhYmxlLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6
IFRlc3RzIHJlbHkgb24gZGlzay1jYWNoZSB3aGljaCBpcyBub3QgcHJlc2VudCBpbiBXSzEKKwog
MjAyMC0wOS0wMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEFsaWduIFVURi0xNiBkZWNvZGVyIHdpdGggQ2hyb21lLCBGaXJlZm94LCBhbmQg
c3BlY2lmaWNhdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTVhMDllZGMxZTNiYTU0YWU1ZGVkZWNlZjQ4ZTgx
NmQ4MWU5Y2E4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw2NCBAQAorVGVzdHMgZm9yIGdldHRpbmcgdGhlIGNvbnRlbnQgb2YgRmV0Y2ggcmVxdWVz
dHMgd2l0aCB0aGUgIjMwNCBOb3QgTW9kaWZpZWQiIHJlc3BvbnNlIHN0YXR1cy4KKworCis9PSBS
dW5uaW5nIHRlc3Qgc3VpdGU6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0CistLSBS
dW5uaW5nIHRlc3Qgc2V0dXAuCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNw
b25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Tm90Q2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQg
YmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgZW1wdHkuCitQQVNTOiBT
dGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJl
IFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IFRleHQgY29udGVudCBz
aG91bGQgYmUgdW5kZWZpbmVkLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRS
ZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMjAwTm90Q2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91
bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IFNob3VsZCBzZWUgY2FjaGluZyBoZWFkZXIuCitQQVNT
OiBNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNo
b3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2Uu
UmVzcG9uc2VTb3VyY2UuTmV0d29yaworUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxh
aW4gdGV4dCByZXNvdXJjZS4nLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRS
ZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMjAwQ2FjaGVkCitQQVNTOiBSZXNvdXJjZSBzaG91bGQg
YmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4nLgor
UEFTUzogU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4KK1BBU1M6IHJlc3BvbnNlU291cmNlIHNo
b3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUKK1BBU1M6IFRleHQg
Y29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0
ZXN0IGNhc2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LlBIUDMwNENhY2hlZAor
UEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBNSU1FIHR5cGUgc2hv
dWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuCitQ
QVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2Uu
RGlza0NhY2hlCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291
cmNlLicuCisKKy0tIFJ1bm5pbmcgdGVzdCBzZXR1cC4KKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBO
ZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5GaWxlMzA0Tm90Q2FjaGVkCitQQVNTOiBS
ZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4KK1BBU1M6IE1JTUUgdHlwZSBzaG91bGQgYmUg
ZW1wdHkuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMzA0LgorUEFTUzogcmVzcG9uc2VT
b3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6
IFRleHQgY29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuRmlsZTIwME5vdENhY2hlZAorUEFT
UzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQQVNTOiBTaG91bGQgc2VlIGNhY2hp
bmcgaGVhZGVyLgorUEFTUzogTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9wbGFpbicuCitQQVNT
OiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzogcmVzcG9uc2VTb3VyY2Ugc2hvdWxk
IGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmsKK1BBU1M6IFRleHQgY29udGVu
dCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IE5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBDYWNoZWQKK1BBU1M6
IFJlc291cmNlIHNob3VsZCBiZSBGZXRjaCB0eXBlLgorUEFTUzogTUlNRSB0eXBlIHNob3VsZCBi
ZSAndGV4dC9wbGFpbicuCitQQVNTOiBTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLgorUEFTUzog
cmVzcG9uc2VTb3VyY2Ugc2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tD
YWNoZQorUEFTUzogVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4n
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gz
MDQuRmlsZTMwNENhY2hlZAorUEFTUzogUmVzb3VyY2Ugc2hvdWxkIGJlIEZldGNoIHR5cGUuCitQ
QVNTOiBNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4KK1BBU1M6IFN0YXR1cyBjb2Rl
IHNob3VsZCBiZSAyMDAuCitQQVNTOiByZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3Vy
Y2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlCitQQVNTOiBUZXh0IGNvbnRlbnQgc2hvdWxkIGJl
ICdQbGFpbiB0ZXh0IHJlc291cmNlLicuCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9keS0zMDQuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvZmV0Y2gtcmVzcG9uc2UtYm9k
eS0zMDQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42N2E2MGZlNGY0YWNkY2U0NTA3YTJkMzI3YmI3ZmRiYTlj
YWQ1ZjIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9mZXRjaC1yZXNwb25zZS1ib2R5LTMwNC5odG1sCkBAIC0wLDAgKzEsMTU3IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvclBIUDIwMCgpIHsKKyAgICBmZXRjaCgi
cmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocCIsIHsgaGVhZGVyczogeyAnWC1TdGF0dXMtQ29k
ZS1OZWVkZWQnOiAnMjAwJyB9IH0pOworfQorCitmdW5jdGlvbiBjcmVhdGVGZXRjaEZvclBIUDMw
NCgpIHsKKyAgICBmZXRjaCgicmVzb3VyY2VzL2ZldGNoLWNhY2hhYmxlLnBocCIsIHsgaGVhZGVy
czogeyAnWC1TdGF0dXMtQ29kZS1OZWVkZWQnOiAnMzA0JyB9IH0pOworfQorCitmdW5jdGlvbiBj
cmVhdGVGZXRjaEZvckZpbGUyMDAoKSB7CisgICAgZmV0Y2goInJlc291cmNlcy9mZXRjaC1jYWNo
YWJsZS50eHQiKTsKK30KKworZnVuY3Rpb24gY3JlYXRlRmV0Y2hGb3JGaWxlMzA0KCkgeworICAg
IGZldGNoKCJyZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0IiwgeyBoZWFkZXJzOiB7ICdJZi1N
b2RpZmllZC1TaW5jZSc6IG5ldyBEYXRlKCkudG9VVENTdHJpbmcoKSB9IH0pOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5j
U3VpdGUoIk5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0Iik7CisKKyAgICBmdW5jdGlv
biBhZGRUZXN0Q2FzZSh7bmFtZSwgZGVzY3JpcHRpb24sIHNldHVwLCBleHByZXNzaW9uLCBjb250
ZW50SGFuZGxlcn0pIHsKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZSwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgc2V0dXAsCisgICAg
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgeworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoZXhwcmVzc2lvbik7CisgICAgICAgICAgICAgICAgV0kuRnJh
bWUuYXdhaXRFdmVudChXSS5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc0FkZGVkKQorICAgICAgICAg
ICAgICAgICAgICAudGhlbigoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxl
dCByZXNvdXJjZSA9IGV2ZW50LmRhdGEucmVzb3VyY2U7CisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJlc291cmNlLnR5cGUsIFdJLlJlc291cmNlLlR5
cGUuRmV0Y2gsICJSZXNvdXJjZSBzaG91bGQgYmUgRmV0Y2ggdHlwZS4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCgpOworICAgICAgICAg
ICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgICAgICAudGhlbihjb250ZW50SGFuZGxlcikK
KyAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiTmV0d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuUEhQMzA0Tm90Q2FjaGVkIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJUcnkgYW5kIGdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3Bv
bnNlLCB3aGljaCB3aWxsIG5vdCBleGlzdC4iLAorICAgICAgICBhc3luYyBzZXR1cCgpIHsKKyAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBpbnRlcm5hbHMu
Y2xlYXJNZW1vcnlDYWNoZSgpYCk7CisgICAgICAgIH0sCisgICAgICAgIGV4cHJlc3Npb246IGBj
cmVhdGVGZXRjaEZvclBIUDMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBz
b3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUUgdHlw
ZSBzaG91bGQgYmUgZW1wdHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHNvdXJjZUNvZGUuc3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMw
NC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5y
ZXNwb25zZVNvdXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3Bv
bnNlU291cmNlIHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5l
ZCwgIlRleHQgY29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLiIpOworICAgICAgICB9CisgICAg
fSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3Bv
bnNlQm9keS5GZXRjaDMwNC5QSFAyMDBOb3RDYWNoZWQiLAorICAgICAgICBkZXNjcmlwdGlvbjog
IkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJvbSBuZXR3b3JrLiIsCisgICAgICAgIGV4cHJl
c3Npb246IGBjcmVhdGVGZXRjaEZvclBIUDIwMCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIo
e2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlSGVhZGVy
c1siQ2FjaGUtQ29udHJvbCJdLCAicHVibGljLCBtYXgtYWdlPTMxNTU2OTI2IiwgIlNob3VsZCBz
ZWUgY2FjaGluZyBoZWFkZXIuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHNvdXJjZUNvZGUubWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQg
YmUgJ3RleHQvcGxhaW4nLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChzb3VyY2VDb2RlLnN0YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAu
Iik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVz
cG9uc2VTb3VyY2UsIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLk5ldHdvcmssICJyZXNwb25z
ZVNvdXJjZSBzaG91bGQgYmUgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yayIpOwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4
dCByZXNvdXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJj
ZS4nLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAyMDBDYWNoZWQiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJvbSBjYWNo
ZS4iLAorICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JQSFAyMDAoKWAsCisgICAg
ICAgIGNvbnRlbnRIYW5kbGVyKHtlcnJvciwgc291cmNlQ29kZSwgY29udGVudCwgcmF3QmFzZTY0
RW5jb2RlZH0pIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNl
Q29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4dC9w
bGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNv
ZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNvdXJj
ZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlLCAicmVzcG9uc2VTb3VyY2Ug
c2hvdWxkIGJlIFdJLlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSIpOworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjb250ZW50LCAiUGxhaW4gdGV4dCByZXNv
dXJjZS4iLCAiVGV4dCBjb250ZW50IHNob3VsZCBiZSAnUGxhaW4gdGV4dCByZXNvdXJjZS4nLiIp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6
ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5GZXRjaDMwNC5QSFAzMDRDYWNoZWQiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIkdldCBjYWNoZWQgYm9keSBmb3IgMzA0IHJlc3BvbnNlLiIsCisgICAg
ICAgIGV4cHJlc3Npb246IGBjcmVhdGVGZXRjaEZvclBIUDMwNCgpYCwKKyAgICAgICAgY29udGVu
dEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkg
eworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVU
eXBlLCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXND
b2RlLCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNv
dXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUg
V0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLiIsICJU
ZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5ldHdvcmsu
Z2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUzMDROb3RDYWNoZWQiLAorICAgICAgICBkZXNj
cmlwdGlvbjogIlRyeSBhbmQgZ2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2UsIHdoaWNo
IHdpbGwgbm90IGV4aXN0LiIsCisgICAgICAgIGFzeW5jIHNldHVwKCkgeworICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGludGVybmFscy5jbGVhck1lbW9y
eUNhY2hlKClgKTsKKyAgICAgICAgfSwKKyAgICAgICAgZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNo
Rm9yRmlsZTMwNCgpYCwKKyAgICAgICAgY29udGVudEhhbmRsZXIoe2Vycm9yLCBzb3VyY2VDb2Rl
LCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBlLCAiIiwgIk1JTUUgdHlwZSBzaG91bGQg
YmUgZW1wdHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJj
ZUNvZGUuc3RhdHVzQ29kZSwgMzA0LCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDMwNC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNv
dXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNlU291cmNl
IHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgIlRleHQg
Y29udGVudCBzaG91bGQgYmUgdW5kZWZpbmVkLiIpOworICAgICAgICB9CisgICAgfSk7CisKKyAg
ICBhZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJOZXR3b3JrLmdldFJlc3BvbnNlQm9keS5G
ZXRjaDMwNC5GaWxlMjAwTm90Q2FjaGVkIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJHZXQgYm9k
eSBmb3IgMjAwIHJlc3BvbnNlIGZyb20gbmV0d29yay4iLAorICAgICAgICBleHByZXNzaW9uOiBg
Y3JlYXRlRmV0Y2hGb3JGaWxlMjAwKClgLAorICAgICAgICBjb250ZW50SGFuZGxlcih7ZXJyb3Is
IHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29kZWR9KSB7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VIZWFkZXJzWyJDYWNo
ZS1Db250cm9sIl0sICJwdWJsaWMsIG1heC1hZ2U9MzE1NTY5MjYiLCAiU2hvdWxkIHNlZSBjYWNo
aW5nIGhlYWRlci4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291
cmNlQ29kZS5taW1lVHlwZSwgInRleHQvcGxhaW4iLCAiTUlNRSB0eXBlIHNob3VsZCBiZSAndGV4
dC9wbGFpbicuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJj
ZUNvZGUuc3RhdHVzQ29kZSwgMjAwLCAiU3RhdHVzIGNvZGUgc2hvdWxkIGJlIDIwMC4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5yZXNwb25zZVNv
dXJjZSwgV0kuUmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuTmV0d29yaywgInJlc3BvbnNlU291cmNl
IHNob3VsZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5OZXR3b3JrIik7CisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291
cmNlLiIsICJUZXh0IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7
CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIGFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTog
Ik5ldHdvcmsuZ2V0UmVzcG9uc2VCb2R5LkZldGNoMzA0LkZpbGUyMDBDYWNoZWQiLAorICAgICAg
ICBkZXNjcmlwdGlvbjogIkdldCBib2R5IGZvciAyMDAgcmVzcG9uc2UgZnJvbSBjYWNoZS4iLAor
ICAgICAgICBleHByZXNzaW9uOiBgY3JlYXRlRmV0Y2hGb3JGaWxlMjAwKClgLAorICAgICAgICBj
b250ZW50SGFuZGxlcih7ZXJyb3IsIHNvdXJjZUNvZGUsIGNvbnRlbnQsIHJhd0Jhc2U2NEVuY29k
ZWR9KSB7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUu
bWltZVR5cGUsICJ0ZXh0L3BsYWluIiwgIk1JTUUgdHlwZSBzaG91bGQgYmUgJ3RleHQvcGxhaW4n
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnN0
YXR1c0NvZGUsIDIwMCwgIlN0YXR1cyBjb2RlIHNob3VsZCBiZSAyMDAuIik7CisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHNvdXJjZUNvZGUucmVzcG9uc2VTb3VyY2UsIFdJ
LlJlc291cmNlLlJlc3BvbnNlU291cmNlLkRpc2tDYWNoZSwgInJlc3BvbnNlU291cmNlIHNob3Vs
ZCBiZSBXSS5SZXNvdXJjZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUiKTsKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY29udGVudCwgIlBsYWluIHRleHQgcmVzb3VyY2Uu
IiwgIlRleHQgY29udGVudCBzaG91bGQgYmUgJ1BsYWluIHRleHQgcmVzb3VyY2UuJy4iKTsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTmV0
d29yay5nZXRSZXNwb25zZUJvZHkuRmV0Y2gzMDQuRmlsZTMwNENhY2hlZCIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiR2V0IGNhY2hlZCBib2R5IGZvciAzMDQgcmVzcG9uc2UuIiwKKyAgICAgICAg
ZXhwcmVzc2lvbjogYGNyZWF0ZUZldGNoRm9yRmlsZTMwNCgpYCwKKyAgICAgICAgY29udGVudEhh
bmRsZXIoe2Vycm9yLCBzb3VyY2VDb2RlLCBjb250ZW50LCByYXdCYXNlNjRFbmNvZGVkfSkgewor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLm1pbWVUeXBl
LCAidGV4dC9wbGFpbiIsICJNSU1FIHR5cGUgc2hvdWxkIGJlICd0ZXh0L3BsYWluJy4iKTsKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoc291cmNlQ29kZS5zdGF0dXNDb2Rl
LCAyMDAsICJTdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChzb3VyY2VDb2RlLnJlc3BvbnNlU291cmNlLCBXSS5SZXNvdXJj
ZS5SZXNwb25zZVNvdXJjZS5EaXNrQ2FjaGUsICJyZXNwb25zZVNvdXJjZSBzaG91bGQgYmUgV0ku
UmVzb3VyY2UuUmVzcG9uc2VTb3VyY2UuRGlza0NhY2hlIik7CisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGNvbnRlbnQsICJQbGFpbiB0ZXh0IHJlc291cmNlLiIsICJUZXh0
IGNvbnRlbnQgc2hvdWxkIGJlICdQbGFpbiB0ZXh0IHJlc291cmNlLicuIik7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cD5UZXN0cyBmb3IgZ2V0
dGluZyB0aGUgY29udGVudCBvZiBGZXRjaCByZXF1ZXN0cyB3aXRoIHRoZSAiMzA0IE5vdCBNb2Rp
ZmllZCIgcmVzcG9uc2Ugc3RhdHVzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2VzLy5odGFj
Y2VzcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVzb3VyY2Vz
Ly5odGFjY2VzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hOGQxMjY5NDkzOWEyOTg2NDNkNTAxNmEzMDZkZTkxMWJh
YjA3ODlhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvbmV0d29yay9yZXNvdXJjZXMvLmh0YWNjZXNzCkBAIC0wLDAgKzEsMyBAQAorPEZpbGVzIGZl
dGNoLWNhY2hhYmxlLnR4dD4KKwlIZWFkZXIgc2V0IENhY2hlLUNvbnRyb2wgInB1YmxpYywgbWF4
LWFnZT0zMTU1NjkyNiIKKzwvRmlsZXM+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJj
ZXMvZmV0Y2gtY2FjaGFibGUucGhwIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
bmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUucGhwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmYTY0ZDRh
ZTIxNmJkYTUzODIxOWI2ODZmODM2NGFkYzAzYjIzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNo
YWJsZS5waHAKQEAgLTAsMCArMSwxNCBAQAorPD9waHAKKyRzdGF0dXMgPSAkX1NFUlZFUlsnSFRU
UF9YX1NUQVRVU19DT0RFX05FRURFRCddOworCitpZiAoJHN0YXR1cyA9PSAnMzA0JykgeworICAg
IGhlYWRlcigiSFRUUC8xLjEgMzA0IE5vdCBNb2RpZmllZCIpOworICAgIGV4aXQ7Cit9CisKK2hl
YWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluJyk7CitoZWFkZXIoIkNhY2hlLUNvbnRyb2w6
IHB1YmxpYywgbWF4LWFnZT0zMTU1NjkyNiIpOyAvLyBPbmUgeWVhci4KKworCitlY2hvICJQbGFp
biB0ZXh0IHJlc291cmNlLiI7Cis/PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFibGUudHh0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXNvdXJjZXMvZmV0Y2gtY2FjaGFi
bGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmUyYzVmYTExZTRkYmI2ZGI4NzRiMTAxYzkxOGFkMTUyZjA1MGM1
OTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9u
ZXR3b3JrL3Jlc291cmNlcy9mZXRjaC1jYWNoYWJsZS50eHQKQEAgLTAsMCArMSBAQAorUGxhaW4g
dGV4dCByZXNvdXJjZS4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggOTcyZTUzYjdkMzUxMTM5
OTYxNzg0MDgwM2UyNDc4NGVhZGE5ZjIwMC4uMTljZDQ3MzdiNTQ1YWJiNGZiYTAwNWI0Yjk0Yzg4
OTE1OWMyYWUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMS9UZXN0
RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVj
dGF0aW9ucwpAQCAtNDA3LDYgKzQwNyw3IEBAIGNvbXBvc2l0aW5nL3Zpc2liaWxpdHkvdmlzaWJp
bGl0eS1jaGFuZ2UtaW4tc3ViZnJhbWUuaHRtbCBbIEZhaWx1cmUgXQogaHR0cC90ZXN0cy9jYWNo
ZS9kaXNrLWNhY2hlCiBodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3Jlc291cmNlLXJlc3Bv
bnNlLXNvdXJjZS1kaXNrLWNhY2hlLmh0bWwKIGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsv
cmVzb3VyY2Utc2l6ZXMtZGlzay1jYWNoZS5odG1sCitodHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3
b3JrL2ZldGNoLXJlc3BvbnNlLWJvZHktMzA0Lmh0bWwgWyBTa2lwIF0KIAogIyBBc3luYyBpbWFn
ZSBkZWNvZGluZyBpcyBXSzIgb25seQogZmFzdC9pbWFnZXMvYXN5bmMtaW1hZ2UtYmFja2dyb3Vu
ZC1jaGFuZ2UuaHRtbAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>