<?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>224577</bug_id>
          
          <creation_ts>2021-04-14 14:20:25 -0700</creation_ts>
          <short_desc>[Cocoa] re-enable test case WKInspectorDelegate.InspectorConfiguration</short_desc>
          <delta_ts>2021-04-22 17:09:15 -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>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1750330</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-04-14 14:20:25 -0700</bug_when>
    <thetext>&lt;rdar://70505272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751867</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-04-19 11:03:45 -0700</bug_when>
    <thetext>The fix for this is.. involved. Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751907</commentid>
    <comment_count>2</comment_count>
      <attachid>426457</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-04-19 12:17:53 -0700</bug_when>
    <thetext>Created attachment 426457
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752374</commentid>
    <comment_count>3</comment_count>
      <attachid>426457</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-04-20 12:24:15 -0700</bug_when>
    <thetext>Comment on attachment 426457
Patch v1.0

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

r=me

This looks generally fine to me, but I&apos;d recommend getting someone more familiar with CSP (both the concept and the related WebKit logic) to look at it as well.

BTW I was poking around some other CSP tests and I came across `LegacySchemeRegistry::registerURLSchemeAsBypassingContentSecurityPolicy`.  Would that also be a valid solution to this?  Or does the &quot;Legacy&quot; part suggest that maybe we don&apos;t want to use this 😅

Also, is it possible to write a layout/API test that confirms the CSP state in Web Inspector so that we&apos;re not opening up any new CSP &quot;holes&quot;?

&gt; Source/WebKit/ChangeLog:34
&gt; +        Drive-by, fix memory leak the right way.

Could you explain this more?

&gt; Source/WebKit/ChangeLog:37
&gt; +        (WebKit::WebInspectorUIProxy::frontendLoaded): Call the client.

ditto (:34)

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:51
&gt; +    return _allowedURLSchemesForCSP.autorelease();

IIRC, `RetainPtr::autorelease` will `std::exchange` the underlying pointer.  Do we want that here?  If so, can you rename this to `releaseAllowedURLSchemesForCSP`?  If not, should this just be `.get()` instead?  Or maybe `[_allowedURLSchemesForCSP copy]`?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:61
&gt; +    NSMutableSet&lt;NSURL *&gt; *result = [[NSMutableSet alloc] initWithCapacity:2];
&gt; +    [result addObject:[NSURL URLWithString:WebKit::WebInspectorUIProxy::inspectorPageURL()]];
&gt; +    [result addObject:[NSURL URLWithString:WebKit::WebInspectorUIProxy::inspectorTestPageURL()]];
&gt; +    _mainResourceURLsForCSP = result;

Do we expect/allow these values to change?  If not, do we need to recreate/reassign `_mainResourceURLsForCSP` each time, or can we make a lazy getter that initializes it once?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:112
&gt; +        NSMutableDictionary *headerFields = @{

Should we `adoptNS`?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:118
&gt; +    RetainPtr&lt;NSMutableSet&lt;NSString *&gt;&gt; allowedURLSchemes = adoptNS([NSMutableSet setWithObjects:WKInspectorResourceScheme, @&quot;ws&quot;, @&quot;wss&quot;, nil]);

Are `ws` and `wss` actually used in the Web Inspector frontend?

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:119
&gt; +    for (auto pair : _configuration-&gt;_configuration-&gt;urlSchemeHandlers())

`auto&amp;`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752382</commentid>
    <comment_count>4</comment_count>
      <attachid>426457</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2021-04-20 12:47:02 -0700</bug_when>
    <thetext>Comment on attachment 426457
Patch v1.0

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorTesting.mm:62
&gt; +        _inspector-&gt;evaluateInFrontendForTesting(JavaScriptSnippetToOpenURLExternally(url));

Ideally the memory fix would happen as a separate commit.

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:56
&gt; +    _allowedURLSchemesForCSP = [allowedURLSchemes copy];

`_allowedURLSchemesForCSP` is a RetainPtr, so you&apos;re copying and retaining. This should probably be:

```
_allowedURLSchemesForCSP = adoptNS([allowedURLSchemes copy]);
```

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:61
&gt;&gt; +    _mainResourceURLsForCSP = result;
&gt; 
&gt; Do we expect/allow these values to change?  If not, do we need to recreate/reassign `_mainResourceURLsForCSP` each time, or can we make a lazy getter that initializes it once?

+1 for Devin&apos;s comment.

But again this is a RetainPtr so you&apos;re seeing an alloc + retain. This should probably be:

```
_mainResourceURLsForCSP = adoptNS([[NSMutableSet alloc] initWithCapacity:2]);
[_mainResourceURLsForCSP addObject:...];
[_mainResourceURLsForCSP addObject:...];
```

We prefer the `adoptNS` immediately on the line with copy/alloc.

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:112
&gt;&gt; +        NSMutableDictionary *headerFields = @{
&gt; 
&gt; Should we `adoptNS`?

+1. The `mutableCopy` would be leaked otherwise.

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:118
&gt;&gt; +    RetainPtr&lt;NSMutableSet&lt;NSString *&gt;&gt; allowedURLSchemes = adoptNS([NSMutableSet setWithObjects:WKInspectorResourceScheme, @&quot;ws&quot;, @&quot;wss&quot;, nil]);
&gt; 
&gt; Are `ws` and `wss` actually used in the Web Inspector frontend?

+1 to Devin&apos;s comment. Looks like the macOS one may not need it. It was added with:

    commit 835af68ab239f1577787fd759f67f08e8aad2f8d
    Author: commit-queue@webkit.org &lt;commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc&gt;
    Date:   Thu Apr 14 17:44:20 2016 +0000

        REGRESSION: Web Inspector: Remote inspector doesn&apos;t work
        https://bugs.webkit.org/show_bug.cgi?id=156543
    
        Patch by Carlos Garcia Campos &lt;cgarcia@igalia.com&gt; on 2016-04-14
        Reviewed by Timothy Hatcher.
    
        WebSocket connection is blocked by CSP, but needed by the remote web inspector to work, so allow connect to ws
        URLs from the web inspector. Also add stubs for zoomFactor and setZoomFactor to InspectorFrontendHostStub,
        required after r199396.

---

Also, this is one where we do not want to adopt, because it is already an auto released object.

Either:
```
RetainPtr&lt;NSMutableSet&lt;NSString *&gt;&gt; allowedURLSchemes = [NSMutableSet setWithObjects:WKInspectorResourceScheme, @&quot;ws&quot;, @&quot;wss&quot;, nil];
```

Preferred:
```
RetainPtr&lt;NSMutableSet&lt;NSString *&gt;&gt; allowedURLSchemes = adoptNS([[NSMutableSet alloc] initWithObjects:WKInspectorResourceScheme, @&quot;ws&quot;, @&quot;wss&quot;, nil]);
```

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:122
&gt; +    [inspectorSchemeHandler setAllowedURLSchemesForCSP:allowedURLSchemes.autorelease()];

Not sure we would want to autorelease here. Just let the method copy/retain appropriately, then we don&apos;t touch autorelease pools at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752616</commentid>
    <comment_count>5</comment_count>
      <attachid>426457</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:40:52 -0700</bug_when>
    <thetext>Comment on attachment 426457
Patch v1.0

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

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:122
&gt;&gt; +    [inspectorSchemeHandler setAllowedURLSchemesForCSP:allowedURLSchemes.autorelease()];
&gt; 
&gt; Not sure we would want to autorelease here. Just let the method copy/retain appropriately, then we don&apos;t touch autorelease pools at all.

The correct code for a case like this is to just use get(), not autorelease().

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:123
&gt;      [configuration setURLSchemeHandler:inspectorSchemeHandler.autorelease() forURLScheme:WKInspectorResourceScheme];

Same here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752617</commentid>
    <comment_count>6</comment_count>
      <attachid>426457</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-20 20:43:09 -0700</bug_when>
    <thetext>Comment on attachment 426457
Patch v1.0

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

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorResourceURLSchemeHandler.mm:51
&gt;&gt; +    return _allowedURLSchemesForCSP.autorelease();
&gt; 
&gt; IIRC, `RetainPtr::autorelease` will `std::exchange` the underlying pointer.  Do we want that here?  If so, can you rename this to `releaseAllowedURLSchemesForCSP`?  If not, should this just be `.get()` instead?  Or maybe `[_allowedURLSchemesForCSP copy]`?

This should be one of these:

    return _allowedURLSchemesForCSP.get();
    return adoptNS([_allowedURLSchemesForCSP copy]).autorelease();

We don’t want to null out the pointer. Not sure we need autorelease.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753343</commentid>
    <comment_count>7</comment_count>
      <attachid>426862</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-04-22 16:16:32 -0700</bug_when>
    <thetext>Created attachment 426862
Patch v1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1753380</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-22 17:09:13 -0700</bug_when>
    <thetext>Committed r276476 (236935@main): &lt;https://commits.webkit.org/236935@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426862.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426457</attachid>
            <date>2021-04-19 12:17:53 -0700</date>
            <delta_ts>2021-04-22 16:16:31 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-224577-20210419121752.patch</filename>
            <type>text/plain</type>
            <size>25138</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
ZTMyMzk5Mjk4YzYyMTJhMDIyZDczZmY3ZGZjOTViNmNhYjIyYWZlLi4zZWY3NmU4NTJjNjk5NWY1
M2YxOGJlY2RiOWNjMTRhZjM2Y2Q1OWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wNC0xOSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIHJlLWVuYWJsZSB0ZXN0IGNhc2UgV0tJbnNwZWN0b3JEZWxlZ2F0ZS5JbnNw
ZWN0b3JDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQ1NzcKKyAgICAgICAgPHJkYXI6Ly83MDUwNTI3Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGp1c3QgdGhlIENTUCBkaXJl
Y3RpdmUgbGlzdCBpbiB0aGUgPG1ldGE+IHRhZyB0byBhbGxvdyBmb3IgY3VzdG9taXphdGlvbgor
ICAgICAgICBieSBXZWJLaXQgcG9ydHMuIAorCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWlu
Lmh0bWw6CisgICAgICAgIC0gUmVtb3ZlIGBkZWZhdWx0LXNyYyAnc2VsZidgIHNvIGFzIG5vdCB0
byBibG9jayBjdXN0b20gc2NoZW1lIGxvYWRzLgorICAgICAgICAtIFJlbW92ZSBgY29ubmVjdC1z
cmMgKiB3czpgIHNvIGFzIG5vdCB0byBibG9jayBjdXN0b20gc2NoZW1lIGxvYWRzLgorICAgICAg
ICAtIEFkZCBgb2JqZWN0LXNyYyAnbm9uZSdgIGFzIHdlIGhhdmUgbm8gcmVhc29uIHRvIGFsbG93
IDxvYmplY3Q+LCA8ZW1iZWQ+LCBvciA8YXBwbGV0Pi4KKwogMjAyMS0wNC0xOSAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUkVHUkVT
U0lPTig/KTogTmV0d29yazogUmVxdWVzdCAoT2JqZWN0IFRyZWUpIGlzIHNvbWV0aW1lcyBlbXB0
eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwppbmRleCBkM2U1NTE1ZmY0ODhjMTgwZTk3ZGUyMzNlNGU3MDY5ZmRhNTJhMzlkLi4y
MTFhMDc5NTEzMWE2Njk2ZWUwYmY5YTQxOWJmZTA1M2UxOTUyY2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDU0IEBACisyMDIxLTA0LTE5ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAg
ICAgIFtDb2NvYV0gcmUtZW5hYmxlIHRlc3QgY2FzZSBXS0luc3BlY3RvckRlbGVnYXRlLkluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyNDU3NworICAgICAgICA8cmRhcjovLzcwNTA1MjcyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvciB0aGUgcHVycG9zZXMgb2Yg
dGVzdGluZywgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGlzc3VlIGEgZmV0Y2goKSB0aGF0IHdpbGwK
KyAgICAgICAgaGl0IGEgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlciByZWdpc3RlcmVkIHdpdGgg
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKyAgICAgICAgVGhpcyBpcyBub3QgYWxsb3dlZCBi
eSB0aGUgZXhpc3RpbmcgPG1ldGE+IHRhZyBDU1AgZGlyZWN0aXZlIGxpc3QgYmVjYXVzZSAnY29u
bmVjdC1zcmMgKicKKyAgICAgICAgZG9lcyBub3QgYWxsb3cgY29ubmVjdGluZyB0byBhcmJpdHJh
cnkgc2NoZW1lcywganVzdCBhcmJpdHJhcnkgZG9tYWlucy4KKworICAgICAgICBUbyBmaXggdGhp
cywgcmVsYXggdGhlICdjb25uZWN0LXNyYycgZGlyZWN0aXZlIGluIE1haW4uaHRtbCBhbmQgYXBw
bHkKKyAgICAgICAgYSBkeW5hbWljYWxseS1jb21wdXRlZCBDU1AgZGlyZWN0aXZlIHVzaW5nIHRo
ZSAnQ29udGVudC1TZWN1cml0eS1Qb2xpY3knIEhUVFAKKyAgICAgICAgcmVzcG9uc2UgaGVhZGVy
LiBUaGlzIGlzIG9ubHkgc2VudCBmb3IgbWFpbiByZXNvdXJjZXMgKE1haW4uaHRtbCBhbmQgVGVz
dC5odG1sKQorICAgICAgICB1c2luZyB0aGUgbmV3bHkgYWRkZWQgaW5zcGVjdG9yLXJlc291cmNl
OiBVUkwgc2NoZW1lIGhhbmRsZXIuCisKKyAgICAgICAgVGhlIGR5bmFtaWNhbGx5IGNvbXB1dGVk
IGRpcmVjdGl2ZSBleHBsaWNpdGx5IGFsbG93cyAnc2VsZicgYW5kIGFueSBvdGhlciByZWdpc3Rl
cmVkCisgICAgICAgIGN1c3RvbSBVUkwgc2NoZW1lIGhhbmRsZXJzLiBXZWJLaXQgcG9ydHMgd2hp
Y2ggaGF2ZSBub3QgbWlncmF0ZWQgYXdheSBmcm9tIGZpbGU6Ly8vCisgICAgICAgIHdpbGwgb25s
eSBhcHBseSB0aGUgd2Vha2VyICdjb25uZWN0LXNyYycgZGlyZWN0aXZlIGZyb20gdGhlIDxtZXRh
PiB0YWcgYWZ0ZXIgdGhpcyBjaGFuZ2UuCisKKyAgICAgICAgUHJvZ3Jlc3NlcyBhbiBleGlzdGlu
ZyBBUEkgdGVzdDogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5JbnNwZWN0b3JDb25maWd1cmF0aW9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50Lmg6CisgICAgICAgIChB
UEk6Okluc3BlY3RvckNsaWVudDo6ZnJvbnRlbmRMb2FkZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW06CisgICAgICAgIChKYXZhU2NyaXB0U25p
cHBldFRvRmV0Y2hVUkwpOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgX2ZldGNoVVJMRm9yVGVz
dGluZzpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIF9vcGVuVVJMRXh0ZXJuYWxseUZvclRl
c3Rpbmc6dXNlRnJvbnRlbmRBUEk6XSk6CisgICAgICAgIERyaXZlLWJ5LCBmaXggbWVtb3J5IGxl
YWsgdGhlIHJpZ2h0IHdheS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5z
cGVjdG9yVUlQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJveHk6
OmZyb250ZW5kTG9hZGVkKTogQ2FsbCB0aGUgY2xpZW50LgorCisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5tbToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXIgYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1BdKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JS
ZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgc2V0QWxsb3dlZFVSTFNjaGVtZXNGb3JDU1A6XSk6Cisg
ICAgICAgICgtW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3Rh
cnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICBBZGRlZC4gS2VlcCB0cmFjayBvZiBhbGxvd2Vk
IGN1c3RvbSBzY2hlbWVzIGFuZCBhbGxvd2VkIG1haW4gcmVzb3VyY2VzLgorICAgICAgICBBcHBs
eSB0aGUgQ1NQIGRpcmVjdGl2ZSBmb3IgbWFpbiByZXNvdXJjZSByZXF1ZXN0cyBvbmx5LgorCisg
ICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3Q29uZmln
dXJhdGlvbl0pOgorICAgICAgICBTZXQgdGhlIGFsbG93ZWQgVVJMIHNjaGVtZXMgcHJvcGVydHkg
c28gdGhlIFVSTCBzY2hlbWUgaGFuZGxlciBjYW4gaW5jbHVkZQorICAgICAgICB0aGUgc2NoZW1l
cyBpbiB0aGUgZHluYW1pY2FsbHkgY29tcHV0ZWQgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmUuCisK
IDIwMjEtMDQtMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBG
aXggcmFjZXMgaW4gTGliV2ViUlRDQ29kZWNzIGludHJvZHVjZWQgaW4gcjI3NjIxNApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDhhM2M5MDNh
MWI5ZDViZmI2ZGNkZjBhYTBhYTgzZWZiOWU4MTRiM2YuLmUxNjc0ZGJjMTBkZDNjNzgyMTg0MTdl
OTc1ZGNmY2I5OWMxMjA1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTEsNSArMSw1IEBACiA8IS0tCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiwxMSBAQAogPGh0bWw+CiA8aGVhZD4KICAg
ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hh
cnNldD11dGYtOCI+Ci0gICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1TZWN1cml0eS1Qb2xp
Y3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdzZWxmJzsgaW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJl
c291cmNlOjsgY29ubmVjdC1zcmMgKiB3czo7IG1lZGlhLXNyYyAqIGJsb2I6OyBmb250LXNyYyAq
IGJsb2I6OyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUtaW5saW5lJzsgc2NyaXB0LXNyYyAnc2Vs
ZicgJ3Vuc2FmZS1pbmxpbmUnIGRhdGE6Ij4KKyAgICA8IS0tCisgICAgICAgIE5vdGUgdGhhdCBz
b21lIFdlYktpdCBwb3J0cyBtYXkgc2V0IGN1c3RvbSAnZnJhbWUtc3JjJyBhbmQgJ2Nvbm5lY3Qt
c3JjJyBkaXJlY3RpdmVzIHZpYSBIVFRQIHJlc3BvbnNlIGhlYWRlci4KKyAgICAgICAgVGhlIGNv
bWJpbmVkIENTUCBwb2xpY3kgcmVxdWlyZXMgYSByZXF1ZXN0IHRvIGJlIGFsbG93ZWQgYnkgYm90
aCBkaXJlY3RpdmUgbGlzdHMsIHNvICdkZWZhdWx0LXNyYycgaXMgb21pdHRlZC4KKyAgICAtLT4K
KyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIgY29udGVudD0i
aW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOjsgbWVkaWEtc3JjICogYmxvYjo7IGZvbnQt
c3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnOyBzY3JpcHQtc3Jj
ICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9iamVjdC1zcmMgJ25vbmUnIj4KIAogICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWly
cm9yLmNzcyI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JDbGllbnQuaAppbmRleCAyNjQxNzA2NGZjMGY0NjE2ZDY0ZTNhMDAxZjc1OGZmZTViOGUzZjhk
Li44YjI3ZWFiZjY2YmE2ZDcxNWM0NjQwOGE0NDU4YTY3ZDI0OGI0YTNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oCkBAIC0zOSw2ICsz
OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSA9IGRlZmF1bHQ7
CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlblVSTEV4dGVybmFsbHkoV2ViS2l0OjpXZWJJbnNwZWN0
b3JVSVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHVybCkgeyB9CisgICAgdmlydHVhbCB2b2lk
IGZyb250ZW5kTG9hZGVkKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlQcm94eSYpIHsgfQogfTsKIAog
fSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3Rvci5tbQppbmRleCAyOWRjMTc0OThhNTZkNDE1NzlmZDIzMjVkMzA1OTBl
OGViODVhNjNkLi5jMWU2ZmE3NDcwNjM3MmU2OWY0Mjg3ZjY1OTcwY2VkMGJjOGJlNzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0K
QEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIGV4cGxpY2l0IEluc3BlY3RvckNsaWVudChp
ZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+IGRlbGVnYXRlKQogICAgICAgICA6IG1fZGVsZWdhdGUo
ZGVsZWdhdGUpCiAgICAgICAgICwgbV9yZXNwb25kc1RvSW5zcGVjdG9yT3BlblVSTEV4dGVybmFs
bHkoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yOm9wZW5V
UkxFeHRlcm5hbGx5OildKQorICAgICAgICAsIG1fcmVzcG9uZHNUb0luc3BlY3RvckZyb250ZW5k
TG9hZGVkKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckZy
b250ZW5kTG9hZGVkOildKQogICAgIHsKICAgICB9CiAKQEAgLTY5LDkgKzcwLDE4IEBAIHByaXZh
dGU6CiAgICAgICAgIFttX2RlbGVnYXRlIGluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3Rvcikgb3Bl
blVSTEV4dGVybmFsbHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07CiAgICAgfQogCisgICAg
dm9pZCBmcm9udGVuZExvYWRlZChXZWJLaXQ6OldlYkluc3BlY3RvclVJUHJveHkmIGluc3BlY3Rv
cikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9kZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1Rv
SW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
W21fZGVsZWdhdGUgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQ6d3JhcHBlcihpbnNwZWN0b3IpXTsK
KyAgICB9CisKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+ID4gbV9k
ZWxlZ2F0ZTsKIAogICAgIGJvb2wgbV9yZXNwb25kc1RvSW5zcGVjdG9yT3BlblVSTEV4dGVybmFs
bHkgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvSW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQgOiAx
OwogfTsKIAogQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaAppbmRl
eCA0MDViN2QwM2E3OTQxMjIyMWMyNWRhZDcxZmRlY2IyZmNmMmYzOTQ2Li43MDM0YzBlZmVlNjZj
NTA2MDdjM2ZjZTgxNGQ1MjZiNDMwMjM2MjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOCw0ICszOCw5
IEBACiAgKi8KIC0gKHZvaWQpaW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3Igb3Bl
blVSTEV4dGVybmFsbHk6KE5TVVJMICopdXJsOwogCisvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVu
IHRoZSBfV0tJbnNwZWN0b3IgdXNlciBpbnRlcmZhY2UgaGFzIGJlZW4gZnVsbHkgbG9hZGVkLgor
ICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0ZWQgaW5zcGVjdG9yIHRoYXQgaGFzIGZp
bmlzaGVkIGxvYWRpbmcuCisqLworLSAodm9pZClpbnNwZWN0b3JGcm9udGVuZExvYWRlZDooX1dL
SW5zcGVjdG9yICopaW5zcGVjdG9yOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3RpbmcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVz
dGluZy5oCmluZGV4IDA2YzM2OTEwMzEyNDE2NjQzMmY3MWNmMGVlY2JmYTRlOTZlMzYyZGMuLjk2
YTk3MTg0ZjRiYzFmNTY5ZDg0YjJlOWJmZTkzMGRiMTQ3MzZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQ
cml2YXRlRm9yVGVzdGluZy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgIl9XS0luc3BlY3Rvci5o
IgogCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciAoV0tUZXN0aW5nKQorLSAodm9pZClfZmV0Y2hV
UkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybDsKIC0gKHZvaWQpX29wZW5VUkxFeHRlcm5hbGx5Rm9y
VGVzdGluZzooTlNVUkwgKil1cmwgdXNlRnJvbnRlbmRBUEk6KEJPT0wpdXNlRnJvbnRlbmRBUEk7
CiAtIChXS1dlYlZpZXcgKilpbnNwZWN0b3JXZWJWaWV3OwogQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclRlc3RpbmcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQpp
bmRleCA2NjhiZDZmMWQ2Nzc1OGE5OTA3ZGJmZGYyNjY2NWZkNjY1MjQ3NWU3Li5iM2M4ZTE3YjI2
MThhNzk2NjkzMTFkNDIxN2Q4ZjljOGVjODg1MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQpAQCAtMzgs
NiArMzgsMTEgQEAgc3RhdGljIE5TU3RyaW5nICpKYXZhU2NyaXB0U25pcHBldFRvT3BlblVSTEV4
dGVybmFsbHkoTlNVUkwgKnVybCkKICAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJJbnNwZWN0b3JGcm9udGVuZEhvc3Qub3BlblVSTEV4dGVybmFsbHkoXCIlQFwiKSIsIHVy
bC5hYnNvbHV0ZVN0cmluZ107CiB9CiAKK3N0YXRpYyBOU1N0cmluZyAqSmF2YVNjcmlwdFNuaXBw
ZXRUb0ZldGNoVVJMKE5TVVJMICp1cmwpCit7CisgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdX
aXRoRm9ybWF0OkAiZmV0Y2goXCIlQFwiKSIsIHVybC5hYnNvbHV0ZVN0cmluZ107Cit9CisKIEBp
bXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IgKFdLVGVzdGluZykKIAogLSAoV0tXZWJWaWV3ICop
aW5zcGVjdG9yV2ViVmlldwpAQCAtNDYsMTQgKzUxLDE5IEBAIC0gKFdLV2ViVmlldyAqKWluc3Bl
Y3RvcldlYlZpZXcKICAgICByZXR1cm4gcGFnZSA/IHBhZ2UtPmNvY29hVmlldygpLmF1dG9yZWxl
YXNlKCkgOiBuaWw7CiB9CiAKKy0gKHZvaWQpX2ZldGNoVVJMRm9yVGVzdGluZzooTlNVUkwgKil1
cmwKK3sKKyAgICBfaW5zcGVjdG9yLT5ldmFsdWF0ZUluRnJvbnRlbmRGb3JUZXN0aW5nKEphdmFT
Y3JpcHRTbmlwcGV0VG9GZXRjaFVSTCh1cmwpKTsKK30KKwogLSAodm9pZClfb3BlblVSTEV4dGVy
bmFsbHlGb3JUZXN0aW5nOihOU1VSTCAqKXVybCB1c2VGcm9udGVuZEFQSTooQk9PTCl1c2VGcm9u
dGVuZEFQSQogewogICAgIGlmICh1c2VGcm9udGVuZEFQSSkKLSAgICAgICAgX2luc3BlY3Rvci0+
ZXZhbHVhdGVJbkZyb250ZW5kRm9yVGVzdGluZyhKYXZhU2NyaXB0U25pcHBldFRvT3BlblVSTEV4
dGVybmFsbHkoW3VybCBjb3B5XSkpOworICAgICAgICBfaW5zcGVjdG9yLT5ldmFsdWF0ZUluRnJv
bnRlbmRGb3JUZXN0aW5nKEphdmFTY3JpcHRTbmlwcGV0VG9PcGVuVVJMRXh0ZXJuYWxseSh1cmwp
KTsKICAgICBlbHNlIHsKICAgICAgICAgLy8gRm9yY2UgdGhlIG5hdmlnYXRpb24gcmVxdWVzdCB0
byBiZSBoYW5kbGVkIG5hdHVyYWxseSB0aHJvdWdoIHRoZQogICAgICAgICAvLyBpbnRlcm5hbCBO
YXZpZ2F0aW9uRGVsZWdhdGUgb2YgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci4KLSAgICAgICAg
W3NlbGYuaW5zcGVjdG9yV2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOlt1cmwgY29weV1dXTsKKyAgICAgICAgW3NlbGYuaW5zcGVjdG9yV2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOnVybF1dOwogICAgIH0KIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3Rv
clVJUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJUHJveHkuY3BwCmluZGV4IGIxNDFlNmY0YWM3MWI3ZTQ3MzUyZjQyODEwY2ZmMDg4NzU3
Y2EzYTAuLjk1MTlmNWIzZDdlZTc4NWQ3MTY0OTQ5YTIwZDQzYmQwODU0Y2VhNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9y
VUlQcm94eS5jcHAKQEAgLTU4OSw2ICs1ODksOSBAQCB2b2lkIFdlYkluc3BlY3RvclVJUHJveHk6
OmZyb250ZW5kTG9hZGVkKCkKICAgICBpZiAobV9leHRlbnNpb25Db250cm9sbGVyKQogICAgICAg
ICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CiAjZW5k
aWYKKworICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgbV9pbnNwZWN0b3JDbGll
bnQtPmZyb250ZW5kTG9hZGVkKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVByb3h5
OjpicmluZ1RvRnJvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5oCmluZGV4IDUxNTA2ZTkyYmYyNzExY2Q3YTRhODk2OGU0MjBhNTQyYTg5Zjhh
Y2MuLmYwMWMzNTU1MTY3NGEyNzczNTc0ZTA1ZjNjYzZmYzJkOWEwMjgwN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJj
ZVVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgV0tJbnNwZWN0b3JS
ZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1NldDxOU1N0cmluZyAqPiAq
YWxsb3dlZFVSTFNjaGVtZXNGb3JDU1A7CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VORApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3Bl
Y3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0KaW5k
ZXggMjA1ZjYyMjkzNGU4NjAwMGVmMTg5YTQyYzQxYjRiYzcxNWJiZGYwNC4uZmRhNDllYmYxYTZi
MTI4MzVkOGE5NjA3OTU3OTE1MWUwOTg0NTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVj
dG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbXBv
cnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldLVVJMU2NoZW1lVGFzay5oIgorI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yVUlQcm94eS5oIgorI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPHd0Zi9Bc3Nl
cnRpb25zLmg+CiAKQEAgLTM3LDEwICszOSwyOCBAQCBAaW1wbGVtZW50YXRpb24gV0tJbnNwZWN0
b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgewogICAgIFJldGFpblB0cjxOU01hcFRhYmxlPGlk
IDxXS1VSTFNjaGVtZVRhc2s+LCBOU09wZXJhdGlvbiAqPj4gX2ZpbGVMb2FkT3BlcmF0aW9uczsK
ICAgICBSZXRhaW5QdHI8TlNCdW5kbGU+IF9jYWNoZWRCdW5kbGU7CiAgICAgUmV0YWluUHRyPE5T
T3BlcmF0aW9uUXVldWU+IF9vcGVyYXRpb25RdWV1ZTsKKyAgICAKKyAgICBSZXRhaW5QdHI8TlNT
ZXQ8TlNTdHJpbmcgKj4+IF9hbGxvd2VkVVJMU2NoZW1lc0ZvckNTUDsKKyAgICBSZXRhaW5QdHI8
TlNTZXQ8TlNVUkwgKj4+IF9tYWluUmVzb3VyY2VVUkxzRm9yQ1NQOwogfQogCiAvLyBNQVJLIC0g
V0tVUkxTY2hlbWVIYW5kbGVyIFByb3RvY29sCiAKKy0gKE5TU2V0PE5TU3RyaW5nICo+ICopYWxs
b3dlZFVSTFNjaGVtZXNGb3JDU1AKK3sKKyAgICByZXR1cm4gX2FsbG93ZWRVUkxTY2hlbWVzRm9y
Q1NQLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dlZFVSTFNjaGVtZXNGb3JD
U1A6KE5TU2V0PE5TU3RyaW5nICo+ICopYWxsb3dlZFVSTFNjaGVtZXMKK3sKKyAgICBfYWxsb3dl
ZFVSTFNjaGVtZXNGb3JDU1AgPSBbYWxsb3dlZFVSTFNjaGVtZXMgY29weV07CisKKyAgICBOU011
dGFibGVTZXQ8TlNVUkwgKj4gKnJlc3VsdCA9IFtbTlNNdXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0
aENhcGFjaXR5OjJdOworICAgIFtyZXN1bHQgYWRkT2JqZWN0OltOU1VSTCBVUkxXaXRoU3RyaW5n
OldlYktpdDo6V2ViSW5zcGVjdG9yVUlQcm94eTo6aW5zcGVjdG9yUGFnZVVSTCgpXV07CisgICAg
W3Jlc3VsdCBhZGRPYmplY3Q6W05TVVJMIFVSTFdpdGhTdHJpbmc6V2ViS2l0OjpXZWJJbnNwZWN0
b3JVSVByb3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpXV07CisgICAgX21haW5SZXNvdXJjZVVS
THNGb3JDU1AgPSByZXN1bHQ7Cit9CisKIC0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRh
c2sKIHsKICAgICBpZiAoIV9jYWNoZWRCdW5kbGUpIHsKQEAgLTg5LDEyICsxMDksMTkgQEAgLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQg
PFdLVVJMU2NoZW1lVGFzaz4pdXIKICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAgICAgICAg
IG1pbWVUeXBlID0gQCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOwogCi0gICAgICAgIFJldGFp
blB0cjxOU0hUVFBVUkxSZXNwb25zZT4gdXJsUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJM
UmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgc3Rh
dHVzQ29kZToyMDAgSFRUUFZlcnNpb246bmlsIGhlYWRlckZpZWxkczpAeworICAgICAgICBOU011
dGFibGVEaWN0aW9uYXJ5ICpoZWFkZXJGaWVsZHMgPSBAewogICAgICAgICAgICAgQCJBY2Nlc3Mt
Q29udHJvbC1BbGxvdy1PcmlnaW4iOiBAIioiLAogICAgICAgICAgICAgQCJDb250ZW50LUxlbmd0
aCI6IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgKHNpemVfdClmaWxlRGF0YS5s
ZW5ndGhdLAogICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOiBtaW1lVHlwZSwKLSAgICAgICAg
fV0pOworICAgICAgICB9Lm11dGFibGVDb3B5OworCisgICAgICAgIC8vIEFsbG93IGZldGNoZXMg
Zm9yIHJlc291cmNlcyB0aGF0IHVzZSBhIHJlZ2lzdGVyZWQgY3VzdG9tIFVSTCBzY2hlbWUuCisg
ICAgICAgIGlmIChfYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1AgJiYgW19tYWluUmVzb3VyY2VVUkxz
Rm9yQ1NQIGNvbnRhaW5zT2JqZWN0OnJlcXVlc3RVUkxdKSB7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqc3RyaW5nRm9yQ1NQUG9saWN5ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb25u
ZWN0LXNyYyAqICVAOiIsIFtfYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1AuZ2V0KCkuYWxsT2JqZWN0
cyBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCI6ICJdXTsKKyAgICAgICAgICAgIFtoZWFkZXJG
aWVsZHMgc2V0T2JqZWN0OnN0cmluZ0ZvckNTUFBvbGljeSBmb3JLZXk6QCJDb250ZW50LVNlY3Vy
aXR5LVBvbGljeSJdOworICAgICAgICB9CiAKKyAgICAgICAgUmV0YWluUHRyPE5TSFRUUFVSTFJl
c3BvbnNlPiB1cmxSZXNwb25zZSA9IGFkb3B0TlMoW1tOU0hUVFBVUkxSZXNwb25zZSBhbGxvY10g
aW5pdFdpdGhVUkw6dXJsU2NoZW1lVGFzay5yZXF1ZXN0LlVSTCBzdGF0dXNDb2RlOjIwMCBIVFRQ
VmVyc2lvbjpuaWwgaGVhZGVyRmllbGRzOmhlYWRlckZpZWxkc10pOwogICAgICAgICBbdXJsU2No
ZW1lVGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6dXJsUmVzcG9uc2UuZ2V0KCldOwogICAgICAgICBb
dXJsU2NoZW1lVGFzayBkaWRSZWNlaXZlRGF0YTpmaWxlRGF0YV07CiAgICAgICAgIFt1cmxTY2hl
bWVUYXNrIGRpZEZpbmlzaF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5k
ZXggN2UxNjY5NjZlMWY4Y2RiZGE2NWExYzE2NGNkNGIyMzlmZGY3ZDdiNC4uNGQ5ZDFhNDFiYWIy
MTkwNzIwNDFjMjA3MjJhYWYxZjhkMmFlNjU2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5tbQpAQCAtMTE0LDcgKzExNCwxMiBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQogLSAoV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqKXdlYlZpZXdDb25maWd1cmF0aW9uCiB7CiAgICAgUmV0YWluUHRyPFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwotICAgIFJldGFpblB0cjxXS0luc3BlY3RvclJl
c291cmNlVVJMU2NoZW1lSGFuZGxlcj4gaW5zcGVjdG9yU2NoZW1lSGFuZGxlciA9IGFkb3B0TlMo
W1tXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAg
IFJldGFpblB0cjxXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlcj4gaW5zcGVjdG9y
U2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5k
bGVyIG5ld10pOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ8TlNTdHJpbmcgKj4+IGFsbG93
ZWRVUkxTY2hlbWVzID0gYWRvcHROUyhbTlNNdXRhYmxlU2V0IHNldFdpdGhPYmplY3RzOldLSW5z
cGVjdG9yUmVzb3VyY2VTY2hlbWUsIEAid3MiLCBAIndzcyIsIG5pbF0pOworICAgIGZvciAoYXV0
byBwYWlyIDogX2NvbmZpZ3VyYXRpb24tPl9jb25maWd1cmF0aW9uLT51cmxTY2hlbWVIYW5kbGVy
cygpKQorICAgICAgICBbYWxsb3dlZFVSTFNjaGVtZXMgYWRkT2JqZWN0OnBhaXIuc2Vjb25kXTsK
KworICAgIFtpbnNwZWN0b3JTY2hlbWVIYW5kbGVyIHNldEFsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQ
OmFsbG93ZWRVUkxTY2hlbWVzLmF1dG9yZWxlYXNlKCldOwogICAgIFtjb25maWd1cmF0aW9uIHNl
dFVSTFNjaGVtZUhhbmRsZXI6aW5zcGVjdG9yU2NoZW1lSGFuZGxlci5hdXRvcmVsZWFzZSgpIGZv
clVSTFNjaGVtZTpXS0luc3BlY3RvclJlc291cmNlU2NoZW1lXTsKIAogICAgIFdLUHJlZmVyZW5j
ZXMgKnByZWZlcmVuY2VzID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlczsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjNjA0Y2ZjMThj
OTdlMzBhMmZjNWRjMGVkN2NhN2EzMjE5ZWVlZTI4Li5iNmRjZWI3NWVkZDc1M2FjMjBiMmZhNmRj
YTcxMTgzNGU0YTNjZjQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMjEtMDQtMTkgIEJKIEJ1cmcgIDxiYnVyZ0Bh
cHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSByZS1lbmFibGUgdGVzdCBjYXNlIFdLSW5zcGVj
dG9yRGVsZWdhdGUuSW5zcGVjdG9yQ29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NTc3CisgICAgICAgIDxyZGFyOi8vNzA1MDUy
NzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVHJp
Z2dlciBhIGZldGNoIG9mIGEgcmVzb3VyY2UgdGhhdCB1c2VzIGEgY3VzdG9tIFVSTCBzY2hlbWUg
aGFuZGxlciBpbgorICAgICAgICBvcmRlciB0byB0ZXN0IHRoYXQgY3VzdG9tIHNjaGVtZSBoYW5k
bGVycyByZWdpc3RlcmVkIGluIGFuIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24KKyAgICAgICAg
YXJlIGdldHRpbmcgdXNlZCBhcyBleHBlY3RlZC4KKworICAgICAgICBBZGQgYW4gLWluc3BlY3Rv
ckZyb250ZW5kTG9hZGVkOiBkZWxlZ2F0ZSBtZXRob2QgdG8gLVdLSW5zcGVjdG9yRGVsZWdhdGUu
CisgICAgICAgIFRoaXMgaXMgbWFpbmx5IHVzZWQgdG8gcHJldmVudCB0ZXN0cyBmcm9tIHByb2dy
ZXNzaW5nIHdpdGggYSBoYWxmLWxvYWRlZCBpbnNwZWN0b3IuCisKKyAgICAgICAgVG8gbWFrZSBp
dCBwb3NzaWJsZSB0byBkbyB0aGlzIGZldGNoKCksIHRoZXJlIGFyZSBzb21lIENTUCByZWxhdGVk
IGNoYW5nZXMKKyAgICAgICAgdGhhdCB3ZXJlIG1hZGUgZm9yIE1haW4uaHRtbCBzbyB0aGF0IGZl
dGNoaW5nIGZyb20gYSByZWdpc3RlcmVkIGN1c3RvbSBzY2hlbWUgaXMgYWxsb3dlZC4KKworICAg
ICAgICBEcml2ZS1ieSwgcGVyIHBvc3QtY29tbWl0IGNvbW1lbnRzLCBhZGQgYSBiZXR0ZXIgZml4
IGZvciB0aGUgbWVtb3J5IGxlYWsgcmVwb3J0ZWQgaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMzg5OS4gVGhhbmtzIEpvZSEKKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKHJlc2V0R2xvYmFsU3RhdGUpOgorICAgICAgICAoLVtJbnNwZWN0b3JEZWxlZ2F0
ZSBpbnNwZWN0b3JGcm9udGVuZExvYWRlZDpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAo
LVtVSURlbGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAg
ICAoLVtVSURlbGVnYXRlIF93ZWJWaWV3OndpbGxDbG9zZUxvY2FsSW5zcGVjdG9yOl0pOgorICAg
ICAgICAoLVtVSURlbGVnYXRlIF93ZWJWaWV3RGlkRW5hYmxlSW5zcGVjdG9yQnJvd3NlckRvbWFp
bjpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBfd2ViVmlld0RpZERpc2FibGVJbnNwZWN0b3JC
cm93c2VyRG9tYWluOl0pOgorCiAyMDIxLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgU1ZHIEltYWdlcyBsYXVuY2ggdGhlIEdQVVByb2Nlc3MgdW5uZWNl
c3NhcmlseQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCmluZGV4IGJhNWJhYmEwZGY4NjQzMzVlNjUx
MDFhZDUxMGE1NWU2MzBiZWUyMTMuLjdmM2NhZjUzNzYzYTM1MDNmODIxNmQ0Yzg0Mjg3ODliNjEy
YjNmODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00Niw2ICs0Niw3IEBAIEBjbGFz
cyBJbnNwZWN0b3JEZWxlZ2F0ZTsKIEBjbGFzcyBTaW1wbGVVUkxTY2hlbWVIYW5kbGVyOwogCiBz
dGF0aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGlj
IGJvb2wgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWRDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29s
IHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBicm93
c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wg
YnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CkBAIC02MSw2
ICs2Miw3IEBAIHN0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHVybFRvT3BlbjsKIHN0YXRpYyB2b2lk
IHJlc2V0R2xvYmFsU3RhdGUoKQogewogICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVk
ID0gZmFsc2U7CisgICAgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWRDYWxsZWQgPSBmYWxzZTsKICAg
ICB3aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogICAgIGJyb3dzZXJEb21h
aW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiAgICAgYnJvd3NlckRvbWFpbkRp
c2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CkBAIC0xMTAsMTIgKzExMiwxNyBAQCAt
ICh2b2lkKWluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIG9wZW5VUkxFeHRlcm5h
bGx5OihOU1VSTCAqKXVybAogICAgIG9wZW5VUkxFeHRlcm5hbGx5Q2FsbGVkID0gdHJ1ZTsKIH0K
IAorLSAodm9pZClpbnNwZWN0b3JGcm9udGVuZExvYWRlZDooX1dLSW5zcGVjdG9yICopaW5zcGVj
dG9yCit7CisgICAgaW5zcGVjdG9yRnJvbnRlbmRMb2FkZWRDYWxsZWQgPSB0cnVlOworfQorCiBA
ZW5kCiAKLUBpbnRlcmZhY2UgVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CitA
aW50ZXJmYWNlIFVJRGVsZWdhdGVGb3JUZXN0aW5nIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4K
IEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGUKK0BpbXBsZW1lbnRhdGlvbiBVSURl
bGVnYXRlRm9yVGVzdGluZwogCiAtIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihf
V0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKIHsKQEAgLTE2NSw3ICsxNzIsNyBAQCBURVNUKFdLSW5z
cGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxiYWNrcykKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIHVpRGVsZWdh
dGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlIG5ld10pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFk
b3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nIG5ld10pOwogCiAgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
IjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJv
ZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CkBAIC0xODksNyArMTk2LDcgQEAgVEVTVChX
S0luc3BlY3RvckRlbGVnYXRlLCBJbnNwZWN0b3JDbG9zZUNhbGxlZFJlZW50cmFudGx5KQogICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIG5ld10pOwogICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8g
dWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB1aURlbGVn
YXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmcgbmV3XSk7CiAKICAgICBbd2ViVmll
dyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1M
U3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwv
aGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKQEAgLTIxMywxNSArMjIwLDE2
IEBAIFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgU2hvd1VSTEV4dGVybmFsbHkpCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
bmV3XSk7CiAgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVs
b3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byB1aURl
bGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUg
PSBhZG9wdE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZyBuZXddKTsKIAogICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFk
Pjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOwogCiAgICAgW1t3ZWJWaWV3IF9pbnNw
ZWN0b3JdIHNob3ddOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3JDYWxsZWQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaW5zcGVj
dG9yRnJvbnRlbmRMb2FkZWRDYWxsZWQpOwogCi0gICAgdXJsVG9PcGVuID0gYWRvcHROUyhbTlNV
UkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIl0pOworICAgIHVybFRv
T3BlbiA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXTsK
IAogICAgIC8vIENoZWNrIHRoZSBjYXNlIHdoZXJlIHRoZSBsb2FkIGlzIGludGVyY2VwdGVkIGJ5
IHRoZSBuYXZpZ2F0aW9uIGRlbGVnYXRlLgogICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBfb3Bl
blVSTEV4dGVybmFsbHlGb3JUZXN0aW5nOnVybFRvT3Blbi5nZXQoKSB1c2VGcm9udGVuZEFQSTpO
T107CkBAIC0yMzIsMTUgKzI0MCwxNCBAQCBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIFNob3dV
UkxFeHRlcm5hbGx5KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb3BlblVSTEV4dGVy
bmFsbHlDYWxsZWQpOwogfQogCi0vLyBGSVhNRTogcmUtZW5hYmxpbmcgdGhpcyB0ZXN0IGNhc2Ug
aXMgYmxvY2tlZCwgdHJhY2tpbmcgdGhpcyB0YXNrIGluIDxyZGFyOi8vcHJvYmxlbS83MDUwNTI3
Mj4uCi1URVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIERJU0FCTEVEX0luc3BlY3RvckNvbmZpZ3Vy
YXRpb24pCitURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckNvbmZpZ3VyYXRpb24p
CiB7CiAgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOwogCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgd2ViVmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQg
PSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhb
VUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVn
YXRlRm9yVGVzdGluZyBuZXddKTsKIAogICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxl
Z2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+
VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBj
b250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8v
ZXhhbXBsZS5jb20vIl1dOwpAQCAtMjUwLDEzICsyNTcsMTEgQEAgVEVTVChXS0luc3BlY3RvckRl
bGVnYXRlLCBESVNBQkxFRF9JbnNwZWN0b3JDb25maWd1cmF0aW9uKQogICAgIFtbd2ViVmlldyBf
aW5zcGVjdG9yXSBzaG93XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCk7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZpbnNwZWN0b3JGcm9udGVuZExvYWRlZENhbGxlZCk7CiAKLSAgICAvLyBGSVhN
RTogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcidzIG5hdmlnYXRpb24gZGVsZWdhdGUgY2FuY2Vs
cyBhbGwgbWFpbiBmcmFtZQotICAgIC8vIGxvYWRzIHRoYXQgYXJlIG5vdCB0aGUgV2ViIEluc3Bl
Y3RvciBwYWdlLiBTbywgdGhpcyBjYW5ub3QgYmUgZnVsbHkgdGVzdGVkIHVudGlsCi0gICAgLy8g
d2UgY2FuIHVzZWQgdGhlIGNyZWF0ZVRhYiBBUEkgdG8gbG9hZCB0aGUgY3VzdG9tIFVSTCBzY2hl
bWUgcmVzb3VyY2UgaW4gYW4gaWZyYW1lLgogICAgIHVybFRvT3BlbiA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdGluZzptYWluMSJdOwogICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0
KCkuZXhwZWN0ZWRVUkwgPSB1cmxUb09wZW4uZ2V0KCk7Ci0gICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIF9vcGVuVVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6dXJsVG9PcGVuLmdldCgpIHVzZUZyb250
ZW5kQVBJOk5PXTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gX2ZldGNoVVJMRm9yVGVzdGlu
Zzp1cmxUb09wZW4uZ2V0KCldOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRV
UkxTY2hlbWVUYXNrQ2FsbGVkKTsKIAogICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBjbG9zZV07
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426862</attachid>
            <date>2021-04-22 16:16:32 -0700</date>
            <delta_ts>2021-04-22 17:09:14 -0700</delta_ts>
            <desc>Patch v1.1</desc>
            <filename>bug-224577-20210422161631.patch</filename>
            <type>text/plain</type>
            <size>24429</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2NDQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBh
NDlkMmU2NjIzZGFiYjlhMzI3OWUxNGE2MjgyYzNmNTkzZGU4MjJiLi4xMWRjNWZmNzRlYjVlYTcx
N2NlZjIxMjRkNjdhNTg4NjNlYzg1YTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAyMS0wNC0xOSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIHJlLWVuYWJsZSB0ZXN0IGNhc2UgV0tJbnNwZWN0b3JEZWxlZ2F0ZS5JbnNw
ZWN0b3JDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjQ1NzcKKyAgICAgICAgPHJkYXI6Ly83MDUwNTI3Mj4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQWRqdXN0IHRoZSBDU1AgZGlyZWN0
aXZlIGxpc3QgaW4gdGhlIDxtZXRhPiB0YWcgdG8gYWxsb3cgZm9yIGN1c3RvbWl6YXRpb24KKyAg
ICAgICAgYnkgV2ViS2l0IHBvcnRzLiAKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sOgorICAgICAgICAtIFJlbW92ZSBgZGVmYXVsdC1zcmMgJ3NlbGYnYCBzbyBhcyBub3QgdG8g
YmxvY2sgY3VzdG9tIHNjaGVtZSBsb2Fkcy4KKyAgICAgICAgLSBSZW1vdmUgYGNvbm5lY3Qtc3Jj
ICogd3M6YCBzbyBhcyBub3QgdG8gYmxvY2sgY3VzdG9tIHNjaGVtZSBsb2Fkcy4KKyAgICAgICAg
LSBBZGQgYG9iamVjdC1zcmMgJ25vbmUnYCBhcyB3ZSBoYXZlIG5vIHJlYXNvbiB0byBhbGxvdyA8
b2JqZWN0PiwgPGVtYmVkPiwgb3IgPGFwcGxldD4uCisKIDIwMjEtMDQtMjAgIFJhenZhbiBDYWxp
bWFuICA8cmNhbGltYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRyZWUg
T3V0bGluZXM6IGBvbmRldGFjaGAgY2FuIGJlIGNhbGxlZCB3aXRob3V0IGBvbmF0dGFjaGAgZXZl
ciBiZWluZyBjYWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGI0M2E3ZDJlODZjMmQyMjI3MTI3N2I0OWRmZTMz
ZGJiNWUwODgyYy4uODBjN2Y1Y2VjZmIzNGJiZDcxODQwNTM2MjJhYmI0YjU3MDIxMzJjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAyMS0wNC0xOSAgQkogQnVyZyAgPGJidXJnQGFwcGxl
LmNvbT4KKworICAgICAgICBbQ29jb2FdIHJlLWVuYWJsZSB0ZXN0IGNhc2UgV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5JbnNwZWN0b3JDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ1NzcKKyAgICAgICAgPHJkYXI6Ly83MDUwNTI3Mj4K
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgRm9yIHRoZSBw
dXJwb3NlcyBvZiB0ZXN0aW5nLCB3ZSB3YW50IHRvIGJlIGFibGUgdG8gaXNzdWUgYSBmZXRjaCgp
IHRoYXQgd2lsbAorICAgICAgICBoaXQgYSBjdXN0b20gVVJMIHNjaGVtZSBoYW5kbGVyIHJlZ2lz
dGVyZWQgd2l0aCBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLgorICAgICAgICBUaGlzIGlzIG5v
dCBhbGxvd2VkIGJ5IHRoZSBleGlzdGluZyA8bWV0YT4gdGFnIENTUCBkaXJlY3RpdmUgbGlzdCBi
ZWNhdXNlICdjb25uZWN0LXNyYyAqJworICAgICAgICBkb2VzIG5vdCBhbGxvdyBjb25uZWN0aW5n
IHRvIGFyYml0cmFyeSBzY2hlbWVzLCBqdXN0IGFyYml0cmFyeSBkb21haW5zLgorCisgICAgICAg
IFRvIGZpeCB0aGlzLCByZWxheCB0aGUgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmUgaW4gTWFpbi5o
dG1sIGFuZCBhcHBseQorICAgICAgICBhIGR5bmFtaWNhbGx5LWNvbXB1dGVkIENTUCBkaXJlY3Rp
dmUgdXNpbmcgdGhlICdDb250ZW50LVNlY3VyaXR5LVBvbGljeScgSFRUUAorICAgICAgICByZXNw
b25zZSBoZWFkZXIuIFRoaXMgaXMgb25seSBzZW50IGZvciBtYWluIHJlc291cmNlcyAoTWFpbi5o
dG1sIGFuZCBUZXN0Lmh0bWwpCisgICAgICAgIHVzaW5nIHRoZSBuZXdseSBhZGRlZCBpbnNwZWN0
b3ItcmVzb3VyY2U6IFVSTCBzY2hlbWUgaGFuZGxlci4KKworICAgICAgICBUaGUgZHluYW1pY2Fs
bHkgY29tcHV0ZWQgZGlyZWN0aXZlIGV4cGxpY2l0bHkgYWxsb3dzICdzZWxmJyBhbmQgYW55IG90
aGVyIHJlZ2lzdGVyZWQKKyAgICAgICAgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlcnMuIFdlYktp
dCBwb3J0cyB3aGljaCBoYXZlIG5vdCBtaWdyYXRlZCBhd2F5IGZyb20gZmlsZTovLy8KKyAgICAg
ICAgd2lsbCBvbmx5IGFwcGx5IHRoZSB3ZWFrZXIgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmUgZnJv
bSB0aGUgPG1ldGE+IHRhZyBhZnRlciB0aGlzIGNoYW5nZS4KKworICAgICAgICBQcm9ncmVzc2Vz
IGFuIGV4aXN0aW5nIEFQSSB0ZXN0OiBXS0luc3BlY3RvckRlbGVnYXRlLkluc3BlY3RvckNvbmZp
Z3VyYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRl
bGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaDoK
KyAgICAgICAgKEFQSTo6SW5zcGVjdG9yQ2xpZW50Ojpmcm9udGVuZExvYWRlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbToKKyAgICAgICAgKEph
dmFTY3JpcHRTbmlwcGV0VG9GZXRjaFVSTCk6CisgICAgICAgICgtW19XS0luc3BlY3RvciBfZmV0
Y2hVUkxGb3JUZXN0aW5nOl0pOgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yVUlQcm94
eTo6ZnJvbnRlbmRMb2FkZWQpOiBOb3RpZnkgdGhlIF9XS0luc3BlY3RvckRlbGVnYXRlCisgICAg
ICAgIGFkYXB0ZXIgdGhhdCB0aGUgZnJvbnRlbmQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2No
ZW1lSGFuZGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVj
dG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvclJl
c291cmNlVVJMU2NoZW1lSGFuZGxlciBhbGxvd2VkVVJMU2NoZW1lc0ZvckNTUF0pOgorICAgICAg
ICAoLVtXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciBzZXRBbGxvd2VkVVJMU2No
ZW1lc0ZvckNTUDpdKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhh
bmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgIEFkZGVkLiBLZWVw
IHRyYWNrIG9mIGFsbG93ZWQgY3VzdG9tIHNjaGVtZXMgYW5kIGFsbG93ZWQgbWFpbiByZXNvdXJj
ZXMuCisgICAgICAgIEFwcGx5IHRoZSBDU1AgZGlyZWN0aXZlIGZvciBtYWluIHJlc291cmNlIHJl
cXVlc3RzIG9ubHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6CisgICAgICAgIFNldCB0aGUgYWxsb3dlZCBVUkwg
c2NoZW1lcyBwcm9wZXJ0eSBzbyB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIGNhbiBpbmNsdWRlCisg
ICAgICAgIHRoZSBzY2hlbWVzIGluIHRoZSBkeW5hbWljYWxseSBjb21wdXRlZCAnY29ubmVjdC1z
cmMnIGRpcmVjdGl2ZS4KKwogMjAyMS0wNC0yMiAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4K
IAogICAgICAgICB2MjogUkVHUkVTU0lPTihyMjY2ODkwKTogW0NvY29hXSBGaXggQVBJOjpJbnNw
ZWN0b3JDbGllbnQgbGVhawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCmluZGV4IDhhM2M5MDNhMWI5ZDViZmI2ZGNkZjBhYTBhYTgzZWZiOWU4MTRiM2Yu
LmUxNjc0ZGJjMTBkZDNjNzgyMTg0MTdlOTc1ZGNmY2I5OWMxMjA1NzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTEsNSArMSw1IEBACiA8
IS0tCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNiwx
MSBAQAogPGh0bWw+CiA8aGVhZD4KICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci0gICAgPG1ldGEgaHR0cC1lcXVp
dj0iQ29udGVudC1TZWN1cml0eS1Qb2xpY3kiIGNvbnRlbnQ9ImRlZmF1bHQtc3JjICdzZWxmJzsg
aW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOjsgY29ubmVjdC1zcmMgKiB3czo7IG1lZGlh
LXNyYyAqIGJsb2I6OyBmb250LXNyYyAqIGJsb2I6OyBzdHlsZS1zcmMgJ3NlbGYnICd1bnNhZmUt
aW5saW5lJzsgc2NyaXB0LXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnIGRhdGE6Ij4KKyAgICA8
IS0tCisgICAgICAgIE5vdGUgdGhhdCBzb21lIFdlYktpdCBwb3J0cyBtYXkgc2V0IGN1c3RvbSAn
ZnJhbWUtc3JjJyBhbmQgJ2Nvbm5lY3Qtc3JjJyBkaXJlY3RpdmVzIHZpYSBIVFRQIHJlc3BvbnNl
IGhlYWRlci4KKyAgICAgICAgVGhlIGNvbWJpbmVkIENTUCBwb2xpY3kgcmVxdWlyZXMgYSByZXF1
ZXN0IHRvIGJlIGFsbG93ZWQgYnkgYm90aCBkaXJlY3RpdmUgbGlzdHMsIHNvICdkZWZhdWx0LXNy
YycgaXMgb21pdHRlZC4KKyAgICAtLT4KKyAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVNl
Y3VyaXR5LVBvbGljeSIgY29udGVudD0iaW1nLXNyYyAqIGZpbGU6IGJsb2I6IHJlc291cmNlOjsg
bWVkaWEtc3JjICogYmxvYjo7IGZvbnQtc3JjICogYmxvYjo7IHN0eWxlLXNyYyAnc2VsZicgJ3Vu
c2FmZS1pbmxpbmUnOyBzY3JpcHQtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZScgZGF0YTo7IG9i
amVjdC1zcmMgJ25vbmUnIj4KIAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNzcyI+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaAppbmRleCAyNjQxNzA2NGZjMGY0NjE2
ZDY0ZTNhMDAxZjc1OGZmZTViOGUzZjhkLi44YjI3ZWFiZjY2YmE2ZDcxNWM0NjQwOGE0NDU4YTY3
ZDI0OGI0YTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5z
cGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckNsaWVudC5oCkBAIC0zOSw2ICszOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CiAKICAgICB2aXJ0dWFsIHZvaWQgb3BlblVSTEV4dGVy
bmFsbHkoV2ViS2l0OjpXZWJJbnNwZWN0b3JVSVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcmIHVy
bCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9hZGVkKFdlYktpdDo6V2ViSW5zcGVj
dG9yVUlQcm94eSYpIHsgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCAyOWRjMTc0
OThhNTZkNDE1NzlmZDIzMjVkMzA1OTBlOGViODVhNjNkLi5jMWU2ZmE3NDcwNjM3MmU2OWY0Mjg3
ZjY1OTcwY2VkMGJjOGJlNzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KQEAgLTU0LDYgKzU0LDcgQEAgcHVibGljOgogICAgIGV4
cGxpY2l0IEluc3BlY3RvckNsaWVudChpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+IGRlbGVnYXRl
KQogICAgICAgICA6IG1fZGVsZWdhdGUoZGVsZWdhdGUpCiAgICAgICAgICwgbV9yZXNwb25kc1Rv
SW5zcGVjdG9yT3BlblVSTEV4dGVybmFsbHkoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW5zcGVjdG9yOm9wZW5VUkxFeHRlcm5hbGx5OildKQorICAgICAgICAsIG1fcmVz
cG9uZHNUb0luc3BlY3RvckZyb250ZW5kTG9hZGVkKFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGluc3BlY3RvckZyb250ZW5kTG9hZGVkOildKQogICAgIHsKICAgICB9CiAK
QEAgLTY5LDkgKzcwLDE4IEBAIHByaXZhdGU6CiAgICAgICAgIFttX2RlbGVnYXRlIGluc3BlY3Rv
cjp3cmFwcGVyKGluc3BlY3Rvcikgb3BlblVSTEV4dGVybmFsbHk6W05TVVJMIFVSTFdpdGhTdHJp
bmc6dXJsXV07CiAgICAgfQogCisgICAgdm9pZCBmcm9udGVuZExvYWRlZChXZWJLaXQ6OldlYklu
c3BlY3RvclVJUHJveHkmIGluc3BlY3RvcikgZmluYWwKKyAgICB7CisgICAgICAgIGlmICghbV9k
ZWxlZ2F0ZSB8fCAhbV9yZXNwb25kc1RvSW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgW21fZGVsZWdhdGUgaW5zcGVjdG9yRnJvbnRlbmRMb2Fk
ZWQ6d3JhcHBlcihpbnNwZWN0b3IpXTsKKyAgICB9CisKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dL
SW5zcGVjdG9yRGVsZWdhdGU+ID4gbV9kZWxlZ2F0ZTsKIAogICAgIGJvb2wgbV9yZXNwb25kc1Rv
SW5zcGVjdG9yT3BlblVSTEV4dGVybmFsbHkgOiAxOworICAgIGJvb2wgbV9yZXNwb25kc1RvSW5z
cGVjdG9yRnJvbnRlbmRMb2FkZWQgOiAxOwogfTsKIAogQGltcGxlbWVudGF0aW9uIF9XS0luc3Bl
Y3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
SW5zcGVjdG9yRGVsZWdhdGUuaAppbmRleCA0MDViN2QwM2E3OTQxMjIyMWMyNWRhZDcxZmRlY2Iy
ZmNmMmYzOTQ2Li43MDM0YzBlZmVlNjZjNTA2MDdjM2ZjZTgxNGQ1MjZiNDMwMjM2MjQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVs
ZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yRGVsZWdhdGUuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDIwLTIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0zOCw0ICszOCw5IEBACiAgKi8KIC0gKHZvaWQpaW5zcGVjdG9yOihfV0tJ
bnNwZWN0b3IgKilpbnNwZWN0b3Igb3BlblVSTEV4dGVybmFsbHk6KE5TVVJMICopdXJsOwogCisv
KiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBfV0tJbnNwZWN0b3IgdXNlciBpbnRlcmZhY2Ug
aGFzIGJlZW4gZnVsbHkgbG9hZGVkLgorICAgIEBwYXJhbSBpbnNwZWN0b3IgdGhlIGFzc29jaWF0
ZWQgaW5zcGVjdG9yIHRoYXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuCisqLworLSAodm9pZClpbnNw
ZWN0b3JGcm9udGVuZExvYWRlZDooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yOworCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
UHJpdmF0ZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oCmluZGV4IDA2YzM2OTEwMzEyNDE2NjQzMmY3
MWNmMGVlY2JmYTRlOTZlMzYyZGMuLjk2YTk3MTg0ZjRiYzFmNTY5ZDg0YjJlOWJmZTkzMGRiMTQ3
MzZmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAK
ICNpbXBvcnQgIl9XS0luc3BlY3Rvci5oIgogCiBAaW50ZXJmYWNlIF9XS0luc3BlY3RvciAoV0tU
ZXN0aW5nKQorLSAodm9pZClfZmV0Y2hVUkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybDsKIC0gKHZv
aWQpX29wZW5VUkxFeHRlcm5hbGx5Rm9yVGVzdGluZzooTlNVUkwgKil1cmwgdXNlRnJvbnRlbmRB
UEk6KEJPT0wpdXNlRnJvbnRlbmRBUEk7CiAtIChXS1dlYlZpZXcgKilpbnNwZWN0b3JXZWJWaWV3
OwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvclRlc3RpbmcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yVGVzdGluZy5tbQppbmRleCA5MGQ5MDAxMjQyNjU3MmU2YTc5ZGQ4YTM2NmVl
MjAxMjQ0YmJjN2ZhLi5iM2M4ZTE3YjI2MThhNzk2NjkzMTFkNDIxN2Q4ZjljOGVjODg1MTk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
VGVzdGluZy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yVGVzdGluZy5tbQpAQCAtMzgsNiArMzgsMTEgQEAgc3RhdGljIE5TU3RyaW5nICpKYXZh
U2NyaXB0U25pcHBldFRvT3BlblVSTEV4dGVybmFsbHkoTlNVUkwgKnVybCkKICAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnNwZWN0b3JGcm9udGVuZEhvc3Qub3BlblVS
TEV4dGVybmFsbHkoXCIlQFwiKSIsIHVybC5hYnNvbHV0ZVN0cmluZ107CiB9CiAKK3N0YXRpYyBO
U1N0cmluZyAqSmF2YVNjcmlwdFNuaXBwZXRUb0ZldGNoVVJMKE5TVVJMICp1cmwpCit7CisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiZmV0Y2goXCIlQFwiKSIsIHVybC5h
YnNvbHV0ZVN0cmluZ107Cit9CisKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0b3IgKFdLVGVz
dGluZykKIAogLSAoV0tXZWJWaWV3ICopaW5zcGVjdG9yV2ViVmlldwpAQCAtNDYsNiArNTEsMTEg
QEAgLSAoV0tXZWJWaWV3ICopaW5zcGVjdG9yV2ViVmlldwogICAgIHJldHVybiBwYWdlID8gcGFn
ZS0+Y29jb2FWaWV3KCkuYXV0b3JlbGVhc2UoKSA6IG5pbDsKIH0KIAorLSAodm9pZClfZmV0Y2hV
UkxGb3JUZXN0aW5nOihOU1VSTCAqKXVybAoreworICAgIF9pbnNwZWN0b3ItPmV2YWx1YXRlSW5G
cm9udGVuZEZvclRlc3RpbmcoSmF2YVNjcmlwdFNuaXBwZXRUb0ZldGNoVVJMKHVybCkpOworfQor
CiAtICh2b2lkKV9vcGVuVVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6KE5TVVJMICopdXJsIHVzZUZy
b250ZW5kQVBJOihCT09MKXVzZUZyb250ZW5kQVBJCiB7CiAgICAgaWYgKHVzZUZyb250ZW5kQVBJ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3Bl
Y3RvclVJUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJUHJveHkuY3BwCmluZGV4IGIxNDFlNmY0YWM3MWI3ZTQ3MzUyZjQyODEwY2ZmMDg4
NzU3Y2EzYTAuLjk1MTlmNWIzZDdlZTc4NWQ3MTY0OTQ5YTIwZDQzYmQwODU0Y2VhNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yVUlQcm94eS5jcHAKQEAgLTU4OSw2ICs1ODksOSBAQCB2b2lkIFdlYkluc3BlY3RvclVJUHJv
eHk6OmZyb250ZW5kTG9hZGVkKCkKICAgICBpZiAobV9leHRlbnNpb25Db250cm9sbGVyKQogICAg
ICAgICBtX2V4dGVuc2lvbkNvbnRyb2xsZXItPmluc3BlY3RvckZyb250ZW5kTG9hZGVkKCk7CiAj
ZW5kaWYKKworICAgIGlmIChtX2luc3BlY3RvckNsaWVudCkKKyAgICAgICAgbV9pbnNwZWN0b3JD
bGllbnQtPmZyb250ZW5kTG9hZGVkKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJJbnNwZWN0b3JVSVBy
b3h5OjpicmluZ1RvRnJvbnQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJM
U2NoZW1lSGFuZGxlci5oCmluZGV4IDUxNTA2ZTkyYmYyNzExY2Q3YTRhODk2OGU0MjBhNTQyYTg5
ZjhhY2MuLmYwMWMzNTU1MTY3NGEyNzczNTc0ZTA1ZjNjYzZmYzJkOWEwMjgwN2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNv
dXJjZVVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMzLDYg
KzMzLDcgQEAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBpbnRlcmZhY2UgV0tJbnNwZWN0
b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVy
PgorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIG51bGxhYmxlKSBOU1NldDxOU1N0cmluZyAq
PiAqYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1A7CiBAZW5kCiAKIE5TX0FTU1VNRV9OT05OVUxMX0VO
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0lu
c3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JSZXNvdXJjZVVSTFNjaGVtZUhhbmRsZXIubW0K
aW5kZXggMjA1ZjYyMjkzNGU4NjAwMGVmMTg5YTQyYzQxYjRiYzcxNWJiZGYwNC4uMGFlNjZlNzZh
OWFiN2ZhYTcwNWEwMzUzOTM2MzZlZGM3OWViYjE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFu
ZGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5z
cGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyLm1tCkBAIC0zMCw2ICszMCw4IEBACiAKICNp
bXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIldLVVJMU2NoZW1lVGFzay5oIgorI2ltcG9ydCAi
V2ViSW5zcGVjdG9yVUlQcm94eS5oIgorI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29h
LmgiCiAjaW1wb3J0IDxXZWJDb3JlL01JTUVUeXBlUmVnaXN0cnkuaD4KICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAKQEAgLTM3LDYgKzM5LDI3IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0luc3Bl
Y3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxlciB7CiAgICAgUmV0YWluUHRyPE5TTWFwVGFibGU8
aWQgPFdLVVJMU2NoZW1lVGFzaz4sIE5TT3BlcmF0aW9uICo+PiBfZmlsZUxvYWRPcGVyYXRpb25z
OwogICAgIFJldGFpblB0cjxOU0J1bmRsZT4gX2NhY2hlZEJ1bmRsZTsKICAgICBSZXRhaW5QdHI8
TlNPcGVyYXRpb25RdWV1ZT4gX29wZXJhdGlvblF1ZXVlOworICAgIAorICAgIFJldGFpblB0cjxO
U1NldDxOU1N0cmluZyAqPj4gX2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQOworICAgIFJldGFpblB0
cjxOU1NldDxOU1VSTCAqPj4gX21haW5SZXNvdXJjZVVSTHNGb3JDU1A7Cit9CisKKy0gKE5TU2V0
PE5TU3RyaW5nICo+ICopYWxsb3dlZFVSTFNjaGVtZXNGb3JDU1AKK3sKKyAgICByZXR1cm4gX2Fs
bG93ZWRVUkxTY2hlbWVzRm9yQ1NQLmdldCgpOworfQorCistICh2b2lkKXNldEFsbG93ZWRVUkxT
Y2hlbWVzRm9yQ1NQOihOU1NldDxOU1N0cmluZyAqPiAqKWFsbG93ZWRVUkxTY2hlbWVzCit7Cisg
ICAgX2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQID0gYWRvcHROUyhbYWxsb3dlZFVSTFNjaGVtZXMg
Y29weV0pOworfQorCistIChOU1NldDxOU1VSTCAqPiAqKW1haW5SZXNvdXJjZVVSTHNGb3JDU1AK
K3sKKyAgICBpZiAoIV9tYWluUmVzb3VyY2VVUkxzRm9yQ1NQKQorICAgICAgICBfbWFpblJlc291
cmNlVVJMc0ZvckNTUCA9IGFkb3B0TlMoW1tOU1NldCBhbGxvY10gaW5pdFdpdGhPYmplY3RzOltO
U1VSTCBVUkxXaXRoU3RyaW5nOldlYktpdDo6V2ViSW5zcGVjdG9yVUlQcm94eTo6aW5zcGVjdG9y
UGFnZVVSTCgpXSwgW05TVVJMIFVSTFdpdGhTdHJpbmc6V2ViS2l0OjpXZWJJbnNwZWN0b3JVSVBy
b3h5OjppbnNwZWN0b3JUZXN0UGFnZVVSTCgpXSwgbmlsXSk7CisKKyAgICByZXR1cm4gX21haW5S
ZXNvdXJjZVVSTHNGb3JDU1AuZ2V0KCk7CiB9CiAKIC8vIE1BUksgLSBXS1VSTFNjaGVtZUhhbmRs
ZXIgUHJvdG9jb2wKQEAgLTg5LDEyICsxMTIsMTkgQEAgLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdXIK
ICAgICAgICAgaWYgKCFtaW1lVHlwZSkKICAgICAgICAgICAgIG1pbWVUeXBlID0gQCJhcHBsaWNh
dGlvbi9vY3RldC1zdHJlYW0iOwogCi0gICAgICAgIFJldGFpblB0cjxOU0hUVFBVUkxSZXNwb25z
ZT4gdXJsUmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNIVFRQVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRX
aXRoVVJMOnVybFNjaGVtZVRhc2sucmVxdWVzdC5VUkwgc3RhdHVzQ29kZToyMDAgSFRUUFZlcnNp
b246bmlsIGhlYWRlckZpZWxkczpAeworICAgICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlRGljdGlv
bmFyeT4gaGVhZGVyRmllbGRzID0gYWRvcHROUyhAewogICAgICAgICAgICAgQCJBY2Nlc3MtQ29u
dHJvbC1BbGxvdy1PcmlnaW4iOiBAIioiLAogICAgICAgICAgICAgQCJDb250ZW50LUxlbmd0aCI6
IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiJXp1IiwgKHNpemVfdClmaWxlRGF0YS5sZW5n
dGhdLAogICAgICAgICAgICAgQCJDb250ZW50LVR5cGUiOiBtaW1lVHlwZSwKLSAgICAgICAgfV0p
OworICAgICAgICB9Lm11dGFibGVDb3B5KTsKKworICAgICAgICAvLyBBbGxvdyBmZXRjaGVzIGZv
ciByZXNvdXJjZXMgdGhhdCB1c2UgYSByZWdpc3RlcmVkIGN1c3RvbSBVUkwgc2NoZW1lLgorICAg
ICAgICBpZiAoX2FsbG93ZWRVUkxTY2hlbWVzRm9yQ1NQICYmIFtzZWxmLm1haW5SZXNvdXJjZVVS
THNGb3JDU1AgY29udGFpbnNPYmplY3Q6cmVxdWVzdFVSTF0pIHsKKyAgICAgICAgICAgIE5TU3Ry
aW5nICpzdHJpbmdGb3JDU1BQb2xpY3kgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImNv
bm5lY3Qtc3JjICogJUA6IiwgW19hbGxvd2VkVVJMU2NoZW1lc0ZvckNTUC5nZXQoKS5hbGxPYmpl
Y3RzIGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIjogIl1dOworICAgICAgICAgICAgW2hlYWRl
ckZpZWxkcyBzZXRPYmplY3Q6c3RyaW5nRm9yQ1NQUG9saWN5IGZvcktleTpAIkNvbnRlbnQtU2Vj
dXJpdHktUG9saWN5Il07CisgICAgICAgIH0KIAorICAgICAgICBSZXRhaW5QdHI8TlNIVFRQVVJM
UmVzcG9uc2U+IHVybFJlc3BvbnNlID0gYWRvcHROUyhbW05TSFRUUFVSTFJlc3BvbnNlIGFsbG9j
XSBpbml0V2l0aFVSTDp1cmxTY2hlbWVUYXNrLnJlcXVlc3QuVVJMIHN0YXR1c0NvZGU6MjAwIEhU
VFBWZXJzaW9uOm5pbCBoZWFkZXJGaWVsZHM6aGVhZGVyRmllbGRzLmdldCgpXSk7CiAgICAgICAg
IFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVSZXNwb25zZTp1cmxSZXNwb25zZS5nZXQoKV07CiAg
ICAgICAgIFt1cmxTY2hlbWVUYXNrIGRpZFJlY2VpdmVEYXRhOmZpbGVEYXRhXTsKICAgICAgICAg
W3VybFNjaGVtZVRhc2sgZGlkRmluaXNoXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQppbmRleCA3ZTE2Njk2NmUxZjhjZGJkYTY1YTFjMTY0Y2Q0YjIzOWZkZjdkN2I0Li44Mjk2
Nzc3NzU0NTUzMTM2Y2Y2ODEyZWJmNTk4YzIxZjQ1N2Q0ODA0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLm1tCkBAIC0xMTQsOCArMTE0LDEzIEBAIC0gKHZvaWQpc2V0RGVsZWdh
dGU6KGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiAtIChX
S1dlYlZpZXdDb25maWd1cmF0aW9uICopd2ViVmlld0NvbmZpZ3VyYXRpb24KIHsKICAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Ci0gICAgUmV0YWluUHRyPFdLSW5z
cGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyPiBpbnNwZWN0b3JTY2hlbWVIYW5kbGVyID0g
YWRvcHROUyhbW1dLSW5zcGVjdG9yUmVzb3VyY2VVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0
XSk7Ci0gICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjppbnNwZWN0b3JTY2hl
bWVIYW5kbGVyLmF1dG9yZWxlYXNlKCkgZm9yVVJMU2NoZW1lOldLSW5zcGVjdG9yUmVzb3VyY2VT
Y2hlbWVdOworICAgIFJldGFpblB0cjxXS0luc3BlY3RvclJlc291cmNlVVJMU2NoZW1lSGFuZGxl
cj4gaW5zcGVjdG9yU2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1dLSW5zcGVjdG9yUmVzb3VyY2VV
UkxTY2hlbWVIYW5kbGVyIG5ld10pOworICAgIFJldGFpblB0cjxOU011dGFibGVTZXQ8TlNTdHJp
bmcgKj4+IGFsbG93ZWRVUkxTY2hlbWVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10g
aW5pdFdpdGhPYmplY3RzOldLSW5zcGVjdG9yUmVzb3VyY2VTY2hlbWUsIG5pbF0pOworICAgIGZv
ciAoYXV0byYgcGFpciA6IF9jb25maWd1cmF0aW9uLT5fY29uZmlndXJhdGlvbi0+dXJsU2NoZW1l
SGFuZGxlcnMoKSkKKyAgICAgICAgW2FsbG93ZWRVUkxTY2hlbWVzIGFkZE9iamVjdDpwYWlyLnNl
Y29uZF07CisKKyAgICBbaW5zcGVjdG9yU2NoZW1lSGFuZGxlciBzZXRBbGxvd2VkVVJMU2NoZW1l
c0ZvckNTUDphbGxvd2VkVVJMU2NoZW1lcy5nZXQoKV07CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0
VVJMU2NoZW1lSGFuZGxlcjppbnNwZWN0b3JTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVt
ZTpXS0luc3BlY3RvclJlc291cmNlU2NoZW1lXTsKIAogICAgIFdLUHJlZmVyZW5jZXMgKnByZWZl
cmVuY2VzID0gY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlczsKICAgICBwcmVmZXJlbmNl
cy5fYWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzID0gWUVTOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDkyYTdjNmJmOTc0MzY0ZDA3NWNhNjgz
MWYxNDc5NTI4MjlhMjdhNDAuLmEzMjI1MjBlMjAxZDBkOGYwNmM2NDJmMTAxNzZlNWU4ODU0ODg5
OTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzMyBAQAorMjAyMS0wNC0xOSAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIHJlLWVuYWJsZSB0ZXN0IGNhc2UgV0tJbnNwZWN0b3JEZWxlZ2F0ZS5J
bnNwZWN0b3JDb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjQ1NzcKKyAgICAgICAgPHJkYXI6Ly83MDUwNTI3Mj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgVHJpZ2dlciBhIGZldGNoIG9m
IGEgcmVzb3VyY2UgdGhhdCB1c2VzIGEgY3VzdG9tIFVSTCBzY2hlbWUgaGFuZGxlciBpbgorICAg
ICAgICBvcmRlciB0byB0ZXN0IHRoYXQgY3VzdG9tIHNjaGVtZSBoYW5kbGVycyByZWdpc3RlcmVk
IGluIGFuIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24KKyAgICAgICAgYXJlIGdldHRpbmcgdXNl
ZCBhcyBleHBlY3RlZC4KKworICAgICAgICBBZGQgYW4gLWluc3BlY3RvckZyb250ZW5kTG9hZGVk
OiBkZWxlZ2F0ZSBtZXRob2QgdG8gLVdLSW5zcGVjdG9yRGVsZWdhdGUuCisgICAgICAgIFRoaXMg
aXMgbWFpbmx5IHVzZWQgdG8gcHJldmVudCB0ZXN0cyBmcm9tIHByb2dyZXNzaW5nIHdpdGggYSBo
YWxmLWxvYWRlZCBpbnNwZWN0b3IuCisKKyAgICAgICAgVG8gbWFrZSBpdCBwb3NzaWJsZSB0byBk
byB0aGlzIGZldGNoKCksIHRoZXJlIGFyZSBzb21lIENTUCByZWxhdGVkIGNoYW5nZXMKKyAgICAg
ICAgdGhhdCB3ZXJlIG1hZGUgZm9yIE1haW4uaHRtbCBzbyB0aGF0IGZldGNoaW5nIGZyb20gYSBy
ZWdpc3RlcmVkIGN1c3RvbSBzY2hlbWUgaXMgYWxsb3dlZC4KKworICAgICAgICBEcml2ZS1ieSwg
cGVyIHBvc3QtY29tbWl0IGNvbW1lbnRzLCBhZGQgYSBiZXR0ZXIgZml4IGZvciB0aGUgbWVtb3J5
IGxlYWsgcmVwb3J0ZWQgaW4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyMzg5OS4gVGhhbmtzIEpvZSEKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbToKKyAgICAgICAgKHJlc2V0
R2xvYmFsU3RhdGUpOgorICAgICAgICAoLVtJbnNwZWN0b3JEZWxlZ2F0ZSBpbnNwZWN0b3JGcm9u
dGVuZExvYWRlZDpdKToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAoLVtVSURlbGVnYXRlIF93
ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRl
IF93ZWJWaWV3OndpbGxDbG9zZUxvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAoLVtVSURlbGVn
YXRlIF93ZWJWaWV3RGlkRW5hYmxlSW5zcGVjdG9yQnJvd3NlckRvbWFpbjpdKToKKyAgICAgICAg
KC1bVUlEZWxlZ2F0ZSBfd2ViVmlld0RpZERpc2FibGVJbnNwZWN0b3JCcm93c2VyRG9tYWluOl0p
OgorCiAyMDIxLTA0LTIyICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIHYy
OiBSRUdSRVNTSU9OKHIyNjY4OTApOiBbQ29jb2FdIEZpeCBBUEk6Okluc3BlY3RvckNsaWVudCBs
ZWFrCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dL
SW5zcGVjdG9yRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KaW5kZXggOWRlYTYzY2Q4NmE3YjdmMTJkOTA4NTli
ZjQwMmMyMTFiZDIyNDljZS4uN2YzY2FmNTM3NjNhMzUwM2Y4MjE2ZDRjODQyODc4OWI2MTJiM2Y4
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckRlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTctMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ2LDYgKzQ2LDcgQEAgQGNsYXNzIElu
c3BlY3RvckRlbGVnYXRlOwogQGNsYXNzIFNpbXBsZVVSTFNjaGVtZUhhbmRsZXI7CiAKIHN0YXRp
YyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9v
bCBpbnNwZWN0b3JGcm9udGVuZExvYWRlZENhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2ls
bENsb3NlTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIGJyb3dzZXJE
b21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBicm93
c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKQEAgLTYxLDYgKzYy
LDcgQEAgc3RhdGljIFJldGFpblB0cjxOU1VSTD4gdXJsVG9PcGVuOwogc3RhdGljIHZvaWQgcmVz
ZXRHbG9iYWxTdGF0ZSgpCiB7CiAgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBm
YWxzZTsKKyAgICBpbnNwZWN0b3JGcm9udGVuZExvYWRlZENhbGxlZCA9IGZhbHNlOwogICAgIHdp
bGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiAgICAgYnJvd3NlckRvbWFpbkVu
YWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKICAgICBicm93c2VyRG9tYWluRGlzYWJs
ZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKQEAgLTExMCwxMiArMTEyLDE3IEBAIC0gKHZv
aWQpaW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3Igb3BlblVSTEV4dGVybmFsbHk6
KE5TVVJMICopdXJsCiAgICAgb3BlblVSTEV4dGVybmFsbHlDYWxsZWQgPSB0cnVlOwogfQogCist
ICh2b2lkKWluc3BlY3RvckZyb250ZW5kTG9hZGVkOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IK
K3sKKyAgICBpbnNwZWN0b3JGcm9udGVuZExvYWRlZENhbGxlZCA9IHRydWU7Cit9CisKIEBlbmQK
IAotQGludGVyZmFjZSBVSURlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KK0BpbnRl
cmZhY2UgVUlEZWxlZ2F0ZUZvclRlc3RpbmcgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgogQGVu
ZAogCi1AaW1wbGVtZW50YXRpb24gVUlEZWxlZ2F0ZQorQGltcGxlbWVudGF0aW9uIFVJRGVsZWdh
dGVGb3JUZXN0aW5nCiAKIC0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6KF9XS0lu
c3BlY3RvciAqKWluc3BlY3RvcgogewpAQCAtMTY1LDcgKzE3Miw3IEBAIFRFU1QoV0tJbnNwZWN0
b3JEZWxlZ2F0ZSwgSW5zcGVjdG9yTGlmZWN5Y2xlQ2FsbGJhY2tzKQogICAgIGF1dG8gd2ViVmll
d0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwog
ICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRy
YXNFbmFibGVkID0gWUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwotICAgIGF1dG8gdWlEZWxlZ2F0ZSA9
IGFkb3B0TlMoW1VJRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHRO
UyhbVUlEZWxlZ2F0ZUZvclRlc3RpbmcgbmV3XSk7CiAKICAgICBbd2ViVmlldyBzZXRVSURlbGVn
YXRlOnVpRGVsZWdhdGUuZ2V0KCldOwogICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhl
YWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48
cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKQEAgLTE4OSw3ICsxOTYsNyBAQCBURVNUKFdLSW5z
cGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckNsb3NlQ2FsbGVkUmVlbnRyYW50bHkpCiAgICAgYXV0
byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24g
bmV3XSk7CiAgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVs
b3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7Ci0gICAgYXV0byB1aURl
bGVnYXRlID0gYWRvcHROUyhbVUlEZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHVpRGVsZWdhdGUg
PSBhZG9wdE5TKFtVSURlbGVnYXRlRm9yVGVzdGluZyBuZXddKTsKIAogICAgIFt3ZWJWaWV3IHNl
dFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQoKV07CiAgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJp
bmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFk
Pjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOwpAQCAtMjEzLDEzICsyMjAsMTQgQEAg
VEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBTaG93VVJMRXh0ZXJuYWxseSkKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKLSAgICBhdXRvIHVpRGVsZWdh
dGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlIG5ld10pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFk
b3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nIG5ld10pOwogCiAgICAgW3dlYlZpZXcgc2V0VUlE
ZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpA
IjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+PGJv
ZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CiAKICAgICBbW3dlYlZpZXcgX2luc3BlY3Rv
cl0gc2hvd107CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbElu
c3BlY3RvckNhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpbnNwZWN0b3JG
cm9udGVuZExvYWRlZENhbGxlZCk7CiAKICAgICB1cmxUb09wZW4gPSBbTlNVUkwgVVJMV2l0aFN0
cmluZzpAImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIl07CiAKQEAgLTIzMiwxNSArMjQwLDE0IEBA
IFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgU2hvd1VSTEV4dGVybmFsbHkpCiAgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZvcGVuVVJMRXh0ZXJuYWxseUNhbGxlZCk7CiB9CiAKLS8vIEZJ
WE1FOiByZS1lbmFibGluZyB0aGlzIHRlc3QgY2FzZSBpcyBibG9ja2VkLCB0cmFja2luZyB0aGlz
IHRhc2sgaW4gPHJkYXI6Ly9wcm9ibGVtLzcwNTA1MjcyPi4KLVRFU1QoV0tJbnNwZWN0b3JEZWxl
Z2F0ZSwgRElTQUJMRURfSW5zcGVjdG9yQ29uZmlndXJhdGlvbikKK1RFU1QoV0tJbnNwZWN0b3JE
ZWxlZ2F0ZSwgSW5zcGVjdG9yQ29uZmlndXJhdGlvbikKIHsKICAgICByZXNldEdsb2JhbFN0YXRl
KCk7CiAKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVm
ZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
LSAgICBhdXRvIHVpRGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlIG5ld10pOworICAgIGF1
dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGVGb3JUZXN0aW5nIG5ld10pOwogCiAg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKICAgICBbd2ViVmll
dyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVk
PC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVS
TDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CkBAIC0yNTAs
MTMgKzI1NywxMSBAQCBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIERJU0FCTEVEX0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24pCiAgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOwogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yQ2Fs
bGVkKTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVj
dG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmluc3BlY3RvckZyb250
ZW5kTG9hZGVkQ2FsbGVkKTsKIAotICAgIC8vIEZJWE1FOiBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyJ3MgbmF2aWdhdGlvbiBkZWxlZ2F0ZSBjYW5jZWxzIGFsbCBtYWluIGZyYW1lCi0gICAgLy8g
bG9hZHMgdGhhdCBhcmUgbm90IHRoZSBXZWIgSW5zcGVjdG9yIHBhZ2UuIFNvLCB0aGlzIGNhbm5v
dCBiZSBmdWxseSB0ZXN0ZWQgdW50aWwKLSAgICAvLyB3ZSBjYW4gdXNlZCB0aGUgY3JlYXRlVGFi
IEFQSSB0byBsb2FkIHRoZSBjdXN0b20gVVJMIHNjaGVtZSByZXNvdXJjZSBpbiBhbiBpZnJhbWUu
CiAgICAgdXJsVG9PcGVuID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4xIl07
CiAgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxlci5nZXQoKS5leHBlY3RlZFVSTCA9IHVybFRvT3Bl
bi5nZXQoKTsKLSAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gX29wZW5VUkxFeHRlcm5hbGx5Rm9y
VGVzdGluZzp1cmxUb09wZW4uZ2V0KCkgdXNlRnJvbnRlbmRBUEk6Tk9dOworICAgIFtbd2ViVmll
dyBfaW5zcGVjdG9yXSBfZmV0Y2hVUkxGb3JUZXN0aW5nOnVybFRvT3Blbi5nZXQoKV07CiAgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGFydFVSTFNjaGVtZVRhc2tDYWxsZWQpOwogCiAg
ICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIGNsb3NlXTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>