<?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>206911</bug_id>
          
          <creation_ts>2020-01-28 15:26:51 -0800</creation_ts>
          <short_desc>Web Inspector: safari app extension isolated worlds and injected files use the extension&apos;s identifier instead of its name</short_desc>
          <delta_ts>2020-02-26 11:12:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>208251</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>benjamin</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612221</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-28 15:26:51 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612222</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-28 15:27:03 -0800</bug_when>
    <thetext>&lt;rdar://problem/58026635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612232</commentid>
    <comment_count>2</comment_count>
      <attachid>389081</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-28 15:57:42 -0800</bug_when>
    <thetext>Created attachment 389081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612234</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-01-28 15:58:48 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612544</commentid>
    <comment_count>4</comment_count>
      <attachid>389081</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-29 10:36:51 -0800</bug_when>
    <thetext>Comment on attachment 389081
Patch

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

Overall some great work. r- for bots. And I&apos;d like InspectorClient to split into InspectorDelegate + InspectorDelegate::InspectorClient. (Unless you can get Brady or Alex to sign off on the correctness of the approach in this patch.)

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        Web Inspector: safari app extension isolated worlds and injected files use the extension&apos;s identifier instead of it&apos;s name

Nit: its name

&gt; Source/JavaScriptCore/ChangeLog:12
&gt; +        debuggable rather than one per taret) and as such is not routed through the `Target` agent.

Nit: target

&gt; Source/WebInspectorUI/ChangeLog:33
&gt; +        should only be one per debuggable rather than one per taret) and as such is not routed

Nit: target

&gt; Source/WebInspectorUI/UserInterface/Controllers/BrowserManager.js:41
&gt; +        // COMPATIBILITY (iOS 13.1): Browser did not exist yet.

Nit: 13.4

&gt; Source/WebInspectorUI/UserInterface/Controllers/BrowserManager.js:63
&gt; +            // COMPATIBILITY (iOS 13.1): Browser did not exist yet.

Nit: 13.4

&gt; Source/WebInspectorUI/UserInterface/Controllers/BrowserManager.js:75
&gt; +        return scheme &amp;&amp; scheme.endsWith(&quot;-extension&quot;);

This seems kind of arbitrary, can the supported extension scheme syntax be documented in the ChangeLog or something?

&gt; Source/WebInspectorUI/UserInterface/Controllers/BrowserManager.js:111
&gt; +            console.assert(!this._extensionNameIdentifierMap.has(extensionId), `Browser already exists with id ${extensionId}.`);

Nit: `Extension already exists..`

&gt; Source/WebInspectorUI/UserInterface/Controllers/BrowserManager.js:121
&gt; +            console.assert(name);

Nit: needs assertion message, please include the extensionId as well.

&gt; Source/WebInspectorUI/UserInterface/Protocol/MultiplexingBackendTarget.js:36
&gt; +        console.assert(Array.shallowEqual(Object.keys(this._agents), [&quot;Browser&quot;, &quot;Target&quot;]));

Hah, nice! The design finally happened :P

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1552
&gt; +    return static_cast&lt;WebKit::InspectorClient&amp;&gt;(_page-&gt;inspectorClient()).delegate().autorelease();

Hmm, this seems a little weird to rely on WebPageProxy to keep a reference to the ObjC delegate. An approach like ResourceLoadDelegate / ResourceLoadClient would be easier to keep track of, IMO. The code would look more like:

- (id &lt;_WKResourceLoadDelegate&gt;)_resourceLoadDelegate
{
    return _resourceLoadDelegate-&gt;delegate().autorelease();
}

- (void)_setResourceLoadDelegate:(id&lt;_WKResourceLoadDelegate&gt;)delegate
{
    _page-&gt;setResourceLoadClient(_resourceLoadDelegate-&gt;createResourceLoadClient());
    _resourceLoadDelegate-&gt;setDelegate(delegate);
}

You can see the commit here: 
https://bugs.webkit.org/attachment.cgi?id=387046&amp;action=review

This same pattern is followed for some other ObjC WKWebView delegates that plug into WebPageProxy.

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:156
&gt; +- (void)_browserExtensionsEnabled:(NSDictionary&lt;NSString *, NSString *&gt; *)extensionIDToName

Nit: extensionIDToNameMap

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:159
&gt; +    transformed.reserveInitialCapacity([extensionIDToName count]);

Nit: extensionIDToName.count

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspector.mm:171
&gt; +        transformed.addVoid(extensionID);

addVoid? 👾

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKInspectorPrivate.h:35
&gt; +- (void)_browserExtensionsEnabled:(NSDictionary&lt;NSString *, NSString *&gt; *)extensionIDToName;

I find it a bit strange to avoid using NSUUID here, but it seems pretty common across WebKit code to force NSUUID to NSString.

&gt; Source/WebKit/UIProcess/Inspector/Agents/InspectorBrowserAgent.h:62
&gt; +} // namespace WebCore

Nit: namespace WebKit

&gt; Source/WebKit/UIProcess/Inspector/Cocoa/InspectorClient.h:64
&gt; +} // WebKit

Nit: namespace WebKit

&gt; Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:510
&gt; +{

I&apos;m not quite sure how this test can fail if reserveInitialCapacity was incorrect. Is the initial capacity observable from calling .add, .remove, and .size a lot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612584</commentid>
    <comment_count>5</comment_count>
      <attachid>389081</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-29 11:24:15 -0800</bug_when>
    <thetext>Comment on attachment 389081
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1552
&gt;&gt; +    return static_cast&lt;WebKit::InspectorClient&amp;&gt;(_page-&gt;inspectorClient()).delegate().autorelease();
&gt; 
&gt; Hmm, this seems a little weird to rely on WebPageProxy to keep a reference to the ObjC delegate. An approach like ResourceLoadDelegate / ResourceLoadClient would be easier to keep track of, IMO. The code would look more like:
&gt; 
&gt; - (id &lt;_WKResourceLoadDelegate&gt;)_resourceLoadDelegate
&gt; {
&gt;     return _resourceLoadDelegate-&gt;delegate().autorelease();
&gt; }
&gt; 
&gt; - (void)_setResourceLoadDelegate:(id&lt;_WKResourceLoadDelegate&gt;)delegate
&gt; {
&gt;     _page-&gt;setResourceLoadClient(_resourceLoadDelegate-&gt;createResourceLoadClient());
&gt;     _resourceLoadDelegate-&gt;setDelegate(delegate);
&gt; }
&gt; 
&gt; You can see the commit here: 
&gt; https://bugs.webkit.org/attachment.cgi?id=387046&amp;action=review
&gt; 
&gt; This same pattern is followed for some other ObjC WKWebView delegates that plug into WebPageProxy.

I was following what `DiagnosticLoggingClient` and `FindClient` did.  I have no preference one way or the other though, so I can change this.  It does seem slightly less efficient as now there is an object both on `WKWebView` and `WebPageProxy`, whereas the approach I have now only involves `WebPageProxy`.

&gt;&gt; Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp:510
&gt;&gt; +{
&gt; 
&gt; I&apos;m not quite sure how this test can fail if reserveInitialCapacity was incorrect. Is the initial capacity observable from calling .add, .remove, and .size a lot?

...that&apos;s a good point!  I adopted this from the test for `HashMap`, which doesn&apos;t actually test the capacity either.

We could test `HashSet::capacity` directly, but I don&apos;t think that would return exactly `9999` as `HashTable::computeBestTableSize` rounds up to the nearest power of two, and then does some other math to ensure that there is still enough room.  I&apos;ll do the math and figure out what the expected capacity would be given `9999` and test for that too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612748</commentid>
    <comment_count>6</comment_count>
      <attachid>389197</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-29 16:22:02 -0800</bug_when>
    <thetext>Created attachment 389197
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612765</commentid>
    <comment_count>7</comment_count>
      <attachid>389197</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-01-29 16:58:53 -0800</bug_when>
    <thetext>Comment on attachment 389197
Patch

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

r=me! (with EWS)

&gt; Source/WebKit/UIProcess/API/Cocoa/WKUIDelegatePrivate.h:-241
&gt; -/*! @abstract Called when a Web Inspector instance is attached to this WKWebView. This is not called in the case of remote inspection.

Please save my comment :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612799</commentid>
    <comment_count>8</comment_count>
      <attachid>389211</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-01-29 18:11:15 -0800</bug_when>
    <thetext>Created attachment 389211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622822</commentid>
    <comment_count>9</comment_count>
      <attachid>389211</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 16:28:16 -0800</bug_when>
    <thetext>Comment on attachment 389211
Patch

Rejecting attachment 389211 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 5000 characters of output:
E_STALE_WHILE_REVALIDATE -DENABLE_NOTIFICATIONS -DENABLE_PAYMENT_REQUEST -DENABLE_PDFKIT_PLUGIN -DENABLE_POINTER_EVENTS -DENABLE_POINTER_LOCK -DENABLE_PUBLIC_SUFFIX_LIST -DENABLE_REMOTE_INSPECTOR -DENABLE_RESIZE_OBSERVER -DENABLE_RESOURCE_LOAD_STATISTICS -DENABLE_RESOURCE_USAGE -DENABLE_RUBBER_BANDING -DENABLE_SANDBOX_EXTENSIONS -DENABLE_SERVER_PRECONNECT -DENABLE_SERVICE_CONTROLS -DENABLE_SERVICE_WORKER -DENABLE_SHAREABLE_RESOURCE -DENABLE_SPEECH_SYNTHESIS -DENABLE_STREAMS_API -DENABLE_SVG_FONTS -DENABLE_TELEPHONE_NUMBER_DETECTION -DENABLE_TEXT_AUTOSIZING -DENABLE_USERSELECT_ALL -DENABLE_USER_MESSAGE_HANDLERS -DENABLE_VARIATION_FONTS -DENABLE_VIDEO -DENABLE_VIDEO_PRESENTATION_MODE -DENABLE_VIDEO_TRACK -DENABLE_VIDEO_USES_ELEMENT_FULLSCREEN -DENABLE_WEBDRIVER_MOUSE_INTERACTIONS -DENABLE_WEBDRIVER_KEYBOARD_INTERACTIONS -DENABLE_WEBGL -DENABLE_WEBGL2 -DENABLE_WEBGPU -DENABLE_WEB_AUDIO -DENABLE_WEB_AUTHN -DENABLE_WEB_CRYPTO -DENABLE_WEB_RTC -DENABLE_WIRELESS_PLAYBACK_TARGET -DENABLE_XSLT -DHAVE_CORE_PREDICTION -DU_HIDE_DEPRECATED_API -DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0 -DFRAMEWORK_NAME=WebKit -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk -fasm-blocks -fstrict-aliasing -Wdeprecated-declarations -Winvalid-offsetof -mmacosx-version-min=10.14 -g -fvisibility=hidden -fvisibility-inlines-hidden -fno-threadsafe-statics -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-generated-files.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-own-target-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-all-target-headers.hmap -iquote /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/WebKit-project-headers.hmap -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/WebCore.framework/PrivateHeaders/ForwardingHeaders -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2 -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/WebKitAdditions -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/WebKitAdditions -I/Volumes/Data/EWS/WebKit/WebKitBuild/Release/usr/local/include/webrtc -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/local/include/webrtc -I/Volumes/Data/EWS/WebKit/Source/WebKit -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources-normal/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources/x86_64 -I/Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/DerivedSources -Wall -Wextra -Wcast-qual -Wchar-subscripts -Wconditional-uninitialized -Wextra-tokens -Wformat-security -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wno-unused-parameter -Wpacked -Wpointer-arith -Wredundant-decls -Wundef -Wwrite-strings -Wexit-time-destructors -Wglobal-constructors -Wtautological-compare -Wimplicit-fallthrough -F/Volumes/Data/EWS/WebKit/WebKitBuild/Release -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks -iframework /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/PrivateFrameworks -isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/System/Library/Frameworks/System.framework/PrivateHeaders -include /Volumes/Data/EWS/WebKit/WebKitBuild/PrecompiledHeaders/WebKit2Prefix-aygnhujojvsdqwfdvhqwmhpyzahi/WebKit2Prefix.h -MMD -MT dependencies -MF /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource41.d --serialize-diagnostics /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource41.dia -c /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource41.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource41.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebKit.build/Release/WebKit.build/Objects-normal/x86_64/UnifiedSource40-mm.o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebKit2/unified-sources/UnifiedSource40-mm.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: https://webkit-queues.webkit.org/results/13328890</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622894</commentid>
    <comment_count>10</comment_count>
      <attachid>391719</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-02-25 19:55:41 -0800</bug_when>
    <thetext>Created attachment 391719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622907</commentid>
    <comment_count>11</comment_count>
      <attachid>391719</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 22:05:18 -0800</bug_when>
    <thetext>Comment on attachment 391719
Patch

Clearing flags on attachment: 391719

Committed r257410: &lt;https://trac.webkit.org/changeset/257410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622908</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-25 22:05:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389081</attachid>
            <date>2020-01-28 15:57:42 -0800</date>
            <delta_ts>2020-01-29 16:22:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206911-20200128155742.patch</filename>
            <type>text/plain</type>
            <size>96274</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGU1OThkNTNmYTllMDUyZDUxNTljYTljZmFjZTk0
N2M4ZWJkZjZmZGEuLjAyMGZlNDhjYTM3NThhZjlkNWNmMmU0NDRjMTQyZTMzYmNjYzMwNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAxLTI4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
YWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVz
ZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0J3MgbmFtZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb246IEFk
ZGVkLgorICAgICAgICBBZGQgYSBgQnJvd3NlcmAgYWdlbnQgdGhhdCBjYW4gY29tbXVuaWNhdGUg
d2l0aCB0aGUgaW5zcGVjdGVkIHBhZ2UncyBjb250YWluaW5nIGJyb3dzZXIuIEl0CisgICAgICAg
IGxpdmVzIGluIHRoZSBVSVByb2Nlc3MgYWxvbmdzaWRlIHRoZSBgVGFyZ2V0YCBhZ2VudCAobWVh
bmluZyB0aGVyZSBzaG91bGQgb25seSBiZSBvbmUgcGVyCisgICAgICAgIGRlYnVnZ2FibGUgcmF0
aGVyIHRoYW4gb25lIHBlciB0YXJldCkgYW5kIGFzIHN1Y2ggaXMgbm90IHJvdXRlZCB0aHJvdWdo
IHRoZSBgVGFyZ2V0YCBhZ2VudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKwogMjAyMC0wMS0yOCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgU29tZSB3ZWJzaXRlIG5lZWRzIG1vcmUgc3RhY2sgc3BhY2UuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGIz
MzBjMDgxMThmNDhlN2Q1YjQ0YzZjZDk5N2RkNzlhMDFhM2RhMGYuLjMwYjJlODZmY2IyZDY3ZDRl
NmY0YjkzZTlkZjM4NWEwNjVlMTc2OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjgg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmls
ZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlmaWVyIGluc3RlYWQgb2YgaXQncyBuYW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5MTEKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKFdURjo6
SGFzaFNldDo6cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSk6IEFkZGVkLgorCiAyMDIwLTAxLTI4ICBK
b25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJDb3JlOiBH
dWFyZCB1bmV2ZW4gY29ybmVycyBpbiByb3VuZGVkIHJlY3RhbmdsZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCmluZGV4IDg3MmE4NzEyMGE4Zjc3YTBlZDFhN2NkNDI2ODI4ZjQzNTZkZWMzYWUuLjI0
ZTVlY2VkMTJjMTUyNDlkZjExNTJlZGZjODEwMGZmYzRkNjhlM2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDIwLTAxLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYWZhcmkgYXBwIGV4dGVu
c2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVzZSB0aGUgZXh0ZW5zaW9u
J3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0J3MgbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanM6IEFkZGVk
LgorICAgICAgICAoV0kuQnJvd3Nlck1hbmFnZXIpOgorICAgICAgICAoV0kuQnJvd3Nlck1hbmFn
ZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuQnJvd3Nlck1hbmFn
ZXIucHJvdG90eXBlLmVuYWJsZSk6CisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5
cGUuZGlzYWJsZSk6CisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuaXNFeHRl
bnNpb25TY2hlbWUpOgorICAgICAgICAoV0kuQnJvd3Nlck1hbmFnZXIucHJvdG90eXBlLmV4dGVu
c2lvbk5hbWVGb3JJZCk6CisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuZXh0
ZW5zaW9uTmFtZUZvclVSTCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Ccm93
c2VyT2JzZXJ2ZXIuanM6IEFkZGVkLgorICAgICAgICAoV0kuQnJvd3Nlck9ic2VydmVyLnByb3Rv
dHlwZS5leHRlbnNpb25zRW5hYmxlZCk6CisgICAgICAgIChXSS5Ccm93c2VyT2JzZXJ2ZXIucHJv
dG90eXBlLmV4dGVuc2lvbnNEaXNhYmxlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UYXJnZXQuanM6CisgICAgICAgIChXSS5UYXJnZXQucHJvdG90eXBlLmdldCBCcm93c2Vy
QWdlbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAg
ICAgICAgKFdJLmxvYWRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6Cisg
ICAgICAgIEFkZCBhbiBvYnNlcnZlciBhbmQgbWFuYWdlciBmb3IgdGhlIGBCcm93c2VyYCBkb21h
aW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tl
bmRUYXJnZXQuanM6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KToKKyAg
ICAgICAgKFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQucHJvdG90eXBlLmluaXRpYWxpemUp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qczoK
KyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOiBB
ZGRlZC4KKyAgICAgICAgVGhlIGBCcm93c2VyYCBhZ2VudCBsaXZlcyBpbiB0aGUgVUlQcm9jZXNz
IGFsb25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcgdGhlcmUKKyAgICAgICAgc2hv
dWxkIG9ubHkgYmUgb25lIHBlciBkZWJ1Z2dhYmxlIHJhdGhlciB0aGFuIG9uZSBwZXIgdGFyZXQp
IGFuZCBhcyBzdWNoIGlzIG5vdCByb3V0ZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgYFRhcmdldGAg
YWdlbnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qczoK
KyAgICAgICAgKFdJLlF1aWNrQ29uc29sZS5wcm90b3R5cGUuX2Rpc3BsYXlOYW1lRm9yRXhlY3V0
aW9uQ29udGV4dCk6CisgICAgICAgIEF0dGVtcHQgdG8gbWF0Y2ggdGhlIGV4ZWN1dGlvbiBjb250
ZXh0IG5hbWUgYWdhaW5zdCBhbnkga25vd24gZXh0ZW5zaW9uIGlkZW50aWZpZXIsIGFuZAorICAg
ICAgICB1c2UgdGhlIGV4dGVuc2lvbidzIGRpc3BsYXkgbmFtZSBpZiBvbmUgaXMgZm91bmQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRpbGl0aWVzLmpzOgorICAgICAgICAo
V0kuZGlzcGxheU5hbWVGb3JIb3N0KToKKyAgICAgICAgQXR0ZW1wdCB0byBtYXRjaCB0aGUgaG9z
dCBhZ2FpbnN0IGFueSBrbm93biBleHRlbnNpb24gaWRlbnRpZmllciwgYW5kIHVzZSB0aGUgZXh0
ZW5zaW9uJ3MKKyAgICAgICAgZGlzcGxheSBuYW1lIGlmIG9uZSBpcyBmb3VuZC4KKworICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6
CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2Fk
ZFN0eWxlU2hlZXQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9VdGls
aXRpZXMuanM6CisgICAgICAgIChpc1dlYktpdEV4dGVuc2lvblNjaGVtZSk6IERlbGV0ZWQuCisg
ICAgICAgICogLmVzbGludHJjOgorICAgICAgICBVc2UgYFdJLkJyb3dzZXJNYW5hZ2VyLnByb3Rv
dHlwZS5pc0V4dGVuc2lvblNjaGVtZWAgaW5zdGVhZCBvZiB0aGUgZ2xvYmFsIGZ1bmN0aW9uLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qczoKKyAgICAgICAg
KFdJLlNvdXJjZUNvZGUpOgorICAgICAgICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IHVy
bCk6IEFkZGVkLgorICAgICAgICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IHVybENvbXBv
bmVudHMpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZVNo
ZWV0LmpzOgorICAgICAgICAoV0kuQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXSS5DU1NTdHls
ZVNoZWV0LnByb3RvdHlwZS5nZXQgaW5qZWN0ZWQpOgorICAgICAgICAoV0kuQ1NTU3R5bGVTaGVl
dC5wcm90b3R5cGUuZ2V0IHVybCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5DU1NTdHlsZVNoZWV0
LnByb3RvdHlwZS5nZXQgdXJsQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanM6CisgICAgICAgIChXSS5SZXNvdXJjZSk6CisgICAg
ICAgIChXSS5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IHVybCk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qczoKKyAgICAgICAgKFdJLlNjcmlwdCk6
CisgICAgICAgIChXSS5TY3JpcHQucHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuU2NyaXB0LnByb3RvdHlwZS5nZXQgdXJsQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIEFsbCBzdWJjbGFzc2VzIG9mIGBXSS5Tb3VyY2VDb2RlYCBoYXZlIHNlcGFyYXRlIGBnZXQg
dXJsYCBhbmQgYGdldCB1cmxDb21wb25lbnRzYCBmdW5jdGlvbnMsCisgICAgICAgIHNvIHVuaWZ5
IHRoZW0gaW4gdGhlIGNvbW1vbiBzdXBlcmNsYXNzIHNvIHRoYXQgaXQncyBndWFyYW50ZWVkIHRv
IGV4aXN0LgorCiAyMDIwLTAxLTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkb24ndCB1c2UgYDptYXRjaGVzKDpiZWZvcmUsIDph
ZnRlcilgIGFmdGVyIHIyNTUwNTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZDVjODNmOTJjMzUwMGJjNGU1ZmE1ZGMy
ZGI2YmRjMzQ0MDg3ZDNmYS4uMmQwM2JhZWE4ZjY5ODI0NjgyYjFjODk0NjZhMmRjYzk3Zjc0ZDQ5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NiBAQAorMjAyMC0wMS0yOCAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2FmYXJpIGFwcCBl
eHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmplY3RlZCBmaWxlcyB1c2UgdGhlIGV4dGVu
c2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdCdzIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTgwMjY2MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVk
SW5zcGVjdG9yQnJvd3NlckFnZW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50
KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6d2ViUGFnZUFnZW50Q29udGV4dCk6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3JlYXRlTGF6
eUFnZW50cyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUlu
c3BlY3RvckFnZW50QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQWdl
bnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpJbnNwZWN0b3JCcm93c2Vy
QWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
ckJyb3dzZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dz
ZXJBZ2VudDo6ZXh0ZW5zaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JC
cm93c2VyQWdlbnQ6OmV4dGVuc2lvbnNEaXNhYmxlZCk6CisgICAgICAgIEFkZCBhIGBCcm93c2Vy
YCBhZ2VudCB0aGF0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGNv
bnRhaW5pbmcgYnJvd3Nlci4gSXQKKyAgICAgICAgbGl2ZXMgaW4gdGhlIFVJUHJvY2VzcyBhbG9u
Z3NpZGUgdGhlIGBUYXJnZXRgIGFnZW50IChtZWFuaW5nIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9u
ZSBwZXIKKyAgICAgICAgZGVidWdnYWJsZSByYXRoZXIgdGhhbiBvbmUgcGVyIHRhcmV0KSBhbmQg
YXMgc3VjaCBpcyBub3Qgcm91dGVkIHRocm91Z2ggdGhlIGBUYXJnZXRgIGFnZW50LgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6Omluc3BlY3RvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94
eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dL
V2ViVmlldyBfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2luc3BlY3RvckRlbGVnYXRlXSk6IEFkZGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcg
X3NldEluc3BlY3RvckRlbGVnYXRlOl0pOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpzZXRJbnNwZWN0b3JDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckNsaWVudC5tbTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckNsaWVudDo6SW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50OjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudDo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OmRpZEF0dGFjaEluc3BlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckNsaWVu
dDo6YnJvd3NlckRvbWFpbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JDbGll
bnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElJ
bnNwZWN0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVudDo6
ZGlkQXR0YWNoSW5zcGVjdG9yKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93
c2VyRG9tYWluRW5hYmxlZCk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVudDo6YnJvd3Nl
ckRvbWFpbkRpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvckRlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICBJbnRyb2R1Y2UgYW4gaW5zcGVjdG9yIGRl
bGVnYXRlIFNQSSBmb3IgY29tbXVuaWNhdGluZyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIFdlYiBJ
bnNwZWN0b3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbToK
KyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIF9icm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQ6XSk6IEFk
ZGVkLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgX2Jyb3dzZXJFeHRlbnNpb25zRGlzYWJsZWQ6
XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3Rv
ckZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmJyb3dzZXJF
eHRlbnNpb25zRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQ
cm94eTo6YnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZCk6IEFkZGVkLgorICAgICAgICBBZGQgU1BJ
IGZvciB3aGVuIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgc28gdGhhdCBXZWIgSW5z
cGVjdG9yIGNhbiB1cGRhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAgICAo
V2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6OlVJRGVs
ZWdhdGU6OlVJQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IpOiBEZWxldGVkLgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmRp
ZEF0dGFjaEluc3BlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgIE1vdmUgYF93ZWJWaWV3OmRpZEF0dGFj
aEluc3BlY3RvcjpgIGZyb20gYFdLVUlEZWxlZ2F0ZVByaXZhdGVgIHRvIGBfV0tJbnNwZWN0b3JE
ZWxlZ2F0ZWAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNv
dXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMjggIEFuZHJlcyBHb256YWxl
eiAgPGFuZHJlc2dfMjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgY3Jhc2ggaW4gQXBw
S2l0IGFjY2Vzc2liaWxpdHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
OTFlNDI3YzMwYzUxMTYzZWRkOWYxMDZkNDJmOTVlMDlkMDJiZTljNC4uNDA0ZmU3MzE5Y2VlZmQz
ZDJmNDQ3NmMyNjVmNDMyMzgyNDEzNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3Rz
LnR4dApAQCAtMTE1Miw2ICsxMTUyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9E
T01BSU5TCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9ET01T
dG9yYWdlLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29s
L0RhdGFiYXNlLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3Rv
Y29sL0RlYnVnZ2VyLmpzb24KKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3By
b3RvY29sL0Jyb3dzZXIuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvR2VuZXJpY1R5cGVzLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5z
cGVjdG9yL3Byb3RvY29sL0hlYXAuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvSW5zcGVjdG9yLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggOWVhZDY1M2ZhYWFi
MTg5M2ViOTJkZDAyZTk3NTc5NjZkZmE5OWFjNC4uMjM0MGNkZmFjNDYxYjliNmIzMWIwNTc4YjI1
YWZiNTU1YmFkYWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2
ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkwLDYgKzkwLDcgQEAgJChQUk9KRUNUX0RJ
UikvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KICQoUFJPSkVDVF9ESVIpL2lu
c3BlY3Rvci9wcm90b2NvbC9ET01TdG9yYWdlLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rv
ci9wcm90b2NvbC9EYXRhYmFzZS5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9j
b2wvRGVidWdnZXIuanNvbgorJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dz
ZXIuanNvbgogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0dlbmVyaWNUeXBlcy5q
c29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCiAkKFBST0pF
Q1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5kZXhlZERCLmpzb24KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZTJhMzZmYTg3NjQ5MDlhYmZkMGUxODk2
ZDNhOWE3YzM2MWYxYjIzYS4uZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkw
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0OSw2
ICsyNDksNyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
aW5zcGVjdG9yL3Byb3RvY29sL0RPTVN0b3JhZ2UuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29y
ZSkvaW5zcGVjdG9yL3Byb3RvY29sL0RhdGFiYXNlLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRD
b3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uIFwKICAgICAkKEphdmFTY3JpcHRD
b3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvR2VuZXJpY1R5cGVzLmpzb24gXAogICAgICQoSmF2YVNj
cmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24gXAogICAgICQoSmF2YVNjcmlw
dENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbiBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlMGNmOWNhOWIwNjI4OTgzNjdlZGQzMjU5YTdkZGFjMDM3ZDE1OWEKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dz
ZXIuanNvbgpAQCAtMCwwICsxLDQ2IEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAg
ICAiZGVzY3JpcHRpb24iOiAiVGhlIEJyb3dzZXIgZG9tYWluIGNvbnRhaW5zIGNvbW1hbmRzIGFu
ZCBldmVudHMgcmVsYXRlZCB0byBnZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2Vy
ICIsCisgICAgImRlYnVnZ2FibGVUeXBlcyI6IFsid2ViLXBhZ2UiXSwKKyAgICAidGFyZ2V0VHlw
ZXMiOiBbIndlYi1wYWdlIl0sCisgICAgInR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAg
ICAiaWQiOiAiRXh0ZW5zaW9uSWQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgZXh0ZW5zaW9uIGlkZW50aWZpZXIuIgor
ICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiRXh0ZW5zaW9uIiwKKyAg
ICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
SW5mb3JtYXRpb24gYWJvdXQgYW4gZXh0ZW5zaW9uLiIsCisgICAgICAgICAgICAicHJvcGVydGll
cyI6IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV4dGVuc2lvbklkIiwgIiRyZWYiOiAi
RXh0ZW5zaW9uSWQiLCAiZGVzY3JpcHRpb24iOiAiRXh0ZW5zaW9uIGlkZW50aWZpZXIuIiB9LAor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNj
cmlwdGlvbiI6ICJUaGUgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLiIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsK
KyAgICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiRW5hYmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9LAorICAgICAgICB7
CisgICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlv
biI6ICJEaXNhYmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9CisgICAgXSwK
KyAgICAiZXZlbnRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJleHRlbnNp
b25zRW5hYmxlZCIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV4dGVuc2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRy
ZWYiOiAiRXh0ZW5zaW9uIiB9LCAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhl
IGVuYWJsZWQgZXh0ZW5zaW9ucy4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZXh0ZW5zaW9uc0Rpc2FibGVkIiwKKyAgICAgICAg
ICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXh0ZW5zaW9u
SWRzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkV4dGVuc2lvbklkIiB9
LCAiZGVzY3JpcHRpb24iOiAiRGlzYWJsZWQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzLiIgfQorICAg
ICAgICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvSGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IGUyNjg3ZTliMDYy
ZGRjODQ5NDU5NDJlOTAyNDZhYTgxYTdmNDQ1NTUuLjg2OTczOGRmZTY1OGM2NjE5YWQ5YzhkNjhj
NTVlY2NkMDVlOGQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAg
IHVuc2lnbmVkIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAK
KyAgICB2b2lkIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkodW5zaWduZWQga2V5Q291bnQpIHsgbV9p
bXBsLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa2V5Q291bnQpOyB9CisKICAgICBpdGVyYXRvciBi
ZWdpbigpIGNvbnN0OwogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjIGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5l
c2xpbnRyYwppbmRleCAzOGI3NmM1NjJmYTg2YmMzMDU5NzI1YmRjNmFkOGU1OGIzMjNjNWViLi5k
YWE2MTQ4NTY5YjE2ZTVjYjFjZjE4OWQxOGUzOTkwYWRiMzAzZTFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvLmVzbGludHJjCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8u
ZXNsaW50cmMKQEAgLTEwMSw3ICsxMDEsNiBAQAogICAgICAgICAiaXNXZWJJbnNwZWN0b3JDb25z
b2xlRXZhbHVhdGlvblNjcmlwdCI6IHRydWUsCiAgICAgICAgICJpc1dlYkluc3BlY3RvckludGVy
bmFsU2NyaXB0IjogdHJ1ZSwKICAgICAgICAgImlzV2ViS2l0SW50ZXJuYWxTY3JpcHQiOiB0cnVl
LAotICAgICAgICAiaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUiOiB0cnVlLAogICAgICAgICAibXVs
dGlwbGljYXRpb25TaWduIjogdHJ1ZSwKICAgICAgICAgInBhcnNlTUlNRVR5cGUiOiB0cnVlLAog
ICAgICAgICAicmVzb2x2ZURvdHNJblBhdGgiOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDgyNzFlMTNjNmI3ZDdmMzMx
Y2IyYWU5ZWRjODMyYTE0YWMyZjJlMzIuLjU5MGFkNDZhNjZmNGI2YWI3OTkzMjM3YmI1ODJlM2Uw
NzczYjU3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0Jhc2UvTWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL01haW4uanMKQEAgLTU1LDYgKzU1LDggQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAg
ICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQW5pbWF0aW9uRGlzcGF0Y2hlcihXSS5Bbmlt
YXRpb25PYnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNh
dGlvbkNhY2hlRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFw
cGxpY2F0aW9uQ2FjaGVEaXNwYXRjaGVyKFdJLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcik7Cisg
ICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJCcm93c2VyRGlzcGF0Y2hlcikKKyAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckJyb3dzZXJEaXNwYXRjaGVyKFdJLkJyb3dzZXJP
YnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRp
c3BhdGNoZXIpCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRp
c3BhdGNoZXIoV0kuQ1BVUHJvZmlsZXJPYnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tl
bmQucmVnaXN0ZXJDU1NEaXNwYXRjaGVyKQpAQCAtMTA0LDYgKzEwNiw3IEBAIFdJLmxvYWRlZCA9
IGZ1bmN0aW9uKCkKICAgICAvLyBDcmVhdGUgdGhlIHNpbmdsZXRvbiBtYW5hZ2VycyBuZXh0LCBi
ZWZvcmUgdGhlIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzLCBzbyB0aGUgdXNlciBpbnRlcmZhY2Ug
Y2FuIHJlZ2lzdGVyCiAgICAgLy8gYXMgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZXNlIG1hbmFnZXJz
LgogICAgIFdJLm1hbmFnZXJzID0gWworICAgICAgICBXSS5icm93c2VyTWFuYWdlciA9IG5ldyBX
SS5Ccm93c2VyTWFuYWdlciwKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlciA9IG5ldyBXSS5UYXJn
ZXRNYW5hZ2VyLAogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlciA9IG5ldyBXSS5OZXR3b3JrTWFu
YWdlciwKICAgICAgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIgPSBuZXcgV0kuRE9NU3RvcmFnZU1h
bmFnZXIsCkBAIC0xMzQsNiArMTM3LDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJ
LmRhdGFiYXNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVu
dC5EYXRhYmFzZVdhc0luc3BlY3RlZCwgV0kuX2RhdGFiYXNlV2FzSW5zcGVjdGVkKTsKICAgICBX
SS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50
Lk1haW5GcmFtZURpZENoYW5nZSwgV0kuX21haW5GcmFtZURpZENoYW5nZSk7CiAgICAgV0kubmV0
d29ya01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5GcmFt
ZVdhc0FkZGVkLCBXSS5fZnJhbWVXYXNBZGRlZCk7CisgICAgV0kuYnJvd3Nlck1hbmFnZXIuZW5h
YmxlKCk7CiAKICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgV0kuX21haW5SZXNvdXJjZURpZENoYW5nZSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRpbGl0
aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGls
aXRpZXMuanMKaW5kZXggYjU5NTE5ZTU5OTA4ZGIwZGFkMThjN2Y3NzY5OWZiY2QzMDVmNWNmMS4u
ZTNmY2EyZmY5MzkxZWQyNjgzYTVjYTgyODhhMGRhNWY0MWMwMzJkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMu
anMKQEAgLTMxMSw3ICszMTEsMTIgQEAgV0kudXJsV2l0aG91dEZyYWdtZW50ID0gZnVuY3Rpb24o
dXJsU3RyaW5nKQogCiBXSS5kaXNwbGF5TmFtZUZvckhvc3QgPSBmdW5jdGlvbihob3N0KQogewor
ICAgIGxldCBleHRlbnNpb25OYW1lID0gV0kuYnJvd3Nlck1hbmFnZXIuZXh0ZW5zaW9uTmFtZUZv
cklkKGhvc3QpOworICAgIGlmIChleHRlbnNpb25OYW1lKQorICAgICAgICByZXR1cm4gZXh0ZW5z
aW9uTmFtZTsKKwogICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8xMTIzNzQxMz46IFRoaXMg
c2hvdWxkIGRlY29kZSBwdW55Y29kZSBob3N0bmFtZXMuCisKICAgICByZXR1cm4gaG9zdDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
VXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9V
dGlsaXRpZXMuanMKaW5kZXggYjc3NDIzMTg0MzZjZTE1NDk2YTRhZTExYTNkYTNiZmVjMmQxM2Ix
NC4uMDQ1OTYyMmE1MTFjZjMxZjI4NjIxNTMxNWQ1ZWM0NTZlMjQ4ZTZmYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMK
QEAgLTE2NDQsMTEgKzE2NDQsNiBAQCBmdW5jdGlvbiBpc1dlYktpdEludGVybmFsU2NyaXB0KHVy
bCkKICAgICByZXR1cm4gdXJsICYmIHVybC5zdGFydHNXaXRoKCJfX1dlYiIpICYmIHVybC5lbmRz
V2l0aCgiX18iKTsKIH0KIAotZnVuY3Rpb24gaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc2NoZW1l
KQotewotICAgIHJldHVybiBzY2hlbWUgJiYgc2NoZW1lLmVuZHNXaXRoKCItZXh0ZW5zaW9uIik7
Ci19Ci0KIGZ1bmN0aW9uIGlzRnVuY3Rpb25TdHJpbmdOYXRpdmVDb2RlKHN0cikKIHsKICAgICBy
ZXR1cm4gc3RyLmVuZHNXaXRoKCJ7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nl
ck1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9Ccm93c2VyTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMTdlZmQ3OTFiZWNhM2Y4MTAyMjVi
MTM0ZDRmMGJkMmYxN2Q3M2FkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMKQEAgLTAsMCAr
MSwxMjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5Ccm93c2VyTWFuYWdlciA9IGNsYXNzIEJyb3dzZXJN
YW5hZ2VyCit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZW5hYmxl
ZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcCA9IG5l
dyBNYXA7CisgICAgfQorCisgICAgLy8gVGFyZ2V0CisKKyAgICBpbml0aWFsaXplVGFyZ2V0KHRh
cmdldCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6IEJyb3dzZXIgZGlk
IG5vdCBleGlzdCB5ZXQuCisgICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJCcm93c2VyIikp
CisgICAgICAgICAgICB0YXJnZXQuQnJvd3NlckFnZW50LmVuYWJsZSgpOworICAgIH0KKworICAg
IC8vIFB1YmxpYworCisgICAgZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCF0aGlzLl9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAg
ICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKQorICAg
ICAgICAgICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgZGlz
YWJsZSgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKwor
ICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKSB7
CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuMSk6IEJyb3dzZXIgZGlkIG5v
dCBleGlzdCB5ZXQuCisgICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc0RvbWFpbigiQnJvd3NlciIp
KQorICAgICAgICAgICAgICAgIHRhcmdldC5Ccm93c2VyQWdlbnQuZGlzYWJsZSgpOworICAgICAg
ICB9CisKKyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuY2xlYXIoKTsK
KworICAgICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgaXNFeHRlbnNp
b25TY2hlbWUoc2NoZW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNjaGVtZSAmJiBzY2hlbWUu
ZW5kc1dpdGgoIi1leHRlbnNpb24iKTsKKyAgICB9CisKKyAgICBleHRlbnNpb25OYW1lRm9ySWQo
ZXh0ZW5zaW9uSWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uTmFtZUlk
ZW50aWZpZXJNYXAuZ2V0KGV4dGVuc2lvbklkKSB8fCBudWxsOworICAgIH0KKworICAgIGV4dGVu
c2lvbk5hbWVGb3JVUkwodXJsKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5p
c0V4dGVuc2lvblNjaGVtZShwYXJzZVVSTCh1cmwpLnNjaGVtZSkpOworCisgICAgICAgIGxldCBt
YXRjaCA9IHVybC5tYXRjaCgvXlthLXpcLV0qZXh0ZW5zaW9uOlwvXC8oWzAtOUEtRl17OH0tWzAt
OUEtRl17NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9KVwvLyk7CisgICAg
ICAgIGlmICghbWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1
cm4gdGhpcy5leHRlbnNpb25OYW1lRm9ySWQobWF0Y2hbMV0pOworICAgIH0KKworICAgIGV4dGVu
c2lvbk5hbWVGb3JFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChjb250ZXh0IGluc3RhbmNlb2YgV0kuRXhlY3V0aW9uQ29udGV4dCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRleHQudHlwZSA9PT0gV0kuRXhlY3V0aW9uQ29udGV4dC5U
eXBlLlVzZXIpOworCisgICAgICAgIGxldCBtYXRjaCA9IGNvbnRleHQubmFtZS5tYXRjaCgvXltB
LVphLXpdKkV4dGVuc2lvbldvcmxkLShbMC05QS1GXXs4fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0
fS1bMC05QS1GXXs0fS1bMC05QS1GXXsxMn0pJC8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uTmFt
ZUZvcklkKG1hdGNoWzFdKTsKKyAgICB9CisKKyAgICAvLyBCcm93c2VyT2JzZXJ2ZXIKKworICAg
IGV4dGVuc2lvbnNFbmFibGVkKGV4dGVuc2lvbnMpCisgICAgeworICAgICAgICBmb3IgKGxldCB7
ZXh0ZW5zaW9uSWQsIG5hbWV9IG9mIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcC5oYXMoZXh0ZW5zaW9uSWQp
LCBgQnJvd3NlciBhbHJlYWR5IGV4aXN0cyB3aXRoIGlkICR7ZXh0ZW5zaW9uSWR9LmApOworCisg
ICAgICAgICAgICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcC5zZXQoZXh0ZW5zaW9u
SWQsIG5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgZXh0ZW5zaW9uc0Rpc2FibGVkKGV4
dGVuc2lvbklkcykKKyAgICB7CisgICAgICAgIGZvciAobGV0IGV4dGVuc2lvbklkIG9mIGV4dGVu
c2lvbklkcykgeworICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlzLl9leHRlbnNpb25OYW1lSWRl
bnRpZmllck1hcC50YWtlKGV4dGVuc2lvbklkKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KG5hbWUpOworICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2Vy
LmpzCmluZGV4IDg0ZmEwMjYxNDQ2OWU3MDVjYTkxMWQzMjA3ZGJmZGU2OTkyZGM4YTMuLjMzNWU1
ZWJhMWI1MjIxODkzODJiZWE1ZTRmMTg2Mzc4MzllY2FkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFy
Z2V0TWFuYWdlci5qcwpAQCAtMzUsNiArMzUsMTUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNz
IFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fdHJhbnNpdGlv
blRpbWVvdXRJZGVudGlmaWVyID0gdW5kZWZpbmVkOwogICAgIH0KIAorICAgIC8vIFRhcmdldAor
CisgICAgaW5pdGlhbGl6ZVRhcmdldCh0YXJnZXQpCisgICAgeworICAgICAgICAvLyBDT01QQVRJ
QklMSVRZIChpT1MgMTMpOiBUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IGRpZCBub3QgZXhpc3QgeWV0
LgorICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIlRhcmdldC5zZXRQYXVzZU9uU3RhcnQi
KSkKKyAgICAgICAgICAgIHRhcmdldC5UYXJnZXRBZ2VudC5zZXRQYXVzZU9uU3RhcnQodHJ1ZSk7
CisgICAgfQorCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGFyZ2V0cygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZGQxZDRjNjFiMzQ5
M2UxOTY3ZTNiNzdhYTg0NThhYWVhYTg3MzRlNi4uNjM0ZGI3NWI5YmFkMWNlNjRmYmY4ZTM5NjRk
NTczYmYzY2VlYzVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbApAQCAtMzI4LDYgKzMyOCw3IEBACiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvQW5pbWF0aW9uT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90
b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9DUFVQcm9maWxlck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC04NjEsNiArODYy
LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dN
ZXNzYWdlTGV4ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9C
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9Ccm93c2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IkNvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9DYWxsRnJhbWVUcmVlQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0
eWxlU2hlZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTU3R5bGVTaGVldC5qcwppbmRleCBjOWZkMDJlNDExMzg1MGFkMjllNjJkMTJkZGJlY2YxNWVk
ZDM3Y2M3Li44Y2ExYzc0YzYyNTJhOWIxY2NiYTFkMzY4ZTM3N2YyMzRkNDk3ZTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVT
aGVldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTU3R5bGVTaGVldC5qcwpAQCAtMzIsNyArMzIsNiBAQCBXSS5DU1NTdHlsZVNoZWV0ID0gY2xh
c3MgQ1NTU3R5bGVTaGVldCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICAgICAgY29uc29sZS5h
c3NlcnQoaWQpOwogCiAgICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICAgICAgdGhp
cy5fdXJsID0gbnVsbDsKICAgICAgICAgdGhpcy5fcGFyZW50RnJhbWUgPSBudWxsOwogICAgICAg
ICB0aGlzLl9vcmlnaW4gPSBudWxsOwogICAgICAgICB0aGlzLl9zdGFydExpbmVOdW1iZXIgPSAw
OwpAQCAtNzAsNyArNjksNyBAQCBXSS5DU1NTdHlsZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVl
dCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIAogICAgIGdldCBpbmplY3RlZCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUodGhpcy51cmxDb21wb25lbnRzLnNj
aGVtZSk7CisgICAgICAgIHJldHVybiBXSS5icm93c2VyTWFuYWdlci5pc0V4dGVuc2lvblNjaGVt
ZSh0aGlzLnVybENvbXBvbmVudHMuc2NoZW1lKTsKICAgICB9CiAKICAgICBnZXQgYW5vbnltb3Vz
KCkKQEAgLTc4LDE4ICs3Nyw2IEBAIFdJLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNo
ZWV0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICByZXR1cm4gIXRoaXMuaXNJbnNwZWN0
b3JTdHlsZVNoZWV0KCkgJiYgIXRoaXMuX3VybDsKICAgICB9CiAKLSAgICBnZXQgdXJsKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmw7Ci0gICAgfQotCi0gICAgZ2V0IHVybENvbXBv
bmVudHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQotICAgICAg
ICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7Ci0gICAgICAg
IHJldHVybiB0aGlzLl91cmxDb21wb25lbnRzOwotICAgIH0KLQogICAgIGdldCBtaW1lVHlwZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gInRleHQvY3NzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwppbmRleCAyYzEx
NWU1MWM1YWZjY2M3YWY4OTgwYjdhNmI0OGYxMDMyMGU1NDI4Li4wZWI1ODQ4ZGJkN2YxNzVhMjNj
NzhmYWU4YWMwZGIyZDc5NDdhOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCkBAIC0yOCwxMCArMjgsMTAgQEAg
V0kuUmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIHsKICAg
ICBjb25zdHJ1Y3Rvcih1cmwsIHttaW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFy
Z2V0SWQsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywg
cmVxdWVzdERhdGEsIHJlcXVlc3RTZW50VGltZXN0YW1wLCByZXF1ZXN0U2VudFdhbGx0aW1lLCBp
bml0aWF0b3JDYWxsRnJhbWVzLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIGluaXRpYXRv
ck5vZGUsIG9yaWdpbmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXB9ID0ge30pCiAgICAgewot
ICAgICAgICBzdXBlcigpOwotCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CiAKKyAgICAg
ICAgc3VwZXIodXJsKTsKKwogICAgICAgICBpZiAodHlwZSBpbiBXSS5SZXNvdXJjZS5UeXBlKQog
ICAgICAgICAgICAgdHlwZSA9IFdJLlJlc291cmNlLlR5cGVbdHlwZV07CiAgICAgICAgIGVsc2Ug
aWYgKHR5cGUgPT09ICJTdHlsZXNoZWV0IikgewpAQCAtMzksOCArMzksNiBAQCBXSS5SZXNvdXJj
ZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICAgICAgdHlw
ZSA9IFdJLlJlc291cmNlLlR5cGUuU3R5bGVTaGVldDsKICAgICAgICAgfQogCi0gICAgICAgIHRo
aXMuX3VybCA9IHVybDsKLSAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IG51bGw7CiAgICAg
ICAgIHRoaXMuX21pbWVUeXBlID0gbWltZVR5cGU7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlQ29t
cG9uZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3R5cGUgPSBSZXNvdXJjZS5yZXNvbHZlZFR5
cGUodHlwZSwgbWltZVR5cGUpOwpAQCAtMzEwLDcgKzMwOCw2IEBAIFdJLlJlc291cmNlID0gY2xh
c3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAKICAgICAvLyBQdWJsaWMKIAotICAg
IGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH0KICAgICBnZXQgbWltZVR5cGUoKSB7IHJl
dHVybiB0aGlzLl9taW1lVHlwZTsgfQogICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90
YXJnZXQ7IH0KICAgICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KQEAgLTM1Miwx
MyArMzQ5LDYgQEAgV0kuUmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJj
ZUNvZGUKICAgICBnZXQgY2FjaGVkUmVzcG9uc2VCb2R5U2l6ZSgpIHsgcmV0dXJuIHRoaXMuX2Nh
Y2hlZFJlc3BvbnNlQm9keVNpemU7IH0KICAgICBnZXQgcmVkaXJlY3RzKCkgeyByZXR1cm4gdGhp
cy5fcmVkaXJlY3RzOyB9CiAKLSAgICBnZXQgdXJsQ29tcG9uZW50cygpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3VybENvbXBvbmVudHMpCi0gICAgICAgICAgICB0aGlzLl91cmxDb21wb25l
bnRzID0gcGFyc2VVUkwodGhpcy5fdXJsKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBv
bmVudHM7Ci0gICAgfQotCiAgICAgZ2V0IGxvYWRlZFNlY3VyZWx5KCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLnVybENvbXBvbmVudHMuc2NoZW1lICE9PSAiaHR0cHMiICYmIHRoaXMudXJsQ29t
cG9uZW50cy5zY2hlbWUgIT09ICJ3c3MiICYmIHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09
ICJzZnRwIikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU2NyaXB0LmpzCmluZGV4IGU0NGI5ZjY1NWM5ZjM4NDhiYjEzNTMxZGNhYzkzZGRhOGFh
M2NmZGMuLjY1N2M1NDFhZmIzNzhiZmZiZjc5YjRjODQ3MjA5MzBiYjJhMWE1OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5q
cwpAQCAtMjcsNyArMjcsNyBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5T
b3VyY2VDb2RlCiB7CiAgICAgY29uc3RydWN0b3IodGFyZ2V0LCBpZCwgcmFuZ2UsIHVybCwgc291
cmNlVHlwZSwgaW5qZWN0ZWQsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKQogICAgIHsKLSAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIodXJsKTsKIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0YXJnZXQgaW5zdGFuY2VvZiBXSS5UYXJnZXQgfHwgdGhpcyBpbnN0YW5jZW9mIFdJLkxvY2Fs
U2NyaXB0KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0
UmFuZ2UpOwpAQCAtMzUsNyArMzUsNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5k
cyBXSS5Tb3VyY2VDb2RlCiAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICAgICAg
dGhpcy5faWQgPSBpZCB8fCBudWxsOwogICAgICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlIHx8IG51
bGw7Ci0gICAgICAgIHRoaXMuX3VybCA9IHVybCB8fCBudWxsOwogICAgICAgICB0aGlzLl9zb3Vy
Y2VUeXBlID0gc291cmNlVHlwZSB8fCBXSS5TY3JpcHQuU291cmNlVHlwZS5Qcm9ncmFtOwogICAg
ICAgICB0aGlzLl9zb3VyY2VVUkwgPSBzb3VyY2VVUkwgfHwgbnVsbDsKICAgICAgICAgdGhpcy5f
c291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZU1hcFVSTCB8fCBudWxsOwpAQCAtODAsNyArNzksNiBA
QCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgZ2V0
IHRhcmdldCgpIHsgcmV0dXJuIHRoaXMuX3RhcmdldDsgfQogICAgIGdldCBpZCgpIHsgcmV0dXJu
IHRoaXMuX2lkOyB9CiAgICAgZ2V0IHJhbmdlKCkgeyByZXR1cm4gdGhpcy5fcmFuZ2U7IH0KLSAg
ICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9CiAgICAgZ2V0IHNvdXJjZVR5cGUoKSB7
IHJldHVybiB0aGlzLl9zb3VyY2VUeXBlOyB9CiAgICAgZ2V0IHNvdXJjZVVSTCgpIHsgcmV0dXJu
IHRoaXMuX3NvdXJjZVVSTDsgfQogICAgIGdldCBzb3VyY2VNYXBwaW5nVVJMKCkgeyByZXR1cm4g
dGhpcy5fc291cmNlTWFwcGluZ1VSTDsgfQpAQCAtMTA4LDEzICsxMDYsNiBAQCBXSS5TY3JpcHQg
PSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAgIHJldHVybiB0aGlz
Ll9zb3VyY2VVUkw7CiAgICAgfQogCi0gICAgZ2V0IHVybENvbXBvbmVudHMoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQotICAgICAgICAgICAgdGhpcy5fdXJsQ29t
cG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmxD
b21wb25lbnRzOwotICAgIH0KLQogICAgIGdldCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzb3VyY2UgPyB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZSA6ICJ0ZXh0L2ph
dmFzY3JpcHQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NvdXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcwppbmRleCA0YTQwMzIzMDgzZDQ5OWRmOGZkMmQwOTEx
Yjk1YmY5NTgzNjJkZTVjLi44Y2U3YjU4YTEzNDhhZjkzOTAxODM4ODZlZDg0OWYwNGQ2YWEzNmJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvU291cmNlQ29kZS5qcwpAQCAtMjUsMTAgKzI1LDEzIEBACiAKIFdJLlNvdXJjZUNvZGUg
PSBjbGFzcyBTb3VyY2VDb2RlIGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3Io
KQorICAgIGNvbnN0cnVjdG9yKHVybCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKKyAgICAg
ICAgdGhpcy5fdXJsID0gdXJsIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMg
PSBudWxsOworCiAgICAgICAgIHRoaXMuX29yaWdpbmFsUmV2aXNpb24gPSBuZXcgV0kuU291cmNl
Q29kZVJldmlzaW9uKHRoaXMpOwogICAgICAgICB0aGlzLl9jdXJyZW50UmV2aXNpb24gPSB0aGlz
Ll9vcmlnaW5hbFJldmlzaW9uOwogCkBAIC05OCw3ICsxMDEsMTQgQEAgV0kuU291cmNlQ29kZSA9
IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCB1cmwoKQogICAg
IHsKLSAgICAgICAgLy8gVG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICBy
ZXR1cm4gdGhpcy5fdXJsOworICAgIH0KKworICAgIGdldCB1cmxDb21wb25lbnRzKCkKKyAgICB7
CisgICAgICAgIGlmICghdGhpcy5fdXJsQ29tcG9uZW50cykKKyAgICAgICAgICAgIHRoaXMuX3Vy
bENvbXBvbmVudHMgPSBwYXJzZVVSTCh0aGlzLl91cmwpOworICAgICAgICByZXR1cm4gdGhpcy5f
dXJsQ29tcG9uZW50czsKICAgICB9CiAKICAgICBnZXQgY29udGVudElkZW50aWZpZXIoKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQnJv
d3Nlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvQnJvd3Nlck9ic2VydmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZmVmZDI5NmY0YTcwMDhlY2Iy
NWM3NTg3NWFiZDE1ZDNkZjhhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMKQEAgLTAsMCAr
MSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK1dJLkJyb3dzZXJPYnNlcnZlciA9IGNsYXNzIEJyb3dzZXJP
YnNlcnZlciBleHRlbmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgoreworICAgIC8vIEV2
ZW50cyBkZWZpbmVkIGJ5IHRoZSAiQnJvd3NlciIgZG9tYWluLgorCisgICAgZXh0ZW5zaW9uc0Vu
YWJsZWQoZXh0ZW5zaW9ucykKKyAgICB7CisgICAgICAgIFdJLmJyb3dzZXJNYW5hZ2VyLmV4dGVu
c2lvbnNFbmFibGVkKGV4dGVuc2lvbnMpOworICAgIH0KKworICAgIGV4dGVuc2lvbnNEaXNhYmxl
ZChleHRlbnNpb25JZHMpCisgICAgeworICAgICAgICBXSS5icm93c2VyTWFuYWdlci5leHRlbnNp
b25zRGlzYWJsZWQoZXh0ZW5zaW9uSWRzKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L011bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQuanMKaW5kZXggNzkzNzA5ZWJlNWQ5ODUyZTIzNDhl
YTQ5ZDViOTdlOGQ0N2E2OWY1OC4uNGZkZTE4ZTRiZjA4OGZhNDc4OTcwODFlY2Y4ZGYzNGNmZmUw
N2IyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0Lmpz
CkBAIC0yNCw5ICsyNCw2IEBACiAgKi8KIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHdoZW4gY29u
bmVjdGluZyB0byBhIHRhcmdldCB3aGljaCBtdWx0aXBsZXhlcyB0byBvdGhlciB0YXJnZXRzLgot
Ly8gVGhlIG1haW4gY29ubmVjdGlvbiBpcyB0byBhIHRhcmdldCB0aGF0LCBjdXJyZW50bHksIGhh
cyBvbmx5IGEgVGFyZ2V0IGFnZW50LgotLy8gQWxsIG90aGVyIFRhcmdldHMgd2lsbCBoYXZlIHRo
ZWlyIG1lc3NhZ2VzIGJlIG11bHRpcGxleGVkIHRocm91Z2ggdGhpcwotLy8gbWFpbiBjb25uZWN0
aW9uJ3MgVGFyZ2V0IGFnZW50LgogCiBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xh
c3MgTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewpAQCAtMzYs
MTggKzMzLDE2IEBAIFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgPSBjbGFzcyBNdWx0aXBs
ZXhpbmdCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiAgICAgICAgIGNvbnN0IHRhcmdl
dElkID0gIm11bHRpIjsKICAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0ku
VUlTdHJpbmcoIldlYiBQYWdlIiksIFdJLlRhcmdldFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9yQmFj
a2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXku
c2hhbGxvd0VxdWFsKE9iamVjdC5rZXlzKHRoaXMuX2FnZW50cyksIFsiVGFyZ2V0Il0pLCAiQSBX
ZWJQYWdlIHRhcmdldCBzaG91bGQgb25seSBoYXZlIGEgc2luZ2xlIGFnZW50LiIpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChBcnJheS5zaGFsbG93RXF1YWwoT2JqZWN0LmtleXModGhpcy5fYWdl
bnRzKSwgWyJCcm93c2VyIiwgIlRhcmdldCJdKSk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAK
ICAgICBpbml0aWFsaXplKCkKICAgICB7Ci0gICAgICAgIC8vIEludGVudGlvbmFsbHkgbm90IGNh
bGxpbmcgc3VwZXIuIE5vIGFnZW50cyBvdGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudC4KLQotICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IGRp
ZCBub3QgZXhpc3QgeWV0LgotICAgICAgICBpZiAodGhpcy5oYXNDb21tYW5kKCJUYXJnZXQuc2V0
UGF1c2VPblN0YXJ0IikpCi0gICAgICAgICAgICB0aGlzLlRhcmdldEFnZW50LnNldFBhdXNlT25T
dGFydCh0cnVlKTsKKyAgICAgICAgLy8gT25seSBpbml0aWFsaXplIHdpdGggdGhlIG1hbmFnZXJz
IHRoYXQgYXJlIGtub3duIHRvIHN1cHBvcnQgYSBtdWx0aXBsZXhpbmcgdGFyZ2V0LgorICAgICAg
ICBXSS5icm93c2VyTWFuYWdlci5pbml0aWFsaXplVGFyZ2V0KHRoaXMpOworICAgICAgICBXSS50
YXJnZXRNYW5hZ2VyLmluaXRpYWxpemVUYXJnZXQodGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJv
dGVjdGVkIChUYXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQuanMKaW5kZXggYzI2YTE5YTg4NWVhODkxNGFkNGZiZDg3
ZGNiYzRmMzc3NzBiNTk2YS4uOWRjYTJhYTI0NzVkZTc2YTFlMWYwOGFmZjJhMjdjNTliMGYyNTkw
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL1RhcmdldC5qcwpAQCAtMTMyLDYgKzEzMiw3IEBAIFdJLlRhcmdldCA9IGNsYXNzIFRh
cmdldCBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCBBbmltYXRpb25BZ2VudCgpIHsgcmV0dXJu
IHRoaXMuX2FnZW50cy5BbmltYXRpb247IH0KICAgICBnZXQgQXBwbGljYXRpb25DYWNoZUFnZW50
KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRzLkFwcGxpY2F0aW9uQ2FjaGU7IH0KICAgICBnZXQgQXVk
aXRBZ2VudCgpIHsgcmV0dXJuIHRoaXMuX2FnZW50cy5BdWRpdDsgfQorICAgIGdldCBCcm93c2Vy
QWdlbnQoKSB7IHJldHVybiB0aGlzLl9hZ2VudHMuQnJvd3NlcjsgfQogICAgIGdldCBDUFVQcm9m
aWxlckFnZW50KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRzLkNQVVByb2ZpbGVyOyB9CiAgICAgZ2V0
IENTU0FnZW50KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRzLkNTUzsgfQogICAgIGdldCBDYW52YXNB
Z2VudCgpIHsgcmV0dXJuIHRoaXMuX2FnZW50cy5DYW52YXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpp
bmRleCA5ZDIzNGIyMmQwYjJjMGFlNmY2MWYzYTg4OTZkYjBlMWViZDQ0MjFkLi5jN2I3YmMyZGFm
MzgzYzgzZWY4YjFhYmVjNTE4MjgzNTYzNmVjNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0x
MjEsNiArMTIxLDEyIEBAIFdJLlF1aWNrQ29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRl
bmRzIFdJLlZpZXcKICAgICAgICAgaWYgKGNvbnRleHQudHlwZSA9PT0gV0kuRXhlY3V0aW9uQ29u
dGV4dC5UeXBlLkludGVybmFsKQogICAgICAgICAgICAgcmV0dXJuIFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJbSW50ZXJuYWxdICIpICsgY29udGV4dC5uYW1lOwogCisgICAgICAgIGlmIChjb250ZXh0
LnR5cGUgPT09IFdJLkV4ZWN1dGlvbkNvbnRleHQuVHlwZS5Vc2VyKSB7CisgICAgICAgICAgICBs
ZXQgZXh0ZW5zaW9uTmFtZSA9IFdJLmJyb3dzZXJNYW5hZ2VyLmV4dGVuc2lvbk5hbWVGb3JFeGVj
dXRpb25Db250ZXh0KGNvbnRleHQpOworICAgICAgICAgICAgaWYgKGV4dGVuc2lvbk5hbWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlKGV4dGVuc2lvbk5hbWUsIG1heExlbmd0aCk7
CisgICAgICAgIH0KKwogICAgICAgICBsZXQgdGFyZ2V0ID0gY29udGV4dC50YXJnZXQ7CiAgICAg
ICAgIGlmICh0YXJnZXQudHlwZSA9PT0gV0kuVGFyZ2V0VHlwZS5Xb3JrZXIpCiAgICAgICAgICAg
ICByZXR1cm4gdHJ1bmNhdGUodGFyZ2V0LmRpc3BsYXlOYW1lLCBtYXhMZW5ndGgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBlNTZlNGQy
NTJlMWUxNTRhZTA2Y2QzN2I1Zjc2NmY5ODA3NzgwOTEzLi4zY2IzNWI2OGQzMTAyN2E3YmFkN2Fm
Mzk3OTZmMWEzNzgwZGFlOTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5qcwpAQCAtOTY1LDcgKzk2NSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXCiAKICAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVtZW50ID0gbnVsbDsKIAotICAgICAgICBp
ZiAoaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc3R5bGVTaGVldC51cmxDb21wb25lbnRzLnNjaGVt
ZSkpIHsKKyAgICAgICAgaWYgKFdJLmJyb3dzZXJNYW5hZ2VyLmlzRXh0ZW5zaW9uU2NoZW1lKHN0
eWxlU2hlZXQudXJsQ29tcG9uZW50cy5zY2hlbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMu
X2V4dGVuc2lvblN0eWxlU2hlZXRzRm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAg
dGhpcy5fZXh0ZW5zaW9uU3R5bGVTaGVldHNGb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBXSS5Gb2xk
ZXJUcmVlRWxlbWVudChXSS5VSVN0cmluZygiRXh0ZW5zaW9uIFN0eWxlIFNoZWV0cyIpLCBuZXcg
V0kuQ1NTU3R5bGVTaGVldENvbGxlY3Rpb24pOwogICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1l
bnQgPSB0aGlzLl9leHRlbnNpb25TdHlsZVNoZWV0c0ZvbGRlclRyZWVFbGVtZW50OwpAQCAtMTAy
MCw3ICsxMDIwLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBT
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGxldCBwYXJlbnRGb2xkZXJUcmVlRWxlbWVudCA9IG51bGw7CiAKLSAgICAg
ICAgICAgIGlmIChpc1dlYktpdEV4dGVuc2lvblNjaGVtZShzY3JpcHQudXJsQ29tcG9uZW50cy5z
Y2hlbWUpKSB7CisgICAgICAgICAgICBpZiAoV0kuYnJvd3Nlck1hbmFnZXIuaXNFeHRlbnNpb25T
Y2hlbWUoc2NyaXB0LnVybENvbXBvbmVudHMuc2NoZW1lKSkgewogICAgICAgICAgICAgICAgIGlm
ICghdGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGxldCBjb2xsZWN0aW9uID0gbmV3IFdJLlNjcmlwdENvbGxlY3Rpb247CiAgICAg
ICAgICAgICAgICAgICAgIHRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9
IG5ldyBXSS5Gb2xkZXJUcmVlRWxlbWVudChXSS5VSVN0cmluZygiRXh0ZW5zaW9uIFNjcmlwdHMi
KSwgY29sbGVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
IGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAppbmRleCA0ZGQ5OWEwOGIwNzZkMjE4ZTIy
NWM5NTc3NGNhZjU5OTA0MmE4YTIyLi4xMzJkNjE0N2IyYjQ3YWM3YTUxNTFmYjUyMmMwMmYyYTE2
MjA1M2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKQEAgLTU3LDYgKzU3LDcgQEAgc2V0KFdlYktpdF9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0dhbWVwYWQi
CiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0dQVSIKICAgICAiJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvSW5zcGVjdG9yIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvQWdlbnRzIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTmV0d29yayIKICAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggMzQ5ZTU0ZGMzMGM0NDk4MmJjZDgyZTA5ZTk0YmI2NmRlOTlkY2IxMS4uZDU1N2Y3Njhl
OTQ1ZGIyYTdjMzczYTI2Yzk4YTVlMWM3OGYwZDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtODEsNiArODEsNyBAQCBWUEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vz
cy9Eb3dubG9hZHMgXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0dQVSBcCiAgICAgJChXZWJL
aXQyKS9VSVByb2Nlc3MvSW5zcGVjdG9yIFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9JbnNw
ZWN0b3IvQWdlbnRzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbSBcCiAg
ICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yayBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvTmV0d29yay9DdXN0b21Qcm90b2NvbHMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXgg
YmU4NmY3M2I3ZTljYzAwMTZiMTg4NjJhZjgwMTgyZWQ3ZTM4MTRhNS4uZWI3ZjQ5MTViNWE2NTE0
ZWVkYWI2YTNkMDZkYzlmY2NiMmZiMjY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01
NSw2ICs1NSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJ
RVMKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EiCiAg
ICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0NvY29hIgogICAgICIke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0luc3BlY3Rvci9Db2NvYSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvSW5zcGVj
dG9yL21hYyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjIgogICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRl
eCA1MzEwOTIwM2NhMjJjYjVmNWRiOTM1MWY5YzIzNmUwNTNhYjFlMDA5Li5iMzRlYjA5M2NkYTdk
N2ZjMTRmNjhlYzdiNzQxNzA3ZGY5OGFlNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Nv
dXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTQyNiw2ICs0MjYs
OCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViUGFnZURlYnVnZ2FibGUuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAogCitVSVByb2Nlc3MvSW5zcGVjdG9yL0Fn
ZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCisKIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNz
L05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uLmNwcAogVUlQcm9jZXNzL05vdGlmaWNhdGlv
bnMvV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IGVhYTBkODRmYTVjZmE3NDBkMjdiNzhiOTA3ZWM5NTY5OTMxY2IwZGMuLjI0MjEyMTE5MTQ1
MGI1NzMyYmJhZGM3MzUzNzhjNzgwY2RkNmI0MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAg
LTQwMCw2ICs0MDAsOCBAQCBVSVByb2Nlc3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRl
ckNvY29hLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0K
IFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9VSUdhbWVwYWRQcm92aWRlck1hYy5tbQogCitVSVByb2Nl
c3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckNsaWVudC5tbQorCiBVSVByb2Nlc3MvSW5zcGVj
dG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
aW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMTQxMjNiMjU2MWM2Y2U2Zjk5NWZlMjJjM2EzNjBiYmJkZTQ4YjkyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oCkBA
IC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK30K
KworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEluc3BlY3RvckNsaWVudCB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQ2xpZW50
KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaEluc3BlY3RvcihXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGJyb3dzZXJE
b21haW5EaXNhYmxlZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9y
UHJveHkmKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCA1NDUxMzAzNWIyNjFiZmQ1ZTE4N2VjOTQ1Nzk2
MTk4ZWQwOWQ4OGIxLi5kOTIyYmUwYjFmN2UzY2ZhNTYyY2NmOWQ0Mjg4ZDY0MmY5ZTVjZmZhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaApAQCAtMTk5LDggKzE5
OSw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAgIHZpcnR1YWwgdm9pZCBy
dW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViQXV0aGVu
dGljYXRpb25QYW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6V2ViQXV0aGVudGlj
YXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRs
ZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpVbmF2YWlsYWJsZSk7IH0K
ICNlbmRpZgotCi0gICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaEluc3BlY3RvcihXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggOWI4MGQ1YmVhMTc3YjhkYWIzNTMxODU5
Y2FmODJhMTU2Yzc0YjlhNi4uMjVmNDZlYzQwNjM5NmY4N2ZlYWY2YWVjMzQ1MjVkNzAxMGQ4MDg1
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxl
Z2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tV
SURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiBAY2xhc3MgX1dLQWN0aXZhdGVk
RWxlbWVudEluZm87CiBAY2xhc3MgX1dLRWxlbWVudEFjdGlvbjsKIEBjbGFzcyBfV0tGcmFtZUhh
bmRsZTsKLUBjbGFzcyBfV0tJbnNwZWN0b3I7CiAKICNpZiBUQVJHRVRfT1NfSU9TCiBAY2xhc3Mg
VUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb247CkBAIC0yMzgsMTEgKzIzNyw2IEBAIHN0cnVjdCBV
SUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGdldENv
bnRleHRNZW51RnJvbVByb3Bvc2VkTWVudTooTlNNZW51ICopbWVudSBmb3JFbGVtZW50OihfV0tD
b250ZXh0TWVudUVsZW1lbnRJbmZvICopZWxlbWVudCB1c2VySW5mbzooaWQgPE5TU2VjdXJlQ29k
aW5nPil1c2VySW5mbyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNNZW51ICopKWNvbXBs
ZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQpKTsKIC0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUGVyZm9ybURyYWdPcGVyYXRpb246KEJPT0wp
aGFuZGxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpKTsKIAotLyohIEBhYnN0cmFj
dCBDYWxsZWQgd2hlbiBhIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgaXMgYXR0YWNoZWQgdG8gdGhp
cyBXS1dlYlZpZXcuIFRoaXMgaXMgbm90IGNhbGxlZCBpbiB0aGUgY2FzZSBvZiByZW1vdGUgaW5z
cGVjdGlvbi4KLSAgICBAcGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNl
IGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LgotKi8KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0
b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7Ci0KICNlbmRpZiAvLyAhVEFS
R0VUX09TX0lQSE9ORQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQppbmRleCA5N2FlNDZiN2NkNWZiMjA0YzU4MTQ3OTVjZTc0ZTA4MWI3
ZjlkYmMzLi4yZDcwODViYTgzZDkzZGZiNTQyY2RmNjlhNTdmY2M3NTY4OGZjYWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTM2LDYg
KzM2LDcgQEAKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKICNpbXBvcnQgIkdsb2JhbEZp
bmRJblBhZ2VTdGF0ZS5oIgogI2ltcG9ydCAiSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2Rpbmcu
aCIKICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCkBAIC05
OCw2ICs5OSw3IEBACiAjaW1wb3J0ICJfV0tGdWxsc2NyZWVuRGVsZWdhdGUuaCIKICNpbXBvcnQg
Il9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5wdXREZWxlZ2F0ZS5o
IgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0luc3BlY3Rv
ckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tTZXNzaW9uU3RhdGVJbnRlcm5hbC5oIgpAQCAtMzg2LDYgKzM4OCw4IEBA
IC0gKHZvaWQpX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24KICAgICBfaWNvbkxvYWRpbmdEZWxlZ2F0ZSA9IG1ha2VVbmlx
dWU8V2ViS2l0OjpJY29uTG9hZGluZ0RlbGVnYXRlPihzZWxmKTsKICAgICBfcmVzb3VyY2VMb2Fk
RGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdhdGU+KHNlbGYp
OwogCisgICAgX3BhZ2UtPnNldEluc3BlY3RvckNsaWVudChtYWtlVW5pcXVlPFdlYktpdDo6SW5z
cGVjdG9yQ2xpZW50PihzZWxmKSk7CisKICAgICBbc2VsZiBfc2V0VXBTUUxpdGVEYXRhYmFzZVRy
YWNrZXJDbGllbnRdOwogCiAgICAgZm9yIChhdXRvJiBwYWlyIDogcGFnZUNvbmZpZ3VyYXRpb24t
PnVybFNjaGVtZUhhbmRsZXJzKCkpCkBAIC0xNTQzLDYgKzE1NDcsMTYgQEAgLSAoX1dLSW5zcGVj
dG9yICopX2luc3BlY3RvcgogICAgIHJldHVybiBuaWw7CiB9CiAKKy0gKGlkIDxfV0tJbnNwZWN0
b3JEZWxlZ2F0ZT4pX2luc3BlY3RvckRlbGVnYXRlCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50Jj4oX3BhZ2UtPmluc3BlY3RvckNsaWVudCgpKS5kZWxl
Z2F0ZSgpLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpX3NldEluc3BlY3RvckRlbGVnYXRl
OihpZDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4paW5zcGVjdG9yRGVsZWdhdGUKK3sKKyAgICBzdGF0
aWNfY2FzdDxXZWJLaXQ6Okluc3BlY3RvckNsaWVudCY+KF9wYWdlLT5pbnNwZWN0b3JDbGllbnQo
KSkuc2V0RGVsZWdhdGUoaW5zcGVjdG9yRGVsZWdhdGUpOworfQorCiAtIChfV0tGcmFtZUhhbmRs
ZSAqKV9tYWluRnJhbWUKIHsKICAgICBpZiAoYXV0byogZnJhbWUgPSBfcGFnZS0+bWFpbkZyYW1l
KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAppbmRleCAxOTJhNTdjMDg4MTUyNjRiYzY4MDYzNzkzYmI3M2Q2ZDVkNTI0M2E2
Li4wNDJiMzQ4NWJjZGQ2ZDA5NGFkYWViN2RiOGZiODZiYTMwZjJmMjlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAg
LTEyNiw2ICsxMjYsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVk
Z2UpIHsKIEBwcm90b2NvbCBfV0tGdWxsc2NyZWVuRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLSWNv
bkxvYWRpbmdEZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tJbnB1dERlbGVnYXRlOworQHByb3RvY29s
IF9XS0luc3BlY3RvckRlbGVnYXRlOwogQHByb3RvY29sIF9XS1Jlc291cmNlTG9hZERlbGVnYXRl
OwogQHByb3RvY29sIF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKIApAQCAtMTc1LDYgKzE3
Niw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQHBy
b3BlcnR5IChub25hdG9taWMsIHNldHRlcj1fc2V0QWxsb3dzUmVtb3RlSW5zcGVjdGlvbjopIEJP
T0wgX2FsbG93c1JlbW90ZUluc3BlY3Rpb247CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSwg
c2V0dGVyPV9zZXRSZW1vdGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlOikgTlNTdHJpbmcgKl9yZW1v
dGVJbnNwZWN0aW9uTmFtZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBp
b3MoMTAuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tJbnNwZWN0b3Ig
Kl9pbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsK
K0Bwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEluc3BlY3RvckRlbGVnYXRl
OikgaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBfaW5zcGVjdG9yRGVsZWdhdGUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQHByb3BlcnR5
IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tGcmFtZUhhbmRsZSAqX21haW5GcmFtZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogCiBAcHJvcGVydHkgKG5vbmF0
b21pYywgd2Vhaywgc2V0dGVyPV9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6KSBpZCA8X1dL
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPiBfdGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIFdLX0FQ
SV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQppbmRleCBh
ZmNkYTA2NTBmOGE5MjdiMzM0MGFjNmFhZWE3ZmIwZmQ2MWZiNjQ0Li5jOTE0NjQ1NWJhZmQ2OWVk
MjQwOWM2YjFjMTc0NzhkMDg5ZDdkNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KQEAgLTMxLDcgKzMxLDEwIEBACiAjaW1wb3J0
ICJXZWJQcm9jZXNzUHJveHkuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFuZGxlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVJZGVudGlmaWVyLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgorI2ltcG9ydCA8d3RmL0hhc2hTZXQuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBAaW1wbGVtZW50YXRpb24gX1dLSW5z
cGVjdG9yCiAKQEAgLTE1MCw2ICsxNTMsMjUgQEAgLSAodm9pZClfc2V0RGlhZ25vc3RpY0xvZ2dp
bmdEZWxlZ2F0ZTooaWQ8X1dLRGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZT4pZGVsZWdhdGUKICAg
ICBfaW5zcGVjdG9yLT5zZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZSghIWRlbGVnYXRlKTsK
IH0KIAorLSAodm9pZClfYnJvd3NlckV4dGVuc2lvbnNFbmFibGVkOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTlNTdHJpbmcgKj4gKilleHRlbnNpb25JRFRvTmFtZQoreworICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IHRyYW5zZm9ybWVkOworICAgIHRyYW5zZm9ybWVkLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoW2V4dGVuc2lvbklEVG9OYW1lIGNvdW50XSk7CisgICAgW2V4dGVuc2lvbklE
VG9OYW1lIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpbJl0oTlNTdHJpbmcgKmV4
dGVuc2lvbklELCBOU1N0cmluZyAqZXh0ZW5zaW9uTmFtZSwgQk9PTCAqKSB7CisgICAgICAgIHRy
YW5zZm9ybWVkLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uTmFtZSk7CisgICAgfV07CisgICAg
X2luc3BlY3Rvci0+YnJvd3NlckV4dGVuc2lvbnNFbmFibGVkKFdURk1vdmUodHJhbnNmb3JtZWQp
KTsKK30KKworLSAodm9pZClfYnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZDooTlNTZXQ8TlNTdHJp
bmcgKj4gKilleHRlbnNpb25JRHMKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gdHJhbnNmb3JtZWQ7
CisgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShbZXh0ZW5zaW9uSURzIGNv
dW50XSk7CisgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9uSURzKQor
ICAgICAgICB0cmFuc2Zvcm1lZC5hZGRWb2lkKGV4dGVuc2lvbklEKTsKKyAgICBfaW5zcGVjdG9y
LT5icm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKFdURk1vdmUodHJhbnNmb3JtZWQpKTsKK30KKwog
Ly8gTUFSSzogX1dLSW5zcGVjdG9ySW50ZXJuYWwgbWV0aG9kcwogCiAtIChBUEk6Ok9iamVjdCYp
X2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMGI3ZGMwNzY4NWI1ZTEzZTdh
NDc1ZWNhOWYzZTM1MzBmOTZmMmY3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmgKQEAgLTAsMCArMSwzOSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9y
dCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIF9X
S0luc3BlY3RvcjsKKworQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlIDxOU09iamVjdD4K
K0BvcHRpb25hbAorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0
dGFjaEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yOworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3Rvcjoo
X1dLSW5zcGVjdG9yICopaW5zcGVjdG9yOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAq
KWluc3BlY3RvcjsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0luc3BlY3RvclByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlLmgKaW5kZXggYzBkOTg0OTA3OThhNmNhYzUy
NWJlNmNkYmM4YzM4YjRjNDFiYmI2My4uZTIwMmFmMDdhNWM3MDNiM2E2YjRkYThkMzU0Y2U2Mjc0
Mjc1NGFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yUHJpdmF0ZS5oCkBAIC0zMSw0ICszMSw4IEBACiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KSBp
ZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPiBfZGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0
ZTsKIAorLy8gQnJvd3NlcgorLSAodm9pZClfYnJvd3NlckV4dGVuc2lvbnNFbmFibGVkOihOU0Rp
Y3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilleHRlbnNpb25JRFRvTmFtZTsKKy0g
KHZvaWQpX2Jyb3dzZXJFeHRlbnNpb25zRGlzYWJsZWQ6KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0
ZW5zaW9uSURzOworCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLmgKaW5kZXggYTM1OTNhZGY0NGI4ZDM0YTdjNDYxYzZiMjkzMzJiYTk2ZjY3OTkyYi4uZTBk
NDdjODM3ZjhhMGVmYzJkZmEzZmZkOWFjYjllNDhmYTk0NWQ2YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaApAQCAtMTI0LDcgKzEyNCw2IEBAIHByaXZhdGU6
CiAgICAgICAgIGJvb2wgcnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkq
LCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJz
KiwgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lk
IGRpZEV4Y2VlZEJhY2tncm91bmRSZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFn
ZVByb3h5JiwgV0tSZXNvdXJjZUxpbWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZlRGF0YVRv
RmlsZUluRG93bmxvYWRzRm9sZGVyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwg
Y29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsKLSAgICAg
ICAgdm9pZCBkaWRBdHRhY2hJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJv
eHkmKSBmaW5hbDsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAg
ICAgIHZvaWQgc2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJL
aXQ6OldlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC0xOTks
NyArMTk4LDYgQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCB3ZWJWaWV3U2F2ZURhdGFUb0ZpbGVT
dWdnZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgOiAxOwogICAgICAgICBib29s
IHdlYlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0
aW9uSGFuZGxlciA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwotICAgICAgICBi
b29sIHdlYlZpZXdEaWRBdHRhY2hJbnNwZWN0b3IgOiAxOwogI2VuZGlmCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKICAgICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkQWxsb3dEZXZpY2VP
cmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJhbWVEZWNpc2lvbkhhbmRsZXIg
OiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXgg
YTNkMGRlZDZkZjA1NjZjYjc0NDkzZjk4ZWMyOGJjZTBlOGQ4OTNiMy4uZTVmYjY5ZDFlYjYwMjhk
OWNjMDE5Y2U0YWMzMTQ0NWNiMDEzNzU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLm1tCkBAIC00NywxMyArNDcsMTEgQEAKICNpbXBvcnQgIldLV2ViVmll
d0ludGVybmFsLmgiCiAjaW1wb3J0ICJXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCIKICNpbXBv
cnQgIldlYkV2ZW50RmFjdG9yeS5oIgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNp
bXBvcnQgIldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkuaCIKICNpbXBvcnQgIldlYlBy
b2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2lt
cG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3Vs
dEludGVybmFsLmgiCi0jaW1wb3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAi
X1dLV2ViQXV0aGVudGljYXRpb25QYW5lbEludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0Zv
bnRBdHRyaWJ1dGVzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpA
QCAtMTMzLDcgKzEzMSw2IEBAIHZvaWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlE
ZWxlZ2F0ZT4gZGVsZWdhdGUpCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRh
VG9GaWxlU3VnZ2VzdGVkRmlsZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRl
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3Vn
Z2VzdGVkRmlsZW5hbWU6bWltZVR5cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1J1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFt
ZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNv
bXBsZXRpb25IYW5kbGVyOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0
Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5v
dGlmaWNhdGlvblBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07
Ci0gICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFjaEluc3BlY3RvciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEF0dGFjaEluc3Bl
Y3RvcjopXTsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgbV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRh
dGlvbkFuZE1vdGlvbkFjY2Vzc1JlcXVlc3RlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOildOwpA
QCAtODQ4LDE4ICs4NDUsNiBAQCBib29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFu
ZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcgogCiAgICAgcmV0dXJu
IHRydWU7CiB9Ci0KLXZvaWQgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEF0dGFjaEluc3BlY3Rv
cihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmIGluc3Bl
Y3RvcikKLXsKLSAgICBpZiAoIW1fdWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGlkQXR0YWNoSW5zcGVjdG9yKQotICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGRlbGVnYXRl
ID0gbV91aURlbGVnYXRlLm1fZGVsZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgWyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUg
X3dlYlZpZXc6bV91aURlbGVnYXRlLm1fd2ViVmlldyBkaWRBdHRhY2hJbnNwZWN0b3I6d3JhcHBl
cihpbnNwZWN0b3IpXTsKLX0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMv
SW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3Bl
Y3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMTY1Y2Rl
ZTIwYjA4MTA4OTg0MDU1ZWVjMDQxZjRhNWQwMTFiNDNiCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdl
bnQuY3BwCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckJyb3dzZXJBZ2VudC5oIgorCisjaW5jbHVkZSAiQVBJSW5z
cGVjdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6
SW5zcGVjdG9yQnJvd3NlckFnZW50KFdlYlBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAg
OiBJbnNwZWN0b3JBZ2VudEJhc2UoIkJyb3dzZXIiX3MsIGNvbnRleHQpCisgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3Rvcjo6QnJvd3NlckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3Rvcjo6QnJvd3NlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNr
ZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNw
ZWN0ZWRQYWdlKQoreworfQorCitJbnNwZWN0b3JCcm93c2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93
c2VyQWdlbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50OjpkaWRD
cmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3Bl
Y3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQoreworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0
UmVhc29uKQoreworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgZGlzYWJsZShpZ25vcmVk
KTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCit7CisgICAgaWYgKG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgpID09IHRoaXMpIHsKKyAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiQnJvd3NlciBkb21haW4gYWxyZWFkeSBlbmFibGVkIl9zOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xs
ZXIoKS5zZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KHRoaXMpOworCisgICAgYXV0byog
aW5zcGVjdG9yID0gbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvcigpOworICAgIEFTU0VSVChpbnNw
ZWN0b3IpOworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDbGllbnQoKS5icm93c2VyRG9t
YWluRW5hYmxlZChtX2luc3BlY3RlZFBhZ2UsICppbnNwZWN0b3IpOworfQorCit2b2lkIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCit7Cisg
ICAgaWYgKG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3Bl
Y3RvckJyb3dzZXJBZ2VudCgpICE9IHRoaXMpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJv
d3NlciBkb21haW4gYWxyZWFkeSBkaXNhYmxlZCJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0RW5hYmxlZElu
c3BlY3RvckJyb3dzZXJBZ2VudChudWxscHRyKTsKKworICAgIGF1dG8qIGluc3BlY3RvciA9IG1f
aW5zcGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKKyAgICBBU1NFUlQoaW5zcGVjdG9yKTsKKyAgICBt
X2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFpbkRpc2FibGVkKG1f
aW5zcGVjdGVkUGFnZSwgKmluc3BlY3Rvcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFn
ZW50OjpleHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmIGV4dGVuc2lv
bklEVG9OYW1lKQoreworICAgIEFTU0VSVChlbmFibGVkKCkpOworCisgICAgYXV0byBleHRlbnNp
b25zUGF5bG9hZCA9IEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6QnJvd3Nlcjo6
RXh0ZW5zaW9uPjo6Y3JlYXRlKCk7CisgICAgZm9yIChhdXRvJiBbaWQsIG5hbWVdIDogZXh0ZW5z
aW9uSURUb05hbWUpIHsKKyAgICAgICAgYXV0byBleHRlbnNpb25QYXlsb2FkID0gSW5zcGVjdG9y
OjpQcm90b2NvbDo6QnJvd3Nlcjo6RXh0ZW5zaW9uOjpjcmVhdGUoKQorICAgICAgICAgICAgLnNl
dEV4dGVuc2lvbklkKGlkKQorICAgICAgICAgICAgLnNldE5hbWUobmFtZSkKKyAgICAgICAgICAg
IC5yZWxlYXNlKCk7CisgICAgICAgIGV4dGVuc2lvbnNQYXlsb2FkLT5hZGRJdGVtKFdURk1vdmUo
ZXh0ZW5zaW9uUGF5bG9hZCkpOworICAgIH0KKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXh0
ZW5zaW9uc0VuYWJsZWQoV1RGTW92ZShleHRlbnNpb25zUGF5bG9hZCkpOworfQorCit2b2lkIElu
c3BlY3RvckJyb3dzZXJBZ2VudDo6ZXh0ZW5zaW9uc0Rpc2FibGVkKEhhc2hTZXQ8U3RyaW5nPiYm
IGV4dGVuc2lvbklEcykKK3sKKyAgICBBU1NFUlQoZW5hYmxlZCgpKTsKKworICAgIGF1dG8gZXh0
ZW5zaW9uSWRzUGF5bG9hZCA9IEpTT046OkFycmF5T2Y8U3RyaW5nPjo6Y3JlYXRlKCk7CisgICAg
Zm9yIChhdXRvJiBleHRlbnNpb25JZCA6IGV4dGVuc2lvbklEcykKKyAgICAgICAgZXh0ZW5zaW9u
SWRzUGF5bG9hZC0+YWRkSXRlbShleHRlbnNpb25JZCk7CisgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPmV4dGVuc2lvbnNEaXNhYmxlZChXVEZNb3ZlKGV4dGVuc2lvbklkc1BheWxvYWQpKTsKK30K
KworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMjExMGQxNTZiOGU1ZGI5ZTM0MGQwNjA2OWFjODI1YWY3MjY3ZDkyCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50
cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJQYWdlUHJveHk7Cit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3MgSW5zcGVj
dG9yQnJvd3NlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6QnJvd3NlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQnJvd3NlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBJbnNwZWN0b3JCcm93c2VyQWdlbnQoV2ViUGFnZUFn
ZW50Q29udGV4dCYpOworICAgIH5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSBvdmVycmlkZTsKKwor
ICAgIC8vIEluc3BlY3RvckFnZW50QmFzZQorICAgIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRC
YWNrZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXIqLCBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CisgICAgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZChJbnNwZWN0b3I6OkRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworCisgICAgLy8gQnJvd3Nl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgorICAgIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikg
b3ZlcnJpZGU7CisgICAgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CisKKyAg
ICB2b2lkIGV4dGVuc2lvbnNFbmFibGVkKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYpOworICAg
IHZvaWQgZXh0ZW5zaW9uc0Rpc2FibGVkKEhhc2hTZXQ8U3RyaW5nPiYmKTsKKworcHJpdmF0ZToK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpCcm93c2VyRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpCcm93c2VyQmFj
a2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CisgICAgV2ViUGFnZVByb3h5JiBt
X2luc3BlY3RlZFBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yQ2xp
ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOWU1NDYxZDgyYmRkMWQzNmE5ZGZlZjFjNWJmMjE1ZDI2ZDc2NTVi
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9D
b2NvYS9JbnNwZWN0b3JDbGllbnQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNsaWVudC5oIgorI2ltcG9ydCAiV0tG
b3VuZGF0aW9uLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4KKworQGNsYXNzIFdLV2Vi
VmlldzsKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZTsKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYkluc3BlY3RvclByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5OworCitj
bGFzcyBJbnNwZWN0b3JDbGllbnQgZmluYWwgOiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JDbGllbnQg
eworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IElu
c3BlY3RvckNsaWVudChXS1dlYlZpZXcgKik7CisKKyAgICBSZXRhaW5QdHI8aWQgPF9XS0luc3Bl
Y3RvckRlbGVnYXRlPj4gZGVsZWdhdGUoKTsKKyAgICB2b2lkIHNldERlbGVnYXRlKGlkIDxfV0tJ
bnNwZWN0b3JEZWxlZ2F0ZT4pOworCitwcml2YXRlOgorICAgIC8vIEFQSTo6SW5zcGVjdG9yQ2xp
ZW50CisgICAgdm9pZCBkaWRBdHRhY2hJbnNwZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVj
dG9yUHJveHkmKSBvdmVycmlkZTsKKyAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYlBh
Z2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBicm93c2Vy
RG9tYWluRGlzYWJsZWQoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBvdmVycmlk
ZTsKKworICAgIFdLV2ViVmlldyAqbV93ZWJWaWV3OworICAgIFdlYWtPYmpDUHRyPGlkIDxfV0tJ
bnNwZWN0b3JEZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3QgeworICAgICAgICB1
bnNpZ25lZCB3ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yIDogMTsKKyAgICAgICAgdW5zaWduZWQg
d2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yIDogMTsKKyAgICAgICAgdW5z
aWduZWQgd2ViVmlld0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvciA6IDE7CisgICAg
fSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yQ2xpZW50Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckNsaWVudC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45OTM2MDE0NTZhNjk4ODY2MjE0NDYwOTNlYWIzYWQ0YjBiMmI4ODFiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckNsaWVudC5tbQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJJbnNwZWN0b3JDbGllbnQuaCIKKworI2ltcG9ydCAiV2Vi
SW5zcGVjdG9yUHJveHkuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3RvckNsaWVudChX
S1dlYlZpZXcgKndlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKK3sKK30KKworUmV0
YWluUHRyPGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4+IEluc3BlY3RvckNsaWVudDo6ZGVsZWdh
dGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlLmdldCgpOworfQorCit2b2lkIEluc3BlY3Rv
ckNsaWVudDo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxlZ2F0ZSkK
K3sKKyAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9yOildOworICAgIG1fZGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdCcm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvciA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmJyb3dzZXJEb21haW5FbmFi
bGVkRm9ySW5zcGVjdG9yOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdCcm93c2Vy
RG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9y
OkBzZWxlY3Rvcihfd2ViVmlldzpicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3I6KV07
Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IoV2ViUGFnZVBy
b3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAobV9kZWxlZ2F0
ZU1ldGhvZHMud2Vidmlld0RpZEF0dGFjaEluc3BlY3RvcikKKyAgICAgICAgW21fZGVsZWdhdGUg
X3dlYlZpZXc6bV93ZWJWaWV3IGRpZEF0dGFjaEluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3Rvcild
OworfQorCit2b2lkIEluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAobV9kZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yKQorICAg
ICAgICBbbV9kZWxlZ2F0ZSBfd2ViVmlldzptX3dlYlZpZXcgYnJvd3NlckRvbWFpbkVuYWJsZWRG
b3JJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKK30KKwordm9pZCBJbnNwZWN0b3JDbGll
bnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94
eSYgaW5zcGVjdG9yKQoreworICAgIGlmIChtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJvd3Nl
ckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yKQorICAgICAgICBbbV9kZWxlZ2F0ZSBfd2ViVmll
dzptX3dlYlZpZXcgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yOndyYXBwZXIoaW5z
cGVjdG9yKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKaW5kZXgg
MjNkNzA1ZTgzZTcwNmVhODM3NGFiYmU4NGU4MTVkZDdiNjNiYmE1YS4uNDQ1MjI0NjU3OWI2MjAx
MGFhZTI2Y2EzZmM5NTMzZWU4ZjQ0ZGVmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0yNyw5ICsyNywx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3RvclByb3h5Lmgi
CiAKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0
aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVk
ZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKICNp
bmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHku
aCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVzc2FnZXMuaCIK
QEAgLTQ2LDcgKzQ4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRpbWVNZWRpYVNv
dXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKEdUSykKICNpbmNs
dWRlICJXZWJJbnNwZWN0b3JQcm94eUNsaWVudC5oIgpAQCAtNDQ2LDcgKzQ1MSw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJvb2wgY2FuQXR0
YWNoLCBib29sIHVuZGVyVGVzCiAgICAgfQogCiAgICAgLy8gTm90aWZ5IFdlYktpdCBjbGllbnQg
d2hlbiBhIGxvY2FsIGluc3BlY3RvciBhdHRhY2hlcyBzbyB0aGF0IGl0IG1heSBpbnN0YWxsIGRl
bGVnYXRlcyBwcmlvciB0byB0aGUgX1dLSW5zcGVjdG9yIGxvYWRpbmcgaXRzIGZyb250ZW5kLgot
ICAgIG1faW5zcGVjdGVkUGFnZS0+dWlDbGllbnQoKS5kaWRBdHRhY2hJbnNwZWN0b3IoKm1faW5z
cGVjdGVkUGFnZSwgKnRoaXMpOworICAgIG1faW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ2xpZW50
KCkuZGlkQXR0YWNoSW5zcGVjdG9yKCptX2luc3BlY3RlZFBhZ2UsICp0aGlzKTsKIAogICAgIC8v
IEJhaWwgb3V0IGlmIHRoZSBjbGllbnQgY2xvc2VkIHRoZSBpbnNwZWN0b3IgZnJvbSB0aGUgZGVs
ZWdhdGUgbWV0aG9kLgogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQpAQCAtNjE5LDYgKzYyNCwx
OCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJs
ZShib29sIGF2YWlsYWJsZSkKICNlbmRpZgogfQogCit2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpi
cm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBleHRlbnNp
b25JRFRvTmFtZSkKK3sKKyAgICBpZiAoYXV0byogYnJvd3NlckFnZW50ID0gbV9pbnNwZWN0ZWRQ
YWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgp
KQorICAgICAgICBicm93c2VyQWdlbnQtPmV4dGVuc2lvbnNFbmFibGVkKFdURk1vdmUoZXh0ZW5z
aW9uSURUb05hbWUpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJvd3NlckV4dGVu
c2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4mJiBleHRlbnNpb25JRHMpCit7CisgICAgaWYg
KGF1dG8qIGJyb3dzZXJBZ2VudCA9IG1faW5zcGVjdGVkUGFnZS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLmVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQoKSkKKyAgICAgICAgYnJvd3NlckFnZW50
LT5leHRlbnNpb25zRGlzYWJsZWQoV1RGTW92ZShleHRlbnNpb25JRHMpKTsKK30KKwogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVBcykKIHsKICAg
ICBwbGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVuY29kZWQsIGZvcmNlU2F2
ZUFzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJ
bnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKaW5kZXggMmIxZmRmY2ExZGZiOGU1YzU1ZmNjZDgwMTZmNDIxZjcxNDE2
M2NjYi4uYmJiNmY1NzNlZWIxODM1YzYzOGFmMzI1OTU0NDUxNjY0YTgxZGY1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5
LmgKQEAgLTE2Miw2ICsxNjIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREaWFnbm9zdGlj
TG9nZ2luZ0F2YWlsYWJsZShib29sKTsKIAorICAgIC8vIEJyb3dzZXIKKyAgICB2b2lkIGJyb3dz
ZXJFeHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmKTsKKyAgICB2b2lk
IGJyb3dzZXJFeHRlbnNpb25zRGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYpOworCiAgICAgLy8g
UHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJveHkgaW1wbGVtZW50YXRpb25zLgog
ICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcg
aW5zcGVjdG9yVGVzdFBhZ2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjc2OWRlMTcyNzllNmI0NmRjNjQzNWUxZWZiM2NiMWQ3MjA4MzZmODgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3Rv
ckFnZW50QmFzZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNz
IEJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKKy8vIEZJWE1FOiBtb3ZlIHRoaXMg
dG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2VudHMgbW92ZS4KK3N0cnVj
dCBXZWJQYWdlQWdlbnRDb250ZXh0IHsKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyJiBm
cm9udGVuZFJvdXRlcjsKKyAgICBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5k
RGlzcGF0Y2hlcjsKKyAgICBXZWJQYWdlUHJveHkmIGluc3BlY3RlZFBhZ2U7Cit9OworCitjbGFz
cyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJh
c2UgeworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5h
bWUsIFdlYlBhZ2VBZ2VudENvbnRleHQmKQorICAgICAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9y
QWdlbnRCYXNlKG5hbWUpCisgICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWVlMjhiZjcxNjM3NDM3MTQz
MzIxNTE0OGFhMjBhNTE5MjdhOGEzMy4uMTg2MWNmZjgwNjEzMTE5NmVhNDliNGY4YWNhNjY2NWJl
ZWJiZjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yNiw4ICsyNiwx
MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKICNpbmNsdWRl
ICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNp
bmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUlu
c3BlY3RvclRhcmdldC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgpAQCAtNDcsMTQgKzQ5LDEyIEBAIHN0
YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0SUQoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zp
c2lvbmFsUGFnZSkKIH0KIAogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQot
ICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgOiBt
X2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2Vu
ZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNv
cHlSZWYoKSkpCisgICAgLCBtX3BhZ2UocGFnZSkKIHsKICAgICBhdXRvIHRhcmdldEFnZW50ID0g
bWFrZVVuaXF1ZTxJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwg
bV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Ci0KICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0
QWdlbnQuZ2V0KCk7Ci0KICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZSh0YXJnZXRBZ2VudCkp
OwogfQogCkBAIC03OCw2ICs3OCw4IEBAIGJvb2wgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6
Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmIGZyb250ZW5k
Q2hhbm5lbCwgYm9vbCwgYm9vbCkKIHsKKyAgICBjcmVhdGVMYXp5QWdlbnRzKCk7CisKICAgICBi
b29sIGNvbm5lY3RpbmdGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250
ZW5kcygpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5k
Q2hhbm5lbCk7CkBAIC0yMTIsNiArMjE0LDI3IEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllCiAg
ICAgbV90YXJnZXRzLnNldChuZXdUYXJnZXQtPmlkZW50aWZpZXIoKSwgV1RGTW92ZShuZXdUYXJn
ZXQpKTsKIH0KIAorV2ViUGFnZUFnZW50Q29udGV4dCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
cjo6d2ViUGFnZUFnZW50Q29udGV4dCgpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9mcm9u
dGVuZFJvdXRlci5nZXQoKSwKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSwKKyAg
ICAgICAgbV9wYWdlLAorICAgIH07Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQoreworICAgIGlmIChtX2RpZENyZWF0ZUxhenlBZ2VudHMp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyA9IHRydWU7CisK
KyAgICBhdXRvIHdlYlBhZ2VDb250ZXh0ID0gd2ViUGFnZUFnZW50Q29udGV4dCgpOworCisgICAg
bV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQnJvd3NlckFnZW50Pih3ZWJQYWdl
Q29udGV4dCkpOworfQorCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjphZGRUYXJn
ZXQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclRhcmdldFByb3h5PiYmIHRhcmdldCkKIHsKICAg
ICBtX3RhcmdldEFnZW50LT50YXJnZXRDcmVhdGVkKCp0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNv
bnRyb2xsZXIuaAppbmRleCA3OGNhZWRmMGMwY2U4MzY3NTU2OTUwMmQxNTBmY2M0NGU1Zjk4Njhj
Li45Y2U1ZWYzNmI2NTJmZDU2YTg0M2MxZDEyYTRjM2MzY2Y2MzkyODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsOSBAQCBjbGFzcyBGcm9udGVuZFJvdXRlcjsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudDsKK3N0
cnVjdCBXZWJQYWdlQWdlbnRDb250ZXh0OworCiBjbGFzcyBXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsMTUgKzc2LDI3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFByb3Zpc2lv
bmFsUGFnZVByb3h5Jik7CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29y
ZTo6UGFnZUlkZW50aWZpZXIgb2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBu
ZXdXZWJQYWdlSUQpOwogCisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KiBlbmFibGVkSW5zcGVj
dG9yQnJvd3NlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVkSW5zcGVjdG9yQnJvd3Nl
ckFnZW50OyB9CisgICAgdm9pZCBzZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KEluc3Bl
Y3RvckJyb3dzZXJBZ2VudCogYWdlbnQpIHsgbV9lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50
ID0gYWdlbnQ7IH0KKwogcHJpdmF0ZToKKyAgICBXZWJQYWdlQWdlbnRDb250ZXh0IHdlYlBhZ2VB
Z2VudENvbnRleHQoKTsKKyAgICB2b2lkIGNyZWF0ZUxhenlBZ2VudHMoKTsKKwogICAgIHZvaWQg
YWRkVGFyZ2V0KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4mJik7CiAKLSAg
ICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRl
cj4gbV9mcm9udGVuZFJvdXRlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hl
cj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9h
Z2VudHM7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKwogICAgIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVGFyZ2V0QWdlbnQqIG1fdGFyZ2V0QWdlbnQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4+IG1fdGFyZ2V0czsKKworICAgIElu
c3BlY3RvckJyb3dzZXJBZ2VudCogbV9lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50OworCisg
ICAgYm9vbCBtX2RpZENyZWF0ZUxhenlBZ2VudHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAwNzc2MmFjMDdmZjE5YTc4YmY2NmU4Yjk4MWI2OGZhZTcwOWRiOTIxLi45ZTQyOTE3YjYxNWI3
ZWVmYTFmNGFjNDBkM2IwOGZlMWFmYzk3MWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJBUElIaXN0b3J5Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkFQSUljb25M
b2FkaW5nQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJD
bGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCkBAIC00MzAsNiArNDMxLDcgQEAg
V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKICAgICAs
IG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRleHRNZW51Q2xpZW50Pigp
KQogI2VuZGlmCisgICAgLCBtX2luc3BlY3RvckNsaWVudChtYWtlVW5pcXVlPEFQSTo6SW5zcGVj
dG9yQ2xpZW50PigpKQogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUobWFrZVVuaXF1ZTxXZWJOYXZp
Z2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcGFnZUdy
b3VwKCptX2NvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQpAQCAtNjYzLDYgKzY2NSwxNiBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVz
ZUljb25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
c2V0SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4m
JiBpbnNwZWN0b3JDbGllbnQpCit7CisgICAgaWYgKCFpbnNwZWN0b3JDbGllbnQpIHsKKyAgICAg
ICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5zcGVjdG9yQ2xpZW50Pigp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBXVEZN
b3ZlKGluc3BlY3RvckNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRQYWdlTG9h
ZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiYm
IG9ic2VydmVyKQogewogICAgIGlmIChtX3BhZ2VMb2FkU3RhdGVPYnNlcnZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNWQ0YTcxZDMzMDdjYjBjMDFiOTdlNzRl
NGEzN2U3YTI0OTM1YmY4ZC4uZTQ0NWE1YmVlNWI4NjNjMTI5NGFhMjc2ZjZjNTFiYWRhYjI4Y2Ey
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NCw2ICsxNzQs
NyBAQCBjbGFzcyBGb3JtQ2xpZW50OwogY2xhc3MgRnVsbHNjcmVlbkNsaWVudDsKIGNsYXNzIEhp
c3RvcnlDbGllbnQ7CiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudDsKK2NsYXNzIEluc3BlY3RvckNs
aWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIE5hdmlnYXRpb247CiBjbGFzcyBOYXZp
Z2F0aW9uQ2xpZW50OwpAQCAtNTUxLDYgKzU1Miw5IEBAIHB1YmxpYzoKICAgICBBUEk6Okljb25M
b2FkaW5nQ2xpZW50JiBpY29uTG9hZGluZ0NsaWVudCgpIHsgcmV0dXJuICptX2ljb25Mb2FkaW5n
Q2xpZW50OyB9CiAgICAgdm9pZCBzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mJik7CiAKKyAgICBBUEk6Okluc3BlY3RvckNsaWVudCYg
aW5zcGVjdG9yQ2xpZW50KCkgeyByZXR1cm4gKm1faW5zcGVjdG9yQ2xpZW50OyB9CisgICAgdm9p
ZCBzZXRJbnNwZWN0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50
PiYmKTsKKwogICAgIHZvaWQgc2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0
cjxQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcj4mJik7CiAKICAgICB2b2lkIGluaXRpYWxpemVXZWJQ
YWdlKCk7CkBAIC0yMjQ5LDYgKzIyNTMsNyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShDT05URVhU
X01FTlVTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRNZW51Q2xpZW50PiBtX2Nv
bnRleHRNZW51Q2xpZW50OwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVj
dG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViUGFn
ZUluamVjdGVkQnVuZGxlQ2xpZW50PiBtX2luamVjdGVkQnVuZGxlQ2xpZW50OwogICAgIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcj4gbV9wYWdlTG9hZFN0YXRlT2JzZXJ2
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDc2OTdjNGM1OGQ0NzJjNjRjNmJiOTBjNGNkZGU2Y2Q1YzZlNTliY2EuLjY4MjFlZjkx
NDJlNWVmMjI1OGE5ZTQyOTE1OGY5MWE1YTQ2MTA3MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzNyw2ICsxMzM3LDExIEBACiAJ
CTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY5NTM2MDE4RkY0RkQ0MDAx
REIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oICovOyB9OwogCQk4REMyRUY1MzA0ODZBNjk0MDA5
OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDA4OUMxNjY2RkU4NDExNThDMDJBQUMwNyAvKiBJbmZvUGxpc3Qu
c3RyaW5ncyAqLzsgfTsKIAkJOTA5ODU0RUQxMkJDNEUxODAwMEFEMDgwIC8qIFdlYk1lbW9yeVNh
bXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkw
NTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi87IH07CisJCTkx
OTc5NDAyMjNEQkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDAwMjNEQkM0OTAwMDI1Nzg5
MiAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLzsgfTsKKwkJOTE5Nzk0MDUyM0RCQzRCQjAwMjU3ODky
IC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTE5Nzk0MDMyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJy
b3dzZXJBZ2VudC5oICovOyB9OworCQk5MTk3OTQwODIzREJDNENCMDAyNTc4OTIgLyogV2ViUGFn
ZUluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTE5Nzk0MDcyM0RCQzRDQTAwMjU3ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JB
Z2VudEJhc2UuaCAqLzsgfTsKKwkJOTE5Nzk0MEEyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3Bl
Y3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovOyB9
OworCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDBCMjNE
QkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMjFENTg2MUEzOEVFM0MwMDgwNTJC
RSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg1MUEzOEVFM0MwMDgwNTJCRSAvKiBXS0lt
bWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTMyMUQ1OEExQTM4RjE5NjAwODA1
MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg5MUEzOEYxOTYwMDgwNTJCRSAvKiBXS0ltbWVk
aWF0ZUFjdGlvblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTMyMzYxMUUxQjAxNURBODAwRkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxi
YXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTMyMzYxMUQxQjAxNURBODAwRkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxiYXJTdHlsZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC00MjQ1LDYg
KzQyNTAsMTMgQEAKIAkJOTA1NjIwRTUxMkJDMjQ3NjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBs
ZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXZWJNZW1vcnlTYW1wbGVyLm1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkwNTYyMEU4MTJCQzI0OEIwMDA3
OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZW1vcnlTYW1wbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5M0ZGMjNEQkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0
b3JDbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJbnNw
ZWN0b3JDbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5NDAwMjNE
QkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5zcGVjdG9yQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTkxOTc5NDAzMjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5NDA0MjNEQkM0QkIwMDI1Nzg5MiAv
KiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJOTE5Nzk0MDcyM0RCQzRDQTAwMjU3ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JBZ2Vu
dEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGFnZUluc3BlY3Rv
ckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTk3OTQwOTIzREJD
NEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSW5zcGVjdG9yRGVsZWdhdGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODUxQTM4RUUzQzAwODA1MkJF
IC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODcxQTM4RUU3NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMyMUQ1ODkxQTM4RjE5NjAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uVHlwZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tJbW1lZGlhdGVBY3Rpb25UeXBl
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjg0OSw2ICs2ODYxLDcgQEAKIAkJ
CQk5OTFGNDkyRDIzQTgxMkM1MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8u
aCAqLywKIAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEyM0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3Bl
Y3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAqLywKKwkJCQk5MTk3OTQwQjIzREJDNTAzMDAy
NTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4NDM2
MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCAqLywKIAkJCQk5OTc5Q0E1NzIzN0Y0
OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJpdmF0ZS5oICovLAogCQkJCUE1QzBGMEFBMjAw
MDY1NkUwMDUzNjUzNiAvKiBfV0tJbnNwZWN0b3JXaW5kb3cuaCAqLywKQEAgLTc5NzgsMTAgKzc5
OTEsMjAgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCTkxOTc5M0ZFMjNEQkM0NzQwMDI1Nzg5MiAvKiBDb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODky
IC8qIEluc3BlY3RvckNsaWVudC5oICovLAorCQkJCTkxOTc5M0ZGMjNEQkM0OTAwMDI1Nzg5MiAv
KiBJbnNwZWN0b3JDbGllbnQubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IENvY29hOworCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJOTFEOTcwRDQyM0RBNkQyNTAwNTdEQkMzIC8q
IEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJ
CQkJOTFEOTcwRDUyM0RBNkQ1MDAwNTdEQkMzIC8qIEFnZW50cyAqLywKKwkJCQk5MTk3OTNGRTIz
REJDNDc0MDAyNTc4OTIgLyogQ29jb2EgKi8sCiAJCQkJOTFEOTcwRDcyM0RBNkQ1QjAwNTdEQkMz
IC8qIGlvcyAqLywKIAkJCQk5MUQ5NzBENjIzREE2RDU1MDA1N0RCQzMgLyogbWFjICovLAogCQkJ
CUE1RTM5MUZCMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNwZWN0b3JUYXJnZXRQcm94eS5jcHAgKi8s
CkBAIC03OTk2LDYgKzgwMTksNyBAQAogCQkJCUE1NUJBODI4MUJBMzhFMUUwMDdDRDMzRCAvKiBX
ZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCAqLywKIAkJCQlBNUVDNkFEMjIxNTFCRDY5MDA2NzdEMTcg
LyogV2ViUGFnZURlYnVnZ2FibGUuY3BwICovLAogCQkJCUE1RUM2QUQzMjE1MUJENjkwMDY3N0Qx
NyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oICovLAorCQkJCTkxOTc5NDA3MjNEQkM0Q0EwMDI1Nzg5
MiAvKiBXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmggKi8sCiAJCQkJQTUxM0Y1M0YyMTU0QTVD
RDAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKIAkJCQlBNTEz
RjUzRTIxNTRBNUNDMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCAqLywK
IAkJCSk7CkBAIC04MDA1LDYgKzgwMjksOCBAQAogCQk5MUQ5NzBENTIzREE2RDUwMDA1N0RCQzMg
LyogQWdlbnRzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5MTk3OTQwNDIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcCAq
LywKKwkJCQk5MTk3OTQwMzIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50
LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFnZW50czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC04NjQ4LDYgKzg2NzQsNyBAQAogCQkJCTdBQjZFQTQ0MUVFQUFFMjMwMDAzN0IyQiAv
KiBBUElJY29uRGF0YWJhc2VDbGllbnQuaCAqLywKIAkJCQk1MTQzQjI2MTFEREQwREEwMDAxNEZB
QzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywKIAkJCQk3QThBOUQ1NzFFRjExOUFBMDA5
ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQuaCAqLywKKwkJCQk5MTk3OTQwOTIzREJD
NEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJMzFCMzYyOTAyMTQx
RUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIz
NjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJ
CQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGll
bnQuaCAqLywKQEAgLTEwMDAxLDYgKzEwMDI4LDcgQEAKIAkJCQk1Q0FGREU0NTIxMzA4NDYzMDBC
MUY3RTEgLyogX1dLSW5zcGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTFGNDkyRjIzQTgx
MkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTk5MDM2QUUyMjNBOTQ5Q0YwMDAwQjA2QSAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxl
SW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4
OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDQUZERTQ3
MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1QzBGMEFCMjAwMDY1ODIwMDUzNjUzNiAvKiBfV0tJbnNwZWN0
b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxMDksNiArMTAxMzcsNyBAQAogCQkJCTdB
M0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5RDVDMUVGMTQ1OTgwMDk4MDFBRSAvKiBBUElJ
bmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTM3NjkwNzlBMThGMzFDQjIwMDFERkYwNCAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE5Nzk0MEEyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUlu
c3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzFCMzYyOEYyMTQxRUE1RDAwN0JG
QTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0
RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5MUU0NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAyNzYsNiArMTAzMDUsOCBAQAogCQkJCUJDMTRE
Rjc3MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyREQ0NUFERTFFNUY4OTcyMDA2QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRl
RGVmZXJyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFNTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAv
KiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE5Nzk0MDUyM0RCQzRC
QjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTE5Nzk0MDIyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQTVFMzkxRkQyMTgzQzFGODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5
LmggaW4gSGVhZGVycyAqLywKIAkJCQlDNUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgx
MURGNjBCRjMwMDJFQjEwQyAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDcyOCw2ICsxMDc1OSw3IEBACiAJCQkJQkM3QjYyNTIxMkE0M0M5NjAw
RDE3NEE0IC8qIFdlYlBhZ2VHcm91cERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjE1
MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMkQ5RUEzMEYxQTk2Q0JGRjAwMkQyODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE5Nzk0MDgyM0RCQzRDQjAwMjU3ODkyIC8qIFdlYlBh
Z2VJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1MTNGNTQwMjE1NEE1
RDcwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQTU0M0UzMEMyMTVDOEE4RDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1NDNFMzBEMjE1QzhBOTAwMDI3OUNEOSAvKiBXZWJQYWdl
SW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjVlNjZjYTNlMzI1ZDc3YmM0
ZDk0YjdlYTQ4YTQzMDQ5ZDgyZTk3Yy4uMWM3MmNmOGYyZTViMzE1OTM5MjJmOWZjODdjYThjOTFi
Zjc2ZDA1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE1IEBACisyMDIwLTAxLTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzYWZhcmkgYXBwIGV4dGVuc2lvbiBp
c29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVzZSB0aGUgZXh0ZW5zaW9uJ3MgaWRl
bnRpZmllciBpbnN0ZWFkIG9mIGl0J3MgbmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODAy
NjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCB0ZXN0IGZvciBgV1RGOjpIYXNoU2V0OjpyZXNlcnZl
SW5pdGlhbENhcGFjaXR5YC4KKwogMjAyMC0wMS0yOCAgSmFtZXMgRGFycGluaWFuICA8amRhcnBp
bmlhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUXVvdGUgZmlsZSBhcmd1bWVudCB0byBnaXQg
Y2hlY2stYXR0cgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aFNldC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRl
eCA0NGUyMTdlMGUxMDAxYzNmMWVlYjU2NThmMGM4OTNkYjNjMjNhYjY1Li5jMmZjYjIyOWFjMGQ4
ZTdlMWNkNTI4YjI0MTdiYzY0NGI2MTk3YjUxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoU2V0LmNwcApAQCAtMjksOSArMjksMTIgQEAKICNpbmNsdWRlICJEZWxldGVkQWRk
cmVzc09mT3BlcmF0b3IuaCIKICNpbmNsdWRlICJNb3ZlT25seS5oIgogI2luY2x1ZGUgIlJlZkxv
Z2dlci5oIgorI2luY2x1ZGUgIlRlc3QuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC01MDMsNCArNTA2
LDM1IEBAIFRFU1QoV1RGX0hhc2hTZXQsIFJlbW92ZUlmU2hyaW5rVG9CZXN0U2l6ZSkKICAgICBB
U1NFUlRfRVEoc2V0MS5jYXBhY2l0eSgpLCBvcmlnaW5hbENhcGFjaXR5KTsKIH0KIAorVEVTVChX
VEZfSGFzaFNldCwgUmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSkKK3sKKyAgICBIYXNoU2V0PFN0cmlu
Zz4gc2V0OworICAgIEVYUEVDVF9FUSgwdSwgc2V0LnNpemUoKSk7CisgICAgc2V0LnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoOTk5OSk7CisgICAgRVhQRUNUX0VRKDB1LCBzZXQuc2l6ZSgpKTsKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDk5OTk7ICsraSkKKyAgICAgICAgc2V0LmFkZChtYWtlU3Ry
aW5nKCJmb28iLCBpKSk7CisgICAgRVhQRUNUX0VRKDk5OTl1LCBzZXQuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfVFJVRShzZXQuY29udGFpbnMoImZvbzMiX3N0cikpOworICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgOTk5OTsgKytpKQorICAgICAgICBzZXQuYWRkKG1ha2VTdHJpbmcoImV4Y2VzcyIsIGkp
KTsKKyAgICBFWFBFQ1RfRVEoOTk5OXUgKyA5OTk5dSwgc2V0LnNpemUoKSk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCA5OTk5OyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5yZW1vdmUo
bWFrZVN0cmluZygiZm9vIiwgaSkpKTsKKyAgICBFWFBFQ1RfRVEoOTk5OXUsIHNldC5zaXplKCkp
OworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJV
RShzZXQucmVtb3ZlKG1ha2VTdHJpbmcoImV4Y2VzcyIsIGkpKSk7CisgICAgRVhQRUNUX0VRKDB1
LCBzZXQuc2l6ZSgpKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBzZXQyOworICAgIHNldDIucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0Mi5yZW1vdmUo
ImZvbzEiX3MpKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDIwMDA7ICsraSkKKyAgICAgICAg
c2V0Mi5hZGQobWFrZVN0cmluZygiZm9vIiwgaSkpOworICAgIEVYUEVDVF9FUSgyMDAwdSwgc2V0
Mi5zaXplKCkpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjAwMDsgKytpKQorICAgICAgICBF
WFBFQ1RfVFJVRShzZXQyLnJlbW92ZShtYWtlU3RyaW5nKCJmb28iLCBpKSkpOworICAgIEVYUEVD
VF9FUSgwdSwgc2V0Mi5zaXplKCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389197</attachid>
            <date>2020-01-29 16:22:02 -0800</date>
            <delta_ts>2020-01-29 18:11:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206911-20200129162201.patch</filename>
            <type>text/plain</type>
            <size>104116</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDk5OWU2Njg3NjQxZGM1MzBiMjgyODM4YjM2ZDE3
YTA0NTdiNjMyNjMuLjQwMjdhMjYzNDdiNWVmOTMwN2Y2MjZkNDgxZTA5NTQ2ZTI4MjEwMTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAxLTI4ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
YWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVz
ZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0cyBuYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbjogQWRk
ZWQuCisgICAgICAgIEFkZCBhIGBCcm93c2VyYCBhZ2VudCB0aGF0IGNhbiBjb21tdW5pY2F0ZSB3
aXRoIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGNvbnRhaW5pbmcgYnJvd3Nlci4gSXQKKyAgICAgICAg
bGl2ZXMgaW4gdGhlIFVJUHJvY2VzcyBhbG9uZ3NpZGUgdGhlIGBUYXJnZXRgIGFnZW50IChtZWFu
aW5nIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9uZSBwZXIKKyAgICAgICAgZGVidWdnYWJsZSByYXRo
ZXIgdGhhbiBvbmUgcGVyIHRhcmdldCkgYW5kIGFzIHN1Y2ggaXMgbm90IHJvdXRlZCB0aHJvdWdo
IHRoZSBgVGFyZ2V0YCBhZ2VudC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNv
dXJjZXMubWFrZToKKwogMjAyMC0wMS0yOSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1
ZEBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IHNtYWxsIG1lbW9yeSByZWdyZXNzaW9uIGNhdXNl
ZCBieSByMjA2MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDI4MmYxNWE0NWJkODJkOTA0MzgzOTQxMTUxN2VhMTNlNDJiMzhm
MWYuLjcxYjBiODk3NTYxMWIyMDc1MmJkNGYwODcyYTUwYzRmN2RkMWYwYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMjAtMDEtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xhdGVkIHdv
cmxkcyBhbmQgaW5qZWN0ZWQgZmlsZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlmaWVyIGlu
c3RlYWQgb2YgaXRzIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjkxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjY2MzU+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvSGFzaFNl
dC5oOgorICAgICAgICAoV1RGOjpIYXNoU2V0OjpyZXNlcnZlSW5pdGlhbENhcGFjaXR5KTogQWRk
ZWQuCisKIDIwMjAtMDEtMjggIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEu
Y29tPgogCiAgICAgICAgIFtHVEtdIFNob3VsZCB1c2UgbGlnaHQgdGhlbWUgdW5sZXNzIHdlYnNp
dGUgZGVjbGFyZXMgc3VwcG9ydCBmb3IgZGFyayB0aGVtZXMgaW4gY29sb3Itc2NoZW1lcyBwcm9w
ZXJ0eQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggODcyYTg3MTIwYThmNzdhMGVkMWE3Y2Q0
MjY4MjhmNDM1NmRlYzNhZS4uNzYyYWM1NTQ0NmMwYjAyMWQyNzhlYmEzZmQwYzMyMzk5MWZlYmNk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIwMjAtMDEtMjgg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmls
ZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlmaWVyIGluc3RlYWQgb2YgaXRzIG5hbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjY2MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jyb3dz
ZXJNYW5hZ2VyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyb3dzZXJNYW5hZ2VyKToKKyAgICAg
ICAgKFdJLkJyb3dzZXJNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFyZ2V0KToKKyAgICAg
ICAgKFdJLkJyb3dzZXJNYW5hZ2VyLnByb3RvdHlwZS5lbmFibGUpOgorICAgICAgICAoV0kuQnJv
d3Nlck1hbmFnZXIucHJvdG90eXBlLmRpc2FibGUpOgorICAgICAgICAoV0kuQnJvd3Nlck1hbmFn
ZXIucHJvdG90eXBlLmlzRXh0ZW5zaW9uU2NoZW1lKToKKyAgICAgICAgKFdJLkJyb3dzZXJNYW5h
Z2VyLnByb3RvdHlwZS5leHRlbnNpb25OYW1lRm9ySWQpOgorICAgICAgICAoV0kuQnJvd3Nlck1h
bmFnZXIucHJvdG90eXBlLmV4dGVuc2lvbk5hbWVGb3JVUkwpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQnJvd3Nlck9ic2VydmVyLmpzOiBBZGRlZC4KKyAgICAgICAgKFdJLkJy
b3dzZXJPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uc0VuYWJsZWQpOgorICAgICAgICAoV0ku
QnJvd3Nlck9ic2VydmVyLnByb3RvdHlwZS5leHRlbnNpb25zRGlzYWJsZWQpOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzOgorICAgICAgICAoV0kuVGFyZ2V0LnBy
b3RvdHlwZS5nZXQgQnJvd3NlckFnZW50KTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9CYXNlL01haW4uanM6CisgICAgICAgIChXSS5sb2FkZWQpOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzOgor
ICAgICAgICAoV0kubG9hZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRtbDoK
KyAgICAgICAgQWRkIGFuIG9ic2VydmVyIGFuZCBtYW5hZ2VyIGZvciB0aGUgYEJyb3dzZXJgIGRv
bWFpbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFj
a2VuZFRhcmdldC5qczoKKyAgICAgICAgKFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQpOgor
ICAgICAgICAoV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5wcm90b3R5cGUuaW5pdGlhbGl6
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpz
OgorICAgICAgICAoV0kuVGFyZ2V0TWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6
IEFkZGVkLgorICAgICAgICBUaGUgYEJyb3dzZXJgIGFnZW50IGxpdmVzIGluIHRoZSBVSVByb2Nl
c3MgYWxvbmdzaWRlIHRoZSBgVGFyZ2V0YCBhZ2VudCAobWVhbmluZyB0aGVyZQorICAgICAgICBz
aG91bGQgb25seSBiZSBvbmUgcGVyIGRlYnVnZ2FibGUgcmF0aGVyIHRoYW4gb25lIHBlciB0YXJn
ZXQpIGFuZCBhcyBzdWNoIGlzIG5vdCByb3V0ZWQKKyAgICAgICAgdGhyb3VnaCB0aGUgYFRhcmdl
dGAgYWdlbnQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5q
czoKKyAgICAgICAgKFdJLlF1aWNrQ29uc29sZS5wcm90b3R5cGUuX2Rpc3BsYXlOYW1lRm9yRXhl
Y3V0aW9uQ29udGV4dCk6CisgICAgICAgIEF0dGVtcHQgdG8gbWF0Y2ggdGhlIGV4ZWN1dGlvbiBj
b250ZXh0IG5hbWUgYWdhaW5zdCBhbnkga25vd24gZXh0ZW5zaW9uIGlkZW50aWZpZXIsIGFuZAor
ICAgICAgICB1c2UgdGhlIGV4dGVuc2lvbidzIGRpc3BsYXkgbmFtZSBpZiBvbmUgaXMgZm91bmQu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRpbGl0aWVzLmpzOgorICAgICAg
ICAoV0kuZGlzcGxheU5hbWVGb3JIb3N0KToKKyAgICAgICAgQXR0ZW1wdCB0byBtYXRjaCB0aGUg
aG9zdCBhZ2FpbnN0IGFueSBrbm93biBleHRlbnNpb24gaWRlbnRpZmllciwgYW5kIHVzZSB0aGUg
ZXh0ZW5zaW9uJ3MKKyAgICAgICAgZGlzcGxheSBuYW1lIGlmIG9uZSBpcyBmb3VuZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
anM6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUu
X2FkZFN0eWxlU2hlZXQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9hZGRTY3JpcHQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9V
dGlsaXRpZXMuanM6CisgICAgICAgIChpc1dlYktpdEV4dGVuc2lvblNjaGVtZSk6IERlbGV0ZWQu
CisgICAgICAgICogLmVzbGludHJjOgorICAgICAgICBVc2UgYFdJLkJyb3dzZXJNYW5hZ2VyLnBy
b3RvdHlwZS5pc0V4dGVuc2lvblNjaGVtZWAgaW5zdGVhZCBvZiB0aGUgZ2xvYmFsIGZ1bmN0aW9u
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qczoKKyAgICAg
ICAgKFdJLlNvdXJjZUNvZGUpOgorICAgICAgICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0
IHVybCk6IEFkZGVkLgorICAgICAgICAoV0kuU291cmNlQ29kZS5wcm90b3R5cGUuZ2V0IHVybENv
bXBvbmVudHMpOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHls
ZVNoZWV0LmpzOgorICAgICAgICAoV0kuQ1NTU3R5bGVTaGVldCk6CisgICAgICAgIChXSS5DU1NT
dHlsZVNoZWV0LnByb3RvdHlwZS5nZXQgaW5qZWN0ZWQpOgorICAgICAgICAoV0kuQ1NTU3R5bGVT
aGVldC5wcm90b3R5cGUuZ2V0IHVybCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5DU1NTdHlsZVNo
ZWV0LnByb3RvdHlwZS5nZXQgdXJsQ29tcG9uZW50cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanM6CisgICAgICAgIChXSS5SZXNvdXJjZSk6Cisg
ICAgICAgIChXSS5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IHVybCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5SZXNvdXJjZS5wcm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qczoKKyAgICAgICAgKFdJLlNjcmlw
dCk6CisgICAgICAgIChXSS5TY3JpcHQucHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5nZXQgdXJsQ29tcG9uZW50cyk6IERlbGV0ZWQuCisg
ICAgICAgIEFsbCBzdWJjbGFzc2VzIG9mIGBXSS5Tb3VyY2VDb2RlYCBoYXZlIHNlcGFyYXRlIGBn
ZXQgdXJsYCBhbmQgYGdldCB1cmxDb21wb25lbnRzYCBmdW5jdGlvbnMsCisgICAgICAgIHNvIHVu
aWZ5IHRoZW0gaW4gdGhlIGNvbW1vbiBzdXBlcmNsYXNzIHNvIHRoYXQgaXQncyBndWFyYW50ZWVk
IHRvIGV4aXN0LgorCiAyMDIwLTAxLTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkb24ndCB1c2UgYDptYXRjaGVzKDpiZWZvcmUs
IDphZnRlcilgIGFmdGVyIHIyNTUwNTkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMDgzMDJhYjYyNDkyMzg4ODU5MjM3
N2VlOWI3NDkxNWVmMGViMjIwNy4uNGRhZmM5NWI1NjM4MDZmZmMwOWM5NDYzNTBiNjJkMTY4OGIx
M2FkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw5MCBAQAorMjAyMC0wMS0yOCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2FmYXJpIGFw
cCBleHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmplY3RlZCBmaWxlcyB1c2UgdGhlIGV4
dGVuc2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdHMgbmFtZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmVuYWJs
ZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldEVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdl
bnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0
b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRy
b2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjp3ZWJQYWdlQWdlbnRDb250ZXh0KTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjcmVhdGVM
YXp5QWdlbnRzKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdl
SW5zcGVjdG9yQWdlbnRCYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JB
Z2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dz
ZXJBZ2VudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxl
ZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlkQ3JlYXRlRnJv
bnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50
Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJv
d3NlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFn
ZW50OjpleHRlbnNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dz
ZXJBZ2VudDo6ZXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgQWRkIGEgYEJyb3dzZXJgIGFn
ZW50IHRoYXQgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIGluc3BlY3RlZCBwYWdlJ3MgY29udGFp
bmluZyBicm93c2VyLiBJdAorICAgICAgICBsaXZlcyBpbiB0aGUgVUlQcm9jZXNzIGFsb25nc2lk
ZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcgdGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHBl
cgorICAgICAgICBkZWJ1Z2dhYmxlIHJhdGhlciB0aGFuIG9uZSBwZXIgdGFyZ2V0KSBhbmQgYXMg
c3VjaCBpcyBub3Qgcm91dGVkIHRocm91Z2ggdGhlIGBUYXJnZXRgIGFnZW50LgorCisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6Omluc3BlY3RvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcg
X2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
bnNwZWN0b3JEZWxlZ2F0ZV0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRJbnNw
ZWN0b3JEZWxlZ2F0ZTpdKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
c2V0SW5zcGVjdG9yQ2xpZW50KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckRlbGVnYXRlKToKKyAgICAgICAgKFdl
YktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6OmNyZWF0ZUluc3BlY3RvckNsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
Okluc3BlY3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0
b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IpOgorICAgICAg
ICAoV2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9t
YWluRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0
b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9BUElJbnNwZWN0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChBUEk6Okluc3BlY3RvckNs
aWVudDo6ZGlkQXR0YWNoSW5zcGVjdG9yKToKKyAgICAgICAgKEFQSTo6SW5zcGVjdG9yQ2xpZW50
Ojpicm93c2VyRG9tYWluRW5hYmxlZCk6CisgICAgICAgIChBUEk6Okluc3BlY3RvckNsaWVudDo6
YnJvd3NlckRvbWFpbkRpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICBJbnRyb2R1Y2UgYW4gaW5zcGVj
dG9yIGRlbGVnYXRlIFNQSSBmb3IgY29tbXVuaWNhdGluZyBpbmZvcm1hdGlvbiByZWxhdGVkIHRv
IFdlYiBJbnNwZWN0b3IuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvclByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5tbToKKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIF9icm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQ6
XSk6IEFkZGVkLgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgX2Jyb3dzZXJFeHRlbnNpb25zRGlz
YWJsZWQ6XSk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbElu
c3BlY3RvckZyb250ZW5kKToKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmJy
b3dzZXJFeHRlbnNpb25zRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZCk6IEFkZGVkLgorICAgICAgICBB
ZGQgU1BJIGZvciB3aGVuIGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQvZGlzYWJsZWQgc28gdGhhdCBX
ZWIgSW5zcGVjdG9yIGNhbiB1cGRhdGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvVUlE
ZWxlZ2F0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tOgorICAg
ICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaDoKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OmRpZEF0dGFjaEluc3BlY3Rvcik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgIE1vdmUgYF93ZWJWaWV3OmRp
ZEF0dGFjaEluc3BlY3RvcjpgIGZyb20gYFdLVUlEZWxlZ2F0ZVByaXZhdGVgIHRvIGBfV0tJbnNw
ZWN0b3JEZWxlZ2F0ZWAuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAg
ICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMjkgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lQYWRPU10gU2VsZWN0
IHBvcG92ZXJzIG9uIGFtYXpvbi5jb20gc29tZXRpbWVzIGRpc21pc3MgaW1tZWRpYXRlbHkgYWZ0
ZXIgYXBwZWFyaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFlNDI3
YzMwYzUxMTYzZWRkOWYxMDZkNDJmOTVlMDlkMDJiZTljNC4uNDA0ZmU3MzE5Y2VlZmQzZDJmNDQ3
NmMyNjVmNDMyMzgyNDEzNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTE1Miw2ICsxMTUyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9ET01BSU5T
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9ET01TdG9yYWdl
Lmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0RhdGFi
YXNlLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0Rl
YnVnZ2VyLmpzb24KKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29s
L0Jyb3dzZXIuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9j
b2wvR2VuZXJpY1R5cGVzLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9y
L3Byb3RvY29sL0hlYXAuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3Iv
cHJvdG9jb2wvSW5zcGVjdG9yLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggOWVhZDY1M2ZhYWFiMTg5M2Vi
OTJkZDAyZTk3NTc5NjZkZmE5OWFjNC4uMjM0MGNkZmFjNDYxYjliNmIzMWIwNTc4YjI1YWZiNTU1
YmFkYWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
LWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkwLDYgKzkwLDcgQEAgJChQUk9KRUNUX0RJUikvaW5z
cGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rv
ci9wcm90b2NvbC9ET01TdG9yYWdlLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9wcm90
b2NvbC9EYXRhYmFzZS5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvRGVi
dWdnZXIuanNvbgorJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNv
bgogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0dlbmVyaWNUeXBlcy5qc29uCiAk
KFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCiAkKFBST0pFQ1RfRElS
KS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5kZXhlZERCLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZTJhMzZmYTg3NjQ5MDlhYmZkMGUxODk2ZDNhOWE3
YzM2MWYxYjIzYS4uZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0OSw2ICsyNDks
NyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVj
dG9yL3Byb3RvY29sL0RPTVN0b3JhZ2UuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL3Byb3RvY29sL0RhdGFiYXNlLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUpL2lu
c3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3JlKS9p
bnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3JlKS9p
bnNwZWN0b3IvcHJvdG9jb2wvR2VuZXJpY1R5cGVzLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbiBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmZlMGNmOWNhOWIwNjI4OTgzNjdlZGQzMjU5YTdkZGFjMDM3ZDE1OWEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNv
bgpAQCAtMCwwICsxLDQ2IEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAgICAiZGVz
Y3JpcHRpb24iOiAiVGhlIEJyb3dzZXIgZG9tYWluIGNvbnRhaW5zIGNvbW1hbmRzIGFuZCBldmVu
dHMgcmVsYXRlZCB0byBnZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2VyICIsCisg
ICAgImRlYnVnZ2FibGVUeXBlcyI6IFsid2ViLXBhZ2UiXSwKKyAgICAidGFyZ2V0VHlwZXMiOiBb
IndlYi1wYWdlIl0sCisgICAgInR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAiaWQi
OiAiRXh0ZW5zaW9uSWQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAgICAg
ICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgZXh0ZW5zaW9uIGlkZW50aWZpZXIuIgorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiRXh0ZW5zaW9uIiwKKyAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5mb3Jt
YXRpb24gYWJvdXQgYW4gZXh0ZW5zaW9uLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6IFsK
KyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV4dGVuc2lvbklkIiwgIiRyZWYiOiAiRXh0ZW5z
aW9uSWQiLCAiZGVzY3JpcHRpb24iOiAiRXh0ZW5zaW9uIGlkZW50aWZpZXIuIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJUaGUgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLiIgfQorICAgICAgICAgICAg
XQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRW5h
YmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJE
aXNhYmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9CisgICAgXSwKKyAgICAi
ZXZlbnRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJleHRlbnNpb25zRW5h
YmxlZCIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImV4dGVuc2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RXh0ZW5zaW9uIiB9LCAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIGVuYWJs
ZWQgZXh0ZW5zaW9ucy4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAgewor
ICAgICAgICAgICAgIm5hbWUiOiAiZXh0ZW5zaW9uc0Rpc2FibGVkIiwKKyAgICAgICAgICAgICJw
YXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXh0ZW5zaW9uSWRzIiwg
InR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkV4dGVuc2lvbklkIiB9LCAiZGVz
Y3JpcHRpb24iOiAiRGlzYWJsZWQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzLiIgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFz
aFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IGUyNjg3ZTliMDYyZGRjODQ5
NDU5NDJlOTAyNDZhYTgxYTdmNDQ1NTUuLjg2OTczOGRmZTY1OGM2NjE5YWQ5YzhkNjhjNTVlY2Nk
MDVlOGQyMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIHVuc2ln
bmVkIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKKyAgICB2
b2lkIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkodW5zaWduZWQga2V5Q291bnQpIHsgbV9pbXBsLnJl
c2VydmVJbml0aWFsQ2FwYWNpdHkoa2V5Q291bnQpOyB9CisKICAgICBpdGVyYXRvciBiZWdpbigp
IGNvbnN0OwogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvLmVzbGludHJjIGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRy
YwppbmRleCAzOGI3NmM1NjJmYTg2YmMzMDU5NzI1YmRjNmFkOGU1OGIzMjNjNWViLi5kYWE2MTQ4
NTY5YjE2ZTVjYjFjZjE4OWQxOGUzOTkwYWRiMzAzZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvLmVzbGludHJjCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50
cmMKQEAgLTEwMSw3ICsxMDEsNiBAQAogICAgICAgICAiaXNXZWJJbnNwZWN0b3JDb25zb2xlRXZh
bHVhdGlvblNjcmlwdCI6IHRydWUsCiAgICAgICAgICJpc1dlYkluc3BlY3RvckludGVybmFsU2Ny
aXB0IjogdHJ1ZSwKICAgICAgICAgImlzV2ViS2l0SW50ZXJuYWxTY3JpcHQiOiB0cnVlLAotICAg
ICAgICAiaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUiOiB0cnVlLAogICAgICAgICAibXVsdGlwbGlj
YXRpb25TaWduIjogdHJ1ZSwKICAgICAgICAgInBhcnNlTUlNRVR5cGUiOiB0cnVlLAogICAgICAg
ICAicmVzb2x2ZURvdHNJblBhdGgiOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDgyNzFlMTNjNmI3ZDdmMzMxY2IyYWU5
ZWRjODMyYTE0YWMyZjJlMzIuLjU5MGFkNDZhNjZmNGI2YWI3OTkzMjM3YmI1ODJlM2UwNzczYjU3
MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
TWFpbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMKQEAgLTU1LDYgKzU1LDggQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBJ
bnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQW5pbWF0aW9uRGlzcGF0Y2hlcihXSS5BbmltYXRpb25P
YnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNh
Y2hlRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFwcGxpY2F0
aW9uQ2FjaGVEaXNwYXRjaGVyKFdJLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcik7CisgICAgaWYg
KEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJCcm93c2VyRGlzcGF0Y2hlcikKKyAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckJyb3dzZXJEaXNwYXRjaGVyKFdJLkJyb3dzZXJPYnNlcnZl
cik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRpc3BhdGNo
ZXIpCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRpc3BhdGNo
ZXIoV0kuQ1BVUHJvZmlsZXJPYnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVn
aXN0ZXJDU1NEaXNwYXRjaGVyKQpAQCAtMTA0LDYgKzEwNiw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKICAgICAvLyBDcmVhdGUgdGhlIHNpbmdsZXRvbiBtYW5hZ2VycyBuZXh0LCBiZWZvcmUg
dGhlIHVzZXIgaW50ZXJmYWNlIGVsZW1lbnRzLCBzbyB0aGUgdXNlciBpbnRlcmZhY2UgY2FuIHJl
Z2lzdGVyCiAgICAgLy8gYXMgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZXNlIG1hbmFnZXJzLgogICAg
IFdJLm1hbmFnZXJzID0gWworICAgICAgICBXSS5icm93c2VyTWFuYWdlciA9IG5ldyBXSS5Ccm93
c2VyTWFuYWdlciwKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlciA9IG5ldyBXSS5UYXJnZXRNYW5h
Z2VyLAogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlciA9IG5ldyBXSS5OZXR3b3JrTWFuYWdlciwK
ICAgICAgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIgPSBuZXcgV0kuRE9NU3RvcmFnZU1hbmFnZXIs
CkBAIC0xMzQsNiArMTM3LDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLmRhdGFi
YXNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVudC5EYXRh
YmFzZVdhc0luc3BlY3RlZCwgV0kuX2RhdGFiYXNlV2FzSW5zcGVjdGVkKTsKICAgICBXSS5uZXR3
b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5G
cmFtZURpZENoYW5nZSwgV0kuX21haW5GcmFtZURpZENoYW5nZSk7CiAgICAgV0kubmV0d29ya01h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5GcmFtZVdhc0Fk
ZGVkLCBXSS5fZnJhbWVXYXNBZGRlZCk7CisgICAgV0kuYnJvd3Nlck1hbmFnZXIuZW5hYmxlKCk7
CiAKICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgV0kuX21haW5SZXNvdXJjZURpZENoYW5nZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRpbGl0aWVzLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMu
anMKaW5kZXggYjU5NTE5ZTU5OTA4ZGIwZGFkMThjN2Y3NzY5OWZiY2QzMDVmNWNmMS4uZTNmY2Ey
ZmY5MzkxZWQyNjgzYTVjYTgyODhhMGRhNWY0MWMwMzJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKQEAg
LTMxMSw3ICszMTEsMTIgQEAgV0kudXJsV2l0aG91dEZyYWdtZW50ID0gZnVuY3Rpb24odXJsU3Ry
aW5nKQogCiBXSS5kaXNwbGF5TmFtZUZvckhvc3QgPSBmdW5jdGlvbihob3N0KQogeworICAgIGxl
dCBleHRlbnNpb25OYW1lID0gV0kuYnJvd3Nlck1hbmFnZXIuZXh0ZW5zaW9uTmFtZUZvcklkKGhv
c3QpOworICAgIGlmIChleHRlbnNpb25OYW1lKQorICAgICAgICByZXR1cm4gZXh0ZW5zaW9uTmFt
ZTsKKwogICAgIC8vIEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8xMTIzNzQxMz46IFRoaXMgc2hvdWxk
IGRlY29kZSBwdW55Y29kZSBob3N0bmFtZXMuCisKICAgICByZXR1cm4gaG9zdDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0
aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRp
ZXMuanMKaW5kZXggYjc3NDIzMTg0MzZjZTE1NDk2YTRhZTExYTNkYTNiZmVjMmQxM2IxNC4uMDQ1
OTYyMmE1MTFjZjMxZjI4NjIxNTMxNWQ1ZWM0NTZlMjQ4ZTZmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE2
NDQsMTEgKzE2NDQsNiBAQCBmdW5jdGlvbiBpc1dlYktpdEludGVybmFsU2NyaXB0KHVybCkKICAg
ICByZXR1cm4gdXJsICYmIHVybC5zdGFydHNXaXRoKCJfX1dlYiIpICYmIHVybC5lbmRzV2l0aCgi
X18iKTsKIH0KIAotZnVuY3Rpb24gaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc2NoZW1lKQotewot
ICAgIHJldHVybiBzY2hlbWUgJiYgc2NoZW1lLmVuZHNXaXRoKCItZXh0ZW5zaW9uIik7Ci19Ci0K
IGZ1bmN0aW9uIGlzRnVuY3Rpb25TdHJpbmdOYXRpdmVDb2RlKHN0cikKIHsKICAgICByZXR1cm4g
c3RyLmVuZHNXaXRoKCJ7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFn
ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9C
cm93c2VyTWFuYWdlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTk3MDRmOGQxMDZlYzAxNDhhNjJiYzQwNjlk
MzcxZGRmNTAxNGZiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMKQEAgLTAsMCArMSwxMjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCitXSS5Ccm93c2VyTWFuYWdlciA9IGNsYXNzIEJyb3dzZXJNYW5hZ2Vy
Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZh
bHNlOworICAgICAgICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7
CisgICAgfQorCisgICAgLy8gVGFyZ2V0CisKKyAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuNCk6IEJyb3dzZXIgZGlkIG5vdCBl
eGlzdCB5ZXQuCisgICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJCcm93c2VyIikpCisgICAg
ICAgICAgICB0YXJnZXQuQnJvd3NlckFnZW50LmVuYWJsZSgpOworICAgIH0KKworICAgIC8vIFB1
YmxpYworCisgICAgZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9lbmFibGVkKTsKKworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICBm
b3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKQorICAgICAgICAg
ICAgdGhpcy5pbml0aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgZGlzYWJsZSgp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKworICAgICAg
ICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKSB7CisgICAg
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMuNCk6IEJyb3dzZXIgZGlkIG5vdCBleGlz
dCB5ZXQuCisgICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc0RvbWFpbigiQnJvd3NlciIpKQorICAg
ICAgICAgICAgICAgIHRhcmdldC5Ccm93c2VyQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuY2xlYXIoKTsKKworICAg
ICAgICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgaXNFeHRlbnNpb25TY2hl
bWUoc2NoZW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHNjaGVtZSAmJiBzY2hlbWUuZW5kc1dp
dGgoIi1leHRlbnNpb24iKTsKKyAgICB9CisKKyAgICBleHRlbnNpb25OYW1lRm9ySWQoZXh0ZW5z
aW9uSWQpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZp
ZXJNYXAuZ2V0KGV4dGVuc2lvbklkKSB8fCBudWxsOworICAgIH0KKworICAgIGV4dGVuc2lvbk5h
bWVGb3JVUkwodXJsKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0V4dGVu
c2lvblNjaGVtZShwYXJzZVVSTCh1cmwpLnNjaGVtZSkpOworCisgICAgICAgIGxldCBtYXRjaCA9
IHVybC5tYXRjaCgvXlthLXpcLV0qZXh0ZW5zaW9uOlwvXC8oWzAtOUEtRl17OH0tWzAtOUEtRl17
NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9KVwvLyk7CisgICAgICAgIGlm
ICghbWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhp
cy5leHRlbnNpb25OYW1lRm9ySWQobWF0Y2hbMV0pOworICAgIH0KKworICAgIGV4dGVuc2lvbk5h
bWVGb3JFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydChjb250ZXh0IGluc3RhbmNlb2YgV0kuRXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvbnRleHQudHlwZSA9PT0gV0kuRXhlY3V0aW9uQ29udGV4dC5UeXBlLlVz
ZXIpOworCisgICAgICAgIGxldCBtYXRjaCA9IGNvbnRleHQubmFtZS5tYXRjaCgvXltBLVphLXpd
KkV4dGVuc2lvbldvcmxkLShbMC05QS1GXXs4fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0fS1bMC05
QS1GXXs0fS1bMC05QS1GXXsxMn0pJC8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uTmFtZUZvcklk
KG1hdGNoWzFdKTsKKyAgICB9CisKKyAgICAvLyBCcm93c2VyT2JzZXJ2ZXIKKworICAgIGV4dGVu
c2lvbnNFbmFibGVkKGV4dGVuc2lvbnMpCisgICAgeworICAgICAgICBmb3IgKGxldCB7ZXh0ZW5z
aW9uSWQsIG5hbWV9IG9mIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCF0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcC5oYXMoZXh0ZW5zaW9uSWQpLCBgRXh0
ZW5zaW9uIGFscmVhZHkgZXhpc3RzIHdpdGggaWQgJyR7ZXh0ZW5zaW9uSWR9Jy5gKTsKKworICAg
ICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuc2V0KGV4dGVuc2lvbklk
LCBuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGV4dGVuc2lvbnNEaXNhYmxlZChleHRl
bnNpb25JZHMpCisgICAgeworICAgICAgICBmb3IgKGxldCBleHRlbnNpb25JZCBvZiBleHRlbnNp
b25JZHMpIHsKKyAgICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50
aWZpZXJNYXAudGFrZShleHRlbnNpb25JZCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChu
YW1lLCBgTWlzc2luZyBleHRlbnNpb24gd2l0aCBpZCAnJHtleHRlbnNpb25JZH0nLmApOworICAg
ICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmluZGV4IDg0
ZmEwMjYxNDQ2OWU3MDVjYTkxMWQzMjA3ZGJmZGU2OTkyZGM4YTMuLjMzNWU1ZWJhMWI1MjIxODkz
ODJiZWE1ZTRmMTg2Mzc4MzllY2FkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5q
cwpAQCAtMzUsNiArMzUsMTUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRpbWVvdXRJZGVu
dGlmaWVyID0gdW5kZWZpbmVkOwogICAgIH0KIAorICAgIC8vIFRhcmdldAorCisgICAgaW5pdGlh
bGl6ZVRhcmdldCh0YXJnZXQpCisgICAgeworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1Mg
MTMpOiBUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAgICBp
ZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIlRhcmdldC5zZXRQYXVzZU9uU3RhcnQiKSkKKyAgICAgICAg
ICAgIHRhcmdldC5UYXJnZXRBZ2VudC5zZXRQYXVzZU9uU3RhcnQodHJ1ZSk7CisgICAgfQorCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgdGFyZ2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggZGQxZDRjNjFiMzQ5M2UxOTY3ZTNiNzdh
YTg0NThhYWVhYTg3MzRlNi4uNjM0ZGI3NWI5YmFkMWNlNjRmYmY4ZTM5NjRkNTczYmYzY2VlYzVh
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApA
QCAtMzI4LDYgKzMyOCw3IEBACiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQW5pbWF0aW9u
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNh
dGlvbkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9Ccm93c2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9DUFVQcm9maWxlck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJv
dG9jb2wvQ1NTT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9DYW52YXNPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC04NjEsNiArODYyLDcgQEAKICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CcmVha3BvaW50UG9w
b3ZlckNvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9Ccm93c2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0NTU01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9DYWxsRnJhbWVUcmVlQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IkNvbnRyb2xsZXJzL0NhbnZhc01hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVl
dC5qcwppbmRleCBjOWZkMDJlNDExMzg1MGFkMjllNjJkMTJkZGJlY2YxNWVkZDM3Y2M3Li44Y2Ex
Yzc0YzYyNTJhOWIxY2NiYTFkMzY4ZTM3N2YyMzRkNDk3ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVl
dC5qcwpAQCAtMzIsNyArMzIsNiBAQCBXSS5DU1NTdHlsZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVT
aGVldCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwog
CiAgICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5fdXJsID0gbnVs
bDsKICAgICAgICAgdGhpcy5fcGFyZW50RnJhbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9vcmln
aW4gPSBudWxsOwogICAgICAgICB0aGlzLl9zdGFydExpbmVOdW1iZXIgPSAwOwpAQCAtNzAsNyAr
NjksNyBAQCBXSS5DU1NTdHlsZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVldCBleHRlbmRzIFdJ
LlNvdXJjZUNvZGUKIAogICAgIGdldCBpbmplY3RlZCgpCiAgICAgewotICAgICAgICByZXR1cm4g
aXNXZWJLaXRFeHRlbnNpb25TY2hlbWUodGhpcy51cmxDb21wb25lbnRzLnNjaGVtZSk7CisgICAg
ICAgIHJldHVybiBXSS5icm93c2VyTWFuYWdlci5pc0V4dGVuc2lvblNjaGVtZSh0aGlzLnVybENv
bXBvbmVudHMuc2NoZW1lKTsKICAgICB9CiAKICAgICBnZXQgYW5vbnltb3VzKCkKQEAgLTc4LDE4
ICs3Nyw2IEBAIFdJLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0IGV4dGVuZHMg
V0kuU291cmNlQ29kZQogICAgICAgICByZXR1cm4gIXRoaXMuaXNJbnNwZWN0b3JTdHlsZVNoZWV0
KCkgJiYgIXRoaXMuX3VybDsKICAgICB9CiAKLSAgICBnZXQgdXJsKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl91cmw7Ci0gICAgfQotCi0gICAgZ2V0IHVybENvbXBvbmVudHMoKQotICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQotICAgICAgICAgICAgdGhpcy5f
dXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll91cmxDb21wb25lbnRzOwotICAgIH0KLQogICAgIGdldCBtaW1lVHlwZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gInRleHQvY3NzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcwppbmRleCAyYzExNWU1MWM1YWZjY2M3
YWY4OTgwYjdhNmI0OGYxMDMyMGU1NDI4Li4wZWI1ODQ4ZGJkN2YxNzVhMjNjNzhmYWU4YWMwZGIy
ZDc5NDdhOGQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvUmVzb3VyY2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCkBAIC0yOCwxMCArMjgsMTAgQEAgV0kuUmVzb3VyY2Ug
PSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIHsKICAgICBjb25zdHJ1Y3Rv
cih1cmwsIHttaW1lVHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJlcXVl
c3RJZGVudGlmaWVyLCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEs
IHJlcXVlc3RTZW50VGltZXN0YW1wLCByZXF1ZXN0U2VudFdhbGx0aW1lLCBpbml0aWF0b3JDYWxs
RnJhbWVzLCBpbml0aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIGluaXRpYXRvck5vZGUsIG9yaWdp
bmFsUmVxdWVzdFdpbGxCZVNlbnRUaW1lc3RhbXB9ID0ge30pCiAgICAgewotICAgICAgICBzdXBl
cigpOwotCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CiAKKyAgICAgICAgc3VwZXIodXJs
KTsKKwogICAgICAgICBpZiAodHlwZSBpbiBXSS5SZXNvdXJjZS5UeXBlKQogICAgICAgICAgICAg
dHlwZSA9IFdJLlJlc291cmNlLlR5cGVbdHlwZV07CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09
ICJTdHlsZXNoZWV0IikgewpAQCAtMzksOCArMzksNiBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJl
c291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICAgICAgdHlwZSA9IFdJLlJlc291
cmNlLlR5cGUuU3R5bGVTaGVldDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VybCA9IHVy
bDsKLSAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX21p
bWVUeXBlID0gbWltZVR5cGU7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlQ29tcG9uZW50cyA9IG51
bGw7CiAgICAgICAgIHRoaXMuX3R5cGUgPSBSZXNvdXJjZS5yZXNvbHZlZFR5cGUodHlwZSwgbWlt
ZVR5cGUpOwpAQCAtMzEwLDcgKzMwOCw2IEBAIFdJLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2Ug
ZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCB1cmwoKSB7
IHJldHVybiB0aGlzLl91cmw7IH0KICAgICBnZXQgbWltZVR5cGUoKSB7IHJldHVybiB0aGlzLl9t
aW1lVHlwZTsgfQogICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90YXJnZXQ7IH0KICAg
ICBnZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KQEAgLTM1MiwxMyArMzQ5LDYgQEAg
V0kuUmVzb3VyY2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICBn
ZXQgY2FjaGVkUmVzcG9uc2VCb2R5U2l6ZSgpIHsgcmV0dXJuIHRoaXMuX2NhY2hlZFJlc3BvbnNl
Qm9keVNpemU7IH0KICAgICBnZXQgcmVkaXJlY3RzKCkgeyByZXR1cm4gdGhpcy5fcmVkaXJlY3Rz
OyB9CiAKLSAgICBnZXQgdXJsQ29tcG9uZW50cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMu
X3VybENvbXBvbmVudHMpCi0gICAgICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gcGFyc2VV
UkwodGhpcy5fdXJsKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBvbmVudHM7Ci0gICAg
fQotCiAgICAgZ2V0IGxvYWRlZFNlY3VyZWx5KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnVy
bENvbXBvbmVudHMuc2NoZW1lICE9PSAiaHR0cHMiICYmIHRoaXMudXJsQ29tcG9uZW50cy5zY2hl
bWUgIT09ICJ3c3MiICYmIHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09ICJzZnRwIikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3Jp
cHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0
LmpzCmluZGV4IGU0NGI5ZjY1NWM5ZjM4NDhiYjEzNTMxZGNhYzkzZGRhOGFhM2NmZGMuLjY1N2M1
NDFhZmIzNzhiZmZiZjc5YjRjODQ3MjA5MzBiYjJhMWE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcwpAQCAtMjcsNyAr
MjcsNyBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiB7
CiAgICAgY29uc3RydWN0b3IodGFyZ2V0LCBpZCwgcmFuZ2UsIHVybCwgc291cmNlVHlwZSwgaW5q
ZWN0ZWQsIHNvdXJjZVVSTCwgc291cmNlTWFwVVJMKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsK
KyAgICAgICAgc3VwZXIodXJsKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQgaW5z
dGFuY2VvZiBXSS5UYXJnZXQgfHwgdGhpcyBpbnN0YW5jZW9mIFdJLkxvY2FsU2NyaXB0KTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0UmFuZ2UpOwpAQCAt
MzUsNyArMzUsNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VD
b2RlCiAgICAgICAgIHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICAgICAgdGhpcy5faWQgPSBp
ZCB8fCBudWxsOwogICAgICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlIHx8IG51bGw7Ci0gICAgICAg
IHRoaXMuX3VybCA9IHVybCB8fCBudWxsOwogICAgICAgICB0aGlzLl9zb3VyY2VUeXBlID0gc291
cmNlVHlwZSB8fCBXSS5TY3JpcHQuU291cmNlVHlwZS5Qcm9ncmFtOwogICAgICAgICB0aGlzLl9z
b3VyY2VVUkwgPSBzb3VyY2VVUkwgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fc291cmNlTWFwcGlu
Z1VSTCA9IHNvdXJjZU1hcFVSTCB8fCBudWxsOwpAQCAtODAsNyArNzksNiBAQCBXSS5TY3JpcHQg
PSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgZ2V0IHRhcmdldCgpIHsg
cmV0dXJuIHRoaXMuX3RhcmdldDsgfQogICAgIGdldCBpZCgpIHsgcmV0dXJuIHRoaXMuX2lkOyB9
CiAgICAgZ2V0IHJhbmdlKCkgeyByZXR1cm4gdGhpcy5fcmFuZ2U7IH0KLSAgICBnZXQgdXJsKCkg
eyByZXR1cm4gdGhpcy5fdXJsOyB9CiAgICAgZ2V0IHNvdXJjZVR5cGUoKSB7IHJldHVybiB0aGlz
Ll9zb3VyY2VUeXBlOyB9CiAgICAgZ2V0IHNvdXJjZVVSTCgpIHsgcmV0dXJuIHRoaXMuX3NvdXJj
ZVVSTDsgfQogICAgIGdldCBzb3VyY2VNYXBwaW5nVVJMKCkgeyByZXR1cm4gdGhpcy5fc291cmNl
TWFwcGluZ1VSTDsgfQpAQCAtMTA4LDEzICsxMDYsNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3Jp
cHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VVUkw7
CiAgICAgfQogCi0gICAgZ2V0IHVybENvbXBvbmVudHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLl91cmxDb21wb25lbnRzKQotICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IHBh
cnNlVVJMKHRoaXMuX3VybCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25lbnRzOwot
ICAgIH0KLQogICAgIGdldCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb3VyY2UgPyB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZSA6ICJ0ZXh0L2phdmFzY3JpcHQiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nv
dXJjZUNvZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U291cmNlQ29kZS5qcwppbmRleCA0YTQwMzIzMDgzZDQ5OWRmOGZkMmQwOTExYjk1YmY5NTgzNjJk
ZTVjLi44Y2U3YjU4YTEzNDhhZjkzOTAxODM4ODZlZDg0OWYwNGQ2YWEzNmJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNl
Q29kZS5qcwpAQCAtMjUsMTAgKzI1LDEzIEBACiAKIFdJLlNvdXJjZUNvZGUgPSBjbGFzcyBTb3Vy
Y2VDb2RlIGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0
cnVjdG9yKHVybCkKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKKyAgICAgICAgdGhpcy5fdXJs
ID0gdXJsIHx8IG51bGw7CisgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMgPSBudWxsOworCiAg
ICAgICAgIHRoaXMuX29yaWdpbmFsUmV2aXNpb24gPSBuZXcgV0kuU291cmNlQ29kZVJldmlzaW9u
KHRoaXMpOwogICAgICAgICB0aGlzLl9jdXJyZW50UmV2aXNpb24gPSB0aGlzLl9vcmlnaW5hbFJl
dmlzaW9uOwogCkBAIC05OCw3ICsxMDEsMTQgQEAgV0kuU291cmNlQ29kZSA9IGNsYXNzIFNvdXJj
ZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCB1cmwoKQogICAgIHsKLSAgICAgICAg
Ly8gVG8gYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gdGhpcy5f
dXJsOworICAgIH0KKworICAgIGdldCB1cmxDb21wb25lbnRzKCkKKyAgICB7CisgICAgICAgIGlm
ICghdGhpcy5fdXJsQ29tcG9uZW50cykKKyAgICAgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMg
PSBwYXJzZVVSTCh0aGlzLl91cmwpOworICAgICAgICByZXR1cm4gdGhpcy5fdXJsQ29tcG9uZW50
czsKICAgICB9CiAKICAgICBnZXQgY29udGVudElkZW50aWZpZXIoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQnJvd3Nlck9ic2VydmVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQnJvd3Nl
ck9ic2VydmVyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2ZmVmZDI5NmY0YTcwMDhlY2IyNWM3NTg3NWFiZDE1
ZDNkZjhhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMKQEAgLTAsMCArMSwzOSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLkJyb3dzZXJPYnNlcnZlciA9IGNsYXNzIEJyb3dzZXJPYnNlcnZlciBleHRl
bmRzIEluc3BlY3RvckJhY2tlbmQuRGlzcGF0Y2hlcgoreworICAgIC8vIEV2ZW50cyBkZWZpbmVk
IGJ5IHRoZSAiQnJvd3NlciIgZG9tYWluLgorCisgICAgZXh0ZW5zaW9uc0VuYWJsZWQoZXh0ZW5z
aW9ucykKKyAgICB7CisgICAgICAgIFdJLmJyb3dzZXJNYW5hZ2VyLmV4dGVuc2lvbnNFbmFibGVk
KGV4dGVuc2lvbnMpOworICAgIH0KKworICAgIGV4dGVuc2lvbnNEaXNhYmxlZChleHRlbnNpb25J
ZHMpCisgICAgeworICAgICAgICBXSS5icm93c2VyTWFuYWdlci5leHRlbnNpb25zRGlzYWJsZWQo
ZXh0ZW5zaW9uSWRzKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQuanMKaW5kZXggNzkzNzA5ZWJlNWQ5ODUyZTIzNDhlYTQ5ZDViOTdlOGQ0
N2E2OWY1OC4uNGZkZTE4ZTRiZjA4OGZhNDc4OTcwODFlY2Y4ZGYzNGNmZmUwN2IyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlw
bGV4aW5nQmFja2VuZFRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCkBAIC0yNCw5ICsy
NCw2IEBACiAgKi8KIAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHdoZW4gY29ubmVjdGluZyB0byBh
IHRhcmdldCB3aGljaCBtdWx0aXBsZXhlcyB0byBvdGhlciB0YXJnZXRzLgotLy8gVGhlIG1haW4g
Y29ubmVjdGlvbiBpcyB0byBhIHRhcmdldCB0aGF0LCBjdXJyZW50bHksIGhhcyBvbmx5IGEgVGFy
Z2V0IGFnZW50LgotLy8gQWxsIG90aGVyIFRhcmdldHMgd2lsbCBoYXZlIHRoZWlyIG1lc3NhZ2Vz
IGJlIG11bHRpcGxleGVkIHRocm91Z2ggdGhpcwotLy8gbWFpbiBjb25uZWN0aW9uJ3MgVGFyZ2V0
IGFnZW50LgogCiBXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgTXVsdGlwbGV4
aW5nQmFja2VuZFRhcmdldCBleHRlbmRzIFdJLlRhcmdldAogewpAQCAtMzYsMTggKzMzLDE2IEBA
IFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgPSBjbGFzcyBNdWx0aXBsZXhpbmdCYWNrZW5k
VGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiAgICAgICAgIGNvbnN0IHRhcmdldElkID0gIm11bHRp
IjsKICAgICAgICAgc3VwZXIocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIldl
YiBQYWdlIiksIFdJLlRhcmdldFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5k
Q29ubmVjdGlvbik7CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuc2hhbGxvd0VxdWFs
KE9iamVjdC5rZXlzKHRoaXMuX2FnZW50cyksIFsiVGFyZ2V0Il0pLCAiQSBXZWJQYWdlIHRhcmdl
dCBzaG91bGQgb25seSBoYXZlIGEgc2luZ2xlIGFnZW50LiIpOworICAgICAgICBjb25zb2xlLmFz
c2VydChBcnJheS5zaGFsbG93RXF1YWwoT2JqZWN0LmtleXModGhpcy5fYWdlbnRzKSwgWyJCcm93
c2VyIiwgIlRhcmdldCJdKSk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFs
aXplKCkKICAgICB7Ci0gICAgICAgIC8vIEludGVudGlvbmFsbHkgbm90IGNhbGxpbmcgc3VwZXIu
IE5vIGFnZW50cyBvdGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudC4KLQotICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgMTMpOiBUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IGRpZCBub3QgZXhpc3Qg
eWV0LgotICAgICAgICBpZiAodGhpcy5oYXNDb21tYW5kKCJUYXJnZXQuc2V0UGF1c2VPblN0YXJ0
IikpCi0gICAgICAgICAgICB0aGlzLlRhcmdldEFnZW50LnNldFBhdXNlT25TdGFydCh0cnVlKTsK
KyAgICAgICAgLy8gT25seSBpbml0aWFsaXplIHdpdGggdGhlIG1hbmFnZXJzIHRoYXQgYXJlIGtu
b3duIHRvIHN1cHBvcnQgYSBtdWx0aXBsZXhpbmcgdGFyZ2V0LgorICAgICAgICBXSS5icm93c2Vy
TWFuYWdlci5pbml0aWFsaXplVGFyZ2V0KHRoaXMpOworICAgICAgICBXSS50YXJnZXRNYW5hZ2Vy
LmluaXRpYWxpemVUYXJnZXQodGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChUYXJn
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UYXJnZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UYXJnZXQuanMKaW5kZXggYzI2YTE5YTg4NWVhODkxNGFkNGZiZDg3ZGNiYzRmMzc3NzBi
NTk2YS4uOWRjYTJhYTI0NzVkZTc2YTFlMWYwOGFmZjJhMjdjNTliMGYyNTkwMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1Rhcmdl
dC5qcwpAQCAtMTMyLDYgKzEzMiw3IEBAIFdJLlRhcmdldCA9IGNsYXNzIFRhcmdldCBleHRlbmRz
IFdJLk9iamVjdAogICAgIGdldCBBbmltYXRpb25BZ2VudCgpIHsgcmV0dXJuIHRoaXMuX2FnZW50
cy5BbmltYXRpb247IH0KICAgICBnZXQgQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyByZXR1cm4g
dGhpcy5fYWdlbnRzLkFwcGxpY2F0aW9uQ2FjaGU7IH0KICAgICBnZXQgQXVkaXRBZ2VudCgpIHsg
cmV0dXJuIHRoaXMuX2FnZW50cy5BdWRpdDsgfQorICAgIGdldCBCcm93c2VyQWdlbnQoKSB7IHJl
dHVybiB0aGlzLl9hZ2VudHMuQnJvd3NlcjsgfQogICAgIGdldCBDUFVQcm9maWxlckFnZW50KCkg
eyByZXR1cm4gdGhpcy5fYWdlbnRzLkNQVVByb2ZpbGVyOyB9CiAgICAgZ2V0IENTU0FnZW50KCkg
eyByZXR1cm4gdGhpcy5fYWdlbnRzLkNTUzsgfQogICAgIGdldCBDYW52YXNBZ2VudCgpIHsgcmV0
dXJuIHRoaXMuX2FnZW50cy5DYW52YXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbAppbmRleCAxZDQ0NWEwNGNkZWJlZWNmYTdiMGNiMDhlZDZmYmJk
NGJmNDYxZTg0Li4xMGE2OTllZmI2YzBiNThkOWI0NjYzMmYyZTE5YzU3MTZmZjllOTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC04Niw2
ICs4Niw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQW5pbWF0aW9uT2JzZXJ2ZXIu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hl
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Ccm93c2Vy
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DUFVQcm9m
aWxlck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NT
T2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DYW52YXNP
YnNlcnZlci5qcyI+PC9zY3JpcHQ+CkBAIC0yNDEsNiArMjQyLDcgQEAKICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvQXVkaXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iQ29udHJvbGxlcnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvbnNvbGVNYW5hZ2VyLmpz
Ij48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Rlc3QvVGVzdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QvVGVzdC5qcwppbmRleCAzYzQzYWU3OGJlMTcyNzcwNzI5YjcwMzJhYmU1NDQ0M2M5NDZhOGJi
Li5hMjJiNTAzY2MzZDI0NzdiMGU2MmUxZGI2MzRjMzcxNjYyNzU0YzhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0yOSw2ICsy
OSw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBUaGUgaW5pdGlhbGl6YXRpb24g
b3JkZXIgc2hvdWxkIG1hdGNoIHRoZSBzYW1lIGluIE1haW4uanMuCiAgICAgSW5zcGVjdG9yQmFj
a2VuZC5yZWdpc3RlckFuaW1hdGlvbkRpc3BhdGNoZXIoV0kuQW5pbWF0aW9uT2JzZXJ2ZXIpOwog
ICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNhY2hlRGlzcGF0Y2hlcihX
SS5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJCcm93c2VyRGlzcGF0Y2hlcihXSS5Ccm93c2VyT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRpc3BhdGNoZXIoV0kuQ1BVUHJvZmlsZXJPYnNlcnZl
cik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIoV0kuQ1NTT2Jz
ZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDYW52YXNEaXNwYXRjaGVyKFdJ
LkNhbnZhc09ic2VydmVyKTsKQEAgLTUxLDYgKzUyLDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24o
KQogCiAgICAgLy8gSW5zdGFudGlhdGUgY29udHJvbGxlcnMgdXNlZCBieSB0ZXN0cy4KICAgICBX
SS5tYW5hZ2VycyA9IFsKKyAgICAgICAgV0kuYnJvd3Nlck1hbmFnZXIgPSBuZXcgV0kuQnJvd3Nl
ck1hbmFnZXIsCiAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIgPSBuZXcgV0kuVGFyZ2V0TWFuYWdl
ciwKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIgPSBuZXcgV0kuTmV0d29ya01hbmFnZXIsCiAg
ICAgICAgIFdJLmRvbVN0b3JhZ2VNYW5hZ2VyID0gbmV3IFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLApA
QCAtNzQsNiArNzYsNyBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBSZWdpc3Rl
ciBmb3IgZXZlbnRzLgogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRM
b2FkZWQiLCBXSS5jb250ZW50TG9hZGVkKTsKKyAgICBXSS5icm93c2VyTWFuYWdlci5lbmFibGUo
KTsKIAogICAgIC8vIFRhcmdldHMuCiAgICAgV0kuYmFja2VuZFRhcmdldCA9IG51bGw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0Nv
bnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlj
a0NvbnNvbGUuanMKaW5kZXggOWQyMzRiMjJkMGIyYzBhZTZmNjFmM2E4ODk2ZGIwZTFlYmQ0NDIx
ZC4uYzdiN2JjMmRhZjM4M2M4M2VmOGIxYWJlYzUxODI4MzU2MzZlYzY0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29u
c29sZS5qcwpAQCAtMTIxLDYgKzEyMSwxMiBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlj
a0NvbnNvbGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09IFdJ
LkV4ZWN1dGlvbkNvbnRleHQuVHlwZS5JbnRlcm5hbCkKICAgICAgICAgICAgIHJldHVybiBXSS51
bmxvY2FsaXplZFN0cmluZygiW0ludGVybmFsXSAiKSArIGNvbnRleHQubmFtZTsKIAorICAgICAg
ICBpZiAoY29udGV4dC50eXBlID09PSBXSS5FeGVjdXRpb25Db250ZXh0LlR5cGUuVXNlcikgewor
ICAgICAgICAgICAgbGV0IGV4dGVuc2lvbk5hbWUgPSBXSS5icm93c2VyTWFuYWdlci5leHRlbnNp
b25OYW1lRm9yRXhlY3V0aW9uQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChleHRl
bnNpb25OYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZShleHRlbnNpb25OYW1l
LCBtYXhMZW5ndGgpOworICAgICAgICB9CisKICAgICAgICAgbGV0IHRhcmdldCA9IGNvbnRleHQu
dGFyZ2V0OwogICAgICAgICBpZiAodGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldFR5cGUuV29ya2Vy
KQogICAgICAgICAgICAgcmV0dXJuIHRydW5jYXRlKHRhcmdldC5kaXNwbGF5TmFtZSwgbWF4TGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMK
aW5kZXggZTU2ZTRkMjUyZTFlMTU0YWUwNmNkMzdiNWY3NjZmOTgwNzc4MDkxMy4uM2NiMzViNjhk
MzEwMjdhN2JhZDdhZjM5Nzk2ZjFhMzc4MGRhZTk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTk2NSw3ICs5NjUsNyBAQCBXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsIGV4dGVuZHMgVwogCiAgICAgICAgIGxldCBwYXJlbnRUcmVlRWxlbWVudCA9IG51bGw7
CiAKLSAgICAgICAgaWYgKGlzV2ViS2l0RXh0ZW5zaW9uU2NoZW1lKHN0eWxlU2hlZXQudXJsQ29t
cG9uZW50cy5zY2hlbWUpKSB7CisgICAgICAgIGlmIChXSS5icm93c2VyTWFuYWdlci5pc0V4dGVu
c2lvblNjaGVtZShzdHlsZVNoZWV0LnVybENvbXBvbmVudHMuc2NoZW1lKSkgewogICAgICAgICAg
ICAgaWYgKCF0aGlzLl9leHRlbnNpb25TdHlsZVNoZWV0c0ZvbGRlclRyZWVFbGVtZW50KQogICAg
ICAgICAgICAgICAgIHRoaXMuX2V4dGVuc2lvblN0eWxlU2hlZXRzRm9sZGVyVHJlZUVsZW1lbnQg
PSBuZXcgV0kuRm9sZGVyVHJlZUVsZW1lbnQoV0kuVUlTdHJpbmcoIkV4dGVuc2lvbiBTdHlsZSBT
aGVldHMiKSwgbmV3IFdJLkNTU1N0eWxlU2hlZXRDb2xsZWN0aW9uKTsKICAgICAgICAgICAgIHBh
cmVudFRyZWVFbGVtZW50ID0gdGhpcy5fZXh0ZW5zaW9uU3R5bGVTaGVldHNGb2xkZXJUcmVlRWxl
bWVudDsKQEAgLTEwMjAsNyArMTAyMCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZXQgcGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQgPSBu
dWxsOwogCi0gICAgICAgICAgICBpZiAoaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc2NyaXB0LnVy
bENvbXBvbmVudHMuc2NoZW1lKSkgeworICAgICAgICAgICAgaWYgKFdJLmJyb3dzZXJNYW5hZ2Vy
LmlzRXh0ZW5zaW9uU2NoZW1lKHNjcmlwdC51cmxDb21wb25lbnRzLnNjaGVtZSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIXRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCkg
ewogICAgICAgICAgICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA9IG5ldyBXSS5TY3JpcHRDb2xs
ZWN0aW9uOwogICAgICAgICAgICAgICAgICAgICB0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9sZGVy
VHJlZUVsZW1lbnQgPSBuZXcgV0kuRm9sZGVyVHJlZUVsZW1lbnQoV0kuVUlTdHJpbmcoIkV4dGVu
c2lvbiBTY3JpcHRzIiksIGNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggNGRkOTlh
MDhiMDc2ZDIxOGUyMjVjOTU3NzRjYWY1OTkwNDJhOGEyMi4uMTMyZDYxNDdiMmI0N2FjN2E1MTUx
ZmI1MjJjMDJmMmExNjIwNTNhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC01Nyw2ICs1Nyw3IEBA
IHNldChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9HYW1lcGFkIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9HUFUiCiAgICAgIiR7
V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0luc3BlY3RvciIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVBy
b2Nlc3MvSW5zcGVjdG9yL0FnZW50cyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTGF1
bmNoZXIiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsiCiAgICAgIiR7V0VC
S0lUX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVk
U291cmNlcy5tYWtlCmluZGV4IDM0OWU1NGRjMzBjNDQ5ODJiY2Q4MmUwOWU5NGJiNjZkZTk5ZGNi
MTEuLmQ1NTdmNzY4ZTk0NWRiMmE3YzM3M2EyNmM5OGE1ZTFjNzhmMGQzMjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rl
cml2ZWRTb3VyY2VzLm1ha2UKQEAgLTgxLDYgKzgxLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJL
aXQyKS9VSVByb2Nlc3MvRG93bmxvYWRzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9HUFUg
XAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL0luc3BlY3RvciBcCisgICAgJChXZWJLaXQyKS9V
SVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTWVk
aWFTdHJlYW0gXAogICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsgXAogICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFj
LmNtYWtlCmluZGV4IGJlODZmNzNiN2U5Y2MwMDE2YjE4ODYyYWY4MDE4MmVkN2UzODE0YTUuLmVi
N2Y0OTE1YjVhNjUxNGVlZGFiNmEzZDA2ZGM5ZmNjYjJmYjI2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1h
Yy5jbWFrZQpAQCAtNTUsNiArNTUsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfUFJJVkFURV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRpY2F0
aW9uL2NvY29hIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db2NvYSIKICAgICAiJHtX
RUJLSVRfRElSfS9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uIgorICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0luc3BlY3Rvci9tYWMiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0xhdW5j
aGVyL21hYyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQKaW5kZXggNTMxMDkyMDNjYTIyY2I1ZjVkYjkzNTFmOWMyMzZlMDUzYWIxZTAwOS4u
YjM0ZWIwOTNjZGE3ZDdmYzE0ZjY4ZWM3Yjc0MTcwN2RmOThhZTRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBA
IC00MjYsNiArNDI2LDggQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGlsaXRp
ZXMuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQcm9j
ZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKIAorVUlQcm9jZXNz
L0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcAorCiBVSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNl
c0NvY29hLnR4dAppbmRleCBlYWEwZDg0ZmE1Y2ZhNzQwZDI3Yjc4YjkwN2VjOTU2OTkzMWNiMGRj
Li4xYTBiODcxZTE5Y2VlMjgxMWExNDJkNTg2M2E4NDU0OTRmN2E1ODhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2Vz
Q29jb2EudHh0CkBAIC00MDAsNiArNDAwLDggQEAgVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlH
YW1lcGFkUHJvdmlkZXJDb2NvYS5tbQogVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFBy
b3ZpZGVySU9TLm1tCiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMu
bW0KIAorVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorCiBV
SVByb2Nlc3MvSW5zcGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJv
Y2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
Lm1tCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0
b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGll
bnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMTQxMjNiMjU2MWM2Y2U2Zjk5NWZlMjJjM2EzNjBiYmJkZTQ4Yjky
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3Bl
Y3RvckNsaWVudC5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKK2NsYXNzIFdl
YlBhZ2VQcm94eTsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEluc3BlY3RvckNsaWVu
dCB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+
SW5zcGVjdG9yQ2xpZW50KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFj
aEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJv
eHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIEFQSQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaAppbmRleCA1NDUxMzAzNWIyNjFi
ZmQ1ZTE4N2VjOTQ1Nzk2MTk4ZWQwOWQ4OGIxLi5kOTIyYmUwYjFmN2UzY2ZhNTYyY2NmOWQ0Mjg4
ZDY0MmY5ZTVjZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VUlDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQu
aApAQCAtMTk5LDggKzE5OSw2IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogICAg
IHZpcnR1YWwgdm9pZCBydW5XZWJBdXRoZW50aWNhdGlvblBhbmVsKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViQXV0aGVudGljYXRpb25QYW5lbCYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktp
dDo6V2ViQXV0aGVudGljYXRpb25QYW5lbFJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsg
Y29tcGxldGlvbkhhbmRsZXIoV2ViS2l0OjpXZWJBdXRoZW50aWNhdGlvblBhbmVsUmVzdWx0OjpV
bmF2YWlsYWJsZSk7IH0KICNlbmRpZgotCi0gICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaEluc3Bl
Y3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7
IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKaW5kZXggOWI4MGQ1YmVh
MTc3YjhkYWIzNTMxODU5Y2FmODJhMTU2Yzc0YjlhNi4uMjVmNDZlYzQwNjM5NmY4N2ZlYWY2YWVj
MzQ1MjVkNzAxMGQ4MDg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oCkBAIC0zOSw3ICszOSw2IEBACiBAY2xh
c3MgX1dLQWN0aXZhdGVkRWxlbWVudEluZm87CiBAY2xhc3MgX1dLRWxlbWVudEFjdGlvbjsKIEBj
bGFzcyBfV0tGcmFtZUhhbmRsZTsKLUBjbGFzcyBfV0tJbnNwZWN0b3I7CiAKICNpZiBUQVJHRVRf
T1NfSU9TCiBAY2xhc3MgVUlDb250ZXh0TWVudUNvbmZpZ3VyYXRpb247CkBAIC0yMzgsMTEgKzIz
Nyw2IEBAIHN0cnVjdCBVSUVkZ2VJbnNldHM7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGdldENvbnRleHRNZW51RnJvbVByb3Bvc2VkTWVudTooTlNNZW51ICopbWVudSBm
b3JFbGVtZW50OihfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvICopZWxlbWVudCB1c2VySW5mbzoo
aWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXiko
TlNNZW51ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQp
KTsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUGVyZm9ybURyYWdP
cGVyYXRpb246KEJPT0wpaGFuZGxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpKTsK
IAotLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiBhIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgaXMg
YXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuIFRoaXMgaXMgbm90IGNhbGxlZCBpbiB0aGUgY2Fz
ZSBvZiByZW1vdGUgaW5zcGVjdGlvbi4KLSAgICBAcGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5z
cGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LgotKi8KLS0gKHZvaWQp
X3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoSW5zcGVjdG9yOihfV0tJbnNw
ZWN0b3IgKilpbnNwZWN0b3IgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSk7Ci0K
ICNlbmRpZiAvLyAhVEFSR0VUX09TX0lQSE9ORQogCiBAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA5N2FlNDZiN2NkNWZiMjA0YzU4
MTQ3OTVjZTc0ZTA4MWI3ZjlkYmMzLi5hYmMwNjQzZmYzMDAxYTZiNTk3NGI5NjIwNmIyZWRhMzE3
MjFmZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTM2LDYgKzM2LDcgQEAKICNpbXBvcnQgIkZ1bGxzY3JlZW5DbGllbnQuaCIKICNp
bXBvcnQgIkdsb2JhbEZpbmRJblBhZ2VTdGF0ZS5oIgogI2ltcG9ydCAiSWNvbkxvYWRpbmdEZWxl
Z2F0ZS5oIgorI2ltcG9ydCAiSW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIkxlZ2FjeVNl
c3Npb25TdGF0ZUNvZGluZy5oIgogI2ltcG9ydCAiTG9nZ2luZy5oIgogI2ltcG9ydCAiTWVkaWFV
dGlsaXRpZXMuaCIKQEAgLTk4LDYgKzk5LDcgQEAKICNpbXBvcnQgIl9XS0Z1bGxzY3JlZW5EZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJf
V0tJbnB1dERlbGVnYXRlLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIgogI2lt
cG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJl
Z2lzdHJ5SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgiCkBA
IC0zODUsNiArMzg3LDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihX
S1dlYlZpZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgX2ljb25Mb2FkaW5n
RGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7
CiAgICAgX3Jlc291cmNlTG9hZERlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlc291cmNl
TG9hZERlbGVnYXRlPihzZWxmKTsKKyAgICBfaW5zcGVjdG9yRGVsZWdhdGUgPSBtYWtlVW5pcXVl
PFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgW3NlbGYgX3NldFVwU1FM
aXRlRGF0YWJhc2VUcmFja2VyQ2xpZW50XTsKIApAQCAtMTU0Myw2ICsxNTQ2LDE3IEBAIC0gKF9X
S0luc3BlY3RvciAqKV9pbnNwZWN0b3IKICAgICByZXR1cm4gbmlsOwogfQogCistIChpZCA8X1dL
SW5zcGVjdG9yRGVsZWdhdGU+KV9pbnNwZWN0b3JEZWxlZ2F0ZQoreworICAgIHJldHVybiBfaW5z
cGVjdG9yRGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9pZClf
c2V0SW5zcGVjdG9yRGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVnYXRlPilkZWxlZ2F0ZQor
eworICAgIF9wYWdlLT5zZXRJbnNwZWN0b3JDbGllbnQoX2luc3BlY3RvckRlbGVnYXRlLT5jcmVh
dGVJbnNwZWN0b3JDbGllbnQoKSk7CisgICAgX2luc3BlY3RvckRlbGVnYXRlLT5zZXREZWxlZ2F0
ZShkZWxlZ2F0ZSk7Cit9CisKIC0gKF9XS0ZyYW1lSGFuZGxlICopX21haW5GcmFtZQogewogICAg
IGlmIChhdXRvKiBmcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNTcy
OTY2ZGJhOWVmYzg3ZTQ1MDMwZTc1YzBjYmQzOWUzZGQ1ODQ5ZS4uOGY5N2Y0MDg3ODM5NTI0NWI1
MGRkNjhhNzkwNWYyNzg1ZGJiNzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xh
c3MgQXR0YWNobWVudDsKIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBjbGFzcyBDb250aW51ZVVu
c2FmZUxvYWQgOiBib29sOwogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKK2NsYXNzIEluc3Bl
Y3RvckRlbGVnYXRlOwogY2xhc3MgTmF2aWdhdGlvblN0YXRlOwogY2xhc3MgUmVzb3VyY2VMb2Fk
RGVsZWdhdGU7CiBjbGFzcyBTYWZlQnJvd3NpbmdXYXJuaW5nOwpAQCAtMTEyLDYgKzExMyw3IEBA
IGNsYXNzIFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0
OjpVSURlbGVnYXRlPiBfdWlEZWxlZ2F0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpJ
Y29uTG9hZGluZ0RlbGVnYXRlPiBfaWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8V2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gX3Jlc291cmNlTG9hZERlbGVnYXRl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlPiBfaW5zcGVj
dG9yRGVsZWdhdGU7CiAKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlPj4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8
X1dLSW5wdXREZWxlZ2F0ZT4+IF9pbnB1dERlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMTkyYTU3YzA4
ODE1MjY0YmM2ODA2Mzc5M2JiNzNkNmQ1ZDUyNDNhNi4uMDQyYjM0ODViY2RkNmQwOTRhZGFlYjdk
YjhmYjg2YmEzMGYyZjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xMjYsNiArMTI2LDcgQEAgdHlwZWRlZiBO
U19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBAcHJvdG9jb2wgX1dLRnVsbHNj
cmVlbkRlbGVnYXRlOwogQHByb3RvY29sIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CiBAcHJvdG9j
b2wgX1dLSW5wdXREZWxlZ2F0ZTsKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZTsKIEBw
cm90b2NvbCBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tUZXh0TWFuaXB1
bGF0aW9uRGVsZWdhdGU7CiAKQEAgLTE3NSw2ICsxNzYsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMo
TlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldEFsbG93c1JlbW90ZUluc3BlY3Rpb246KSBCT09MIF9hbGxvd3NSZW1vdGVJbnNwZWN0aW9u
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlv
bk5hbWVPdmVycmlkZTopIE5TU3RyaW5nICpfcmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZSBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgX1dLSW5zcGVjdG9yICpfaW5zcGVjdG9yIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vh
aywgc2V0dGVyPV9zZXRJbnNwZWN0b3JEZWxlZ2F0ZTopIGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0
ZT4gX2luc3BlY3RvckRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dL
RnJhbWVIYW5kbGUgKl9tYWluRnJhbWUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwg
aW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0VGV4
dE1hbmlwdWxhdGlvbkRlbGVnYXRlOikgaWQgPF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZT4g
X3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggYWZjZGEwNjUwZjhhOTI3YjMzNDBhYzZhYWVh
N2ZiMGZkNjFmYjY0NC4uYjZiNGMxZWVkMjNiMGEzODkwY2RhNDAyYmVkODQzNTFhNDRhMjkyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
Lm1tCkBAIC0zMSw3ICszMSwxMCBAQAogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1w
b3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lSWRl
bnRpZmllci5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS0luc3BlY3RvcgogCkBAIC0xNTAsNiArMTUzLDI1
IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0
aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAgX2luc3BlY3Rvci0+c2V0RGlhZ25vc3Rp
Y0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0ZSk7CiB9CiAKKy0gKHZvaWQpX2Jyb3dzZXJFeHRl
bnNpb25zRW5hYmxlZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopZXh0
ZW5zaW9uSURUb05hbWVNYXAKK3sKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB0cmFuc2Zv
cm1lZDsKKyAgICB0cmFuc2Zvcm1lZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklE
VG9OYW1lTWFwLmNvdW50KTsKKyAgICBbZXh0ZW5zaW9uSURUb05hbWVNYXAgZW51bWVyYXRlS2V5
c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmXShOU1N0cmluZyAqZXh0ZW5zaW9uSUQsIE5TU3RyaW5n
ICpleHRlbnNpb25OYW1lLCBCT09MICopIHsKKyAgICAgICAgdHJhbnNmb3JtZWQuc2V0KGV4dGVu
c2lvbklELCBleHRlbnNpb25OYW1lKTsKKyAgICB9XTsKKyAgICBfaW5zcGVjdG9yLT5icm93c2Vy
RXh0ZW5zaW9uc0VuYWJsZWQoV1RGTW92ZSh0cmFuc2Zvcm1lZCkpOworfQorCistICh2b2lkKV9i
cm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklE
cworeworICAgIEhhc2hTZXQ8U3RyaW5nPiB0cmFuc2Zvcm1lZDsKKyAgICB0cmFuc2Zvcm1lZC5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklEcy5jb3VudCk7CisgICAgZm9yIChOU1N0
cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9uSURzKQorICAgICAgICB0cmFuc2Zvcm1lZC5h
ZGRWb2lkKGV4dGVuc2lvbklEKTsKKyAgICBfaW5zcGVjdG9yLT5icm93c2VyRXh0ZW5zaW9uc0Rp
c2FibGVkKFdURk1vdmUodHJhbnNmb3JtZWQpKTsKK30KKwogLy8gTUFSSzogX1dLSW5zcGVjdG9y
SW50ZXJuYWwgbWV0aG9kcwogCiAtIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRl
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMGI3ZGMwNzY4NWI1ZTEzZTdhNDc1ZWNhOWYzZTM1MzBmOTZmMmY3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S0luc3BlY3RvckRlbGVnYXRlLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNzIF9XS0luc3BlY3RvcjsKKworQHByb3Rv
Y29sIF9XS0luc3BlY3RvckRlbGVnYXRlIDxOU09iamVjdD4KK0BvcHRpb25hbAorCistICh2b2lk
KV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaEluc3BlY3RvcjooX1dLSW5z
cGVjdG9yICopaW5zcGVjdG9yOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVj
dG9yOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBicm93c2VyRG9tYWlu
RGlzYWJsZWRGb3JJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rv
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0
b3JQcml2YXRlLmgKaW5kZXggYzBkOTg0OTA3OThhNmNhYzUyNWJlNmNkYmM4YzM4YjRjNDFiYmI2
My4uZTIwMmFmMDdhNWM3MDNiM2E2YjRkYThkMzU0Y2U2Mjc0Mjc1NGFjNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yUHJpdmF0
ZS5oCkBAIC0zMSw0ICszMSw4IEBACiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0
ZXI9X3NldERpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU6KSBpZDxfV0tEaWFnbm9zdGljTG9nZ2lu
Z0RlbGVnYXRlPiBfZGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTsKIAorLy8gQnJvd3NlcgorLSAo
dm9pZClfYnJvd3NlckV4dGVuc2lvbnNFbmFibGVkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
TlNTdHJpbmcgKj4gKilleHRlbnNpb25JRFRvTmFtZTsKKy0gKHZvaWQpX2Jyb3dzZXJFeHRlbnNp
b25zRGlzYWJsZWQ6KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURzOworCiBAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKaW5kZXggYTM1OTNhZGY0
NGI4ZDM0YTdjNDYxYzZiMjkzMzJiYTk2ZjY3OTkyYi4uZTBkNDdjODM3ZjhhMGVmYzJkZmEzZmZk
OWFjYjllNDhmYTk0NWQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvVUlEZWxlZ2F0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaApAQCAtMTI0LDcgKzEyNCw2IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgcnVuT3Bl
blBhbmVsKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkqLCBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGEmJiwgQVBJOjpPcGVuUGFuZWxQYXJhbWV0ZXJzKiwgV2ViT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJQcm94eSopIGZpbmFsOwogICAgICAgICB2b2lkIGRpZEV4Y2VlZEJhY2tncm91bmRS
ZXNvdXJjZUxpbWl0V2hpbGVJbkZvcmVncm91bmQoV2ViUGFnZVByb3h5JiwgV0tSZXNvdXJjZUxp
bWl0KSBmaW5hbDsKICAgICAgICAgdm9pZCBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KFdlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBj
b25zdCBVUkwmLCBBUEk6OkRhdGEmKSBmaW5hbDsKLSAgICAgICAgdm9pZCBkaWRBdHRhY2hJbnNw
ZWN0b3IoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBmaW5hbDsKICNlbmRpZgog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgICAgIHZvaWQgc2hvdWxkQWxsb3dE
ZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2VzcyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdl
YkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CkBAIC0xOTksNyArMTk4LDYgQEAgcHJpdmF0ZToK
ICAgICAgICAgYm9vbCB3ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdnZXN0ZWRGaWxlbmFtZU1pbWVU
eXBlT3JpZ2luYXRpbmdVUkwgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdSdW5PcGVuUGFuZWxX
aXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9uSGFuZGxlciA6IDE7CiAgICAg
ICAgIGJvb2wgd2ViVmlld1JlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9uRm9yU2VjdXJpdHlP
cmlnaW5EZWNpc2lvbkhhbmRsZXIgOiAxOwotICAgICAgICBib29sIHdlYlZpZXdEaWRBdHRhY2hJ
bnNwZWN0b3IgOiAxOwogI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAg
ICAgICAgYm9vbCB3ZWJWaWV3U2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFj
Y2Vzc1JlcXVlc3RlZEJ5RnJhbWVEZWNpc2lvbkhhbmRsZXIgOiAxOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggYTNkMGRlZDZkZjA1NjZjYjc0NDkz
Zjk4ZWMyOGJjZTBlOGQ4OTNiMy4uZTVmYjY5ZDFlYjYwMjhkOWNjMDE5Y2U0YWMzMTQ0NWNiMDEz
NzU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0
ZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCkBA
IC00NywxMyArNDcsMTEgQEAKICNpbXBvcnQgIldLV2ViVmlld0ludGVybmFsLmgiCiAjaW1wb3J0
ICJXS1dpbmRvd0ZlYXR1cmVzSW50ZXJuYWwuaCIKICNpbXBvcnQgIldlYkV2ZW50RmFjdG9yeS5o
IgotI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKICNpbXBvcnQgIldlYk9wZW5QYW5lbFJl
c3VsdExpc3RlbmVyUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9y
dCAiX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCi0jaW1wb3J0
ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLV2ViQXV0aGVudGljYXRpb25Q
YW5lbEludGVybmFsLmgiCiAjaW1wb3J0IDxXZWJDb3JlL0ZvbnRBdHRyaWJ1dGVzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgpAQCAtMTMzLDcgKzEzMSw2IEBAIHZv
aWQgVUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPFdLVUlEZWxlZ2F0ZT4gZGVsZWdhdGUpCiAg
ICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmlsZW5h
bWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6c2F2ZURhdGFUb0ZpbGU6c3VnZ2VzdGVkRmlsZW5hbWU6bWltZVR5
cGU6b3JpZ2luYXRpbmdVUkw6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1J1bk9w
ZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpydW5PcGVuUGFu
ZWxXaXRoUGFyYW1ldGVyczppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOildOwog
ICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lv
bkZvclNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6cmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbjpkZWNpc2lvbkhhbmRsZXI6KV07Ci0gICAgbV9kZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZEF0dGFjaEluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmRpZEF0dGFjaEluc3BlY3RvcjopXTsKICNlbmRpZgogI2lm
IEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZy
YW1lRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3IoX3dlYlZpZXc6c2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1Jl
cXVlc3RlZEJ5RnJhbWU6ZGVjaXNpb25IYW5kbGVyOildOwpAQCAtODQ4LDE4ICs4NDUsNiBAQCBi
b29sIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2Vi
RnJhbWVQcm94eSogd2ViRnJhbWVQcgogCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0KLXZvaWQgVUlE
ZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEF0dGFjaEluc3BlY3RvcihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKLXsKLSAgICBpZiAoIW1f
dWlEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0YWNoSW5zcGVjdG9yKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBhdXRvIGRlbGVnYXRlID0gbV91aURlbGVnYXRlLm1fZGVs
ZWdhdGUuZ2V0KCk7Ci0gICAgaWYgKCFkZWxlZ2F0ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
WyhpZCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4pZGVsZWdhdGUgX3dlYlZpZXc6bV91aURlbGVnYXRl
Lm1fd2ViVmlldyBkaWRBdHRhY2hJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKLX0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9y
QnJvd3NlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzcyMzE2NWI4NTRhMWQ4YjBkYjc2Y2Y2Yzg2
NzE2ODk3NDQ2ZDNlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCkBAIC0wLDAgKzEsMTIw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3Rv
ckJyb3dzZXJBZ2VudC5oIgorCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCisjaW5j
bHVkZSAiV2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9y
UHJvdG9jb2xPYmplY3RzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6SW5zcGVjdG9yQnJvd3NlckFnZW50
KFdlYlBhZ2VBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2Uo
IkJyb3dzZXIiX3MsIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5p
cXVlPEluc3BlY3Rvcjo6QnJvd3NlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVu
ZFJvdXRlcikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QnJvd3NlckJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CisgICAgLCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQoreworfQorCitJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSA9IGRlZmF1bHQ7
CisKK2Jvb2wgSW5zcGVjdG9yQnJvd3NlckFnZW50OjplbmFibGVkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVkSW5zcGVj
dG9yQnJvd3NlckFnZW50KCkgPT0gdGhpczsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdl
bnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVy
KiwgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9y
QnJvd3NlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRp
c2Nvbm5lY3RSZWFzb24pCit7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBkaXNhYmxl
KGlnbm9yZWQpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZykKK3sKKyAgICBpZiAoZW5hYmxlZCgpKSB7CisgICAgICAgIGVy
cm9yU3RyaW5nID0gIkJyb3dzZXIgZG9tYWluIGFscmVhZHkgZW5hYmxlZCJfczsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVy
KCkuc2V0RW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCh0aGlzKTsKKworICAgIGF1dG8qIGlu
c3BlY3RvciA9IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKKyAgICBBU1NFUlQoaW5zcGVj
dG9yKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFp
bkVuYWJsZWQobV9pbnNwZWN0ZWRQYWdlLCAqaW5zcGVjdG9yKTsKK30KKwordm9pZCBJbnNwZWN0
b3JCcm93c2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQoreworICAg
IGlmICghZW5hYmxlZCgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkJyb3dzZXIgZG9tYWlu
IGFscmVhZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2lu
c3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEVuYWJsZWRJbnNwZWN0b3JCcm93
c2VyQWdlbnQobnVsbHB0cik7CisKKyAgICBhdXRvKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFBh
Z2UuaW5zcGVjdG9yKCk7CisgICAgQVNTRVJUKGluc3BlY3Rvcik7CisgICAgbV9pbnNwZWN0ZWRQ
YWdlLmluc3BlY3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5EaXNhYmxlZChtX2luc3BlY3RlZFBh
Z2UsICppbnNwZWN0b3IpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZXh0ZW5z
aW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBleHRlbnNpb25JRFRvTmFtZSkK
K3sKKyAgICBBU1NFUlQoZW5hYmxlZCgpKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uc1BheWxvYWQg
PSBKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJyb3dzZXI6OkV4dGVuc2lvbj46
OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYgW2lkLCBuYW1lXSA6IGV4dGVuc2lvbklEVG9OYW1l
KSB7CisgICAgICAgIGF1dG8gZXh0ZW5zaW9uUGF5bG9hZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkJyb3dzZXI6OkV4dGVuc2lvbjo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRFeHRlbnNpb25J
ZChpZCkKKyAgICAgICAgICAgIC5zZXROYW1lKG5hbWUpCisgICAgICAgICAgICAucmVsZWFzZSgp
OworICAgICAgICBleHRlbnNpb25zUGF5bG9hZC0+YWRkSXRlbShXVEZNb3ZlKGV4dGVuc2lvblBh
eWxvYWQpKTsKKyAgICB9CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4dGVuc2lvbnNFbmFi
bGVkKFdURk1vdmUoZXh0ZW5zaW9uc1BheWxvYWQpKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93
c2VyQWdlbnQ6OmV4dGVuc2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4mJiBleHRlbnNpb25J
RHMpCit7CisgICAgQVNTRVJUKGVuYWJsZWQoKSk7CisKKyAgICBhdXRvIGV4dGVuc2lvbklkc1Bh
eWxvYWQgPSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYg
ZXh0ZW5zaW9uSWQgOiBleHRlbnNpb25JRHMpCisgICAgICAgIGV4dGVuc2lvbklkc1BheWxvYWQt
PmFkZEl0ZW0oZXh0ZW5zaW9uSWQpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5leHRlbnNp
b25zRGlzYWJsZWQoV1RGTW92ZShleHRlbnNpb25JZHNQYXlsb2FkKSk7Cit9CisKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTEzOTU4M2NkOGQ4NDIzMjlmNGIzZjM1MjFiMzYyNDBlYWI1MzkxMQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9y
QnJvd3NlckFnZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5
OwordHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJB
Z2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6
OkJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckJyb3dzZXJBZ2VudCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CitwdWJsaWM6CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KFdlYlBhZ2VBZ2VudENvbnRleHQm
KTsKKyAgICB+SW5zcGVjdG9yQnJvd3NlckFnZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBlbmFi
bGVkKCkgY29uc3Q7CisKKyAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKKyAgICB2b2lkIGRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVj
dG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsK
KworICAgIC8vIEJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOworCisgICAgdm9pZCBleHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywg
U3RyaW5nPiYmKTsKKyAgICB2b2lkIGV4dGVuc2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4m
Jik7CisKK3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6QnJvd3NlckZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6QnJvd3NlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAg
IFdlYlBhZ2VQcm94eSYgbV9pbnNwZWN0ZWRQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2Ev
SW5zcGVjdG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9D
b2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4YmU1NzMyMGUxY2M0NDA2NzM3
OTMxZTQxNTUzYzBmNDliYmI2ODkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNs
aWVudC5oIgorI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQ
dHIuaD4KKworQGNsYXNzIFdLV2ViVmlldzsKKworQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVn
YXRlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7Citj
bGFzcyBXZWJQYWdlUHJveHk7CisKK2NsYXNzIEluc3BlY3RvckRlbGVnYXRlIHsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JEZWxl
Z2F0ZShXS1dlYlZpZXcgKik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JD
bGllbnQ+IGNyZWF0ZUluc3BlY3RvckNsaWVudCgpOworCisgICAgUmV0YWluUHRyPGlkIDxfV0tJ
bnNwZWN0b3JEZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8
X1dLSW5zcGVjdG9yRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JD
bGllbnQgOiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckNs
aWVudChJbnNwZWN0b3JEZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9yQ2xpZW50KCk7CisK
KyAgICBwcml2YXRlOgorICAgICAgICAvLyBBUEk6Okluc3BlY3RvckNsaWVudAorICAgICAgICB2
b2lkIGRpZEF0dGFjaEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYlBhZ2VQcm94
eSYsIFdlYkluc3BlY3RvclByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYnJvd3NlckRv
bWFpbkRpc2FibGVkKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5Jikgb3ZlcnJpZGU7
CisKKyAgICAgICAgSW5zcGVjdG9yRGVsZWdhdGUmIG1faW5zcGVjdG9yRGVsZWdhdGU7CisgICAg
fTsKKworICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OworICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qg
eworICAgICAgICB1bnNpZ25lZCB3ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yIDogMTsKKyAgICAg
ICAgdW5zaWduZWQgd2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yIDogMTsK
KyAgICAgICAgdW5zaWduZWQgd2ViVmlld0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
ciA6IDE7CisgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMjkzNmU1NzIwNjIxZTFh
MDA0MDUwNWNjMzFiMzJhNzFiZGEwNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkluc3Bl
Y3RvckRlbGVnYXRlLmgiCisKKyNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCisjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckRlbGVnYXRlLmgiCisjaW1w
b3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworSW5z
cGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckRlbGVnYXRlKFdLV2ViVmlldyAqd2ViVmlldykKKyAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNw
ZWN0b3JDbGllbnQ+IEluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVJbnNwZWN0b3JDbGllbnQoKQor
eworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckNsaWVudD4oKnRoaXMpOworfQorCitS
ZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4gSW5zcGVjdG9yRGVsZWdhdGU6OmRl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxl
Z2F0ZSkKK3sKKyAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9yOildOworICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdCcm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvciA9IFtk
ZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmJyb3dzZXJEb21h
aW5FbmFibGVkRm9ySW5zcGVjdG9yOildOworICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdC
cm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0
b3I6KV07Cit9CisKK0luc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6Okluc3BlY3Rv
ckNsaWVudChJbnNwZWN0b3JEZWxlZ2F0ZSYgZGVsZWdhdGUpCisgICAgOiBtX2luc3BlY3RvckRl
bGVnYXRlKGRlbGVnYXRlKQoreworfQorCitJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xp
ZW50Ojp+SW5zcGVjdG9yQ2xpZW50KCkgPSBkZWZhdWx0OworCit2b2lkIEluc3BlY3RvckRlbGVn
YXRlOjpJbnNwZWN0b3JDbGllbnQ6OmRpZEF0dGFjaEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBX
ZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQoreworICAgIGlmICghbV9pbnNwZWN0b3JEZWxl
Z2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9k
ZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVs
ZWdhdGUgX3dlYlZpZXc6bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkg
ZGlkQXR0YWNoSW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5FbmFi
bGVkRm9ySW5zcGVjdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9
IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV9pbnNwZWN0b3JEZWxlZ2F0
ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3I6
d3JhcHBlcihpbnNwZWN0b3IpXTsKK30KKwordm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVj
dG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVj
dG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1faW5zcGVjdG9yRGVsZWdhdGUubV9k
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvcikK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckRlbGVn
YXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9yRGVsZWdhdGUubV93ZWJWaWV3LmdldCgp
LmdldCgpIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3Rv
cildOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCmluZGV4IDIzZDcw
NWU4M2U3MDZlYTgzNzRhYmJlODRlODE1ZGQ3YjYzYmJhNWEuLjQ0NTIyNDY1NzliNjIwMTBhYWUy
NmNhM2ZjOTUzM2VlOGY0NGRlZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAtMjcsOSArMjcsMTEgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eS5oIgogCisj
aW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIkFQ
SVVJQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50LmgiCiAjaW5jbHVk
ZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCiAj
aW5jbHVkZSAiV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1lc3NhZ2VzLmgiCkBAIC00
Niw3ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2VD
ZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+CisjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSAi
V2ViSW5zcGVjdG9yUHJveHlDbGllbnQuaCIKQEAgLTQ0Niw3ICs0NTEsNyBAQCB2b2lkIFdlYklu
c3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChib29sIGNhbkF0dGFjaCwg
Ym9vbCB1bmRlclRlcwogICAgIH0KIAogICAgIC8vIE5vdGlmeSBXZWJLaXQgY2xpZW50IHdoZW4g
YSBsb2NhbCBpbnNwZWN0b3IgYXR0YWNoZXMgc28gdGhhdCBpdCBtYXkgaW5zdGFsbCBkZWxlZ2F0
ZXMgcHJpb3IgdG8gdGhlIF9XS0luc3BlY3RvciBsb2FkaW5nIGl0cyBmcm9udGVuZC4KLSAgICBt
X2luc3BlY3RlZFBhZ2UtPnVpQ2xpZW50KCkuZGlkQXR0YWNoSW5zcGVjdG9yKCptX2luc3BlY3Rl
ZFBhZ2UsICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNsaWVudCgpLmRp
ZEF0dGFjaEluc3BlY3RvcigqbV9pbnNwZWN0ZWRQYWdlLCAqdGhpcyk7CiAKICAgICAvLyBCYWls
IG91dCBpZiB0aGUgY2xpZW50IGNsb3NlZCB0aGUgaW5zcGVjdG9yIGZyb20gdGhlIGRlbGVnYXRl
IG1ldGhvZC4KICAgICBpZiAoIW1faW5zcGVjdG9yUGFnZSkKQEAgLTYxOSw2ICs2MjQsMTggQEAg
dm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoYm9v
bCBhdmFpbGFibGUpCiAjZW5kaWYKIH0KIAordm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6YnJvd3Nl
ckV4dGVuc2lvbnNFbmFibGVkKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgZXh0ZW5zaW9uSURU
b05hbWUpCit7CisgICAgaWYgKGF1dG8qIGJyb3dzZXJBZ2VudCA9IG1faW5zcGVjdGVkUGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQoKSkKKyAg
ICAgICAgYnJvd3NlckFnZW50LT5leHRlbnNpb25zRW5hYmxlZChXVEZNb3ZlKGV4dGVuc2lvbklE
VG9OYW1lKSk7Cit9CisKK3ZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OmJyb3dzZXJFeHRlbnNpb25z
RGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYgZXh0ZW5zaW9uSURzKQoreworICAgIGlmIChhdXRv
KiBicm93c2VyQWdlbnQgPSBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5l
bmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KCkpCisgICAgICAgIGJyb3dzZXJBZ2VudC0+ZXh0
ZW5zaW9uc0Rpc2FibGVkKFdURk1vdmUoZXh0ZW5zaW9uSURzKSk7Cit9CisKIHZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OnNhdmUoY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBj
b250ZW50LCBib29sIGJhc2U2NEVuY29kZWQsIGJvb2wgZm9yY2VTYXZlQXMpCiB7CiAgICAgcGxh
dGZvcm1TYXZlKGZpbGVuYW1lLCBjb250ZW50LCBiYXNlNjRFbmNvZGVkLCBmb3JjZVNhdmVBcyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVj
dG9yUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0
b3JQcm94eS5oCmluZGV4IDJiMWZkZmNhMWRmYjhlNWM1NWZjY2Q4MDE2ZjQyMWY3MTQxNjNjY2Iu
LmJiYjZmNTczZWViMTgzNWM2MzhhZjMyNTk1NDQ1MTY2NGE4MWRmNTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oCkBA
IC0xNjIsNiArMTYyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0RGlhZ25vc3RpY0xvZ2dp
bmdBdmFpbGFibGUoYm9vbCk7CiAKKyAgICAvLyBCcm93c2VyCisgICAgdm9pZCBicm93c2VyRXh0
ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJik7CisgICAgdm9pZCBicm93
c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKEhhc2hTZXQ8U3RyaW5nPiYmKTsKKwogICAgIC8vIFByb3Zp
ZGVkIGJ5IHBsYXRmb3JtIFdlYkluc3BlY3RvclByb3h5IGltcGxlbWVudGF0aW9ucy4KICAgICBz
dGF0aWMgU3RyaW5nIGluc3BlY3RvclBhZ2VVUkwoKTsKICAgICBzdGF0aWMgU3RyaW5nIGluc3Bl
Y3RvclRlc3RQYWdlVVJMKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9J
bnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43
NjlkZTE3Mjc5ZTZiNDZkYzY0MzVlMWVmYjNjYjFkNzIwODM2Zjg4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JBZ2Vu
dEJhc2UuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEluc3BlY3RvciB7CitjbGFzcyBCYWNr
ZW5kRGlzcGF0Y2hlcjsKK2NsYXNzIEZyb250ZW5kUm91dGVyOworfQorCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OworCisvLyBGSVhNRTogbW92ZSB0aGlzIHRvIElu
c3BlY3RvciBuYW1lc3BhY2Ugd2hlbiByZW1haW5pbmcgYWdlbnRzIG1vdmUuCitzdHJ1Y3QgV2Vi
UGFnZUFnZW50Q29udGV4dCB7CisgICAgSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciYgZnJvbnRl
bmRSb3V0ZXI7CisgICAgSW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciYgYmFja2VuZERpc3Bh
dGNoZXI7CisgICAgV2ViUGFnZVByb3h5JiBpbnNwZWN0ZWRQYWdlOworfTsKKworY2xhc3MgSW5z
cGVjdG9yQWdlbnRCYXNlIDogcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlIHsK
K3Byb3RlY3RlZDoKKyAgICBJbnNwZWN0b3JBZ2VudEJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBX
ZWJQYWdlQWdlbnRDb250ZXh0JikKKyAgICAgICAgOiBJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50
QmFzZShuYW1lKQorICAgIHsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDFlZTI4YmY3MTYzNzQzNzE0MzMyMTUx
NDhhYTIwYTUxOTI3YThhMzMuLjE4NjFjZmY4MDYxMzExOTZlYTQ5YjRmOGFjYTY2NjViZWViYmY2
ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjYsOCArMjYsMTAgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxl
ci5oIgogCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50LmgiCiAjaW5jbHVkZSAiUHJv
dmlzaW9uYWxQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVk
ZSAiV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0
b3JUYXJnZXQuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JBZ2VudEJhc2UuaD4KQEAgLTQ3LDE0ICs0OSwxMiBAQCBzdGF0aWMg
U3RyaW5nIGdldFRhcmdldElEKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5JiBwcm92aXNpb25h
bFBhZ2UpCiB9CiAKIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlcihXZWJQYWdlUHJveHkmIHBhZ2UpCi0gICAgOiBtX3BhZ2UocGFnZSkKLSAgICAs
IG1fZnJvbnRlbmRSb3V0ZXIoRnJvbnRlbmRSb3V0ZXI6OmNyZWF0ZSgpKQorICAgIDogbV9mcm9u
dGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2JhY2tlbmREaXNw
YXRjaGVyKEJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUobV9mcm9udGVuZFJvdXRlci5jb3B5UmVm
KCkpKQorICAgICwgbV9wYWdlKHBhZ2UpCiB7CiAgICAgYXV0byB0YXJnZXRBZ2VudCA9IG1ha2VV
bmlxdWU8SW5zcGVjdG9yVGFyZ2V0QWdlbnQ+KG1fZnJvbnRlbmRSb3V0ZXIuZ2V0KCksIG1fYmFj
a2VuZERpc3BhdGNoZXIuZ2V0KCkpOwotCiAgICAgbV90YXJnZXRBZ2VudCA9IHRhcmdldEFnZW50
LmdldCgpOwotCiAgICAgbV9hZ2VudHMuYXBwZW5kKFdURk1vdmUodGFyZ2V0QWdlbnQpKTsKIH0K
IApAQCAtNzgsNiArNzgsOCBAQCBib29sIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpoYXNM
b2NhbEZyb250ZW5kKCkgY29uc3QKIAogdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6
Y29ubmVjdEZyb250ZW5kKEluc3BlY3Rvcjo6RnJvbnRlbmRDaGFubmVsJiBmcm9udGVuZENoYW5u
ZWwsIGJvb2wsIGJvb2wpCiB7CisgICAgY3JlYXRlTGF6eUFnZW50cygpOworCiAgICAgYm9vbCBj
b25uZWN0aW5nRmlyc3RGcm9udGVuZCA9ICFtX2Zyb250ZW5kUm91dGVyLT5oYXNGcm9udGVuZHMo
KTsKIAogICAgIG1fZnJvbnRlbmRSb3V0ZXItPmNvbm5lY3RGcm9udGVuZChmcm9udGVuZENoYW5u
ZWwpOwpAQCAtMjEyLDYgKzIxNCwyNyBAQCB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZQogICAgIG1f
dGFyZ2V0cy5zZXQobmV3VGFyZ2V0LT5pZGVudGlmaWVyKCksIFdURk1vdmUobmV3VGFyZ2V0KSk7
CiB9CiAKK1dlYlBhZ2VBZ2VudENvbnRleHQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Ondl
YlBhZ2VBZ2VudENvbnRleHQoKQoreworICAgIHJldHVybiB7CisgICAgICAgIG1fZnJvbnRlbmRS
b3V0ZXIuZ2V0KCksCisgICAgICAgIG1fYmFja2VuZERpc3BhdGNoZXIuZ2V0KCksCisgICAgICAg
IG1fcGFnZSwKKyAgICB9OworfQorCit2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpj
cmVhdGVMYXp5QWdlbnRzKCkKK3sKKyAgICBpZiAobV9kaWRDcmVhdGVMYXp5QWdlbnRzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2RpZENyZWF0ZUxhenlBZ2VudHMgPSB0cnVlOworCisgICAg
YXV0byB3ZWJQYWdlQ29udGV4dCA9IHdlYlBhZ2VBZ2VudENvbnRleHQoKTsKKworICAgIG1fYWdl
bnRzLmFwcGVuZChtYWtlVW5pcXVlPEluc3BlY3RvckJyb3dzZXJBZ2VudD4od2ViUGFnZUNvbnRl
eHQpKTsKK30KKwogdm9pZCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkVGFyZ2V0KHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4mJiB0YXJnZXQpCiB7CiAgICAgbV90
YXJnZXRBZ2VudC0+dGFyZ2V0Q3JlYXRlZCgqdGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmgKaW5kZXggNzhjYWVkZjBjMGNlODM2NzU1Njk1MDJkMTUwZmNjNDRlNWY5ODY4Yy4uOWNl
NWVmMzZiNjUyZmQ1NmE4NDNjMWQxMmE0YzNjM2NmNjM5MjgyYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyLmgKQEAgLTQxLDYgKzQxLDkgQEAgY2xhc3MgRnJvbnRlbmRSb3V0ZXI7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnQ7CitzdHJ1Y3Qg
V2ViUGFnZUFnZW50Q29udGV4dDsKKwogY2xhc3MgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIg
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKTsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKQEAgLTczLDE1ICs3NiwyNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsRGVzdHJveVByb3Zpc2lvbmFsUGFnZShjb25zdCBQcm92aXNpb25hbFBh
Z2VQcm94eSYpOwogICAgIHZvaWQgZGlkQ29tbWl0UHJvdmlzaW9uYWxQYWdlKFdlYkNvcmU6OlBh
Z2VJZGVudGlmaWVyIG9sZFdlYlBhZ2VJRCwgV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgbmV3V2Vi
UGFnZUlEKTsKIAorICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudCogZW5hYmxlZEluc3BlY3RvckJy
b3dzZXJBZ2VudCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2Vu
dDsgfQorICAgIHZvaWQgc2V0RW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudChJbnNwZWN0b3JC
cm93c2VyQWdlbnQqIGFnZW50KSB7IG1fZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCA9IGFn
ZW50OyB9CisKIHByaXZhdGU6CisgICAgV2ViUGFnZUFnZW50Q29udGV4dCB3ZWJQYWdlQWdlbnRD
b250ZXh0KCk7CisgICAgdm9pZCBjcmVhdGVMYXp5QWdlbnRzKCk7CisKICAgICB2b2lkIGFkZFRh
cmdldChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yVGFyZ2V0UHJveHk+JiYpOwogCi0gICAgV2Vi
UGFnZVByb3h5JiBtX3BhZ2U7CiAgICAgUmVmPEluc3BlY3Rvcjo6RnJvbnRlbmRSb3V0ZXI+IG1f
ZnJvbnRlbmRSb3V0ZXI7CiAgICAgUmVmPEluc3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5zcGVjdG9yOjpBZ2VudFJlZ2lzdHJ5IG1fYWdlbnRz
OworCisgICAgV2ViUGFnZVByb3h5JiBtX3BhZ2U7CisKICAgICBJbnNwZWN0b3I6Okluc3BlY3Rv
clRhcmdldEFnZW50KiBtX3RhcmdldEFnZW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVu
aXF1ZV9wdHI8SW5zcGVjdG9yVGFyZ2V0UHJveHk+PiBtX3RhcmdldHM7CisKKyAgICBJbnNwZWN0
b3JCcm93c2VyQWdlbnQqIG1fZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudDsKKworICAgIGJv
b2wgbV9kaWRDcmVhdGVMYXp5QWdlbnRzIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYTVl
MzZlNGMwYjMzNzZiMzk1NWQ2NDA0NGQ3MjFjMDJiZjI2OTIzNy4uOWI3NzI4NmUzYzU4YWFmMTgz
ZmMyYjgzNjcxOGViMzM5N2RlNzAxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiQVBJSGlzdG9yeUNsaWVudC5o
IgogI2luY2x1ZGUgIkFQSUhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJBUElJY29uTG9hZGlu
Z0NsaWVudC5oIgorI2luY2x1ZGUgIkFQSUluc3BlY3RvckNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJTG9hZGVyQ2xpZW50
LmgiCiAjaW5jbHVkZSAiQVBJTmF2aWdhdGlvbi5oIgpAQCAtNDMwLDYgKzQzMSw3IEBAIFdlYlBh
Z2VQcm94eTo6V2ViUGFnZVByb3h5KFBhZ2VDbGllbnQmIHBhZ2VDbGllbnQsIFdlYlByb2Nlc3NQ
cm94eSYgcHJvY2VzcywgUmVmCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgLCBtX2Nv
bnRleHRNZW51Q2xpZW50KG1ha2VVbmlxdWU8QVBJOjpDb250ZXh0TWVudUNsaWVudD4oKSkKICNl
bmRpZgorICAgICwgbV9pbnNwZWN0b3JDbGllbnQobWFrZVVuaXF1ZTxBUEk6Okluc3BlY3RvckNs
aWVudD4oKSkKICAgICAsIG1fbmF2aWdhdGlvblN0YXRlKG1ha2VVbmlxdWU8V2ViTmF2aWdhdGlv
blN0YXRlPigpKQogICAgICwgbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3BhZ2VHcm91cCgq
bV9jb25maWd1cmF0aW9uLT5wYWdlR3JvdXAoKSkKQEAgLTY2Myw2ICs2NjUsMTYgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklj
b25Mb2FkaW5nQ2xpZW50PiYKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRVc2VJY29u
TG9hZGluZ0NsaWVudChoYXNDbGllbnQpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnNldElu
c3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JDbGllbnQ+JiYgaW5z
cGVjdG9yQ2xpZW50KQoreworICAgIGlmICghaW5zcGVjdG9yQ2xpZW50KSB7CisgICAgICAgIG1f
aW5zcGVjdG9yQ2xpZW50ID0gbWFrZVVuaXF1ZTxBUEk6Okluc3BlY3RvckNsaWVudD4oKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1faW5zcGVjdG9yQ2xpZW50ID0gV1RGTW92ZShp
bnNwZWN0b3JDbGllbnQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UGFnZUxvYWRTdGF0
ZU9ic2VydmVyKHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcj4mJiBvYnNl
cnZlcikKIHsKICAgICBpZiAobV9wYWdlTG9hZFN0YXRlT2JzZXJ2ZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3Nzk3NTFhNzBlNjNlMTc0YTIzNTA0MTYyNjdh
YzA2YmFiNDQ2YzYuLjVkZmYwZGM1NGViYjg4NzQwN2QzYTI5ZTEyMWQwOTBiYjg1ZjdlODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzQsNiArMTc0LDcgQEAg
Y2xhc3MgRm9ybUNsaWVudDsKIGNsYXNzIEZ1bGxzY3JlZW5DbGllbnQ7CiBjbGFzcyBIaXN0b3J5
Q2xpZW50OwogY2xhc3MgSWNvbkxvYWRpbmdDbGllbnQ7CitjbGFzcyBJbnNwZWN0b3JDbGllbnQ7
CiBjbGFzcyBMb2FkZXJDbGllbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3MgTmF2aWdhdGlv
bkNsaWVudDsKQEAgLTU1MSw2ICs1NTIsOSBAQCBwdWJsaWM6CiAgICAgQVBJOjpJY29uTG9hZGlu
Z0NsaWVudCYgaWNvbkxvYWRpbmdDbGllbnQoKSB7IHJldHVybiAqbV9pY29uTG9hZGluZ0NsaWVu
dDsgfQogICAgIHZvaWQgc2V0SWNvbkxvYWRpbmdDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SWNvbkxvYWRpbmdDbGllbnQ+JiYpOwogCisgICAgQVBJOjpJbnNwZWN0b3JDbGllbnQmIGluc3Bl
Y3RvckNsaWVudCgpIHsgcmV0dXJuICptX2luc3BlY3RvckNsaWVudDsgfQorICAgIHZvaWQgc2V0
SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNsaWVudD4mJik7
CisKICAgICB2b2lkIHNldFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFn
ZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI+JiYpOwogCiAgICAgdm9pZCBpbml0aWFsaXplV2ViUGFnZSgp
OwpAQCAtMjI1NCw2ICsyMjU4LDcgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpDb250ZXh0TWVudUNsaWVudD4gbV9jb250ZXh0
TWVudUNsaWVudDsKICNlbmRpZgorICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3BlY3RvckNs
aWVudD4gbV9pbnNwZWN0b3JDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYlBhZ2VJbmpl
Y3RlZEJ1bmRsZUNsaWVudD4gbV9pbmplY3RlZEJ1bmRsZUNsaWVudDsKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZUxvYWRTdGF0ZTo6T2JzZXJ2ZXI+IG1fcGFnZUxvYWRTdGF0ZU9ic2VydmVyOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBiZTY0MjIwNDc3NWUyNTU1Y2NiYTVmZGU5ZjhlNGFlODM1NWVkZGQ1Li45Yzk3ZmE0ZTY1OWU2
MTA0YzA0YzI0Mjc3M2IyYzdjZGMwNTBlNTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzMzcsNiArMTMzNywxMSBAQAogCQk4NkY5
NTM2NTE4RkY1OEY1MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZGOTUzNjAxOEZGNEZENDAwMURCMkVG
IC8qIFByb2Nlc3NBc3NlcnRpb24uaCAqLzsgfTsKIAkJOERDMkVGNTMwNDg2QTY5NDAwOThCMjE2
IC8qIEluZm9QbGlzdC5zdHJpbmdzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwODlDMTY2NkZFODQxMTU4QzAyQUFDMDcgLyogSW5mb1BsaXN0LnN0cmlu
Z3MgKi87IH07CiAJCTkwOTg1NEVEMTJCQzRFMTgwMDBBRDA4MCAvKiBXZWJNZW1vcnlTYW1wbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MDU2MjBF
OTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5oICovOyB9OworCQk5MTk3OTQw
MjIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDAwMjNEQkM0OTAwMDI1Nzg5MiAv
KiBJbnNwZWN0b3JEZWxlZ2F0ZS5oICovOyB9OworCQk5MTk3OTQwNTIzREJDNEJCMDAyNTc4OTIg
LyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MTk3OTQwMzIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJv
d3NlckFnZW50LmggKi87IH07CisJCTkxOTc5NDA4MjNEQkM0Q0IwMDI1Nzg5MiAvKiBXZWJQYWdl
SW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5MTk3OTQwNzIzREJDNENBMDAyNTc4OTIgLyogV2ViUGFnZUluc3BlY3RvckFn
ZW50QmFzZS5oICovOyB9OworCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVj
dG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggKi87IH07
CisJCTkxOTc5NDBDMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE5Nzk0MEIyM0RC
QzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyMUQ1ODYxQTM4RUUzQzAwODA1MkJF
IC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyMUQ1ODUxQTM4RUUzQzAwODA1MkJFIC8qIFdLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5oICovOyB9OwogCQk5MzIxRDU4QTFBMzhGMTk2MDA4MDUy
QkUgLyogV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTMyMUQ1ODkxQTM4RjE5NjAwODA1MkJFIC8qIFdLSW1tZWRp
YXRlQWN0aW9uVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5MzIzNjExRTFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJh
clN0eWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MzIzNjExRDFCMDE1REE4MDBGQTkyMzIgLyogX1dLT3ZlcmxheVNjcm9sbGJhclN0eWxlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyNDYsNiAr
NDI1MSwxMyBAQAogCQk5MDU2MjBFNTEyQkMyNDc2MDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxl
ci5tYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIubWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJOTA1NjIwRTgxMkJDMjQ4QjAwMDc5
OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV2ViTWVtb3J5U2FtcGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTkwNTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3Rv
ckRlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5z
cGVjdG9yRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5NDAw
MjNEQkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk5MTk3OTQwMzIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFn
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckJyb3dzZXJB
Z2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTk3OTQwNDIzREJDNEJCMDAy
NTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckJyb3dzZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTkxOTc5NDA3MjNEQkM0Q0EwMDI1Nzg5MiAvKiBXZWJQYWdlSW5zcGVj
dG9yQWdlbnRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlBhZ2VJ
bnNwZWN0b3JBZ2VudEJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE5Nzk0
MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBUElJbnNwZWN0b3JDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJOTE5Nzk0MEIyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRl
bGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0luc3BlY3RvckRl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjFENTg1MUEzOEVFM0Mw
MDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMjFENTg3MUEzOEVFNzQwMDgwNTJCRSAvKiBXS0ltbWVk
aWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMjFENTg5MUEzOEYxOTYwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlv
blR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW1tZWRpYXRlQWN0
aW9uVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY4NTEsNiArNjg2Myw3
IEBACiAJCQkJOTkxRjQ5MkQyM0E4MTJDNTAwNTQ2NDJCIC8qIF9XS0luc3BlY3RvckRlYnVnZ2Fi
bGVJbmZvLmggKi8sCiAJCQkJOTkxRjQ5MkUyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvLm1tICovLAogCQkJCTk5MDM2QUUxMjNBOTQ5Q0UwMDAwQjA2QSAvKiBf
V0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggKi8sCisJCQkJOTE5Nzk0MEIyM0RC
QzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLmggKi8sCiAJCQkJNUNBRkRFNDQy
MTMwODQzNjAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggKi8sCiAJCQkJOTk3OUNB
NTcyMzdGNDlGMDAwMzlFQzA1IC8qIF9XS0luc3BlY3RvclByaXZhdGUuaCAqLywKIAkJCQlBNUMw
RjBBQTIwMDA2NTZFMDA1MzY1MzYgLyogX1dLSW5zcGVjdG9yV2luZG93LmggKi8sCkBAIC03OTgw
LDEwICs3OTkzLDIwIEBACiAJCQlwYXRoID0gY29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwogCQl9OworCQk5MTk3OTNGRTIzREJDNDc0MDAyNTc4OTIgLyogQ29jb2EgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTkxOTc5NDAwMjNEQkM0OTAw
MDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAorCQkJCTkxOTc5M0ZGMjNEQkM0OTAw
MDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gQ29j
b2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQk5MUQ5NzBENDIzREE2RDI1
MDA1N0RCQzMgLyogSW5zcGVjdG9yICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQk5MUQ5NzBENTIzREE2RDUwMDA1N0RCQzMgLyogQWdlbnRzICovLAorCQkJ
CTkxOTc5M0ZFMjNEQkM0NzQwMDI1Nzg5MiAvKiBDb2NvYSAqLywKIAkJCQk5MUQ5NzBENzIzREE2
RDVCMDA1N0RCQzMgLyogaW9zICovLAogCQkJCTkxRDk3MEQ2MjNEQTZENTUwMDU3REJDMyAvKiBt
YWMgKi8sCiAJCQkJQTVFMzkxRkIyMTgzQzFFOTAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFBy
b3h5LmNwcCAqLywKQEAgLTc5OTgsNiArODAyMSw3IEBACiAJCQkJQTU1QkE4MjgxQkEzOEUxRTAw
N0NEMzNEIC8qIFdlYkluc3BlY3RvclV0aWxpdGllcy5oICovLAogCQkJCUE1RUM2QUQyMjE1MUJE
NjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5jcHAgKi8sCiAJCQkJQTVFQzZBRDMyMTUx
QkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmggKi8sCisJCQkJOTE5Nzk0MDcyM0RC
QzRDQTAwMjU3ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLywKIAkJCQlBNTEz
RjUzRjIxNTRBNUNEMDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwICov
LAogCQkJCUE1MTNGNTNFMjE1NEE1Q0MwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVjdG9yQ29udHJv
bGxlci5oICovLAogCQkJKTsKQEAgLTgwMDcsNiArODAzMSw4IEBACiAJCTkxRDk3MEQ1MjNEQTZE
NTAwMDU3REJDMyAvKiBBZ2VudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTkxOTc5NDA0MjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2Vy
QWdlbnQuY3BwICovLAorCQkJCTkxOTc5NDAzMjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JC
cm93c2VyQWdlbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQWdlbnRzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTg2NTAsNiArODY3Niw3IEBACiAJCQkJN0FCNkVBNDQxRUVBQUUy
MzAwMDM3QjJCIC8qIEFQSUljb25EYXRhYmFzZUNsaWVudC5oICovLAogCQkJCTUxNDNCMjYxMURE
RDBEQTAwMDE0RkFDNiAvKiBBUElJY29uTG9hZGluZ0NsaWVudC5oICovLAogCQkJCTdBOEE5RDU3
MUVGMTE5QUEwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZUNsaWVudC5oICovLAorCQkJCTkx
OTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAqLywKIAkJCQkz
MUIzNjI5MDIxNDFFQUJDMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuY3BwICov
LAogCQkJCTMxQjM2MjhFMjE0MUVBNEQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVhdHVy
ZS5oICovLAogCQkJCTdDRTREMjA2MUE0Njc3NTcwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0
SGlzdG9yeUNsaWVudC5oICovLApAQCAtMTAwMDMsNiArMTAwMzAsNyBAQAogCQkJCTVDQUZERTQ1
MjEzMDg0NjMwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5
MUY0OTJGMjNBODEyQzYwMDU0NjQyQiAvKiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTkwMzZBRTIyM0E5NDlDRjAwMDBCMDZBIC8qIF9XS0luc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOTc5NDBDMjNE
QkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNUNBRkRFNDcyMTMwODQ2QTAwQjFGN0UxIC8qIF9XS0luc3BlY3RvckludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQk5OTc5Q0E1ODIzN0Y0OUYxMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9y
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVDMEYwQUIyMDAwNjU4MjAwNTM2NTM2IC8q
IF9XS0luc3BlY3RvcldpbmRvdy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDExMSw2ICsxMDEzOSw3
IEBACiAJCQkJN0EzQUNFMUIxRUVFRjc5QjAwQTg2NEE0IC8qIEFQSUluamVjdGVkQnVuZGxlUGFn
ZUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4QTlENUMxRUYxNDU5ODAwOTgw
MUFFIC8qIEFQSUluamVjdGVkQnVuZGxlUGFnZVJlc291cmNlTG9hZENsaWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzc2OTA3OUExOEYzMUNCMjAwMURGRjA0IC8qIEFQSUluamVjdGVkQnVuZGxl
UGFnZVVJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTk3OTQwQTIzREJDNEUwMDAyNTc4
OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzMUIzNjI4RjIx
NDFFQTVEMDA3QkZBNTMgLyogQVBJSW50ZXJuYWxEZWJ1Z0ZlYXR1cmUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTdDRTREMjA3MUE0Njc3NjEwMEM3RjE1MiAvKiBBUElMZWdhY3lDb250ZXh0SGlzdG9y
eUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUEyNDY0RjMxODkxRTQ1MTAwMjM0QzVCIC8q
IEFQSUxvYWRlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDI3OCw2ICsxMDMwNyw4IEBA
CiAJCQkJQkMxNERGNzcxMjBCNUI3OTAwODI2QzBDIC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQuaCBpbiBIZWFkZXJzICovLAogCQkJCTJERDQ1QURFMUU1Rjg5NzIwMDZDMzU1RiAvKiBJbnB1
dFZpZXdVcGRhdGVEZWZlcnJlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0U1NTBFMTUyMjgzNzUy
MjAwRDI4NzkxIC8qIEluc2VydFRleHRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTk3
OTQwNTIzREJDNEJCMDAyNTc4OTIgLyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmggaW4gSGVhZGVy
cyAqLywKKwkJCQk5MTk3OTQwMjIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RTM5MUZEMjE4M0MxRjgwMEM4RkIzMSAvKiBJbnNwZWN0
b3JUYXJnZXRQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzVCQ0U1REYxQzUwNzY2QTAwQ0RF
M0ZBIC8qIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyRDREMkM4MTFERjYwQkYzMDAyRUIxMEMgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvblJl
cXVlc3QuaCBpbiBIZWFkZXJzICovLApAQCAtMTA3MzAsNiArMTA3NjEsNyBAQAogCQkJCUJDN0I2
MjUyMTJBNDNDOTYwMEQxNzRBNCAvKiBXZWJQYWdlR3JvdXBEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzdCNjIxNTEyQTQyMTlBMDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwUHJveHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTJEOUVBMzBGMUE5NkNCRkYwMDJEMjgwNyAvKiBXZWJQYWdlSW5qZWN0
ZWRCdW5kbGVDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOTc5NDA4MjNEQkM0Q0IwMDI1
Nzg5MiAvKiBXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NTEzRjU0MDIxNTRBNUQ3MDA2NjI4NDEgLyogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1NDNFMzBDMjE1QzhBOEQwMDI3OUNEOSAvKiBXZWJQYWdlSW5z
cGVjdG9yVGFyZ2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTQzRTMwRDIxNUM4QTkwMDAyNzlD
RDkgLyogV2ViUGFnZUluc3BlY3RvclRhcmdldENvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGEwZWFi
MGNjMGY0YWE2NWViZGM2YzllNWU1YmRmMmMyMzkwMGEzYzUuLmVlY2E2NmYwNTRiOGY0YjZhMzEw
MmU4MmFmYmMwOGU0MmU0MjRhNzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAyMC0wMS0yOCAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2FmYXJpIGFw
cCBleHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmplY3RlZCBmaWxlcyB1c2UgdGhlIGV4
dGVuc2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdHMgbmFtZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCB0ZXN0IGZvciBgV1RGOjpIYXNo
U2V0OjpyZXNlcnZlSW5pdGlhbENhcGFjaXR5YC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6Cisg
ICAgICAgIEFjdHVhbGx5IGNoZWNrIHRoZSB2YWx1ZSBvZiBgV1RGOjpIYXNoTWFwOjpjYXBhY2l0
eWAuCisKIDIwMjAtMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBHaXZlIHVwIElDIHdoZW4gdW5rbm93biBzdHJ1Y3R1cmUgdHJhbnNpdGlv
biBoYXBwZW5zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
TWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4
IDY2YjU1NzQyYjNlNTM5MjViOGE1NDU5YzhhNGM2MjY2Y2M1MWMxMWEuLmY5YWIzZDU0Y2E1OTNh
NTgxNTc5MDhlOTgzZWUxOGI2N2FjOWFiNjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hNYXAuY3BwCkBAIC0xMDQ0LDMzICsxMDQ0LDQ4IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IFJlc2VydmVJbml0aWFsQ2FwYWNpdHkpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bWFwOwogICAgIEVYUEVDVF9FUSgwdSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBt
YXAuY2FwYWNpdHkoKSk7CisKICAgICBtYXAucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsK
ICAgICBFWFBFQ1RfRVEoMHUsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzMjc2OHUsIG1h
cC5jYXBhY2l0eSgpKTsKKwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQogICAg
ICAgICBtYXAuYWRkKG1ha2VTdHJpbmcoImZvbyIsIGkpLCBtYWtlU3RyaW5nKCJiYXIiLCBpKSk7
CiAgICAgRVhQRUNUX0VRKDk5OTl1LCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1
LCBtYXAuY2FwYWNpdHkoKSk7CiAgICAgRVhQRUNUX1RSVUUobWFwLmNvbnRhaW5zKCJmb28zIl9z
dHIpKTsKICAgICBFWFBFQ1RfU1RSRVEoImJhcjMiLCBtYXAuZ2V0KCJmb28zIl9zdHIpLnV0Zjgo
KS5kYXRhKCkpOworCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5OTk5OyArK2kpCiAgICAgICAg
IG1hcC5hZGQobWFrZVN0cmluZygiZXhjZXNzIiwgaSksIG1ha2VTdHJpbmcoImJheiIsIGkpKTsK
ICAgICBFWFBFQ1RfRVEoOTk5OXUgKyA5OTk5dSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDMyNzY4dSArIDMyNzY4dSwgbWFwLmNhcGFjaXR5KCkpOworCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCA5OTk5OyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1hcC5yZW1vdmUobWFrZVN0cmlu
ZygiZm9vIiwgaSkpKTsKICAgICBFWFBFQ1RfRVEoOTk5OXUsIG1hcC5zaXplKCkpOworICAgIEVY
UEVDVF9FUSgzMjc2OHUsIG1hcC5jYXBhY2l0eSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoImJhejMi
LCBtYXAuZ2V0KCJleGNlc3MzIl9zdHIpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA5OTk5OyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1hcC5yZW1vdmUobWFr
ZVN0cmluZygiZXhjZXNzIiwgaSkpKTsKICAgICBFWFBFQ1RfRVEoMHUsIG1hcC5zaXplKCkpOwot
ICAgIAorICAgIEVYUEVDVF9FUSg4dSwgbWFwLmNhcGFjaXR5KCkpOworCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gbWFwMjsKICAgICBtYXAyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoOTk5
OSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1hcDIucmVtb3ZlKCJmb28xIl9zKSk7CisKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDIwMDA7ICsraSkKICAgICAgICAgbWFwMi5hZGQobWFrZVN0cmluZygi
Zm9vIiwgaSksIG1ha2VTdHJpbmcoImJhciIsIGkpKTsKICAgICBFWFBFQ1RfRVEoMjAwMHUsIG1h
cDIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBtYXAyLmNhcGFjaXR5KCkpOworCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1h
cDIucmVtb3ZlKG1ha2VTdHJpbmcoImZvbyIsIGkpKSk7CiAgICAgRVhQRUNUX0VRKDB1LCBtYXAy
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDh1LCBtYXAyLmNhcGFjaXR5KCkpOwogfQogCiBURVNU
KFdURl9IYXNoTWFwLCBSYW5kb21fSXNFdmVubHlEaXN0cmlidXRlZEFmdGVyUmVtb3ZlKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCA0NGUyMTdlMGUxMDAx
YzNmMWVlYjU2NThmMGM4OTNkYjNjMjNhYjY1Li4yNjUyMzZlODQ2YmYwNzcxNTc2ODRhMzBiODA0
YmQwYjAyM2U4NTlhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNw
cApAQCAtMjksOSArMjksMTIgQEAKICNpbmNsdWRlICJEZWxldGVkQWRkcmVzc09mT3BlcmF0b3Iu
aCIKICNpbmNsdWRlICJNb3ZlT25seS5oIgogI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1
ZGUgIlRlc3QuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC01MDMsNCArNTA2LDUwIEBAIFRFU1QoV1RG
X0hhc2hTZXQsIFJlbW92ZUlmU2hyaW5rVG9CZXN0U2l6ZSkKICAgICBBU1NFUlRfRVEoc2V0MS5j
YXBhY2l0eSgpLCBvcmlnaW5hbENhcGFjaXR5KTsKIH0KIAorVEVTVChXVEZfSGFzaFNldCwgUmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSkKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIEVY
UEVDVF9FUSgwdSwgc2V0LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBzZXQuY2FwYWNpdHko
KSk7CisKKyAgICBzZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsKKyAgICBFWFBFQ1Rf
RVEoMHUsIHNldC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzMjc2OHUsIHNldC5jYXBhY2l0eSgp
KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQorICAgICAgICBzZXQuYWRk
KG1ha2VTdHJpbmcoImZvbyIsIGkpKTsKKyAgICBFWFBFQ1RfRVEoOTk5OXUsIHNldC5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgzMjc2OHUsIHNldC5jYXBhY2l0eSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShzZXQuY29udGFpbnMoImZvbzMiX3N0cikpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5
OTk5OyArK2kpCisgICAgICAgIHNldC5hZGQobWFrZVN0cmluZygiZXhjZXNzIiwgaSkpOworICAg
IEVYUEVDVF9FUSg5OTk5dSArIDk5OTl1LCBzZXQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3
Njh1ICsgMzI3Njh1LCBzZXQuY2FwYWNpdHkoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDk5OTk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LnJlbW92ZShtYWtlU3RyaW5nKCJm
b28iLCBpKSkpOworICAgIEVYUEVDVF9FUSg5OTk5dSwgc2V0LnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMyNzY4dSwgc2V0LmNhcGFjaXR5KCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5
OTk5OyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5yZW1vdmUobWFrZVN0cmluZygiZXhj
ZXNzIiwgaSkpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHNldC5zaXplKCkpOworICAgIEVYUEVDVF9F
USg4dSwgc2V0LmNhcGFjaXR5KCkpOworCisgICAgSGFzaFNldDxTdHJpbmc+IHNldDI7CisgICAg
c2V0Mi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDk5OTkpOworICAgIEVYUEVDVF9GQUxTRShzZXQy
LnJlbW92ZSgiZm9vMSJfcykpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kp
CisgICAgICAgIHNldDIuYWRkKG1ha2VTdHJpbmcoImZvbyIsIGkpKTsKKyAgICBFWFBFQ1RfRVEo
MjAwMHUsIHNldDIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBzZXQyLmNhcGFjaXR5
KCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKHNldDIucmVtb3ZlKG1ha2VTdHJpbmcoImZvbyIsIGkpKSk7CisgICAgRVhQRUNUX0VR
KDB1LCBzZXQyLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDh1LCBzZXQyLmNhcGFjaXR5KCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389211</attachid>
            <date>2020-01-29 18:11:15 -0800</date>
            <delta_ts>2020-02-25 19:55:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206911-20200129181114.patch</filename>
            <type>text/plain</type>
            <size>115122</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAxNDJlYTljNzk3NTgzYTcyMTdmMzg4YmUwYmIy
N2Y2ODk1ZTU1MWMuLjE4MThkNTRiM2MyYjBjY2VjNmQ0OWRmY2EwYjI0Mjc3ODYwYmI0NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAxLTI5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
YWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVz
ZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0cyBuYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1
cmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4K
KyAgICAgICAgQWRkIGEgYEJyb3dzZXJgIGFnZW50IHRoYXQgY2FuIGNvbW11bmljYXRlIHdpdGgg
dGhlIGluc3BlY3RlZCBwYWdlJ3MgY29udGFpbmluZyBicm93c2VyLiBJdAorICAgICAgICBsaXZl
cyBpbiB0aGUgVUlQcm9jZXNzIGFsb25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcg
dGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHBlcgorICAgICAgICBkZWJ1Z2dhYmxlIHJhdGhlciB0
aGFuIG9uZSBwZXIgdGFyZ2V0KSBhbmQgYXMgc3VjaCBpcyBub3Qgcm91dGVkIHRocm91Z2ggdGhl
IGBUYXJnZXRgIGFnZW50LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorCiAyMDIwLTAxLTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgaW5zdHJ1bWVudGF0aW9uIGZvciBzaG93aW5n
IGV4aXN0aW5nIFdlYiBBbmltYXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDI4MmYxNWE0NWJkODJkOTA0MzgzOTQxMTUx
N2VhMTNlNDJiMzhmMWYuLmRhYjZjYzM3YmMxMGE2ZmJlOGM1MmMwZDFjOGUwOTY4YzQ0NmUyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDEtMjkgIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9u
IGlzb2xhdGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmlsZXMgdXNlIHRoZSBleHRlbnNpb24ncyBp
ZGVudGlmaWVyIGluc3RlYWQgb2YgaXRzIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgw
MjY2MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIHd0
Zi9IYXNoU2V0Lmg6CisgICAgICAgIChXVEY6Okhhc2hTZXQ6OnJlc2VydmVJbml0aWFsQ2FwYWNp
dHkpOiBBZGRlZC4KKwogMjAyMC0wMS0yOCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lh
QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gU2hvdWxkIHVzZSBsaWdodCB0aGVtZSB1bmxl
c3Mgd2Vic2l0ZSBkZWNsYXJlcyBzdXBwb3J0IGZvciBkYXJrIHRoZW1lcyBpbiBjb2xvci1zY2hl
bWVzIHByb3BlcnR5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0YTM5MTA2NWI2NjNjMDBi
OGUzOGQ1YTQ0MjM4MjgyOTUzMzYxODFhLi5lMWM1ZWVkYWMxYTg3MzhlOWU3NjAyOWQ0YTg5Mzg1
Mjg5OWU4MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAy
MC0wMS0yOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2Vi
IEluc3BlY3Rvcjogc2FmYXJpIGFwcCBleHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmpl
Y3RlZCBmaWxlcyB1c2UgdGhlIGV4dGVuc2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdHMg
bmFtZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2
OTExCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9C
cm93c2VyTWFuYWdlci5qczogQWRkZWQuCisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlcik6Cisg
ICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6Cisg
ICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKToKKyAgICAgICAgKFdJ
LkJyb3dzZXJNYW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKToKKyAgICAgICAgKFdJLkJyb3dzZXJN
YW5hZ2VyLnByb3RvdHlwZS5pc0V4dGVuc2lvblNjaGVtZSk6CisgICAgICAgIChXSS5Ccm93c2Vy
TWFuYWdlci5wcm90b3R5cGUuZXh0ZW5zaW9uTmFtZUZvcklkKToKKyAgICAgICAgKFdJLkJyb3dz
ZXJNYW5hZ2VyLnByb3RvdHlwZS5leHRlbnNpb25OYW1lRm9yVVJMKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0Jyb3dzZXJPYnNlcnZlci5qczogQWRkZWQuCisgICAgICAgIChX
SS5Ccm93c2VyT2JzZXJ2ZXIucHJvdG90eXBlLmV4dGVuc2lvbnNFbmFibGVkKToKKyAgICAgICAg
KFdJLkJyb3dzZXJPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdl
dC5wcm90b3R5cGUuZ2V0IEJyb3dzZXJBZ2VudCk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5q
czoKKyAgICAgICAgKFdJLmxvYWRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0
bWw6CisgICAgICAgIEFkZCBhbiBvYnNlcnZlciBhbmQgbWFuYWdlciBmb3IgdGhlIGBCcm93c2Vy
YCBkb21haW4uCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGlu
Z0JhY2tlbmRUYXJnZXQuanM6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0
KToKKyAgICAgICAgKFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQucHJvdG90eXBlLmluaXRp
YWxpemUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdl
ci5qczoKKyAgICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJn
ZXQpOiBBZGRlZC4KKyAgICAgICAgVGhlIGBCcm93c2VyYCBhZ2VudCBsaXZlcyBpbiB0aGUgVUlQ
cm9jZXNzIGFsb25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcgdGhlcmUKKyAgICAg
ICAgc2hvdWxkIG9ubHkgYmUgb25lIHBlciBkZWJ1Z2dhYmxlIHJhdGhlciB0aGFuIG9uZSBwZXIg
dGFyZ2V0KSBhbmQgYXMgc3VjaCBpcyBub3Qgcm91dGVkCisgICAgICAgIHRocm91Z2ggdGhlIGBU
YXJnZXRgIGFnZW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNv
bGUuanM6CisgICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl9kaXNwbGF5TmFtZUZv
ckV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICBBdHRlbXB0IHRvIG1hdGNoIHRoZSBleGVjdXRp
b24gY29udGV4dCBuYW1lIGFnYWluc3QgYW55IGtub3duIGV4dGVuc2lvbiBpZGVudGlmaWVyLCBh
bmQKKyAgICAgICAgdXNlIHRoZSBleHRlbnNpb24ncyBkaXNwbGF5IG5hbWUgaWYgb25lIGlzIGZv
dW5kLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1VSTFV0aWxpdGllcy5qczoKKyAg
ICAgICAgKFdJLmRpc3BsYXlOYW1lRm9ySG9zdCk6CisgICAgICAgIEF0dGVtcHQgdG8gbWF0Y2gg
dGhlIGhvc3QgYWdhaW5zdCBhbnkga25vd24gZXh0ZW5zaW9uIGlkZW50aWZpZXIsIGFuZCB1c2Ug
dGhlIGV4dGVuc2lvbidzCisgICAgICAgIGRpc3BsYXkgbmFtZSBpZiBvbmUgaXMgZm91bmQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLmpzOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLl9hZGRTdHlsZVNoZWV0KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jh
c2UvVXRpbGl0aWVzLmpzOgorICAgICAgICAoaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUpOiBEZWxl
dGVkLgorICAgICAgICAqIC5lc2xpbnRyYzoKKyAgICAgICAgVXNlIGBXSS5Ccm93c2VyTWFuYWdl
ci5wcm90b3R5cGUuaXNFeHRlbnNpb25TY2hlbWVgIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBmdW5j
dGlvbi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanM6Cisg
ICAgICAgIChXSS5Tb3VyY2VDb2RlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBl
LmdldCB1cmwpOiBBZGRlZC4KKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdldCB1
cmxDb21wb25lbnRzKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
U3R5bGVTaGVldC5qczoKKyAgICAgICAgKFdJLkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV0ku
Q1NTU3R5bGVTaGVldC5wcm90b3R5cGUuZ2V0IGluamVjdGVkKToKKyAgICAgICAgKFdJLkNTU1N0
eWxlU2hlZXQucHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTU3R5
bGVTaGVldC5wcm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzOgorICAgICAgICAoV0kuUmVzb3VyY2Up
OgorICAgICAgICAoV0kuUmVzb3VyY2UucHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuUmVzb3VyY2UucHJvdG90eXBlLmdldCB1cmxDb21wb25lbnRzKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanM6CisgICAgICAgIChXSS5T
Y3JpcHQpOgorICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5nZXQgdXJsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLlNjcmlwdC5wcm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVk
LgorICAgICAgICBBbGwgc3ViY2xhc3NlcyBvZiBgV0kuU291cmNlQ29kZWAgaGF2ZSBzZXBhcmF0
ZSBgZ2V0IHVybGAgYW5kIGBnZXQgdXJsQ29tcG9uZW50c2AgZnVuY3Rpb25zLAorICAgICAgICBz
byB1bmlmeSB0aGVtIGluIHRoZSBjb21tb24gc3VwZXJjbGFzcyBzbyB0aGF0IGl0J3MgZ3VhcmFu
dGVlZCB0byBleGlzdC4KKwogMjAyMC0wMS0yOSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogYWRkIGluc3RydW1lbnRhdGlvbiBmb3Ig
c2hvd2luZyBleGlzdGluZyBXZWIgQW5pbWF0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwMmMxYzYwN2E0OTYy
M2VjZTQ3ZjNiYWQzMGRjZDk4Y2ZkMDg3NGRlLi42Yjk0YmJiYWMwNjliZDQzNmYyMjFhZTZjMDdl
OGQ1ZDZjZTdjNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDkwIEBACisyMDIwLTAxLTI5ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
YWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVz
ZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0cyBuYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1
cmcuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpl
bmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRFbmFibGVkSW5zcGVjdG9yQnJvd3Nl
ckFnZW50KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyOjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6d2ViUGFnZUFnZW50Q29udGV4dCk6
IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6Y3Jl
YXRlTGF6eUFnZW50cyk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
UGFnZUluc3BlY3RvckFnZW50QmFzZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVj
dG9yQWdlbnRCYXNlOjpJbnNwZWN0b3JBZ2VudEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9J
bnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJvd3NlckFnZW50OjpJbnNwZWN0b3JC
cm93c2VyQWdlbnQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVu
YWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRpZENyZWF0
ZUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJB
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQpOgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3Rv
ckJyb3dzZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dz
ZXJBZ2VudDo6ZXh0ZW5zaW9uc0VuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JC
cm93c2VyQWdlbnQ6OmV4dGVuc2lvbnNEaXNhYmxlZCk6CisgICAgICAgIEFkZCBhIGBCcm93c2Vy
YCBhZ2VudCB0aGF0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIHRoZSBpbnNwZWN0ZWQgcGFnZSdzIGNv
bnRhaW5pbmcgYnJvd3Nlci4gSXQKKyAgICAgICAgbGl2ZXMgaW4gdGhlIFVJUHJvY2VzcyBhbG9u
Z3NpZGUgdGhlIGBUYXJnZXRgIGFnZW50IChtZWFuaW5nIHRoZXJlIHNob3VsZCBvbmx5IGJlIG9u
ZSBwZXIKKyAgICAgICAgZGVidWdnYWJsZSByYXRoZXIgdGhhbiBvbmUgcGVyIHRhcmdldCkgYW5k
IGFzIHN1Y2ggaXMgbm90IHJvdXRlZCB0aHJvdWdoIHRoZSBgVGFyZ2V0YCBhZ2VudC4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjppbnNwZWN0b3JDbGllbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQYWdlUHJv
eHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9pbml0aWFsaXplV2l0aENvbmZpZ3VyYXRpb246XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfaW5zcGVjdG9yRGVsZWdhdGVdKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfc2V0
SW5zcGVjdG9yRGVsZWdhdGU6XSk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldEluc3BlY3RvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNw
ZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JEZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVJbnNwZWN0b3JDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6ZGVsZWdhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3Ip
OgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpi
cm93c2VyRG9tYWluRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRl
OjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChBUEk6Oklu
c3BlY3RvckNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IpOgorICAgICAgICAoQVBJOjpJ
bnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5FbmFibGVkKToKKyAgICAgICAgKEFQSTo6SW5z
cGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRGlzYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaDogQWRkZWQuCisgICAgICAgIEludHJv
ZHVjZSBhbiBpbnNwZWN0b3IgZGVsZWdhdGUgU1BJIGZvciBjb21tdW5pY2F0aW5nIGluZm9ybWF0
aW9uIHJlbGF0ZWQgdG8gV2ViIEluc3BlY3Rvci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLSW5zcGVjdG9yLm1tOgorICAgICAgICAoLVtfV0tJbnNwZWN0b3IgX2Jyb3dzZXJFeHRl
bnNpb25zRW5hYmxlZDpdKTogQWRkZWQuCisgICAgICAgICgtW19XS0luc3BlY3RvciBfYnJvd3Nl
ckV4dGVuc2lvbnNEaXNhYmxlZDpdKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViSW5zcGVjdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94
eTo6b3BlbkxvY2FsSW5zcGVjdG9yRnJvbnRlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNw
ZWN0b3JQcm94eTo6YnJvd3NlckV4dGVuc2lvbnNFbmFibGVkKTogQWRkZWQuCisgICAgICAgIChX
ZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpicm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKTogQWRk
ZWQuCisgICAgICAgIEFkZCBTUEkgZm9yIHdoZW4gZXh0ZW5zaW9ucyBhcmUgZW5hYmxlZC9kaXNh
YmxlZCBzbyB0aGF0IFdlYiBJbnNwZWN0b3IgY2FuIHVwZGF0ZS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9VSURlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6OlVJRGVsZWdhdGU6OnNldERlbGVnYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OmRpZEF0dGFjaEluc3BlY3Rvcik6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOgorICAgICAg
ICAoQVBJOjpVSUNsaWVudDo6ZGlkQXR0YWNoSW5zcGVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgTW92
ZSBgX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9yOmAgZnJvbSBgV0tVSURlbGVnYXRlUHJpdmF0
ZWAgdG8gYF9XS0luc3BlY3RvckRlbGVnYXRlYC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogUGxhdGZvcm1NYWMu
Y21ha2U6CisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogU291cmNlc0NvY29hLnR4
dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0w
MS0yOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjI1NDM3OS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCA5MWU0MjdjMzBjNTExNjNlZGQ5ZjEwNmQ0MmY5NWUwOWQwMmJlOWM0Li40
MDRmZTczMTljZWVmZDNkMmY0NDc2YzI2NWY0MzIzODI0MTM0MDRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTUyLDYgKzExNTIsNyBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfSU5TUEVDVE9SX0RPTUFJTlMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9y
L3Byb3RvY29sL0RPTVN0b3JhZ2UuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRGF0YWJhc2UuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9p
bnNwZWN0b3IvcHJvdG9jb2wvRGVidWdnZXIuanNvbgorICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2luc3BlY3Rvci9wcm90b2NvbC9HZW5lcmljVHlwZXMuanNvbgogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRl
eCA5ZWFkNjUzZmFhYWIxODkzZWI5MmRkMDJlOTc1Nzk2NmRmYTk5YWM0Li4yMzQwY2RmYWM0NjFi
OWI2YjMxYjA1NzhiMjVhZmI1NTViYWRhZDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtOTAsNiArOTAsNyBA
QCAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbgogJChQ
Uk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0RPTVN0b3JhZ2UuanNvbgogJChQUk9KRUNU
X0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0RhdGFiYXNlLmpzb24KICQoUFJPSkVDVF9ESVIpL2lu
c3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uCiskKFBST0pFQ1RfRElSKS9pbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
R2VuZXJpY1R5cGVzLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9wcm90b2NvbC9IZWFw
Lmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9wcm90b2NvbC9JbmRleGVkREIuanNvbgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCBlMmEzNmZhODc2
NDkwOWFiZmQwZTE4OTZkM2E5YTdjMzYxZjFiMjNhLi5lOWQ4MDRkOWU4YmU1YzM0NWVmNDcyMTll
MGU5OTZkMzE5YmJmOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtMjQ5LDYgKzI0OSw3IEBAIElOU1BFQ1RPUl9ET01BSU5TIDo9IFwKICAgICAkKEph
dmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NU3RvcmFnZS5qc29uIFwKICAgICAk
KEphdmFTY3JpcHRDb3JlKS9pbnNwZWN0b3IvcHJvdG9jb2wvRGF0YWJhc2UuanNvbiBcCiAgICAg
JChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0RlYnVnZ2VyLmpzb24gXAorICAg
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9Ccm93c2VyLmpzb24gXAogICAg
ICQoSmF2YVNjcmlwdENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9HZW5lcmljVHlwZXMuanNvbiBc
CiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0hlYXAuanNvbiBcCiAg
ICAgJChKYXZhU2NyaXB0Q29yZSkvaW5zcGVjdG9yL3Byb3RvY29sL0luc3BlY3Rvci5qc29uIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJv
d3Nlci5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Ccm93
c2VyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZmUwY2Y5Y2E5YjA2Mjg5ODM2N2VkZDMyNTlhN2RkYWMwMzdk
MTU5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
cHJvdG9jb2wvQnJvd3Nlci5qc29uCkBAIC0wLDAgKzEsNDYgQEAKK3sKKyAgICAiZG9tYWluIjog
IkJyb3dzZXIiLAorICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgQnJvd3NlciBkb21haW4gY29udGFp
bnMgY29tbWFuZHMgYW5kIGV2ZW50cyByZWxhdGVkIHRvIGdldHRpbmcgaW5mb3JtYXRpb24gYWJv
dXQgdGhlIGJyb3dzZXIgIiwKKyAgICAiZGVidWdnYWJsZVR5cGVzIjogWyJ3ZWItcGFnZSJdLAor
ICAgICJ0YXJnZXRUeXBlcyI6IFsid2ViLXBhZ2UiXSwKKyAgICAidHlwZXMiOiBbCisgICAgICAg
IHsKKyAgICAgICAgICAgICJpZCI6ICJFeHRlbnNpb25JZCIsCisgICAgICAgICAgICAidHlwZSI6
ICJzdHJpbmciLAorICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlVuaXF1ZSBleHRlbnNpb24g
aWRlbnRpZmllci4iCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJpZCI6ICJF
eHRlbnNpb24iLAorICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBhbiBleHRlbnNpb24uIiwKKyAgICAgICAg
ICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXh0ZW5zaW9u
SWQiLCAiJHJlZiI6ICJFeHRlbnNpb25JZCIsICJkZXNjcmlwdGlvbiI6ICJFeHRlbnNpb24gaWRl
bnRpZmllci4iIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuYW1lIiwgInR5cGUiOiAi
c3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIlRoZSBkaXNwbGF5IG5hbWUgZm9yIHRoZSBleHRlbnNp
b24uIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdLAorICAgICJjb21tYW5kcyI6
IFsKKyAgICAgICAgeworICAgICAgICAgICAgIm5hbWUiOiAiZW5hYmxlIiwKKyAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJFbmFibGVzIEJyb3dzZXIgZG9tYWluIGV2ZW50cy4iCisgICAgICAg
IH0sCisgICAgICAgIHsKKyAgICAgICAgICAgICJuYW1lIjogImRpc2FibGUiLAorICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkRpc2FibGVzIEJyb3dzZXIgZG9tYWluIGV2ZW50cy4iCisgICAg
ICAgIH0KKyAgICBdLAorICAgICJldmVudHMiOiBbCisgICAgICAgIHsKKyAgICAgICAgICAgICJu
YW1lIjogImV4dGVuc2lvbnNFbmFibGVkIiwKKyAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwor
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXh0ZW5zaW9ucyIsICJ0eXBlIjogImFycmF5Iiwg
Iml0ZW1zIjogeyAiJHJlZiI6ICJFeHRlbnNpb24iIH0sICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1h
dGlvbiBhYm91dCB0aGUgZW5hYmxlZCBleHRlbnNpb25zLiIgfQorICAgICAgICAgICAgXQorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJleHRlbnNpb25zRGlzYWJs
ZWQiLAorICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJleHRlbnNpb25JZHMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAi
RXh0ZW5zaW9uSWQiIH0sICJkZXNjcmlwdGlvbiI6ICJEaXNhYmxlZCBleHRlbnNpb24gaWRlbnRp
ZmllcnMuIiB9CisgICAgICAgICAgICBdCisgICAgICAgIH0KKyAgICBdCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmggYi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5k
ZXggZTI2ODdlOWIwNjJkZGM4NDk0NTk0MmU5MDI0NmFhODFhN2Y0NDU1NS4uODY5NzM4ZGZlNjU4
YzY2MTlhZDljOGQ2OGM1NWVjY2QwNWU4ZDIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
SGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaApAQCAtNzUsNiArNzUsOCBA
QCBwdWJsaWM6CiAgICAgdW5zaWduZWQgY2FwYWNpdHkoKSBjb25zdDsKICAgICBib29sIGlzRW1w
dHkoKSBjb25zdDsKIAorICAgIHZvaWQgcmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSh1bnNpZ25lZCBr
ZXlDb3VudCkgeyBtX2ltcGwucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShrZXlDb3VudCk7IH0KKwog
ICAgIGl0ZXJhdG9yIGJlZ2luKCkgY29uc3Q7CiAgICAgaXRlcmF0b3IgZW5kKCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvLmVzbGludHJjCmluZGV4IDM4Yjc2YzU2MmZhODZiYzMwNTk3MjViZGM2YWQ4
ZTU4YjMyM2M1ZWIuLmRhYTYxNDg1NjliMTZlNWNiMWNmMTg5ZDE4ZTM5OTBhZGIzMDNlMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJLy5lc2xpbnRyYwpAQCAtMTAxLDcgKzEwMSw2IEBACiAgICAgICAgICJpc1dl
Ykluc3BlY3RvckNvbnNvbGVFdmFsdWF0aW9uU2NyaXB0IjogdHJ1ZSwKICAgICAgICAgImlzV2Vi
SW5zcGVjdG9ySW50ZXJuYWxTY3JpcHQiOiB0cnVlLAogICAgICAgICAiaXNXZWJLaXRJbnRlcm5h
bFNjcmlwdCI6IHRydWUsCi0gICAgICAgICJpc1dlYktpdEV4dGVuc2lvblNjaGVtZSI6IHRydWUs
CiAgICAgICAgICJtdWx0aXBsaWNhdGlvblNpZ24iOiB0cnVlLAogICAgICAgICAicGFyc2VNSU1F
VHlwZSI6IHRydWUsCiAgICAgICAgICJyZXNvbHZlRG90c0luUGF0aCI6IHRydWUsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKaW5kZXggZWFj
ZTEyNjdjYTA2MTAwZjZjNzBhZjM1NGQyMDQ3ZThkMDRmZGU0Mi4uMjgzNTM3NjM4MzFkNDNiNDdm
OTljMDkwZWNhNWFhZjcxZWQ4OWFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtNTUsNiArNTUsOCBAQCBXSS5sb2FkZWQgPSBm
dW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBbmltYXRpb25EaXNw
YXRjaGVyKFdJLkFuaW1hdGlvbk9ic2VydmVyKTsKICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5y
ZWdpc3RlckFwcGxpY2F0aW9uQ2FjaGVEaXNwYXRjaGVyKQogICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyQXBwbGljYXRpb25DYWNoZURpc3BhdGNoZXIoV0kuQXBwbGljYXRpb25DYWNo
ZU9ic2VydmVyKTsKKyAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckJyb3dzZXJEaXNw
YXRjaGVyKQorICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQnJvd3NlckRpc3BhdGNo
ZXIoV0kuQnJvd3Nlck9ic2VydmVyKTsKICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckNQVVByb2ZpbGVyRGlzcGF0Y2hlcikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckNQVVByb2ZpbGVyRGlzcGF0Y2hlcihXSS5DUFVQcm9maWxlck9ic2VydmVyKTsKICAgICBpZiAo
SW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIpCkBAIC0xMDQsNiArMTA2LDcg
QEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIC8vIENyZWF0ZSB0aGUgc2luZ2xldG9uIG1h
bmFnZXJzIG5leHQsIGJlZm9yZSB0aGUgdXNlciBpbnRlcmZhY2UgZWxlbWVudHMsIHNvIHRoZSB1
c2VyIGludGVyZmFjZSBjYW4gcmVnaXN0ZXIKICAgICAvLyBhcyBldmVudCBsaXN0ZW5lcnMgb24g
dGhlc2UgbWFuYWdlcnMuCiAgICAgV0kubWFuYWdlcnMgPSBbCisgICAgICAgIFdJLmJyb3dzZXJN
YW5hZ2VyID0gbmV3IFdJLkJyb3dzZXJNYW5hZ2VyLAogICAgICAgICBXSS50YXJnZXRNYW5hZ2Vy
ID0gbmV3IFdJLlRhcmdldE1hbmFnZXIsCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyID0gbmV3
IFdJLk5ldHdvcmtNYW5hZ2VyLAogICAgICAgICBXSS5kb21TdG9yYWdlTWFuYWdlciA9IG5ldyBX
SS5ET01TdG9yYWdlTWFuYWdlciwKQEAgLTEzNSw2ICsxMzgsNyBAQCBXSS5sb2FkZWQgPSBmdW5j
dGlvbigpCiAgICAgV0kuZGF0YWJhc2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGF0YWJh
c2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzSW5zcGVjdGVkLCBXSS5fZGF0YWJhc2VXYXNJbnNw
ZWN0ZWQpOwogICAgIFdJLm5ldHdvcmtNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuTmV0d29y
a01hbmFnZXIuRXZlbnQuTWFpbkZyYW1lRGlkQ2hhbmdlLCBXSS5fbWFpbkZyYW1lRGlkQ2hhbmdl
KTsKICAgICBXSS5uZXR3b3JrTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5h
Z2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIFdJLl9mcmFtZVdhc0FkZGVkKTsKKyAgICBXSS5icm93
c2VyTWFuYWdlci5lbmFibGUoKTsKIAogICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCBXSS5fbWFpblJlc291cmNlRGlkQ2hh
bmdlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
QmFzZS9VUkxVdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1VSTFV0aWxpdGllcy5qcwppbmRleCBiNTk1MTllNTk5MDhkYjBkYWQxOGM3Zjc3Njk5
ZmJjZDMwNWY1Y2YxLi5lM2ZjYTJmZjkzOTFlZDI2ODNhNWNhODI4OGEwZGE1ZjQxYzAzMmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1VSTFV0
aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1VSTFV0aWxpdGllcy5qcwpAQCAtMzExLDcgKzMxMSwxMiBAQCBXSS51cmxXaXRob3V0RnJhZ21l
bnQgPSBmdW5jdGlvbih1cmxTdHJpbmcpCiAKIFdJLmRpc3BsYXlOYW1lRm9ySG9zdCA9IGZ1bmN0
aW9uKGhvc3QpCiB7CisgICAgbGV0IGV4dGVuc2lvbk5hbWUgPSBXSS5icm93c2VyTWFuYWdlci5l
eHRlbnNpb25OYW1lRm9ySWQoaG9zdCk7CisgICAgaWYgKGV4dGVuc2lvbk5hbWUpCisgICAgICAg
IHJldHVybiBleHRlbnNpb25OYW1lOworCiAgICAgLy8gRklYTUUgPHJkYXI6Ly9wcm9ibGVtLzEx
MjM3NDEzPjogVGhpcyBzaG91bGQgZGVjb2RlIHB1bnljb2RlIGhvc3RuYW1lcy4KKwogICAgIHJl
dHVybiBob3N0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9CYXNlL1V0aWxpdGllcy5qcwppbmRleCBiNzc0MjMxODQzNmNlMTU0OTZhNGFlMTFh
M2RhM2JmZWMyZDEzYjE0Li4wNDU5NjIyYTUxMWNmMzFmMjg2MjE1MzE1ZDVlYzQ1NmUyNDhlNmZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1V0
aWxpdGllcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L1V0aWxpdGllcy5qcwpAQCAtMTY0NCwxMSArMTY0NCw2IEBAIGZ1bmN0aW9uIGlzV2ViS2l0SW50
ZXJuYWxTY3JpcHQodXJsKQogICAgIHJldHVybiB1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoIl9fV2Vi
IikgJiYgdXJsLmVuZHNXaXRoKCJfXyIpOwogfQogCi1mdW5jdGlvbiBpc1dlYktpdEV4dGVuc2lv
blNjaGVtZShzY2hlbWUpCi17Ci0gICAgcmV0dXJuIHNjaGVtZSAmJiBzY2hlbWUuZW5kc1dpdGgo
Ii1leHRlbnNpb24iKTsKLX0KLQogZnVuY3Rpb24gaXNGdW5jdGlvblN0cmluZ05hdGl2ZUNvZGUo
c3RyKQogewogICAgIHJldHVybiBzdHIuZW5kc1dpdGgoIntcbiAgICBbbmF0aXZlIGNvZGVdXG59
Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9Ccm93c2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0Jyb3dzZXJNYW5hZ2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlOTcwNGY4
ZDEwNmVjMDE0OGE2MmJjNDA2OWQzNzFkZGY1MDE0ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Ccm93c2VyTWFuYWdl
ci5qcwpAQCAtMCwwICsxLDEyNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkJyb3dzZXJNYW5hZ2VyID0g
Y2xhc3MgQnJvd3Nlck1hbmFnZXIKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICB0aGlzLl9lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2V4dGVuc2lvbk5hbWVJZGVu
dGlmaWVyTWFwID0gbmV3IE1hcDsKKyAgICB9CisKKyAgICAvLyBUYXJnZXQKKworICAgIGluaXRp
YWxpemVUYXJnZXQodGFyZ2V0KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy40
KTogQnJvd3NlciBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgaWYgKHRhcmdldC5oYXNEb21h
aW4oIkJyb3dzZXIiKSkKKyAgICAgICAgICAgIHRhcmdldC5Ccm93c2VyQWdlbnQuZW5hYmxlKCk7
CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBlbmFibGUoKQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX2VuYWJsZWQpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQg
PSB0cnVlOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRNYW5hZ2VyLmFs
bFRhcmdldHMpCisgICAgICAgICAgICB0aGlzLmluaXRpYWxpemVUYXJnZXQodGFyZ2V0KTsKKyAg
ICB9CisKKyAgICBkaXNhYmxlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2VuYWJsZWQpOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRNYW5hZ2Vy
LmFsbFRhcmdldHMpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMy40KTog
QnJvd3NlciBkaWQgbm90IGV4aXN0IHlldC4KKyAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzRG9t
YWluKCJCcm93c2VyIikpCisgICAgICAgICAgICAgICAgdGFyZ2V0LkJyb3dzZXJBZ2VudC5kaXNh
YmxlKCk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmll
ck1hcC5jbGVhcigpOworCisgICAgICAgIHRoaXMuX2VuYWJsZWQgPSBmYWxzZTsKKyAgICB9CisK
KyAgICBpc0V4dGVuc2lvblNjaGVtZShzY2hlbWUpCisgICAgeworICAgICAgICByZXR1cm4gc2No
ZW1lICYmIHNjaGVtZS5lbmRzV2l0aCgiLWV4dGVuc2lvbiIpOworICAgIH0KKworICAgIGV4dGVu
c2lvbk5hbWVGb3JJZChleHRlbnNpb25JZCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9l
eHRlbnNpb25OYW1lSWRlbnRpZmllck1hcC5nZXQoZXh0ZW5zaW9uSWQpIHx8IG51bGw7CisgICAg
fQorCisgICAgZXh0ZW5zaW9uTmFtZUZvclVSTCh1cmwpCisgICAgeworICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLmlzRXh0ZW5zaW9uU2NoZW1lKHBhcnNlVVJMKHVybCkuc2NoZW1lKSk7CisK
KyAgICAgICAgbGV0IG1hdGNoID0gdXJsLm1hdGNoKC9eW2EtelwtXSpleHRlbnNpb246XC9cLyhb
MC05QS1GXXs4fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0fS1bMC05QS1GXXsx
Mn0pXC8vKTsKKyAgICAgICAgaWYgKCFtYXRjaCkKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
CisgICAgICAgIHJldHVybiB0aGlzLmV4dGVuc2lvbk5hbWVGb3JJZChtYXRjaFsxXSk7CisgICAg
fQorCisgICAgZXh0ZW5zaW9uTmFtZUZvckV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRleHQgaW5zdGFuY2VvZiBXSS5FeGVjdXRpb25D
b250ZXh0KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGV4dC50eXBlID09PSBXSS5FeGVj
dXRpb25Db250ZXh0LlR5cGUuVXNlcik7CisKKyAgICAgICAgbGV0IG1hdGNoID0gY29udGV4dC5u
YW1lLm1hdGNoKC9eW0EtWmEtel0qRXh0ZW5zaW9uV29ybGQtKFswLTlBLUZdezh9LVswLTlBLUZd
ezR9LVswLTlBLUZdezR9LVswLTlBLUZdezR9LVswLTlBLUZdezEyfSkkLyk7CisgICAgICAgIGlm
ICghbWF0Y2gpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhp
cy5leHRlbnNpb25OYW1lRm9ySWQobWF0Y2hbMV0pOworICAgIH0KKworICAgIC8vIEJyb3dzZXJP
YnNlcnZlcgorCisgICAgZXh0ZW5zaW9uc0VuYWJsZWQoZXh0ZW5zaW9ucykKKyAgICB7CisgICAg
ICAgIGZvciAobGV0IHtleHRlbnNpb25JZCwgbmFtZX0gb2YgZXh0ZW5zaW9ucykgeworICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2V4dGVuc2lvbk5hbWVJZGVudGlmaWVyTWFwLmhh
cyhleHRlbnNpb25JZCksIGBFeHRlbnNpb24gYWxyZWFkeSBleGlzdHMgd2l0aCBpZCAnJHtleHRl
bnNpb25JZH0nLmApOworCisgICAgICAgICAgICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmll
ck1hcC5zZXQoZXh0ZW5zaW9uSWQsIG5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgZXh0
ZW5zaW9uc0Rpc2FibGVkKGV4dGVuc2lvbklkcykKKyAgICB7CisgICAgICAgIGZvciAobGV0IGV4
dGVuc2lvbklkIG9mIGV4dGVuc2lvbklkcykgeworICAgICAgICAgICAgbGV0IG5hbWUgPSB0aGlz
Ll9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcC50YWtlKGV4dGVuc2lvbklkKTsKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KG5hbWUsIGBNaXNzaW5nIGV4dGVuc2lvbiB3aXRoIGlkICcke2V4
dGVuc2lvbklkfScuYCk7CisgICAgICAgIH0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1Rhcmdl
dE1hbmFnZXIuanMKaW5kZXggODRmYTAyNjE0NDY5ZTcwNWNhOTExZDMyMDdkYmZkZTY5OTJkYzhh
My4uMzM1ZTVlYmExYjUyMjE4OTM4MmJlYTVlNGYxODYzNzgzOWVjYWQ1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFu
YWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9s
bGVycy9UYXJnZXRNYW5hZ2VyLmpzCkBAIC0zNSw2ICszNSwxNSBAQCBXSS5UYXJnZXRNYW5hZ2Vy
ID0gY2xhc3MgVGFyZ2V0TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl90
cmFuc2l0aW9uVGltZW91dElkZW50aWZpZXIgPSB1bmRlZmluZWQ7CiAgICAgfQogCisgICAgLy8g
VGFyZ2V0CisKKyAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKKyAgICB7CisgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IFRhcmdldC5zZXRQYXVzZU9uU3RhcnQgZGlkIG5vdCBl
eGlzdCB5ZXQuCisgICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiVGFyZ2V0LnNldFBhdXNl
T25TdGFydCIpKQorICAgICAgICAgICAgdGFyZ2V0LlRhcmdldEFnZW50LnNldFBhdXNlT25TdGFy
dCh0cnVlKTsKKyAgICB9CisKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0YXJnZXRzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRleCA1Yjg1
NjUyMjE2NDRiZTFhNWYyZTZmYjEzNzQ3ZjY0YzhlYmI0YmE2Li5kNTVjM2FkOWUzNThlMTM1ZWI5
NzVhZjhlODFhOTZlOTA1YzI4NTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sCkBAIC0zMzIsNiArMzMyLDcgQEAKIAogICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9BbmltYXRpb25PYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL0Jyb3dzZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL0NQVVByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DU1NPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlByb3RvY29sL0NhbnZhc09ic2VydmVyLmpzIj48L3NjcmlwdD4KQEAgLTg3
Miw2ICs4NzMsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CYXNpY0Jsb2NrQW5u
b3RhdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJlYWtw
b2ludExvZ01lc3NhZ2VMZXhlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRy
b2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0Jyb3dzZXJNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NhbGxGcmFtZVRyZWVDb250cm9sbGVyLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTU3R5bGVTaGVldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DU1NTdHlsZVNoZWV0LmpzCmluZGV4IGM5ZmQwMmU0MTEzODUwYWQyOWU2MmQxMmRk
YmVjZjE1ZWRkMzdjYzcuLjhjYTFjNzRjNjI1MmE5YjFjY2JhMWQzNjhlMzc3ZjIzNGQ0OTdlNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NTdHlsZVNoZWV0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9DU1NTdHlsZVNoZWV0LmpzCkBAIC0zMiw3ICszMiw2IEBAIFdJLkNTU1N0eWxlU2hl
ZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogICAgICAgICBj
b25zb2xlLmFzc2VydChpZCk7CiAKICAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwotICAg
ICAgICB0aGlzLl91cmwgPSBudWxsOwogICAgICAgICB0aGlzLl9wYXJlbnRGcmFtZSA9IG51bGw7
CiAgICAgICAgIHRoaXMuX29yaWdpbiA9IG51bGw7CiAgICAgICAgIHRoaXMuX3N0YXJ0TGluZU51
bWJlciA9IDA7CkBAIC03MCw3ICs2OSw3IEBAIFdJLkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NT
dHlsZVNoZWV0IGV4dGVuZHMgV0kuU291cmNlQ29kZQogCiAgICAgZ2V0IGluamVjdGVkKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBpc1dlYktpdEV4dGVuc2lvblNjaGVtZSh0aGlzLnVybENvbXBv
bmVudHMuc2NoZW1lKTsKKyAgICAgICAgcmV0dXJuIFdJLmJyb3dzZXJNYW5hZ2VyLmlzRXh0ZW5z
aW9uU2NoZW1lKHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUpOwogICAgIH0KIAogICAgIGdldCBh
bm9ueW1vdXMoKQpAQCAtNzgsMTggKzc3LDYgQEAgV0kuQ1NTU3R5bGVTaGVldCA9IGNsYXNzIENT
U1N0eWxlU2hlZXQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAgIHJldHVybiAhdGhpcy5p
c0luc3BlY3RvclN0eWxlU2hlZXQoKSAmJiAhdGhpcy5fdXJsOwogICAgIH0KIAotICAgIGdldCB1
cmwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKLSAgICB9Ci0KLSAgICBnZXQg
dXJsQ29tcG9uZW50cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3VybENvbXBvbmVudHMp
Ci0gICAgICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gcGFyc2VVUkwodGhpcy5fdXJsKTsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBvbmVudHM7Ci0gICAgfQotCiAgICAgZ2V0IG1p
bWVUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAidGV4dC9jc3MiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzCmlu
ZGV4IDJjMTE1ZTUxYzVhZmNjYzdhZjg5ODBiN2E2YjQ4ZjEwMzIwZTU0MjguLjBlYjU4NDhkYmQ3
ZjE3NWEyM2M3OGZhZThhYzBkYjJkNzk0N2E4ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2UuanMKQEAgLTI4LDEwICsy
OCwxMCBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMgV0kuU291cmNlQ29k
ZQogewogICAgIGNvbnN0cnVjdG9yKHVybCwge21pbWVUeXBlLCB0eXBlLCBsb2FkZXJJZGVudGlm
aWVyLCB0YXJnZXRJZCwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RNZXRob2QsIHJlcXVlc3RI
ZWFkZXJzLCByZXF1ZXN0RGF0YSwgcmVxdWVzdFNlbnRUaW1lc3RhbXAsIHJlcXVlc3RTZW50V2Fs
bHRpbWUsIGluaXRpYXRvckNhbGxGcmFtZXMsIGluaXRpYXRvclNvdXJjZUNvZGVMb2NhdGlvbiwg
aW5pdGlhdG9yTm9kZSwgb3JpZ2luYWxSZXF1ZXN0V2lsbEJlU2VudFRpbWVzdGFtcH0gPSB7fSkK
ICAgICB7Ci0gICAgICAgIHN1cGVyKCk7Ci0KICAgICAgICAgY29uc29sZS5hc3NlcnQodXJsKTsK
IAorICAgICAgICBzdXBlcih1cmwpOworCiAgICAgICAgIGlmICh0eXBlIGluIFdJLlJlc291cmNl
LlR5cGUpCiAgICAgICAgICAgICB0eXBlID0gV0kuUmVzb3VyY2UuVHlwZVt0eXBlXTsKICAgICAg
ICAgZWxzZSBpZiAodHlwZSA9PT0gIlN0eWxlc2hlZXQiKSB7CkBAIC0zOSw4ICszOSw2IEBAIFdJ
LlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAg
ICAgICB0eXBlID0gV0kuUmVzb3VyY2UuVHlwZS5TdHlsZVNoZWV0OwogICAgICAgICB9CiAKLSAg
ICAgICAgdGhpcy5fdXJsID0gdXJsOwotICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gbnVs
bDsKICAgICAgICAgdGhpcy5fbWltZVR5cGUgPSBtaW1lVHlwZTsKICAgICAgICAgdGhpcy5fbWlt
ZVR5cGVDb21wb25lbnRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdHlwZSA9IFJlc291cmNlLnJl
c29sdmVkVHlwZSh0eXBlLCBtaW1lVHlwZSk7CkBAIC0zMTAsNyArMzA4LDYgQEAgV0kuUmVzb3Vy
Y2UgPSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIAogICAgIC8vIFB1Ymxp
YwogCi0gICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQogICAgIGdldCBtaW1lVHlw
ZSgpIHsgcmV0dXJuIHRoaXMuX21pbWVUeXBlOyB9CiAgICAgZ2V0IHRhcmdldCgpIHsgcmV0dXJu
IHRoaXMuX3RhcmdldDsgfQogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsgfQpA
QCAtMzUyLDEzICszNDksNiBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVuZHMg
V0kuU291cmNlQ29kZQogICAgIGdldCBjYWNoZWRSZXNwb25zZUJvZHlTaXplKCkgeyByZXR1cm4g
dGhpcy5fY2FjaGVkUmVzcG9uc2VCb2R5U2l6ZTsgfQogICAgIGdldCByZWRpcmVjdHMoKSB7IHJl
dHVybiB0aGlzLl9yZWRpcmVjdHM7IH0KIAotICAgIGdldCB1cmxDb21wb25lbnRzKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fdXJsQ29tcG9uZW50cykKLSAgICAgICAgICAgIHRoaXMuX3Vy
bENvbXBvbmVudHMgPSBwYXJzZVVSTCh0aGlzLl91cmwpOwotICAgICAgICByZXR1cm4gdGhpcy5f
dXJsQ29tcG9uZW50czsKLSAgICB9Ci0KICAgICBnZXQgbG9hZGVkU2VjdXJlbHkoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09ICJodHRwcyIgJiYgdGhp
cy51cmxDb21wb25lbnRzLnNjaGVtZSAhPT0gIndzcyIgJiYgdGhpcy51cmxDb21wb25lbnRzLnNj
aGVtZSAhPT0gInNmdHAiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKaW5kZXggZTQ0YjlmNjU1YzlmMzg0OGJiMTM1MzFkY2Fj
OTNkZGE4YWEzY2ZkYy4uNjU3YzU0MWFmYjM3OGJmZmJmNzliNGM4NDcyMDkzMGJiMmExYTU5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nj
cmlwdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U2NyaXB0LmpzCkBAIC0yNyw3ICsyNyw3IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRl
bmRzIFdJLlNvdXJjZUNvZGUKIHsKICAgICBjb25zdHJ1Y3Rvcih0YXJnZXQsIGlkLCByYW5nZSwg
dXJsLCBzb3VyY2VUeXBlLCBpbmplY3RlZCwgc291cmNlVVJMLCBzb3VyY2VNYXBVUkwpCiAgICAg
ewotICAgICAgICBzdXBlcigpOworICAgICAgICBzdXBlcih1cmwpOwogCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRhcmdldCBpbnN0YW5jZW9mIFdJLlRhcmdldCB8fCB0aGlzIGluc3RhbmNlb2Yg
V0kuTG9jYWxTY3JpcHQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChyYW5nZSBpbnN0YW5jZW9m
IFdJLlRleHRSYW5nZSk7CkBAIC0zNSw3ICszNSw2IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlw
dCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0Owog
ICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX3JhbmdlID0gcmFu
Z2UgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5fdXJsID0gdXJsIHx8IG51bGw7CiAgICAgICAgIHRo
aXMuX3NvdXJjZVR5cGUgPSBzb3VyY2VUeXBlIHx8IFdJLlNjcmlwdC5Tb3VyY2VUeXBlLlByb2dy
YW07CiAgICAgICAgIHRoaXMuX3NvdXJjZVVSTCA9IHNvdXJjZVVSTCB8fCBudWxsOwogICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlTWFwVVJMIHx8IG51bGw7CkBAIC04MCw3
ICs3OSw2IEBAIFdJLlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNvZGUK
ICAgICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0OyB9CiAgICAgZ2V0IGlkKCkg
eyByZXR1cm4gdGhpcy5faWQ7IH0KICAgICBnZXQgcmFuZ2UoKSB7IHJldHVybiB0aGlzLl9yYW5n
ZTsgfQotICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH0KICAgICBnZXQgc291cmNl
VHlwZSgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVR5cGU7IH0KICAgICBnZXQgc291cmNlVVJMKCkg
eyByZXR1cm4gdGhpcy5fc291cmNlVVJMOyB9CiAgICAgZ2V0IHNvdXJjZU1hcHBpbmdVUkwoKSB7
IHJldHVybiB0aGlzLl9zb3VyY2VNYXBwaW5nVVJMOyB9CkBAIC0xMDgsMTMgKzEwNiw2IEBAIFdJ
LlNjcmlwdCA9IGNsYXNzIFNjcmlwdCBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NvdXJjZVVSTDsKICAgICB9CiAKLSAgICBnZXQgdXJsQ29tcG9uZW50cygpCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3VybENvbXBvbmVudHMpCi0gICAgICAgICAgICB0aGlz
Ll91cmxDb21wb25lbnRzID0gcGFyc2VVUkwodGhpcy5fdXJsKTsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX3VybENvbXBvbmVudHM7Ci0gICAgfQotCiAgICAgZ2V0IG1pbWVUeXBlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZSA/IHRoaXMuX3Jlc291cmNlLm1pbWVUeXBlIDog
InRleHQvamF2YXNjcmlwdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCmluZGV4IDRhNDAzMjMwODNkNDk5ZGY4
ZmQyZDA5MTFiOTViZjk1ODM2MmRlNWMuLjhjZTdiNThhMTM0OGFmOTM5MDE4Mzg4NmVkODQ5ZjA0
ZDZhYTM2YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9Tb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Tb3VyY2VDb2RlLmpzCkBAIC0yNSwxMCArMjUsMTMgQEAKIAogV0kuU291
cmNlQ29kZSA9IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25z
dHJ1Y3RvcigpCisgICAgY29uc3RydWN0b3IodXJsKQogICAgIHsKICAgICAgICAgc3VwZXIoKTsK
IAorICAgICAgICB0aGlzLl91cmwgPSB1cmwgfHwgbnVsbDsKKyAgICAgICAgdGhpcy5fdXJsQ29t
cG9uZW50cyA9IG51bGw7CisKICAgICAgICAgdGhpcy5fb3JpZ2luYWxSZXZpc2lvbiA9IG5ldyBX
SS5Tb3VyY2VDb2RlUmV2aXNpb24odGhpcyk7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXZpc2lv
biA9IHRoaXMuX29yaWdpbmFsUmV2aXNpb247CiAKQEAgLTk4LDcgKzEwMSwxNCBAQCBXSS5Tb3Vy
Y2VDb2RlID0gY2xhc3MgU291cmNlQ29kZSBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IHVy
bCgpCiAgICAgewotICAgICAgICAvLyBUbyBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuCisg
ICAgICAgIHJldHVybiB0aGlzLl91cmw7CisgICAgfQorCisgICAgZ2V0IHVybENvbXBvbmVudHMo
KQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQorICAgICAgICAgICAg
dGhpcy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7CisgICAgICAgIHJldHVy
biB0aGlzLl91cmxDb21wb25lbnRzOwogICAgIH0KIAogICAgIGdldCBjb250ZW50SWRlbnRpZmll
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZmZWZkMjk2ZjRh
NzAwOGVjYjI1Yzc1ODc1YWJkMTVkM2RmOGFiNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Jyb3dzZXJPYnNlcnZlci5qcwpA
QCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuQnJvd3Nlck9ic2VydmVyID0gY2xhc3Mg
QnJvd3Nlck9ic2VydmVyIGV4dGVuZHMgSW5zcGVjdG9yQmFja2VuZC5EaXNwYXRjaGVyCit7Cisg
ICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJCcm93c2VyIiBkb21haW4uCisKKyAgICBleHRl
bnNpb25zRW5hYmxlZChleHRlbnNpb25zKQorICAgIHsKKyAgICAgICAgV0kuYnJvd3Nlck1hbmFn
ZXIuZXh0ZW5zaW9uc0VuYWJsZWQoZXh0ZW5zaW9ucyk7CisgICAgfQorCisgICAgZXh0ZW5zaW9u
c0Rpc2FibGVkKGV4dGVuc2lvbklkcykKKyAgICB7CisgICAgICAgIFdJLmJyb3dzZXJNYW5hZ2Vy
LmV4dGVuc2lvbnNEaXNhYmxlZChleHRlbnNpb25JZHMpOworICAgIH0KK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhp
bmdCYWNrZW5kVGFyZ2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcwppbmRleCA3OTM3MDllYmU1ZDk4
NTJlMjM0OGVhNDlkNWI5N2U4ZDQ3YTY5ZjU4Li40ZmRlMThlNGJmMDg4ZmE0Nzg5NzA4MWVjZjhk
ZjM0Y2ZmZTA3YjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQuanMKQEAgLTI0LDkgKzI0LDYgQEAKICAqLwogCiAvLyBUaGlzIGNsYXNzIGlzIHVzZWQg
d2hlbiBjb25uZWN0aW5nIHRvIGEgdGFyZ2V0IHdoaWNoIG11bHRpcGxleGVzIHRvIG90aGVyIHRh
cmdldHMuCi0vLyBUaGUgbWFpbiBjb25uZWN0aW9uIGlzIHRvIGEgdGFyZ2V0IHRoYXQsIGN1cnJl
bnRseSwgaGFzIG9ubHkgYSBUYXJnZXQgYWdlbnQuCi0vLyBBbGwgb3RoZXIgVGFyZ2V0cyB3aWxs
IGhhdmUgdGhlaXIgbWVzc2FnZXMgYmUgbXVsdGlwbGV4ZWQgdGhyb3VnaCB0aGlzCi0vLyBtYWlu
IGNvbm5lY3Rpb24ncyBUYXJnZXQgYWdlbnQuCiAKIFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJn
ZXQgPSBjbGFzcyBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0IGV4dGVuZHMgV0kuVGFyZ2V0CiB7
CkBAIC0zNiwxOCArMzMsMTYgQEAgV0kuTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldCA9IGNsYXNz
IE11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQgZXh0ZW5kcyBXSS5UYXJnZXQKICAgICAgICAgY29u
c3QgdGFyZ2V0SWQgPSAibXVsdGkiOwogICAgICAgICBzdXBlcihwYXJlbnRUYXJnZXQsIHRhcmdl
dElkLCBXSS5VSVN0cmluZygiV2ViIFBhZ2UiKSwgV0kuVGFyZ2V0VHlwZS5XZWJQYWdlLCBJbnNw
ZWN0b3JCYWNrZW5kLmJhY2tlbmRDb25uZWN0aW9uKTsKIAotICAgICAgICBjb25zb2xlLmFzc2Vy
dChBcnJheS5zaGFsbG93RXF1YWwoT2JqZWN0LmtleXModGhpcy5fYWdlbnRzKSwgWyJUYXJnZXQi
XSksICJBIFdlYlBhZ2UgdGFyZ2V0IHNob3VsZCBvbmx5IGhhdmUgYSBzaW5nbGUgYWdlbnQuIik7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KEFycmF5LnNoYWxsb3dFcXVhbChPYmplY3Qua2V5cyh0
aGlzLl9hZ2VudHMpLCBbIkJyb3dzZXIiLCAiVGFyZ2V0Il0pKTsKICAgICB9CiAKICAgICAvLyBU
YXJnZXQKIAogICAgIGluaXRpYWxpemUoKQogICAgIHsKLSAgICAgICAgLy8gSW50ZW50aW9uYWxs
eSBub3QgY2FsbGluZyBzdXBlci4gTm8gYWdlbnRzIG90aGVyIHRoYW4gdGhlIFRhcmdldEFnZW50
LgotCi0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IFRhcmdldC5zZXRQYXVzZU9u
U3RhcnQgZGlkIG5vdCBleGlzdCB5ZXQuCi0gICAgICAgIGlmICh0aGlzLmhhc0NvbW1hbmQoIlRh
cmdldC5zZXRQYXVzZU9uU3RhcnQiKSkKLSAgICAgICAgICAgIHRoaXMuVGFyZ2V0QWdlbnQuc2V0
UGF1c2VPblN0YXJ0KHRydWUpOworICAgICAgICAvLyBPbmx5IGluaXRpYWxpemUgd2l0aCB0aGUg
bWFuYWdlcnMgdGhhdCBhcmUga25vd24gdG8gc3VwcG9ydCBhIG11bHRpcGxleGluZyB0YXJnZXQu
CisgICAgICAgIFdJLmJyb3dzZXJNYW5hZ2VyLmluaXRpYWxpemVUYXJnZXQodGhpcyk7CisgICAg
ICAgIFdJLnRhcmdldE1hbmFnZXIuaW5pdGlhbGl6ZVRhcmdldCh0aGlzKTsKICAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQgKFRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwppbmRleCBjMjZhMTlhODg1ZWE4OTE0
YWQ0ZmJkODdkY2JjNGYzNzc3MGI1OTZhLi45ZGNhMmFhMjQ3NWRlNzZhMWUxZjA4YWZmMmEyN2M1
OWIwZjI1OTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9UYXJnZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCkBAIC0xMzIsNiArMTMyLDcgQEAgV0kuVGFyZ2V0ID0g
Y2xhc3MgVGFyZ2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IEFuaW1hdGlvbkFnZW50KCkg
eyByZXR1cm4gdGhpcy5fYWdlbnRzLkFuaW1hdGlvbjsgfQogICAgIGdldCBBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQoKSB7IHJldHVybiB0aGlzLl9hZ2VudHMuQXBwbGljYXRpb25DYWNoZTsgfQogICAg
IGdldCBBdWRpdEFnZW50KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRzLkF1ZGl0OyB9CisgICAgZ2V0
IEJyb3dzZXJBZ2VudCgpIHsgcmV0dXJuIHRoaXMuX2FnZW50cy5Ccm93c2VyOyB9CiAgICAgZ2V0
IENQVVByb2ZpbGVyQWdlbnQoKSB7IHJldHVybiB0aGlzLl9hZ2VudHMuQ1BVUHJvZmlsZXI7IH0K
ICAgICBnZXQgQ1NTQWdlbnQoKSB7IHJldHVybiB0aGlzLl9hZ2VudHMuQ1NTOyB9CiAgICAgZ2V0
IENhbnZhc0FnZW50KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRzLkNhbnZhczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDBiYTU2MGI5NmMw
MjMwNmViNjFiMzJiZGY0ZWFjODk5MjNkYmYwYzEuLjJiZjFlMTNhZTVkNzZlNjJiZWNhYzRkZjNh
ZTQ2Y2UwYWU5YjY1ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKQEAgLTg2LDYgKzg2LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wv
SW5zcGVjdG9yT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9BbmltYXRpb25PYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3Rv
Y29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0Jyb3dzZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0NQVVByb2ZpbGVyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbC9DU1NPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlByb3RvY29sL0NhbnZhc09ic2VydmVyLmpzIj48L3NjcmlwdD4KQEAgLTI0NCw2ICsyNDUs
NyBAQAogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BdWRpdE1hbmFnZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRM
b2dNZXNzYWdlTGV4ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9Ccm93c2VyTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xs
ZXJzL0NTU01hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVy
cy9DYW52YXNNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQ29uc29sZU1hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCmluZGV4IDAwNjQ0N2E5NjdlOWMyMzdmNjBj
MTAwMDhiYjQ2MzQ1NzJiN2M0NmUuLjZlMDVkOTJiYTE0NDhjODFiNDcxZmJlMmE2NGU4YzU0OTZj
NmMxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QvVGVzdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
L1Rlc3QuanMKQEAgLTI5LDYgKzI5LDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIC8v
IFRoZSBpbml0aWFsaXphdGlvbiBvcmRlciBzaG91bGQgbWF0Y2ggdGhlIHNhbWUgaW4gTWFpbi5q
cy4KICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQW5pbWF0aW9uRGlzcGF0Y2hlcihXSS5B
bmltYXRpb25PYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFwcGxpY2F0
aW9uQ2FjaGVEaXNwYXRjaGVyKFdJLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcik7CisgICAgSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckJyb3dzZXJEaXNwYXRjaGVyKFdJLkJyb3dzZXJPYnNlcnZl
cik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckNQVVByb2ZpbGVyRGlzcGF0Y2hlcihX
SS5DUFVQcm9maWxlck9ic2VydmVyKTsKICAgICBJbnNwZWN0b3JCYWNrZW5kLnJlZ2lzdGVyQ1NT
RGlzcGF0Y2hlcihXSS5DU1NPYnNlcnZlcik7CiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckNhbnZhc0Rpc3BhdGNoZXIoV0kuQ2FudmFzT2JzZXJ2ZXIpOwpAQCAtNTEsNiArNTIsNyBAQCBX
SS5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBJbnN0YW50aWF0ZSBjb250cm9sbGVycyB1
c2VkIGJ5IHRlc3RzLgogICAgIFdJLm1hbmFnZXJzID0gWworICAgICAgICBXSS5icm93c2VyTWFu
YWdlciA9IG5ldyBXSS5Ccm93c2VyTWFuYWdlciwKICAgICAgICAgV0kudGFyZ2V0TWFuYWdlciA9
IG5ldyBXSS5UYXJnZXRNYW5hZ2VyLAogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlciA9IG5ldyBX
SS5OZXR3b3JrTWFuYWdlciwKICAgICAgICAgV0kuZG9tU3RvcmFnZU1hbmFnZXIgPSBuZXcgV0ku
RE9NU3RvcmFnZU1hbmFnZXIsCkBAIC03NSw2ICs3Nyw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9u
KCkKIAogICAgIC8vIFJlZ2lzdGVyIGZvciBldmVudHMuCiAgICAgZG9jdW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIFdJLmNvbnRlbnRMb2FkZWQpOworICAgIFdJLmJy
b3dzZXJNYW5hZ2VyLmVuYWJsZSgpOwogCiAgICAgLy8gVGFyZ2V0cy4KICAgICBXSS5iYWNrZW5k
VGFyZ2V0ID0gbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwppbmRleCA5ZDIzNGIyMmQwYjJjMGFlNmY2
MWYzYTg4OTZkYjBlMWViZDQ0MjFkLi5jN2I3YmMyZGFmMzgzYzgzZWY4YjFhYmVjNTE4MjgzNTYz
NmVjNjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBAIC0xMjEsNiArMTIxLDEyIEBAIFdJLlF1aWNr
Q29uc29sZSA9IGNsYXNzIFF1aWNrQ29uc29sZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYg
KGNvbnRleHQudHlwZSA9PT0gV0kuRXhlY3V0aW9uQ29udGV4dC5UeXBlLkludGVybmFsKQogICAg
ICAgICAgICAgcmV0dXJuIFdJLnVubG9jYWxpemVkU3RyaW5nKCJbSW50ZXJuYWxdICIpICsgY29u
dGV4dC5uYW1lOwogCisgICAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09IFdJLkV4ZWN1dGlvbkNv
bnRleHQuVHlwZS5Vc2VyKSB7CisgICAgICAgICAgICBsZXQgZXh0ZW5zaW9uTmFtZSA9IFdJLmJy
b3dzZXJNYW5hZ2VyLmV4dGVuc2lvbk5hbWVGb3JFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpOwor
ICAgICAgICAgICAgaWYgKGV4dGVuc2lvbk5hbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dW5jYXRlKGV4dGVuc2lvbk5hbWUsIG1heExlbmd0aCk7CisgICAgICAgIH0KKwogICAgICAgICBs
ZXQgdGFyZ2V0ID0gY29udGV4dC50YXJnZXQ7CiAgICAgICAgIGlmICh0YXJnZXQudHlwZSA9PT0g
V0kuVGFyZ2V0VHlwZS5Xb3JrZXIpCiAgICAgICAgICAgICByZXR1cm4gdHJ1bmNhdGUodGFyZ2V0
LmRpc3BsYXlOYW1lLCBtYXhMZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBlNTZlNGQyNTJlMWUxNTRhZTA2Y2QzN2I1Zjc2NmY5
ODA3NzgwOTEzLi4zY2IzNWI2OGQzMTAyN2E3YmFkN2FmMzk3OTZmMWEzNzgwZGFlOTQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAtOTY1
LDcgKzk2NSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgbGV0IHBhcmVu
dFRyZWVFbGVtZW50ID0gbnVsbDsKIAotICAgICAgICBpZiAoaXNXZWJLaXRFeHRlbnNpb25TY2hl
bWUoc3R5bGVTaGVldC51cmxDb21wb25lbnRzLnNjaGVtZSkpIHsKKyAgICAgICAgaWYgKFdJLmJy
b3dzZXJNYW5hZ2VyLmlzRXh0ZW5zaW9uU2NoZW1lKHN0eWxlU2hlZXQudXJsQ29tcG9uZW50cy5z
Y2hlbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXRoaXMuX2V4dGVuc2lvblN0eWxlU2hlZXRzRm9s
ZGVyVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fZXh0ZW5zaW9uU3R5bGVTaGVl
dHNGb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBXSS5Gb2xkZXJUcmVlRWxlbWVudChXSS5VSVN0cmlu
ZygiRXh0ZW5zaW9uIFN0eWxlIFNoZWV0cyIpLCBuZXcgV0kuQ1NTU3R5bGVTaGVldENvbGxlY3Rp
b24pOwogICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQgPSB0aGlzLl9leHRlbnNpb25TdHls
ZVNoZWV0c0ZvbGRlclRyZWVFbGVtZW50OwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgV0kuU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCBleHRlbmRzIFcKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxldCBwYXJlbnRG
b2xkZXJUcmVlRWxlbWVudCA9IG51bGw7CiAKLSAgICAgICAgICAgIGlmIChpc1dlYktpdEV4dGVu
c2lvblNjaGVtZShzY3JpcHQudXJsQ29tcG9uZW50cy5zY2hlbWUpKSB7CisgICAgICAgICAgICBp
ZiAoV0kuYnJvd3Nlck1hbmFnZXIuaXNFeHRlbnNpb25TY2hlbWUoc2NyaXB0LnVybENvbXBvbmVu
dHMuc2NoZW1lKSkgewogICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZXh0ZW5zaW9uU2NyaXB0
c0ZvbGRlclRyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGxldCBjb2xsZWN0aW9u
ID0gbmV3IFdJLlNjcmlwdENvbGxlY3Rpb247CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V4
dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBXSS5Gb2xkZXJUcmVlRWxlbWVu
dChXSS5VSVN0cmluZygiRXh0ZW5zaW9uIFNjcmlwdHMiKSwgY29sbGVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAppbmRleCA0ZGQ5OWEwOGIwNzZkMjE4ZTIyNWM5NTc3NGNhZjU5OTA0MmE4YTIyLi4x
MzJkNjE0N2IyYjQ3YWM3YTUxNTFmYjUyMmMwMmYyYTE2MjA1M2E1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQKQEAgLTU3LDYgKzU3LDcgQEAgc2V0KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0dhbWVwYWQiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0dQVSIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yIgorICAg
ICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzIgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9MYXVuY2hlciIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
TmV0d29yayIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90
b2NvbHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggMzQ5ZTU0ZGMzMGM0NDk4MmJj
ZDgyZTA5ZTk0YmI2NmRlOTlkY2IxMS4uZDU1N2Y3NjhlOTQ1ZGIyYTdjMzczYTI2Yzk4YTVlMWM3
OGYwZDMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtlCisr
KyBiL1NvdXJjZS9XZWJLaXQvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtODEsNiArODEsNyBAQCBW
UEFUSCA9IFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9Eb3dubG9hZHMgXAogICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL0dQVSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvSW5zcGVjdG9y
IFwKKyAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzIFwKICAgICAkKFdl
YktpdDIpL1VJUHJvY2Vzcy9NZWRpYVN0cmVhbSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3Mv
TmV0d29yayBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTmV0d29yay9DdXN0b21Qcm90b2Nv
bHMgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1NYWMuY21ha2UKaW5kZXggYmU4NmY3M2I3ZTljYzAwMTZiMTg4NjJh
ZjgwMTgyZWQ3ZTM4MTRhNS4uZWI3ZjQ5MTViNWE2NTE0ZWVkYWI2YTNkMDZkYzlmY2NiMmZiMjY1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCkBAIC01NSw2ICs1NSw3IEBAIGxpc3QoQVBQRU5E
IFdlYktpdF9QUklWQVRFX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vY29jb2EiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9j
ZXNzL0NvY29hIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24iCisgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYSIKICAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvSW5zcGVjdG9yL21hYyIKICAgICAiJHtXRUJLSVRf
RElSfS9VSVByb2Nlc3MvTGF1bmNoZXIvbWFjIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0
IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCA1MzEwOTIwM2NhMjJjYjVmNWRiOTM1
MWY5YzIzNmUwNTNhYjFlMDA5Li5iMzRlYjA5M2NkYTdkN2ZjMTRmNjhlYzdiNzQxNzA3ZGY5OGFl
NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9X
ZWJLaXQvU291cmNlcy50eHQKQEAgLTQyNiw2ICs0MjYsOCBAQCBVSVByb2Nlc3MvSW5zcGVjdG9y
L1dlYkluc3BlY3RvclV0aWxpdGllcy5jcHAKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZURl
YnVnZ2FibGUuY3BwCiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9s
bGVyLmNwcAogCitVSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdl
bnQuY3BwCisKIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZp
Y2F0aW9uLmNwcAogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uTWFuYWdl
clByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0IGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGVhYTBkODRmYTVjZmE3NDBkMjdi
NzhiOTA3ZWM5NTY5OTMxY2IwZGMuLjFhMGI4NzFlMTljZWUyODExYTE0MmQ1ODYzYTg0NTQ5NGY3
YTU4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKQEAgLTQwMCw2ICs0MDAsOCBAQCBVSVByb2Nl
c3MvR2FtZXBhZC9jb2NvYS9VSUdhbWVwYWRQcm92aWRlckNvY29hLm1tCiBVSVByb2Nlc3MvR2Ft
ZXBhZC9pb3MvVUlHYW1lcGFkUHJvdmlkZXJJT1MubW0KIFVJUHJvY2Vzcy9HYW1lcGFkL21hYy9V
SUdhbWVwYWRQcm92aWRlck1hYy5tbQogCitVSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3Bl
Y3RvckRlbGVnYXRlLm1tCisKIFVJUHJvY2Vzcy9JbnNwZWN0b3IvaW9zL1dLSW5zcGVjdG9ySGln
aGxpZ2h0Vmlldy5tbQogVUlQcm9jZXNzL0luc3BlY3Rvci9pb3MvV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIubW0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUluc3BlY3RvckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMyMmExZDZhZmE4MGJjZDhiNjc2
ZWRhMjUwNWQwNmRhMjYxYjkxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYkluc3Bl
Y3RvclByb3h5OworY2xhc3MgV2ViUGFnZVByb3h5OworfQorCituYW1lc3BhY2UgQVBJIHsKKwor
Y2xhc3MgSW5zcGVjdG9yQ2xpZW50IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnNwZWN0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CisKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIGJyb3dz
ZXJEb21haW5FbmFibGVkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0
b3JQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRGlzYWJsZWQoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElVSUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xp
ZW50LmgKaW5kZXggNTQ1MTMwMzViMjYxYmZkNWUxODdlYzk0NTc5NjE5OGVkMDlkODhiMS4uZDky
MmJlMGIxZjdlM2NmYTU2MmNjZjlkNDI4OGQ2NDJmOWU1Y2ZmYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTE5OSw4ICsxOTksNiBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFdFQl9BVVRITikKICAgICB2aXJ0dWFsIHZvaWQgcnVuV2ViQXV0aGVudGljYXRp
b25QYW5lbChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkF1dGhlbnRpY2F0aW9uUGFuZWwmLCBX
ZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7IGNvbXBsZXRpb25IYW5kbGVyKFdlYktpdDo6V2ViQXV0
aGVudGljYXRpb25QYW5lbFJlc3VsdDo6VW5hdmFpbGFibGUpOyB9CiAjZW5kaWYKLQotICAgIHZp
cnR1YWwgdm9pZCBkaWRBdHRhY2hJbnNwZWN0b3IoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkluc3BlY3RvclByb3h5JikgeyB9CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRl
UHJpdmF0ZS5oCmluZGV4IDliODBkNWJlYTE3N2I4ZGFiMzUzMTg1OWNhZjgyYTE1NmM3NGI5YTYu
LjI1ZjQ2ZWM0MDYzOTZmODdmZWFmNmFlYzM0NTI1ZDcwMTBkODA4NWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUu
aApAQCAtMzksNyArMzksNiBAQAogQGNsYXNzIF9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvOwogQGNs
YXNzIF9XS0VsZW1lbnRBY3Rpb247CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7Ci1AY2xhc3MgX1dL
SW5zcGVjdG9yOwogCiAjaWYgVEFSR0VUX09TX0lPUwogQGNsYXNzIFVJQ29udGV4dE1lbnVDb25m
aWd1cmF0aW9uOwpAQCAtMjM4LDExICsyMzcsNiBAQCBzdHJ1Y3QgVUlFZGdlSW5zZXRzOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBnZXRDb250ZXh0TWVudUZyb21Qcm9w
b3NlZE1lbnU6KE5TTWVudSAqKW1lbnUgZm9yRWxlbWVudDooX1dLQ29udGV4dE1lbnVFbGVtZW50
SW5mbyAqKWVsZW1lbnQgdXNlckluZm86KGlkIDxOU1NlY3VyZUNvZGluZz4pdXNlckluZm8gY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TTWVudSAqKSljb21wbGV0aW9uSGFuZGxlciBXS19B
UElfQVZBSUxBQkxFKG1hY29zKDEwLjE0KSk7CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IGRpZFBlcmZvcm1EcmFnT3BlcmF0aW9uOihCT09MKWhhbmRsZWQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNC40KSk7CiAKLS8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gYSBX
ZWIgSW5zcGVjdG9yIGluc3RhbmNlIGlzIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LiBUaGlz
IGlzIG5vdCBjYWxsZWQgaW4gdGhlIGNhc2Ugb2YgcmVtb3RlIGluc3BlY3Rpb24uCi0gICAgQHBh
cmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlz
IFdLV2ViVmlldy4KLSovCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZEF0dGFjaEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSkpOwotCiAjZW5kaWYgLy8gIVRBUkdFVF9PU19JUEhPTkUKIAog
QGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggOTdhZTQ2YjdjZDVmYjIwNGM1ODE0Nzk1Y2U3NGUwODFiN2Y5ZGJjMy4uYWJjMDY0M2Zm
MzAwMWE2YjU5NzRiOTYyMDZiMmVkYTMxNzIxZmVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNiw2ICszNiw3IEBACiAjaW1wb3J0
ICJGdWxsc2NyZWVuQ2xpZW50LmgiCiAjaW1wb3J0ICJHbG9iYWxGaW5kSW5QYWdlU3RhdGUuaCIK
ICNpbXBvcnQgIkljb25Mb2FkaW5nRGVsZWdhdGUuaCIKKyNpbXBvcnQgIkluc3BlY3RvckRlbGVn
YXRlLmgiCiAjaW1wb3J0ICJMZWdhY3lTZXNzaW9uU3RhdGVDb2RpbmcuaCIKICNpbXBvcnQgIkxv
Z2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhVXRpbGl0aWVzLmgiCkBAIC05OCw2ICs5OSw3IEBACiAj
aW1wb3J0ICJfV0tGdWxsc2NyZWVuRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1
bHRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLSW5wdXREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiX1dL
SW5zcGVjdG9yRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAj
aW1wb3J0ICJfV0tSZW1vdGVPYmplY3RSZWdpc3RyeUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tT
ZXNzaW9uU3RhdGVJbnRlcm5hbC5oIgpAQCAtMzg1LDYgKzM4Nyw3IEBAIC0gKHZvaWQpX2luaXRp
YWxpemVXaXRoQ29uZmlndXJhdGlvbjooV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqKWNvbmZpZ3Vy
YXRpb24KIAogICAgIF9pY29uTG9hZGluZ0RlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Oklj
b25Mb2FkaW5nRGVsZWdhdGU+KHNlbGYpOwogICAgIF9yZXNvdXJjZUxvYWREZWxlZ2F0ZSA9IG1h
a2VVbmlxdWU8V2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZT4oc2VsZik7CisgICAgX2luc3Bl
Y3RvckRlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlPihzZWxm
KTsKIAogICAgIFtzZWxmIF9zZXRVcFNRTGl0ZURhdGFiYXNlVHJhY2tlckNsaWVudF07CiAKQEAg
LTE1NDMsNiArMTU0NiwxNyBAQCAtIChfV0tJbnNwZWN0b3IgKilfaW5zcGVjdG9yCiAgICAgcmV0
dXJuIG5pbDsKIH0KIAorLSAoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPilfaW5zcGVjdG9yRGVs
ZWdhdGUKK3sKKyAgICByZXR1cm4gX2luc3BlY3RvckRlbGVnYXRlLT5kZWxlZ2F0ZSgpLmF1dG9y
ZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpX3NldEluc3BlY3RvckRlbGVnYXRlOihpZDxfV0tJbnNw
ZWN0b3JEZWxlZ2F0ZT4pZGVsZWdhdGUKK3sKKyAgICBfcGFnZS0+c2V0SW5zcGVjdG9yQ2xpZW50
KF9pbnNwZWN0b3JEZWxlZ2F0ZS0+Y3JlYXRlSW5zcGVjdG9yQ2xpZW50KCkpOworICAgIF9pbnNw
ZWN0b3JEZWxlZ2F0ZS0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOworfQorCiAtIChfV0tGcmFtZUhh
bmRsZSAqKV9tYWluRnJhbWUKIHsKICAgICBpZiAoYXV0byogZnJhbWUgPSBfcGFnZS0+bWFpbkZy
YW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCmluZGV4IDU3Mjk2NmRiYTllZmM4N2U0NTAzMGU3NWMwY2JkMzllM2Rk
NTg0OWUuLjhmOTdmNDA4NzgzOTUyNDViNTBkZDY4YTc5MDVmMjc4NWRiYjc3MjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oCkBAIC02OCw2ICs2OCw3IEBAIGNsYXNzIEF0dGFjaG1lbnQ7CiBuYW1lc3BhY2UgV2ViS2l0
IHsKIGVudW0gY2xhc3MgQ29udGludWVVbnNhZmVMb2FkIDogYm9vbDsKIGNsYXNzIEljb25Mb2Fk
aW5nRGVsZWdhdGU7CitjbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZTsKIGNsYXNzIE5hdmlnYXRpb25T
dGF0ZTsKIGNsYXNzIFJlc291cmNlTG9hZERlbGVnYXRlOwogY2xhc3MgU2FmZUJyb3dzaW5nV2Fy
bmluZzsKQEAgLTExMiw2ICsxMTMsNyBAQCBjbGFzcyBWaWV3R2VzdHVyZUNvbnRyb2xsZXI7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6VUlEZWxlZ2F0ZT4gX3VpRGVsZWdhdGU7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4gX2ljb25Mb2FkaW5n
RGVsZWdhdGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UmVzb3VyY2VMb2FkRGVsZWdh
dGU+IF9yZXNvdXJjZUxvYWREZWxlZ2F0ZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpJ
bnNwZWN0b3JEZWxlZ2F0ZT4gX2luc3BlY3RvckRlbGVnYXRlOwogCiAgICAgV2Vha09iakNQdHI8
aWQgPF9XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZT4+IF90ZXh0TWFuaXB1bGF0aW9uRGVsZWdh
dGU7CiAgICAgV2Vha09iakNQdHI8aWQgPF9XS0lucHV0RGVsZWdhdGU+PiBfaW5wdXREZWxlZ2F0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCmluZGV4IDE5MmE1N2MwODgxNTI2NGJjNjgwNjM3OTNiYjczZDZkNWQ1MjQzYTYu
LjA0MmIzNDg1YmNkZDZkMDk0YWRhZWI3ZGI4ZmI4NmJhMzBmMmYyOWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAt
MTI2LDYgKzEyNiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRn
ZSkgewogQHByb3RvY29sIF9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tJY29u
TG9hZGluZ0RlbGVnYXRlOwogQHByb3RvY29sIF9XS0lucHV0RGVsZWdhdGU7CitAcHJvdG9jb2wg
X1dLSW5zcGVjdG9yRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dLUmVzb3VyY2VMb2FkRGVsZWdhdGU7
CiBAcHJvdG9jb2wgX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOwogCkBAIC0xNzUsNiArMTc2
LDggQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBbGxvd3NSZW1vdGVJbnNwZWN0aW9uOikgQk9P
TCBfYWxsb3dzUmVtb3RlSW5zcGVjdGlvbjsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5LCBz
ZXR0ZXI9X3NldFJlbW90ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGU6KSBOU1N0cmluZyAqX3JlbW90
ZUluc3BlY3Rpb25OYW1lT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMiksIGlv
cygxMC4wKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0luc3BlY3RvciAq
X2luc3BlY3RvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwor
QHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0SW5zcGVjdG9yRGVsZWdhdGU6
KSBpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+IF9pbnNwZWN0b3JEZWxlZ2F0ZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0ZyYW1lSGFuZGxlICpfbWFpbkZyYW1lIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCB3ZWFrLCBzZXR0ZXI9X3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTopIGlkIDxfV0tU
ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU+IF90ZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCmluZGV4IGFm
Y2RhMDY1MGY4YTkyN2IzMzQwYWM2YWFlYTdmYjBmZDYxZmI2NDQuLmI2YjRjMWVlZDIzYjBhMzg5
MGNkYTQwMmJlZDg0MzUxYTQ0YTI5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQpAQCAtMzEsNyArMzEsMTAgQEAKICNpbXBvcnQg
IldlYlByb2Nlc3NQcm94eS5oIgogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgog
I2ltcG9ydCA8V2ViQ29yZS9GcmFtZUlkZW50aWZpZXIuaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFw
Lmg+CisjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIEBpbXBsZW1lbnRhdGlvbiBfV0tJbnNw
ZWN0b3IKIApAQCAtMTUwLDYgKzE1MywyNSBAQCAtICh2b2lkKV9zZXREaWFnbm9zdGljTG9nZ2lu
Z0RlbGVnYXRlOihpZDxfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlPilkZWxlZ2F0ZQogICAg
IF9pbnNwZWN0b3ItPnNldERpYWdub3N0aWNMb2dnaW5nQXZhaWxhYmxlKCEhZGVsZWdhdGUpOwog
fQogCistICh2b2lkKV9icm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQ6KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEVG9OYW1lTWFwCit7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFN0cmluZz4gdHJhbnNmb3JtZWQ7CisgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShleHRlbnNpb25JRFRvTmFtZU1hcC5jb3VudCk7CisgICAgW2V4dGVuc2lv
bklEVG9OYW1lTWFwIGVudW1lcmF0ZUtleXNBbmRPYmplY3RzVXNpbmdCbG9jazpbJl0oTlNTdHJp
bmcgKmV4dGVuc2lvbklELCBOU1N0cmluZyAqZXh0ZW5zaW9uTmFtZSwgQk9PTCAqKSB7CisgICAg
ICAgIHRyYW5zZm9ybWVkLnNldChleHRlbnNpb25JRCwgZXh0ZW5zaW9uTmFtZSk7CisgICAgfV07
CisgICAgX2luc3BlY3Rvci0+YnJvd3NlckV4dGVuc2lvbnNFbmFibGVkKFdURk1vdmUodHJhbnNm
b3JtZWQpKTsKK30KKworLSAodm9pZClfYnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZDooTlNTZXQ8
TlNTdHJpbmcgKj4gKilleHRlbnNpb25JRHMKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gdHJhbnNm
b3JtZWQ7CisgICAgdHJhbnNmb3JtZWQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShleHRlbnNpb25J
RHMuY291bnQpOworICAgIGZvciAoTlNTdHJpbmcgKmV4dGVuc2lvbklEIGluIGV4dGVuc2lvbklE
cykKKyAgICAgICAgdHJhbnNmb3JtZWQuYWRkVm9pZChleHRlbnNpb25JRCk7CisgICAgX2luc3Bl
Y3Rvci0+YnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZChXVEZNb3ZlKHRyYW5zZm9ybWVkKSk7Cit9
CisKIC8vIE1BUks6IF9XS0luc3BlY3RvckludGVybmFsIG1ldGhvZHMKIAogLSAoQVBJOjpPYmpl
Y3QmKV9hcGlPYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDJiZDE2YmVjYzVkNDc5
ZGI4MjQ4NjZmNmViZjQ3ZTA0ZDMwNzA0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEs
NTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNp
bXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworQGNsYXNzIFdLV2ViVmlldzsKK0BjbGFz
cyBfV0tJbnNwZWN0b3I7CisKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZSA8TlNPYmpl
Y3Q+CitAb3B0aW9uYWwKKworLyohIEBhYnN0cmFjdCBDYWxsZWQgd2hlbiBhIFdlYiBJbnNwZWN0
b3IgaW5zdGFuY2UgaXMgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuIFRoaXMgaXMgbm90IGNh
bGxlZCBpbiB0aGUgY2FzZSBvZiByZW1vdGUgaW5zcGVjdGlvbi4KKyAgICBAcGFyYW0gaW5zcGVj
dG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3
LgorICovCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0dGFjaExv
Y2FsSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7CisKKy8qISBAYWJzdHJhY3Qg
Q2FsbGVkIHdoZW4gdGhlIFdlYiBJbnNwZWN0b3IgcHJvdG9jb2wgQnJvd3NlciBkb21haW4gaXMg
ZW5hYmxlZCBmb3IgdGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBX
S1dlYlZpZXcuCisgICAgQHBhcmFtIGluc3BlY3RvciBUaGUgV2ViIEluc3BlY3RvciBpbnN0YW5j
ZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KKyAqLworLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvcjooX1dLSW5z
cGVjdG9yICopaW5zcGVjdG9yOworCisvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIHRoZSBXZWIg
SW5zcGVjdG9yIHByb3RvY29sIEJyb3dzZXIgZG9tYWluIGlzIGRpc2FibGVkIGZvciB0aGUgV2Vi
IEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4KKyAgICBAcGFy
YW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMg
V0tXZWJWaWV3LgorICovCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJy
b3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9y
OworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0luc3BlY3RvclByaXZhdGUuaAppbmRleCBjMGQ5ODQ5MDc5OGE2Y2FjNTI1YmU2Y2RiYzhj
MzhiNGM0MWJiYjYzLi5lMjAyYWYwN2E1YzcwM2IzYTZiNGRhOGQzNTRjZTYyNzQyNzU0YWM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9y
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNw
ZWN0b3JQcml2YXRlLmgKQEAgLTMxLDQgKzMxLDggQEAKIAogQHByb3BlcnR5IChub25hdG9taWMs
IHdlYWssIHNldHRlcj1fc2V0RGlhZ25vc3RpY0xvZ2dpbmdEZWxlZ2F0ZTopIGlkPF9XS0RpYWdu
b3N0aWNMb2dnaW5nRGVsZWdhdGU+IF9kaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOwogCisvLyBC
cm93c2VyCistICh2b2lkKV9icm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQ6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEVG9OYW1lOworLSAodm9pZClfYnJv
d3NlckV4dGVuc2lvbnNEaXNhYmxlZDooTlNTZXQ8TlNTdHJpbmcgKj4gKilleHRlbnNpb25JRHM7
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAppbmRl
eCBhMzU5M2FkZjQ0YjhkMzRhN2M0NjFjNmIyOTMzMmJhOTZmNjc5OTJiLi5lMGQ0N2M4MzdmOGEw
ZWZjMmRmYTNmZmQ5YWNiOWU0OGZhOTQ1ZDZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvVUlEZWxlZ2F0ZS5oCkBAIC0xMjQsNyArMTI0LDYgQEAgcHJpdmF0ZToKICAgICAgICAg
Ym9vbCBydW5PcGVuUGFuZWwoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSosIFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBBUEk6Ok9wZW5QYW5lbFBhcmFtZXRlcnMqLCBXZWJPcGVu
UGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5KikgZmluYWw7CiAgICAgICAgIHZvaWQgZGlkRXhjZWVk
QmFja2dyb3VuZFJlc291cmNlTGltaXRXaGlsZUluRm9yZWdyb3VuZChXZWJQYWdlUHJveHkmLCBX
S1Jlc291cmNlTGltaXQpIGZpbmFsOwogICAgICAgICB2b2lkIHNhdmVEYXRhVG9GaWxlSW5Eb3du
bG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiwgY29uc3QgV1RGOjpTdHJpbmcmLCBjb25zdCBXVEY6
OlN0cmluZyYsIGNvbnN0IFVSTCYsIEFQSTo6RGF0YSYpIGZpbmFsOwotICAgICAgICB2b2lkIGRp
ZEF0dGFjaEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYpIGZpbmFs
OwogI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAgICAgdm9pZCBz
aG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzKFdlYktpdDo6V2ViUGFn
ZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKQEAgLTE5OSw3ICsxOTgsNiBA
QCBwcml2YXRlOgogICAgICAgICBib29sIHdlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dlc3RlZEZp
bGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1J1
bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzSW5pdGlhdGVkQnlGcmFtZUNvbXBsZXRpb25IYW5kbGVy
IDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlvblBlcm1pc3Npb25G
b3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA6IDE7Ci0gICAgICAgIGJvb2wgd2ViVmll
d0RpZEF0dGFjaEluc3BlY3RvciA6IDE7CiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVO
VEFUSU9OKQogICAgICAgICBib29sIHdlYlZpZXdTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9u
QW5kTW90aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZURlY2lzaW9uSGFuZGxlciA6IDE7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRleCBhM2QwZGVkNmRm
MDU2NmNiNzQ0OTNmOThlYzI4YmNlMGU4ZDg5M2IzLi5lNWZiNjlkMWViNjAyOGQ5Y2MwMTljZTRh
YzMxNDQ1Y2IwMTM3NTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVs
ZWdhdGUubW0KQEAgLTQ3LDEzICs0NywxMSBAQAogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwu
aCIKICNpbXBvcnQgIldLV2luZG93RmVhdHVyZXNJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViRXZl
bnRGYWN0b3J5LmgiCi0jaW1wb3J0ICJXZWJJbnNwZWN0b3JQcm94eS5oIgogI2ltcG9ydCAiV2Vi
T3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eS5oIgogI2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5
LmgiCiAjaW1wb3J0ICJfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmgiCiAjaW1wb3J0ICJfV0tG
cmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tIaXRUZXN0UmVzdWx0SW50ZXJuYWwu
aCIKLSNpbXBvcnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tXZWJBdXRo
ZW50aWNhdGlvblBhbmVsSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvRm9udEF0dHJpYnV0
ZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CkBAIC0xMzMsNyAr
MTMxLDYgQEAgdm9pZCBVSURlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8V0tVSURlbGVnYXRlPiBk
ZWxlZ2F0ZSkKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3U2F2ZURhdGFUb0ZpbGVTdWdn
ZXN0ZWRGaWxlbmFtZU1pbWVUeXBlT3JpZ2luYXRpbmdVUkwgPSBbZGVsZWdhdGUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzYXZlRGF0YVRvRmlsZTpzdWdnZXN0ZWRGaWxl
bmFtZTptaW1lVHlwZTpvcmlnaW5hdGluZ1VSTDopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53
ZWJWaWV3UnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlv
bkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3
OnJ1bk9wZW5QYW5lbFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhh
bmRsZXI6KV07CiAgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1JlcXVlc3ROb3RpZmljYXRp
b25QZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW5EZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZXF1ZXN0Tm90aWZpY2F0aW9u
UGVybWlzc2lvbkZvclNlY3VyaXR5T3JpZ2luOmRlY2lzaW9uSGFuZGxlcjopXTsKLSAgICBtX2Rl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3Bv
bmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9yOildOwog
I2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJWaWV3U2hvdWxkQWxsb3dEZXZpY2VPcmllbnRhdGlvbkFuZE1vdGlvbkFjY2Vzc1Jl
cXVlc3RlZEJ5RnJhbWVEZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpzaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90
aW9uQWNjZXNzUmVxdWVzdGVkQnlGcmFtZTpkZWNpc2lvbkhhbmRsZXI6KV07CkBAIC04NDgsMTgg
Kzg0NSw2IEBAIGJvb2wgVUlEZWxlZ2F0ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByCiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
LQotdm9pZCBVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQXR0YWNoSW5zcGVjdG9yKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQotewot
ICAgIGlmICghbV91aURlbGVnYXRlLm1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRBdHRhY2hJ
bnNwZWN0b3IpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gZGVsZWdhdGUgPSBtX3VpRGVs
ZWdhdGUubV9kZWxlZ2F0ZS5nZXQoKTsKLSAgICBpZiAoIWRlbGVnYXRlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBbKGlkIDxXS1VJRGVsZWdhdGVQcml2YXRlPilkZWxlZ2F0ZSBfd2ViVmlldzpt
X3VpRGVsZWdhdGUubV93ZWJWaWV3IGRpZEF0dGFjaEluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3Rv
cildOwotfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50cy9JbnNwZWN0b3JC
cm93c2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0FnZW50
cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiMjM4NjlmMTMwM2U1ZjBi
NDllYmY2OTY5NTQ3Yzc5NTlkNTJiMGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKQEAg
LTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9yQnJvd3NlckFnZW50LmgiCisKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5oIgorI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3Rv
Y29sT2JqZWN0cy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit1c2luZyBuYW1lc3BhY2UgSW5zcGVj
dG9yOworCitJbnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudChXZWJQ
YWdlQWdlbnRDb250ZXh0JiBjb250ZXh0KQorICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJCcm93
c2VyIl9zLCBjb250ZXh0KQorICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVuaXF1ZTxJ
bnNwZWN0b3I6OkJyb3dzZXJGcm9udGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0
ZXIpKQorICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihJbnNwZWN0b3I6OkJyb3dzZXJCYWNrZW5k
RGlzcGF0Y2hlcjo6Y3JlYXRlKGNvbnRleHQuYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpKQorICAg
ICwgbV9pbnNwZWN0ZWRQYWdlKGNvbnRleHQuaW5zcGVjdGVkUGFnZSkKK3sKK30KKworSW5zcGVj
dG9yQnJvd3NlckFnZW50Ojp+SW5zcGVjdG9yQnJvd3NlckFnZW50KCkgPSBkZWZhdWx0OworCiti
b29sIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJy
b3dzZXJBZ2VudCgpID09IHRoaXM7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFnZW50Ojpk
aWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIElu
c3BlY3Rvcjo6QmFja2VuZERpc3BhdGNoZXIqKQoreworfQorCit2b2lkIEluc3BlY3RvckJyb3dz
ZXJBZ2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25u
ZWN0UmVhc29uKQoreworICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7CisgICAgZGlzYWJsZShpZ25v
cmVkKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcpCit7CisgICAgaWYgKGVuYWJsZWQoKSkgeworICAgICAgICBlcnJvclN0
cmluZyA9ICJCcm93c2VyIGRvbWFpbiBhbHJlYWR5IGVuYWJsZWQiX3M7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNl
dEVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQodGhpcyk7CisKKyAgICBhdXRvKiBpbnNwZWN0
b3IgPSBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yKCk7CisgICAgQVNTRVJUKGluc3BlY3Rvcik7
CisgICAgbV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5FbmFi
bGVkKG1faW5zcGVjdGVkUGFnZSwgKmluc3BlY3Rvcik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJv
d3NlckFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKK3sKKyAgICBpZiAo
IWVuYWJsZWQoKSkgeworICAgICAgICBlcnJvclN0cmluZyA9ICJCcm93c2VyIGRvbWFpbiBhbHJl
YWR5IGRpc2FibGVkIl9zOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnNwZWN0
ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5zZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFn
ZW50KG51bGxwdHIpOworCisgICAgYXV0byogaW5zcGVjdG9yID0gbV9pbnNwZWN0ZWRQYWdlLmlu
c3BlY3RvcigpOworICAgIEFTU0VSVChpbnNwZWN0b3IpOworICAgIG1faW5zcGVjdGVkUGFnZS5p
bnNwZWN0b3JDbGllbnQoKS5icm93c2VyRG9tYWluRGlzYWJsZWQobV9pbnNwZWN0ZWRQYWdlLCAq
aW5zcGVjdG9yKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmV4dGVuc2lvbnNF
bmFibGVkKEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiYgZXh0ZW5zaW9uSURUb05hbWUpCit7Cisg
ICAgQVNTRVJUKGVuYWJsZWQoKSk7CisKKyAgICBhdXRvIGV4dGVuc2lvbnNQYXlsb2FkID0gSlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpCcm93c2VyOjpFeHRlbnNpb24+OjpjcmVh
dGUoKTsKKyAgICBmb3IgKGF1dG8mIFtpZCwgbmFtZV0gOiBleHRlbnNpb25JRFRvTmFtZSkgewor
ICAgICAgICBhdXRvIGV4dGVuc2lvblBheWxvYWQgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpCcm93
c2VyOjpFeHRlbnNpb246OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0RXh0ZW5zaW9uSWQoaWQp
CisgICAgICAgICAgICAuc2V0TmFtZShuYW1lKQorICAgICAgICAgICAgLnJlbGVhc2UoKTsKKyAg
ICAgICAgZXh0ZW5zaW9uc1BheWxvYWQtPmFkZEl0ZW0oV1RGTW92ZShleHRlbnNpb25QYXlsb2Fk
KSk7CisgICAgfQorICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5leHRlbnNpb25zRW5hYmxlZChX
VEZNb3ZlKGV4dGVuc2lvbnNQYXlsb2FkKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3NlckFn
ZW50OjpleHRlbnNpb25zRGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYgZXh0ZW5zaW9uSURzKQor
eworICAgIEFTU0VSVChlbmFibGVkKCkpOworCisgICAgYXV0byBleHRlbnNpb25JZHNQYXlsb2Fk
ID0gSlNPTjo6QXJyYXlPZjxTdHJpbmc+OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8mIGV4dGVu
c2lvbklkIDogZXh0ZW5zaW9uSURzKQorICAgICAgICBleHRlbnNpb25JZHNQYXlsb2FkLT5hZGRJ
dGVtKGV4dGVuc2lvbklkKTsKKyAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZXh0ZW5zaW9uc0Rp
c2FibGVkKFdURk1vdmUoZXh0ZW5zaW9uSWRzUGF5bG9hZCkpOworfQorCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rv
ci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEx
Mzk1ODNjZDhkODQyMzI5ZjRiM2YzNTIxYjM2MjQwZWFiNTM5MTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dz
ZXJBZ2VudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlBhZ2VQcm94eTsKK3R5
cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOworCitjbGFzcyBJbnNwZWN0b3JCcm93c2VyQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpCcm93
c2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JCcm93c2VyQWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVi
bGljOgorICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudChXZWJQYWdlQWdlbnRDb250ZXh0Jik7Cisg
ICAgfkluc3BlY3RvckJyb3dzZXJBZ2VudCgpIG92ZXJyaWRlOworICAgIGJvb2wgZW5hYmxlZCgp
IGNvbnN0OworCisgICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCisgICAgdm9pZCBkaWRDcmVhdGVG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlciosIEluc3BlY3Rvcjo6
QmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6RGlzY29ubmVjdFJlYXNvbikgb3ZlcnJpZGU7CisKKyAg
ICAvLyBCcm93c2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCisgICAgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKKworICAgIHZvaWQgZXh0ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4mJik7CisgICAgdm9pZCBleHRlbnNpb25zRGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYpOwor
Citwcml2YXRlOgorICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6OkJyb3dzZXJGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3I6
OkJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBXZWJQ
YWdlUHJveHkmIG1faW5zcGVjdGVkUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3Bl
Y3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2Ev
SW5zcGVjdG9yRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWJmN2IzNGJjMGIzMjM0Y2FiZWQwZGIy
ZTEyYzYzZmY3ZmUyYmZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLmgKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW1wb3J0ICJBUElJbnNwZWN0b3JDbGllbnQu
aCIKKyNpbXBvcnQgIldLRm91bmRhdGlvbi5oIgorI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+
CisKK0BjbGFzcyBXS1dlYlZpZXc7CisKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZTsK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkluc3BlY3RvclByb3h5OworY2xhc3Mg
V2ViUGFnZVByb3h5OworCitjbGFzcyBJbnNwZWN0b3JEZWxlZ2F0ZSB7CisgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgSW5zcGVjdG9yRGVsZWdhdGUo
V0tXZWJWaWV3ICopOworCisgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50
PiBjcmVhdGVJbnNwZWN0b3JDbGllbnQoKTsKKworICAgIFJldGFpblB0cjxpZCA8X1dLSW5zcGVj
dG9yRGVsZWdhdGU+PiBkZWxlZ2F0ZSgpOworICAgIHZvaWQgc2V0RGVsZWdhdGUoaWQgPF9XS0lu
c3BlY3RvckRlbGVnYXRlPik7CisKK3ByaXZhdGU6CisgICAgY2xhc3MgSW5zcGVjdG9yQ2xpZW50
IDogcHVibGljIEFQSTo6SW5zcGVjdG9yQ2xpZW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBleHBsaWNpdCBJbnNwZWN0b3JDbGllbnQo
SW5zcGVjdG9yRGVsZWdhdGUmKTsKKyAgICAgICAgfkluc3BlY3RvckNsaWVudCgpOworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgLy8gQVBJOjpJbnNwZWN0b3JDbGllbnQKKyAgICAgICAgdm9pZCBk
aWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYp
IG92ZXJyaWRlOworICAgICAgICB2b2lkIGJyb3dzZXJEb21haW5FbmFibGVkKFdlYlBhZ2VQcm94
eSYsIFdlYkluc3BlY3RvclByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYnJvd3NlckRv
bWFpbkRpc2FibGVkKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5Jikgb3ZlcnJpZGU7
CisKKyAgICAgICAgSW5zcGVjdG9yRGVsZWdhdGUmIG1faW5zcGVjdG9yRGVsZWdhdGU7CisgICAg
fTsKKworICAgIFdlYWtPYmpDUHRyPFdLV2ViVmlldz4gbV93ZWJWaWV3OworICAgIFdlYWtPYmpD
UHRyPGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4+IG1fZGVsZWdhdGU7CisKKyAgICBzdHJ1Y3Qg
eworICAgICAgICB1bnNpZ25lZCB3ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yIDogMTsKKyAgICAg
ICAgdW5zaWduZWQgd2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yIDogMTsK
KyAgICAgICAgdW5zaWduZWQgd2ViVmlld0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rv
ciA6IDE7CisgICAgfSBtX2RlbGVnYXRlTWV0aG9kczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL0NvY29h
L0luc3BlY3RvckRlbGVnYXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkZDBmZjQ0NWIzMGJlNjM3
YjBjNjdlMjY0NDI0MWUwYTRlZjJiZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTAsMCAr
MSwxMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkluc3Bl
Y3RvckRlbGVnYXRlLmgiCisKKyNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCisjaW1wb3J0
ICJXZWJQYWdlUHJveHkuaCIKKyNpbXBvcnQgIl9XS0luc3BlY3RvckRlbGVnYXRlLmgiCisjaW1w
b3J0ICJfV0tJbnNwZWN0b3JJbnRlcm5hbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworSW5z
cGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckRlbGVnYXRlKFdLV2ViVmlldyAqd2ViVmlldykKKyAg
ICA6IG1fd2ViVmlldyh3ZWJWaWV3KQoreworfQorCitzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNw
ZWN0b3JDbGllbnQ+IEluc3BlY3RvckRlbGVnYXRlOjpjcmVhdGVJbnNwZWN0b3JDbGllbnQoKQor
eworICAgIHJldHVybiBtYWtlVW5pcXVlPEluc3BlY3RvckNsaWVudD4oKnRoaXMpOworfQorCitS
ZXRhaW5QdHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4gSW5zcGVjdG9yRGVsZWdhdGU6OmRl
bGVnYXRlKCkKK3sKKyAgICByZXR1cm4gbV9kZWxlZ2F0ZS5nZXQoKTsKK30KKwordm9pZCBJbnNw
ZWN0b3JEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUoaWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPiBkZWxl
Z2F0ZSkKK3sKKyAgICBtX2RlbGVnYXRlID0gZGVsZWdhdGU7CisKKyAgICBtX2RlbGVnYXRlTWV0
aG9kcy53ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KV07CisgICAg
bV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9y
ID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YnJvd3Nl
ckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3I6KV07CisgICAgbV9kZWxlZ2F0ZU1ldGhvZHMud2Vi
Vmlld0Jyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvciA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OmJyb3dzZXJEb21haW5EaXNhYmxlZEZvcklu
c3BlY3RvcjopXTsKK30KKworSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6SW5z
cGVjdG9yQ2xpZW50KEluc3BlY3RvckRlbGVnYXRlJiBkZWxlZ2F0ZSkKKyAgICA6IG1faW5zcGVj
dG9yRGVsZWdhdGUoZGVsZWdhdGUpCit7Cit9CisKK0luc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0
b3JDbGllbnQ6On5JbnNwZWN0b3JDbGllbnQoKSA9IGRlZmF1bHQ7CisKK3ZvaWQgSW5zcGVjdG9y
RGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6ZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoV2ViUGFn
ZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1faW5z
cGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2Vidmlld0RpZEF0dGFjaEluc3BlY3Rv
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBtX2luc3BlY3RvckRl
bGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9yRGVsZWdhdGUubV93ZWJWaWV3Lmdl
dCgpLmdldCgpIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9yKV07Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFp
bkVuYWJsZWQoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sK
KyAgICBpZiAoIW1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jy
b3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAo
IWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV9p
bnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgYnJvd3NlckRvbWFpbkVuYWJs
ZWRGb3JJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKK30KKwordm9pZCBJbnNwZWN0b3JE
ZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWluRGlzYWJsZWQoV2ViUGFnZVBy
b3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmIGluc3BlY3RvcikKK3sKKyAgICBpZiAoIW1faW5zcGVj
dG9yRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Jyb3dzZXJEb21haW5EaXNhYmxl
ZEZvckluc3BlY3RvcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byYgZGVsZWdhdGUgPSBt
X2luc3BlY3RvckRlbGVnYXRlLm1fZGVsZWdhdGU7CisgICAgaWYgKCFkZWxlZ2F0ZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgW2RlbGVnYXRlIF93ZWJWaWV3Om1faW5zcGVjdG9yRGVsZWdhdGUu
bV93ZWJWaWV3LmdldCgpLmdldCgpIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3Rvcjp3
cmFwcGVyKGluc3BlY3RvcildOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCmluZGV4IDIzZDcwNWU4M2U3MDZlYTgzNzRhYmJlODRlODE1ZGQ3YjYzYmJhNWEuLmYwZDQ1
YjI4ZWI4Y2YzNDBkOGViMDVkNzUzMmFiMmY3YTU5OTFkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcApAQCAt
MjcsOSArMjcsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0
b3JQcm94eS5oIgogCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xpZW50LmgiCiAjaW5jbHVkZSAi
QVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVVJQ2xpZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQnJvd3NlckFn
ZW50LmgiCiAjaW5jbHVkZSAiV2ViQXV0b21hdGlvblNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJG
cmFtZVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9ySW50ZXJydXB0RGlzcGF0Y2hlck1l
c3NhZ2VzLmgiCkBAIC00Niw3ICs0OCwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTW9ja1JlYWx0
aW1lTWVkaWFTb3VyY2VDZW50ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1NldEZvclNj
b3BlLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShH
VEspCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlDbGllbnQuaCIKQEAgLTQ0Niw3ICs0NTEs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZChi
b29sIGNhbkF0dGFjaCwgYm9vbCB1bmRlclRlcwogICAgIH0KIAogICAgIC8vIE5vdGlmeSBXZWJL
aXQgY2xpZW50IHdoZW4gYSBsb2NhbCBpbnNwZWN0b3IgYXR0YWNoZXMgc28gdGhhdCBpdCBtYXkg
aW5zdGFsbCBkZWxlZ2F0ZXMgcHJpb3IgdG8gdGhlIF9XS0luc3BlY3RvciBsb2FkaW5nIGl0cyBm
cm9udGVuZC4KLSAgICBtX2luc3BlY3RlZFBhZ2UtPnVpQ2xpZW50KCkuZGlkQXR0YWNoSW5zcGVj
dG9yKCptX2luc3BlY3RlZFBhZ2UsICp0aGlzKTsKKyAgICBtX2luc3BlY3RlZFBhZ2UtPmluc3Bl
Y3RvckNsaWVudCgpLmRpZEF0dGFjaExvY2FsSW5zcGVjdG9yKCptX2luc3BlY3RlZFBhZ2UsICp0
aGlzKTsKIAogICAgIC8vIEJhaWwgb3V0IGlmIHRoZSBjbGllbnQgY2xvc2VkIHRoZSBpbnNwZWN0
b3IgZnJvbSB0aGUgZGVsZWdhdGUgbWV0aG9kLgogICAgIGlmICghbV9pbnNwZWN0b3JQYWdlKQpA
QCAtNjE5LDYgKzYyNCwxOCBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzZXREaWFnbm9zdGlj
TG9nZ2luZ0F2YWlsYWJsZShib29sIGF2YWlsYWJsZSkKICNlbmRpZgogfQogCit2b2lkIFdlYklu
c3BlY3RvclByb3h5Ojpicm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0
cmluZz4mJiBleHRlbnNpb25JRFRvTmFtZSkKK3sKKyAgICBpZiAoYXV0byogYnJvd3NlckFnZW50
ID0gbV9pbnNwZWN0ZWRQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3Rv
ckJyb3dzZXJBZ2VudCgpKQorICAgICAgICBicm93c2VyQWdlbnQtPmV4dGVuc2lvbnNFbmFibGVk
KFdURk1vdmUoZXh0ZW5zaW9uSURUb05hbWUpKTsKK30KKwordm9pZCBXZWJJbnNwZWN0b3JQcm94
eTo6YnJvd3NlckV4dGVuc2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4mJiBleHRlbnNpb25J
RHMpCit7CisgICAgaWYgKGF1dG8qIGJyb3dzZXJBZ2VudCA9IG1faW5zcGVjdGVkUGFnZS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLmVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQoKSkKKyAgICAg
ICAgYnJvd3NlckFnZW50LT5leHRlbnNpb25zRGlzYWJsZWQoV1RGTW92ZShleHRlbnNpb25JRHMp
KTsKK30KKwogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6c2F2ZShjb25zdCBTdHJpbmcmIGZpbGVu
YW1lLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0RW5jb2RlZCwgYm9vbCBmb3Jj
ZVNhdmVBcykKIHsKICAgICBwbGF0Zm9ybVNhdmUoZmlsZW5hbWUsIGNvbnRlbnQsIGJhc2U2NEVu
Y29kZWQsIGZvcmNlU2F2ZUFzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5kZXggMmIxZmRmY2ExZGZiOGU1YzU1ZmNj
ZDgwMTZmNDIxZjcxNDE2M2NjYi4uYmJiNmY1NzNlZWIxODM1YzYzOGFmMzI1OTU0NDUxNjY0YTgx
ZGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYklu
c3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dl
Ykluc3BlY3RvclByb3h5LmgKQEAgLTE2Miw2ICsxNjIsMTAgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShib29sKTsKIAorICAgIC8vIEJyb3dzZXIK
KyAgICB2b2lkIGJyb3dzZXJFeHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYmKTsKKyAgICB2b2lkIGJyb3dzZXJFeHRlbnNpb25zRGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+
JiYpOworCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZvcm0gV2ViSW5zcGVjdG9yUHJveHkgaW1w
bGVtZW50YXRpb25zLgogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yUGFnZVVSTCgpOwogICAg
IHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VVUkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckFnZW50
QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjc2OWRlMTcyNzllNmI0NmRjNjQzNWUxZWZiM2NiMWQ3MjA4MzZm
ODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
V2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSW5z
cGVjdG9yIHsKK2NsYXNzIEJhY2tlbmREaXNwYXRjaGVyOworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7
Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJQYWdlUHJveHk7CisKKy8vIEZJ
WE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVzcGFjZSB3aGVuIHJlbWFpbmluZyBhZ2Vu
dHMgbW92ZS4KK3N0cnVjdCBXZWJQYWdlQWdlbnRDb250ZXh0IHsKKyAgICBJbnNwZWN0b3I6OkZy
b250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcjsKKyAgICBJbnNwZWN0b3I6OkJhY2tlbmREaXNw
YXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBXZWJQYWdlUHJveHkmIGluc3BlY3RlZFBh
Z2U7Cit9OworCitjbGFzcyBJbnNwZWN0b3JBZ2VudEJhc2UgOiBwdWJsaWMgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBZ2VudEJhc2UgeworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckFnZW50QmFzZShj
b25zdCBTdHJpbmcmIG5hbWUsIFdlYlBhZ2VBZ2VudENvbnRleHQmKQorICAgICAgICA6IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlKG5hbWUpCisgICAgeworICAgIH0KK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5z
cGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWVl
MjhiZjcxNjM3NDM3MTQzMzIxNTE0OGFhMjBhNTE5MjdhOGEzMy4uMTg2MWNmZjgwNjEzMTE5NmVh
NDliNGY4YWNhNjY2NWJlZWJiZjZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdl
bnQuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYkZy
YW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5o
IgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgpAQCAtNDcs
MTQgKzQ5LDEyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0VGFyZ2V0SUQoY29uc3QgUHJvdmlzaW9uYWxQ
YWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKIH0KIAogV2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdlYlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6
IG1fcGFnZShwYWdlKQotICAgICwgbV9mcm9udGVuZFJvdXRlcihGcm9udGVuZFJvdXRlcjo6Y3Jl
YXRlKCkpCisgICAgOiBtX2Zyb250ZW5kUm91dGVyKEZyb250ZW5kUm91dGVyOjpjcmVhdGUoKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zy
b250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCisgICAgLCBtX3BhZ2UocGFnZSkKIHsKICAgICBhdXRv
IHRhcmdldEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3JUYXJnZXRBZ2VudD4obV9mcm9udGVu
ZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSk7Ci0KICAgICBtX3Rhcmdl
dEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7Ci0KICAgICBtX2FnZW50cy5hcHBlbmQoV1RGTW92
ZSh0YXJnZXRBZ2VudCkpOwogfQogCkBAIC03OCw2ICs3OCw4IEBAIGJvb2wgV2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQoKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VJ
bnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRlbmQoSW5zcGVjdG9yOjpGcm9udGVuZENo
YW5uZWwmIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCwgYm9vbCkKIHsKKyAgICBjcmVhdGVMYXp5QWdl
bnRzKCk7CisKICAgICBib29sIGNvbm5lY3RpbmdGaXJzdEZyb250ZW5kID0gIW1fZnJvbnRlbmRS
b3V0ZXItPmhhc0Zyb250ZW5kcygpOwogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+Y29ubmVjdEZy
b250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CkBAIC0yMTIsNiArMjE0LDI3IEBAIHZvaWQgV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdFByb3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllCiAgICAgbV90YXJnZXRzLnNldChuZXdUYXJnZXQtPmlkZW50aWZpZXIoKSwg
V1RGTW92ZShuZXdUYXJnZXQpKTsKIH0KIAorV2ViUGFnZUFnZW50Q29udGV4dCBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlcjo6d2ViUGFnZUFnZW50Q29udGV4dCgpCit7CisgICAgcmV0dXJuIHsK
KyAgICAgICAgbV9mcm9udGVuZFJvdXRlci5nZXQoKSwKKyAgICAgICAgbV9iYWNrZW5kRGlzcGF0
Y2hlci5nZXQoKSwKKyAgICAgICAgbV9wYWdlLAorICAgIH07Cit9CisKK3ZvaWQgV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2VudHMoKQoreworICAgIGlmIChtX2RpZENy
ZWF0ZUxhenlBZ2VudHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGlkQ3JlYXRlTGF6eUFn
ZW50cyA9IHRydWU7CisKKyAgICBhdXRvIHdlYlBhZ2VDb250ZXh0ID0gd2ViUGFnZUFnZW50Q29u
dGV4dCgpOworCisgICAgbV9hZ2VudHMuYXBwZW5kKG1ha2VVbmlxdWU8SW5zcGVjdG9yQnJvd3Nl
ckFnZW50Pih3ZWJQYWdlQ29udGV4dCkpOworfQorCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyOjphZGRUYXJnZXQoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvclRhcmdldFByb3h5PiYm
IHRhcmdldCkKIHsKICAgICBtX3RhcmdldEFnZW50LT50YXJnZXRDcmVhdGVkKCp0YXJnZXQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNw
ZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2Vi
UGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3OGNhZWRmMGMwY2U4MzY3NTU2OTUwMmQx
NTBmY2M0NGU1Zjk4NjhjLi45Y2U1ZWYzNmI2NTJmZDU2YTg0M2MxZDEyYTRjM2MzY2Y2MzkyODJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNDEsNiArNDEsOSBAQCBjbGFzcyBG
cm9udGVuZFJvdXRlcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEluc3BlY3RvckJy
b3dzZXJBZ2VudDsKK3N0cnVjdCBXZWJQYWdlQWdlbnRDb250ZXh0OworCiBjbGFzcyBXZWJQYWdl
SW5zcGVjdG9yQ29udHJvbGxlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMs
MTUgKzc2LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95UHJvdmlzaW9uYWxQYWdl
KGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CiAgICAgdm9pZCBkaWRDb21taXRQcm92aXNp
b25hbFBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIgb2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQ
YWdlSWRlbnRpZmllciBuZXdXZWJQYWdlSUQpOwogCisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50
KiBlbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbmFibGVk
SW5zcGVjdG9yQnJvd3NlckFnZW50OyB9CisgICAgdm9pZCBzZXRFbmFibGVkSW5zcGVjdG9yQnJv
d3NlckFnZW50KEluc3BlY3RvckJyb3dzZXJBZ2VudCogYWdlbnQpIHsgbV9lbmFibGVkSW5zcGVj
dG9yQnJvd3NlckFnZW50ID0gYWdlbnQ7IH0KKwogcHJpdmF0ZToKKyAgICBXZWJQYWdlQWdlbnRD
b250ZXh0IHdlYlBhZ2VBZ2VudENvbnRleHQoKTsKKyAgICB2b2lkIGNyZWF0ZUxhenlBZ2VudHMo
KTsKKwogICAgIHZvaWQgYWRkVGFyZ2V0KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQ
cm94eT4mJik7CiAKLSAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKICAgICBSZWY8SW5zcGVjdG9y
OjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRlcjsKICAgICBSZWY8SW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3I6OkFn
ZW50UmVnaXN0cnkgbV9hZ2VudHM7CisKKyAgICBXZWJQYWdlUHJveHkmIG1fcGFnZTsKKwogICAg
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQqIG1fdGFyZ2V0QWdlbnQ7CiAgICAgSGFz
aE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4+IG1fdGFy
Z2V0czsKKworICAgIEluc3BlY3RvckJyb3dzZXJBZ2VudCogbV9lbmFibGVkSW5zcGVjdG9yQnJv
d3NlckFnZW50OworCisgICAgYm9vbCBtX2RpZENyZWF0ZUxhenlBZ2VudHMgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAppbmRleCBhNWUzNmU0YzBiMzM3NmIzOTU1ZDY0MDQ0ZDcyMWMwMmJmMjY5MjM3
Li45Yjc3Mjg2ZTNjNThhYWYxODNmYzJiODM2NzE4ZWIzMzk3ZGU3MDExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJBUElIaXN0b3J5Q2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJSGl0VGVzdFJlc3VsdC5oIgogI2lu
Y2x1ZGUgIkFQSUljb25Mb2FkaW5nQ2xpZW50LmgiCisjaW5jbHVkZSAiQVBJSW5zcGVjdG9yQ2xp
ZW50LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCIKICNpbmNs
dWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCkBAIC00
MzAsNiArNDMxLDcgQEAgV2ViUGFnZVByb3h5OjpXZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFn
ZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzLCBSZWYKICNpZiBFTkFCTEUoQ09OVEVY
VF9NRU5VUykKICAgICAsIG1fY29udGV4dE1lbnVDbGllbnQobWFrZVVuaXF1ZTxBUEk6OkNvbnRl
eHRNZW51Q2xpZW50PigpKQogI2VuZGlmCisgICAgLCBtX2luc3BlY3RvckNsaWVudChtYWtlVW5p
cXVlPEFQSTo6SW5zcGVjdG9yQ2xpZW50PigpKQogICAgICwgbV9uYXZpZ2F0aW9uU3RhdGUobWFr
ZVVuaXF1ZTxXZWJOYXZpZ2F0aW9uU3RhdGU+KCkpCiAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykK
ICAgICAsIG1fcGFnZUdyb3VwKCptX2NvbmZpZ3VyYXRpb24tPnBhZ2VHcm91cCgpKQpAQCAtNjYz
LDYgKzY2NSwxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0SWNvbkxvYWRpbmdDbGllbnQoc3Rk
Ojp1bmlxdWVfcHRyPEFQSTo6SWNvbkxvYWRpbmdDbGllbnQ+JgogICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVzZUljb25Mb2FkaW5nQ2xpZW50KGhhc0NsaWVudCkpOwogfQogCit2b2lk
IFdlYlBhZ2VQcm94eTo6c2V0SW5zcGVjdG9yQ2xpZW50KHN0ZDo6dW5pcXVlX3B0cjxBUEk6Oklu
c3BlY3RvckNsaWVudD4mJiBpbnNwZWN0b3JDbGllbnQpCit7CisgICAgaWYgKCFpbnNwZWN0b3JD
bGllbnQpIHsKKyAgICAgICAgbV9pbnNwZWN0b3JDbGllbnQgPSBtYWtlVW5pcXVlPEFQSTo6SW5z
cGVjdG9yQ2xpZW50PigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9pbnNwZWN0
b3JDbGllbnQgPSBXVEZNb3ZlKGluc3BlY3RvckNsaWVudCk7Cit9CisKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3Rh
dGU6Ok9ic2VydmVyPiYmIG9ic2VydmVyKQogewogICAgIGlmIChtX3BhZ2VMb2FkU3RhdGVPYnNl
cnZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggOTc3OTc1MWE3
MGU2M2UxNzRhMjM1MDQxNjI2N2FjMDZiYWI0NDZjNi4uNWRmZjBkYzU0ZWJiODg3NDA3ZDNhMjll
MTIxZDA5MGJiODVmN2U4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTE3NCw2ICsxNzQsNyBAQCBjbGFzcyBGb3JtQ2xpZW50OwogY2xhc3MgRnVsbHNjcmVlbkNs
aWVudDsKIGNsYXNzIEhpc3RvcnlDbGllbnQ7CiBjbGFzcyBJY29uTG9hZGluZ0NsaWVudDsKK2Ns
YXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIExvYWRlckNsaWVudDsKIGNsYXNzIE5hdmlnYXRp
b247CiBjbGFzcyBOYXZpZ2F0aW9uQ2xpZW50OwpAQCAtNTUxLDYgKzU1Miw5IEBAIHB1YmxpYzoK
ICAgICBBUEk6Okljb25Mb2FkaW5nQ2xpZW50JiBpY29uTG9hZGluZ0NsaWVudCgpIHsgcmV0dXJu
ICptX2ljb25Mb2FkaW5nQ2xpZW50OyB9CiAgICAgdm9pZCBzZXRJY29uTG9hZGluZ0NsaWVudChz
dGQ6OnVuaXF1ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mJik7CiAKKyAgICBBUEk6Oklu
c3BlY3RvckNsaWVudCYgaW5zcGVjdG9yQ2xpZW50KCkgeyByZXR1cm4gKm1faW5zcGVjdG9yQ2xp
ZW50OyB9CisgICAgdm9pZCBzZXRJbnNwZWN0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6
SW5zcGVjdG9yQ2xpZW50PiYmKTsKKwogICAgIHZvaWQgc2V0UGFnZUxvYWRTdGF0ZU9ic2VydmVy
KHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcj4mJik7CiAKICAgICB2b2lk
IGluaXRpYWxpemVXZWJQYWdlKCk7CkBAIC0yMjU0LDYgKzIyNTgsNyBAQCBwcml2YXRlOgogI2lm
IEVOQUJMRShDT05URVhUX01FTlVTKQogICAgIHN0ZDo6dW5pcXVlX3B0cjxBUEk6OkNvbnRleHRN
ZW51Q2xpZW50PiBtX2NvbnRleHRNZW51Q2xpZW50OwogI2VuZGlmCisgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6SW5zcGVjdG9yQ2xpZW50PiBtX2luc3BlY3RvckNsaWVudDsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50PiBtX2luamVjdGVkQnVuZGxlQ2xp
ZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxQYWdlTG9hZFN0YXRlOjpPYnNlcnZlcj4gbV9wYWdl
TG9hZFN0YXRlT2JzZXJ2ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGJlNjQyMjA0Nzc1ZTI1NTVjY2JhNWZkZTlmOGU0YWU4MzU1
ZWRkZDUuLjljOTdmYTRlNjU5ZTYxMDRjMDRjMjQyNzczYjJjN2NkYzA1MGU1NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTMzNyw2
ICsxMzM3LDExIEBACiAJCTg2Rjk1MzY1MThGRjU4RjUwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkY5
NTM2MDE4RkY0RkQ0MDAxREIyRUYgLyogUHJvY2Vzc0Fzc2VydGlvbi5oICovOyB9OwogCQk4REMy
RUY1MzA0ODZBNjk0MDA5OEIyMTYgLyogSW5mb1BsaXN0LnN0cmluZ3MgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4OUMxNjY2RkU4NDExNThDMDJBQUMw
NyAvKiBJbmZvUGxpc3Quc3RyaW5ncyAqLzsgfTsKIAkJOTA5ODU0RUQxMkJDNEUxODAwMEFEMDgw
IC8qIFdlYk1lbW9yeVNhbXBsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkwNTYyMEU5MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVy
LmggKi87IH07CisJCTkxOTc5NDAyMjNEQkM0OTAwMDI1Nzg5MiAvKiBJbnNwZWN0b3JEZWxlZ2F0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE5Nzk0
MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggKi87IH07CisJCTkxOTc5
NDA1MjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDAzMjNEQkM0QkIwMDI1
Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCAqLzsgfTsKKwkJOTE5Nzk0MDgyM0RCQzRD
QjAwMjU3ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDA3MjNEQkM0Q0EwMDI1Nzg5MiAv
KiBXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmggKi87IH07CisJCTkxOTc5NDBBMjNEQkM0RTAw
MDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNw
ZWN0b3JDbGllbnQuaCAqLzsgfTsKKwkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0lu
c3BlY3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzIx
RDU4NjFBMzhFRTNDMDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIxRDU4NTFBMzhF
RTNDMDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggKi87IH07CiAJCTkz
MjFENThBMUEzOEYxOTYwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzIxRDU4OTFBMzhGMTk2
MDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMjM2MTFFMUIwMTVEQTgwMEZBOTIzMiAv
KiBfV0tPdmVybGF5U2Nyb2xsYmFyU3R5bGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjM2MTFEMUIwMTVEQTgwMEZBOTIzMiAvKiBfV0tPdmVybGF5
U2Nyb2xsYmFyU3R5bGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNDI0Niw2ICs0MjUxLDEzIEBACiAJCTkwNTYyMEU1MTJCQzI0NzYwMDA3OTlC
NiAvKiBXZWJNZW1vcnlTYW1wbGVyLm1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTWVtb3J5U2FtcGxlci5tYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk5
MDU2MjBFODEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2FtcGxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJNZW1vcnlTYW1wbGVyLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTA1NjIwRTkxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1l
bW9yeVNhbXBsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTWVtb3J5
U2FtcGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTk3OTNGRjIzREJDNDkw
MDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBJbnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckRlbGVnYXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5NDAzMjNEQkM0QkIwMDI1Nzg5MiAv
KiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yQnJvd3NlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTkxOTc5NDA0MjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQnJvd3NlckFnZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE5Nzk0MDcyM0RCQzRDQTAwMjU3
ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xp
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUluc3BlY3RvckNsaWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4
OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gX1dLSW5zcGVjdG9yRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTMyMUQ1ODUxQTM4RUUzQzAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ltbWVkaWF0ZUFjdGlvbkNv
bnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODcxQTM4RUU3
NDAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMyMUQ1ODkxQTM4RjE5NjAwODA1MkJF
IC8qIFdLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tJbW1lZGlhdGVBY3Rpb25UeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNjg1MSw2ICs2ODYzLDcgQEAKIAkJCQk5OTFGNDkyRDIzQTgxMkM1MDA1NDY0MkIgLyog
X1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8uaCAqLywKIAkJCQk5OTFGNDkyRTIzQTgxMkM2MDA1
NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm8ubW0gKi8sCiAJCQkJOTkwMzZBRTEy
M0E5NDlDRTAwMDBCMDZBIC8qIF9XS0luc3BlY3RvckRlYnVnZ2FibGVJbmZvSW50ZXJuYWwuaCAq
LywKKwkJCQk5MTk3OTQwQjIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUu
aCAqLywKIAkJCQk1Q0FGREU0NDIxMzA4NDM2MDBCMUY3RTEgLyogX1dLSW5zcGVjdG9ySW50ZXJu
YWwuaCAqLywKIAkJCQk5OTc5Q0E1NzIzN0Y0OUYwMDAzOUVDMDUgLyogX1dLSW5zcGVjdG9yUHJp
dmF0ZS5oICovLAogCQkJCUE1QzBGMEFBMjAwMDY1NkUwMDUzNjUzNiAvKiBfV0tJbnNwZWN0b3JX
aW5kb3cuaCAqLywKQEAgLTc5ODAsMTAgKzc5OTMsMjAgQEAKIAkJCXBhdGggPSBjb2NvYTsKIAkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCTkxOTc5M0ZFMjNEQkM0NzQwMDI1Nzg5
MiAvKiBDb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJOTE5Nzk0MDAyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggKi8sCisJ
CQkJOTE5NzkzRkYyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLm1tICovLAor
CQkJKTsKKwkJCXBhdGggPSBDb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07
CiAJCTkxRDk3MEQ0MjNEQTZEMjUwMDU3REJDMyAvKiBJbnNwZWN0b3IgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCTkxRDk3MEQ1MjNEQTZENTAwMDU3REJD
MyAvKiBBZ2VudHMgKi8sCisJCQkJOTE5NzkzRkUyM0RCQzQ3NDAwMjU3ODkyIC8qIENvY29hICov
LAogCQkJCTkxRDk3MEQ3MjNEQTZENUIwMDU3REJDMyAvKiBpb3MgKi8sCiAJCQkJOTFEOTcwRDYy
M0RBNkQ1NTAwNTdEQkMzIC8qIG1hYyAqLywKIAkJCQlBNUUzOTFGQjIxODNDMUU5MDBDOEZCMzEg
LyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuY3BwICovLApAQCAtNzk5OCw2ICs4MDIxLDcgQEAKIAkJ
CQlBNTVCQTgyODFCQTM4RTFFMDA3Q0QzM0QgLyogV2ViSW5zcGVjdG9yVXRpbGl0aWVzLmggKi8s
CiAJCQkJQTVFQzZBRDIyMTUxQkQ2OTAwNjc3RDE3IC8qIFdlYlBhZ2VEZWJ1Z2dhYmxlLmNwcCAq
LywKIAkJCQlBNUVDNkFEMzIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuaCAq
LywKKwkJCQk5MTk3OTQwNzIzREJDNENBMDAyNTc4OTIgLyogV2ViUGFnZUluc3BlY3RvckFnZW50
QmFzZS5oICovLAogCQkJCUE1MTNGNTNGMjE1NEE1Q0QwMDY2Mjg0MSAvKiBXZWJQYWdlSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAgKi8sCiAJCQkJQTUxM0Y1M0UyMTU0QTVDQzAwNjYyODQxIC8qIFdl
YlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggKi8sCiAJCQkpOwpAQCAtODAwNyw2ICs4MDMxLDgg
QEAKIAkJOTFEOTcwRDUyM0RBNkQ1MDAwNTdEQkMzIC8qIEFnZW50cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTE5Nzk0MDQyM0RCQzRCQjAwMjU3ODky
IC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAgKi8sCisJCQkJOTE5Nzk0MDMyM0RCQzRCQjAw
MjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBB
Z2VudHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtODY1MCw2ICs4Njc2LDcgQEAK
IAkJCQk3QUI2RUE0NDFFRUFBRTIzMDAwMzdCMkIgLyogQVBJSWNvbkRhdGFiYXNlQ2xpZW50Lmgg
Ki8sCiAJCQkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50
LmggKi8sCiAJCQkJN0E4QTlENTcxRUYxMTlBQTAwOTgwMUFFIC8qIEFQSUluamVjdGVkQnVuZGxl
Q2xpZW50LmggKi8sCisJCQkJOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3Rv
ckNsaWVudC5oICovLAogCQkJCTMxQjM2MjkwMjE0MUVBQkMwMDdCRkE1MyAvKiBBUElJbnRlcm5h
bERlYnVnRmVhdHVyZS5jcHAgKi8sCiAJCQkJMzFCMzYyOEUyMTQxRUE0RDAwN0JGQTUzIC8qIEFQ
SUludGVybmFsRGVidWdGZWF0dXJlLmggKi8sCiAJCQkJN0NFNEQyMDYxQTQ2Nzc1NzAwQzdGMTUy
IC8qIEFQSUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggKi8sCkBAIC0xMDAwMyw2ICsxMDAz
MCw3IEBACiAJCQkJNUNBRkRFNDUyMTMwODQ2MzAwQjFGN0UxIC8qIF9XS0luc3BlY3Rvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTkxRjQ5MkYyM0E4MTJDNjAwNTQ2NDJCIC8qIF9XS0luc3BlY3Rv
ckRlYnVnZ2FibGVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQk5OTAzNkFFMjIzQTk0OUNGMDAw
MEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTE5Nzk0MEMyM0RCQzUwMzAwMjU3ODkyIC8qIF9XS0luc3BlY3RvckRlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0FGREU0NzIxMzA4NDZBMDBCMUY3RTEgLyogX1dLSW5z
cGVjdG9ySW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTk5NzlDQTU4MjM3RjQ5RjEwMDM5
RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUMwRjBB
QjIwMDA2NTgyMDA1MzY1MzYgLyogX1dLSW5zcGVjdG9yV2luZG93LmggaW4gSGVhZGVycyAqLywK
QEAgLTEwMTExLDYgKzEwMTM5LDcgQEAKIAkJCQk3QTNBQ0UxQjFFRUVGNzlCMDBBODY0QTQgLyog
QVBJSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3
QThBOUQ1QzFFRjE0NTk4MDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlUmVzb3VyY2VM
b2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkzNzY5MDc5QTE4RjMxQ0IyMDAxREZGMDQg
LyogQVBJSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkx
OTc5NDBBMjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTMxQjM2MjhGMjE0MUVBNUQwMDdCRkE1MyAvKiBBUElJbnRlcm5hbERlYnVnRmVh
dHVyZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NFNEQyMDcxQTQ2Nzc2MTAwQzdGMTUyIC8qIEFQ
SUxlZ2FjeUNvbnRleHRIaXN0b3J5Q2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTI0NjRG
MzE4OTFFNDUxMDAyMzRDNUIgLyogQVBJTG9hZGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLywKQEAg
LTEwMjc4LDYgKzEwMzA3LDggQEAKIAkJCQlCQzE0REY3NzEyMEI1Qjc5MDA4MjZDMEMgLyogSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkRENDVBREUxRTVG
ODk3MjAwNkMzNTVGIC8qIElucHV0Vmlld1VwZGF0ZURlZmVycmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDRTU1MEUxNTIyODM3NTIyMDBEMjg3OTEgLyogSW5zZXJ0VGV4dE9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTkxOTc5NDA1MjNEQkM0QkIwMDI1Nzg5MiAvKiBJbnNwZWN0b3JCcm93
c2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTkxOTc5NDAyMjNEQkM0OTAwMDI1Nzg5MiAv
KiBJbnNwZWN0b3JEZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVFMzkxRkQyMTgzQzFG
ODAwQzhGQjMxIC8qIEluc3BlY3RvclRhcmdldFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlD
NUJDRTVERjFDNTA3NjZBMDBDREUzRkEgLyogSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTJENEQyQzgxMURGNjBCRjMwMDJFQjEwQyAvKiBJbnRl
cmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDczMCw2ICsx
MDc2MSw3IEBACiAJCQkJQkM3QjYyNTIxMkE0M0M5NjAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91cERh
dGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDN0I2MjE1MTJBNDIxOUEwMEQxNzRBNCAvKiBXZWJQ
YWdlR3JvdXBQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5RUEzMEYxQTk2Q0JGRjAwMkQy
ODA3IC8qIFdlYlBhZ2VJbmplY3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
OTE5Nzk0MDgyM0RCQzRDQjAwMjU3ODkyIC8qIFdlYlBhZ2VJbnNwZWN0b3JBZ2VudEJhc2UuaCBp
biBIZWFkZXJzICovLAogCQkJCUE1MTNGNTQwMjE1NEE1RDcwMDY2Mjg0MSAvKiBXZWJQYWdlSW5z
cGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0M0UzMEMyMTVDOEE4RDAw
Mjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1
NDNFMzBEMjE1QzhBOTAwMDI3OUNEOSAvKiBXZWJQYWdlSW5zcGVjdG9yVGFyZ2V0Q29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggOWRmYzg0MWZkZjI4YTUzMjZiOTc5MjkzMzlmMTRhNjUwNTBjMjE5Ni4u
MGNlZmJjZTk4NzkwYzFjMDE0MTY5MTgwYzI1NmY4YjNlZDJjNmYyOCAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIw
LTAxLTI5ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBzYWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVj
dGVkIGZpbGVzIHVzZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0cyBu
YW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5
MTEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
U2V0LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBBZGQgdGVz
dCBmb3IgYFdURjo6SGFzaFNldDo6cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eWAuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OlRFU1QpOgorICAgICAgICBBY3R1YWxseSBjaGVjayB0aGUgdmFsdWUgb2YgYFdURjo6
SGFzaE1hcDo6Y2FwYWNpdHlgLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTogQWRkZWQuCisgICAgICAgICgtW0luc3Bl
Y3RvckRlbGVnYXRlIF93ZWJWaWV3OmRpZEF0dGFjaEluc3BlY3RvcjpdKQorICAgICAgICAoLVtJ
bnNwZWN0b3JEZWxlZ2F0ZSBfd2ViVmlldzpicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3Rv
cjpdKQorICAgICAgICAoLVtJbnNwZWN0b3JEZWxlZ2F0ZSBfd2ViVmlldzpicm93c2VyRG9tYWlu
RGlzYWJsZWRGb3JJbnNwZWN0b3I6XSkKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbToK
KyAgICAgICAgKC1bSW5zcGVjdG9yRGVsZWdhdGUgX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9y
Ol0pOiBEZWxldGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6IERlbGV0ZWQuCisK
IDIwMjAtMDEtMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAg
ICAgIHJ1bi1zYWZhcmkgLyBydW4td2Via2l0LXRlc3RzIC0taW9zLXNpbXVsYXRvciBub3Qgd29y
a2luZyB3aXRoIFhDb2RlIDEzLjMuMSAoMTFDNTA0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjMzA0M2M4ZGY4NTUwMWVmYzA5MDYzZDA5ZGFjZThhYTdmZWMwMzMxLi4zMDFkYWExYTQ2NzNm
NWU5Yzc2NTE2MDdmOGEzNWViYjRiMTMzNjU3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
NzMxLDYgKzczMSw3IEBACiAJCThDMTBBRjk4MjA2NDY3OTIwMDE4RkQ5MCAvKiBsb2NhbHN0b3Jh
Z2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEMxMEFGOTcyMDY0Njc4MzAwMThGRDkwIC8qIGxvY2Fs
c3RvcmFnZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCAqLzsgfTsKIAkJOEMxMEFGOTkyMDY0NjdB
OTAwMThGRDkwIC8qIExvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEMxMEFGOTYyMDY0Njc3NzAwMThGRDkwIC8q
IExvY2FsU3RvcmFnZVBlcnNpc3RlbmNlLm1tICovOyB9OwogCQk4RTRBODUzNzFFMUQxQUIyMDBG
NTNCMEYgLyogR3JpZFBvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDhFNEE4NTM2MUUxRDFBQTEwMEY1M0IwRiAvKiBHcmlkUG9zaXRpb24u
Y3BwICovOyB9OworCQk5MTI0NzlGQTIzRTI2OUEyMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
MTI0NzlGOTIzRTI2OUExMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi87IH07
CiAJCTkzMEFENDAyMTUwNjk4RDAwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzBBRDQwMTE1
MDY5OEIzMDA2Nzk3MEYgLyogbG90cy1vZi10ZXh0Lmh0bWwgKi87IH07CiAJCTkzMTBDRDM4MUVG
NzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzEwQ0QzNjFFRjcwOEZCMDA1MEZGRTAgLyogRnVuY3Rpb24u
Y3BwICovOyB9OwogCQk5MzFDMjgxRDIyQkM1NUYyMDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTMxQzI4MUMy
MkJDNTVBNzAwMUQ5OEM0IC8qIFdlYlNRTEJhc2ljcy5tbSAqLzsgfTsKQEAgLTIxNjMsNiArMjE2
NCw3IEBACiAJCThDMTBBRjk3MjA2NDY3ODMwMDE4RkQ5MCAvKiBsb2NhbHN0b3JhZ2UtZW1wdHkt
c3RyaW5nLXZhbHVlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibG9jYWxzdG9y
YWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIFRlc3RXZWJLaXRBUEkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhl
Y3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IFRlc3RXZWJLaXRBUEk7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCThFNEE4NTM2MUUxRDFBQTEwMEY1M0Iw
RiAvKiBHcmlkUG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gR3JpZFBvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTEyNDc5
RjkyM0UyNjlBMTAwQzZDRUM4IC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLSW5zcGVjdG9yRGVsZWdhdGUubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBs
b3RzLW9mLXRleHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRl
eHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMTBDRDM2MUVGNzA4RkIw
MDUwRkZFMCAvKiBGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzMUMyODFC
MjJCQzU1ODMwMDFEOThDNCAvKiBvcGVuZGF0YWJhc2UtYWx3YXlzLWV4aXN0cy5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIm9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg2Miw2ICsyODY0LDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUExNkY2NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8s
CiAJCQkJNUNFQUI1REYxRkE5MzdDQjAwQTc3RkFBIC8qIF9XS0lucHV0RGVsZWdhdGUubW0gKi8s
CisJCQkJOTEyNDc5RjkyM0UyNjlBMTAwQzZDRUM4IC8qIF9XS0luc3BlY3RvckRlbGVnYXRlLm1t
ICovLAogCQkJCTdDRUZBOTY0MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29udGVudEV4dGVu
c2lvblN0b3JlLm1tICovLAogCQkJCTU3QzYyNDREMjM0NkJDRkEwMDM4M0ZFNyAvKiBfV0tXZWJB
dXRoZW50aWNhdGlvblBhbmVsLm1tICovLAogCQkJCTA3NDY2NDU4MjJGRjYzMDUwMEUzNDUxQSAv
KiBBY2Nlc3NpYmlsaXR5VGVzdFBsdWdpbi5tbSAqLywKQEAgLTQ1NzksNiArNDU4Miw3IEBACiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJNUNFQUI1
RTExRkE5MzlGNDAwQTc3RkFBIC8qIF9XS0lucHV0RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLywK
KwkJCQk5MTI0NzlGQTIzRTI2OUEyMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0VGQTk2NjFBQzBCOUUyMDBCOTEwRkQgLyogX1dLVXNlckNv
bnRlbnRFeHRlbnNpb25TdG9yZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTU3QzYyNDRFMjM0NkJD
RkEwMDM4M0ZFNyAvKiBfV0tXZWJBdXRoZW50aWNhdGlvblBhbmVsLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFRTQxQTQxMUFFNjAwNDQ3QzRDIC8qIEFib3V0QmxhbmtMb2FkLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFz
aE1hcC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAppbmRl
eCA2NmI1NTc0MmIzZTUzOTI1YjhhNTQ1OWM4YTRjNjI2NmNjNTFjMTFhLi5mOWFiM2Q1NGNhNTkz
YTU4MTU3OTA4ZTk4M2VlMThiNjdhYzlhYjY3IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9IYXNoTWFwLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dURi9IYXNoTWFwLmNwcApAQCAtMTA0NCwzMyArMTA0NCw0OCBAQCBURVNUKFdURl9IYXNoTWFw
LCBSZXNlcnZlSW5pdGlhbENhcGFjaXR5KQogewogICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+
IG1hcDsKICAgICBFWFBFQ1RfRVEoMHUsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwdSwg
bWFwLmNhcGFjaXR5KCkpOworCiAgICAgbWFwLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoOTk5OSk7
CiAgICAgRVhQRUNUX0VRKDB1LCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBt
YXAuY2FwYWNpdHkoKSk7CisKICAgICBmb3IgKGludCBpID0gMDsgaSA8IDk5OTk7ICsraSkKICAg
ICAgICAgbWFwLmFkZChtYWtlU3RyaW5nKCJmb28iLCBpKSwgbWFrZVN0cmluZygiYmFyIiwgaSkp
OwogICAgIEVYUEVDVF9FUSg5OTk5dSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMyNzY4
dSwgbWFwLmNhcGFjaXR5KCkpOwogICAgIEVYUEVDVF9UUlVFKG1hcC5jb250YWlucygiZm9vMyJf
c3RyKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJiYXIzIiwgbWFwLmdldCgiZm9vMyJfc3RyKS51dGY4
KCkuZGF0YSgpKTsKKwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQogICAgICAg
ICBtYXAuYWRkKG1ha2VTdHJpbmcoImV4Y2VzcyIsIGkpLCBtYWtlU3RyaW5nKCJiYXoiLCBpKSk7
CiAgICAgRVhQRUNUX0VRKDk5OTl1ICsgOTk5OXUsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9F
USgzMjc2OHUgKyAzMjc2OHUsIG1hcC5jYXBhY2l0eSgpKTsKKwogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgOTk5OTsgKytpKQogICAgICAgICBFWFBFQ1RfVFJVRShtYXAucmVtb3ZlKG1ha2VTdHJp
bmcoImZvbyIsIGkpKSk7CiAgICAgRVhQRUNUX0VRKDk5OTl1LCBtYXAuc2l6ZSgpKTsKKyAgICBF
WFBFQ1RfRVEoMzI3Njh1LCBtYXAuY2FwYWNpdHkoKSk7CiAgICAgRVhQRUNUX1NUUkVRKCJiYXoz
IiwgbWFwLmdldCgiZXhjZXNzMyJfc3RyKS51dGY4KCkuZGF0YSgpKTsKKwogICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgOTk5OTsgKytpKQogICAgICAgICBFWFBFQ1RfVFJVRShtYXAucmVtb3ZlKG1h
a2VTdHJpbmcoImV4Y2VzcyIsIGkpKSk7CiAgICAgRVhQRUNUX0VRKDB1LCBtYXAuc2l6ZSgpKTsK
LSAgICAKKyAgICBFWFBFQ1RfRVEoOHUsIG1hcC5jYXBhY2l0eSgpKTsKKwogICAgIEhhc2hNYXA8
U3RyaW5nLCBTdHJpbmc+IG1hcDI7CiAgICAgbWFwMi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDk5
OTkpOwogICAgIEVYUEVDVF9GQUxTRShtYXAyLnJlbW92ZSgiZm9vMSJfcykpOworCiAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kpCiAgICAgICAgIG1hcDIuYWRkKG1ha2VTdHJpbmco
ImZvbyIsIGkpLCBtYWtlU3RyaW5nKCJiYXIiLCBpKSk7CiAgICAgRVhQRUNUX0VRKDIwMDB1LCBt
YXAyLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMyNzY4dSwgbWFwMi5jYXBhY2l0eSgpKTsKKwog
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjAwMDsgKytpKQogICAgICAgICBFWFBFQ1RfVFJVRSht
YXAyLnJlbW92ZShtYWtlU3RyaW5nKCJmb28iLCBpKSkpOwogICAgIEVYUEVDVF9FUSgwdSwgbWFw
Mi5zaXplKCkpOworICAgIEVYUEVDVF9FUSg4dSwgbWFwMi5jYXBhY2l0eSgpKTsKIH0KIAogVEVT
VChXVEZfSGFzaE1hcCwgUmFuZG9tX0lzRXZlbmx5RGlzdHJpYnV0ZWRBZnRlclJlbW92ZSkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAKaW5kZXggNDRlMjE3ZTBlMTAw
MWMzZjFlZWI1NjU4ZjBjODkzZGIzYzIzYWI2NS4uMjY1MjM2ZTg0NmJmMDc3MTU3Njg0YTMwYjgw
NGJkMGIwMjNlODU5YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
SGFzaFNldC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5j
cHAKQEAgLTI5LDkgKzI5LDEyIEBACiAjaW5jbHVkZSAiRGVsZXRlZEFkZHJlc3NPZk9wZXJhdG9y
LmgiCiAjaW5jbHVkZSAiTW92ZU9ubHkuaCIKICNpbmNsdWRlICJSZWZMb2dnZXIuaCIKKyNpbmNs
dWRlICJUZXN0LmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdD
b25jYXRlbmF0ZU51bWJlcnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtNTAzLDQgKzUwNiw1MCBAQCBURVNUKFdU
Rl9IYXNoU2V0LCBSZW1vdmVJZlNocmlua1RvQmVzdFNpemUpCiAgICAgQVNTRVJUX0VRKHNldDEu
Y2FwYWNpdHkoKSwgb3JpZ2luYWxDYXBhY2l0eSk7CiB9CiAKK1RFU1QoV1RGX0hhc2hTZXQsIFJl
c2VydmVJbml0aWFsQ2FwYWNpdHkpCit7CisgICAgSGFzaFNldDxTdHJpbmc+IHNldDsKKyAgICBF
WFBFQ1RfRVEoMHUsIHNldC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgwdSwgc2V0LmNhcGFjaXR5
KCkpOworCisgICAgc2V0LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoOTk5OSk7CisgICAgRVhQRUNU
X0VRKDB1LCBzZXQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBzZXQuY2FwYWNpdHko
KSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDk5OTk7ICsraSkKKyAgICAgICAgc2V0LmFk
ZChtYWtlU3RyaW5nKCJmb28iLCBpKSk7CisgICAgRVhQRUNUX0VRKDk5OTl1LCBzZXQuc2l6ZSgp
KTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBzZXQuY2FwYWNpdHkoKSk7CisgICAgRVhQRUNUX1RS
VUUoc2V0LmNvbnRhaW5zKCJmb28zIl9zdHIpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
OTk5OTsgKytpKQorICAgICAgICBzZXQuYWRkKG1ha2VTdHJpbmcoImV4Y2VzcyIsIGkpKTsKKyAg
ICBFWFBFQ1RfRVEoOTk5OXUgKyA5OTk5dSwgc2V0LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMy
NzY4dSArIDMyNzY4dSwgc2V0LmNhcGFjaXR5KCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCA5OTk5OyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5yZW1vdmUobWFrZVN0cmluZygi
Zm9vIiwgaSkpKTsKKyAgICBFWFBFQ1RfRVEoOTk5OXUsIHNldC5zaXplKCkpOworICAgIEVYUEVD
VF9FUSgzMjc2OHUsIHNldC5jYXBhY2l0eSgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
OTk5OTsgKytpKQorICAgICAgICBFWFBFQ1RfVFJVRShzZXQucmVtb3ZlKG1ha2VTdHJpbmcoImV4
Y2VzcyIsIGkpKSk7CisgICAgRVhQRUNUX0VRKDB1LCBzZXQuc2l6ZSgpKTsKKyAgICBFWFBFQ1Rf
RVEoOHUsIHNldC5jYXBhY2l0eSgpKTsKKworICAgIEhhc2hTZXQ8U3RyaW5nPiBzZXQyOworICAg
IHNldDIucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsKKyAgICBFWFBFQ1RfRkFMU0Uoc2V0
Mi5yZW1vdmUoImZvbzEiX3MpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjAwMDsgKytp
KQorICAgICAgICBzZXQyLmFkZChtYWtlU3RyaW5nKCJmb28iLCBpKSk7CisgICAgRVhQRUNUX0VR
KDIwMDB1LCBzZXQyLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDMyNzY4dSwgc2V0Mi5jYXBhY2l0
eSgpKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjAwMDsgKytpKQorICAgICAgICBFWFBF
Q1RfVFJVRShzZXQyLnJlbW92ZShtYWtlU3RyaW5nKCJmb28iLCBpKSkpOworICAgIEVYUEVDVF9F
USgwdSwgc2V0Mi5zaXplKCkpOworICAgIEVYUEVDVF9FUSg4dSwgc2V0Mi5jYXBhY2l0eSgpKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IDBmOGIxMjljNjA1
OTc5NjkxMjk3YWY2OTc2M2ZjOGVmYzZkYWE3NDAuLjgyYzMzNTg0ZGU1ZWM1NDhjYzBkYTJjZTAw
NmZlNzMwZTU0MTk1YzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1VJRGVsZWdhdGUubW0KQEAgLTM4LDcgKzM4LDYgQEAKICNpbXBvcnQgPFdlYktp
dC9XS1VJRGVsZWdhdGVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0
ZUZvclRlc3RpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tIaXRUZXN0UmVzdWx0Lmg+Ci0jaW1w
b3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAj
aW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKQEAgLTkwMCwzNCArODk5LDQgQEAgVEVTVChXZWJLaXQs
IERpZE5vdEhhbmRsZVdoZWVsRXZlbnQpCiAKICNlbmRpZiAvLyBSRUxJQUJMRV9ESURfTk9UX0hB
TkRMRV9XSEVFTF9FVkVOVAogCi1AaW50ZXJmYWNlIEluc3BlY3RvckRlbGVnYXRlIDogTlNPYmpl
Y3QgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+Ci1AZW5kCi0KLUBpbXBsZW1lbnRhdGlvbiBJbnNwZWN0
b3JEZWxlZ2F0ZQotCi0tICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEF0
dGFjaEluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCi17Ci0gICAgRVhQRUNUX0VR
KHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKLSAgICBFWFBFQ1RfVFJVRSh3ZWJWaWV3
Ll9oYXNJbnNwZWN0b3JGcm9udGVuZCk7Ci0gICAgW2luc3BlY3RvciBjbG9zZV07Ci0gICAgZG9u
ZSA9IHRydWU7Ci19Ci0KLUBlbmQKLQotVEVTVChXZWJLaXQsIERpZE5vdGlmeVdoZW5JbnNwZWN0
b3JBdHRhY2hlZCkKLXsKLSAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBuZXddKTsKLSAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKS5wcmVmZXJlbmNlcy5fZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKLSAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKLSAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbSW5zcGVjdG9yRGVsZWdhdGUg
bmV3XSk7Ci0gICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Ci0gICAg
W3dlYlZpZXcgbG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGlu
c3BlY3RlZDwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4i
IGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOwot
Ci0gICAgRVhQRUNUX0ZBTFNFKHdlYlZpZXcuZ2V0KCkuX2hhc0luc3BlY3RvckZyb250ZW5kKTsK
LQotICAgIFtbd2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKLSAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwotfQotCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvX1dLSW5zcGVj
dG9yRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTRjYzNmMjNjZTRjYzc0ODM5MGM1MmQ3MmNiZmMx
NjlmMjkxMDQxMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0KQEAgLTAsMCArMSw5OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlRlc3QuaCIKKyNp
bXBvcnQgIlV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVj
dG9yLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaD4KKyNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JNKE1BQykKKworc3RhdGljIGJvb2wgZGlk
QXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGJyb3dzZXJE
b21haW5FbmFibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gZmFsc2U7CitzdGF0aWMgYm9vbCBicm93
c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKKworQGludGVyZmFj
ZSBJbnNwZWN0b3JEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4KK0Bl
bmQKKworQGltcGxlbWVudGF0aW9uIEluc3BlY3RvckRlbGVnYXRlCisKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6KF9XS0luc3Bl
Y3RvciAqKWluc3BlY3RvcgoreworICAgIGRpZEF0dGFjaExvY2FsSW5zcGVjdG9yQ2FsbGVkID0g
ZmFsc2U7CisgICAgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxz
ZTsKKyAgICBicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsK
KworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGluc3BlY3Rvcik7CisgICAgRVhQ
RUNUX1RSVUUod2ViVmlldy5faGFzSW5zcGVjdG9yRnJvbnRlbmQpOworCisgICAgZGlkQXR0YWNo
TG9jYWxJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yOihfV0tJbnNw
ZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBFWFBFQ1RfRVEod2ViVmlldy5faW5zcGVjdG9yLCBp
bnNwZWN0b3IpOworCisgICAgLy8gV2FpdCBmb3IgdGhlIEJyb3dzZXIgZG9tYWluIHRvIGJlIGVu
YWJsZWQgYmVmb3JlIGNsb3NpbmcgV2ViIEluc3BlY3Rvciwgd2hpY2ggd2lsbAorICAgIC8vIGF1
dG9tYXRpY2FsbHkgZGlzYWJsZSB0aGUgZG9tYWluLgorICAgIFtpbnNwZWN0b3IgY2xvc2VdOwor
CisgICAgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSB0cnVlOworfQor
CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5EaXNh
YmxlZEZvckluc3BlY3RvcjooX1dLSW5zcGVjdG9yICopaW5zcGVjdG9yCit7CisgICAgRVhQRUNU
X0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKKworICAgIGJyb3dzZXJEb21haW5E
aXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IHRydWU7Cit9CisKK0BlbmQKKworVEVTVChXZWJL
aXRfV0tJbnNwZWN0b3JEZWxlZ2F0ZSwgRGlkTm90aWZ5Rm9yTG9jYWxJbnNwZWN0b3IpCit7Cisg
ICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gbmV3XSk7CisgICAgd2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCkucHJlZmVyZW5jZXMu
X2RldmVsb3BlckV4dHJhc0VuYWJsZWQgPSBZRVM7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW0luc3BlY3RvckRlbGVnYXRlIG5ld10pOworICAgIFt3ZWJW
aWV3IF9zZXRJbnNwZWN0b3JEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcg
bG9hZEhUTUxTdHJpbmc6QCI8aGVhZD48dGl0bGU+VGVzdCBwYWdlIHRvIGJlIGluc3BlY3RlZDwv
dGl0bGU+PC9oZWFkPjxib2R5PjxwPkZpbGxlciBjb250ZW50PC9wPjwvYm9keT4iIGJhc2VVUkw6
W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwOi8vZXhhbXBsZS5jb20vIl1dOworCisgICAgRVhQ
RUNUX0ZBTFNFKHdlYlZpZXcuZ2V0KCkuX2hhc0luc3BlY3RvckZyb250ZW5kKTsKKworICAgIFtb
d2ViVmlldyBfaW5zcGVjdG9yXSBzaG93XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQpOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9y
Q2FsbGVkKTsKK30KKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391719</attachid>
            <date>2020-02-25 19:55:41 -0800</date>
            <delta_ts>2020-02-25 22:05:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206911-20200225195540.patch</filename>
            <type>text/plain</type>
            <size>116945</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAwZDkxNzQ5NWJjNTQ5MTk3YmZhM2RjMTZhNzNh
MDRjNWMyNjljOWIuLjU0YmIwMGM5MTgzM2RjNTAzZDZmMTE3Nzc4MjU3YjQxOTU2MjQ4OWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDIwLTAyLTI1ICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
YWZhcmkgYXBwIGV4dGVuc2lvbiBpc29sYXRlZCB3b3JsZHMgYW5kIGluamVjdGVkIGZpbGVzIHVz
ZSB0aGUgZXh0ZW5zaW9uJ3MgaWRlbnRpZmllciBpbnN0ZWFkIG9mIGl0cyBuYW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5MTEKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU4MDI2NjM1PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1
cmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uOiBBZGRlZC4K
KyAgICAgICAgQWRkIGEgYEJyb3dzZXJgIGFnZW50IHRoYXQgY2FuIGNvbW11bmljYXRlIHdpdGgg
dGhlIGluc3BlY3RlZCBwYWdlJ3MgY29udGFpbmluZyBicm93c2VyLiBJdAorICAgICAgICBsaXZl
cyBpbiB0aGUgVUlQcm9jZXNzIGFsb25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcg
dGhlcmUgc2hvdWxkIG9ubHkgYmUgb25lIHBlcgorICAgICAgICBkZWJ1Z2dhYmxlIHJhdGhlciB0
aGFuIG9uZSBwZXIgdGFyZ2V0KSBhbmQgYXMgc3VjaCBpcyBub3Qgcm91dGVkIHRocm91Z2ggdGhl
IGBUYXJnZXRgIGFnZW50LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorCiAyMDIwLTAyLTI0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dURl0gQXR0YWNoIFdBUk5fVU5VU0VEX1JFVFVSTiB0byBtYWtlU2NvcGVF
eGl0IGFuZCBmaXggZXhpc3Rpbmcgd3JvbmcgdXNhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNjkxYTViNzA5ZWVlZDI5YTAw
M2UwMDE5OGFmMzAxMTBkZTgwOWM5MC4uMjlhMDhiM2YwZmM4YWEzNzE3ODg2ZDc3ZmUxNDA2NGQ1
ZmJlMDlkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wMi0yNSAgRGV2aW4gUm91c3NvICA8
ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc2FmYXJpIGFwcCBl
eHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmplY3RlZCBmaWxlcyB1c2UgdGhlIGV4dGVu
c2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdHMgbmFtZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAg
ICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKFdURjo6SGFzaFNldDo6cmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eSk6IEFkZGVkLgorCiAyMDIwLTAyLTI1ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5v
cm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXSBFbmFibGUgQkFDS1RSQUNFX1NZTUJP
TFMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA3MjdkYmIyNWQ5MTdjMWRjMjkyMzE5YzkzN2FjYTM3ZDZkYjhkZjE3
Li5lZjBhNTQyMjc4ZDBjZjU2NGZkMjRmNGJmMWU3NzZmYmMxNDk1NGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTQgQEAKKzIwMjAtMDItMjUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xh
dGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmlsZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlm
aWVyIGluc3RlYWQgb2YgaXRzIG5hbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjY2MzU+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIE1vZHVsZXMv
d2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oOgorICAgICAg
ICBEcml2ZS1ieTogYWRkIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAyMC0wMi0yNSAgQmVuIE5oYW0g
IDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVuZGVyIHVwZGF0ZSB0aHJvdHRs
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAwNjFlMTgwNmY5NTgxNjdhMWI5NWZkMjRh
ZGVmOWNhMWVkYmFhNmNjLi42ZDgyZjU2OTRjNmU0ZTFmMTAxYjgwZmI1ZmQ0NjQ0YmRkZDBiZjVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAyMC0wMi0yNSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogc2FmYXJpIGFwcCBleHRlbnNpb24gaXNvbGF0ZWQgd29ybGRzIGFuZCBpbmplY3RlZCBmaWxl
cyB1c2UgdGhlIGV4dGVuc2lvbidzIGlkZW50aWZpZXIgaW5zdGVhZCBvZiBpdHMgbmFtZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTExCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81ODAyNjYzNT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmlh
biBCdXJnLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Ccm93c2VyTWFu
YWdlci5qczogQWRkZWQuCisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlcik6CisgICAgICAgIChX
SS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChX
SS5Ccm93c2VyTWFuYWdlci5wcm90b3R5cGUuZW5hYmxlKToKKyAgICAgICAgKFdJLkJyb3dzZXJN
YW5hZ2VyLnByb3RvdHlwZS5kaXNhYmxlKToKKyAgICAgICAgKFdJLkJyb3dzZXJNYW5hZ2VyLnBy
b3RvdHlwZS5pc0V4dGVuc2lvblNjaGVtZSk6CisgICAgICAgIChXSS5Ccm93c2VyTWFuYWdlci5w
cm90b3R5cGUuZXh0ZW5zaW9uTmFtZUZvcklkKToKKyAgICAgICAgKFdJLkJyb3dzZXJNYW5hZ2Vy
LnByb3RvdHlwZS5leHRlbnNpb25OYW1lRm9yVVJMKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL0Jyb3dzZXJPYnNlcnZlci5qczogQWRkZWQuCisgICAgICAgIChXSS5Ccm93c2Vy
T2JzZXJ2ZXIucHJvdG90eXBlLmV4dGVuc2lvbnNFbmFibGVkKToKKyAgICAgICAgKFdJLkJyb3dz
ZXJPYnNlcnZlci5wcm90b3R5cGUuZXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qczoKKyAgICAgICAgKFdJLlRhcmdldC5wcm90b3R5
cGUuZ2V0IEJyb3dzZXJBZ2VudCk6IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFz
ZS9NYWluLmpzOgorICAgICAgICAoV0kubG9hZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qczoKKyAgICAg
ICAgKFdJLmxvYWRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisgICAg
ICAgIEFkZCBhbiBvYnNlcnZlciBhbmQgbWFuYWdlciBmb3IgdGhlIGBCcm93c2VyYCBkb21haW4u
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRU
YXJnZXQuanM6CisgICAgICAgIChXSS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0KToKKyAgICAg
ICAgKFdJLk11bHRpcGxleGluZ0JhY2tlbmRUYXJnZXQucHJvdG90eXBlLmluaXRpYWxpemUpOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qczoKKyAg
ICAgICAgKFdJLlRhcmdldE1hbmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOiBBZGRl
ZC4KKyAgICAgICAgVGhlIGBCcm93c2VyYCBhZ2VudCBsaXZlcyBpbiB0aGUgVUlQcm9jZXNzIGFs
b25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcgdGhlcmUKKyAgICAgICAgc2hvdWxk
IG9ubHkgYmUgb25lIHBlciBkZWJ1Z2dhYmxlIHJhdGhlciB0aGFuIG9uZSBwZXIgdGFyZ2V0KSBh
bmQgYXMgc3VjaCBpcyBub3Qgcm91dGVkCisgICAgICAgIHRocm91Z2ggdGhlIGBUYXJnZXRgIGFn
ZW50LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanM6Cisg
ICAgICAgIChXSS5RdWlja0NvbnNvbGUucHJvdG90eXBlLl9kaXNwbGF5TmFtZUZvckV4ZWN1dGlv
bkNvbnRleHQpOgorICAgICAgICBBdHRlbXB0IHRvIG1hdGNoIHRoZSBleGVjdXRpb24gY29udGV4
dCBuYW1lIGFnYWluc3QgYW55IGtub3duIGV4dGVuc2lvbiBpZGVudGlmaWVyLCBhbmQKKyAgICAg
ICAgdXNlIHRoZSBleHRlbnNpb24ncyBkaXNwbGF5IG5hbWUgaWYgb25lIGlzIGZvdW5kLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1VSTFV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJ
LmRpc3BsYXlOYW1lRm9ySG9zdCk6CisgICAgICAgIEF0dGVtcHQgdG8gbWF0Y2ggdGhlIGhvc3Qg
YWdhaW5zdCBhbnkga25vd24gZXh0ZW5zaW9uIGlkZW50aWZpZXIsIGFuZCB1c2UgdGhlIGV4dGVu
c2lvbidzCisgICAgICAgIGRpc3BsYXkgbmFtZSBpZiBvbmUgaXMgZm91bmQuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9hZGRT
dHlsZVNoZWV0KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5fYWRkU2NyaXB0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0
aWVzLmpzOgorICAgICAgICAoaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUpOiBEZWxldGVkLgorICAg
ICAgICAqIC5lc2xpbnRyYzoKKyAgICAgICAgVXNlIGBXSS5Ccm93c2VyTWFuYWdlci5wcm90b3R5
cGUuaXNFeHRlbnNpb25TY2hlbWVgIGluc3RlYWQgb2YgdGhlIGdsb2JhbCBmdW5jdGlvbi4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanM6CisgICAgICAgIChX
SS5Tb3VyY2VDb2RlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdldCB1cmwp
OiBBZGRlZC4KKyAgICAgICAgKFdJLlNvdXJjZUNvZGUucHJvdG90eXBlLmdldCB1cmxDb21wb25l
bnRzKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVl
dC5qczoKKyAgICAgICAgKFdJLkNTU1N0eWxlU2hlZXQpOgorICAgICAgICAoV0kuQ1NTU3R5bGVT
aGVldC5wcm90b3R5cGUuZ2V0IGluamVjdGVkKToKKyAgICAgICAgKFdJLkNTU1N0eWxlU2hlZXQu
cHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ1NTU3R5bGVTaGVldC5w
cm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL1Jlc291cmNlLmpzOgorICAgICAgICAoV0kuUmVzb3VyY2UpOgorICAgICAg
ICAoV0kuUmVzb3VyY2UucHJvdG90eXBlLmdldCB1cmwpOiBEZWxldGVkLgorICAgICAgICAoV0ku
UmVzb3VyY2UucHJvdG90eXBlLmdldCB1cmxDb21wb25lbnRzKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanM6CisgICAgICAgIChXSS5TY3JpcHQpOgor
ICAgICAgICAoV0kuU2NyaXB0LnByb3RvdHlwZS5nZXQgdXJsKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLlNjcmlwdC5wcm90b3R5cGUuZ2V0IHVybENvbXBvbmVudHMpOiBEZWxldGVkLgorICAgICAg
ICBBbGwgc3ViY2xhc3NlcyBvZiBgV0kuU291cmNlQ29kZWAgaGF2ZSBzZXBhcmF0ZSBgZ2V0IHVy
bGAgYW5kIGBnZXQgdXJsQ29tcG9uZW50c2AgZnVuY3Rpb25zLAorICAgICAgICBzbyB1bmlmeSB0
aGVtIGluIHRoZSBjb21tb24gc3VwZXJjbGFzcyBzbyB0aGF0IGl0J3MgZ3VhcmFudGVlZCB0byBl
eGlzdC4KKwogMjAyMC0wMi0yNSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBWb2ljZU92ZXI6IFRyZWVPdXRsaW5lIGRvZXMg
bm90IGNvcnJlY3RseSBpbmRpY2F0ZSBzZWxlY3RlZCBpdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDBjZmJiMDFk
NDBjNmQwMzdjNTMyYzhjYTkzMWNmY2U0ZGQzYmYyMmEuLjQ4MDZjMmQ4MDMyYzhiYWUzNDhkOGQw
NTJlYmQwZjQ5MGY1NGZjODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTMgQEAKKzIwMjAtMDItMjUg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmls
ZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlmaWVyIGluc3RlYWQgb2YgaXRzIG5hbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjY2MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJp
YW4gQnVyZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3Rv
ckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xs
ZXI6OmVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdlbnQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OnNldEVuYWJsZWRJbnNwZWN0b3JC
cm93c2VyQWdlbnQpOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBh
Z2VJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUluc3Bl
Y3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjp3ZWJQYWdlQWdlbnRDb250
ZXh0KTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
OjpjcmVhdGVMYXp5QWdlbnRzKTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJ
bnNwZWN0b3JBZ2VudEJhc2U6Okluc3BlY3RvckFnZW50QmFzZSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50Lmg6IEFkZGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJyb3dzZXJBZ2VudC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpJbnNwZWN0b3JCcm93c2VyQWdlbnQ6Okluc3Bl
Y3RvckJyb3dzZXJBZ2VudCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2Vu
dDo6ZW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yQnJv
d3NlckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYktpdDo6SW5z
cGVjdG9yQnJvd3NlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9y
QnJvd3NlckFnZW50OjpleHRlbnNpb25zRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6Okluc3Bl
Y3RvckJyb3dzZXJBZ2VudDo6ZXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgQWRkIGEgYEJy
b3dzZXJgIGFnZW50IHRoYXQgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIGluc3BlY3RlZCBwYWdl
J3MgY29udGFpbmluZyBicm93c2VyLiBJdAorICAgICAgICBsaXZlcyBpbiB0aGUgVUlQcm9jZXNz
IGFsb25nc2lkZSB0aGUgYFRhcmdldGAgYWdlbnQgKG1lYW5pbmcgdGhlcmUgc2hvdWxkIG9ubHkg
YmUgb25lIHBlcgorICAgICAgICBkZWJ1Z2dhYmxlIHJhdGhlciB0aGFuIG9uZSBwZXIgdGFyZ2V0
KSBhbmQgYXMgc3VjaCBpcyBub3Qgcm91dGVkIHRocm91Z2ggdGhlIGBUYXJnZXRgIGFnZW50Lgor
CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Omluc3BlY3RvckNsaWVudCk6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OldlYlBh
Z2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5h
bC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2luaXRpYWxpemVXaXRoQ29uZmlndXJhdGlvbjpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9pbnNwZWN0b3JEZWxlZ2F0ZV0pOiBBZGRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9zZXRJbnNwZWN0b3JEZWxlZ2F0ZTpdKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2V0SW5zcGVjdG9yQ2xpZW50KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNz
L0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBV
SVByb2Nlc3MvSW5zcGVjdG9yL0NvY29hL0luc3BlY3RvckRlbGVnYXRlLm1tOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3RvckRlbGVnYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVsZWdhdGU6OmNyZWF0ZUluc3BlY3RvckNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpkZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0ZSk6CisgICAgICAgIChXZWJL
aXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGllbnQpOgorICAgICAgICAoV2ViS2l0
OjpJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3Bl
Y3Rvcik6CisgICAgICAgIChXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlOjpJbnNwZWN0b3JDbGll
bnQ6OmJyb3dzZXJEb21haW5FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRGVs
ZWdhdGU6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkRpc2FibGVkKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEFQ
STo6SW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3BlY3Rvcik6CisgICAgICAgIChB
UEk6Okluc3BlY3RvckNsaWVudDo6YnJvd3NlckRvbWFpbkVuYWJsZWQpOgorICAgICAgICAoQVBJ
OjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oOiBBZGRlZC4KKyAgICAgICAg
SW50cm9kdWNlIGFuIGluc3BlY3RvciBkZWxlZ2F0ZSBTUEkgZm9yIGNvbW11bmljYXRpbmcgaW5m
b3JtYXRpb24gcmVsYXRlZCB0byBXZWIgSW5zcGVjdG9yLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tJbnNwZWN0b3IubW06CisgICAgICAgICgtW19XS0luc3BlY3RvciBfYnJvd3Nl
ckV4dGVuc2lvbnNFbmFibGVkOl0pOiBBZGRlZC4KKyAgICAgICAgKC1bX1dLSW5zcGVjdG9yIF9i
cm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkOl0pOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
SW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0luc3Bl
Y3Rvci9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3Rv
clByb3h5OjpvcGVuTG9jYWxJbnNwZWN0b3JGcm9udGVuZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykluc3BlY3RvclByb3h5Ojpicm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQpOiBBZGRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHk6OmJyb3dzZXJFeHRlbnNpb25zRGlzYWJsZWQp
OiBBZGRlZC4KKyAgICAgICAgQWRkIFNQSSBmb3Igd2hlbiBleHRlbnNpb25zIGFyZSBlbmFibGVk
L2Rpc2FibGVkIHNvIHRoYXQgV2ViIEluc3BlY3RvciBjYW4gdXBkYXRlLgorCisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
VUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6VUlEZWxlZ2F0ZTo6c2V0RGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpVSURlbGVnYXRlOjpVSUNsaWVudDo6ZGlkQXR0YWNoSW5zcGVj
dG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50Lmg6Cisg
ICAgICAgIChBUEk6OlVJQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAg
ICBNb3ZlIGBfd2ViVmlldzpkaWRBdHRhY2hJbnNwZWN0b3I6YCBmcm9tIGBXS1VJRGVsZWdhdGVQ
cml2YXRlYCB0byBgX1dLSW5zcGVjdG9yRGVsZWdhdGVgLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBQbGF0Zm9y
bU1hYy5jbWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBTb3VyY2VzQ29j
b2EudHh0OgorICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlv
bi5oOgorICAgICAgICBEcml2ZS1ieTogYWRkIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAyMC0wMi0y
NSAgQmVuIE5oYW0gIDxuaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgcmVuZGVyIHVw
ZGF0ZSB0aHJvdHRsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggOTFl
NDI3YzMwYzUxMTYzZWRkOWYxMDZkNDJmOTVlMDlkMDJiZTljNC4uNDA0ZmU3MzE5Y2VlZmQzZDJm
NDQ3NmMyNjVmNDMyMzgyNDEzNDA0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtMTE1Miw2ICsxMTUyLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0lOU1BFQ1RPUl9ET01B
SU5TCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2luc3BlY3Rvci9wcm90b2NvbC9ET01TdG9y
YWdlLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29sL0Rh
dGFiYXNlLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3RvY29s
L0RlYnVnZ2VyLmpzb24KKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVjdG9yL3Byb3Rv
Y29sL0Jyb3dzZXIuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0b3IvcHJv
dG9jb2wvR2VuZXJpY1R5cGVzLmpzb24KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW5zcGVj
dG9yL3Byb3RvY29sL0hlYXAuanNvbgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnNwZWN0
b3IvcHJvdG9jb2wvSW5zcGVjdG9yLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXggOWVhZDY1M2ZhYWFiMTg5
M2ViOTJkZDAyZTk3NTc5NjZkZmE5OWFjNC4uMjM0MGNkZmFjNDYxYjliNmIzMWIwNTc4YjI1YWZi
NTU1YmFkYWQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTkwLDYgKzkwLDcgQEAgJChQUk9KRUNUX0RJUikv
aW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET01TdG9yYWdlLmpzb24KICQoUFJPSkVDVF9ESVIpL2luc3BlY3Rvci9w
cm90b2NvbC9EYXRhYmFzZS5qc29uCiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wv
RGVidWdnZXIuanNvbgorJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIu
anNvbgogJChQUk9KRUNUX0RJUikvaW5zcGVjdG9yL3Byb3RvY29sL0dlbmVyaWNUeXBlcy5qc29u
CiAkKFBST0pFQ1RfRElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvSGVhcC5qc29uCiAkKFBST0pFQ1Rf
RElSKS9pbnNwZWN0b3IvcHJvdG9jb2wvSW5kZXhlZERCLmpzb24KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggZTJhMzZmYTg3NjQ5MDlhYmZkMGUxODk2ZDNh
OWE3YzM2MWYxYjIzYS4uZTlkODA0ZDllOGJlNWMzNDVlZjQ3MjE5ZTBlOTk2ZDMxOWJiZjkwNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTI0OSw2ICsy
NDksNyBAQCBJTlNQRUNUT1JfRE9NQUlOUyA6PSBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkvaW5z
cGVjdG9yL3Byb3RvY29sL0RPTVN0b3JhZ2UuanNvbiBcCiAgICAgJChKYXZhU2NyaXB0Q29yZSkv
aW5zcGVjdG9yL3Byb3RvY29sL0RhdGFiYXNlLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENvcmUp
L2luc3BlY3Rvci9wcm90b2NvbC9EZWJ1Z2dlci5qc29uIFwKKyAgICAkKEphdmFTY3JpcHRDb3Jl
KS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uIFwKICAgICAkKEphdmFTY3JpcHRDb3Jl
KS9pbnNwZWN0b3IvcHJvdG9jb2wvR2VuZXJpY1R5cGVzLmpzb24gXAogICAgICQoSmF2YVNjcmlw
dENvcmUpL2luc3BlY3Rvci9wcm90b2NvbC9IZWFwLmpzb24gXAogICAgICQoSmF2YVNjcmlwdENv
cmUpL2luc3BlY3Rvci9wcm90b2NvbC9JbnNwZWN0b3IuanNvbiBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIuanNvbiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvQnJvd3Nlci5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmZlMGNmOWNhOWIwNjI4OTgzNjdlZGQzMjU5YTdkZGFjMDM3ZDE1OWEKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0Jyb3dzZXIu
anNvbgpAQCAtMCwwICsxLDQ2IEBACit7CisgICAgImRvbWFpbiI6ICJCcm93c2VyIiwKKyAgICAi
ZGVzY3JpcHRpb24iOiAiVGhlIEJyb3dzZXIgZG9tYWluIGNvbnRhaW5zIGNvbW1hbmRzIGFuZCBl
dmVudHMgcmVsYXRlZCB0byBnZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBicm93c2VyICIs
CisgICAgImRlYnVnZ2FibGVUeXBlcyI6IFsid2ViLXBhZ2UiXSwKKyAgICAidGFyZ2V0VHlwZXMi
OiBbIndlYi1wYWdlIl0sCisgICAgInR5cGVzIjogWworICAgICAgICB7CisgICAgICAgICAgICAi
aWQiOiAiRXh0ZW5zaW9uSWQiLAorICAgICAgICAgICAgInR5cGUiOiAic3RyaW5nIiwKKyAgICAg
ICAgICAgICJkZXNjcmlwdGlvbiI6ICJVbmlxdWUgZXh0ZW5zaW9uIGlkZW50aWZpZXIuIgorICAg
ICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICAiaWQiOiAiRXh0ZW5zaW9uIiwKKyAgICAg
ICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSW5m
b3JtYXRpb24gYWJvdXQgYW4gZXh0ZW5zaW9uLiIsCisgICAgICAgICAgICAicHJvcGVydGllcyI6
IFsKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV4dGVuc2lvbklkIiwgIiRyZWYiOiAiRXh0
ZW5zaW9uSWQiLCAiZGVzY3JpcHRpb24iOiAiRXh0ZW5zaW9uIGlkZW50aWZpZXIuIiB9LAorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAibmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlw
dGlvbiI6ICJUaGUgZGlzcGxheSBuYW1lIGZvciB0aGUgZXh0ZW5zaW9uLiIgfQorICAgICAgICAg
ICAgXQorICAgICAgICB9CisgICAgXSwKKyAgICAiY29tbWFuZHMiOiBbCisgICAgICAgIHsKKyAg
ICAgICAgICAgICJuYW1lIjogImVuYWJsZSIsCisgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
RW5hYmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9LAorICAgICAgICB7Cisg
ICAgICAgICAgICAibmFtZSI6ICJkaXNhYmxlIiwKKyAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6
ICJEaXNhYmxlcyBCcm93c2VyIGRvbWFpbiBldmVudHMuIgorICAgICAgICB9CisgICAgXSwKKyAg
ICAiZXZlbnRzIjogWworICAgICAgICB7CisgICAgICAgICAgICAibmFtZSI6ICJleHRlbnNpb25z
RW5hYmxlZCIsCisgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImV4dGVuc2lvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgIiRyZWYi
OiAiRXh0ZW5zaW9uIiB9LCAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgdGhlIGVu
YWJsZWQgZXh0ZW5zaW9ucy4iIH0KKyAgICAgICAgICAgIF0KKyAgICAgICAgfSwKKyAgICAgICAg
eworICAgICAgICAgICAgIm5hbWUiOiAiZXh0ZW5zaW9uc0Rpc2FibGVkIiwKKyAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXh0ZW5zaW9uSWRz
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIkV4dGVuc2lvbklkIiB9LCAi
ZGVzY3JpcHRpb24iOiAiRGlzYWJsZWQgZXh0ZW5zaW9uIGlkZW50aWZpZXJzLiIgfQorICAgICAg
ICAgICAgXQorICAgICAgICB9CisgICAgXQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
SGFzaFNldC5oIGIvU291cmNlL1dURi93dGYvSGFzaFNldC5oCmluZGV4IGVlMmMyOTEzNzgzODgy
NWI5OWRhNjA0NzkzMjk5YTNhOGRiM2VjMDEuLjc0YzA5ZTA1YWJlM2IzMGQwNDUwMTdhODFmZTI0
MzcwYjZlMWI4YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hTZXQuaAorKysgYi9T
b3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKQEAgLTc1LDYgKzc1LDggQEAgcHVibGljOgogICAgIHVu
c2lnbmVkIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CiAKKyAg
ICB2b2lkIHJlc2VydmVJbml0aWFsQ2FwYWNpdHkodW5zaWduZWQga2V5Q291bnQpIHsgbV9pbXBs
LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoa2V5Q291bnQpOyB9CisKICAgICBpdGVyYXRvciBiZWdp
bigpIGNvbnN0OwogICAgIGl0ZXJhdG9yIGVuZCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1dGhuL0F1dGhlbnRpY2F0aW9uRXh0ZW5zaW9uc0NsaWVu
dE91dHB1dHMuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGljYXRp
b25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oCmluZGV4IGEzNzJkMjRlNzU5N2E2YzBhODE1YTU2
NzI3YWI2NmM4MGVjZTZjOTQuLjAzMzRhZGU0OGJlMzY0YTVmMjNlY2FiNWJiNjMyNmFiNmJkMTdl
MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXV0aG4vQXV0aGVudGlj
YXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXV0aG4vQXV0aGVudGljYXRpb25FeHRlbnNpb25zQ2xpZW50T3V0cHV0cy5oCkBAIC0y
Nyw2ICsyNyw4IEBACiAKICNpZiBFTkFCTEUoV0VCX0FVVEhOKQogCisjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdHJ1Y3QgQXV0aGVudGljYXRpb25F
eHRlbnNpb25zQ2xpZW50T3V0cHV0cyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvLmVzbGludHJjIGIvU291cmNlL1dlYkluc3BlY3RvclVJLy5lc2xpbnRyYwppbmRleCAzOGI3
NmM1NjJmYTg2YmMzMDU5NzI1YmRjNmFkOGU1OGIzMjNjNWViLi5kYWE2MTQ4NTY5YjE2ZTVjYjFj
ZjE4OWQxOGUzOTkwYWRiMzAzZTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
LmVzbGludHJjCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS8uZXNsaW50cmMKQEAgLTEwMSw3
ICsxMDEsNiBAQAogICAgICAgICAiaXNXZWJJbnNwZWN0b3JDb25zb2xlRXZhbHVhdGlvblNjcmlw
dCI6IHRydWUsCiAgICAgICAgICJpc1dlYkluc3BlY3RvckludGVybmFsU2NyaXB0IjogdHJ1ZSwK
ICAgICAgICAgImlzV2ViS2l0SW50ZXJuYWxTY3JpcHQiOiB0cnVlLAotICAgICAgICAiaXNXZWJL
aXRFeHRlbnNpb25TY2hlbWUiOiB0cnVlLAogICAgICAgICAibXVsdGlwbGljYXRpb25TaWduIjog
dHJ1ZSwKICAgICAgICAgInBhcnNlTUlNRVR5cGUiOiB0cnVlLAogICAgICAgICAicmVzb2x2ZURv
dHNJblBhdGgiOiB0cnVlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQmFzZS9NYWluLmpzCmluZGV4IGYxNmNjNjhkYTI5YWNiMWM5YTU0NjJmNDEzYWZkZmRkNGMy
ZjVhNzMuLjM1ODRhZTkwZjA1NmNkMGM4NWJmMGYyOTUxNjRkOTFlMDhhMzc5OWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTU1
LDYgKzU1LDggQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnJlZ2lzdGVyQW5pbWF0aW9uRGlzcGF0Y2hlcihXSS5BbmltYXRpb25PYnNlcnZlcik7CiAg
ICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNhY2hlRGlzcGF0Y2hl
cikKICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3RlckFwcGxpY2F0aW9uQ2FjaGVEaXNw
YXRjaGVyKFdJLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcik7CisgICAgaWYgKEluc3BlY3RvckJh
Y2tlbmQucmVnaXN0ZXJCcm93c2VyRGlzcGF0Y2hlcikKKyAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5yZWdpc3RlckJyb3dzZXJEaXNwYXRjaGVyKFdJLkJyb3dzZXJPYnNlcnZlcik7CiAgICAgaWYg
KEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRpc3BhdGNoZXIpCiAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDUFVQcm9maWxlckRpc3BhdGNoZXIoV0kuQ1BVUHJv
ZmlsZXJPYnNlcnZlcik7CiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDU1NEaXNw
YXRjaGVyKQpAQCAtMTA0LDYgKzEwNiw3IEBAIFdJLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICAv
LyBDcmVhdGUgdGhlIHNpbmdsZXRvbiBtYW5hZ2VycyBuZXh0LCBiZWZvcmUgdGhlIHVzZXIgaW50
ZXJmYWNlIGVsZW1lbnRzLCBzbyB0aGUgdXNlciBpbnRlcmZhY2UgY2FuIHJlZ2lzdGVyCiAgICAg
Ly8gYXMgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZXNlIG1hbmFnZXJzLgogICAgIFdJLm1hbmFnZXJz
ID0gWworICAgICAgICBXSS5icm93c2VyTWFuYWdlciA9IG5ldyBXSS5Ccm93c2VyTWFuYWdlciwK
ICAgICAgICAgV0kudGFyZ2V0TWFuYWdlciA9IG5ldyBXSS5UYXJnZXRNYW5hZ2VyLAogICAgICAg
ICBXSS5uZXR3b3JrTWFuYWdlciA9IG5ldyBXSS5OZXR3b3JrTWFuYWdlciwKICAgICAgICAgV0ku
ZG9tU3RvcmFnZU1hbmFnZXIgPSBuZXcgV0kuRE9NU3RvcmFnZU1hbmFnZXIsCkBAIC0xMzUsNiAr
MTM4LDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogICAgIFdJLmRhdGFiYXNlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkRhdGFiYXNlTWFuYWdlci5FdmVudC5EYXRhYmFzZVdhc0luc3Bl
Y3RlZCwgV0kuX2RhdGFiYXNlV2FzSW5zcGVjdGVkKTsKICAgICBXSS5uZXR3b3JrTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLk5ldHdvcmtNYW5hZ2VyLkV2ZW50Lk1haW5GcmFtZURpZENoYW5n
ZSwgV0kuX21haW5GcmFtZURpZENoYW5nZSk7CiAgICAgV0kubmV0d29ya01hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5OZXR3b3JrTWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCBXSS5fZnJh
bWVXYXNBZGRlZCk7CisgICAgV0kuYnJvd3Nlck1hbmFnZXIuZW5hYmxlKCk7CiAKICAgICBXSS5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5n
ZSwgV0kuX21haW5SZXNvdXJjZURpZENoYW5nZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVVJMVXRpbGl0aWVzLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKaW5kZXggYjU5
NTE5ZTU5OTA4ZGIwZGFkMThjN2Y3NzY5OWZiY2QzMDVmNWNmMS4uZTNmY2EyZmY5MzkxZWQyNjgz
YTVjYTgyODhhMGRhNWY0MWMwMzJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VUkxVdGlsaXRpZXMuanMKQEAgLTMxMSw3ICszMTEs
MTIgQEAgV0kudXJsV2l0aG91dEZyYWdtZW50ID0gZnVuY3Rpb24odXJsU3RyaW5nKQogCiBXSS5k
aXNwbGF5TmFtZUZvckhvc3QgPSBmdW5jdGlvbihob3N0KQogeworICAgIGxldCBleHRlbnNpb25O
YW1lID0gV0kuYnJvd3Nlck1hbmFnZXIuZXh0ZW5zaW9uTmFtZUZvcklkKGhvc3QpOworICAgIGlm
IChleHRlbnNpb25OYW1lKQorICAgICAgICByZXR1cm4gZXh0ZW5zaW9uTmFtZTsKKwogICAgIC8v
IEZJWE1FIDxyZGFyOi8vcHJvYmxlbS8xMTIzNzQxMz46IFRoaXMgc2hvdWxkIGRlY29kZSBwdW55
Y29kZSBob3N0bmFtZXMuCisKICAgICByZXR1cm4gaG9zdDsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvVXRpbGl0aWVzLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKaW5kZXgg
Yjc3NDIzMTg0MzZjZTE1NDk2YTRhZTExYTNkYTNiZmVjMmQxM2IxNC4uMDQ1OTYyMmE1MTFjZjMx
ZjI4NjIxNTMxNWQ1ZWM0NTZlMjQ4ZTZmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9VdGlsaXRpZXMuanMKQEAgLTE2NDQsMTEgKzE2NDQs
NiBAQCBmdW5jdGlvbiBpc1dlYktpdEludGVybmFsU2NyaXB0KHVybCkKICAgICByZXR1cm4gdXJs
ICYmIHVybC5zdGFydHNXaXRoKCJfX1dlYiIpICYmIHVybC5lbmRzV2l0aCgiX18iKTsKIH0KIAot
ZnVuY3Rpb24gaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc2NoZW1lKQotewotICAgIHJldHVybiBz
Y2hlbWUgJiYgc2NoZW1lLmVuZHNXaXRoKCItZXh0ZW5zaW9uIik7Ci19Ci0KIGZ1bmN0aW9uIGlz
RnVuY3Rpb25TdHJpbmdOYXRpdmVDb2RlKHN0cikKIHsKICAgICByZXR1cm4gc3RyLmVuZHNXaXRo
KCJ7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9Ccm93c2VyTWFuYWdl
ci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yZTk3MDRmOGQxMDZlYzAxNDhhNjJiYzQwNjlkMzcxZGRmNTAxNGZi
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXSS5Ccm93c2VyTWFuYWdlciA9IGNsYXNzIEJyb3dzZXJNYW5hZ2VyCit7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fZW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9leHRlbnNpb25OYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7CisgICAgfQorCisg
ICAgLy8gVGFyZ2V0CisKKyAgICBpbml0aWFsaXplVGFyZ2V0KHRhcmdldCkKKyAgICB7CisgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTMuNCk6IEJyb3dzZXIgZGlkIG5vdCBleGlzdCB5ZXQuCisg
ICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJCcm93c2VyIikpCisgICAgICAgICAgICB0YXJn
ZXQuQnJvd3NlckFnZW50LmVuYWJsZSgpOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
ZW5hYmxlKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9lbmFibGVkKTsK
KworICAgICAgICB0aGlzLl9lbmFibGVkID0gdHJ1ZTsKKworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKQorICAgICAgICAgICAgdGhpcy5pbml0
aWFsaXplVGFyZ2V0KHRhcmdldCk7CisgICAgfQorCisgICAgZGlzYWJsZSgpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9lbmFibGVkKTsKKworICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0TWFuYWdlci5hbGxUYXJnZXRzKSB7CisgICAgICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTMuNCk6IEJyb3dzZXIgZGlkIG5vdCBleGlzdCB5ZXQuCisgICAg
ICAgICAgICBpZiAodGFyZ2V0Lmhhc0RvbWFpbigiQnJvd3NlciIpKQorICAgICAgICAgICAgICAg
IHRhcmdldC5Ccm93c2VyQWdlbnQuZGlzYWJsZSgpOworICAgICAgICB9CisKKyAgICAgICAgdGhp
cy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuY2xlYXIoKTsKKworICAgICAgICB0aGlzLl9l
bmFibGVkID0gZmFsc2U7CisgICAgfQorCisgICAgaXNFeHRlbnNpb25TY2hlbWUoc2NoZW1lKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHNjaGVtZSAmJiBzY2hlbWUuZW5kc1dpdGgoIi1leHRlbnNp
b24iKTsKKyAgICB9CisKKyAgICBleHRlbnNpb25OYW1lRm9ySWQoZXh0ZW5zaW9uSWQpCisgICAg
eworICAgICAgICByZXR1cm4gdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuZ2V0KGV4
dGVuc2lvbklkKSB8fCBudWxsOworICAgIH0KKworICAgIGV4dGVuc2lvbk5hbWVGb3JVUkwodXJs
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0V4dGVuc2lvblNjaGVtZShw
YXJzZVVSTCh1cmwpLnNjaGVtZSkpOworCisgICAgICAgIGxldCBtYXRjaCA9IHVybC5tYXRjaCgv
XlthLXpcLV0qZXh0ZW5zaW9uOlwvXC8oWzAtOUEtRl17OH0tWzAtOUEtRl17NH0tWzAtOUEtRl17
NH0tWzAtOUEtRl17NH0tWzAtOUEtRl17MTJ9KVwvLyk7CisgICAgICAgIGlmICghbWF0Y2gpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICByZXR1cm4gdGhpcy5leHRlbnNpb25O
YW1lRm9ySWQobWF0Y2hbMV0pOworICAgIH0KKworICAgIGV4dGVuc2lvbk5hbWVGb3JFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZXh0
IGluc3RhbmNlb2YgV0kuRXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNvbnRleHQudHlwZSA9PT0gV0kuRXhlY3V0aW9uQ29udGV4dC5UeXBlLlVzZXIpOworCisgICAg
ICAgIGxldCBtYXRjaCA9IGNvbnRleHQubmFtZS5tYXRjaCgvXltBLVphLXpdKkV4dGVuc2lvbldv
cmxkLShbMC05QS1GXXs4fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0fS1bMC05QS1GXXs0fS1bMC05
QS1GXXsxMn0pJC8pOworICAgICAgICBpZiAoIW1hdGNoKQorICAgICAgICAgICAgcmV0dXJuIG51
bGw7CisKKyAgICAgICAgcmV0dXJuIHRoaXMuZXh0ZW5zaW9uTmFtZUZvcklkKG1hdGNoWzFdKTsK
KyAgICB9CisKKyAgICAvLyBCcm93c2VyT2JzZXJ2ZXIKKworICAgIGV4dGVuc2lvbnNFbmFibGVk
KGV4dGVuc2lvbnMpCisgICAgeworICAgICAgICBmb3IgKGxldCB7ZXh0ZW5zaW9uSWQsIG5hbWV9
IG9mIGV4dGVuc2lvbnMpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9leHRl
bnNpb25OYW1lSWRlbnRpZmllck1hcC5oYXMoZXh0ZW5zaW9uSWQpLCBgRXh0ZW5zaW9uIGFscmVh
ZHkgZXhpc3RzIHdpdGggaWQgJyR7ZXh0ZW5zaW9uSWR9Jy5gKTsKKworICAgICAgICAgICAgdGhp
cy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAuc2V0KGV4dGVuc2lvbklkLCBuYW1lKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGV4dGVuc2lvbnNEaXNhYmxlZChleHRlbnNpb25JZHMpCisg
ICAgeworICAgICAgICBmb3IgKGxldCBleHRlbnNpb25JZCBvZiBleHRlbnNpb25JZHMpIHsKKyAg
ICAgICAgICAgIGxldCBuYW1lID0gdGhpcy5fZXh0ZW5zaW9uTmFtZUlkZW50aWZpZXJNYXAudGFr
ZShleHRlbnNpb25JZCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChuYW1lLCBgTWlzc2lu
ZyBleHRlbnNpb24gd2l0aCBpZCAnJHtleHRlbnNpb25JZH0nLmApOworICAgICAgICB9CisgICAg
fQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9UYXJnZXRNYW5hZ2VyLmpzCmluZGV4IDg0ZmEwMjYxNDQ2OWU3
MDVjYTkxMWQzMjA3ZGJmZGU2OTkyZGM4YTMuLjMzNWU1ZWJhMWI1MjIxODkzODJiZWE1ZTRmMTg2
Mzc4MzllY2FkNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL1RhcmdldE1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGFyZ2V0TWFuYWdlci5qcwpAQCAtMzUsNiAr
MzUsMTUgQEAgV0kuVGFyZ2V0TWFuYWdlciA9IGNsYXNzIFRhcmdldE1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgdGhpcy5fdHJhbnNpdGlvblRpbWVvdXRJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOwogICAgIH0KIAorICAgIC8vIFRhcmdldAorCisgICAgaW5pdGlhbGl6ZVRhcmdldCh0
YXJnZXQpCisgICAgeworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBUYXJnZXQu
c2V0UGF1c2VPblN0YXJ0IGRpZCBub3QgZXhpc3QgeWV0LgorICAgICAgICBpZiAodGFyZ2V0Lmhh
c0NvbW1hbmQoIlRhcmdldC5zZXRQYXVzZU9uU3RhcnQiKSkKKyAgICAgICAgICAgIHRhcmdldC5U
YXJnZXRBZ2VudC5zZXRQYXVzZU9uU3RhcnQodHJ1ZSk7CisgICAgfQorCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgdGFyZ2V0cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKaW5kZXggNWI4NTY1MjIxNjQ0YmUxYTVmMmU2ZmIxMzc0N2Y2NGM4ZWJi
NGJhNi4uZDU1YzNhZDllMzU4ZTEzNWViOTc1YWY4ZTgxYTk2ZTkwNWMyODUwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMzMyLDYgKzMz
Miw3IEBACiAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQW5pbWF0aW9uT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2Jz
ZXJ2ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Ccm93c2VyT2Jz
ZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DUFVQcm9maWxl
ck9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2Jz
ZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DYW52YXNPYnNl
cnZlci5qcyI+PC9zY3JpcHQ+CkBAIC04NzIsNiArODczLDcgQEAKICAgICA8c2NyaXB0IHNyYz0i
Q29udHJvbGxlcnMvQmFzaWNCbG9ja0Fubm90YXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IkNvbnRyb2xsZXJzL0JyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xs
ZXIuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9Ccm93c2VyTWFu
YWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NTU01hbmFn
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DYWxsRnJhbWVU
cmVlQ29udHJvbGxlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJz
L0NhbnZhc01hbmFnZXIuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlU2hlZXQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcwppbmRleCBj
OWZkMDJlNDExMzg1MGFkMjllNjJkMTJkZGJlY2YxNWVkZDM3Y2M3Li44Y2ExYzc0YzYyNTJhOWIx
Y2NiYTFkMzY4ZTM3N2YyMzRkNDk3ZTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVTaGVldC5qcwpAQCAtMzIs
NyArMzIsNiBAQCBXSS5DU1NTdHlsZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVldCBleHRlbmRz
IFdJLlNvdXJjZUNvZGUKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWQpOwogCiAgICAgICAgIHRo
aXMuX2lkID0gaWQgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5fdXJsID0gbnVsbDsKICAgICAgICAg
dGhpcy5fcGFyZW50RnJhbWUgPSBudWxsOwogICAgICAgICB0aGlzLl9vcmlnaW4gPSBudWxsOwog
ICAgICAgICB0aGlzLl9zdGFydExpbmVOdW1iZXIgPSAwOwpAQCAtNzAsNyArNjksNyBAQCBXSS5D
U1NTdHlsZVNoZWV0ID0gY2xhc3MgQ1NTU3R5bGVTaGVldCBleHRlbmRzIFdJLlNvdXJjZUNvZGUK
IAogICAgIGdldCBpbmplY3RlZCgpCiAgICAgewotICAgICAgICByZXR1cm4gaXNXZWJLaXRFeHRl
bnNpb25TY2hlbWUodGhpcy51cmxDb21wb25lbnRzLnNjaGVtZSk7CisgICAgICAgIHJldHVybiBX
SS5icm93c2VyTWFuYWdlci5pc0V4dGVuc2lvblNjaGVtZSh0aGlzLnVybENvbXBvbmVudHMuc2No
ZW1lKTsKICAgICB9CiAKICAgICBnZXQgYW5vbnltb3VzKCkKQEAgLTc4LDE4ICs3Nyw2IEBAIFdJ
LkNTU1N0eWxlU2hlZXQgPSBjbGFzcyBDU1NTdHlsZVNoZWV0IGV4dGVuZHMgV0kuU291cmNlQ29k
ZQogICAgICAgICByZXR1cm4gIXRoaXMuaXNJbnNwZWN0b3JTdHlsZVNoZWV0KCkgJiYgIXRoaXMu
X3VybDsKICAgICB9CiAKLSAgICBnZXQgdXJsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll91cmw7Ci0gICAgfQotCi0gICAgZ2V0IHVybENvbXBvbmVudHMoKQotICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLl91cmxDb21wb25lbnRzKQotICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50
cyA9IHBhcnNlVVJMKHRoaXMuX3VybCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25l
bnRzOwotICAgIH0KLQogICAgIGdldCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
InRleHQvY3NzIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SZXNvdXJjZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9SZXNvdXJjZS5qcwppbmRleCAyYzExNWU1MWM1YWZjY2M3YWY4OTgwYjdhNmI0
OGYxMDMyMGU1NDI4Li4wZWI1ODQ4ZGJkN2YxNzVhMjNjNzhmYWU4YWMwZGIyZDc5NDdhOGQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVz
b3VyY2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1Jlc291cmNlLmpzCkBAIC0yOCwxMCArMjgsMTAgQEAgV0kuUmVzb3VyY2UgPSBjbGFzcyBSZXNv
dXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKIHsKICAgICBjb25zdHJ1Y3Rvcih1cmwsIHttaW1l
VHlwZSwgdHlwZSwgbG9hZGVySWRlbnRpZmllciwgdGFyZ2V0SWQsIHJlcXVlc3RJZGVudGlmaWVy
LCByZXF1ZXN0TWV0aG9kLCByZXF1ZXN0SGVhZGVycywgcmVxdWVzdERhdGEsIHJlcXVlc3RTZW50
VGltZXN0YW1wLCByZXF1ZXN0U2VudFdhbGx0aW1lLCBpbml0aWF0b3JDYWxsRnJhbWVzLCBpbml0
aWF0b3JTb3VyY2VDb2RlTG9jYXRpb24sIGluaXRpYXRvck5vZGUsIG9yaWdpbmFsUmVxdWVzdFdp
bGxCZVNlbnRUaW1lc3RhbXB9ID0ge30pCiAgICAgewotICAgICAgICBzdXBlcigpOwotCiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHVybCk7CiAKKyAgICAgICAgc3VwZXIodXJsKTsKKwogICAgICAg
ICBpZiAodHlwZSBpbiBXSS5SZXNvdXJjZS5UeXBlKQogICAgICAgICAgICAgdHlwZSA9IFdJLlJl
c291cmNlLlR5cGVbdHlwZV07CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICJTdHlsZXNoZWV0
IikgewpAQCAtMzksOCArMzksNiBAQCBXSS5SZXNvdXJjZSA9IGNsYXNzIFJlc291cmNlIGV4dGVu
ZHMgV0kuU291cmNlQ29kZQogICAgICAgICAgICAgdHlwZSA9IFdJLlJlc291cmNlLlR5cGUuU3R5
bGVTaGVldDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3VybCA9IHVybDsKLSAgICAgICAg
dGhpcy5fdXJsQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlID0gbWlt
ZVR5cGU7CiAgICAgICAgIHRoaXMuX21pbWVUeXBlQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAg
IHRoaXMuX3R5cGUgPSBSZXNvdXJjZS5yZXNvbHZlZFR5cGUodHlwZSwgbWltZVR5cGUpOwpAQCAt
MzEwLDcgKzMwOCw2IEBAIFdJLlJlc291cmNlID0gY2xhc3MgUmVzb3VyY2UgZXh0ZW5kcyBXSS5T
b3VyY2VDb2RlCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlz
Ll91cmw7IH0KICAgICBnZXQgbWltZVR5cGUoKSB7IHJldHVybiB0aGlzLl9taW1lVHlwZTsgfQog
ICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90YXJnZXQ7IH0KICAgICBnZXQgdHlwZSgp
IHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KQEAgLTM1MiwxMyArMzQ5LDYgQEAgV0kuUmVzb3VyY2Ug
PSBjbGFzcyBSZXNvdXJjZSBleHRlbmRzIFdJLlNvdXJjZUNvZGUKICAgICBnZXQgY2FjaGVkUmVz
cG9uc2VCb2R5U2l6ZSgpIHsgcmV0dXJuIHRoaXMuX2NhY2hlZFJlc3BvbnNlQm9keVNpemU7IH0K
ICAgICBnZXQgcmVkaXJlY3RzKCkgeyByZXR1cm4gdGhpcy5fcmVkaXJlY3RzOyB9CiAKLSAgICBn
ZXQgdXJsQ29tcG9uZW50cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3VybENvbXBvbmVu
dHMpCi0gICAgICAgICAgICB0aGlzLl91cmxDb21wb25lbnRzID0gcGFyc2VVUkwodGhpcy5fdXJs
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybENvbXBvbmVudHM7Ci0gICAgfQotCiAgICAgZ2V0
IGxvYWRlZFNlY3VyZWx5KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnVybENvbXBvbmVudHMu
c2NoZW1lICE9PSAiaHR0cHMiICYmIHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09ICJ3c3Mi
ICYmIHRoaXMudXJsQ29tcG9uZW50cy5zY2hlbWUgIT09ICJzZnRwIikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0LmpzCmluZGV4IGU0
NGI5ZjY1NWM5ZjM4NDhiYjEzNTMxZGNhYzkzZGRhOGFhM2NmZGMuLjY1N2M1NDFhZmIzNzhiZmZi
Zjc5YjRjODQ3MjA5MzBiYjJhMWE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NjcmlwdC5qcwpAQCAtMjcsNyArMjcsNyBAQCBXSS5T
Y3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiB7CiAgICAgY29uc3Ry
dWN0b3IodGFyZ2V0LCBpZCwgcmFuZ2UsIHVybCwgc291cmNlVHlwZSwgaW5qZWN0ZWQsIHNvdXJj
ZVVSTCwgc291cmNlTWFwVVJMKQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3Vw
ZXIodXJsKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0YXJnZXQgaW5zdGFuY2VvZiBXSS5U
YXJnZXQgfHwgdGhpcyBpbnN0YW5jZW9mIFdJLkxvY2FsU2NyaXB0KTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocmFuZ2UgaW5zdGFuY2VvZiBXSS5UZXh0UmFuZ2UpOwpAQCAtMzUsNyArMzUsNiBA
QCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgICAg
IHRoaXMuX3RhcmdldCA9IHRhcmdldDsKICAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOwog
ICAgICAgICB0aGlzLl9yYW5nZSA9IHJhbmdlIHx8IG51bGw7Ci0gICAgICAgIHRoaXMuX3VybCA9
IHVybCB8fCBudWxsOwogICAgICAgICB0aGlzLl9zb3VyY2VUeXBlID0gc291cmNlVHlwZSB8fCBX
SS5TY3JpcHQuU291cmNlVHlwZS5Qcm9ncmFtOwogICAgICAgICB0aGlzLl9zb3VyY2VVUkwgPSBz
b3VyY2VVUkwgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fc291cmNlTWFwcGluZ1VSTCA9IHNvdXJj
ZU1hcFVSTCB8fCBudWxsOwpAQCAtODAsNyArNzksNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3Jp
cHQgZXh0ZW5kcyBXSS5Tb3VyY2VDb2RlCiAgICAgZ2V0IHRhcmdldCgpIHsgcmV0dXJuIHRoaXMu
X3RhcmdldDsgfQogICAgIGdldCBpZCgpIHsgcmV0dXJuIHRoaXMuX2lkOyB9CiAgICAgZ2V0IHJh
bmdlKCkgeyByZXR1cm4gdGhpcy5fcmFuZ2U7IH0KLSAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhp
cy5fdXJsOyB9CiAgICAgZ2V0IHNvdXJjZVR5cGUoKSB7IHJldHVybiB0aGlzLl9zb3VyY2VUeXBl
OyB9CiAgICAgZ2V0IHNvdXJjZVVSTCgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVVSTDsgfQogICAg
IGdldCBzb3VyY2VNYXBwaW5nVVJMKCkgeyByZXR1cm4gdGhpcy5fc291cmNlTWFwcGluZ1VSTDsg
fQpAQCAtMTA4LDEzICsxMDYsNiBAQCBXSS5TY3JpcHQgPSBjbGFzcyBTY3JpcHQgZXh0ZW5kcyBX
SS5Tb3VyY2VDb2RlCiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VVUkw7CiAgICAgfQogCi0g
ICAgZ2V0IHVybENvbXBvbmVudHMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl91cmxDb21w
b25lbnRzKQotICAgICAgICAgICAgdGhpcy5fdXJsQ29tcG9uZW50cyA9IHBhcnNlVVJMKHRoaXMu
X3VybCk7Ci0gICAgICAgIHJldHVybiB0aGlzLl91cmxDb21wb25lbnRzOwotICAgIH0KLQogICAg
IGdldCBtaW1lVHlwZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UgPyB0
aGlzLl9yZXNvdXJjZS5taW1lVHlwZSA6ICJ0ZXh0L2phdmFzY3JpcHQiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZUNvZGUuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5q
cwppbmRleCA0YTQwMzIzMDgzZDQ5OWRmOGZkMmQwOTExYjk1YmY5NTgzNjJkZTVjLi44Y2U3YjU4
YTEzNDhhZjkzOTAxODM4ODZlZDg0OWYwNGQ2YWEzNmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlQ29kZS5qcwpAQCAt
MjUsMTAgKzI1LDEzIEBACiAKIFdJLlNvdXJjZUNvZGUgPSBjbGFzcyBTb3VyY2VDb2RlIGV4dGVu
ZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29uc3RydWN0b3IoKQorICAgIGNvbnN0cnVjdG9yKHVybCkK
ICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKKyAgICAgICAgdGhpcy5fdXJsID0gdXJsIHx8IG51
bGw7CisgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMgPSBudWxsOworCiAgICAgICAgIHRoaXMu
X29yaWdpbmFsUmV2aXNpb24gPSBuZXcgV0kuU291cmNlQ29kZVJldmlzaW9uKHRoaXMpOwogICAg
ICAgICB0aGlzLl9jdXJyZW50UmV2aXNpb24gPSB0aGlzLl9vcmlnaW5hbFJldmlzaW9uOwogCkBA
IC05OCw3ICsxMDEsMTQgQEAgV0kuU291cmNlQ29kZSA9IGNsYXNzIFNvdXJjZUNvZGUgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIGdldCB1cmwoKQogICAgIHsKLSAgICAgICAgLy8gVG8gYmUgb3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzLgorICAgICAgICByZXR1cm4gdGhpcy5fdXJsOworICAgIH0K
KworICAgIGdldCB1cmxDb21wb25lbnRzKCkKKyAgICB7CisgICAgICAgIGlmICghdGhpcy5fdXJs
Q29tcG9uZW50cykKKyAgICAgICAgICAgIHRoaXMuX3VybENvbXBvbmVudHMgPSBwYXJzZVVSTCh0
aGlzLl91cmwpOworICAgICAgICByZXR1cm4gdGhpcy5fdXJsQ29tcG9uZW50czsKICAgICB9CiAK
ICAgICBnZXQgY29udGVudElkZW50aWZpZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQnJvd3Nlck9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQnJvd3Nlck9ic2VydmVyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI2ZmVmZDI5NmY0YTcwMDhlY2IyNWM3NTg3NWFiZDE1ZDNkZjhhYjcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJ
LkJyb3dzZXJPYnNlcnZlciA9IGNsYXNzIEJyb3dzZXJPYnNlcnZlciBleHRlbmRzIEluc3BlY3Rv
ckJhY2tlbmQuRGlzcGF0Y2hlcgoreworICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiQnJv
d3NlciIgZG9tYWluLgorCisgICAgZXh0ZW5zaW9uc0VuYWJsZWQoZXh0ZW5zaW9ucykKKyAgICB7
CisgICAgICAgIFdJLmJyb3dzZXJNYW5hZ2VyLmV4dGVuc2lvbnNFbmFibGVkKGV4dGVuc2lvbnMp
OworICAgIH0KKworICAgIGV4dGVuc2lvbnNEaXNhYmxlZChleHRlbnNpb25JZHMpCisgICAgewor
ICAgICAgICBXSS5icm93c2VyTWFuYWdlci5leHRlbnNpb25zRGlzYWJsZWQoZXh0ZW5zaW9uSWRz
KTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2VuZFRhcmdldC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL011bHRpcGxleGluZ0JhY2tlbmRUYXJn
ZXQuanMKaW5kZXggNzkzNzA5ZWJlNWQ5ODUyZTIzNDhlYTQ5ZDViOTdlOGQ0N2E2OWY1OC4uNGZk
ZTE4ZTRiZjA4OGZhNDc4OTcwODFlY2Y4ZGYzNGNmZmUwN2IyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTXVsdGlwbGV4aW5nQmFja2Vu
ZFRhcmdldC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0LmpzCkBAIC0yNCw5ICsyNCw2IEBACiAgKi8K
IAogLy8gVGhpcyBjbGFzcyBpcyB1c2VkIHdoZW4gY29ubmVjdGluZyB0byBhIHRhcmdldCB3aGlj
aCBtdWx0aXBsZXhlcyB0byBvdGhlciB0YXJnZXRzLgotLy8gVGhlIG1haW4gY29ubmVjdGlvbiBp
cyB0byBhIHRhcmdldCB0aGF0LCBjdXJyZW50bHksIGhhcyBvbmx5IGEgVGFyZ2V0IGFnZW50Lgot
Ly8gQWxsIG90aGVyIFRhcmdldHMgd2lsbCBoYXZlIHRoZWlyIG1lc3NhZ2VzIGJlIG11bHRpcGxl
eGVkIHRocm91Z2ggdGhpcwotLy8gbWFpbiBjb25uZWN0aW9uJ3MgVGFyZ2V0IGFnZW50LgogCiBX
SS5NdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0ID0gY2xhc3MgTXVsdGlwbGV4aW5nQmFja2VuZFRh
cmdldCBleHRlbmRzIFdJLlRhcmdldAogewpAQCAtMzYsMTggKzMzLDE2IEBAIFdJLk11bHRpcGxl
eGluZ0JhY2tlbmRUYXJnZXQgPSBjbGFzcyBNdWx0aXBsZXhpbmdCYWNrZW5kVGFyZ2V0IGV4dGVu
ZHMgV0kuVGFyZ2V0CiAgICAgICAgIGNvbnN0IHRhcmdldElkID0gIm11bHRpIjsKICAgICAgICAg
c3VwZXIocGFyZW50VGFyZ2V0LCB0YXJnZXRJZCwgV0kuVUlTdHJpbmcoIldlYiBQYWdlIiksIFdJ
LlRhcmdldFR5cGUuV2ViUGFnZSwgSW5zcGVjdG9yQmFja2VuZC5iYWNrZW5kQ29ubmVjdGlvbik7
CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoQXJyYXkuc2hhbGxvd0VxdWFsKE9iamVjdC5rZXlz
KHRoaXMuX2FnZW50cyksIFsiVGFyZ2V0Il0pLCAiQSBXZWJQYWdlIHRhcmdldCBzaG91bGQgb25s
eSBoYXZlIGEgc2luZ2xlIGFnZW50LiIpOworICAgICAgICBjb25zb2xlLmFzc2VydChBcnJheS5z
aGFsbG93RXF1YWwoT2JqZWN0LmtleXModGhpcy5fYWdlbnRzKSwgWyJCcm93c2VyIiwgIlRhcmdl
dCJdKSk7CiAgICAgfQogCiAgICAgLy8gVGFyZ2V0CiAKICAgICBpbml0aWFsaXplKCkKICAgICB7
Ci0gICAgICAgIC8vIEludGVudGlvbmFsbHkgbm90IGNhbGxpbmcgc3VwZXIuIE5vIGFnZW50cyBv
dGhlciB0aGFuIHRoZSBUYXJnZXRBZ2VudC4KLQotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgMTMpOiBUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IGRpZCBub3QgZXhpc3QgeWV0LgotICAgICAg
ICBpZiAodGhpcy5oYXNDb21tYW5kKCJUYXJnZXQuc2V0UGF1c2VPblN0YXJ0IikpCi0gICAgICAg
ICAgICB0aGlzLlRhcmdldEFnZW50LnNldFBhdXNlT25TdGFydCh0cnVlKTsKKyAgICAgICAgLy8g
T25seSBpbml0aWFsaXplIHdpdGggdGhlIG1hbmFnZXJzIHRoYXQgYXJlIGtub3duIHRvIHN1cHBv
cnQgYSBtdWx0aXBsZXhpbmcgdGFyZ2V0LgorICAgICAgICBXSS5icm93c2VyTWFuYWdlci5pbml0
aWFsaXplVGFyZ2V0KHRoaXMpOworICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmluaXRpYWxpemVU
YXJnZXQodGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkIChUYXJnZXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UYXJnZXQu
anMKaW5kZXggYzI2YTE5YTg4NWVhODkxNGFkNGZiZDg3ZGNiYzRmMzc3NzBiNTk2YS4uOWRjYTJh
YTI0NzVkZTc2YTFlMWYwOGFmZjJhMjdjNTliMGYyNTkwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGFyZ2V0LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RhcmdldC5qcwpAQCAtMTMy
LDYgKzEzMiw3IEBAIFdJLlRhcmdldCA9IGNsYXNzIFRhcmdldCBleHRlbmRzIFdJLk9iamVjdAog
ICAgIGdldCBBbmltYXRpb25BZ2VudCgpIHsgcmV0dXJuIHRoaXMuX2FnZW50cy5BbmltYXRpb247
IH0KICAgICBnZXQgQXBwbGljYXRpb25DYWNoZUFnZW50KCkgeyByZXR1cm4gdGhpcy5fYWdlbnRz
LkFwcGxpY2F0aW9uQ2FjaGU7IH0KICAgICBnZXQgQXVkaXRBZ2VudCgpIHsgcmV0dXJuIHRoaXMu
X2FnZW50cy5BdWRpdDsgfQorICAgIGdldCBCcm93c2VyQWdlbnQoKSB7IHJldHVybiB0aGlzLl9h
Z2VudHMuQnJvd3NlcjsgfQogICAgIGdldCBDUFVQcm9maWxlckFnZW50KCkgeyByZXR1cm4gdGhp
cy5fYWdlbnRzLkNQVVByb2ZpbGVyOyB9CiAgICAgZ2V0IENTU0FnZW50KCkgeyByZXR1cm4gdGhp
cy5fYWdlbnRzLkNTUzsgfQogICAgIGdldCBDYW52YXNBZ2VudCgpIHsgcmV0dXJuIHRoaXMuX2Fn
ZW50cy5DYW52YXM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rl
c3QuaHRtbAppbmRleCAwYmE1NjBiOTZjMDIzMDZlYjYxYjMyYmRmNGVhYzg5OTIzZGJmMGMxLi4y
YmYxZTEzYWU1ZDc2ZTYyYmVjYWM0ZGYzYWU0NmNlMGFlOWI2NWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC04Niw2ICs4Niw3IEBACiAg
ICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQW5pbWF0aW9uT2JzZXJ2ZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Ccm93c2VyT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DUFVQcm9maWxlck9ic2VydmVy
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9DYW52YXNPYnNlcnZlci5qcyI+
PC9zY3JpcHQ+CkBAIC0yNDQsNiArMjQ1LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQXVkaXRNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQ29udHJvbGxl
cnMvQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJDb250cm9sbGVycy9CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLmpzIj48L3NjcmlwdD4KKyAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQnJvd3Nlck1hbmFnZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJDb250cm9sbGVycy9DU1NNYW5hZ2VyLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iQ29udHJvbGxlcnMvQ2FudmFzTWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IkNvbnRyb2xsZXJzL0NvbnNvbGVNYW5hZ2VyLmpzIj48L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVz
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QvVGVzdC5qcwpp
bmRleCAwMDY0NDdhOTY3ZTljMjM3ZjYwYzEwMDA4YmI0NjM0NTcyYjdjNDZlLi42ZTA1ZDkyYmEx
NDQ4YzgxYjQ3MWZiZTJhNjRlOGM1NDk2YzZjMWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0L1Rlc3QuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC9UZXN0LmpzCkBAIC0yOSw2ICsyOSw3IEBAIFdJLmxv
YWRlZCA9IGZ1bmN0aW9uKCkKICAgICAvLyBUaGUgaW5pdGlhbGl6YXRpb24gb3JkZXIgc2hvdWxk
IG1hdGNoIHRoZSBzYW1lIGluIE1haW4uanMuCiAgICAgSW5zcGVjdG9yQmFja2VuZC5yZWdpc3Rl
ckFuaW1hdGlvbkRpc3BhdGNoZXIoV0kuQW5pbWF0aW9uT2JzZXJ2ZXIpOwogICAgIEluc3BlY3Rv
ckJhY2tlbmQucmVnaXN0ZXJBcHBsaWNhdGlvbkNhY2hlRGlzcGF0Y2hlcihXSS5BcHBsaWNhdGlv
bkNhY2hlT2JzZXJ2ZXIpOworICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJCcm93c2VyRGlz
cGF0Y2hlcihXSS5Ccm93c2VyT2JzZXJ2ZXIpOwogICAgIEluc3BlY3RvckJhY2tlbmQucmVnaXN0
ZXJDUFVQcm9maWxlckRpc3BhdGNoZXIoV0kuQ1BVUHJvZmlsZXJPYnNlcnZlcik7CiAgICAgSW5z
cGVjdG9yQmFja2VuZC5yZWdpc3RlckNTU0Rpc3BhdGNoZXIoV0kuQ1NTT2JzZXJ2ZXIpOwogICAg
IEluc3BlY3RvckJhY2tlbmQucmVnaXN0ZXJDYW52YXNEaXNwYXRjaGVyKFdJLkNhbnZhc09ic2Vy
dmVyKTsKQEAgLTUxLDYgKzUyLDcgQEAgV0kubG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgLy8g
SW5zdGFudGlhdGUgY29udHJvbGxlcnMgdXNlZCBieSB0ZXN0cy4KICAgICBXSS5tYW5hZ2VycyA9
IFsKKyAgICAgICAgV0kuYnJvd3Nlck1hbmFnZXIgPSBuZXcgV0kuQnJvd3Nlck1hbmFnZXIsCiAg
ICAgICAgIFdJLnRhcmdldE1hbmFnZXIgPSBuZXcgV0kuVGFyZ2V0TWFuYWdlciwKICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIgPSBuZXcgV0kuTmV0d29ya01hbmFnZXIsCiAgICAgICAgIFdJLmRv
bVN0b3JhZ2VNYW5hZ2VyID0gbmV3IFdJLkRPTVN0b3JhZ2VNYW5hZ2VyLApAQCAtNzUsNiArNzcs
NyBAQCBXSS5sb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICAvLyBSZWdpc3RlciBmb3IgZXZlbnRz
LgogICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBXSS5j
b250ZW50TG9hZGVkKTsKKyAgICBXSS5icm93c2VyTWFuYWdlci5lbmFibGUoKTsKIAogICAgIC8v
IFRhcmdldHMuCiAgICAgV0kuYmFja2VuZFRhcmdldCA9IG51bGw7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMK
aW5kZXggOWQyMzRiMjJkMGIyYzBhZTZmNjFmM2E4ODk2ZGIwZTFlYmQ0NDIxZC4uYzdiN2JjMmRh
ZjM4M2M4M2VmOGIxYWJlYzUxODI4MzU2MzZlYzY0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5qcwpAQCAt
MTIxLDYgKzEyMSwxMiBAQCBXSS5RdWlja0NvbnNvbGUgPSBjbGFzcyBRdWlja0NvbnNvbGUgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChjb250ZXh0LnR5cGUgPT09IFdJLkV4ZWN1dGlvbkNv
bnRleHQuVHlwZS5JbnRlcm5hbCkKICAgICAgICAgICAgIHJldHVybiBXSS51bmxvY2FsaXplZFN0
cmluZygiW0ludGVybmFsXSAiKSArIGNvbnRleHQubmFtZTsKIAorICAgICAgICBpZiAoY29udGV4
dC50eXBlID09PSBXSS5FeGVjdXRpb25Db250ZXh0LlR5cGUuVXNlcikgeworICAgICAgICAgICAg
bGV0IGV4dGVuc2lvbk5hbWUgPSBXSS5icm93c2VyTWFuYWdlci5leHRlbnNpb25OYW1lRm9yRXhl
Y3V0aW9uQ29udGV4dChjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChleHRlbnNpb25OYW1lKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZShleHRlbnNpb25OYW1lLCBtYXhMZW5ndGgp
OworICAgICAgICB9CisKICAgICAgICAgbGV0IHRhcmdldCA9IGNvbnRleHQudGFyZ2V0OwogICAg
ICAgICBpZiAodGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldFR5cGUuV29ya2VyKQogICAgICAgICAg
ICAgcmV0dXJuIHRydW5jYXRlKHRhcmdldC5kaXNwbGF5TmFtZSwgbWF4TGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggNmU0OTYz
NzViYWJiNmNmM2Y4ZmFkYzA3MTJiMjhiNmM1M2JkYWVjOS4uZTA5NWRiZWEzODk5MGM3MDVlNDU0
MGM1YjFkMWNiODU1ODc5NGE0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwuanMKQEAgLTk2OSw3ICs5NjksNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVu
ZHMgVwogCiAgICAgICAgIGxldCBwYXJlbnRUcmVlRWxlbWVudCA9IG51bGw7CiAKLSAgICAgICAg
aWYgKGlzV2ViS2l0RXh0ZW5zaW9uU2NoZW1lKHN0eWxlU2hlZXQudXJsQ29tcG9uZW50cy5zY2hl
bWUpKSB7CisgICAgICAgIGlmIChXSS5icm93c2VyTWFuYWdlci5pc0V4dGVuc2lvblNjaGVtZShz
dHlsZVNoZWV0LnVybENvbXBvbmVudHMuc2NoZW1lKSkgewogICAgICAgICAgICAgaWYgKCF0aGlz
Ll9leHRlbnNpb25TdHlsZVNoZWV0c0ZvbGRlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgICAg
IHRoaXMuX2V4dGVuc2lvblN0eWxlU2hlZXRzRm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcgV0kuRm9s
ZGVyVHJlZUVsZW1lbnQoV0kuVUlTdHJpbmcoIkV4dGVuc2lvbiBTdHlsZSBTaGVldHMiKSwgbmV3
IFdJLkNTU1N0eWxlU2hlZXRDb2xsZWN0aW9uKTsKICAgICAgICAgICAgIHBhcmVudFRyZWVFbGVt
ZW50ID0gdGhpcy5fZXh0ZW5zaW9uU3R5bGVTaGVldHNGb2xkZXJUcmVlRWxlbWVudDsKQEAgLTEw
MjQsNyArMTAyNCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICBsZXQgcGFyZW50Rm9sZGVyVHJlZUVsZW1lbnQgPSBudWxsOwogCi0gICAg
ICAgICAgICBpZiAoaXNXZWJLaXRFeHRlbnNpb25TY2hlbWUoc2NyaXB0LnVybENvbXBvbmVudHMu
c2NoZW1lKSkgeworICAgICAgICAgICAgaWYgKFdJLmJyb3dzZXJNYW5hZ2VyLmlzRXh0ZW5zaW9u
U2NoZW1lKHNjcmlwdC51cmxDb21wb25lbnRzLnNjaGVtZSkpIHsKICAgICAgICAgICAgICAgICBp
ZiAoIXRoaXMuX2V4dGVuc2lvblNjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCkgewogICAgICAgICAg
ICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA9IG5ldyBXSS5TY3JpcHRDb2xsZWN0aW9uOwogICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9leHRlbnNpb25TY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQg
PSBuZXcgV0kuRm9sZGVyVHJlZUVsZW1lbnQoV0kuVUlTdHJpbmcoIkV4dGVuc2lvbiBTY3JpcHRz
IiksIGNvbGxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMTE1YjVkZjI0ZWU5OTg2Y2Q1
YWJjNmEwZDlkZTBlODhlMTE2Nzk0ZC4uNGUzMjYzMDFiODIxY2E1MzgzMDhhYWI1NTQ5OGJhZTY1
NjNjYTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC01Nyw2ICs1Nyw3IEBAIHNldChXZWJLaXRf
SU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9HYW1lcGFk
IgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9HUFUiCiAgICAgIiR7V0VCS0lUX0RJUn0v
VUlQcm9jZXNzL0luc3BlY3RvciIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvSW5zcGVj
dG9yL0FnZW50cyIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvTGF1bmNoZXIiCiAgICAg
IiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL05ldHdvcmsiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYktpdC9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDEwZDE3MjU1ODc1YTE2ZWM2ZDNlNmFmZDI1MDZiNTE1NTc2MzU0MDQuLjZhOWRlZjFh
M2ZhMDliYmMyYTVkYjQ0ZWI1YjZkZmU2MTIwYmYwMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKQEAgLTgxLDYgKzgxLDcgQEAgVlBBVEggPSBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nl
c3MvRG93bmxvYWRzIFwKICAgICAkKFdlYktpdDIpL1VJUHJvY2Vzcy9HUFUgXAogICAgICQoV2Vi
S2l0MikvVUlQcm9jZXNzL0luc3BlY3RvciBcCisgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvSW5z
cGVjdG9yL0FnZW50cyBcCiAgICAgJChXZWJLaXQyKS9VSVByb2Nlc3MvTWVkaWFTdHJlYW0gXAog
ICAgICQoV2ViS2l0MikvVUlQcm9jZXNzL05ldHdvcmsgXAogICAgICQoV2ViS2l0MikvVUlQcm9j
ZXNzL05ldHdvcmsvQ3VzdG9tUHJvdG9jb2xzIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
UGxhdGZvcm1NYWMuY21ha2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4
IDVjMzA3NGViZGZiYzRhYzAwYTY0Y2U5Nzc2Yzc2OWM5YjM3YmQwMTMuLjIyYzJlOGJkYzEzMGUz
MDZlMjM5ZWI0NjY3YWE3YzQ4MmQxYzc3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1NYWMuY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybU1hYy5jbWFrZQpAQCAt
NjIsNiArNjIsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9S
SUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0F1dGhlbnRpY2F0aW9uL2NvY29hIgog
ICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9Db2NvYSIKICAgICAiJHtXRUJLSVRfRElSfS9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uIgorICAgICIke1dFQktJVF9ESVJ9L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvQ29jb2EiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0luc3Bl
Y3Rvci9tYWMiCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQcm9jZXNzL0xhdW5jaGVyL21hYyIKICAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKaW5k
ZXggYTVkMGJlMTQyNzFmNjMwNmY4MzZiOGZkYmQ3ZDQyMGYyOTUyNDZlYS4uODFiYzAyY2I1Yjhj
NzhmY2M3YzhlYTRlMTc5ZWExODBmZDhmNDczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CkBAIC00MjcsNiArNDI3
LDggQEAgVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JVdGlsaXRpZXMuY3BwCiBVSVBy
b2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VEZWJ1Z2dhYmxlLmNwcAogVUlQcm9jZXNzL0luc3BlY3Rv
ci9XZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKIAorVUlQcm9jZXNzL0luc3BlY3Rvci9B
Z2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcAorCiBVSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvbi5jcHAKIFVJUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApp
bmRleCBkYTIzYjBlNWQzMGNjNTQ2OWVlNGQ3MDllMWZhOGFkMTNkYzgwNjAxLi5lZjg4OTcwMzNj
NTYzZGY1MThjM2JhMWE5Y2MzYTQ4Njk3Zjk3Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBA
IC00MDIsNiArNDAyLDggQEAgVUlQcm9jZXNzL0dhbWVwYWQvY29jb2EvVUlHYW1lcGFkUHJvdmlk
ZXJDb2NvYS5tbQogVUlQcm9jZXNzL0dhbWVwYWQvaW9zL1VJR2FtZXBhZFByb3ZpZGVySU9TLm1t
CiBVSVByb2Nlc3MvR2FtZXBhZC9tYWMvVUlHYW1lcGFkUHJvdmlkZXJNYWMubW0KIAorVUlQcm9j
ZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQorCiBVSVByb2Nlc3MvSW5z
cGVjdG9yL2lvcy9XS0luc3BlY3RvckhpZ2hsaWdodFZpZXcubW0KIFVJUHJvY2Vzcy9JbnNwZWN0
b3IvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElJbnNwZWN0b3JDbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMjJhMWQ2YWZhODBiY2Q4YjY3NmVkYTI1MDVkMDZkYTI2MWI5MWZlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUluc3BlY3RvckNsaWVudC5o
CkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNl
IFdlYktpdCB7CitjbGFzcyBXZWJJbnNwZWN0b3JQcm94eTsKK2NsYXNzIFdlYlBhZ2VQcm94eTsK
K30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIEluc3BlY3RvckNsaWVudCB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgdmlydHVhbCB+SW5zcGVjdG9yQ2xp
ZW50KCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCB2b2lkIGRpZEF0dGFjaExvY2FsSW5zcGVj
dG9yKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBicm93c2VyRG9tYWluRW5hYmxlZChXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIFdlYktpdDo6V2ViSW5zcGVjdG9yUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQg
YnJvd3NlckRvbWFpbkRpc2FibGVkKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJ
bnNwZWN0b3JQcm94eSYpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVUlDbGllbnQuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCmluZGV4IDU0NTEzMDM1YjI2MWJmZDVlMTg3
ZWM5NDU3OTYxOThlZDA5ZDg4YjEuLmQ5MjJiZTBiMWY3ZTNjZmE1NjJjY2Y5ZDQyODhkNjQyZjll
NWNmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCkBAIC0x
OTksOCArMTk5LDYgQEAgcHVibGljOgogI2lmIEVOQUJMRShXRUJfQVVUSE4pCiAgICAgdmlydHVh
bCB2b2lkIHJ1bldlYkF1dGhlbnRpY2F0aW9uUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBX
ZWJBdXRoZW50aWNhdGlvblBhbmVsJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpXZWJB
dXRoZW50aWNhdGlvblBhbmVsUmVzdWx0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0
aW9uSGFuZGxlcihXZWJLaXQ6OldlYkF1dGhlbnRpY2F0aW9uUGFuZWxSZXN1bHQ6OlVuYXZhaWxh
YmxlKTsgfQogI2VuZGlmCi0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQXR0YWNoSW5zcGVjdG9yKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eSYpIHsgfQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLVUlEZWxlZ2F0ZVByaXZhdGUuaAppbmRleCA5YjgwZDViZWExNzdiOGRh
YjM1MzE4NTljYWY4MmExNTZjNzRiOWE2Li4yNWY0NmVjNDA2Mzk2Zjg3ZmVhZjZhZWMzNDUyNWQ3
MDEwZDgwODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tVSURlbGVnYXRlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1VJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTM5LDcgKzM5LDYgQEAKIEBjbGFzcyBfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mbzsKIEBjbGFzcyBfV0tFbGVtZW50QWN0aW9uOwogQGNsYXNzIF9X
S0ZyYW1lSGFuZGxlOwotQGNsYXNzIF9XS0luc3BlY3RvcjsKIAogI2lmIFRBUkdFVF9PU19JT1MK
IEBjbGFzcyBVSUNvbnRleHRNZW51Q29uZmlndXJhdGlvbjsKQEAgLTIzOCwxMSArMjM3LDYgQEAg
c3RydWN0IFVJRWRnZUluc2V0czsKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZ2V0Q29udGV4dE1lbnVGcm9tUHJvcG9zZWRNZW51OihOU01lbnUgKiltZW51IGZvckVsZW1l
bnQ6KF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8gKillbGVtZW50IHVzZXJJbmZvOihpZCA8TlNT
ZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU01lbnUg
KikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNCkpOwogLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRQZXJmb3JtRHJhZ09wZXJhdGlv
bjooQk9PTCloYW5kbGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCkpOwogCi0vKiEg
QGFic3RyYWN0IENhbGxlZCB3aGVuIGEgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBpcyBhdHRhY2hl
ZCB0byB0aGlzIFdLV2ViVmlldy4gVGhpcyBpcyBub3QgY2FsbGVkIGluIHRoZSBjYXNlIG9mIHJl
bW90ZSBpbnNwZWN0aW9uLgotICAgIEBwYXJhbSBpbnNwZWN0b3IgVGhlIFdlYiBJbnNwZWN0b3Ig
aW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcuCi0qLwotLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAq
KWluc3BlY3RvciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKTsKLQogI2VuZGlm
IC8vICFUQVJHRVRfT1NfSVBIT05FCiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgwYTUxNzRhMjMxM2E4MmI3NjIyYTMyMDli
MGQwMTE0OGEyMjFjNDcuLjZkMzVmMjg2MDczYmZlNmNkNDJmMzA2OGJlMjUyZjE0MGQ2NTg3NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiRnVsbHNjcmVlbkNsaWVudC5oIgogI2ltcG9ydCAi
R2xvYmFsRmluZEluUGFnZVN0YXRlLmgiCiAjaW1wb3J0ICJJY29uTG9hZGluZ0RlbGVnYXRlLmgi
CisjaW1wb3J0ICJJbnNwZWN0b3JEZWxlZ2F0ZS5oIgogI2ltcG9ydCAiTGVnYWN5U2Vzc2lvblN0
YXRlQ29kaW5nLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYVV0aWxpdGll
cy5oIgpAQCAtOTksNiArMTAwLDcgQEAKICNpbXBvcnQgIl9XS0Z1bGxzY3JlZW5EZWxlZ2F0ZS5o
IgogI2ltcG9ydCAiX1dLSGl0VGVzdFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tJbnB1
dERlbGVnYXRlLmgiCisjaW1wb3J0ICJfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
X1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1JlbW90ZU9iamVjdFJlZ2lzdHJ5
SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Nlc3Npb25TdGF0ZUludGVybmFsLmgiCkBAIC0zOTEs
NiArMzkzLDcgQEAgLSAodm9pZClfaW5pdGlhbGl6ZVdpdGhDb25maWd1cmF0aW9uOihXS1dlYlZp
ZXdDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbgogCiAgICAgX2ljb25Mb2FkaW5nRGVsZWdh
dGUgPSBtYWtlVW5pcXVlPFdlYktpdDo6SWNvbkxvYWRpbmdEZWxlZ2F0ZT4oc2VsZik7CiAgICAg
X3Jlc291cmNlTG9hZERlbGVnYXRlID0gbWFrZVVuaXF1ZTxXZWJLaXQ6OlJlc291cmNlTG9hZERl
bGVnYXRlPihzZWxmKTsKKyAgICBfaW5zcGVjdG9yRGVsZWdhdGUgPSBtYWtlVW5pcXVlPFdlYktp
dDo6SW5zcGVjdG9yRGVsZWdhdGU+KHNlbGYpOwogCiAgICAgW3NlbGYgX3NldFVwU1FMaXRlRGF0
YWJhc2VUcmFja2VyQ2xpZW50XTsKIApAQCAtMTU1Niw2ICsxNTU5LDE3IEBAIC0gKF9XS0luc3Bl
Y3RvciAqKV9pbnNwZWN0b3IKICAgICByZXR1cm4gbmlsOwogfQogCistIChpZCA8X1dLSW5zcGVj
dG9yRGVsZWdhdGU+KV9pbnNwZWN0b3JEZWxlZ2F0ZQoreworICAgIHJldHVybiBfaW5zcGVjdG9y
RGVsZWdhdGUtPmRlbGVnYXRlKCkuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9pZClfc2V0SW5z
cGVjdG9yRGVsZWdhdGU6KGlkPF9XS0luc3BlY3RvckRlbGVnYXRlPilkZWxlZ2F0ZQoreworICAg
IF9wYWdlLT5zZXRJbnNwZWN0b3JDbGllbnQoX2luc3BlY3RvckRlbGVnYXRlLT5jcmVhdGVJbnNw
ZWN0b3JDbGllbnQoKSk7CisgICAgX2luc3BlY3RvckRlbGVnYXRlLT5zZXREZWxlZ2F0ZShkZWxl
Z2F0ZSk7Cit9CisKIC0gKF9XS0ZyYW1lSGFuZGxlICopX21haW5GcmFtZQogewogICAgIGlmIChh
dXRvKiBmcmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggNTcyOTY2ZGJh
OWVmYzg3ZTQ1MDMwZTc1YzBjYmQzOWUzZGQ1ODQ5ZS4uOGY5N2Y0MDg3ODM5NTI0NWI1MGRkNjhh
NzkwNWYyNzg1ZGJiNzcyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKQEAgLTY4LDYgKzY4LDcgQEAgY2xhc3MgQXR0
YWNobWVudDsKIG5hbWVzcGFjZSBXZWJLaXQgewogZW51bSBjbGFzcyBDb250aW51ZVVuc2FmZUxv
YWQgOiBib29sOwogY2xhc3MgSWNvbkxvYWRpbmdEZWxlZ2F0ZTsKK2NsYXNzIEluc3BlY3RvckRl
bGVnYXRlOwogY2xhc3MgTmF2aWdhdGlvblN0YXRlOwogY2xhc3MgUmVzb3VyY2VMb2FkRGVsZWdh
dGU7CiBjbGFzcyBTYWZlQnJvd3NpbmdXYXJuaW5nOwpAQCAtMTEyLDYgKzExMyw3IEBAIGNsYXNz
IFZpZXdHZXN0dXJlQ29udHJvbGxlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpVSURl
bGVnYXRlPiBfdWlEZWxlZ2F0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpJY29uTG9h
ZGluZ0RlbGVnYXRlPiBfaWNvbkxvYWRpbmdEZWxlZ2F0ZTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpSZXNvdXJjZUxvYWREZWxlZ2F0ZT4gX3Jlc291cmNlTG9hZERlbGVnYXRlOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6Okluc3BlY3RvckRlbGVnYXRlPiBfaW5zcGVjdG9yRGVs
ZWdhdGU7CiAKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRl
Pj4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTsKICAgICBXZWFrT2JqQ1B0cjxpZCA8X1dLSW5w
dXREZWxlZ2F0ZT4+IF9pbnB1dERlbGVnYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggZDExMWIyOWMzNThiMTI3
MjkyNjhmNDc5OWQwYzNmYzllNjIwZjJlOC4uYmNlNmQ3MTc3YjAyM2U0MmZhNGZiZTZhNDkxY2Yw
MjFlYjIyYTIxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xMjUsNiArMTI1LDcgQEAgdHlwZWRlZiBOU19PUFRJ
T05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBAcHJvdG9jb2wgX1dLRnVsbHNjcmVlbkRl
bGVnYXRlOwogQHByb3RvY29sIF9XS0ljb25Mb2FkaW5nRGVsZWdhdGU7CiBAcHJvdG9jb2wgX1dL
SW5wdXREZWxlZ2F0ZTsKK0Bwcm90b2NvbCBfV0tJbnNwZWN0b3JEZWxlZ2F0ZTsKIEBwcm90b2Nv
bCBfV0tSZXNvdXJjZUxvYWREZWxlZ2F0ZTsKIEBwcm90b2NvbCBfV0tUZXh0TWFuaXB1bGF0aW9u
RGVsZWdhdGU7CiAKQEAgLTE4MSw2ICsxODIsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldEFsbG93c1JlbW90ZUluc3BlY3Rpb246KSBCT09M
IF9hbGxvd3NSZW1vdGVJbnNwZWN0aW9uOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNl
dHRlcj1fc2V0UmVtb3RlSW5zcGVjdGlvbk5hbWVPdmVycmlkZTopIE5TU3RyaW5nICpfcmVtb3Rl
SW5zcGVjdGlvbk5hbWVPdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9z
KDEwLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgX1dLSW5zcGVjdG9yICpf
aW5zcGVjdG9yIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CitA
cHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRJbnNwZWN0b3JEZWxlZ2F0ZTop
IGlkIDxfV0tJbnNwZWN0b3JEZWxlZ2F0ZT4gX2luc3BlY3RvckRlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCByZWFkb25seSkgX1dLRnJhbWVIYW5kbGUgKl9tYWluRnJhbWUgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9t
aWMsIHdlYWssIHNldHRlcj1fc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOikgaWQgPF9XS1Rl
eHRNYW5pcHVsYXRpb25EZWxlZ2F0ZT4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBXS19BUElf
QVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3IubW0KaW5kZXggYWZj
ZGEwNjUwZjhhOTI3YjMzNDBhYzZhYWVhN2ZiMGZkNjFmYjY0NC4uYjZiNGMxZWVkMjNiMGEzODkw
Y2RhNDAyYmVkODQzNTFhNDRhMjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0luc3BlY3Rvci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLSW5zcGVjdG9yLm1tCkBAIC0zMSw3ICszMSwxMCBAQAogI2ltcG9ydCAi
V2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAj
aW1wb3J0IDxXZWJDb3JlL0ZyYW1lSWRlbnRpZmllci5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAu
aD4KKyNpbXBvcnQgPHd0Zi9IYXNoU2V0Lmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+Cisj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogQGltcGxlbWVudGF0aW9uIF9XS0luc3Bl
Y3RvcgogCkBAIC0xNTAsNiArMTUzLDI1IEBAIC0gKHZvaWQpX3NldERpYWdub3N0aWNMb2dnaW5n
RGVsZWdhdGU6KGlkPF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU+KWRlbGVnYXRlCiAgICAg
X2luc3BlY3Rvci0+c2V0RGlhZ25vc3RpY0xvZ2dpbmdBdmFpbGFibGUoISFkZWxlZ2F0ZSk7CiB9
CiAKKy0gKHZvaWQpX2Jyb3dzZXJFeHRlbnNpb25zRW5hYmxlZDooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURUb05hbWVNYXAKK3sKKyAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiB0cmFuc2Zvcm1lZDsKKyAgICB0cmFuc2Zvcm1lZC5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGV4dGVuc2lvbklEVG9OYW1lTWFwLmNvdW50KTsKKyAgICBbZXh0ZW5zaW9u
SURUb05hbWVNYXAgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOlsmXShOU1N0cmlu
ZyAqZXh0ZW5zaW9uSUQsIE5TU3RyaW5nICpleHRlbnNpb25OYW1lLCBCT09MICopIHsKKyAgICAg
ICAgdHJhbnNmb3JtZWQuc2V0KGV4dGVuc2lvbklELCBleHRlbnNpb25OYW1lKTsKKyAgICB9XTsK
KyAgICBfaW5zcGVjdG9yLT5icm93c2VyRXh0ZW5zaW9uc0VuYWJsZWQoV1RGTW92ZSh0cmFuc2Zv
cm1lZCkpOworfQorCistICh2b2lkKV9icm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkOihOU1NldDxO
U1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcworeworICAgIEhhc2hTZXQ8U3RyaW5nPiB0cmFuc2Zv
cm1lZDsKKyAgICB0cmFuc2Zvcm1lZC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGV4dGVuc2lvbklE
cy5jb3VudCk7CisgICAgZm9yIChOU1N0cmluZyAqZXh0ZW5zaW9uSUQgaW4gZXh0ZW5zaW9uSURz
KQorICAgICAgICB0cmFuc2Zvcm1lZC5hZGRWb2lkKGV4dGVuc2lvbklEKTsKKyAgICBfaW5zcGVj
dG9yLT5icm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKFdURk1vdmUodHJhbnNmb3JtZWQpKTsKK30K
KwogLy8gTUFSSzogX1dLSW5zcGVjdG9ySW50ZXJuYWwgbWV0aG9kcwogCiAtIChBUEk6Ok9iamVj
dCYpX2FwaU9iamVjdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0luc3BlY3RvckRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLSW5zcGVjdG9yRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMmJkMTZiZWNjNWQ0Nzlk
YjgyNDg2NmY2ZWJmNDdlMDRkMzA3MDRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3BlY3RvckRlbGVnYXRlLmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgorI2lt
cG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitAY2xhc3MgV0tXZWJWaWV3OworQGNsYXNz
IF9XS0luc3BlY3RvcjsKKworQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlIDxOU09iamVj
dD4KK0BvcHRpb25hbAorCisvKiEgQGFic3RyYWN0IENhbGxlZCB3aGVuIGEgV2ViIEluc3BlY3Rv
ciBpbnN0YW5jZSBpcyBhdHRhY2hlZCB0byB0aGlzIFdLV2ViVmlldy4gVGhpcyBpcyBub3QgY2Fs
bGVkIGluIHRoZSBjYXNlIG9mIHJlbW90ZSBpbnNwZWN0aW9uLgorICAgIEBwYXJhbSBpbnNwZWN0
b3IgVGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBXS1dlYlZpZXcu
CisgKi8KKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0YWNoTG9j
YWxJbnNwZWN0b3I6KF9XS0luc3BlY3RvciAqKWluc3BlY3RvcjsKKworLyohIEBhYnN0cmFjdCBD
YWxsZWQgd2hlbiB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbCBCcm93c2VyIGRvbWFpbiBpcyBl
bmFibGVkIGZvciB0aGUgV2ViIEluc3BlY3RvciBpbnN0YW5jZSBhdHRhY2hlZCB0byB0aGlzIFdL
V2ViVmlldy4KKyAgICBAcGFyYW0gaW5zcGVjdG9yIFRoZSBXZWIgSW5zcGVjdG9yIGluc3RhbmNl
IGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LgorICovCistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yOihfV0tJbnNw
ZWN0b3IgKilpbnNwZWN0b3I7CisKKy8qISBAYWJzdHJhY3QgQ2FsbGVkIHdoZW4gdGhlIFdlYiBJ
bnNwZWN0b3IgcHJvdG9jb2wgQnJvd3NlciBkb21haW4gaXMgZGlzYWJsZWQgZm9yIHRoZSBXZWIg
SW5zcGVjdG9yIGluc3RhbmNlIGF0dGFjaGVkIHRvIHRoaXMgV0tXZWJWaWV3LgorICAgIEBwYXJh
bSBpbnNwZWN0b3IgVGhlIFdlYiBJbnNwZWN0b3IgaW5zdGFuY2UgYXR0YWNoZWQgdG8gdGhpcyBX
S1dlYlZpZXcuCisgKi8KKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYnJv
d3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3I7
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tJbnNwZWN0b3JQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLSW5zcGVjdG9yUHJpdmF0ZS5oCmluZGV4IGMwZDk4NDkwNzk4YTZjYWM1MjViZTZjZGJjOGMz
OGI0YzQxYmJiNjMuLmUyMDJhZjA3YTVjNzAzYjNhNmI0ZGE4ZDM1NGNlNjI3NDI3NTRhYzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tJbnNwZWN0b3JQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0luc3Bl
Y3RvclByaXZhdGUuaApAQCAtMzEsNCArMzEsOCBAQAogCiBAcHJvcGVydHkgKG5vbmF0b21pYywg
d2Vhaywgc2V0dGVyPV9zZXREaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlOikgaWQ8X1dLRGlhZ25v
c3RpY0xvZ2dpbmdEZWxlZ2F0ZT4gX2RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGU7CiAKKy8vIEJy
b3dzZXIKKy0gKHZvaWQpX2Jyb3dzZXJFeHRlbnNpb25zRW5hYmxlZDooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURUb05hbWU7CistICh2b2lkKV9icm93
c2VyRXh0ZW5zaW9uc0Rpc2FibGVkOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEczsK
KwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5oCmluZGV4
IGEzNTkzYWRmNDRiOGQzNGE3YzQ2MWM2YjI5MzMyYmE5NmY2Nzk5MmIuLmUwZDQ3YzgzN2Y4YTBl
ZmMyZGZhM2ZmZDlhY2I5ZTQ4ZmE5NDVkNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1VJRGVsZWdhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9VSURlbGVnYXRlLmgKQEAgLTEyNCw3ICsxMjQsNiBAQCBwcml2YXRlOgogICAgICAgICBi
b29sIHJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiYsIEFQSTo6T3BlblBhbmVsUGFyYW1ldGVycyosIFdlYk9wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSBmaW5hbDsKICAgICAgICAgdm9pZCBkaWRFeGNlZWRC
YWNrZ3JvdW5kUmVzb3VyY2VMaW1pdFdoaWxlSW5Gb3JlZ3JvdW5kKFdlYlBhZ2VQcm94eSYsIFdL
UmVzb3VyY2VMaW1pdCkgZmluYWw7CiAgICAgICAgIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRvd25s
b2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgVVJMJiwgQVBJOjpEYXRhJikgZmluYWw7Ci0gICAgICAgIHZvaWQgZGlk
QXR0YWNoSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5JikgZmluYWw7
CiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgICAgICB2b2lkIHNo
b3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rpb25BY2Nlc3MoV2ViS2l0OjpXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiwgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwpAQCAtMTk5LDcgKzE5OCw2IEBA
IHByaXZhdGU6CiAgICAgICAgIGJvb2wgd2ViVmlld1NhdmVEYXRhVG9GaWxlU3VnZ2VzdGVkRmls
ZW5hbWVNaW1lVHlwZU9yaWdpbmF0aW5nVVJMIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3UnVu
T3BlblBhbmVsV2l0aFBhcmFtZXRlcnNJbml0aWF0ZWRCeUZyYW1lQ29tcGxldGlvbkhhbmRsZXIg
OiAxOwogICAgICAgICBib29sIHdlYlZpZXdSZXF1ZXN0Tm90aWZpY2F0aW9uUGVybWlzc2lvbkZv
clNlY3VyaXR5T3JpZ2luRGVjaXNpb25IYW5kbGVyIDogMTsKLSAgICAgICAgYm9vbCB3ZWJWaWV3
RGlkQXR0YWNoSW5zcGVjdG9yIDogMTsKICNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCiAgICAgICAgIGJvb2wgd2ViVmlld1Nob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25B
bmRNb3Rpb25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lRGVjaXNpb25IYW5kbGVyIDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCmluZGV4IGEzZDBkZWQ2ZGYw
NTY2Y2I3NDQ5M2Y5OGVjMjhiY2UwZThkODkzYjMuLmU1ZmI2OWQxZWI2MDI4ZDljYzAxOWNlNGFj
MzE0NDVjYjAxMzc1NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1VJRGVsZWdhdGUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxl
Z2F0ZS5tbQpAQCAtNDcsMTMgKzQ3LDExIEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5o
IgogI2ltcG9ydCAiV0tXaW5kb3dGZWF0dXJlc0ludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJFdmVu
dEZhY3RvcnkuaCIKLSNpbXBvcnQgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW1wb3J0ICJXZWJP
cGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCiAjaW1wb3J0ICJXZWJQcm9jZXNzUHJveHku
aCIKICNpbXBvcnQgIl9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCIKICNpbXBvcnQgIl9XS0Zy
YW1lSGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0hpdFRlc3RSZXN1bHRJbnRlcm5hbC5o
IgotI2ltcG9ydCAiX1dLSW5zcGVjdG9ySW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1dlYkF1dGhl
bnRpY2F0aW9uUGFuZWxJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9Gb250QXR0cmlidXRl
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KQEAgLTEzMyw3ICsx
MzEsNiBAQCB2b2lkIFVJRGVsZWdhdGU6OnNldERlbGVnYXRlKGlkIDxXS1VJRGVsZWdhdGU+IGRl
bGVnYXRlKQogICAgIG1fZGVsZWdhdGVNZXRob2RzLndlYlZpZXdTYXZlRGF0YVRvRmlsZVN1Z2dl
c3RlZEZpbGVuYW1lTWltZVR5cGVPcmlnaW5hdGluZ1VSTCA9IFtkZWxlZ2F0ZSByZXNwb25kc1Rv
U2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNhdmVEYXRhVG9GaWxlOnN1Z2dlc3RlZEZpbGVu
YW1lOm1pbWVUeXBlOm9yaWdpbmF0aW5nVVJMOildOwogICAgIG1fZGVsZWdhdGVNZXRob2RzLndl
YlZpZXdSdW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyc0luaXRpYXRlZEJ5RnJhbWVDb21wbGV0aW9u
SGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6
cnVuT3BlblBhbmVsV2l0aFBhcmFtZXRlcnM6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFu
ZGxlcjopXTsKICAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVxdWVzdE5vdGlmaWNhdGlv
blBlcm1pc3Npb25Gb3JTZWN1cml0eU9yaWdpbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSBy
ZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnJlcXVlc3ROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRm9yU2VjdXJpdHlPcmlnaW46ZGVjaXNpb25IYW5kbGVyOildOwotICAgIG1fZGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEaWRBdHRhY2hJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hJbnNwZWN0b3I6KV07CiAj
ZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdTaG91bGRBbGxvd0RldmljZU9yaWVudGF0aW9uQW5kTW90aW9uQWNjZXNzUmVx
dWVzdGVkQnlGcmFtZURlY2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKF93ZWJWaWV3OnNob3VsZEFsbG93RGV2aWNlT3JpZW50YXRpb25BbmRNb3Rp
b25BY2Nlc3NSZXF1ZXN0ZWRCeUZyYW1lOmRlY2lzaW9uSGFuZGxlcjopXTsKQEAgLTg0OCwxOCAr
ODQ1LDYgQEAgYm9vbCBVSURlbGVnYXRlOjpVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQ
cm94eSYsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHIKIAogICAgIHJldHVybiB0cnVlOwogfQot
Ci12b2lkIFVJRGVsZWdhdGU6OlVJQ2xpZW50OjpkaWRBdHRhY2hJbnNwZWN0b3IoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5JiBpbnNwZWN0b3IpCi17Ci0g
ICAgaWYgKCFtX3VpRGVsZWdhdGUubV9kZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZEF0dGFjaElu
c3BlY3RvcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBkZWxlZ2F0ZSA9IG1fdWlEZWxl
Z2F0ZS5tX2RlbGVnYXRlLmdldCgpOwotICAgIGlmICghZGVsZWdhdGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIFsoaWQgPFdLVUlEZWxlZ2F0ZVByaXZhdGU+KWRlbGVnYXRlIF93ZWJWaWV3Om1f
dWlEZWxlZ2F0ZS5tX3dlYlZpZXcgZGlkQXR0YWNoSW5zcGVjdG9yOndyYXBwZXIoaW5zcGVjdG9y
KV07Ci19CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRzL0luc3BlY3RvckJy
b3dzZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQWdlbnRz
L0luc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWIyMzg2OWYxMzAzZTVmMGI0
OWViZjY5Njk1NDdjNzk1OWQ1MmIwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmNwcApAQCAt
MCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKKworI2luY2x1ZGUgIkFQSUluc3BlY3RvckNsaWVu
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCisjaW5jbHVkZSAi
V2ViUGFnZVByb3h5LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9j
b2xPYmplY3RzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3VzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CisKK0luc3BlY3RvckJyb3dzZXJBZ2VudDo6SW5zcGVjdG9yQnJvd3NlckFnZW50KFdlYlBh
Z2VBZ2VudENvbnRleHQmIGNvbnRleHQpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkJyb3dz
ZXIiX3MsIGNvbnRleHQpCisgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPElu
c3BlY3Rvcjo6QnJvd3NlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRl
cikpCisgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVyKEluc3BlY3Rvcjo6QnJvd3NlckJhY2tlbmRE
aXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykpCisgICAg
LCBtX2luc3BlY3RlZFBhZ2UoY29udGV4dC5pbnNwZWN0ZWRQYWdlKQoreworfQorCitJbnNwZWN0
b3JCcm93c2VyQWdlbnQ6On5JbnNwZWN0b3JCcm93c2VyQWdlbnQoKSA9IGRlZmF1bHQ7CisKK2Jv
b2wgSW5zcGVjdG9yQnJvd3NlckFnZW50OjplbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9pbnNwZWN0ZWRQYWdlLmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVkSW5zcGVjdG9yQnJv
d3NlckFnZW50KCkgPT0gdGhpczsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5z
cGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlciopCit7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQnJvd3Nl
ckFnZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkRpc2Nvbm5l
Y3RSZWFzb24pCit7CisgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKKyAgICBkaXNhYmxlKGlnbm9y
ZWQpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZW5hYmxlKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZykKK3sKKyAgICBpZiAoZW5hYmxlZCgpKSB7CisgICAgICAgIGVycm9yU3Ry
aW5nID0gIkJyb3dzZXIgZG9tYWluIGFscmVhZHkgZW5hYmxlZCJfczsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3JDb250cm9sbGVyKCkuc2V0
RW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCh0aGlzKTsKKworICAgIGF1dG8qIGluc3BlY3Rv
ciA9IG1faW5zcGVjdGVkUGFnZS5pbnNwZWN0b3IoKTsKKyAgICBBU1NFUlQoaW5zcGVjdG9yKTsK
KyAgICBtX2luc3BlY3RlZFBhZ2UuaW5zcGVjdG9yQ2xpZW50KCkuYnJvd3NlckRvbWFpbkVuYWJs
ZWQobV9pbnNwZWN0ZWRQYWdlLCAqaW5zcGVjdG9yKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93
c2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQoreworICAgIGlmICgh
ZW5hYmxlZCgpKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkJyb3dzZXIgZG9tYWluIGFscmVh
ZHkgZGlzYWJsZWQiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3BlY3Rl
ZFBhZ2UuaW5zcGVjdG9yQ29udHJvbGxlcigpLnNldEVuYWJsZWRJbnNwZWN0b3JCcm93c2VyQWdl
bnQobnVsbHB0cik7CisKKyAgICBhdXRvKiBpbnNwZWN0b3IgPSBtX2luc3BlY3RlZFBhZ2UuaW5z
cGVjdG9yKCk7CisgICAgQVNTRVJUKGluc3BlY3Rvcik7CisgICAgbV9pbnNwZWN0ZWRQYWdlLmlu
c3BlY3RvckNsaWVudCgpLmJyb3dzZXJEb21haW5EaXNhYmxlZChtX2luc3BlY3RlZFBhZ2UsICpp
bnNwZWN0b3IpOworfQorCit2b2lkIEluc3BlY3RvckJyb3dzZXJBZ2VudDo6ZXh0ZW5zaW9uc0Vu
YWJsZWQoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mJiBleHRlbnNpb25JRFRvTmFtZSkKK3sKKyAg
ICBBU1NFUlQoZW5hYmxlZCgpKTsKKworICAgIGF1dG8gZXh0ZW5zaW9uc1BheWxvYWQgPSBKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJyb3dzZXI6OkV4dGVuc2lvbj46OmNyZWF0
ZSgpOworICAgIGZvciAoYXV0byYgW2lkLCBuYW1lXSA6IGV4dGVuc2lvbklEVG9OYW1lKSB7Cisg
ICAgICAgIGF1dG8gZXh0ZW5zaW9uUGF5bG9hZCA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkJyb3dz
ZXI6OkV4dGVuc2lvbjo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRFeHRlbnNpb25JZChpZCkK
KyAgICAgICAgICAgIC5zZXROYW1lKG5hbWUpCisgICAgICAgICAgICAucmVsZWFzZSgpOworICAg
ICAgICBleHRlbnNpb25zUGF5bG9hZC0+YWRkSXRlbShXVEZNb3ZlKGV4dGVuc2lvblBheWxvYWQp
KTsKKyAgICB9CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmV4dGVuc2lvbnNFbmFibGVkKFdU
Rk1vdmUoZXh0ZW5zaW9uc1BheWxvYWQpKTsKK30KKwordm9pZCBJbnNwZWN0b3JCcm93c2VyQWdl
bnQ6OmV4dGVuc2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4mJiBleHRlbnNpb25JRHMpCit7
CisgICAgQVNTRVJUKGVuYWJsZWQoKSk7CisKKyAgICBhdXRvIGV4dGVuc2lvbklkc1BheWxvYWQg
PSBKU09OOjpBcnJheU9mPFN0cmluZz46OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYgZXh0ZW5z
aW9uSWQgOiBleHRlbnNpb25JRHMpCisgICAgICAgIGV4dGVuc2lvbklkc1BheWxvYWQtPmFkZEl0
ZW0oZXh0ZW5zaW9uSWQpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5leHRlbnNpb25zRGlz
YWJsZWQoV1RGTW92ZShleHRlbnNpb25JZHNQYXlsb2FkKSk7Cit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9y
L0FnZW50cy9JbnNwZWN0b3JCcm93c2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3NlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTEz
OTU4M2NkOGQ4NDIzMjlmNGIzZjM1MjFiMzYyNDBlYWI1MzkxMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9BZ2VudHMvSW5zcGVjdG9yQnJvd3Nl
ckFnZW50LmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViUGFnZVByb3h5OwordHlw
ZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CisKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudCBm
aW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OkJyb3dz
ZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKElu
c3BlY3RvckJyb3dzZXJBZ2VudCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJs
aWM6CisgICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KFdlYlBhZ2VBZ2VudENvbnRleHQmKTsKKyAg
ICB+SW5zcGVjdG9yQnJvd3NlckFnZW50KCkgb3ZlcnJpZGU7CisgICAgYm9vbCBlbmFibGVkKCkg
Y29uc3Q7CisKKyAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKKyAgICB2b2lkIGRpZENyZWF0ZUZy
b250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyKiwgSW5zcGVjdG9yOjpC
YWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOworICAgIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVu
ZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpEaXNjb25uZWN0UmVhc29uKSBvdmVycmlkZTsKKworICAg
IC8vIEJyb3dzZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKKyAgICB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOworCisgICAgdm9pZCBleHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywgU3RyaW5n
PiYmKTsKKyAgICB2b2lkIGV4dGVuc2lvbnNEaXNhYmxlZChIYXNoU2V0PFN0cmluZz4mJik7CisK
K3ByaXZhdGU6CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6QnJvd3NlckZyb250ZW5k
RGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6
QnJvd3NlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIFdlYlBh
Z2VQcm94eSYgbV9pbnNwZWN0ZWRQYWdlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVj
dG9yRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9J
bnNwZWN0b3JEZWxlZ2F0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1YmY3YjM0YmMwYjMyMzRjYWJlZDBkYjJl
MTJjNjNmZjdmZTJiZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9JbnNwZWN0b3IvQ29jb2EvSW5zcGVjdG9yRGVsZWdhdGUuaApAQCAtMCwwICsxLDc3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIkFQSUluc3BlY3RvckNsaWVudC5o
IgorI2ltcG9ydCAiV0tGb3VuZGF0aW9uLmgiCisjaW1wb3J0IDx3dGYvV2Vha09iakNQdHIuaD4K
KworQGNsYXNzIFdLV2ViVmlldzsKKworQHByb3RvY29sIF9XS0luc3BlY3RvckRlbGVnYXRlOwor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViSW5zcGVjdG9yUHJveHk7CitjbGFzcyBX
ZWJQYWdlUHJveHk7CisKK2NsYXNzIEluc3BlY3RvckRlbGVnYXRlIHsKKyAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JEZWxlZ2F0ZShX
S1dlYlZpZXcgKik7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0b3JDbGllbnQ+
IGNyZWF0ZUluc3BlY3RvckNsaWVudCgpOworCisgICAgUmV0YWluUHRyPGlkIDxfV0tJbnNwZWN0
b3JEZWxlZ2F0ZT4+IGRlbGVnYXRlKCk7CisgICAgdm9pZCBzZXREZWxlZ2F0ZShpZCA8X1dLSW5z
cGVjdG9yRGVsZWdhdGU+KTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBJbnNwZWN0b3JDbGllbnQg
OiBwdWJsaWMgQVBJOjpJbnNwZWN0b3JDbGllbnQgeworICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEluc3BlY3RvckNsaWVudChJ
bnNwZWN0b3JEZWxlZ2F0ZSYpOworICAgICAgICB+SW5zcGVjdG9yQ2xpZW50KCk7CisKKyAgICBw
cml2YXRlOgorICAgICAgICAvLyBBUEk6Okluc3BlY3RvckNsaWVudAorICAgICAgICB2b2lkIGRp
ZEF0dGFjaExvY2FsSW5zcGVjdG9yKFdlYlBhZ2VQcm94eSYsIFdlYkluc3BlY3RvclByb3h5Jikg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgYnJvd3NlckRvbWFpbkVuYWJsZWQoV2ViUGFnZVByb3h5
JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBicm93c2VyRG9t
YWluRGlzYWJsZWQoV2ViUGFnZVByb3h5JiwgV2ViSW5zcGVjdG9yUHJveHkmKSBvdmVycmlkZTsK
KworICAgICAgICBJbnNwZWN0b3JEZWxlZ2F0ZSYgbV9pbnNwZWN0b3JEZWxlZ2F0ZTsKKyAgICB9
OworCisgICAgV2Vha09iakNQdHI8V0tXZWJWaWV3PiBtX3dlYlZpZXc7CisgICAgV2Vha09iakNQ
dHI8aWQgPF9XS0luc3BlY3RvckRlbGVnYXRlPj4gbV9kZWxlZ2F0ZTsKKworICAgIHN0cnVjdCB7
CisgICAgICAgIHVuc2lnbmVkIHdlYnZpZXdEaWRBdHRhY2hJbnNwZWN0b3IgOiAxOworICAgICAg
ICB1bnNpZ25lZCB3ZWJWaWV3QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3IgOiAxOwor
ICAgICAgICB1bnNpZ25lZCB3ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9y
IDogMTsKKyAgICB9IG1fZGVsZWdhdGVNZXRob2RzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvQ29jb2Ev
SW5zcGVjdG9yRGVsZWdhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3Iv
Q29jb2EvSW5zcGVjdG9yRGVsZWdhdGUubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmRkMGZmNDQ1YjMwYmU2Mzdi
MGM2N2UyNjQ0MjQxZTBhNGVmMmJkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0luc3BlY3Rvci9Db2NvYS9JbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMCwwICsx
LDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiSW5zcGVj
dG9yRGVsZWdhdGUuaCIKKworI2ltcG9ydCAiV2ViSW5zcGVjdG9yUHJveHkuaCIKKyNpbXBvcnQg
IldlYlBhZ2VQcm94eS5oIgorI2ltcG9ydCAiX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCIKKyNpbXBv
cnQgIl9XS0luc3BlY3RvckludGVybmFsLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitJbnNw
ZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yRGVsZWdhdGUoV0tXZWJWaWV3ICp3ZWJWaWV3KQorICAg
IDogbV93ZWJWaWV3KHdlYlZpZXcpCit7Cit9CisKK3N0ZDo6dW5pcXVlX3B0cjxBUEk6Okluc3Bl
Y3RvckNsaWVudD4gSW5zcGVjdG9yRGVsZWdhdGU6OmNyZWF0ZUluc3BlY3RvckNsaWVudCgpCit7
CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8SW5zcGVjdG9yQ2xpZW50PigqdGhpcyk7Cit9CisKK1Jl
dGFpblB0cjxpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+PiBJbnNwZWN0b3JEZWxlZ2F0ZTo6ZGVs
ZWdhdGUoKQoreworICAgIHJldHVybiBtX2RlbGVnYXRlLmdldCgpOworfQorCit2b2lkIEluc3Bl
Y3RvckRlbGVnYXRlOjpzZXREZWxlZ2F0ZShpZCA8X1dLSW5zcGVjdG9yRGVsZWdhdGU+IGRlbGVn
YXRlKQoreworICAgIG1fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKKworICAgIG1fZGVsZWdhdGVNZXRo
b2RzLndlYnZpZXdEaWRBdHRhY2hJbnNwZWN0b3IgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjopXTsKKyAgICBt
X2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3Ig
PSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpicm93c2Vy
RG9tYWluRW5hYmxlZEZvckluc3BlY3RvcjopXTsKKyAgICBtX2RlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3QnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5z
cGVjdG9yOildOworfQorCitJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpJbnNw
ZWN0b3JDbGllbnQoSW5zcGVjdG9yRGVsZWdhdGUmIGRlbGVnYXRlKQorICAgIDogbV9pbnNwZWN0
b3JEZWxlZ2F0ZShkZWxlZ2F0ZSkKK3sKK30KKworSW5zcGVjdG9yRGVsZWdhdGU6Okluc3BlY3Rv
ckNsaWVudDo6fkluc3BlY3RvckNsaWVudCgpID0gZGVmYXVsdDsKKwordm9pZCBJbnNwZWN0b3JE
ZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50OjpkaWRBdHRhY2hMb2NhbEluc3BlY3RvcihXZWJQYWdl
UHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQoreworICAgIGlmICghbV9pbnNw
ZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJ2aWV3RGlkQXR0YWNoSW5zcGVjdG9y
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1faW5zcGVjdG9yRGVs
ZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX3dlYlZpZXcuZ2V0
KCkuZ2V0KCkgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3I6d3JhcHBlcihpbnNwZWN0b3IpXTsKK30K
Kwordm9pZCBJbnNwZWN0b3JEZWxlZ2F0ZTo6SW5zcGVjdG9yQ2xpZW50Ojpicm93c2VyRG9tYWlu
RW5hYmxlZChXZWJQYWdlUHJveHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQorewor
ICAgIGlmICghbV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJv
d3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3IpCisgICAgICAgIHJldHVybjsKKworICAgIGF1
dG8mIGRlbGVnYXRlID0gbV9pbnNwZWN0b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlOworICAgIGlmICgh
ZGVsZWdhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzptX2lu
c3BlY3RvckRlbGVnYXRlLm1fd2ViVmlldy5nZXQoKS5nZXQoKSBicm93c2VyRG9tYWluRW5hYmxl
ZEZvckluc3BlY3Rvcjp3cmFwcGVyKGluc3BlY3RvcildOworfQorCit2b2lkIEluc3BlY3RvckRl
bGVnYXRlOjpJbnNwZWN0b3JDbGllbnQ6OmJyb3dzZXJEb21haW5EaXNhYmxlZChXZWJQYWdlUHJv
eHkmLCBXZWJJbnNwZWN0b3JQcm94eSYgaW5zcGVjdG9yKQoreworICAgIGlmICghbV9pbnNwZWN0
b3JEZWxlZ2F0ZS5tX2RlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QnJvd3NlckRvbWFpbkRpc2FibGVk
Rm9ySW5zcGVjdG9yKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvJiBkZWxlZ2F0ZSA9IG1f
aW5zcGVjdG9yRGVsZWdhdGUubV9kZWxlZ2F0ZTsKKyAgICBpZiAoIWRlbGVnYXRlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBbZGVsZWdhdGUgX3dlYlZpZXc6bV9pbnNwZWN0b3JEZWxlZ2F0ZS5t
X3dlYlZpZXcuZ2V0KCkuZ2V0KCkgYnJvd3NlckRvbWFpbkRpc2FibGVkRm9ySW5zcGVjdG9yOndy
YXBwZXIoaW5zcGVjdG9yKV07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKaW5kZXggNDc1YmJjNDAxZjQ0MzZkMWQyNGM2MjNkMWEzYTg4MTI4ZWFkNWI4Zi4uNTc3MmY4
N2I3NjdmNzEzODAzZjUyM2MwZmM1ODhjY2U4N2NmYjExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViSW5zcGVjdG9yUHJveHkuY3BwCkBAIC0y
Nyw5ICsyNywxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkluc3BlY3Rv
clByb3h5LmgiCiAKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDbGllbnQuaCIKICNpbmNsdWRlICJB
UElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgi
CiAjaW5jbHVkZSAiQVBJVUlDbGllbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JCcm93c2VyQWdl
bnQuaCIKICNpbmNsdWRlICJXZWJBdXRvbWF0aW9uU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYkZy
YW1lUHJveHkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JJbnRlcnJ1cHREaXNwYXRjaGVyTWVz
c2FnZXMuaCIKQEAgLTQ2LDcgKzQ4LDEwIEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Nb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZUNlbnRlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2Nv
cGUuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFBMQVRGT1JNKEdU
SykKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eUNsaWVudC5oIgpAQCAtNDYwLDcgKzQ2NSw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6Om9wZW5Mb2NhbEluc3BlY3RvckZyb250ZW5kKGJv
b2wgY2FuQXR0YWNoLCBib29sIHVuZGVyVGVzCiAgICAgfQogCiAgICAgLy8gTm90aWZ5IFdlYktp
dCBjbGllbnQgd2hlbiBhIGxvY2FsIGluc3BlY3RvciBhdHRhY2hlcyBzbyB0aGF0IGl0IG1heSBp
bnN0YWxsIGRlbGVnYXRlcyBwcmlvciB0byB0aGUgX1dLSW5zcGVjdG9yIGxvYWRpbmcgaXRzIGZy
b250ZW5kLgotICAgIG1faW5zcGVjdGVkUGFnZS0+dWlDbGllbnQoKS5kaWRBdHRhY2hJbnNwZWN0
b3IoKm1faW5zcGVjdGVkUGFnZSwgKnRoaXMpOworICAgIG1faW5zcGVjdGVkUGFnZS0+aW5zcGVj
dG9yQ2xpZW50KCkuZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3IoKm1faW5zcGVjdGVkUGFnZSwgKnRo
aXMpOwogCiAgICAgLy8gQmFpbCBvdXQgaWYgdGhlIGNsaWVudCBjbG9zZWQgdGhlIGluc3BlY3Rv
ciBmcm9tIHRoZSBkZWxlZ2F0ZSBtZXRob2QuCiAgICAgaWYgKCFtX2luc3BlY3RvclBhZ2UpCkBA
IC02MzMsNiArNjM4LDE4IEBAIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnNldERpYWdub3N0aWNM
b2dnaW5nQXZhaWxhYmxlKGJvb2wgYXZhaWxhYmxlKQogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViSW5z
cGVjdG9yUHJveHk6OmJyb3dzZXJFeHRlbnNpb25zRW5hYmxlZChIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYmIGV4dGVuc2lvbklEVG9OYW1lKQoreworICAgIGlmIChhdXRvKiBicm93c2VyQWdlbnQg
PSBtX2luc3BlY3RlZFBhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS5lbmFibGVkSW5zcGVjdG9y
QnJvd3NlckFnZW50KCkpCisgICAgICAgIGJyb3dzZXJBZ2VudC0+ZXh0ZW5zaW9uc0VuYWJsZWQo
V1RGTW92ZShleHRlbnNpb25JRFRvTmFtZSkpOworfQorCit2b2lkIFdlYkluc3BlY3RvclByb3h5
Ojpicm93c2VyRXh0ZW5zaW9uc0Rpc2FibGVkKEhhc2hTZXQ8U3RyaW5nPiYmIGV4dGVuc2lvbklE
cykKK3sKKyAgICBpZiAoYXV0byogYnJvd3NlckFnZW50ID0gbV9pbnNwZWN0ZWRQYWdlLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkuZW5hYmxlZEluc3BlY3RvckJyb3dzZXJBZ2VudCgpKQorICAgICAg
ICBicm93c2VyQWdlbnQtPmV4dGVuc2lvbnNEaXNhYmxlZChXVEZNb3ZlKGV4dGVuc2lvbklEcykp
OworfQorCiB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpzYXZlKGNvbnN0IFN0cmluZyYgZmlsZW5h
bWUsIGNvbnN0IFN0cmluZyYgY29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNl
U2F2ZUFzKQogewogICAgIEFTU0VSVCghZmlsZW5hbWUuaXNFbXB0eSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJJbnNwZWN0b3JQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKaW5k
ZXggMmIxZmRmY2ExZGZiOGU1YzU1ZmNjZDgwMTZmNDIxZjcxNDE2M2NjYi4uYmJiNmY1NzNlZWIx
ODM1YzYzOGFmMzI1OTU0NDUxNjY0YTgxZGY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYkluc3BlY3RvclByb3h5LmgKQEAgLTE2Miw2ICsxNjIs
MTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXREaWFnbm9zdGljTG9nZ2luZ0F2YWlsYWJsZShi
b29sKTsKIAorICAgIC8vIEJyb3dzZXIKKyAgICB2b2lkIGJyb3dzZXJFeHRlbnNpb25zRW5hYmxl
ZChIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYmKTsKKyAgICB2b2lkIGJyb3dzZXJFeHRlbnNpb25z
RGlzYWJsZWQoSGFzaFNldDxTdHJpbmc+JiYpOworCiAgICAgLy8gUHJvdmlkZWQgYnkgcGxhdGZv
cm0gV2ViSW5zcGVjdG9yUHJveHkgaW1wbGVtZW50YXRpb25zLgogICAgIHN0YXRpYyBTdHJpbmcg
aW5zcGVjdG9yUGFnZVVSTCgpOwogICAgIHN0YXRpYyBTdHJpbmcgaW5zcGVjdG9yVGVzdFBhZ2VV
UkwoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQ
YWdlSW5zcGVjdG9yQWdlbnRCYXNlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0
b3IvV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2OWRlMTcyNzllNmI0
NmRjNjQzNWUxZWZiM2NiMWQ3MjA4MzZmODgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oCkBAIC0w
LDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0luc3BlY3RvckFnZW50QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKK2NsYXNzIEJhY2tlbmREaXNwYXRjaGVy
OworY2xhc3MgRnJvbnRlbmRSb3V0ZXI7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFz
cyBXZWJQYWdlUHJveHk7CisKKy8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gSW5zcGVjdG9yIG5hbWVz
cGFjZSB3aGVuIHJlbWFpbmluZyBhZ2VudHMgbW92ZS4KK3N0cnVjdCBXZWJQYWdlQWdlbnRDb250
ZXh0IHsKKyAgICBJbnNwZWN0b3I6OkZyb250ZW5kUm91dGVyJiBmcm9udGVuZFJvdXRlcjsKKyAg
ICBJbnNwZWN0b3I6OkJhY2tlbmREaXNwYXRjaGVyJiBiYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBX
ZWJQYWdlUHJveHkmIGluc3BlY3RlZFBhZ2U7Cit9OworCitjbGFzcyBJbnNwZWN0b3JBZ2VudEJh
c2UgOiBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JBZ2VudEJhc2UgeworcHJvdGVjdGVkOgor
ICAgIEluc3BlY3RvckFnZW50QmFzZShjb25zdCBTdHJpbmcmIG5hbWUsIFdlYlBhZ2VBZ2VudENv
bnRleHQmKQorICAgICAgICA6IEluc3BlY3Rvcjo6SW5zcGVjdG9yQWdlbnRCYXNlKG5hbWUpCisg
ICAgeworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0luc3BlY3Rvci9XZWJQYWdlSW5zcGVjdG9y
Q29udHJvbGxlci5jcHAKaW5kZXggMWVlMjhiZjcxNjM3NDM3MTQzMzIxNTE0OGFhMjBhNTE5Mjdh
OGEzMy4uMTg2MWNmZjgwNjEzMTE5NmVhNDliNGY4YWNhNjY2NWJlZWJiZjZlOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFn
ZUluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yNiw4ICsyNiwxMCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAKKyNpbmNs
dWRlICJJbnNwZWN0b3JCcm93c2VyQWdlbnQuaCIKICNpbmNsdWRlICJQcm92aXNpb25hbFBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNsdWRlICJXZWJQYWdlSW5z
cGVjdG9yQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIgog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckFnZW50QmFzZS5oPgpAQCAtNDcsMTQgKzQ5LDEyIEBAIHN0YXRpYyBTdHJpbmcgZ2V0VGFy
Z2V0SUQoY29uc3QgUHJvdmlzaW9uYWxQYWdlUHJveHkmIHByb3Zpc2lvbmFsUGFnZSkKIH0KIAog
V2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OldlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyKFdl
YlBhZ2VQcm94eSYgcGFnZSkKLSAgICA6IG1fcGFnZShwYWdlKQotICAgICwgbV9mcm9udGVuZFJv
dXRlcihGcm9udGVuZFJvdXRlcjo6Y3JlYXRlKCkpCisgICAgOiBtX2Zyb250ZW5kUm91dGVyKEZy
b250ZW5kUm91dGVyOjpjcmVhdGUoKSkKICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoQmFja2Vu
ZERpc3BhdGNoZXI6OmNyZWF0ZShtX2Zyb250ZW5kUm91dGVyLmNvcHlSZWYoKSkpCisgICAgLCBt
X3BhZ2UocGFnZSkKIHsKICAgICBhdXRvIHRhcmdldEFnZW50ID0gbWFrZVVuaXF1ZTxJbnNwZWN0
b3JUYXJnZXRBZ2VudD4obV9mcm9udGVuZFJvdXRlci5nZXQoKSwgbV9iYWNrZW5kRGlzcGF0Y2hl
ci5nZXQoKSk7Ci0KICAgICBtX3RhcmdldEFnZW50ID0gdGFyZ2V0QWdlbnQuZ2V0KCk7Ci0KICAg
ICBtX2FnZW50cy5hcHBlbmQoV1RGTW92ZSh0YXJnZXRBZ2VudCkpOwogfQogCkBAIC03OCw2ICs3
OCw4IEBAIGJvb2wgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6Omhhc0xvY2FsRnJvbnRlbmQo
KSBjb25zdAogCiB2b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjpjb25uZWN0RnJvbnRl
bmQoSW5zcGVjdG9yOjpGcm9udGVuZENoYW5uZWwmIGZyb250ZW5kQ2hhbm5lbCwgYm9vbCwgYm9v
bCkKIHsKKyAgICBjcmVhdGVMYXp5QWdlbnRzKCk7CisKICAgICBib29sIGNvbm5lY3RpbmdGaXJz
dEZyb250ZW5kID0gIW1fZnJvbnRlbmRSb3V0ZXItPmhhc0Zyb250ZW5kcygpOwogCiAgICAgbV9m
cm9udGVuZFJvdXRlci0+Y29ubmVjdEZyb250ZW5kKGZyb250ZW5kQ2hhbm5lbCk7CkBAIC0yMTIs
NiArMjE0LDI3IEBAIHZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdFBy
b3Zpc2lvbmFsUGFnZShXZWJDb3JlOjpQYWdlSWRlbnRpZmllCiAgICAgbV90YXJnZXRzLnNldChu
ZXdUYXJnZXQtPmlkZW50aWZpZXIoKSwgV1RGTW92ZShuZXdUYXJnZXQpKTsKIH0KIAorV2ViUGFn
ZUFnZW50Q29udGV4dCBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlcjo6d2ViUGFnZUFnZW50Q29u
dGV4dCgpCit7CisgICAgcmV0dXJuIHsKKyAgICAgICAgbV9mcm9udGVuZFJvdXRlci5nZXQoKSwK
KyAgICAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlci5nZXQoKSwKKyAgICAgICAgbV9wYWdlLAorICAg
IH07Cit9CisKK3ZvaWQgV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXI6OmNyZWF0ZUxhenlBZ2Vu
dHMoKQoreworICAgIGlmIChtX2RpZENyZWF0ZUxhenlBZ2VudHMpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZGlkQ3JlYXRlTGF6eUFnZW50cyA9IHRydWU7CisKKyAgICBhdXRvIHdlYlBhZ2VD
b250ZXh0ID0gd2ViUGFnZUFnZW50Q29udGV4dCgpOworCisgICAgbV9hZ2VudHMuYXBwZW5kKG1h
a2VVbmlxdWU8SW5zcGVjdG9yQnJvd3NlckFnZW50Pih3ZWJQYWdlQ29udGV4dCkpOworfQorCiB2
b2lkIFdlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyOjphZGRUYXJnZXQoc3RkOjp1bmlxdWVfcHRy
PEluc3BlY3RvclRhcmdldFByb3h5PiYmIHRhcmdldCkKIHsKICAgICBtX3RhcmdldEFnZW50LT50
YXJnZXRDcmVhdGVkKCp0YXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvSW5zcGVjdG9yL1dlYlBhZ2VJbnNwZWN0b3JDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA3
OGNhZWRmMGMwY2U4MzY3NTU2OTUwMmQxNTBmY2M0NGU1Zjk4NjhjLi45Y2U1ZWYzNmI2NTJmZDU2
YTg0M2MxZDEyYTRjM2MzY2Y2MzkyODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9JbnNwZWN0b3IvV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtNDEsNiArNDEsOSBAQCBjbGFzcyBGcm9udGVuZFJvdXRlcjsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK2NsYXNzIEluc3BlY3RvckJyb3dzZXJBZ2VudDsKK3N0cnVjdCBXZWJQYWdlQWdlbnRD
b250ZXh0OworCiBjbGFzcyBXZWJQYWdlSW5zcGVjdG9yQ29udHJvbGxlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoV2ViUGFnZUluc3BlY3RvckNvbnRyb2xsZXIpOwogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwpAQCAtNzMsMTUgKzc2LDI3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdp
bGxEZXN0cm95UHJvdmlzaW9uYWxQYWdlKGNvbnN0IFByb3Zpc2lvbmFsUGFnZVByb3h5Jik7CiAg
ICAgdm9pZCBkaWRDb21taXRQcm92aXNpb25hbFBhZ2UoV2ViQ29yZTo6UGFnZUlkZW50aWZpZXIg
b2xkV2ViUGFnZUlELCBXZWJDb3JlOjpQYWdlSWRlbnRpZmllciBuZXdXZWJQYWdlSUQpOwogCisg
ICAgSW5zcGVjdG9yQnJvd3NlckFnZW50KiBlbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50OyB9CisgICAgdm9p
ZCBzZXRFbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50KEluc3BlY3RvckJyb3dzZXJBZ2VudCog
YWdlbnQpIHsgbV9lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50ID0gYWdlbnQ7IH0KKwogcHJp
dmF0ZToKKyAgICBXZWJQYWdlQWdlbnRDb250ZXh0IHdlYlBhZ2VBZ2VudENvbnRleHQoKTsKKyAg
ICB2b2lkIGNyZWF0ZUxhenlBZ2VudHMoKTsKKwogICAgIHZvaWQgYWRkVGFyZ2V0KHN0ZDo6dW5p
cXVlX3B0cjxJbnNwZWN0b3JUYXJnZXRQcm94eT4mJik7CiAKLSAgICBXZWJQYWdlUHJveHkmIG1f
cGFnZTsKICAgICBSZWY8SW5zcGVjdG9yOjpGcm9udGVuZFJvdXRlcj4gbV9mcm9udGVuZFJvdXRl
cjsKICAgICBSZWY8SW5zcGVjdG9yOjpCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0
Y2hlcjsKICAgICBJbnNwZWN0b3I6OkFnZW50UmVnaXN0cnkgbV9hZ2VudHM7CisKKyAgICBXZWJQ
YWdlUHJveHkmIG1fcGFnZTsKKwogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yVGFyZ2V0QWdlbnQq
IG1fdGFyZ2V0QWdlbnQ7CiAgICAgSGFzaE1hcDxTdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0b3JUYXJnZXRQcm94eT4+IG1fdGFyZ2V0czsKKworICAgIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dCogbV9lbmFibGVkSW5zcGVjdG9yQnJvd3NlckFnZW50OworCisgICAgYm9vbCBtX2RpZENyZWF0
ZUxhenlBZ2VudHMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJBdXRoZW50aWNhdGlvbi9Db2NvYS9M
b2NhbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0
aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCmluZGV4IDU0NWFjNWZmNjFiN2IyYmFlN2RlMzg3
NDJkNTY4ODhlNWYwODE1M2MuLjhhNzY2MmM3ZWI3ZTMzZDk5MjdmNjQ0NGY5ZGY3MzdkZTBmMjEw
MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkF1dGhlbnRpY2F0aW9u
L0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkF1dGhlbnRpY2F0aW9uL0NvY29hL0xvY2FsQ29ubmVjdGlvbi5oCkBAIC0zNSw2ICszNSwxMiBA
QAogCiBPQkpDX0NMQVNTIExBQ29udGV4dDsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFz
cyBBdXRoZW50aWNhdG9yQXNzZXJ0aW9uUmVzcG9uc2U7CisKK30KKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIC8vIExvY2FsIGF1dGhlbnRpY2F0b3JzIG5vcm1hbGx5IGRvZXNuJ3QgbmVlZCB0byBl
c3RhYmxpc2ggY29ubmVjdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCmluZGV4IDQ3MjMwZDhjMTMxMDg4YjcwYTZmYzU5ZTA0MGE5ZGZlOTY3MDRhOTMuLjZkY2Jk
MDIwMjk0N2UxMDY5MjYwYzQ2Njc2YzVjMmRjZWQ4YzlkOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkFQSUhp
c3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
QVBJSWNvbkxvYWRpbmdDbGllbnQuaCIKKyNpbmNsdWRlICJBUElJbnNwZWN0b3JDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElMZWdhY3lDb250ZXh0SGlzdG9yeUNsaWVudC5oIgogI2luY2x1ZGUgIkFQ
SUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkFQSU5hdmlnYXRpb24uaCIKQEAgLTQ0MCw2ICs0
NDEsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShQYWdlQ2xpZW50JiBwYWdlQ2xpZW50
LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MsIFJlZgogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQogICAgICwgbV9jb250ZXh0TWVudUNsaWVudChtYWtlVW5pcXVlPEFQSTo6Q29udGV4dE1lbnVD
bGllbnQ+KCkpCiAjZW5kaWYKKyAgICAsIG1faW5zcGVjdG9yQ2xpZW50KG1ha2VVbmlxdWU8QVBJ
OjpJbnNwZWN0b3JDbGllbnQ+KCkpCiAgICAgLCBtX25hdmlnYXRpb25TdGF0ZShtYWtlVW5pcXVl
PFdlYk5hdmlnYXRpb25TdGF0ZT4oKSkKICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQogICAgICwg
bV9wYWdlR3JvdXAoKm1fY29uZmlndXJhdGlvbi0+cGFnZUdyb3VwKCkpCkBAIC02NzIsNiArNjc0
LDE2IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRJY29uTG9hZGluZ0NsaWVudChzdGQ6OnVuaXF1
ZV9wdHI8QVBJOjpJY29uTG9hZGluZ0NsaWVudD4mCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoaGFzQ2xpZW50KSk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRJbnNwZWN0b3JDbGllbnQoc3RkOjp1bmlxdWVfcHRyPEFQSTo6SW5zcGVjdG9y
Q2xpZW50PiYmIGluc3BlY3RvckNsaWVudCkKK3sKKyAgICBpZiAoIWluc3BlY3RvckNsaWVudCkg
eworICAgICAgICBtX2luc3BlY3RvckNsaWVudCA9IG1ha2VVbmlxdWU8QVBJOjpJbnNwZWN0b3JD
bGllbnQ+KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2luc3BlY3RvckNsaWVu
dCA9IFdURk1vdmUoaW5zcGVjdG9yQ2xpZW50KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OnNl
dFBhZ2VMb2FkU3RhdGVPYnNlcnZlcihzdGQ6OnVuaXF1ZV9wdHI8UGFnZUxvYWRTdGF0ZTo6T2Jz
ZXJ2ZXI+JiYgb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKG1fcGFnZUxvYWRTdGF0ZU9ic2VydmVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA5YmY2M2IzNTRlZjUwYzg1
OWUyNjIyOGYyODNkYzlkZjA0YmE1MDFlLi5lZDEwMDhmYjFhN2I5MDJjMzE1YWVjMWQxYWY3ZTMx
ODUxMjg4ZGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTc3
LDYgKzE3Nyw3IEBAIGNsYXNzIEZvcm1DbGllbnQ7CiBjbGFzcyBGdWxsc2NyZWVuQ2xpZW50Owog
Y2xhc3MgSGlzdG9yeUNsaWVudDsKIGNsYXNzIEljb25Mb2FkaW5nQ2xpZW50OworY2xhc3MgSW5z
cGVjdG9yQ2xpZW50OwogY2xhc3MgTG9hZGVyQ2xpZW50OwogY2xhc3MgTmF2aWdhdGlvbjsKIGNs
YXNzIE5hdmlnYXRpb25DbGllbnQ7CkBAIC01NTYsNiArNTU3LDkgQEAgcHVibGljOgogICAgIEFQ
STo6SWNvbkxvYWRpbmdDbGllbnQmIGljb25Mb2FkaW5nQ2xpZW50KCkgeyByZXR1cm4gKm1faWNv
bkxvYWRpbmdDbGllbnQ7IH0KICAgICB2b2lkIHNldEljb25Mb2FkaW5nQ2xpZW50KHN0ZDo6dW5p
cXVlX3B0cjxBUEk6Okljb25Mb2FkaW5nQ2xpZW50PiYmKTsKIAorICAgIEFQSTo6SW5zcGVjdG9y
Q2xpZW50JiBpbnNwZWN0b3JDbGllbnQoKSB7IHJldHVybiAqbV9pbnNwZWN0b3JDbGllbnQ7IH0K
KyAgICB2b2lkIHNldEluc3BlY3RvckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJOjpJbnNwZWN0
b3JDbGllbnQ+JiYpOworCiAgICAgdm9pZCBzZXRQYWdlTG9hZFN0YXRlT2JzZXJ2ZXIoc3RkOjp1
bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiYmKTsKIAogICAgIHZvaWQgaW5pdGlh
bGl6ZVdlYlBhZ2UoKTsKQEAgLTIyNzgsNiArMjI4Miw3IEBAIHByaXZhdGU6CiAjaWYgRU5BQkxF
KENPTlRFWFRfTUVOVVMpCiAgICAgc3RkOjp1bmlxdWVfcHRyPEFQSTo6Q29udGV4dE1lbnVDbGll
bnQ+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAjZW5kaWYKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpJbnNwZWN0b3JDbGllbnQ+IG1faW5zcGVjdG9yQ2xpZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxXZWJQYWdlSW5qZWN0ZWRCdW5kbGVDbGllbnQ+IG1faW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiAg
ICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2VMb2FkU3RhdGU6Ok9ic2VydmVyPiBtX3BhZ2VMb2FkU3Rh
dGVPYnNlcnZlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggNDVlY2NjNTY3NzEwZDcxYmQ2NDdjMTdjMDcwNjBmYzZjNGFiYTQ4NS4u
YTJjM2E0M2QzZmZlNmRjNTkyMTgxOWYwZTMzODA5MWIwZGY4MjFmMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzM4LDYgKzEzMzgs
MTEgQEAKIAkJODZGOTUzNjUxOEZGNThGNTAwMURCMkVGIC8qIFByb2Nlc3NBc3NlcnRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Rjk1MzYwMThG
RjRGRDQwMDFEQjJFRiAvKiBQcm9jZXNzQXNzZXJ0aW9uLmggKi87IH07CiAJCThEQzJFRjUzMDQ4
NkE2OTQwMDk4QjIxNiAvKiBJbmZvUGxpc3Quc3RyaW5ncyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDg5QzE2NjZGRTg0MTE1OEMwMkFBQzA3IC8qIElu
Zm9QbGlzdC5zdHJpbmdzICovOyB9OwogCQk5MDk4NTRFRDEyQkM0RTE4MDAwQUQwODAgLyogV2Vi
TWVtb3J5U2FtcGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTA1NjIwRTkxMkJDMjQ4QjAwMDc5OUI2IC8qIFdlYk1lbW9yeVNhbXBsZXIuaCAqLzsg
fTsKKwkJOTE5Nzk0MDIyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3BlY3RvckRlbGVnYXRlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTk3OTQwMDIzREJD
NDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCAqLzsgfTsKKwkJOTE5Nzk0MDUyM0RC
QzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE5Nzk0MDMyM0RCQzRCQjAwMjU3ODkyIC8q
IEluc3BlY3RvckJyb3dzZXJBZ2VudC5oICovOyB9OworCQk5MTk3OTQwODIzREJDNENCMDAyNTc4
OTIgLyogV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE5Nzk0MDcyM0RCQzRDQTAwMjU3ODkyIC8qIFdlYlBh
Z2VJbnNwZWN0b3JBZ2VudEJhc2UuaCAqLzsgfTsKKwkJOTE5Nzk0MEEyM0RCQzRFMDAwMjU3ODky
IC8qIEFQSUluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTE5Nzk0MDkyM0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNs
aWVudC5oICovOyB9OworCQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9y
RGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMjFENTg2MUEz
OEVFM0MwMDgwNTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg1MUEzOEVFM0MwMDgw
NTJCRSAvKiBXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIuaCAqLzsgfTsKIAkJOTMyMUQ1OEEx
QTM4RjE5NjAwODA1MkJFIC8qIFdLSW1tZWRpYXRlQWN0aW9uVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjFENTg5MUEzOEYxOTYwMDgwNTJC
RSAvKiBXS0ltbWVkaWF0ZUFjdGlvblR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTMyMzYxMUUxQjAxNURBODAwRkE5MjMyIC8qIF9XS092
ZXJsYXlTY3JvbGxiYXJTdHlsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTMyMzYxMUQxQjAxNURBODAwRkE5MjMyIC8qIF9XS092ZXJsYXlTY3JvbGxi
YXJTdHlsZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC00MjY5LDYgKzQyNzQsMTMgQEAKIAkJOTA1NjIwRTUxMkJDMjQ3NjAwMDc5OUI2IC8qIFdl
Yk1lbW9yeVNhbXBsZXIubWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJNZW1vcnlTYW1wbGVyLm1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTkwNTYyMEU4
MTJCQzI0OEIwMDA3OTlCNiAvKiBXZWJNZW1vcnlTYW1wbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYk1lbW9yeVNhbXBsZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MDU2MjBFOTEyQkMyNDhCMDAwNzk5QjYgLyogV2ViTWVtb3J5U2Ft
cGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJNZW1vcnlTYW1wbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5M0ZGMjNEQkM0OTAwMDI1Nzg5
MiAvKiBJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEluc3BlY3RvckRlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk5MTk3OTQwMDIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE5Nzk0MDMyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3Bl
Y3RvckJyb3dzZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JCcm93c2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTE5Nzk0
MDQyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2VudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JCcm93c2VyQWdlbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTk3OTQwNzIzREJDNENBMDAyNTc4OTIgLyog
V2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTkxOTc5NDA5MjNEQkM0RTAwMDI1Nzg5MiAvKiBBUElJbnNwZWN0b3JDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSW5zcGVjdG9yQ2xpZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBf
V0tJbnNwZWN0b3JEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzIx
RDU4NTFBMzhFRTNDMDA4MDUyQkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLSW1tZWRpYXRlQWN0aW9uQ29udHJvbGxl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzIxRDU4NzFBMzhFRTc0MDA4MDUy
QkUgLyogV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzIxRDU4OTFBMzhGMTk2MDA4MDUyQkUgLyogV0tJ
bW1lZGlhdGVBY3Rpb25UeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
S0ltbWVkaWF0ZUFjdGlvblR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
OTA3LDYgKzY5MTksNyBAQAogCQkJCTk5MUY0OTJEMjNBODEyQzUwMDU0NjQyQiAvKiBfV0tJbnNw
ZWN0b3JEZWJ1Z2dhYmxlSW5mby5oICovLAogCQkJCTk5MUY0OTJFMjNBODEyQzYwMDU0NjQyQiAv
KiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mby5tbSAqLywKIAkJCQk5OTAzNkFFMTIzQTk0OUNF
MDAwMEIwNkEgLyogX1dLSW5zcGVjdG9yRGVidWdnYWJsZUluZm9JbnRlcm5hbC5oICovLAorCQkJ
CTkxOTc5NDBCMjNEQkM1MDMwMDI1Nzg5MiAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oICovLAog
CQkJCTVDQUZERTQ0MjEzMDg0MzYwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJbnRlcm5hbC5oICov
LAogCQkJCTk5NzlDQTU3MjM3RjQ5RjAwMDM5RUMwNSAvKiBfV0tJbnNwZWN0b3JQcml2YXRlLmgg
Ki8sCiAJCQkJQTVDMEYwQUEyMDAwNjU2RTAwNTM2NTM2IC8qIF9XS0luc3BlY3RvcldpbmRvdy5o
ICovLApAQCAtODA0NCwxMCArODA1NywyMCBAQAogCQkJcGF0aCA9IGNvY29hOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJOTE5NzkzRkUyM0RCQzQ3NDAwMjU3ODkyIC8qIENv
Y29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQk5MTk3
OTQwMDIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUuaCAqLywKKwkJCQk5MTk3
OTNGRjIzREJDNDkwMDAyNTc4OTIgLyogSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8sCisJCQkpOwor
CQkJcGF0aCA9IENvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJOTFE
OTcwRDQyM0RBNkQyNTAwNTdEQkMzIC8qIEluc3BlY3RvciAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJOTFEOTcwRDUyM0RBNkQ1MDAwNTdEQkMzIC8qIEFn
ZW50cyAqLywKKwkJCQk5MTk3OTNGRTIzREJDNDc0MDAyNTc4OTIgLyogQ29jb2EgKi8sCiAJCQkJ
OTFEOTcwRDcyM0RBNkQ1QjAwNTdEQkMzIC8qIGlvcyAqLywKIAkJCQk5MUQ5NzBENjIzREE2RDU1
MDA1N0RCQzMgLyogbWFjICovLAogCQkJCUE1RTM5MUZCMjE4M0MxRTkwMEM4RkIzMSAvKiBJbnNw
ZWN0b3JUYXJnZXRQcm94eS5jcHAgKi8sCkBAIC04MDYyLDYgKzgwODUsNyBAQAogCQkJCUE1NUJB
ODI4MUJBMzhFMUUwMDdDRDMzRCAvKiBXZWJJbnNwZWN0b3JVdGlsaXRpZXMuaCAqLywKIAkJCQlB
NUVDNkFEMjIxNTFCRDY5MDA2NzdEMTcgLyogV2ViUGFnZURlYnVnZ2FibGUuY3BwICovLAogCQkJ
CUE1RUM2QUQzMjE1MUJENjkwMDY3N0QxNyAvKiBXZWJQYWdlRGVidWdnYWJsZS5oICovLAorCQkJ
CTkxOTc5NDA3MjNEQkM0Q0EwMDI1Nzg5MiAvKiBXZWJQYWdlSW5zcGVjdG9yQWdlbnRCYXNlLmgg
Ki8sCiAJCQkJQTUxM0Y1M0YyMTU0QTVDRDAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCAqLywKIAkJCQlBNTEzRjUzRTIxNTRBNUNDMDA2NjI4NDEgLyogV2ViUGFnZUlu
c3BlY3RvckNvbnRyb2xsZXIuaCAqLywKIAkJCSk7CkBAIC04MDcxLDYgKzgwOTUsOCBAQAogCQk5
MUQ5NzBENTIzREE2RDUwMDA1N0RCQzMgLyogQWdlbnRzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5MTk3OTQwNDIzREJDNEJCMDAyNTc4OTIgLyogSW5z
cGVjdG9yQnJvd3NlckFnZW50LmNwcCAqLywKKwkJCQk5MTk3OTQwMzIzREJDNEJCMDAyNTc4OTIg
LyogSW5zcGVjdG9yQnJvd3NlckFnZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IEFnZW50czsK
IAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC04NzE3LDYgKzg3NDMsNyBAQAogCQkJCTdB
QjZFQTQ0MUVFQUFFMjMwMDAzN0IyQiAvKiBBUElJY29uRGF0YWJhc2VDbGllbnQuaCAqLywKIAkJ
CQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLywK
IAkJCQk3QThBOUQ1NzFFRjExOUFBMDA5ODAxQUUgLyogQVBJSW5qZWN0ZWRCdW5kbGVDbGllbnQu
aCAqLywKKwkJCQk5MTk3OTQwOTIzREJDNEUwMDAyNTc4OTIgLyogQVBJSW5zcGVjdG9yQ2xpZW50
LmggKi8sCiAJCQkJMzFCMzYyOTAyMTQxRUFCQzAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdG
ZWF0dXJlLmNwcCAqLywKIAkJCQkzMUIzNjI4RTIxNDFFQTREMDA3QkZBNTMgLyogQVBJSW50ZXJu
YWxEZWJ1Z0ZlYXR1cmUuaCAqLywKIAkJCQk3Q0U0RDIwNjFBNDY3NzU3MDBDN0YxNTIgLyogQVBJ
TGVnYWN5Q29udGV4dEhpc3RvcnlDbGllbnQuaCAqLywKQEAgLTEwMDY4LDYgKzEwMDk1LDcgQEAK
IAkJCQk1Q0FGREU0NTIxMzA4NDYzMDBCMUY3RTEgLyogX1dLSW5zcGVjdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5OTFGNDkyRjIzQTgxMkM2MDA1NDY0MkIgLyogX1dLSW5zcGVjdG9yRGVidWdn
YWJsZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTk5MDM2QUUyMjNBOTQ5Q0YwMDAwQjA2QSAv
KiBfV0tJbnNwZWN0b3JEZWJ1Z2dhYmxlSW5mb0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5MTk3OTQwQzIzREJDNTAzMDAyNTc4OTIgLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTVDQUZERTQ3MjEzMDg0NkEwMEIxRjdFMSAvKiBfV0tJbnNwZWN0b3JJ
bnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTk3OUNBNTgyMzdGNDlGMTAwMzlFQzA1IC8q
IF9XS0luc3BlY3RvclByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QzBGMEFCMjAwMDY1
ODIwMDUzNjUzNiAvKiBfV0tJbnNwZWN0b3JXaW5kb3cuaCBpbiBIZWFkZXJzICovLApAQCAtMTAx
NzYsNiArMTAyMDQsNyBAQAogCQkJCTdBM0FDRTFCMUVFRUY3OUIwMEE4NjRBNCAvKiBBUElJbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBOEE5RDVD
MUVGMTQ1OTgwMDk4MDFBRSAvKiBBUElJbmplY3RlZEJ1bmRsZVBhZ2VSZXNvdXJjZUxvYWRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3NjkwNzlBMThGMzFDQjIwMDFERkYwNCAvKiBBUElJ
bmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE5Nzk0MEEy
M0RCQzRFMDAwMjU3ODkyIC8qIEFQSUluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzFCMzYyOEYyMTQxRUE1RDAwN0JGQTUzIC8qIEFQSUludGVybmFsRGVidWdGZWF0dXJlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk3Q0U0RDIwNzFBNDY3NzYxMDBDN0YxNTIgLyogQVBJTGVnYWN5
Q29udGV4dEhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjQ2NEYzMTg5MUU0
NTEwMDIzNEM1QiAvKiBBUElMb2FkZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMTAzNDQs
NiArMTAzNzMsOCBAQAogCQkJCUJDMTRERjc3MTIwQjVCNzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkLmggaW4gSGVhZGVycyAqLywKIAkJCQkyREQ0NUFERTFFNUY4OTcyMDA2
QzM1NUYgLyogSW5wdXRWaWV3VXBkYXRlRGVmZXJyZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNF
NTUwRTE1MjI4Mzc1MjIwMEQyODc5MSAvKiBJbnNlcnRUZXh0T3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJOTE5Nzk0MDUyM0RCQzRCQjAwMjU3ODkyIC8qIEluc3BlY3RvckJyb3dzZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTE5Nzk0MDIyM0RCQzQ5MDAwMjU3ODkyIC8qIEluc3Bl
Y3RvckRlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUUzOTFGRDIxODNDMUY4MDBDOEZC
MzEgLyogSW5zcGVjdG9yVGFyZ2V0UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUM1QkNFNURG
MUM1MDc2NkEwMENERTNGQSAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMkQ0RDJDODExREY2MEJGMzAwMkVCMTBDIC8qIEludGVyYWN0aW9u
SW5mb3JtYXRpb25SZXF1ZXN0LmggaW4gSGVhZGVycyAqLywKQEAgLTEwODAwLDYgKzEwODMxLDcg
QEAKIAkJCQlCQzdCNjI1MjEyQTQzQzk2MDBEMTc0QTQgLyogV2ViUGFnZUdyb3VwRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkM3QjYyMTUxMkE0MjE5QTAwRDE3NEE0IC8qIFdlYlBhZ2VHcm91
cFByb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDlFQTMwRjFBOTZDQkZGMDAyRDI4MDcgLyog
V2ViUGFnZUluamVjdGVkQnVuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5MTk3OTQw
ODIzREJDNENCMDAyNTc4OTIgLyogV2ViUGFnZUluc3BlY3RvckFnZW50QmFzZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTUxM0Y1NDAyMTU0QTVENzAwNjYyODQxIC8qIFdlYlBhZ2VJbnNwZWN0b3JD
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNTQzRTMwQzIxNUM4QThEMDAyNzlDRDkg
LyogV2ViUGFnZUluc3BlY3RvclRhcmdldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTU0M0UzMEQy
MTVDOEE5MDAwMjc5Q0Q5IC8qIFdlYlBhZ2VJbnNwZWN0b3JUYXJnZXRDb250cm9sbGVyLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCA3M2E0NzZhNjhlMmU0OWMwZmU2NGYyMDk0OTllZmU4ZGIwYjRlZmYxLi41NTYwNTAz
ZmJiNzkwYWE3ZWMyMzMxMWViZGE5NDVhYmNiOTNjZThjIDEwMDY0NAotLS0gYS9Ub29scy9DaGFu
Z2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjAtMDItMjUg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IHNhZmFyaSBhcHAgZXh0ZW5zaW9uIGlzb2xhdGVkIHdvcmxkcyBhbmQgaW5qZWN0ZWQgZmls
ZXMgdXNlIHRoZSBleHRlbnNpb24ncyBpZGVudGlmaWVyIGluc3RlYWQgb2YgaXRzIG5hbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjkxMQorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNTgwMjY2MzU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJp
YW4gQnVyZy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hTZXQuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgIEFkZCB0ZXN0IGZvciBg
V1RGOjpIYXNoU2V0OjpyZXNlcnZlSW5pdGlhbENhcGFjaXR5YC4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgIEFjdHVhbGx5IGNoZWNrIHRoZSB2YWx1ZSBvZiBgV1RGOjpIYXNoTWFw
OjpjYXBhY2l0eWAuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L19XS0luc3BlY3RvckRlbGVnYXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSW5zcGVjdG9yRGVs
ZWdhdGUgX3dlYlZpZXc6ZGlkQXR0YWNoSW5zcGVjdG9yOl0pCisgICAgICAgICgtW0luc3BlY3Rv
ckRlbGVnYXRlIF93ZWJWaWV3OmJyb3dzZXJEb21haW5FbmFibGVkRm9ySW5zcGVjdG9yOl0pCisg
ICAgICAgICgtW0luc3BlY3RvckRlbGVnYXRlIF93ZWJWaWV3OmJyb3dzZXJEb21haW5EaXNhYmxl
ZEZvckluc3BlY3RvcjpdKQorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9VSURlbGVnYXRlLm1tOgorICAgICAg
ICAoLVtJbnNwZWN0b3JEZWxlZ2F0ZSBfd2ViVmlldzpkaWRBdHRhY2hJbnNwZWN0b3I6XSk6IERl
bGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKTogRGVsZXRlZC4KKwogMjAyMC0w
Mi0yNSAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjaGVj
a291dF9yb290IHRvIHN0dWJyZXBvc2l0b3J5LnB5CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDgxZjUyZDM5ZTZmNzhmNzhhOTg2YTA2MjJhNzRiYWMwYTcxZTZmMDYuLmQ2MDdkOWYyMWY5NWJh
MTc3MWYyYTEyMmRmNzBhZjdiOGQ5OWE3MWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03
NDQsNiArNzQ0LDcgQEAKIAkJOEMxMEFGOTgyMDY0Njc5MjAwMThGRDkwIC8qIGxvY2Fsc3RvcmFn
ZS1lbXB0eS1zdHJpbmctdmFsdWUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QzEwQUY5NzIwNjQ2NzgzMDAxOEZEOTAgLyogbG9jYWxz
dG9yYWdlLWVtcHR5LXN0cmluZy12YWx1ZS5odG1sICovOyB9OwogCQk4QzEwQUY5OTIwNjQ2N0E5
MDAxOEZEOTAgLyogTG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4QzEwQUY5NjIwNjQ2Nzc3MDAxOEZEOTAgLyog
TG9jYWxTdG9yYWdlUGVyc2lzdGVuY2UubW0gKi87IH07CiAJCThFNEE4NTM3MUUxRDFBQjIwMEY1
M0IwRiAvKiBHcmlkUG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOEU0QTg1MzYxRTFEMUFBMTAwRjUzQjBGIC8qIEdyaWRQb3NpdGlvbi5j
cHAgKi87IH07CisJCTkxMjQ3OUZBMjNFMjY5QTIwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxl
Z2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkx
MjQ3OUY5MjNFMjY5QTEwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSAqLzsgfTsK
IAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMEFENDAxMTUw
Njk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKIAkJOTMxMENEMzgxRUY3
MDhGQjAwNTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzMTBDRDM2MUVGNzA4RkIwMDUwRkZFMCAvKiBGdW5jdGlvbi5j
cHAgKi87IH07CiAJCTkzMUMyODFEMjJCQzU1RjIwMDFEOThDNCAvKiBXZWJTUUxCYXNpY3MubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzFDMjgxQzIy
QkM1NUE3MDAxRDk4QzQgLyogV2ViU1FMQmFzaWNzLm1tICovOyB9OwpAQCAtMjIxMCw2ICsyMjEx
LDcgQEAKIAkJOEMxMEFGOTcyMDY0Njc4MzAwMThGRDkwIC8qIGxvY2Fsc3RvcmFnZS1lbXB0eS1z
dHJpbmctdmFsdWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb2NhbHN0b3Jh
Z2UtZW1wdHktc3RyaW5nLXZhbHVlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogVGVzdFdlYktpdEFQSSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gVGVzdFdlYktpdEFQSTsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJOEU0QTg1MzYxRTFEMUFBMTAwRjUzQjBG
IC8qIEdyaWRQb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmlkUG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MTI0NzlG
OTIzRTI2OUExMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwQUQ0MDExNTA2OThCMzAwNjc5NzBGIC8qIGxv
dHMtb2YtdGV4dC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImxvdHMtb2YtdGV4
dC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxMENEMzYxRUY3MDhGQjAw
NTBGRkUwIC8qIEZ1bmN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEZ1bmN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMxQzI4MUIy
MkJDNTU4MzAwMUQ5OEM0IC8qIG9wZW5kYXRhYmFzZS1hbHdheXMtZXhpc3RzLmh0bWwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAib3BlbmRhdGFiYXNlLWFsd2F5cy1leGlzdHMuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yOTIxLDYgKzI5MjMsNyBAQAogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAqLywK
IAkJCQk1Q0VBQjVERjFGQTkzN0NCMDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSAqLywK
KwkJCQk5MTI0NzlGOTIzRTI2OUExMDBDNkNFQzggLyogX1dLSW5zcGVjdG9yRGVsZWdhdGUubW0g
Ki8sCiAJCQkJN0NFRkE5NjQxQUMwQjlFMjAwQjkxMEZEIC8qIF9XS1VzZXJDb250ZW50RXh0ZW5z
aW9uU3RvcmUubW0gKi8sCiAJCQkJNTdDNjI0NEQyMzQ2QkNGQTAwMzgzRkU3IC8qIF9XS1dlYkF1
dGhlbnRpY2F0aW9uUGFuZWwubW0gKi8sCiAJCQkJMDc0NjY0NTgyMkZGNjMwNTAwRTM0NTFBIC8q
IEFjY2Vzc2liaWxpdHlUZXN0UGx1Z2luLm1tICovLApAQCAtNDY1Niw2ICs0NjU5LDcgQEAKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKIAkJCQk1Q0VBQjVF
MTFGQTkzOUY0MDBBNzdGQUEgLyogX1dLSW5wdXREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovLAor
CQkJCTkxMjQ3OUZBMjNFMjY5QTIwMEM2Q0VDOCAvKiBfV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDRUZBOTY2MUFDMEI5RTIwMEI5MTBGRCAvKiBfV0tVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTdDNjI0NEUyMzQ2QkNG
QTAwMzgzRkU3IC8qIF9XS1dlYkF1dGhlbnRpY2F0aW9uUGFuZWwubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0VFNDFBNDExQUU2MDA0NDdDNEMgLyogQWJvdXRCbGFua0xvYWQuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNo
TWFwLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCmluZGV4
IDdiYWIxOTMzOGIyNGMxOWM1NjYwOTI3OWZmZTQwZDllMzEzYWY1ODIuLjIwOGQ5NjUzMWQ1YmU0
NzAwMTM5N2Q1OTAxMTkxNGYxNzJkMzU1ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV1RGL0hhc2hNYXAuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0hhc2hNYXAuY3BwCkBAIC0xMDQ3LDMzICsxMDQ3LDQ4IEBAIFRFU1QoV1RGX0hhc2hNYXAs
IFJlc2VydmVJbml0aWFsQ2FwYWNpdHkpCiB7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4g
bWFwOwogICAgIEVYUEVDVF9FUSgwdSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBt
YXAuY2FwYWNpdHkoKSk7CisKICAgICBtYXAucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsK
ICAgICBFWFBFQ1RfRVEoMHUsIG1hcC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzMjc2OHUsIG1h
cC5jYXBhY2l0eSgpKTsKKwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQogICAg
ICAgICBtYXAuYWRkKG1ha2VTdHJpbmcoImZvbyIsIGkpLCBtYWtlU3RyaW5nKCJiYXIiLCBpKSk7
CiAgICAgRVhQRUNUX0VRKDk5OTl1LCBtYXAuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1
LCBtYXAuY2FwYWNpdHkoKSk7CiAgICAgRVhQRUNUX1RSVUUobWFwLmNvbnRhaW5zKCJmb28zIl9z
dHIpKTsKICAgICBFWFBFQ1RfU1RSRVEoImJhcjMiLCBtYXAuZ2V0KCJmb28zIl9zdHIpLnV0Zjgo
KS5kYXRhKCkpOworCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5OTk5OyArK2kpCiAgICAgICAg
IG1hcC5hZGQobWFrZVN0cmluZygiZXhjZXNzIiwgaSksIG1ha2VTdHJpbmcoImJheiIsIGkpKTsK
ICAgICBFWFBFQ1RfRVEoOTk5OXUgKyA5OTk5dSwgbWFwLnNpemUoKSk7CisgICAgRVhQRUNUX0VR
KDMyNzY4dSArIDMyNzY4dSwgbWFwLmNhcGFjaXR5KCkpOworCiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCA5OTk5OyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1hcC5yZW1vdmUobWFrZVN0cmlu
ZygiZm9vIiwgaSkpKTsKICAgICBFWFBFQ1RfRVEoOTk5OXUsIG1hcC5zaXplKCkpOworICAgIEVY
UEVDVF9FUSgzMjc2OHUsIG1hcC5jYXBhY2l0eSgpKTsKICAgICBFWFBFQ1RfU1RSRVEoImJhejMi
LCBtYXAuZ2V0KCJleGNlc3MzIl9zdHIpLnV0ZjgoKS5kYXRhKCkpOworCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCA5OTk5OyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1hcC5yZW1vdmUobWFr
ZVN0cmluZygiZXhjZXNzIiwgaSkpKTsKICAgICBFWFBFQ1RfRVEoMHUsIG1hcC5zaXplKCkpOwot
ICAgIAorICAgIEVYUEVDVF9FUSg4dSwgbWFwLmNhcGFjaXR5KCkpOworCiAgICAgSGFzaE1hcDxT
dHJpbmcsIFN0cmluZz4gbWFwMjsKICAgICBtYXAyLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoOTk5
OSk7CiAgICAgRVhQRUNUX0ZBTFNFKG1hcDIucmVtb3ZlKCJmb28xIl9zKSk7CisKICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IDIwMDA7ICsraSkKICAgICAgICAgbWFwMi5hZGQobWFrZVN0cmluZygi
Zm9vIiwgaSksIG1ha2VTdHJpbmcoImJhciIsIGkpKTsKICAgICBFWFBFQ1RfRVEoMjAwMHUsIG1h
cDIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBtYXAyLmNhcGFjaXR5KCkpOworCiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kpCiAgICAgICAgIEVYUEVDVF9UUlVFKG1h
cDIucmVtb3ZlKG1ha2VTdHJpbmcoImZvbyIsIGkpKSk7CiAgICAgRVhQRUNUX0VRKDB1LCBtYXAy
LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDh1LCBtYXAyLmNhcGFjaXR5KCkpOwogfQogCiBURVNU
KFdURl9IYXNoTWFwLCBSYW5kb21fSXNFdmVubHlEaXN0cmlidXRlZEFmdGVyUmVtb3ZlKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSGFzaFNldC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNwcAppbmRleCA0OThlOWVhYTcwZmY3
NTg2Mjk5NDI3MDNlM2M4N2IwMGJhM2EyN2Q0Li40Y2MyNDdmYzEyODJhZGFmZmIwOTEzYzFmZGE1
OGRkYzdiZmU0OWUzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9I
YXNoU2V0LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9IYXNoU2V0LmNw
cApAQCAtMjksOSArMjksMTIgQEAKICNpbmNsdWRlICJEZWxldGVkQWRkcmVzc09mT3BlcmF0b3Iu
aCIKICNpbmNsdWRlICJNb3ZlT25seS5oIgogI2luY2x1ZGUgIlJlZkxvZ2dlci5oIgorI2luY2x1
ZGUgIlRlc3QuaCIKICNpbmNsdWRlIDxmdW5jdGlvbmFsPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC01MDYsNCArNTA5LDUwIEBAIFRFU1QoV1RG
X0hhc2hTZXQsIFJlbW92ZUlmU2hyaW5rVG9CZXN0U2l6ZSkKICAgICBBU1NFUlRfRVEoc2V0MS5j
YXBhY2l0eSgpLCBvcmlnaW5hbENhcGFjaXR5KTsKIH0KIAorVEVTVChXVEZfSGFzaFNldCwgUmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSkKK3sKKyAgICBIYXNoU2V0PFN0cmluZz4gc2V0OworICAgIEVY
UEVDVF9FUSgwdSwgc2V0LnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDB1LCBzZXQuY2FwYWNpdHko
KSk7CisKKyAgICBzZXQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eSg5OTk5KTsKKyAgICBFWFBFQ1Rf
RVEoMHUsIHNldC5zaXplKCkpOworICAgIEVYUEVDVF9FUSgzMjc2OHUsIHNldC5jYXBhY2l0eSgp
KTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgOTk5OTsgKytpKQorICAgICAgICBzZXQuYWRk
KG1ha2VTdHJpbmcoImZvbyIsIGkpKTsKKyAgICBFWFBFQ1RfRVEoOTk5OXUsIHNldC5zaXplKCkp
OworICAgIEVYUEVDVF9FUSgzMjc2OHUsIHNldC5jYXBhY2l0eSgpKTsKKyAgICBFWFBFQ1RfVFJV
RShzZXQuY29udGFpbnMoImZvbzMiX3N0cikpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5
OTk5OyArK2kpCisgICAgICAgIHNldC5hZGQobWFrZVN0cmluZygiZXhjZXNzIiwgaSkpOworICAg
IEVYUEVDVF9FUSg5OTk5dSArIDk5OTl1LCBzZXQuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3
Njh1ICsgMzI3Njh1LCBzZXQuY2FwYWNpdHkoKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDk5OTk7ICsraSkKKyAgICAgICAgRVhQRUNUX1RSVUUoc2V0LnJlbW92ZShtYWtlU3RyaW5nKCJm
b28iLCBpKSkpOworICAgIEVYUEVDVF9FUSg5OTk5dSwgc2V0LnNpemUoKSk7CisgICAgRVhQRUNU
X0VRKDMyNzY4dSwgc2V0LmNhcGFjaXR5KCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA5
OTk5OyArK2kpCisgICAgICAgIEVYUEVDVF9UUlVFKHNldC5yZW1vdmUobWFrZVN0cmluZygiZXhj
ZXNzIiwgaSkpKTsKKyAgICBFWFBFQ1RfRVEoMHUsIHNldC5zaXplKCkpOworICAgIEVYUEVDVF9F
USg4dSwgc2V0LmNhcGFjaXR5KCkpOworCisgICAgSGFzaFNldDxTdHJpbmc+IHNldDI7CisgICAg
c2V0Mi5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDk5OTkpOworICAgIEVYUEVDVF9GQUxTRShzZXQy
LnJlbW92ZSgiZm9vMSJfcykpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kp
CisgICAgICAgIHNldDIuYWRkKG1ha2VTdHJpbmcoImZvbyIsIGkpKTsKKyAgICBFWFBFQ1RfRVEo
MjAwMHUsIHNldDIuc2l6ZSgpKTsKKyAgICBFWFBFQ1RfRVEoMzI3Njh1LCBzZXQyLmNhcGFjaXR5
KCkpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyMDAwOyArK2kpCisgICAgICAgIEVYUEVD
VF9UUlVFKHNldDIucmVtb3ZlKG1ha2VTdHJpbmcoImZvbyIsIGkpKSk7CisgICAgRVhQRUNUX0VR
KDB1LCBzZXQyLnNpemUoKSk7CisgICAgRVhQRUNUX0VRKDh1LCBzZXQyLmNhcGFjaXR5KCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1VJRGVsZWdhdGUubW0KaW5kZXggMGY4YjEyOWM2MDU5
Nzk2OTEyOTdhZjY5NzYzZmM4ZWZjNmRhYTc0MC4uODJjMzM1ODRkZTVlYzU0OGNjMGRhMmNlMDA2
ZmU3MzBlNTQxOTVjMyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVUlEZWxlZ2F0ZS5tbQpAQCAtMzgsNyArMzgsNiBAQAogI2ltcG9ydCA8V2ViS2l0
L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRl
Rm9yVGVzdGluZy5oPgogI2ltcG9ydCA8V2ViS2l0L19XS0hpdFRlc3RSZXN1bHQuaD4KLSNpbXBv
cnQgPFdlYktpdC9fV0tJbnNwZWN0b3IuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNp
bXBvcnQgPHd0Zi9WZWN0b3IuaD4KIApAQCAtOTAwLDM0ICs4OTksNCBAQCBURVNUKFdlYktpdCwg
RGlkTm90SGFuZGxlV2hlZWxFdmVudCkKIAogI2VuZGlmIC8vIFJFTElBQkxFX0RJRF9OT1RfSEFO
RExFX1dIRUVMX0VWRU5UCiAKLUBpbnRlcmZhY2UgSW5zcGVjdG9yRGVsZWdhdGUgOiBOU09iamVj
dCA8V0tVSURlbGVnYXRlUHJpdmF0ZT4KLUBlbmQKLQotQGltcGxlbWVudGF0aW9uIEluc3BlY3Rv
ckRlbGVnYXRlCi0KLS0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQXR0
YWNoSW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKLXsKLSAgICBFWFBFQ1RfRVEo
d2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOwotICAgIEVYUEVDVF9UUlVFKHdlYlZpZXcu
X2hhc0luc3BlY3RvckZyb250ZW5kKTsKLSAgICBbaW5zcGVjdG9yIGNsb3NlXTsKLSAgICBkb25l
ID0gdHJ1ZTsKLX0KLQotQGVuZAotCi1URVNUKFdlYktpdCwgRGlkTm90aWZ5V2hlbkluc3BlY3Rv
ckF0dGFjaGVkKQotewotICAgIGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIG5ld10pOwotICAgIHdlYlZpZXdDb25maWd1cmF0aW9uLmdl
dCgpLnByZWZlcmVuY2VzLl9kZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gWUVTOwotICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0
TWFrZSgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5n
ZXQoKV0pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtJbnNwZWN0b3JEZWxlZ2F0ZSBu
ZXddKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBb
d2ViVmlldyBsb2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5z
cGVjdGVkPC90aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIg
YmFzZVVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07Ci0K
LSAgICBFWFBFQ1RfRkFMU0Uod2ViVmlldy5nZXQoKS5faGFzSW5zcGVjdG9yRnJvbnRlbmQpOwot
Ci0gICAgW1t3ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOwotICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZG9uZSk7Ci19Ci0KICNlbmRpZiAvLyBQTEFURk9STShNQUMpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL19XS0luc3BlY3RvckRlbGVn
YXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9fV0tJbnNwZWN0
b3JEZWxlZ2F0ZS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNGNjM2YyM2NlNGNjNzQ4MzkwYzUyZDcyY2JmYzE2
OWYyOTEwNDExCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5tbQpAQCAtMCwwICsxLDk4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCAiVGVzdC5oIgorI2lt
cG9ydCAiVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmcuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0
b3IuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tJbnNwZWN0b3JEZWxlZ2F0ZS5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oTUFDKQorCitzdGF0aWMgYm9vbCBkaWRB
dHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworc3RhdGljIGJvb2wgYnJvd3NlckRv
bWFpbkVuYWJsZWRGb3JJbnNwZWN0b3JDYWxsZWQgPSBmYWxzZTsKK3N0YXRpYyBib29sIGJyb3dz
ZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOworCitAaW50ZXJmYWNl
IEluc3BlY3RvckRlbGVnYXRlIDogTlNPYmplY3QgPF9XS0luc3BlY3RvckRlbGVnYXRlPgorQGVu
ZAorCitAaW1wbGVtZW50YXRpb24gSW5zcGVjdG9yRGVsZWdhdGUKKworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRBdHRhY2hMb2NhbEluc3BlY3RvcjooX1dLSW5zcGVj
dG9yICopaW5zcGVjdG9yCit7CisgICAgZGlkQXR0YWNoTG9jYWxJbnNwZWN0b3JDYWxsZWQgPSBm
YWxzZTsKKyAgICBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNl
OworICAgIGJyb3dzZXJEb21haW5EaXNhYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IGZhbHNlOwor
CisgICAgRVhQRUNUX0VRKHdlYlZpZXcuX2luc3BlY3RvciwgaW5zcGVjdG9yKTsKKyAgICBFWFBF
Q1RfVFJVRSh3ZWJWaWV3Ll9oYXNJbnNwZWN0b3JGcm9udGVuZCk7CisKKyAgICBkaWRBdHRhY2hM
b2NhbEluc3BlY3RvckNhbGxlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgYnJvd3NlckRvbWFpbkVuYWJsZWRGb3JJbnNwZWN0b3I6KF9XS0luc3Bl
Y3RvciAqKWluc3BlY3RvcgoreworICAgIEVYUEVDVF9FUSh3ZWJWaWV3Ll9pbnNwZWN0b3IsIGlu
c3BlY3Rvcik7CisKKyAgICAvLyBXYWl0IGZvciB0aGUgQnJvd3NlciBkb21haW4gdG8gYmUgZW5h
YmxlZCBiZWZvcmUgY2xvc2luZyBXZWIgSW5zcGVjdG9yLCB3aGljaCB3aWxsCisgICAgLy8gYXV0
b21hdGljYWxseSBkaXNhYmxlIHRoZSBkb21haW4uCisgICAgW2luc3BlY3RvciBjbG9zZV07CisK
KyAgICBicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCA9IHRydWU7Cit9CisK
Ky0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgYnJvd3NlckRvbWFpbkRpc2Fi
bGVkRm9ySW5zcGVjdG9yOihfV0tJbnNwZWN0b3IgKilpbnNwZWN0b3IKK3sKKyAgICBFWFBFQ1Rf
RVEod2ViVmlldy5faW5zcGVjdG9yLCBpbnNwZWN0b3IpOworCisgICAgYnJvd3NlckRvbWFpbkRp
c2FibGVkRm9ySW5zcGVjdG9yQ2FsbGVkID0gdHJ1ZTsKK30KKworQGVuZAorCitURVNUKFdlYktp
dF9XS0luc3BlY3RvckRlbGVnYXRlLCBEaWROb3RpZnlGb3JMb2NhbEluc3BlY3RvcikKK3sKKyAg
ICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBuZXddKTsKKyAgICB3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcy5f
ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCA9IFlFUzsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbSW5zcGVjdG9yRGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZp
ZXcgX3NldEluc3BlY3RvckRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBs
b2FkSFRNTFN0cmluZzpAIjxoZWFkPjx0aXRsZT5UZXN0IHBhZ2UgdG8gYmUgaW5zcGVjdGVkPC90
aXRsZT48L2hlYWQ+PGJvZHk+PHA+RmlsbGVyIGNvbnRlbnQ8L3A+PC9ib2R5PiIgYmFzZVVSTDpb
TlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHA6Ly9leGFtcGxlLmNvbS8iXV07CisKKyAgICBFWFBF
Q1RfRkFMU0Uod2ViVmlldy5nZXQoKS5faGFzSW5zcGVjdG9yRnJvbnRlbmQpOworCisgICAgW1t3
ZWJWaWV3IF9pbnNwZWN0b3JdIHNob3ddOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkaWRBdHRhY2hMb2NhbEluc3BlY3RvckNhbGxlZCk7CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZicm93c2VyRG9tYWluRW5hYmxlZEZvckluc3BlY3RvckNhbGxlZCk7CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZicm93c2VyRG9tYWluRGlzYWJsZWRGb3JJbnNwZWN0b3JD
YWxsZWQpOworfQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>