<?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>217896</bug_id>
          
          <creation_ts>2020-10-18 20:54:57 -0700</creation_ts>
          <short_desc>[Cocoa] Introduce _WKInspectorConfiguration for customizing local and remote Web Inspectors</short_desc>
          <delta_ts>2020-10-27 14:23:10 -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>WebKit API</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>darin</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>thorton</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1699191</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-18 20:54:57 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699192</commentid>
    <comment_count>1</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-18 20:55:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/70355910&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699193</commentid>
    <comment_count>2</comment_count>
      <attachid>411726</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-18 21:13:43 -0700</bug_when>
    <thetext>Created attachment 411726
Patch

Still need to finish the API test for this, but it&apos;s mostly done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699993</commentid>
    <comment_count>3</comment_count>
      <attachid>411933</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-20 16:17:30 -0700</bug_when>
    <thetext>Created attachment 411933
Patch v2.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700009</commentid>
    <comment_count>4</comment_count>
      <attachid>411933</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-20 16:43:32 -0700</bug_when>
    <thetext>Comment on attachment 411933
Patch v2.0

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

&gt; Source/WebKit/ChangeLog:11
&gt; +        WebView to load resources from 

from ... ?

&gt; Source/WebKit/Shared/API/APIObject.h:387
&gt; +#if ENABLE(INSPECTOR_EXTENSIONS)
&gt; +        API::Object::Type::InspectorExtension,
&gt; +#endif

this doesn&apos;t exist yet, so please either add a blocking bug that adds this or remove it from this patch

&gt; Source/WebKit/UIProcess/API/APIInspectorConfiguration.h:38
&gt; +using URLSchemeHandlerPair = std::pair&lt;Ref&lt;WebKit::WebURLSchemeHandler&gt;, WTF::String&gt;;

NIT: I&apos;d expect the `String` to be first, as the `WebURLSchemeHandler` wouldn&apos;t know what to do without first knowing the scheme it&apos;s handling (i.e. `std::pair&lt;[the scheme], [the handler for that scheme]&gt;`)

We also might consider renaming this to have `Inspector` in it so that it doesn&apos;t have the potential to clash elsewhere.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:62
&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());

Is the `static_cast` necessary?  Why not just
```
    for (auto&amp; [handler, scheme] : _configuration-&gt;urlSchemeHandlers())
        [configuration setURLSchemeHandler:handler-&gt;apiHandler() forURLScheme:scheme];
```

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:72
&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());

ditto (:62)

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:175
&gt; +- (_WKInspectorConfiguration *)configurationForDebuggable:(_WKInspectorDebuggableInfo *)debuggableInfo

Do we really need to base all of this on `_WKInspectorDebuggableInfo`?  It&apos;s not a very specific object (i.e. multiple unique debuggables can have the same `_WKInspectorDebuggableInfo` data (different instance same values)).  Seeing as this patch doesn&apos;t even do anything with it, can should we just drop it and have it be `-inspectorConfiguration` instead?

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.h:61
&gt; +        void browserDomainEnabled(WebInspectorProxy&amp;) override;

NIT: this class is `final` so you can drop the `override`

&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:1
&gt; +/*

I&apos;m guessing this wasn&apos;t intended to be included in this patch 😅

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:248
&gt; +    // we can used the creteTab API to load the custom URL scheme resource in an iframe.

&quot;createTab&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700246</commentid>
    <comment_count>5</comment_count>
      <attachid>411933</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-21 10:01:35 -0700</bug_when>
    <thetext>Comment on attachment 411933
Patch v2.0

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

&gt;&gt; Source/WebKit/ChangeLog:11
&gt;&gt; +        WebView to load resources from 
&gt; 
&gt; from ... ?

Oops

&gt;&gt; Source/WebKit/Shared/API/APIObject.h:387
&gt;&gt; +#endif
&gt; 
&gt; this doesn&apos;t exist yet, so please either add a blocking bug that adds this or remove it from this patch

I&apos;ll rebase w/o it.

&gt;&gt; Source/WebKit/UIProcess/API/APIInspectorConfiguration.h:38
&gt;&gt; +using URLSchemeHandlerPair = std::pair&lt;Ref&lt;WebKit::WebURLSchemeHandler&gt;, WTF::String&gt;;
&gt; 
&gt; NIT: I&apos;d expect the `String` to be first, as the `WebURLSchemeHandler` wouldn&apos;t know what to do without first knowing the scheme it&apos;s handling (i.e. `std::pair&lt;[the scheme], [the handler for that scheme]&gt;`)
&gt; 
&gt; We also might consider renaming this to have `Inspector` in it so that it doesn&apos;t have the potential to clash elsewhere.

I would expect that order too, but all the API calls and other uses of scheme handlers put the handler first. So I did it this way to be consistent with similar code.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:62
&gt;&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());
&gt; 
&gt; Is the `static_cast` necessary?  Why not just
&gt; ```
&gt;     for (auto&amp; [handler, scheme] : _configuration-&gt;urlSchemeHandlers())
&gt;         [configuration setURLSchemeHandler:handler-&gt;apiHandler() forURLScheme:scheme];
&gt; ```

Yes, it&apos;s a downcast. apiHandler(), which is used below, is defined on the Cocoa subclass not on the base class.

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKRemoteWebInspectorViewController.mm:175
&gt;&gt; +- (_WKInspectorConfiguration *)configurationForDebuggable:(_WKInspectorDebuggableInfo *)debuggableInfo
&gt; 
&gt; Do we really need to base all of this on `_WKInspectorDebuggableInfo`?  It&apos;s not a very specific object (i.e. multiple unique debuggables can have the same `_WKInspectorDebuggableInfo` data (different instance same values)).  Seeing as this patch doesn&apos;t even do anything with it, can should we just drop it and have it be `-inspectorConfiguration` instead?

It made the most sense to me as something to provide as a context object (the thing that&apos;s about to be inspected). WebKit clients could avoid setting URL scheme handlers when they are not needed, based on debuggable version and platform.

&gt;&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorDelegate.h:61
&gt;&gt; +        void browserDomainEnabled(WebInspectorProxy&amp;) override;
&gt; 
&gt; NIT: this class is `final` so you can drop the `override`

Oops

&gt;&gt; Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.cpp:1
&gt;&gt; +/*
&gt; 
&gt; I&apos;m guessing this wasn&apos;t intended to be included in this patch 😅

ugh, git

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:248
&gt;&gt; +    // we can used the creteTab API to load the custom URL scheme resource in an iframe.
&gt; 
&gt; &quot;createTab&quot;

LOL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700276</commentid>
    <comment_count>6</comment_count>
      <attachid>412010</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-21 11:05:14 -0700</bug_when>
    <thetext>Created attachment 412010
Patch v2.1

I&apos;m going to try moving the configurationForDebuggable thing to WKUIDelegatePrivate. As implemented, I don&apos;t think the client would be able to supply a configuration for a secondary WebView if it were immediately shown (aka no chance to set inspector.delegate before the delegate is asked for a configuration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700430</commentid>
    <comment_count>7</comment_count>
      <attachid>412036</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-21 15:41:15 -0700</bug_when>
    <thetext>Created attachment 412036
Patch v3.0

New patch moves the delegate method to WKUIDelegatePrivate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700434</commentid>
    <comment_count>8</comment_count>
      <attachid>412037</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-21 15:50:53 -0700</bug_when>
    <thetext>Created attachment 412037
Patch v3.1

Fix GTK/WPE/WinCairo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700441</commentid>
    <comment_count>9</comment_count>
      <attachid>412042</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-21 16:01:26 -0700</bug_when>
    <thetext>Created attachment 412042
Patch v3.2

Fix GTK/WPE/WinCairo harder</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700754</commentid>
    <comment_count>10</comment_count>
      <attachid>412042</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-10-22 11:20:29 -0700</bug_when>
    <thetext>Comment on attachment 412042
Patch v3.2

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

r=me, nice work!  I think this is a much better design than using `_WKDebuggableInfo` =D

&gt; Source/WebKit/UIProcess/API/APIInspectorConfiguration.h:38
&gt; +using URLSchemeHandlerPair = std::pair&lt;Ref&lt;WebKit::WebURLSchemeHandler&gt;, WTF::String&gt;;

I&apos;d recommend renaming this to have `Inspector` in it so that it doesn&apos;t have the potential to clash elsewhere.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:62
&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());

Is there any way we can check/assert that `pair.first` is in fact a `WebURLSchemeHandlerCocoa`, or is this a common pattern in API code?

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:72
&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());

ditto (:62)

&gt; Source/WebKit/UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:107
&gt; +    Ref&lt;API::InspectorConfiguration&gt; configuration = m_client-&gt;configurationForRemoteInspector(*this);

`auto`?

&gt; Source/WebKit/UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:108
&gt; +    m_inspectorView = adoptNS([[WKInspectorViewController alloc] initWithConfiguration: WebKit::wrapper(configuration) inspectedPage:nullptr]);

Style: extra space

&gt; Source/WebKit/UIProcess/Inspector/mac/WKInspectorViewController.mm:65
&gt;      // The (local) inspected page is nil if the controller is hosting a Remote Web Inspector view.

Style: I&apos;d add a newline before this

&gt; Source/WebKit/UIProcess/Inspector/mac/WebInspectorProxyMac.mm:299
&gt; +    Ref&lt;API::InspectorConfiguration&gt; configuration = inspectedPage()-&gt;uiClient().configurationForLocalInspector(*inspectedPage(),  *this);

`auto`?

&gt; Source/WebKit/UIProcess/Inspector/mac/WebInspectorProxyMac.mm:300
&gt; +    m_inspectorViewController = adoptNS([[WKInspectorViewController alloc] initWithConfiguration: WebKit::wrapper(configuration.get()) inspectedPage:inspectedPage()]);

Style: extra space

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:251
&gt; +    configurationForLocalInspectorCalled = false;
&gt; +    didAttachLocalInspectorCalled = false;

Do we still need these here now that there&apos;s a `resetGlobalState()` above?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:261
&gt; +    startURLSchemeTaskCalled = false;

ditto (:250)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700815</commentid>
    <comment_count>11</comment_count>
      <attachid>412042</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-22 13:50:48 -0700</bug_when>
    <thetext>Comment on attachment 412042
Patch v3.2

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:62
&gt;&gt; +        auto&amp; handler = static_cast&lt;WebKit::WebURLSchemeHandlerCocoa&amp;&gt;(pair.first.get());
&gt; 
&gt; Is there any way we can check/assert that `pair.first` is in fact a `WebURLSchemeHandlerCocoa`, or is this a common pattern in API code?

We know it&apos;s that type, because the above line is the only place where we append to the pair vector.

_configuration-&gt;addURLSchemeHandler(WebKit::WebURLSchemeHandlerCocoa::create(urlSchemeHandler), urlScheme);

&gt;&gt; Source/WebKit/UIProcess/Inspector/mac/RemoteWebInspectorProxyMac.mm:108
&gt;&gt; +    m_inspectorView = adoptNS([[WKInspectorViewController alloc] initWithConfiguration: WebKit::wrapper(configuration) inspectedPage:nullptr]);
&gt; 
&gt; Style: extra space

The extra space is necessary for this to parse, unfortunately.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:251
&gt;&gt; +    didAttachLocalInspectorCalled = false;
&gt; 
&gt; Do we still need these here now that there&apos;s a `resetGlobalState()` above?

I don&apos;t think so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700816</commentid>
    <comment_count>12</comment_count>
      <attachid>412128</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-22 13:51:28 -0700</bug_when>
    <thetext>Created attachment 412128
Patch v3.3 [FOR LANDING]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700824</commentid>
    <comment_count>13</comment_count>
      <attachid>412130</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-10-22 14:01:14 -0700</bug_when>
    <thetext>Created attachment 412130
Patch v3.3 [FOR LANDING]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702065</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-27 13:54:08 -0700</bug_when>
    <thetext>Committed r269068: &lt;https://trac.webkit.org/changeset/269068&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412130.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702084</commentid>
    <comment_count>15</comment_count>
      <attachid>412130</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-10-27 14:23:10 -0700</bug_when>
    <thetext>Comment on attachment 412130
Patch v3.3 [FOR LANDING]

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

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorConfiguration.mm:36
&gt; +    if (!(self = [super init]))
&gt; +        return nil;

If [super init] returned nil then presumably the underlying class called dealloc, which will crash since _configuration is nullptr.

I know we are just following a traditional pattern, and maybe the &quot;return nil&quot; here is dead code that is just being included for no clear reason, but I think this is not good without a null check in dealloc.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKInspectorDelegate.mm:88
&gt; +    RetainPtr&lt;NSURLResponse&gt; response = adoptNS([[NSURLResponse alloc] initWithURL:task.request.URL MIMEType:@&quot;text/html&quot; expectedContentLength:1 textEncodingName:nil]);

I suggest auto for code like this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411726</attachid>
            <date>2020-10-18 21:13:43 -0700</date>
            <delta_ts>2020-10-20 16:17:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217896-20201018211342.patch</filename>
            <type>text/plain</type>
            <size>50330</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NjA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGM3MzE3MzA1OGFjYTBhMzMy
ZGYxMDg0NzRmNzVhMzhmMzJiYzYyN2MuLmI0MWY5OGRiZGUwOGNkMjdlZTEzODAwNGU0ZDE5MDI3
ODY4ZDk5YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODQgQEAKKzIwMjAtMTAtMTggIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gCisKKyAg
ICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2VkIGluIHR3byBkaWZmZXJlbnQg
U1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAgICAtIEFzIHBhcnQgb2YgV0tV
SURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
IGdpdmVuIGEgX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uCisgICAgICAgIC0gQXMgYW4gYXJn
dW1lbnQgdG8gdGhlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRpYWxp
emVyLiBJdCdzIHVzZWQgbGF0ZXIgYXMgbmVlZGVkLgorCisgICAgICAgIE5ldyBBUEkgdGVzdDog
V0tJbnNwZWN0b3IuSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKworICAgICAgICAqIFNvdXJjZXND
b2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5t
bTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gaW5pdF0pOgor
ICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6
Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFw
cGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgIENyZWF0ZSBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uIGFuZCBhZGQgYSBtZXRob2QgdG8gcmVnaXN0ZXIgV0tVUkxTY2hlbWVIYW5k
bGVycy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICogU2hh
cmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmplY3Qp
OgorICAgICAgICBBZGQgbmV3IEFQSSBvYmplY3QgdHlwZXMuIEFkZCBtaXNzaW5nIEluc3BlY3Rv
ckV4dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50
Lmg6CisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVudDo6Y29uZmlndXJhdGlvbkZvckRlYnVn
Z2FibGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdh
dGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVn
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxl
Z2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6OnNldERlbGVnYXRl
KToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6
Y29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUpOgorICAgICAgICBBZGQgbmV3IGNsaWVudC9kZWxl
Z2F0ZSBtZXRob2QgdG8gZmV0Y2ggYW4gaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1
cmF0aW9uOl0pOiBSZW5hbWVkIGZyb20gLWluaXQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgbG9hZEZvckRlYnVnZ2FibGVUeXBlOmJhY2tl
bmRDb21tYW5kc1VSTDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGU6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOl0pOgorICAgICAgICBTdG9yZSBhIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYW5kIHBy
b3ZpZGUgaXQgd2hlbiBhc2tlZCBieSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQpOgorICAgICAgICBT
dG9yZSBtX2RlYnVnZ2FibGVJbmZvIGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZSBhbmQgd2luZG93
LiBJdCdzIHVzZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgcGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cgdG8gcGFzcyBhcyBhbiBhcmd1bWVudCB0byB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgIE9idGFpbiBhIGNv
bmZpZ3VyYXRpb24gYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0luc3BlY3RvclZpZXdD
b250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVj
dG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5OjpwbGF0
Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAgIENyZWF0ZSBhIGNvbmZpZ3VyYXRpb24g
YW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLgor
CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5p
dFdpdGhDb25maWd1cmF0aW9uOmluc3BlY3RlZFBhZ2U6XSk6CisgICAgICAgICgtW1dLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10pOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdD
b250cm9sbGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6IFJlbmFtZWQgZnJvbSAtY29uZmlndXJh
dGlvbi4KKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0V2l0aEluc3Bl
Y3RlZFBhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIgY29uZmlndXJhdGlvbl0pOiBEZWxldGVkLgorICAgICAgICBBcHBseSB0aGUgVVJMIHNjaGVt
ZSBoYW5kbGVycyByZWdpc3RlcmVkIGluIHRoZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIHRv
IHRoZQorICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uLgorCiAyMDIwLTEwLTE2ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gSW5zcGVjdG9yIEV4
dGVuc2lvbnM6IEFkZCBfV0tJbnNwZWN0b3JFeHRlbnNpb24gYW5kIHJlbGF0ZWQgcGx1bWJpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCAwMTViMDBhMmFjNGQ5OGM3MDgx
NWY3YWMwMzVlOTBhZTc1MmRjOWNkLi5iN2I3ZWU2ODhhYTZmZjg5MDVhMjFiNzc4ZDRkOTYzNTIy
NTE2Mzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2
LDcgQEAgcHVibGljOgogICAgICAgICBHcmFtbWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJh
c2UsCiAgICAgICAgIEluc3BlY3RvciwKKyAgICAgICAgSW5zcGVjdG9yQ29uZmlndXJhdGlvbiwK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX0VYVEVOU0lPTlMpCiAgICAgICAgIEluc3BlY3RvckV4dGVu
c2lvbiwKICNlbmRpZgpAQCAtMzgzLDYgKzM4NCwxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVt
VHJhaXRzPEFQSTo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpH
cmFtbWFyRGV0YWlsLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlLAog
ICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yLAorICAgICAgICBBUEk6Ok9iamVj
dDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiwKKyNpZiBFTkFCTEUoSU5TUEVDVE9SX0VY
VEVOU0lPTlMpCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JFeHRlbnNpb24s
CisjZW5kaWYKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OktleVZhbHVlU3RvcmFnZU1hbmFn
ZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYUNhY2hlTWFuYWdlciwKICAgICAg
ICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0ZW5lciwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL0FQSU9iamVjdC5tbQppbmRleCA1Y2UxMmNkNzIyMjI2NDA0MTczYTFlZTdkNmJmMTUw
YjFmNjM3OTE0Li5mOGEwMjhiMDZiNTEwNjEwOGRkYzNjYmI2OGE0MDFiZmEzNWY3ZGJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03OSw2ICs3OSw3IEBACiAj
aW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0dlb2xvY2F0
aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFs
LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0lu
c3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERlYnVnRmVhdHVyZUludGVy
bmFsLmgiCkBAIC0yNjksNiArMjcwLDEwIEBAIHZvaWQqIE9iamVjdDo6bmV3T2JqZWN0KHNpemVf
dCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yIGFsbG9j
XTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRp
b246CisgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY107
CisgICAgICAgIGJyZWFrOworCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQogICAg
IGNhc2UgVHlwZTo6SW5zcGVjdG9yRXh0ZW5zaW9uOgogICAgICAgICB3cmFwcGVyID0gW19XS0lu
c3BlY3RvckV4dGVuc2lvbiBhbGxvY107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMmM4MmM1
YmY5NjE3MDMwOTI1MjE2YzJhZDJhZTZhN2EzZGYwZjRiNy4uNjA1ZWE4M2YxMGQ0YjBhY2Q3YTM0
NmZjMTNlMjdiNTRkNmVmODUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29j
b2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjU2LDYgKzI1
Niw3IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0dlb2xvY2F0aW9uUG9zaXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0K
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JFeHRlbnNpb24ubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaAppbmRleCBjZjIxOTRkNGZlMzAxZWIzZGNlZGEwYmMy
YzZhZTk0NjQ1OGM5OWY0Li5jZmJhODRhNzI3ODJmNTNiN2ViYTlhZDYxMTM3MWY4NWFmNDc2YzQx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVu
dC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQVBJSW5z
cGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMzMsNiArMzQsOCBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsK
IAogbmFtZXNwYWNlIEFQSSB7CiAKK2NsYXNzIERlYnVnZ2FibGVJbmZvOworCiBjbGFzcyBJbnNw
ZWN0b3JDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
NDEsNiArNDQsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRW5h
YmxlZChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJy
b3dzZXJEb21haW5EaXNhYmxlZChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiAgICAg
dmlydHVhbCB2b2lkIG9wZW5VUkxFeHRlcm5hbGx5KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkm
LCBjb25zdCBXVEY6OlN0cmluZyYgdXJsKSB7IH0KKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKEFQSTo6RGVidWdn
YWJsZUluZm8mKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJh
dGlvbjo6Y3JlYXRlKCk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRp
b24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jYzQ2MTFhYzc5ZjMxMzIxN2QwNDg0MDM2Zjk3OTEwMDIyMGJmM2Vj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBBUEkgeworCitj
bGFzcyBJbnNwZWN0b3JDb25maWd1cmF0aW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1w
bDxPYmplY3Q6OlR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUmVmPEluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNyZWF0ZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNwZWN0b3JDb25maWd1cmF0aW9uKCkpOworICAgIH0K
KworICAgIHZpcnR1YWwgfkluc3BlY3RvckNvbmZpZ3VyYXRpb24oKSA9IGRlZmF1bHQ7CisKK3By
aXZhdGU6CisgICAgSW5zcGVjdG9yQ29uZmlndXJhdGlvbigpID0gZGVmYXVsdDsKK307CisKK30g
Ly8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWZm
OWRiYWFmZTY3YmI2ODk1N2M1YmQxNDY1YTQxMjdmZGMyZWI5NwotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24v
Rm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyOworCitXS19D
TEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNlIF9XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24gOiBOU09iamVjdCA8TlNDb3B5aW5nPgorLyoqCisgKiBAYWJzdHJhY3Qg
U2V0cyB0aGUgVVJMIHNjaGVtZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hl
bWUuCisgKiBAcGFyYW0gdXJsU2NoZW1lSGFuZGxlciBUaGUgb2JqZWN0IHRvIHJlZ2lzdGVyLgor
ICogQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNjaGVtZSB0aGUgb2JqZWN0IHdpbGwgaGFuZGxlLgor
ICogQGRpc2N1c3Npb24gVGhpcyBpcyB1c2VkIHRvIHJlZ2lzdGVyIGFkZGl0aW9uYWwgc2NoZW1l
cyBmb3IgbG9hZGluZyByZXNvdXJjZXMgaW4gdGhlIGluc3BlY3RvciBwYWdlLAorICogc3VjaCBh
cyB0byByZWdpc3RlciBzY2hlbWVzIHVzZWQgYnkgZXh0ZW5zaW9ucy4gVGhpcyBtZXRob2QgaGFz
IHRoZSBzYW1lIGJlaGF2aW9yIGFuZCByZXN0cmljdGlvbnMgYXMKKyAqIGRlc2NyaWJlZCBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBvZiAtW1dLV2ViVmlldyBzZXRVUkxTY2hlbWVIbmFkbGVyOmZvclVS
TFNjaGVtZTpdLgorICovCistICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KG51bGxhYmxlIGlk
IDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0
cmluZyAqKXVybFNjaGVtZTsKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhhZTdhOTkxMTlhNjlmYTA4MmExMWY3ODUx
Yjk0ODM1MDUzMDM3MjIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQpAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uLmgiCisKKyNpbXBvcnQgIldLVVJMU2NoZW1lSGFuZGxlci5oIgorI2ltcG9y
dCA8d3RmL0Fzc2VydGlvbnMuaD4KKworQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24geworICAgIE5TTXV0YWJsZUFycmF5PE5TU3RyaW5nICo+ICpfY3VzdG9tVVJMU2No
ZW1lczsKKyAgICBOU011dGFibGVBcnJheTxpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPj4gKl9jdXN0
b21VUkxTY2hlbWVIYW5kbGVyczsKK30KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9j
dXN0b21VUkxTY2hlbWVzID0gW05TTXV0YWJsZUFycmF5IG5ld107CisgICAgX2N1c3RvbVVSTFNj
aGVtZUhhbmRsZXJzID0gW05TTXV0YWJsZUFycmF5IG5ld107CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVy
Pil1cmxTY2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sK
KyAgICBbX2N1c3RvbVVSTFNjaGVtZXMgYWRkT2JqZWN0OnVybFNjaGVtZV07CisgICAgW19jdXN0
b21VUkxTY2hlbWVIYW5kbGVycyBhZGRPYmplY3Q6dXJsU2NoZW1lSGFuZGxlcl07Cit9CisKKy0g
KHZvaWQpYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbgoreworICAgIEFTU0VSVChfY3VzdG9tVVJMU2NoZW1lcy5jb3VudCA9
PSBfY3VzdG9tVVJMU2NoZW1lSGFuZGxlcnMuY291bnQpOworCisgICAgZm9yIChOU1VJbnRlZ2Vy
IGkgPSAwOyBpIDwgX2N1c3RvbVVSTFNjaGVtZXMuY291bnQ7ICsraSkKKyAgICAgICAgW2NvbmZp
Z3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpfY3VzdG9tVVJMU2NoZW1lSGFuZGxlcnNbaV0g
Zm9yVVJMU2NoZW1lOl9jdXN0b21VUkxTY2hlbWVzW2ldXTsKK30KKworLSAoaWQpY29weVdpdGha
b25lOihOU1pvbmUgKil6b25lCit7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFsoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKVtbc2VsZiBjbGFzc10g
YWxsb2NXaXRoWm9uZTp6b25lXSBpbml0XTsKKworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsg
aSA8IF9jdXN0b21VUkxTY2hlbWVzLmNvdW50OyArK2kpCisgICAgICAgIFtjb25maWd1cmF0aW9u
IHNldFVSTFNjaGVtZUhhbmRsZXI6X2N1c3RvbVVSTFNjaGVtZUhhbmRsZXJzW2ldIGZvclVSTFNj
aGVtZTpfY3VzdG9tVVJMU2NoZW1lc1tpXV07CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsK
K30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjgzYjhmZTI5NTBkMWE0YTcyZmMwNjFmYjFkNjlhMTI2MWM5MGE2NjYKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKworI2ltcG9ydCAiQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JD
b25maWd1cmF0aW9uPiB7CisgICAgdXNpbmcgV3JhcHBlckNsYXNzID0gX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCitOU19BU1NVTUVfTk9O
TlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKCkgPFdL
T2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOworfQorCistICh2b2lkKWFwcGx5VG9XZWJW
aWV3Q29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKXdlYlZpZXdDb25maWd1
cmF0aW9uOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApp
bmRleCA1NTIwMWM3ODZiODdjNmNmN2MwOWIyNzA4YzczNzEwYzc0OTI4MDFjLi5iY2JiMjUzN2Mw
ODc1MDczMjZiOWYyYWFmNDgxOWYyZTUxOTMwYzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMjcs
NiArMjcsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgogCiBAY2xhc3MgX1dL
SW5zcGVjdG9yOworQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CitAY2xhc3MgX1dL
SW5zcGVjdG9yRGVidWdnYWJsZUluZm87CiAKIEBwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0
ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKQEAgLTQ4LDQgKzUwLDEwIEBACiAgKi8KIC0gKHZvaWQp
aW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3Igb3BlblVSTEV4dGVybmFsbHk6KE5T
VVJMICopdXJsOwogCisvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBfV0tJbnNwZWN0b3Ig
aXMgcmVhZHkgdG8gY3JlYXRlIGEgV2ViIEluc3BlY3RvciBpbnN0YW5jZS4gVGhlIGNsaWVudCBj
YW4KKyAgICBwcm92aWRlIGEgY3VzdG9tIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gdGhhdCBz
aG91bGQgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBXZWIgSW5zcGVjdG9yLgorICAgIEBwYXJh
bSBkZWJ1Z2dhYmxlSW5mbyBUaGUgZGVidWdnYWJsZSB0aGF0IGlzIGFib3V0IHRvIGJlIGluc3Bl
Y3RlZC4KKyAqLworLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWluc3BlY3RvcjooX1dL
SW5zcGVjdG9yICopaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOihfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJbmZvOworCiBAZW5kCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IGZmYmY4OWM1MWVlMTg1MmUy
MDVjZDJjNzBkNzk3MmYxM2I0MjdhOGMuLjEwOWE3NWIyODY0ZWFlYzJmM2YzM2EzMmY0ODdhZWJj
YTc2YzMxZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgIVRBUkdFVF9PU19JUEhPTkUKIAogQGNsYXNzIFdLV2Vi
VmlldzsKK0BjbGFzcyBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uOwogCiBAcHJvdG9jb2wgX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZTsKIApAQCAtNTEsNiArNTIs
NyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAuMTIuMyksIGlvcygxMC4zKSkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0YWluKSBOU1dpbmRvdyAqd2luZG93OwogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCByZXRhaW4pIFdLV2ViVmlldyAqd2ViVmlldzsK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAtICh2b2lkKWxvYWRGb3JEZWJ1Z2dhYmxlVHlw
ZTooV0tSZW1vdGVXZWJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZSlkZWJ1Z2dhYmxlVHlwZSBiYWNr
ZW5kQ29tbWFuZHNVUkw6KE5TVVJMICopYmFja2VuZENvbW1hbmRzVVJMOwogLSAodm9pZCljbG9z
ZTsKIC0gKHZvaWQpc2hvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQppbmRleCA3M2M1YmRjY2M1ODJlNGZmNTJjZjI1MTlhNGExOGQ5MmU2ZmVhMDQ1Li43
ZTMzZjg1Y2Y1NDI0MTg0NDAzZTIyNzI0ZjQ3Mjc3YWNhNDQwYTY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0yNCwxNCArMjQsMTYgQEAKICAq
LwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlclByaXZhdGUuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJRGVidWdn
YWJsZUluZm8uaCIKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKICNpbXBv
cnQgIkRlYnVnZ2FibGVJbmZvRGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvSW50ZXJuYWwuaCIKIAogI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKQEAg
LTcyLDYgKzc0LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFttX2NvbnRyb2xsZXIgY2xv
c2VGcm9tRnJvbnRlbmRdOwogICAgIH0KKyAgICAKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZShBUEk6OkRlYnVnZ2FibGVJbmZv
JiBkZWJ1Z2dhYmxlSW5mbykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24mPihbW21fY29udHJvbGxlciBjb25maWd1
cmF0aW9uRm9yRGVidWdnYWJsZTp3cmFwcGVyKGRlYnVnZ2FibGVJbmZvKV0gX2FwaU9iamVjdF0p
OworICAgIH0KIAogcHJpdmF0ZToKICAgICBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciAqbV9jb250cm9sbGVyOwpAQCAtODIsMTMgKzg5LDE2IEBAIHByaXZhdGU6CiBAaW1wbGVt
ZW50YXRpb24gX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgewogICAgIFJlZlB0
cjxXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5
Q2xpZW50PiBtX3JlbW90ZUluc3BlY3RvckNsaWVudDsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXQKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAg
ICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfY29uZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9u
IGNvcHldOworCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0g
bWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxm
KTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0
b3JDbGllbnQuZ2V0KCkpOwpAQCAtMTM0LDcgKzE0NCw3IEBAIC0gKHZvaWQpbG9hZEZvckRlYnVn
Z2FibGVUeXBlOihXS1JlbW90ZVdlYkluc3BlY3RvckRlYnVnZ2FibGVUeXBlKWRlYnVnZ2FibGVU
eXBlCiAgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0UGxhdGZvcm1OYW1lID0gQCJtYWNPUyI7CiAg
ICAgZGVidWdnYWJsZUluZm8udGFyZ2V0QnVpbGRWZXJzaW9uID0gQCJVbmtub3duIjsKICAgICBk
ZWJ1Z2dhYmxlSW5mby50YXJnZXRQcm9kdWN0VmVyc2lvbiA9IEAiVW5rbm93biI7Ci0gICAgZGVi
dWdnYWJsZUluZm8udGFyZ2V0SXNTaW11bGF0b3IgPSBmYWxzZTsKKyAgICBkZWJ1Z2dhYmxlSW5m
by50YXJnZXRJc1NpbXVsYXRvciA9IE5POwogICAgIFtzZWxmIGxvYWRGb3JEZWJ1Z2dhYmxlOmRl
YnVnZ2FibGVJbmZvIGJhY2tlbmRDb21tYW5kc1VSTDpiYWNrZW5kQ29tbWFuZHNVUkxdOwogfQog
CkBAIC0xNTgsNiArMTY4LDggQEAgLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3Ry
aW5nICopbWVzc2FnZQogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKTsKIH0KIAorLy8gTUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlD
bGllbnQgbWV0aG9kcworCiAtICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAq
KW1lc3NhZ2UKIHsKICAgICBpZiAoX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0b3JWaWV3Q29udHJvbGxlcjpzZW5kTWVzc2FnZVRvQmFj
a2VuZDopXSkKQEAgLTE3MCw5ICsxODIsMTQgQEAgLSAodm9pZCljbG9zZUZyb21Gcm9udGVuZAog
ICAgICAgICBbX2RlbGVnYXRlIGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9yRGlkQ2xv
c2U6c2VsZl07CiB9CiAKKy0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uRm9yRGVidWdnYWJsZTooX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gKilkZWJ1Z2dhYmxl
SW5mbworeworICAgIHJldHVybiBbX2NvbmZpZ3VyYXRpb24gY29weV07Cit9CisKIC8vIE1BUks6
IF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZSBtZXRob2RzCiAKLS0g
KHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dn
aW5nRGVsZWdhdGU+KWRlbGVnYXRlCistICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBfTnVsbGFibGUpZGVsZWdhdGUK
IHsKICAgICBzZWxmLndlYlZpZXcuX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUgPSBkZWxlZ2F0
ZTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWls
YWJsZSghIWRlbGVnYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlclByaXZhdGUuaAppbmRleCAzYTljNzEwYWU0OTBjYjc5ZTZhMTU0ZDdmMDk2MTVm
MWE4ODBiNDUyLi5lN2E5ODQyNzJmNTMwYzVhYjE0MTZmMmM3NGE0MTUzODYwN2JjNzhiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5o
CkBAIC0yOSw3ICsyOSw5IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uOwogQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvOworQHByb3RvY29sIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKIEBpbnRlcmZh
Y2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKIApAQCAt
MzcsNiArMzksNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiAtICh2b2lkKWxvYWRGb3JE
ZWJ1Z2dhYmxlOihfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJbmZvIGJh
Y2tlbmRDb21tYW5kc1VSTDooTlNVUkwgKiliYWNrZW5kQ29tbWFuZHNVUkw7CiAKKy0gKF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTooX1dLSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8gKilkZWJ1Z2dhYmxlSW5mbzsKIEBlbmQKIAogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0
b3JEZWxlZ2F0ZS5oCmluZGV4IGQ2NGI0N2IyOTViMTJiZTU3NTRlMmZlNzFkNGYwYzViZTkwYzNm
M2QuLjBjYzE0NGM0NzdlNDc2MGE4NjFhYTZlNTJlNjU0YjI2OGRjNGU1OTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0
b3JEZWxlZ2F0ZS5oCkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0
ICJBUElEZWJ1Z2dhYmxlSW5mby5oIgogI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCisj
aW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRp
b24uaCIKICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBAIC01OSw2ICs2MSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViSW5zcGVjdG9yUHJv
eHkmKTsKICAgICAgICAgdm9pZCBicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViSW5zcGVjdG9yUHJv
eHkmKTsKICAgICAgICAgdm9pZCBvcGVuVVJMRXh0ZXJuYWxseShXZWJJbnNwZWN0b3JQcm94eSYs
IGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYpOwog
CiAgICAgICAgIEluc3BlY3RvckRlbGVnYXRlJiBtX2luc3BlY3RvckRlbGVnYXRlOwogICAgIH07
CkBAIC03MCw2ICs3Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaW5zcGVjdG9yRGlkRW5h
YmxlQnJvd3NlckRvbWFpbiA6IDE7CiAgICAgICAgIGJvb2wgaW5zcGVjdG9yRGlkRGlzYWJsZUJy
b3dzZXJEb21haW4gOiAxOwogICAgICAgICBib29sIGluc3BlY3Rvck9wZW5VUkxFeHRlcm5hbGx5
IDogMTsKKyAgICAgICAgYm9vbCBpbnNwZWN0b3JDb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZSA6
IDE7CiAgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5t
bQppbmRleCA1Y2VkYTE4NTk0MGUwNDc1MDczZmNjZjM4MTI4NDIwNWMxMGJlYTI0Li41YTM0MzYx
YjYwMDMwY2JlOGVmY2FmNzlmMzY1YmViN2VhMjI3NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRl
Lm1tCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAj
aW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0luc3Bl
Y3RvckludGVybmFsLmgiCiAKQEAgLTU1LDYgKzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWxlZ2F0
ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9tYWluID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRGlkRW5hYmxlQnJvd3Nl
ckRvbWFpbjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWREaXNhYmxlQnJv
d3NlckRvbWFpbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3Bl
Y3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmlu
c3BlY3Rvck9wZW5VUkxFeHRlcm5hbGx5ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW5zcGVjdG9yOm9wZW5VUkxFeHRlcm5hbGx5OildOworICAgIG1fZGVsZWdhdGVN
ZXRob2RzLmluc3BlY3RvckNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yOmNvbmZpZ3VyYXRpb25Gb3JEZWJ1
Z2dhYmxlOildOwogfQogCiBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpJbnNw
ZWN0b3JDbGllbnQoSW5zcGVjdG9yRGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtMTAwLDQgKzEwMywx
NyBAQCB2b2lkIEluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6Om9wZW5VUkxFeHRl
cm5hbGx5KFdlYkluc3BlY3RvclByb3h5JiwgYwogICAgIFtkZWxlZ2F0ZSBpbnNwZWN0b3I6bV9p
bnNwZWN0b3JEZWxlZ2F0ZS5tX2luc3BlY3Rvci5nZXQoKS5nZXQoKSBvcGVuVVJMRXh0ZXJuYWxs
eTpbTlNVUkwgVVJMV2l0aFN0cmluZzp1cmxdXTsKIH0KIAorUmVmPEFQSTo6SW5zcGVjdG9yQ29u
ZmlndXJhdGlvbj4gSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6Y29uZmlndXJh
dGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8pCit7
CisgICAgaWYgKCFtX2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3Rv
ckNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0
b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGF1dG8mIGRlbGVnYXRlID0gbV9pbnNw
ZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJl
dHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFtbZGVsZWdhdGUgaW5z
cGVjdG9yOm1faW5zcGVjdG9yRGVsZWdhdGUubV9pbnNwZWN0b3IuZ2V0KCkuZ2V0KCkgY29uZmln
dXJhdGlvbkZvckRlYnVnZ2FibGU6d3JhcHBlcihkZWJ1Z2dhYmxlSW5mbyldIF9hcGlPYmplY3Rd
KTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3Bw
CmluZGV4IDRjNmY1NGYwZjNjYmIwYjAzMWZjZTc2ZGIxNzkzNTExYmE2YTZjZDIuLmEwZTg1OTRh
ZThlMjE0MzI4MWM2OTIwYjk1N2Q0ZmEzOGM3NzI1ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
LmNwcApAQCAtNjksMTEgKzY5LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNl
dERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiYmIGRlYnVn
Z2FibGVJbmZvLCBjb25zdCBTdHJpbmcmIGJhY2tlbmRDb21tYW5kc1VSTCkKIHsKLSAgICBjcmVh
dGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKTsKLQogICAgIG1fZGVidWdnYWJsZUluZm8gPSBXVEZN
b3ZlKGRlYnVnZ2FibGVJbmZvKTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRD
b21tYW5kc1VSTDsKIAorICAgIGNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOworCiAgICAg
bV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5p
dGlhbGl6ZShtX2RlYnVnZ2FibGVJbmZvLT5kZWJ1Z2dhYmxlSW5mb0RhdGEoKSwgYmFja2VuZENv
bW1hbmRzVVJMKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCks
IFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmgKaW5kZXggOTRmNTM1NTRmYTEwOWFkYmQ3MjE5MDJjNTQ4YzIzYzA1ZWFiZDhkMC4u
NWVkYmY1OTllZWQ1NzlkNjk2NGM3ZjkzM2JlNzY3ZTMxYzczMjhlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogCiBuYW1l
c3BhY2UgQVBJIHsKIGNsYXNzIERlYnVnZ2FibGVJbmZvOworY2xhc3MgSW5zcGVjdG9yQ29uZmln
dXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02Myw2ICs2NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCgpIHsgfQogICAg
IHZpcnR1YWwgdm9pZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xvc2VGcm9tRnJvbnRlbmQoKSA9IDA7CisgICAgdmly
dHVhbCBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yRGVi
dWdnYWJsZShBUEk6OkRlYnVnZ2FibGVJbmZvJikgPSAwOwogfTsKIAogY2xhc3MgUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eT4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0
b3JQcm94eU1hYy5tbQppbmRleCAyNDU0YWU5NTk0MTA3N2Q0MjQ4Y2U2YTUzN2I5NGUxZjIwZWUw
MWJlLi45NGI5YzA4NmFkY2JiMjJlYWQxYTVjYTY2MjQ5OTMyMjk5Y2IzYzNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTEwMyw3ICsxMDMsOSBAQCBXZWJQYWdl
UHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpCiB7CiAgICAgbV9vYmpDQWRhcHRlciA9IGFkb3B0TlMoW1tXS1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgYWxsb2NdIGluaXRXaXRoUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk6dGhpc10pOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkUGFnZTpudWxscHRy
XSk7CisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9
IG1fY2xpZW50LT5jb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZShtX2RlYnVnZ2FibGVJbmZvLmNv
cHlSZWYoKSk7CisgICAgCisgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29uZmlndXJhdGlvbjp3cmFwcGVyKGNv
bmZpZ3VyYXRpb24uZ2V0KCkpIGluc3BlY3RlZFBhZ2U6bnVsbHB0cl0pOwogICAgIFttX2luc3Bl
Y3RvclZpZXcuZ2V0KCkgc2V0RGVsZWdhdGU6bV9vYmpDQWRhcHRlci5nZXQoKV07CiAKICAgICBt
X3dpbmRvdyA9IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFdpbmRvdyhOU1plcm9S
ZWN0LCBXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGlvblRhcmdldFR5cGU6OlJlbW90ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IDEwNzE5Mjg2NjVlNDllY2M4YTI0
NzFkN2YxNDY5YTgwY2E2YWQyOTYuLjNhMzQ2ZDQyMWY4YTQyZDE3ZWU0NDRjZTE2NDQ0MDU1YzRj
YWY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMv
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3
IEBACiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KIAogT0JKQ19DTEFTUyBXS1dlYlZpZXc7CitP
QkpDX0NMQVNTIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtNDMsNyArNDQsNyBAQCBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZp
ZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluc3Bl
Y3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlOwor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gaW5zcGVjdGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpX
ZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2U7CiAKICsgKEJPT0wpdmlld0lzSW5zcGVjdG9yV2Vi
VmlldzooTlNWaWV3ICopdmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CmluZGV4IDFlYWE5NDNmMjdhMjdkNjdjNjExZmY2ZDZmYmJmMzYxNjJiZjcxOTcuLjYyNGU2YmI1
Mzk2ZTI0NTJjZjFmNmMwODcxNGM5MTUyYTcwNmJjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYkluc3BlY3RvclBy
b3h5LmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0IDxXZWJDb3JlL1ZlcnNpb25DaGVja3MuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2Jq
Q1B0ci5oPgogCkBAIC01MiwxMyArNTMsMTUgQEAgQGltcGxlbWVudGF0aW9uIFdLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgewogICAgIE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBfaW5z
cGVjdGVkUGFnZTsKICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0b3JXS1dlYlZpZXc+IF93ZWJWaWV3
OwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
PiBfZGVsZWdhdGU7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRp
b247CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluc3BlY3RlZFBhZ2U6KE5ha2VkUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlCistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbiBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVj
dGVkUGFnZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1
cm4gbmlsOwogCisgICAgX2NvbmZpZ3VyYXRpb24gPSBbY29uZmlndXJhdGlvbiBjb3B5XTsKICAg
ICAvLyBUaGUgKGxvY2FsKSBpbnNwZWN0ZWQgcGFnZSBpcyBuaWwgaWYgdGhlIGNvbnRyb2xsZXIg
aXMgaG9zdGluZyBhIFJlbW90ZSBXZWIgSW5zcGVjdG9yIHZpZXcuCiAgICAgX2luc3BlY3RlZFBh
Z2UgPSBpbnNwZWN0ZWRQYWdlOwogCkBAIC04Nyw3ICs5MCw3IEBAIC0gKFdLV2ViVmlldyAqKXdl
YlZpZXcKICAgICAvLyBDb25zdHJ1Y3QgbGF6aWx5IHNvIHRoZSBjbGllbnQgY2FuIHNldCB0aGUg
ZGVsZWdhdGUgYmVmb3JlIHRoZSBXZWJWaWV3IGlzIGNyZWF0ZWQuCiAgICAgaWYgKCFfd2ViVmll
dykgewogICAgICAgICBOU1JlY3QgaW5pdGlhbEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGgsIFdlYktpdDo6V2ViSW5z
cGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQpOwotICAgICAgICBfd2ViVmlldyA9IGFk
b3B0TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFs
RnJhbWUgY29uZmlndXJhdGlvbjpbc2VsZiBjb25maWd1cmF0aW9uXV0pOworICAgICAgICBfd2Vi
VmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTppbml0aWFsRnJhbWUgY29uZmlndXJhdGlvbjpzZWxmLndlYlZpZXdDb25maWd1cmF0aW9uXSk7
CiAgICAgICAgIFtfd2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZpZXcgc2V0SW5z
cGVjdG9yV0tXZWJWaWV3RGVsZWdhdGU6c2VsZl07CkBAIC0xMDQsNyArMTA3LDcgQEAgLSAodm9p
ZClzZXREZWxlZ2F0ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVs
ZWdhdGUKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIH0KIAotLSAoV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KKy0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKil3ZWJW
aWV3Q29uZmlndXJhdGlvbgogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTEyMyw2ICsxMjYsOCBA
QCAtIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgcHJlZmVy
ZW5jZXMuX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCA9IFlFUzsKIAorICAgIFtfY29uZmlndXJh
dGlvbiBhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV07Cisg
ICAgCiAgICAgaWYgKCEhX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3RvcihpbnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3BlY3RvcklzVW5kZXJUZXN0Oild
KSB7CiAgICAgICAgIGlmIChbX2RlbGVnYXRlIGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVj
dG9ySXNVbmRlclRlc3Q6c2VsZl0pIHsKICAgICAgICAgICAgIHByZWZlcmVuY2VzLl9oaWRkZW5Q
YWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZCA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0KaW5kZXggMThlM2I3NTRmOWYwZTM2M2IzNjhmNTQ4ZWI4YTQzMGQ1Yzg5OWIyMi4uM2E4M2I4
NDg0ZGNlMDNiZjExN2YxYzlkM2EyZDA1ZTA4NDcwMGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5
TWFjLm1tCkBAIC0yOCwxNCArMjgsMjAgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9y
dCAiQVBJRGVidWdnYWJsZUluZm8uaCIKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNsaWVudC5oIgor
I2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiR2xvYmFsRmlu
ZEluUGFnZVN0YXRlLmgiCiAjaW1wb3J0ICJXS0luc3BlY3RvclByaXZhdGVNYWMuaCIKICNpbXBv
cnQgIldLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCiAj
aW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91
cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZv
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tJbnNwZWN0b3JXaW5kb3cuaCIKICNpbXBvcnQgPFNlY3VyaXR5SW50ZXJmYWNlL1NGQ2VydGlm
aWNhdGVQYW5lbC5oPgpAQCAtMjkxLDcgKzI5Nyw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVj
dG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBOU1ZpZXcgKmluc3Bl
Y3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCk7CiAg
ICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29i
akNBZGFwdGVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRD
aGFuZ2U6KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNw
ZWN0ZWRWaWV3XTsKIAotICAgIG1faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtb
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOmlu
c3BlY3RlZFBhZ2UoKV0pOworICAgIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb24gPSBtX2luc3BlY3RvckNsaWVudC0+Y29uZmlndXJhdGlvbkZvckRlYnVnZ2Fi
bGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbzo6Y3JlYXRlKGluZm9Gb3JMb2NhbERlYnVnZ2FibGUoKSkp
OworICAgIG1faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb25maWd1cmF0aW9uOiA6OldlYktpdDo6d3Jh
cHBlcihjb25maWd1cmF0aW9uKSBpbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBhZ2UoKV0pOwogICAg
IFttX2luc3BlY3RvclZpZXdDb250cm9sbGVyLmdldCgpIHNldERlbGVnYXRlOm1fb2JqQ0FkYXB0
ZXIuZ2V0KCldOwogCiAgICAgV2ViUGFnZVByb3h5ICppbnNwZWN0b3JQYWdlID0gW21faW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10tPl9wYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjI0ZDNiYzFlOWIyM2U0
NDNmNTA1MzA5ODY5ZWY1NzdiZTEzOGY1NC4uMmQ2YjU0ZWZhNjU1NzRmNDRmMzYyNThhMjhiZTEw
MDliOTg1MDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMDk2LDkgKzEwOTYsNiBAQAogCQk1NzBEQUFDMjIzMDM3MzAzMDBFOEZD
MDQgLyogTmZjQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcwREFBQzAyMzAzNzMwMzAwRThGQzA0IC8qIE5mY0Nvbm5lY3Rpb24uaCAq
LzsgfTsKIAkJNTcwREFBQzYyMzAzN0Y3RjAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3
MERBQUM0MjMwMzdGN0UwMEU4RkMwNCAvKiBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRlLmggKi87
IH07CiAJCTU3MERBQUNBMjMwMzg1RkQwMEU4RkMwNCAvKiBDdGFwTmZjRHJpdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzBEQUFDODIzMDM4NUZE
MDBFOEZDMDQgLyogQ3RhcE5mY0RyaXZlci5oICovOyB9OwotCQk1NzJFQkJEQTI1MzhGNkI0MDAw
NTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkVCQkQ4MjUzOEY2QTEwMDA1NTJCMyAvKiBB
cHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLm1tICovOyB9OwotCQk1NzJFQkJEQjI1MzhGNkI2MDAw
NTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRUJCRDkyNTM4RjZBMTAwMDU1MkIzIC8qIEFw
cEF0dGVzdEludGVybmFsU29mdExpbmsuaCAqLzsgfTsKLQkJNTcyRUJCREQyNTM5MjE4MTAwMDU1
MkIzIC8qIEFwcEF0dGVzdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oICov
OyB9OwogCQk1NzJFQkJCRjI1MzZBNjBBMDAwNTUyQjMgLyogV2ViQXV0aG5Db25uZWN0aW9uVG9X
ZWJQcm9jZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkVCQkJCMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRobkNv
bm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1NzJFQkJD
MDI1MzZBNjBBMDAwNTUyQjMgLyogV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkVC
QkJDMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRobkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3NNZXNz
YWdlcy5oICovOyB9OwogCQk1NzJFQkJDMTI1MzZBNjBBMDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU3MkVCQkJEMjUzNkE2MEEwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NN
ZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwpAQCAtMTExMCw2ICsxMTA3LDkgQEAKIAkJNTcyRUJC
RDAyNTM2QkIxMTAwMDU1MkIzIC8qIFdlYkF1dGhuUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkVCQkNFMjUzNkJC
MTAwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NQcm94eU1lc3NhZ2VzLmggKi87IH07CiAJCTU3
MkVCQkQ1MjUzNkM4ODUwMDA1NTJCMyAvKiBXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzJFQkJEMjI1MzZD
ODg1MDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5oICovOyB9OwogCQk1NzJF
QkJENzI1MzdFQkFFMDAwNTUyQjMgLyogRXh0cmFQcml2YXRlU3ltYm9sc0ZvclRBUEkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MEQzMUU2OTA0
QjUwMDczMUQyMCAvKiBFeHRyYVByaXZhdGVTeW1ib2xzRm9yVEFQSS5oICovOyB9OworCQk1NzJF
QkJEQTI1MzhGNkI0MDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3MkVCQkQ4MjUzOEY2
QTEwMDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLm1tICovOyB9OworCQk1NzJF
QkJEQjI1MzhGNkI2MDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRUJCRDkyNTM4RjZB
MTAwMDU1MkIzIC8qIEFwcEF0dGVzdEludGVybmFsU29mdExpbmsuaCAqLzsgfTsKKwkJNTcyRUJC
REQyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFw
cEF0dGVzdFNQSS5oICovOyB9OwogCQk1NzJGRDQ0MzIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmll
d0RpZE1vdmVUb1dpbmRvd09ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzJGRDQ0MTIyMjY1Q0UyMDBBMUVDQzMgLyogV2ViVmlld0RpZE1v
dmVUb1dpbmRvd09ic2VydmVyLmggKi87IH07CiAJCTU3NDIxNzkyMjQwMEUyODYwMDJCMzAzRCAv
KiBMb2NhbEF1dGhlbnRpY2F0aW9uU1BJLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1NzQyMTc5MTI0MDBFMDk4MDAyQjMwM0QgLyogTG9jYWxBdXRoZW50
aWNhdGlvblNQSS5oICovOyB9OwogCQk1NzQyQTJFQjI1MzU2MTNGMDBCN0JBMTQgLyogQXV4aWxp
YXJ5UHJvY2Vzc01haW4uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNUNFOTEyMEYyMjkzQzI1RjAwNUJFQzc4IC8qIEF1eGlsaWFyeVByb2Nlc3NNYWlu
LmNwcCAqLzsgfTsKQEAgLTE0MTgsNiArMTQxOCw5IEBACiAJCTk5MjQ5QUQ1MUYxRjFFNTYwMEI2
MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFEMzFGMUYxRTMzMDBCNjJGQkIg
LyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk5OTI0OUFENjFG
MUYxRTVGMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjQ5QUQ0MUYxRjFFMzMw
MEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTRC
QURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjExRjdENzdF
QTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJOTk0QzYw
NDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQwMjUzQ0E1NDMw
MEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYw
IC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8q
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovOyB9OworCQk5OTRDNjA0NzI1
M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QzYwNDYyNTNDQUNCODAwQkRG
MDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJOTk1MjI2RDYyMDdE
MTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIw
IC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9OwogCQk5OTU1QTZFQzFDNzk4MEMy
MDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyog
QXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzkzNiw5ICszOTM5
LDYgQEAKIAkJNTcwREFBQzUyMzAzN0Y3RTAwRThGQzA0IC8qIFdLTkZSZWFkZXJTZXNzaW9uRGVs
ZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05GUmVhZGVyU2Vzc2lvbkRlbGVnYXRl
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1NzBEQUFDODIzMDM4NUZEMDBFOEZD
MDQgLyogQ3RhcE5mY0RyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdGFwTmZjRHJpdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3MERBQUM5MjMwMzg1RkQwMEU4RkMwNCAvKiBD
dGFwTmZjRHJpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEN0YXBOZmNEcml2ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk1NzJFQkJEODI1MzhGNkExMDAwNTUyQjMgLyog
QXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFwcEF0
dGVzdEludGVybmFsU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTU3
MkVCQkQ5MjUzOEY2QTEwMDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5hbFNvZnRMaW5rLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFwcEF0dGVzdEludGVybmFsU29mdExpbmsuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8qIEFwcEF0dGVzdFNQSS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBcHBBdHRlc3RTUEkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTcyRUJCQjkyNTM2QTA2RTAwMDU1MkIzIC8qIEluZm8taU9TLnBsaXN0ICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdDsgbmFt
ZSA9ICJJbmZvLWlPUy5wbGlzdCI7IHBhdGggPSAiV2ViQXV0aG5Qcm9jZXNzL0VudHJ5UG9pbnQv
Q29jb2EvWFBDU2VydmljZS9XZWJBdXRoblNlcnZpY2UvSW5mby1pT1MucGxpc3QiOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTU3MkVCQkJBMjUzNkEwNkUwMDA1NTJCMyAvKiBJbmZv
LU9TWC5wbGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQucGxpc3Q7IG5hbWUgPSAiSW5mby1PU1gucGxpc3QiOyBwYXRoID0gIldlYkF1dGhu
UHJvY2Vzcy9FbnRyeVBvaW50L0NvY29hL1hQQ1NlcnZpY2UvV2ViQXV0aG5TZXJ2aWNlL0luZm8t
T1NYLnBsaXN0Ijsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1NzJFQkJCQjI1MzZB
NjBBMDAwNTUyQjMgLyogV2ViQXV0aG5Db25uZWN0aW9uVG9XZWJQcm9jZXNzTWVzc2FnZVJlY2Vp
dmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkF1dGhuQ29u
bmVjdGlvblRvV2ViUHJvY2Vzc01lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zOTU1LDYgKzM5NTUsOSBAQAogCQk1NzJFQkJEMTI1MzZDODg1MDAwNTUy
QjMgLyogV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9uLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyRUJCRDIyNTM2Qzg4NTAwMDU1MkIzIC8qIFdlYkF1dGhu
UHJvY2Vzc0Nvbm5lY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
QXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
NzJFQkJEMzI1MzZDODg1MDAwNTUyQjMgLyogV2ViQXV0aG5Qcm9jZXNzQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJBdXRoblByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1NzJFQkJEODI1MzhG
NkExMDAwNTUyQjMgLyogQXBwQXR0ZXN0SW50ZXJuYWxTb2Z0TGluay5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEFwcEF0dGVzdEludGVybmFsU29mdExpbmsubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTU3MkVCQkQ5MjUzOEY2QTEwMDA1NTJCMyAvKiBBcHBBdHRlc3RJbnRlcm5h
bFNvZnRMaW5rLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcEF0dGVzdEludGVybmFsU29mdExpbmsuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTcyRUJCREMyNTM5MjE4MTAwMDU1MkIzIC8q
IEFwcEF0dGVzdFNQSS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBBdHRlc3RTUEkuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTcyRkQ0NDEyMjI2NUNFMjAwQTFFQ0MzIC8qIFdlYlZpZXdE
aWRNb3ZlVG9XaW5kb3dPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJWaWV3RGlkTW92ZVRv
V2luZG93T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTc0MjE3OTEy
NDAwRTA5ODAwMkIzMDNEIC8qIExvY2FsQXV0aGVudGljYXRpb25TUEkuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTG9jYWxBdXRoZW50aWNhdGlvblNQSS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1NzQyQTJGNzI1MzU2MTNGMDBCN0JBMTQgLyogY29tLmFwcGxlLldlYktpdC5XZWJBdXRobi54
cGMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJ3cmFw
cGVyLnhwYy1zZXJ2aWNlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldl
YktpdC5XZWJBdXRobi54cGM7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CkBA
IC00NTQ1LDYgKzQ1NDgsMTAgQEAKIAkJOTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5IC8qIFdlYkF1
dG9tYXRpb25TZXNzaW9uSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjIxRjdENzdF
QjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAgLyog
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NEM2MDQxMjUzQ0E1NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYw
NDQyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDYyNTND
QUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxh
dGVkSW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNp
bXVsYXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0
Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTVBNkU5MUM3OTgwQkIw
MEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmpzb247IHBhdGggPSBB
dXRvbWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03MzUzLDYgKzcz
NjAsOSBAQAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRl
LmggKi8sCiAJCQkJNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oICov
LAogCQkJCTVDQUZERTQzMjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IubW0gKi8sCisJ
CQkJOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24u
aCAqLywKKwkJCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5tbSAqLywKKwkJCQk5OTRDNjA0NDI1M0NBQkEyMDBCREYwNjAgLyogX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJOTkxRjQ5MkQyM0E4MTJDNTAwNTQ2
NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggKi8sCiAJCQkJOTkxRjQ5MkUyM0E4
MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tICovLAogCQkJCTk5
MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVy
bmFsLmggKi8sCkBAIC05MzU0LDYgKzkzNjQsNyBAQAogCQkJCTUxNDNCMjYxMURERDBEQTAwMDE0
RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdBOEE5RDU3MUVGMTE5QUEw
MDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAogCQkJCTkxOTc5NDA5MjNE
QkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywKKwkJCQk5OTRDNjA0NjI1
M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTk5
Nzk2NTkzMjUyRkRGMTYwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uY3BwICovLAog
CQkJCTk5Nzk2NTk0MjUyRkRGMTYwMEIzMUFFMyAvKiBBUElJbnNwZWN0b3JFeHRlbnNpb24uaCAq
LywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1
cmUuY3BwICovLApAQCAtMTA3OTMsNiArMTA4MDQsOCBAQAogCQkJCTUxMEY1OTEwMURERTI5Njkw
MDQxMkZGNSAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkz
N0E2NEU1NTE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNUNBRkRFNDUyMTMwODQ2MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJOTk0QzYwNDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NEM2MDQ1MjUzQ0FCQTIwMEJERjA2
MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTk5MUY0OTJGMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0lu
c3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5
NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMDkwOSw2ICsxMDkyMiw3IEBACiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgwMUFF
IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMzc2OTA3OUExOEYzMUNCMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFn
ZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4OTIg
LyogQVBJSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0NzI1M0NB
Q0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk3OTY1OTUyNTJGREYyODAwQjMxQUUzIC8qIEFQSUluc3BlY3RvckV4dGVuc2lvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAwN0JGQTUzIC8qIEFQSUludGVy
bmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBD
N0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411933</attachid>
            <date>2020-10-20 16:17:30 -0700</date>
            <delta_ts>2020-10-21 11:05:13 -0700</delta_ts>
            <desc>Patch v2.0</desc>
            <filename>bug-217896-20201020161730.patch</filename>
            <type>text/plain</type>
            <size>58975</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0OWI5ZGM0YThlNjM4M2Zj
MDk4YWFjMWFlZTM4MjRkODU4MWEzZDcuLmQ4N2M0NTc2YzQwNmIyMTVmNzFjZGQwOTYzOTJmMzAy
M2E3NzJkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMjAtMTAtMTggIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gCisKKyAg
ICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2VkIGluIHR3byBkaWZmZXJlbnQg
U1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAgICAtIEFzIHBhcnQgb2YgV0tV
SURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
IGdpdmVuIGEgX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uCisgICAgICAgIC0gQXMgYW4gYXJn
dW1lbnQgdG8gdGhlIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRpYWxp
emVyLiBJdCdzIHVzZWQgbGF0ZXIgYXMgbmVlZGVkLgorCisgICAgICAgIE5ldyBBUEkgdGVzdDog
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5JbnNwZWN0b3JDb25maWd1cmF0aW9uLgorCisgICAgICAgICog
U291cmNlc0NvY29hLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJu
YWwuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiBpbml0XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gZGVhbGxv
Y10pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIF9hcGlPYmplY3RdKToK
KyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBh
cHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICBDcmVhdGUgX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbiBhbmQgYWRkIGEgbWV0aG9kIHRvIHJlZ2lzdGVyIFdLVVJMU2NoZW1lSGFu
ZGxlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNo
YXJlZC9Db2NvYS9BUElPYmplY3QubW06CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0
KToKKyAgICAgICAgQWRkIG5ldyBBUEkgb2JqZWN0IHR5cGVzLiBBZGQgbWlzc2luZyBJbnNwZWN0
b3JFeHRlbnNpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpJbnNwZWN0b3JDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JEZWJ1
Z2dhYmxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVn
YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxl
Z2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVs
ZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0
ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6
OmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgQWRkIG5ldyBjbGllbnQvZGVs
ZWdhdGUgbWV0aG9kIHRvIGZldGNoIGFuIGluc3BlY3RvciBjb25maWd1cmF0aW9uIGFzIG5lZWRl
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAg
ICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRXaXRoQ29uZmln
dXJhdGlvbjpdKTogUmVuYW1lZCBmcm9tIC1pbml0LgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGxvYWRGb3JEZWJ1Z2dhYmxlVHlwZTpiYWNr
ZW5kQ29tbWFuZHNVUkw6XSk6CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyIGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOl0pOgorICAgICAgICAoLVtfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxl
Z2F0ZTpdKToKKyAgICAgICAgU3RvcmUgYSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFuZCBw
cm92aWRlIGl0IHdoZW4gYXNrZWQgYnkgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lmg6CisgICAg
ICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKToKKyAgICAgICAg
U3RvcmUgbV9kZWJ1Z2dhYmxlSW5mbyBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UgYW5kIHdpbmRv
dy4gSXQncyB1c2VkIGZyb20gaW5zaWRlCisgICAgICAgIHBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQ
YWdlQW5kV2luZG93IHRvIHBhc3MgYXMgYW4gYXJndW1lbnQgdG8gdGhlIGRlbGVnYXRlIG1ldGhv
ZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6
cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICBPYnRhaW4gYSBj
b25maWd1cmF0aW9uIGFuZCB1c2UgaXQgdG8gaW5pdGlhbGl6ZSB0aGUgV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3Bl
Y3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICBDcmVhdGUgYSBjb25maWd1cmF0aW9u
IGFuZCB1c2UgaXQgdG8gaW5pdGlhbGl6ZSB0aGUgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGlu
aXRXaXRoQ29uZmlndXJhdGlvbjppbnNwZWN0ZWRQYWdlOl0pOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXddKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlciB3ZWJWaWV3Q29uZmlndXJhdGlvbl0pOiBSZW5hbWVkIGZyb20gLWNvbmZpZ3Vy
YXRpb24uCisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNw
ZWN0ZWRQYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyIGNvbmZpZ3VyYXRpb25dKTogRGVsZXRlZC4KKyAgICAgICAgQXBwbHkgdGhlIFVSTCBzY2hl
bWUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBpbiB0aGUgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiB0
byB0aGUKKyAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KKwogMjAyMC0xMC0yMCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc10gU29tZSBXZWJBdWRpbyBsYXlvdXQgdGVzdHMgZ2VuZXJhdGUgc3RyYW5nZSBub2lzZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAppbmRleCA0NTdjMjYyMmFmMWFiZGEzZGZl
NjM3NzBlMjcxNGQxMmY3YzdjNDhmLi43NTRjYjdiMWY2YTI1ZTg3MjUzM2IyZmIzODVhZDBhNmUy
NzIxNzQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2
LDcgQEAgcHVibGljOgogICAgICAgICBHcmFtbWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJh
c2UsCiAgICAgICAgIEluc3BlY3RvciwKKyAgICAgICAgSW5zcGVjdG9yQ29uZmlndXJhdGlvbiwK
ICAgICAgICAgS2V5VmFsdWVTdG9yYWdlTWFuYWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFn
ZXIsCiAgICAgICAgIE1lc3NhZ2VMaXN0ZW5lciwKQEAgLTM4MCw2ICszODEsMTAgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6R3JhbW1hckRldGFpbCwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6
Okljb25EYXRhYmFzZSwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3RvciwKKyAg
ICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24sCisjaWYgRU5B
QkxFKElOU1BFQ1RPUl9FWFRFTlNJT05TKQorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5z
cGVjdG9yRXh0ZW5zaW9uLAorI2VuZGlmCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpLZXlW
YWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVkaWFDYWNo
ZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZXNzYWdlTGlzdGVuZXIsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggMTczMGJkNDkzZmQwYjQ2
ZGVlY2MyNDdkN2MxODJjZDY4MjhkYTYzMS4uYzk0MjBjZDVmMjBkYjExOTlhMmZmMGE1MzVjZTAw
OWNmOTI4NjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2Jq
ZWN0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAt
NzksNiArNzksNyBAQAogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRl
c3RSZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW50ZXJuYWxE
ZWJ1Z0ZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMjY0LDcgKzI2NSwxMSBAQCB2b2lkKiBPYmplY3Q6
Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6SW5zcGVj
dG9yOgogICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvciBhbGxvY107CiAgICAgICAgIGJy
ZWFrOwotICAgICAgICAKKworICAgIGNhc2UgVHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjoK
KyAgICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXTsKKyAg
ICAgICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6Ok5hdmlnYXRpb246CiAgICAgICAgIHdyYXBw
ZXIgPSBbV0tOYXZpZ2F0aW9uIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCA3OTZkYjY5OTZlZWRmZTViN2U5MjgwMDEzNzIwNTRjZjY5YzM4MDQ2Li4xODczMzY0Y2VhNWU4
N2IwOGVmNzEyMTc3NzE5Yjk3YmI0MWU5N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTM0Miw2ICszNDIs
NyBAQCBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRnJh
bWVUcmVlTm9kZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmNwcAorVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JDb25maWd1cmF0aW9uLmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVy
ZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJ
TmF2aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjY5YTJkZDM5YjBl
MWUyMGMxYmJmYzEzYTVkNDQxNTkzNzkyMGJmZC4uOTliZWExZmI1OWU5NmQ2YTAwZWYxYmJhMDhh
NzI0YjFmMjg4NzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjU2LDYgKzI1Niw3IEBA
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0dl
b2xvY2F0aW9uUG9zaXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1t
CitVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0KIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JXaW5kb3cubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JDbGllbnQuaAppbmRleCBjZjIxOTRkNGZlMzAxZWIzZGNlZGEwYmMyYzZhZTk0NjQ1
OGM5OWY0Li5jZmJhODRhNzI3ODJmNTNiN2ViYTlhZDYxMTM3MWY4NWFmNDc2YzQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oCkBAIC0y
NSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtMzMsNiArMzQsOCBAQCBjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKIAogbmFtZXNw
YWNlIEFQSSB7CiAKK2NsYXNzIERlYnVnZ2FibGVJbmZvOworCiBjbGFzcyBJbnNwZWN0b3JDbGll
bnQgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDEsNiArNDQs
MTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRW5hYmxlZChXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGJyb3dzZXJEb21h
aW5EaXNhYmxlZChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2
b2lkIG9wZW5VUkxFeHRlcm5hbGx5KFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmLCBjb25zdCBX
VEY6OlN0cmluZyYgdXJsKSB7IH0KKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3BlY3RvckNvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKEFQSTo6RGVidWdnYWJsZUluZm8m
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3Jl
YXRlKCk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTFmZjMzOTJjMTY3N2NmMGE3MmYwNDJkMjdlY2U1Y2M5NGE3Y2NlNAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JD
b25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKworI2lu
Y2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxJ
bnNwZWN0b3JDb25maWd1cmF0aW9uPiBJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKQor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNvbmZpZ3VyYXRpb24pOworfQor
Cit2b2lkIEluc3BlY3RvckNvbmZpZ3VyYXRpb246OmFkZFVSTFNjaGVtZUhhbmRsZXIoUmVmPFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiB1cmxTY2hlbWVIYW5kbGVyLCBjb25zdCBXVEY6
OlN0cmluZyYgdXJsU2NoZW1lKQoreworICAgIG1fY3VzdG9tVVJMU2NoZW1lcy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoV1RGTW92ZSh1cmxTY2hlbWVIYW5kbGVyKSwgdXJsU2NoZW1lKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZDk1ZWIwZDZm
Y2U0YzU4YzNjYjI2MDRiYWRkMGRjYjJlMTc2ZmE4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaApAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmpl
Y3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlcjsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK3VzaW5nIFVSTFNjaGVtZUhhbmRsZXJQYWlyID0gc3Rk
OjpwYWlyPFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+LCBXVEY6OlN0cmluZz47CisK
K2NsYXNzIEluc3BlY3RvckNvbmZpZ3VyYXRpb24gZmluYWwgOiBwdWJsaWMgQVBJOjpPYmplY3RJ
bXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4geworcHVibGljOgorICAg
IHN0YXRpYyBSZWY8SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY3JlYXRlKCk7CisgICAgCisgICAg
dm9pZCBhZGRVUkxTY2hlbWVIYW5kbGVyKFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+
JiYsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmxTY2hlbWUpOworICAgIGNvbnN0IFZlY3RvcjxVUkxT
Y2hlbWVIYW5kbGVyUGFpcj4mIHVybFNjaGVtZUhhbmRsZXJzKCkgeyByZXR1cm4gbV9jdXN0b21V
UkxTY2hlbWVzOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVSTFNjaGVtZUhhbmRsZXJQYWly
PiBtX2N1c3RvbVVSTFNjaGVtZXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzU5ZmRjNDkzNDhjYmIwYTQzZjQ2MmJiZjU3
OTJlNDMxNjRmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdl
YktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQHByb3Rv
Y29sIFdLVVJMU2NoZW1lSGFuZGxlcjsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKQorQGludGVyZmFjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIDogTlNPYmplY3Qg
PE5TQ29weWluZz4KKy8qKgorICogQGFic3RyYWN0IFNldHMgdGhlIFVSTCBzY2hlbWUgaGFuZGxl
ciBvYmplY3QgZm9yIHRoZSBnaXZlbiBVUkwgc2NoZW1lLgorICogQHBhcmFtIHVybFNjaGVtZUhh
bmRsZXIgVGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyAqIEBwYXJhbSBzY2hlbWUgVGhlIFVSTCBz
Y2hlbWUgdGhlIG9iamVjdCB3aWxsIGhhbmRsZS4KKyAqIEBkaXNjdXNzaW9uIFRoaXMgaXMgdXNl
ZCB0byByZWdpc3RlciBhZGRpdGlvbmFsIHNjaGVtZXMgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGlu
IHRoZSBpbnNwZWN0b3IgcGFnZSwKKyAqIHN1Y2ggYXMgdG8gcmVnaXN0ZXIgc2NoZW1lcyB1c2Vk
IGJ5IGV4dGVuc2lvbnMuIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhbmQgcmVz
dHJpY3Rpb25zIGFzCisgKiBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgLVtXS1dl
YlZpZXcgc2V0VVJMU2NoZW1lSG5hZGxlcjpmb3JVUkxTY2hlbWU6XS4KKyAqLworLSAodm9pZClz
ZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5k
bGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWU7CitAZW5kCisKK05TX0FTU1VN
RV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFm
MjM0MmY4OGFhODI0MTdhM2I3MDM5NDY3NjViY2FjODJmOTcwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24ubW0KQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCisKKyNpbXBvcnQg
IldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbgorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmpl
Y3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+KHNlbGYp
OworICAgIAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBf
Y29uZmlndXJhdGlvbi0+QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjp+SW5zcGVjdG9yQ29u
ZmlndXJhdGlvbigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQVBJOjpPYmplY3Qm
KV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9jb25maWd1cmF0aW9uOworfQorCistICh2b2lk
KXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhh
bmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIF9jb25maWd1
cmF0aW9uLT5hZGRVUkxTY2hlbWVIYW5kbGVyKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNv
Y29hOjpjcmVhdGUodXJsU2NoZW1lSGFuZGxlciksIHVybFNjaGVtZSk7Cit9CisKKy0gKHZvaWQp
YXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29u
ZmlndXJhdGlvbgoreworICAgIGZvciAoYXV0byBwYWlyIDogX2NvbmZpZ3VyYXRpb24tPnVybFNj
aGVtZUhhbmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYgaGFuZGxlciA9IHN0YXRpY19jYXN0PFdl
YktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4ocGFpci5maXJzdC5nZXQoKSk7CisgICAg
ICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5hcGlIYW5kbGVy
KCkgZm9yVVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAgICB9Cit9CisKKy0gKGlkKWNvcHlXaXRo
Wm9uZTooTlNab25lICopem9uZQoreworICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24gPSBbKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3Nd
IGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmb3IgKGF1dG8gcGFpciA6IF9jb25m
aWd1cmF0aW9uLT51cmxTY2hlbWVIYW5kbGVycygpKSB7CisgICAgICAgIGF1dG8mIGhhbmRsZXIg
PSBzdGF0aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIuZmly
c3QuZ2V0KCkpOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhh
bmRsZXIuYXBpSGFuZGxlcigpIGZvclVSTFNjaGVtZTpwYWlyLnNlY29uZF07CisgICAgfQorCisg
ICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2I4ZmUyOTUwZDFhNGE3MmZjMDYxZmIx
ZDY5YTEyNjFjOTBhNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCkBAIC0wLDAg
KzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmgiCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldL
T2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFw
cGVyVHJhaXRzPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4geworICAgIHVzaW5nIFdyYXBw
ZXJDbGFzcyA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsK
K30KKworLSAodm9pZClhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckRlbGVnYXRlLmgKaW5kZXggNTUyMDFjNzg2Yjg3YzZjZjdjMDliMjcwOGM3
MzcxMGM3NDkyODAxYy4uYmNiYjI1MzdjMDg3NTA3MzI2YjlmMmFhZjQ4MTlmMmU1MTkzMGM5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckRlbGVnYXRlLmgKQEAgLTI3LDYgKzI3LDggQEAKICNpbXBvcnQgPFdlYktpdC9XS0Zv
dW5kYXRpb24uaD4KIAogQGNsYXNzIF9XS0luc3BlY3RvcjsKK0BjbGFzcyBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uOworQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOwogCiBAcHJv
dG9jb2wgX1dLSW5zcGVjdG9yRGVsZWdhdGUgPE5TT2JqZWN0PgogQG9wdGlvbmFsCkBAIC00OCw0
ICs1MCwxMCBAQAogICovCiAtICh2b2lkKWluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVj
dG9yIG9wZW5VUkxFeHRlcm5hbGx5OihOU1VSTCAqKXVybDsKIAorLyohIEBhYnN0cmFjdCBDYWxs
ZWQgd2hlbiB0aGUgX1dLSW5zcGVjdG9yIGlzIHJlYWR5IHRvIGNyZWF0ZSBhIFdlYiBJbnNwZWN0
b3IgaW5zdGFuY2UuIFRoZSBjbGllbnQgY2FuCisgICAgcHJvdmlkZSBhIGN1c3RvbSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUg
V2ViIEluc3BlY3Rvci4KKyAgICBAcGFyYW0gZGVidWdnYWJsZUluZm8gVGhlIGRlYnVnZ2FibGUg
dGhhdCBpcyBhYm91dCB0byBiZSBpbnNwZWN0ZWQuCisgKi8KKy0gKF9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24gKilpbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBjb25maWd1cmF0
aW9uRm9yRGVidWdnYWJsZTooX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gKilkZWJ1Z2dhYmxl
SW5mbzsKKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aAppbmRleCA1OGIxMDI3MDMyNGVlOTE3MzkzMGY4YzdhZGU4YmZjZDdjOWU0NGVlLi43NzdmMDJm
MGFiMzQ2MDljZDkzMTcyYTA4ZDAyOWE4M2ZiZGNkMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmICFUQVJHRVRf
T1NfSVBIT05FCiAKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbjsKIAogQHByb3RvY29sIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
RGVsZWdhdGU7CiAKQEAgLTUwLDYgKzUxLDcgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEw
LjEyLjMpLCBpb3MoMTAuMykpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHJldGFp
bikgTlNXaW5kb3cgKndpbmRvdzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0
YWluKSBXS1dlYlZpZXcgKndlYlZpZXc7CiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZp
Z3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uOwogLSAo
dm9pZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJs
ZVR5cGUpZGVidWdnYWJsZVR5cGUgYmFja2VuZENvbW1hbmRzVVJMOihOU1VSTCAqKWJhY2tlbmRD
b21tYW5kc1VSTDsKIC0gKHZvaWQpY2xvc2U7CiAtICh2b2lkKXNob3c7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNjZiZjI0ZGY4MjZkYWE4ZTcy
ODQyNDhmZDFiNzI4Y2I1ZWJmZjM0My4uOWQ0M2E4Y2JhMDI4MDNjNGU3ZGY2YmVlMzNhNzlhMjNh
YzllZDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bQpAQCAtMjQsMTQgKzI0LDE2IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0
ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCiAKICNpZiBQTEFURk9STShN
QUMpCiAKICNpbXBvcnQgIkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW1wb3J0ICJBUElJbnNwZWN0
b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJEZWJ1Z2dhYmxlSW5mb0RhdGEuaCIKICNpbXBv
cnQgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5h
bC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1w
b3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgiCiAKIEBpbnRlcmZhY2Ug
X1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKQEAgLTYyLDYgKzY0LDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIFttX2NvbnRyb2xsZXIgY2xvc2VGcm9tRnJvbnRlbmRd
OwogICAgIH0KKyAgICAKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25m
aWd1cmF0aW9uRm9yRGVidWdnYWJsZShBUEk6OkRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5m
bykgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24mPihbW21fY29udHJvbGxlciBjb25maWd1cmF0aW9uRm9yRGVidWdn
YWJsZTp3cmFwcGVyKGRlYnVnZ2FibGVJbmZvKV0gX2FwaU9iamVjdF0pOworICAgIH0KIAogcHJp
dmF0ZToKICAgICBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAqbV9jb250cm9s
bGVyOwpAQCAtNzIsMTMgKzc5LDE2IEBAIHByaXZhdGU6CiBAaW1wbGVtZW50YXRpb24gX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJLaXQ6OlJlbW90
ZVdlYkluc3BlY3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxXZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PiBtX3JlbW90
ZUluc3BlY3RvckNsaWVudDsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpfY29uZmln
dXJhdGlvbjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXQKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKKyAgICBfY29uZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9uIGNvcHldOworCiAgICAg
bV9yZW1vdGVJbnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZSgpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJL
aXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90
ZUluc3BlY3RvclByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkp
OwpAQCAtMTI0LDcgKzEzNCw3IEBAIC0gKHZvaWQpbG9hZEZvckRlYnVnZ2FibGVUeXBlOihXS1Jl
bW90ZVdlYkluc3BlY3RvckRlYnVnZ2FibGVUeXBlKWRlYnVnZ2FibGVUeXBlCiAgICAgZGVidWdn
YWJsZUluZm8udGFyZ2V0UGxhdGZvcm1OYW1lID0gQCJtYWNPUyI7CiAgICAgZGVidWdnYWJsZUlu
Zm8udGFyZ2V0QnVpbGRWZXJzaW9uID0gQCJVbmtub3duIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50
YXJnZXRQcm9kdWN0VmVyc2lvbiA9IEAiVW5rbm93biI7Ci0gICAgZGVidWdnYWJsZUluZm8udGFy
Z2V0SXNTaW11bGF0b3IgPSBmYWxzZTsKKyAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVs
YXRvciA9IE5POwogICAgIFtzZWxmIGxvYWRGb3JEZWJ1Z2dhYmxlOmRlYnVnZ2FibGVJbmZvIGJh
Y2tlbmRDb21tYW5kc1VSTDpiYWNrZW5kQ29tbWFuZHNVUkxdOwogfQogCkBAIC0xNDgsNiArMTU4
LDggQEAgLSAodm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQog
ICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdl
KTsKIH0KIAorLy8gTUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0aG9kcwor
CiAtICh2b2lkKXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAg
ICBpZiAoX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cihpbnNwZWN0b3JWaWV3Q29udHJvbGxlcjpzZW5kTWVzc2FnZVRvQmFja2VuZDopXSkKQEAgLTE2
MCw5ICsxNzIsMTQgQEAgLSAodm9pZCljbG9zZUZyb21Gcm9udGVuZAogICAgICAgICBbX2RlbGVn
YXRlIGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9yRGlkQ2xvc2U6c2VsZl07CiB9CiAK
Ky0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uRm9yRGVidWdnYWJs
ZTooX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8gKilkZWJ1Z2dhYmxlSW5mbworeworICAgIHJl
dHVybiBbX2NvbmZpZ3VyYXRpb24gY29weV07Cit9CisKIC8vIE1BUks6IF9XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZSBtZXRob2RzCiAKLS0gKHZvaWQpX3NldERpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRl
bGVnYXRlCistICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFn
bm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBfTnVsbGFibGUpZGVsZWdhdGUKIHsKICAgICBzZWxmLndl
YlZpZXcuX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBtX3JlbW90
ZUluc3BlY3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZh
dGUuaAppbmRleCAzYTljNzEwYWU0OTBjYjc5ZTZhMTU0ZDdmMDk2MTVmMWE4ODBiNDUyLi5lN2E5
ODQyNzJmNTMwYzVhYjE0MTZmMmM3NGE0MTUzODYwN2JjNzhiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCkBAIC0yOSw3ICsyOSw5
IEBACiAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKK0BjbGFzcyBfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uOwogQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOworQHByb3RvY29s
IF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKIApAQCAtMzcsNiArMzksNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiAtICh2b2lkKWxvYWRGb3JEZWJ1Z2dhYmxlOihfV0tJ
bnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJbmZvIGJhY2tlbmRDb21tYW5kc1VS
TDooTlNVUkwgKiliYWNrZW5kQ29tbWFuZHNVUkw7CiAKKy0gKF9XS0luc3BlY3RvckNvbmZpZ3Vy
YXRpb24gKiljb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTooX1dLSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8gKilkZWJ1Z2dhYmxlSW5mbzsKIEBlbmQKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oCmlu
ZGV4IGQ2NGI0N2IyOTViMTJiZTU3NTRlMmZlNzFkNGYwYzViZTkwYzNmM2QuLjhmNmU2MzVlOGRk
YmRkN2NiNjI4ODNiZmEzZDMwY2U4ZWY4MDUwNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oCkBA
IC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJBUElEZWJ1Z2dhYmxl
SW5mby5oIgogI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJBUElJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBvcnQg
PHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBAIC01Niw5ICs1OCwxMCBAQCBwcml2YXRlOgogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgLy8gQVBJOjpJbnNwZWN0b3JDbGllbnQKLSAgICAgICAgdm9pZCBi
cm93c2VyRG9tYWluRW5hYmxlZChXZWJJbnNwZWN0b3JQcm94eSYpOwotICAgICAgICB2b2lkIGJy
b3dzZXJEb21haW5EaXNhYmxlZChXZWJJbnNwZWN0b3JQcm94eSYpOwotICAgICAgICB2b2lkIG9w
ZW5VUkxFeHRlcm5hbGx5KFdlYkluc3BlY3RvclByb3h5JiwgY29uc3QgU3RyaW5nJiB1cmwpOwor
ICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYkluc3BlY3RvclByb3h5Jikgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgYnJvd3NlckRvbWFpbkRpc2FibGVkKFdlYkluc3BlY3RvclBy
b3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgb3BlblVSTEV4dGVybmFsbHkoV2ViSW5zcGVj
dG9yUHJveHkmLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZjxBUEk6
Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKEFQSTo6
RGVidWdnYWJsZUluZm8mKSBvdmVycmlkZTsKIAogICAgICAgICBJbnNwZWN0b3JEZWxlZ2F0ZSYg
bV9pbnNwZWN0b3JEZWxlZ2F0ZTsKICAgICB9OwpAQCAtNzAsNiArNzMsNyBAQCBwcml2YXRlOgog
ICAgICAgICBib29sIGluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21haW4gOiAxOwogICAgICAg
ICBib29sIGluc3BlY3RvckRpZERpc2FibGVCcm93c2VyRG9tYWluIDogMTsKICAgICAgICAgYm9v
bCBpbnNwZWN0b3JPcGVuVVJMRXh0ZXJuYWxseSA6IDE7CisgICAgICAgIGJvb2wgaW5zcGVjdG9y
Q29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUgOiAxOwogICAgIH0gbV9kZWxlZ2F0ZU1ldGhvZHM7
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29j
b2EvSW5zcGVjdG9yRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KaW5kZXggNWNlZGExODU5NDBlMDQ3NTA3M2Zj
Y2YzODEyODQyMDVjMTBiZWEyNC4uNWEzNDM2MWI2MDAzMGNiZThlZmNhZjc5ZjM2NWJlYjdlYTIy
NzUzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckRlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMjgsNiArMjgsOCBAQAogCiAjaW1w
b3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1w
b3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0lu
c3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckRl
bGVnYXRlLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogCkBAIC01NSw2ICs1
Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxfV0tJbnNwZWN0
b3JEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMuaW5zcGVjdG9yRGlk
RW5hYmxlQnJvd3NlckRvbWFpbiA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKGluc3BlY3RvckRpZEVuYWJsZUJyb3dzZXJEb21haW46KV07CiAgICAgbV9kZWxlZ2F0ZU1l
dGhvZHMuaW5zcGVjdG9yRGlkRGlzYWJsZUJyb3dzZXJEb21haW4gPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRvbWFpbjop
XTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JPcGVuVVJMRXh0ZXJuYWxseSA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvcjpvcGVuVVJMRXh0
ZXJuYWxseTopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JDb25maWd1cmF0aW9u
Rm9yRGVidWdnYWJsZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGlu
c3BlY3Rvcjpjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTopXTsKIH0KIAogSW5zcGVjdG9yRGVs
ZWdhdGU6Okluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KEluc3BlY3RvckRlbGVnYXRl
JiBkZWxlZ2F0ZSkKQEAgLTEwMCw0ICsxMDMsMTcgQEAgdm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6
SW5zcGVjdG9yQ2xpZW50OjpvcGVuVVJMRXh0ZXJuYWxseShXZWJJbnNwZWN0b3JQcm94eSYsIGMK
ICAgICBbZGVsZWdhdGUgaW5zcGVjdG9yOm1faW5zcGVjdG9yRGVsZWdhdGUubV9pbnNwZWN0b3Iu
Z2V0KCkuZ2V0KCkgb3BlblVSTEV4dGVybmFsbHk6W05TVVJMIFVSTFdpdGhTdHJpbmc6dXJsXV07
CiB9CiAKK1JlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IEluc3BlY3RvckRlbGVnYXRl
OjpJbnNwZWN0b3JDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKEFQSTo6RGVidWdn
YWJsZUluZm8mIGRlYnVnZ2FibGVJbmZvKQoreworICAgIGlmICghbV9pbnNwZWN0b3JEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JDb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZSkK
KyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisK
KyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNv
bmZpZ3VyYXRpb24mPihbW2RlbGVnYXRlIGluc3BlY3RvcjptX2luc3BlY3RvckRlbGVnYXRlLm1f
aW5zcGVjdG9yLmdldCgpLmdldCgpIGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOndyYXBwZXIo
ZGVidWdnYWJsZUluZm8pXSBfYXBpT2JqZWN0XSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBlYzMxMGQ4YTMzODkwNWQyNmE5NDNk
ZGE2MTk3ZjEwZTI5MmM4OTlmLi5iMDQ3MzkzMWQ3MzEwZjI1OGU5YmVjY2U3MGNlNTIyYzg5YTdl
OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY1LDExICs2NSwxMSBAQCB2b2lk
IFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShi
b29sIGF2YWlsYWJsZSkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bG9hZChSZWY8
QVBJOjpEZWJ1Z2dhYmxlSW5mbz4mJiBkZWJ1Z2dhYmxlSW5mbywgY29uc3QgU3RyaW5nJiBiYWNr
ZW5kQ29tbWFuZHNVUkwpCiB7Ci0gICAgY3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7Ci0K
ICAgICBtX2RlYnVnZ2FibGVJbmZvID0gV1RGTW92ZShkZWJ1Z2dhYmxlSW5mbyk7CiAgICAgbV9i
YWNrZW5kQ29tbWFuZHNVUkwgPSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKKyAgICBjcmVhdGVGcm9u
dGVuZFBhZ2VBbmRXaW5kb3coKTsKKwogICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdl
czo6UmVtb3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUobV9kZWJ1Z2dhYmxlSW5mby0+ZGVi
dWdnYWJsZUluZm9EYXRhKCksIGJhY2tlbmRDb21tYW5kc1VSTCkpOwogICAgIG1faW5zcGVjdG9y
UGFnZS0+bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9y
UGFnZVVSTCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRlYmEwZmVlNjI1NjQ1
NjI1ZDc2Mzk2YjJiMDY1YTIxMmJmOTM4MDguLmE4ZTg5MjdjMzY5MjM3MzIyNzg1YzlmZmNlZTUy
ZWE2NWQwY2JhMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC00OCw2ICs0OCw3IEBAIGNs
YXNzIENlcnRpZmljYXRlSW5mbzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEZWJ1Z2dhYmxl
SW5mbzsKK2NsYXNzIEluc3BlY3RvckNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNjAsNiArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb0Jh
Y2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsb3Nl
RnJvbUZyb250ZW5kKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYp
ID0gMDsKIH07CiAKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5IDogcHVibGljIFJlZkNv
dW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+LCBwdWJsaWMgSVBDOjpNZXNzYWdlUmVjZWl2
ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmE4Nzg3MmY4N2NkMGQyNzk3MjRiZWM0OGEyYzdkOTE3ZThiZDA5YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JVSUV4dGVuc2lvbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTAsMCArMSwxMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViSW5zcGVjdG9y
VUlFeHRlbnNpb25Db250cm9sbGVyUHJveHkuaCIKKworI2lmIEVOQUJMRShJTlNQRUNUT1JfRVhU
RU5TSU9OUykKKworI2luY2x1ZGUgIldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlck1l
c3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vz
c1Byb3h5LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lv
bkNvbnRyb2xsZXJQcm94eTo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9sbGVyUHJveHko
V2ViUGFnZVByb3h5JiBpbnNwZWN0b3JQYWdlKQorICAgIDogbV9pbnNwZWN0b3JQYWdlKG1ha2VX
ZWFrUHRyKGluc3BlY3RvclBhZ2UpKQoreworfQorCitXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6fldlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5KCkK
K3sKKyAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9p
bnNwZWN0b3JQYWdlID0gbnVsbHB0cjsKKworICAgIGF1dG8gY2FsbGJhY2tzID0gc3RkOjpleGNo
YW5nZShtX2Zyb250ZW5kTG9hZGVkQ2FsbGJhY2tRdWV1ZSwgeyB9KTsKKyAgICBmb3IgKGF1dG8m
IGNhbGxiYWNrIDogY2FsbGJhY2tzKQorICAgICAgICBjYWxsYmFjaygpOworfQorCit2b2lkIFdl
Ykluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp3aGVuRnJvbnRlbmRIYXNMb2Fk
ZWQoRnVuY3Rpb248dm9pZCgpPiYmIGNhbGxiYWNrKQoreworICAgIGlmIChtX2Zyb250ZW5kTG9h
ZGVkICYmIG1faW5zcGVjdG9yUGFnZSkgeworICAgICAgICBjYWxsYmFjaygpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVldWUuYXBwZW5k
KFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JVSUV4dGVuc2lvbkNv
bnRyb2xsZXJQcm94eTo6aW5zcGVjdG9yRnJvbnRlbmRMb2FkZWQoKQoreworICAgIEFTU0VSVCht
X2luc3BlY3RvclBhZ2UpOworCisgICAgbV9mcm9udGVuZExvYWRlZCA9IHRydWU7CisKKyAgICBh
dXRvIGNhbGxiYWNrcyA9IHN0ZDo6ZXhjaGFuZ2UobV9mcm9udGVuZExvYWRlZENhbGxiYWNrUXVl
dWUsIHsgfSk7CisgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykKKyAgICAgICAg
Y2FsbGJhY2soKTsKK30KKworLy8gQVBJCisKK3ZvaWQgV2ViSW5zcGVjdG9yVUlFeHRlbnNpb25D
b250cm9sbGVyUHJveHk6OnJlZ2lzdGVyRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9u
SUQsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2Fk
ZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBkaXNwbGF5TmFt
ZSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0
YWJsZSB7CisgICAgICAgIGlmICghd2Vha1RoaXMgfHwgIXdlYWtUaGlzLT5tX2luc3BlY3RvclBh
Z2UpIHsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHdlYWtUaGlzLT5tX2luc3BlY3RvclBhZ2Ut
PnByb2Nlc3MoKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkluc3BlY3RvclVJRXh0
ZW5zaW9uQ29udHJvbGxlcjo6UmVnaXN0ZXJFeHRlbnNpb24geyBleHRlbnNpb25JRCwgZGlzcGxh
eU5hbWUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit2b2lk
IFdlYkluc3BlY3RvclVJRXh0ZW5zaW9uQ29udHJvbGxlclByb3h5Ojp1bnJlZ2lzdGVyRXh0ZW5z
aW9uKGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICB3aGVuRnJvbnRlbmRIYXNMb2Fk
ZWQoW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyksIGV4dGVuc2lvbklELCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICAg
ICAgaWYgKCF3ZWFrVGhpcyB8fCAhd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZSkgeworICAgICAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgd2Vha1RoaXMtPm1faW5zcGVjdG9yUGFnZS0+cHJvY2VzcygpLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViSW5zcGVjdG9yVUlFeHRlbnNpb25Db250cm9s
bGVyOjpVbnJlZ2lzdGVyRXh0ZW5zaW9uIHsgZXh0ZW5zaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIH0pOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIEVOQUJMRShJTlNQRUNUT1JfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5TWFjLm1tCmluZGV4IDI0NTRhZTk1OTQxMDc3ZDQyNDhjZTZhNTM3Yjk0ZTFmMjBl
ZTAxYmUuLjk0YjljMDg2YWRjYmIyMmVhZDFhNWNhNjYyNDk5MzIyOTljYjNjM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMTAzLDcgKzEwMyw5IEBAIFdlYlBh
Z2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQ
YWdlQW5kV2luZG93KCkKIHsKICAgICBtX29iakNBZGFwdGVyID0gYWRvcHROUyhbW1dLUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhbGxvY10gaW5pdFdpdGhSZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eTp0aGlzXSk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOm51bGxw
dHJdKTsKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gbV9jbGllbnQtPmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKG1fZGVidWdnYWJsZUluZm8u
Y29weVJlZigpKTsKKyAgICAKKyAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb25maWd1cmF0aW9uOndyYXBwZXIo
Y29uZmlndXJhdGlvbi5nZXQoKSkgaW5zcGVjdGVkUGFnZTpudWxscHRyXSk7CiAgICAgW21faW5z
cGVjdG9yVmlldy5nZXQoKSBzZXREZWxlZ2F0ZTptX29iakNBZGFwdGVyLmdldCgpXTsKIAogICAg
IG1fd2luZG93ID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kV2luZG93KE5TWmVy
b1JlY3QsIFdlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0aW9uVGFyZ2V0VHlwZTo6UmVtb3RlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggMTA3MTkyODY2NWU0OWVjYzhh
MjQ3MWQ3ZjE0NjlhODBjYTZhZDI5Ni4uM2EzNDZkNDIxZjhhNDJkMTdlZTQ0NGNlMTY0NDQwNTVj
NGNhZjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCiBPQkpDX0NMQVNTIFdLV2ViVmlldzsK
K09CSkNfQ0xBU1MgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC00Myw3ICs0NCw3IEBAIE5TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2Vi
VmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5z
cGVjdGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2U7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6
OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JX
ZWJWaWV3OihOU1ZpZXcgKil2aWV3OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0KaW5kZXggMWVhYTk0M2YyN2EyN2Q2N2M2MTFmZjZkNmZiYmYzNjE2MmJmNzE5Ny4uNjI0ZTZi
YjUzOTZlMjQ1MmNmMWY2YzA4NzE0YzkxNTJhNzA2YmNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiV2ViSW5zcGVjdG9y
UHJveHkuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtP
YmpDUHRyLmg+CiAKQEAgLTUyLDEzICs1MywxNSBAQCBAaW1wbGVtZW50YXRpb24gV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlciB7CiAgICAgTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9p
bnNwZWN0ZWRQYWdlOwogICAgIFJldGFpblB0cjxXS0luc3BlY3RvcldLV2ViVmlldz4gX3dlYlZp
ZXc7CiAgICAgV2Vha09iakNQdHI8aWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4+IF9kZWxlZ2F0ZTsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJh
dGlvbjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5zcGVjdGVkUGFnZTooTmFrZWRQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2UKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1
cmF0aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNw
ZWN0ZWRQYWdlCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAKKyAgICBfY29uZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9uIGNvcHldOwog
ICAgIC8vIFRoZSAobG9jYWwpIGluc3BlY3RlZCBwYWdlIGlzIG5pbCBpZiB0aGUgY29udHJvbGxl
ciBpcyBob3N0aW5nIGEgUmVtb3RlIFdlYiBJbnNwZWN0b3Igdmlldy4KICAgICBfaW5zcGVjdGVk
UGFnZSA9IGluc3BlY3RlZFBhZ2U7CiAKQEAgLTg3LDcgKzkwLDcgQEAgLSAoV0tXZWJWaWV3ICop
d2ViVmlldwogICAgIC8vIENvbnN0cnVjdCBsYXppbHkgc28gdGhlIGNsaWVudCBjYW4gc2V0IHRo
ZSBkZWxlZ2F0ZSBiZWZvcmUgdGhlIFdlYlZpZXcgaXMgY3JlYXRlZC4KICAgICBpZiAoIV93ZWJW
aWV3KSB7CiAgICAgICAgIE5TUmVjdCBpbml0aWFsRnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIFdl
YktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dXaWR0aCwgV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hlaWdodCk7Ci0gICAgICAgIF93ZWJWaWV3ID0g
YWRvcHROUyhbW1dLSW5zcGVjdG9yV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRp
YWxGcmFtZSBjb25maWd1cmF0aW9uOltzZWxmIGNvbmZpZ3VyYXRpb25dXSk7CisgICAgICAgIF93
ZWJWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOmluaXRpYWxGcmFtZSBjb25maWd1cmF0aW9uOnNlbGYud2ViVmlld0NvbmZpZ3VyYXRpb25d
KTsKICAgICAgICAgW193ZWJWaWV3IHNldFVJRGVsZWdhdGU6c2VsZl07CiAgICAgICAgIFtfd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6c2VsZl07CiAgICAgICAgIFtfd2ViVmlldyBzZXRJ
bnNwZWN0b3JXS1dlYlZpZXdEZWxlZ2F0ZTpzZWxmXTsKQEAgLTEwNCw3ICsxMDcsNyBAQCAtICh2
b2lkKXNldERlbGVnYXRlOihpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPilk
ZWxlZ2F0ZQogICAgIF9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogfQogCi0tIChXS1dlYlZpZXdDb25m
aWd1cmF0aW9uICopY29uZmlndXJhdGlvbgorLSAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKXdl
YlZpZXdDb25maWd1cmF0aW9uCiB7CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKIApAQCAtMTIzLDYgKzEyNiw4
IEBAIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiAKICAgICBwcmVm
ZXJlbmNlcy5fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkID0gWUVTOwogCisgICAgW19jb25maWd1
cmF0aW9uIGFwcGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsK
KyAgICAKICAgICBpZiAoISFfZGVsZWdhdGUgJiYgW19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9ySXNVbmRlclRlc3Q6
KV0pIHsKICAgICAgICAgaWYgKFtfZGVsZWdhdGUgaW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnNw
ZWN0b3JJc1VuZGVyVGVzdDpzZWxmXSkgewogICAgICAgICAgICAgcHJlZmVyZW5jZXMuX2hpZGRl
blBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVkID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQppbmRleCAxOGUzYjc1NGY5ZjBlMzYzYjM2OGY1NDhlYjhhNDMwZDVjODk5YjIyLi4zYTgz
Yjg0ODRkY2UwM2JmMTE3ZjFjOWQzYTJkMDVlMDg0NzAwYWUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJv
eHlNYWMubW0KQEAgLTI4LDE0ICsyOCwyMCBAQAogCiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1w
b3J0ICJBUElEZWJ1Z2dhYmxlSW5mby5oIgorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ2xpZW50Lmgi
CisjaW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJHbG9iYWxG
aW5kSW5QYWdlU3RhdGUuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yUHJpdmF0ZU1hYy5oIgogI2lt
cG9ydCAiV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgorI2ltcG9ydCAiV0tPYmplY3QuaCIK
ICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUGFnZUdy
b3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUlu
Zm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0luc3BlY3RvcldpbmRvdy5oIgogI2ltcG9ydCA8U2VjdXJpdHlJbnRlcmZhY2UvU0ZDZXJ0
aWZpY2F0ZVBhbmVsLmg+CkBAIC0yOTEsNyArMjk3LDggQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNw
ZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UoKQogICAgIE5TVmlldyAqaW5z
cGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2UoKS0+aW5zcGVjdG9yQXR0YWNobWVudFZpZXcoKTsK
ICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1f
b2JqQ0FkYXB0ZXIuZ2V0KCkgc2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RlZFZpZXdGcmFtZURp
ZENoYW5nZTopIG5hbWU6TlNWaWV3RnJhbWVEaWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Omlu
c3BlY3RlZFZpZXddOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMo
W1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFBhZ2U6
aW5zcGVjdGVkUGFnZSgpXSk7CisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4g
Y29uZmlndXJhdGlvbiA9IG1faW5zcGVjdG9yQ2xpZW50LT5jb25maWd1cmF0aW9uRm9yRGVidWdn
YWJsZShBUEk6OkRlYnVnZ2FibGVJbmZvOjpjcmVhdGUoaW5mb0ZvckxvY2FsRGVidWdnYWJsZSgp
KSk7CisgICAgbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbmZpZ3VyYXRpb246IDo6V2ViS2l0Ojp3
cmFwcGVyKGNvbmZpZ3VyYXRpb24pIGluc3BlY3RlZFBhZ2U6aW5zcGVjdGVkUGFnZSgpXSk7CiAg
ICAgW21faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV9vYmpDQWRh
cHRlci5nZXQoKV07CiAKICAgICBXZWJQYWdlUHJveHkgKmluc3BlY3RvclBhZ2UgPSBbbV9pbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3XS0+X3BhZ2UuZ2V0KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA1MTllZTk1NTc1Mjdh
NzAzYTViYmQ2ZTZmMjc3YjFhYzJlYWU4YjYxLi4yZDc5YzQ4NTEwMDllNDQyYzNlNjllNmNiMmM3
NGMyNjg5ZWI5MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTE0MTgsNiArMTQxOCw5IEBACiAJCTk5MjQ5QUQ1MUYxRjFFNTYwMEI2
MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFEMzFGMUYxRTMzMDBCNjJGQkIg
LyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk5OTI0OUFENjFG
MUYxRTVGMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjQ5QUQ0MUYxRjFFMzMw
MEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTRC
QURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjExRjdENzdF
QTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJOTk0QzYw
NDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQwMjUzQ0E1NDMw
MEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYw
IC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8q
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICovOyB9OworCQk5OTRDNjA0NzI1
M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QzYwNDYyNTNDQUNCODAwQkRG
MDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJOTk1MjI2RDYyMDdE
MTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIw
IC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9OwogCQk5OTU1QTZFQzFDNzk4MEMy
MDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJB
dXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyog
QXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDUzMyw2ICs0NTM2
LDExIEBACiAJCTk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lv
bklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9t
YXRpb25TZXNzaW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURG
MTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0
MTI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJE
RjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAv
KiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTk0QzYwNDgyNTNGODIwMjAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTIy
NkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBT
aW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTczMjUsNiArNzMzMyw5IEBACiAJCQkJMzdBNjRFNTQxOEYzOEUz
QzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdhdGUuaCAqLywKIAkJCQk1Q0FGREU0MjIxMzA4NDM1
MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggKi8sCiAJCQkJNUNBRkRFNDMyMTMwODQzNjAwQjFG
N0UxIC8qIF9XS0luc3BlY3Rvci5tbSAqLywKKwkJCQk5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAg
LyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTk5NEM2MDQxMjUzQ0E1NDQw
MEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tICovLAorCQkJCTk5NEM2MDQ0
MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAq
LywKIAkJCQk5OTFGNDkyRDIzQTgxMkM1MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJs
ZUluZm8uaCAqLywKIAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9X
S0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTkzMTcsNiArOTMyOCw4
IEBACiAJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50
LmggKi8sCiAJCQkJN0E4QTlENTcxRUYxMTlBQTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxl
Q2xpZW50LmggKi8sCiAJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3Rv
ckNsaWVudC5oICovLAorCQkJCTk5NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0
b3JDb25maWd1cmF0aW9uLmNwcCAqLywKKwkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyog
QVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQx
RUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQy
MDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8s
CkBAIC0xMDc1MSw2ICsxMDc2NCw4IEBACiAJCQkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8q
IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU1MThG
MzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0FGREU0NTIxMzA4NDYzMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQk5OTRDNjA0MjI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkxRjQ5
MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUw
MzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTEw
ODY0LDYgKzEwODc5LDcgQEAKIAkJCQk3QThBOUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyogQVBJSW5q
ZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkz
NzY5MDc5QTE4RjMxQ0IyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBBMjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNw
ZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NEM2MDQ3MjUzQ0FDQjgwMEJERjA2
MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUIz
NjI4RjIxNDFFQTVEMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTdDRTREMjA3MUE0Njc3NjEwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0
QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzY1NDQ3ZjYxZGU4ZjM3ZDgxZThj
NTdlNGQyNzBjNThhOTY1ODAxZS4uMDFmZjk4MzQ4NzJjZjMyYWUwYjQ2MTc1Y2YyMDE5M2RlYzJl
ZTliNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIwLTEwLTIwICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29t
PgorCisgICAgICAgIFtDb2NvYV0gSW50cm9kdWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24g
Zm9yIGN1c3RvbWl6aW5nIGxvY2FsIGFuZCByZW1vdGUgV2ViIEluc3BlY3RvcnMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzg5NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzAzNTU5MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5z
cGVjdG9yRGVsZWdhdGUubW06CisgICAgICAgICgtW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIgd2Vi
VmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1NpbXBsZVVSTFNjaGVtZUhh
bmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bSW5zcGVjdG9y
RGVsZWdhdGUgaW5zcGVjdG9yOmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOl0pOgorICAgICAg
ICAoLVtVSURlbGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAg
ICAgICAoVEVTVCk6CisKIDIwMjAtMTAtMjAgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtidWlsZC53ZWJraXQub3JnXSBSZW5hbWUgc2xhdmVuYW1lIHRv
IHdvcmtlcm5hbWUgaW4gc3RlcHMucHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA2MTAz
YjIwMGY3NzMyNTZjN2NkYmQzMTIzMjA5MWNlYjgxYTkwODFjLi44ODk4YzMwMjQ5NzM0NWU5NzRj
MzE4ZjFiYzBlMDVkZWQ5ZWIxYTQ3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0yOCwx
NyArMjgsMjQgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2lt
cG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tV
UkxTY2hlbWVIYW5kbGVyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+
CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dL
SW5zcGVjdG9yRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JQcml2YXRl
Rm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAKKyNpbXBvcnQgPHd0Zi9EZWJ1Z1V0aWxpdGllcy5oPgorCiAjaWYgUExB
VEZPUk0oTUFDKQogCiBAY2xhc3MgSW5zcGVjdG9yRGVsZWdhdGU7CitAY2xhc3MgU2ltcGxlVVJM
U2NoZW1lSGFuZGxlcjsKIAogc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxs
ZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0g
ZmFsc2U7CkBAIC00Niw5ICs1MywzOCBAQCBzdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRW5hYmxl
ZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkRp
c2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91bGRDYWxs
SW5zcGVjdG9yQ2xvc2VSZWVudHJhbnRseSA9IGZhbHNlOwogc3RhdGljIGJvb2wgb3BlblVSTEV4
dGVybmFsbHlDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNvbmZpZ3VyYXRpb25Gb3JEZWJ1
Z2dhYmxlQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzdGFydFVSTFNjaGVtZVRhc2tDYWxs
ZWQgPSBmYWxzZTsKKworc3RhdGljIFJldGFpblB0cjxTaW1wbGVVUkxTY2hlbWVIYW5kbGVyPiBz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyOwogc3RhdGljIFJldGFpblB0cjxpZCA8X1dLSW5zcGVjdG9y
RGVsZWdhdGU+PiBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZTsKIHN0YXRpYyBSZXRhaW5QdHI8TlNV
Ukw+IHVybFRvT3BlbjsKIAorQGludGVyZmFjZSBTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIDogTlNP
YmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBO
U1VSTCAqZXhwZWN0ZWRVUkw7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTaW1wbGVVUkxTY2hl
bWVIYW5kbGVyCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVS
TFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBpZiAoX2V4cGVj
dGVkVVJMKQorICAgICAgICBFWFBFQ1RfU1RSRVEoX2V4cGVjdGVkVVJMLmFic29sdXRlU3RyaW5n
LlVURjhTdHJpbmcsIHRhc2sucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7
CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
InRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEgdGV4dEVuY29kaW5nTmFtZTpuaWxd
KTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgIFt0
YXNrIGRpZFJlY2VpdmVEYXRhOltOU0RhdGEgZGF0YVdpdGhCeXRlczoiMSIgbGVuZ3RoOjFdXTsK
KyAgICBbdGFzayBkaWRGaW5pc2hdOworCisgICAgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0g
dHJ1ZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxT
Y2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7Cit9CisKK0BlbmQKKwogQGlu
dGVyZmFjZSBJbnNwZWN0b3JEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JEZWxlZ2F0
ZT4KIEBlbmQKIApAQCAtNzAsNiArMTA2LDE2IEBAIC0gKHZvaWQpaW5zcGVjdG9yOihfV0tJbnNw
ZWN0b3IgKilpbnNwZWN0b3Igb3BlblVSTEV4dGVybmFsbHk6KE5TVVJMICopdXJsCiAgICAgb3Bl
blVSTEV4dGVybmFsbHlDYWxsZWQgPSB0cnVlOwogfQogCistIChfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uICopaW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IgY29uZmlndXJhdGlv
bkZvckRlYnVnZ2FibGU6KF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvICopZGVidWdnYWJsZUlu
Zm8KK3sKKyAgICBjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZUNhbGxlZCA9IHRydWU7CisKKyAg
ICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gW1tTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIGFsbG9j
XSBpbml0XTsKKyAgICBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gaW5zcGVj
dG9yQ29uZmlndXJhdGlvbiA9IFtbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF07CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFy
ZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKKyAgICBy
ZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gYXV0b3JlbGVhc2VdOworfQorCiBAZW5kCiAK
IEBpbnRlcmZhY2UgVUlEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS1VJRGVsZWdhdGU+CkBAIC04Niw4
ICsxMzIsMTAgQEAgLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRh
Y2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW4KIAogICAgIEVYUEVDVF9FUSh3ZWJW
aWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CiAKLSAgICBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0
ZSA9IFtJbnNwZWN0b3JEZWxlZ2F0ZSBuZXddOwotICAgIFtpbnNwZWN0b3Igc2V0RGVsZWdhdGU6
c2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOworICAgIGlmICghaW5zcGVjdG9yLmRlbGVn
YXRlKSB7CisgICAgICAgIHNoYXJlZEluc3BlY3RvckRlbGVnYXRlID0gW0luc3BlY3RvckRlbGVn
YXRlIG5ld107CisgICAgICAgIFtpbnNwZWN0b3Igc2V0RGVsZWdhdGU6c2hhcmVkSW5zcGVjdG9y
RGVsZWdhdGUuZ2V0KCldOworICAgIH0KIAogICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2Fs
bGVkID0gdHJ1ZTsKIH0KQEAgLTE2Myw2ICsyMTEsNyBAQCBURVNUKFdLSW5zcGVjdG9yRGVsZWdh
dGUsIFNob3dVUkxFeHRlcm5hbGx5KQogICAgIHVybFRvT3BlbiA9IFtOU1VSTCBVUkxXaXRoU3Ry
aW5nOkAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iXTsKIAogICAgIC8vIENoZWNrIHRoZSBjYXNl
IHdoZXJlIHRoZSBsb2FkIGlzIGludGVyY2VwdGVkIGJ5IHRoZSBuYXZpZ2F0aW9uIGRlbGVnYXRl
LgorICAgIG9wZW5VUkxFeHRlcm5hbGx5Q2FsbGVkID0gZmFsc2U7CiAgICAgW1t3ZWJWaWV3IF9p
bnNwZWN0b3JdIF9vcGVuVVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6dXJsVG9PcGVuLmdldCgpIHVz
ZUZyb250ZW5kQVBJOk5PXTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9wZW5VUkxF
eHRlcm5hbGx5Q2FsbGVkKTsKIApAQCAtMTcxLDQgKzIyMCwzOSBAQCBURVNUKFdLSW5zcGVjdG9y
RGVsZWdhdGUsIFNob3dVUkxFeHRlcm5hbGx5KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmb3BlblVSTEV4dGVybmFsbHlDYWxsZWQpOwogfQogCisvLyBGSVhNRTogcmUtZW5hYmxpbmcg
dGhpcyB0ZXN0IGNhc2UgaXMgYmxvY2tlZCwgdHJhY2tpbmcgdGhpcyB0YXNrIGluIDxyZGFyOi8v
cHJvYmxlbS83MDUwNTI3Mj4uCitURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIERJU0FCTEVEX0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24pCit7CisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxl
Z2F0ZSBuZXddKTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQo
KV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdl
IHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9w
PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5j
b20vIl1dOworCisgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcuZ2V0KCkuX2lzQmVpbmdJbnNwZWN0
ZWQpOworCisgICAgLy8gVGhpcyBoYXMgdG8gaGFwcGVuIGJlZm9yZSBjYWxsaW5nIC1zaG93LiBJ
ZiB3ZSBhdHRhY2ggaW4KKyAgICAvLyAtd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3Rvcjos
IGFzIHdpdGggb3RoZXIgdGVzdHMsIGl0IGlzIHRvbyBsYXRlCisgICAgLy8gYmVjYXVzZSB0aGUg
ZnJvbnRlbmQgd2VidmlldyBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuCisgICAgYXV0byBpbnNw
ZWN0b3JEZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckRlbGVnYXRlIG5ld10pOworICAgIFtb
d2ViVmlldyBfaW5zcGVjdG9yXSBzZXREZWxlZ2F0ZTppbnNwZWN0b3JEZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gc2hvd107CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZUNhbGxlZCk7CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAg
ICAvLyBGSVhNRTogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcidzIG5hdmlnYXRpb24gZGVsZWdh
dGUgY2FuY2VscyBhbGwgbWFpbiBmcmFtZQorICAgIC8vIGxvYWRzIHRoYXQgYXJlIG5vdCB0aGUg
V2ViIEluc3BlY3RvciBwYWdlLiBTbywgdGhpcyBjYW5ub3QgYmUgZnVsbHkgdGVzdGVkIHVudGls
CisgICAgLy8gd2UgY2FuIHVzZWQgdGhlIGNyZXRlVGFiIEFQSSB0byBsb2FkIHRoZSBjdXN0b20g
VVJMIHNjaGVtZSByZXNvdXJjZSBpbiBhbiBpZnJhbWUuCisgICAgdXJsVG9PcGVuID0gW05TVVJM
IFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4xIl07CisgICAgc2hhcmVkVVJMU2NoZW1lSGFu
ZGxlci5nZXQoKS5leHBlY3RlZFVSTCA9IHVybFRvT3Blbi5nZXQoKTsKKyAgICBbW3dlYlZpZXcg
X2luc3BlY3Rvcl0gX29wZW5VUkxFeHRlcm5hbGx5Rm9yVGVzdGluZzp1cmxUb09wZW4uZ2V0KCkg
dXNlRnJvbnRlbmRBUEk6Tk9dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRV
UkxTY2hlbWVUYXNrQ2FsbGVkKTsKKworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBjbG9zZV07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ3aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNh
bGxlZCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412010</attachid>
            <date>2020-10-21 11:05:14 -0700</date>
            <delta_ts>2020-10-21 15:41:14 -0700</delta_ts>
            <desc>Patch v2.1</desc>
            <filename>bug-217896-20201021110514.patch</filename>
            <type>text/plain</type>
            <size>55665</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4NzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGY0OWI5ZGM0YThlNjM4M2Zj
MDk4YWFjMWFlZTM4MjRkODU4MWEzZDcuLjQ2NThkM2JlZGYwNDY4ZmU2OWY1NmU0ZGZjOWM1MjFj
ZTc2OWU5YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODggQEAKKzIwMjAtMTAtMTggIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gY2xpZW50
LWNvbnRyb2xsZWQgbG9jYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBsb2Fk
aW5nCisgICAgICAgIG9mIGV4dGVuc2lvbiByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1l
IHN1Y2ggYXMgd2ViLWV4dGVuc2lvbjovLy4KKworICAgICAgICBUaGlzIGNvbmZpZ3VyYXRpb24g
b2JqZWN0IGlzIHVzZWQgaW4gdHdvIGRpZmZlcmVudCBTUEkgKGxvY2FsIGFuZCByZW1vdGUgY2Fz
ZXMpOgorCisgICAgICAgIC0gQXMgcGFydCBvZiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgdG8gcmV0
cmlldmUgYSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGdpdmVuIGEgX1dLSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm8uCisgICAgICAgIC0gQXMgYW4gYXJndW1lbnQgdG8gdGhlIF9XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRpYWxpemVyLiBJdCdzIHVzZWQgbGF0ZXIgYXMg
bmVlZGVkLgorCisgICAgICAgIE5ldyBBUEkgdGVzdDogV0tJbnNwZWN0b3JEZWxlZ2F0ZS5JbnNw
ZWN0b3JDb25maWd1cmF0aW9uLgorCisgICAgICAgICogU291cmNlc0NvY29hLnR4dDoKKyAgICAg
ICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBm
aWxlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tOiBBZGRlZC4K
KyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgt
W19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIF9hcGlPYmplY3RdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmZvclVSTFNjaGVtZTpdKToKKyAgICAg
ICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRp
b246XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gY29weVdpdGhab25l
Ol0pOgorICAgICAgICBDcmVhdGUgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbmQgYWRkIGEg
bWV0aG9kIHRvIHJlZ2lzdGVyIFdLVVJMU2NoZW1lSGFuZGxlcnMuCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06
CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKyAgICAgICAgQWRkIG5ldyBBUEkg
b2JqZWN0IHR5cGVzLiBBZGQgbWlzc2luZyBJbnNwZWN0b3JFeHRlbnNpb24uCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAoQVBJOjpJbnNw
ZWN0b3JDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW06CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Oklu
c3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dh
YmxlKToKKyAgICAgICAgQWRkIG5ldyBjbGllbnQvZGVsZWdhdGUgbWV0aG9kIHRvIGZldGNoIGFu
IGluc3BlY3RvciBjb25maWd1cmF0aW9uIGFzIG5lZWRlZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyIGluaXRXaXRoQ29uZmlndXJhdGlvbjpdKTogUmVuYW1lZCBmcm9t
IC1pbml0LgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBp
bml0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyIGxvYWRGb3JEZWJ1Z2dhYmxlVHlwZTpiYWNrZW5kQ29tbWFuZHNVUkw6XSk6CisgICAg
ICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGNvbmZpZ3VyYXRpb25G
b3JEZWJ1Z2dhYmxlOl0pOgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlciBfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTpdKToKKyAgICAgICAgU3RvcmUg
YSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFuZCBwcm92aWRlIGl0IHdoZW4gYXNrZWQgYnkg
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9y
L1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdl
Ykluc3BlY3RvclByb3h5Ojpsb2FkKToKKyAgICAgICAgU3RvcmUgbV9kZWJ1Z2dhYmxlSW5mbyBi
ZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UgYW5kIHdpbmRvdy4gSXQncyB1c2VkIGZyb20gaW5zaWRl
CisgICAgICAgIHBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93IHRvIHBhc3MgYXMg
YW4gYXJndW1lbnQgdG8gdGhlIGRlbGVnYXRlIG1ldGhvZC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cpOgorICAgICAgICBPYnRhaW4gYSBjb25maWd1cmF0aW9uIGFuZCB1c2UgaXQg
dG8gaW5pdGlhbGl6ZSB0aGUgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAg
ICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2Up
OgorICAgICAgICBDcmVhdGUgYSBjb25maWd1cmF0aW9uIGFuZCB1c2UgaXQgdG8gaW5pdGlhbGl6
ZSB0aGUgV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAg
ICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRXaXRoQ29uZmlndXJhdGlvbjppbnNw
ZWN0ZWRQYWdlOl0pOgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZp
ZXddKToKKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3Q29uZmln
dXJhdGlvbl0pOiBSZW5hbWVkIGZyb20gLWNvbmZpZ3VyYXRpb24uCisgICAgICAgICgtW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOl0pOiBEZWxldGVkLgor
ICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGNvbmZpZ3VyYXRpb25dKTogRGVs
ZXRlZC4KKyAgICAgICAgQXBwbHkgdGhlIFVSTCBzY2hlbWUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBp
biB0aGUgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiB0byB0aGUKKyAgICAgICAgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi4KKwogMjAyMC0xMC0yMCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc10gU29tZSBXZWJBdWRpbyBsYXlv
dXQgdGVzdHMgZ2VuZXJhdGUgc3RyYW5nZSBub2lzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElP
YmplY3QuaAppbmRleCA0NTdjMjYyMmFmMWFiZGEzZGZlNjM3NzBlMjcxNGQxMmY3YzdjNDhmLi42
ZDA2NTY0NWRjZWU2MmU1OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgICAgICBH
cmFtbWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJhc2UsCiAgICAgICAgIEluc3BlY3RvciwK
KyAgICAgICAgSW5zcGVjdG9yQ29uZmlndXJhdGlvbiwKICAgICAgICAgS2V5VmFsdWVTdG9yYWdl
TWFuYWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE1lc3NhZ2VMaXN0
ZW5lciwKQEAgLTM4MCw2ICszODEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQ
STo6T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpHcmFtbWFyRGV0
YWlsLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlLAogICAgICAgICBB
UEk6Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6
SW5zcGVjdG9yQ29uZmlndXJhdGlvbiwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OktleVZh
bHVlU3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYUNhY2hl
TWFuYWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0ZW5lciwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAxNzMwYmQ0OTNmZDBiNDZk
ZWVjYzI0N2Q3YzE4MmNkNjgyOGRhNjMxLi5jOTQyMGNkNWYyMGRiMTE5OWEyZmYwYTUzNWNlMDA5
Y2Y5Mjg2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmpl
Y3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03
OSw2ICs3OSw3IEBACiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVz
dFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERl
YnVnRmVhdHVyZUludGVybmFsLmgiCkBAIC0yNjQsNyArMjY1LDExIEBAIHZvaWQqIE9iamVjdDo6
bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlOjpJbnNwZWN0
b3I6CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yIGFsbG9jXTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIAorCisgICAgY2FzZSBUeXBlOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOgor
ICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAg
ICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAgICAgd3JhcHBl
ciA9IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4
IDc5NmRiNjk5NmVlZGZlNWI3ZTkyODAwMTM3MjA1NGNmNjljMzgwNDYuLjE4NzMzNjRjZWE1ZTg3
YjA4ZWY3MTIxNzc3MTliOTdiYjQxZTk3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQyLDYgKzM0Miw3
IEBAIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAogVUlQcm9jZXNzL0FQSS9BUElGcmFt
ZVRyZWVOb2RlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCiBVSVBy
b2Nlc3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuY3BwCitVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUludGVybmFsRGVidWdGZWF0dXJl
LmNwcAogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAogVUlQcm9jZXNzL0FQSS9BUElO
YXZpZ2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmNjlhMmRkMzliMGUx
ZTIwYzFiYmZjMTNhNWQ0NDE1OTM3OTIwYmZkLi45OWJlYTFmYjU5ZTk2ZDZhMDBlZjFiYmEwOGE3
MjRiMWYyODg3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
KysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTYsNiArMjU2LDcgQEAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFeHBlcmltZW50YWxGZWF0dXJlLm1tCiBVSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2Vv
bG9jYXRpb25Qb3NpdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0K
K1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvcldpbmRvdy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUlu
c3BlY3RvckNsaWVudC5oCmluZGV4IGNmMjE5NGQ0ZmUzMDFlYjNkY2VkYTBiYzJjNmFlOTQ2NDU4
Yzk5ZjQuLmNmYmE4NGE3Mjc4MmY1M2I3ZWJhOWFkNjExMzcxZjg1YWY0NzZjNDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYktp
dCB7CkBAIC0zMyw2ICszNCw4IEBAIGNsYXNzIFdlYkluc3BlY3RvclByb3h5OwogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAorY2xhc3MgRGVidWdnYWJsZUluZm87CisKIGNsYXNzIEluc3BlY3RvckNsaWVu
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00MSw2ICs0NCwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFp
bkRpc2FibGVkKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgb3BlblVSTEV4dGVybmFsbHkoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYsIGNvbnN0IFdU
Rjo6U3RyaW5nJiB1cmwpIHsgfQorICAgIHZpcnR1YWwgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYp
CisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVh
dGUoKTsKKyAgICB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41MWZmMzM5MmMxNjc3Y2YwYTcyZjA0MmQyN2VjZTVjYzk0YTdjY2U0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uY3BwCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorCisjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlci5oIgorCituYW1lc3BhY2UgQVBJIHsKKworUmVmPElu
c3BlY3RvckNvbmZpZ3VyYXRpb24+IEluc3BlY3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zcGVjdG9yQ29uZmlndXJhdGlvbik7Cit9CisK
K3ZvaWQgSW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6YWRkVVJMU2NoZW1lSGFuZGxlcihSZWY8V2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiYmIHVybFNjaGVtZUhhbmRsZXIsIGNvbnN0IFdURjo6
U3RyaW5nJiB1cmxTY2hlbWUpCit7CisgICAgbV9jdXN0b21VUkxTY2hlbWVzLmFwcGVuZChzdGQ6
Om1ha2VfcGFpcihXVEZNb3ZlKHVybFNjaGVtZUhhbmRsZXIpLCB1cmxTY2hlbWUpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgQVBJCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkOTVlYjBkNmZj
ZTRjNThjM2NiMjYwNGJhZGQwZGNiMmUxNzZmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwor
fQorCituYW1lc3BhY2UgQVBJIHsKKwordXNpbmcgVVJMU2NoZW1lSGFuZGxlclBhaXIgPSBzdGQ6
OnBhaXI8UmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4sIFdURjo6U3RyaW5nPjsKKwor
Y2xhc3MgSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdElt
cGw8T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZjxJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjcmVhdGUoKTsKKyAgICAKKyAgICB2
b2lkIGFkZFVSTFNjaGVtZUhhbmRsZXIoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4m
JiwgY29uc3QgV1RGOjpTdHJpbmcmIHVybFNjaGVtZSk7CisgICAgY29uc3QgVmVjdG9yPFVSTFNj
aGVtZUhhbmRsZXJQYWlyPiYgdXJsU2NoZW1lSGFuZGxlcnMoKSB7IHJldHVybiBtX2N1c3RvbVVS
TFNjaGVtZXM7IH0KKworcHJpdmF0ZToKKyAgICBWZWN0b3I8VVJMU2NoZW1lSGFuZGxlclBhaXI+
IG1fY3VzdG9tVVJMU2NoZW1lczsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIzNTlmZGM0OTM0OGNiYjBhNDNmNDYyYmJmNTc5
MmU0MzE2NGZjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2Vi
S2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAcHJvdG9j
b2wgV0tVUkxTY2hlbWVIYW5kbGVyOworCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSkpCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gOiBOU09iamVjdCA8
TlNDb3B5aW5nPgorLyoqCisgKiBAYWJzdHJhY3QgU2V0cyB0aGUgVVJMIHNjaGVtZSBoYW5kbGVy
IG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisgKiBAcGFyYW0gdXJsU2NoZW1lSGFu
ZGxlciBUaGUgb2JqZWN0IHRvIHJlZ2lzdGVyLgorICogQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNj
aGVtZSB0aGUgb2JqZWN0IHdpbGwgaGFuZGxlLgorICogQGRpc2N1c3Npb24gVGhpcyBpcyB1c2Vk
IHRvIHJlZ2lzdGVyIGFkZGl0aW9uYWwgc2NoZW1lcyBmb3IgbG9hZGluZyByZXNvdXJjZXMgaW4g
dGhlIGluc3BlY3RvciBwYWdlLAorICogc3VjaCBhcyB0byByZWdpc3RlciBzY2hlbWVzIHVzZWQg
YnkgZXh0ZW5zaW9ucy4gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFuZCByZXN0
cmljdGlvbnMgYXMKKyAqIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiAtW1dLV2Vi
VmlldyBzZXRVUkxTY2hlbWVIbmFkbGVyOmZvclVSTFNjaGVtZTpdLgorICovCistICh2b2lkKXNl
dFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRs
ZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZTsKK0BlbmQKKworTlNfQVNTVU1F
X05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVhMWYy
MzQyZjg4YWE4MjQxN2EzYjcwMzk0Njc2NWJjYWM4MmY5NzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5tbQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKKworI2ltcG9ydCAi
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBUEk6Ok9iamVj
dDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4oc2VsZik7
CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9j
b25maWd1cmF0aW9uLT5BUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246On5JbnNwZWN0b3JDb25m
aWd1cmF0aW9uKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2NvbmZpZ3VyYXRpb247Cit9CisKKy0gKHZvaWQp
c2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2NoZW1lSGFu
ZGxlciBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAgX2NvbmZpZ3Vy
YXRpb24tPmFkZFVSTFNjaGVtZUhhbmRsZXIoV2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29j
b2E6OmNyZWF0ZSh1cmxTY2hlbWVIYW5kbGVyKSwgdXJsU2NoZW1lKTsKK30KKworLSAodm9pZClh
cHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCit7CisgICAgZm9yIChhdXRvIHBhaXIgOiBfY29uZmlndXJhdGlvbi0+dXJsU2No
ZW1lSGFuZGxlcnMoKSkgeworICAgICAgICBhdXRvJiBoYW5kbGVyID0gc3RhdGljX2Nhc3Q8V2Vi
S2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EmPihwYWlyLmZpcnN0LmdldCgpKTsKKyAgICAg
ICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmFwaUhhbmRsZXIo
KSBmb3JVUkxTY2hlbWU6cGFpci5zZWNvbmRdOworICAgIH0KK30KKworLSAoaWQpY29weVdpdGha
b25lOihOU1pvbmUgKil6b25lCit7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqY29u
ZmlndXJhdGlvbiA9IFsoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKVtbc2VsZiBjbGFzc10g
YWxsb2NXaXRoWm9uZTp6b25lXSBpbml0XTsKKworICAgIGZvciAoYXV0byBwYWlyIDogX2NvbmZp
Z3VyYXRpb24tPnVybFNjaGVtZUhhbmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYgaGFuZGxlciA9
IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4ocGFpci5maXJz
dC5nZXQoKSk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFu
ZGxlci5hcGlIYW5kbGVyKCkgZm9yVVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAgICB9CisKKyAg
ICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYjhmZTI5NTBkMWE0YTcyZmMwNjFmYjFk
NjlhMTI2MWM5MGE2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgKQEAgLTAsMCAr
MSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24u
aCIKKworI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiV0tP
YmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3RydWN0IFdyYXBw
ZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiB7CisgICAgdXNpbmcgV3JhcHBl
ckNsYXNzID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAgIEFQSTo6T2Jq
ZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IF9jb25maWd1cmF0aW9uOwor
fQorCistICh2b2lkKWFwcGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqKXdlYlZpZXdDb25maWd1cmF0aW9uOworCitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yRGVsZWdhdGUuaAppbmRleCA1NTIwMWM3ODZiODdjNmNmN2MwOWIyNzA4Yzcz
NzEwYzc0OTI4MDFjLi5iY2JiMjUzN2MwODc1MDczMjZiOWYyYWFmNDgxOWYyZTUxOTMwYzk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
RGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5z
cGVjdG9yRGVsZWdhdGUuaApAQCAtMjcsNiArMjcsOCBAQAogI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgogCiBAY2xhc3MgX1dLSW5zcGVjdG9yOworQGNsYXNzIF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb247CitAY2xhc3MgX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CiAKIEBwcm90
b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSA8TlNPYmplY3Q+CiBAb3B0aW9uYWwKQEAgLTQ4LDQg
KzUwLDEwIEBACiAgKi8KIC0gKHZvaWQpaW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0
b3Igb3BlblVSTEV4dGVybmFsbHk6KE5TVVJMICopdXJsOwogCisvKiEgQGFic3RyYWN0IENhbGxl
ZCB3aGVuIHRoZSBfV0tJbnNwZWN0b3IgaXMgcmVhZHkgdG8gY3JlYXRlIGEgV2ViIEluc3BlY3Rv
ciBpbnN0YW5jZS4gVGhlIGNsaWVudCBjYW4KKyAgICBwcm92aWRlIGEgY3VzdG9tIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBX
ZWIgSW5zcGVjdG9yLgorICAgIEBwYXJhbSBkZWJ1Z2dhYmxlSW5mbyBUaGUgZGVidWdnYWJsZSB0
aGF0IGlzIGFib3V0IHRvIGJlIGluc3BlY3RlZC4KKyAqLworLSAoX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbiAqKWluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIGNvbmZpZ3VyYXRp
b25Gb3JEZWJ1Z2dhYmxlOihfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJ
bmZvOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
CmluZGV4IDU4YjEwMjcwMzI0ZWU5MTczOTMwZjhjN2FkZThiZmNkN2M5ZTQ0ZWUuLjc3N2YwMmYw
YWIzNDYwOWNkOTMxNzJhMDhkMDI5YTgzZmJkY2QxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgIVRBUkdFVF9P
U19JUEhPTkUKIAogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uOwogCiBAcHJvdG9jb2wgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJE
ZWxlZ2F0ZTsKIApAQCAtNTAsNiArNTEsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoMTAu
MTIuMyksIGlvcygxMC4zKSkKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0YWlu
KSBOU1dpbmRvdyAqd2luZG93OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCByZXRh
aW4pIFdLV2ViVmlldyAqd2ViVmlldzsKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmln
dXJhdGlvbjooX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAtICh2
b2lkKWxvYWRGb3JEZWJ1Z2dhYmxlVHlwZTooV0tSZW1vdGVXZWJJbnNwZWN0b3JEZWJ1Z2dhYmxl
VHlwZSlkZWJ1Z2dhYmxlVHlwZSBiYWNrZW5kQ29tbWFuZHNVUkw6KE5TVVJMICopYmFja2VuZENv
bW1hbmRzVVJMOwogLSAodm9pZCljbG9zZTsKIC0gKHZvaWQpc2hvdzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCA2NmJmMjRkZjgyNmRhYThlNzI4
NDI0OGZkMWI3MjhjYjVlYmZmMzQzLi40ZWZhYTliOWI3ZmZmYzhkM2M2MjIxMmZiNmIyMDRmYzli
MGIzMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CkBAIC0yNCwxNiArMjQsMjAgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQg
Il9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaCIKIAogI2lmIFBMQVRGT1JNKE1B
QykKIAogI2ltcG9ydCAiQVBJRGVidWdnYWJsZUluZm8uaCIKKyNpbXBvcnQgIkFQSUluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQgIkRlYnVnZ2FibGVJbmZvRGF0YS5oIgogI2ltcG9y
dCAiUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFs
LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIKIAorTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKwogQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciAoKQogLSAodm9pZClzZW5kTWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdl
OwogLSAodm9pZCljbG9zZUZyb21Gcm9udGVuZDsKQEAgLTYyLDYgKzY2LDExIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIFttX2NvbnRyb2xsZXIgY2xvc2VGcm9tRnJvbnRlbmRdOwogICAgIH0K
KyAgICAKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
Rm9yRGVidWdnYWJsZShBUEk6OkRlYnVnZ2FibGVJbmZvJiBkZWJ1Z2dhYmxlSW5mbykgb3ZlcnJp
ZGUKKyAgICB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNvbmZp
Z3VyYXRpb24mPihbW21fY29udHJvbGxlciBjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTp3cmFw
cGVyKGRlYnVnZ2FibGVJbmZvKV0gX2FwaU9iamVjdF0pOworICAgIH0KIAogcHJpdmF0ZToKICAg
ICBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwpAQCAt
NzIsMTMgKzgxLDE2IEBAIHByaXZhdGU6CiBAaW1wbGVtZW50YXRpb24gX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJLaXQ6OlJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJLaXQ6Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PiBtX3JlbW90ZUluc3BlY3Rv
ckNsaWVudDsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsK
IH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZp
Z3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAg
ICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAg
ICBfY29uZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9uIGNvcHldOworCiAgICAgbV9yZW1vdGVJ
bnNwZWN0b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgp
OwogICAgIG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3Rv
clByb3h5LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwpAQCAtMTI0
LDcgKzEzNiw3IEBAIC0gKHZvaWQpbG9hZEZvckRlYnVnZ2FibGVUeXBlOihXS1JlbW90ZVdlYklu
c3BlY3RvckRlYnVnZ2FibGVUeXBlKWRlYnVnZ2FibGVUeXBlCiAgICAgZGVidWdnYWJsZUluZm8u
dGFyZ2V0UGxhdGZvcm1OYW1lID0gQCJtYWNPUyI7CiAgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0
QnVpbGRWZXJzaW9uID0gQCJVbmtub3duIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRQcm9k
dWN0VmVyc2lvbiA9IEAiVW5rbm93biI7Ci0gICAgZGVidWdnYWJsZUluZm8udGFyZ2V0SXNTaW11
bGF0b3IgPSBmYWxzZTsKKyAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVsYXRvciA9IE5P
OwogICAgIFtzZWxmIGxvYWRGb3JEZWJ1Z2dhYmxlOmRlYnVnZ2FibGVJbmZvIGJhY2tlbmRDb21t
YW5kc1VSTDpiYWNrZW5kQ29tbWFuZHNVUkxdOwogfQogCkBAIC0xNDgsNiArMTYwLDggQEAgLSAo
dm9pZClzZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQogICAgIG1fcmVt
b3RlSW5zcGVjdG9yUHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAor
Ly8gTUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0aG9kcworCiAtICh2b2lk
KXNlbmRNZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICBpZiAoX2Rl
bGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0
b3JWaWV3Q29udHJvbGxlcjpzZW5kTWVzc2FnZVRvQmFja2VuZDopXSkKQEAgLTE2MCw5ICsxNzQs
MTQgQEAgLSAodm9pZCljbG9zZUZyb21Gcm9udGVuZAogICAgICAgICBbX2RlbGVnYXRlIGluc3Bl
Y3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9yRGlkQ2xvc2U6c2VsZl07CiB9CiAKKy0gKF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTooX1dLSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8gKilkZWJ1Z2dhYmxlSW5mbworeworICAgIHJldHVybiBbX2Nv
bmZpZ3VyYXRpb24gY29weV07Cit9CisKIC8vIE1BUks6IF9XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyUHJpdmF0ZSBtZXRob2RzCiAKLS0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dn
aW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCist
ICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9n
Z2luZ0RlbGVnYXRlPiBfTnVsbGFibGUpZGVsZWdhdGUKIHsKICAgICBzZWxmLndlYlZpZXcuX2Rp
YWdub3N0aWNMb2dnaW5nRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBtX3JlbW90ZUluc3BlY3Rv
clByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRlKTsKQEAgLTE3
MCw0ICsxODksNiBAQCAtICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxf
V0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPilkZWxlZ2F0ZQogCiBAZW5kCiAKK05TX0FTU1VN
RV9OT05OVUxMX0VORAorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDNhOWM3MTBh
ZTQ5MGNiNzllNmExNTRkN2YwOTYxNWYxYTg4MGI0NTIuLmU3YTk4NDI3MmY1MzBjNWFiMTQxNmYy
Yzc0YTQxNTM4NjA3YmM3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTI5LDcgKzI5LDkgQEAKIAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAorQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiBAY2xhc3Mg
X1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CitAcHJvdG9jb2wgX1dLRGlhZ25vc3RpY0xvZ2dp
bmdEZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlciAoV0tQcml2YXRlKQogCkBAIC0zNyw2ICszOSw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCiAKIC0gKHZvaWQpbG9hZEZvckRlYnVnZ2FibGU6KF9XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvICopZGVidWdnYWJsZUluZm8gYmFja2VuZENvbW1hbmRzVVJMOihOU1VSTCAqKWJhY2tlbmRD
b21tYW5kc1VSTDsKIAorLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRp
b25Gb3JEZWJ1Z2dhYmxlOihfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJ
bmZvOwogQGVuZAogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXggMDZmOGYxZjc2MmU4OTY4NmZjNWRjM2ZjODkw
ZjEzZTBiMzYzZDMzMy4uZTRjZjVhMmRjMTAyZjU5NmQzYWVmZThjNjQ3YjZmNWFhOWI3OWIwMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJT
dHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcgQEAKIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAK
IEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOworQGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNs
YXNzIFdLV2ViVmlldzsKIAogdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgX1dLVXNlclN0eWxl
TGV2ZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCAwNjg0NDEyYjEzNTFmMzBhNWQ0ODRmOTA5ZDdhNGI5
N2E3MWNhNDI2Li43OTE1ZWEzYjJmNjVkYTQ4Y2Y0ZWE5ODIwMjVhOTNlNGUxOGE3ZmZhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hl
ZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHls
ZVNoZWV0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldElu
dGVybmFsLmgiCiAKICNpbXBvcnQgIkFQSUFycmF5LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3Js
ZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJyYXkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRy
YXMuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5o
CmluZGV4IGQ2NGI0N2IyOTViMTJiZTU3NTRlMmZlNzFkNGYwYzViZTkwYzNmM2QuLjBjYzE0NGM0
NzdlNDc2MGE4NjFhYTZlNTJlNjU0YjI2OGRjNGU1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5o
CkBAIC0yNSw3ICsyNSw5IEBACiAKICNwcmFnbWEgb25jZQogCisjaW1wb3J0ICJBUElEZWJ1Z2dh
YmxlSW5mby5oIgogI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJBUElJ
bnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJXS0ZvdW5kYXRpb24uaCIKICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBAIC01OSw2ICs2MSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViSW5zcGVjdG9yUHJveHkmKTsKICAgICAg
ICAgdm9pZCBicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViSW5zcGVjdG9yUHJveHkmKTsKICAgICAg
ICAgdm9pZCBvcGVuVVJMRXh0ZXJuYWxseShXZWJJbnNwZWN0b3JQcm94eSYsIGNvbnN0IFN0cmlu
ZyYgdXJsKTsKKyAgICAgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYpOwogCiAgICAgICAgIElu
c3BlY3RvckRlbGVnYXRlJiBtX2luc3BlY3RvckRlbGVnYXRlOwogICAgIH07CkBAIC03MCw2ICs3
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaW5zcGVjdG9yRGlkRW5hYmxlQnJvd3NlckRv
bWFpbiA6IDE7CiAgICAgICAgIGJvb2wgaW5zcGVjdG9yRGlkRGlzYWJsZUJyb3dzZXJEb21haW4g
OiAxOwogICAgICAgICBib29sIGluc3BlY3Rvck9wZW5VUkxFeHRlcm5hbGx5IDogMTsKKyAgICAg
ICAgYm9vbCBpbnNwZWN0b3JDb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZSA6IDE7CiAgICAgfSBt
X2RlbGVnYXRlTWV0aG9kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA1Y2Vk
YTE4NTk0MGUwNDc1MDczZmNjZjM4MTI4NDIwNWMxMGJlYTI0Li41YTM0MzYxYjYwMDMwY2JlOGVm
Y2FmNzlmMzY1YmViN2VhMjI3NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0yOCw2
ICsyOCw4IEBACiAKICNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQ
YWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFs
LmgiCiAKQEAgLTU1LDYgKzU3LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6c2V0RGVsZWdh
dGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy5pbnNwZWN0b3JEaWRFbmFibGVCcm93c2VyRG9tYWluID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yRGlkRW5hYmxlQnJvd3NlckRvbWFpbjopXTsK
ICAgICBtX2RlbGVnYXRlTWV0aG9kcy5pbnNwZWN0b3JEaWREaXNhYmxlQnJvd3NlckRvbWFpbiA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvckRpZERpc2Fi
bGVCcm93c2VyRG9tYWluOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3Rvck9wZW5V
UkxFeHRlcm5hbGx5ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5z
cGVjdG9yOm9wZW5VUkxFeHRlcm5hbGx5OildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLmluc3Bl
Y3RvckNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yOmNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOildOwog
fQogCiBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpJbnNwZWN0b3JDbGllbnQo
SW5zcGVjdG9yRGVsZWdhdGUmIGRlbGVnYXRlKQpAQCAtMTAwLDQgKzEwMywxNyBAQCB2b2lkIElu
c3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6Om9wZW5VUkxFeHRlcm5hbGx5KFdlYklu
c3BlY3RvclByb3h5JiwgYwogICAgIFtkZWxlZ2F0ZSBpbnNwZWN0b3I6bV9pbnNwZWN0b3JEZWxl
Z2F0ZS5tX2luc3BlY3Rvci5nZXQoKS5nZXQoKSBvcGVuVVJMRXh0ZXJuYWxseTpbTlNVUkwgVVJM
V2l0aFN0cmluZzp1cmxdXTsKIH0KIAorUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4g
SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6Y29uZmlndXJhdGlvbkZvckRlYnVn
Z2FibGUoQVBJOjpEZWJ1Z2dhYmxlSW5mbyYgZGVidWdnYWJsZUluZm8pCit7CisgICAgaWYgKCFt
X2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLmluc3BlY3RvckNvbmZpZ3VyYXRp
b25Gb3JEZWJ1Z2dhYmxlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKworICAgIGF1dG8mIGRlbGVnYXRlID0gbV9pbnNwZWN0b3JEZWxlZ2F0
ZS5tX2RlbGVnYXRlOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBBUEk6Oklu
c3BlY3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFtbZGVsZWdhdGUgaW5zcGVjdG9yOm1faW5z
cGVjdG9yRGVsZWdhdGUubV9pbnNwZWN0b3IuZ2V0KCkuZ2V0KCkgY29uZmlndXJhdGlvbkZvckRl
YnVnZ2FibGU6d3JhcHBlcihkZWJ1Z2dhYmxlSW5mbyldIF9hcGlPYmplY3RdKTsKK30KKworCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGVjMzEw
ZDhhMzM4OTA1ZDI2YTk0M2RkYTYxOTdmMTBlMjkyYzg5OWYuLmIwNDczOTMxZDczMTBmMjU4ZTli
ZWNjZTcwY2U1MjJjODlhN2U5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNjUs
MTEgKzY1LDExIEBAIHZvaWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnNldERpYWdub3N0aWNM
b2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5Ojpsb2FkKFJlZjxBUEk6OkRlYnVnZ2FibGVJbmZvPiYmIGRlYnVnZ2FibGVJbmZvLCBj
b25zdCBTdHJpbmcmIGJhY2tlbmRDb21tYW5kc1VSTCkKIHsKLSAgICBjcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3coKTsKLQogICAgIG1fZGVidWdnYWJsZUluZm8gPSBXVEZNb3ZlKGRlYnVnZ2Fi
bGVJbmZvKTsKICAgICBtX2JhY2tlbmRDb21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsK
IAorICAgIGNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOworCiAgICAgbV9pbnNwZWN0b3JQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShtX2Rl
YnVnZ2FibGVJbmZvLT5kZWJ1Z2dhYmxlSW5mb0RhdGEoKSwgYmFja2VuZENvbW1hbmRzVVJMKSk7
CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5sb2FkUmVxdWVzdChVUkwoVVJMKCksIFdlYkluc3BlY3Rv
clByb3h5OjppbnNwZWN0b3JQYWdlVVJMKCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5k
ZXggZGViYTBmZWU2MjU2NDU2MjVkNzYzOTZiMmIwNjVhMjEyYmY5MzgwOC4uYThlODkyN2MzNjky
MzczMjI3ODVjOWZmY2VlNTJlYTY1ZDBjYmEwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwogCiBuYW1lc3BhY2UgQVBJIHsK
IGNsYXNzIERlYnVnZ2FibGVJbmZvOworY2xhc3MgSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKIH0K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC02MCw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5SZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBzZW5kTWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgY2xvc2VGcm9tRnJvbnRlbmQoKSA9IDA7CisgICAgdmlydHVhbCBSZWY8QVBJ
OjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZShBUEk6
OkRlYnVnZ2FibGVJbmZvJikgPSAwOwogfTsKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHkgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4sIHB1YmxpYyBJ
UEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5t
bQppbmRleCAyNDU0YWU5NTk0MTA3N2Q0MjQ4Y2U2YTUzN2I5NGUxZjIwZWUwMWJlLi45NGI5YzA4
NmFkY2JiMjJlYWQxYTVjYTY2MjQ5OTMyMjk5Y2IzYzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KQEAgLTEwMyw3ICsxMDMsOSBAQCBXZWJQYWdlUHJveHkqIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygp
CiB7CiAgICAgbV9vYmpDQWRhcHRlciA9IGFkb3B0TlMoW1tXS1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5T2JqQ0FkYXB0ZXIgYWxsb2NdIGluaXRXaXRoUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6dGhp
c10pOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkUGFnZTpudWxscHRyXSk7CisgICAgUmVm
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IG1fY2xpZW50LT5j
b25maWd1cmF0aW9uRm9yRGVidWdnYWJsZShtX2RlYnVnZ2FibGVJbmZvLmNvcHlSZWYoKSk7Cisg
ICAgCisgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoQ29uZmlndXJhdGlvbjp3cmFwcGVyKGNvbmZpZ3VyYXRpb24u
Z2V0KCkpIGluc3BlY3RlZFBhZ2U6bnVsbHB0cl0pOwogICAgIFttX2luc3BlY3RvclZpZXcuZ2V0
KCkgc2V0RGVsZWdhdGU6bV9vYmpDQWRhcHRlci5nZXQoKV07CiAKICAgICBtX3dpbmRvdyA9IFdl
Ykluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVuZFdpbmRvdyhOU1plcm9SZWN0LCBXZWJJbnNw
ZWN0b3JQcm94eTo6SW5zcGVjdGlvblRhcmdldFR5cGU6OlJlbW90ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IDEwNzE5Mjg2NjVlNDllY2M4YTI0NzFkN2YxNDY5YTgw
Y2E2YWQyOTYuLjNhMzQ2ZDQyMWY4YTQyZDE3ZWU0NDRjZTE2NDQ0MDU1YzRjYWY1ZWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0
IDx3dGYvTmFrZWRQdHIuaD4KIAogT0JKQ19DTEFTUyBXS1dlYlZpZXc7CitPQkpDX0NMQVNTIF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2Vi
UGFnZVByb3h5OwpAQCAtNDMsNyArNDQsNyBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBXS1dlYlZpZXcgKndlYlZpZXc7CiBAcHJvcGVy
dHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0
ZT4gZGVsZWdhdGU7CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluc3BlY3RlZFBhZ2U6KE5h
a2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlOworLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24gaW5zcGVjdGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+
KWluc3BlY3RlZFBhZ2U7CiAKICsgKEJPT0wpdmlld0lzSW5zcGVjdG9yV2ViVmlldzooTlNWaWV3
ICopdmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCmluZGV4IDFlYWE5
NDNmMjdhMjdkNjdjNjExZmY2ZDZmYmJmMzYxNjJiZjcxOTcuLjYyNGU2YmI1Mzk2ZTI0NTJjZjFm
NmMwODcxNGM5MTUyYTcwNmJjYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
bW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1w
b3J0ICJXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgor
I2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL1ZlcnNpb25DaGVja3MuaD4KICNpbXBvcnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBA
IC01MiwxMyArNTMsMTUgQEAgQGltcGxlbWVudGF0aW9uIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIgewogICAgIE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PiBfaW5zcGVjdGVkUGFnZTsK
ICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0b3JXS1dlYlZpZXc+IF93ZWJWaWV3OwogICAgIFdlYWtP
YmpDUHRyPGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+PiBfZGVsZWdhdGU7
CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRpb247CiB9CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aEluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2Vi
UGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1
cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBpbnNwZWN0
ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZQogewog
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCisg
ICAgX2NvbmZpZ3VyYXRpb24gPSBbY29uZmlndXJhdGlvbiBjb3B5XTsKICAgICAvLyBUaGUgKGxv
Y2FsKSBpbnNwZWN0ZWQgcGFnZSBpcyBuaWwgaWYgdGhlIGNvbnRyb2xsZXIgaXMgaG9zdGluZyBh
IFJlbW90ZSBXZWIgSW5zcGVjdG9yIHZpZXcuCiAgICAgX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0
ZWRQYWdlOwogCkBAIC04Nyw3ICs5MCw3IEBAIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICAv
LyBDb25zdHJ1Y3QgbGF6aWx5IHNvIHRoZSBjbGllbnQgY2FuIHNldCB0aGUgZGVsZWdhdGUgYmVm
b3JlIHRoZSBXZWJWaWV3IGlzIGNyZWF0ZWQuCiAgICAgaWYgKCFfd2ViVmlldykgewogICAgICAg
ICBOU1JlY3QgaW5pdGlhbEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGgsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmluaXRpYWxXaW5kb3dIZWlnaHQpOwotICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tXS0lu
c3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsRnJhbWUgY29uZmln
dXJhdGlvbjpbc2VsZiBjb25maWd1cmF0aW9uXV0pOworICAgICAgICBfd2ViVmlldyA9IGFkb3B0
TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsRnJh
bWUgY29uZmlndXJhdGlvbjpzZWxmLndlYlZpZXdDb25maWd1cmF0aW9uXSk7CiAgICAgICAgIFtf
d2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZpZXcgc2V0SW5zcGVjdG9yV0tXZWJW
aWV3RGVsZWdhdGU6c2VsZl07CkBAIC0xMDQsNyArMTA3LDcgQEAgLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKICAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIH0KIAotLSAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24KKy0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKil3ZWJWaWV3Q29uZmlndXJh
dGlvbgogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTEyMyw2ICsxMjYsOCBAQCAtIChXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgcHJlZmVyZW5jZXMuX2RpYWdu
b3N0aWNMb2dnaW5nRW5hYmxlZCA9IFlFUzsKIAorICAgIFtfY29uZmlndXJhdGlvbiBhcHBseVRv
V2ViVmlld0NvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV07CisgICAgCiAgICAgaWYg
KCEhX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihp
bnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3BlY3RvcklzVW5kZXJUZXN0OildKSB7CiAgICAgICAg
IGlmIChbX2RlbGVnYXRlIGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9ySXNVbmRlclRl
c3Q6c2VsZl0pIHsKICAgICAgICAgICAgIHByZWZlcmVuY2VzLl9oaWRkZW5QYWdlRE9NVGltZXJU
aHJvdHRsaW5nRW5hYmxlZCA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMThl
M2I3NTRmOWYwZTM2M2IzNjhmNTQ4ZWI4YTQzMGQ1Yzg5OWIyMi4uM2E4M2I4NDg0ZGNlMDNiZjEx
N2YxYzlkM2EyZDA1ZTA4NDcwMGFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0y
OCwxNCArMjgsMjAgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQVBJRGVidWdn
YWJsZUluZm8uaCIKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNsaWVudC5oIgorI2ltcG9ydCAiQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAiR2xvYmFsRmluZEluUGFnZVN0YXRl
LmgiCiAjaW1wb3J0ICJXS0luc3BlY3RvclByaXZhdGVNYWMuaCIKICNpbXBvcnQgIldLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXS1Zp
ZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldl
Ykluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9y
dCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JX
aW5kb3cuaCIKICNpbXBvcnQgPFNlY3VyaXR5SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVQYW5lbC5o
PgpAQCAtMjkxLDcgKzI5Nyw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBs
YXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBOU1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBp
bnNwZWN0ZWRQYWdlKCktPmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iakNBZGFwdGVyLmdl
dCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1l
Ok5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsK
IAotICAgIG1faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBhZ2Uo
KV0pOworICAgIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24g
PSBtX2luc3BlY3RvckNsaWVudC0+Y29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGUoQVBJOjpEZWJ1
Z2dhYmxlSW5mbzo6Y3JlYXRlKGluZm9Gb3JMb2NhbERlYnVnZ2FibGUoKSkpOworICAgIG1faW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciBhbGxvY10gaW5pdFdpdGhDb25maWd1cmF0aW9uOiA6OldlYktpdDo6d3JhcHBlcihjb25maWd1
cmF0aW9uKSBpbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBhZ2UoKV0pOwogICAgIFttX2luc3BlY3Rv
clZpZXdDb250cm9sbGVyLmdldCgpIHNldERlbGVnYXRlOm1fb2JqQ0FkYXB0ZXIuZ2V0KCldOwog
CiAgICAgV2ViUGFnZVByb3h5ICppbnNwZWN0b3JQYWdlID0gW21faW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgd2ViVmlld10tPl9wYWdlLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTE5ZWU5NTU3NTI3YTcwM2E1YmJkNmU2ZjI3
N2IxYWMyZWFlOGI2MS4uMmQ3OWM0ODUxMDA5ZTQ0MmMzZTY5ZTZjYjJjNzRjMjY4OWViOTM5ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xNDE4LDYgKzE0MTgsOSBAQAogCQk5OTI0OUFENTFGMUYxRTU2MDBCNjJGQkIgLyogQXV0b21h
dGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTkyNDlBRDMxRjFGMUUzMzAwQjYyRkJCIC8qIEF1dG9tYXRpb25G
cm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsgfTsKIAkJOTkyNDlBRDYxRjFGMUU1RjAwQjYyRkJC
IC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFENDFGMUYxRTMzMDBCNjJGQkIgLyogQXV0
b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLzsgfTsKIAkJOTk0QkFERjQxRjdENzgxNDAw
QjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi87IH07CisJCTk5NEM2MDQyMjUzQ0E1NDQwMEJE
RjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAgLyogX1dL
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTk5NEM2MDQ1MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKKwkJOTk0QzYwNDcyNTNDQUNCODAwQkRGMDYw
IC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLmggKi87IH07CiAJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3ODQyMCAv
KiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJ
bnB1dERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkzIC8qIFdl
YkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Np
b24uaCAqLzsgfTsKIAkJOTk1NUE2RUYxQzc5ODEwODAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNv
biBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkU5
MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ1MzMsNiArNDUzNiwxMSBAQAogCQk5OTQ2
RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vzc2lvbklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjExRjdENzdFQTAwQjU3
MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDEyNTNDQTU0NDAwQkRG
MDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0NDI1M0NBQkEyMDBCREYwNjAgLyogX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NEM2
MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckNvbmZpZ3VyYXRp
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTUyMjZENDIwN0QxODQ1MDBG
Nzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXRE
aXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5
NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmpzb247IHBhdGggPSBBdXRvbWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03MzI1LDYgKzczMzMsOSBAQAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBGMSAvKiBf
V0tJbnB1dERlbGVnYXRlLmggKi8sCiAJCQkJNUNBRkRFNDIyMTMwODQzNTAwQjFGN0UxIC8qIF9X
S0luc3BlY3Rvci5oICovLAogCQkJCTVDQUZERTQzMjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNw
ZWN0b3IubW0gKi8sCisJCQkJOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAgLyogX1dL
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk5OTRDNjA0NDI1M0NBQkEyMDBCREYw
NjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJOTkxRjQ5
MkQyM0E4MTJDNTAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggKi8sCiAJ
CQkJOTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZv
Lm1tICovLAogCQkJCTk5MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1
Z2dhYmxlSW5mb0ludGVybmFsLmggKi8sCkBAIC05MzE3LDYgKzkzMjgsOCBAQAogCQkJCTUxNDNC
MjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdB
OEE5RDU3MUVGMTE5QUEwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAog
CQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywK
KwkJCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5jcHAgKi8sCisJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50
ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAv
KiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3
RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTA3NTEsNiAr
MTA3NjQsOCBAQAogCQkJCTUxMEY1OTEwMURERTI5NjkwMDQxMkZGNSAvKiBfV0tJY29uTG9hZGlu
Z0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E2NEU1NTE4RjM4RTNDMDBFQjMwRjEg
LyogX1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDUyMTMwODQ2
MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk0QzYwNDIy
NTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk5NEM2MDQ1MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MUY0OTJGMjNBODEyQzYwMDU0
NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg2NCw2ICsxMDg3OSw3
IEBACiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlUGFn
ZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2OTA3OUExOEYzMUNC
MjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0NzI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAw
N0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3
Q0U0RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2Fk
ZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDc2NTQ0N2Y2MWRlOGYzN2Q4MWU4YzU3ZTRkMjcwYzU4YTk2
NTgwMWUuLjAxZmY5ODM0ODcyY2YzMmFlMGI0NjE3NWNmMjAxOTNkZWMyZWU5YjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMC0xMC0yMCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAgICAgICBb
Q29jb2FdIEludHJvZHVjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGZvciBjdXN0b21pemlu
ZyBsb2NhbCBhbmQgcmVtb3RlIFdlYiBJbnNwZWN0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4OTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzcwMzU1OTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRl
Lm1tOgorICAgICAgICAoLVtTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxT
Y2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6
c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW0luc3BlY3RvckRlbGVnYXRlIGluc3Bl
Y3Rvcjpjb25maWd1cmF0aW9uRm9yRGVidWdnYWJsZTpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0
ZSBfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKFRFU1QpOgor
CiAyMDIwLTEwLTIwICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbYnVpbGQud2Via2l0Lm9yZ10gUmVuYW1lIHNsYXZlbmFtZSB0byB3b3JrZXJuYW1lIGlu
IHN0ZXBzLnB5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KaW5kZXggNjEwM2IyMDBmNzczMjU2Yzdj
ZGJkMzEyMzIwOTFjZWI4MWE5MDgxYy4uY2EwZjBjMjNiZjA4OGE0Y2QxNDM0NjM0MmJmMjdmNWI0
ZDJhMDkzYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMjgsOSArMjgsMTMgQEAKICNp
bXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5kbGVy
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrLmg+CiAjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JU
ZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3Bl
Y3RvckRlYnVnZ2FibGVJbmZvLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRGVsZWdh
dGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzksNiArNDMsNyBAQAogI2lmIFBMQVRGT1JN
KE1BQykKIAogQGNsYXNzIEluc3BlY3RvckRlbGVnYXRlOworQGNsYXNzIFNpbXBsZVVSTFNjaGVt
ZUhhbmRsZXI7CiAKIHN0YXRpYyBib29sIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0g
ZmFsc2U7CiBzdGF0aWMgYm9vbCB3aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNl
OwpAQCAtNDYsOSArNTEsMzggQEAgc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJ
bnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIGJyb3dzZXJEb21haW5EaXNhYmxl
ZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgc2hvdWxkQ2FsbEluc3Bl
Y3RvckNsb3NlUmVlbnRyYW50bHkgPSBmYWxzZTsKIHN0YXRpYyBib29sIG9wZW5VUkxFeHRlcm5h
bGx5Q2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBjb25maWd1cmF0aW9uRm9yRGVidWdnYWJs
ZUNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0g
ZmFsc2U7CisKK3N0YXRpYyBSZXRhaW5QdHI8U2ltcGxlVVJMU2NoZW1lSGFuZGxlcj4gc2hhcmVk
VVJMU2NoZW1lSGFuZGxlcjsKIHN0YXRpYyBSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckRlbGVn
YXRlPj4gc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGU7CiBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB1
cmxUb09wZW47CiAKK0BpbnRlcmZhY2UgU2ltcGxlVVJMU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0
IDxXS1VSTFNjaGVtZUhhbmRsZXI+CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgTlNVUkwg
KmV4cGVjdGVkVVJMOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2ltcGxlVVJMU2NoZW1lSGFu
ZGxlcgorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hl
bWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgaWYgKF9leHBlY3RlZFVS
TCkKKyAgICAgICAgRVhQRUNUX1NUUkVRKF9leHBlY3RlZFVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4
U3RyaW5nLCB0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcpOworCisg
ICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVz
cG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJ0ZXh0
L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7Cisg
ICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKyAgICBbdGFzayBk
aWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IjEiIGxlbmd0aDoxXV07CisgICAg
W3Rhc2sgZGlkRmluaXNoXTsKKworICAgIHN0YXJ0VVJMU2NoZW1lVGFza0NhbGxlZCA9IHRydWU7
Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5kCisKIEBpbnRlcmZh
Y2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+CiBA
ZW5kCiAKQEAgLTcwLDYgKzEwNCwxNiBAQCAtICh2b2lkKWluc3BlY3RvcjooX1dLSW5zcGVjdG9y
ICopaW5zcGVjdG9yIG9wZW5VUkxFeHRlcm5hbGx5OihOU1VSTCAqKXVybAogICAgIG9wZW5VUkxF
eHRlcm5hbGx5Q2FsbGVkID0gdHJ1ZTsKIH0KIAorLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
biAqKWluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb25Gb3JE
ZWJ1Z2dhYmxlOihfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbyAqKWRlYnVnZ2FibGVJbmZvCit7
CisgICAgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGVDYWxsZWQgPSB0cnVlOworCisgICAgc2hh
cmVkVVJMU2NoZW1lSGFuZGxlciA9IFtbU2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5p
dF07CisgICAgUmV0YWluUHRyPF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24+IGluc3BlY3RvckNv
bmZpZ3VyYXRpb24gPSBbW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOwor
ICAgIFtpbnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJM
U2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07CisgICAgcmV0dXJu
IFtpbnNwZWN0b3JDb25maWd1cmF0aW9uIGF1dG9yZWxlYXNlXTsKK30KKwogQGVuZAogCiBAaW50
ZXJmYWNlIFVJRGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgpAQCAtODYsOCArMTMw
LDEwIEBAIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluCiAKICAgICBFWFBFQ1RfRVEod2ViVmlldy5f
aW5zcGVjdG9yLCBpbnNwZWN0b3IpOwogCi0gICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBb
SW5zcGVjdG9yRGVsZWdhdGUgbmV3XTsKLSAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJl
ZEluc3BlY3RvckRlbGVnYXRlLmdldCgpXTsKKyAgICBpZiAoIWluc3BlY3Rvci5kZWxlZ2F0ZSkg
eworICAgICAgICBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZSA9IFtJbnNwZWN0b3JEZWxlZ2F0ZSBu
ZXddOworICAgICAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRlbGVn
YXRlLmdldCgpXTsKKyAgICB9CiAKICAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9
IHRydWU7CiB9CkBAIC0xNjMsNiArMjA5LDcgQEAgVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBT
aG93VVJMRXh0ZXJuYWxseSkKICAgICB1cmxUb09wZW4gPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpA
Imh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIl07CiAKICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aGVy
ZSB0aGUgbG9hZCBpcyBpbnRlcmNlcHRlZCBieSB0aGUgbmF2aWdhdGlvbiBkZWxlZ2F0ZS4KKyAg
ICBvcGVuVVJMRXh0ZXJuYWxseUNhbGxlZCA9IGZhbHNlOwogICAgIFtbd2ViVmlldyBfaW5zcGVj
dG9yXSBfb3BlblVSTEV4dGVybmFsbHlGb3JUZXN0aW5nOnVybFRvT3Blbi5nZXQoKSB1c2VGcm9u
dGVuZEFQSTpOT107CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZvcGVuVVJMRXh0ZXJu
YWxseUNhbGxlZCk7CiAKQEAgLTE3MSw0ICsyMTgsMzkgQEAgVEVTVChXS0luc3BlY3RvckRlbGVn
YXRlLCBTaG93VVJMRXh0ZXJuYWxseSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9w
ZW5VUkxFeHRlcm5hbGx5Q2FsbGVkKTsKIH0KIAorLy8gRklYTUU6IHJlLWVuYWJsaW5nIHRoaXMg
dGVzdCBjYXNlIGlzIGJsb2NrZWQsIHRyYWNraW5nIHRoaXMgdGFzayBpbiA8cmRhcjovL3Byb2Js
ZW0vNzA1MDUyNzI+LgorVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBESVNBQkxFRF9JbnNwZWN0
b3JDb25maWd1cmF0aW9uKQoreworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUg
bmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBi
ZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2Jv
ZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJd
XTsKKworICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmdldCgpLl9pc0JlaW5nSW5zcGVjdGVkKTsK
KworICAgIC8vIFRoaXMgaGFzIHRvIGhhcHBlbiBiZWZvcmUgY2FsbGluZyAtc2hvdy4gSWYgd2Ug
YXR0YWNoIGluCisgICAgLy8gLXdlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6LCBhcyB3
aXRoIG90aGVyIHRlc3RzLCBpdCBpcyB0b28gbGF0ZQorICAgIC8vIGJlY2F1c2UgdGhlIGZyb250
ZW5kIHdlYnZpZXcgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLgorICAgIGF1dG8gaW5zcGVjdG9y
RGVsZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JEZWxlZ2F0ZSBuZXddKTsKKyAgICBbW3dlYlZp
ZXcgX2luc3BlY3Rvcl0gc2V0RGVsZWdhdGU6aW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOworCisg
ICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGVDYWxsZWQpOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworCisgICAgLy8g
RklYTUU6IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIncyBuYXZpZ2F0aW9uIGRlbGVnYXRlIGNh
bmNlbHMgYWxsIG1haW4gZnJhbWUKKyAgICAvLyBsb2FkcyB0aGF0IGFyZSBub3QgdGhlIFdlYiBJ
bnNwZWN0b3IgcGFnZS4gU28sIHRoaXMgY2Fubm90IGJlIGZ1bGx5IHRlc3RlZCB1bnRpbAorICAg
IC8vIHdlIGNhbiB1c2VkIHRoZSBjcmVhdGVUYWIgQVBJIHRvIGxvYWQgdGhlIGN1c3RvbSBVUkwg
c2NoZW1lIHJlc291cmNlIGluIGFuIGlmcmFtZS4KKyAgICB1cmxUb09wZW4gPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Rpbmc6bWFpbjEiXTsKKyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVy
LmdldCgpLmV4cGVjdGVkVVJMID0gdXJsVG9PcGVuLmdldCgpOworICAgIFtbd2ViVmlldyBfaW5z
cGVjdG9yXSBfb3BlblVSTEV4dGVybmFsbHlGb3JUZXN0aW5nOnVybFRvT3Blbi5nZXQoKSB1c2VG
cm9udGVuZEFQSTpOT107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZzdGFydFVSTFNj
aGVtZVRhc2tDYWxsZWQpOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIGNsb3NlXTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJndpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVk
KTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412036</attachid>
            <date>2020-10-21 15:41:15 -0700</date>
            <delta_ts>2020-10-21 16:25:19 -0700</delta_ts>
            <desc>Patch v3.0</desc>
            <filename>bug-217896-20201021154114.patch</filename>
            <type>text/plain</type>
            <size>58543</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyYTBjZjVkNDFiNzJlMDJj
OWMyOGMwYTA4YmQ3Njg3MDRhMmM4MDIuLjFlMTZjNjhmNGY1OWQwYTNhYWY4NDM3MzExYTZiNzJj
Y2ZkNWFlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTQgQEAKKzIwMjAtMTAtMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gY2xpZW50
LWNvbnRyb2xsZWQgbG9jYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBsb2Fk
aW5nCisgICAgICAgIG9mIGV4dGVuc2lvbiByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1l
IHN1Y2ggYXMgd2ViLWV4dGVuc2lvbjovLy4KKworICAgICAgICBTY2hlbWUgaGFuZGxlcnMgbmVl
ZCB0byBiZSByZWdpc3RlcmVkIGF0IFdlYlZpZXcgY3JlYXRpb24gdGltZSB2aWEgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi4gSW4KKyAgICAgICAgb3JkZXIgdG8gY29uZmlndXJlIGEgaW5zcGVjdG9y
IHBhZ2Ugc3VtbW9uZWQgZnJvbSB3aXRoaW4gV2ViS2l0IChpLmUuLCBJbnNwZWN0IEVsZW1lbnQg
Y29udGV4dCBtZW51IGl0ZW0pLAorICAgICAgICB3ZSBuZWVkIHRvIGFkZCBhIG1ldGhvZCB0byB0
aGUgVUkgZGVsZWdhdGUgdG8gZ2V0IGEgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIGJl
aW5nIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2Vk
IGluIHR3byBkaWZmZXJlbnQgU1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAg
ICAtIEFzIHBhcnQgb2YgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIGdpdmVuIGEgX1dLSW5zcGVjdG9yLgorICAgICAgICAtIEFzIGFu
IGFyZ3VtZW50IHRvIHRoZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0
aWFsaXplci4gSXQncyB1c2VkIGxhdGVyIGFzIG5lZWRlZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3Q6IFdLSW5zcGVjdG9yRGVsZWdhdGUuSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBfYXBpT2JqZWN0
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgQ3JlYXRlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYW5kIGFkZCBhIG1ldGhvZCB0byByZWdpc3RlciBXS1VSTFNjaGVt
ZUhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09i
amVjdCk6CisgICAgICAgIEFkZCBuZXcgQVBJIG9iamVjdCB0eXBlcy4gQWRkIG1pc3NpbmcgSW5z
cGVjdG9yRXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpz
ZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25m
aWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IpOgorICAgICAgICBBZGQgbmV3IGNsaWVudC9kZWxl
Z2F0ZSBtZXRob2QgdG8gZmV0Y2ggYW4gaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1
cmF0aW9uOl0pOiBSZW5hbWVkIGZyb20gLWluaXQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgbG9hZEZvckRlYnVnZ2FibGVUeXBlOmJhY2tl
bmRDb21tYW5kc1VSTDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGU6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOl0pOgorICAgICAgICBTdG9yZSBhIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYW5kIHBy
b3ZpZGUgaXQgd2hlbiBhc2tlZCBieSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQpOgorICAgICAgICBT
dG9yZSBtX2RlYnVnZ2FibGVJbmZvIGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZSBhbmQgd2luZG93
LiBJdCdzIHVzZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgcGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cgdG8gcGFzcyBhcyBhbiBhcmd1bWVudCB0byB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
IE9idGFpbiBhIGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1cmF0aW9uOmluc3BlY3RlZFBhZ2U6
XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10pOgorICAg
ICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6
IFJlbmFtZWQgZnJvbSAtY29uZmlndXJhdGlvbi4KKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlciBpbml0V2l0aEluc3BlY3RlZFBhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgY29uZmlndXJhdGlvbl0pOiBEZWxldGVkLgorICAg
ICAgICBBcHBseSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVycyByZWdpc3RlcmVkIGluIHRoZSBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uIHRvIHRoZQorICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW06Cisg
ICAgICAgIEZpeCBidWlsZCBwcm9ibGVtcyBjYXVzZWQgYnkgcmVwYXJ0aXRpb25pbmcgb2YgdW5p
ZmllZCBzb3VyY2VzLgorCiAyMDIwLTEwLTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgRG9uJ3QgY3Jhc2ggd2hlbiBkZWFsbG9jYXRpbmcg
V0tXZWJWaWV3IGR1cmluZyBUTFMgaGFuZHNoYWtlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2Jq
ZWN0LmgKaW5kZXggNDU3YzI2MjJhZjFhYmRhM2RmZTYzNzcwZTI3MTRkMTJmN2M3YzQ4Zi4uNmQw
NjU2NDVkY2VlNjJlNTlkNTBkYmVmMzc0MzVhNDlhODBlYjY4MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaApAQCAtMTM2LDYgKzEzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgR3Jh
bW1hckRldGFpbCwKICAgICAgICAgSWNvbkRhdGFiYXNlLAogICAgICAgICBJbnNwZWN0b3IsCisg
ICAgICAgIEluc3BlY3RvckNvbmZpZ3VyYXRpb24sCiAgICAgICAgIEtleVZhbHVlU3RvcmFnZU1h
bmFnZXIsCiAgICAgICAgIE1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAgICBNZXNzYWdlTGlzdGVu
ZXIsCkBAIC0zODAsNiArMzgxLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxBUEk6
Ok9iamVjdDo6VHlwZT4gewogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6R3JhbW1hckRldGFp
bCwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Okljb25EYXRhYmFzZSwKICAgICAgICAgQVBJ
OjpPYmplY3Q6OlR5cGU6Okluc3BlY3RvciwKKyAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Oklu
c3BlY3RvckNvbmZpZ3VyYXRpb24sCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpLZXlWYWx1
ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVkaWFDYWNoZU1h
bmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZXNzYWdlTGlzdGVuZXIsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0gYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KaW5kZXggMTczMGJkNDkzZmQwYjQ2ZGVl
Y2MyNDdkN2MxODJjZDY4MjhkYTYzMS4uYzk0MjBjZDVmMjBkYjExOTlhMmZmMGE1MzVjZTAwOWNm
OTI4NjVhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQpAQCAtNzks
NiArNzksNyBAQAogI2ltcG9ydCAiX1dLRnJhbWVUcmVlTm9kZUludGVybmFsLmgiCiAjaW1wb3J0
ICJfV0tHZW9sb2NhdGlvblBvc2l0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RS
ZXN1bHRJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMjY0LDcgKzI2NSwxMSBAQCB2b2lkKiBPYmplY3Q6Om5l
d09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgIGNhc2UgVHlwZTo6SW5zcGVjdG9y
OgogICAgICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvciBhbGxvY107CiAgICAgICAgIGJyZWFr
OwotICAgICAgICAKKworICAgIGNhc2UgVHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjoKKyAg
ICAgICAgd3JhcHBlciA9IFtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFsbG9jXTsKKyAgICAg
ICAgYnJlYWs7CisKICAgICBjYXNlIFR5cGU6Ok5hdmlnYXRpb246CiAgICAgICAgIHdyYXBwZXIg
PSBbV0tOYXZpZ2F0aW9uIGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA3
OTZkYjY5OTZlZWRmZTViN2U5MjgwMDEzNzIwNTRjZjY5YzM4MDQ2Li4xODczMzY0Y2VhNWU4N2Iw
OGVmNzEyMTc3NzE5Yjk3YmI0MWU5N2M1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTM0Miw2ICszNDIsNyBA
QCBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVU
cmVlTm9kZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSFRUUENvb2tpZVN0b3JlLmNwcAogVUlQcm9j
ZXNzL0FQSS9BUElIaXRUZXN0UmVzdWx0LmNwcAorVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JD
b25maWd1cmF0aW9uLmNwcAogVUlQcm9jZXNzL0FQSS9BUElJbnRlcm5hbERlYnVnRmVhdHVyZS5j
cHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbi5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkRhdGEuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50
eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggZjY5YTJkZDM5YjBlMWUy
MGMxYmJmYzEzYTVkNDQxNTkzNzkyMGJmZC4uOTliZWExZmI1OWU5NmQ2YTAwZWYxYmJhMDhhNzI0
YjFmMjg4NzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cisr
KyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjU2LDYgKzI1Niw3IEBAIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5tbQogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tGcmFtZVRyZWVOb2RlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0dlb2xv
Y2F0aW9uUG9zaXRpb24ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCitV
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0KIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yVGVzdGluZy5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JXaW5kb3cubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9B
UElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MWZmMzM5MmMxNjc3
Y2YwYTcyZjA0MmQyN2VjZTVjYzk0YTdjY2U0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxl
ci5oIgorCituYW1lc3BhY2UgQVBJIHsKKworUmVmPEluc3BlY3RvckNvbmZpZ3VyYXRpb24+IElu
c3BlY3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgSW5zcGVjdG9yQ29uZmlndXJhdGlvbik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ29uZmlndXJh
dGlvbjo6YWRkVVJMU2NoZW1lSGFuZGxlcihSZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVy
PiYmIHVybFNjaGVtZUhhbmRsZXIsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmxTY2hlbWUpCit7Cisg
ICAgbV9jdXN0b21VUkxTY2hlbWVzLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihXVEZNb3ZlKHVybFNj
aGVtZUhhbmRsZXIpLCB1cmxTY2hlbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCisKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRkOTVlYjBkNmZjZTRjNThjM2NiMjYwNGJhZGQwZGNiMmUx
NzZmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktp
dCB7CitjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOworfQorCituYW1lc3BhY2UgQVBJIHsKKwor
dXNpbmcgVVJMU2NoZW1lSGFuZGxlclBhaXIgPSBzdGQ6OnBhaXI8UmVmPFdlYktpdDo6V2ViVVJM
U2NoZW1lSGFuZGxlcj4sIFdURjo6U3RyaW5nPjsKKworY2xhc3MgSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8T2JqZWN0OjpUeXBlOjpJbnNwZWN0
b3JDb25maWd1cmF0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBjcmVhdGUoKTsKKyAgICAKKyAgICB2b2lkIGFkZFVSTFNjaGVtZUhhbmRsZXIo
UmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiwgY29uc3QgV1RGOjpTdHJpbmcmIHVy
bFNjaGVtZSk7CisgICAgY29uc3QgVmVjdG9yPFVSTFNjaGVtZUhhbmRsZXJQYWlyPiYgdXJsU2No
ZW1lSGFuZGxlcnMoKSB7IHJldHVybiBtX2N1c3RvbVVSTFNjaGVtZXM7IH0KKworcHJpdmF0ZToK
KyAgICBWZWN0b3I8VVJMU2NoZW1lSGFuZGxlclBhaXI+IG1fY3VzdG9tVVJMU2NoZW1lczsKK307
CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlD
bGllbnQuaAppbmRleCA3YjRmOTNhYTQyNjU0MWZkYjMxZWM4ODE3NzBiMmYzMzZhZWU4ZjhiLi5h
YTdkODljMDFlNzM1MjBjZTNlZTA0MjI2YjlhZTg1OTcwYmZhYTZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRl
ICJXS1BhZ2UuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkhpdFRlc3RS
ZXN1bHREYXRhLmgiCkBAIC0xOTYsNiArMTk3LDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgd2lsbENsb3NlTG9j
YWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5JikgeyB9CisgICAgdmlydHVhbCBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5JikKKyAgICB7CisgICAgICAgIHJldHVybiBBUEk6Okluc3Bl
Y3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworICAgIH0KKwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
VUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA3ZmNjNGE5MTM2ZjEwNzFkMmJlMjU3MjczY2JjNjkw
YWY2M2ZkMmI3Li5kMWVhZTIwMWU2NTQyZjRmYWI2MDE5ODBkYzY2MTI0OTEzMTk3OTNmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJp
dmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdh
dGVQcml2YXRlLmgKQEAgLTM4LDYgKzM4LDkgQEAKIEBjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50
SW5mbzsKIEBjbGFzcyBfV0tFbGVtZW50QWN0aW9uOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwor
QGNsYXNzIF9XS0luc3BlY3RvcjsKK0BjbGFzcyBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uOwor
QGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOwogCiAjaWYgVEFSR0VUX09TX0lPUwog
CkBAIC0yNDcsNiArMjUwLDEyIEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudToo
TlNNZW51ICopbWVudSBmb3JFbGVtZW50OihfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvICopZWxl
bWVudCB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikoTlNNZW51ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQpKTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wpaGFuZGxlZCBXS19BUElfQVZBSUxBQkxFKG1h
Y29zKDEwLjE0LjQpKTsKIAorLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiB0aGUgX1dLSW5zcGVj
dG9yIGZvciB0aGlzIFdLV2ViVmlldyBpcyBhYm91dCB0byBiZSBkaXNwbGF5ZWQuIFRoZSBjbGll
bnQgY2FuCisgICAgcHJvdmlkZSBhIGN1c3RvbSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIHRo
YXQgc2hvdWxkIGJlIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgV2ViIEluc3BlY3Rvci4KKyAgICBA
cGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIHRoYXQgaXMgYWJvdXQg
dG8gYmUgaW5pdGlhbGl6ZWQuCisgKi8KKy0gKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilf
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0
b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpKTsKKwogLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiBhIFdlYiBJbnNwZWN0b3IgaW5z
dGFuY2UgaXMgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuIFRoaXMgaXMgbm90IGNhbGxlZCBp
biB0aGUgY2FzZSBvZiByZW1vdGUgaW5zcGVjdGlvbi4KICAgICBAcGFyYW0gd2ViVmlldyBUaGUg
V0tXZWJWaWV3IGluc3RhbmNlIGJlaW5nIGluc3BlY3RlZC4KICAgICBAcGFyYW0gaW5zcGVjdG9y
IFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmIzNTlmZGM0OTM0OGNiYjBhNDNm
NDYyYmJmNTc5MmU0MzE2NGZjNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw0
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgor
CitAcHJvdG9jb2wgV0tVUkxTY2hlbWVIYW5kbGVyOworCitXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSkpCitAaW50ZXJmYWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gOiBO
U09iamVjdCA8TlNDb3B5aW5nPgorLyoqCisgKiBAYWJzdHJhY3QgU2V0cyB0aGUgVVJMIHNjaGVt
ZSBoYW5kbGVyIG9iamVjdCBmb3IgdGhlIGdpdmVuIFVSTCBzY2hlbWUuCisgKiBAcGFyYW0gdXJs
U2NoZW1lSGFuZGxlciBUaGUgb2JqZWN0IHRvIHJlZ2lzdGVyLgorICogQHBhcmFtIHNjaGVtZSBU
aGUgVVJMIHNjaGVtZSB0aGUgb2JqZWN0IHdpbGwgaGFuZGxlLgorICogQGRpc2N1c3Npb24gVGhp
cyBpcyB1c2VkIHRvIHJlZ2lzdGVyIGFkZGl0aW9uYWwgc2NoZW1lcyBmb3IgbG9hZGluZyByZXNv
dXJjZXMgaW4gdGhlIGluc3BlY3RvciBwYWdlLAorICogc3VjaCBhcyB0byByZWdpc3RlciBzY2hl
bWVzIHVzZWQgYnkgZXh0ZW5zaW9ucy4gVGhpcyBtZXRob2QgaGFzIHRoZSBzYW1lIGJlaGF2aW9y
IGFuZCByZXN0cmljdGlvbnMgYXMKKyAqIGRlc2NyaWJlZCBpbiB0aGUgZG9jdW1lbnRhdGlvbiBv
ZiAtW1dLV2ViVmlldyBzZXRVUkxTY2hlbWVIbmFkbGVyOmZvclVSTFNjaGVtZTpdLgorICovCist
ICh2b2lkKXNldFVSTFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNj
aGVtZUhhbmRsZXIgZm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZTsKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVhMWYyMzQyZjg4YWE4MjQxN2EzYjcwMzk0Njc2NWJjYWM4MmY5NzAKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbi5tbQpAQCAtMCwwICsxLDc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKKwor
I2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCisKK0BpbXBsZW1lbnRhdGlvbiBf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBB
UEk6Ok9iamVjdDo6Y29uc3RydWN0SW5XcmFwcGVyPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4oc2VsZik7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpZGVhbGxvYwor
eworICAgIF9jb25maWd1cmF0aW9uLT5BUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246On5JbnNw
ZWN0b3JDb25maWd1cmF0aW9uKCk7CisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChBUEk6
Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2NvbmZpZ3VyYXRpb247Cit9CisK
Ky0gKHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJs
U2NoZW1lSGFuZGxlciBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lCit7CisgICAg
X2NvbmZpZ3VyYXRpb24tPmFkZFVSTFNjaGVtZUhhbmRsZXIoV2ViS2l0OjpXZWJVUkxTY2hlbWVI
YW5kbGVyQ29jb2E6OmNyZWF0ZSh1cmxTY2hlbWVIYW5kbGVyKSwgdXJsU2NoZW1lKTsKK30KKwor
LSAodm9pZClhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKiljb25maWd1cmF0aW9uCit7CisgICAgZm9yIChhdXRvIHBhaXIgOiBfY29uZmlndXJhdGlv
bi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkgeworICAgICAgICBhdXRvJiBoYW5kbGVyID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EmPihwYWlyLmZpcnN0LmdldCgp
KTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpoYW5kbGVyLmFw
aUhhbmRsZXIoKSBmb3JVUkxTY2hlbWU6cGFpci5zZWNvbmRdOworICAgIH0KK30KKworLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiAqY29uZmlndXJhdGlvbiA9IFsoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKVtbc2Vs
ZiBjbGFzc10gYWxsb2NXaXRoWm9uZTp6b25lXSBpbml0XTsKKworICAgIGZvciAoYXV0byBwYWly
IDogX2NvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhhbmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYg
aGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4o
cGFpci5maXJzdC5nZXQoKSk7CisgICAgICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6aGFuZGxlci5hcGlIYW5kbGVyKCkgZm9yVVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAg
ICB9CisKKyAgICByZXR1cm4gY29uZmlndXJhdGlvbjsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgzYjhmZTI5NTBkMWE0YTcy
ZmMwNjFmYjFkNjlhMTI2MWM5MGE2NjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24uaCIKKworI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorI2lt
cG9ydCAiV0tPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiB7CisgICAgdXNp
bmcgV3JhcHBlckNsYXNzID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitAaW50ZXJmYWNl
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKCkgPFdLT2JqZWN0PiB7CitAcGFja2FnZQorICAg
IEFQSTo6T2JqZWN0U3RvcmFnZTxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IF9jb25maWd1
cmF0aW9uOworfQorCistICh2b2lkKWFwcGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjooV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqKXdlYlZpZXdDb25maWd1cmF0aW9uOworCitAZW5kCisKK05TX0FT
U1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXIuaAppbmRleCA1OGIxMDI3MDMyNGVlOTE3MzkzMGY4YzdhZGU4YmZjZDdjOWU0NGVlLi5iOWE4
YjIwMjAwNTI5YTQyZGE0YWZjMjNkNGZkNGNmMTIwYzg2ODFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjgsNiArMjgsNyBAQAogI2lmICFUQVJH
RVRfT1NfSVBIT05FCiAKIEBjbGFzcyBXS1dlYlZpZXc7CitAY2xhc3MgX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbjsKIAogQHByb3RvY29sIF9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9s
bGVyRGVsZWdhdGU7CiAKQEAgLTQ5LDcgKzUwLDkgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
KDEwLjEyLjMpLCBpb3MoMTAuMykpCiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwg
cmV0YWluKSBOU1dpbmRvdyAqd2luZG93OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5
LCByZXRhaW4pIFdLV2ViVmlldyAqd2ViVmlldzsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFk
b25seSwgY29weSkgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbjsKIAor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbiAqKWNvbmZpZ3VyYXRpb247CiAtICh2b2lkKWxvYWRGb3JEZWJ1Z2dhYmxlVHlwZToo
V0tSZW1vdGVXZWJJbnNwZWN0b3JEZWJ1Z2dhYmxlVHlwZSlkZWJ1Z2dhYmxlVHlwZSBiYWNrZW5k
Q29tbWFuZHNVUkw6KE5TVVJMICopYmFja2VuZENvbW1hbmRzVVJMOwogLSAodm9pZCljbG9zZTsK
IC0gKHZvaWQpc2hvdzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5tbQppbmRleCA2NmJmMjRkZjgyNmRhYThlNzI4NDI0OGZkMWI3MjhjYjVlYmZmMzQzLi40ZTQw
YjhiN2E3NWY1ZjcwMzU1ZDAxZGQ3NTU3Y2RiMWJhYWZjNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCkBAIC0yNCwxNiArMjQsMjAgQEAKICAqLwog
CiAjaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdD
b250cm9sbGVyLmgiCisjaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
clByaXZhdGUuaCIKIAogI2lmIFBMQVRGT1JNKE1BQykKIAogI2ltcG9ydCAiQVBJRGVidWdnYWJs
ZUluZm8uaCIKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKICNpbXBvcnQg
IkRlYnVnZ2FibGVJbmZvRGF0YS5oIgogI2ltcG9ydCAiUmVtb3RlV2ViSW5zcGVjdG9yUHJveHku
aCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvSW50ZXJuYWwuaCIKIAorTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKwogQGludGVyZmFjZSBf
V0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoKQogLSAodm9pZClzZW5kTWVzc2Fn
ZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlOwogLSAodm9pZCljbG9zZUZyb21Gcm9udGVu
ZDsKQEAgLTYyLDYgKzY2LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFttX2NvbnRyb2xs
ZXIgY2xvc2VGcm9tRnJvbnRlbmRdOwogICAgIH0KKyAgICAKKyAgICBSZWY8QVBJOjpJbnNwZWN0
b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5JiBpbnNwZWN0b3IpIG92ZXJyaWRlCisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uJj4oW21fY29udHJvbGxl
ci5jb25maWd1cmF0aW9uIF9hcGlPYmplY3RdKTsKKyAgICB9CiAKIHByaXZhdGU6CiAgICAgX1dL
UmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgKm1fY29udHJvbGxlcjsKQEAgLTcyLDEz
ICs4MSwxNiBAQCBwcml2YXRlOgogQGltcGxlbWVudGF0aW9uIF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyIHsKICAgICBSZWZQdHI8V2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eT4gbV9yZW1vdGVJbnNwZWN0b3JQcm94eTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
OjpfV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudD4gbV9yZW1vdGVJbnNwZWN0b3JDbGll
bnQ7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqX2NvbmZpZ3VyYXRpb247CiB9CiAK
LS0gKGluc3RhbmNldHlwZSlpbml0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0
aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogewogICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAgX2Nv
bmZpZ3VyYXRpb24gPSBbY29uZmlndXJhdGlvbiBjb3B5XTsKKwogICAgIG1fcmVtb3RlSW5zcGVj
dG9yUHJveHkgPSBXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpjcmVhdGUoKTsKICAg
ICBtX3JlbW90ZUluc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8V2ViS2l0OjpfV0tSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eUNsaWVudD4oc2VsZik7CiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94
eS0+c2V0Q2xpZW50KG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50LmdldCgpKTsKQEAgLTEyNCw3ICsx
MzYsNyBAQCAtICh2b2lkKWxvYWRGb3JEZWJ1Z2dhYmxlVHlwZTooV0tSZW1vdGVXZWJJbnNwZWN0
b3JEZWJ1Z2dhYmxlVHlwZSlkZWJ1Z2dhYmxlVHlwZQogICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdl
dFBsYXRmb3JtTmFtZSA9IEAibWFjT1MiOwogICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdldEJ1aWxk
VmVyc2lvbiA9IEAiVW5rbm93biI7CiAgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0UHJvZHVjdFZl
cnNpb24gPSBAIlVua25vd24iOwotICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdldElzU2ltdWxhdG9y
ID0gZmFsc2U7CisgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0SXNTaW11bGF0b3IgPSBOTzsKICAg
ICBbc2VsZiBsb2FkRm9yRGVidWdnYWJsZTpkZWJ1Z2dhYmxlSW5mbyBiYWNrZW5kQ29tbWFuZHNV
Ukw6YmFja2VuZENvbW1hbmRzVVJMXTsKIH0KIApAQCAtMTQ4LDYgKzE2MCw4IEBAIC0gKHZvaWQp
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKICAgICBtX3JlbW90ZUlu
c3BlY3RvclByb3h5LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7CiB9CiAKKy8vIE1B
Uks6IFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IG1ldGhvZHMKKwogLSAodm9pZClzZW5k
TWVzc2FnZVRvQmFja2VuZDooTlNTdHJpbmcgKiltZXNzYWdlCiB7CiAgICAgaWYgKF9kZWxlZ2F0
ZSAmJiBbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdG9yVmll
d0NvbnRyb2xsZXI6c2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KV0pCkBAIC0xNjIsNyArMTc2LDcgQEAg
LSAodm9pZCljbG9zZUZyb21Gcm9udGVuZAogCiAvLyBNQVJLOiBfV0tSZW1vdGVXZWJJbnNwZWN0
b3JWaWV3Q29udHJvbGxlclByaXZhdGUgbWV0aG9kcwogCi0tICh2b2lkKV9zZXREaWFnbm9zdGlj
TG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPilkZWxlZ2F0
ZQorLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTooaWQ8X1dLRGlhZ25vc3Rp
Y0xvZ2dpbmdEZWxlZ2F0ZT4gX051bGxhYmxlKWRlbGVnYXRlCiB7CiAgICAgc2VsZi53ZWJWaWV3
Ll9kaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlID0gZGVsZWdhdGU7CiAgICAgbV9yZW1vdGVJbnNw
ZWN0b3JQcm94eS0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0ZSk7CkBA
IC0xNzAsNCArMTg0LDYgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZToo
aWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGVsZWdhdGUKIAogQGVuZAogCitOU19B
U1NVTUVfTk9OTlVMTF9FTkQKKwogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaAppbmRleCAzYTlj
NzEwYWU0OTBjYjc5ZTZhMTU0ZDdmMDk2MTVmMWE4ODBiNDUyLi5iZmZiYzE3MDQ3MTcwYjI0YjUy
M2YyNGQ2NmI3M2IzNDdiM2NkNGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCkBAIC0zMCw2ICszMCw3IEBACiBOU19BU1NVTUVf
Tk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CitAcHJv
dG9jb2wgX1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTsKIAogQGludGVyZmFjZSBfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAoV0tQcml2YXRlKQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCmluZGV4
IDA2ZjhmMWY3NjJlODk2ODZmYzVkYzNmYzg5MGYxM2UwYjM2M2QzMzMuLmU0Y2Y1YTJkYzEwMmY1
OTZkM2FlZmU4YzY0N2I2ZjVhYTliNzliMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oCkBAIC0yOSw2ICsyOSw3IEBA
CiBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgX1dLVXNlckNvbnRlbnRXb3JsZDsK
K0BjbGFzcyBXS0NvbnRlbnRXb3JsZDsKIEBjbGFzcyBXS1dlYlZpZXc7CiAKIHR5cGVkZWYgTlNf
RU5VTShOU0ludGVnZXIsIF9XS1VzZXJTdHlsZUxldmVsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KaW5kZXggMDY4
NDQxMmIxMzUxZjMwYTVkNDg0ZjkwOWQ3YTRiOTdhNzFjYTQyNi4uNzkxNWVhM2IyZjY1ZGE0OGNm
NGVhOTgyMDI1YTkzZTRlMThhN2ZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQpAQCAtMjcsNiArMjcsNyBAQAog
I2ltcG9ydCAiX1dLVXNlclN0eWxlU2hlZXRJbnRlcm5hbC5oIgogCiAjaW1wb3J0ICJBUElBcnJh
eS5oIgorI2ltcG9ydCAiV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tOU0Fy
cmF5LmgiCiAjaW1wb3J0ICJXS05TVVJMRXh0cmFzLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRl
cm5hbC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4
IGE0OWU2NTM5N2Y0NzU3MjM3MTgzM2M1Zjc1NDg0Y2VlMWQzY2I4ZDguLjhhMDk0NzQ1YzFmMjRi
ZTEwNWRiYjAyYWI5MWUzMDdiMzFkNDg2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgKQEAgLTEyNCw2ICsxMjQsNyBAQCBwcml2YXRlOgogICAgICAgICBi
b29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgRnJhbWVJbmZv
RGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0
ZW5lclByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhjZWVkQmFja2dyb3VuZFJlc291
cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBXS1Jlc291cmNlTGltaXQp
IGZpbmFsOwogICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2Vi
UGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFVSTCYsIEFQSTo6RGF0YSYpIGZpbmFsOworICAgICAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5Jiwg
V2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRBdHRhY2hMb2NhbElu
c3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFsOwogICAgICAg
ICB2b2lkIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3Rv
clByb3h5JikgZmluYWw7CiAjZW5kaWYKQEAgLTIwMSw2ICsyMDIsNyBAQCBwcml2YXRlOgogICAg
ICAgICBib29sIHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZpbGVuYW1lTWltZVR5cGVP
cmlnaW5hdGluZ1VSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQ
YXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdp
bkRlY2lzaW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0NvbmZpZ3VyYXRpb25G
b3JMb2NhbEluc3BlY3RvciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZEF0dGFjaExvY2Fs
SW5zcGVjdG9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0
b3IgOiAxOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQppbmRleCAyODc3OWNlNGJmY2JjOTE5ZmY4YTM3MGUwNmE2ZmUxZTMwOTkwOTQ1Li5kMDMz
OGY4ZDZlM2I5YTEzZGYyYWYxNTNhY2I1ZGViMzhlMWZjZDliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQg
IkFQSUFycmF5LmgiCiAjaW1wb3J0ICJBUElGcmFtZUluZm8uaCIKICNpbXBvcnQgIkFQSUhpdFRl
c3RSZXN1bHQuaCIKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKICNpbXBv
cnQgIkNvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXIuaCIKICNpbXBvcnQgIk1lZGlhVXRpbGl0
aWVzLmgiCiAjaW1wb3J0ICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCkBAIC01NCw2ICs1NSw3IEBA
CiAjaW1wb3J0ICJfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAjaW1wb3J0ICJfV0tGcmFt
ZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwuaCIK
KyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhlbnRpY2F0aW9uUGFu
ZWxJbnRlcm5hbC5oIgogI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWQ2FwdHVyZURldmljZS5oPgpA
QCAtMTMxLDYgKzEzMyw3IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRh
VG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3Vn
Z2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07
CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3Bl
Y3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmNv
bmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKICAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2lsbENsb3NlTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzp3aWxsQ2xvc2VMb2NhbElu
c3BlY3RvcjopXTsKICNlbmRpZgpAQCAtODE3LDYgKzgyMCwxOCBAQCB2b2lkIFVJRGVsZWdhdGU6
OlVJQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdChX
ZWJLaXQ6OgogICAgIH0pLmdldCgpXTsKIH0KIAorUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJh
dGlvbj4gVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
cihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQoreworICAgIGlm
ICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdDb25maWd1cmF0aW9uRm9y
TG9jYWxJbnNwZWN0b3IpCisgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxlZ2F0ZS5tX2RlbGVn
YXRlLmdldCgpOworICAgIGlmICghZGVsZWdhdGUpCisgICAgICAgIHJldHVybiBBUEk6Okluc3Bl
Y3RvckNvbmZpZ3VyYXRpb246OmNyZWF0ZSgpOworCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEFQ
STo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFtbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilk
ZWxlZ2F0ZSBfd2ViVmlldzptX3VpRGVsZWdhdGUubV93ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JM
b2NhbEluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3RvcildIF9hcGlPYmplY3RdKTsKK30KKwogdm9p
ZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVBy
b3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKIHsKICAgICBpZiAoIW1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5LmNwcAppbmRleCBlYzMxMGQ4YTMzODkwNWQyNmE5NDNkZGE2MTk3
ZjEwZTI5MmM4OTlmLi5iMDQ3MzkzMWQ3MzEwZjI1OGU5YmVjY2U3MGNlNTIyYzg5YTdlOWU0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5z
cGVjdG9yUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHAKQEAgLTY1LDExICs2NSwxMSBAQCB2b2lkIFJlbW90
ZVdlYkluc3BlY3RvclByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sIGF2
YWlsYWJsZSkKIAogdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6bG9hZChSZWY8QVBJOjpE
ZWJ1Z2dhYmxlSW5mbz4mJiBkZWJ1Z2dhYmxlSW5mbywgY29uc3QgU3RyaW5nJiBiYWNrZW5kQ29t
bWFuZHNVUkwpCiB7Ci0gICAgY3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7Ci0KICAgICBt
X2RlYnVnZ2FibGVJbmZvID0gV1RGTW92ZShkZWJ1Z2dhYmxlSW5mbyk7CiAgICAgbV9iYWNrZW5k
Q29tbWFuZHNVUkwgPSBiYWNrZW5kQ29tbWFuZHNVUkw7CiAKKyAgICBjcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3coKTsKKwogICAgIG1faW5zcGVjdG9yUGFnZS0+c2VuZChNZXNzYWdlczo6UmVt
b3RlV2ViSW5zcGVjdG9yVUk6OkluaXRpYWxpemUobV9kZWJ1Z2dhYmxlSW5mby0+ZGVidWdnYWJs
ZUluZm9EYXRhKCksIGJhY2tlbmRDb21tYW5kc1VSTCkpOwogICAgIG1faW5zcGVjdG9yUGFnZS0+
bG9hZFJlcXVlc3QoVVJMKFVSTCgpLCBXZWJJbnNwZWN0b3JQcm94eTo6aW5zcGVjdG9yUGFnZVVS
TCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCmluZGV4IGRlYmEwZmVlNjI1NjQ1NjI1ZDc2
Mzk2YjJiMDY1YTIxMmJmOTM4MDguLmMwM2EyY2E1NzBkOWY2ZjgwZWJhYWU1NGZiOTNhZDI1NzBj
YjVmYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1v
dGVXZWJJbnNwZWN0b3JQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oCkBAIC00OCwxMCArNDgsMTIgQEAgY2xhc3Mg
Q2VydGlmaWNhdGVJbmZvOwogCiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIERlYnVnZ2FibGVJbmZv
OworY2xhc3MgSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OwogY2xhc3MgV2ViUGFnZVByb3h5Owog
Y2xhc3MgV2ViVmlldzsKIApAQCAtNjAsNiArNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2Vu
ZE1lc3NhZ2VUb0JhY2tlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNsb3NlRnJvbUZyb250ZW5kKCkgPSAwOworICAgIHZpcnR1YWwgUmVmPEFQSTo6SW5z
cGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eSYpID0gMDsKIH07CiAKIGNsYXNzIFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+LCBwdWJs
aWMgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlN
YWMubW0KaW5kZXggMjQ1NGFlOTU5NDEwNzdkNDI0OGNlNmE1MzdiOTRlMWYyMGVlMDFiZS4uZTQz
YjAyODU0YzJiMmIxYzAyNjU0ZGM2NDE3N2ZmMzAyMTM5NDdjNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1h
Yy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXZWJJbnNw
ZWN0b3JQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgog
I2ltcG9ydCA8U2VjdXJpdHlJbnRlcmZhY2UvU0ZDZXJ0aWZpY2F0ZVBhbmVsLmg+CiAjaW1wb3J0
IDxTZWN1cml0eUludGVyZmFjZS9TRkNlcnRpZmljYXRlVmlldy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9DZXJ0aWZpY2F0ZUluZm8uaD4KQEAgLTEwMyw3ICsxMDQsOCBAQCBXZWJQYWdlUHJveHkqIFJl
bW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRv
dygpCiB7CiAgICAgbV9vYmpDQWRhcHRlciA9IGFkb3B0TlMoW1tXS1JlbW90ZVdlYkluc3BlY3Rv
clByb3h5T2JqQ0FkYXB0ZXIgYWxsb2NdIGluaXRXaXRoUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6
dGhpc10pOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkUGFnZTpudWxscHRyXSk7CisgICAg
UmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IG1fY2xpZW50
LT5jb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKCp0aGlzKTsKKyAgICBtX2luc3BlY3Rv
clZpZXcgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhDb25maWd1cmF0aW9uOiBXZWJLaXQ6OndyYXBwZXIoY29uZmlndXJhdGlvbikgaW5zcGVjdGVk
UGFnZTpudWxscHRyXSk7CiAgICAgW21faW5zcGVjdG9yVmlldy5nZXQoKSBzZXREZWxlZ2F0ZTpt
X29iakNBZGFwdGVyLmdldCgpXTsKIAogICAgIG1fd2luZG93ID0gV2ViSW5zcGVjdG9yUHJveHk6
OmNyZWF0ZUZyb250ZW5kV2luZG93KE5TWmVyb1JlY3QsIFdlYkluc3BlY3RvclByb3h5OjpJbnNw
ZWN0aW9uVGFyZ2V0VHlwZTo6UmVtb3RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVy
LmgKaW5kZXggMTA3MTkyODY2NWU0OWVjYzhhMjQ3MWQ3ZjE0NjlhODBjYTZhZDI5Ni4uM2EzNDZk
NDIxZjhhNDJkMTdlZTQ0NGNlMTY0NDQwNTVjNGNhZjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5o
PgogCiBPQkpDX0NMQVNTIFdLV2ViVmlldzsKK09CSkNfQ0xBU1MgX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC00
Myw3ICs0NCw3IEBAIE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21p
YywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmlldzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3
ZWFrKSBpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIAot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5zcGVjdGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpX
ZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2U7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25m
aWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBpbnNw
ZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsK
IAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JXZWJWaWV3OihOU1ZpZXcgKil2aWV3OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggMWVhYTk0M2YyN2EyN2Q2N2M2MTFm
ZjZkNmZiYmYzNjE2MmJmNzE5Ny4uNjI0ZTZiYjUzOTZlMjQ1MmNmMWY2YzA4NzE0YzkxNTJhNzA2
YmNhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9X
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQpAQCAtNDIsNiArNDIs
NyBAQAogI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbXBvcnQgIldlYkluc3BlY3Rv
clV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNo
ZWNrcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKQEAgLTUyLDEzICs1MywxNSBA
QCBAaW1wbGVtZW50YXRpb24gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB7CiAgICAgTmFrZWRQ
dHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9pbnNwZWN0ZWRQYWdlOwogICAgIFJldGFpblB0cjxX
S0luc3BlY3RvcldLV2ViVmlldz4gX3dlYlZpZXc7CiAgICAgV2Vha09iakNQdHI8aWQgPFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4+IF9kZWxlZ2F0ZTsKKyAgICBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSW5zcGVjdGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3Bl
Y3RlZFBhZ2UKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRy
PFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlCiB7CiAgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfY29uZmlndXJhdGlv
biA9IFtjb25maWd1cmF0aW9uIGNvcHldOwogICAgIC8vIFRoZSAobG9jYWwpIGluc3BlY3RlZCBw
YWdlIGlzIG5pbCBpZiB0aGUgY29udHJvbGxlciBpcyBob3N0aW5nIGEgUmVtb3RlIFdlYiBJbnNw
ZWN0b3Igdmlldy4KICAgICBfaW5zcGVjdGVkUGFnZSA9IGluc3BlY3RlZFBhZ2U7CiAKQEAgLTg3
LDcgKzkwLDcgQEAgLSAoV0tXZWJWaWV3ICopd2ViVmlldwogICAgIC8vIENvbnN0cnVjdCBsYXpp
bHkgc28gdGhlIGNsaWVudCBjYW4gc2V0IHRoZSBkZWxlZ2F0ZSBiZWZvcmUgdGhlIFdlYlZpZXcg
aXMgY3JlYXRlZC4KICAgICBpZiAoIV93ZWJWaWV3KSB7CiAgICAgICAgIE5TUmVjdCBpbml0aWFs
RnJhbWUgPSBOU01ha2VSZWN0KDAsIDAsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmluaXRp
YWxXaW5kb3dXaWR0aCwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd0hl
aWdodCk7Ci0gICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yV0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxGcmFtZSBjb25maWd1cmF0aW9uOltzZWxmIGNv
bmZpZ3VyYXRpb25dXSk7CisgICAgICAgIF93ZWJWaWV3ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9y
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOmluaXRpYWxGcmFtZSBjb25maWd1cmF0aW9u
OnNlbGYud2ViVmlld0NvbmZpZ3VyYXRpb25dKTsKICAgICAgICAgW193ZWJWaWV3IHNldFVJRGVs
ZWdhdGU6c2VsZl07CiAgICAgICAgIFtfd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6c2Vs
Zl07CiAgICAgICAgIFtfd2ViVmlldyBzZXRJbnNwZWN0b3JXS1dlYlZpZXdEZWxlZ2F0ZTpzZWxm
XTsKQEAgLTEwNCw3ICsxMDcsNyBAQCAtICh2b2lkKXNldERlbGVnYXRlOihpZCA8V0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPilkZWxlZ2F0ZQogICAgIF9kZWxlZ2F0ZSA9IGRlbGVn
YXRlOwogfQogCi0tIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgorLSAo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKXdlYlZpZXdDb25maWd1cmF0aW9uCiB7CiAgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKIApAQCAtMTIzLDYgKzEyNiw4IEBAIC0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
Kiljb25maWd1cmF0aW9uCiAKICAgICBwcmVmZXJlbmNlcy5fZGlhZ25vc3RpY0xvZ2dpbmdFbmFi
bGVkID0gWUVTOwogCisgICAgW19jb25maWd1cmF0aW9uIGFwcGx5VG9XZWJWaWV3Q29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpXTsKKyAgICAKICAgICBpZiAoISFfZGVsZWdhdGUgJiYg
W19kZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvclZpZXdDb250
cm9sbGVySW5zcGVjdG9ySXNVbmRlclRlc3Q6KV0pIHsKICAgICAgICAgaWYgKFtfZGVsZWdhdGUg
aW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnNwZWN0b3JJc1VuZGVyVGVzdDpzZWxmXSkgewogICAg
ICAgICAgICAgcHJlZmVyZW5jZXMuX2hpZGRlblBhZ2VET01UaW1lclRocm90dGxpbmdFbmFibGVk
ID0gTk87CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAxOGUzYjc1NGY5ZjBlMzYzYjM2
OGY1NDhlYjhhNDMwZDVjODk5YjIyLi4yMmQzY2NiNGNiMDJjMjUzYjUwN2Y2YTllMmViNGJhYjBh
ZGEwYTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dlYkluc3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTI4LDE0ICsyOCwxOSBAQAog
CiAjaWYgUExBVEZPUk0oTUFDKQogCisjaW1wb3J0ICJBUElJbnNwZWN0b3JDbGllbnQuaCIKKyNp
bXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIkFQSVVJQ2xpZW50
LmgiCiAjaW1wb3J0ICJHbG9iYWxGaW5kSW5QYWdlU3RhdGUuaCIKICNpbXBvcnQgIldLSW5zcGVj
dG9yUHJpdmF0ZU1hYy5oIgogI2ltcG9ydCAiV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiV0tPYmplY3QuaCIKICNpbXBvcnQgIldLVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViSW5zcGVjdG9yVUlNZXNzYWdlcy5o
IgogI2ltcG9ydCAiV2ViUGFnZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dL
SW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvcldpbmRvdy5oIgogI2lt
cG9ydCA8U2VjdXJpdHlJbnRlcmZhY2UvU0ZDZXJ0aWZpY2F0ZVBhbmVsLmg+CkBAIC0yOTEsNyAr
Mjk2LDggQEAgV2ViUGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVG
cm9udGVuZFBhZ2UoKQogICAgIE5TVmlldyAqaW5zcGVjdGVkVmlldyA9IGluc3BlY3RlZFBhZ2Uo
KS0+aW5zcGVjdG9yQXR0YWNobWVudFZpZXcoKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVy
IGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOm1fb2JqQ0FkYXB0ZXIuZ2V0KCkgc2VsZWN0b3I6
QHNlbGVjdG9yKGluc3BlY3RlZFZpZXdGcmFtZURpZENoYW5nZTopIG5hbWU6TlNWaWV3RnJhbWVE
aWRDaGFuZ2VOb3RpZmljYXRpb24gb2JqZWN0Omluc3BlY3RlZFZpZXddOwogCi0gICAgbV9pbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aEluc3BlY3RlZFBhZ2U6aW5zcGVjdGVkUGFnZSgpXSk7CisgICAgUmVm
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGluc3BlY3RlZFBh
Z2UoKS0+dWlDbGllbnQoKS5jb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoKmluc3BlY3Rl
ZFBhZ2UoKSwgICp0aGlzKTsKKyAgICBtX2luc3BlY3RvclZpZXdDb250cm9sbGVyID0gYWRvcHRO
UyhbW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29uZmlndXJhdGlv
bjogV2ViS2l0Ojp3cmFwcGVyKGNvbmZpZ3VyYXRpb24uZ2V0KCkpIGluc3BlY3RlZFBhZ2U6aW5z
cGVjdGVkUGFnZSgpXSk7CiAgICAgW21faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuZ2V0KCkgc2V0
RGVsZWdhdGU6bV9vYmpDQWRhcHRlci5nZXQoKV07CiAKICAgICBXZWJQYWdlUHJveHkgKmluc3Bl
Y3RvclBhZ2UgPSBbbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3XS0+X3BhZ2UuZ2V0
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA1MTllZTk1NTc1MjdhNzAzYTViYmQ2ZTZmMjc3YjFhYzJlYWU4YjYxLi4yZDc5YzQ4NTEw
MDllNDQyYzNlNjllNmNiMmM3NGMyNjg5ZWI5MzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTgsNiArMTQxOCw5IEBACiAJCTk5
MjQ5QUQ1MUYxRjFFNTYwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFE
MzFGMUYxRTMzMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwICov
OyB9OwogCQk5OTI0OUFENjFGMUYxRTVGMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlz
cGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5MjQ5QUQ0MUYxRjFFMzMwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVy
cy5oICovOyB9OwogCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIu
aCAqLzsgfTsKKwkJOTk0QzYwNDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk5NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTk0QzYw
NDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QzYwNDQy
NTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oICov
OyB9OworCQk5OTRDNjA0NzI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0
QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLzsg
fTsKIAkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1MjI2
RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oICovOyB9Owog
CQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNlc3Npb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTVBNkVCMUM3OTgw
QkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9OwogCQk5OTU1QTZFRjFD
Nzk4MTA4MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9t
YXRpb24uanNvbiAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNDUzMyw2ICs0NTM2LDExIEBACiAJCTk5NDZFRjg1MUU3QjAyNjYwMDU0MUU3OSAvKiBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29u
dHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NEJBREYyMUY3
RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYw
IC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5
NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk5NEM2MDQ2
MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDgyNTNGODIwMjAwQkRGMDYwIC8qIEFQ
SUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERp
c3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTIyNkQ1MjA3
RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RTkxQzc5ODBCQjAwRUI2QTkzIC8q
IEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9IEF1dG9tYXRpb24u
anNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczMjUsNiArNzMzMyw5IEBACiAJ
CQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdhdGUuaCAqLywKIAkJ
CQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggKi8sCiAJCQkJNUNB
RkRFNDMyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5tbSAqLywKKwkJCQk5OTRDNjA0
MDI1M0NBNTQzMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAorCQkJ
CTk5NEM2MDQxMjUzQ0E1NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1t
ICovLAorCQkJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk5OTFGNDkyRDIzQTgxMkM1MDA1NDY0MkIgLyogX1dL
SW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAqLywKIAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0
MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEyM0E5
NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAqLywK
QEAgLTkzMTcsNiArOTMyOCw4IEBACiAJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQ
SUljb25Mb2FkaW5nQ2xpZW50LmggKi8sCiAJCQkJN0E4QTlENTcxRUYxMTlBQTAwOTgwMUFFIC8q
IEFQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8sCiAJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3
ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovLAorCQkJCTk5NEM2MDQ4MjUzRjgyMDIwMEJE
RjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLywKKwkJCQk5OTRDNjA0NjI1
M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovLAogCQkJCTMx
QjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5jcHAgKi8s
CiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJl
LmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRI
aXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMDc1MSw2ICsxMDc2NCw4IEBACiAJCQkJNTEwRjU5MTAx
RERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTM3QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NTIxMzA4NDYzMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9y
LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0MjI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk0QzYwNDUyNTNDQUJB
MjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVn
Z2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAwMEIwNkEg
LyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLywKQEAgLTEwODY0LDYgKzEwODc5LDcgQEAKIAkJCQk3QThBOUQ1QzFFRjE0NTk4
MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMxQ0IyMDAxREZGMDQgLyogQVBJSW5qZWN0ZWRC
dW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBBMjNEQkM0RTAw
MDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NEM2
MDQ3MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkzMUIzNjI4RjIxNDFFQTVEMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1
Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjA3MUE0Njc3NjEwMEM3RjE1MiAv
KiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEy
NDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8s
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzNj
NmQ2YWNjNzc3MmFmMjNkMGI1MjI3ZWUyYmVkZWFiMjRiNzc2OC4uNGU3OTY1Zjc5M2Y2MTNjZDQ4
NGRiMTU5MTk3NGU1NTAyY2Y1OTliZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEwLTIxICBCcmlhbiBCdXJn
ICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW50cm9kdWNlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbWl6aW5nIGxvY2FsIGFuZCByZW1vdGUgV2ViIElu
c3BlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxNzg5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAzNTU5MTA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IGZvciBf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLiBEaXNhYmxlZCBmb3Igbm93LCB3aWxsCisgICAgICAg
IGJlIHR1cm5lZCBiYWNrIG9uIHdoZW4gbW9yZSB3ZWIgZXh0ZW5zaW9ucyBBUEkgaGFzIGxhbmRl
ZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bU2ltcGxlVVJMU2NoZW1lSGFuZGxlciB3ZWJWaWV3
OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bU2ltcGxlVVJMU2NoZW1lSGFuZGxl
ciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIF93
ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKC1bVUlE
ZWxlZ2F0ZSBfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjpdKToKKyAgICAgICAgKFRF
U1QpOgorCiAyMDIwLTEwLTIxICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIHdlYmtpdHB5OiBDaGVjayBmb3IgZHVwbGljYXRlZCBrZXlzIGluIGpzb24gZXhwZWN0
YXRpb24gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA2MTAzYjIwMGY3NzMyNTZj
N2NkYmQzMTIzMjA5MWNlYjgxYTkwODFjLi4xMjA2MjY1NjUwNTU1NDZjNGE1YTZiNmZhNzE3MGI2
YjVhMGU2ZWYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0yOCw5ICsyOCwxMyBAQAog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQv
V0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRs
ZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KICNpbXBvcnQgPFdlYktp
dC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZv
clRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5z
cGVjdG9yRGVidWdnYWJsZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+
CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zOSw2ICs0Myw3IEBACiAjaWYgUExBVEZP
Uk0oTUFDKQogCiBAY2xhc3MgSW5zcGVjdG9yRGVsZWdhdGU7CitAY2xhc3MgU2ltcGxlVVJMU2No
ZW1lSGFuZGxlcjsKIAogc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQg
PSBmYWxzZTsKIHN0YXRpYyBib29sIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFs
c2U7CkBAIC00Niw5ICs1MSw1NCBAQCBzdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRW5hYmxlZEZv
ckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkRpc2Fi
bGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91bGRDYWxsSW5z
cGVjdG9yQ2xvc2VSZWVudHJhbnRseSA9IGZhbHNlOwogc3RhdGljIGJvb2wgb3BlblVSTEV4dGVy
bmFsbHlDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNvbmZpZ3VyYXRpb25Gb3JMb2NhbElu
c3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc3RhcnRVUkxTY2hlbWVUYXNrQ2Fs
bGVkID0gZmFsc2U7CisKK3N0YXRpYyBSZXRhaW5QdHI8U2ltcGxlVVJMU2NoZW1lSGFuZGxlcj4g
c2hhcmVkVVJMU2NoZW1lSGFuZGxlcjsKIHN0YXRpYyBSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3Rv
ckRlbGVnYXRlPj4gc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGU7CiBzdGF0aWMgUmV0YWluUHRyPE5T
VVJMPiB1cmxUb09wZW47CiAKK3N0YXRpYyB2b2lkIHJlc2V0R2xvYmFsU3RhdGUoKQoreworICAg
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgd2lsbENsb3NlTG9j
YWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBicm93c2VyRG9tYWluRW5hYmxlZEZvcklu
c3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3Bl
Y3RvckNhbGxlZCA9IGZhbHNlOworICAgIHNob3VsZENhbGxJbnNwZWN0b3JDbG9zZVJlZW50cmFu
dGx5ID0gZmFsc2U7CisgICAgb3BlblVSTEV4dGVybmFsbHlDYWxsZWQgPSBmYWxzZTsKKyAgICBj
b25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBzdGFydFVS
TFNjaGVtZVRhc2tDYWxsZWQgPSBmYWxzZTsKKworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIu
Y2xlYXIoKTsKKyAgICBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZS5jbGVhcigpOworICAgIHVybFRv
T3Blbi5jbGVhcigpOworfQorCitAaW50ZXJmYWNlIFNpbXBsZVVSTFNjaGVtZUhhbmRsZXIgOiBO
U09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWsp
IE5TVVJMICpleHBlY3RlZFVSTDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNpbXBsZVVSTFNj
aGVtZUhhbmRsZXIKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0
VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGlmIChfZXhw
ZWN0ZWRVUkwpCisgICAgICAgIEVYUEVDVF9TVFJFUShfZXhwZWN0ZWRVUkwuYWJzb2x1dGVTdHJp
bmcuVVRGOFN0cmluZywgdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5n
KTsKKworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tO
U1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBl
OkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5p
bF0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAg
W3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiIxIiBsZW5ndGg6MV1d
OworICAgIFt0YXNrIGRpZEZpbmlzaF07CisKKyAgICBzdGFydFVSTFNjaGVtZVRhc2tDYWxsZWQg
PSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVS
TFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCiBA
aW50ZXJmYWNlIEluc3BlY3RvckRlbGVnYXRlIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckRlbGVn
YXRlPgogQGVuZAogCkBAIC03NywxOCArMTI3LDIzIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9u
IFVJRGVsZWdhdGUKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRB
dHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCistIChfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmln
dXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKIHsKLSAg
ICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotICAgIHdpbGxDbG9zZUxv
Y2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0gICAgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJ
bnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLSAgICBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNw
ZWN0b3JDYWxsZWQgPSBmYWxzZTsKLQotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3Is
IGluc3BlY3Rvcik7CisgICAgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yQ2FsbGVkID0g
dHJ1ZTsKIAogICAgIHNoYXJlZEluc3BlY3RvckRlbGVnYXRlID0gW0luc3BlY3RvckRlbGVnYXRl
IG5ld107CiAgICAgW2luc3BlY3RvciBzZXREZWxlZ2F0ZTpzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0
ZS5nZXQoKV07CiAKKyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gW1tTaW1wbGVVUkxTY2hl
bWVIYW5kbGVyIGFsbG9jXSBpbml0XTsKKyAgICBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbj4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbiA9IFtbX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF07CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2No
ZW1lSGFuZGxlcjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRl
c3RpbmciXTsKKyAgICByZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gYXV0b3JlbGVhc2Vd
OworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBFWFBFQ1RfRVEo
d2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworCiAgICAgZGlkQXR0YWNoTG9jYWxJbnNw
ZWN0b3JDYWxsZWQgPSB0cnVlOwogfQogCkBAIC0xMDUsNiArMTYwLDggQEAgQGVuZAogCiBURVNU
KFdLSW5zcGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxiYWNrcykKIHsKKyAg
ICByZXNldEdsb2JhbFN0YXRlKCk7CisKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICB3ZWJWaWV3Q29uZmln
dXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKQEAgLTEyNyw2ICsxODQsOCBAQCBURVNUKFdLSW5zcGVjdG9yRGVs
ZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxiYWNrcykKIAogVEVTVChXS0luc3BlY3RvckRl
bGVnYXRlLCBJbnNwZWN0b3JDbG9zZUNhbGxlZFJlZW50cmFudGx5KQogeworICAgIHJlc2V0R2xv
YmFsU3RhdGUoKTsKKwogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwogICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKV0pOwpAQCAtMTQ5LDYgKzIwOCw4IEBAIFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgSW5z
cGVjdG9yQ2xvc2VDYWxsZWRSZWVudHJhbnRseSkKIAogVEVTVChXS0luc3BlY3RvckRlbGVnYXRl
LCBTaG93VVJMRXh0ZXJuYWxseSkKIHsKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKICAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTE3MSw0ICsy
MzIsMzggQEAgVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBTaG93VVJMRXh0ZXJuYWxseSkKICAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9wZW5VUkxFeHRlcm5hbGx5Q2FsbGVkKTsKIH0K
IAorLy8gRklYTUU6IHJlLWVuYWJsaW5nIHRoaXMgdGVzdCBjYXNlIGlzIGJsb2NrZWQsIHRyYWNr
aW5nIHRoaXMgdGFzayBpbiA8cmRhcjovL3Byb2JsZW0vNzA1MDUyNzI+LgorVEVTVChXS0luc3Bl
Y3RvckRlbGVnYXRlLCBESVNBQkxFRF9JbnNwZWN0b3JDb25maWd1cmF0aW9uKQoreworICAgIHJl
c2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJh
dGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUg
bmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOwor
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBi
ZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2Jv
ZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJd
XTsKKworICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmdldCgpLl9pc0JlaW5nSW5zcGVjdGVkKTsK
KworICAgIGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAg
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9p
bnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY29uZmlndXJh
dGlvbkZvckxvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIC8vIEZJWE1FOiBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyJ3MgbmF2aWdhdGlvbiBkZWxlZ2F0ZSBjYW5jZWxzIGFsbCBt
YWluIGZyYW1lCisgICAgLy8gbG9hZHMgdGhhdCBhcmUgbm90IHRoZSBXZWIgSW5zcGVjdG9yIHBh
Z2UuIFNvLCB0aGlzIGNhbm5vdCBiZSBmdWxseSB0ZXN0ZWQgdW50aWwKKyAgICAvLyB3ZSBjYW4g
dXNlZCB0aGUgY3JlYXRlVGFiIEFQSSB0byBsb2FkIHRoZSBjdXN0b20gVVJMIHNjaGVtZSByZXNv
dXJjZSBpbiBhbiBpZnJhbWUuCisgICAgdXJsVG9PcGVuID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJ0ZXN0aW5nOm1haW4xIl07CisgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxlci5nZXQoKS5leHBl
Y3RlZFVSTCA9IHVybFRvT3Blbi5nZXQoKTsKKyAgICBzdGFydFVSTFNjaGVtZVRhc2tDYWxsZWQg
PSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gX29wZW5VUkxFeHRlcm5hbGx5Rm9y
VGVzdGluZzp1cmxUb09wZW4uZ2V0KCkgdXNlRnJvbnRlbmRBUEk6Tk9dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkKTsKKworICAgIFtbd2Vi
VmlldyBfaW5zcGVjdG9yXSBjbG9zZV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ3
aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShN
QUMpCg==
</data>
<flag name="commit-queue"
          id="428405"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412037</attachid>
            <date>2020-10-21 15:50:53 -0700</date>
            <delta_ts>2020-10-21 16:37:40 -0700</delta_ts>
            <desc>Patch v3.1</desc>
            <filename>bug-217896-20201021155053.patch</filename>
            <type>text/plain</type>
            <size>60721</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyYTBjZjVkNDFiNzJlMDJj
OWMyOGMwYTA4YmQ3Njg3MDRhMmM4MDIuLmI3YWQzMGI1ZjAwMzY0NjJjMGJjNGQ0MjBkNGExNWIz
NmEzOWEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMTAtMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gY2xpZW50
LWNvbnRyb2xsZWQgbG9jYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBsb2Fk
aW5nCisgICAgICAgIG9mIGV4dGVuc2lvbiByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1l
IHN1Y2ggYXMgd2ViLWV4dGVuc2lvbjovLy4KKworICAgICAgICBTY2hlbWUgaGFuZGxlcnMgbmVl
ZCB0byBiZSByZWdpc3RlcmVkIGF0IFdlYlZpZXcgY3JlYXRpb24gdGltZSB2aWEgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi4gSW4KKyAgICAgICAgb3JkZXIgdG8gY29uZmlndXJlIGEgaW5zcGVjdG9y
IHBhZ2Ugc3VtbW9uZWQgZnJvbSB3aXRoaW4gV2ViS2l0IChpLmUuLCBJbnNwZWN0IEVsZW1lbnQg
Y29udGV4dCBtZW51IGl0ZW0pLAorICAgICAgICB3ZSBuZWVkIHRvIGFkZCBhIG1ldGhvZCB0byB0
aGUgVUkgZGVsZWdhdGUgdG8gZ2V0IGEgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIGJl
aW5nIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2Vk
IGluIHR3byBkaWZmZXJlbnQgU1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAg
ICAtIEFzIHBhcnQgb2YgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIGdpdmVuIGEgX1dLSW5zcGVjdG9yLgorICAgICAgICAtIEFzIGFu
IGFyZ3VtZW50IHRvIHRoZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0
aWFsaXplci4gSXQncyB1c2VkIGxhdGVyIGFzIG5lZWRlZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3Q6IFdLSW5zcGVjdG9yRGVsZWdhdGUuSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBfYXBpT2JqZWN0
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgQ3JlYXRlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYW5kIGFkZCBhIG1ldGhvZCB0byByZWdpc3RlciBXS1VSTFNjaGVt
ZUhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09i
amVjdCk6CisgICAgICAgIEFkZCBuZXcgQVBJIG9iamVjdCB0eXBlcy4gQWRkIG1pc3NpbmcgSW5z
cGVjdG9yRXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpz
ZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25m
aWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IpOgorICAgICAgICBBZGQgbmV3IGNsaWVudC9kZWxl
Z2F0ZSBtZXRob2QgdG8gZmV0Y2ggYW4gaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1
cmF0aW9uOl0pOiBSZW5hbWVkIGZyb20gLWluaXQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgbG9hZEZvckRlYnVnZ2FibGVUeXBlOmJhY2tl
bmRDb21tYW5kc1VSTDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGU6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOl0pOgorICAgICAgICBTdG9yZSBhIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYW5kIHBy
b3ZpZGUgaXQgd2hlbiBhc2tlZCBieSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQpOgorICAgICAgICBT
dG9yZSBtX2RlYnVnZ2FibGVJbmZvIGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZSBhbmQgd2luZG93
LiBJdCdzIHVzZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgcGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cgdG8gcGFzcyBhcyBhbiBhcmd1bWVudCB0byB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
IE9idGFpbiBhIGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1cmF0aW9uOmluc3BlY3RlZFBhZ2U6
XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10pOgorICAg
ICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6
IFJlbmFtZWQgZnJvbSAtY29uZmlndXJhdGlvbi4KKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlciBpbml0V2l0aEluc3BlY3RlZFBhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgY29uZmlndXJhdGlvbl0pOiBEZWxldGVkLgorICAg
ICAgICBBcHBseSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVycyByZWdpc3RlcmVkIGluIHRoZSBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uIHRvIHRoZQorICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgU3R1YiBvdXQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGaXggYnVp
bGQgcHJvYmxlbXMgY2F1c2VkIGJ5IHJlcGFydGl0aW9uaW5nIG9mIHVuaWZpZWQgc291cmNlcy4K
KwogMjAyMC0xMC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERvbid0IGNyYXNoIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBkdXJp
bmcgVExTIGhhbmRzaGFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDQ1
N2MyNjIyYWYxYWJkYTNkZmU2Mzc3MGUyNzE0ZDEyZjdjN2M0OGYuLjZkMDY1NjQ1ZGNlZTYyZTU5
ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCiAg
ICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9yLAorICAgICAgICBJbnNwZWN0
b3JDb25maWd1cmF0aW9uLAogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAg
ICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTWVzc2FnZUxpc3RlbmVyLApAQCAtMzgwLDYg
KzM4MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+
IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkdyYW1tYXJEZXRhaWwsCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3IsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1
cmF0aW9uLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6S2V5VmFsdWVTdG9yYWdlTWFuYWdl
ciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxpc3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDE3MzBiZDQ5M2ZkMGI0NmRlZWNjMjQ3ZDdjMTgyY2Q2
ODI4ZGE2MzEuLmM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTc5LDYgKzc5LDcgQEAKICNp
bXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5z
cGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ludGVybmFsRGVidWdGZWF0dXJlSW50ZXJu
YWwuaCIKQEAgLTI2NCw3ICsyNjUsMTEgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90
IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6Okluc3BlY3RvcjoKICAgICAgICAgd3Jh
cHBlciA9IFtfV0tJbnNwZWN0b3IgYWxsb2NdOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisK
KyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIg
PSBbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlv
biBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzk2ZGI2OTk2ZWVkZmU1
YjdlOTI4MDAxMzcyMDU0Y2Y2OWMzODA0Ni4uMTg3MzM2NGNlYTVlODdiMDhlZjcxMjE3NzcxOWI5
N2JiNDFlOTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgVUlQcm9jZXNzL0FQ
SS9BUElGcmFtZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuY3BwCiBV
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSGl0
VGVzdFJlc3VsdC5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5j
cHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25EYXRhLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGY2OWEyZGQzOWIwZTFlMjBjMWJiZmMxM2E1ZDQ0
MTU5Mzc5MjBiZmQuLjk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0V4cGVyaW1lbnRhbEZlYXR1cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJh
bWVUcmVlTm9kZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9u
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmZjMzOTJjMTY3N2NmMGE3MmYwNDJkMjdl
Y2U1Y2M5NGE3Y2NlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaCIKKworI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKworbmFtZXNw
YWNlIEFQSSB7CisKK1JlZjxJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBJbnNwZWN0b3JDb25maWd1
cmF0aW9uOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNv
bmZpZ3VyYXRpb24pOworfQorCit2b2lkIEluc3BlY3RvckNvbmZpZ3VyYXRpb246OmFkZFVSTFNj
aGVtZUhhbmRsZXIoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiB1cmxTY2hlbWVI
YW5kbGVyLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsU2NoZW1lKQoreworICAgIG1fY3VzdG9tVVJM
U2NoZW1lcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZSh1cmxTY2hlbWVIYW5kbGVyKSwg
dXJsU2NoZW1lKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZDk1ZWIwZDZmY2U0YzU4YzNjYjI2MDRiYWRkMGRjYjJlMTc2ZmE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcjsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK3VzaW5nIFVSTFNjaGVt
ZUhhbmRsZXJQYWlyID0gc3RkOjpwYWlyPFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+
LCBXVEY6OlN0cmluZz47CisKK2NsYXNzIEluc3BlY3RvckNvbmZpZ3VyYXRpb24gZmluYWwgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY3Jl
YXRlKCk7CisgICAgCisgICAgdm9pZCBhZGRVUkxTY2hlbWVIYW5kbGVyKFJlZjxXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmxTY2hlbWUpOworICAg
IGNvbnN0IFZlY3RvcjxVUkxTY2hlbWVIYW5kbGVyUGFpcj4mIHVybFNjaGVtZUhhbmRsZXJzKCkg
eyByZXR1cm4gbV9jdXN0b21VUkxTY2hlbWVzOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVS
TFNjaGVtZUhhbmRsZXJQYWlyPiBtX2N1c3RvbVVSTFNjaGVtZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
N2I0ZjkzYWE0MjY1NDFmZGIzMWVjODgxNzcwYjJmMzM2YWVlOGY4Yi4uYWE3ZDg5YzAxZTczNTIw
Y2UzZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgpA
QCAtMTk2LDYgKzE5NywxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQorICAg
IHZpcnR1YWwgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZv
ckxvY2FsSW5zcGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eSYpCisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggN2ZjYzRhOTEzNmYxMDcxZDJiZTI1NzI3M2NiYzY5MGFmNjNmZDJiNy4uZDFl
YWUyMDFlNjU0MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5NzkzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBA
IC0zOCw2ICszOCw5IEBACiBAY2xhc3MgX1dLQWN0aXZhdGVkRWxlbWVudEluZm87CiBAY2xhc3Mg
X1dLRWxlbWVudEFjdGlvbjsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3I7CitAY2xhc3MgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKIAogI2lmIFRBUkdFVF9PU19JT1MKIApAQCAtMjQ3LDYgKzI1
MCwxMiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnU6KE5TTWVudSAqKW1lbnUg
Zm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQgdXNlckluZm86
KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TTWVudSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFBlcmZvcm1EcmFn
T3BlcmF0aW9uOihCT09MKWhhbmRsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSk7
CiAKKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIF9XS0luc3BlY3RvciBmb3IgdGhpcyBX
S1dlYlZpZXcgaXMgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiBUaGUgY2xpZW50IGNhbgorICAgIHBy
b3ZpZGUgYSBjdXN0b20gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBiZSB1
c2VkIHdoZW4gY3JlYXRpbmcgdGhlIFdlYiBJbnNwZWN0b3IuCisgICAgQHBhcmFtIGluc3BlY3Rv
ciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSB0aGF0IGlzIGFib3V0IHRvIGJlIGluaXRpYWxp
emVkLgorICovCistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0
b3IgKilpbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CisKIC8q
ISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGlzIGF0dGFj
aGVkIHRvIHRoaXMgV0tXZWJWaWV3LiBUaGlzIGlzIG5vdCBjYWxsZWQgaW4gdGhlIGNhc2Ugb2Yg
cmVtb3RlIGluc3BlY3Rpb24uCiAgICAgQHBhcmFtIHdlYlZpZXcgVGhlIFdLV2ViVmlldyBpbnN0
YW5jZSBiZWluZyBpbnNwZWN0ZWQuCiAgICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3Bl
Y3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzU5ZmRjNDkzNDhjYmIwYTQzZjQ2MmJiZjU3OTJlNDMx
NjRmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQHByb3RvY29sIFdL
VVJMU2NoZW1lSGFuZGxlcjsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
KQorQGludGVyZmFjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIDogTlNPYmplY3QgPE5TQ29w
eWluZz4KKy8qKgorICogQGFic3RyYWN0IFNldHMgdGhlIFVSTCBzY2hlbWUgaGFuZGxlciBvYmpl
Y3QgZm9yIHRoZSBnaXZlbiBVUkwgc2NoZW1lLgorICogQHBhcmFtIHVybFNjaGVtZUhhbmRsZXIg
VGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyAqIEBwYXJhbSBzY2hlbWUgVGhlIFVSTCBzY2hlbWUg
dGhlIG9iamVjdCB3aWxsIGhhbmRsZS4KKyAqIEBkaXNjdXNzaW9uIFRoaXMgaXMgdXNlZCB0byBy
ZWdpc3RlciBhZGRpdGlvbmFsIHNjaGVtZXMgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGluIHRoZSBp
bnNwZWN0b3IgcGFnZSwKKyAqIHN1Y2ggYXMgdG8gcmVnaXN0ZXIgc2NoZW1lcyB1c2VkIGJ5IGV4
dGVuc2lvbnMuIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhbmQgcmVzdHJpY3Rp
b25zIGFzCisgKiBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgLVtXS1dlYlZpZXcg
c2V0VVJMU2NoZW1lSG5hZGxlcjpmb3JVUkxTY2hlbWU6XS4KKyAqLworLSAodm9pZClzZXRVUkxT
Y2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZv
clVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWU7CitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFmMjM0MmY4
OGFhODI0MTdhM2I3MDM5NDY3NjViY2FjODJmOTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0K
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCisKKyNpbXBvcnQgIldlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbgorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+KHNlbGYpOworICAg
IAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29uZmln
dXJhdGlvbi0+QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjp+SW5zcGVjdG9yQ29uZmlndXJh
dGlvbigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKK3sKKyAgICByZXR1cm4gKl9jb25maWd1cmF0aW9uOworfQorCistICh2b2lkKXNldFVS
TFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIg
Zm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIF9jb25maWd1cmF0aW9u
LT5hZGRVUkxTY2hlbWVIYW5kbGVyKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpj
cmVhdGUodXJsU2NoZW1lSGFuZGxlciksIHVybFNjaGVtZSk7Cit9CisKKy0gKHZvaWQpYXBwbHlU
b1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbgoreworICAgIGZvciAoYXV0byBwYWlyIDogX2NvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhh
bmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYgaGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4ocGFpci5maXJzdC5nZXQoKSk7CisgICAgICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5hcGlIYW5kbGVyKCkgZm9y
VVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAgICB9Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZToo
TlNab25lICopem9uZQoreworICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9j
V2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmb3IgKGF1dG8gcGFpciA6IF9jb25maWd1cmF0
aW9uLT51cmxTY2hlbWVIYW5kbGVycygpKSB7CisgICAgICAgIGF1dG8mIGhhbmRsZXIgPSBzdGF0
aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIuZmlyc3QuZ2V0
KCkpOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
YXBpSGFuZGxlcigpIGZvclVSTFNjaGVtZTpwYWlyLnNlY29uZF07CisgICAgfQorCisgICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2I4ZmUyOTUwZDFhNGE3MmZjMDYxZmIxZDY5YTEy
NjFjOTBhNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisK
KyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldLT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0
b3JhZ2U8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKK30KKwor
LSAodm9pZClhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggNThi
MTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3YzllNDRlZS4uYjlhOGIyMDIwMDUyOWE0MmRh
NGFmYzIzZDRmZDRjZjEyMGM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQog
CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAK
IEBwcm90b2NvbCBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CkBAIC00OSw3ICs1MCw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9z
KDEwLjMpKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHJldGFpbikgTlNXaW5k
b3cgKndpbmRvdzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0YWluKSBXS1dl
YlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiAKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uOwogLSAodm9pZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUpZGVidWdnYWJsZVR5cGUgYmFja2VuZENvbW1hbmRzVVJMOihO
U1VSTCAqKWJhY2tlbmRDb21tYW5kc1VSTDsKIC0gKHZvaWQpY2xvc2U7CiAtICh2b2lkKXNob3c7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNjZi
ZjI0ZGY4MjZkYWE4ZTcyODQyNDhmZDFiNzI4Y2I1ZWJmZjM0My4uNGU0MGI4YjdhNzVmNWY3MDM1
NWQwMWRkNzU1N2NkYjFiYWFmYzQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQpAQCAtMjQsMTYgKzI0LDIwIEBACiAgKi8KIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCiAK
ICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW1w
b3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJEZWJ1Z2dhYmxlSW5m
b0RhdGEuaCIKICNpbXBvcnQgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgi
CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5T
U3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7CkBAIC02Miw2ICs2
NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBbbV9jb250cm9sbGVyIGNsb3NlRnJvbUZy
b250ZW5kXTsKICAgICB9CisgICAgCisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eSYgaW5zcGVjdG9yKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFttX2NvbnRyb2xsZXIuY29uZmlndXJhdGlv
biBfYXBpT2JqZWN0XSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIF9XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyICptX2NvbnRyb2xsZXI7CkBAIC03MiwxMyArODEsMTYgQEAgcHJp
dmF0ZToKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciB7CiAgICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+IG1fcmVtb3Rl
SW5zcGVjdG9yUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6X1dLUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlDbGllbnQ+IG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50OworICAgIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQogCi0tIChpbnN0YW5jZXR5
cGUpaW5pdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIF9jb25maWd1cmF0aW9uID0g
W2NvbmZpZ3VyYXRpb24gY29weV07CisKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7CiAgICAgbV9yZW1vdGVJbnNw
ZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNldENsaWVudCht
X3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CkBAIC0xMjQsNyArMTM2LDcgQEAgLSAodm9p
ZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5
cGUpZGVidWdnYWJsZVR5cGUKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRQbGF0Zm9ybU5hbWUg
PSBAIm1hY09TIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRCdWlsZFZlcnNpb24gPSBAIlVu
a25vd24iOwogICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdldFByb2R1Y3RWZXJzaW9uID0gQCJVbmtu
b3duIjsKLSAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVsYXRvciA9IGZhbHNlOworICAg
IGRlYnVnZ2FibGVJbmZvLnRhcmdldElzU2ltdWxhdG9yID0gTk87CiAgICAgW3NlbGYgbG9hZEZv
ckRlYnVnZ2FibGU6ZGVidWdnYWJsZUluZm8gYmFja2VuZENvbW1hbmRzVVJMOmJhY2tlbmRDb21t
YW5kc1VSTF07CiB9CiAKQEAgLTE0OCw2ICsxNjAsOCBAQCAtICh2b2lkKXNlbmRNZXNzYWdlVG9G
cm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwogfQogCisvLyBNQVJLOiBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCBtZXRob2RzCisKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tl
bmQ6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIGlmIChfZGVsZWdhdGUgJiYgW19kZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvclZpZXdDb250cm9sbGVyOnNl
bmRNZXNzYWdlVG9CYWNrZW5kOildKQpAQCAtMTYyLDcgKzE3Niw3IEBAIC0gKHZvaWQpY2xvc2VG
cm9tRnJvbnRlbmQKIAogLy8gTUFSSzogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJQcml2YXRlIG1ldGhvZHMKIAotLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGVsZWdhdGUKKy0gKHZvaWQpX3Nl
dERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU+IF9OdWxsYWJsZSlkZWxlZ2F0ZQogewogICAgIHNlbGYud2ViVmlldy5fZGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNl
dERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCEhZGVsZWdhdGUpOwpAQCAtMTcwLDQgKzE4NCw2
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAKIEBlbmQKIAorTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggM2E5YzcxMGFlNDkwY2I3OWU2
YTE1NGQ3ZjA5NjE1ZjFhODgwYjQ1Mi4uYmZmYmMxNzA0NzE3MGIyNGI1MjNmMjRkNjZiNzNiMzQ3
YjNjZDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlclByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAogQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOworQHByb3RvY29sIF9XS0RpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaAppbmRleCAwNmY4ZjFmNzYyZTg5
Njg2ZmM1ZGMzZmM4OTBmMTNlMGIzNjNkMzMzLi5lNGNmNWEyZGMxMDJmNTk2ZDNhZWZlOGM2NDdi
NmY1YWE5Yjc5YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaApAQCAtMjksNiArMjksNyBAQAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1VzZXJDb250ZW50V29ybGQ7CitAY2xhc3MgV0tDb250
ZW50V29ybGQ7CiBAY2xhc3MgV0tXZWJWaWV3OwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tVc2VyU3R5bGVMZXZlbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDA2ODQ0MTJiMTM1MWYzMGE1
ZDQ4NGY5MDlkN2E0Yjk3YTcxY2E0MjYuLjc5MTVlYTNiMmY2NWRhNDhjZjRlYTk4MjAyNWE5M2U0
ZTE4YTdmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIl9XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiQVBJQXJyYXkuaCIKKyNpbXBvcnQg
IldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9y
dCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBhNDllNjUzOTdmNDc1
NzIzNzE4MzNjNWY3NTQ4NGNlZTFkM2NiOGQ4Li44YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFl
MzA3YjMxZDQ4NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCkBAIC0xMjQsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJ
bkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRh
dGEmKSBmaW5hbDsKKyAgICAgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclBy
b3h5JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICAgICAgICAgdm9pZCB3aWxsQ2xv
c2VMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFs
OwogI2VuZGlmCkBAIC0yMDEsNiArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJW
aWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Jl
cXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRs
ZXIgOiAxOworICAgICAgICBib29sIHdlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0
b3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yIDogMTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMjg3
NzljZTRiZmNiYzkxOWZmOGEzNzBlMDZhNmZlMWUzMDk5MDk0NS4uZDAzMzhmOGQ2ZTNiOWExM2Rm
MmFmMTUzYWNiNWRlYjM4ZTFmY2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElBcnJheS5oIgog
I2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCisj
aW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2ltcG9ydCAiX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3Rvcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTEzMSw2ICsxMzMs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVn
YXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3Rl
ZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1l
Om1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb25maWd1cmF0aW9uRm9y
TG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFj
aExvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbENsb3NlTG9jYWxJbnNwZWN0b3I6KV07CiAj
ZW5kaWYKQEAgLTgxNyw2ICs4MjAsMTggQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjoKICAgICB9
KS5nZXQoKV07CiB9CiAKK1JlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IFVJRGVsZWdh
dGU6OlVJQ2xpZW50Ojpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5
JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNv
bmZpZ3VyYXRpb24mPihbWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6
d3JhcHBlcihpbnNwZWN0b3IpXSBfYXBpT2JqZWN0XSk7Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3Bl
Y3RvclByb3h5JiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggZWMzMTBkOGEzMzg5MDVkMjZhOTQzZGRhNjE5N2YxMGUyOTJjODk5Zi4u
YjA0NzM5MzFkNzMxMGYyNThlOWJlY2NlNzBjZTUyMmM4OWE3ZTllNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoUmVmPEFQSTo6RGVidWdnYWJsZUluZm8+
JiYgZGVidWdnYWJsZUluZm8sIGNvbnN0IFN0cmluZyYgYmFja2VuZENvbW1hbmRzVVJMKQogewot
ICAgIGNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwotCiAgICAgbV9kZWJ1Z2dhYmxlSW5m
byA9IFdURk1vdmUoZGVidWdnYWJsZUluZm8pOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0g
YmFja2VuZENvbW1hbmRzVVJMOwogCisgICAgY3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7
CisKICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clVJOjpJbml0aWFsaXplKG1fZGVidWdnYWJsZUluZm8tPmRlYnVnZ2FibGVJbmZvRGF0YSgpLCBi
YWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCBkZWJhMGZlZTYyNTY0NTYyNWQ3NjM5NmIyYjA2NWEyMTJi
ZjkzODA4Li5jMDNhMmNhNTcwZDlmNmY4MGViYWFlNTRmYjkzYWQyNTcwY2I1ZmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtNDgsMTAgKzQ4LDEyIEBAIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEZWJ1Z2dhYmxlSW5mbzsKK2NsYXNzIEluc3Bl
Y3RvckNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7
CiAKQEAgLTYwLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUZy
b21Gcm9udGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkmKSA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDU3ZWYxNzQ5
NzM5NjUwMzljODJlOTQ4ZjhhZWVlNDJiOWNhNmI5YmEuLjEwZTE0ZTRlZjFhNmNlNmM1YzNiZTRm
MWY1NzEyMThmMTJlODA2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAt
NzcsNiArNzcsOCBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICAvLyBNQVJLOiBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCBtZXRob2RzCisKICAgICB2b2lkIHNlbmRNZXNzYWdl
VG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewogICAgICAgICBtX3Byb3h5
LT5zZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7CkBAIC05Miw2ICs5NCwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LmNsb3NlRnJvbUZyb250ZW5kKG1fY29ubmVj
dGlvbklELCBtX3RhcmdldElEKTsKICAgICB9CiAKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKFJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5JikKKyAgICB7CisgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb246OmNyZWF0ZSgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWY8UmVtb3RlV2ViSW5z
cGVjdG9yUHJveHk+IG1fcHJveHk7CiAgICAgUmVtb3RlSW5zcGVjdG9yQ2xpZW50JiBtX2luc3Bl
Y3RvckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDI0
NTRhZTk1OTQxMDc3ZDQyNDhjZTZhNTM3Yjk0ZTFmMjBlZTAxYmUuLmU0M2IwMjg1NGMyYjJiMWMw
MjY1NGRjNjQxNzdmZjMwMjEzOTQ3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIK
ICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1w
b3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgPFNlY3Vy
aXR5SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVQYW5lbC5oPgogI2ltcG9ydCA8U2VjdXJpdHlJbnRl
cmZhY2UvU0ZDZXJ0aWZpY2F0ZVZpZXcuaD4KICNpbXBvcnQgPFdlYkNvcmUvQ2VydGlmaWNhdGVJ
bmZvLmg+CkBAIC0xMDMsNyArMTA0LDggQEAgV2ViUGFnZVByb3h5KiBSZW1vdGVXZWJJbnNwZWN0
b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKQogewogICAgIG1f
b2JqQ0FkYXB0ZXIgPSBhZG9wdE5TKFtbV0tSZW1vdGVXZWJJbnNwZWN0b3JQcm94eU9iakNBZGFw
dGVyIGFsbG9jXSBpbml0V2l0aFJlbW90ZVdlYkluc3BlY3RvclByb3h5OnRoaXNdKTsKIAotICAg
IG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGFs
bG9jXSBpbml0V2l0aEluc3BlY3RlZFBhZ2U6bnVsbHB0cl0pOworICAgIFJlZjxBUEk6Okluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBtX2NsaWVudC0+Y29uZmlndXJhdGlv
bkZvclJlbW90ZUluc3BlY3RvcigqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JWaWV3ID0gYWRvcHRO
UyhbW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29uZmlndXJhdGlv
bjogV2ViS2l0Ojp3cmFwcGVyKGNvbmZpZ3VyYXRpb24pIGluc3BlY3RlZFBhZ2U6bnVsbHB0cl0p
OwogICAgIFttX2luc3BlY3RvclZpZXcuZ2V0KCkgc2V0RGVsZWdhdGU6bV9vYmpDQWRhcHRlci5n
ZXQoKV07CiAKICAgICBtX3dpbmRvdyA9IFdlYkluc3BlY3RvclByb3h5OjpjcmVhdGVGcm9udGVu
ZFdpbmRvdyhOU1plcm9SZWN0LCBXZWJJbnNwZWN0b3JQcm94eTo6SW5zcGVjdGlvblRhcmdldFR5
cGU6OlJlbW90ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCmluZGV4IDEwNzE5
Mjg2NjVlNDllY2M4YTI0NzFkN2YxNDY5YTgwY2E2YWQyOTYuLjNhMzQ2ZDQyMWY4YTQyZDE3ZWU0
NDRjZTE2NDQ0MDU1YzRjYWY1ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0IDx3dGYvTmFrZWRQdHIuaD4KIAogT0JKQ19DTEFT
UyBXS1dlYlZpZXc7CitPQkpDX0NMQVNTIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogY2xhc3MgV2ViUGFnZVByb3h5OwpAQCAtNDMsNyArNDQsNyBAQCBO
U19BU1NVTUVfTk9OTlVMTF9CRUdJTgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBX
S1dlYlZpZXcgKndlYlZpZXc7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaykgaWQgPFdLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4gZGVsZWdhdGU7CiAKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pilp
bnNwZWN0ZWRQYWdlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dL
SW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gaW5zcGVjdGVkUGFnZTooTmFr
ZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2U7CiAKICsgKEJPT0wpdmll
d0lzSW5zcGVjdG9yV2ViVmlldzooTlNWaWV3ICopdmlldzsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLm1tCmluZGV4IDFlYWE5NDNmMjdhMjdkNjdjNjExZmY2ZDZmYmJmMzYxNjJi
ZjcxOTcuLjYyNGU2YmI1Mzk2ZTI0NTJjZjFmNmMwODcxNGM5MTUyYTcwNmJjYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQg
IldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL1ZlcnNpb25DaGVja3MuaD4KICNpbXBv
cnQgPHd0Zi9XZWFrT2JqQ1B0ci5oPgogCkBAIC01MiwxMyArNTMsMTUgQEAgQGltcGxlbWVudGF0
aW9uIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgewogICAgIE5ha2VkUHRyPFdlYktpdDo6V2Vi
UGFnZVByb3h5PiBfaW5zcGVjdGVkUGFnZTsKICAgICBSZXRhaW5QdHI8V0tJbnNwZWN0b3JXS1dl
YlZpZXc+IF93ZWJWaWV3OwogICAgIFdlYWtPYmpDUHRyPGlkIDxXS0luc3BlY3RvclZpZXdDb250
cm9sbGVyRGVsZWdhdGU+PiBfZGVsZWdhdGU7CisgICAgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
biAqX2NvbmZpZ3VyYXRpb247CiB9CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEluc3BlY3Rl
ZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0ZWRQYWdlCistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uICopY29uZmlndXJhdGlvbiBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4paW5zcGVjdGVkUGFnZQogewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQogICAgICAgICByZXR1cm4gbmlsOwogCisgICAgX2NvbmZpZ3VyYXRpb24gPSBbY29uZmlndXJh
dGlvbiBjb3B5XTsKICAgICAvLyBUaGUgKGxvY2FsKSBpbnNwZWN0ZWQgcGFnZSBpcyBuaWwgaWYg
dGhlIGNvbnRyb2xsZXIgaXMgaG9zdGluZyBhIFJlbW90ZSBXZWIgSW5zcGVjdG9yIHZpZXcuCiAg
ICAgX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0ZWRQYWdlOwogCkBAIC04Nyw3ICs5MCw3IEBAIC0g
KFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICAvLyBDb25zdHJ1Y3QgbGF6aWx5IHNvIHRoZSBjbGll
bnQgY2FuIHNldCB0aGUgZGVsZWdhdGUgYmVmb3JlIHRoZSBXZWJWaWV3IGlzIGNyZWF0ZWQuCiAg
ICAgaWYgKCFfd2ViVmlldykgewogICAgICAgICBOU1JlY3QgaW5pdGlhbEZyYW1lID0gTlNNYWtl
UmVjdCgwLCAwLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGgs
IFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmluaXRpYWxXaW5kb3dIZWlnaHQpOwotICAgICAg
ICBfd2ViVmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTppbml0aWFsRnJhbWUgY29uZmlndXJhdGlvbjpbc2VsZiBjb25maWd1cmF0aW9uXV0p
OworICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTppbml0aWFsRnJhbWUgY29uZmlndXJhdGlvbjpzZWxmLndlYlZpZXdD
b25maWd1cmF0aW9uXSk7CiAgICAgICAgIFtfd2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwog
ICAgICAgICBbX3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOnNlbGZdOwogICAgICAgICBb
X3dlYlZpZXcgc2V0SW5zcGVjdG9yV0tXZWJWaWV3RGVsZWdhdGU6c2VsZl07CkBAIC0xMDQsNyAr
MTA3LDcgQEAgLSAodm9pZClzZXREZWxlZ2F0ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKICAgICBfZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIH0KIAotLSAo
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KKy0gKFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbgogewogICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAg
LTEyMyw2ICsxMjYsOCBAQCAtIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
bgogCiAgICAgcHJlZmVyZW5jZXMuX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCA9IFlFUzsKIAor
ICAgIFtfY29uZmlndXJhdGlvbiBhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKV07CisgICAgCiAgICAgaWYgKCEhX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3BlY3Rv
cklzVW5kZXJUZXN0OildKSB7CiAgICAgICAgIGlmIChbX2RlbGVnYXRlIGluc3BlY3RvclZpZXdD
b250cm9sbGVySW5zcGVjdG9ySXNVbmRlclRlc3Q6c2VsZl0pIHsKICAgICAgICAgICAgIHByZWZl
cmVuY2VzLl9oaWRkZW5QYWdlRE9NVGltZXJUaHJvdHRsaW5nRW5hYmxlZCA9IE5POwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW0KaW5kZXggMThlM2I3NTRmOWYwZTM2M2IzNjhmNTQ4ZWI4YTQzMGQ1
Yzg5OWIyMi4uMjJkM2NjYjRjYjAyYzI1M2I1MDdmNmE5ZTJlYjRiYWIwYWRhMGE4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQ
cm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dl
Ykluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0yOCwxNCArMjgsMTkgQEAKIAogI2lmIFBMQVRGT1JN
KE1BQykKIAorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCisjaW1wb3J0ICJBUElJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLmgiCisjaW1wb3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAi
R2xvYmFsRmluZEluUGFnZVN0YXRlLmgiCiAjaW1wb3J0ICJXS0luc3BlY3RvclByaXZhdGVNYWMu
aCIKICNpbXBvcnQgIldLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLT2Jq
ZWN0LmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRlcm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50
ZXJuYWwuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldl
YlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVy
bmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JXaW5kb3cuaCIKICNpbXBvcnQgPFNlY3VyaXR5
SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVQYW5lbC5oPgpAQCAtMjkxLDcgKzI5Niw4IEBAIFdlYlBh
Z2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkK
ICAgICBOU1ZpZXcgKmluc3BlY3RlZFZpZXcgPSBpbnNwZWN0ZWRQYWdlKCktPmluc3BlY3RvckF0
dGFjaG1lbnRWaWV3KCk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVy
XSBhZGRPYnNlcnZlcjptX29iakNBZGFwdGVyLmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNw
ZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBuYW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZp
Y2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3XTsKIAotICAgIG1faW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhJbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBhZ2UoKV0pOworICAgIFJlZjxBUEk6Okluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBpbnNwZWN0ZWRQYWdlKCktPnVpQ2xpZW50
KCkuY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKCppbnNwZWN0ZWRQYWdlKCksICAqdGhp
cyk7CisgICAgbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW1tXS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbmZpZ3VyYXRpb246IFdlYktpdDo6d3Jh
cHBlcihjb25maWd1cmF0aW9uLmdldCgpKSBpbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBhZ2UoKV0p
OwogICAgIFttX2luc3BlY3RvclZpZXdDb250cm9sbGVyLmdldCgpIHNldERlbGVnYXRlOm1fb2Jq
Q0FkYXB0ZXIuZ2V0KCldOwogCiAgICAgV2ViUGFnZVByb3h5ICppbnNwZWN0b3JQYWdlID0gW21f
aW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10tPl9wYWdlLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0
b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDAyZGFjMWY1NjBmMzAwNzkwNWFiMmM3MmFl
NjUxMGVjODhmMTYzOTMuLjBjM2E5YmM1YTg3YTNjYzE2MmZlYmIzYmQxNDU2YWE4MWE3NDU3MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVt
b3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNw
ZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAgLTY3LDYgKzY3LDggQEAg
cHVibGljOgogICAgICAgICBtX3Byb3h5LT5zaG93KCk7CiAgICAgfQogCisgICAgLy8gTUFSSzog
UmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0aG9kcworCiAgICAgdm9pZCBzZW5kTWVz
c2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKICAgICAgICAgbV9w
cm94eS0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwpAQCAtODIsNiArODQsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2luc3BlY3RvckNsaWVudC5jbG9zZUZyb21Gcm9udGVuZChtX2Nv
bm5lY3Rpb25JRCwgbV90YXJnZXRJRCk7CiAgICAgfQogCisgICAgUmVmPEFQSTo6SW5zcGVjdG9y
Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eSYpCisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25m
aWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmPFJlbW90ZVdl
Ykluc3BlY3RvclByb3h5PiBtX3Byb3h5OwogICAgIFJlbW90ZUluc3BlY3RvckNsaWVudCYgbV9p
bnNwZWN0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCA1MTllZTk1NTc1MjdhNzAzYTViYmQ2ZTZmMjc3YjFhYzJlYWU4YjYx
Li4yZDc5YzQ4NTEwMDllNDQyYzNlNjllNmNiMmM3NGMyNjg5ZWI5MzllIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTgsNiArMTQx
OCw5IEBACiAJCTk5MjQ5QUQ1MUYxRjFFNTYwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmRE
aXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5OTI0OUFEMzFGMUYxRTMzMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0
Y2hlcnMuY3BwICovOyB9OwogCQk5OTI0OUFENjFGMUYxRTVGMDBCNjJGQkIgLyogQXV0b21hdGlv
bkZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5MjQ5QUQ0MUYxRjFFMzMwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRl
bmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcgLyogV0tJ
bnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJOTk0QzYwNDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk5NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oICovOyB9OworCQk5OTRDNjA0NzI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaCAqLzsgfTsKIAkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hl
ci5oICovOyB9OwogCQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21hdGlvblNl
c3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICovOyB9Owog
CQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBCQjAwRUI2
QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtNDUzMyw2ICs0NTM2LDExIEBACiAJCTk5NDZFRjg1MUU3QjAyNjYw
MDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDAyNTND
QTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDgyNTNGODIwMjAw
QkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RTkxQzc5ODBC
QjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsgcGF0aCA9
IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTczMjUsNiAr
NzMzMyw5IEBACiAJCQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdh
dGUuaCAqLywKIAkJCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmgg
Ki8sCiAJCQkJNUNBRkRFNDMyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5tbSAqLywK
KwkJCQk5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5oICovLAorCQkJCTk5NEM2MDQxMjUzQ0E1NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLm1tICovLAorCQkJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk5OTFGNDkyRDIzQTgxMkM1MDA1
NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAqLywKIAkJCQk5OTFGNDkyRTIz
QTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJ
OTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50
ZXJuYWwuaCAqLywKQEAgLTkzMTcsNiArOTMyOCw4IEBACiAJCQkJNTE0M0IyNjExREREMERBMDAw
MTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8sCiAJCQkJN0E4QTlENTcxRUYxMTlB
QTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8sCiAJCQkJOTE5Nzk0MDky
M0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovLAorCQkJCTk5NEM2MDQ4
MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAqLywKKwkJ
CQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5o
ICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVh
dHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUludGVybmFs
RGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8qIEFQSUxl
Z2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMDc1MSw2ICsxMDc2NCw4IEBACiAJ
CQkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJbnB1dERl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NTIxMzA4NDYzMDBCMUY3RTEgLyog
X1dLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0MjI1M0NBNTQ0MDBCREYw
NjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk0
QzYwNDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0lu
c3BlY3RvckRlYnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0
OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRl
bGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODY0LDYgKzEwODc5LDcgQEAKIAkJCQk3QThB
OUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VMb2Fk
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMxQ0IyMDAxREZGMDQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5
NDBBMjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICov
LAorCQkJCTk5NEM2MDQ3MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUIzNjI4RjIxNDFFQTVEMDA3QkZBNTMgLyogQVBJ
SW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjA3MUE0Njc3
NjEwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVudC5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggYzNjNmQ2YWNjNzc3MmFmMjNkMGI1MjI3ZWUyYmVkZWFiMjRiNzc2OC4uNGU3OTY1
Zjc5M2Y2MTNjZDQ4NGRiMTU5MTk3NGU1NTAyY2Y1OTliZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIwLTEwLTIx
ICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gSW50cm9k
dWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbWl6aW5nIGxvY2FsIGFuZCBy
ZW1vdGUgV2ViIEluc3BlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNzg5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAzNTU5MTA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQ
SSB0ZXN0IGZvciBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLiBEaXNhYmxlZCBmb3Igbm93LCB3
aWxsCisgICAgICAgIGJlIHR1cm5lZCBiYWNrIG9uIHdoZW4gbW9yZSB3ZWIgZXh0ZW5zaW9ucyBB
UEkgaGFzIGxhbmRlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bU2ltcGxlVVJMU2NoZW1lSGFu
ZGxlciB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bU2ltcGxlVVJM
U2NoZW1lSGFuZGxlciB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtV
SURlbGVnYXRlIF93ZWJWaWV3OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcjpdKToKKyAg
ICAgICAgKC1bVUlEZWxlZ2F0ZSBfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjpdKToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDIwLTEwLTIxICBMYXVybyBNb3VyYSAgPGxtb3VyYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIHdlYmtpdHB5OiBDaGVjayBmb3IgZHVwbGljYXRlZCBrZXlzIGlu
IGpzb24gZXhwZWN0YXRpb24gZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA2MTAz
YjIwMGY3NzMyNTZjN2NkYmQzMTIzMjA5MWNlYjgxYTkwODFjLi4xMjA2MjY1NjUwNTU1NDZjNGE1
YTZiNmZhNzE3MGI2YjVhMGU2ZWYzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0yOCw5
ICsyOCwxMyBAQAogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VS
TFNjaGVtZUhhbmRsZXIuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KICNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4K
KyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxX
ZWJLaXQvX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJ
bnNwZWN0b3JEZWxlZ2F0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVG
b3JUZXN0aW5nLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC0zOSw2ICs0Myw3IEBA
CiAjaWYgUExBVEZPUk0oTUFDKQogCiBAY2xhc3MgSW5zcGVjdG9yRGVsZWdhdGU7CitAY2xhc3Mg
U2ltcGxlVVJMU2NoZW1lSGFuZGxlcjsKIAogc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNw
ZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9y
Q2FsbGVkID0gZmFsc2U7CkBAIC00Niw5ICs1MSw1NCBAQCBzdGF0aWMgYm9vbCBicm93c2VyRG9t
YWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgYnJvd3Nl
ckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBz
aG91bGRDYWxsSW5zcGVjdG9yQ2xvc2VSZWVudHJhbnRseSA9IGZhbHNlOwogc3RhdGljIGJvb2wg
b3BlblVSTEV4dGVybmFsbHlDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGNvbmZpZ3VyYXRp
b25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc3RhcnRVUkxT
Y2hlbWVUYXNrQ2FsbGVkID0gZmFsc2U7CisKK3N0YXRpYyBSZXRhaW5QdHI8U2ltcGxlVVJMU2No
ZW1lSGFuZGxlcj4gc2hhcmVkVVJMU2NoZW1lSGFuZGxlcjsKIHN0YXRpYyBSZXRhaW5QdHI8aWQg
PF9XS0luc3BlY3RvckRlbGVnYXRlPj4gc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGU7CiBzdGF0aWMg
UmV0YWluUHRyPE5TVVJMPiB1cmxUb09wZW47CiAKK3N0YXRpYyB2b2lkIHJlc2V0R2xvYmFsU3Rh
dGUoKQoreworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAg
d2lsbENsb3NlTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBicm93c2VyRG9tYWlu
RW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5EaXNh
YmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIHNob3VsZENhbGxJbnNwZWN0b3JD
bG9zZVJlZW50cmFudGx5ID0gZmFsc2U7CisgICAgb3BlblVSTEV4dGVybmFsbHlDYWxsZWQgPSBm
YWxzZTsKKyAgICBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsK
KyAgICBzdGFydFVSTFNjaGVtZVRhc2tDYWxsZWQgPSBmYWxzZTsKKworICAgIHNoYXJlZFVSTFNj
aGVtZUhhbmRsZXIuY2xlYXIoKTsKKyAgICBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZS5jbGVhcigp
OworICAgIHVybFRvT3Blbi5jbGVhcigpOworfQorCitAaW50ZXJmYWNlIFNpbXBsZVVSTFNjaGVt
ZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPgorQHByb3BlcnR5IChub25h
dG9taWMsIHdlYWspIE5TVVJMICpleHBlY3RlZFVSTDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9u
IFNpbXBsZVVSTFNjaGVtZUhhbmRsZXIKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworewor
ICAgIGlmIChfZXhwZWN0ZWRVUkwpCisgICAgICAgIEVYUEVDVF9TVFJFUShfZXhwZWN0ZWRVUkwu
YWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZywgdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmlu
Zy5VVEY4U3RyaW5nKTsKKworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3Qu
VVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5n
ZXQoKV07CisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiIx
IiBsZW5ndGg6MV1dOworICAgIFt0YXNrIGRpZEZpbmlzaF07CisKKyAgICBzdGFydFVSTFNjaGVt
ZVRhc2tDYWxsZWQgPSB0cnVlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30K
KworQGVuZAorCiBAaW50ZXJmYWNlIEluc3BlY3RvckRlbGVnYXRlIDogTlNPYmplY3QgPF9XS0lu
c3BlY3RvckRlbGVnYXRlPgogQGVuZAogCkBAIC03NywxOCArMTI3LDIzIEBAIEBlbmQKIAogQGlt
cGxlbWVudGF0aW9uIFVJRGVsZWdhdGUKIAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9y
CistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNw
ZWN0b3IKIHsKLSAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotICAg
IHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0gICAgYnJvd3NlckRvbWFp
bkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLSAgICBicm93c2VyRG9tYWluRGlz
YWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLQotICAgIEVYUEVDVF9FUSh3ZWJWaWV3
Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisgICAgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVj
dG9yQ2FsbGVkID0gdHJ1ZTsKIAogICAgIHNoYXJlZEluc3BlY3RvckRlbGVnYXRlID0gW0luc3Bl
Y3RvckRlbGVnYXRlIG5ld107CiAgICAgW2luc3BlY3RvciBzZXREZWxlZ2F0ZTpzaGFyZWRJbnNw
ZWN0b3JEZWxlZ2F0ZS5nZXQoKV07CiAKKyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gW1tT
aW1wbGVVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XTsKKyAgICBSZXRhaW5QdHI8X1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbj4gaW5zcGVjdG9yQ29uZmlndXJhdGlvbiA9IFtbX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF07CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRp
b24gc2V0VVJMU2NoZW1lSGFuZGxlcjpzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVS
TFNjaGVtZTpAInRlc3RpbmciXTsKKyAgICByZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24g
YXV0b3JlbGVhc2VdOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAg
ICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworCiAgICAgZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOwogfQogCkBAIC0xMDUsNiArMTYwLDggQEAg
QGVuZAogCiBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxi
YWNrcykKIHsKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKICAgICBhdXRvIHdlYlZpZXdDb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICB3
ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTEyNyw2ICsxODQsOCBAQCBURVNUKFdL
SW5zcGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxiYWNrcykKIAogVEVTVChX
S0luc3BlY3RvckRlbGVnYXRlLCBJbnNwZWN0b3JDbG9zZUNhbGxlZFJlZW50cmFudGx5KQogewor
ICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKwogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIHdlYlZpZXdDb25m
aWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVT
OwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29u
ZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMTQ5LDYgKzIwOCw4IEBAIFRFU1QoV0tJbnNwZWN0b3JE
ZWxlZ2F0ZSwgSW5zcGVjdG9yQ2xvc2VDYWxsZWRSZWVudHJhbnRseSkKIAogVEVTVChXS0luc3Bl
Y3RvckRlbGVnYXRlLCBTaG93VVJMRXh0ZXJuYWxseSkKIHsKKyAgICByZXNldEdsb2JhbFN0YXRl
KCk7CisKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVm
ZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
QEAgLTE3MSw0ICsyMzIsMzggQEAgVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBTaG93VVJMRXh0
ZXJuYWxseSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJm9wZW5VUkxFeHRlcm5hbGx5
Q2FsbGVkKTsKIH0KIAorLy8gRklYTUU6IHJlLWVuYWJsaW5nIHRoaXMgdGVzdCBjYXNlIGlzIGJs
b2NrZWQsIHRyYWNraW5nIHRoaXMgdGFzayBpbiA8cmRhcjovL3Byb2JsZW0vNzA1MDUyNzI+Lgor
VEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBESVNBQkxFRF9JbnNwZWN0b3JDb25maWd1cmF0aW9u
KQoreworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3Vy
YXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZp
ZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVk
ID0gWUVTOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJW
aWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMo
W1VJRGVsZWdhdGUgbmV3XSk7CisKKyAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRl
c3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29u
dGVudDwvcD48L2JvZHk+IiBiYXNlVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4
YW1wbGUuY29tLyJdXTsKKworICAgIEVYUEVDVF9GQUxTRSh3ZWJWaWV3LmdldCgpLl9pc0JlaW5n
SW5zcGVjdGVkKTsKKworICAgIGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCA9
IGZhbHNlOworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAg
W1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKworICAgIC8v
IEZJWE1FOiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyJ3MgbmF2aWdhdGlvbiBkZWxlZ2F0ZSBj
YW5jZWxzIGFsbCBtYWluIGZyYW1lCisgICAgLy8gbG9hZHMgdGhhdCBhcmUgbm90IHRoZSBXZWIg
SW5zcGVjdG9yIHBhZ2UuIFNvLCB0aGlzIGNhbm5vdCBiZSBmdWxseSB0ZXN0ZWQgdW50aWwKKyAg
ICAvLyB3ZSBjYW4gdXNlZCB0aGUgY3JlYXRlVGFiIEFQSSB0byBsb2FkIHRoZSBjdXN0b20gVVJM
IHNjaGVtZSByZXNvdXJjZSBpbiBhbiBpZnJhbWUuCisgICAgdXJsVG9PcGVuID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4xIl07CisgICAgc2hhcmVkVVJMU2NoZW1lSGFuZGxl
ci5nZXQoKS5leHBlY3RlZFVSTCA9IHVybFRvT3Blbi5nZXQoKTsKKyAgICBzdGFydFVSTFNjaGVt
ZVRhc2tDYWxsZWQgPSBmYWxzZTsKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gX29wZW5VUkxF
eHRlcm5hbGx5Rm9yVGVzdGluZzp1cmxUb09wZW4uZ2V0KCkgdXNlRnJvbnRlbmRBUEk6Tk9dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkKTsK
KworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBjbG9zZV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZ3aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCk7Cit9CisKICNlbmRpZiAv
LyBQTEFURk9STShNQUMpCg==
</data>
<flag name="commit-queue"
          id="428408"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412042</attachid>
            <date>2020-10-21 16:01:26 -0700</date>
            <delta_ts>2020-10-22 13:51:27 -0700</delta_ts>
            <desc>Patch v3.2</desc>
            <filename>bug-217896-20201021160125.patch</filename>
            <type>text/plain</type>
            <size>61196</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyYTBjZjVkNDFiNzJlMDJj
OWMyOGMwYTA4YmQ3Njg3MDRhMmM4MDIuLmI3YWQzMGI1ZjAwMzY0NjJjMGJjNGQ0MjBkNGExNWIz
NmEzOWEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMTAtMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gY2xpZW50
LWNvbnRyb2xsZWQgbG9jYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBsb2Fk
aW5nCisgICAgICAgIG9mIGV4dGVuc2lvbiByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1l
IHN1Y2ggYXMgd2ViLWV4dGVuc2lvbjovLy4KKworICAgICAgICBTY2hlbWUgaGFuZGxlcnMgbmVl
ZCB0byBiZSByZWdpc3RlcmVkIGF0IFdlYlZpZXcgY3JlYXRpb24gdGltZSB2aWEgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi4gSW4KKyAgICAgICAgb3JkZXIgdG8gY29uZmlndXJlIGEgaW5zcGVjdG9y
IHBhZ2Ugc3VtbW9uZWQgZnJvbSB3aXRoaW4gV2ViS2l0IChpLmUuLCBJbnNwZWN0IEVsZW1lbnQg
Y29udGV4dCBtZW51IGl0ZW0pLAorICAgICAgICB3ZSBuZWVkIHRvIGFkZCBhIG1ldGhvZCB0byB0
aGUgVUkgZGVsZWdhdGUgdG8gZ2V0IGEgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIGJl
aW5nIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2Vk
IGluIHR3byBkaWZmZXJlbnQgU1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAg
ICAtIEFzIHBhcnQgb2YgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIGdpdmVuIGEgX1dLSW5zcGVjdG9yLgorICAgICAgICAtIEFzIGFu
IGFyZ3VtZW50IHRvIHRoZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0
aWFsaXplci4gSXQncyB1c2VkIGxhdGVyIGFzIG5lZWRlZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3Q6IFdLSW5zcGVjdG9yRGVsZWdhdGUuSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBfYXBpT2JqZWN0
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgQ3JlYXRlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYW5kIGFkZCBhIG1ldGhvZCB0byByZWdpc3RlciBXS1VSTFNjaGVt
ZUhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09i
amVjdCk6CisgICAgICAgIEFkZCBuZXcgQVBJIG9iamVjdCB0eXBlcy4gQWRkIG1pc3NpbmcgSW5z
cGVjdG9yRXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpz
ZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25m
aWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IpOgorICAgICAgICBBZGQgbmV3IGNsaWVudC9kZWxl
Z2F0ZSBtZXRob2QgdG8gZmV0Y2ggYW4gaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1
cmF0aW9uOl0pOiBSZW5hbWVkIGZyb20gLWluaXQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgbG9hZEZvckRlYnVnZ2FibGVUeXBlOmJhY2tl
bmRDb21tYW5kc1VSTDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGU6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOl0pOgorICAgICAgICBTdG9yZSBhIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYW5kIHBy
b3ZpZGUgaXQgd2hlbiBhc2tlZCBieSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQpOgorICAgICAgICBT
dG9yZSBtX2RlYnVnZ2FibGVJbmZvIGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZSBhbmQgd2luZG93
LiBJdCdzIHVzZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgcGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cgdG8gcGFzcyBhcyBhbiBhcmd1bWVudCB0byB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
IE9idGFpbiBhIGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1cmF0aW9uOmluc3BlY3RlZFBhZ2U6
XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10pOgorICAg
ICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6
IFJlbmFtZWQgZnJvbSAtY29uZmlndXJhdGlvbi4KKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlciBpbml0V2l0aEluc3BlY3RlZFBhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgY29uZmlndXJhdGlvbl0pOiBEZWxldGVkLgorICAg
ICAgICBBcHBseSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVycyByZWdpc3RlcmVkIGluIHRoZSBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uIHRvIHRoZQorICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgU3R1YiBvdXQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGaXggYnVp
bGQgcHJvYmxlbXMgY2F1c2VkIGJ5IHJlcGFydGl0aW9uaW5nIG9mIHVuaWZpZWQgc291cmNlcy4K
KwogMjAyMC0xMC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERvbid0IGNyYXNoIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBkdXJp
bmcgVExTIGhhbmRzaGFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDQ1
N2MyNjIyYWYxYWJkYTNkZmU2Mzc3MGUyNzE0ZDEyZjdjN2M0OGYuLjZkMDY1NjQ1ZGNlZTYyZTU5
ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCiAg
ICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9yLAorICAgICAgICBJbnNwZWN0
b3JDb25maWd1cmF0aW9uLAogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAg
ICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTWVzc2FnZUxpc3RlbmVyLApAQCAtMzgwLDYg
KzM4MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+
IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkdyYW1tYXJEZXRhaWwsCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3IsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1
cmF0aW9uLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6S2V5VmFsdWVTdG9yYWdlTWFuYWdl
ciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxpc3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDE3MzBiZDQ5M2ZkMGI0NmRlZWNjMjQ3ZDdjMTgyY2Q2
ODI4ZGE2MzEuLmM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTc5LDYgKzc5LDcgQEAKICNp
bXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5z
cGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ludGVybmFsRGVidWdGZWF0dXJlSW50ZXJu
YWwuaCIKQEAgLTI2NCw3ICsyNjUsMTEgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90
IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6Okluc3BlY3RvcjoKICAgICAgICAgd3Jh
cHBlciA9IFtfV0tJbnNwZWN0b3IgYWxsb2NdOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisK
KyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIg
PSBbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlv
biBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzk2ZGI2OTk2ZWVkZmU1
YjdlOTI4MDAxMzcyMDU0Y2Y2OWMzODA0Ni4uMTg3MzM2NGNlYTVlODdiMDhlZjcxMjE3NzcxOWI5
N2JiNDFlOTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgVUlQcm9jZXNzL0FQ
SS9BUElGcmFtZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuY3BwCiBV
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSGl0
VGVzdFJlc3VsdC5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5j
cHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25EYXRhLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGY2OWEyZGQzOWIwZTFlMjBjMWJiZmMxM2E1ZDQ0
MTU5Mzc5MjBiZmQuLjk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0V4cGVyaW1lbnRhbEZlYXR1cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJh
bWVUcmVlTm9kZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9u
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmZjMzOTJjMTY3N2NmMGE3MmYwNDJkMjdl
Y2U1Y2M5NGE3Y2NlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaCIKKworI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKworbmFtZXNw
YWNlIEFQSSB7CisKK1JlZjxJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBJbnNwZWN0b3JDb25maWd1
cmF0aW9uOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNv
bmZpZ3VyYXRpb24pOworfQorCit2b2lkIEluc3BlY3RvckNvbmZpZ3VyYXRpb246OmFkZFVSTFNj
aGVtZUhhbmRsZXIoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiB1cmxTY2hlbWVI
YW5kbGVyLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsU2NoZW1lKQoreworICAgIG1fY3VzdG9tVVJM
U2NoZW1lcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZSh1cmxTY2hlbWVIYW5kbGVyKSwg
dXJsU2NoZW1lKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZDk1ZWIwZDZmY2U0YzU4YzNjYjI2MDRiYWRkMGRjYjJlMTc2ZmE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcjsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK3VzaW5nIFVSTFNjaGVt
ZUhhbmRsZXJQYWlyID0gc3RkOjpwYWlyPFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+
LCBXVEY6OlN0cmluZz47CisKK2NsYXNzIEluc3BlY3RvckNvbmZpZ3VyYXRpb24gZmluYWwgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY3Jl
YXRlKCk7CisgICAgCisgICAgdm9pZCBhZGRVUkxTY2hlbWVIYW5kbGVyKFJlZjxXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmxTY2hlbWUpOworICAg
IGNvbnN0IFZlY3RvcjxVUkxTY2hlbWVIYW5kbGVyUGFpcj4mIHVybFNjaGVtZUhhbmRsZXJzKCkg
eyByZXR1cm4gbV9jdXN0b21VUkxTY2hlbWVzOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVS
TFNjaGVtZUhhbmRsZXJQYWlyPiBtX2N1c3RvbVVSTFNjaGVtZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
N2I0ZjkzYWE0MjY1NDFmZGIzMWVjODgxNzcwYjJmMzM2YWVlOGY4Yi4uYWE3ZDg5YzAxZTczNTIw
Y2UzZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgpA
QCAtMTk2LDYgKzE5NywxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQorICAg
IHZpcnR1YWwgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZv
ckxvY2FsSW5zcGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eSYpCisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggN2ZjYzRhOTEzNmYxMDcxZDJiZTI1NzI3M2NiYzY5MGFmNjNmZDJiNy4uZDFl
YWUyMDFlNjU0MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5NzkzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBA
IC0zOCw2ICszOCw5IEBACiBAY2xhc3MgX1dLQWN0aXZhdGVkRWxlbWVudEluZm87CiBAY2xhc3Mg
X1dLRWxlbWVudEFjdGlvbjsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3I7CitAY2xhc3MgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKIAogI2lmIFRBUkdFVF9PU19JT1MKIApAQCAtMjQ3LDYgKzI1
MCwxMiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnU6KE5TTWVudSAqKW1lbnUg
Zm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQgdXNlckluZm86
KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TTWVudSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFBlcmZvcm1EcmFn
T3BlcmF0aW9uOihCT09MKWhhbmRsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSk7
CiAKKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIF9XS0luc3BlY3RvciBmb3IgdGhpcyBX
S1dlYlZpZXcgaXMgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiBUaGUgY2xpZW50IGNhbgorICAgIHBy
b3ZpZGUgYSBjdXN0b20gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBiZSB1
c2VkIHdoZW4gY3JlYXRpbmcgdGhlIFdlYiBJbnNwZWN0b3IuCisgICAgQHBhcmFtIGluc3BlY3Rv
ciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSB0aGF0IGlzIGFib3V0IHRvIGJlIGluaXRpYWxp
emVkLgorICovCistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0
b3IgKilpbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CisKIC8q
ISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGlzIGF0dGFj
aGVkIHRvIHRoaXMgV0tXZWJWaWV3LiBUaGlzIGlzIG5vdCBjYWxsZWQgaW4gdGhlIGNhc2Ugb2Yg
cmVtb3RlIGluc3BlY3Rpb24uCiAgICAgQHBhcmFtIHdlYlZpZXcgVGhlIFdLV2ViVmlldyBpbnN0
YW5jZSBiZWluZyBpbnNwZWN0ZWQuCiAgICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3Bl
Y3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzU5ZmRjNDkzNDhjYmIwYTQzZjQ2MmJiZjU3OTJlNDMx
NjRmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQHByb3RvY29sIFdL
VVJMU2NoZW1lSGFuZGxlcjsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
KQorQGludGVyZmFjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIDogTlNPYmplY3QgPE5TQ29w
eWluZz4KKy8qKgorICogQGFic3RyYWN0IFNldHMgdGhlIFVSTCBzY2hlbWUgaGFuZGxlciBvYmpl
Y3QgZm9yIHRoZSBnaXZlbiBVUkwgc2NoZW1lLgorICogQHBhcmFtIHVybFNjaGVtZUhhbmRsZXIg
VGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyAqIEBwYXJhbSBzY2hlbWUgVGhlIFVSTCBzY2hlbWUg
dGhlIG9iamVjdCB3aWxsIGhhbmRsZS4KKyAqIEBkaXNjdXNzaW9uIFRoaXMgaXMgdXNlZCB0byBy
ZWdpc3RlciBhZGRpdGlvbmFsIHNjaGVtZXMgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGluIHRoZSBp
bnNwZWN0b3IgcGFnZSwKKyAqIHN1Y2ggYXMgdG8gcmVnaXN0ZXIgc2NoZW1lcyB1c2VkIGJ5IGV4
dGVuc2lvbnMuIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhbmQgcmVzdHJpY3Rp
b25zIGFzCisgKiBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgLVtXS1dlYlZpZXcg
c2V0VVJMU2NoZW1lSG5hZGxlcjpmb3JVUkxTY2hlbWU6XS4KKyAqLworLSAodm9pZClzZXRVUkxT
Y2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZv
clVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWU7CitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFmMjM0MmY4
OGFhODI0MTdhM2I3MDM5NDY3NjViY2FjODJmOTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0K
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCisKKyNpbXBvcnQgIldlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbgorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+KHNlbGYpOworICAg
IAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29uZmln
dXJhdGlvbi0+QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjp+SW5zcGVjdG9yQ29uZmlndXJh
dGlvbigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKK3sKKyAgICByZXR1cm4gKl9jb25maWd1cmF0aW9uOworfQorCistICh2b2lkKXNldFVS
TFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIg
Zm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIF9jb25maWd1cmF0aW9u
LT5hZGRVUkxTY2hlbWVIYW5kbGVyKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpj
cmVhdGUodXJsU2NoZW1lSGFuZGxlciksIHVybFNjaGVtZSk7Cit9CisKKy0gKHZvaWQpYXBwbHlU
b1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbgoreworICAgIGZvciAoYXV0byBwYWlyIDogX2NvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhh
bmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYgaGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4ocGFpci5maXJzdC5nZXQoKSk7CisgICAgICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5hcGlIYW5kbGVyKCkgZm9y
VVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAgICB9Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZToo
TlNab25lICopem9uZQoreworICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9j
V2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmb3IgKGF1dG8gcGFpciA6IF9jb25maWd1cmF0
aW9uLT51cmxTY2hlbWVIYW5kbGVycygpKSB7CisgICAgICAgIGF1dG8mIGhhbmRsZXIgPSBzdGF0
aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIuZmlyc3QuZ2V0
KCkpOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
YXBpSGFuZGxlcigpIGZvclVSTFNjaGVtZTpwYWlyLnNlY29uZF07CisgICAgfQorCisgICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2I4ZmUyOTUwZDFhNGE3MmZjMDYxZmIxZDY5YTEy
NjFjOTBhNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisK
KyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldLT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0
b3JhZ2U8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKK30KKwor
LSAodm9pZClhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggNThi
MTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3YzllNDRlZS4uYjlhOGIyMDIwMDUyOWE0MmRh
NGFmYzIzZDRmZDRjZjEyMGM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQog
CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAK
IEBwcm90b2NvbCBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CkBAIC00OSw3ICs1MCw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9z
KDEwLjMpKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHJldGFpbikgTlNXaW5k
b3cgKndpbmRvdzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0YWluKSBXS1dl
YlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiAKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uOwogLSAodm9pZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUpZGVidWdnYWJsZVR5cGUgYmFja2VuZENvbW1hbmRzVVJMOihO
U1VSTCAqKWJhY2tlbmRDb21tYW5kc1VSTDsKIC0gKHZvaWQpY2xvc2U7CiAtICh2b2lkKXNob3c7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNjZi
ZjI0ZGY4MjZkYWE4ZTcyODQyNDhmZDFiNzI4Y2I1ZWJmZjM0My4uNGU0MGI4YjdhNzVmNWY3MDM1
NWQwMWRkNzU1N2NkYjFiYWFmYzQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQpAQCAtMjQsMTYgKzI0LDIwIEBACiAgKi8KIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCiAK
ICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW1w
b3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJEZWJ1Z2dhYmxlSW5m
b0RhdGEuaCIKICNpbXBvcnQgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgi
CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5T
U3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7CkBAIC02Miw2ICs2
NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBbbV9jb250cm9sbGVyIGNsb3NlRnJvbUZy
b250ZW5kXTsKICAgICB9CisgICAgCisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eSYgaW5zcGVjdG9yKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFttX2NvbnRyb2xsZXIuY29uZmlndXJhdGlv
biBfYXBpT2JqZWN0XSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIF9XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyICptX2NvbnRyb2xsZXI7CkBAIC03MiwxMyArODEsMTYgQEAgcHJp
dmF0ZToKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciB7CiAgICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+IG1fcmVtb3Rl
SW5zcGVjdG9yUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6X1dLUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlDbGllbnQ+IG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50OworICAgIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQogCi0tIChpbnN0YW5jZXR5
cGUpaW5pdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIF9jb25maWd1cmF0aW9uID0g
W2NvbmZpZ3VyYXRpb24gY29weV07CisKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7CiAgICAgbV9yZW1vdGVJbnNw
ZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNldENsaWVudCht
X3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CkBAIC0xMjQsNyArMTM2LDcgQEAgLSAodm9p
ZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5
cGUpZGVidWdnYWJsZVR5cGUKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRQbGF0Zm9ybU5hbWUg
PSBAIm1hY09TIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRCdWlsZFZlcnNpb24gPSBAIlVu
a25vd24iOwogICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdldFByb2R1Y3RWZXJzaW9uID0gQCJVbmtu
b3duIjsKLSAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVsYXRvciA9IGZhbHNlOworICAg
IGRlYnVnZ2FibGVJbmZvLnRhcmdldElzU2ltdWxhdG9yID0gTk87CiAgICAgW3NlbGYgbG9hZEZv
ckRlYnVnZ2FibGU6ZGVidWdnYWJsZUluZm8gYmFja2VuZENvbW1hbmRzVVJMOmJhY2tlbmRDb21t
YW5kc1VSTF07CiB9CiAKQEAgLTE0OCw2ICsxNjAsOCBAQCAtICh2b2lkKXNlbmRNZXNzYWdlVG9G
cm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwogfQogCisvLyBNQVJLOiBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCBtZXRob2RzCisKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tl
bmQ6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIGlmIChfZGVsZWdhdGUgJiYgW19kZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvclZpZXdDb250cm9sbGVyOnNl
bmRNZXNzYWdlVG9CYWNrZW5kOildKQpAQCAtMTYyLDcgKzE3Niw3IEBAIC0gKHZvaWQpY2xvc2VG
cm9tRnJvbnRlbmQKIAogLy8gTUFSSzogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJQcml2YXRlIG1ldGhvZHMKIAotLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGVsZWdhdGUKKy0gKHZvaWQpX3Nl
dERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU+IF9OdWxsYWJsZSlkZWxlZ2F0ZQogewogICAgIHNlbGYud2ViVmlldy5fZGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNl
dERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCEhZGVsZWdhdGUpOwpAQCAtMTcwLDQgKzE4NCw2
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAKIEBlbmQKIAorTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggM2E5YzcxMGFlNDkwY2I3OWU2
YTE1NGQ3ZjA5NjE1ZjFhODgwYjQ1Mi4uYmZmYmMxNzA0NzE3MGIyNGI1MjNmMjRkNjZiNzNiMzQ3
YjNjZDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlclByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAogQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOworQHByb3RvY29sIF9XS0RpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaAppbmRleCAwNmY4ZjFmNzYyZTg5
Njg2ZmM1ZGMzZmM4OTBmMTNlMGIzNjNkMzMzLi5lNGNmNWEyZGMxMDJmNTk2ZDNhZWZlOGM2NDdi
NmY1YWE5Yjc5YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaApAQCAtMjksNiArMjksNyBAQAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1VzZXJDb250ZW50V29ybGQ7CitAY2xhc3MgV0tDb250
ZW50V29ybGQ7CiBAY2xhc3MgV0tXZWJWaWV3OwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tVc2VyU3R5bGVMZXZlbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDA2ODQ0MTJiMTM1MWYzMGE1
ZDQ4NGY5MDlkN2E0Yjk3YTcxY2E0MjYuLjc5MTVlYTNiMmY2NWRhNDhjZjRlYTk4MjAyNWE5M2U0
ZTE4YTdmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIl9XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiQVBJQXJyYXkuaCIKKyNpbXBvcnQg
IldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9y
dCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBhNDllNjUzOTdmNDc1
NzIzNzE4MzNjNWY3NTQ4NGNlZTFkM2NiOGQ4Li44YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFl
MzA3YjMxZDQ4NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCkBAIC0xMjQsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJ
bkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRh
dGEmKSBmaW5hbDsKKyAgICAgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclBy
b3h5JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICAgICAgICAgdm9pZCB3aWxsQ2xv
c2VMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFs
OwogI2VuZGlmCkBAIC0yMDEsNiArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJW
aWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Jl
cXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRs
ZXIgOiAxOworICAgICAgICBib29sIHdlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0
b3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yIDogMTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMjg3
NzljZTRiZmNiYzkxOWZmOGEzNzBlMDZhNmZlMWUzMDk5MDk0NS4uZDAzMzhmOGQ2ZTNiOWExM2Rm
MmFmMTUzYWNiNWRlYjM4ZTFmY2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElBcnJheS5oIgog
I2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCisj
aW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2ltcG9ydCAiX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3Rvcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTEzMSw2ICsxMzMs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVn
YXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3Rl
ZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1l
Om1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb25maWd1cmF0aW9uRm9y
TG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFj
aExvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbENsb3NlTG9jYWxJbnNwZWN0b3I6KV07CiAj
ZW5kaWYKQEAgLTgxNyw2ICs4MjAsMTggQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjoKICAgICB9
KS5nZXQoKV07CiB9CiAKK1JlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IFVJRGVsZWdh
dGU6OlVJQ2xpZW50Ojpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5
JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNv
bmZpZ3VyYXRpb24mPihbWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6
d3JhcHBlcihpbnNwZWN0b3IpXSBfYXBpT2JqZWN0XSk7Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3Bl
Y3RvclByb3h5JiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggZWMzMTBkOGEzMzg5MDVkMjZhOTQzZGRhNjE5N2YxMGUyOTJjODk5Zi4u
YjA0NzM5MzFkNzMxMGYyNThlOWJlY2NlNzBjZTUyMmM4OWE3ZTllNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoUmVmPEFQSTo6RGVidWdnYWJsZUluZm8+
JiYgZGVidWdnYWJsZUluZm8sIGNvbnN0IFN0cmluZyYgYmFja2VuZENvbW1hbmRzVVJMKQogewot
ICAgIGNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwotCiAgICAgbV9kZWJ1Z2dhYmxlSW5m
byA9IFdURk1vdmUoZGVidWdnYWJsZUluZm8pOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0g
YmFja2VuZENvbW1hbmRzVVJMOwogCisgICAgY3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7
CisKICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clVJOjpJbml0aWFsaXplKG1fZGVidWdnYWJsZUluZm8tPmRlYnVnZ2FibGVJbmZvRGF0YSgpLCBi
YWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCBkZWJhMGZlZTYyNTY0NTYyNWQ3NjM5NmIyYjA2NWEyMTJi
ZjkzODA4Li5jMDNhMmNhNTcwZDlmNmY4MGViYWFlNTRmYjkzYWQyNTcwY2I1ZmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtNDgsMTAgKzQ4LDEyIEBAIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEZWJ1Z2dhYmxlSW5mbzsKK2NsYXNzIEluc3Bl
Y3RvckNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7
CiAKQEAgLTYwLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUZy
b21Gcm9udGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkmKSA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDU3ZWYxNzQ5
NzM5NjUwMzljODJlOTQ4ZjhhZWVlNDJiOWNhNmI5YmEuLmRhZTM3YWNjZDdlYWIxYTdiNjljNzhh
MTlmY2JkZmRkYmZlNDIyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAi
QVBJRGVidWdnYWJsZUluZm8uaCIKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JVdGlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUuaD4KQEAgLTc3LDYgKzc4LDggQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCisgICAgLy8gTUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0
aG9kcworCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogICAgIHsKICAgICAgICAgbV9wcm94eS0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3Nh
Z2UpOwpAQCAtOTIsNiArOTUsMTEgQEAgcHVibGljOgogICAgICAgICBtX2luc3BlY3RvckNsaWVu
dC5jbG9zZUZyb21Gcm9udGVuZChtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXRJRCk7CiAgICAgfQog
CisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZvclJl
bW90ZUluc3BlY3RvcihSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSYpCisgICAgeworICAgICAgICBy
ZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgUmVmPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3Byb3h5OwogICAgIFJl
bW90ZUluc3BlY3RvckNsaWVudCYgbV9pbnNwZWN0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAyNDU0YWU5NTk0MTA3N2Q0MjQ4Y2U2YTUzN2I5NGUx
ZjIwZWUwMWJlLi5lNDNiMDI4NTRjMmIyYjFjMDI2NTRkYzY0MTc3ZmYzMDIxMzk0N2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNp
bXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bkludGVybmFsLmgiCiAjaW1wb3J0IDxTZWN1cml0eUludGVyZmFjZS9TRkNlcnRpZmljYXRlUGFu
ZWwuaD4KICNpbXBvcnQgPFNlY3VyaXR5SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgpAQCAtMTAzLDcgKzEwNCw4IEBAIFdl
YlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRl
bmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBtX29iakNBZGFwdGVyID0gYWRvcHROUyhbW1dLUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhbGxvY10gaW5pdFdpdGhSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTp0aGlzXSk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtb
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOm51
bGxwdHJdKTsKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gbV9jbGllbnQtPmNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aENvbmZpZ3VyYXRpb246IFdlYktpdDo6d3JhcHBlcihjb25maWd1cmF0
aW9uKSBpbnNwZWN0ZWRQYWdlOm51bGxwdHJdKTsKICAgICBbbV9pbnNwZWN0b3JWaWV3LmdldCgp
IHNldERlbGVnYXRlOm1fb2JqQ0FkYXB0ZXIuZ2V0KCldOwogCiAgICAgbV93aW5kb3cgPSBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRXaW5kb3coTlNaZXJvUmVjdCwgV2ViSW5zcGVj
dG9yUHJveHk6Okluc3BlY3Rpb25UYXJnZXRUeXBlOjpSZW1vdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaAppbmRleCAxMDcxOTI4NjY1ZTQ5ZWNjOGEyNDcxZDdmMTQ2OWE4MGNh
NmFkMjk2Li4zYTM0NmQ0MjFmOGE0MmQxN2VlNDQ0Y2UxNjQ0NDA1NWM0Y2FmNWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCA8
d3RmL05ha2VkUHRyLmg+CiAKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OworT0JKQ19DTEFTUyBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKQEAgLTQzLDcgKzQ0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3OwogQHByb3BlcnR5
IChub25hdG9taWMsIHdlYWspIGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOihOYWtl
ZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pilp
bnNwZWN0ZWRQYWdlOwogCiArIChCT09MKXZpZXdJc0luc3BlY3RvcldlYlZpZXc6KE5TVmlldyAq
KXZpZXc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCAxZWFhOTQz
ZjI3YTI3ZDY3YzYxMWZmNmQ2ZmJiZjM2MTYyYmY3MTk3Li42MjRlNmJiNTM5NmUyNDUyY2YxZjZj
MDg3MTRjOTE1MmE3MDZiY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2ltcG9y
dCAiV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIApAQCAt
NTIsMTMgKzUzLDE1IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IHsKICAgICBOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX2luc3BlY3RlZFBhZ2U7CiAg
ICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yV0tXZWJWaWV3PiBfd2ViVmlldzsKICAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPj4gX2RlbGVnYXRlOwor
ICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4paW5zcGVjdGVkUGFnZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJh
dGlvbjooX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gaW5zcGVjdGVk
UGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2UKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAg
IF9jb25maWd1cmF0aW9uID0gW2NvbmZpZ3VyYXRpb24gY29weV07CiAgICAgLy8gVGhlIChsb2Nh
bCkgaW5zcGVjdGVkIHBhZ2UgaXMgbmlsIGlmIHRoZSBjb250cm9sbGVyIGlzIGhvc3RpbmcgYSBS
ZW1vdGUgV2ViIEluc3BlY3RvciB2aWV3LgogICAgIF9pbnNwZWN0ZWRQYWdlID0gaW5zcGVjdGVk
UGFnZTsKIApAQCAtODcsNyArOTAsNyBAQCAtIChXS1dlYlZpZXcgKil3ZWJWaWV3CiAgICAgLy8g
Q29uc3RydWN0IGxhemlseSBzbyB0aGUgY2xpZW50IGNhbiBzZXQgdGhlIGRlbGVnYXRlIGJlZm9y
ZSB0aGUgV2ViVmlldyBpcyBjcmVhdGVkLgogICAgIGlmICghX3dlYlZpZXcpIHsKICAgICAgICAg
TlNSZWN0IGluaXRpYWxGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eTo6aW5pdGlhbFdpbmRvd1dpZHRoLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpp
bml0aWFsV2luZG93SGVpZ2h0KTsKLSAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5TKFtbV0tJbnNw
ZWN0b3JXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbEZyYW1lIGNvbmZpZ3Vy
YXRpb246W3NlbGYgY29uZmlndXJhdGlvbl1dKTsKKyAgICAgICAgX3dlYlZpZXcgPSBhZG9wdE5T
KFtbV0tJbnNwZWN0b3JXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlhbEZyYW1l
IGNvbmZpZ3VyYXRpb246c2VsZi53ZWJWaWV3Q29uZmlndXJhdGlvbl0pOwogICAgICAgICBbX3dl
YlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IHNldE5hdmlnYXRp
b25EZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IHNldEluc3BlY3RvcldLV2ViVmll
d0RlbGVnYXRlOnNlbGZdOwpAQCAtMTA0LDcgKzEwNyw3IEBAIC0gKHZvaWQpc2V0RGVsZWdhdGU6
KGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgX2Rl
bGVnYXRlID0gZGVsZWdhdGU7CiB9CiAKLS0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uCistIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopd2ViVmlld0NvbmZpZ3VyYXRp
b24KIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xMjMsNiArMTI2LDggQEAgLSAoV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIHByZWZlcmVuY2VzLl9kaWFnbm9z
dGljTG9nZ2luZ0VuYWJsZWQgPSBZRVM7CiAKKyAgICBbX2NvbmZpZ3VyYXRpb24gYXBwbHlUb1dl
YlZpZXdDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOworICAgIAogICAgIGlmICgh
IV9kZWxlZ2F0ZSAmJiBbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoaW5z
cGVjdG9yVmlld0NvbnRyb2xsZXJJbnNwZWN0b3JJc1VuZGVyVGVzdDopXSkgewogICAgICAgICBp
ZiAoW19kZWxlZ2F0ZSBpbnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3BlY3RvcklzVW5kZXJUZXN0
OnNlbGZdKSB7CiAgICAgICAgICAgICBwcmVmZXJlbmNlcy5faGlkZGVuUGFnZURPTVRpbWVyVGhy
b3R0bGluZ0VuYWJsZWQgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDE4ZTNi
NzU0ZjlmMGUzNjNiMzY4ZjU0OGViOGE0MzBkNWM4OTliMjIuLjIyZDNjY2I0Y2IwMmMyNTNiNTA3
ZjZhOWUyZWI0YmFiMGFkYTBhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtMjgs
MTQgKzI4LDE5IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBvcnQgIkFQSUluc3BlY3Rv
ckNsaWVudC5oIgorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgorI2ltcG9y
dCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5oIgogI2lt
cG9ydCAiV0tJbnNwZWN0b3JQcml2YXRlTWFjLmgiCiAjaW1wb3J0ICJXS0luc3BlY3RvclZpZXdD
b250cm9sbGVyLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9ydCAiV0tWaWV3SW50ZXJu
YWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJJbnNwZWN0
b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNpbXBvcnQgIldlYlBh
Z2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9y
V2luZG93LmgiCiAjaW1wb3J0IDxTZWN1cml0eUludGVyZmFjZS9TRkNlcnRpZmljYXRlUGFuZWwu
aD4KQEAgLTI5MSw3ICsyOTYsOCBAQCBXZWJQYWdlUHJveHkqIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgTlNWaWV3ICppbnNwZWN0ZWRWaWV3ID0g
aW5zcGVjdGVkUGFnZSgpLT5pbnNwZWN0b3JBdHRhY2htZW50VmlldygpOwogICAgIFtbTlNOb3Rp
ZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6bV9vYmpDQWRhcHRlci5n
ZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdGVkVmlld0ZyYW1lRGlkQ2hhbmdlOikgbmFt
ZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6aW5zcGVjdGVkVmlld107
CiAKLSAgICBtX2luc3BlY3RvclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkUGFnZTppbnNwZWN0ZWRQYWdl
KCldKTsKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
ID0gaW5zcGVjdGVkUGFnZSgpLT51aUNsaWVudCgpLmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3Bl
Y3RvcigqaW5zcGVjdGVkUGFnZSgpLCAgKnRoaXMpOworICAgIG1faW5zcGVjdG9yVmlld0NvbnRy
b2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdp
dGhDb25maWd1cmF0aW9uOiBXZWJLaXQ6OndyYXBwZXIoY29uZmlndXJhdGlvbi5nZXQoKSkgaW5z
cGVjdGVkUGFnZTppbnNwZWN0ZWRQYWdlKCldKTsKICAgICBbbV9pbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5nZXQoKSBzZXREZWxlZ2F0ZTptX29iakNBZGFwdGVyLmdldCgpXTsKIAogICAgIFdlYlBh
Z2VQcm94eSAqaW5zcGVjdG9yUGFnZSA9IFttX2luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZp
ZXddLT5fcGFnZS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRl
eCAwMmRhYzFmNTYwZjMwMDc5MDVhYjJjNzJhZTY1MTBlYzg4ZjE2MzkzLi4yMWRiMTEzZTRjOGYx
YWY4YzBkMzgyOGZlYjEzMWE2NTg0ZTBmNGM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JD
bGllbnQuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1Ip
CiAKICNpbmNsdWRlICJBUElEZWJ1Z2dhYmxlSW5mby5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIgog
I2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICAgICAgbV9wcm94eS0+c2hvdygpOwogICAg
IH0KIAorICAgIC8vIE1BUks6IFJlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50IG1ldGhvZHMK
KwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIG1fcHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsK
QEAgLTgyLDYgKzg1LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQuY2xv
c2VGcm9tRnJvbnRlbmQobV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0SUQpOwogICAgIH0KIAorICAg
IFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJ
bnNwZWN0b3IoUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkmKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgfQorCiBwcml2YXRl
OgogICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbV9wcm94eTsKICAgICBSZW1vdGVJ
bnNwZWN0b3JDbGllbnQmIG1faW5zcGVjdG9yQ2xpZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTE5ZWU5NTU3NTI3YTcwM2E1YmJk
NmU2ZjI3N2IxYWMyZWFlOGI2MS4uMmQ3OWM0ODUxMDA5ZTQ0MmMzZTY5ZTZjYjJjNzRjMjY4OWVi
OTM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xNDE4LDYgKzE0MTgsOSBAQAogCQk5OTI0OUFENTFGMUYxRTU2MDBCNjJGQkIgLyog
QXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTkyNDlBRDMxRjFGMUUzMzAwQjYyRkJCIC8qIEF1dG9t
YXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmNwcCAqLzsgfTsKIAkJOTkyNDlBRDYxRjFGMUU1RjAw
QjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNoZXJzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTI0OUFENDFGMUYxRTMzMDBCNjJGQkIg
LyogQXV0b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCAqLzsgfTsKIAkJOTk0QkFERjQxRjdE
NzgxNDAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEJBREYxMUY3RDc3RUEwMEI1NzFF
NyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmggKi87IH07CisJCTk5NEM2MDQyMjUzQ0E1
NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAg
LyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTk5NEM2MDQ1MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKKwkJOTk0QzYwNDcyNTNDQUNCODAw
QkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBB
UElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi87IH07CiAJCTk5NTIyNkQ2MjA3RDE4NDYwMEY3
ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAvKiBTaW11
bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJOTk1NUE2RUMxQzc5ODBDMjAwRUI2QTkz
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFQjFDNzk4MEJCMDBFQjZBOTMgLyogV2ViQXV0b21hdGlv
blNlc3Npb24uaCAqLzsgfTsKIAkJOTk1NUE2RUYxQzc5ODEwODAwRUI2QTkzIC8qIEF1dG9tYXRp
b24uanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQ1MzMsNiArNDUzNiwxMSBAQAog
CQk5OTQ2RUY4NTFFN0IwMjY2MDA1NDFFNzkgLyogV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJBdXRvbWF0aW9uU2Vz
c2lvbklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFERjExRjdENzdF
QTAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURGMjFGN0Q3N0VCMDBCNTcxRTcgLyogV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTk5NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDEyNTNDQTU0
NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0NDI1M0NBQkEyMDBCREYwNjAgLyog
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5z
cGVjdG9yQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
UElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTk5NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTUyMjZENDIwN0Qx
ODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5OTUyMjZENTIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVk
SW5wdXREaXNwYXRjaGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk5NTVBNkU5MUM3OTgwQkIwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmpzb247IHBhdGggPSBBdXRvbWF0aW9uLmpzb247IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC03MzI1LDYgKzczMzMsOSBAQAogCQkJCTM3QTY0RTU0MThGMzhFM0MwMEVCMzBG
MSAvKiBfV0tJbnB1dERlbGVnYXRlLmggKi8sCiAJCQkJNUNBRkRFNDIyMTMwODQzNTAwQjFGN0Ux
IC8qIF9XS0luc3BlY3Rvci5oICovLAogCQkJCTVDQUZERTQzMjEzMDg0MzYwMEIxRjdFMSAvKiBf
V0tJbnNwZWN0b3IubW0gKi8sCisJCQkJOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAg
LyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk5OTRDNjA0NDI1M0NBQkEy
MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggKi8sCiAJCQkJ
OTkxRjQ5MkQyM0E4MTJDNTAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmgg
Ki8sCiAJCQkJOTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvLm1tICovLAogCQkJCTk5MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBfV0tJbnNwZWN0
b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggKi8sCkBAIC05MzE3LDYgKzkzMjgsOCBAQAogCQkJ
CTUxNDNCMjYxMURERDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAog
CQkJCTdBOEE5RDU3MUVGMTE5QUEwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5o
ICovLAogCQkJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQu
aCAqLywKKwkJCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5jcHAgKi8sCisJCQkJOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQkzMUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyog
QVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICovLAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdC
RkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVyZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3
NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTA3
NTEsNiArMTA3NjQsOCBAQAogCQkJCTUxMEY1OTEwMURERTI5NjkwMDQxMkZGNSAvKiBfV0tJY29u
TG9hZGluZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0E2NEU1NTE4RjM4RTNDMDBF
QjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUNBRkRFNDUy
MTMwODQ2MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTk0
QzYwNDIyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk5NEM2MDQ1MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MUY0OTJGMjNBODEy
QzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5
MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDg2NCw2ICsx
MDg3OSw3IEBACiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVu
ZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzc2OTA3OUEx
OEYzMUNCMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0NzI1M0NBQ0I4MDBCREYwNjAgLyogQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCMzYyOEYyMTQx
RUE1RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlD
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBB
UElMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMzYzZkNmFjYzc3NzJhZjIzZDBiNTIyN2VlMmJl
ZGVhYjI0Yjc3NjguLjRlNzk2NWY3OTNmNjEzY2Q0ODRkYjE1OTE5NzRlNTUwMmNmNTk5YmQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMC0xMC0yMSAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKworICAg
ICAgICBbQ29jb2FdIEludHJvZHVjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGZvciBjdXN0
b21pemluZyBsb2NhbCBhbmQgcmVtb3RlIFdlYiBJbnNwZWN0b3JzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc4OTYKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzcwMzU1OTEwPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBhbiBBUEkgdGVzdCBmb3IgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4g
RGlzYWJsZWQgZm9yIG5vdywgd2lsbAorICAgICAgICBiZSB0dXJuZWQgYmFjayBvbiB3aGVuIG1v
cmUgd2ViIGV4dGVuc2lvbnMgQVBJIGhhcyBsYW5kZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW06CisgICAgICAgICgt
W1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6Cisg
ICAgICAgICgtW1NpbXBsZVVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFz
azpdKToKKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSBfd2ViVmlldzpjb25maWd1cmF0aW9uRm9yTG9j
YWxJbnNwZWN0b3I6XSk6CisgICAgICAgICgtW1VJRGVsZWdhdGUgX3dlYlZpZXc6ZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3I6XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0xMC0yMSAgTGF1cm8g
TW91cmEgIDxsbW91cmFAaWdhbGlhLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogQ2hlY2sgZm9y
IGR1cGxpY2F0ZWQga2V5cyBpbiBqc29uIGV4cGVjdGF0aW9uIGZpbGVzCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0KaW5kZXggNjEwM2IyMDBmNzczMjU2YzdjZGJkMzEyMzIwOTFjZWI4MWE5MDgxYy4u
MTIwNjI2NTY1MDU1NTQ2YzRhNWE2YjZmYTcxNzBiNmI1YTBlNmVmMyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNwZWN0b3JE
ZWxlZ2F0ZS5tbQpAQCAtMjgsOSArMjgsMTMgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQg
IlV0aWxpdGllcy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVIYW5kbGVyLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tV
UkxTY2hlbWVUYXNrLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLSW5zcGVjdG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tJbnNwZWN0b3JQcml2YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMzksNiArNDMsNyBAQAogI2lmIFBMQVRGT1JNKE1BQykKIAogQGNsYXNzIEluc3BlY3Rv
ckRlbGVnYXRlOworQGNsYXNzIFNpbXBsZVVSTFNjaGVtZUhhbmRsZXI7CiAKIHN0YXRpYyBib29s
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCB3aWxs
Q2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwpAQCAtNDYsOSArNTEsNTQgQEAgc3Rh
dGljIGJvb2wgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsK
IHN0YXRpYyBib29sIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZh
bHNlOwogc3RhdGljIGJvb2wgc2hvdWxkQ2FsbEluc3BlY3RvckNsb3NlUmVlbnRyYW50bHkgPSBm
YWxzZTsKIHN0YXRpYyBib29sIG9wZW5VUkxFeHRlcm5hbGx5Q2FsbGVkID0gZmFsc2U7CitzdGF0
aWMgYm9vbCBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKK3N0
YXRpYyBib29sIHN0YXJ0VVJMU2NoZW1lVGFza0NhbGxlZCA9IGZhbHNlOworCitzdGF0aWMgUmV0
YWluUHRyPFNpbXBsZVVSTFNjaGVtZUhhbmRsZXI+IHNoYXJlZFVSTFNjaGVtZUhhbmRsZXI7CiBz
dGF0aWMgUmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4+IHNoYXJlZEluc3BlY3Rv
ckRlbGVnYXRlOwogc3RhdGljIFJldGFpblB0cjxOU1VSTD4gdXJsVG9PcGVuOwogCitzdGF0aWMg
dm9pZCByZXNldEdsb2JhbFN0YXRlKCkKK3sKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOworICAgIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7
CisgICAgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAg
ICBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBz
aG91bGRDYWxsSW5zcGVjdG9yQ2xvc2VSZWVudHJhbnRseSA9IGZhbHNlOworICAgIG9wZW5VUkxF
eHRlcm5hbGx5Q2FsbGVkID0gZmFsc2U7CisgICAgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVj
dG9yQ2FsbGVkID0gZmFsc2U7CisgICAgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0gZmFsc2U7
CisKKyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyLmNsZWFyKCk7CisgICAgc2hhcmVkSW5zcGVj
dG9yRGVsZWdhdGUuY2xlYXIoKTsKKyAgICB1cmxUb09wZW4uY2xlYXIoKTsKK30KKworQGludGVy
ZmFjZSBTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxl
cj4KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBOU1VSTCAqZXhwZWN0ZWRVUkw7CitAZW5k
CisKK0BpbXBsZW1lbnRhdGlvbiBTaW1wbGVVUkxTY2hlbWVIYW5kbGVyCisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXRhc2sKK3sKKyAgICBpZiAoX2V4cGVjdGVkVVJMKQorICAgICAgICBFWFBFQ1Rf
U1RSRVEoX2V4cGVjdGVkVVJMLmFic29sdXRlU3RyaW5nLlVURjhTdHJpbmcsIHRhc2sucmVxdWVz
dC5VUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmluZyk7CisKKyAgICBSZXRhaW5QdHI8TlNVUkxS
ZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdp
dGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250
ZW50TGVuZ3RoOjEgdGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZl
UmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOworICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlczoiMSIgbGVuZ3RoOjFdXTsKKyAgICBbdGFzayBkaWRGaW5pc2hdOwor
CisgICAgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0gdHJ1ZTsKK30KKworLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hl
bWVUYXNrPil0YXNrCit7Cit9CisKK0BlbmQKKwogQGludGVyZmFjZSBJbnNwZWN0b3JEZWxlZ2F0
ZSA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4KIEBlbmQKIApAQCAtNzcsMTggKzEy
NywyMyBAQCBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBVSURlbGVnYXRlCiAKLS0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0lu
c3BlY3RvciAqKWluc3BlY3RvcgorLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKV93ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rvcjoo
X1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCiB7Ci0gICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JD
YWxsZWQgPSBmYWxzZTsKLSAgICB3aWxsQ2xvc2VMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNl
OwotICAgIGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0g
ICAgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0KLSAg
ICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworICAgIGNvbmZpZ3Vy
YXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCA9IHRydWU7CiAKICAgICBzaGFyZWRJbnNwZWN0
b3JEZWxlZ2F0ZSA9IFtJbnNwZWN0b3JEZWxlZ2F0ZSBuZXddOwogICAgIFtpbnNwZWN0b3Igc2V0
RGVsZWdhdGU6c2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUuZ2V0KCldOwogCisgICAgc2hhcmVkVVJM
U2NoZW1lSGFuZGxlciA9IFtbU2ltcGxlVVJMU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF07Cisg
ICAgUmV0YWluUHRyPF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24+IGluc3BlY3RvckNvbmZpZ3Vy
YXRpb24gPSBbW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdOworICAgIFtp
bnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2hhcmVkVVJMU2NoZW1l
SGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0aW5nIl07CisgICAgcmV0dXJuIFtpbnNw
ZWN0b3JDb25maWd1cmF0aW9uIGF1dG9yZWxlYXNlXTsKK30KKworLSAodm9pZClfd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVjdG9y
ICopaW5zcGVjdG9yCit7CisgICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVj
dG9yKTsKKwogICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKIH0KIApA
QCAtMTA1LDYgKzE2MCw4IEBAIEBlbmQKIAogVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBJbnNw
ZWN0b3JMaWZlY3ljbGVDYWxsYmFja3MpCiB7CisgICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCiAg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CiAgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMu
X2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CkBAIC0xMjcs
NiArMTg0LDggQEAgVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBJbnNwZWN0b3JMaWZlY3ljbGVD
YWxsYmFja3MpCiAKIFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgSW5zcGVjdG9yQ2xvc2VDYWxs
ZWRSZWVudHJhbnRseSkKIHsKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKICAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXdd
KTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTE0OSw2ICsyMDgsOCBA
QCBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIEluc3BlY3RvckNsb3NlQ2FsbGVkUmVlbnRyYW50
bHkpCiAKIFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgU2hvd1VSTEV4dGVybmFsbHkpCiB7Cisg
ICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgd2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7
CiAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25m
aWd1cmF0aW9uLmdldCgpXSk7CkBAIC0xNzEsNCArMjMyLDM4IEBAIFRFU1QoV0tJbnNwZWN0b3JE
ZWxlZ2F0ZSwgU2hvd1VSTEV4dGVybmFsbHkpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZvcGVuVVJMRXh0ZXJuYWxseUNhbGxlZCk7CiB9CiAKKy8vIEZJWE1FOiByZS1lbmFibGluZyB0
aGlzIHRlc3QgY2FzZSBpcyBibG9ja2VkLCB0cmFja2luZyB0aGlzIHRhc2sgaW4gPHJkYXI6Ly9w
cm9ibGVtLzcwNTA1MjcyPi4KK1RFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgRElTQUJMRURfSW5z
cGVjdG9yQ29uZmlndXJhdGlvbikKK3sKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKKyAgICBh
dXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2
ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIHVp
RGVsZWdhdGUgPSBhZG9wdE5TKFtVSURlbGVnYXRlIG5ld10pOworCisgICAgW3dlYlZpZXcgc2V0
VUlEZWxlZ2F0ZTp1aURlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90aXRsZT48L2hlYWQ+
PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBFWFBFQ1RfRkFMU0Uod2Vi
Vmlldy5nZXQoKS5faXNCZWluZ0luc3BlY3RlZCk7CisKKyAgICBjb25maWd1cmF0aW9uRm9yTG9j
YWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxl
ZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3Rv
ckNhbGxlZCk7CisKKyAgICAvLyBGSVhNRTogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcidzIG5h
dmlnYXRpb24gZGVsZWdhdGUgY2FuY2VscyBhbGwgbWFpbiBmcmFtZQorICAgIC8vIGxvYWRzIHRo
YXQgYXJlIG5vdCB0aGUgV2ViIEluc3BlY3RvciBwYWdlLiBTbywgdGhpcyBjYW5ub3QgYmUgZnVs
bHkgdGVzdGVkIHVudGlsCisgICAgLy8gd2UgY2FuIHVzZWQgdGhlIGNyZWF0ZVRhYiBBUEkgdG8g
bG9hZCB0aGUgY3VzdG9tIFVSTCBzY2hlbWUgcmVzb3VyY2UgaW4gYW4gaWZyYW1lLgorICAgIHVy
bFRvT3BlbiA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdGluZzptYWluMSJdOworICAgIHNo
YXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0KCkuZXhwZWN0ZWRVUkwgPSB1cmxUb09wZW4uZ2V0KCk7
CisgICAgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0gZmFsc2U7CisgICAgW1t3ZWJWaWV3IF9p
bnNwZWN0b3JdIF9vcGVuVVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6dXJsVG9PcGVuLmdldCgpIHVz
ZUZyb250ZW5kQVBJOk5PXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0VVJM
U2NoZW1lVGFza0NhbGxlZCk7CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gY2xvc2VdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmd2lsbENsb3NlTG9jYWxJbnNwZWN0b3JDYWxs
ZWQpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412128</attachid>
            <date>2020-10-22 13:51:28 -0700</date>
            <delta_ts>2020-10-22 14:01:13 -0700</delta_ts>
            <desc>Patch v3.3 [FOR LANDING]</desc>
            <filename>bug-217896-20201022135128.patch</filename>
            <type>text/plain</type>
            <size>61036</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGUyYTBjZjVkNDFiNzJlMDJj
OWMyOGMwYTA4YmQ3Njg3MDRhMmM4MDIuLmI3YWQzMGI1ZjAwMzY0NjJjMGJjNGQ0MjBkNGExNWIz
NmEzOWEyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMTAtMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2UgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgdGhlIGJlaGF2aW9yIG9mIFdlYiBJbnNw
ZWN0b3IgaW5zdGFuY2VzLgorICAgICAgICBUaGUgaW5pdGlhbCBjdXN0b21pemF0aW9uIGlzIHRv
IGFsbG93IGZvciBjdXN0b20gV0tVUkxTY2hlbWVIYW5kbGVycyB0byBiZSB1c2VkIGJ5IFdlYiBJ
bnNwZWN0b3IncworICAgICAgICBXZWJWaWV3IHRvIGxvYWQgcmVzb3VyY2VzIGZyb20gY2xpZW50
LWNvbnRyb2xsZWQgbG9jYXRpb25zLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBsb2Fk
aW5nCisgICAgICAgIG9mIGV4dGVuc2lvbiByZXNvdXJjZXMgdXNpbmcgYSBjdXN0b20gc2NoZW1l
IHN1Y2ggYXMgd2ViLWV4dGVuc2lvbjovLy4KKworICAgICAgICBTY2hlbWUgaGFuZGxlcnMgbmVl
ZCB0byBiZSByZWdpc3RlcmVkIGF0IFdlYlZpZXcgY3JlYXRpb24gdGltZSB2aWEgV0tXZWJWaWV3
Q29uZmlndXJhdGlvbi4gSW4KKyAgICAgICAgb3JkZXIgdG8gY29uZmlndXJlIGEgaW5zcGVjdG9y
IHBhZ2Ugc3VtbW9uZWQgZnJvbSB3aXRoaW4gV2ViS2l0IChpLmUuLCBJbnNwZWN0IEVsZW1lbnQg
Y29udGV4dCBtZW51IGl0ZW0pLAorICAgICAgICB3ZSBuZWVkIHRvIGFkZCBhIG1ldGhvZCB0byB0
aGUgVUkgZGVsZWdhdGUgdG8gZ2V0IGEgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBwYWdlIGlzIGJl
aW5nIGNyZWF0ZWQuCisKKyAgICAgICAgVGhpcyBjb25maWd1cmF0aW9uIG9iamVjdCBpcyB1c2Vk
IGluIHR3byBkaWZmZXJlbnQgU1BJIChsb2NhbCBhbmQgcmVtb3RlIGNhc2VzKToKKworICAgICAg
ICAtIEFzIHBhcnQgb2YgV0tVSURlbGVnYXRlUHJpdmF0ZSwgdG8gcmV0cmlldmUgYSBfV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uIGdpdmVuIGEgX1dLSW5zcGVjdG9yLgorICAgICAgICAtIEFzIGFu
IGFyZ3VtZW50IHRvIHRoZSBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBpbml0
aWFsaXplci4gSXQncyB1c2VkIGxhdGVyIGFzIG5lZWRlZC4KKworICAgICAgICBOZXcgQVBJIHRl
c3Q6IFdLSW5zcGVjdG9yRGVsZWdhdGUuSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4KKworICAgICAg
ICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisgICAgICAgIEFkZCBuZXcgZmlsZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGRl
YWxsb2NdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBfYXBpT2JqZWN0
XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpmb3JVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24gYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAgQ3JlYXRlIF9XS0luc3Bl
Y3RvckNvbmZpZ3VyYXRpb24gYW5kIGFkZCBhIG1ldGhvZCB0byByZWdpc3RlciBXS1VSTFNjaGVt
ZUhhbmRsZXJzLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgorICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09i
amVjdCk6CisgICAgICAgIEFkZCBuZXcgQVBJIG9iamVjdCB0eXBlcy4gQWRkIG1pc3NpbmcgSW5z
cGVjdG9yRXh0ZW5zaW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpz
ZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OlVJQ2xpZW50Ojpjb25m
aWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IpOgorICAgICAgICBBZGQgbmV3IGNsaWVudC9kZWxl
Z2F0ZSBtZXRob2QgdG8gZmV0Y2ggYW4gaW5zcGVjdG9yIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbToKKyAgICAg
ICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1
cmF0aW9uOl0pOiBSZW5hbWVkIGZyb20gLWluaXQuCisgICAgICAgICgtW19XS1JlbW90ZVdlYklu
c3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bX1dLUmVt
b3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgbG9hZEZvckRlYnVnZ2FibGVUeXBlOmJhY2tl
bmRDb21tYW5kc1VSTDpdKToKKyAgICAgICAgKC1bX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgY29uZmlndXJhdGlvbkZvckRlYnVnZ2FibGU6XSk6CisgICAgICAgICgtW19XS1Jl
bW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIF9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlOl0pOgorICAgICAgICBTdG9yZSBhIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYW5kIHBy
b3ZpZGUgaXQgd2hlbiBhc2tlZCBieSBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQpOgorICAgICAgICBT
dG9yZSBtX2RlYnVnZ2FibGVJbmZvIGJlZm9yZSBjcmVhdGluZyB0aGUgcGFnZSBhbmQgd2luZG93
LiBJdCdzIHVzZWQgZnJvbSBpbnNpZGUKKyAgICAgICAgcGxhdGZvcm1DcmVhdGVGcm9udGVuZFBh
Z2VBbmRXaW5kb3cgdG8gcGFzcyBhcyBhbiBhcmd1bWVudCB0byB0aGUgZGVsZWdhdGUgbWV0aG9k
LgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdyk6CisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OldlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSk6CisgICAgICAg
IE9idGFpbiBhIGNvbmZpZ3VyYXRpb24gYW5kIHVzZSBpdCB0byBpbml0aWFsaXplIHRoZSBXS0lu
c3BlY3RvclZpZXdDb250cm9sbGVyLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdFdpdGhDb25maWd1cmF0aW9uOmluc3BlY3RlZFBhZ2U6
XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10pOgorICAg
ICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXdDb25maWd1cmF0aW9uXSk6
IFJlbmFtZWQgZnJvbSAtY29uZmlndXJhdGlvbi4KKyAgICAgICAgKC1bV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlciBpbml0V2l0aEluc3BlY3RlZFBhZ2U6XSk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgY29uZmlndXJhdGlvbl0pOiBEZWxldGVkLgorICAg
ICAgICBBcHBseSB0aGUgVVJMIHNjaGVtZSBoYW5kbGVycyByZWdpc3RlcmVkIGluIHRoZSBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uIHRvIHRoZQorICAgICAgICBXS1dlYlZpZXdDb25maWd1cmF0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3Rv
ckNsaWVudC5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9zb2NrZXQvUmVtb3Rl
SW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgU3R1YiBvdXQgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHlDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tOgorICAgICAgICBGaXggYnVp
bGQgcHJvYmxlbXMgY2F1c2VkIGJ5IHJlcGFydGl0aW9uaW5nIG9mIHVuaWZpZWQgc291cmNlcy4K
KwogMjAyMC0xMC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgogCiAgICAgICAgIERvbid0IGNyYXNoIHdoZW4gZGVhbGxvY2F0aW5nIFdLV2ViVmlldyBkdXJp
bmcgVExTIGhhbmRzaGFrZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SU9iamVjdC5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDQ1
N2MyNjIyYWYxYWJkYTNkZmU2Mzc3MGUyNzE0ZDEyZjdjN2M0OGYuLjZkMDY1NjQ1ZGNlZTYyZTU5
ZDUwZGJlZjM3NDM1YTQ5YTgwZWI2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9BUElPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0
LmgKQEAgLTEzNiw2ICsxMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgIEdyYW1tYXJEZXRhaWwsCiAg
ICAgICAgIEljb25EYXRhYmFzZSwKICAgICAgICAgSW5zcGVjdG9yLAorICAgICAgICBJbnNwZWN0
b3JDb25maWd1cmF0aW9uLAogICAgICAgICBLZXlWYWx1ZVN0b3JhZ2VNYW5hZ2VyLAogICAgICAg
ICBNZWRpYUNhY2hlTWFuYWdlciwKICAgICAgICAgTWVzc2FnZUxpc3RlbmVyLApAQCAtMzgwLDYg
KzM4MSw3IEBAIHRlbXBsYXRlPD4gc3RydWN0IEVudW1UcmFpdHM8QVBJOjpPYmplY3Q6OlR5cGU+
IHsKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OkdyYW1tYXJEZXRhaWwsCiAgICAgICAgIEFQ
STo6T2JqZWN0OjpUeXBlOjpJY29uRGF0YWJhc2UsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBl
OjpJbnNwZWN0b3IsCisgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpJbnNwZWN0b3JDb25maWd1
cmF0aW9uLAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6S2V5VmFsdWVTdG9yYWdlTWFuYWdl
ciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lZGlhQ2FjaGVNYW5hZ2VyLAogICAgICAg
ICBBUEk6Ok9iamVjdDo6VHlwZTo6TWVzc2FnZUxpc3RlbmVyLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvQVBJT2JqZWN0Lm1tCmluZGV4IDE3MzBiZDQ5M2ZkMGI0NmRlZWNjMjQ3ZDdjMTgyY2Q2
ODI4ZGE2MzEuLmM5NDIwY2Q1ZjIwZGIxMTk5YTJmZjBhNTM1Y2UwMDljZjkyODY1YTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3QubW0KQEAgLTc5LDYgKzc5LDcgQEAKICNp
bXBvcnQgIl9XS0ZyYW1lVHJlZU5vZGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLR2VvbG9jYXRp
b25Qb3NpdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwu
aCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5z
cGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0ludGVybmFsRGVidWdGZWF0dXJlSW50ZXJu
YWwuaCIKQEAgLTI2NCw3ICsyNjUsMTEgQEAgdm9pZCogT2JqZWN0OjpuZXdPYmplY3Qoc2l6ZV90
IHNpemUsIFR5cGUgdHlwZSkKICAgICBjYXNlIFR5cGU6Okluc3BlY3RvcjoKICAgICAgICAgd3Jh
cHBlciA9IFtfV0tJbnNwZWN0b3IgYWxsb2NdOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisK
KyAgICBjYXNlIFR5cGU6Okluc3BlY3RvckNvbmZpZ3VyYXRpb246CisgICAgICAgIHdyYXBwZXIg
PSBbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAg
ICAgY2FzZSBUeXBlOjpOYXZpZ2F0aW9uOgogICAgICAgICB3cmFwcGVyID0gW1dLTmF2aWdhdGlv
biBhbGxvY107CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5kZXggNzk2ZGI2OTk2ZWVkZmU1
YjdlOTI4MDAxMzcyMDU0Y2Y2OWMzODA0Ni4uMTg3MzM2NGNlYTVlODdiMDhlZjcxMjE3NzcxOWI5
N2JiNDFlOTdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC0zNDIsNiArMzQyLDcgQEAgVUlQcm9jZXNzL0FQ
SS9BUElGcmFtZUluZm8uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUZyYW1lVHJlZU5vZGUuY3BwCiBV
SVByb2Nlc3MvQVBJL0FQSUhUVFBDb29raWVTdG9yZS5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJSGl0
VGVzdFJlc3VsdC5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5j
cHAKIFVJUHJvY2Vzcy9BUEkvQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSU5hdmlnYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25EYXRhLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGY2OWEyZGQzOWIwZTFlMjBjMWJiZmMxM2E1ZDQ0
MTU5Mzc5MjBiZmQuLjk5YmVhMWZiNTllOTZkNmEwMGVmMWJiYTA4YTcyNGIxZjI4ODcwMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI1Niw2ICsyNTYsNyBAQCBVSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0V4cGVyaW1lbnRhbEZlYXR1cmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRnJh
bWVUcmVlTm9kZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tHZW9sb2NhdGlvblBvc2l0aW9u
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvclRlc3RpbmcubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVi
dWdnYWJsZUluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yV2luZG93Lm1t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTFmZjMzOTJjMTY3N2NmMGE3MmYwNDJkMjdl
Y2U1Y2M5NGE3Y2NlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaCIKKworI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIKKworbmFtZXNw
YWNlIEFQSSB7CisKK1JlZjxJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBJbnNwZWN0b3JDb25maWd1
cmF0aW9uOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc3BlY3RvckNv
bmZpZ3VyYXRpb24pOworfQorCit2b2lkIEluc3BlY3RvckNvbmZpZ3VyYXRpb246OmFkZFVSTFNj
aGVtZUhhbmRsZXIoUmVmPFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlcj4mJiB1cmxTY2hlbWVI
YW5kbGVyLCBjb25zdCBXVEY6OlN0cmluZyYgdXJsU2NoZW1lKQoreworICAgIG1fY3VzdG9tVVJM
U2NoZW1lcy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoV1RGTW92ZSh1cmxTY2hlbWVIYW5kbGVyKSwg
dXJsU2NoZW1lKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEFQSQorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kZDk1ZWIwZDZmY2U0YzU4YzNjYjI2MDRiYWRkMGRjYjJlMTc2ZmE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZp
Z3VyYXRpb24uaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2Vi
VVJMU2NoZW1lSGFuZGxlcjsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK3VzaW5nIFVSTFNjaGVt
ZUhhbmRsZXJQYWlyID0gc3RkOjpwYWlyPFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+
LCBXVEY6OlN0cmluZz47CisKK2NsYXNzIEluc3BlY3RvckNvbmZpZ3VyYXRpb24gZmluYWwgOiBw
dWJsaWMgQVBJOjpPYmplY3RJbXBsPE9iamVjdDo6VHlwZTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY3Jl
YXRlKCk7CisgICAgCisgICAgdm9pZCBhZGRVUkxTY2hlbWVIYW5kbGVyKFJlZjxXZWJLaXQ6Oldl
YlVSTFNjaGVtZUhhbmRsZXI+JiYsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmxTY2hlbWUpOworICAg
IGNvbnN0IFZlY3RvcjxVUkxTY2hlbWVIYW5kbGVyUGFpcj4mIHVybFNjaGVtZUhhbmRsZXJzKCkg
eyByZXR1cm4gbV9jdXN0b21VUkxTY2hlbWVzOyB9CisKK3ByaXZhdGU6CisgICAgVmVjdG9yPFVS
TFNjaGVtZUhhbmRsZXJQYWlyPiBtX2N1c3RvbVVSTFNjaGVtZXM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKaW5kZXgg
N2I0ZjkzYWE0MjY1NDFmZGIzMWVjODgxNzcwYjJmMzM2YWVlOGY4Yi4uYWE3ZDg5YzAxZTczNTIw
Y2UzZWUwNDIyNmI5YWU4NTk3MGJmYWE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVVJQ2xpZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNs
dWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiV0tQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJIaXRUZXN0UmVzdWx0RGF0YS5oIgpA
QCAtMTk2LDYgKzE5NywxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5JikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQorICAg
IHZpcnR1YWwgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZv
ckxvY2FsSW5zcGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eSYpCisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZh
dGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKaW5kZXggN2ZjYzRhOTEzNmYxMDcxZDJiZTI1NzI3M2NiYzY5MGFmNjNmZDJiNy4uZDFl
YWUyMDFlNjU0MmY0ZmFiNjAxOTgwZGM2NjEyNDkxMzE5NzkzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBA
IC0zOCw2ICszOCw5IEBACiBAY2xhc3MgX1dLQWN0aXZhdGVkRWxlbWVudEluZm87CiBAY2xhc3Mg
X1dLRWxlbWVudEFjdGlvbjsKIEBjbGFzcyBfV0tGcmFtZUhhbmRsZTsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3I7CitAY2xhc3MgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKK0BjbGFzcyBfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKIAogI2lmIFRBUkdFVF9PU19JT1MKIApAQCAtMjQ3LDYgKzI1
MCwxMiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9wb3NlZE1lbnU6KE5TTWVudSAqKW1lbnUg
Zm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mbyAqKWVsZW1lbnQgdXNlckluZm86
KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KE5TTWVudSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0
KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFBlcmZvcm1EcmFn
T3BlcmF0aW9uOihCT09MKWhhbmRsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSk7
CiAKKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIF9XS0luc3BlY3RvciBmb3IgdGhpcyBX
S1dlYlZpZXcgaXMgYWJvdXQgdG8gYmUgZGlzcGxheWVkLiBUaGUgY2xpZW50IGNhbgorICAgIHBy
b3ZpZGUgYSBjdXN0b20gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiB0aGF0IHNob3VsZCBiZSB1
c2VkIHdoZW4gY3JlYXRpbmcgdGhlIFdlYiBJbnNwZWN0b3IuCisgICAgQHBhcmFtIGluc3BlY3Rv
ciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSB0aGF0IGlzIGFib3V0IHRvIGJlIGluaXRpYWxp
emVkLgorICovCistIChfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0
b3IgKilpbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7CisKIC8q
ISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGlzIGF0dGFj
aGVkIHRvIHRoaXMgV0tXZWJWaWV3LiBUaGlzIGlzIG5vdCBjYWxsZWQgaW4gdGhlIGNhc2Ugb2Yg
cmVtb3RlIGluc3BlY3Rpb24uCiAgICAgQHBhcmFtIHdlYlZpZXcgVGhlIFdLV2ViVmlldyBpbnN0
YW5jZSBiZWluZyBpbnNwZWN0ZWQuCiAgICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3Bl
Y3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiMzU5ZmRjNDkzNDhjYmIwYTQzZjQ2MmJiZjU3OTJlNDMx
NjRmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9X
S0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQHByb3RvY29sIFdL
VVJMU2NoZW1lSGFuZGxlcjsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
KQorQGludGVyZmFjZSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIDogTlNPYmplY3QgPE5TQ29w
eWluZz4KKy8qKgorICogQGFic3RyYWN0IFNldHMgdGhlIFVSTCBzY2hlbWUgaGFuZGxlciBvYmpl
Y3QgZm9yIHRoZSBnaXZlbiBVUkwgc2NoZW1lLgorICogQHBhcmFtIHVybFNjaGVtZUhhbmRsZXIg
VGhlIG9iamVjdCB0byByZWdpc3Rlci4KKyAqIEBwYXJhbSBzY2hlbWUgVGhlIFVSTCBzY2hlbWUg
dGhlIG9iamVjdCB3aWxsIGhhbmRsZS4KKyAqIEBkaXNjdXNzaW9uIFRoaXMgaXMgdXNlZCB0byBy
ZWdpc3RlciBhZGRpdGlvbmFsIHNjaGVtZXMgZm9yIGxvYWRpbmcgcmVzb3VyY2VzIGluIHRoZSBp
bnNwZWN0b3IgcGFnZSwKKyAqIHN1Y2ggYXMgdG8gcmVnaXN0ZXIgc2NoZW1lcyB1c2VkIGJ5IGV4
dGVuc2lvbnMuIFRoaXMgbWV0aG9kIGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhbmQgcmVzdHJpY3Rp
b25zIGFzCisgKiBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgLVtXS1dlYlZpZXcg
c2V0VVJMU2NoZW1lSG5hZGxlcjpmb3JVUkxTY2hlbWU6XS4KKyAqLworLSAodm9pZClzZXRVUkxT
Y2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxTY2hlbWVIYW5kbGVyIGZv
clVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWU7CitAZW5kCisKK05TX0FTU1VNRV9OT05O
VUxMX0VORApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYTFmMjM0MmY4
OGFhODI0MTdhM2I3MDM5NDY3NjViY2FjODJmOTcwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0K
QEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCisKKyNpbXBvcnQgIldlYlVS
TFNjaGVtZUhhbmRsZXJDb2NvYS5oIgorCitAaW1wbGVtZW50YXRpb24gX1dLSW5zcGVjdG9yQ29u
ZmlndXJhdGlvbgorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBb
c3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgQVBJOjpPYmplY3Q6OmNv
bnN0cnVjdEluV3JhcHBlcjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+KHNlbGYpOworICAg
IAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29uZmln
dXJhdGlvbi0+QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjp+SW5zcGVjdG9yQ29uZmlndXJh
dGlvbigpOworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlP
YmplY3QKK3sKKyAgICByZXR1cm4gKl9jb25maWd1cmF0aW9uOworfQorCistICh2b2lkKXNldFVS
TFNjaGVtZUhhbmRsZXI6KGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXIg
Zm9yVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNjaGVtZQoreworICAgIF9jb25maWd1cmF0aW9u
LT5hZGRVUkxTY2hlbWVIYW5kbGVyKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hOjpj
cmVhdGUodXJsU2NoZW1lSGFuZGxlciksIHVybFNjaGVtZSk7Cit9CisKKy0gKHZvaWQpYXBwbHlU
b1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbgoreworICAgIGZvciAoYXV0byBwYWlyIDogX2NvbmZpZ3VyYXRpb24tPnVybFNjaGVtZUhh
bmRsZXJzKCkpIHsKKyAgICAgICAgYXV0byYgaGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hJj4ocGFpci5maXJzdC5nZXQoKSk7CisgICAgICAgIFtj
b25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5hcGlIYW5kbGVyKCkgZm9y
VVJMU2NoZW1lOnBhaXIuc2Vjb25kXTsKKyAgICB9Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZToo
TlNab25lICopem9uZQoreworICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3Vy
YXRpb24gPSBbKF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9j
V2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmb3IgKGF1dG8gcGFpciA6IF9jb25maWd1cmF0
aW9uLT51cmxTY2hlbWVIYW5kbGVycygpKSB7CisgICAgICAgIGF1dG8mIGhhbmRsZXIgPSBzdGF0
aWNfY2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIuZmlyc3QuZ2V0
KCkpOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIu
YXBpSGFuZGxlcigpIGZvclVSTFNjaGVtZTpwYWlyLnNlY29uZF07CisgICAgfQorCisgICAgcmV0
dXJuIGNvbmZpZ3VyYXRpb247Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44M2I4ZmUyOTUwZDFhNGE3MmZjMDYxZmIxZDY5YTEy
NjFjOTBhNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsNTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisK
KyNpbXBvcnQgIkFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldLT2JqZWN0
LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJh
aXRzPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4geworICAgIHVzaW5nIFdyYXBwZXJDbGFz
cyA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KKworQGludGVyZmFjZSBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0
b3JhZ2U8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBfY29uZmlndXJhdGlvbjsKK30KKwor
LSAodm9pZClhcHBseVRvV2ViVmlld0NvbmZpZ3VyYXRpb246KFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24gKil3ZWJWaWV3Q29uZmlndXJhdGlvbjsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9F
TkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggNThi
MTAyNzAzMjRlZTkxNzM5MzBmOGM3YWRlOGJmY2Q3YzllNDRlZS4uYjlhOGIyMDIwMDUyOWE0MmRh
NGFmYzIzZDRmZDRjZjEyMGM4NjgxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiAhVEFSR0VUX09TX0lQSE9ORQog
CiBAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CiAK
IEBwcm90b2NvbCBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlOwog
CkBAIC00OSw3ICs1MCw5IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvcygxMC4xMi4zKSwgaW9z
KDEwLjMpKQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIHJldGFpbikgTlNXaW5k
b3cgKndpbmRvdzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgcmV0YWluKSBXS1dl
YlZpZXcgKndlYlZpZXc7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGNvcHkpIF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb247CiAKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uOwogLSAodm9pZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUpZGVidWdnYWJsZVR5cGUgYmFja2VuZENvbW1hbmRzVVJMOihO
U1VSTCAqKWJhY2tlbmRDb21tYW5kc1VSTDsKIC0gKHZvaWQpY2xvc2U7CiAtICh2b2lkKXNob3c7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KaW5kZXggNjZi
ZjI0ZGY4MjZkYWE4ZTcyODQyNDhmZDFiNzI4Y2I1ZWJmZjM0My4uNGU0MGI4YjdhNzVmNWY3MDM1
NWQwMWRkNzU1N2NkYjFiYWFmYzQ0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JW
aWV3Q29udHJvbGxlci5tbQpAQCAtMjQsMTYgKzI0LDIwIEBACiAgKi8KIAogI2ltcG9ydCAiY29u
ZmlnLmgiCi0jaW1wb3J0ICJfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIgor
I2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgiCiAK
ICNpZiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW1w
b3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJEZWJ1Z2dhYmxlSW5m
b0RhdGEuaCIKICNpbXBvcnQgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJX
S1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmgi
CiAKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5z
cGVjdG9yVmlld0NvbnRyb2xsZXIgKCkKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tlbmQ6KE5T
U3RyaW5nICopbWVzc2FnZTsKIC0gKHZvaWQpY2xvc2VGcm9tRnJvbnRlbmQ7CkBAIC02Miw2ICs2
NiwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBbbV9jb250cm9sbGVyIGNsb3NlRnJvbUZy
b250ZW5kXTsKICAgICB9CisgICAgCisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1vdGVXZWJJbnNwZWN0b3JQcm94
eSYgaW5zcGVjdG9yKSBvdmVycmlkZQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbiY+KFttX2NvbnRyb2xsZXIuY29uZmlndXJhdGlv
biBfYXBpT2JqZWN0XSk7CisgICAgfQogCiBwcml2YXRlOgogICAgIF9XS1JlbW90ZVdlYkluc3Bl
Y3RvclZpZXdDb250cm9sbGVyICptX2NvbnRyb2xsZXI7CkBAIC03MiwxMyArODEsMTYgQEAgcHJp
dmF0ZToKIEBpbXBsZW1lbnRhdGlvbiBfV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ciB7CiAgICAgUmVmUHRyPFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk+IG1fcmVtb3Rl
SW5zcGVjdG9yUHJveHk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6X1dLUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHlDbGllbnQ+IG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50OworICAgIF9XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQogCi0tIChpbnN0YW5jZXR5
cGUpaW5pdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJhdGlvbjooX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICBpZiAoIShzZWxmID0gW3N1
cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAgIF9jb25maWd1cmF0aW9uID0g
W2NvbmZpZ3VyYXRpb24gY29weV07CisKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5ID0gV2Vi
S2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6Y3JlYXRlKCk7CiAgICAgbV9yZW1vdGVJbnNw
ZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPFdlYktpdDo6X1dLUmVtb3RlV2ViSW5zcGVjdG9yUHJv
eHlDbGllbnQ+KHNlbGYpOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNldENsaWVudCht
X3JlbW90ZUluc3BlY3RvckNsaWVudC5nZXQoKSk7CkBAIC0xMjQsNyArMTM2LDcgQEAgLSAodm9p
ZClsb2FkRm9yRGVidWdnYWJsZVR5cGU6KFdLUmVtb3RlV2ViSW5zcGVjdG9yRGVidWdnYWJsZVR5
cGUpZGVidWdnYWJsZVR5cGUKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRQbGF0Zm9ybU5hbWUg
PSBAIm1hY09TIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRCdWlsZFZlcnNpb24gPSBAIlVu
a25vd24iOwogICAgIGRlYnVnZ2FibGVJbmZvLnRhcmdldFByb2R1Y3RWZXJzaW9uID0gQCJVbmtu
b3duIjsKLSAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVsYXRvciA9IGZhbHNlOworICAg
IGRlYnVnZ2FibGVJbmZvLnRhcmdldElzU2ltdWxhdG9yID0gTk87CiAgICAgW3NlbGYgbG9hZEZv
ckRlYnVnZ2FibGU6ZGVidWdnYWJsZUluZm8gYmFja2VuZENvbW1hbmRzVVJMOmJhY2tlbmRDb21t
YW5kc1VSTF07CiB9CiAKQEAgLTE0OCw2ICsxNjAsOCBAQCAtICh2b2lkKXNlbmRNZXNzYWdlVG9G
cm9udGVuZDooTlNTdHJpbmcgKiltZXNzYWdlCiAgICAgbV9yZW1vdGVJbnNwZWN0b3JQcm94eS0+
c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwogfQogCisvLyBNQVJLOiBSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eUNsaWVudCBtZXRob2RzCisKIC0gKHZvaWQpc2VuZE1lc3NhZ2VUb0JhY2tl
bmQ6KE5TU3RyaW5nICopbWVzc2FnZQogewogICAgIGlmIChfZGVsZWdhdGUgJiYgW19kZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKGluc3BlY3RvclZpZXdDb250cm9sbGVyOnNl
bmRNZXNzYWdlVG9CYWNrZW5kOildKQpAQCAtMTYyLDcgKzE3Niw3IEBAIC0gKHZvaWQpY2xvc2VG
cm9tRnJvbnRlbmQKIAogLy8gTUFSSzogX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJQcml2YXRlIG1ldGhvZHMKIAotLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGVsZWdhdGUKKy0gKHZvaWQpX3Nl
dERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdh
dGU+IF9OdWxsYWJsZSlkZWxlZ2F0ZQogewogICAgIHNlbGYud2ViVmlldy5fZGlhZ25vc3RpY0xv
Z2dpbmdEZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgIG1fcmVtb3RlSW5zcGVjdG9yUHJveHktPnNl
dERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCEhZGVsZWdhdGUpOwpAQCAtMTcwLDQgKzE4NCw2
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAKIEBlbmQKIAorTlNfQVNTVU1FX05PTk5VTExf
RU5ECisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2Vi
SW5zcGVjdG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgKaW5kZXggM2E5YzcxMGFlNDkwY2I3OWU2
YTE1NGQ3ZjA5NjE1ZjFhODgwYjQ1Mi4uYmZmYmMxNzA0NzE3MGIyNGI1MjNmMjRkNjZiNzNiMzQ3
YjNjZDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlclByaXZhdGUuaApAQCAtMzAsNiArMzAsNyBAQAogTlNfQVNTVU1FX05PTk5VTExfQkVHSU4K
IAogQGNsYXNzIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvOworQHByb3RvY29sIF9XS0RpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKIEBpbnRlcmZhY2UgX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgKFdLUHJpdmF0ZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaAppbmRleCAwNmY4ZjFmNzYyZTg5
Njg2ZmM1ZGMzZmM4OTBmMTNlMGIzNjNkMzMzLi5lNGNmNWEyZGMxMDJmNTk2ZDNhZWZlOGM2NDdi
NmY1YWE5Yjc5YjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVXNlclN0eWxlU2hlZXQuaApAQCAtMjksNiArMjksNyBAQAogTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KIAogQGNsYXNzIF9XS1VzZXJDb250ZW50V29ybGQ7CitAY2xhc3MgV0tDb250
ZW50V29ybGQ7CiBAY2xhc3MgV0tXZWJWaWV3OwogCiB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBfV0tVc2VyU3R5bGVMZXZlbCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCmluZGV4IDA2ODQ0MTJiMTM1MWYzMGE1
ZDQ4NGY5MDlkN2E0Yjk3YTcxY2E0MjYuLjc5MTVlYTNiMmY2NWRhNDhjZjRlYTk4MjAyNWE5M2U0
ZTE4YTdmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tVc2VyU3R5bGVTaGVldC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLVXNlclN0eWxlU2hlZXQubW0KQEAgLTI3LDYgKzI3LDcgQEAKICNpbXBvcnQgIl9XS1Vz
ZXJTdHlsZVNoZWV0SW50ZXJuYWwuaCIKIAogI2ltcG9ydCAiQVBJQXJyYXkuaCIKKyNpbXBvcnQg
IldLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLTlNBcnJheS5oIgogI2ltcG9y
dCAiV0tOU1VSTEV4dHJhcy5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRleCBhNDllNjUzOTdmNDc1
NzIzNzE4MzNjNWY3NTQ4NGNlZTFkM2NiOGQ4Li44YTA5NDc0NWMxZjI0YmUxMDVkYmIwMmFiOTFl
MzA3YjMxZDQ4NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9V
SURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oCkBAIC0xMjQsNiArMTI0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIEZyYW1lSW5mb0RhdGEmJiwgQVBJOjpP
cGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZp
bmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJ
bkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAg
ICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNv
bnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRh
dGEmKSBmaW5hbDsKKyAgICAgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclBy
b3h5JikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICAgICAgICAgdm9pZCB3aWxsQ2xv
c2VMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFs
OwogI2VuZGlmCkBAIC0yMDEsNiArMjAyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJW
aWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRp
YXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1Jl
cXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRs
ZXIgOiAxOworICAgICAgICBib29sIHdlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0
b3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA6IDE7
CiAgICAgICAgIGJvb2wgd2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yIDogMTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMjg3
NzljZTRiZmNiYzkxOWZmOGEzNzBlMDZhNmZlMWUzMDk5MDk0NS4uZDAzMzhmOGQ2ZTNiOWExM2Rm
MmFmMTUzYWNiNWRlYjM4ZTFmY2Q5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElBcnJheS5oIgog
I2ltcG9ydCAiQVBJRnJhbWVJbmZvLmgiCiAjaW1wb3J0ICJBUElIaXRUZXN0UmVzdWx0LmgiCisj
aW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW1wb3J0ICJDb21wbGV0aW9u
SGFuZGxlckNhbGxDaGVja2VyLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGllcy5oIgogI2ltcG9y
dCAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgpAQCAtNTQsNiArNTUsNyBAQAogI2ltcG9ydCAiX1dL
Q29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3Rvcklu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVkNhcHR1cmVEZXZpY2UuaD4KQEAgLTEzMSw2ICsxMzMs
NyBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRlbGVn
YXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3Rl
ZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2Vs
ZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVuYW1l
Om1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZp
ZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFu
ZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6cnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxl
cjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25QZXJt
aXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOworICAgIG1fZGVsZWdh
dGVNZXRob2RzLndlYlZpZXdDb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpjb25maWd1cmF0aW9uRm9y
TG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFj
aExvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Io
X3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld1dpbGxDbG9zZUxvY2FsSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6d2lsbENsb3NlTG9jYWxJbnNwZWN0b3I6KV07CiAj
ZW5kaWYKQEAgLTgxNyw2ICs4MjAsMTggQEAgdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjoKICAgICB9
KS5nZXQoKV07CiB9CiAKK1JlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IFVJRGVsZWdh
dGU6OlVJQ2xpZW50Ojpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5
JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1fdWlEZWxlZ2F0
ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsK
KworICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKKyAg
ICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjpjcmVhdGUoKTsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNv
bmZpZ3VyYXRpb24mPihbWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZp
ZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6
d3JhcHBlcihpbnNwZWN0b3IpXSBfYXBpT2JqZWN0XSk7Cit9CisKIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3Bl
Y3RvclByb3h5JiBpbnNwZWN0b3IpCiB7CiAgICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFjaExvY2FsSW5zcGVjdG9yKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eS5jcHAKaW5kZXggZWMzMTBkOGEzMzg5MDVkMjZhOTQzZGRhNjE5N2YxMGUyOTJjODk5Zi4u
YjA0NzM5MzFkNzMxMGYyNThlOWJlY2NlNzBjZTUyMmM4OWE3ZTllNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVj
dG9yUHJveHkuY3BwCkBAIC02NSwxMSArNjUsMTEgQEAgdm9pZCBSZW1vdGVXZWJJbnNwZWN0b3JQ
cm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9vbCBhdmFpbGFibGUpCiAKIHZv
aWQgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmxvYWQoUmVmPEFQSTo6RGVidWdnYWJsZUluZm8+
JiYgZGVidWdnYWJsZUluZm8sIGNvbnN0IFN0cmluZyYgYmFja2VuZENvbW1hbmRzVVJMKQogewot
ICAgIGNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpOwotCiAgICAgbV9kZWJ1Z2dhYmxlSW5m
byA9IFdURk1vdmUoZGVidWdnYWJsZUluZm8pOwogICAgIG1fYmFja2VuZENvbW1hbmRzVVJMID0g
YmFja2VuZENvbW1hbmRzVVJMOwogCisgICAgY3JlYXRlRnJvbnRlbmRQYWdlQW5kV2luZG93KCk7
CisKICAgICBtX2luc3BlY3RvclBhZ2UtPnNlbmQoTWVzc2FnZXM6OlJlbW90ZVdlYkluc3BlY3Rv
clVJOjpJbml0aWFsaXplKG1fZGVidWdnYWJsZUluZm8tPmRlYnVnZ2FibGVJbmZvRGF0YSgpLCBi
YWNrZW5kQ29tbWFuZHNVUkwpKTsKICAgICBtX2luc3BlY3RvclBhZ2UtPmxvYWRSZXF1ZXN0KFVS
TChVUkwoKSwgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvclBhZ2VVUkwoKSkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3Bl
Y3RvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaAppbmRleCBkZWJhMGZlZTYyNTY0NTYyNWQ3NjM5NmIyYjA2NWEyMTJi
ZjkzODA4Li5jMDNhMmNhNTcwZDlmNmY4MGViYWFlNTRmYjkzYWQyNTcwY2I1ZmFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkuaApAQCAtNDgsMTAgKzQ4LDEyIEBAIGNsYXNzIENlcnRpZmljYXRlSW5m
bzsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEZWJ1Z2dhYmxlSW5mbzsKK2NsYXNzIEluc3Bl
Y3RvckNvbmZpZ3VyYXRpb247CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eTsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFdlYlZpZXc7
CiAKQEAgLTYwLDYgKzYyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbW90ZVdlYkluc3Bl
Y3RvclByb3h5Q2xpZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9CYWNr
ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZUZy
b21Gcm9udGVuZCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkmKSA9IDA7CiB9OwogCiBjbGFzcyBSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSA6IHB1Ymxp
YyBSZWZDb3VudGVkPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiwgcHVibGljIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDU3ZWYxNzQ5
NzM5NjUwMzljODJlOTQ4ZjhhZWVlNDJiOWNhNmI5YmEuLmRhZTM3YWNjZDdlYWIxYTdiNjljNzhh
MTlmY2JkZmRkYmZlNDIyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAt
MjksNiArMjksNyBAQAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAi
QVBJRGVidWdnYWJsZUluZm8uaCIKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9u
LmgiCiAjaW5jbHVkZSAiUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9SZW1vdGVJbnNwZWN0b3JVdGlscy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5z
cGVjdG9yRGVidWdnYWJsZVR5cGUuaD4KQEAgLTc3LDYgKzc4LDggQEAgcHVibGljOgogI2VuZGlm
CiAgICAgfQogCisgICAgLy8gTUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0
aG9kcworCiAgICAgdm9pZCBzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogICAgIHsKICAgICAgICAgbV9wcm94eS0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3Nh
Z2UpOwpAQCAtOTIsNiArOTUsMTEgQEAgcHVibGljOgogICAgICAgICBtX2luc3BlY3RvckNsaWVu
dC5jbG9zZUZyb21Gcm9udGVuZChtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXRJRCk7CiAgICAgfQog
CisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZvclJl
bW90ZUluc3BlY3RvcihSZW1vdGVXZWJJbnNwZWN0b3JQcm94eSYpCisgICAgeworICAgICAgICBy
ZXR1cm4gQVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIHBy
aXZhdGU6CiAgICAgUmVmPFJlbW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3Byb3h5OwogICAgIFJl
bW90ZUluc3BlY3RvckNsaWVudCYgbV9pbnNwZWN0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5
TWFjLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbQppbmRleCAyNDU0YWU5NTk0MTA3N2Q0MjQ4Y2U2YTUzN2I5NGUx
ZjIwZWUwMWJlLi5lNDNiMDI4NTRjMmIyYjFjMDI2NTRkYzY0MTc3ZmYzMDIxMzk0N2M1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYklu
c3BlY3RvclByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9tYWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNp
bXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIKICNp
bXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bkludGVybmFsLmgiCiAjaW1wb3J0IDxTZWN1cml0eUludGVyZmFjZS9TRkNlcnRpZmljYXRlUGFu
ZWwuaD4KICNpbXBvcnQgPFNlY3VyaXR5SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVWaWV3Lmg+CiAj
aW1wb3J0IDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgpAQCAtMTAzLDcgKzEwNCw4IEBAIFdl
YlBhZ2VQcm94eSogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlRnJvbnRl
bmRQYWdlQW5kV2luZG93KCkKIHsKICAgICBtX29iakNBZGFwdGVyID0gYWRvcHROUyhbW1dLUmVt
b3RlV2ViSW5zcGVjdG9yUHJveHlPYmpDQWRhcHRlciBhbGxvY10gaW5pdFdpdGhSZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eTp0aGlzXSk7CiAKLSAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtb
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOm51
bGxwdHJdKTsKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uID0gbV9jbGllbnQtPmNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoKnRoaXMpOwor
ICAgIG1faW5zcGVjdG9yVmlldyA9IGFkb3B0TlMoW1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IGFsbG9jXSBpbml0V2l0aENvbmZpZ3VyYXRpb246IFdlYktpdDo6d3JhcHBlcihjb25maWd1cmF0
aW9uKSBpbnNwZWN0ZWRQYWdlOm51bGxwdHJdKTsKICAgICBbbV9pbnNwZWN0b3JWaWV3LmdldCgp
IHNldERlbGVnYXRlOm1fb2JqQ0FkYXB0ZXIuZ2V0KCldOwogCiAgICAgbV93aW5kb3cgPSBXZWJJ
bnNwZWN0b3JQcm94eTo6Y3JlYXRlRnJvbnRlbmRXaW5kb3coTlNaZXJvUmVjdCwgV2ViSW5zcGVj
dG9yUHJveHk6Okluc3BlY3Rpb25UYXJnZXRUeXBlOjpSZW1vdGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIuaAppbmRleCAxMDcxOTI4NjY1ZTQ5ZWNjOGEyNDcxZDdmMTQ2OWE4MGNh
NmFkMjk2Li4zYTM0NmQ0MjFmOGE0MmQxN2VlNDQ0Y2UxNjQ0NDA1NWM0Y2FmNWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaApAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCA8
d3RmL05ha2VkUHRyLmg+CiAKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OworT0JKQ19DTEFTUyBfV0tJ
bnNwZWN0b3JDb25maWd1cmF0aW9uOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBh
Z2VQcm94eTsKQEAgLTQzLDcgKzQ0LDcgQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgV0tXZWJWaWV3ICp3ZWJWaWV3OwogQHByb3BlcnR5
IChub25hdG9taWMsIHdlYWspIGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+
IGRlbGVnYXRlOwogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOihOYWtl
ZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25m
aWd1cmF0aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5Pilp
bnNwZWN0ZWRQYWdlOwogCiArIChCT09MKXZpZXdJc0luc3BlY3RvcldlYlZpZXc6KE5TVmlldyAq
KXZpZXc7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5tbQppbmRleCAxZWFhOTQz
ZjI3YTI3ZDY3YzYxMWZmNmQ2ZmJiZjM2MTYyYmY3MTk3Li4wNWQzMmEyZTk3OGExYWZlM2NlYTk2
OTkwNmQ3NjZhOWYyMTgxYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1t
CkBAIC00Miw2ICs0Miw3IEBACiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2ltcG9y
dCAiV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNp
bXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8V2Vi
Q29yZS9WZXJzaW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KIApAQCAt
NTIsMTMgKzUzLDE2IEBAIEBpbXBsZW1lbnRhdGlvbiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVy
IHsKICAgICBOYWtlZFB0cjxXZWJLaXQ6OldlYlBhZ2VQcm94eT4gX2luc3BlY3RlZFBhZ2U7CiAg
ICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yV0tXZWJWaWV3PiBfd2ViVmlldzsKICAgICBXZWFrT2Jq
Q1B0cjxpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlckRlbGVnYXRlPj4gX2RlbGVnYXRlOwor
ICAgIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKl9jb25maWd1cmF0aW9uOwogfQogCi0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6OldlYlBh
Z2VQcm94eT4paW5zcGVjdGVkUGFnZQorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29uZmlndXJh
dGlvbjooX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gaW5zcGVjdGVk
UGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2UKIHsKICAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAorICAg
IF9jb25maWd1cmF0aW9uID0gW2NvbmZpZ3VyYXRpb24gY29weV07CisKICAgICAvLyBUaGUgKGxv
Y2FsKSBpbnNwZWN0ZWQgcGFnZSBpcyBuaWwgaWYgdGhlIGNvbnRyb2xsZXIgaXMgaG9zdGluZyBh
IFJlbW90ZSBXZWIgSW5zcGVjdG9yIHZpZXcuCiAgICAgX2luc3BlY3RlZFBhZ2UgPSBpbnNwZWN0
ZWRQYWdlOwogCkBAIC04Nyw3ICs5MSw3IEBAIC0gKFdLV2ViVmlldyAqKXdlYlZpZXcKICAgICAv
LyBDb25zdHJ1Y3QgbGF6aWx5IHNvIHRoZSBjbGllbnQgY2FuIHNldCB0aGUgZGVsZWdhdGUgYmVm
b3JlIHRoZSBXZWJWaWV3IGlzIGNyZWF0ZWQuCiAgICAgaWYgKCFfd2ViVmlldykgewogICAgICAg
ICBOU1JlY3QgaW5pdGlhbEZyYW1lID0gTlNNYWtlUmVjdCgwLCAwLCBXZWJLaXQ6OldlYkluc3Bl
Y3RvclByb3h5Ojppbml0aWFsV2luZG93V2lkdGgsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6
OmluaXRpYWxXaW5kb3dIZWlnaHQpOwotICAgICAgICBfd2ViVmlldyA9IGFkb3B0TlMoW1tXS0lu
c3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsRnJhbWUgY29uZmln
dXJhdGlvbjpbc2VsZiBjb25maWd1cmF0aW9uXV0pOworICAgICAgICBfd2ViVmlldyA9IGFkb3B0
TlMoW1tXS0luc3BlY3RvcldLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTppbml0aWFsRnJh
bWUgY29uZmlndXJhdGlvbjpzZWxmLndlYlZpZXdDb25maWd1cmF0aW9uXSk7CiAgICAgICAgIFtf
d2ViVmlldyBzZXRVSURlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZpZXcgc2V0TmF2aWdh
dGlvbkRlbGVnYXRlOnNlbGZdOwogICAgICAgICBbX3dlYlZpZXcgc2V0SW5zcGVjdG9yV0tXZWJW
aWV3RGVsZWdhdGU6c2VsZl07CkBAIC0xMDQsNyArMTA4LDcgQEAgLSAodm9pZClzZXREZWxlZ2F0
ZTooaWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4pZGVsZWdhdGUKICAgICBf
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIH0KIAotLSAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNv
bmZpZ3VyYXRpb24KKy0gKFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKil3ZWJWaWV3Q29uZmlndXJh
dGlvbgogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CiAKQEAgLTEyMyw2ICsxMjcsOCBAQCAtIChXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgcHJlZmVyZW5jZXMuX2RpYWdu
b3N0aWNMb2dnaW5nRW5hYmxlZCA9IFlFUzsKIAorICAgIFtfY29uZmlndXJhdGlvbiBhcHBseVRv
V2ViVmlld0NvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV07CisgICAgCiAgICAgaWYg
KCEhX2RlbGVnYXRlICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihp
bnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3BlY3RvcklzVW5kZXJUZXN0OildKSB7CiAgICAgICAg
IGlmIChbX2RlbGVnYXRlIGluc3BlY3RvclZpZXdDb250cm9sbGVySW5zcGVjdG9ySXNVbmRlclRl
c3Q6c2VsZl0pIHsKICAgICAgICAgICAgIHByZWZlcmVuY2VzLl9oaWRkZW5QYWdlRE9NVGltZXJU
aHJvdHRsaW5nRW5hYmxlZCA9IE5POwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMThl
M2I3NTRmOWYwZTM2M2IzNjhmNTQ4ZWI4YTQzMGQ1Yzg5OWIyMi4uMDcyYWUzZDAzNjlmMDczZjU3
NDJkNDRjMDIyOTc4NmUyYTQzMTQ5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0y
OCwxNCArMjgsMTkgQEAKIAogI2lmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQVBJSW5zcGVj
dG9yQ2xpZW50LmgiCisjaW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisjaW1w
b3J0ICJBUElVSUNsaWVudC5oIgogI2ltcG9ydCAiR2xvYmFsRmluZEluUGFnZVN0YXRlLmgiCiAj
aW1wb3J0ICJXS0luc3BlY3RvclByaXZhdGVNYWMuaCIKICNpbXBvcnQgIldLSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCiAjaW1wb3J0ICJXS1ZpZXdJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkluc3Bl
Y3RvclVJTWVzc2FnZXMuaCIKICNpbXBvcnQgIldlYlBhZ2VHcm91cC5oIgogI2ltcG9ydCAiV2Vi
UGFnZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwu
aCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0
b3JXaW5kb3cuaCIKICNpbXBvcnQgPFNlY3VyaXR5SW50ZXJmYWNlL1NGQ2VydGlmaWNhdGVQYW5l
bC5oPgpAQCAtMjkxLDcgKzI5Niw4IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6
OnBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdlKCkKICAgICBOU1ZpZXcgKmluc3BlY3RlZFZpZXcg
PSBpbnNwZWN0ZWRQYWdlKCktPmluc3BlY3RvckF0dGFjaG1lbnRWaWV3KCk7CiAgICAgW1tOU05v
dGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBhZGRPYnNlcnZlcjptX29iakNBZGFwdGVy
LmdldCgpIHNlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0ZWRWaWV3RnJhbWVEaWRDaGFuZ2U6KSBu
YW1lOk5TVmlld0ZyYW1lRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDppbnNwZWN0ZWRWaWV3
XTsKIAotICAgIG1faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOmluc3BlY3RlZFBh
Z2UoKV0pOworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGluc3BlY3RlZFBhZ2UoKS0+dWlDbGll
bnQoKS5jb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3IoKmluc3BlY3RlZFBhZ2UoKSwgICp0
aGlzKTsKKyAgICBtX2luc3BlY3RvclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoQ29uZmlndXJhdGlvbjogV2ViS2l0Ojp3
cmFwcGVyKGNvbmZpZ3VyYXRpb24uZ2V0KCkpIGluc3BlY3RlZFBhZ2U6aW5zcGVjdGVkUGFnZSgp
XSk7CiAgICAgW21faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuZ2V0KCkgc2V0RGVsZWdhdGU6bV9v
YmpDQWRhcHRlci5nZXQoKV07CiAKICAgICBXZWJQYWdlUHJveHkgKmluc3BlY3RvclBhZ2UgPSBb
bV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3XS0+X3BhZ2UuZ2V0KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3Bl
Y3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0
L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggMDJkYWMxZjU2MGYzMDA3OTA1YWIyYzcy
YWU2NTEwZWM4OGYxNjM5My4uMjFkYjExM2U0YzhmMWFmOGMwZDM4MjhmZWIxMzFhNjU4NGUwZjRj
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tldC9S
ZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0lu
c3BlY3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogCiAjaW5jbHVkZSAiQVBJRGVidWdnYWJs
ZUluZm8uaCIKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgpAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6
CiAgICAgICAgIG1fcHJveHktPnNob3coKTsKICAgICB9CiAKKyAgICAvLyBNQVJLOiBSZW1vdGVX
ZWJJbnNwZWN0b3JQcm94eUNsaWVudCBtZXRob2RzCisKICAgICB2b2lkIHNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgewogICAgICAgICBtX3Byb3h5LT5z
ZW5kTWVzc2FnZVRvRnJvbnRlbmQobWVzc2FnZSk7CkBAIC04Miw2ICs4NSwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1faW5zcGVjdG9yQ2xpZW50LmNsb3NlRnJvbUZyb250ZW5kKG1fY29ubmVjdGlv
bklELCBtX3RhcmdldElEKTsKICAgICB9CiAKKyAgICBSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKFJlbW90ZVdlYkluc3BlY3Rv
clByb3h5JikKKyAgICB7CisgICAgICAgIHJldHVybiBBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRp
b246OmNyZWF0ZSgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBSZWY8UmVtb3RlV2ViSW5zcGVj
dG9yUHJveHk+IG1fcHJveHk7CiAgICAgUmVtb3RlSW5zcGVjdG9yQ2xpZW50JiBtX2luc3BlY3Rv
ckNsaWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDUxOWVlOTU1NzUyN2E3MDNhNWJiZDZlNmYyNzdiMWFjMmVhZThiNjEuLjJkNzlj
NDg1MTAwOWU0NDJjM2U2OWU2Y2IyYzc0YzI2ODllYjkzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTQxOCw2ICsxNDE4LDkgQEAK
IAkJOTkyNDlBRDUxRjFGMUU1NjAwQjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3BhdGNo
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk5
MjQ5QUQzMUYxRjFFMzMwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRlbmREaXNwYXRjaGVycy5j
cHAgKi87IH07CiAJCTk5MjQ5QUQ2MUYxRjFFNUYwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJvbnRl
bmREaXNwYXRjaGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTkyNDlBRDQxRjFGMUUzMzAwQjYyRkJCIC8qIEF1dG9tYXRpb25Gcm9udGVuZERpc3Bh
dGNoZXJzLmggKi87IH07CiAJCTk5NEJBREY0MUY3RDc4MTQwMEI1NzFFNyAvKiBXS0luc3BlY3Rv
clZpZXdDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyogV0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oICovOyB9OworCQk5OTRDNjA0MjI1M0NBNTQ0MDBCREYwNjAgLyogX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTk0QzYwNDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5
OTRDNjA0NTI1M0NBQkEyMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVy
bmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTRD
NjA0NDI1M0NBQkEyMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFs
LmggKi87IH07CisJCTk5NEM2MDQ3MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5o
ICovOyB9OwogCQk5OTUyMjZENjIwN0QxODQ2MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNw
YXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
OTUyMjZENDIwN0QxODQ1MDBGNzg0MjAgLyogU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmggKi87
IH07CiAJCTk5NTVBNkVDMUM3OTgwQzIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RUIx
Qzc5ODBCQjAwRUI2QTkzIC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uLmggKi87IH07CiAJCTk5NTVB
NkVGMUM3OTgxMDgwMEVCNkE5MyAvKiBBdXRvbWF0aW9uLmpzb24gaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5OTU1QTZFOTFDNzk4MEJCMDBFQjZBOTMgLyog
QXV0b21hdGlvbi5qc29uICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC00NTMzLDYgKzQ1MzYsMTEgQEAKIAkJOTk0NkVGODUxRTdCMDI2NjAwNTQxRTc5
IC8qIFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViQXV0b21hdGlvblNlc3Npb25JT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk5NEJBREYxMUY3RDc3RUEwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZp
ZXdDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk0QkFE
RjIxRjdENzdFQjAwQjU3MUU3IC8qIFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0MDI1M0NBNTQzMDBC
REYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5NEM2MDQxMjUzQ0E1NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0
QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0ODI1M0Y4MjAyMDBCREYwNjAg
LyogQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElu
cHV0RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaW11bGF0
ZWRJbnB1dERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1MjI2
RDUyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlzcGF0Y2hlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTU1QTZFOTFDNzk4MEJCMDBFQjZB
OTMgLyogQXV0b21hdGlvbi5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gQXV0b21h
dGlvbi5qc29uOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzMyNSw2ICs3MzMzLDkg
QEAKIAkJCQkzN0E2NEU1NDE4RjM4RTNDMDBFQjMwRjEgLyogX1dLSW5wdXREZWxlZ2F0ZS5oICov
LAogCQkJCTVDQUZERTQyMjEzMDg0MzUwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IuaCAqLywKIAkJ
CQk1Q0FGREU0MzIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLm1tICovLAorCQkJCTk5
NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8s
CisJCQkJOTk0QzYwNDEyNTNDQTU0NDAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRp
b24ubW0gKi8sCisJCQkJOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oICovLAogCQkJCTk5MUY0OTJEMjNBODEyQzUwMDU0NjQyQiAv
KiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oICovLAogCQkJCTk5MUY0OTJFMjNBODEyQzYw
MDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbSAqLywKIAkJCQk5OTAzNkFF
MTIzQTk0OUNFMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5o
ICovLApAQCAtOTMxNyw2ICs5MzI4LDggQEAKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYg
LyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3QThBOUQ1NzFFRjExOUFBMDA5ODAx
QUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKIAkJCQk5MTk3OTQwOTIzREJDNEUw
MDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi8sCisJCQkJOTk0QzYwNDgyNTNGODIw
MjAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwICovLAorCQkJCTk5NEM2
MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggKi8sCiAJ
CQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNw
cCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0Zl
YXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29u
dGV4dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTEwNzUxLDYgKzEwNzY0LDggQEAKIAkJCQk1MTBG
NTkxMDFEREUyOTY5MDA0MTJGRjUgLyogX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzdBNjRFNTUxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0RGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ1MjEzMDg0NjMwMEIxRjdFMSAvKiBfV0tJbnNw
ZWN0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTk5NEM2MDQyMjUzQ0E1NDQwMEJERjA2MCAvKiBf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0NTI1
M0NBQkEyMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTFGNDkyRjIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9y
RGVidWdnYWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUUyMjNBOTQ5Q0YwMDAw
QjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMTA4NjQsNiArMTA4NzksNyBAQAogCQkJCTdBOEE5RDVDMUVG
MTQ1OTgwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjkwNzlBMThGMzFDQjIwMDFERkYwNCAvKiBBUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEEyM0RC
QzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTk0QzYwNDcyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdCRkE1MyAvKiBBUElJbnRlcm5h
bERlYnVnRmVhdHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMDcxQTQ2Nzc2MTAwQzdG
MTUyIC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTI0NjRGMzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVy
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBjM2M2ZDZhY2M3NzcyYWYyM2QwYjUyMjdlZTJiZWRlYWIyNGI3NzY4Li40ZTc5NjVmNzkzZjYx
M2NkNDg0ZGIxNTkxOTc0ZTU1MDJjZjU5OWJkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMTAtMjEgIEJyaWFu
IEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dL
SW5zcGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBX
ZWIgSW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gQVBJIHRlc3Qg
Zm9yIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uIERpc2FibGVkIGZvciBub3csIHdpbGwKKyAg
ICAgICAgYmUgdHVybmVkIGJhY2sgb24gd2hlbiBtb3JlIHdlYiBleHRlbnNpb25zIEFQSSBoYXMg
bGFuZGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0lu
c3BlY3RvckRlbGVnYXRlLm1tOgorICAgICAgICAoLVtTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIHdl
YlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTaW1wbGVVUkxTY2hlbWVI
YW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1VJRGVsZWdh
dGUgX3dlYlZpZXc6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOl0pOgorICAgICAgICAo
LVtVSURlbGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOl0pOgorICAgICAg
ICAoVEVTVCk6CisKIDIwMjAtMTAtMjEgIExhdXJvIE1vdXJhICA8bG1vdXJhQGlnYWxpYS5jb20+
CiAKICAgICAgICAgd2Via2l0cHk6IENoZWNrIGZvciBkdXBsaWNhdGVkIGtleXMgaW4ganNvbiBl
eHBlY3RhdGlvbiBmaWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCmluZGV4IDYxMDNiMjAwZjc3
MzI1NmM3Y2RiZDMxMjMyMDkxY2ViODFhOTA4MWMuLmExOTEyM2JhODgwMTIyNTUxNzY0NGNiMDE3
YzkyZDUzYWU3ZjcyOGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTI4LDkgKzI4LDEz
IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJVdGlsaXRpZXMuaCIKICNpbXBvcnQgPFdl
YktpdC9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1l
SGFuZGxlci5oPgorI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2NoZW1lVGFzay5oPgogI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2
YXRlRm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rvci5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0luc3BlY3Rv
ckRlbGVnYXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yUHJpdmF0ZUZvclRlc3Rp
bmcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTM5LDYgKzQzLDcgQEAKICNpZiBQ
TEFURk9STShNQUMpCiAKIEBjbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZTsKK0BjbGFzcyBTaW1wbGVV
UkxTY2hlbWVIYW5kbGVyOwogCiBzdGF0aWMgYm9vbCBkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgd2lsbENsb3NlTG9jYWxJbnNwZWN0b3JDYWxsZWQg
PSBmYWxzZTsKQEAgLTQ2LDkgKzUxLDU0IEBAIHN0YXRpYyBib29sIGJyb3dzZXJEb21haW5FbmFi
bGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBicm93c2VyRG9tYWlu
RGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0YXRpYyBib29sIHNob3VsZENh
bGxJbnNwZWN0b3JDbG9zZVJlZW50cmFudGx5ID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBvcGVuVVJM
RXh0ZXJuYWxseUNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgY29uZmlndXJhdGlvbkZvckxv
Y2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBzdGFydFVSTFNjaGVtZVRh
c2tDYWxsZWQgPSBmYWxzZTsKKworc3RhdGljIFJldGFpblB0cjxTaW1wbGVVUkxTY2hlbWVIYW5k
bGVyPiBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyOwogc3RhdGljIFJldGFpblB0cjxpZCA8X1dLSW5z
cGVjdG9yRGVsZWdhdGU+PiBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZTsKIHN0YXRpYyBSZXRhaW5Q
dHI8TlNVUkw+IHVybFRvT3BlbjsKIAorc3RhdGljIHZvaWQgcmVzZXRHbG9iYWxTdGF0ZSgpCit7
CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICB3aWxsQ2xv
c2VMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5FbmFibGVk
Rm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9y
SW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgc2hvdWxkQ2FsbEluc3BlY3RvckNsb3NlUmVl
bnRyYW50bHkgPSBmYWxzZTsKKyAgICBvcGVuVVJMRXh0ZXJuYWxseUNhbGxlZCA9IGZhbHNlOwor
ICAgIGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworICAgIHN0
YXJ0VVJMU2NoZW1lVGFza0NhbGxlZCA9IGZhbHNlOworCisgICAgc2hhcmVkVVJMU2NoZW1lSGFu
ZGxlci5jbGVhcigpOworICAgIHNoYXJlZEluc3BlY3RvckRlbGVnYXRlLmNsZWFyKCk7CisgICAg
dXJsVG9PcGVuLmNsZWFyKCk7Cit9CisKK0BpbnRlcmZhY2UgU2ltcGxlVVJMU2NoZW1lSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+CitAcHJvcGVydHkgKG5vbmF0b21pYywg
d2VhaykgTlNVUkwgKmV4cGVjdGVkVVJMOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gU2ltcGxl
VVJMU2NoZW1lSGFuZGxlcgorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
c3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgaWYg
KF9leHBlY3RlZFVSTCkKKyAgICAgICAgRVhQRUNUX1NUUkVRKF9leHBlY3RlZFVSTC5hYnNvbHV0
ZVN0cmluZy5VVEY4U3RyaW5nLCB0YXNrLnJlcXVlc3QuVVJMLmFic29sdXRlU3RyaW5nLlVURjhT
dHJpbmcpOworCisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNlID0gYWRvcHRO
UyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVzdC5VUkwgTUlN
RVR5cGU6QCJ0ZXh0L2h0bWwiIGV4cGVjdGVkQ29udGVudExlbmd0aDoxIHRleHRFbmNvZGluZ05h
bWU6bmlsXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNlLmdldCgpXTsK
KyAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXM6IjEiIGxlbmd0
aDoxXV07CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKKworICAgIHN0YXJ0VVJMU2NoZW1lVGFza0Nh
bGxlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dG9wVVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5k
CisKIEBpbnRlcmZhY2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBOU09iamVjdCA8X1dLSW5zcGVjdG9y
RGVsZWdhdGU+CiBAZW5kCiAKQEAgLTc3LDE4ICsxMjcsMjMgQEAgQGVuZAogCiBAaW1wbGVtZW50
YXRpb24gVUlEZWxlZ2F0ZQogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKKy0gKF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKilfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBj
b25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3Rvcgog
ewotICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7Ci0gICAgd2lsbENs
b3NlTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKLSAgICBicm93c2VyRG9tYWluRW5hYmxl
ZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotICAgIGJyb3dzZXJEb21haW5EaXNhYmxlZEZv
ckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotCi0gICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3Bl
Y3RvciwgaW5zcGVjdG9yKTsKKyAgICBjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3JDYWxs
ZWQgPSB0cnVlOwogCiAgICAgc2hhcmVkSW5zcGVjdG9yRGVsZWdhdGUgPSBbSW5zcGVjdG9yRGVs
ZWdhdGUgbmV3XTsKICAgICBbaW5zcGVjdG9yIHNldERlbGVnYXRlOnNoYXJlZEluc3BlY3RvckRl
bGVnYXRlLmdldCgpXTsKIAorICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIgPSBbW1NpbXBsZVVS
TFNjaGVtZUhhbmRsZXIgYWxsb2NdIGluaXRdOworICAgIFJldGFpblB0cjxfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uPiBpbnNwZWN0b3JDb25maWd1cmF0aW9uID0gW1tfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uIGFsbG9jXSBpbml0XTsKKyAgICBbaW5zcGVjdG9yQ29uZmlndXJhdGlvbiBzZXRV
UkxTY2hlbWVIYW5kbGVyOnNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1l
OkAidGVzdGluZyJdOworICAgIHJldHVybiBbaW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhdXRvcmVs
ZWFzZV07Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0
YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVD
VF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisKICAgICBkaWRBdHRhY2hMb2Nh
bEluc3BlY3RvckNhbGxlZCA9IHRydWU7CiB9CiAKQEAgLTEwNSw2ICsxNjAsOCBAQCBAZW5kCiAK
IFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgSW5zcGVjdG9yTGlmZWN5Y2xlQ2FsbGJhY2tzKQog
eworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKwogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRp
b24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwogICAgIHdlYlZpZXdD
b25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0g
WUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3
Q29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMTI3LDYgKzE4NCw4IEBAIFRFU1QoV0tJbnNwZWN0
b3JEZWxlZ2F0ZSwgSW5zcGVjdG9yTGlmZWN5Y2xlQ2FsbGJhY2tzKQogCiBURVNUKFdLSW5zcGVj
dG9yRGVsZWdhdGUsIEluc3BlY3RvckNsb3NlQ2FsbGVkUmVlbnRyYW50bHkpCiB7CisgICAgcmVz
ZXRHbG9iYWxTdGF0ZSgpOworCiAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CiAgICAgd2ViVmlld0NvbmZpZ3VyYXRp
b24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CiAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0
aW9uLmdldCgpXSk7CkBAIC0xNDksNiArMjA4LDggQEAgVEVTVChXS0luc3BlY3RvckRlbGVnYXRl
LCBJbnNwZWN0b3JDbG9zZUNhbGxlZFJlZW50cmFudGx5KQogCiBURVNUKFdLSW5zcGVjdG9yRGVs
ZWdhdGUsIFNob3dVUkxFeHRlcm5hbGx5KQogeworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsKKwog
ICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIG5ld10pOwogICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2Vz
Ll9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAtMTcx
LDQgKzIzMiwzNSBAQCBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIFNob3dVUkxFeHRlcm5hbGx5
KQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmb3BlblVSTEV4dGVybmFsbHlDYWxsZWQp
OwogfQogCisvLyBGSVhNRTogcmUtZW5hYmxpbmcgdGhpcyB0ZXN0IGNhc2UgaXMgYmxvY2tlZCwg
dHJhY2tpbmcgdGhpcyB0YXNrIGluIDxyZGFyOi8vcHJvYmxlbS83MDUwNTI3Mj4uCitURVNUKFdL
SW5zcGVjdG9yRGVsZWdhdGUsIERJU0FCTEVEX0luc3BlY3RvckNvbmZpZ3VyYXRpb24pCit7Cisg
ICAgcmVzZXRHbG9iYWxTdGF0ZSgpOworCisgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZp
Z3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMuX2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byB1aURlbGVnYXRlID0gYWRvcHROUyhbVUlEZWxl
Z2F0ZSBuZXddKTsKKworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6dWlEZWxlZ2F0ZS5nZXQo
KV07CisgICAgW3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdl
IHRvIGJlIGluc3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9w
PjwvYm9keT4iIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5j
b20vIl1dOworCisgICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcuZ2V0KCkuX2lzQmVpbmdJbnNwZWN0
ZWQpOworCisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yQ2FsbGVkKTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVk
KTsKKworICAgIC8vIEZJWE1FOiBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyJ3MgbmF2aWdhdGlv
biBkZWxlZ2F0ZSBjYW5jZWxzIGFsbCBtYWluIGZyYW1lCisgICAgLy8gbG9hZHMgdGhhdCBhcmUg
bm90IHRoZSBXZWIgSW5zcGVjdG9yIHBhZ2UuIFNvLCB0aGlzIGNhbm5vdCBiZSBmdWxseSB0ZXN0
ZWQgdW50aWwKKyAgICAvLyB3ZSBjYW4gdXNlZCB0aGUgY3JlYXRlVGFiIEFQSSB0byBsb2FkIHRo
ZSBjdXN0b20gVVJMIHNjaGVtZSByZXNvdXJjZSBpbiBhbiBpZnJhbWUuCisgICAgdXJsVG9PcGVu
ID0gW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJ0ZXN0aW5nOm1haW4xIl07CisgICAgc2hhcmVkVVJM
U2NoZW1lSGFuZGxlci5nZXQoKS5leHBlY3RlZFVSTCA9IHVybFRvT3Blbi5nZXQoKTsKKyAgICBb
W3dlYlZpZXcgX2luc3BlY3Rvcl0gX29wZW5VUkxFeHRlcm5hbGx5Rm9yVGVzdGluZzp1cmxUb09w
ZW4uZ2V0KCkgdXNlRnJvbnRlbmRBUEk6Tk9dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkKTsKKworICAgIFtbd2ViVmlldyBfaW5zcGVjdG9y
XSBjbG9zZV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZ3aWxsQ2xvc2VMb2NhbElu
c3BlY3RvckNhbGxlZCk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412130</attachid>
            <date>2020-10-22 14:01:14 -0700</date>
            <delta_ts>2020-10-27 13:54:08 -0700</delta_ts>
            <desc>Patch v3.3 [FOR LANDING]</desc>
            <filename>bug-217896-20201022140114.patch</filename>
            <type>text/plain</type>
            <size>61076</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY4ODkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyMmNmYWVmZjBjMjZhMDRh
Yzg4ZDM4Yjk3NmU5YTA5ZjczYTZhZWUuLjFjNjlmZmI2NzE5ZDRlYzI3YzhlNTExOTNmZGUyODdl
MDkyZGJhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMjAtMTAtMjEgIEJyaWFuIEJ1
cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisKKyAgICAgICAgW0NvY29hXSBJbnRyb2R1Y2UgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiBmb3IgY3VzdG9taXppbmcgbG9jYWwgYW5kIHJlbW90ZSBXZWIg
SW5zcGVjdG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE3ODk2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDM1NTkxMD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgSW50cm9kdWNlIF9XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbWl6aW5nIHRoZSBiZWhhdmlvciBvZiBXZWIgSW5zcGVj
dG9yIGluc3RhbmNlcy4KKyAgICAgICAgVGhlIGluaXRpYWwgY3VzdG9taXphdGlvbiBpcyB0byBh
bGxvdyBmb3IgY3VzdG9tIFdLVVJMU2NoZW1lSGFuZGxlcnMgdG8gYmUgdXNlZCBieSBXZWIgSW5z
cGVjdG9yJ3MKKyAgICAgICAgV2ViVmlldyB0byBsb2FkIHJlc291cmNlcyBmcm9tIGNsaWVudC1j
b250cm9sbGVkIGxvY2F0aW9ucy4gVGhpcyBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgbG9hZGlu
ZworICAgICAgICBvZiBleHRlbnNpb24gcmVzb3VyY2VzIHVzaW5nIGEgY3VzdG9tIHNjaGVtZSBz
dWNoIGFzIHdlYi1leHRlbnNpb246Ly8uCisKKyAgICAgICAgU2NoZW1lIGhhbmRsZXJzIG5lZWQg
dG8gYmUgcmVnaXN0ZXJlZCBhdCBXZWJWaWV3IGNyZWF0aW9uIHRpbWUgdmlhIFdLV2ViVmlld0Nv
bmZpZ3VyYXRpb24uIEluCisgICAgICAgIG9yZGVyIHRvIGNvbmZpZ3VyZSBhIGluc3BlY3RvciBw
YWdlIHN1bW1vbmVkIGZyb20gd2l0aGluIFdlYktpdCAoaS5lLiwgSW5zcGVjdCBFbGVtZW50IGNv
bnRleHQgbWVudSBpdGVtKSwKKyAgICAgICAgd2UgbmVlZCB0byBhZGQgYSBtZXRob2QgdG8gdGhl
IFVJIGRlbGVnYXRlIHRvIGdldCBhIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgcGFnZSBpcyBiZWlu
ZyBjcmVhdGVkLgorCisgICAgICAgIFRoaXMgY29uZmlndXJhdGlvbiBvYmplY3QgaXMgdXNlZCBp
biB0d28gZGlmZmVyZW50IFNQSSAobG9jYWwgYW5kIHJlbW90ZSBjYXNlcyk6CisKKyAgICAgICAg
LSBBcyBwYXJ0IG9mIFdLVUlEZWxlZ2F0ZVByaXZhdGUsIHRvIHJldHJpZXZlIGEgX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbiBnaXZlbiBhIF9XS0luc3BlY3Rvci4KKyAgICAgICAgLSBBcyBhbiBh
cmd1bWVudCB0byB0aGUgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgaW5pdGlh
bGl6ZXIuIEl0J3MgdXNlZCBsYXRlciBhcyBuZWVkZWQuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0
OiBXS0luc3BlY3RvckRlbGVnYXRlLkluc3BlY3RvckNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAg
KiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGVzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uIGluaXRdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBkZWFs
bG9jXSk6CisgICAgICAgICgtW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gX2FwaU9iamVjdF0p
OgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRs
ZXI6Zm9yVVJMU2NoZW1lOl0pOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9u
IGFwcGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisgICAgICAgIENyZWF0ZSBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uIGFuZCBhZGQgYSBtZXRob2QgdG8gcmVnaXN0ZXIgV0tVUkxTY2hlbWVI
YW5kbGVycy4KKworICAgICAgICAqIFNoYXJlZC9BUEkvQVBJT2JqZWN0Lmg6CisgICAgICAgICog
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbToKKyAgICAgICAgKEFQSTo6T2JqZWN0OjpuZXdPYmpl
Y3QpOgorICAgICAgICBBZGQgbmV3IEFQSSBvYmplY3QgdHlwZXMuIEFkZCBtaXNzaW5nIEluc3Bl
Y3RvckV4dGVuc2lvbi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVn
YXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAg
ICAgICAgKEFQSTo6VUlDbGllbnQ6OmNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rvcik6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0
RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmln
dXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKToKKyAgICAgICAgQWRkIG5ldyBjbGllbnQvZGVsZWdh
dGUgbWV0aG9kIHRvIGZldGNoIGFuIGluc3BlY3RvciBjb25maWd1cmF0aW9uIGFzIG5lZWRlZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmll
d0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdl
Ykluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW06CisgICAgICAg
ICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGluaXRXaXRoQ29uZmlndXJh
dGlvbjpdKTogUmVuYW1lZCBmcm9tIC1pbml0LgorICAgICAgICAoLVtfV0tSZW1vdGVXZWJJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlciBpbml0XSk6IERlbGV0ZWQuCisgICAgICAgICgtW19XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIGxvYWRGb3JEZWJ1Z2dhYmxlVHlwZTpiYWNrZW5k
Q29tbWFuZHNVUkw6XSk6CisgICAgICAgICgtW19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250
cm9sbGVyIGNvbmZpZ3VyYXRpb25Gb3JEZWJ1Z2dhYmxlOl0pOgorICAgICAgICAoLVtfV0tSZW1v
dGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciBfc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZTpdKToKKyAgICAgICAgU3RvcmUgYSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uIGFuZCBwcm92
aWRlIGl0IHdoZW4gYXNrZWQgYnkgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKToKKyAgICAgICAgU3Rv
cmUgbV9kZWJ1Z2dhYmxlSW5mbyBiZWZvcmUgY3JlYXRpbmcgdGhlIHBhZ2UgYW5kIHdpbmRvdy4g
SXQncyB1c2VkIGZyb20gaW5zaWRlCisgICAgICAgIHBsYXRmb3JtQ3JlYXRlRnJvbnRlbmRQYWdl
QW5kV2luZG93IHRvIHBhc3MgYXMgYW4gYXJndW1lbnQgdG8gdGhlIGRlbGVnYXRlIG1ldGhvZC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclBy
b3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVXZWJJbnNwZWN0b3JQcm94eTo6cGxh
dGZvcm1DcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3cpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVGcm9udGVuZFBhZ2UpOgorICAgICAgICBP
YnRhaW4gYSBjb25maWd1cmF0aW9uIGFuZCB1c2UgaXQgdG8gaW5pdGlhbGl6ZSB0aGUgV0tJbnNw
ZWN0b3JWaWV3Q29udHJvbGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvbWFj
L1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVj
dG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tOgorICAgICAgICAoLVtXS0luc3Bl
Y3RvclZpZXdDb250cm9sbGVyIGluaXRXaXRoQ29uZmlndXJhdGlvbjppbnNwZWN0ZWRQYWdlOl0p
OgorICAgICAgICAoLVtXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIHdlYlZpZXddKToKKyAgICAg
ICAgKC1bV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlciB3ZWJWaWV3Q29uZmlndXJhdGlvbl0pOiBS
ZW5hbWVkIGZyb20gLWNvbmZpZ3VyYXRpb24uCisgICAgICAgICgtW1dLSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIgaW5pdFdpdGhJbnNwZWN0ZWRQYWdlOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyIGNvbmZpZ3VyYXRpb25dKTogRGVsZXRlZC4KKyAgICAg
ICAgQXBwbHkgdGhlIFVSTCBzY2hlbWUgaGFuZGxlcnMgcmVnaXN0ZXJlZCBpbiB0aGUgX1dLSW5z
cGVjdG9yQ29uZmlndXJhdGlvbiB0byB0aGUKKyAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
bi4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JD
bGllbnQuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUlu
c3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgIFN0dWIgb3V0IFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5Q2xpZW50Ojpjb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKCkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbToKKyAgICAgICAgRml4IGJ1aWxk
IHByb2JsZW1zIGNhdXNlZCBieSByZXBhcnRpdGlvbmluZyBvZiB1bmlmaWVkIHNvdXJjZXMuCisK
IDIwMjAtMTAtMjIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
SVBDIHRlc3RpbmcgQVBJIHNob3VsZCBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG9ic2VydmUgbWVz
c2FnZXMgYmVpbmcgc2VudCBhbmQgcmVjZWl2ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmpl
Y3QuaAppbmRleCA0NTdjMjYyMmFmMWFiZGEzZGZlNjM3NzBlMjcxNGQxMmY3YzdjNDhmLi42ZDA2
NTY0NWRjZWU2MmU1OWQ1MGRiZWYzNzQzNWE0OWE4MGViNjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL0FQSU9iamVjdC5oCkBAIC0xMzYsNiArMTM2LDcgQEAgcHVibGljOgogICAgICAgICBHcmFt
bWFyRGV0YWlsLAogICAgICAgICBJY29uRGF0YWJhc2UsCiAgICAgICAgIEluc3BlY3RvciwKKyAg
ICAgICAgSW5zcGVjdG9yQ29uZmlndXJhdGlvbiwKICAgICAgICAgS2V5VmFsdWVTdG9yYWdlTWFu
YWdlciwKICAgICAgICAgTWVkaWFDYWNoZU1hbmFnZXIsCiAgICAgICAgIE1lc3NhZ2VMaXN0ZW5l
ciwKQEAgLTM4MCw2ICszODEsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPEFQSTo6
T2JqZWN0OjpUeXBlPiB7CiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpHcmFtbWFyRGV0YWls
LAogICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SWNvbkRhdGFiYXNlLAogICAgICAgICBBUEk6
Ok9iamVjdDo6VHlwZTo6SW5zcGVjdG9yLAorICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZTo6SW5z
cGVjdG9yQ29uZmlndXJhdGlvbiwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6OktleVZhbHVl
U3RvcmFnZU1hbmFnZXIsCiAgICAgICAgIEFQSTo6T2JqZWN0OjpUeXBlOjpNZWRpYUNhY2hlTWFu
YWdlciwKICAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGU6Ok1lc3NhZ2VMaXN0ZW5lciwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbSBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRleCAxNzMwYmQ0OTNmZDBiNDZkZWVj
YzI0N2Q3YzE4MmNkNjgyOGRhNjMxLi5jOTQyMGNkNWYyMGRiMTE5OWEyZmYwYTUzNWNlMDA5Y2Y5
Mjg2NWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9BUElPYmplY3Qu
bW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCkBAIC03OSw2
ICs3OSw3IEBACiAjaW1wb3J0ICJfV0tGcmFtZVRyZWVOb2RlSW50ZXJuYWwuaCIKICNpbXBvcnQg
Il9XS0dlb2xvY2F0aW9uUG9zaXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJl
c3VsdEludGVybmFsLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCIKICNp
bXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnRlcm5hbERlYnVn
RmVhdHVyZUludGVybmFsLmgiCkBAIC0yNjQsNyArMjY1LDExIEBAIHZvaWQqIE9iamVjdDo6bmV3
T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgY2FzZSBUeXBlOjpJbnNwZWN0b3I6
CiAgICAgICAgIHdyYXBwZXIgPSBbX1dLSW5zcGVjdG9yIGFsbG9jXTsKICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIAorCisgICAgY2FzZSBUeXBlOjpJbnNwZWN0b3JDb25maWd1cmF0aW9uOgorICAg
ICAgICB3cmFwcGVyID0gW19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gYWxsb2NdOworICAgICAg
ICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6TmF2aWdhdGlvbjoKICAgICAgICAgd3JhcHBlciA9
IFtXS05hdmlnYXRpb24gYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDYw
OTY4ZjdjNTdjNzNlOGQzMjQ4NjM5MTc5OTk5Mzc0MGIzYzhlYzQuLjA5NDdlNDlkYmQ2NzY5ZmYw
MzU2NjI4MjE1MDU4MmQ0ZmRmMmE0OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzQzLDYgKzM0Myw3IEBA
IFVJUHJvY2Vzcy9BUEkvQVBJRnJhbWVJbmZvLmNwcAogVUlQcm9jZXNzL0FQSS9BUElGcmFtZVRy
ZWVOb2RlLmNwcAogVUlQcm9jZXNzL0FQSS9BUElIVFRQQ29va2llU3RvcmUuY3BwCiBVSVByb2Nl
c3MvQVBJL0FQSUhpdFRlc3RSZXN1bHQuY3BwCitVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUludGVybmFsRGVidWdGZWF0dXJlLmNw
cAogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uLmNwcAogVUlQcm9jZXNzL0FQSS9BUElOYXZp
Z2F0aW9uRGF0YS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4
dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBmNjlhMmRkMzliMGUxZTIw
YzFiYmZjMTNhNWQ0NDE1OTM3OTIwYmZkLi45OWJlYTFmYjU5ZTk2ZDZhMDBlZjFiYmEwOGE3MjRi
MWYyODg3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysr
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yNTYsNiArMjU2LDcgQEAgVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tFeHBlcmltZW50YWxGZWF0dXJlLm1tCiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0ZyYW1lVHJlZU5vZGUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLR2VvbG9j
YXRpb25Qb3NpdGlvbi5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KK1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JUZXN0aW5nLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvcldpbmRvdy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQ
SUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUxZmYzMzkyYzE2Nzdj
ZjBhNzJmMDQyZDI3ZWNlNWNjOTRhN2NjZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHAKQEAgLTAsMCAr
MSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElJ
bnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisKKyNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVy
LmgiCisKK25hbWVzcGFjZSBBUEkgeworCitSZWY8SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gSW5z
cGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBJbnNwZWN0b3JDb25maWd1cmF0aW9uKTsKK30KKwordm9pZCBJbnNwZWN0b3JDb25maWd1cmF0
aW9uOjphZGRVUkxTY2hlbWVIYW5kbGVyKFJlZjxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXI+
JiYgdXJsU2NoZW1lSGFuZGxlciwgY29uc3QgV1RGOjpTdHJpbmcmIHVybFNjaGVtZSkKK3sKKyAg
ICBtX2N1c3RvbVVSTFNjaGVtZXMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKFdURk1vdmUodXJsU2No
ZW1lSGFuZGxlciksIHVybFNjaGVtZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBBUEkKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNvbmZpZ3Vy
YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDb25maWd1
cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGQ5NWViMGQ2ZmNlNGM1OGMzY2IyNjA0YmFkZDBkY2IyZTE3
NmZhOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JDb25maWd1cmF0aW9uLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0
IHsKK2NsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7Cit9CisKK25hbWVzcGFjZSBBUEkgeworCit1
c2luZyBVUkxTY2hlbWVIYW5kbGVyUGFpciA9IHN0ZDo6cGFpcjxSZWY8V2ViS2l0OjpXZWJVUkxT
Y2hlbWVIYW5kbGVyPiwgV1RGOjpTdHJpbmc+OworCitjbGFzcyBJbnNwZWN0b3JDb25maWd1cmF0
aW9uIGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxPYmplY3Q6OlR5cGU6Okluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPEluc3BlY3RvckNvbmZp
Z3VyYXRpb24+IGNyZWF0ZSgpOworICAgIAorICAgIHZvaWQgYWRkVVJMU2NoZW1lSGFuZGxlcihS
ZWY8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyPiYmLCBjb25zdCBXVEY6OlN0cmluZyYgdXJs
U2NoZW1lKTsKKyAgICBjb25zdCBWZWN0b3I8VVJMU2NoZW1lSGFuZGxlclBhaXI+JiB1cmxTY2hl
bWVIYW5kbGVycygpIHsgcmV0dXJuIG1fY3VzdG9tVVJMU2NoZW1lczsgfQorCitwcml2YXRlOgor
ICAgIFZlY3RvcjxVUkxTY2hlbWVIYW5kbGVyUGFpcj4gbV9jdXN0b21VUkxTY2hlbWVzOworfTsK
KworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNs
aWVudC5oCmluZGV4IDdiNGY5M2FhNDI2NTQxZmRiMzFlYzg4MTc3MGIyZjMzNmFlZThmOGIuLmFh
N2Q4OWMwMWU3MzUyMGNlM2VlMDQyMjZiOWFlODU5NzBiZmFhNmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEg
b25jZQogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUg
IldLUGFnZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSGl0VGVzdFJl
c3VsdERhdGEuaCIKQEAgLTE5Niw2ICsxOTcsMTEgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2
b2lkIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0
OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2xvc2VMb2Nh
bEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHkmKSB7IH0KKyAgICB2aXJ0dWFsIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHkmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVj
dG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgfQorCiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJ
RGVsZWdhdGVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDdmY2M0YTkxMzZmMTA3MWQyYmUyNTcyNzNjYmM2OTBh
ZjYzZmQyYjcuLmQxZWFlMjAxZTY1NDJmNGZhYjYwMTk4MGRjNjYxMjQ5MTMxOTc5M2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0
ZVByaXZhdGUuaApAQCAtMzgsNiArMzgsOSBAQAogQGNsYXNzIF9XS0FjdGl2YXRlZEVsZW1lbnRJ
bmZvOwogQGNsYXNzIF9XS0VsZW1lbnRBY3Rpb247CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CitA
Y2xhc3MgX1dLSW5zcGVjdG9yOworQGNsYXNzIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb247CitA
Y2xhc3MgX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm87CiAKICNpZiBUQVJHRVRfT1NfSU9TCiAK
QEAgLTI0Nyw2ICsyNTAsMTIgQEAgc3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51OihO
U01lbnUgKiltZW51IGZvckVsZW1lbnQ6KF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8gKillbGVt
ZW50IHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU01lbnUgKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNCkpOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRQZXJmb3JtRHJhZ09wZXJhdGlvbjooQk9PTCloYW5kbGVkIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoMTAuMTQuNCkpOwogCisvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBfV0tJbnNwZWN0
b3IgZm9yIHRoaXMgV0tXZWJWaWV3IGlzIGFib3V0IHRvIGJlIGRpc3BsYXllZC4gVGhlIGNsaWVu
dCBjYW4KKyAgICBwcm92aWRlIGEgY3VzdG9tIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gdGhh
dCBzaG91bGQgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBXZWIgSW5zcGVjdG9yLgorICAgIEBw
YXJhbSBpbnNwZWN0b3IgVGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgdGhhdCBpcyBhYm91dCB0
byBiZSBpbml0aWFsaXplZC4KKyAqLworLSAoX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAqKV93
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3Rv
cjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSkpOworCiAvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIGEgV2ViIEluc3BlY3RvciBpbnN0
YW5jZSBpcyBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4gVGhpcyBpcyBub3QgY2FsbGVkIGlu
IHRoZSBjYXNlIG9mIHJlbW90ZSBpbnNwZWN0aW9uLgogICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBX
S1dlYlZpZXcgaW5zdGFuY2UgYmVpbmcgaW5zcGVjdGVkLgogICAgIEBwYXJhbSBpbnNwZWN0b3Ig
VGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0lu
c3BlY3RvckNvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mYjM1OWZkYzQ5MzQ4Y2JiMGE0M2Y0
NjJiYmY1NzkyZTQzMTY0ZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDQ2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisK
K0Bwcm90b2NvbCBXS1VSTFNjaGVtZUhhbmRsZXI7CisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSkKK0BpbnRlcmZhY2UgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiA6IE5T
T2JqZWN0IDxOU0NvcHlpbmc+CisvKioKKyAqIEBhYnN0cmFjdCBTZXRzIHRoZSBVUkwgc2NoZW1l
IGhhbmRsZXIgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gVVJMIHNjaGVtZS4KKyAqIEBwYXJhbSB1cmxT
Y2hlbWVIYW5kbGVyIFRoZSBvYmplY3QgdG8gcmVnaXN0ZXIuCisgKiBAcGFyYW0gc2NoZW1lIFRo
ZSBVUkwgc2NoZW1lIHRoZSBvYmplY3Qgd2lsbCBoYW5kbGUuCisgKiBAZGlzY3Vzc2lvbiBUaGlz
IGlzIHVzZWQgdG8gcmVnaXN0ZXIgYWRkaXRpb25hbCBzY2hlbWVzIGZvciBsb2FkaW5nIHJlc291
cmNlcyBpbiB0aGUgaW5zcGVjdG9yIHBhZ2UsCisgKiBzdWNoIGFzIHRvIHJlZ2lzdGVyIHNjaGVt
ZXMgdXNlZCBieSBleHRlbnNpb25zLiBUaGlzIG1ldGhvZCBoYXMgdGhlIHNhbWUgYmVoYXZpb3Ig
YW5kIHJlc3RyaWN0aW9ucyBhcworICogZGVzY3JpYmVkIGluIHRoZSBkb2N1bWVudGF0aW9uIG9m
IC1bV0tXZWJWaWV3IHNldFVSTFNjaGVtZUhuYWRsZXI6Zm9yVVJMU2NoZW1lOl0uCisgKi8KKy0g
KHZvaWQpc2V0VVJMU2NoZW1lSGFuZGxlcjooaWQgPFdLVVJMU2NoZW1lSGFuZGxlcj4pdXJsU2No
ZW1lSGFuZGxlciBmb3JVUkxTY2hlbWU6KE5TU3RyaW5nICopdXJsU2NoZW1lOworQGVuZAorCitO
U19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZWExZjIzNDJmODhhYTgyNDE3YTNiNzAzOTQ2NzY1YmNhYzgyZjk3MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLm1tCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgorCisj
aW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKKworQGltcGxlbWVudGF0aW9uIF9X
S0luc3BlY3RvckNvbmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIEFQ
STo6T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0aW9u
PihzZWxmKTsKKyAgICAKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZClkZWFsbG9jCit7
CisgICAgX2NvbmZpZ3VyYXRpb24tPkFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6fkluc3Bl
Y3RvckNvbmZpZ3VyYXRpb24oKTsKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKEFQSTo6
T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfY29uZmlndXJhdGlvbjsKK30KKwor
LSAodm9pZClzZXRVUkxTY2hlbWVIYW5kbGVyOihpZCA8V0tVUkxTY2hlbWVIYW5kbGVyPil1cmxT
Y2hlbWVIYW5kbGVyIGZvclVSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxTY2hlbWUKK3sKKyAgICBf
Y29uZmlndXJhdGlvbi0+YWRkVVJMU2NoZW1lSGFuZGxlcihXZWJLaXQ6OldlYlVSTFNjaGVtZUhh
bmRsZXJDb2NvYTo6Y3JlYXRlKHVybFNjaGVtZUhhbmRsZXIpLCB1cmxTY2hlbWUpOworfQorCist
ICh2b2lkKWFwcGx5VG9XZWJWaWV3Q29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqKWNvbmZpZ3VyYXRpb24KK3sKKyAgICBmb3IgKGF1dG8gcGFpciA6IF9jb25maWd1cmF0aW9u
LT51cmxTY2hlbWVIYW5kbGVycygpKSB7CisgICAgICAgIGF1dG8mIGhhbmRsZXIgPSBzdGF0aWNf
Y2FzdDxXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYSY+KHBhaXIuZmlyc3QuZ2V0KCkp
OworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOmhhbmRsZXIuYXBp
SGFuZGxlcigpIGZvclVSTFNjaGVtZTpwYWlyLnNlY29uZF07CisgICAgfQorfQorCistIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0
aW9uICpjb25maWd1cmF0aW9uID0gWyhfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICopW1tzZWxm
IGNsYXNzXSBhbGxvY1dpdGhab25lOnpvbmVdIGluaXRdOworCisgICAgZm9yIChhdXRvIHBhaXIg
OiBfY29uZmlndXJhdGlvbi0+dXJsU2NoZW1lSGFuZGxlcnMoKSkgeworICAgICAgICBhdXRvJiBo
YW5kbGVyID0gc3RhdGljX2Nhc3Q8V2ViS2l0OjpXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EmPihw
YWlyLmZpcnN0LmdldCgpKTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFu
ZGxlcjpoYW5kbGVyLmFwaUhhbmRsZXIoKSBmb3JVUkxTY2hlbWU6cGFpci5zZWNvbmRdOworICAg
IH0KKworICAgIHJldHVybiBjb25maWd1cmF0aW9uOworfQorCitAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlv
bkludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVj
dG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODNiOGZlMjk1MGQxYTRhNzJm
YzA2MWZiMWQ2OWExMjYxYzkwYTY2NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaApA
QCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oIgorCisjaW1wb3J0ICJBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmgiCisjaW1w
b3J0ICJXS09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordGVtcGxhdGU8PiBzdHJ1
Y3QgV3JhcHBlclRyYWl0czxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IHsKKyAgICB1c2lu
ZyBXcmFwcGVyQ2xhc3MgPSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK0BpbnRlcmZhY2Ug
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAg
QVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gX2NvbmZpZ3Vy
YXRpb247Cit9CisKKy0gKHZvaWQpYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopd2ViVmlld0NvbmZpZ3VyYXRpb247CisKK0BlbmQKKworTlNfQVNT
VU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxl
ci5oCmluZGV4IDU4YjEwMjcwMzI0ZWU5MTczOTMwZjhjN2FkZThiZmNkN2M5ZTQ0ZWUuLmI5YThi
MjAyMDA1MjlhNDJkYTRhZmMyM2Q0ZmQ0Y2YxMjBjODY4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVX
ZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgIVRBUkdF
VF9PU19JUEhPTkUKIAogQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFzcyBfV0tJbnNwZWN0b3JDb25m
aWd1cmF0aW9uOwogCiBAcHJvdG9jb2wgX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0NvbnRyb2xs
ZXJEZWxlZ2F0ZTsKIApAQCAtNDksNyArNTAsOSBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3Mo
MTAuMTIuMyksIGlvcygxMC4zKSkKIAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBy
ZXRhaW4pIE5TV2luZG93ICp3aW5kb3c7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHks
IHJldGFpbikgV0tXZWJWaWV3ICp3ZWJWaWV3OworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5LCBjb3B5KSBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uOwogCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbjsKIC0gKHZvaWQpbG9hZEZvckRlYnVnZ2FibGVUeXBlOihX
S1JlbW90ZVdlYkluc3BlY3RvckRlYnVnZ2FibGVUeXBlKWRlYnVnZ2FibGVUeXBlIGJhY2tlbmRD
b21tYW5kc1VSTDooTlNVUkwgKiliYWNrZW5kQ29tbWFuZHNVUkw7CiAtICh2b2lkKWNsb3NlOwog
LSAodm9pZClzaG93OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
Lm1tCmluZGV4IDY2YmYyNGRmODI2ZGFhOGU3Mjg0MjQ4ZmQxYjcyOGNiNWViZmYzNDMuLjRlNDBi
OGI3YTc1ZjVmNzAzNTVkMDFkZDc1NTdjZGIxYmFhZmM0NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJv
bGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3Rl
V2ViSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0KQEAgLTI0LDE2ICsyNCwyMCBAQAogICovCiAK
ICNpbXBvcnQgImNvbmZpZy5oIgotI2ltcG9ydCAiX1dLUmVtb3RlV2ViSW5zcGVjdG9yVmlld0Nv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIl9XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVy
UHJpdmF0ZS5oIgogCiAjaWYgUExBVEZPUk0oTUFDKQogCiAjaW1wb3J0ICJBUElEZWJ1Z2dhYmxl
SW5mby5oIgorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2ltcG9ydCAi
RGVidWdnYWJsZUluZm9EYXRhLmgiCiAjaW1wb3J0ICJSZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5o
IgogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckNv
bmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVidWdnYWJsZUlu
Zm9JbnRlcm5hbC5oIgogCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCiBAaW50ZXJmYWNlIF9X
S1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyICgpCiAtICh2b2lkKXNlbmRNZXNzYWdl
VG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2U7CiAtICh2b2lkKWNsb3NlRnJvbUZyb250ZW5k
OwpAQCAtNjIsNiArNjYsMTEgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgW21fY29udHJvbGxl
ciBjbG9zZUZyb21Gcm9udGVuZF07CiAgICAgfQorICAgIAorICAgIFJlZjxBUEk6Okluc3BlY3Rv
ckNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoUmVtb3RlV2Vi
SW5zcGVjdG9yUHJveHkmIGluc3BlY3Rvcikgb3ZlcnJpZGUKKyAgICB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24mPihbbV9jb250cm9sbGVy
LmNvbmZpZ3VyYXRpb24gX2FwaU9iamVjdF0pOworICAgIH0KIAogcHJpdmF0ZToKICAgICBfV0tS
ZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlciAqbV9jb250cm9sbGVyOwpAQCAtNzIsMTMg
KzgxLDE2IEBAIHByaXZhdGU6CiBAaW1wbGVtZW50YXRpb24gX1dLUmVtb3RlV2ViSW5zcGVjdG9y
Vmlld0NvbnRyb2xsZXIgewogICAgIFJlZlB0cjxXZWJLaXQ6OlJlbW90ZVdlYkluc3BlY3RvclBy
b3h5PiBtX3JlbW90ZUluc3BlY3RvclByb3h5OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6
Ol9XS1JlbW90ZVdlYkluc3BlY3RvclByb3h5Q2xpZW50PiBtX3JlbW90ZUluc3BlY3RvckNsaWVu
dDsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJhdGlvbjsKIH0KIAot
LSAoaW5zdGFuY2V0eXBlKWluaXQKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbmZpZ3VyYXRp
b246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uCiB7CiAgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKKyAgICBfY29u
ZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9uIGNvcHldOworCiAgICAgbV9yZW1vdGVJbnNwZWN0
b3JQcm94eSA9IFdlYktpdDo6UmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZSgpOwogICAg
IG1fcmVtb3RlSW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Ol9XS1JlbW90ZVdl
Ykluc3BlY3RvclByb3h5Q2xpZW50PihzZWxmKTsKICAgICBtX3JlbW90ZUluc3BlY3RvclByb3h5
LT5zZXRDbGllbnQobV9yZW1vdGVJbnNwZWN0b3JDbGllbnQuZ2V0KCkpOwpAQCAtMTI0LDcgKzEz
Niw3IEBAIC0gKHZvaWQpbG9hZEZvckRlYnVnZ2FibGVUeXBlOihXS1JlbW90ZVdlYkluc3BlY3Rv
ckRlYnVnZ2FibGVUeXBlKWRlYnVnZ2FibGVUeXBlCiAgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0
UGxhdGZvcm1OYW1lID0gQCJtYWNPUyI7CiAgICAgZGVidWdnYWJsZUluZm8udGFyZ2V0QnVpbGRW
ZXJzaW9uID0gQCJVbmtub3duIjsKICAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRQcm9kdWN0VmVy
c2lvbiA9IEAiVW5rbm93biI7Ci0gICAgZGVidWdnYWJsZUluZm8udGFyZ2V0SXNTaW11bGF0b3Ig
PSBmYWxzZTsKKyAgICBkZWJ1Z2dhYmxlSW5mby50YXJnZXRJc1NpbXVsYXRvciA9IE5POwogICAg
IFtzZWxmIGxvYWRGb3JEZWJ1Z2dhYmxlOmRlYnVnZ2FibGVJbmZvIGJhY2tlbmRDb21tYW5kc1VS
TDpiYWNrZW5kQ29tbWFuZHNVUkxdOwogfQogCkBAIC0xNDgsNiArMTYwLDggQEAgLSAodm9pZClz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQ6KE5TU3RyaW5nICopbWVzc2FnZQogICAgIG1fcmVtb3RlSW5z
cGVjdG9yUHJveHktPnNlbmRNZXNzYWdlVG9Gcm9udGVuZChtZXNzYWdlKTsKIH0KIAorLy8gTUFS
SzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0aG9kcworCiAtICh2b2lkKXNlbmRN
ZXNzYWdlVG9CYWNrZW5kOihOU1N0cmluZyAqKW1lc3NhZ2UKIHsKICAgICBpZiAoX2RlbGVnYXRl
ICYmIFtfZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihpbnNwZWN0b3JWaWV3
Q29udHJvbGxlcjpzZW5kTWVzc2FnZVRvQmFja2VuZDopXSkKQEAgLTE2Miw3ICsxNzYsNyBAQCAt
ICh2b2lkKWNsb3NlRnJvbUZyb250ZW5kCiAKIC8vIE1BUks6IF9XS1JlbW90ZVdlYkluc3BlY3Rv
clZpZXdDb250cm9sbGVyUHJpdmF0ZSBtZXRob2RzCiAKLS0gKHZvaWQpX3NldERpYWdub3N0aWNM
b2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRl
CistICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGlj
TG9nZ2luZ0RlbGVnYXRlPiBfTnVsbGFibGUpZGVsZWdhdGUKIHsKICAgICBzZWxmLndlYlZpZXcu
X2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICBtX3JlbW90ZUluc3Bl
Y3RvclByb3h5LT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRlKTsKQEAg
LTE3MCw0ICsxODQsNiBAQCAtICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOihp
ZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPilkZWxlZ2F0ZQogCiBAZW5kCiAKK05TX0FT
U1VNRV9OT05OVUxMX0VORAorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1JlbW90ZVdlYkluc3BlY3RvclZp
ZXdDb250cm9sbGVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1JlbW90ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyUHJpdmF0ZS5oCmluZGV4IDNhOWM3
MTBhZTQ5MGNiNzllNmExNTRkN2YwOTYxNWYxYTg4MGI0NTIuLmJmZmJjMTcwNDcxNzBiMjRiNTIz
ZjI0ZDY2YjczYjM0N2IzY2Q0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tSZW1vdGVXZWJJbnNwZWN0b3JWaWV3Q29udHJvbGxlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUmVtb3RlV2ViSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXJQcml2YXRlLmgKQEAgLTMwLDYgKzMwLDcgQEAKIE5TX0FTU1VNRV9O
T05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mbzsKK0Bwcm90
b2NvbCBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOwogCiBAaW50ZXJmYWNlIF9XS1JlbW90
ZVdlYkluc3BlY3RvclZpZXdDb250cm9sbGVyIChXS1ByaXZhdGUpCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKaW5kZXgg
MDZmOGYxZjc2MmU4OTY4NmZjNWRjM2ZjODkwZjEzZTBiMzYzZDMzMy4uZTRjZjVhMmRjMTAyZjU5
NmQzYWVmZThjNjQ3YjZmNWFhOWI3OWIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0LmgKQEAgLTI5LDYgKzI5LDcgQEAK
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBfV0tVc2VyQ29udGVudFdvcmxkOwor
QGNsYXNzIFdLQ29udGVudFdvcmxkOwogQGNsYXNzIFdLV2ViVmlldzsKIAogdHlwZWRlZiBOU19F
TlVNKE5TSW50ZWdlciwgX1dLVXNlclN0eWxlTGV2ZWwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbSBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tVc2VyU3R5bGVTaGVldC5tbQppbmRleCAwNjg0
NDEyYjEzNTFmMzBhNWQ0ODRmOTA5ZDdhNGI5N2E3MWNhNDI2Li43OTE1ZWEzYjJmNjVkYTQ4Y2Y0
ZWE5ODIwMjVhOTNlNGUxOGE3ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLVXNlclN0eWxlU2hlZXQubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1VzZXJTdHlsZVNoZWV0Lm1tCkBAIC0yNyw2ICsyNyw3IEBACiAj
aW1wb3J0ICJfV0tVc2VyU3R5bGVTaGVldEludGVybmFsLmgiCiAKICNpbXBvcnQgIkFQSUFycmF5
LmgiCisjaW1wb3J0ICJXS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJXS05TQXJy
YXkuaCIKICNpbXBvcnQgIldLTlNVUkxFeHRyYXMuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVy
bmFsLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXgg
YTQ5ZTY1Mzk3ZjQ3NTcyMzcxODMzYzVmNzU0ODRjZWUxZDNjYjhkOC4uOGEwOTQ3NDVjMWYyNGJl
MTA1ZGJiMDJhYjkxZTMwN2IzMWQ0ODZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1VJRGVsZWdhdGUuaApAQCAtMTI0LDYgKzEyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBGcmFtZUluZm9E
YXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRCYWNrZ3JvdW5kUmVzb3Vy
Y2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdLUmVzb3VyY2VMaW1pdCkg
ZmluYWw7CiAgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQ
YWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3Qg
VVJMJiwgQVBJOjpEYXRhJikgZmluYWw7CisgICAgICAgIFJlZjxBUEk6Okluc3BlY3RvckNvbmZp
Z3VyYXRpb24+IGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBX
ZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEF0dGFjaExvY2FsSW5z
cGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5JikgZmluYWw7CiAgICAgICAg
IHZvaWQgd2lsbENsb3NlTG9jYWxJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9y
UHJveHkmKSBmaW5hbDsKICNlbmRpZgpAQCAtMjAxLDYgKzIwMiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgd2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9y
aWdpbmF0aW5nVVJMIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBh
cmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIgOiAxOwogICAgICAgICBi
b29sIHdlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2lu
RGVjaXNpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3Q29uZmlndXJhdGlvbkZv
ckxvY2FsSW5zcGVjdG9yIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkQXR0YWNoTG9jYWxJ
bnNwZWN0b3IgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdXaWxsQ2xvc2VMb2NhbEluc3BlY3Rv
ciA6IDE7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRl
Lm1tCmluZGV4IDI4Nzc5Y2U0YmZjYmM5MTlmZjhhMzcwZTA2YTZmZTFlMzA5OTA5NDUuLmQwMzM4
ZjhkNmUzYjlhMTNkZjJhZjE1M2FjYjVkZWIzOGUxZmNkOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAi
QVBJQXJyYXkuaCIKICNpbXBvcnQgIkFQSUZyYW1lSW5mby5oIgogI2ltcG9ydCAiQVBJSGl0VGVz
dFJlc3VsdC5oIgorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIgogI2ltcG9y
dCAiQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlci5oIgogI2ltcG9ydCAiTWVkaWFVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKQEAgLTU0LDYgKzU1LDcgQEAK
ICNpbXBvcnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0ZyYW1l
SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgor
I2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25QYW5l
bEludGVybmFsLmgiCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZDYXB0dXJlRGV2aWNlLmg+CkBA
IC0xMzEsNiArMTMzLDcgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURl
bGVnYXRlPiBkZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFU
b0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdn
ZXN0ZWRGaWxlbmFtZTptaW1lVHlwZTpvcmlnaW5hdGluZ1VSTDopXTsKICAgICBtX2RlbGVnYXRl
TWV0aG9kcy53ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1l
Q29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJWaWV3OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3RO
b3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0Tm90
aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXTsK
KyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3Q29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVj
dG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6Y29u
ZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOildOwogICAgIG1f
ZGVsZWdhdGVNZXRob2RzLndlYlZpZXdXaWxsQ2xvc2VMb2NhbEluc3BlY3RvciA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndpbGxDbG9zZUxvY2FsSW5z
cGVjdG9yOildOwogI2VuZGlmCkBAIC04MTcsNiArODIwLDE4IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6
VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdl
YktpdDo6CiAgICAgfSkuZ2V0KCldOwogfQogCitSZWY8QVBJOjpJbnNwZWN0b3JDb25maWd1cmF0
aW9uPiBVSURlbGVnYXRlOjpVSUNsaWVudDo6Y29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9y
KFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5JiBpbnNwZWN0b3IpCit7CisgICAgaWYg
KCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0NvbmZpZ3VyYXRpb25Gb3JM
b2NhbEluc3BlY3RvcikKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bjo6Y3JlYXRlKCk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVsZWdh
dGUuZ2V0KCk7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVj
dG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8QVBJ
OjpJbnNwZWN0b3JDb25maWd1cmF0aW9uJj4oW1soaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRl
bGVnYXRlIF93ZWJWaWV3Om1fdWlEZWxlZ2F0ZS5tX3dlYlZpZXcgY29uZmlndXJhdGlvbkZvckxv
Y2FsSW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV0gX2FwaU9iamVjdF0pOworfQorCiB2b2lk
IFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJv
eHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQogewogICAgIGlmICghbV91aURlbGVn
YXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRBdHRhY2hMb2NhbEluc3BlY3RvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IGVjMzEwZDhhMzM4OTA1ZDI2YTk0M2RkYTYxOTdm
MTBlMjkyYzg5OWYuLmIwNDczOTMxZDczMTBmMjU4ZTliZWNjZTcwY2U1MjJjODlhN2U5ZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9SZW1vdGVXZWJJbnNw
ZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1Jl
bW90ZVdlYkluc3BlY3RvclByb3h5LmNwcApAQCAtNjUsMTEgKzY1LDExIEBAIHZvaWQgUmVtb3Rl
V2ViSW5zcGVjdG9yUHJveHk6OnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZh
aWxhYmxlKQogCiB2b2lkIFJlbW90ZVdlYkluc3BlY3RvclByb3h5Ojpsb2FkKFJlZjxBUEk6OkRl
YnVnZ2FibGVJbmZvPiYmIGRlYnVnZ2FibGVJbmZvLCBjb25zdCBTdHJpbmcmIGJhY2tlbmRDb21t
YW5kc1VSTCkKIHsKLSAgICBjcmVhdGVGcm9udGVuZFBhZ2VBbmRXaW5kb3coKTsKLQogICAgIG1f
ZGVidWdnYWJsZUluZm8gPSBXVEZNb3ZlKGRlYnVnZ2FibGVJbmZvKTsKICAgICBtX2JhY2tlbmRD
b21tYW5kc1VSTCA9IGJhY2tlbmRDb21tYW5kc1VSTDsKIAorICAgIGNyZWF0ZUZyb250ZW5kUGFn
ZUFuZFdpbmRvdygpOworCiAgICAgbV9pbnNwZWN0b3JQYWdlLT5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVXZWJJbnNwZWN0b3JVSTo6SW5pdGlhbGl6ZShtX2RlYnVnZ2FibGVJbmZvLT5kZWJ1Z2dhYmxl
SW5mb0RhdGEoKSwgYmFja2VuZENvbW1hbmRzVVJMKSk7CiAgICAgbV9pbnNwZWN0b3JQYWdlLT5s
b2FkUmVxdWVzdChVUkwoVVJMKCksIFdlYkluc3BlY3RvclByb3h5OjppbnNwZWN0b3JQYWdlVVJM
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKaW5kZXggZGViYTBmZWU2MjU2NDU2MjVkNzYz
OTZiMmIwNjVhMjEyYmY5MzgwOC4uYzAzYTJjYTU3MGQ5ZjZmODBlYmFhZTU0ZmI5M2FkMjU3MGNi
NWZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1JlbW90
ZVdlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVj
dG9yL1JlbW90ZVdlYkluc3BlY3RvclByb3h5LmgKQEAgLTQ4LDEwICs0OCwxMiBAQCBjbGFzcyBD
ZXJ0aWZpY2F0ZUluZm87CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgRGVidWdnYWJsZUluZm87
CitjbGFzcyBJbnNwZWN0b3JDb25maWd1cmF0aW9uOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk7CiBjbGFzcyBXZWJQYWdlUHJveHk7CiBj
bGFzcyBXZWJWaWV3OwogCkBAIC02MCw2ICs2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5S
ZW1vdGVXZWJJbnNwZWN0b3JQcm94eUNsaWVudCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZW5k
TWVzc2FnZVRvQmFja2VuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgY2xvc2VGcm9tRnJvbnRlbmQoKSA9IDA7CisgICAgdmlydHVhbCBSZWY8QVBJOjpJbnNw
ZWN0b3JDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVjdG9yKFJlbW90
ZVdlYkluc3BlY3RvclByb3h5JikgPSAwOwogfTsKIAogY2xhc3MgUmVtb3RlV2ViSW5zcGVjdG9y
UHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4sIHB1Ymxp
YyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL2dsaWIvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcApp
bmRleCA1N2VmMTc0OTczOTY1MDM5YzgyZTk0OGY4YWVlZTQyYjljYTZiOWJhLi5kYWUzN2FjY2Q3
ZWFiMWE3YjY5Yzc4YTE5ZmNiZGZkZGJmZTQyMjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvZ2xpYi9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9nbGliL1JlbW90ZUluc3BlY3RvckNs
aWVudC5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikK
IAogI2luY2x1ZGUgIkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9y
Q29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvUmVtb3RlSW5zcGVjdG9yVXRpbHMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0luc3BlY3RvckRlYnVnZ2FibGVUeXBlLmg+CkBAIC03Nyw2ICs3OCw4IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIC8vIE1BUks6IFJlbW90ZVdlYkluc3BlY3RvclBy
b3h5Q2xpZW50IG1ldGhvZHMKKwogICAgIHZvaWQgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIG1fcHJveHktPnNlbmRNZXNzYWdlVG9G
cm9udGVuZChtZXNzYWdlKTsKQEAgLTkyLDYgKzk1LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9p
bnNwZWN0b3JDbGllbnQuY2xvc2VGcm9tRnJvbnRlbmQobV9jb25uZWN0aW9uSUQsIG1fdGFyZ2V0
SUQpOwogICAgIH0KIAorICAgIFJlZjxBUEk6Okluc3BlY3RvckNvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb25Gb3JSZW1vdGVJbnNwZWN0b3IoUmVtb3RlV2ViSW5zcGVjdG9yUHJveHkmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlvbjo6Y3JlYXRlKCk7
CisgICAgfQorCiBwcml2YXRlOgogICAgIFJlZjxSZW1vdGVXZWJJbnNwZWN0b3JQcm94eT4gbV9w
cm94eTsKICAgICBSZW1vdGVJbnNwZWN0b3JDbGllbnQmIG1faW5zcGVjdG9yQ2xpZW50OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9SZW1vdGVXZWJJ
bnNwZWN0b3JQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9t
YWMvUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KaW5kZXggMjQ1NGFlOTU5NDEwNzdkNDI0
OGNlNmE1MzdiOTRlMWYyMGVlMDFiZS4uZTQzYjAyODU0YzJiMmIxYzAyNjU0ZGM2NDE3N2ZmMzAy
MTM5NDdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9SZW1vdGVXZWJJbnNwZWN0b3JQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvbWFjL1JlbW90ZVdlYkluc3BlY3RvclByb3h5TWFjLm1tCkBAIC0zOSw2
ICszOSw3IEBACiAjaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2ltcG9ydCAiV2ViUGFn
ZUdyb3VwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3Rv
ckNvbmZpZ3VyYXRpb25JbnRlcm5hbC5oIgogI2ltcG9ydCA8U2VjdXJpdHlJbnRlcmZhY2UvU0ZD
ZXJ0aWZpY2F0ZVBhbmVsLmg+CiAjaW1wb3J0IDxTZWN1cml0eUludGVyZmFjZS9TRkNlcnRpZmlj
YXRlVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9DZXJ0aWZpY2F0ZUluZm8uaD4KQEAgLTEwMyw3
ICsxMDQsOCBAQCBXZWJQYWdlUHJveHkqIFJlbW90ZVdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9y
bUNyZWF0ZUZyb250ZW5kUGFnZUFuZFdpbmRvdygpCiB7CiAgICAgbV9vYmpDQWRhcHRlciA9IGFk
b3B0TlMoW1tXS1JlbW90ZVdlYkluc3BlY3RvclByb3h5T2JqQ0FkYXB0ZXIgYWxsb2NdIGluaXRX
aXRoUmVtb3RlV2ViSW5zcGVjdG9yUHJveHk6dGhpc10pOwogCi0gICAgbV9pbnNwZWN0b3JWaWV3
ID0gYWRvcHROUyhbW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5z
cGVjdGVkUGFnZTpudWxscHRyXSk7CisgICAgUmVmPEFQSTo6SW5zcGVjdG9yQ29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IG1fY2xpZW50LT5jb25maWd1cmF0aW9uRm9yUmVtb3RlSW5zcGVj
dG9yKCp0aGlzKTsKKyAgICBtX2luc3BlY3RvclZpZXcgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhDb25maWd1cmF0aW9uOiBXZWJLaXQ6OndyYXBw
ZXIoY29uZmlndXJhdGlvbikgaW5zcGVjdGVkUGFnZTpudWxscHRyXSk7CiAgICAgW21faW5zcGVj
dG9yVmlldy5nZXQoKSBzZXREZWxlZ2F0ZTptX29iakNBZGFwdGVyLmdldCgpXTsKIAogICAgIG1f
d2luZG93ID0gV2ViSW5zcGVjdG9yUHJveHk6OmNyZWF0ZUZyb250ZW5kV2luZG93KE5TWmVyb1Jl
Y3QsIFdlYkluc3BlY3RvclByb3h5OjpJbnNwZWN0aW9uVGFyZ2V0VHlwZTo6UmVtb3RlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21h
Yy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKaW5kZXggMTA3MTkyODY2NWU0OWVjYzhhMjQ3
MWQ3ZjE0NjlhODBjYTZhZDI5Ni4uM2EzNDZkNDIxZjhhNDJkMTdlZTQ0NGNlMTY0NDQwNTVjNGNh
ZjVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9X
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgPHd0Zi9OYWtlZFB0ci5oPgogCiBPQkpDX0NMQVNTIFdLV2ViVmlldzsKK09C
SkNfQ0xBU1MgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJQYWdlUHJveHk7CkBAIC00Myw3ICs0NCw3IEBAIE5TX0FTU1VNRV9OT05OVUxM
X0JFR0lOCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIFdLV2ViVmlldyAqd2ViVmll
dzsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrKSBpZCA8V0tJbnNwZWN0b3JWaWV3Q29udHJv
bGxlckRlbGVnYXRlPiBkZWxlZ2F0ZTsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5zcGVj
dGVkUGFnZTooTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2U7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhDb25maWd1cmF0aW9uOihfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uICopY29uZmlndXJhdGlvbiBpbnNwZWN0ZWRQYWdlOihOYWtlZFB0cjxXZWJLaXQ6Oldl
YlBhZ2VQcm94eT4paW5zcGVjdGVkUGFnZTsKIAogKyAoQk9PTCl2aWV3SXNJbnNwZWN0b3JXZWJW
aWV3OihOU1ZpZXcgKil2aWV3OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIubW0K
aW5kZXggMWVhYTk0M2YyN2EyN2Q2N2M2MTFmZjZkNmZiYmYzNjE2MmJmNzE5Ny4uMDVkMzJhMmU5
NzhhMWFmZTNjZWE5Njk5MDZkNzY2YTlmMjE4MWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XS0luc3BlY3RvclZpZXdDb250cm9sbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV0tJbnNwZWN0b3JWaWV3
Q29udHJvbGxlci5tbQpAQCAtNDIsNiArNDIsNyBAQAogI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJv
eHkuaCIKICNpbXBvcnQgIldlYkluc3BlY3RvclV0aWxpdGllcy5oIgogI2ltcG9ydCAiV2ViUGFn
ZVByb3h5LmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvVmVyc2lvbkNoZWNrcy5oPgogI2ltcG9ydCA8d3RmL1dlYWtPYmpD
UHRyLmg+CiAKQEAgLTUyLDEzICs1MywxNiBAQCBAaW1wbGVtZW50YXRpb24gV0tJbnNwZWN0b3JW
aWV3Q29udHJvbGxlciB7CiAgICAgTmFrZWRQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+IF9pbnNw
ZWN0ZWRQYWdlOwogICAgIFJldGFpblB0cjxXS0luc3BlY3RvcldLV2ViVmlldz4gX3dlYlZpZXc7
CiAgICAgV2Vha09iakNQdHI8aWQgPFdLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZT4+
IF9kZWxlZ2F0ZTsKKyAgICBfV0tJbnNwZWN0b3JDb25maWd1cmF0aW9uICpfY29uZmlndXJhdGlv
bjsKIH0KIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW5zcGVjdGVkUGFnZTooTmFrZWRQdHI8
V2ViS2l0OjpXZWJQYWdlUHJveHk+KWluc3BlY3RlZFBhZ2UKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aENvbmZpZ3VyYXRpb246KF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uIGluc3BlY3RlZFBhZ2U6KE5ha2VkUHRyPFdlYktpdDo6V2ViUGFnZVByb3h5PilpbnNwZWN0
ZWRQYWdlCiB7CiAgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKKyAgICBfY29uZmlndXJhdGlvbiA9IFtjb25maWd1cmF0aW9uIGNvcHldOworCiAg
ICAgLy8gVGhlIChsb2NhbCkgaW5zcGVjdGVkIHBhZ2UgaXMgbmlsIGlmIHRoZSBjb250cm9sbGVy
IGlzIGhvc3RpbmcgYSBSZW1vdGUgV2ViIEluc3BlY3RvciB2aWV3LgogICAgIF9pbnNwZWN0ZWRQ
YWdlID0gaW5zcGVjdGVkUGFnZTsKIApAQCAtODcsNyArOTEsNyBAQCAtIChXS1dlYlZpZXcgKil3
ZWJWaWV3CiAgICAgLy8gQ29uc3RydWN0IGxhemlseSBzbyB0aGUgY2xpZW50IGNhbiBzZXQgdGhl
IGRlbGVnYXRlIGJlZm9yZSB0aGUgV2ViVmlldyBpcyBjcmVhdGVkLgogICAgIGlmICghX3dlYlZp
ZXcpIHsKICAgICAgICAgTlNSZWN0IGluaXRpYWxGcmFtZSA9IE5TTWFrZVJlY3QoMCwgMCwgV2Vi
S2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6aW5pdGlhbFdpbmRvd1dpZHRoLCBXZWJLaXQ6OldlYklu
c3BlY3RvclByb3h5Ojppbml0aWFsV2luZG93SGVpZ2h0KTsKLSAgICAgICAgX3dlYlZpZXcgPSBh
ZG9wdE5TKFtbV0tJbnNwZWN0b3JXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6aW5pdGlh
bEZyYW1lIGNvbmZpZ3VyYXRpb246W3NlbGYgY29uZmlndXJhdGlvbl1dKTsKKyAgICAgICAgX3dl
YlZpZXcgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6aW5pdGlhbEZyYW1lIGNvbmZpZ3VyYXRpb246c2VsZi53ZWJWaWV3Q29uZmlndXJhdGlvbl0p
OwogICAgICAgICBbX3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpzZWxmXTsKICAgICAgICAgW193ZWJWaWV3IHNldElu
c3BlY3RvcldLV2ViVmlld0RlbGVnYXRlOnNlbGZdOwpAQCAtMTA0LDcgKzEwOCw3IEBAIC0gKHZv
aWQpc2V0RGVsZWdhdGU6KGlkIDxXS0luc3BlY3RvclZpZXdDb250cm9sbGVyRGVsZWdhdGU+KWRl
bGVnYXRlCiAgICAgX2RlbGVnYXRlID0gZGVsZWdhdGU7CiB9CiAKLS0gKFdLV2ViVmlld0NvbmZp
Z3VyYXRpb24gKiljb25maWd1cmF0aW9uCistIChXS1dlYlZpZXdDb25maWd1cmF0aW9uICopd2Vi
Vmlld0NvbmZpZ3VyYXRpb24KIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwogCkBAIC0xMjMsNiArMTI3LDgg
QEAgLSAoV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24KIAogICAgIHByZWZl
cmVuY2VzLl9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQgPSBZRVM7CiAKKyAgICBbX2NvbmZpZ3Vy
YXRpb24gYXBwbHlUb1dlYlZpZXdDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldOwor
ICAgIAogICAgIGlmICghIV9kZWxlZ2F0ZSAmJiBbX2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoaW5zcGVjdG9yVmlld0NvbnRyb2xsZXJJbnNwZWN0b3JJc1VuZGVyVGVzdDop
XSkgewogICAgICAgICBpZiAoW19kZWxlZ2F0ZSBpbnNwZWN0b3JWaWV3Q29udHJvbGxlckluc3Bl
Y3RvcklzVW5kZXJUZXN0OnNlbGZdKSB7CiAgICAgICAgICAgICBwcmVmZXJlbmNlcy5faGlkZGVu
UGFnZURPTVRpbWVyVGhyb3R0bGluZ0VuYWJsZWQgPSBOTzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvbWFjL1dlYkluc3BlY3RvclByb3h5TWFj
Lm1tCmluZGV4IDE4ZTNiNzU0ZjlmMGUzNjNiMzY4ZjU0OGViOGE0MzBkNWM4OTliMjIuLjA3MmFl
M2QwMzY5ZjA3M2Y1NzQyZDQ0YzAyMjk3ODZlMmE0MzE0OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYy9XZWJJbnNwZWN0b3JQcm94
eU1hYy5tbQpAQCAtMjgsMTQgKzI4LDE5IEBACiAKICNpZiBQTEFURk9STShNQUMpCiAKKyNpbXBv
cnQgIkFQSUluc3BlY3RvckNsaWVudC5oIgorI2ltcG9ydCAiQVBJSW5zcGVjdG9yQ29uZmlndXJh
dGlvbi5oIgorI2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZpbmRJblBh
Z2VTdGF0ZS5oIgogI2ltcG9ydCAiV0tJbnNwZWN0b3JQcml2YXRlTWFjLmgiCiAjaW1wb3J0ICJX
S0luc3BlY3RvclZpZXdDb250cm9sbGVyLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgogI2ltcG9y
dCAiV0tWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0ICJXZWJJbnNwZWN0b3JVSU1lc3NhZ2VzLmgiCiAjaW1wb3J0ICJXZWJQYWdlR3JvdXAuaCIK
ICNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yQ29uZmlndXJh
dGlvbkludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9y
dCAiX1dLSW5zcGVjdG9yV2luZG93LmgiCiAjaW1wb3J0IDxTZWN1cml0eUludGVyZmFjZS9TRkNl
cnRpZmljYXRlUGFuZWwuaD4KQEAgLTI5MSw3ICsyOTYsOCBAQCBXZWJQYWdlUHJveHkqIFdlYklu
c3BlY3RvclByb3h5OjpwbGF0Zm9ybUNyZWF0ZUZyb250ZW5kUGFnZSgpCiAgICAgTlNWaWV3ICpp
bnNwZWN0ZWRWaWV3ID0gaW5zcGVjdGVkUGFnZSgpLT5pbnNwZWN0b3JBdHRhY2htZW50Vmlldygp
OwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
bV9vYmpDQWRhcHRlci5nZXQoKSBzZWxlY3RvcjpAc2VsZWN0b3IoaW5zcGVjdGVkVmlld0ZyYW1l
RGlkQ2hhbmdlOikgbmFtZTpOU1ZpZXdGcmFtZURpZENoYW5nZU5vdGlmaWNhdGlvbiBvYmplY3Q6
aW5zcGVjdGVkVmlld107CiAKLSAgICBtX2luc3BlY3RvclZpZXdDb250cm9sbGVyID0gYWRvcHRO
UyhbW1dLSW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoSW5zcGVjdGVkUGFn
ZTppbnNwZWN0ZWRQYWdlKCldKTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBpbnNwZWN0ZWRQ
YWdlKCktPnVpQ2xpZW50KCkuY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yKCppbnNwZWN0
ZWRQYWdlKCksICAqdGhpcyk7CisgICAgbV9pbnNwZWN0b3JWaWV3Q29udHJvbGxlciA9IGFkb3B0
TlMoW1tXS0luc3BlY3RvclZpZXdDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aENvbmZpZ3VyYXRp
b246IFdlYktpdDo6d3JhcHBlcihjb25maWd1cmF0aW9uLmdldCgpKSBpbnNwZWN0ZWRQYWdlOmlu
c3BlY3RlZFBhZ2UoKV0pOwogICAgIFttX2luc3BlY3RvclZpZXdDb250cm9sbGVyLmdldCgpIHNl
dERlbGVnYXRlOm1fb2JqQ0FkYXB0ZXIuZ2V0KCldOwogCiAgICAgV2ViUGFnZVByb3h5ICppbnNw
ZWN0b3JQYWdlID0gW21faW5zcGVjdG9yVmlld0NvbnRyb2xsZXIgd2ViVmlld10tPl9wYWdlLmdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL3NvY2tl
dC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL3NvY2tldC9SZW1vdGVJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDAyZGFjMWY1NjBm
MzAwNzkwNWFiMmM3MmFlNjUxMGVjODhmMTYzOTMuLjIxZGIxMTNlNGM4ZjFhZjhjMGQzODI4ZmVi
MTMxYTY1ODRlMGY0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9zb2NrZXQvUmVtb3RlSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3Ivc29ja2V0L1JlbW90ZUluc3BlY3RvckNsaWVudC5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKIAogI2luY2x1ZGUg
IkFQSURlYnVnZ2FibGVJbmZvLmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIlJlbW90ZVdlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSA8d3Rm
L01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KQEAgLTY3LDYgKzY4
LDggQEAgcHVibGljOgogICAgICAgICBtX3Byb3h5LT5zaG93KCk7CiAgICAgfQogCisgICAgLy8g
TUFSSzogUmVtb3RlV2ViSW5zcGVjdG9yUHJveHlDbGllbnQgbWV0aG9kcworCiAgICAgdm9pZCBz
ZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgIHsKICAgICAg
ICAgbV9wcm94eS0+c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKG1lc3NhZ2UpOwpAQCAtODIsNiArODUs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2luc3BlY3RvckNsaWVudC5jbG9zZUZyb21Gcm9udGVu
ZChtX2Nvbm5lY3Rpb25JRCwgbV90YXJnZXRJRCk7CiAgICAgfQogCisgICAgUmVmPEFQSTo6SW5z
cGVjdG9yQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbkZvclJlbW90ZUluc3BlY3RvcihSZW1v
dGVXZWJJbnNwZWN0b3JQcm94eSYpCisgICAgeworICAgICAgICByZXR1cm4gQVBJOjpJbnNwZWN0
b3JDb25maWd1cmF0aW9uOjpjcmVhdGUoKTsKKyAgICB9CisKIHByaXZhdGU6CiAgICAgUmVmPFJl
bW90ZVdlYkluc3BlY3RvclByb3h5PiBtX3Byb3h5OwogICAgIFJlbW90ZUluc3BlY3RvckNsaWVu
dCYgbV9pbnNwZWN0b3JDbGllbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA2YjZhOTYwMDA3OTY3NzAwNmQzNTcwMGIxNjM0YmFhNTc5
YTU3NjQ1Li45ODFlYzkzZmZmNGNkY2ViYWY2N2JhYWQ0ZTZjMGNiZDc1YjhkM2M1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0MTgs
NiArMTQxOCw5IEBACiAJCTk5MjQ5QUQ1MUYxRjFFNTYwMEI2MkZCQiAvKiBBdXRvbWF0aW9uRnJv
bnRlbmREaXNwYXRjaGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5OTI0OUFEMzFGMUYxRTMzMDBCNjJGQkIgLyogQXV0b21hdGlvbkZyb250ZW5k
RGlzcGF0Y2hlcnMuY3BwICovOyB9OwogCQk5OTI0OUFENjFGMUYxRTVGMDBCNjJGQkIgLyogQXV0
b21hdGlvbkZyb250ZW5kRGlzcGF0Y2hlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5MjQ5QUQ0MUYxRjFFMzMwMEI2MkZCQiAvKiBBdXRvbWF0aW9u
RnJvbnRlbmREaXNwYXRjaGVycy5oICovOyB9OwogCQk5OTRCQURGNDFGN0Q3ODE0MDBCNTcxRTcg
LyogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTk0QkFERjExRjdENzdFQTAwQjU3MUU3IC8qIFdLSW5zcGVj
dG9yVmlld0NvbnRyb2xsZXIuaCAqLzsgfTsKKwkJOTk0QzYwNDIyNTNDQTU0NDAwQkRGMDYwIC8q
IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk5NEM2MDQwMjUzQ0E1NDMwMEJERjA2MCAvKiBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZp
Z3VyYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTk0QzYwNDQyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3Vy
YXRpb25JbnRlcm5hbC5oICovOyB9OworCQk5OTRDNjA0NzI1M0NBQ0I4MDBCREYwNjAgLyogQVBJ
SW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTk0QzYwNDYyNTNDQUNCODAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uaCAqLzsgfTsKIAkJOTk1MjI2RDYyMDdEMTg0NjAwRjc4NDIwIC8qIFNpbXVs
YXRlZElucHV0RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTk1MjI2RDQyMDdEMTg0NTAwRjc4NDIwIC8qIFNpbXVsYXRlZElucHV0RGlz
cGF0Y2hlci5oICovOyB9OwogCQk5OTU1QTZFQzFDNzk4MEMyMDBFQjZBOTMgLyogV2ViQXV0b21h
dGlvblNlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk5NTVBNkVCMUM3OTgwQkIwMEVCNkE5MyAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oICov
OyB9OwogCQk5OTU1QTZFRjFDNzk4MTA4MDBFQjZBOTMgLyogQXV0b21hdGlvbi5qc29uIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTk1NUE2RTkxQzc5ODBC
QjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDUzNCw2ICs0NTM3LDExIEBACiAJCTk5NDZFRjg1MUU3
QjAyNjYwMDU0MUU3OSAvKiBXZWJBdXRvbWF0aW9uU2Vzc2lvbklPUy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkF1dG9tYXRpb25TZXNzaW9uSU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5OTRCQURGMTFGN0Q3N0VBMDBCNTcxRTcgLyog
V0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0luc3BlY3RvclZpZXdDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5NEJBREYyMUY3RDc3RUIwMEI1NzFFNyAvKiBXS0luc3BlY3RvclZpZXdDb250cm9s
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbnNwZWN0
b3JWaWV3Q29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYw
NDAyNTNDQTU0MzAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5OTRDNjA0MTI1M0NBNTQ0MDBCREYwNjAgLyog
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBfV0tJbnNwZWN0b3JD
b25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk5NEM2MDQ2MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1
cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckNv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTk0QzYwNDgyNTNG
ODIwMjAwQkRGMDYwIC8qIEFQSUluc3BlY3RvckNvbmZpZ3VyYXRpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk5NTIyNkQ0MjA3RDE4NDUwMEY3ODQyMCAv
KiBTaW11bGF0ZWRJbnB1dERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2ltdWxhdGVkSW5wdXREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTk5NTIyNkQ1MjA3RDE4NDYwMEY3ODQyMCAvKiBTaW11bGF0ZWRJbnB1dERpc3BhdGNo
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2ltdWxhdGVkSW5w
dXREaXNwYXRjaGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTk1NUE2RTkx
Qzc5ODBCQjAwRUI2QTkzIC8qIEF1dG9tYXRpb24uanNvbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuanNvbjsg
cGF0aCA9IEF1dG9tYXRpb24uanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcz
MjgsNiArNzMzNiw5IEBACiAJCQkJMzdBNjRFNTQxOEYzOEUzQzAwRUIzMEYxIC8qIF9XS0lucHV0
RGVsZWdhdGUuaCAqLywKIAkJCQk1Q0FGREU0MjIxMzA4NDM1MDBCMUY3RTEgLyogX1dLSW5zcGVj
dG9yLmggKi8sCiAJCQkJNUNBRkRFNDMyMTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5t
bSAqLywKKwkJCQk5OTRDNjA0MDI1M0NBNTQzMDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmln
dXJhdGlvbi5oICovLAorCQkJCTk5NEM2MDQxMjUzQ0E1NDQwMEJERjA2MCAvKiBfV0tJbnNwZWN0
b3JDb25maWd1cmF0aW9uLm1tICovLAorCQkJCTk5NEM2MDQ0MjUzQ0FCQTIwMEJERjA2MCAvKiBf
V0tJbnNwZWN0b3JDb25maWd1cmF0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk5OTFGNDkyRDIzQTgx
MkM1MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAqLywKIAkJCQk5OTFG
NDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8s
CiAJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJ
bmZvSW50ZXJuYWwuaCAqLywKQEAgLTkzMjAsNiArOTMzMSw4IEBACiAJCQkJNTE0M0IyNjExRERE
MERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8sCiAJCQkJN0E4QTlENTcx
RUYxMTlBQTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxlQ2xpZW50LmggKi8sCiAJCQkJOTE5
Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovLAorCQkJCTk5
NEM2MDQ4MjUzRjgyMDIwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25maWd1cmF0aW9uLmNwcCAq
LywKKwkJCQk5OTRDNjA0NjI1M0NBQ0I4MDBCREYwNjAgLyogQVBJSW5zcGVjdG9yQ29uZmlndXJh
dGlvbi5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERl
YnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQSUlu
dGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUyIC8q
IEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMDc1NCw2ICsxMDc2Nyw4
IEBACiAJCQkJNTEwRjU5MTAxRERFMjk2OTAwNDEyRkY1IC8qIF9XS0ljb25Mb2FkaW5nRGVsZWdh
dGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3QTY0RTU1MThGMzhFM0MwMEVCMzBGMSAvKiBfV0tJ
bnB1dERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NTIxMzA4NDYzMDBCMUY3
RTEgLyogX1dLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk5OTRDNjA0MjI1M0NBNTQ0
MDBCREYwNjAgLyogX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTk0QzYwNDUyNTNDQUJBMjAwQkRGMDYwIC8qIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb25J
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8q
IF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFF
MjIzQTk0OUNGMDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3Bl
Y3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTEwODY3LDYgKzEwODgyLDcgQEAKIAkJ
CQk3QThBOUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3Vy
Y2VMb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMxQ0IyMDAxREZG
MDQgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxOTc5NDBBMjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTk5NEM2MDQ3MjUzQ0FDQjgwMEJERjA2MCAvKiBBUElJbnNwZWN0b3JDb25m
aWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUIzNjI4RjIxNDFFQTVEMDA3QkZBNTMg
LyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTdDRTREMjA3
MUE0Njc3NjEwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8qIEFQSUxvYWRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNzljYmI5YTUwOTIwMzE0ZTY5ODNhZjQ5ZDM4YjBlMWVkYTU2N2JhZi4u
YTUwZGFiOGIzZTFkY2RkMGU0Yzg2NzdlZmI4NDk3M2Y1M2YyMTUwMSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDIw
LTEwLTIxICBCcmlhbiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
SW50cm9kdWNlIF9XS0luc3BlY3RvckNvbmZpZ3VyYXRpb24gZm9yIGN1c3RvbWl6aW5nIGxvY2Fs
IGFuZCByZW1vdGUgV2ViIEluc3BlY3RvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzg5NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzAzNTU5
MTA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGV2aW4gUm91c3NvLgorCisgICAgICAgIEFkZCBh
biBBUEkgdGVzdCBmb3IgX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbi4gRGlzYWJsZWQgZm9yIG5v
dywgd2lsbAorICAgICAgICBiZSB0dXJuZWQgYmFjayBvbiB3aGVuIG1vcmUgd2ViIGV4dGVuc2lv
bnMgQVBJIGhhcyBsYW5kZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLSW5zcGVjdG9yRGVsZWdhdGUubW06CisgICAgICAgICgtW1NpbXBsZVVSTFNjaGVt
ZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1NpbXBs
ZVVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAg
KC1bVUlEZWxlZ2F0ZSBfd2ViVmlldzpjb25maWd1cmF0aW9uRm9yTG9jYWxJbnNwZWN0b3I6XSk6
CisgICAgICAgICgtW1VJRGVsZWdhdGUgX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6
XSk6CisgICAgICAgIChURVNUKToKKwogMjAyMC0xMC0yMiAgQWFrYXNoIEphaW4gIDxhYWthc2hf
amFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgcmVwb3J0LW5vbi1pbmNsdXNpdmUtbGFuZ3VhZ2Ug
c2hvdWxkIGFsc28gcmVwb3J0IHRvdGFsIGZvciBhbGwgdGhlIG5vbi1pbmNsdXNpdmUgdGVybXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tJbnNw
ZWN0b3JEZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQppbmRleCA2MTAzYjIwMGY3NzMyNTZjN2NkYmQzMTIzMjA5
MWNlYjgxYTkwODFjLi5hMTkxMjNiYTg4MDEyMjU1MTc2NDRjYjAxN2M5MmQ1M2FlN2Y3MjhlIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLSW5zcGVj
dG9yRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0luc3BlY3RvckRlbGVnYXRlLm1tCkBAIC0yOCw5ICsyOCwxMyBAQAogI2ltcG9ydCAiVGVz
dC5oIgogI2ltcG9ydCAiVXRpbGl0aWVzLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1VSTFNjaGVtZUhhbmRsZXIuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1VSTFNjaGVtZVRhc2suaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNw
ZWN0b3JDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L19XS0luc3BlY3RvclByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CkBAIC0zOSw2ICs0Myw3IEBACiAjaWYgUExBVEZPUk0oTUFDKQogCiBA
Y2xhc3MgSW5zcGVjdG9yRGVsZWdhdGU7CitAY2xhc3MgU2ltcGxlVVJMU2NoZW1lSGFuZGxlcjsK
IAogc3RhdGljIGJvb2wgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKIHN0
YXRpYyBib29sIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CkBAIC00Niw5
ICs1MSw1NCBAQCBzdGF0aWMgYm9vbCBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNh
bGxlZCA9IGZhbHNlOwogc3RhdGljIGJvb2wgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVj
dG9yQ2FsbGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzaG91bGRDYWxsSW5zcGVjdG9yQ2xvc2VS
ZWVudHJhbnRseSA9IGZhbHNlOwogc3RhdGljIGJvb2wgb3BlblVSTEV4dGVybmFsbHlDYWxsZWQg
PSBmYWxzZTsKK3N0YXRpYyBib29sIGNvbmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxl
ZCA9IGZhbHNlOworc3RhdGljIGJvb2wgc3RhcnRVUkxTY2hlbWVUYXNrQ2FsbGVkID0gZmFsc2U7
CisKK3N0YXRpYyBSZXRhaW5QdHI8U2ltcGxlVVJMU2NoZW1lSGFuZGxlcj4gc2hhcmVkVVJMU2No
ZW1lSGFuZGxlcjsKIHN0YXRpYyBSZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4g
c2hhcmVkSW5zcGVjdG9yRGVsZWdhdGU7CiBzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiB1cmxUb09w
ZW47CiAKK3N0YXRpYyB2b2lkIHJlc2V0R2xvYmFsU3RhdGUoKQoreworICAgIGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CisgICAgd2lsbENsb3NlTG9jYWxJbnNwZWN0b3JD
YWxsZWQgPSBmYWxzZTsKKyAgICBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxl
ZCA9IGZhbHNlOworICAgIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCA9
IGZhbHNlOworICAgIHNob3VsZENhbGxJbnNwZWN0b3JDbG9zZVJlZW50cmFudGx5ID0gZmFsc2U7
CisgICAgb3BlblVSTEV4dGVybmFsbHlDYWxsZWQgPSBmYWxzZTsKKyAgICBjb25maWd1cmF0aW9u
Rm9yTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKyAgICBzdGFydFVSTFNjaGVtZVRhc2tD
YWxsZWQgPSBmYWxzZTsKKworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuY2xlYXIoKTsKKyAg
ICBzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZS5jbGVhcigpOworICAgIHVybFRvT3Blbi5jbGVhcigp
OworfQorCitAaW50ZXJmYWNlIFNpbXBsZVVSTFNjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tV
UkxTY2hlbWVIYW5kbGVyPgorQHByb3BlcnR5IChub25hdG9taWMsIHdlYWspIE5TVVJMICpleHBl
Y3RlZFVSTDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFNpbXBsZVVSTFNjaGVtZUhhbmRsZXIK
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIGlmIChfZXhwZWN0ZWRVUkwpCisg
ICAgICAgIEVYUEVDVF9TVFJFUShfZXhwZWN0ZWRVUkwuYWJzb2x1dGVTdHJpbmcuVVRGOFN0cmlu
ZywgdGFzay5yZXF1ZXN0LlVSTC5hYnNvbHV0ZVN0cmluZy5VVEY4U3RyaW5nKTsKKworICAgIFJl
dGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNl
IGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOkAidGV4dC9odG1s
IiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIFt0
YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVzOiIxIiBsZW5ndGg6MV1dOworICAgIFt0YXNr
IGRpZEZpbmlzaF07CisKKyAgICBzdGFydFVSTFNjaGVtZVRhc2tDYWxsZWQgPSB0cnVlOworfQor
CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6
KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCiBAaW50ZXJmYWNlIElu
c3BlY3RvckRlbGVnYXRlIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckRlbGVnYXRlPgogQGVuZAog
CkBAIC03NywxOCArMTI3LDIzIEBAIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFVJRGVsZWdhdGUK
IAotLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbElu
c3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCistIChfV0tJbnNwZWN0b3JDb25maWd1
cmF0aW9uICopX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgY29uZmlndXJhdGlvbkZvckxv
Y2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKIHsKLSAgICBkaWRBdHRhY2hM
b2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwotICAgIHdpbGxDbG9zZUxvY2FsSW5zcGVjdG9y
Q2FsbGVkID0gZmFsc2U7Ci0gICAgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxs
ZWQgPSBmYWxzZTsKLSAgICBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQg
PSBmYWxzZTsKLQotICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7
CisgICAgY29uZmlndXJhdGlvbkZvckxvY2FsSW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKIAogICAg
IHNoYXJlZEluc3BlY3RvckRlbGVnYXRlID0gW0luc3BlY3RvckRlbGVnYXRlIG5ld107CiAgICAg
W2luc3BlY3RvciBzZXREZWxlZ2F0ZTpzaGFyZWRJbnNwZWN0b3JEZWxlZ2F0ZS5nZXQoKV07CiAK
KyAgICBzaGFyZWRVUkxTY2hlbWVIYW5kbGVyID0gW1tTaW1wbGVVUkxTY2hlbWVIYW5kbGVyIGFs
bG9jXSBpbml0XTsKKyAgICBSZXRhaW5QdHI8X1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbj4gaW5z
cGVjdG9yQ29uZmlndXJhdGlvbiA9IFtbX1dLSW5zcGVjdG9yQ29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF07CisgICAgW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1lSGFuZGxlcjpz
aGFyZWRVUkxTY2hlbWVIYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInRlc3RpbmciXTsKKyAg
ICByZXR1cm4gW2luc3BlY3RvckNvbmZpZ3VyYXRpb24gYXV0b3JlbGVhc2VdOworfQorCistICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExvY2FsSW5zcGVjdG9y
OihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5z
cGVjdG9yLCBpbnNwZWN0b3IpOworCiAgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQg
PSB0cnVlOwogfQogCkBAIC0xMDUsNiArMTYwLDggQEAgQGVuZAogCiBURVNUKFdLSW5zcGVjdG9y
RGVsZWdhdGUsIEluc3BlY3RvckxpZmVjeWNsZUNhbGxiYWNrcykKIHsKKyAgICByZXNldEdsb2Jh
bFN0YXRlKCk7CisKICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQo
KS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1h
a2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKQEAgLTEyNyw2ICsxODQsOCBAQCBURVNUKFdLSW5zcGVjdG9yRGVsZWdhdGUsIEluc3Bl
Y3RvckxpZmVjeWNsZUNhbGxiYWNrcykKIAogVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBJbnNw
ZWN0b3JDbG9zZUNhbGxlZFJlZW50cmFudGx5KQogeworICAgIHJlc2V0R2xvYmFsU3RhdGUoKTsK
KwogICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIG5ld10pOwogICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVu
Y2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwogICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOwpAQCAt
MTQ5LDYgKzIwOCw4IEBAIFRFU1QoV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgSW5zcGVjdG9yQ2xvc2VD
YWxsZWRSZWVudHJhbnRseSkKIAogVEVTVChXS0luc3BlY3RvckRlbGVnYXRlLCBTaG93VVJMRXh0
ZXJuYWxseSkKIHsKKyAgICByZXNldEdsb2JhbFN0YXRlKCk7CisKICAgICBhdXRvIHdlYlZpZXdD
b25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKICAg
ICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFz
RW5hYmxlZCA9IFlFUzsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRp
b246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKQEAgLTE3MSw0ICsyMzIsMzUgQEAgVEVT
VChXS0luc3BlY3RvckRlbGVnYXRlLCBTaG93VVJMRXh0ZXJuYWxseSkKICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJm9wZW5VUkxFeHRlcm5hbGx5Q2FsbGVkKTsKIH0KIAorLy8gRklYTUU6
IHJlLWVuYWJsaW5nIHRoaXMgdGVzdCBjYXNlIGlzIGJsb2NrZWQsIHRyYWNraW5nIHRoaXMgdGFz
ayBpbiA8cmRhcjovL3Byb2JsZW0vNzA1MDUyNzI+LgorVEVTVChXS0luc3BlY3RvckRlbGVnYXRl
LCBESVNBQkxFRF9JbnNwZWN0b3JDb25maWd1cmF0aW9uKQoreworICAgIHJlc2V0R2xvYmFsU3Rh
dGUoKTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpLnBy
ZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0p
OworICAgIGF1dG8gdWlEZWxlZ2F0ZSA9IGFkb3B0TlMoW1VJRGVsZWdhdGUgbmV3XSk7CisKKyAg
ICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOnVpRGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IGxvYWRIVE1MU3RyaW5nOkAiPGhlYWQ+PHRpdGxlPlRlc3QgcGFnZSB0byBiZSBpbnNwZWN0ZWQ8
L3RpdGxlPjwvaGVhZD48Ym9keT48cD5GaWxsZXIgY29udGVudDwvcD48L2JvZHk+IiBiYXNlVVJM
OltOU1VSTCBVUkxXaXRoU3RyaW5nOkAiaHR0cDovL2V4YW1wbGUuY29tLyJdXTsKKworICAgIEVY
UEVDVF9GQUxTRSh3ZWJWaWV3LmdldCgpLl9pc0JlaW5nSW5zcGVjdGVkKTsKKworICAgIFtbd2Vi
VmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNv
bmZpZ3VyYXRpb25Gb3JMb2NhbEluc3BlY3RvckNhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisKKyAgICAvLyBGSVhN
RTogV0tJbnNwZWN0b3JWaWV3Q29udHJvbGxlcidzIG5hdmlnYXRpb24gZGVsZWdhdGUgY2FuY2Vs
cyBhbGwgbWFpbiBmcmFtZQorICAgIC8vIGxvYWRzIHRoYXQgYXJlIG5vdCB0aGUgV2ViIEluc3Bl
Y3RvciBwYWdlLiBTbywgdGhpcyBjYW5ub3QgYmUgZnVsbHkgdGVzdGVkIHVudGlsCisgICAgLy8g
d2UgY2FuIHVzZWQgdGhlIGNyZWF0ZVRhYiBBUEkgdG8gbG9hZCB0aGUgY3VzdG9tIFVSTCBzY2hl
bWUgcmVzb3VyY2UgaW4gYW4gaWZyYW1lLgorICAgIHVybFRvT3BlbiA9IFtOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdGluZzptYWluMSJdOworICAgIHNoYXJlZFVSTFNjaGVtZUhhbmRsZXIuZ2V0
KCkuZXhwZWN0ZWRVUkwgPSB1cmxUb09wZW4uZ2V0KCk7CisgICAgW1t3ZWJWaWV3IF9pbnNwZWN0
b3JdIF9vcGVuVVJMRXh0ZXJuYWxseUZvclRlc3Rpbmc6dXJsVG9PcGVuLmdldCgpIHVzZUZyb250
ZW5kQVBJOk5PXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0VVJMU2NoZW1l
VGFza0NhbGxlZCk7CisKKyAgICBbW3dlYlZpZXcgX2luc3BlY3Rvcl0gY2xvc2VdOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmd2lsbENsb3NlTG9jYWxJbnNwZWN0b3JDYWxsZWQpOwor
fQorCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>